<?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>155412</bug_id>
          
          <creation_ts>2016-03-13 15:46:36 -0700</creation_ts>
          <short_desc>Change NativeImagePtr for CG to be RetainPtr&lt;CGImageRef&gt;</short_desc>
          <delta_ts>2016-03-24 18:13:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>155322</blocked>
    
    <blocked>155422</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>japhet</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>roger_fong</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1174240</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-13 15:46:36 -0700</bug_when>
    <thetext>This work towards CG asynchronous image decoding: https://bugs.webkit.org/show_bug.cgi?id=155322.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174243</commentid>
    <comment_count>1</comment_count>
      <attachid>273904</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-13 16:17:00 -0700</bug_when>
    <thetext>Created attachment 273904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174256</commentid>
    <comment_count>2</comment_count>
      <attachid>273907</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-13 17:14:59 -0700</bug_when>
    <thetext>Created attachment 273907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174260</commentid>
    <comment_count>3</comment_count>
      <attachid>273909</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-13 17:22:31 -0700</bug_when>
    <thetext>Created attachment 273909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174601</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-14 12:08:25 -0700</bug_when>
    <thetext>Did you check for leaks after this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175115</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-15 14:35:53 -0700</bug_when>
    <thetext>I did run-webkit-tests --debug --leak LayoutTests/fast/ and it did not show any leak related to the conversion form raw pointer to RetainPtr&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175526</commentid>
    <comment_count>6</comment_count>
      <attachid>273909</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-16 15:17:09 -0700</bug_when>
    <thetext>Comment on attachment 273909
Patch

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

&gt; Source/WebCore/platform/graphics/NativeImagePtr.h:45
&gt; +typedef RetainPtr&lt;CGImageRef&gt; NativeImagePtr;

Passing NativeImagePtr by value  (which happens in various places) will cause reference churn. I don&apos;t really like hiding the fact that it&apos;s a RetainPtr&lt;&gt; inside the typedef, because it makes leaky and churny code too easy to write.

Elsewhere we&apos;ve done typedef CALayer PlatformLayer, allowing us to write RetainPtr&lt;PlatformLayer&gt; which I prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175551</commentid>
    <comment_count>7</comment_count>
      <attachid>273909</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-16 16:33:43 -0700</bug_when>
    <thetext>Comment on attachment 273909
Patch

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

If NativeImagePtr is now going to always be a smart pointer, we should be using move semantics with it to decrease churn.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:58
&gt; -    WTF_MAKE_NONCOPYABLE(FrameData);
&gt;  public:

No need to keep the &quot;public&quot; if you are removing the WTF_MAKE_NONCOPYABLE.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:-77
&gt; -        , m_hasAlpha(true) 

Before, m_hasAlpha defaulted to true, now it seems to default to false. Why is that change OK? No mention of this in the change log.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:81
&gt; +        uint8_t m_flags[sizeof(bool)] { 0 };

What does this sizeof(bool) accomplish?

&gt; Source/WebCore/platform/graphics/Icon.h:72
&gt; -    Icon(CGImageRef);
&gt; -    RetainPtr&lt;CGImageRef&gt; m_cgImage;
&gt; +    Icon(NativeImagePtr);
&gt; +    NativeImagePtr m_cgImage;

This doesn’t seem like an improvement to me.

&gt;&gt; Source/WebCore/platform/graphics/NativeImagePtr.h:45
&gt;&gt; +typedef RetainPtr&lt;CGImageRef&gt; NativeImagePtr;
&gt; 
&gt; Passing NativeImagePtr by value  (which happens in various places) will cause reference churn. I don&apos;t really like hiding the fact that it&apos;s a RetainPtr&lt;&gt; inside the typedef, because it makes leaky and churny code too easy to write.
&gt; 
&gt; Elsewhere we&apos;ve done typedef CALayer PlatformLayer, allowing us to write RetainPtr&lt;PlatformLayer&gt; which I prefer.

The real issue is that sometimes it’s a RetainPtr and sometimes it’s a RefPtr. The techniques for the two different types can be the same, though, in today’s world. Use rvalue references and WTFMove as needed.

Maybe it would be cleaner to use an actual class for this instead of just a typedef?

&gt; Source/WebCore/platform/graphics/NativeImagePtr.h:48
&gt;  typedef PassRefPtr&lt;cairo_surface_t&gt; PassNativeImagePtr;

Need to get rid of PassNativeImagePtr and use rvalue references and other modern techniques that work with both RefPtr and RetainPtr.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1040
&gt; -        CGImageRef newImage = image-&gt;nativeImageForCurrentFrame();
&gt; +        CGImageRef newImage = image-&gt;nativeImageForCurrentFrame().get();

I don’t understand why this is safe. It’s usually not safe to take a RetainPtr, get the raw pointer out of it, and let the RetainPtr fall out of scope. And if that is safe, then the function should have been returning a raw pointer instead. THe safer change here is to make newImage be a RetainPtr (could just be auto).

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:175
&gt; -    return frameAtIndex(0);
&gt; +    return frameImageAtIndex(0).get();

Why is it safe to return a raw pointer here? Same question as above.

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:182
&gt; +        PassNativeImagePtr image = frameImageAtIndex(i);

Using the type PassNativeImagePtr here is a bad idea. Just use auto.

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:199
&gt; +        if (NativeImagePtr currFrame = frameImageAtIndex(i))

Again, I think the type we want is auto.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:314
&gt; +    RetainPtr&lt;CGImageRef&gt; tileImage = image.nativeImageForCurrentFrame();

I suggest the type auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176635</commentid>
    <comment_count>8</comment_count>
      <attachid>274553</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-20 17:58:10 -0700</bug_when>
    <thetext>Created attachment 274553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176636</commentid>
    <comment_count>9</comment_count>
      <attachid>274554</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-20 18:25:37 -0700</bug_when>
    <thetext>Created attachment 274554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176640</commentid>
    <comment_count>10</comment_count>
      <attachid>274556</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-20 18:51:20 -0700</bug_when>
    <thetext>Created attachment 274556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176642</commentid>
    <comment_count>11</comment_count>
      <attachid>274557</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-20 19:17:51 -0700</bug_when>
    <thetext>Created attachment 274557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176645</commentid>
    <comment_count>12</comment_count>
      <attachid>274559</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-20 19:44:09 -0700</bug_when>
    <thetext>Created attachment 274559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176646</commentid>
    <comment_count>13</comment_count>
      <attachid>274560</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-20 20:24:27 -0700</bug_when>
    <thetext>Created attachment 274560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176672</commentid>
    <comment_count>14</comment_count>
      <attachid>273909</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-20 21:58:08 -0700</bug_when>
    <thetext>Comment on attachment 273909
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.h:58
&gt;&gt;  public:
&gt; 
&gt; No need to keep the &quot;public&quot; if you are removing the WTF_MAKE_NONCOPYABLE.

I reverted all the changes in this struct and I will make all of them in https://bugs.webkit.org/show_bug.cgi?id=155422.

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.h:-77
&gt;&gt; -        , m_hasAlpha(true) 
&gt; 
&gt; Before, m_hasAlpha defaulted to true, now it seems to default to false. Why is that change OK? No mention of this in the change log.

You are right. I reverted all the changes in this struct and I will make all of them in https://bugs.webkit.org/show_bug.cgi?id=155422.

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.h:81
&gt;&gt; +        uint8_t m_flags[sizeof(bool)] { 0 };
&gt; 
&gt; What does this sizeof(bool) accomplish?

I reverted all the changes in this struct and I will make all of them in https://bugs.webkit.org/show_bug.cgi?id=155422.

&gt;&gt; Source/WebCore/platform/graphics/NativeImagePtr.h:48
&gt;&gt;  typedef PassRefPtr&lt;cairo_surface_t&gt; PassNativeImagePtr;
&gt; 
&gt; Need to get rid of PassNativeImagePtr and use rvalue references and other modern techniques that work with both RefPtr and RetainPtr.

Done.

&gt;&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1040
&gt;&gt; +        CGImageRef newImage = image-&gt;nativeImageForCurrentFrame().get();
&gt; 
&gt; I don’t understand why this is safe. It’s usually not safe to take a RetainPtr, get the raw pointer out of it, and let the RetainPtr fall out of scope. And if that is safe, then the function should have been returning a raw pointer instead. THe safer change here is to make newImage be a RetainPtr (could just be auto).

Done.

&gt;&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:175
&gt;&gt; +    return frameImageAtIndex(0).get();
&gt; 
&gt; Why is it safe to return a raw pointer here? Same question as above.

BitmapImage::getCGImageRef() now returns RetainPtr&lt;CGImageRef&gt; which requires many changes in WebKit and WebKit2.

&gt;&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:182
&gt;&gt; +        PassNativeImagePtr image = frameImageAtIndex(i);
&gt; 
&gt; Using the type PassNativeImagePtr here is a bad idea. Just use auto.

Done.

&gt;&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:199
&gt;&gt; +        if (NativeImagePtr currFrame = frameImageAtIndex(i))
&gt; 
&gt; Again, I think the type we want is auto.

Done.

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:314
&gt;&gt; +    RetainPtr&lt;CGImageRef&gt; tileImage = image.nativeImageForCurrentFrame();
&gt; 
&gt; I suggest the type auto here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177283</commentid>
    <comment_count>15</comment_count>
      <attachid>274560</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-22 22:49:25 -0700</bug_when>
    <thetext>Comment on attachment 274560
Patch

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

&gt; Source/WebCore/bindings/objc/DOM.mm:609
&gt; +            *cgImage = (CGImageRef)CFAutorelease(image-&gt;getCGImageRef().leakRef());

Should have been able to use RetainPtr’s autorelease() function instead of CFAutorelease(leakRef()).

&gt; Source/WebCore/platform/graphics/BitmapImage.h:-57
&gt; -namespace WTF {
&gt; -    template&lt;&gt; struct VectorTraits&lt;WebCore::FrameData&gt; : public SimpleClassVectorTraits {
&gt; -        static const bool canInitializeWithMemset = false; // Not all FrameData members initialize to 0.
&gt; -    };
&gt; -}

This change is incorrect, since m_hasAlpha initializes to true. I think this needs to be left out of this patch as with some of the other changes to FrameData.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:60
&gt; +        : m_image(nullptr)

No need for this since m_image is a smart pointer now. It will initialize to nullptr even if we don’t specify it here.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2352
&gt;      return m_lastImage.get();

I don’t think the .get() is needed here.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1019
&gt; +        m_uncorrectedContentsImage = m_pendingContentsImage = WTFMove(newImage);

We do not normally use this style in WebKit, assigning more than one variable on the same line.

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:262
&gt; +void GraphicsContext::drawNativeImage(const NativeImagePtr&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)

Argument should just be named image, not imagePtr.

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:71
&gt; +BitmapImage::BitmapImage(const RetainPtr&lt;CGImageRef&gt;&amp; image, ImageObserver* observer)

I think this argument should be NativeImagePtr&amp;&amp;; we could use WTFMove below when setting m_image on m_frames[0].

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:147
&gt; -    CGImageRef image = nullptr;
&gt; +    RetainPtr&lt;CGImageRef&gt; image;

Don’t think this type change was a good idea.

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:149
&gt; +        image = m_frames[0].m_image;

Should use .get(); no need to use RetainPtr for the local variable.

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:173
&gt; +RetainPtr&lt;CGImageRef&gt; BitmapImage::getCGImageRef()

I am not sure I understand why we have made this change.

&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:178
&gt; +RetainPtr&lt;CGImageRef&gt; BitmapImage::getFirstCGImageRefOfSize(const IntSize&amp; size)

I am not sure I understand why we have made this change.

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:165
&gt; +void GraphicsContext::drawNativeImage(const RetainPtr&lt;CGImageRef&gt;&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)

This should be named “image” not “imagePtr”.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:494
&gt; +DrawNativeImage::DrawNativeImage(const NativeImagePtr&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)

Should just be named image, not imagePtr.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:642
&gt; +    static Ref&lt;DrawNativeImage&gt; create(const NativeImagePtr&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)

Should just be named image, not imagePtr.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:122
&gt; +void Recorder::drawNativeImage(const NativeImagePtr&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)

Should just be named image, not imagePtr.

&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:96
&gt; +    Vector&lt;RetainPtr&lt;CGImageRef&gt;&gt; images;

I don’t understand why this change is necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177484</commentid>
    <comment_count>16</comment_count>
      <attachid>274780</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-23 15:01:09 -0700</bug_when>
    <thetext>Created attachment 274780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177534</commentid>
    <comment_count>17</comment_count>
      <attachid>274793</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-23 16:51:32 -0700</bug_when>
    <thetext>Created attachment 274793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177571</commentid>
    <comment_count>18</comment_count>
      <attachid>274809</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-23 18:48:26 -0700</bug_when>
    <thetext>Created attachment 274809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177590</commentid>
    <comment_count>19</comment_count>
      <attachid>274814</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-23 20:12:55 -0700</bug_when>
    <thetext>Created attachment 274814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177683</commentid>
    <comment_count>20</comment_count>
      <attachid>274836</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-24 09:22:09 -0700</bug_when>
    <thetext>Created attachment 274836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177691</commentid>
    <comment_count>21</comment_count>
      <attachid>274838</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-24 09:55:27 -0700</bug_when>
    <thetext>Created attachment 274838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177706</commentid>
    <comment_count>22</comment_count>
      <attachid>274842</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-24 10:58:16 -0700</bug_when>
    <thetext>Created attachment 274842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177768</commentid>
    <comment_count>23</comment_count>
      <attachid>274855</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-24 14:24:41 -0700</bug_when>
    <thetext>Created attachment 274855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177820</commentid>
    <comment_count>24</comment_count>
      <attachid>274560</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-24 17:20:00 -0700</bug_when>
    <thetext>Comment on attachment 274560
Patch

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

&gt;&gt; Source/WebCore/bindings/objc/DOM.mm:609
&gt;&gt; +            *cgImage = (CGImageRef)CFAutorelease(image-&gt;getCGImageRef().leakRef());
&gt; 
&gt; Should have been able to use RetainPtr’s autorelease() function instead of CFAutorelease(leakRef()).

This change was removed because I reverted back the change related to the return type of Image::getCGImageRef(). Now, it returns a raw pointer as before.

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.h:-57
&gt;&gt; -}
&gt; 
&gt; This change is incorrect, since m_hasAlpha initializes to true. I think this needs to be left out of this patch as with some of the other changes to FrameData.

Done.

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.h:60
&gt;&gt; +        : m_image(nullptr)
&gt; 
&gt; No need for this since m_image is a smart pointer now. It will initialize to nullptr even if we don’t specify it here.

Done. The initialization was removed.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2352
&gt;&gt;      return m_lastImage.get();
&gt; 
&gt; I don’t think the .get() is needed here.

You are right. .get() was removed.

&gt;&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:1019
&gt;&gt; +        m_uncorrectedContentsImage = m_pendingContentsImage = WTFMove(newImage);
&gt; 
&gt; We do not normally use this style in WebKit, assigning more than one variable on the same line.

Done.

&gt;&gt; Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:262
&gt;&gt; +void GraphicsContext::drawNativeImage(const NativeImagePtr&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)
&gt; 
&gt; Argument should just be named image, not imagePtr.

Done. The argument&apos;s name was changed from &apos;imagePtr&apos; to &apos;image&apos;. And the local variable &apos;image&apos; was also removed.

&gt;&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:71
&gt;&gt; +BitmapImage::BitmapImage(const RetainPtr&lt;CGImageRef&gt;&amp; image, ImageObserver* observer)
&gt; 
&gt; I think this argument should be NativeImagePtr&amp;&amp;; we could use WTFMove below when setting m_image on m_frames[0].

Done.

&gt;&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:147
&gt;&gt; +    RetainPtr&lt;CGImageRef&gt; image;
&gt; 
&gt; Don’t think this type change was a good idea.

Done. The type of the local variable is set back to CGImageRef.

&gt;&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:149
&gt;&gt; +        image = m_frames[0].m_image;
&gt; 
&gt; Should use .get(); no need to use RetainPtr for the local variable.

Done.

&gt;&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:173
&gt;&gt; +RetainPtr&lt;CGImageRef&gt; BitmapImage::getCGImageRef()
&gt; 
&gt; I am not sure I understand why we have made this change.

Done. The change was reverted back.

My goal was to ensure the CGImageRef would not be deleted as long as the caller is holding a reference to it. But since the returned value is actually referencing a stored CGImageRef in the FrameData cache and this cache does not get deleted unless the BitmapImage object is deleted, I think it is safe to return the code back as it was,

&gt;&gt; Source/WebCore/platform/graphics/cg/BitmapImageCG.cpp:178
&gt;&gt; +RetainPtr&lt;CGImageRef&gt; BitmapImage::getFirstCGImageRefOfSize(const IntSize&amp; size)
&gt; 
&gt; I am not sure I understand why we have made this change.

Done. The change was reverted back.

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:165
&gt;&gt; +void GraphicsContext::drawNativeImage(const RetainPtr&lt;CGImageRef&gt;&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)
&gt; 
&gt; This should be named “image” not “imagePtr”.

Done. The name of the argument was changed.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.cpp:494
&gt;&gt; +DrawNativeImage::DrawNativeImage(const NativeImagePtr&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)
&gt; 
&gt; Should just be named image, not imagePtr.

Done. The name of the argument was changed.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:642
&gt;&gt; +    static Ref&lt;DrawNativeImage&gt; create(const NativeImagePtr&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)
&gt; 
&gt; Should just be named image, not imagePtr.

Done. The name of the argument was changed.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:122
&gt;&gt; +void Recorder::drawNativeImage(const NativeImagePtr&amp; imagePtr, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, CompositeOperator op, BlendMode blendMode, ImageOrientation orientation)
&gt; 
&gt; Should just be named image, not imagePtr.

Done. The name of the argument was changed.

&gt;&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:96
&gt;&gt; +    Vector&lt;RetainPtr&lt;CGImageRef&gt;&gt; images;
&gt; 
&gt; I don’t understand why this change is necessary.

Done. The local variable type change is reverted back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177832</commentid>
    <comment_count>25</comment_count>
      <attachid>274855</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-24 18:13:12 -0700</bug_when>
    <thetext>Comment on attachment 274855
Patch

Clearing flags on attachment: 274855

Committed r198655: &lt;http://trac.webkit.org/changeset/198655&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177833</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-24 18:13:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273904</attachid>
            <date>2016-03-13 16:17:00 -0700</date>
            <delta_ts>2016-03-13 17:14:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160313161647.patch</filename>
            <type>text/plain</type>
            <size>30907</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjOThmYzYxZmI4ZmUx
ZTAxYTY5MWNjNzg0OTM0NmU1YTkwNzI1MC4uZmUwN2E0NmFkYmIzMjlkMmRjM2Q0N2IxMTYxYWRl
OTVmNGJmYWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE2LTAzLTEzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgQ2hhbmdl
IE5hdGl2ZUltYWdlUHRyIGZvciBDRyB0byBiZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhdmluZyBOYXRpdmVJ
bWFnZVB0ciBhcyBhIHJhdyBwb2ludGVyIG1ha2VzIG1hbmFnaW5nIHRoZSBsaWZlIGN5Y2xlIG9m
CisgICAgICAgIHRoZSBDR0ltYWdlUmVmIGhhcmQuIEEgbG90IG9mIHdvcmtzIHdhcyBkb25lIHRv
IG1ha2Ugc3VyZSB0aGUgQ0cgcG9pbnRlcgorICAgICAgICBpcyBtYWludGFpbmVkIGNvcnJlY3Rs
eS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYSBGcmFtZURhdGEgc2luY2UKKyAg
ICAgICAgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdlUmVm
LgorCisgICAgICAgIEkgYW0gZ29pbmcgdG8gZm9sbG93IHRoaXMgbmFtaW5nIGNvbnZlbnRpb246
CisgICAgICAgIDEuIEFuIEltYWdlIG9iamVjdCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURh
dGEuIEEgRnJhbWVEYXRhIGNhbiBiZSBuYW1lZAorICAgICAgICAgICBmb3Igc2hvcnRuZXNzIGFz
ICJmcmFtZSIsICJtX2ZyYW1lcyIsIGV0Yy4KKyAgICAgICAgMi4gQSBGcmFtZURhdGEgY2FuIGhh
dmUgemVybyBvciBvbmUgTmF0aXZlSW1hZ2VQdHIuIEEgTmF0aXZlSW1hZ2VQdHIgY2FuCisgICAg
ICAgICAgIGJlIG5hbWVkIGFzICJpbWFnZSIsICJtX2ltYWdlIiwgZXRjCisKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2Fj
aGU6OmFkZEltYWdlVG9DYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdl
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZURhdGE6OkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUHRyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKToKKwogMjAxNi0wMy0x
MiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtGb3JtczogZm9j
dXNdIGZvY3VzIHJpbmdzIGFyb3VuZCB0ZXh0IGZpZWxkcyBkbyBub3QgZm9sbG93IGNvbnRvdXIg
KGJvcmRlci1yYWRpdXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAppbmRleCA5OTk0NjVlYTM5MDY5N2NiZTAwZmU2ZmE4ODM4YzEzOGU1NDQ3YTE3Li44NDZj
MGRjOTM4NGU3NWRiYTA4MjBjMjgwZmI2NDFjZThhMDhmMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTIyNSw4ICsyMjUsNiBAQCBib29sIE1l
bW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hlZEltYWdlPiBjYWNo
ZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2Uu
Z2V0KCksIENhY2hlZEltYWdlOjpNYW51YWxseUNhY2hlZCwgc2Vzc2lvbklEKTsKIAotICAgIC8v
IEFjdHVhbCByZWxlYXNlIG9mIHRoZSBDR0ltYWdlUmVmIGlzIGRvbmUgaW4gQml0bWFwSW1hZ2Uu
Ci0gICAgQ0ZSZXRhaW4oaW1hZ2UpOwogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoJmR1bW15
Q2FjaGVkSW1hZ2VDbGllbnQoKSk7CiAgICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJp
dG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgpKTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
CmluZGV4IGZhZjBmODY5NjJjM2ZiNjU3Nzc0NWJmYWY3NWI0Yzg0ZDgwY2MwNjAuLmRjOTljNWI3
ZDJkNDY2MGQwZTgyMGMyZWI4NjQxNWMyYWNlNDFiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihkb3VibGUgZGVsYXkpCiAgICAgbV9mcmFtZVRpbWVy
LT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQogCi1ib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVB
dEluZGV4KHNpemVfdCBpbmRleCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6
OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1l
cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tp
bmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAK
IGJvb2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTE4
NCw5ICsxODQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgICAgICBtX2ZyYW1lcy5n
cm93KG51bUZyYW1lcyk7CiAKICAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSA9IG1fc291cmNlLmNy
ZWF0ZUZyYW1lQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgICAgIG1fZnJh
bWVzW2luZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1w
bGluZ0xldmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAx
ICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBpZiAobnVtRnJhbWVzID09IDEg
JiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgICAgICBjaGVja0ZvclNvbGlkQ29s
b3IoKTsKICAgICB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNo
ZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJ
bQogICAgIGlmICghc3Vic2FtcGxpbmdMZXZlbCAmJiBmcmFtZVNpemUgIT0gbV9zaXplKQogICAg
ICAgICBtX2hhc1VuaWZvcm1GcmFtZVNpemUgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lc1tp
bmRleF0ubV9mcmFtZSkgeworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewogICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcyk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gZGVsdGFCeXRlczsKICAgICAgICAg
Ly8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJzdW1lIHRoZSBwYXJ0aWFsbHkgZGVj
b2RlZCBkYXRhIHVzZWQKQEAgLTM3OSwxNCArMzc5LDE0IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNh
Y2hpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUg
JiYgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09
IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAg
ICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJhbWVzW2lu
ZGV4XS5tX2hhdmVNZXRhZGF0YSkpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAsIGZyYW1l
Q2FjaGluZyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJp
dG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25T
Y2FsZUhpbnQpCitQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50KQogewogICAgIGlm
IChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzk1
LDcgKzM5NSw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4
KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhCiAKICAgICAvLyBXZSBtYXkgaGF2
ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGlj
aCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgot
ICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFt
ZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZl
bCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxp
bmdMZXZlbCkgewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQsIGJ1
dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KICAgICAg
ICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKICAgICAg
ICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOwpAQCAtNDA2LDEwICs0MDYsMTAgQEAgUGFz
c05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBm
bG9hdCBwcmVzZW50YXRpb25TY2EKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNo
ZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkg
fHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOwogCi0gICAgcmV0
dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QgaW5kZXgpCkBAIC00MzAsNyArNDMwLDcgQEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIAogUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIGZyYW1l
QXRJbmRleChjdXJyZW50RnJhbWUoKSk7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KGN1
cnJlbnRGcmFtZSgpKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKaW5kZXggNzQ5M2M2YTRiZmI4NjNkOTc2MzdjNDljNDY0Y2MzN2FlNzhlMGEw
NC4uNGVkNzI4YTZlMWM0ZmIzMWNhZmE3YmM1ZDZiZjlmZDBiZDk5ZmJmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC00NywxNiArNDcs
NiBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhCSVRNQVA7CiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIHN0cnVjdCBGcmFtZURhdGE7Ci19Ci0KLW5hbWVzcGFjZSBXVEYg
ewotICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxXZWJDb3JlOjpGcmFtZURhdGE+
IDogcHVibGljIFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsKLSAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSBmYWxzZTsgLy8gTm90IGFsbCBGcmFtZURh
dGEgbWVtYmVycyBpbml0aWFsaXplIHRvIDAuCi0gICAgfTsKLX0KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBUaW1lcjsKIApAQCAtNjUsMTcgKzU1LDggQEAgY2xhc3MgVGltZXI7CiAv
LyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogc3Ry
dWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhbWVEYXRhKTsKIHB1
YmxpYzoKICAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fZnJhbWUoMCkKLSAgICAgICAgLCBt
X29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICAsIG1fc3Vic2Ft
cGxpbmdMZXZlbCgwKQotICAgICAgICAsIG1fZHVyYXRpb24oMCkKLSAgICAgICAgLCBtX2hhdmVN
ZXRhZGF0YShmYWxzZSkKLSAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCi0gICAgICAgICwg
bV9oYXNBbHBoYSh0cnVlKSAKLSAgICAgICAgLCBtX2ZyYW1lQnl0ZXMoMCkKICAgICB7CiAgICAg
fQogCkBAIC04NCwxOCArNjUsMjIgQEAgcHVibGljOgogICAgICAgICBjbGVhcih0cnVlKTsKICAg
ICB9CiAKLSAgICAvLyBDbGVhciB0aGUgY2FjaGVkIGltYWdlIGRhdGEgb24gdGhlIGZyYW1lLCBh
bmQgKG9wdGlvbmFsbHkpIHRoZSBtZXRhZGF0YS4KLSAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhl
cmUgd2FzIGNhY2hlZCBpbWFnZSBkYXRhIHRvIGNsZWFyLgogICAgIGJvb2wgY2xlYXIoYm9vbCBj
bGVhck1ldGFkYXRhKTsKLQotICAgIE5hdGl2ZUltYWdlUHRyIG1fZnJhbWU7Ci0gICAgSW1hZ2VP
cmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1w
bGluZ0xldmVsOwotICAgIGZsb2F0IG1fZHVyYXRpb247Ci0gICAgYm9vbCBtX2hhdmVNZXRhZGF0
YSA6IDE7Ci0gICAgYm9vbCBtX2lzQ29tcGxldGUgOiAxOwotICAgIGJvb2wgbV9oYXNBbHBoYSA6
IDE7Ci0gICAgdW5zaWduZWQgbV9mcmFtZUJ5dGVzOworICAgIE9wdGlvbmFsPENvbG9yPiBzb2xp
ZENvbG9yKCkgY29uc3Q7CisKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIEltYWdl
T3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07Cisg
ICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07CisgICAgZmxvYXQg
bV9kdXJhdGlvbiB7IDAgfTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAg
ICAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKKyAgICAgICAgICAgIGJvb2wgbV9pc0NvbXBs
ZXRlIDogMTsKKyAgICAgICAgICAgIGJvb2wgbV9oYXNBbHBoYSA6IDE7CisgICAgICAgIH07Cisg
ICAgICAgIHVpbnQ4X3QgbV9mbGFnc1tzaXplb2YoYm9vbCldIHsgMCB9OworICAgIH07CisgICAg
dW5zaWduZWQgbV9mcmFtZUJ5dGVzIHsgMCB9OwogfTsKIAogLy8gPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjE0LDEwICsxOTksMTAgQEAgcHJv
dGVjdGVkOgogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKTsKIAotICAgIFBhc3NOYXRpdmVJbWFn
ZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAx
KTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KHNpemVf
dCk7CisgICAgUGFzc05hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgZmxv
YXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7CisgICAgUGFzc05hdGl2ZUltYWdlUHRyIGNv
cHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKLSAgICBib29sIGhhdmVGcmFt
ZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBib29sIGhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qp
OwogCiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7CiAgICAgZmxvYXQg
ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NGVmMDUzYTMzM2ZmNWZjNTc4ZTgx
ODAwY2M2ZmM5NzU1ZWZiYWI4Li5jZTAyMjU3NGVlNjYzNDgwNWRmNjhhNTEzMGUyNTIwYTkwMDQz
ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50
KCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkg
OiAwOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCitQYXNzTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4QXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
aW5kZXggYWNkZDFjZTRjZTMwMGRlODFjOWUwNjJlZWU3NjA3YmY0NzJhNzBhZi4uNGQ0NTNkMjVk
ZDZlOGFmNjI1MTI4MTAyZDVlYTZmZmYzYTdmNDA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGlj
OgogICAgIC8vIGRlY29kZWQgZnJhbWVzLgogICAgIC8vCiAgICAgLy8gQ2FsbGVycyBzaG91bGQg
bm90IGNhbGwgY2xlYXIoZmFsc2UsIG4pIGFuZCBzdWJzZXF1ZW50bHkgY2FsbAotICAgIC8vIGNy
ZWF0ZUZyYW1lQXRJbmRleChtKSB3aXRoIG0gPCBuLCB1bmxlc3MgdGhleSBmaXJzdCBjYWxsIGNs
ZWFyKHRydWUpLgorICAgIC8vIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG0pIHdpdGggbSA8IG4s
IHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCiAgICAgLy8gVGhpcyBlbnN1cmVz
IHRoYXQgc3RhdGVmdWwgSW1hZ2VTb3VyY2VzL2RlY29kZXJzIHdpbGwgd29yayBwcm9wZXJseS4K
ICAgICAvLwogICAgIC8vIFRoZSB8ZGF0YXwgYW5kIHxhbGxEYXRhUmVjZWl2ZWR8IHBhcmFtZXRl
cnMgc2hvdWxkIGJlIHN1cHBsaWVkIGJ5IGNhbGxlcnMKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcg
Y2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVh
cigpIGFib3ZlLgotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgUGFzc05hdGl2ZUltYWdlUHRyIGNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOwogCiAgICAg
ZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1
c2VkIGFueSBhbHBoYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZVB0ci5oCmluZGV4IGRmOTQxYTU2NmE5ZTQ2OTI3NzI3YmExZWM2ODQ4ZjIxNjgw
M2E0NWIuLmVjYTFiOTJjNDFlZTE4MjhlMzEwZDViZWRiYjJiNWFjYTU5NWY1NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAt
MjksNiArMjksNyBAQAogI2RlZmluZSBOYXRpdmVJbWFnZVB0cl9oCiAKICNpZiBVU0UoQ0cpCisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFn
ZVJlZjsKICNlbGlmIFVTRShDQUlSTykKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAtNDEs
NyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBGSVhNRTogTmF0aXZlSW1hZ2VQdHIg
YW5kIFBhc3NOYXRpdmVJbWFnZVB0ciBzaG91bGQgYmUgc21hcnQKIC8vIHBvaW50ZXJzIChzZWUg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpLgogI2lmIFVTRShDRykKLXR5
cGVkZWYgQ0dJbWFnZVJlZiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRlZiBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKIHR5cGVkZWYgUGFzc1JlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IFBhc3NOYXRpdmVJbWFnZVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDYzZGNm
MGEyNTNlMjM0MGY2N2YxYzgxZDg1ZmMyNzBkZDIzMGU4NmQuLmE0YzY1YmRmZjMyYTkyZjljMWRm
MjZkNGJmNTMwODBmMDVhYjk2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTAzNyw3ICsxMDM3LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1h
Z2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewotICAgICAgICBDR0ltYWdlUmVmIG5ld0lt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIENHSW1h
Z2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS5nZXQo
KTsKICAgICAgICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcAppbmRleCBjZDU3ZWU0ODVlYTgwYzZjZjM0N2FiM2JkOTczN2Q1OTk5ZTEw
MjgyLi4xZjZmZjQyNTI3Y2NjOWU2Y2Q0OGMyMjc2MGYyNzRmNTdjNWRiZDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwog
CiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAg
ICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGlt
YWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9
IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAo
IXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0
LgogICAgICAgICByZXR1cm47CiAKQEAgLTE1OCw4ICsxNTgsOCBAQCBib29sIEZyYW1lRGF0YTo6
Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIGlmIChjbGVhck1ldGFkYXRhKQogICAgICAg
ICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAg
bV9mcmFtZSA9IG51bGxwdHI7CisgICAgaWYgKG1faW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9
IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGNjNzA0NjE0N2FlODFmMWZh
ZGFhNmQ4NDE2MjQ5ODBjNmZkZmNiZjEuLjhjNDE4NmQ3MWU1M2ExOTA3ZTkyZDczYTJiMDE2NDdm
ZmQ2NmIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0yMTUsNyAr
MjE1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJ
bWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgZGVjb2Rlci5zZXREYXRh
KG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50
KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1l
QXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
bV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9y
IHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0
aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZv
ciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCAwMWI3ZDY5MmNkYmQ3YWI0ZDIyYmJjMTM5OWMx
MDMyOGY1N2U1ZTQ3Li5iZTEzNjJkZmQ1MTk3MDgwYTI4Yzc1MTk5MTk2NDZhMjU5Y2U0ZGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFn
ZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJ
bWFnZUNHLmNwcApAQCAtNTgsMTggKzU4LDE3IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29s
IGNsZWFyTWV0YWRhdGEpCiAgICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0
aW9uOwogICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IDA7CiAKLSAgICBpZiAobV9mcmFtZSkgewor
ICAgIGlmIChtX2ltYWdlKSB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKG1fZnJhbWUpOworICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xl
YXJJbWFnZShtX2ltYWdlLmdldCgpKTsKICNlbmRpZgotICAgICAgICBDR0ltYWdlUmVsZWFzZSht
X2ZyYW1lKTsKLSAgICAgICAgbV9mcmFtZSA9IDA7CisgICAgICAgIG1faW1hZ2UgPSBudWxscHRy
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1C
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVy
KiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFn
ZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAs
IG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAsIG1faW1hZ2VPcmllbnRhdGlvbihP
cmlnaW5Ub3BMZWZ0KQpAQCAtODksOCArODgsOCBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2Uo
Q0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fc2l6
ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQogewotICAgIENH
RmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSk7Ci0gICAgQ0dGbG9hdCBoZWln
aHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOworICAgIENHRmxvYXQgd2lkdGggPSBDR0lt
YWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAgbV9kZWNvZGVkU2l6ZSA9IHdpZHRoICogaGVpZ2h0
ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogCkBAIC05OSw3ICs5
OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IG1f
c2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9
IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7CisgICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IGltYWdl
OwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVlOwogICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIApAQCAtMTM2LDcgKzEzNSw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghaGF2ZUZyYW1lQXRJbmRleCgwKSkgeworICAgIGlmICgh
aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KDApKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IG1fc291
cmNlLmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiAgICAgICAgIGlmIChzaXplLndpZHRoKCkgIT0g
MSB8fCBzaXplLmhlaWdodCgpICE9IDEpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDcsNyAr
MTQ2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKIAogICAgIENH
SW1hZ2VSZWYgaW1hZ2UgPSBudWxscHRyOwogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkpCi0gICAg
ICAgIGltYWdlID0gbV9mcmFtZXNbMF0ubV9mcmFtZTsKKyAgICAgICAgaW1hZ2UgPSBtX2ZyYW1l
c1swXS5tX2ltYWdlLmdldCgpOwogCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTczLDE2ICsxNzIsMTYgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9y
KCkKIAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lQXRJbmRleCgwKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCkuZ2V0
KCk7CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0dJ
bWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOwotICAgICAgICBpZiAoY2dJbWFnZSAm
JiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChjZ0lt
YWdlKSkgPT0gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBjZ0ltYWdlOworICAgICAgICBQYXNz
TmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYg
KGltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkpID09IHNpemUpCisgICAgICAgICAgICByZXR1cm4gaW1hZ2Uu
Z2V0KCk7CiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQgQ0dJbWFnZVJl
ZiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSByaWdodCBzaXplCkBAIC0xOTcsOCArMTk2LDggQEAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAgIAog
ICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoTlVMTCwg
Y291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFt
ZUF0SW5kZXgoaSkpCi0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXksIGN1cnJG
cmFtZSk7CisgICAgICAgIGlmIChOYXRpdmVJbWFnZVB0ciBjdXJyRnJhbWUgPSBmcmFtZUltYWdl
QXRJbmRleChpKSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZy
YW1lLmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwogfQpAQCAtMjEx
LDE1ICsyMTAsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICBzdGFydEFuaW1hdGlv
bigpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CisgICAgTmF0
aXZlSW1hZ2VQdHIgaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZv
ciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgogICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29u
dGV4dChjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNv
cHlVbnNjYWxlZEZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOworICAgICAgICBpbWFnZSA9
IGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBlbHNl
IHsKICAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBw
bHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxm
bG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAv
IHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQg
LyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKLSAgICAgICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOworICAgICAgICBpbWFnZSA9IGZyYW1lSW1h
Z2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKICAgICB9CiAKICAg
ICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdl
IHlldC4KQEAgLTI1MSwxOCArMjUwLDE4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotUGFzc05hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQor
UGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgp
IHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMu
c2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFtZShp
bmRleCwgMCk7CiAKICAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwp
Ci0gICAgICAgIHJldHVybiBDR0ltYWdlUmV0YWluKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKTsK
KyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogCi0gICAgcmV0dXJuIG1f
c291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAgcmV0dXJuIG1fc291cmNlLmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cAppbmRleCA2YzAzYTJjZWY4NDYwNjU2MWVhMDdlYjkyOGYxY2YyOTVmOWY1ZTM2Li43YTEzYmI1
ODQ2NzA4ZDM3ZTAyYmQzZGQ2NzIzYzI3YTQ5NTE3NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cApAQCAtMzMzLDEwICszMzMsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRy
YWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAg
aWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5k
ZXgoMCkpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoMCk7CiAgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpLmdldCgpOwogICAgIGlmICghbV9jZ0ltYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpw
YWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwog
ICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xh
dGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNn
SW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE0NDk2NTQwNDZhZThmMTBhYmFkMTY0MTVlNjQ2MGFk
YmJiYjhlODguLjE2MjA5YWY1MzQ0ODFkYjRjZGRkOGI0MjNjZTdiZjJhNDBiMGRiZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKQEAgLTMxMSw4ICszMTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dAogICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNlLngoKSAtIGRlc3RSZWN0LngoKSArIHRpbGVS
ZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAv
LyBXZSB0cmFuc2xhdGVkIHRoZSBjb250ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBv
cmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91dC4KICAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVj
dC5oZWlnaHQoKSAtIChwaGFzZS55KCkgLSBkZXN0UmVjdC55KCkgKyB0aWxlUmVjdC55KCkgKiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVI
ZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJlZiB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwotICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFn
ZSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGls
ZUltYWdlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJbWFnZTsKICNp
ZiBQTEFURk9STShJT1MpCkBAIC0zMjYsMTMgKzMyNiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdAogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1k
ZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0
IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBv
bmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGlt
YWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdodCgp
KTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJl
Y3QodGlsZUltYWdlLCB0aWxlUmVjdCkpOworICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CiAg
ICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVj
YXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5n
LAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2Vk
IG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgp
ICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxv
YXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOworICAgIGZsb2F0IHcgPSBDR0ltYWdl
R2V0V2lkdGgodGlsZUltYWdlLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lk
dGgoKSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYm
ICFzcGFjaW5nLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFw
IHRoZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJv
cmRlci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxs
IGJ1dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
CmluZGV4IGQ0YTAxMmI2ZjU3YmY1MzkzMDY0Nzc3YjZjMTA5MzY2YjI0YzQ0NWMuLjBkOGUyYTQ5
MDNmNzBlZjE3ZGFmMWZiMTEzZGY3NmJhNDIzY2I4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCkBAIC0zNDAsNyAr
MzQwLDcgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyID8gQ0dJbWFnZVNvdXJjZUdldENvdW50KG1fZGVjb2RlcikgOiAwOwogfQog
Ci1DR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitQYXNzTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNjYsMTggKzM2NiwxNSBAQCBDR0ltYWdlUmVm
IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbQogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkgPSBDRlNU
UigicHVibGljLnhiaXRtYXAtaW1hZ2UiKTsKIAogICAgIGlmICghaW1hZ2VVVEkpCi0gICAgICAg
IHJldHVybiBpbWFnZS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGlm
ICghQ0ZFcXVhbChpbWFnZVVUSSwgeGJtVVRJKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtS
ZWYoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIAogICAgIC8vIElmIGl0IGlzIGFuIHhi
bSBpbWFnZSwgbWFzayBvdXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIgdGhlbSB0cmFu
c3BhcmVudC4KICAgICBjb25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7MjU1LCAyNTUs
ICAyNTUsIDI1NSwgMjU1LCAyNTV9OwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXNrZWRJ
bWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhNYXNraW5nQ29sb3JzKGltYWdlLmdldCgp
LCBtYXNraW5nQ29sb3JzKSk7Ci0gICAgaWYgKCFtYXNrZWRJbWFnZSkKLSAgICAgICAgcmV0dXJu
IGltYWdlLmxlYWtSZWYoKTsKLQotICAgIHJldHVybiBtYXNrZWRJbWFnZS5sZWFrUmVmKCk7Cisg
ICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAogYm9vbCBJ
bWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNERWZsLmNwcAppbmRleCBiYTQxNTk3YWExMTAxZGI2MjkwMjNkMjczYjIwMGU3ODFk
MzNhYWM5Li41OWNjMmM5YmU4YjNmZmUxMTE4NmE2ODVkMmU4Y2Y1OTRjMWQzOTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAg
ICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDAp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0
aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBi
ZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmlu
ZGV4IGZmMDcxMzFhNjFmY2VkMDQ1ODZiMzcyZDliYTIwNzlhOTg3M2MzOGIuLmZhMDExYWE4ODE2
MzAzMDAwOTQ0OThlYmMwZmZjYTlmYjljMzAzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTk1LDcgKzk1LDcgQEAgQ0ZEYXRh
UmVmIEJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24oKQogCiAgICAgVmVjdG9yPENH
SW1hZ2VSZWY+IGltYWdlczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRnJhbWVz
OyArK2kgKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lQXRJbmRleChpKTsK
KyAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7
CiAgICAgICAgIGlmIChjZ0ltYWdlKQogICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKaW5kZXggODM1ZWNmM2Y0ZmVlZWI4YTBkZmE4ZDM2OTczMTI4ZjNiODA3
YjkyNi4uZjkxMjhhOTc2NDJiNzRmMzFmYTZmNGVjNzIxNTYxMGQ1MWE2MWRiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBm
cmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7
ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KGkpOworICAg
ICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CiAgICAgICAgIGlm
IChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVu
dEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
YWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
YWlyb1dpbi5jcHAKaW5kZXggMjlhMjAyM2RiNjNhOTE0MzRjMzk0OGVhYTU1MjNiYjYxZmU4MTA3
NS4uOTdlZDA5NzkzNWM1MWZjMjBhODQ1Yzk1OGUxNTY5OGQyMDAwZGI4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNw
cApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVf
dCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFt
ZXM7ICsraSkgewotICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJh
bWVBdEluZGV4KGkpOworICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0g
ZnJhbWVJbWFnZUF0SW5kZXgoaSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273907</attachid>
            <date>2016-03-13 17:14:59 -0700</date>
            <delta_ts>2016-03-13 17:22:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160313171447.patch</filename>
            <type>text/plain</type>
            <size>32005</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjOThmYzYxZmI4ZmUx
ZTAxYTY5MWNjNzg0OTM0NmU1YTkwNzI1MC4uMWZiOTA0ZDliOGY0ZWVjMzAzOTNiM2FkZjRiNDUx
OTM3NTVhYzk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE2LTAzLTEzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgQ2hhbmdl
IE5hdGl2ZUltYWdlUHRyIGZvciBDRyB0byBiZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhdmluZyBOYXRpdmVJ
bWFnZVB0ciBhcyBhIHJhdyBwb2ludGVyIG1ha2VzIG1hbmFnaW5nIHRoZSBsaWZlIGN5Y2xlIG9m
CisgICAgICAgIHRoZSBDR0ltYWdlUmVmIGhhcmQuIEEgbG90IG9mIHdvcmtzIHdhcyBkb25lIHRv
IG1ha2Ugc3VyZSB0aGUgQ0cgcG9pbnRlcgorICAgICAgICBpcyBtYWludGFpbmVkIGNvcnJlY3Rs
eS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYSBGcmFtZURhdGEgc2luY2UKKyAg
ICAgICAgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdlUmVm
LgorCisgICAgICAgIEkgYW0gZ29pbmcgdG8gZm9sbG93IHRoaXMgbmFtaW5nIGNvbnZlbnRpb246
CisgICAgICAgIDEuIEFuIEltYWdlIG9iamVjdCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURh
dGEuIEEgRnJhbWVEYXRhIGNhbiBiZSBuYW1lZAorICAgICAgICAgICBmb3Igc2hvcnRuZXNzIGFz
ICJmcmFtZSIsICJtX2ZyYW1lcyIsIGV0Yy4KKyAgICAgICAgMi4gQSBGcmFtZURhdGEgY2FuIGhh
dmUgemVybyBvciBvbmUgTmF0aXZlSW1hZ2VQdHIuIEEgTmF0aXZlSW1hZ2VQdHIgY2FuCisgICAg
ICAgICAgIGJlIG5hbWVkIGFzICJpbWFnZSIsICJtX2ltYWdlIiwgZXRjCisKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2Fj
aGU6OmFkZEltYWdlVG9DYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdl
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZURhdGE6OkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVj
a0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6
OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1h
Z2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpn
ZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1l
QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9pb3MvSWNvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okljb246Okljb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorCiAyMDE2LTAzLTEyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0Zvcm1zOiBmb2N1c10gZm9j
dXMgcmluZ3MgYXJvdW5kIHRleHQgZmllbGRzIGRvIG5vdCBmb2xsb3cgY29udG91ciAoYm9yZGVy
LXJhZGl1cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmlu
ZGV4IDk5OTQ2NWVhMzkwNjk3Y2JlMDBmZTZmYTg4MzhjMTM4ZTU0NDdhMTcuLjg0NmMwZGM5Mzg0
ZTc1ZGJhMDgyMGMyODBmYjY0MWNlOGEwOGYxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtMjI1LDggKzIyNSw2IEBAIGJvb2wgTWVtb3J5Q2Fj
aGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkSW1hZ2U+IGNhY2hlZEltYWdl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5nZXQoKSwg
Q2FjaGVkSW1hZ2U6Ok1hbnVhbGx5Q2FjaGVkLCBzZXNzaW9uSUQpOwogCi0gICAgLy8gQWN0dWFs
IHJlbGVhc2Ugb2YgdGhlIENHSW1hZ2VSZWYgaXMgZG9uZSBpbiBCaXRtYXBJbWFnZS4KLSAgICBD
RlJldGFpbihpbWFnZSk7CiAgICAgY2FjaGVkSW1hZ2UtPmFkZENsaWVudCgmZHVtbXlDYWNoZWRJ
bWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1h
Z2UtPmRlY29kZWRTaXplKCkpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXgg
ZmFmMGY4Njk2MmMzZmI2NTc3NzQ1YmZhZjc1YjRjODRkODBjYzA2MC4uZGM5OWM1YjdkMmQ0NjYw
ZDBlODIwYzJlYjg2NDE1YzJhY2U0MWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpzdGFydFRpbWVyKGRvdWJsZSBkZWxheSkKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0
T25lU2hvdChkZWxheSk7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQorYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZy
YW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKIH0KIAogYm9vbCBC
aXRtYXBJbWFnZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTg0LDkgKzE4
NCw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVt
RnJhbWVzKTsKIAogICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1l
KSB7Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJh
bWVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgbV9mcmFtZXNbaW5k
ZXhdLm1faW1hZ2UgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vi
c2FtcGxpbmdMZXZlbCk7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2
ZWwgPSBzdWJzYW1wbGluZ0xldmVsOwotICAgICAgICBpZiAobnVtRnJhbWVzID09IDEgJiYgbV9m
cmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwog
ICAgIH0KIApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAg
aWYgKCFzdWJzYW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3NpemUpCiAgICAgICAgIG1f
aGFzVW5pZm9ybUZyYW1lU2l6ZSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lKSB7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKSB7CiAgICAgICAgIGlu
dCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
KTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBUaGUg
ZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGRh
dGEgdXNlZApAQCAtMzc5LDE0ICszNzksMTQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJh
bWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKQot
ICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9m
cmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVN
ZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgfHwg
KGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1f
aGF2ZU1ldGFkYXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5n
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1h
Z2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGlu
dCkKK1Bhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCiB7CiAgICAgaWYgKGluZGV4
ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zOTUsNyArMzk1
LDcgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hl
ZCBhIGZyYW1lIHdpdGggYSBoaWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ug
d2UgbmVlZCB0bwogICAgIC8vIHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYg
KGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lICYmIHN1
YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7Cisg
ICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
ICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVs
KSB7CiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRv
byBzbWFsbCBhIHNpemUsIHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgogICAgICAgICBpbnQg
c2l6ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwogICAgICAgICBtX2Zy
YW1lc1tpbmRleF0uY2xlYXIodHJ1ZSk7CkBAIC00MDYsMTAgKzQwNiwxMCBAQCBQYXNzTmF0aXZl
SW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHBy
ZXNlbnRhdGlvblNjYQogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmVuJ3QgZmV0Y2hlZCBhIGZy
YW1lIHlldCwgZG8gc28uCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9m
cmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8
fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKLSAgICByZXR1cm4gbV9m
cmFtZXNbaW5kZXhdLm1fZnJhbWU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
OwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBp
bmRleCkKQEAgLTQzMCw3ICs0MzAsNyBAQCBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQogCiBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4
KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoY3VycmVudEZy
YW1lKCkpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaAppbmRleCA3NDkzYzZhNGJmYjg2M2Q5NzYzN2M0OWM0NjRjYzM3YWU3OGUwYTA0Li40ZWQ3
MjhhNmUxYzRmYjMxY2FmYTdiYzVkNmJmOWZkMGJkOTlmYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTQ3LDE2ICs0Nyw2IEBAIHR5
cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdURiB7Ci0gICAg
dGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4gOiBwdWJs
aWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBj
YW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0YSBtZW1i
ZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFRpbWVyOwogCkBAIC02NSwxNyArNTUsOCBAQCBjbGFzcyBUaW1lcjsKIC8vID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBzdHJ1Y3QgRnJh
bWVEYXRhIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZURhdGEpOwogcHVibGljOgog
ICAgIEZyYW1lRGF0YSgpCi0gICAgICAgIDogbV9mcmFtZSgwKQotICAgICAgICAsIG1fb3JpZW50
YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgICwgbV9zdWJzYW1wbGluZ0xl
dmVsKDApCi0gICAgICAgICwgbV9kdXJhdGlvbigwKQotICAgICAgICAsIG1faGF2ZU1ldGFkYXRh
KGZhbHNlKQotICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0Fs
cGhhKHRydWUpIAotICAgICAgICAsIG1fZnJhbWVCeXRlcygwKQogICAgIHsKICAgICB9CiAKQEAg
LTg0LDE4ICs2NSwyMiBAQCBwdWJsaWM6CiAgICAgICAgIGNsZWFyKHRydWUpOwogICAgIH0KIAot
ICAgIC8vIENsZWFyIHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBvbiB0aGUgZnJhbWUsIGFuZCAob3B0
aW9uYWxseSkgdGhlIG1ldGFkYXRhLgotICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMg
Y2FjaGVkIGltYWdlIGRhdGEgdG8gY2xlYXIuCiAgICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0
YWRhdGEpOwotCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9mcmFtZTsKLSAgICBJbWFnZU9yaWVudGF0
aW9uIG1fb3JpZW50YXRpb247Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2
ZWw7Ci0gICAgZmxvYXQgbV9kdXJhdGlvbjsKLSAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsK
LSAgICBib29sIG1faXNDb21wbGV0ZSA6IDE7Ci0gICAgYm9vbCBtX2hhc0FscGhhIDogMTsKLSAg
ICB1bnNpZ25lZCBtX2ZyYW1lQnl0ZXM7CisgICAgT3B0aW9uYWw8Q29sb3I+IHNvbGlkQ29sb3Io
KSBjb25zdDsKKworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgSW1hZ2VPcmllbnRh
dGlvbiBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJz
YW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0
aW9uIHsgMCB9OworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGJv
b2wgbV9oYXZlTWV0YWRhdGEgOiAxOworICAgICAgICAgICAgYm9vbCBtX2lzQ29tcGxldGUgOiAx
OworICAgICAgICAgICAgYm9vbCBtX2hhc0FscGhhIDogMTsKKyAgICAgICAgfTsKKyAgICAgICAg
dWludDhfdCBtX2ZsYWdzW3NpemVvZihib29sKV0geyAwIH07CisgICAgfTsKKyAgICB1bnNpZ25l
ZCBtX2ZyYW1lQnl0ZXMgeyAwIH07CiB9OwogCiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yMTQsMTAgKzE5OSwxMCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICBzaXplX3QgZnJhbWVDb3VudCgpOwogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGZy
YW1lQXRJbmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAg
IFBhc3NOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAg
ICBQYXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVz
ZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKKyAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY29weVVuc2Nh
bGVkRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAotICAgIGJvb2wgaGF2ZUZyYW1lQXRJbmRl
eChzaXplX3QpOworICAgIGJvb2wgaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAg
ICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBmbG9hdCBmcmFtZUR1
cmF0aW9uQXRJbmRleChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSWNvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNv
bi5oCmluZGV4IGQ5NWU3ZGViODEwZmMyNGY3ZjYxYjFiMjNhNGI5YWVmM2YzYzE3YjcuLjI4YzEz
N2QyOWIxMThhOWNmMWI2MTYxZWRlNGRlNDkxZDA0ODgzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JY29uLmgKQEAgLTY4LDggKzY4LDggQEAgcHVibGljOgogCiBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKElPUykKLSAgICBJY29uKENHSW1hZ2VSZWYpOwotICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CisgICAgSWNvbihOYXRpdmVJbWFnZVB0cik7CisgICAg
TmF0aXZlSW1hZ2VQdHIgbV9jZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIEljb24o
TlNJbWFnZSopOwogICAgIFJldGFpblB0cjxOU0ltYWdlPiBtX25zSW1hZ2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNzRlZjA1
M2EzMzNmZjVmYzU3OGU4MTgwMGNjNmZjOTc1NWVmYmFiOC4uZTM4MjFkNDYxZTRmNDRiNjc1YTUz
MTRjOTg0OTY1NDEzNzAyNzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHNpemVfdCBJbWFnZVNv
dXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rl
ci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNl
OjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQorUGFz
c05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCiAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKaW5kZXggYWNkZDFjZTRjZTMwMGRlODFjOWUwNjJlZWU3NjA3YmY0NzJhNzBhZi4u
NGQ0NTNkMjVkZDZlOGFmNjI1MTI4MTAyZDVlYTZmZmYzYTdmNDA0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHVibGljOgogICAgIC8vIGRlY29kZWQgZnJhbWVzLgogICAgIC8vCiAgICAgLy8gQ2FsbGVy
cyBzaG91bGQgbm90IGNhbGwgY2xlYXIoZmFsc2UsIG4pIGFuZCBzdWJzZXF1ZW50bHkgY2FsbAot
ICAgIC8vIGNyZWF0ZUZyYW1lQXRJbmRleChtKSB3aXRoIG0gPCBuLCB1bmxlc3MgdGhleSBmaXJz
dCBjYWxsIGNsZWFyKHRydWUpLgorICAgIC8vIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG0pIHdp
dGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCiAgICAgLy8gVGhp
cyBlbnN1cmVzIHRoYXQgc3RhdGVmdWwgSW1hZ2VTb3VyY2VzL2RlY29kZXJzIHdpbGwgd29yayBw
cm9wZXJseS4KICAgICAvLwogICAgIC8vIFRoZSB8ZGF0YXwgYW5kIHxhbGxEYXRhUmVjZWl2ZWR8
IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHN1cHBsaWVkIGJ5IGNhbGxlcnMKQEAgLTE0Niw3ICsxNDYs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVy
IGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50
cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgUGFzc05hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAp
OwogCiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZy
YW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBh
Y3R1YWxseSB1c2VkIGFueSBhbHBoYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmluZGV4IGRmOTQxYTU2NmE5ZTQ2OTI3NzI3YmExZWM2
ODQ4ZjIxNjgwM2E0NWIuLmVjYTFiOTJjNDFlZTE4MjhlMzEwZDViZWRiYjJiNWFjYTU5NWY1NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQ
dHIuaApAQCAtMjksNiArMjksNyBAQAogI2RlZmluZSBOYXRpdmVJbWFnZVB0cl9oCiAKICNpZiBV
U0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZSogQ0dJbWFnZVJlZjsKICNlbGlmIFVTRShDQUlSTykKICNpbmNsdWRlICJSZWZQdHJDYWlyby5o
IgpAQCAtNDEsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBGSVhNRTogTmF0aXZl
SW1hZ2VQdHIgYW5kIFBhc3NOYXRpdmVJbWFnZVB0ciBzaG91bGQgYmUgc21hcnQKIC8vIHBvaW50
ZXJzIChzZWUgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpLgogI2lmIFVT
RShDRykKLXR5cGVkZWYgQ0dJbWFnZVJlZiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRl
ZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKIHR5cGVkZWYgUGFzc1Jl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFBhc3NOYXRpdmVJbWFnZVB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmlu
ZGV4IDYzZGNmMGEyNTNlMjM0MGY2N2YxYzgxZDg1ZmMyNzBkZDIzMGU4NmQuLmE0YzY1YmRmZjMy
YTkyZjljMWRmMjZkNGJmNTMwODBmMDVhYjk2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTAzNyw3
ICsxMDM3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1Rv
SW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewotICAgICAgICBDR0ltYWdl
UmVmIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAg
ICAgIENHSW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKS5nZXQoKTsKICAgICAgICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0
bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBjZDU3ZWU0ODVlYTgwYzZjZjM0N2FiM2JkOTcz
N2Q1OTk5ZTEwMjgyLi4xZjZmZjQyNTI3Y2NjOWU2Y2Q0OGMyMjc2MGYyNzRmNTdjNWRiZDdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNv
bnN0IEZsbwogCiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRG
cmFtZSk7CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBo
YXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3Vu
dCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
c3VyZmFjZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsK
ICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4g
aW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAKQEAgLTE1OCw4ICsxNTgsOCBAQCBib29sIEZy
YW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIGlmIChjbGVhck1ldGFkYXRh
KQogICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWUpIHsK
LSAgICAgICAgbV9mcmFtZSA9IG51bGxwdHI7CisgICAgaWYgKG1faW1hZ2UpIHsKKyAgICAgICAg
bV9pbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGNjNzA0NjE0
N2FlODFmMWZhZGFhNmQ4NDE2MjQ5ODBjNmZkZmNiZjEuLjhjNDE4NmQ3MWU1M2ExOTA3ZTkyZDcz
YTJiMDE2NDdmZmQ2NmIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBA
IC0yMTUsNyArMjE1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6
OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgZGVjb2Rl
ci5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5m
cmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNy
ZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VT
dXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAg
Ly8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBu
byBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBp
cyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCAwMWI3ZDY5MmNkYmQ3YWI0ZDIy
YmJjMTM5OWMxMDMyOGY1N2U1ZTQ3Li5iZTEzNjJkZmQ1MTk3MDgwYTI4Yzc1MTk5MTk2NDZhMjU5
Y2U0ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9C
aXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtNTgsMTggKzU4LDE3IEBAIGJvb2wgRnJhbWVEYXRhOjpj
bGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uOwogICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IDA7CiAKLSAgICBpZiAobV9m
cmFtZSkgeworICAgIGlmIChtX2ltYWdlKSB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAg
IHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1fZnJhbWUpOworICAgICAgICBzdWJpbWFnZUNh
Y2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdldCgpKTsKICNlbmRpZgotICAgICAgICBDR0ltYWdl
UmVsZWFzZShtX2ZyYW1lKTsKLSAgICAgICAgbV9mcmFtZSA9IDA7CisgICAgICAgIG1faW1hZ2Ug
PSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFn
ZVB0ciBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZl
cikKICAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAsIG1faW1hZ2VPcmll
bnRhdGlvbihPcmlnaW5Ub3BMZWZ0KQpAQCAtODksOCArODgsOCBAQCBCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAg
ICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQog
ewotICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSk7Ci0gICAgQ0dG
bG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOworICAgIENHRmxvYXQgd2lk
dGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIENHRmxvYXQgaGVpZ2h0ID0g
Q0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAgbV9kZWNvZGVkU2l6ZSA9IHdpZHRo
ICogaGVpZ2h0ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogCkBA
IC05OSw3ICs5OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1h
Z2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRh
dGlvbiA9IG1fc2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0u
bV9mcmFtZSA9IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7CisgICAgbV9mcmFtZXNbMF0ubV9pbWFn
ZSA9IGltYWdlOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVlOwogICAgIG1fZnJh
bWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIApAQCAtMTM2LDcgKzEzNSw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZyYW1lQ291bnQoKSA+
IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaGF2ZUZyYW1lQXRJbmRleCgwKSkgewor
ICAgIGlmICghaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KDApKSB7CiAgICAgICAgIEludFNpemUgc2l6
ZSA9IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiAgICAgICAgIGlmIChzaXplLndp
ZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNDcsNyArMTQ2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkK
IAogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBudWxscHRyOwogICAgIGlmIChtX2ZyYW1lcy5zaXpl
KCkpCi0gICAgICAgIGltYWdlID0gbV9mcmFtZXNbMF0ubV9mcmFtZTsKKyAgICAgICAgaW1hZ2Ug
PSBtX2ZyYW1lc1swXS5tX2ltYWdlLmdldCgpOwogCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTczLDE2ICsxNzIsMTYgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JT
b2xpZENvbG9yKCkKIAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCiB7
Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleCgwKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5k
ZXgoMCkuZ2V0KCk7CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFn
ZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHNpemVfdCBjb3VudCA9IGZy
YW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAg
ICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOwotICAgICAgICBpZiAo
Y2dJbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwgQ0dJbWFnZUdldEhl
aWdodChjZ0ltYWdlKSkgPT0gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBjZ0ltYWdlOworICAg
ICAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAg
ICAgICAgaWYgKGltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwg
Q0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpID09IHNpemUpCisgICAgICAgICAgICByZXR1
cm4gaW1hZ2UuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQg
Q0dJbWFnZVJlZiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSByaWdodCBzaXplCkBAIC0xOTcsOCArMTk2
LDggQEAgUmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXko
KQogICAgIAogICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJlZiBjdXJyRnJh
bWUgPSBmcmFtZUF0SW5kZXgoaSkpCi0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJy
YXksIGN1cnJGcmFtZSk7CisgICAgICAgIGlmIChOYXRpdmVJbWFnZVB0ciBjdXJyRnJhbWUgPSBm
cmFtZUltYWdlQXRJbmRleChpKSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJh
eSwgY3VyckZyYW1lLmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwog
fQpAQCAtMjExLDE1ICsyMTAsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICBzdGFy
dEFuaW1hdGlvbigpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7
CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQg
aW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgogICAgIGlmICh3a0NHQ29udGV4
dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBh
ZG9wdENGKGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOworICAgICAg
ICBpbWFnZSA9IGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsK
ICAgICBlbHNlIHsKICAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0g
Q0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0
LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBz
dGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6
ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6
ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKLSAgICAgICAgaW1hZ2UgPSBmcmFtZUF0
SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOworICAgICAgICBpbWFnZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKICAg
ICB9CiAKICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZl
IGFuIGltYWdlIHlldC4KQEAgLTI1MSwxOCArMjUwLDE4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotUGFzc05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90
IGluZGV4KQorUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291
bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0g
bV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgY2Fj
aGVGcmFtZShpbmRleCwgMCk7CiAKICAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBs
aW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBDR0ltYWdlUmV0YWluKG1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lKTsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogCi0gICAg
cmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAgcmV0dXJuIG1f
c291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHQzRENHLmNwcAppbmRleCA2YzAzYTJjZWY4NDYwNjU2MWVhMDdlYjkyOGYxY2YyOTVmOWY1ZTM2
Li43YTEzYmI1ODQ2NzA4ZDM3ZTAyYmQzZGQ2NzIzYzI3YTQ5NTE3NmMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHQzRENHLmNwcApAQCAtMzMzLDEwICszMzMsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVG
cmFtZUF0SW5kZXgoMCkpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGRlY29kZXIuY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdl
LmdldCgpOwogICAgIH0gZWxzZQotICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLmdldCgpOwogICAgIGlmICghbV9jZ0ltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBp
bnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE0NDk2NTQwNDZhZThmMTBhYmFkMTY0
MTVlNjQ2MGFkYmJiYjhlODguLjE2MjA5YWY1MzQ0ODFkYjRjZGRkOGI0MjNjZTdiZjJhNDBiMGRi
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTMxMSw4ICszMTEsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdAogICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNlLngoKSAtIGRlc3RSZWN0Lngo
KSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9y
bS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRoZSBjb250ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgp
IGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91dC4KICAgICBmbG9hdCBhZGp1c3RlZFkg
PSBkZXN0UmVjdC5oZWlnaHQoKSAtIChwaGFzZS55KCkgLSBkZXN0UmVjdC55KCkgKyB0aWxlUmVj
dC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uZCgpKSArIHNj
YWxlZFRpbGVIZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJlZiB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0
KHRpbGVJbWFnZSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRpbGVJbWFnZSA9IGltYWdl
Lm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRI
ZWlnaHQodGlsZUltYWdlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJ
bWFnZTsKICNpZiBQTEFURk9STShJT1MpCkBAIC0zMjYsMTMgKzMyNiwxMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdAogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91dCBvZiBhIHBh
cnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUgb3JpZ2luYWwg
aW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVzZSBzdWItaW1h
Z2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSByZW5kZXJzIHdo
ZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VSVChoID09IGltYWdl
LmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRo
SW1hZ2VJblJlY3QodGlsZUltYWdlLCB0aWxlUmVjdCkpOworICAgICAgICBzdWJJbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVS
ZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4g
dGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVy
byBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0
ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVj
dC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7
Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOworICAgIGZsb2F0IHcg
PSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5z
aXplKCkud2lkdGgoKSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53
aWR0aCgpICYmICFzcGFjaW5nLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVt
cyB0byBzbmFwIHRoZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5n
LiB3aXRoIGJvcmRlci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxk
IHRpbGUgYWxsIGJ1dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0cuY3BwCmluZGV4IGQ0YTAxMmI2ZjU3YmY1MzkzMDY0Nzc3YjZjMTA5MzY2YjI0YzQ0NWMu
LjBkOGUyYTQ5MDNmNzBlZjE3ZGFmMWZiMTEzZGY3NmJhNDIzY2I4MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCkBA
IC0zNDAsNyArMzQwLDcgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QK
ICAgICByZXR1cm4gbV9kZWNvZGVyID8gQ0dJbWFnZVNvdXJjZUdldENvdW50KG1fZGVjb2Rlcikg
OiAwOwogfQogCi1DR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitQYXNzTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewogICAgIGlmICghaW5pdGlh
bGl6ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNjYsMTggKzM2NiwxNSBAQCBD
R0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbQogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1V
VEkgPSBDRlNUUigicHVibGljLnhiaXRtYXAtaW1hZ2UiKTsKIAogICAgIGlmICghaW1hZ2VVVEkp
Ci0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBpbWFnZTsK
IAogICAgIGlmICghQ0ZFcXVhbChpbWFnZVVUSSwgeGJtVVRJKSkKLSAgICAgICAgcmV0dXJuIGlt
YWdlLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIAogICAgIC8vIElmIGl0
IGlzIGFuIHhibSBpbWFnZSwgbWFzayBvdXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIg
dGhlbSB0cmFuc3BhcmVudC4KICAgICBjb25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7
MjU1LCAyNTUsICAyNTUsIDI1NSwgMjU1LCAyNTV9OwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtYXNrZWRJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhNYXNraW5nQ29sb3JzKGlt
YWdlLmdldCgpLCBtYXNraW5nQ29sb3JzKSk7Ci0gICAgaWYgKCFtYXNrZWRJbWFnZSkKLSAgICAg
ICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKLQotICAgIHJldHVybiBtYXNrZWRJbWFnZS5sZWFr
UmVmKCk7CisgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0K
IAogYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhp
Y3NDb250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCBiYTQxNTk3YWExMTAxZGI2MjkwMjNkMjcz
YjIwMGU3ODFkMzNhYWM5Li41OWNjMmM5YmU4YjNmZmUxMTE4NmE2ODVkMmU4Y2Y1OTRjMWQzOTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhp
Y3NDb250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFk
ZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRl
eCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleElt
YWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFs
cGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNo
IHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9z
L0ljb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklP
Uy5tbQppbmRleCAyMTU5MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4NmQyMjQ5YjgxZDlkNzZhLi5lMTgz
M2QxOTgzMGIxMDc2NjM2NjRiNjEyODQ0NTk3ZjgzZmMwYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKENHSW1hZ2VSZWYgaW1hZ2Up
CitJY29uOjpJY29uKE5hdGl2ZUltYWdlUHRyIGltYWdlKQogICAgIDogbV9jZ0ltYWdlKGltYWdl
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCmluZGV4IGZmMDcxMzFhNjFmY2VkMDQ1ODZiMzcyZDliYTIwNzlhOTg3M2MzOGIuLmZh
MDExYWE4ODE2MzAzMDAwOTQ0OThlYmMwZmZjYTlmYjljMzAzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTk1LDcgKzk1LDcg
QEAgQ0ZEYXRhUmVmIEJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24oKQogCiAgICAg
VmVjdG9yPENHSW1hZ2VSZWY+IGltYWdlczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtRnJhbWVzOyArK2kgKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lQXRJ
bmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgo
aSkuZ2V0KCk7CiAgICAgICAgIGlmIChjZ0ltYWdlKQogICAgICAgICAgICAgaW1hZ2VzLmFwcGVu
ZChjZ0ltYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXggODM1ZWNmM2Y0ZmVlZWI4YTBkZmE4ZDM2OTcz
MTI4ZjNiODA3YjkyNi4uNDcwNzNjMGVkNjkwZTA0NGZmYjNhOTRlNTg2ZjI2MDI3OWQxYzRjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNH
V2luLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAg
IHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmcmFtZXM7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4
KGkpOworICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0
KCk7CiAgICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAg
ICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1
cnJlbnRGcmFtZSA9IGk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggMjlhMjAyM2RiNjNhOTE0MzRjMzk0OGVh
YTU1MjNiYjYxZmU4MTA3NS4uOTdlZDA5NzkzNWM1MWZjMjBhODQ1Yzk1OGUxNTY5OGQyMDAwZGI4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNhaXJvV2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9h
dAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CiAgICAgICAgIGlmICghc3VyZmFj
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273909</attachid>
            <date>2016-03-13 17:22:31 -0700</date>
            <delta_ts>2016-03-20 17:58:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160313172219.patch</filename>
            <type>text/plain</type>
            <size>32425</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjOThmYzYxZmI4ZmUx
ZTAxYTY5MWNjNzg0OTM0NmU1YTkwNzI1MC4uMzdhNmYzZDFiMTU1NDAxNGZkYmQ0YTlmMTY2NGFk
ODM4MTkzZWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE2LTAzLTEzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgQ2hhbmdl
IE5hdGl2ZUltYWdlUHRyIGZvciBDRyB0byBiZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhdmluZyBOYXRpdmVJ
bWFnZVB0ciBhcyBhIHJhdyBwb2ludGVyIG1ha2VzIG1hbmFnaW5nIHRoZSBsaWZlIGN5Y2xlIG9m
CisgICAgICAgIHRoZSBDR0ltYWdlUmVmIGhhcmQuIEEgbG90IG9mIHdvcmtzIHdhcyBkb25lIHRv
IG1ha2Ugc3VyZSB0aGUgQ0cgcG9pbnRlcgorICAgICAgICBpcyBtYWludGFpbmVkIGNvcnJlY3Rs
eS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYSBGcmFtZURhdGEgc2luY2UKKyAg
ICAgICAgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdlUmVm
LgorCisgICAgICAgIEkgYW0gZ29pbmcgdG8gZm9sbG93IHRoaXMgbmFtaW5nIGNvbnZlbnRpb246
CisgICAgICAgIDEuIEFuIEltYWdlIG9iamVjdCBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURh
dGEuIEEgRnJhbWVEYXRhIGNhbiBiZSBuYW1lZAorICAgICAgICAgICBmb3Igc2hvcnRuZXNzIGFz
ICJmcmFtZSIsICJtX2ZyYW1lcyIsIGV0Yy4KKyAgICAgICAgMi4gQSBGcmFtZURhdGEgY2FuIGhh
dmUgemVybyBvciBvbmUgTmF0aXZlSW1hZ2VQdHIuIEEgTmF0aXZlSW1hZ2VQdHIgY2FuCisgICAg
ICAgICAgIGJlIG5hbWVkIGFzICJpbWFnZSIsICJtX2ltYWdlIiwgZXRjLgorCisgICAgICAgICog
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNh
Y2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpoYXZlRnJhbWVJbWFn
ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Omdl
dENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJ
bWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFn
ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQz
RENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJh
Y3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9J
Y29uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6SWNvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisKIDIwMTYtMDMtMTIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbRm9ybXM6IGZvY3VzXSBmb2N1cyByaW5ncyBh
cm91bmQgdGV4dCBmaWVsZHMgZG8gbm90IGZvbGxvdyBjb250b3VyIChib3JkZXItcmFkaXVzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggOTk5NDY1
ZWEzOTA2OTdjYmUwMGZlNmZhODgzOGMxMzhlNTQ0N2ExNy4uODQ2YzBkYzkzODRlNzVkYmEwODIw
YzI4MGZiNjQxY2U4YTA4ZjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwCkBAIC0yMjUsOCArMjI1LDYgQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3QK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBDYWNoZWRJbWFn
ZTo6TWFudWFsbHlDYWNoZWQsIHNlc3Npb25JRCk7CiAKLSAgICAvLyBBY3R1YWwgcmVsZWFzZSBv
ZiB0aGUgQ0dJbWFnZVJlZiBpcyBkb25lIGluIEJpdG1hcEltYWdlLgotICAgIENGUmV0YWluKGlt
YWdlKTsKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCZkdW1teUNhY2hlZEltYWdlQ2xpZW50
KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2Rl
ZFNpemUoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBmYWYwZjg2OTYy
YzNmYjY1Nzc3NDViZmFmNzViNGM4NGQ4MGNjMDYwLi5kYzk5YzViN2QyZDQ2NjBkMGU4MjBjMmVi
ODY0MTVjMmFjZTQxYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0
YXJ0VGltZXIoZG91YmxlIGRlbGF5KQogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRl
bGF5KTsKIH0KIAotYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5k
ZXgpCitib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4
KHNpemVfdCBpbmRleCkKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7Cisg
ICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogfQogCiBib29sIEJpdG1hcEltYWdl
OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CkBAIC0xODQsOSArMTg0LDkgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICAgICAgbV9mcmFtZXMuZ3JvdyhudW1GcmFtZXMpOwog
CiAgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpIHsKLSAgICAg
ICAgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKTsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNh
bXBsaW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZSkKKyAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlKQogICAgICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAgICAgfQogCkBA
IC0yMDQsNyArMjA0LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAoIXN1YnNh
bXBsaW5nTGV2ZWwgJiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3Jt
RnJhbWVTaXplID0gZmFsc2U7CiAKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsK
KyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKICAgICAgICAgaW50IGRlbHRhQnl0
ZXMgPSBzYWZlQ2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwogICAgICAg
ICBtX2RlY29kZWRTaXplICs9IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxseS1kZWNv
ZGVkIGZyYW1lIHdpbGwgc3Vic3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1c2VkCkBA
IC0zNzksMTQgKzM3OSwxNCBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVk
KHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8
IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5k
RnJhbWUgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAgICB8fCAoZnJhbWVDYWNo
aW5nID09IENhY2hlTWV0YWRhdGFPbmx5ICYmICFtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRh
dGEpKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwLCBmcmFtZUNhY2hpbmcpOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVB
dEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50KQorUGFzc05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVD
b3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM5NSw3ICszOTUsNyBAQCBQYXNz
TmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZs
b2F0IHByZXNlbnRhdGlvblNjYQogCiAgICAgLy8gV2UgbWF5IGhhdmUgY2FjaGVkIGEgZnJhbWUg
d2l0aCBhIGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRv
CiAgICAgLy8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBsZXZlbC4KLSAgICBpZiAoaW5kZXggPCBt
X2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgJiYgc3Vic2FtcGxpbmdM
ZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKKyAgICBpZiAoaW5k
ZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgJiYgc3Vic2Ft
cGxpbmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKICAgICAg
ICAgLy8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2FjaGVkLCBidXQgYXQgdG9vIHNtYWxsIGEg
c2l6ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24uCiAgICAgICAgIGludCBzaXplQ2hhbmdl
ID0gLW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4
XS5jbGVhcih0cnVlKTsKQEAgLTQwNiwxMCArNDA2LDEwIEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9u
U2NhCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJhbWUgeWV0LCBk
byBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1l
c1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpAQCAt
NDMwLDcgKzQzMCw3IEBAIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChz
aXplX3QgaW5kZXgpCiAKIFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKQogewotICAgIHJldHVybiBmcmFtZUF0SW5kZXgoY3VycmVudEZy
YW1lKCkpOworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CiB9
CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4
IDc0OTNjNmE0YmZiODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQuLjRlZDcyOGE2ZTFjNGZi
MzFjYWZhN2JjNWQ2YmY5ZmQwYmQ5OWZiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtNDcsMTYgKzQ3LDYgQEAgdHlwZWRlZiBzdHJ1
Y3QgSEJJVE1BUF9fICpIQklUTUFQOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICBzdHJ1Y3QgRnJhbWVEYXRhOwotfQotCi1uYW1lc3BhY2UgV1RGIHsKLSAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1wbGVD
bGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkluaXRpYWxp
emVXaXRoTWVtc2V0ID0gZmFsc2U7IC8vIE5vdCBhbGwgRnJhbWVEYXRhIG1lbWJlcnMgaW5pdGlh
bGl6ZSB0byAwLgotICAgIH07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGlt
ZXI7CiAKQEAgLTY1LDE3ICs1NSw4IEBAIGNsYXNzIFRpbWVyOwogLy8gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIHN0cnVjdCBGcmFtZURhdGEgewot
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lRGF0YSk7CiBwdWJsaWM6CiAgICAgRnJhbWVE
YXRhKCkKLSAgICAgICAgOiBtX2ZyYW1lKDApCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihEZWZh
dWx0SW1hZ2VPcmllbnRhdGlvbikKLSAgICAgICAgLCBtX3N1YnNhbXBsaW5nTGV2ZWwoMCkKLSAg
ICAgICAgLCBtX2R1cmF0aW9uKDApCi0gICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCi0g
ICAgICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkg
Ci0gICAgICAgICwgbV9mcmFtZUJ5dGVzKDApCiAgICAgewogICAgIH0KIApAQCAtODQsMTggKzY1
LDIyIEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXIodHJ1ZSk7CiAgICAgfQogCi0gICAgLy8gQ2xl
YXIgdGhlIGNhY2hlZCBpbWFnZSBkYXRhIG9uIHRoZSBmcmFtZSwgYW5kIChvcHRpb25hbGx5KSB0
aGUgbWV0YWRhdGEuCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1h
Z2UgZGF0YSB0byBjbGVhci4KICAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7Ci0K
LSAgICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmll
bnRhdGlvbjsKLSAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbDsKLSAgICBm
bG9hdCBtX2R1cmF0aW9uOwotICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wg
bV9pc0NvbXBsZXRlIDogMTsKLSAgICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVk
IG1fZnJhbWVCeXRlczsKKyAgICBPcHRpb25hbDxDb2xvcj4gc29saWRDb2xvcigpIGNvbnN0Owor
CisgICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3Jp
ZW50YXRpb24geyBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbiB9OworICAgIFN1YnNhbXBsaW5nTGV2
ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsgMCB9OworICAgIGZsb2F0IG1fZHVyYXRpb24geyAwIH07
CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgYm9vbCBtX2hhdmVN
ZXRhZGF0YSA6IDE7CisgICAgICAgICAgICBib29sIG1faXNDb21wbGV0ZSA6IDE7CisgICAgICAg
ICAgICBib29sIG1faGFzQWxwaGEgOiAxOworICAgICAgICB9OworICAgICAgICB1aW50OF90IG1f
ZmxhZ3Nbc2l6ZW9mKGJvb2wpXSB7IDAgfTsKKyAgICB9OworICAgIHVuc2lnbmVkIG1fZnJhbWVC
eXRlcyB7IDAgfTsKIH07CiAKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQEAgLTIxNCwxMCArMTk5LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHNp
emVfdCBmcmFtZUNvdW50KCk7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4
KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7Ci0gICAgUGFzc05hdGl2
ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QpOworICAgIFBhc3NOYXRp
dmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNj
YWxlSGludCA9IDEpOworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QpOwogCi0gICAgYm9vbCBoYXZlRnJhbWVBdEluZGV4KHNpemVfdCk7
CisgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXgg
ZDk1ZTdkZWI4MTBmYzI0ZjdmNjFiMWIyM2E0YjlhZWYzZjNjMTdiNy4uMjhjMTM3ZDI5YjExOGE5
Y2YxYjYxNjFlZGU0ZGU0OTFkMDQ4ODMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ljb24uaApAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIEljb24oQ0dJbWFnZVJlZik7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IG1fY2dJbWFnZTsKKyAgICBJY29uKE5hdGl2ZUltYWdlUHRyKTsKKyAgICBOYXRpdmVJbWFn
ZVB0ciBtX2NnSW1hZ2U7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgSWNvbihOU0ltYWdlKik7
CiAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG1fbnNJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NGVmMDUzYTMzM2ZmNWZj
NTc4ZTgxODAwY2M2ZmM5NzU1ZWZiYWI4Li5lMzgyMWQ0NjFlNGY0NGI2NzVhNTMxNGM5ODQ5NjU0
MTM3MDI3MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFt
ZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNv
dW50KCkgOiAwOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCitQYXNzTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApp
bmRleCBhY2RkMWNlNGNlMzAwZGU4MWM5ZTA2MmVlZTc2MDdiZjQ3MmE3MGFmLi40ZDQ1M2QyNWRk
NmU4YWY2MjUxMjgxMDJkNWVhNmZmZjNhN2Y0MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6
CiAgICAgLy8gZGVjb2RlZCBmcmFtZXMuCiAgICAgLy8KICAgICAvLyBDYWxsZXJzIHNob3VsZCBu
b3QgY2FsbCBjbGVhcihmYWxzZSwgbikgYW5kIHN1YnNlcXVlbnRseSBjYWxsCi0gICAgLy8gY3Jl
YXRlRnJhbWVBdEluZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xl
YXIodHJ1ZSkuCisgICAgLy8gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwg
dW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0cnVlKS4KICAgICAvLyBUaGlzIGVuc3VyZXMg
dGhhdCBzdGF0ZWZ1bCBJbWFnZVNvdXJjZXMvZGVjb2RlcnMgd2lsbCB3b3JrIHByb3Blcmx5Lgog
ICAgIC8vCiAgICAgLy8gVGhlIHxkYXRhfCBhbmQgfGFsbERhdGFSZWNlaXZlZHwgcGFyYW1ldGVy
cyBzaG91bGQgYmUgc3VwcGxpZWQgYnkgY2FsbGVycwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBj
bGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFy
KCkgYWJvdmUuCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CiAKICAgICBm
bG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVz
ZWQgYW55IGFscGhhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlUHRyLmgKaW5kZXggZGY5NDFhNTY2YTllNDY5Mjc3MjdiYTFlYzY4NDhmMjE2ODAz
YTQ1Yi4uZWNhMWI5MmM0MWVlMTgyOGUzMTBkNWJlZGJiMmI1YWNhNTk1ZjU0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjZGVmaW5lIE5hdGl2ZUltYWdlUHRyX2gKIAogI2lmIFVTRShDRykKKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdl
UmVmOwogI2VsaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCkBAIC00MSw3
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBOYXRpdmVJbWFnZVB0ciBh
bmQgUGFzc05hdGl2ZUltYWdlUHRyIHNob3VsZCBiZSBzbWFydAogLy8gcG9pbnRlcnMgKHNlZSBT
VkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkuCiAjaWYgVVNFKENHKQotdHlw
ZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwogdHlwZWRlZiBQYXNzUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gUGFzc05hdGl2ZUltYWdlUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggNjNkY2Yw
YTI1M2UyMzQwZjY3ZjFjODFkODVmYzI3MGRkMjMwZTg2ZC4uYTRjNjViZGZmMzJhOTJmOWMxZGYy
NmQ0YmY1MzA4MGYwNWFiOTYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMDM3LDcgKzEwMzcsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFn
ZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgbmV3SW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgQ0dJbWFn
ZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLmdldCgp
OwogICAgICAgICBpZiAoIW5ld0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwCmluZGV4IGNkNTdlZTQ4NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAy
ODIuLmEzZjVjN2RhOTk3NTY5M2YxOWU1NzUzZmJkODcxN2M0ZGYxZjM3YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwCkBAIC01OCw3ICs1OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQ
YXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqCiB7
CiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKICAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fp
cm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRpdmVJbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVO
VF9DT0xPUjsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gbmF0aXZlSW1hZ2U7CisgICAgbV9m
cmFtZXNbMF0ubV9pbWFnZSA9IG5hdGl2ZUltYWdlOwogICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1l
dGFkYXRhID0gdHJ1ZTsKIAogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwpAQCAtNzIsNyArNzIs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogCiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAot
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJy
ZW50RnJhbWUpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUlt
YWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdz
IHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwog
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9y
KCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVh
cmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAKQEAgLTE1
OCw4ICsxNTgsOCBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQog
ICAgIGlmIChjbGVhck1ldGFkYXRhKQogICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwog
Ci0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgbV9mcmFtZSA9IG51bGxwdHI7CisgICAgaWYg
KG1faW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fp
cm8uY3BwCmluZGV4IGNjNzA0NjE0N2FlODFmMWZhZGFhNmQ4NDE2MjQ5ODBjNmZkZmNiZjEuLjhj
NDE4NmQ3MWU1M2ExOTA3ZTkyZDczYTJiMDE2NDdmZmQ2NmIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFn
ZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFn
ZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9F
bG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQg
YW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRl
eCAwMWI3ZDY5MmNkYmQ3YWI0ZDIyYmJjMTM5OWMxMDMyOGY1N2U1ZTQ3Li5iZTEzNjJkZmQ1MTk3
MDgwYTI4Yzc1MTk5MTk2NDZhMjU5Y2U0ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtNTgsMTggKzU4LDE3
IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgbV9vcmll
bnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwogICAgIG1fc3Vic2FtcGxpbmdMZXZl
bCA9IDA7CiAKLSAgICBpZiAobV9mcmFtZSkgeworICAgIGlmIChtX2ltYWdlKSB7CiAjaWYgQ0FD
SEVfU1VCSU1BR0VTCi0gICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1fZnJhbWUp
OworICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdldCgpKTsKICNl
bmRpZgotICAgICAgICBDR0ltYWdlUmVsZWFzZShtX2ZyYW1lKTsKLSAgICAgICAgbV9mcmFtZSA9
IDA7CisgICAgICAgIG1faW1hZ2UgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJ
bWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIp
CiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwo
MCkKICAgICAsIG1faW1hZ2VPcmllbnRhdGlvbihPcmlnaW5Ub3BMZWZ0KQpAQCAtODksOCArODgs
OCBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9i
c2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9o
YXZlRnJhbWVDb3VudCh0cnVlKQogewotICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lk
dGgoY2dJbWFnZSk7Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1h
Z2UpOworICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOwor
ICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAg
bV9kZWNvZGVkU2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpOwogCkBAIC05OSw3ICs5OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJ
bWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1f
c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3co
MSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7Cisg
ICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IGltYWdlOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxw
aGEgPSB0cnVlOwogICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIApAQCAt
MTM2LDcgKzEzNSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAg
ICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaGF2
ZUZyYW1lQXRJbmRleCgwKSkgeworICAgIGlmICghaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KDApKSB7
CiAgICAgICAgIEludFNpemUgc2l6ZSA9IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7
CiAgICAgICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xNDcsNyArMTQ2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
Y2hlY2tGb3JTb2xpZENvbG9yKCkKIAogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBudWxscHRyOwog
ICAgIGlmIChtX2ZyYW1lcy5zaXplKCkpCi0gICAgICAgIGltYWdlID0gbV9mcmFtZXNbMF0ubV9m
cmFtZTsKKyAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2ltYWdlLmdldCgpOwogCiAgICAg
aWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTczLDE2ICsxNzIsMTYgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKIAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFn
ZTo6Z2V0Q0dJbWFnZVJlZigpCiB7Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleCgwKTsKKyAgICBy
ZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCkuZ2V0KCk7CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFw
SW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdElu
ZGV4KGkpOwotICAgICAgICBpZiAoY2dJbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChj
Z0ltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKSkgPT0gc2l6ZSkKLSAgICAgICAgICAg
IHJldHVybiBjZ0ltYWdlOworICAgICAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBmcmFt
ZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIEludFNpemUoQ0dJbWFnZUdl
dFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpID09IHNp
emUpCisgICAgICAgICAgICByZXR1cm4gaW1hZ2UuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gRmFs
bGJhY2sgdG8gdGhlIGRlZmF1bHQgQ0dJbWFnZVJlZiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSByaWdo
dCBzaXplCkBAIC0xOTcsOCArMTk2LDggQEAgUmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcElt
YWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAgIAogICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5
ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBp
ZiAoQ0dJbWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFtZUF0SW5kZXgoaSkpCi0gICAgICAgICAgICBD
RkFycmF5QXBwZW5kVmFsdWUoYXJyYXksIGN1cnJGcmFtZSk7CisgICAgICAgIGlmIChOYXRpdmVJ
bWFnZVB0ciBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKSkKKyAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lLmdldCgpKTsKICAgICB9CiAgICAgcmV0
dXJuIGFkb3B0Q0YoYXJyYXkpOwogfQpAQCAtMjExLDE1ICsyMTAsMTUgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEYKICAgICBzdGFydEFuaW1hdGlvbigpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7CiAgICAgLy8g
TmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRz
LgogICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3JtQ29udGV4dCgp
KSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChtX2N1
cnJlbnRGcmFtZSkpOworICAgICAgICBpbWFnZSA9IGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdElu
ZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBlbHNlIHsKICAgICAgICAgQ0dSZWN0IHRyYW5zZm9y
bWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3Qs
IENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0
IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3Jt
ZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3Jt
ZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKLSAg
ICAgICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2Nh
bGUpOworICAgICAgICBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBz
dWJzYW1wbGluZ1NjYWxlKTsKICAgICB9CiAKICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRv
byBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KQEAgLTI1MSwxOCArMjUwLDE4IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJh
dyh0aGlzKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2Fs
ZWRGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAg
aWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFt
ZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCk7CiAKICAgICBpZiAoIW1fZnJh
bWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBDR0ltYWdlUmV0
YWluKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKTsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlOwogCi0gICAgcmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChp
bmRleCk7CisgICAgcmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA2YzAzYTJjZWY4NDYwNjU2MWVh
MDdlYjkyOGYxY2YyOTVmOWY1ZTM2Li43YTEzYmI1ODQ2NzA4ZDM3ZTAyYmQzZGQ2NzIzYzI3YTQ5
NTE3NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtMzMzLDEwICszMzMsMTAgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFk
b3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCkpOworICAgICAgICBtX2RlY29kZWRJ
bWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgICAgIG1fY2dJ
bWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOwogICAgIH0gZWxzZQotICAgICAgICBtX2NnSW1h
Z2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBtX2Nn
SW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLmdldCgpOwogICAg
IGlmICghbV9jZ0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUzNiw3ICs1MzYs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBj
b250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwot
ICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2Fu
dmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29w
eSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52
YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE0
NDk2NTQwNDZhZThmMTBhYmFkMTY0MTVlNjQ2MGFkYmJiYjhlODguLjE2MjA5YWY1MzQ0ODFkYjRj
ZGRkOGI0MjNjZTdiZjJhNDBiMGRiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTMxMSw4ICsz
MTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgIGZsb2F0IGFkanVzdGVkWCA9IHBo
YXNlLngoKSAtIGRlc3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRoZSBjb250ZXh0
IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91dC4K
ICAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAtIChwaGFzZS55KCkgLSBk
ZXN0UmVjdC55KCkgKyB0aWxlUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRl
cm5UcmFuc2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVIZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJlZiB0
aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGZsb2F0
IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAg
ZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLmdldCgpKTsKIAogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBzdWJJbWFnZTsKICNpZiBQTEFURk9STShJT1MpCkBAIC0zMjYsMTMg
KzMyNiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgICAgICAvLyBDb3B5aW5nIGEg
c3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNv
ZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAg
ICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwg
d2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAg
ICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLCB0aWxlUmVjdCkpOwor
ICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0
aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0
byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxv
YWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUg
bGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2Fs
ZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChw
YXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxl
SW1hZ2UpOworICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLmdldCgpKTsK
ICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBoID09IGltYWdlLnNpemUoKS5o
ZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5nLmhlaWdodCgpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6
ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwK
ICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0
aGUgbGFzdCBpbWFnZSB0byBmaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCmluZGV4IGQ0YTAxMmI2ZjU3YmY1MzkzMDY0
Nzc3YjZjMTA5MzY2YjI0YzQ0NWMuLjBkOGUyYTQ5MDNmNzBlZjE3ZGFmMWZiMTEzZGY3NmJhNDIz
Y2I4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0cuY3BwCkBAIC0zNDAsNyArMzQwLDcgQEAgc2l6ZV90IEltYWdlU291cmNl
OjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gQ0dJbWFnZVNvdXJj
ZUdldENvdW50KG1fZGVjb2RlcikgOiAwOwogfQogCi1DR0ltYWdlUmVmIEltYWdlU291cmNlOjpj
cmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwpCitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
KQogewogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0zNjYsMTggKzM2NiwxNSBAQCBDR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbQogICAgIHN0YXRpYyBj
b25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkgPSBDRlNUUigicHVibGljLnhiaXRtYXAtaW1hZ2UiKTsK
IAogICAgIGlmICghaW1hZ2VVVEkpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Cisg
ICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGlmICghQ0ZFcXVhbChpbWFnZVVUSSwgeGJtVVRJ
KSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGltYWdl
OwogICAgIAogICAgIC8vIElmIGl0IGlzIGFuIHhibSBpbWFnZSwgbWFzayBvdXQgYWxsIHRoZSB3
aGl0ZSBhcmVhcyB0byByZW5kZXIgdGhlbSB0cmFuc3BhcmVudC4KICAgICBjb25zdCBDR0Zsb2F0
IG1hc2tpbmdDb2xvcnNbNl0gPSB7MjU1LCAyNTUsICAyNTUsIDI1NSwgMjU1LCAyNTV9OwogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXNrZWRJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZVdpdGhNYXNraW5nQ29sb3JzKGltYWdlLmdldCgpLCBtYXNraW5nQ29sb3JzKSk7Ci0gICAgaWYg
KCFtYXNrZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKLQotICAgIHJl
dHVybiBtYXNrZWRJbWFnZS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFz
a2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChzaXplX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCBiYTQx
NTk3YWExMTAxZGI2MjkwMjNkMjczYjIwMGU3ODFkMzNhYWM5Li41OWNjMmM5YmU4YjNmZmUxMTE4
NmE2ODVkMmU4Y2Y1OTRjMWQzOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTI2
Myw3ICsyNjMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0
cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29k
ZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNv
ZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNv
ZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1f
aW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFz
c3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2
YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQppbmRleCAyMTU5MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4
NmQyMjQ5YjgxZDlkNzZhLi5lMTgzM2QxOTgzMGIxMDc2NjM2NjRiNjEyODQ0NTk3ZjgzZmMwYTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5t
bQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJ
Y29uKENHSW1hZ2VSZWYgaW1hZ2UpCitJY29uOjpJY29uKE5hdGl2ZUltYWdlUHRyIGltYWdlKQog
ICAgIDogbV9jZ0ltYWdlKGltYWdlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IGZmMDcxMzFhNjFmY2VkMDQ1ODZiMzcy
ZDliYTIwNzlhOTg3M2MzOGIuLmZhMDExYWE4ODE2MzAzMDAwOTQ0OThlYmMwZmZjYTlmYjljMzAz
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VN
YWMubW0KQEAgLTk1LDcgKzk1LDcgQEAgQ0ZEYXRhUmVmIEJpdG1hcEltYWdlOjpnZXRUSUZGUmVw
cmVzZW50YXRpb24oKQogCiAgICAgVmVjdG9yPENHSW1hZ2VSZWY+IGltYWdlczsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRnJhbWVzOyArK2kgKSB7Ci0gICAgICAgIENHSW1hZ2VS
ZWYgY2dJbWFnZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdl
ID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7CiAgICAgICAgIGlmIChjZ0ltYWdlKQogICAg
ICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXggODM1ZWNm
M2Y0ZmVlZWI4YTBkZmE4ZDM2OTczMTI4ZjNiODA3YjkyNi4uNDcwNzNjMGVkNjkwZTA0NGZmYjNh
OTRlNTg2ZjI2MDI3OWQxYzRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVm
IGltYWdlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJh
bWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7CiAgICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYm
IENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndp
ZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJh
bWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggMjlh
MjAyM2RiNjNhOTE0MzRjMzk0OGVhYTU1MjNiYjYxZmU4MTA3NS4uOTdlZDA5NzkzNWM1MWZjMjBh
ODQ1Yzk1OGUxNTY5OGQyMDAwZGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7
CiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274553</attachid>
            <date>2016-03-20 17:58:10 -0700</date>
            <delta_ts>2016-03-20 18:25:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160320175810.patch</filename>
            <type>text/plain</type>
            <size>80945</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uNDBmNTZmMjk2YThlMzFjYjM5NjY0MWIwMTBjNzQ0
OWUzYWI3NDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NyBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZpbmcgTmF0aXZl
SW1hZ2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBv
ZgorICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrcyB3
YXMgZG9uZSB0byBlbnN1cmUgdGhlIENHCisgICAgICAgIHBvaW50ZXIgaXMgbWFpbnRhaW5lZCBj
b3JyZWN0bHkuIEl0IHdhcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBtb3ZlIGEKKyAgICAgICAgRnJh
bWVEYXRhIHNpbmNlIGNhbGxpbmcgdGhlIGRlc3RydWN0b3Igd2FzIHJlbGVhc2luZyB0aGUgQ0dJ
bWFnZVJlZi4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBQYXNzTmF0aXZlSW1hZ2VQdHIg
aXMgbm90IG5lZWRlZCBhbnltb3JlLiBTbyBhbGwgdGhlCisgICAgICAgIGluc3RhbmNlIG9mIFBh
c3NOYXRpdmVJbWFnZVB0ciB3aWxsIGJlIHJlcGxhY2VkIGJ5IE5hdGl2ZUltYWdlUHRyLgorCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgZ2V0UHJl
dmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6IHRyYW5zZmVyIHRoZSBvd25lcnNoaXAKKyAg
ICAgICAgb2YgdGhlIHJldHVybmVkIHBvaW50ZXIgdG8gQ0ZBdXRvcmVsZWFzZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0TlNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0R2RrUGl4YnVmKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRFdmFzT2JqZWN0KToK
KyAgICAgICAgQ2hhbmdlIGFsbCB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUg
UmV0YWluUHRyPENHSW1hZ2VSZWY+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgIENoYW5nZSBmdW5jdGlvbidzIG5hbWUgYW5kIHJlcGxhY2UgUGFzc05h
dGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUlt
YWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICBNYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQg
cG9pbnRlciBmb3IgQ0cuIEdldCByaWQgb2YgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHNp
bmNlIE5hdGl2ZUltYWdlUHRyIGlzIG5vdyBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3Jt
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2
ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICBTaW5jZSBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSByZXR1cm5zIGEgUmV0YWluUHRyLCBtb3ZlIGl0CisgICAg
ICAgIHRvIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgdG8gcmVtb3ZlIHRoZSByZWZjb3VudCBjaHVy
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgIFJlcGxhY2UgbV9mcmFtZSB3aXRoIG1faW1hZ2UgYW5kIGZyYW1l
KiB3aXRoIGZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIFJlcGxhY2Ug
KkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpj
bGVhcik6IE5vIG5lZWQgdG8gY2FsbCBDR0ltYWdlUmVsZWFzZSgpLiBKdXN0IGFzc2lnbgorICAg
ICAgICBtX2ltYWdlIHRvIG51bGxwdHIgYW5kIGl0IHdpbGwgY2FsbGVkIGZyb20gdGhlIFJldGFp
blB0ciBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBS
ZXBsYWNlIENHSW1hZ2VSZWYgd2l0aCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4uIFJlcGxhY2UKKyAg
ICAgICAgKkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICBVc2Ug
bV9jZ0ltYWdlLmdldCgpIGluc3RlYWQgb2YgbV9jZ0ltYWdlIHdoZW4gY2FsbGluZyBDRyBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgR2V0IHRoZSByYXcgQ0dJbWFnZVJlZiBmcm9tIHRoZSBOYXRpdmVJbWFnZVB0ciB3aGVu
IGNhbGxpbmcgdGhlIENHIGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUg
ZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJpYWJsZQor
ICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVycy4KKyAg
ICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAg
IExlYWsgdGhlIHJhdyBDR0ltYWdlUmVmIGZyb20gdGhlIE5hdGl2ZUltYWdlUHRyIHNpbmNlIENH
UGF0dGVybkNyZWF0ZSB3aWxsCisgICAgICAgIHJlbGVhc2UgaXQgdGhyb3VnaCB0aGUgY2FsbGJh
Y2tzLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
OgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRy
IGFuZCB1c2UgY29uc3RhbnQgcmVmZXJlbmNlLiAKKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAg
ICAgICAgQ2FsbCBhIGZ1bmN0aW9uIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAgICAKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Okljb246Okljb24pOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckltYWdl
KToKKyAgICAgICAgVXNlIHNtYXJ0IHBvaW50ZXJzIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0
ZWFkIG9mIHJhdyBwb2ludGVycyBDR0ltYWdlUmVmLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKTogQ29sbGVjdCB0aGUgbmF0aXZlIGltYWdlcwor
ICAgICAgICBpbiBhIHZlY3RvciBmb3Igc21hcnQgcG9pbnRlcnMuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOiBDYWxsIHRoZSBm
dW5jdGlvbgorICAgICAgICB3aXRoIGl0cyBuZXcgbmFtZSBhbmQgcmVjZWl2ZSB0aGUgcmV0dXJu
IHZhbHVlIGluIGEgc21hcnQgcG9pbnRlciBsb2NhbAorICAgICAgICB2YXJpYWJsZS4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6
ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRp
dmVJbWFnZVB0ci4KKyAgICAgICAgCiAyMDE2LTAzLTE4ICBaaHVvIExpICA8emFjaGxpQGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgQXV0b0ZpbGwgYnV0dG9uIGluIGlucHV0IGZpZWxkcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1M2ZlODFhMTE3MWNiNTdkNDU2MjBhN2IzMjllYzI4NGU1NjNiMmU4Li42
NGZlNjkzNTc1NDY4MWMyNGRkOGI3NTkyOTM2MzRiZWM5ZDkwZjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTYtMDMtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLGNvbT4KKworICAgICAgICBDaGFuZ2UgTmF0aXZlSW1hZ2VQdHIgZm9yIENHIHRvIGJl
IFJldGFpblB0cjxDR0ltYWdlUmVmPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1NDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIHRvIGJlIGEgc21hcnQgcG9pbnRl
ciBpbnN0ZWFkIG9mIHJhdyBwb2ludGVyIGZvciBDRy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcDoKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5
R2V0Q0dJbWFnZUZvclVSTCk6IFJldHVybiB0aGUgbGVha2VkIHRoZSByYXcgcG9pbnRlciBmcm9t
CisgICAgICAgIHRoZSByZXR1cm5lZCBzbWFydCBwb2ludGVyIHNpbmNlIHRoZSBjYWxsZXIgaXMg
cmVzcG9uc2libGUgb2YgcmVsZWFzaW5nIGl0LgorCisgICAgICAgIChXS0ljb25EYXRhYmFzZVRy
eUNvcHlDR0ltYWdlQXJyYXlGb3JVUkwpOiBVc2UgbnVsbHB0ci4KKyAgICAgICAgCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
c0FsbW9zdFNvbGlkQ29sb3IpOiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpIG5vdyByZXR1
cm5zIGEKKyAgICAgICAgc21hcnQgcG9pbnRlci4KKwogMjAxNi0wMy0xOCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEdpdmUgTlNVUkxTZXNz
aW9uQ29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhYm91dCBwYXJlbnQgcHJvY2VzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCBhYjlmM2Y4OTc5YzM5NmMxODFlOTkxNWYzNjdi
MjVkY2YzN2IwMjkxLi4yY2ZlZTIyM2FhYTQ5ZGExYWIwYzc0NDk2NDRkYTM3N2ZhMGFiMDUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZv
aWQpZ2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6
KE5TQXJyYXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlm
IChJbWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAg
ICAgICpjZ0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGlt
YWdlLT5nZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gKENHSW1hZ2VS
ZWYpQ0ZBdXRvcmVsZWFzZShpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpLmxlYWtSZWYoKSk7CiAgICAg
fQogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiByZWN0QXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCmluZGV4IDFlNmZjY2Q4ZWI0Njk5YzA2YTk5YzQyMzZiMTkxOTUxZTg1ZGMw
MmYuLjcxMzE0YmMyNjc0NTI4ZmRkMjE1NjJlODNiMzJjMTYxNmVhZjRmNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIGJvb2wg
SFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNBdmFpbGFibGVWaWRlb0Zy
YW1lKCk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1lbnQ6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRl
eCBhZDk0OGY5NDRhMzA4MTZhYTU3YjNjOGVlYTYwMjQ4ODEyNDU2NTE1Li5iNGQ3ZjFlMTcwZjFm
NzNlY2E0ODY1NjQ2MDdjZDU3ZWYxZjRmZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCBieSBjYW52
YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIFBhc3NO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAgLy8gVXNlZCBieSBXZWJH
TCB0byBkbyBHUFUtR1BVIHRleHR1cmVzIGNvcHkgaWYgcG9zc2libGUuCiAgICAgLy8gU2VlIG1v
cmUgZGV0YWlscyBhdCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2JmNjgwNGZjZjhhZmE1Y2NlYzAxOTQzMDliZWM1
OTc0NzczZTIyNy4uZDY4Zjk4NmNhYTdiMzg4YTUyOWYzYjgzOTBhMGU2MzczZTZhYWJkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCkBAIC0xNjI1LDcgKzE2MjUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBjb25zdCBGbG9hdFJl
YwogICAgIGNoZWNrT3JpZ2luKHZpZGVvKTsKIAogI2lmIFVTRShDRykgfHwgKEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShHU1RSRUFNRVJfR0wpICYmIFVTRShDQUlSTykpCi0g
ICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkpIHsKKyAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZShp
bWFnZSwgRmxvYXRTaXplKHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgp
KSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0
UmVjdCkpCiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCA5OTk0NjVlYTM5MDY5N2NiZTAw
ZmU2ZmE4ODM4YzEzOGU1NDQ3YTE3Li44MTQyMDEzZGM2MjgxNzg3Y2EyYzBlMDY4NGFhN2ZlMTMw
M2M0OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
QEAgLTIwNCwxNiArMjA0LDEzIEBAIHVuc2lnbmVkIE1lbW9yeUNhY2hlOjpsaXZlQ2FwYWNpdHko
KSBjb25zdAogICAgIHJldHVybiBtX2NhcGFjaXR5IC0gZGVhZENhcGFjaXR5KCk7CiB9CiAKLSNp
ZiBVU0UoQ0cpCi0vLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9uY2Ugd2UgZWl0aGVyIG1h
a2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIG9uIGFsbCBwbGF0Zm9ybXMgb3IKLS8v
IHJlbW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VU
b0NhY2hlKCkgc28gYXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KIHN0
YXRpYyBDYWNoZWRJbWFnZUNsaWVudCYgZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPENhY2hlZEltYWdlQ2xpZW50PiBjbGllbnQ7CiAgICAgcmV0
dXJuIGNsaWVudDsKIH0KIAotYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2
ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JD
YWNoZVBhcnRpdGlvbikKK2Jvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKQogewogICAgIEFTU0VSVChpbWFnZSk7CiAgICAgU2Vzc2lvbklE
IHNlc3Npb25JRCA9IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwpAQCAtMjI1LDggKzIy
Miw2IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBp
bWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fj
aGVkSW1hZ2U+IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJs
LCBiaXRtYXBJbWFnZS5nZXQoKSwgQ2FjaGVkSW1hZ2U6Ok1hbnVhbGx5Q2FjaGVkLCBzZXNzaW9u
SUQpOwogCi0gICAgLy8gQWN0dWFsIHJlbGVhc2Ugb2YgdGhlIENHSW1hZ2VSZWYgaXMgZG9uZSBp
biBCaXRtYXBJbWFnZS4KLSAgICBDRlJldGFpbihpbWFnZSk7CiAgICAgY2FjaGVkSW1hZ2UtPmFk
ZENsaWVudCgmZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0
RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwogI2lmIEVOQUJMRShDQUNI
RV9QQVJUSVRJT05JTkcpCkBAIC0yNjQsNyArMjU5LDYgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVt
b3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9y
Q2EKICAgICAvLyByZXNvdXJjZSBtYXkgYmUgZGVsZXRlZCBhZnRlciB0aGlzIGNhbGwuCiAgICAg
ZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkucmVtb3ZlQ2xpZW50KCZkdW1teUNhY2hl
ZEltYWdlQ2xpZW50KCkpOwogfQotI2VuZGlmCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lTGl2
ZVJlc291cmNlcyhib29sIHNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExpdmVSZXNvdXJj
ZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGM4
OGQyZGJkNGU2YjFkMjc4MGRkYTA0ZmNjYWY5YjgyM2E0NjE3YTAuLmM0NWI0NmZkMTgwMDU1MTcz
YTZjYjA1Yjg0ODc2NzZiM2JlYzg4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCkBAIC0xNTUsMTIgKzE1NSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlPcmlnaW5TZXQmIG9yaWdpbnMp
OwogICAgIFdFQkNPUkVfRVhQT1JUIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3Jp
Z2luc1dpdGhDYWNoZShTZXNzaW9uSUQpIGNvbnN0OwogCi0jaWYgVVNFKENHKQotICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFrZSBOYXRpdmVJbWFnZVB0
ciBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotICAgIC8vIHJlbW92ZSB0aGUg
dXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28g
YXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KLSAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBhZGRJbWFnZVRvQ2FjaGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24pOwotI2VuZGlmCiAKICAgICAvLyBwcnVuZURlYWQqKCkgLSBG
bHVzaCBkZWNvZGVkIGFuZCBlbmNvZGVkIGRhdGEgZnJvbSByZXNvdXJjZXMgbm90IHJlZmVyZW5j
ZWQgYnkgV2ViIHBhZ2VzLgogICAgIC8vIHBydW5lTGl2ZSooKSAtIEZsdXNoIGRlY29kZWQgZGF0
YSBmcm9tIHJlc291cmNlcyBzdGlsbCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGRjY2E4OGU1YjcwN2Qx
YTcwMGJmNDZlZjYzMDA0N2EzM2NmODhiOWYuLjZkYTI0NGU1ZDNhMWU2NGFiM2ExODBkOTEzODAy
NTBiNjQ5MGEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIEltYWdlKiBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3Vz
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvCiAgICAgcmV0
dXJuIGljb25SZWNvcmQtPmltYWdlKHNpemUpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSWNv
bkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQorTmF0aXZlSW1hZ2VQdHIgSWNv
bkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIEltYWdlKiBpY29u
ID0gc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChwYWdlVVJMT3JpZ2luYWwsIHNpemUpOwogICAg
IGlmICghaWNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKaW5k
ZXggNTMwYTNhMzA4OTAxNGEzZWIxYmUwMmQzMjQ4MjljYWMyNmQ4NmQzMi4uZGI0M2VjMmNiMzEx
OWU1NjMwMDg3NDRiYWJjMDU5MjRkZTYxYzJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBj
b25zdCBTdHJpbmcmIHBhZ2VVUkwpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW1h
Z2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6
ZSYpIG92ZXJyaWRlOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUlj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXpl
Jikgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpIG92
ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgc3luY2hyb25vdXNJY29u
RGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVS
TChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCmluZGV4IDAyNTQ2NTMwNDE2OTE5
NzIyMmU3N2RmMDZlNjZmZjY2M2U3ODA4YWEuLjU0NGNiYWNiNjk4YzY4YjBkODY4MWMyOGJkNjE4
Y2U3MjhjMWFmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJh
c2VCYXNlLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN5
bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIEljb25Mb2FkRGVjaXNpb24gc3luY2hyb25vdXNMb2FkRGVj
aXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIERvY3VtZW50TG9hZGVyKikgeyByZXR1cm4g
SWNvbkxvYWRObzsgfQogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAg
ICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAg
ICAvLyBBc3luY2hyb25vdXMgY2FsbHMgd2Ugc2hvdWxkIHVzZSB0byByZXBsYWNlIHRoZSBhYm92
ZSB3aGVuIHN1cHBvcnRlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNN
b2RlKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBmYWYwZjg2OTYyYzNmYjY1Nzc3NDViZmFmNzVi
NGM4NGQ4MGNjMDYwLi40YTVjNjFhNWQyN2JhODU1NDNjMDA2NDVkZjhlYTIwMzM1MGE5ZTFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIoZG91YmxlIGRl
bGF5KQogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIAotYm9vbCBC
aXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitib29sIEJpdG1hcElt
YWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChpbmRl
eCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNCw3ICsxMDQs
NyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKICAg
ICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7CisgICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0
eU9yaWdpbigpIGNvbnN0CkBAIC0xODQsOSArMTg0LDkgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2Fj
aGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwg
SW0KICAgICAgICAgbV9mcmFtZXMuZ3JvdyhudW1GcmFtZXMpOwogCiAgICAgaWYgKGZyYW1lQ2Fj
aGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpIHsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhd
Lm1fZnJhbWUgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5n
TGV2ZWwpOworICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKICAgICAgICAgbV9m
cmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAg
ICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICAg
ICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAg
ICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAgICAgfQogCkBAIC0yMDQsNyArMjA0LDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwgJiYgZnJh
bWVTaXplICE9IG1fc2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7
CiAKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsKKyAgICBpZiAobV9mcmFtZXNb
aW5kZXhdLm1faW1hZ2UpIHsKICAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2FzdDxpbnQ+
KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwogICAgICAgICBtX2RlY29kZWRTaXplICs9
IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxseS1kZWNvZGVkIGZyYW1lIHdpbGwgc3Vi
c3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1c2VkCkBAIC0zNzksMTQgKzM3OSwxNCBA
QCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1h
Z2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0g
Q2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICAg
ICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUgJiYgIW1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlKQogICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRh
dGFPbmx5ICYmICFtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpKQogICAgICAgICBjYWNo
ZUZyYW1lKGluZGV4LCAwLCBmcmFtZUNhY2hpbmcpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50KQorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2Nh
bGVIaW50KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMzk1LDcgKzM5NSw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhCiAK
ICAgICAvLyBXZSBtYXkgaGF2ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBs
aW5nIGxldmVsLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0
aCBhIGxvd2VyIGxldmVsLgotICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2Zy
YW1lc1tpbmRleF0ubV9mcmFtZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhd
Lm1fc3Vic2FtcGxpbmdMZXZlbCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAm
JiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNb
aW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMg
YWxyZWFkeSBjYWNoZWQsIGJ1dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJn
ZXIgdmVyc2lvbi4KICAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1f
ZnJhbWVCeXRlczsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOwpAQCAtNDA2
LDEwICs0MDYsMTAgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EKICAgICB9CiAKICAgICAvLyBJ
ZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgotICAgIGlmIChpbmRleCA+
PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChp
bmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAg
ICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5k
RnJhbWUpOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lOworICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVJ
c0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCkBAIC00MjgsOSArNDI4LDkgQEAgZmxvYXQg
Qml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICByZXR1
cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorTmF0aXZlSW1hZ2VQdHIg
Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKLSAgICByZXR1cm4g
ZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5k
ZXgoY3VycmVudEZyYW1lKCkpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhh
QXRJbmRleChzaXplX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaAppbmRleCA3NDkzYzZhNGJmYjg2M2Q5NzYzN2M0OWM0NjRjYzM3YWU3
OGUwYTA0Li4yNDIzMmZlMDJkNzA5YzQ3Njk3ODIxMzc2NjZjZjA4MGZkY2E5MmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTQ3LDE2
ICs0Nyw2IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNl
IFdURiB7Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1l
RGF0YT4gOiBwdWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZy
YW1lRGF0YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFRpbWVyOwogCkBAIC02NSwxNiArNTUsMTUgQEAgY2xhc3MgVGlt
ZXI7CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IAogc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhbWVEYXRh
KTsKIHB1YmxpYzoKICAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fZnJhbWUoMCkKKyAgICAg
ICAgOiBtX2ltYWdlKG51bGxwdHIpCiAgICAgICAgICwgbV9vcmllbnRhdGlvbihEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbikKICAgICAgICAgLCBtX3N1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAgICAg
LCBtX2R1cmF0aW9uKDApCiAgICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCiAgICAgICAg
ICwgbV9pc0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkgCisgICAg
ICAgICwgbV9oYXNBbHBoYSh0cnVlKQogICAgICAgICAsIG1fZnJhbWVCeXRlcygwKQogICAgIHsK
ICAgICB9CkBAIC04OCw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIg
dGhlcmUgd2FzIGNhY2hlZCBpbWFnZSBkYXRhIHRvIGNsZWFyLgogICAgIGJvb2wgY2xlYXIoYm9v
bCBjbGVhck1ldGFkYXRhKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG1fZnJhbWU7CisgICAgTmF0
aXZlSW1hZ2VQdHIgbV9pbWFnZTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247
CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWw7CiAgICAgZmxvYXQgbV9k
dXJhdGlvbjsKQEAgLTEwOCwxMSArOTcsMTEgQEAgY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBw
dWJsaWMgSW1hZ2UgewogICAgIGZyaWVuZCBjbGFzcyBHcmFkaWVudEltYWdlOwogICAgIGZyaWVu
ZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCaXRtYXBJ
bWFnZT4gY3JlYXRlKFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIgPSAwKQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcEltYWdl
KG5hdGl2ZUltYWdlLCBvYnNlcnZlcikpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPEJpdG1hcElt
YWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAwKQorICAgIHN0YXRpYyBSZWY8
Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShvYnNlcnZlcikp
OwogICAgIH0KQEAgLTE1NCw4ICsxNDMsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShD
RykKLSAgICBXRUJDT1JFX0VYUE9SVCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSBvdmVycmlk
ZTsKLSAgICBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXpl
Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGdl
dENHSW1hZ2VSZWYoKSBvdmVycmlkZTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZ2V0Rmly
c3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApAQCAt
MTcyLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICBFdmFzX09iamVjdCogZ2V0RXZhc09iamVjdChF
dmFzKikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsgfQogCiAgICAgYm9vbCBjdXJyZW50RnJhbWVL
bm93blRvQmVPcGFxdWUoKSBvdmVycmlkZTsKQEAgLTE5OSw4ICsxODgsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICBDZXJ0YWluICAgICAvLyBUaGUgcmVwZXRpdGlvbiBjb3VudCBpcyBrbm93biB0byBi
ZSBjb3JyZWN0LgogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShQYXNz
TmF0aXZlSW1hZ2VQdHIsIEltYWdlT2JzZXJ2ZXIqID0gMCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSAwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7
CisgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRy
KTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSBvdmVycmlkZTsKQEAgLTIxNCwxMCAr
MjAzLDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBmcmFtZUNvdW50KCk7CiAKLSAgICBQ
YXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9u
U2NhbGVIaW50ID0gMSk7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1l
QXRJbmRleChzaXplX3QpOworICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7CisgICAgTmF0aXZlSW1hZ2VQ
dHIgY29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAotICAgIGJvb2wgaGF2
ZUZyYW1lQXRJbmRleChzaXplX3QpOworICAgIGJvb2wgaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCk7CiAKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBm
bG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiYWJjNGM4NWNjMmRm
NzQ5NThmYTFjOTEwZTU2YWFjYjg3MTkwY2YyLi5jNTI0YmExOWQ1ZGRhNDA1YzYwYzE0NzgyMTYy
NzljMGM4NTk2NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzAyLDcgKzMwMiw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9
CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAppbmRleCBlMzZiYTNhYTU2ZDU4YzIwNmE5ODNmZjViYTliZmE3YjEzNjUxMTgyLi5kYmJi
Y2Y1OGMzN2I5YTZiMTY0ZDZmMTM1MWNkNmUxNWViNDFkODUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTEyNDUs
NyArMTI0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgSW1hZ2VTb3VyY2UqIG1fZGVjb2RlcjsKICAg
ICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0Uo
Q0cpCi0gICAgICAgIENHSW1hZ2VSZWYgbV9jZ0ltYWdlOworICAgICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gbV9jZ0ltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNv
ZGVkSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggZDk1ZTdkZWI4MTBmYzI0
ZjdmNjFiMWIyM2E0YjlhZWYzZjNjMTdiNy4uZjY2MTU2MTIyMDI4ZjA0OWM4Mzc1Nzc4OGViY2Nj
OTI2ZjNhMWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAt
NjgsNyArNjgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQotICAg
IEljb24oQ0dJbWFnZVJlZik7CisgICAgSWNvbihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4pOwogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAjZWxpZiBQTEFURk9STShNQUMpCiAg
ICAgSWNvbihOU0ltYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAppbmRleCA0ZWQ2ZTM1ZDk5YWZhYWI1YjhiZGVjNmZkN2ExMzIwZTIwZDA0NmY1Li4wMzg5MjBk
NzE5ZTAyNzk4ZWVkYTU5ZTVjMzk4ZGNhMzViNjI4NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTEzNSwyMyArMTM1LDIzIEBAIHB1YmxpYzoKIAogICAg
IGVudW0gVGlsZVJ1bGUgeyBTdHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVh
dFRpbGUgfTsKIAotICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1
cm4gSW1hZ2VPcmllbnRhdGlvbigpOyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBp
bWFnZSBmb3JtYXRzLgogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2aXJ0dWFsIE5TSW1hZ2UqIGdl
dE5TSW1hZ2UoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOU0ltYWdlKiBnZXROU0ltYWdl
KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2aXJ0dWFsIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVm
IGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdl
dEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQotICAg
IHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIHsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIFJldGFpblB0cjxDR0ltYWdlUmVmPiBnZXRDR0ltYWdlUmVmKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGdl
dEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIHsg
cmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTYwLDEx
ICsxNjAsMTEgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0gICAgdmly
dHVhbCBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IEdka1BpeGJ1ZiogZ2V0R2RrUGl4YnVmKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShFRkwpCi0gICAgdmlydHVhbCBFdmFzX09iamVjdCogZ2V0RXZhc09iamVj
dChFdmFzKikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNP
YmplY3QoRXZhcyopIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc0ZWYwNTNh
MzMzZmY1ZmM1NzhlODE4MDBjYzZmYzk3NTVlZmJhYjguLmFlMzFjOTgzNTIxZDUwMDgyMjVjMWZj
MzQyOWMyYzQwYTAzN2U0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTE0OCwxOSArMTQ4LDE5IEBAIHNpemVfdCBJbWFnZVNv
dXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rl
ci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNl
OjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQorTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSW1hZ2VGcmFtZSogYnVm
ZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghYnVm
ZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gWmVyby1oZWln
aHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUg
YW4KICAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KICAgICBpZiAoc2l6
ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMgYSBuYXRpdmUgaW1hZ2Uu
ICBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKICAgICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0aXZl
IGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyByZWZjb3VudC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGFjZGQx
Y2U0Y2UzMDBkZTgxYzllMDYyZWVlNzYwN2JmNDcyYTcwYWYuLmMxMWY3YmU0ODI5ZTRlNmJjNDAx
Nzg5NjNjMWQ1MWExODY2MGEwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAvLyBk
ZWNvZGVkIGZyYW1lcy4KICAgICAvLwogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIGNs
ZWFyKGZhbHNlLCBuKSBhbmQgc3Vic2VxdWVudGx5IGNhbGwKLSAgICAvLyBjcmVhdGVGcmFtZUF0
SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0cnVlKS4K
KyAgICAvLyBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChtKSB3aXRoIG0gPCBuLCB1bmxlc3MgdGhl
eSBmaXJzdCBjYWxsIGNsZWFyKHRydWUpLgogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHN0YXRl
ZnVsIEltYWdlU291cmNlcy9kZWNvZGVycyB3aWxsIHdvcmsgcHJvcGVybHkuCiAgICAgLy8KICAg
ICAvLyBUaGUgfGRhdGF8IGFuZCB8YWxsRGF0YVJlY2VpdmVkfCBwYXJhbWV0ZXJzIHNob3VsZCBi
ZSBzdXBwbGllZCBieSBjYWxsZXJzCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0
aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4K
LSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IDApOworICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOwogCiAgICAgZmxvYXQgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVf
dCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBoYS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApp
bmRleCA5OWI5ZDVjYWRlNzNlMGMxZmFkMDlhNzdjZjVmNmRiMjk4YzM3YWE1Li45MDY5NWI0NDU2
M2EwOGI0ZDBjYzZkMzZjNGZmZDgyZDUxY2ExZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC04MzcsNyArODM3LDcgQEAgYm9v
bCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LAogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAK
LVBhc3NOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpCitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
aW5kZXggNWVhNTU4NzExMDU5MzdlZWU0MDYzZTcyNTkyYTFhZTU1NzE1NDVjYi4uYzJlMGNmN2I4
MTMwODFkMTUzMzdkMGE5MmU2Y2EzMTdkMGFlMDgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MjMsNyArNDIzLDcgQEAgcHVibGlj
OgogICAgIC8vIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWUvdHJ1bmsvc3Jj
L2dwdS9jb21tYW5kX2J1ZmZlci9zZXJ2aWNlL2dsZXMyX2NtZF9jb3B5X3RleHR1cmVfY2hyb21p
dW0uY2MgdmlhIHNoYWRlcnMuCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAg
ICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOwogICAgIE5ldHdvcmtTdGF0
ZSBuZXR3b3JrU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4NTZlN2RkYzg1OTY4NjQ3
MzYxOGRhMmExNGQ2Yzc5MC4uZDkxOWY1NDMzN2E0NTdjMTBlYzY4YmE1YTIwZWI3ZGUzYjhmZWM3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25z
dCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQoYywgcik7IH0KICAgICB2aXJ0dWFsIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0z
RE9iamVjdCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0s
IGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJl
dHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXll
cjo6UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oCmluZGV4IGRmOTQxYTU2NmE5ZTQ2OTI3NzI3YmExZWM2ODQ4ZjIx
NjgwM2E0NWIuLjAzNDY2NjViMzZkYmU1NjYxYTA5Y2U3MWM0ZWNiNGEwYzFlOGUyNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApA
QCAtMjksNiArMjksNyBAQAogI2RlZmluZSBOYXRpdmVJbWFnZVB0cl9oCiAKICNpZiBVU0UoQ0cp
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJ
bWFnZVJlZjsKICNlbGlmIFVTRShDQUlSTykKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAt
MzgsMjEgKzM5LDE0IEBAIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6IE5hdGl2ZUltYWdlUHRyIGFuZCBQYXNzTmF0
aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHNtYXJ0Ci0vLyBwb2ludGVycyAoc2VlIFNWR0ltYWdlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKS4KICNpZiBVU0UoQ0cpCi10eXBlZGVmIENHSW1h
Z2VSZWYgTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRp
dmVJbWFnZVB0cjsKICNlbGlmIFVTRShDQUlSTykKIHR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gTmF0aXZlSW1hZ2VQdHI7Ci10eXBlZGVmIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBQYXNzTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoV0lOR0RJKQogdHlwZWRlZiBSZWZQdHI8
U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogCi0jaWYgIVVTRShDQUlSTykK
LXR5cGVkZWYgTmF0aXZlSW1hZ2VQdHIgUGFzc05hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0KIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZjdmYjFhYzQ2OGIwNjgxMTBlYmEy
MzJmMmJjNmZmMDYyNmVmYmEyMC4uZDZkZTc2MmMxZmUyYmY4NDZhYWFlMjQ1M2M2YzU1YjBiYWRj
YTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZh
aWxhYmxlRnJhbWUoKTsKICAgICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0
cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwogCiAgICAgdm9pZCBjcmVhdGVPcGVuR0xWaWRlb091
dHB1dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMTU0MzdkZGQ4ZWQ2ZjNkMGEyYmRi
ZTU1ZThmMzFkZmE3YzQ2Y2RkZi4uZWM2ZjYwMTdmMzY0ZWY4NjlkZWY1MmI3N2JjYmRmMmQ2MGU4
NzYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHZpZGVvVGV4dHVyZS5nZXQoKSwgd2lkdGgs
IGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1QYXNzTmF0
aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpCitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVM
YXN0SW1hZ2UoKTsKICAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApp
bmRleCAyMzBhOGY2YjcyMWI1MTVhMzFlNTIwMjZlZmIwZGVhNGQ0YzAwMDFhLi45NDJmMTVlYjc3
NzdiNzNjZTRhMzE5NzdiNWU3NTIxY2Q4NjIzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTEwMDgs
MTYgKzEwMDgsMTUgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50
c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewotICAgICAgICBDR0lt
YWdlUmVmIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgICAgIGF1dG8gbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKICAgICAgICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAvLyBGSVhNRTogcHJvYmFibHkgZG9uJ3QgbmVlZCBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZSBhdCBhbGwgbm93LgotICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgJiYg
bV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0gbmV3SW1hZ2UpCisgICAgICAgIGlm
IChtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9PSBuZXdJbWFnZSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCi0gICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3
SW1hZ2U7Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICAg
ICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0g
V1RGTW92ZShuZXdJbWFnZSk7CiAKICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENv
bnRlbnRzTGF5ZXJGb3JJbWFnZTsKICAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwCmluZGV4IGNkNTdlZTQ4NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTll
MTAyODIuLmEzZjVjN2RhOTk3NTY5M2YxOWU1NzUzZmJkODcxN2M0ZGYxZjM3YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwCkBAIC01OCw3ICs1OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
CiB7CiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKICAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0g
Y2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRpdmVJbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09O
VEVOVF9DT0xPUjsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gbmF0aXZlSW1hZ2U7CisgICAg
bV9mcmFtZXNbMF0ubV9pbWFnZSA9IG5hdGl2ZUltYWdlOwogICAgIG1fZnJhbWVzWzBdLm1faGF2
ZU1ldGFkYXRhID0gdHJ1ZTsKIAogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwpAQCAtNzIsNyAr
NzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogCiAgICAgc3RhcnRBbmltYXRpb24oKTsK
IAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFt
ZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBp
dCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENv
bG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRG
cmFtZSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VB
dEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9v
IGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAKQEAg
LTE1OCw4ICsxNTgsOCBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRh
KQogICAgIGlmIChjbGVhck1ldGFkYXRhKQogICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNl
OwogCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgbV9mcmFtZSA9IG51bGxwdHI7CisgICAg
aWYgKG1faW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwCmluZGV4IGNjNzA0NjE0N2FlODFmMWZhZGFhNmQ4NDE2MjQ5ODBjNmZkZmNiZjEu
LjhjNDE4NmQ3MWU1M2ExOTA3ZTkyZDczYTJiMDE2NDdmZmQ2NmIxYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7
CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9p
bWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9p
bWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlk
ZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxp
ZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGYwNzkyMGYwZDIzMjQ2MmM4ZmI0MWEwMzIyZDgyMmFj
OWQ1ZWQzMDcuLmQ0MjYwODg5ZjNlMzI5ZjdmYTE3ZmZmNTgyZjI2NTRlODQyOWU5MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJU
aGlja25lc3MpCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKaW5kZXggMDFiN2Q2OTJjZGJkN2FiNGQyMmJiYzEzOTlj
MTAzMjhmNTdlNWU0Ny4uZmQ2MzZlMTIzN2EwNDNjMWNkNjljYzM5MzlkNzFkNzA1YjYwN2NhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1h
Z2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHAKQEAgLTU4LDE4ICs1OCwxNyBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9v
bCBjbGVhck1ldGFkYXRhKQogICAgIG1fb3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbjsKICAgICBtX3N1YnNhbXBsaW5nTGV2ZWwgPSAwOwogCi0gICAgaWYgKG1fZnJhbWUpIHsK
KyAgICBpZiAobV9pbWFnZSkgewogI2lmIENBQ0hFX1NVQklNQUdFUwotICAgICAgICBzdWJpbWFn
ZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ZyYW1lKTsKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNs
ZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgQ0dJbWFnZVJlbGVhc2Uo
bV9mcmFtZSk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOworICAgICAgICBtX2ltYWdlID0gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoY29uc3QgUmV0YWluUHRyPENH
SW1hZ2VSZWY+JiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShv
YnNlcnZlcikKICAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAsIG1faW1h
Z2VPcmllbnRhdGlvbihPcmlnaW5Ub3BMZWZ0KQpAQCAtODksOCArODgsOCBAQCBCaXRtYXBJbWFn
ZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0
cnVlKQogewotICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSk7Ci0g
ICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOworICAgIENHRmxv
YXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIENHRmxvYXQgaGVp
Z2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAgbV9kZWNvZGVkU2l6ZSA9
IHdpZHRoICogaGVpZ2h0ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQp
OwogCkBAIC05OSw3ICs5OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVm
IGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3BlY3RpbmdP
cmllbnRhdGlvbiA9IG1fc2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFt
ZXNbMF0ubV9mcmFtZSA9IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7CisgICAgbV9mcmFtZXNbMF0u
bV9pbWFnZSA9IGltYWdlOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVlOwogICAg
IG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIApAQCAtMTM2LDcgKzEzNSw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZyYW1lQ291
bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaGF2ZUZyYW1lQXRJbmRleCgw
KSkgeworICAgIGlmICghaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KDApKSB7CiAgICAgICAgIEludFNp
emUgc2l6ZSA9IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiAgICAgICAgIGlmIChz
aXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNDUsMTUgKzE0NCwxNSBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlk
Q29sb3IoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENHSW1hZ2VSZWYgaW1h
Z2UgPSBudWxscHRyOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKICAgICBpZiAo
bV9mcmFtZXMuc2l6ZSgpKQotICAgICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1fZnJhbWU7Cisg
ICAgICAgIGltYWdlID0gbV9mcmFtZXNbMF0ubV9pbWFnZTsKIAogICAgIGlmICghaW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZvciBzb2xp
ZCBjb2xvciBpbiB0aGUgaW1wb3J0YW50IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFnZS4KLSAg
ICBpZiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSAxICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UpID09IDEpIHsKKyAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSA9PSAxICYm
IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpID09IDEpIHsKICAgICAgICAgdW5zaWduZWQg
Y2hhciBwaXhlbFs0XTsgLy8gUkdCQQogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBi
aXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEsIDEs
IDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCiAgICAgICAgICAgICBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwpA
QCAtMTYxLDcgKzE2MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dChiaXRtYXBDb250
ZXh0LmdldCgpKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CiAgICAgICAg
IENHUmVjdCBkZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpOwotICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25SZWN0
LCBpbWFnZSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgp
LCBkZXN0aW5hdGlvblJlY3QsIGltYWdlLmdldCgpKTsKICAgICAgICAgaWYgKCFwaXhlbFszXSkK
ICAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAsIDAsIDAsIDApOwogICAgICAgICBl
bHNlCkBAIC0xNzEsMTggKzE3MCwxOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlk
Q29sb3IoKQogICAgIH0KIH0KIAotQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJl
ZigpCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYoKQog
ewotICAgIHJldHVybiBmcmFtZUF0SW5kZXgoMCk7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdElu
ZGV4KDApOwogfQogCi1DR0ltYWdlUmVmIEJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZP
ZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBCaXRtYXBJ
bWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAg
ICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0SW5k
ZXgoaSk7Ci0gICAgICAgIGlmIChjZ0ltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGNn
SW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpKSA9PSBzaXplKQotICAgICAgICAgICAg
cmV0dXJuIGNnSW1hZ2U7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChp
KTsKKyAgICAgICAgaWYgKGltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpID09IHNpemUpCisgICAgICAgICAg
ICByZXR1cm4gaW1hZ2U7CiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQg
Q0dJbWFnZVJlZiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSByaWdodCBzaXplCkBAIC0xOTMsMTIgKzE5
MiwxMiBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJh
eSgpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGlmICghY291bnQp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBD
Rk11dGFibGVBcnJheVJlZiBhcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKE5VTEwsIGNvdW50
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKLSAgICAgICAgaWYgKENHSW1hZ2VSZWYgY3VyckZyYW1lID0gZnJhbWVBdElu
ZGV4KGkpKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJyRnJhbWUp
OworICAgICAgICBpZiAoYXV0byBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKSkKKyAg
ICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lLmdldCgpKTsKICAg
ICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwogfQpAQCAtMjE0LDEyICsyMTMsMTIgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7
CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERG
IGNvbnRleHRzLgogICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNvcHlVbnNjYWxlZEZyYW1lQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSkpOworICAgICAgICBpbWFnZSA9IGNvcHlVbnNjYWxlZEZyYW1l
SW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBlbHNlIHsKICAgICAgICAgQ0dSZWN0
IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0o
ZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAg
ICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgo
dHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwg
dHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgp
KSk7CiAKLSAgICAgICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNh
bXBsaW5nU2NhbGUpOworICAgICAgICBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVu
dEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKICAgICB9CiAKICAgICBpZiAoIWltYWdlKSAvLyBJ
ZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KQEAgLTI0NSwyNCAr
MjQ0LDI0IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRlc2NyaXB0aW9uLnJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAg
ICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9u
KTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogCiAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KHRoaXMpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxl
ZEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFw
SW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAg
ICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsKIAogICAgIGlmICghbV9m
cmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIENHSW1hZ2VS
ZXRhaW4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpOworICAgICAgICByZXR1cm4gbV9mcmFtZXNb
aW5kZXhdLm1faW1hZ2U7CiAKLSAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4
KGluZGV4KTsKKyAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5k
ZXgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDZjMDNhMmNlZjg0NjA2NTYx
ZWEwN2ViOTI4ZjFjZjI5NWY5ZjVlMzYuLjk5ZjA5ZGI2N2JhNTQyODJkYzRlZDcwNWFlNDE2Mzgw
MzM3MTkzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0zMzMsMTUgKzMzMywxNSBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fZGVjb2RlZEltYWdlID0g
YWRvcHRDRihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7Ci0gICAgICAgIG1fY2dJbWFn
ZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGRlY29k
ZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVj
b2RlZEltYWdlOwogICAgIH0gZWxzZQogICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbV9jZ0ltYWdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9jZ0lt
YWdlKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2UpOwor
ICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2UuZ2V0KCkpOworICAg
IG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5nZXQoKSk7CiAgICAg
aWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMzQ5LDcgKzM0OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgLy8g
c28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdlIHJlLXBh
Y2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0YWJsZSBp
bmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3BhY2VSZWYg
Y29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZSk7CisgICAgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1hZ2UuZ2V0
KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dDb2xvclNwYWNlR2V0TW9kZWwo
Y29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9yU3BhY2VNb2RlbEluZGV4ZWQp
IHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dDsKQEAgLTM2
NCwyMiArMzY0LDIyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpl
eHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAKICAgICAgICAgQ0dDb250
ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwog
ICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShiaXRtYXBDb250ZXh0Lmdl
dCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShi
aXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFn
ZUhlaWdodCksIG1fY2dJbWFnZSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBD
b250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdo
dCksIG1fY2dJbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93IGRpc2NhcmQgdGhlIG9yaWdp
bmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5IGZyb20gdGhlIGJpdG1hcCBj
b250ZXh0LgogICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBtX2NnSW1hZ2UgPSBt
X2RlY29kZWRJbWFnZS5nZXQoKTsKICAgICB9CiAKLSAgICBzaXplX3QgYml0c1BlckNvbXBvbmVu
dCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFnZSk7Ci0gICAgc2l6ZV90IGJp
dHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlKTsKKyAgICBzaXpl
X3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFn
ZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4
ZWwobV9jZ0ltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4ICYmIGJp
dHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYml0
c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVyQ29tcG9u
ZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyht
X2NnSW1hZ2UpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcElu
Zm8obV9jZ0ltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9IGZhbHNlOwog
ICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8gb25lIGxhcmdl
IHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8gc28gdGhhdCB3
ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQyMSw3ICs0MjEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbAogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7CiAgICAgQWxwaGFGb3JtYXQg
YWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChDR0ltYWdlR2V0QWxw
aGFJbmZvKG1fY2dJbWFnZSkpIHsKKyAgICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8obV9j
Z0ltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJz
dDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbV9hbHBoYU9w
ID0gQWxwaGFEb1VubXVsdGlwbHk7CkBAIC00NjEsMTQgKzQ2MSwxNCBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbAogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0ID09IERhdGFGb3JtYXROdW1G
b3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BpeGVsRGF0YSA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFn
ZSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShD
R0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKICAgICBpZiAoIW1fcGl4
ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2ltYWdlUGl4ZWxEYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX3BpeGVsRGF0
YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQgaW50IHNyY1VucGFja0FsaWdubWVudCA9IDA7Ci0g
ICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1fY2dJbWFnZSk7
CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1fY2dJbWFn
ZS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVzUGVyUm93IC0gYml0c1BlclBp
eGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGluZykgewogICAgICAgICBzcmNV
bnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdl
UGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAg
ICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0LnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE0NDk2NTQwNDZhZThm
MTBhYmFkMTY0MTVlNjQ2MGFkYmJiYjhlODguLjRjOGI3YmQwMzI4NTU3ZjIxMjBlMDJkZjRlZTYy
YzNkN2E1YmM0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91
c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFn
ZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYg
aW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMSw4ICszMTEs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNl
LngoKSAtIGRlc3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRoZSBjb250ZXh0IHNv
IHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91dC4KICAg
ICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAtIChwaGFzZS55KCkgLSBkZXN0
UmVjdC55KCkgKyB0aWxlUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5U
cmFuc2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVIZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJlZiB0aWxl
SW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGZsb2F0IGgg
PSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFn
ZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0
SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3Vi
SW1hZ2U7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzI2LDEzICszMjYsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFnZSBvdXQgb2YgYSBw
YXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9yaWdpbmFs
IGltYWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJlY2F1c2Ugc3ViLWlt
YWdlcyBhcmUgb25seSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVuZGVycyB3
aGVuIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NFUlQoaCA9PSBpbWFn
ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0
aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsKKyAgICAgICAgc3ViSW1hZ2UgPSBh
ZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLmdldCgpLCB0aWxl
UmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBiZXR3ZWVu
IHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Igbm9uLXpl
cm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50IENHUGF0
dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0gdGlsZVJl
Y3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkp
OwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlKTsKKyAgICBmbG9hdCB3
ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQoKSk7CiAgICAgaWYgKHcgPT0gaW1hZ2Uu
c2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNwYWNpbmcu
d2lkdGgoKSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhNRTogQ0cgc2Vl
bXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNhcmUgKGUu
Zy4gd2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdlIHNob3Vs
ZCB0aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2UgdG8gZml0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHLmNwcAppbmRleCBkNGEwMTJiNmY1N2JmNTM5MzA2NDc3N2I2YzEwOTM2NmIyNGM0NDVj
Li41MDE1ZGQxNWFiZmM4MjVkY2ViMDMyMGYxMjAyOWNiYTUxMjE4Mjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApA
QCAtMzQwLDcgKzM0MCw3IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIp
IDogMDsKIH0KIAotQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmV0YWluUHRy
PENHSW1hZ2VSZWY+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIWlu
aXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY2LDE4ICszNjYsMTUg
QEAgQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYg
eGJtVVRJID0gQ0ZTVFIoInB1YmxpYy54Yml0bWFwLWltYWdlIik7CiAKICAgICBpZiAoIWltYWdl
VVRJKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICByZXR1cm4gaW1h
Z2U7CiAKICAgICBpZiAoIUNGRXF1YWwoaW1hZ2VVVEksIHhibVVUSSkpCi0gICAgICAgIHJldHVy
biBpbWFnZS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBpbWFnZTsKICAgICAKICAgICAvLyBJ
ZiBpdCBpcyBhbiB4Ym0gaW1hZ2UsIG1hc2sgb3V0IGFsbCB0aGUgd2hpdGUgYXJlYXMgdG8gcmVu
ZGVyIHRoZW0gdHJhbnNwYXJlbnQuCiAgICAgY29uc3QgQ0dGbG9hdCBtYXNraW5nQ29sb3JzWzZd
ID0gezI1NSwgMjU1LCAgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gbWFza2VkSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoTWFza2luZ0NvbG9y
cyhpbWFnZS5nZXQoKSwgbWFza2luZ0NvbG9ycykpOwotICAgIGlmICghbWFza2VkSW1hZ2UpCi0g
ICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Ci0KLSAgICByZXR1cm4gbWFza2VkSW1hZ2Uu
bGVha1JlZigpOworICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7
CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAKaW5kZXggYjMwMzNmZTA1MTBmNzlkMjUxMmE0MDZiYjFiZGRmMjk1YWZhNWEzNC4uNzg5
YjdmOGM4ZDFmMjdjMzFkODIzZTQ0NzdkNGZmODY5MzYzNTk0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC03MSwxMCArNzEs
MTIgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxl
Tm9uVW5pZm9ybSgxLCAtMSk7CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRp
bGVSZWN0LmhlaWdodCgpKTsKIAorICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0Zm9ybUlt
YWdlID0gdGlsZUltYWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKwogICAgIC8vIElmIHdlJ3JlIHJl
cGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRl
cm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmct
ZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAg
ICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxlSW1h
Z2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdD
b25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1h
Z2VBbmRUcmFuc2Zvcm0ocGxhdGZvcm1JbWFnZS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQ
YXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxk
IGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVz
aW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBi
ZWluZyByZW5kZXJlZC4KQEAgLTg1LDEwICs4Nyw4IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEg
PDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdlUmVm
IHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAg
Q0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0aWxlSW1hZ2UoKS0+Z2V0
Q0dJbWFnZVJlZigpKTsKLQogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2Fs
bGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsK
LSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNp
bmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRl
KHBsYXRmb3JtSW1hZ2UubGVha1JlZigpLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0
ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVy
bkNhbGxiYWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApp
bmRleCAwMjRjYmZlMDBiNTIyMzM5MzM1OTIwZjlmODUzNGM4MzZkYWNjZjg4Li5mMzU0ODljMzQ5
YmFmZTViMmMwZmViM2YxN2MyMzNkMDUwMzY4ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCkBAIC00OTEsNyArNDkxLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdUaWxlZFNjYWxlZEltYWdlJiBpdGVtKQog
fQogCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2Up
CiAjaWYgVVNFKENHKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBD
YWlyby4KQEAgLTUxNiw3ICs1MTYsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaQogdm9pZCBE
cmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsK
ICNpZiBVU0UoQ0cpCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZVB0ci5nZXQo
KSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1v
ZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2VQ
dHIsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBtX3NyY1JlY3QsIG1fb3AsIG1fYmxlbmRN
b2RlLCBtX29yaWVudGF0aW9uKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA1YTg0OTY0YzU3OWIz
MmZkYzBlYzZlZjE0NWY2NDI2MGYxMzVhZmZmLi40ZjEzNTFlYmIyMzA2NTFjNTVlMTM2NWE2MTYw
NGUzMzY0MzFlZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTYzOSw3
ICs2MzksNyBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogY2xhc3MgRHJh
d05hdGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCisgICAgc3RhdGljIFJlZjxE
cmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2VQdHIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlUHRyLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpOwogICAgIH0KQEAg
LTY0OCw3ICs2NDgsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgotICAgIERyYXdOYXRpdmVJ
bWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgRHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKIAogICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA1ZTUyZWM5MTkyM2Q0NTlmMDgyMjE5MWY2Njlk
MGMwMGVlZGYyNThhLi5kNDc1ZDUwZWQ1YzllN2RjMGYxMjg0YzUyYzllODk4YmMyODQ1NGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdAogfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJ
Uk8pCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGlt
YWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgUmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2VQdHIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIERyYXdpbmdJdGVt
JiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUlt
YWdlOjpjcmVhdGUoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBi
bGVuZE1vZGUsIG9yaWVudGF0aW9uKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBhNWQyYzcxYTI1ZWJk
YmZlNGYzYmE3ZmRhY2QxZjJkZTU4ODZkYzUwLi5lYjk5YTNkZGEwMGQzMTcwY2ZjOGYwODZhNDAy
OWNiYmNlMWNkM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAg
LTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIElt
YWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICNpZiBV
U0UoQ0cpIHx8IFVTRShDQUlSTykKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZl
SW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOwogI2VuZGlmCiAgICAgdm9pZCBkcmF3UGF0
dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9
IEJsZW5kTW9kZU5vcm1hbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCmluZGV4IGJhNDE1
OTdhYTExMDFkYjYyOTAyM2QyNzNiMjAwZTc4MWQzM2FhYzkuLjU5Y2MyYzliZThiM2ZmZTExMTg2
YTY4NWQyZThjZjU5NGMxZDM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcApAQCAtMjYz
LDcgKzI2Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRy
YWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlmICghZGVjb2Rl
ci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29k
ZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29k
ZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9p
bWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
ICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNz
dW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZh
bHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2
ZDIyNDliODFkOWQ3NmEuLjVhNTQ5OTg0MDVhYWRjMjc1NjRjN2U4MzYwNWI1ODk3MjFkNGJhNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1t
CkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUljb246Oklj
b24oQ0dJbWFnZVJlZiBpbWFnZSkKK0ljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlKQogICAgIDogbV9jZ0ltYWdlKGltYWdlKQogewogfQpAQCAtNDcsMTIgKzQ3LDEyIEBAIFBh
c3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiAvKmZpbGVuYW1lcyovKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRy
PEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVJlZikK
K1Bhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0
cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCiB7Ci0gICAgaWYgKCFpbWFnZVJlZikKKyAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SWNvbihpbWFnZVJlZikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZSkpOwog
fQogCiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbQppbmRleCBmZjA3MTMxYTYxZmNlZDA0NTg2YjM3MmQ5YmEyMDc5YTk4
NzNjMzhiLi5mOTEyZGUxZGQwYWViZGM0OGI1MDJkOGQ5NGU1ZTU5NGM4OWY2ZWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC05
MywxMSArOTMsMTEgQEAgQ0ZEYXRhUmVmIEJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRp
b24oKQogICAgIGlmICghbnVtRnJhbWVzKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFZlY3Rv
cjxDR0ltYWdlUmVmPiBpbWFnZXM7CisgICAgVmVjdG9yPFJldGFpblB0cjxDR0ltYWdlUmVmPj4g
aW1hZ2VzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsK
LSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOwogICAg
ICAgICBpZiAoY2dJbWFnZSkKLSAgICAgICAgICAgIGltYWdlcy5hcHBlbmQoY2dJbWFnZSk7Cisg
ICAgICAgICAgICBpbWFnZXMuYXBwZW5kKFdURk1vdmUoY2dJbWFnZSkpOwogICAgIH0KIAogICAg
IHVuc2lnbmVkIG51bVZhbGlkRnJhbWVzID0gaW1hZ2VzLnNpemUoKTsKQEAgLTEwOSw3ICsxMDks
NyBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbigpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZhbGlkRnJh
bWVzOyArK2kpCi0gICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9u
LmdldCgpLCBpbWFnZXNbaV0sIDApOworICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFn
ZShkZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2VzW2ldLmdldCgpLCAwKTsKIAogICAgIENHSW1hZ2VE
ZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDgzNWVj
ZjNmNGZlZWViOGEwZGZhOGQzNjk3MzEyOGYzYjgwN2I5MjYuLmRlMGE3MGJmOGEwNmE0Y2VmZDU5
ZmFlMjM5Yzg5NTcwMzQ5NjhjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTkwLDggKzkwLDggQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJl
ZiBpbWFnZSA9IGZyYW1lQXRJbmRleChpKTsKLSAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkg
JiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUu
d2lkdGgoKSkpIHsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gZnJhbWVJ
bWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENH
SW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXpl
LndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50
RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CiAgICAgICAgICAgICBkcmF3
KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNy
Y1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggMjlhMjAyM2RiNjNhOTE0MzRj
Mzk0OGVhYTU1MjNiYjYxZmU4MTA3NS4uOTdlZDA5NzkzNWM1MWZjMjBhODQ1Yzk1OGUxNTY5OGQy
MDAwZGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNhaXJvV2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25z
dCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CiAgICAgICAgIGlmICgh
c3VyZmFjZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGZjODdmODM0
MDMzMTk1NTczZjU2N2ZjMDU4YzdjNzNkODU4YTE5N2EuLmIzNTQ3ZDk0ZTgwOGY4NzRhZWQ5ZGEw
ZjI5MWJlY2UyMGE2NDY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC05OCw3ICs5OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBwb2ludGVyIHRv
IHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAgICAvLyAoQWN0dWFsIHVz
ZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1hZ2UgYW5kIGZyZWVkIGlu
CiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCi0gICAgICAgIFBhc3NOYXRpdmVJbWFn
ZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGFz
TmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKIAogICAgICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7
CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8u
Y3BwCmluZGV4IDNmZTcwNDAyMzQxOWQ5NzUzYjEzOTlkOWY2YzAwYjY3Mzk0NTEyOTYuLjdiNDEy
OTVmODU3MzU4ZmJiZjM1YzFiMDUyNWU4ZDZjYzM1MjBmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZURlY29kZXJDYWlyby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0CitOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2Rh
dGEoCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8
UGl4ZWxEYXRhKj4obV9ieXRlcykpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggNDJlYTVlZTUzNDIxYTc3ZDA3ZTM0ZTZmODBiNDMzYzYyMDczN2I4Yy4uYzE1
ZmFmYmQ4ZWExYjYxMzI0ODY1NjU0ZDk0OTQyZGZlZDQ2NTM1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xODAsMTcgKzE4MCwxNyBAQCB2b2lkIFNWR0lt
YWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRTaXplIGNvbnRhaQogfQogCiAjaWYgVVNFKENBSVJPKQotLy8gUGFzc2VzIG93bmVyc2hpcCBv
ZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gUGFzc05hdGl2ZUltYWdlUHRyIG5l
ZWRzCisvLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxl
ciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVyIHR5cGUu
Ci1QYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkKK05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIC8vIENhaXJvIGRvZXMgbm90IHVzZSB0aGUgYWNjZWxlcmF0ZWQgZHJh
d2luZyBmbGFnLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxl
cmF0ZWQgYnVmZmVyLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghYnVm
ZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgp
LCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oCmluZGV4IDg3MGY2Yzg1YzVlNjg0ZTE3N2MzMGQxNmMyMTY2YTM0MGRjZDVhN2IuLjQ5MWRk
ZmIzYzIxMzllZjg4MjEwMWQxYWY0NWI1YWVmMTEwYzRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgUGFzc05hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICNlbmRp
ZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggNGUxNjFlM2YwZDQ0YTZhYTZlYTZjMDNmNWVkOWFi
YzE5ZWJhZWExZC4uN2UxNDNkZWQyZDY2OWFiM2FjMDljNDk2YjRlNGJlZTdkYzg3ZjIyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgbV9p
bWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBt
X3pvb20sIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3Np
dGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIFNWR0lt
YWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFn
ZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQog
ewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aAppbmRleCAzNTk3NTQyODlmYzMwNDIxOGNkYjhiZjEyMDNiODczYzI5ZmQ1MmQyLi5kMjI0ZmM0
NjEyZmQ5NWExYWVhNzdhZmI0NDc5NzY5MjM1MjdhY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2Vy
dmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JD
b250YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUs
IGZsb2F0IHpvb20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
Y2cvV0tJY29uRGF0YWJhc2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
Y2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKaW5kZXggMGY2ZGU3YTE0NmE2MTFhNTJhYTFlNTM5MDE5
ZmE2YzFjNDY3MjVhZS4uNjc3ZmI4MzJlODk1ZjNkYjFkNGFlZWVjMGY3NDI3Y2Q5ODIwNDI0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFi
YXNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25E
YXRhYmFzZUNHLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogQ0dJbWFnZVJlZiBXS0ljb25EYXRhYmFzZVRyeUdldENHSW1hZ2VGb3JVUkwoV0tJY29uRGF0
YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiB1cmxSZWYsIFdLU2l6ZSBzaXplKQog
ewogICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pbWFnZUZvclBh
Z2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPmdl
dEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0PGludD4oc2l6ZS53aWR0
aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkgOiAwOworICAgIHJldHVybiBpbWFn
ZSA/IGltYWdlLT5nZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoSW50U2l6ZShzdGF0aWNfY2FzdDxp
bnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KSkpLmxlYWtSZWYo
KSA6IG51bGxwdHI7CiB9CiAKIENGQXJyYXlSZWYgV0tJY29uRGF0YWJhc2VUcnlDb3B5Q0dJbWFn
ZUFycmF5Rm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYg
dXJsUmVmKQogewogICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5p
bWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8g
aW1hZ2UtPmdldENHSW1hZ2VBcnJheSgpLmxlYWtSZWYoKSA6IDA7CisgICAgcmV0dXJuIGltYWdl
ID8gaW1hZ2UtPmdldENHSW1hZ2VBcnJheSgpLmxlYWtSZWYoKSA6IG51bGxwdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCA2OGVhMjMzNGZlYmMwNDM4YzM3YjE0ODBmN2UxOWE0ZWQzOTdmMGEyLi5lYmMxZDA5ODcyNWRm
MDI5NGY5MmFhMTI0ZTgyMTRlMTUyZWU1MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNzE5LDIxICsxNzE5LDIxIEBAIHZv
aWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNW
aXNpYmxlLCB1aW50NjRfdCB3aW5kCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgYm9vbCBp
c0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKIHsKLSAgICBDR0ltYWdlUmVm
IGltYWdlID0gYml0bWFwLT5nZXRDR0ltYWdlUmVmKCk7Ci0gICAgQVNTRVJUKENHSW1hZ2VHZXRC
aXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UgPSBiaXRtYXAtPmdldENHSW1hZ2VSZWYoKTsKKyAgICBBU1NFUlQoQ0dJbWFnZUdldEJp
dHNQZXJDb21wb25lbnQoaW1hZ2UuZ2V0KCkpID09IDgpOwogCi0gICAgQ0dCaXRtYXBJbmZvIGlt
YWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKKyAgICBDR0JpdG1hcEluZm8g
aW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2UuZ2V0KCkpOwogICAgIGlmICgh
KGltYWdlSW5mbyAmIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlKSB8fCAoaW1hZ2VJbmZvICYg
a0NHQml0bWFwQWxwaGFJbmZvTWFzaykgIT0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJz
dCkgewogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgYmVpbmcgYWJsZSB0byBoYW5kbGUgb3Ro
ZXIgcGl4ZWwgZm9ybWF0cy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lk
dGgoaW1hZ2UpOwotICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsK
LSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UpOwor
ICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSk7CisgICAgc2l6
ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBi
eXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZS5nZXQoKSk7CiAKLSAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5
RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOworICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VH
ZXREYXRhUHJvdmlkZXIoaW1hZ2UuZ2V0KCkpKSk7CiAgICAgY29uc3QgVUludDgqIGRhdGEgPSBD
RkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKIAogICAgIC8vIE92ZXJsYXkgYSBncmlk
IG9mIHNhbXBsaW5nIGRvdHMgb24gdG9wIG9mIGEgZ3JheXNjYWxlIHZlcnNpb24gb2YgdGhlIGlt
YWdlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274554</attachid>
            <date>2016-03-20 18:25:37 -0700</date>
            <delta_ts>2016-03-20 18:51:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160320182537.patch</filename>
            <type>text/plain</type>
            <size>81615</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uNDBmNTZmMjk2YThlMzFjYjM5NjY0MWIwMTBjNzQ0
OWUzYWI3NDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NyBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZpbmcgTmF0aXZl
SW1hZ2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBv
ZgorICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrcyB3
YXMgZG9uZSB0byBlbnN1cmUgdGhlIENHCisgICAgICAgIHBvaW50ZXIgaXMgbWFpbnRhaW5lZCBj
b3JyZWN0bHkuIEl0IHdhcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBtb3ZlIGEKKyAgICAgICAgRnJh
bWVEYXRhIHNpbmNlIGNhbGxpbmcgdGhlIGRlc3RydWN0b3Igd2FzIHJlbGVhc2luZyB0aGUgQ0dJ
bWFnZVJlZi4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBQYXNzTmF0aXZlSW1hZ2VQdHIg
aXMgbm90IG5lZWRlZCBhbnltb3JlLiBTbyBhbGwgdGhlCisgICAgICAgIGluc3RhbmNlIG9mIFBh
c3NOYXRpdmVJbWFnZVB0ciB3aWxsIGJlIHJlcGxhY2VkIGJ5IE5hdGl2ZUltYWdlUHRyLgorCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgZ2V0UHJl
dmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6IHRyYW5zZmVyIHRoZSBvd25lcnNoaXAKKyAg
ICAgICAgb2YgdGhlIHJldHVybmVkIHBvaW50ZXIgdG8gQ0ZBdXRvcmVsZWFzZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0TlNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0R2RrUGl4YnVmKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRFdmFzT2JqZWN0KToK
KyAgICAgICAgQ2hhbmdlIGFsbCB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUg
UmV0YWluUHRyPENHSW1hZ2VSZWY+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgIENoYW5nZSBmdW5jdGlvbidzIG5hbWUgYW5kIHJlcGxhY2UgUGFzc05h
dGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUlt
YWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICBNYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQg
cG9pbnRlciBmb3IgQ0cuIEdldCByaWQgb2YgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHNp
bmNlIE5hdGl2ZUltYWdlUHRyIGlzIG5vdyBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3Jt
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2
ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICBTaW5jZSBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSByZXR1cm5zIGEgUmV0YWluUHRyLCBtb3ZlIGl0CisgICAg
ICAgIHRvIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgdG8gcmVtb3ZlIHRoZSByZWZjb3VudCBjaHVy
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgIFJlcGxhY2UgbV9mcmFtZSB3aXRoIG1faW1hZ2UgYW5kIGZyYW1l
KiB3aXRoIGZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIFJlcGxhY2Ug
KkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpj
bGVhcik6IE5vIG5lZWQgdG8gY2FsbCBDR0ltYWdlUmVsZWFzZSgpLiBKdXN0IGFzc2lnbgorICAg
ICAgICBtX2ltYWdlIHRvIG51bGxwdHIgYW5kIGl0IHdpbGwgY2FsbGVkIGZyb20gdGhlIFJldGFp
blB0ciBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBS
ZXBsYWNlIENHSW1hZ2VSZWYgd2l0aCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4uIFJlcGxhY2UKKyAg
ICAgICAgKkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICBVc2Ug
bV9jZ0ltYWdlLmdldCgpIGluc3RlYWQgb2YgbV9jZ0ltYWdlIHdoZW4gY2FsbGluZyBDRyBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgR2V0IHRoZSByYXcgQ0dJbWFnZVJlZiBmcm9tIHRoZSBOYXRpdmVJbWFnZVB0ciB3aGVu
IGNhbGxpbmcgdGhlIENHIGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUg
ZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJpYWJsZQor
ICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVycy4KKyAg
ICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAg
IExlYWsgdGhlIHJhdyBDR0ltYWdlUmVmIGZyb20gdGhlIE5hdGl2ZUltYWdlUHRyIHNpbmNlIENH
UGF0dGVybkNyZWF0ZSB3aWxsCisgICAgICAgIHJlbGVhc2UgaXQgdGhyb3VnaCB0aGUgY2FsbGJh
Y2tzLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
OgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRy
IGFuZCB1c2UgY29uc3RhbnQgcmVmZXJlbmNlLiAKKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAg
ICAgICAgQ2FsbCBhIGZ1bmN0aW9uIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAgICAKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Okljb246Okljb24pOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckltYWdl
KToKKyAgICAgICAgVXNlIHNtYXJ0IHBvaW50ZXJzIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0
ZWFkIG9mIHJhdyBwb2ludGVycyBDR0ltYWdlUmVmLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKTogQ29sbGVjdCB0aGUgbmF0aXZlIGltYWdlcwor
ICAgICAgICBpbiBhIHZlY3RvciBmb3Igc21hcnQgcG9pbnRlcnMuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOiBDYWxsIHRoZSBm
dW5jdGlvbgorICAgICAgICB3aXRoIGl0cyBuZXcgbmFtZSBhbmQgcmVjZWl2ZSB0aGUgcmV0dXJu
IHZhbHVlIGluIGEgc21hcnQgcG9pbnRlciBsb2NhbAorICAgICAgICB2YXJpYWJsZS4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6
ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRp
dmVJbWFnZVB0ci4KKyAgICAgICAgCiAyMDE2LTAzLTE4ICBaaHVvIExpICA8emFjaGxpQGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgQXV0b0ZpbGwgYnV0dG9uIGluIGlucHV0IGZpZWxkcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1M2ZlODFhMTE3MWNiNTdkNDU2MjBhN2IzMjllYzI4NGU1NjNiMmU4Li42
NGZlNjkzNTc1NDY4MWMyNGRkOGI3NTkyOTM2MzRiZWM5ZDkwZjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTYtMDMtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLGNvbT4KKworICAgICAgICBDaGFuZ2UgTmF0aXZlSW1hZ2VQdHIgZm9yIENHIHRvIGJl
IFJldGFpblB0cjxDR0ltYWdlUmVmPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1NDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIHRvIGJlIGEgc21hcnQgcG9pbnRl
ciBpbnN0ZWFkIG9mIHJhdyBwb2ludGVyIGZvciBDRy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcDoKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5
R2V0Q0dJbWFnZUZvclVSTCk6IFJldHVybiB0aGUgbGVha2VkIHRoZSByYXcgcG9pbnRlciBmcm9t
CisgICAgICAgIHRoZSByZXR1cm5lZCBzbWFydCBwb2ludGVyIHNpbmNlIHRoZSBjYWxsZXIgaXMg
cmVzcG9uc2libGUgb2YgcmVsZWFzaW5nIGl0LgorCisgICAgICAgIChXS0ljb25EYXRhYmFzZVRy
eUNvcHlDR0ltYWdlQXJyYXlGb3JVUkwpOiBVc2UgbnVsbHB0ci4KKyAgICAgICAgCisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
c0FsbW9zdFNvbGlkQ29sb3IpOiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpIG5vdyByZXR1
cm5zIGEKKyAgICAgICAgc21hcnQgcG9pbnRlci4KKwogMjAxNi0wMy0xOCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEdpdmUgTlNVUkxTZXNz
aW9uQ29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhYm91dCBwYXJlbnQgcHJvY2VzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCBhYjlmM2Y4OTc5YzM5NmMxODFlOTkxNWYzNjdi
MjVkY2YzN2IwMjkxLi4yY2ZlZTIyM2FhYTQ5ZGExYWIwYzc0NDk2NDRkYTM3N2ZhMGFiMDUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZv
aWQpZ2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6
KE5TQXJyYXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlm
IChJbWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAg
ICAgICpjZ0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGlt
YWdlLT5nZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gKENHSW1hZ2VS
ZWYpQ0ZBdXRvcmVsZWFzZShpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpLmxlYWtSZWYoKSk7CiAgICAg
fQogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiByZWN0QXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCmluZGV4IDFlNmZjY2Q4ZWI0Njk5YzA2YTk5YzQyMzZiMTkxOTUxZTg1ZGMw
MmYuLjcxMzE0YmMyNjc0NTI4ZmRkMjE1NjJlODNiMzJjMTYxNmVhZjRmNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIGJvb2wg
SFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNBdmFpbGFibGVWaWRlb0Zy
YW1lKCk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1lbnQ6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRl
eCBhZDk0OGY5NDRhMzA4MTZhYTU3YjNjOGVlYTYwMjQ4ODEyNDU2NTE1Li5iNGQ3ZjFlMTcwZjFm
NzNlY2E0ODY1NjQ2MDdjZDU3ZWYxZjRmZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCBieSBjYW52
YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIFBhc3NO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAgLy8gVXNlZCBieSBXZWJH
TCB0byBkbyBHUFUtR1BVIHRleHR1cmVzIGNvcHkgaWYgcG9zc2libGUuCiAgICAgLy8gU2VlIG1v
cmUgZGV0YWlscyBhdCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2JmNjgwNGZjZjhhZmE1Y2NlYzAxOTQzMDliZWM1
OTc0NzczZTIyNy4uZDY4Zjk4NmNhYTdiMzg4YTUyOWYzYjgzOTBhMGU2MzczZTZhYWJkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCkBAIC0xNjI1LDcgKzE2MjUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvLCBjb25zdCBGbG9hdFJl
YwogICAgIGNoZWNrT3JpZ2luKHZpZGVvKTsKIAogI2lmIFVTRShDRykgfHwgKEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShHU1RSRUFNRVJfR0wpICYmIFVTRShDQUlSTykpCi0g
ICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkpIHsKKyAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZShp
bWFnZSwgRmxvYXRTaXplKHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgp
KSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0
UmVjdCkpCiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCA5OTk0NjVlYTM5MDY5N2NiZTAw
ZmU2ZmE4ODM4YzEzOGU1NDQ3YTE3Li44MTQyMDEzZGM2MjgxNzg3Y2EyYzBlMDY4NGFhN2ZlMTMw
M2M0OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
QEAgLTIwNCwxNiArMjA0LDEzIEBAIHVuc2lnbmVkIE1lbW9yeUNhY2hlOjpsaXZlQ2FwYWNpdHko
KSBjb25zdAogICAgIHJldHVybiBtX2NhcGFjaXR5IC0gZGVhZENhcGFjaXR5KCk7CiB9CiAKLSNp
ZiBVU0UoQ0cpCi0vLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9uY2Ugd2UgZWl0aGVyIG1h
a2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIG9uIGFsbCBwbGF0Zm9ybXMgb3IKLS8v
IHJlbW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VU
b0NhY2hlKCkgc28gYXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KIHN0
YXRpYyBDYWNoZWRJbWFnZUNsaWVudCYgZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPENhY2hlZEltYWdlQ2xpZW50PiBjbGllbnQ7CiAgICAgcmV0
dXJuIGNsaWVudDsKIH0KIAotYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2
ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JD
YWNoZVBhcnRpdGlvbikKK2Jvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKQogewogICAgIEFTU0VSVChpbWFnZSk7CiAgICAgU2Vzc2lvbklE
IHNlc3Npb25JRCA9IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwpAQCAtMjI1LDggKzIy
Miw2IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBp
bWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fj
aGVkSW1hZ2U+IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJs
LCBiaXRtYXBJbWFnZS5nZXQoKSwgQ2FjaGVkSW1hZ2U6Ok1hbnVhbGx5Q2FjaGVkLCBzZXNzaW9u
SUQpOwogCi0gICAgLy8gQWN0dWFsIHJlbGVhc2Ugb2YgdGhlIENHSW1hZ2VSZWYgaXMgZG9uZSBp
biBCaXRtYXBJbWFnZS4KLSAgICBDRlJldGFpbihpbWFnZSk7CiAgICAgY2FjaGVkSW1hZ2UtPmFk
ZENsaWVudCgmZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0
RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwogI2lmIEVOQUJMRShDQUNI
RV9QQVJUSVRJT05JTkcpCkBAIC0yNjQsNyArMjU5LDYgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVt
b3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9y
Q2EKICAgICAvLyByZXNvdXJjZSBtYXkgYmUgZGVsZXRlZCBhZnRlciB0aGlzIGNhbGwuCiAgICAg
ZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkucmVtb3ZlQ2xpZW50KCZkdW1teUNhY2hl
ZEltYWdlQ2xpZW50KCkpOwogfQotI2VuZGlmCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lTGl2
ZVJlc291cmNlcyhib29sIHNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExpdmVSZXNvdXJj
ZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGM4
OGQyZGJkNGU2YjFkMjc4MGRkYTA0ZmNjYWY5YjgyM2E0NjE3YTAuLmM0NWI0NmZkMTgwMDU1MTcz
YTZjYjA1Yjg0ODc2NzZiM2JlYzg4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCkBAIC0xNTUsMTIgKzE1NSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlPcmlnaW5TZXQmIG9yaWdpbnMp
OwogICAgIFdFQkNPUkVfRVhQT1JUIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3Jp
Z2luc1dpdGhDYWNoZShTZXNzaW9uSUQpIGNvbnN0OwogCi0jaWYgVVNFKENHKQotICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFrZSBOYXRpdmVJbWFnZVB0
ciBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotICAgIC8vIHJlbW92ZSB0aGUg
dXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28g
YXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KLSAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBhZGRJbWFnZVRvQ2FjaGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24pOwotI2VuZGlmCiAKICAgICAvLyBwcnVuZURlYWQqKCkgLSBG
bHVzaCBkZWNvZGVkIGFuZCBlbmNvZGVkIGRhdGEgZnJvbSByZXNvdXJjZXMgbm90IHJlZmVyZW5j
ZWQgYnkgV2ViIHBhZ2VzLgogICAgIC8vIHBydW5lTGl2ZSooKSAtIEZsdXNoIGRlY29kZWQgZGF0
YSBmcm9tIHJlc291cmNlcyBzdGlsbCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IGRjY2E4OGU1YjcwN2Qx
YTcwMGJmNDZlZjYzMDA0N2EzM2NmODhiOWYuLjZkYTI0NGU1ZDNhMWU2NGFiM2ExODBkOTEzODAy
NTBiNjQ5MGEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIEltYWdlKiBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3Vz
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvCiAgICAgcmV0
dXJuIGljb25SZWNvcmQtPmltYWdlKHNpemUpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSWNv
bkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQorTmF0aXZlSW1hZ2VQdHIgSWNv
bkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIEltYWdlKiBpY29u
ID0gc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChwYWdlVVJMT3JpZ2luYWwsIHNpemUpOwogICAg
IGlmICghaWNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKaW5k
ZXggNTMwYTNhMzA4OTAxNGEzZWIxYmUwMmQzMjQ4MjljYWMyNmQ4NmQzMi4uZGI0M2VjMmNiMzEx
OWU1NjMwMDg3NDRiYWJjMDU5MjRkZTYxYzJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBj
b25zdCBTdHJpbmcmIHBhZ2VVUkwpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW1h
Z2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6
ZSYpIG92ZXJyaWRlOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUlj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXpl
Jikgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpIG92
ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeW5jaHJvbm91c0ljb25VUkxGb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wgc3luY2hyb25vdXNJY29u
RGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVS
TChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCmluZGV4IDAyNTQ2NTMwNDE2OTE5
NzIyMmU3N2RmMDZlNjZmZjY2M2U3ODA4YWEuLjU0NGNiYWNiNjk4YzY4YjBkODY4MWMyOGJkNjE4
Y2U3MjhjMWFmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25E
YXRhYmFzZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJh
c2VCYXNlLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN5
bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIEljb25Mb2FkRGVjaXNpb24gc3luY2hyb25vdXNMb2FkRGVj
aXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIERvY3VtZW50TG9hZGVyKikgeyByZXR1cm4g
SWNvbkxvYWRObzsgfQogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VV
UkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAg
ICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAg
ICAvLyBBc3luY2hyb25vdXMgY2FsbHMgd2Ugc2hvdWxkIHVzZSB0byByZXBsYWNlIHRoZSBhYm92
ZSB3aGVuIHN1cHBvcnRlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNN
b2RlKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBmYWYwZjg2OTYyYzNmYjY1Nzc3NDViZmFmNzVi
NGM4NGQ4MGNjMDYwLi40YTVjNjFhNWQyN2JhODU1NDNjMDA2NDVkZjhlYTIwMzM1MGE5ZTFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIoZG91YmxlIGRl
bGF5KQogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIAotYm9vbCBC
aXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitib29sIEJpdG1hcElt
YWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChpbmRl
eCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNCw3ICsxMDQs
NyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKICAg
ICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7CisgICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0
eU9yaWdpbigpIGNvbnN0CkBAIC0xODQsOSArMTg0LDkgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2Fj
aGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwg
SW0KICAgICAgICAgbV9mcmFtZXMuZ3JvdyhudW1GcmFtZXMpOwogCiAgICAgaWYgKGZyYW1lQ2Fj
aGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpIHsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhd
Lm1fZnJhbWUgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5n
TGV2ZWwpOworICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKICAgICAgICAgbV9m
cmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAg
ICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICAg
ICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAg
ICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAgICAgfQogCkBAIC0yMDQsNyArMjA0LDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwgJiYgZnJh
bWVTaXplICE9IG1fc2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7
CiAKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsKKyAgICBpZiAobV9mcmFtZXNb
aW5kZXhdLm1faW1hZ2UpIHsKICAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2FzdDxpbnQ+
KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwogICAgICAgICBtX2RlY29kZWRTaXplICs9
IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxseS1kZWNvZGVkIGZyYW1lIHdpbGwgc3Vi
c3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1c2VkCkBAIC0zNzksMTQgKzM3OSwxNCBA
QCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1h
Z2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0g
Q2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICAg
ICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUgJiYgIW1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlKQogICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRh
dGFPbmx5ICYmICFtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpKQogICAgICAgICBjYWNo
ZUZyYW1lKGluZGV4LCAwLCBmcmFtZUNhY2hpbmcpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50KQorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1h
Z2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2Nh
bGVIaW50KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMzk1LDcgKzM5NSw3IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhCiAK
ICAgICAvLyBXZSBtYXkgaGF2ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBs
aW5nIGxldmVsLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0
aCBhIGxvd2VyIGxldmVsLgotICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2Zy
YW1lc1tpbmRleF0ubV9mcmFtZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhd
Lm1fc3Vic2FtcGxpbmdMZXZlbCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAm
JiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNb
aW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMg
YWxyZWFkeSBjYWNoZWQsIGJ1dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJn
ZXIgdmVyc2lvbi4KICAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1f
ZnJhbWVCeXRlczsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOwpAQCAtNDA2
LDEwICs0MDYsMTAgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EKICAgICB9CiAKICAgICAvLyBJ
ZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgotICAgIGlmIChpbmRleCA+
PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChp
bmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAg
ICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5k
RnJhbWUpOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lOworICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVJ
c0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCkBAIC00MjgsOSArNDI4LDkgQEAgZmxvYXQg
Qml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKICAgICByZXR1
cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorTmF0aXZlSW1hZ2VQdHIg
Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKLSAgICByZXR1cm4g
ZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5k
ZXgoY3VycmVudEZyYW1lKCkpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhh
QXRJbmRleChzaXplX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaAppbmRleCA3NDkzYzZhNGJmYjg2M2Q5NzYzN2M0OWM0NjRjYzM3YWU3
OGUwYTA0Li4yNDIzMmZlMDJkNzA5YzQ3Njk3ODIxMzc2NjZjZjA4MGZkY2E5MmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTQ3LDE2
ICs0Nyw2IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNl
IFdURiB7Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1l
RGF0YT4gOiBwdWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZy
YW1lRGF0YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFRpbWVyOwogCkBAIC02NSwxNiArNTUsMTUgQEAgY2xhc3MgVGlt
ZXI7CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IAogc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhbWVEYXRh
KTsKIHB1YmxpYzoKICAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fZnJhbWUoMCkKKyAgICAg
ICAgOiBtX2ltYWdlKG51bGxwdHIpCiAgICAgICAgICwgbV9vcmllbnRhdGlvbihEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbikKICAgICAgICAgLCBtX3N1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAgICAg
LCBtX2R1cmF0aW9uKDApCiAgICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCiAgICAgICAg
ICwgbV9pc0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkgCisgICAg
ICAgICwgbV9oYXNBbHBoYSh0cnVlKQogICAgICAgICAsIG1fZnJhbWVCeXRlcygwKQogICAgIHsK
ICAgICB9CkBAIC04OCw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIg
dGhlcmUgd2FzIGNhY2hlZCBpbWFnZSBkYXRhIHRvIGNsZWFyLgogICAgIGJvb2wgY2xlYXIoYm9v
bCBjbGVhck1ldGFkYXRhKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG1fZnJhbWU7CisgICAgTmF0
aXZlSW1hZ2VQdHIgbV9pbWFnZTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247
CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWw7CiAgICAgZmxvYXQgbV9k
dXJhdGlvbjsKQEAgLTEwOCwxMSArOTcsMTEgQEAgY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBw
dWJsaWMgSW1hZ2UgewogICAgIGZyaWVuZCBjbGFzcyBHcmFkaWVudEltYWdlOwogICAgIGZyaWVu
ZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCaXRtYXBJ
bWFnZT4gY3JlYXRlKFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZl
ciogb2JzZXJ2ZXIgPSAwKQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcEltYWdl
KG5hdGl2ZUltYWdlLCBvYnNlcnZlcikpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPEJpdG1hcElt
YWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAwKQorICAgIHN0YXRpYyBSZWY8
Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShvYnNlcnZlcikp
OwogICAgIH0KQEAgLTE1NCw4ICsxNDMsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShD
RykKLSAgICBXRUJDT1JFX0VYUE9SVCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSBvdmVycmlk
ZTsKLSAgICBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXpl
Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGdl
dENHSW1hZ2VSZWYoKSBvdmVycmlkZTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZ2V0Rmly
c3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApAQCAt
MTcyLDcgKzE2MSw3IEBAIHB1YmxpYzoKICAgICBFdmFzX09iamVjdCogZ2V0RXZhc09iamVjdChF
dmFzKikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsgfQogCiAgICAgYm9vbCBjdXJyZW50RnJhbWVL
bm93blRvQmVPcGFxdWUoKSBvdmVycmlkZTsKQEAgLTE5OSw4ICsxODgsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICBDZXJ0YWluICAgICAvLyBUaGUgcmVwZXRpdGlvbiBjb3VudCBpcyBrbm93biB0byBi
ZSBjb3JyZWN0LgogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShQYXNz
TmF0aXZlSW1hZ2VQdHIsIEltYWdlT2JzZXJ2ZXIqID0gMCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSAwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7
CisgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRy
KTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSBvdmVycmlkZTsKQEAgLTIxNCwxMCAr
MjAzLDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBmcmFtZUNvdW50KCk7CiAKLSAgICBQ
YXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9u
U2NhbGVIaW50ID0gMSk7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1l
QXRJbmRleChzaXplX3QpOworICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7CisgICAgTmF0aXZlSW1hZ2VQ
dHIgY29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAotICAgIGJvb2wgaGF2
ZUZyYW1lQXRJbmRleChzaXplX3QpOworICAgIGJvb2wgaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCk7CiAKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBm
bG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiYWJjNGM4NWNjMmRm
NzQ5NThmYTFjOTEwZTU2YWFjYjg3MTkwY2YyLi5jNTI0YmExOWQ1ZGRhNDA1YzYwYzE0NzgyMTYy
NzljMGM4NTk2NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzAyLDcgKzMwMiw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9
CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAppbmRleCBlMzZiYTNhYTU2ZDU4YzIwNmE5ODNmZjViYTliZmE3YjEzNjUxMTgyLi5kYmJi
Y2Y1OGMzN2I5YTZiMTY0ZDZmMTM1MWNkNmUxNWViNDFkODUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTEyNDUs
NyArMTI0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgSW1hZ2VTb3VyY2UqIG1fZGVjb2RlcjsKICAg
ICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0Uo
Q0cpCi0gICAgICAgIENHSW1hZ2VSZWYgbV9jZ0ltYWdlOworICAgICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gbV9jZ0ltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNv
ZGVkSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggZDk1ZTdkZWI4MTBmYzI0
ZjdmNjFiMWIyM2E0YjlhZWYzZjNjMTdiNy4uNTAwNDU3M2Y0NjQ3ZGY5OGFjNTQ1ZmQxNzMwMDM0
NWE0MDFhMDE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6
IE1ha2UgdGhpcyB3b3JrIGZvciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JN
KElPUyktZ3VhcmQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8SWNvbj4g
Y3JlYXRlSWNvbkZvckltYWdlKE5hdGl2ZUltYWdlUHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02OCw3ICs2OCw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCi0gICAgSWNvbihDR0ltYWdlUmVmKTsK
KyAgICBJY29uKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYpOwogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgSWNvbihOU0lt
YWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA0ZWQ2
ZTM1ZDk5YWZhYWI1YjhiZGVjNmZkN2ExMzIwZTIwZDA0NmY1Li4wMzg5MjBkNzE5ZTAyNzk4ZWVk
YTU5ZTVjMzk4ZGNhMzViNjI4NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKQEAgLTEzNSwyMyArMTM1LDIzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1
bGUgeyBTdHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAot
ICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1hZ2VPcmll
bnRhdGlvbigpOyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRz
LgogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5TSW1hZ2UoKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOU0ltYWdlKiBnZXROU0ltYWdlKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIENG
RGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCiAKICNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VS
ZWYoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFn
ZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2
aXJ0dWFsIFJldGFpblB0cjxDR0ltYWdlUmVmPiBnZXRDR0ltYWdlUmVmKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIHZpcnR1YWwgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGdldEZpcnN0Q0dJbWFn
ZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1
YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTYwLDExICsxNjAsMTEgQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0gICAgdmlydHVhbCBHZGtQaXhi
dWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEdka1BpeGJ1Ziog
Z2V0R2RrUGl4YnVmKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShFRkwpCi0gICAgdmlydHVhbCBFdmFzX09iamVjdCogZ2V0RXZhc09iamVjdChFdmFzKikgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyop
IHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc0ZWYwNTNhMzMzZmY1ZmM1Nzhl
ODE4MDBjYzZmYzk3NTVlZmJhYjguLmFlMzFjOTgzNTIxZDUwMDgyMjVjMWZjMzQyOWMyYzQwYTAz
N2U0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKQEAgLTE0OCwxOSArMTQ4LDE5IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVD
b3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3Vu
dCgpIDogMDsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQorTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNv
ZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZl
ci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNh
biBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KICAgICAvLyBl
bXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KICAgICBpZiAoc2l6ZSgpLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8g
UmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMgYSBuYXRpdmUgaW1hZ2UuICBGb3Igc29tZSBw
b3J0cywgdGhlIGRhdGEKICAgICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwg
YW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyByZWZjb3VudC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGFjZGQxY2U0Y2UzMDBkZTgx
YzllMDYyZWVlNzYwN2JmNDcyYTcwYWYuLmMxMWY3YmU0ODI5ZTRlNmJjNDAxNzg5NjNjMWQ1MWEx
ODY2MGEwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAvLyBkZWNvZGVkIGZyYW1l
cy4KICAgICAvLwogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIGNsZWFyKGZhbHNlLCBu
KSBhbmQgc3Vic2VxdWVudGx5IGNhbGwKLSAgICAvLyBjcmVhdGVGcmFtZUF0SW5kZXgobSkgd2l0
aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0cnVlKS4KKyAgICAvLyBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChtKSB3aXRoIG0gPCBuLCB1bmxlc3MgdGhleSBmaXJzdCBjYWxs
IGNsZWFyKHRydWUpLgogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHN0YXRlZnVsIEltYWdlU291
cmNlcy9kZWNvZGVycyB3aWxsIHdvcmsgcHJvcGVybHkuCiAgICAgLy8KICAgICAvLyBUaGUgfGRh
dGF8IGFuZCB8YWxsRGF0YVJlY2VpdmVkfCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBzdXBwbGllZCBi
eSBjYWxsZXJzCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVycyBz
aG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBp
bmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBQYXNzTmF0
aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IDApOworICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IDApOwogCiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRo
ZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBoYS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA5OWI5ZDVj
YWRlNzNlMGMxZmFkMDlhNzdjZjVmNmRiMjk4YzM3YWE1Li45MDY5NWI0NDU2M2EwOGI0ZDBjYzZk
MzZjNGZmZDgyZDUxY2ExZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC04MzcsNyArODM3LDcgQEAgYm9vbCBNZWRpYVBsYXll
cjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LAogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwg
Zm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLVBhc3NOYXRpdmVJ
bWFnZVB0ciBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitOYXRpdmVJ
bWFnZVB0ciBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNWVhNTU4
NzExMDU5MzdlZWU0MDYzZTcyNTkyYTFhZTU1NzE1NDVjYi4uYzJlMGNmN2I4MTMwODFkMTUzMzdk
MGE5MmU2Y2EzMTdkMGFlMDgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCkBAIC00MjMsNyArNDIzLDcgQEAgcHVibGljOgogICAgIC8vIGh0
dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWUvdHJ1bmsvc3JjL2dwdS9jb21tYW5k
X2J1ZmZlci9zZXJ2aWNlL2dsZXMyX2NtZF9jb3B5X3RleHR1cmVfY2hyb21pdW0uY2MgdmlhIHNo
YWRlcnMuCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAotICAg
IFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAgdXNpbmcgTWVk
aWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOwogICAgIE5ldHdvcmtTdGF0ZSBuZXR3b3JrU3Rh
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4NTZlN2RkYzg1OTY4NjQ3MzYxOGRhMmExNGQ2
Yzc5MC4uZDkxOWY1NDMzN2E0NTdjMTBlYzY4YmE1YTIwZWI3ZGUzYjhmZWM3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25zdCBGbG9hdFJlY3Qm
IHIpIHsgcGFpbnQoYywgcik7IH0KICAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCwgR0Mz
RGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIGJvb2wsIGJvb2wp
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRy
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oCmluZGV4IGRmOTQxYTU2NmE5ZTQ2OTI3NzI3YmExZWM2ODQ4ZjIxNjgwM2E0NWIuLjAz
NDY2NjViMzZkYmU1NjYxYTA5Y2U3MWM0ZWNiNGEwYzFlOGUyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAtMjksNiArMjks
NyBAQAogI2RlZmluZSBOYXRpdmVJbWFnZVB0cl9oCiAKICNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKICNl
bGlmIFVTRShDQUlSTykKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAtMzgsMjEgKzM5LDE0
IEBAIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gRklYTUU6IE5hdGl2ZUltYWdlUHRyIGFuZCBQYXNzTmF0aXZlSW1hZ2VQdHIg
c2hvdWxkIGJlIHNtYXJ0Ci0vLyBwb2ludGVycyAoc2VlIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpKS4KICNpZiBVU0UoQ0cpCi10eXBlZGVmIENHSW1hZ2VSZWYgTmF0aXZl
SW1hZ2VQdHI7Cit0eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsK
ICNlbGlmIFVTRShDQUlSTykKIHR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZl
SW1hZ2VQdHI7Ci10eXBlZGVmIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBQYXNzTmF0aXZl
SW1hZ2VQdHI7CiAjZWxpZiBVU0UoV0lOR0RJKQogdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFw
PiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogCi0jaWYgIVVTRShDQUlSTykKLXR5cGVkZWYgTmF0
aXZlSW1hZ2VQdHIgUGFzc05hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0KIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZjdmYjFhYzQ2OGIwNjgxMTBlYmEyMzJmMmJjNmZmMDYy
NmVmYmEyMC4uZDZkZTc2MmMxZmUyYmY4NDZhYWFlMjQ1M2M2YzU1YjBiYWRjYTlkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVMYXN0SW1hZ2UoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUo
KTsKICAgICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYpOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZSgpOwogCiAgICAgdm9pZCBjcmVhdGVPcGVuR0xWaWRlb091dHB1dCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggMTU0MzdkZGQ4ZWQ2ZjNkMGEyYmRiZTU1ZThmMzFkZmE3
YzQ2Y2RkZi4uZWM2ZjYwMTdmMzY0ZWY4NjlkZWY1MmI3N2JjYmRmMmQ2MGU4NzYzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKHZpZGVvVGV4dHVyZS5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0
cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwg
dHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpCitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsK
ICAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyMzBhOGY2
YjcyMWI1MTVhMzFlNTIwMjZlZmIwZGVhNGQ0YzAwMDFhLi45NDJmMTVlYjc3NzdiNzNjZTRhMzE5
NzdiNWU3NTIxY2Q4NjIzYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTEwMDgsMTYgKzEwMDgsMTUg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1h
Z2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewotICAgICAgICBDR0ltYWdlUmVmIG5ld0lt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGF1dG8g
bmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAg
aWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBGSVhNRTog
cHJvYmFibHkgZG9uJ3QgbmVlZCBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSBhdCBhbGwgbm93
LgotICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgJiYgbV91bmNvcnJlY3Rl
ZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0gbmV3SW1hZ2UpCisgICAgICAgIGlmIChtX3VuY29ycmVj
dGVkQ29udGVudHNJbWFnZSA9PSBuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCi0gICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7Ci0gICAg
ICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICAgICAgbV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UgPSBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gV1RGTW92ZShuZXdJ
bWFnZSk7CiAKICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJG
b3JJbWFnZTsKICAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwCmluZGV4IGNkNTdlZTQ4NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAyODIuLjk5MzJk
YmNiNWRlMTU2YzcyZWE2ZWE5MTIxOWNiODU1MzIwMzAyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoY29uc3Qg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9zaXplKGNhaXJvU3VyZmFjZVNp
emUobmF0aXZlSW1hZ2UuZ2V0KCkpKQogICAgICwgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgw
KQpAQCAtNTgsNyArNTgsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogewogICAgIG1fZnJh
bWVzLmdyb3coMSk7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQobmF0aXZlSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci0g
ICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IG5hdGl2ZUltYWdlOworICAgIG1fZnJhbWVzWzBdLm1f
aW1hZ2UgPSBuYXRpdmVJbWFnZTsKICAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRy
dWU7CiAKICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0LCBjb25zdCBGbG8KIAogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKLSAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsK
KyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgo
bV9jdXJyZW50RnJhbWUpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkg
d2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIApAQCAtMTM1LDcg
KzEzNSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYg
KGZyYW1lQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJl
bnRGcmFtZSk7CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24n
dCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTgsOCArMTU4LDgg
QEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBpZiAoY2xl
YXJNZXRhZGF0YSkKICAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKIAotICAgIGlmICht
X2ZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWUgPSBudWxscHRyOworICAgIGlmIChtX2ltYWdlKSB7
CisgICAgICAgIG1faW1hZ2UgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAppbmRl
eCBjYzcwNDYxNDdhZTgxZjFmYWRhYTZkODQxNjI0OTgwYzZmZGZjYmYxLi44YzQxODZkNzFlNTNh
MTkwN2U5MmQ3M2EyYjAxNjQ3ZmZkNjZiMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENh
aXJvLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdl
RXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAg
ICAgIGRlY29kZXIuc2V0RGF0YShtX2ltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAo
IWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
MCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
ZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
ZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0
LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxw
aGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBwaXhlbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAppbmRleCBmMDc5MjBmMGQyMzI0NjJjOGZiNDFhMDMyMmQ4MjJhYzlkNWVkMzA3Li5kNDI2
MDg4OWYzZTMyOWY3ZmExN2ZmZjU4MmYyNjU0ZTg0MjllOTExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAg
IGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJ
bWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcElt
YWdlQ0cuY3BwCmluZGV4IDAxYjdkNjkyY2RiZDdhYjRkMjJiYmMxMzk5YzEwMzI4ZjU3ZTVlNDcu
LmZkNjM2ZTEyMzdhMDQzYzFjZDY5Y2MzOTM5ZDcxZDcwNWI2MDdjYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBA
IC01OCwxOCArNTgsMTcgQEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0
YSkKICAgICBtX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb247CiAgICAgbV9z
dWJzYW1wbGluZ0xldmVsID0gMDsKIAotICAgIGlmIChtX2ZyYW1lKSB7CisgICAgaWYgKG1faW1h
Z2UpIHsKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFy
SW1hZ2UobV9mcmFtZSk7CisgICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1faW1h
Z2UuZ2V0KCkpOwogI2VuZGlmCi0gICAgICAgIENHSW1hZ2VSZWxlYXNlKG1fZnJhbWUpOwotICAg
ICAgICBtX2ZyYW1lID0gMDsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUJpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQor
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1h
Z2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAg
LCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKDApCiAgICAgLCBtX2ltYWdlT3JpZW50YXRpb24o
T3JpZ2luVG9wTGVmdCkKQEAgLTg5LDggKzg4LDggQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdl
KENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX3Np
emVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKIHsKLSAgICBD
R0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpOwotICAgIENHRmxvYXQgaGVp
Z2h0ID0gQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKTsKKyAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJ
bWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKKyAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogICAgIG1fZGVjb2RlZFNpemUgPSB3aWR0aCAqIGhlaWdo
dCAqIDQ7CiAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIApAQCAtOTksNyAr
OTgsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBt
X3NpemU7CiAKICAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUg
PSBDR0ltYWdlUmV0YWluKGNnSW1hZ2UpOworICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBpbWFn
ZTsKICAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gdHJ1ZTsKICAgICBtX2ZyYW1lc1swXS5t
X2hhdmVNZXRhZGF0YSA9IHRydWU7CiAKQEAgLTEzNiw3ICsxMzUsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIWhhdmVGcmFtZUF0SW5kZXgoMCkpIHsKKyAgICBpZiAo
IWhhdmVGcmFtZUltYWdlQXRJbmRleCgwKSkgewogICAgICAgICBJbnRTaXplIHNpemUgPSBtX3Nv
dXJjZS5mcmFtZVNpemVBdEluZGV4KDAsIDApOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpICE9
IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ1LDE1
ICsxNDQsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gbnVsbHB0cjsK
KyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKG1fZnJhbWVzLnNpemUo
KSkKLSAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2ZyYW1lOworICAgICAgICBpbWFnZSA9
IG1fZnJhbWVzWzBdLm1faW1hZ2U7CiAKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBjaGVjayBmb3Igc29saWQgY29sb3IgaW4gdGhl
IGltcG9ydGFudCBzcGVjaWFsIGNhc2Ugb2YgYSAxeDEgaW1hZ2UuCi0gICAgaWYgKENHSW1hZ2VH
ZXRXaWR0aChpbWFnZSkgPT0gMSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSAxKSB7Cisg
ICAgaWYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgPT0gMSAmJiBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlLmdldCgpKSA9PSAxKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07
IC8vIFJHQkEKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4
ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAogICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKQEAgLTE2MSw3ICsxNjAs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBHcmFwaGljc0NvbnRleHQoYml0bWFwQ29udGV4dC5nZXQoKSkuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwogICAgICAgICBDR1JlY3QgZGVzdGlu
YXRpb25SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsKLSAgICAgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCwgaW1hZ2UpOworICAg
ICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25S
ZWN0LCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGlmICghcGl4ZWxbM10pCiAgICAgICAgICAgICBt
X3NvbGlkQ29sb3IgPSBDb2xvcigwLCAwLCAwLCAwKTsKICAgICAgICAgZWxzZQpAQCAtMTcxLDE4
ICsxNzAsMTggQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICB9
CiB9CiAKLUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYoKQorUmV0YWluUHRy
PENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKCkKIHsKLSAgICByZXR1cm4g
ZnJhbWVBdEluZGV4KDApOworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKIH0KIAot
Q0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFwSW1hZ2U6OmdldEZpcnN0
Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHNpemVfdCBjb3Vu
dCA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOwotICAgICAg
ICBpZiAoY2dJbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwgQ0dJbWFn
ZUdldEhlaWdodChjZ0ltYWdlKSkgPT0gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBjZ0ltYWdl
OworICAgICAgICBhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlm
IChpbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA9PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdl
OwogICAgIH0KIAogICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IENHSW1hZ2VSZWYgaWYg
d2UgY2FuJ3QgZmluZCB0aGUgcmlnaHQgc2l6ZQpAQCAtMTkzLDEyICsxOTIsMTIgQEAgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogewogICAgIHNp
emVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKICAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgQ0ZNdXRhYmxlQXJyYXlS
ZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShOVUxMLCBjb3VudCwgJmtDRlR5cGVBcnJh
eUNhbGxCYWNrcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0g
ICAgICAgIGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1lQXRJbmRleChpKSkKLSAgICAg
ICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKKyAgICAgICAgaWYg
KGF1dG8gY3VyckZyYW1lID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkpCisgICAgICAgICAgICBDRkFy
cmF5QXBwZW5kVmFsdWUoYXJyYXksIGN1cnJGcmFtZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVy
biBhZG9wdENGKGFycmF5KTsKIH0KQEAgLTIxNCwxMiArMjEzLDEyIEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwogICAgIC8vIE5ldmVy
IHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KICAg
ICBpZiAod2tDR0NvbnRleHRJc1BERkNvbnRleHQoY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCi0g
ICAgICAgIGltYWdlID0gYWRvcHRDRihjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgobV9jdXJyZW50
RnJhbWUpKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleCht
X2N1cnJlbnRGcmFtZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERl
c3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0Nv
bnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgICAgICBmbG9hdCBzdWJz
YW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVkRGVz
dGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVkRGVz
dGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwogCi0gICAgICAg
IGltYWdlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsK
KyAgICAgICAgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3Vic2Ft
cGxpbmdTY2FsZSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFy
bHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCkBAIC0yNDUsMjQgKzI0NCwyNCBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRgogICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICBvcmllbnRhdGlv
biA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAotICAgIGN0eHQu
ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRT
cmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAgY3R4dC5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3Qs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKIAogICAgIGlmIChpbWFnZU9i
c2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAot
UGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQorUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5z
Y2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49
IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXgg
Pj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAo
aW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAg
ICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCk7CiAKICAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5t
X3N1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBDR0ltYWdlUmV0YWluKG1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lKTsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
OwogCi0gICAgcmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAg
cmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcAppbmRleCA2YzAzYTJjZWY4NDYwNjU2MWVhMDdlYjkyOGYxY2Yy
OTVmOWY1ZTM2Li45OWYwOWRiNjdiYTU0MjgyZGM0ZWQ3MDVhZTQxNjM4MDMzNzE5M2YxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcApAQCAtMzMzLDE1ICszMzMsMTUgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rl
ci5jcmVhdGVGcmFtZUF0SW5kZXgoMCkpOwotICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJ
bWFnZS5nZXQoKTsKKyAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KDApOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZTsKICAg
ICB9IGVsc2UKICAgICAgICAgbV9jZ0ltYWdlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKICAgICBpZiAoIW1fY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1fY2dJbWFnZSk7Ci0gICAgbV9p
bWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9jZ0ltYWdlKTsKKyAgICBtX2ltYWdlV2lk
dGggPSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0
ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIGlmICghbV9pbWFnZVdp
ZHRoIHx8ICFtX2ltYWdlSGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0OSw3
ICszNDksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFj
dEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgIC8vIHNvLCByZS1yZW5kZXIg
aXQgaW50byBhbiBSR0IgY29sb3Igc3BhY2UuIFRoZSBpbWFnZSByZS1wYWNraW5nCiAgICAgLy8g
Y29kZSByZXF1aXJlcyBjb2xvciBkYXRhLCBub3QgY29sb3IgdGFibGUgaW5kaWNlcywgZm9yIHRo
ZQogICAgIC8vIGltYWdlIGRhdGEuCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBD
R0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1hZ2UpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9jZ0ltYWdlLmdldCgpKTsKICAgICBDR0Nv
bG9yU3BhY2VNb2RlbCBtb2RlbCA9IENHQ29sb3JTcGFjZUdldE1vZGVsKGNvbG9yU3BhY2UpOwog
ICAgIGlmIChtb2RlbCA9PSBrQ0dDb2xvclNwYWNlTW9kZWxJbmRleGVkKSB7CiAgICAgICAgIFJl
dGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQ7CkBAIC0zNjQsMjIgKzM2NCwyMiBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogCiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9k
ZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250
ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHSW50ZXJw
b2xhdGlvbk5vbmUpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5n
ZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2Nn
SW1hZ2UpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2Uu
Z2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJkIHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBh
bmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRoZSBiaXRtYXAgY29udGV4dC4KICAgICAg
ICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJp
dG1hcENvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2Uu
Z2V0KCk7CiAgICAgfQogCi0gICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0
Qml0c1BlckNvbXBvbmVudChtX2NnSW1hZ2UpOwotICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBD
R0ltYWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZSk7CisgICAgc2l6ZV90IGJpdHNQZXJDb21w
b25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChtX2NnSW1hZ2UuZ2V0KCkpOworICAg
IHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZS5n
ZXQoKSk7CiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50
ICE9IDE2KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJp
dHNQZXJDb21wb25lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzaXplX3QgY29tcG9u
ZW50c1BlclBpeGVsID0gYml0c1BlclBpeGVsIC8gYml0c1BlckNvbXBvbmVudDsKIAotICAgIENH
Qml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlKTsKKyAg
ICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKG1fY2dJbWFnZS5n
ZXQoKSk7CiAgICAgYm9vbCBiaWdFbmRpYW5Tb3VyY2UgPSBmYWxzZTsKICAgICAvLyBUaGVzZSBj
b3VsZCB0ZWNobmljYWxseSBiZSBjb21iaW5lZCBpbnRvIG9uZSBsYXJnZSBzd2l0Y2gKICAgICAv
LyBzdGF0ZW1lbnQsIGJ1dCB3ZSBwcmVmZXIgbm90IHRvIHNvIHRoYXQgd2UgZmFpbCBmYXN0IGlm
IHdlCkBAIC00MjEsNyArNDIxLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRy
YWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKIAogICAgIG1f
YWxwaGFPcCA9IEFscGhhRG9Ob3RoaW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0g
QWxwaGFGb3JtYXROb25lOwotICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1h
Z2UpKSB7CisgICAgc3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZS5nZXQoKSkp
IHsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q6CiAgICAgICAgIGlm
ICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAgIG1fYWxwaGFPcCA9IEFscGhhRG9Vbm11
bHRpcGx5OwpAQCAtNDYxLDE0ICs0NjEsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1h
Z2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAg
ICBpZiAobV9pbWFnZVNvdXJjZUZvcm1hdCA9PSBEYXRhRm9ybWF0TnVtRm9ybWF0cykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3Zp
ZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihtX2NnSW1hZ2UpKSk7CisgICAgbV9w
aXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQ
cm92aWRlcihtX2NnSW1hZ2UuZ2V0KCkpKSk7CiAgICAgaWYgKCFtX3BpeGVsRGF0YSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9pbWFnZVBpeGVsRGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgdm9pZCo+KENGRGF0YUdldEJ5dGVQdHIobV9waXhlbERhdGEuZ2V0KCkpKTsKIAog
ICAgIHVuc2lnbmVkIGludCBzcmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRl
c1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UpOworICAgIHNpemVfdCBi
eXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOwogICAg
IHVuc2lnbmVkIHBhZGRpbmcgPSBieXRlc1BlclJvdyAtIGJpdHNQZXJQaXhlbCAvIDggKiBtX2lt
YWdlV2lkdGg7CiAgICAgaWYgKHBhZGRpbmcpIHsKICAgICAgICAgc3JjVW5wYWNrQWxpZ25tZW50
ID0gcGFkZGluZyArIDE7CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGlt
YWcKICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJh
bnNsYXRlKDAsIC1pbWFnZUhlaWdodCk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShjZ0ltYWdlLmdldCgpLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOworICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhNDQ5NjU0MDQ2YWU4ZjEwYWJhZDE2NDE1ZTY0
NjBhZGJiYmI4ZTg4Li40YzhiN2JkMDMyODU1N2YyMTIwZTAyZGY0ZWU2MmMzZDdhNWJjNGUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJh
bnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlUHRyLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0zMTEsOCArMzExLDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QKICAgICBmbG9hdCBhZGp1c3RlZFggPSBwaGFzZS54KCkgLSBkZXN0UmVj
dC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFu
c2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0aGUgY29udGV4dCBzbyB0aGF0IGRlc3RSZWN0
LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFjdCBpdCBvdXQuCiAgICAgZmxvYXQgYWRqdXN0
ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhhc2UueSgpIC0gZGVzdFJlY3QueSgpICsgdGls
ZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSkg
KyBzY2FsZWRUaWxlSGVpZ2h0KTsKIAotICAgIENHSW1hZ2VSZWYgdGlsZUltYWdlID0gaW1hZ2Uu
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhl
aWdodCh0aWxlSW1hZ2UpOworICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1h
Z2UuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogI2lmIFBM
QVRGT1JNKElPUykKQEAgLTMyNiwxMyArMzI2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29k
ZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hv
dWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkg
dXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2Ug
aXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwot
ICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0
aWxlSW1hZ2UsIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdl
Q3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9
CiAKICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNl
IHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAg
ICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVj
aGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3
ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRX
aWR0aCh0aWxlSW1hZ2UuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgp
ICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNw
YWNpbmcuaGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhl
IGltYWdlcyB0byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVy
LWltYWdlLXJlcGVhdDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0
IHRoZSBsYXN0LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5k
ZXggZDRhMDEyYjZmNTdiZjUzOTMwNjQ3NzdiNmMxMDkzNjZiMjRjNDQ1Yy4uNTAxNWRkMTVhYmZj
ODI1ZGNlYjAzMjBmMTIwMjljYmE1MTIxODI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTM0MCw3ICszNDAs
NyBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBt
X2RlY29kZXIgPyBDR0ltYWdlU291cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLUNH
SW1hZ2VSZWYgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFpbml0aWFsaXplZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2NiwxOCArMzY2LDE1IEBAIENHSW1hZ2VSZWYg
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtCiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIHhibVVUSSA9IENGU1RS
KCJwdWJsaWMueGJpdG1hcC1pbWFnZSIpOwogCiAgICAgaWYgKCFpbWFnZVVUSSkKLSAgICAgICAg
cmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwogCiAgICAgaWYg
KCFDRkVxdWFsKGltYWdlVVRJLCB4Ym1VVEkpKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1Jl
ZigpOworICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgCiAgICAgLy8gSWYgaXQgaXMgYW4geGJt
IGltYWdlLCBtYXNrIG91dCBhbGwgdGhlIHdoaXRlIGFyZWFzIHRvIHJlbmRlciB0aGVtIHRyYW5z
cGFyZW50LgogICAgIGNvbnN0IENHRmxvYXQgbWFza2luZ0NvbG9yc1s2XSA9IHsyNTUsIDI1NSwg
IDI1NSwgMjU1LCAyNTUsIDI1NX07CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1hc2tlZElt
YWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0KCks
IG1hc2tpbmdDb2xvcnMpKTsKLSAgICBpZiAoIW1hc2tlZEltYWdlKQotICAgICAgICByZXR1cm4g
aW1hZ2UubGVha1JlZigpOwotCi0gICAgcmV0dXJuIG1hc2tlZEltYWdlLmxlYWtSZWYoKTsKKyAg
ICByZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdlOwogfQogCiBib29sIElt
YWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGIz
MDMzZmUwNTEwZjc5ZDI1MTJhNDA2YmIxYmRkZjI5NWFmYTVhMzQuLjc4OWI3ZjhjOGQxZjI3YzMx
ZDgyM2U0NDc3ZDRmZjg2OTM2MzU5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNzEsMTAgKzcxLDEyIEBAIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuCiAgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwg
LTEpOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQo
KSk7CiAKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFn
ZSgpLT5nZXRDR0ltYWdlUmVmKCk7CisKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90
aCBkaXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGlu
c3RlYWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3Jh
Y2tzLgogICAgIGlmIChtX3JlcGVhdFggJiYgbV9yZXBlYXRZKQotICAgICAgICByZXR1cm4gd2tD
R1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPmdldENHSW1h
Z2VSZWYoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5n
KTsKKyAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3Jt
KHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0Nv
bnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQg
Zm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMg
b2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQu
CkBAIC04NSwxMCArODcsOCBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1Q
YXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQg
eVN0ZXAgPSBtX3JlcGVhdFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAg
IC8vIFRoZSBwYXR0ZXJuIHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9u
ZSByZW5kZXJpbmcgaW4gcGF0dGVyblJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxh
dGZvcm1JbWFnZSA9IENHSW1hZ2VSZXRhaW4odGlsZUltYWdlKCktPmdldENHSW1hZ2VSZWYoKSk7
Ci0KICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwg
cGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07Ci0gICAgcmV0dXJuIENH
UGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
eFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0
dGVybkNhbGxiYWNrcyk7CisgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdl
LmxlYWtSZWYoKSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NH
UGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMDI0Y2JmZTAw
YjUyMjMzOTMzNTkyMGY5Zjg1MzRjODM2ZGFjY2Y4OC4uZjM1NDg5YzM0OWJhZmU1YjJjMGZlYjNm
MTdjMjMzZDA1MDM2OGY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApA
QCAtNDkxLDcgKzQ5MSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJbWFnZSYgaXRlbSkKIH0KIAogI2lmIFVTRShD
RykgfHwgVVNFKENBSVJPKQotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05h
dGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAg
ICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykK
ICAgICAvLyBGSVhNRTogTmVlZCB0byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCkBAIC01MTYs
NyArNTE2LDcgQEAgRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUlt
YWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGkKIHZvaWQgRHJhd05hdGl2ZUltYWdl
OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQot
ICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2VQdHIuZ2V0KCksIG1faW1hZ2VTaXpl
LCBtX2Rlc3RpbmF0aW9uLCBtX3NyY1JlY3QsIG1fb3AsIG1fYmxlbmRNb2RlLCBtX29yaWVudGF0
aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlUHRyLCBtX2ltYWdlU2l6
ZSwgbV9kZXN0aW5hdGlvbiwgbV9zcmNSZWN0LCBtX29wLCBtX2JsZW5kTW9kZSwgbV9vcmllbnRh
dGlvbik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggNWE4NDk2NGM1NzliMzJmZGMwZWM2ZWYxNDVm
NjQyNjBmMTM1YWZmZi4uNGYxMzUxZWJiMjMwNjUxYzU1ZTEzNjVhNjE2MDRlMzM2NDMxZWY0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC02MzksNyArNjM5LDcgQEAgcHJp
dmF0ZToKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6
IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZl
SW1hZ2U+IGNyZWF0ZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdl
PiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKTsKICAgICB9CkBAIC02NDgsNyArNjQ4LDcg
QEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb247IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2
ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAgIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKaW5kZXggNWU1MmVjOTE5MjNkNDU5ZjA4MjIxOTFmNjY5ZDBjMDBlZWRmMjU4YS4u
ZDQ3NWQ1MGVkNWM5ZTdkYzBmMTI4NGM1MmM5ZTg5OGJjMjg0NTRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUmVj
b3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QKIH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotdm9pZCBSZWNv
cmRlcjo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIFJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRv
d25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGlt
YWdlUHRyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmll
bnRhdGlvbikpKTsKICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggYTVkMmM3MWEyNWViZGJmZTRmM2JhN2ZkYWNk
MWYyZGU1ODg2ZGM1MC4uZWI5OWEzZGRhMDBkMzE3MGNmYzhmMDg2YTQwMjljYmJjZTFjZDNhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC04Niw3ICs4Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJik7CiAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUg
dlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAjaWYgVVNFKENHKSB8fCBVU0Uo
Q0FJUk8pCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24pOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uKTsKICNlbmRpZgogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCBiYTQxNTk3YWExMTAxZGI2Mjkw
MjNkMjczYjIwMGU3ODFkMzNhYWM5Li41OWNjMmM5YmU4YjNmZmUxMTE4NmE2ODVkMmU4Y2Y1OTRj
MWQzOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgp
IHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1l
QXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
bV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9y
IHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0
aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZv
ciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
SWNvbklPUy5tbQppbmRleCAyMTU5MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4NmQyMjQ5YjgxZDlkNzZh
Li41YTU0OTk4NDA1YWFkYzI3NTY0YzdlODM2MDViNTg5NzIxZDRiYTUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAtMzMsNyArMzMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKENHSW1hZ2VSZWYg
aW1hZ2UpCitJY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1f
Y2dJbWFnZShpbWFnZSkKIHsKIH0KQEAgLTQ3LDEyICs0NywxMiBAQCBQYXNzUmVmUHRyPEljb24+
IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFt
ZXMqLykKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpj
cmVhdGVJY29uRm9ySW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2VSZWYpCitQYXNzUmVmUHRyPElj
b24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4m
IGltYWdlKQogewotICAgIGlmICghaW1hZ2VSZWYpCisgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaW1hZ2VSZWYp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaW1hZ2UpKTsKIH0KIAogdm9pZCBJY29u
OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW0KaW5kZXggZmYwNzEzMWE2MWZjZWQwNDU4NmIzNzJkOWJhMjA3OWE5ODczYzM4Yi4uZjkxMmRl
MWRkMGFlYmRjNDhiNTAyZDhkOTRlNWU1OTRjODlmNmVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtOTMsMTEgKzkzLDExIEBA
IENGRGF0YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkKICAgICBpZiAo
IW51bUZyYW1lcykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBWZWN0b3I8Q0dJbWFnZVJlZj4g
aW1hZ2VzOworICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0dJbWFnZVJlZj4+IGltYWdlczsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRnJhbWVzOyArK2kgKSB7Ci0gICAgICAgIENHSW1h
Z2VSZWYgY2dJbWFnZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNnSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKICAgICAgICAgaWYgKGNnSW1h
Z2UpCi0gICAgICAgICAgICBpbWFnZXMuYXBwZW5kKGNnSW1hZ2UpOworICAgICAgICAgICAgaW1h
Z2VzLmFwcGVuZChXVEZNb3ZlKGNnSW1hZ2UpKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBudW1W
YWxpZEZyYW1lcyA9IGltYWdlcy5zaXplKCk7CkBAIC0xMDksNyArMTA5LDcgQEAgQ0ZEYXRhUmVm
IEJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24oKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1WYWxpZEZyYW1lczsgKytpKQotICAg
ICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2Vz
W2ldLCAwKTsKKyAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24u
Z2V0KCksIGltYWdlc1tpXS5nZXQoKSwgMCk7CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5h
bGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA4MzVlY2YzZjRmZWVlYjhhMGRm
YThkMzY5NzMxMjhmM2I4MDdiOTI2Li5kZTBhNzBiZjhhMDZhNGNlZmQ1OWZhZTIzOWM4OTU3MDM0
OTY4Y2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCkBAIC05MCw4ICs5MCw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0
CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFt
ZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRX
aWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7Cisg
ICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkp
OworICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewog
ICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAg
ICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwogICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgp
KSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDI5YTIwMjNkYjYzYTkxNDM0YzM5NDhlYWE1NTIzYmI2
MWZlODEwNzUuLjk3ZWQwOTc5MzVjNTFmYzIwYTg0NWM5NThlMTU2OThkMjAwMGRiODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWly
b1dpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAg
ICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFj
ZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3Vy
ZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCBmYzg3ZjgzNDAzMzE5NTU3M2Y1Njdm
YzA1OGM3YzczZDg1OGExOTdhLi5iMzU0N2Q5NGU4MDhmODc0YWVkOWRhMGYyOTFiZWNlMjBhNjQ2
NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuaApAQCAtOTgsNyArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3duZWQgcG9pbnRlciB0byB0aGUgdW5kZXJseWlu
ZyBuYXRpdmUgaW1hZ2UgZGF0YS4KICAgICAgICAgLy8gKEFjdHVhbCB1c2U6IFRoaXMgcG9pbnRl
ciB3aWxsIGJlIG93bmVkIGJ5IEJpdG1hcEltYWdlIGFuZCBmcmVlZCBpbgogICAgICAgICAvLyBG
cmFtZURhdGE6OmNsZWFyKCkpLgotICAgICAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRp
dmVJbWFnZSgpIGNvbnN0OworICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdl
KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OwogICAgICAgICBjb25z
dCBJbnRSZWN0JiBvcmlnaW5hbEZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxG
cmFtZVJlY3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAppbmRleCAzZmU3
MDQwMjM0MTlkOTc1M2IxMzk5ZDlmNmMwMGI2NzM5NDUxMjk2Li43YjQxMjk1Zjg1NzM1OGZiYmYz
NWMxYjA1MjVlOGQ2Y2MzNTIwZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8u
Y3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc05hdGl2
ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAogICAgICAgICBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KG1f
Ynl0ZXMpKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDQy
ZWE1ZWU1MzQyMWE3N2QwN2UzNGU2ZjgwYjQzM2M2MjA3MzdiOGMuLmMxNWZhZmJkOGVhMWI2MTMy
NDg2NTY1NGQ5NDk0MmRmZWQ0NjUzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcApAQCAtMTgwLDE3ICsxODAsMTcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNv
bnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWkK
IH0KIAogI2lmIFVTRShDQUlSTykKLS8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBp
bWFnZSB0byB0aGUgY2FsbGVyIHNvIFBhc3NOYXRpdmVJbWFnZVB0ciBuZWVkcworLy8gUGFzc2Vz
IG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1h
Z2VQdHIgbmVlZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0eXBlLgotUGFzc05hdGl2ZUlt
YWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFn
ZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogewogICAgIGlmICgh
bV9wYWdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICAvLyBDYWlybyBkb2VzIG5vdCB1c2UgdGhlIGFjY2VsZXJhdGVkIGRyYXdpbmcgZmxhZywgc28g
aXQncyBPSyB0byBtYWtlIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4K
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVk
IHRvIGFsbG9jYXRlIGltYWdlCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA4NzBm
NmM4NWM1ZTY4NGUxNzdjMzBkMTZjMjE2NmEzNDBkY2Q1YTdiLi40OTFkZGZiM2MyMTM5ZWY4ODIx
MDFkMWFmNDViNWFlZjExMGM0ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEFuaW1hdGlvbigp
IG92ZXJyaWRlOwogCiAjaWYgVVNFKENBSVJPKQotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwCmluZGV4IDRlMTYxZTNmMGQ0NGE2YWE2ZWE2YzAzZjVlZDlhYmMxOWViYWVhMWQuLjdl
MTQzZGVkMmQ2NjlhYjNhYzA5YzQ5NmI0ZTRiZWU3ZGM4N2YyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcApAQCAtNDYs
NyArNDYsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIG1faW1hZ2UtPmRyYXdQYXR0
ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96b29tLCBzcmNSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3Qs
IGJsZW5kTW9kZSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5l
cjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VG
b3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKICAgICByZXR1cm4g
bV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggMzU5NzU0
Mjg5ZmMzMDQyMThjZGI4YmYxMjAzYjg3M2MyOWZkNTJkMi4uZDIyNGZjNDYxMmZkOTVhMWFlYTc3
YWZiNDQ3OTc2OTIzNTI3YWNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBi
b29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFNWR0ltYWdlRm9yQ29udGFpbmVyKFNWR0lt
YWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFi
YXNlQ0cuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFi
YXNlQ0cuY3BwCmluZGV4IDBmNmRlN2ExNDZhNjExYTUyYWExZTUzOTAxOWZhNmMxYzQ2NzI1YWUu
LjY3N2ZiODMyZTg5NWYzZGIxZDRhZWVlYzBmNzQyN2NkOTgyMDQyNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAK
QEAgLTM3LDEyICszNywxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIENHSW1hZ2VSZWYg
V0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25E
YXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1NpemUgc2l6ZSkKIHsKICAgICBJbWFnZSog
aW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3Ry
aW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRGaXJzdENHSW1hZ2VS
ZWZPZlNpemUoSW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemUuaGVpZ2h0KSkpIDogMDsKKyAgICByZXR1cm4gaW1hZ2UgPyBpbWFnZS0+Z2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKEludFNpemUoc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRo
KSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCkpKS5sZWFrUmVmKCkgOiBudWxscHRyOwog
fQogCiBDRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTChX
S0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKICAg
ICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJM
KHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRDR0lt
YWdlQXJyYXkoKS5sZWFrUmVmKCkgOiAwOworICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRD
R0ltYWdlQXJyYXkoKS5sZWFrUmVmKCkgOiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNjhlYTIzMzRmZWJj
MDQzOGMzN2IxNDgwZjdlMTlhNGVkMzk3ZjBhMi4uZWJjMWQwOTg3MjVkZjAyOTRmOTJhYTEyNGU4
MjE0ZTE1MmVlNTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTcxOSwyMSArMTcxOSwyMSBAQCB2b2lkIFBsdWdpblZpZXc6
OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0
X3Qgd2luZAogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIGJvb2wgaXNBbG1vc3RTb2xpZENv
bG9yKEJpdG1hcEltYWdlKiBiaXRtYXApCiB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1h
cC0+Z2V0Q0dJbWFnZVJlZigpOwotICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVu
dChpbWFnZSkgPT0gOCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYml0bWFw
LT5nZXRDR0ltYWdlUmVmKCk7CisgICAgQVNTRVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50
KGltYWdlLmdldCgpKSA9PSA4KTsKIAotICAgIENHQml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0lt
YWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENH
SW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgpKTsKICAgICBpZiAoIShpbWFnZUluZm8gJiBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfHwgKGltYWdlSW5mbyAmIGtDR0JpdG1hcEFscGhh
SW5mb01hc2spICE9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHsKICAgICAgICAg
Ly8gRklYTUU6IENvbnNpZGVyIGJlaW5nIGFibGUgdG8gaGFuZGxlIG90aGVyIHBpeGVsIGZvcm1h
dHMuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsKLSAg
ICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZSk7Ci0gICAgc2l6ZV90IGJ5
dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdlKTsKKyAgICBzaXplX3Qgd2lk
dGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBoZWlnaHQgPSBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBD
R0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UuZ2V0KCkpOwogCi0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdl
dERhdGFQcm92aWRlcihpbWFnZSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRl
ciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVy
KGltYWdlLmdldCgpKSkpOwogICAgIGNvbnN0IFVJbnQ4KiBkYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0
cihwcm92aWRlci5nZXQoKSk7CiAKICAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBk
b3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274556</attachid>
            <date>2016-03-20 18:51:20 -0700</date>
            <delta_ts>2016-03-20 19:17:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160320185120.patch</filename>
            <type>text/plain</type>
            <size>87048</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uMTRjMDY4NDhlMDk2NjZkOTYxNGEwNjZjNzNiZWJm
MWE0MGZiNjU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZpbmcgTmF0aXZl
SW1hZ2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBv
ZgorICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrcyB3
YXMgZG9uZSB0byBlbnN1cmUgdGhlIENHCisgICAgICAgIHBvaW50ZXIgaXMgbWFpbnRhaW5lZCBj
b3JyZWN0bHkuIEl0IHdhcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBtb3ZlIGEKKyAgICAgICAgRnJh
bWVEYXRhIHNpbmNlIGNhbGxpbmcgdGhlIGRlc3RydWN0b3Igd2FzIHJlbGVhc2luZyB0aGUgQ0dJ
bWFnZVJlZi4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBQYXNzTmF0aXZlSW1hZ2VQdHIg
aXMgbm90IG5lZWRlZCBhbnltb3JlLiBTbyBhbGwgdGhlCisgICAgICAgIGluc3RhbmNlIG9mIFBh
c3NOYXRpdmVJbWFnZVB0ciB3aWxsIGJlIHJlcGxhY2VkIGJ5IE5hdGl2ZUltYWdlUHRyLgorCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgZ2V0UHJl
dmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6IHRyYW5zZmVyIHRoZSBvd25lcnNoaXAKKyAg
ICAgICAgb2YgdGhlIHJldHVybmVkIHBvaW50ZXIgdG8gQ0ZBdXRvcmVsZWFzZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0TlNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0R2RrUGl4YnVmKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRFdmFzT2JqZWN0KToK
KyAgICAgICAgQ2hhbmdlIGFsbCB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUg
UmV0YWluUHRyPENHSW1hZ2VSZWY+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgIENoYW5nZSBmdW5jdGlvbidzIG5hbWUgYW5kIHJlcGxhY2UgUGFzc05h
dGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUlt
YWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICBNYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQg
cG9pbnRlciBmb3IgQ0cuIEdldCByaWQgb2YgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHNp
bmNlIE5hdGl2ZUltYWdlUHRyIGlzIG5vdyBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3Jt
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2
ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICBTaW5jZSBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSByZXR1cm5zIGEgUmV0YWluUHRyLCBtb3ZlIGl0CisgICAg
ICAgIHRvIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgdG8gcmVtb3ZlIHRoZSByZWZjb3VudCBjaHVy
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgIFJlcGxhY2UgbV9mcmFtZSB3aXRoIG1faW1hZ2UgYW5kIGZyYW1l
KiB3aXRoIGZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIFJlcGxhY2Ug
KkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpj
bGVhcik6IE5vIG5lZWQgdG8gY2FsbCBDR0ltYWdlUmVsZWFzZSgpLiBKdXN0IGFzc2lnbgorICAg
ICAgICBtX2ltYWdlIHRvIG51bGxwdHIgYW5kIGl0IHdpbGwgY2FsbGVkIGZyb20gdGhlIFJldGFp
blB0ciBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBS
ZXBsYWNlIENHSW1hZ2VSZWYgd2l0aCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4uIFJlcGxhY2UKKyAg
ICAgICAgKkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICBVc2Ug
bV9jZ0ltYWdlLmdldCgpIGluc3RlYWQgb2YgbV9jZ0ltYWdlIHdoZW4gY2FsbGluZyBDRyBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgR2V0IHRoZSByYXcgQ0dJbWFnZVJlZiBmcm9tIHRoZSBOYXRpdmVJbWFnZVB0ciB3aGVu
IGNhbGxpbmcgdGhlIENHIGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUg
ZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJpYWJsZQor
ICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVycy4KKyAg
ICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAg
IExlYWsgdGhlIHJhdyBDR0ltYWdlUmVmIGZyb20gdGhlIE5hdGl2ZUltYWdlUHRyIHNpbmNlIENH
UGF0dGVybkNyZWF0ZSB3aWxsCisgICAgICAgIHJlbGVhc2UgaXQgdGhyb3VnaCB0aGUgY2FsbGJh
Y2tzLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
OgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRy
IGFuZCB1c2UgY29uc3RhbnQgcmVmZXJlbmNlLiAKKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAg
ICAgICAgQ2FsbCBhIGZ1bmN0aW9uIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAgICAKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JY29uR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgVXNlIHNtYXJ0
IHBvaW50ZXJzIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycyBD
R0ltYWdlUmVmLgorICAgICAgICBBbmQgY2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyLgorICAg
ICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKTogQ29sbGVj
dCB0aGUgbmF0aXZlIGltYWdlcworICAgICAgICBpbiBhIHZlY3RvciBmb3Igc21hcnQgcG9pbnRl
cnMuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6IENoYW5nZSBQ
YXNzUmVmUHRyIHRvIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAgICAgIHdp
dGggaXRzIG5ldyBuYW1lIGFuZCByZWNlaXZlIHRoZSByZXR1cm4gdmFsdWUgaW4gYSBzbWFydCBw
b2ludGVyIGxvY2FsCisgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rp
b24KKyAgICAgICAgd2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgorICAgICAg
ICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorICAgICAg
ICAKIDIwMTYtMDMtMTggIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVw
ZGF0ZSBBdXRvRmlsbCBidXR0b24gaW4gaW5wdXQgZmllbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDUzZmU4
MWExMTcxY2I1N2Q0NTYyMGE3YjMyOWVjMjg0ZTU2M2IyZTguLjAwNzExMDIyN2ZjNjQwMzU3NDBl
NWY4OWZlZTE0NjcyYThmOTAzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNi0w
My0yMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAg
ICAgIENoYW5nZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcDoKKyAgICAgICAgKFdLSWNvbkRh
dGFiYXNlVHJ5R2V0Q0dJbWFnZUZvclVSTCk6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVRyeUNv
cHlDR0ltYWdlQXJyYXlGb3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aXNBbG1vc3RTb2xpZENvbG9yKToKKworMjAx
Ni0wMy0yMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisg
ICAgICAgIENoYW5nZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1h
Z2VSZWY+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTU0MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2UgTmF0aXZlSW1hZ2VQdHIgdG8gYmUgYSBzbWFydCBwb2ludGVyIGluc3RlYWQgb2YgcmF3
IHBvaW50ZXIgZm9yIENHLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRh
dGFiYXNlQ0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJM
KTogUmV0dXJuIHRoZSBsZWFrZWQgdGhlIHJhdyBwb2ludGVyIGZyb20KKyAgICAgICAgdGhlIHJl
dHVybmVkIHNtYXJ0IHBvaW50ZXIgc2luY2UgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBvZiBy
ZWxlYXNpbmcgaXQuCisKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJh
eUZvclVSTCk6IFVzZSBudWxscHRyLgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xv
cik6IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKCkgbm93IHJldHVybnMgYQorICAgICAgICBz
bWFydCBwb2ludGVyLgorCiAyMDE2LTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR2l2ZSBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9u
IGluZm9ybWF0aW9uIGFib3V0IHBhcmVudCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tCmluZGV4IGFiOWYzZjg5NzljMzk2YzE4MWU5OTE1ZjM2N2IyNWRjZjM3YjAyOTEuLjJj
ZmVlMjIzYWFhNDlkYTFhYjBjNzQ0OTY0NGRhMzc3ZmEwYWIwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL29iamMvRE9NLm1tCkBAIC02MDYsNyArNjA2LDcgQEAgLSAodm9pZClnZXRQcmV2aWV3U25h
cHNob3RJbWFnZTooQ0dJbWFnZVJlZiopY2dJbWFnZSBhbmRSZWN0czooTlNBcnJheSAqKilyZWN0
cwogCiAgICAgaWYgKHRleHRJbmRpY2F0b3IpIHsKICAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9
IHRleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpKQotICAgICAgICAgICAgKmNnSW1hZ2UgPSAo
Q0dJbWFnZVJlZilDRkF1dG9yZWxlYXNlKENHSW1hZ2VSZXRhaW4oaW1hZ2UtPmdldENHSW1hZ2VS
ZWYoKSkpOworICAgICAgICAgICAgKmNnSW1hZ2UgPSAoQ0dJbWFnZVJlZilDRkF1dG9yZWxlYXNl
KGltYWdlLT5nZXRDR0ltYWdlUmVmKCkubGVha1JlZigpKTsKICAgICB9CiAKICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5k
ZXggMWU2ZmNjZDhlYjQ2OTljMDZhOTljNDIzNmIxOTE5NTFlODVkYzAyZi4uNzEzMTRiYzI2NzQ1
MjhmZGQyMTU2MmU4M2IzMmMxNjE2ZWFmNGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gcGxheWVyKCktPmhh
c1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotUGFz
c05hdGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKQorTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpCiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IGFkOTQ4Zjk0NGEzMDgx
NmFhNTdiM2M4ZWVhNjAyNDg4MTI0NTY1MTUuLmI0ZDdmMWUxNzBmMWY3M2VjYTQ4NjU2NDYwN2Nk
NTdlZjFmNGZlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC02
OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIGJ5IGNhbnZhcyB0byBnYWluIHJhdyBw
aXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICAvLyBVc2VkIGJ5IFdlYkdMIHRvIGRvIEdQVS1HUFUg
dGV4dHVyZXMgY29weSBpZiBwb3NzaWJsZS4KICAgICAvLyBTZWUgbW9yZSBkZXRhaWxzIGF0IE1l
ZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBkZWZpbmVkIGlu
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmguCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAppbmRleCA3YmY2ODA0ZmNmOGFmYTVjY2VjMDE5NDMwOWJlYzU5NzQ3NzNlMjI3Li5kNjhm
OTg2Y2FhN2IzODhhNTI5ZjNiODM5MGEwZTYzNzNlNmFhYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAg
LTE2MjUsNyArMTYyNSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1h
Z2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8sIGNvbnN0IEZsb2F0UmVjCiAgICAgY2hlY2tPcmln
aW4odmlkZW8pOwogCiAjaWYgVVNFKENHKSB8fCAoRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykgJiYgVVNFKEdTVFJFQU1FUl9HTCkgJiYgVVNFKENBSVJPKSkKLSAgICBpZiAoUGFzc05hdGl2
ZUltYWdlUHRyIGltYWdlID0gdmlkZW8tPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgewor
ICAgIGlmIChOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkpIHsKICAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUo
dmlkZW8tPnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0LCBzcmNS
ZWN0KTsKICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkKICAgICAgICAg
ICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCmluZGV4IDk5OTQ2NWVhMzkwNjk3Y2JlMDBmZTZmYTg4MzhjMTM4ZTU0
NDdhMTcuLjgxNDIwMTNkYzYyODE3ODdjYTJjMGUwNjg0YWE3ZmUxMzAzYzQ5ODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtMjA0LDE2ICsyMDQs
MTMgQEAgdW5zaWduZWQgTWVtb3J5Q2FjaGU6OmxpdmVDYXBhY2l0eSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fY2FwYWNpdHkgLSBkZWFkQ2FwYWNpdHkoKTsKIH0KIAotI2lmIFVTRShDRykKLS8vIEZJ
WE1FOiBSZW1vdmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFrZSBOYXRpdmVJbWFnZVB0
ciBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotLy8gcmVtb3ZlIHRoZSB1c2Fn
ZSBvZiBDRlJldGFpbigpIGluIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoKSBzbyBhcyB0
byBtYWtlIHRoZSBjb2RlIHBsYXRmb3JtLWluZGVwZW5kZW50Lgogc3RhdGljIENhY2hlZEltYWdl
Q2xpZW50JiBkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Q2FjaGVkSW1hZ2VDbGllbnQ+IGNsaWVudDsKICAgICByZXR1cm4gY2xpZW50OwogfQog
Ci1ib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHIgaW1hZ2Us
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKQor
Ym9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24pCiB7CiAgICAgQVNTRVJUKGltYWdlKTsKICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gU2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CkBAIC0yMjUsOCArMjIyLDYgQEAgYm9vbCBNZW1v
cnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3QKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFnZT4gY2FjaGVk
SW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdl
dCgpLCBDYWNoZWRJbWFnZTo6TWFudWFsbHlDYWNoZWQsIHNlc3Npb25JRCk7CiAKLSAgICAvLyBB
Y3R1YWwgcmVsZWFzZSBvZiB0aGUgQ0dJbWFnZVJlZiBpcyBkb25lIGluIEJpdG1hcEltYWdlLgot
ICAgIENGUmV0YWluKGltYWdlKTsKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCZkdW1teUNh
Y2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRt
YXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykK
QEAgLTI2NCw3ICsyNTksNiBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVJbWFnZUZyb21DYWNo
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYQogICAgIC8vIHJlc291
cmNlIG1heSBiZSBkZWxldGVkIGFmdGVyIHRoaXMgY2FsbC4KICAgICBkb3duY2FzdDxDYWNoZWRJ
bWFnZT4oKnJlc291cmNlKS5yZW1vdmVDbGllbnQoJmR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7
CiB9Ci0jZW5kaWYKIAogdm9pZCBNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2VzKGJvb2wg
c2hvdWxkRGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKaW5kZXggYzg4ZDJkYmQ0ZTZiMWQyNzgw
ZGRhMDRmY2NhZjliODIzYTQ2MTdhMC4uYzQ1YjQ2ZmQxODAwNTUxNzNhNmNiMDViODQ4NzY3NmIz
YmVjODg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAg
LTE1NSwxMiArMTU1LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3Jp
Z2luc1dpdGhDYWNoZShTZWN1cml0eU9yaWdpblNldCYgb3JpZ2lucyk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zV2l0aENhY2hlKFNl
c3Npb25JRCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0cpCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUg
VVNFKENHKSBvbmNlIHdlIGVpdGhlciBtYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQgcG9pbnRl
ciBvbiBhbGwgcGxhdGZvcm1zIG9yCi0gICAgLy8gcmVtb3ZlIHRoZSB1c2FnZSBvZiBDRlJldGFp
bigpIGluIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoKSBzbyBhcyB0byBtYWtlIHRoZSBj
b2RlIHBsYXRmb3JtLWluZGVwZW5kZW50LgotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSW1h
Z2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFkZEltYWdlVG9D
YWNoZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlSW1h
Z2VGcm9tQ2FjaGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRp
dGlvbik7Ci0jZW5kaWYKIAogICAgIC8vIHBydW5lRGVhZCooKSAtIEZsdXNoIGRlY29kZWQgYW5k
IGVuY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBub3QgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMu
CiAgICAgLy8gcHJ1bmVMaXZlKigpIC0gRmx1c2ggZGVjb2RlZCBkYXRhIGZyb20gcmVzb3VyY2Vz
IHN0aWxsIHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggZGNjYTg4ZTViNzA3ZDFhNzAwYmY0NmVmNjMwMDQ3
YTMzY2Y4OGI5Zi4uNmRhMjQ0ZTVkM2ExZTY0YWIzYTE4MGQ5MTM4MDI1MGI2NDkwYTM4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC0zMDAsNyAr
MzAwLDcgQEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY28KICAgICByZXR1cm4gaWNvblJlY29yZC0+
aW1hZ2Uoc2l6ZSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNo
cm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWws
IGNvbnN0IEludFNpemUmIHNpemUpCitOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNo
cm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWws
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0lj
b25Gb3JQYWdlVVJMKHBhZ2VVUkxPcmlnaW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCA1MzBhM2EzMDg5MDE0
YTNlYjFiZTAyZDMyNDgyOWNhYzI2ZDg2ZDMyLi5kYjQzZWMyY2IzMTE5ZTU2MzAwODc0NGJhYmMw
NTkyNGRlNjFjMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJ
Y29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFn
ZVVSTCkgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZSogc3luY2hyb25vdXNJ
Y29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0g
ICAgUGFzc05hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKKyAg
ICBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29u
VVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIEljb25Mb2Fk
RGVjaXNpb24gc3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYs
IERvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDI1NDY1MzA0MTY5MTk3MjIyZTc3ZGYwNmU2NmZm
NjYzZTc4MDhhYS4uNTQ0Y2JhY2I2OThjNjhiMGQ4NjgxYzI4YmQ2MThjZTcyOGMxYWZiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaApAQCAtMTc5
LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3luY2hyb25vdXNJY29uRGF0
YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwo
Y29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSB7IHJldHVybiBJY29uTG9hZE5vOyB9CiAg
ICAgdmlydHVhbCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgUGFzc05h
dGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwg
Y29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFzeW5jaHJvbm91
cyBjYWxscyB3ZSBzaG91bGQgdXNlIHRvIHJlcGxhY2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVk
LgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCmluZGV4IGZhZjBmODY5NjJjM2ZiNjU3Nzc0NWJmYWY3NWI0Yzg0ZDgwY2MwNjAuLjRh
NWM2MWE1ZDI3YmE4NTU0M2MwMDY0NWRmOGVhMjAzMzUwYTllMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTk2LDcgKzk2LDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihkb3VibGUgZGVsYXkpCiAgICAgbV9mcmFt
ZVRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQogCi1ib29sIEJpdG1hcEltYWdlOjpoYXZl
RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgQml0bWFw
SW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBt
X2ZyYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7
CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QK
QEAgLTE4NCw5ICsxODQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgICAgICBtX2Zy
YW1lcy5ncm93KG51bUZyYW1lcyk7CiAKICAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0
YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSA9IG1fc291
cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgICAg
IG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9z
dWJzYW1wbGluZ0xldmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICAgICAgaWYgKG51bUZyYW1l
cyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBpZiAobnVtRnJhbWVz
ID09IDEgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgICAgICBjaGVja0ZvclNv
bGlkQ29sb3IoKTsKICAgICB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsLCBJbQogICAgIGlmICghc3Vic2FtcGxpbmdMZXZlbCAmJiBmcmFtZVNpemUgIT0gbV9zaXpl
KQogICAgICAgICBtX2hhc1VuaWZvcm1GcmFtZVNpemUgPSBmYWxzZTsKIAotICAgIGlmIChtX2Zy
YW1lc1tpbmRleF0ubV9mcmFtZSkgeworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkg
ewogICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhd
Lm1fZnJhbWVCeXRlcyk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gZGVsdGFCeXRlczsKICAg
ICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJzdW1lIHRoZSBwYXJ0aWFs
bHkgZGVjb2RlZCBkYXRhIHVzZWQKQEAgLTM3OSwxNCArMzc5LDE0IEBAIGJvb2wgQml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBm
cmFtZUNhY2hpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpbmRleCA+PSBtX2Zy
YW1lcy5zaXplKCkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5k
RnJhbWUgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICB8fCAoZnJhbWVDYWNo
aW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2Up
CiAgICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJh
bWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAs
IGZyYW1lQ2FjaGluZyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc05hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50
YXRpb25TY2FsZUhpbnQpCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCiB7CiAgICAg
aWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0z
OTUsNyArMzk1LDcgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EKIAogICAgIC8vIFdlIG1heSBo
YXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBoaWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdo
aWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8vIHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwu
Ci0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1w
bGluZ0xldmVsKSB7CiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwg
YnV0IGF0IHRvbyBzbWFsbCBhIHNpemUsIHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgogICAg
ICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwogICAg
ICAgICBtX2ZyYW1lc1tpbmRleF0uY2xlYXIodHJ1ZSk7CkBAIC00MDYsMTAgKzQwNiwxMCBAQCBQ
YXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgs
IGZsb2F0IHByZXNlbnRhdGlvblNjYQogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmVuJ3QgZmV0
Y2hlZCBhIGZyYW1lIHlldCwgZG8gc28uCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUo
KSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVz
LnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgIGNhY2hlRnJhbWUo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKLSAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkKQEAgLTQyOCw5ICs0MjgsOSBAQCBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiBtX2ZyYW1lc1tpbmRl
eF0ubV9kdXJhdGlvbjsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogewotICAgIHJldHVybiBmcmFtZUF0SW5kZXgoY3Vy
cmVudEZyYW1lKCkpOworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleChjdXJyZW50RnJhbWUo
KSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBp
bmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5o
CmluZGV4IDc0OTNjNmE0YmZiODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQuLjI0MjMyZmUw
MmQ3MDljNDc2OTc4MjEzNzY2NmNmMDgwZmRjYTkyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtNDcsMTYgKzQ3LDYgQEAgdHlwZWRl
ZiBzdHJ1Y3QgSEJJVE1BUF9fICpIQklUTUFQOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLSAgICBzdHJ1Y3QgRnJhbWVEYXRhOwotfQotCi1uYW1lc3BhY2UgV1RGIHsKLSAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1YmxpYyBT
aW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbklu
aXRpYWxpemVXaXRoTWVtc2V0ID0gZmFsc2U7IC8vIE5vdCBhbGwgRnJhbWVEYXRhIG1lbWJlcnMg
aW5pdGlhbGl6ZSB0byAwLgotICAgIH07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgVGltZXI7CiAKQEAgLTY1LDE2ICs1NSwxNSBAQCBjbGFzcyBUaW1lcjsKIC8vID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBzdHJ1Y3QgRnJhbWVE
YXRhIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZURhdGEpOwogcHVibGljOgogICAg
IEZyYW1lRGF0YSgpCi0gICAgICAgIDogbV9mcmFtZSgwKQorICAgICAgICA6IG1faW1hZ2UobnVs
bHB0cikKICAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQog
ICAgICAgICAsIG1fc3Vic2FtcGxpbmdMZXZlbCgwKQogICAgICAgICAsIG1fZHVyYXRpb24oMCkK
ICAgICAgICAgLCBtX2hhdmVNZXRhZGF0YShmYWxzZSkKICAgICAgICAgLCBtX2lzQ29tcGxldGUo
ZmFsc2UpCi0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKSAKKyAgICAgICAgLCBtX2hhc0FscGhh
KHRydWUpCiAgICAgICAgICwgbV9mcmFtZUJ5dGVzKDApCiAgICAgewogICAgIH0KQEAgLTg4LDcg
Kzc3LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVk
IGltYWdlIGRhdGEgdG8gY2xlYXIuCiAgICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEp
OwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9mcmFtZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2lt
YWdlOwogICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKICAgICBTdWJzYW1wbGlu
Z0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbDsKICAgICBmbG9hdCBtX2R1cmF0aW9uOwpAQCAtMTA4
LDExICs5NywxMSBAQCBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiAg
ICAgZnJpZW5kIGNsYXNzIEdyYWRpZW50SW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoUGFz
c05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDAp
CisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2UobmF0aXZlSW1hZ2UsIG9i
c2VydmVyKSk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3Jl
YXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKG9ic2VydmVyKSk7CiAgICAgfQpAQCAtMTU0
LDggKzE0Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKENHKQotICAgIFdFQkNPUkVf
RVhQT1JUIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIG92ZXJyaWRlOwotICAgIENHSW1hZ2VS
ZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZ2V0Q0dJbWFnZVJlZigpIG92
ZXJyaWRlOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBn
ZXRDR0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKICNlbmRpZgogCkBAIC0xNzIsNyArMTYxLDcgQEAg
cHVibGljOgogICAgIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSBvdmVycmlkZTsK
ICNlbmRpZgogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSBvdmVycmlkZTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3Vy
cmVudEZyYW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoY3Vy
cmVudEZyYW1lKCkpOyB9CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgp
IG92ZXJyaWRlOwpAQCAtMTk5LDggKzE4OCw4IEBAIHByb3RlY3RlZDoKICAgICAgIENlcnRhaW4g
ICAgIC8vIFRoZSByZXBldGl0aW9uIGNvdW50IGlzIGtub3duIHRvIGJlIGNvcnJlY3QuCiAgICAg
fTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwg
SW1hZ2VPYnNlcnZlciogPSAwKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFn
ZU9ic2VydmVyKiA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwpAQCAtMjE0LDEwICsyMDMsMTAgQEAgcHJvdGVj
dGVkOgogCiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0
ciBmcmFtZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsK
LSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KHNpemVfdCk7
CisgICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVz
ZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRG
cmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCi0gICAgYm9vbCBoYXZlRnJhbWVBdEluZGV4KHNp
emVfdCk7CisgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAogICAgIGJv
b2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGJhYmM0Yzg1Y2MyZGY3NDk1OGZhMWM5MTBlNTZh
YWNiODcxOTBjZjIuLmM1MjRiYTE5ZDVkZGE0MDVjNjBjMTQ3ODIxNjI3OWMwYzg1OTY2OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCkBAIC0zMDIsNyArMzAyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykg
fHwgVVNFKENBSVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1h
Z2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbik7CiAjZW5kaWYKIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGUzNmJh
M2FhNTZkNThjMjA2YTk4M2ZmNWJhOWJmYTdiMTM2NTExODIuLmRiYmJjZjU4YzM3YjlhNmIxNjRk
NmYxMzUxY2Q2ZTE1ZWI0MWQ4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgcHVi
bGljOgogICAgICAgICBJbWFnZVNvdXJjZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBtX2ltYWdlU3VyZmFjZTsKICNlbGlmIFVTRShDRykKLSAgICAgICAgQ0dJ
bWFnZVJlZiBtX2NnSW1hZ2U7CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1h
Z2U7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2RlY29kZWRJbWFnZTsKICAgICAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERhdGE7CiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBkOTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFl
ZjNmM2MxN2I3Li5mNmJiYjgyMDZjZWFiN2NkMzYzOTYyMDgwNTBiNDAzMTYxZGFhNmQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yMiw4ICsyMiw4IEBACiAj
ZGVmaW5lIEljb25faAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKQEAgLTQ1LDE5ICs0NSwxOSBAQCBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgCiBjbGFz
cyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5h
bWVzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5JY29uKCk7CiAKICAgICB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAjaWYgUExBVEZPUk0oV0lOKQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4g
YWRvcHRSZWYobmV3IEljb24oaEljb24pKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3Jl
YXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihoSWNvbikpOyB9CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsg
Zm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1h
Z2UoTmF0aXZlSW1hZ2VQdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNv
bj4gY3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKElPUykKLSAgICBJY29uKENHSW1hZ2VSZWYpOworICAgIEljb24oY29uc3Qg
UmV0YWluUHRyPENHSW1hZ2VSZWY+Jik7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJ
bWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDRlZDZlMzVkOTlhZmFhYjViOGJk
ZWM2ZmQ3YTEzMjBlMjBkMDQ2ZjUuLjAzODkyMGQ3MTllMDI3OThlZWRhNTllNWMzOThkY2EzNWI2
Mjg0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTM1
LDIzICsxMzUsMjMgQEAgcHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxl
LCBSb3VuZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBQYXNz
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb25Gb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7IH0KIAog
ICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKICNpZiBVU0UoQVBQ
S0lUKQotICAgIHZpcnR1YWwgTlNJbWFnZSogZ2V0TlNJbWFnZSgpIHsgcmV0dXJuIDA7IH0KKyAg
ICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5TSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZS
ZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIENGRGF0YVJlZiBnZXRU
SUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFVT
RShDRykKLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIHsgcmV0dXJuIDA7
IH0KLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0
IEludFNpemUmKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmly
dHVhbCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0
IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShXSU4pCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIEdka1BpeGJ1ZiogZ2V0R2RrUGl4YnVm
KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKSB7
IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEVGTCkKLSAgICB2aXJ0
dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBFdmFzX09iamVjdCogZ2V0RXZhc09iamVjdChFdmFzKikgeyByZXR1cm4gbnVsbHB0
cjsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKaW5kZXggNzRlZjA1M2EzMzNmZjVmYzU3OGU4MTgwMGNjNmZjOTc1NWVm
YmFiOC4uYWUzMWM5ODM1MjFkNTAwODIyNWMxZmMzNDI5YzJjNDBhMDM3ZTQ4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMTQ4
LDE5ICsxNDgsMTkgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAg
ICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwogfQogCi1Q
YXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogewog
ICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVy
QXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJ
bWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1z
IGZvciBzb21lIHBvcnRzLiAgSWYgd2UgaGF2ZSBhbgogICAgIC8vIGVtcHR5IGltYWdlIGRpbWVu
c2lvbiwganVzdCBiYWlsLgogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZl
ciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gIEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQog
ICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUgY29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGlu
Y3JlbWVudHMgaXRzIHJlZmNvdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKaW5kZXggYWNkZDFjZTRjZTMwMGRlODFjOWUwNjJlZWU3NjA3YmY0
NzJhNzBhZi4uYzExZjdiZTQ4MjllNGU2YmM0MDE3ODk2M2MxZDUxYTE4NjYwYTBhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xMTAs
NyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIGRlY29kZWQgZnJhbWVzLgogICAgIC8vCiAgICAg
Ly8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgY2xlYXIoZmFsc2UsIG4pIGFuZCBzdWJzZXF1ZW50
bHkgY2FsbAotICAgIC8vIGNyZWF0ZUZyYW1lQXRJbmRleChtKSB3aXRoIG0gPCBuLCB1bmxlc3Mg
dGhleSBmaXJzdCBjYWxsIGNsZWFyKHRydWUpLgorICAgIC8vIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCiAg
ICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgc3RhdGVmdWwgSW1hZ2VTb3VyY2VzL2RlY29kZXJzIHdp
bGwgd29yayBwcm9wZXJseS4KICAgICAvLwogICAgIC8vIFRoZSB8ZGF0YXwgYW5kIHxhbGxEYXRh
UmVjZWl2ZWR8IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHN1cHBsaWVkIGJ5IGNhbGxlcnMKQEAgLTE0
Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0
aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAgIC8vIHNl
ZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVh
dGVGcmFtZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgTmF0aXZl
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gMCk7CiAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJv
b2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZy
YW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDk5YjlkNWNhZGU3M2UwYzFmYWQwOWE3
N2NmNWY2ZGIyOThjMzdhYTUuLjkwNjk1YjQ0NTYzYTA4YjRkMGNjNmQzNmM0ZmZkODJkNTFjYTFm
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTgzNyw3ICs4MzcsNyBAQCBib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQs
IHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHBy
ZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIE1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRyIE1lZGlhUGxh
eWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA1ZWE1NTg3MTEwNTkzN2VlZTQwNjNl
NzI1OTJhMWFlNTU3MTU0NWNiLi5jMmUwY2Y3YjgxMzA4MWQxNTMzN2QwYTkyZTZjYTMxN2QwYWUw
ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKQEAgLTQyMyw3ICs0MjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gaHR0cDovL3NyYy5jaHJvbWl1
bS5vcmcvdmlld3ZjL2Nocm9tZS90cnVuay9zcmMvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uv
Z2xlczJfY21kX2NvcHlfdGV4dHVyZV9jaHJvbWl1bS5jYyB2aWEgc2hhZGVycy4KICAgICBib29s
IGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEZW51bSBpbnRlcm5hbEZvcm1hdCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwogCi0gICAgUGFzc05hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpO
ZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApp
bmRleCBlNTc5YWU5Mzg1NmU3ZGRjODU5Njg2NDczNjE4ZGEyYTE0ZDZjNzkwLi5kOTE5ZjU0MzM3
YTQ1N2MxMGVjNjhiYTVhMjBlYjdkZTNiOGZlYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTUxLDcgKzE1
MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVjdCYgcikgeyBwYWludChjLCBy
KTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwg
R0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKaW5kZXggZGY5
NDFhNTY2YTllNDY5Mjc3MjdiYTFlYzY4NDhmMjE2ODAzYTQ1Yi4uMDM0NjY2NWIzNmRiZTU2NjFh
MDljZTcxYzRlY2I0YTBjMWU4ZTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVmaW5lIE5h
dGl2ZUltYWdlUHRyX2gKIAogI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogI2VsaWYgVVNFKENBSVJPKQog
I2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCkBAIC0zOCwyMSArMzksMTQgQEAgdHlwZWRlZiBzdHJ1
Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGSVhN
RTogTmF0aXZlSW1hZ2VQdHIgYW5kIFBhc3NOYXRpdmVJbWFnZVB0ciBzaG91bGQgYmUgc21hcnQK
LS8vIHBvaW50ZXJzIChzZWUgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkp
LgogI2lmIFVTRShDRykKLXR5cGVkZWYgQ0dJbWFnZVJlZiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVk
ZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKENBSVJP
KQogdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLXR5cGVk
ZWYgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFBhc3NOYXRpdmVJbWFnZVB0cjsKICNlbGlm
IFVTRShXSU5HREkpCiB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRy
OwogI2VuZGlmCiAKLSNpZiAhVVNFKENBSVJPKQotdHlwZWRlZiBOYXRpdmVJbWFnZVB0ciBQYXNz
TmF0aXZlSW1hZ2VQdHI7Ci0jZW5kaWYKLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAppbmRleCBmN2ZiMWFjNDY4YjA2ODExMGViYTIzMmYyYmM2ZmYwNjI2ZWZiYTIwLi5kNmRlNzYy
YzFmZTJiZjg0NmFhYWUyNDUzYzZjNTViMGJhZGNhOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxhc3RJbWFnZSgp
OwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFibGVGcmFtZSgpOwogICAgIHZvaWQgcGFp
bnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0g
ICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlk
ZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAK
ICAgICB2b2lkIGNyZWF0ZU9wZW5HTFZpZGVvT3V0cHV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCAxNTQzN2RkZDhlZDZmM2QwYTJiZGJlNTVlOGYzMWRmYTdjNDZjZGRmLi5lYzZmNjAx
N2YzNjRlZjg2OWRlZjUyYjc3YmNiZGYyZDYwZTg3NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KQEAgLTIzNDYsNyArMjM0Niw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgcmV0
dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUodmlkZW9UZXh0dXJlLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRw
dXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBs
eUFscGhhLCBmbGlwWSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUlt
YWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHJldHVybiBtX2xh
c3RJbWFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDIzMGE4ZjZiNzIxYjUxNWEzMWU1MjAy
NmVmYjBkZWE0ZDRjMDAwMWEuLjk0MmYxNWViNzc3N2I3M2NlNGEzMTk3N2I1ZTc1MjFjZDg2MjNi
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTAwOCwxNiArMTAwOCwxNSBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAg
ICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgYXV0byBuZXdJbWFnZSA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICBpZiAoIW5ld0ltYWdlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1FOiBwcm9iYWJseSBkb24ndCBu
ZWVkIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlIGF0IGFsbCBub3cuCi0gICAgICAgIGlmICht
X3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5n
ZXQoKSA9PSBuZXdJbWFnZSkKKyAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdl
ID09IG5ld0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgbV91
bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICAgICAgbV9wZW5kaW5nQ29u
dGVudHNJbWFnZSA9IG5ld0ltYWdlOworICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZSA9IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBXVEZNb3ZlKG5ld0ltYWdlKTsKIAogICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOwogICAgICAg
ICBpZiAoIW1fY29udGVudHNMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggY2Q1N2Vl
NDg1ZWE4MGM2Y2YzNDdhYjNiZDk3MzdkNTk5OWUxMDI4Mi4uOTkzMmRiY2I1ZGUxNTZjNzJlYTZl
YTkxMjE5Y2I4NTUzMjAzMDJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2Uo
UGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShjb25zdCBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1h
Z2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NpemUoY2Fpcm9TdXJmYWNlU2l6ZShuYXRpdmVJbWFnZS5n
ZXQoKSkpCiAgICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKDApCkBAIC01OCw3ICs1OCw3
IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
bmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqCiB7CiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKICAg
ICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRp
dmVJbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLSAgICBtX2ZyYW1lc1swXS5t
X2ZyYW1lID0gbmF0aXZlSW1hZ2U7CisgICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IG5hdGl2ZUlt
YWdlOwogICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIAogICAgIGNoZWNr
Rm9yU29saWRDb2xvcigpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZs
bwogCiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7
CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFu
IGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4g
MSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFj
ZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBp
ZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2Ug
eWV0LgogICAgICAgICByZXR1cm47CiAKQEAgLTE1OCw4ICsxNTgsOCBAQCBib29sIEZyYW1lRGF0
YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIGlmIChjbGVhck1ldGFkYXRhKQogICAg
ICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAg
ICAgbV9mcmFtZSA9IG51bGxwdHI7CisgICAgaWYgKG1faW1hZ2UpIHsKKyAgICAgICAgbV9pbWFn
ZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGNjNzA0NjE0N2FlODFm
MWZhZGFhNmQ4NDE2MjQ5ODBjNmZkZmNiZjEuLjhjNDE4NmQ3MWU1M2ExOTA3ZTkyZDczYTJiMDE2
NDdmZmQ2NmIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0yMTUs
NyArMjE1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJh
Y3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgZGVjb2Rlci5zZXRE
YXRhKG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNv
dW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZy
YW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNl
ID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4g
Rm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVt
dWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZG
IGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGYwNzky
MGYwZDIzMjQ2MmM4ZmI0MWEwMzIyZDgyMmFjOWQ1ZWQzMDcuLmFjY2EzNjc1YzhkNTMzNjg4M2Jj
ZjA0ODQ1MDhmMjFlMDlkN2I4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAg
LTI1OSw3ICsyNTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgY2Fpcm9fcmVzdG9yZShj
cik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2
ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNjks
OCArMjY5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0
aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2kKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gaW1hZ2VQdHI7Ci0KICAgICBwbGF0Zm9y
bUNvbnRleHQoKS0+c2F2ZSgpOwogCiAgICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRp
b24uCkBAIC0yOTMsNyArMjkxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJ
bWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2kKICAgICAgICAg
fQogICAgIH0KIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChp
bWFnZS5nZXQoKSwgZHN0LCBzcmNSZWN0LCAqdGhpcyk7CisgICAgcGxhdGZvcm1Db250ZXh0KCkt
PmRyYXdTdXJmYWNlVG9Db250ZXh0KGltYWdlUHRyLmdldCgpLCBkc3QsIHNyY1JlY3QsICp0aGlz
KTsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+cmVzdG9yZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4
IDAxYjdkNjkyY2RiZDdhYjRkMjJiYmMxMzk5YzEwMzI4ZjU3ZTVlNDcuLmZkNjM2ZTEyMzdhMDQz
YzFjZDY5Y2MzOTM5ZDcxZDcwNWI2MDdjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC01OCwxOCArNTgsMTcg
QEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBtX29yaWVu
dGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb247CiAgICAgbV9zdWJzYW1wbGluZ0xldmVs
ID0gMDsKIAotICAgIGlmIChtX2ZyYW1lKSB7CisgICAgaWYgKG1faW1hZ2UpIHsKICNpZiBDQUNI
RV9TVUJJTUFHRVMKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9mcmFtZSk7
CisgICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1faW1hZ2UuZ2V0KCkpOwogI2Vu
ZGlmCi0gICAgICAgIENHSW1hZ2VSZWxlYXNlKG1fZnJhbWUpOwotICAgICAgICBtX2ZyYW1lID0g
MDsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0lt
YWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJp
dG1hcEltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX21pbmltdW1TdWJz
YW1wbGluZ0xldmVsKDApCiAgICAgLCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkK
QEAgLTg5LDggKzg4LDggQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJ
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1
ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKIHsKLSAgICBDR0Zsb2F0IHdpZHRoID0g
Q0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpOwotICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdl
dEhlaWdodChjZ0ltYWdlKTsKKyAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGlt
YWdlLmdldCgpKTsKKyAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2Uu
Z2V0KCkpOwogICAgIG1fZGVjb2RlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CiAgICAgbV9z
aXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIApAQCAtOTksNyArOTgsNyBAQCBCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemU7CiAKICAgICBt
X2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBDR0ltYWdlUmV0YWlu
KGNnSW1hZ2UpOworICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBpbWFnZTsKICAgICBtX2ZyYW1l
c1swXS5tX2hhc0FscGhhID0gdHJ1ZTsKICAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9
IHRydWU7CiAKQEAgLTEzNiw3ICsxMzUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNv
bGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIWhhdmVGcmFtZUF0SW5kZXgoMCkpIHsKKyAgICBpZiAoIWhhdmVGcmFtZUltYWdl
QXRJbmRleCgwKSkgewogICAgICAgICBJbnRTaXplIHNpemUgPSBtX3NvdXJjZS5mcmFtZVNpemVB
dEluZGV4KDAsIDApOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWln
aHQoKSAhPSAxKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ1LDE1ICsxNDQsMTUgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gbnVsbHB0cjsKKyAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKG1fZnJhbWVzLnNpemUoKSkKLSAgICAgICAgaW1h
Z2UgPSBtX2ZyYW1lc1swXS5tX2ZyYW1lOworICAgICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1f
aW1hZ2U7CiAKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDdXJy
ZW50bHkgd2Ugb25seSBjaGVjayBmb3Igc29saWQgY29sb3IgaW4gdGhlIGltcG9ydGFudCBzcGVj
aWFsIGNhc2Ugb2YgYSAxeDEgaW1hZ2UuCi0gICAgaWYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkg
PT0gMSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSAxKSB7CisgICAgaWYgKENHSW1hZ2VH
ZXRXaWR0aChpbWFnZS5nZXQoKSkgPT0gMSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgp
KSA9PSAxKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKICAgICAg
ICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JT
cGFjZVJlZigpLAogICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwg
a0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKQEAgLTE2MSw3ICsxNjAsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBHcmFwaGljc0NvbnRleHQoYml0bWFwQ29udGV4dC5nZXQoKSkuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZUNvcHkpOwogICAgICAgICBDR1JlY3QgZGVzdGluYXRpb25SZWN0ID0gQ0dS
ZWN0TWFrZSgwLCAwLCAxLCAxKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCwgaW1hZ2UpOworICAgICAgICBDR0NvbnRleHRE
cmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LCBpbWFnZS5nZXQo
KSk7CiAgICAgICAgIGlmICghcGl4ZWxbM10pCiAgICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBD
b2xvcigwLCAwLCAwLCAwKTsKICAgICAgICAgZWxzZQpAQCAtMTcxLDE4ICsxNzAsMTggQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICB9CiB9CiAKLUNHSW1hZ2VS
ZWYgQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYoKQorUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJp
dG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KDAp
OworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKIH0KIAotQ0dJbWFnZVJlZiBCaXRt
YXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUpCitS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0dJ
bWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOwotICAgICAgICBpZiAoY2dJbWFnZSAm
JiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChjZ0lt
YWdlKSkgPT0gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBjZ0ltYWdlOworICAgICAgICBhdXRv
IGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBJbnRT
aXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2Uu
Z2V0KCkpKSA9PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIAogICAg
IC8vIEZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IENHSW1hZ2VSZWYgaWYgd2UgY2FuJ3QgZmluZCB0
aGUgcmlnaHQgc2l6ZQpAQCAtMTkzLDEyICsxOTIsMTIgQEAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogewogICAgIHNpemVfdCBjb3VudCA9IGZy
YW1lQ291bnQoKTsKICAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgQ0ZNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBDRkFy
cmF5Q3JlYXRlTXV0YWJsZShOVUxMLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIGlmIChDR0lt
YWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1lQXRJbmRleChpKSkKLSAgICAgICAgICAgIENGQXJyYXlB
cHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKKyAgICAgICAgaWYgKGF1dG8gY3VyckZyYW1l
ID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkpCisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUo
YXJyYXksIGN1cnJGcmFtZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBhZG9wdENGKGFycmF5
KTsKIH0KQEAgLTIxNCwxMiArMjEzLDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVk
IGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KICAgICBpZiAod2tDR0NvbnRl
eHRJc1BERkNvbnRleHQoY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCi0gICAgICAgIGltYWdlID0g
YWRvcHRDRihjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpKTsKKyAgICAg
ICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9
IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY3R4
dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgICAgICBmbG9hdCBzdWJzYW1wbGluZ1NjYWxlID0g
c3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNp
emUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNp
emUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwogCi0gICAgICAgIGltYWdlID0gZnJhbWVB
dEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKKyAgICAgICAgaW1hZ2Ug
PSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3Vic2FtcGxpbmdTY2FsZSk7CiAg
ICAgfQogCiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2
ZSBhbiBpbWFnZSB5ZXQuCkBAIC0yNDUsMjQgKzI0NCwyNCBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRgogICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAotICAgIGN0eHQuZHJhd05hdGl2ZUltYWdl
KGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBi
bGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotUGFzc05hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQor
UmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6
ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCwgMCk7CiAKICAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2
ZWwpCi0gICAgICAgIHJldHVybiBDR0ltYWdlUmV0YWluKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1l
KTsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogCi0gICAgcmV0dXJu
IG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAgcmV0dXJuIG1fc291cmNl
LmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENH
LmNwcAppbmRleCA2YzAzYTJjZWY4NDYwNjU2MWVhMDdlYjkyOGYxY2YyOTVmOWY1ZTM2Li45OWYw
OWRiNjdiYTU0MjgyZGM0ZWQ3MDVhZTQxNjM4MDMzNzE5M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENH
LmNwcApAQCAtMzMzLDE1ICszMzMsMTUgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VF
eHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFtZUF0
SW5kZXgoMCkpOwotICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKKyAg
ICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDAp
OworICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZTsKICAgICB9IGVsc2UKICAgICAg
ICAgbV9jZ0ltYWdlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAg
ICBpZiAoIW1fY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9pbWFnZVdp
ZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1fY2dJbWFnZSk7Ci0gICAgbV9pbWFnZUhlaWdodCA9IENH
SW1hZ2VHZXRIZWlnaHQobV9jZ0ltYWdlKTsKKyAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0
V2lkdGgobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhl
aWdodChtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIGlmICghbV9pbWFnZVdpZHRoIHx8ICFtX2ltYWdl
SGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0OSw3ICszNDksNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbAogICAgIC8vIHNvLCByZS1yZW5kZXIgaXQgaW50byBhbiBSR0Ig
Y29sb3Igc3BhY2UuIFRoZSBpbWFnZSByZS1wYWNraW5nCiAgICAgLy8gY29kZSByZXF1aXJlcyBj
b2xvciBkYXRhLCBub3QgY29sb3IgdGFibGUgaW5kaWNlcywgZm9yIHRoZQogICAgIC8vIGltYWdl
IGRhdGEuCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JT
cGFjZShtX2NnSW1hZ2UpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFn
ZUdldENvbG9yU3BhY2UobV9jZ0ltYWdlLmdldCgpKTsKICAgICBDR0NvbG9yU3BhY2VNb2RlbCBt
b2RlbCA9IENHQ29sb3JTcGFjZUdldE1vZGVsKGNvbG9yU3BhY2UpOwogICAgIGlmIChtb2RlbCA9
PSBrQ0dDb2xvclNwYWNlTW9kZWxJbmRleGVkKSB7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRl
eHRSZWY+IGJpdG1hcENvbnRleHQ7CkBAIC0zNjQsMjIgKzM2NCwyMiBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbAogCiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0
LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xh
dGlvblF1YWxpdHkoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHSW50ZXJwb2xhdGlvbk5vbmUpOwot
ICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCBtX2ltYWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UpOworICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAw
LCBtX2ltYWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UuZ2V0KCkpOwogCiAgICAg
ICAgIC8vIE5vdyBkaXNjYXJkIHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBhbmQgcmVwbGFjZSBpdCB3
aXRoIGEgY29weSBmcm9tIHRoZSBiaXRtYXAgY29udGV4dC4KICAgICAgICAgbV9kZWNvZGVkSW1h
Z2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0
KCkpKTsKICAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CiAgICAgfQog
Ci0gICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVu
dChtX2NnSW1hZ2UpOwotICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0Qml0c1Bl
clBpeGVsKG1fY2dJbWFnZSk7CisgICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdl
R2V0Qml0c1BlckNvbXBvbmVudChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBiaXRzUGVy
UGl4ZWwgPSBDR0ltYWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgaWYg
KGJpdHNQZXJDb21wb25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0g
Yml0c1BlclBpeGVsIC8gYml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJ
bmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlKTsKKyAgICBDR0JpdG1hcEluZm8g
Yml0SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgYm9v
bCBiaWdFbmRpYW5Tb3VyY2UgPSBmYWxzZTsKICAgICAvLyBUaGVzZSBjb3VsZCB0ZWNobmljYWxs
eSBiZSBjb21iaW5lZCBpbnRvIG9uZSBsYXJnZSBzd2l0Y2gKICAgICAvLyBzdGF0ZW1lbnQsIGJ1
dCB3ZSBwcmVmZXIgbm90IHRvIHNvIHRoYXQgd2UgZmFpbCBmYXN0IGlmIHdlCkBAIC00MjEsNyAr
NDIxLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJ
bWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKIAogICAgIG1fYWxwaGFPcCA9IEFscGhh
RG9Ob3RoaW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXROb25l
OwotICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UpKSB7CisgICAgc3dp
dGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZS5nZXQoKSkpIHsKICAgICBjYXNlIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q6CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlB
bHBoYSkKICAgICAgICAgICAgIG1fYWxwaGFPcCA9IEFscGhhRG9Vbm11bHRpcGx5OwpAQCAtNDYx
LDE0ICs0NjEsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4
dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICBpZiAobV9pbWFnZVNv
dXJjZUZvcm1hdCA9PSBEYXRhRm9ybWF0TnVtRm9ybWF0cykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJ
bWFnZUdldERhdGFQcm92aWRlcihtX2NnSW1hZ2UpKSk7CisgICAgbV9waXhlbERhdGEgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihtX2NnSW1h
Z2UuZ2V0KCkpKSk7CiAgICAgaWYgKCFtX3BpeGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgbV9pbWFnZVBpeGVsRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KENGRGF0YUdldEJ5dGVQdHIobV9waXhlbERhdGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVkIGlu
dCBzcmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1h
Z2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENH
SW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIHBhZGRp
bmcgPSBieXRlc1BlclJvdyAtIGJpdHNQZXJQaXhlbCAvIDggKiBtX2ltYWdlV2lkdGg7CiAgICAg
aWYgKHBhZGRpbmcpIHsKICAgICAgICAgc3JjVW5wYWNrQWxpZ25tZW50ID0gcGFkZGluZyArIDE7
CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZh
cyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGltYWcKICAgICBjb250ZXh0
LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFn
ZUhlaWdodCk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVy
cG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLmdldCgp
LCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6
ZSksIENvbXBvc2l0ZUNvcHkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2Us
IGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXpl
KSwgQ29tcG9zaXRlQ29weSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAppbmRleCBhNDQ5NjU0MDQ2YWU4ZjEwYWJhZDE2NDE1ZTY0NjBhZGJiYmI4ZTg4Li40
YzhiN2JkMDMyODU1N2YyMTIwZTAyZGY0ZWU2MmMzZDdhNWJjNGUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0
Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0Jl
SWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJ
bWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShj
b25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CkBAIC0zMTEsOCArMzExLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QK
ICAgICBmbG9hdCBhZGp1c3RlZFggPSBwaGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVj
dC54KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8g
V2UgdHJhbnNsYXRlZCB0aGUgY29udGV4dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3Jp
Z2luLCBzbyBzdWJ0cmFjdCBpdCBvdXQuCiAgICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3Qu
aGVpZ2h0KCkgLSAocGhhc2UueSgpIC0gZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVp
Z2h0KTsKIAotICAgIENHSW1hZ2VSZWYgdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2Up
OworICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogI2lmIFBMQVRGT1JNKElPUykKQEAg
LTMyNiwxMyArMzI2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIC8vIENv
cHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMg
dGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBl
bgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVy
LWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2Rl
ZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFn
ZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRpbGVS
ZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdl
SW5SZWN0KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAvLyBJZiB3
ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0
aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNr
IHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZs
b2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25U
b0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdp
ZHRoKHRpbGVJbWFnZSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2Uu
Z2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0gaW1hZ2Uu
c2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0KCkp
IHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0byBpbnRl
Z3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJlcGVhdDog
cm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0LCBhbmQg
c3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXggZDRhMDEyYjZmNTdi
ZjUzOTMwNjQ3NzdiNmMxMDkzNjZiMjRjNDQ1Yy4uNTAxNWRkMTVhYmZjODI1ZGNlYjAzMjBmMTIw
MjljYmE1MTIxODI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBzaXplX3QgSW1h
Z2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0lt
YWdlU291cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLUNHSW1hZ2VSZWYgSW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTM2NiwxOCArMzY2LDE1IEBAIENHSW1hZ2VSZWYgSW1hZ2VTb3VyY2U6OmNy
ZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtCiAg
ICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIHhibVVUSSA9IENGU1RSKCJwdWJsaWMueGJpdG1h
cC1pbWFnZSIpOwogCiAgICAgaWYgKCFpbWFnZVVUSSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxl
YWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwogCiAgICAgaWYgKCFDRkVxdWFsKGltYWdl
VVRJLCB4Ym1VVEkpKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICBy
ZXR1cm4gaW1hZ2U7CiAgICAgCiAgICAgLy8gSWYgaXQgaXMgYW4geGJtIGltYWdlLCBtYXNrIG91
dCBhbGwgdGhlIHdoaXRlIGFyZWFzIHRvIHJlbmRlciB0aGVtIHRyYW5zcGFyZW50LgogICAgIGNv
bnN0IENHRmxvYXQgbWFza2luZ0NvbG9yc1s2XSA9IHsyNTUsIDI1NSwgIDI1NSwgMjU1LCAyNTUs
IDI1NX07CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1hc2tlZEltYWdlID0gYWRvcHRDRihD
R0ltYWdlQ3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0KCksIG1hc2tpbmdDb2xvcnMp
KTsKLSAgICBpZiAoIW1hc2tlZEltYWdlKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigp
OwotCi0gICAgcmV0dXJuIG1hc2tlZEltYWdlLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gbWFza2Vk
SW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdlOwogfQogCiBib29sIEltYWdlU291cmNlOjpmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGIzMDMzZmUwNTEwZjc5ZDI1
MTJhNDA2YmIxYmRkZjI5NWFmYTVhMzQuLjc4OWI3ZjhjOGQxZjI3YzMxZDgyM2U0NDc3ZDRmZjg2
OTM2MzU5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcApAQCAtNzEsMTAgKzcxLDEyIEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFu
CiAgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRl
cm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLT5nZXRDR0ltYWdl
UmVmKCk7CisKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90aCBkaXJlY3Rpb25zLCB3
ZSBjYW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGluc3RlYWQgb2YgY3VzdG9t
IHBhdHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3JhY2tzLgogICAgIGlmICht
X3JlcGVhdFggJiYgbV9yZXBlYXRZKQotICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVX
aXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPmdldENHSW1hZ2VSZWYoKSwgcGF0dGVy
blRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAgICAgcmV0
dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHBsYXRmb3JtSW1hZ2Uu
Z2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7
CiAKICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlT
dGVwLCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNv
CiAgICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04NSwxMCArODcs
OCBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQgeVN0ZXAgPSBtX3JlcGVh
dFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBwYXR0ZXJu
IHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJpbmcgaW4g
cGF0dGVyblJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IENH
SW1hZ2VSZXRhaW4odGlsZUltYWdlKCktPmdldENHSW1hZ2VSZWYoKSk7Ci0KICAgICBjb25zdCBD
R1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNr
LCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShw
bGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBr
Q0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7
CisgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKSwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0Nv
bnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMDI0Y2JmZTAwYjUyMjMzOTMzNTkyMGY5
Zjg1MzRjODM2ZGFjY2Y4OC4uZjM1NDg5YzM0OWJhZmU1YjJjMGZlYjNmMTdjMjMzZDA1MDM2OGY4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDkxLDcgKzQ5MSw3
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
cmF3VGlsZWRTY2FsZWRJbWFnZSYgaXRlbSkKIH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KQotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGlt
YWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0RyYXdOYXRp
dmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZVB0ciwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAgOiBEcmF3aW5nSXRl
bShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTog
TmVlZCB0byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCkBAIC01MTYsNyArNTE2LDcgQEAgRHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRy
LCBjb25zdCBGbG9hdFNpemUmIGkKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKG1faW1hZ2VQdHIuZ2V0KCksIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
LCBtX3NyY1JlY3QsIG1fb3AsIG1fYmxlbmRNb2RlLCBtX29yaWVudGF0aW9uKTsKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlUHRyLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlv
biwgbV9zcmNSZWN0LCBtX29wLCBtX2JsZW5kTW9kZSwgbV9vcmllbnRhdGlvbik7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgKaW5kZXggNWE4NDk2NGM1NzliMzJmZGMwZWM2ZWYxNDVmNjQyNjBmMTM1YWZmZi4u
NGYxMzUxZWJiMjMwNjUxYzU1ZTEzNjVhNjE2MDRlMzM2NDMxZWY0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCkBAIC02MzksNyArNjM5LDcgQEAgcHJpdmF0ZToKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5n
SXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShQ
YXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJ
bWFnZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9k
ZSwgb3JpZW50YXRpb24pKTsKICAgICB9CkBAIC02NDgsNyArNjQ4LDcgQEAgcHVibGljOgogICAg
IEZsb2F0UmVjdCBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0K
IAogcHJpdmF0ZToKLSAgICBEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24pOworICAgIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
NWU1MmVjOTE5MjNkNDU5ZjA4MjIxOTFmNjY5ZDBjMDBlZWRmMjU4YS4uZDQ3NWQ1MGVkNWM5ZTdk
YzBmMTI4NGM1MmM5ZTg5OGJjMjg0NTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdUaWxl
ZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QK
IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCit2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKIHsKICAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJ
dGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlUHRyLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpKTsKICAg
ICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKaW5kZXggYTVkMmM3MWEyNWViZGJmZTRmM2JhN2ZkYWNkMWYyZGU1ODg2ZGM1MC4u
ZWI5OWEzZGRhMDBkMzE3MGNmYzhmMDg2YTQwMjljYmJjZTFjZDNhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAgICAg
dm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3Rv
ciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJik7CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi0gICAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNl
bGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAg
IHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KTsKICNlbmRpZgogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNERWZsLmNwcAppbmRleCBiYTQxNTk3YWExMTAxZGI2MjkwMjNkMjczYjIwMGU3ODFk
MzNhYWM5Li41OWNjMmM5YmU4YjNmZmUxMTE4NmE2ODVkMmU4Y2Y1OTRjMWQzOTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0
M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAg
ICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDAp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0
aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBi
ZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwCmlu
ZGV4IDljOTJjMDg1M2MyNjFjNzYwYTdjMDgxZjZjODdlOTkwYjFiODhkYWIuLjA3YmViZTY5NDlj
MWM4NGExZTc4NjQyMWMwZTlkN2FmNzc3ZTc2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMTAgKzUxLDEwIEBAIEljb246On5JY29uKCkK
IHsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBJY29uOjpwYWludChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCmluZGV4IDU5NDVlMWY4YzRiNDc0NDhmMzQ4NWZj
NjRiYjU3NjU3YWY0YzM4ZmUuLjg4MGM0Yzk3OTRhNWVkNmQzYWMyZjhhNjc0N2NjMjEyNjkyZDIx
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29u
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0
ay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTAsNyArOTAs
NyBAQCBzdGF0aWMgU3RyaW5nIGxvb2t1cEljb25OYW1lKFN0cmluZyBNSU1FVHlwZSkKIH0KIAog
Ly8gRklYTUU6IE1vdmUgdGhlIGNvZGUgdG8gQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4K
LVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlbmFtZXMpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAgaWYgKGZpbGVuYW1lcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQppbmRleCAyMTU5MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4
NmQyMjQ5YjgxZDlkNzZhLi4zNmIyNGY1Y2ZmMGE2YjYxZTU0NTc0NjczMmI2MjZjZDM5ODdjYjQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5t
bQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJ
Y29uKENHSW1hZ2VSZWYgaW1hZ2UpCitJY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKICAgICA6IG1fY2dJbWFnZShpbWFnZSkKIHsKIH0KQEAgLTQyLDE3ICs0MiwxNyBAQCBJ
Y29uOjp+SWNvbigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQorUmVmUHRyPEljb24+
IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFt
ZXMqLykKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29u
OjpjcmVhdGVJY29uRm9ySW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2VSZWYpCitSZWZQdHI8SWNv
bj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYg
aW1hZ2UpCiB7Ci0gICAgaWYgKCFpbWFnZVJlZikKKyAgICBpZiAoIWltYWdlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZVJlZikp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZSkpOwogfQogCiB2b2lkIEljb246
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29u
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0K
aW5kZXggNGNmYzUyZmRjMTM1N2RlZjE2OTNkYTE3OWFiODQyZTZjNDU4Zjk5NC4uZTQ2MDVkZTIw
MDNiZGYwNjYzNzM1MDM3MDBhYjAxMDJkNmMzNTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBv
cnQgIkludFJlY3QuaCIKICNpbXBvcnQgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgog
I2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgorI2lt
cG9ydCA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0Nyw3IEBAIEljb246On5JY29uKCkKIH0KIAog
Ly8gRklYTUU6IE1vdmUgdGhlIGNvZGUgdG8gQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4K
LVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlbmFtZXMpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAgaWYgKGZpbGVuYW1lcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IGZmMDcxMzFhNjFmY2VkMDQ1
ODZiMzcyZDliYTIwNzlhOTg3M2MzOGIuLmY5MTJkZTFkZDBhZWJkYzQ4YjUwMmQ4ZDk0ZTVlNTk0
Yzg5ZjZlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SW1hZ2VNYWMubW0KQEAgLTkzLDExICs5MywxMSBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6Omdl
dFRJRkZSZXByZXNlbnRhdGlvbigpCiAgICAgaWYgKCFudW1GcmFtZXMpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgVmVjdG9yPENHSW1hZ2VSZWY+IGltYWdlczsKKyAgICBWZWN0b3I8UmV0YWlu
UHRyPENHSW1hZ2VSZWY+PiBpbWFnZXM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bUZyYW1lczsgKytpICkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0SW5k
ZXgoaSk7CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXgoaSk7CiAgICAgICAgIGlmIChjZ0ltYWdlKQotICAgICAgICAgICAgaW1hZ2VzLmFw
cGVuZChjZ0ltYWdlKTsKKyAgICAgICAgICAgIGltYWdlcy5hcHBlbmQoV1RGTW92ZShjZ0ltYWdl
KSk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtVmFsaWRGcmFtZXMgPSBpbWFnZXMuc2l6ZSgp
OwpAQCAtMTA5LDcgKzEwOSw3IEBAIENGRGF0YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJl
c2VudGF0aW9uKCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtVmFsaWRGcmFtZXM7ICsraSkKLSAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRk
SW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIGltYWdlc1tpXSwgMCk7CisgICAgICAgIENHSW1hZ2VE
ZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBpbWFnZXNbaV0uZ2V0KCksIDAp
OwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAK
aW5kZXggYTc4MDcwZDlhYWFmN2Y0ZTJhMzE4OWVlMTQ4YTZhNWM3OTM4OGMwNS4uYTM5NDZjYWY0
ZjgzZTAwY2ZkMWI5OWE1OGYyYzk5MjIzMTc5YjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcApAQCAtNDMsNyArNDMsNyBAQCBJY29u
Ojp+SWNvbigpCiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoZSBjb2RlIHRvIENocm9tZUNsaWVudDo6
aWNvbkZvckZpbGVzKCkuCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQorUmVmUHRyPEljb24+IEljb246OmNy
ZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogewogICAg
IGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA4
MzVlY2YzZjRmZWVlYjhhMGRmYThkMzY5NzMxMjhmM2I4MDdiOTI2Li5kZTBhNzBiZjhhMDZhNGNl
ZmQ1OWZhZTIzOWM4OTU3MDM0OTY4Y2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBAIC05MCw4ICs5MCw4IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmIChpbWFnZSAmJiBDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0
KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNT
aXplLndpZHRoKCkpKSB7CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGZy
YW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAm
JiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3Jj
U2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3Vy
cmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwogICAgICAgICAgICAg
ZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgp
LCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDI5YTIwMjNkYjYzYTkx
NDM0YzM5NDhlYWE1NTIzYmI2MWZlODEwNzUuLjk3ZWQwOTc5MzVjNTFmYzIwYTg0NWM5NThlMTU2
OThkMjAwMGRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOwogICAgICAgICBp
ZiAoIXN1cmZhY2UpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCBmYzg3
ZjgzNDAzMzE5NTU3M2Y1NjdmYzA1OGM3YzczZDg1OGExOTdhLi5iMzU0N2Q5NGU4MDhmODc0YWVk
OWRhMGYyOTFiZWNlMjBhNjQ2NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtOTgsNyArOTgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3duZWQgcG9pbnRl
ciB0byB0aGUgdW5kZXJseWluZyBuYXRpdmUgaW1hZ2UgZGF0YS4KICAgICAgICAgLy8gKEFjdHVh
bCB1c2U6IFRoaXMgcG9pbnRlciB3aWxsIGJlIG93bmVkIGJ5IEJpdG1hcEltYWdlIGFuZCBmcmVl
ZCBpbgogICAgICAgICAvLyBGcmFtZURhdGE6OmNsZWFyKCkpLgotICAgICAgICBQYXNzTmF0aXZl
SW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OworICAgICAgICBOYXRpdmVJbWFnZVB0
ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNv
bnN0OwogICAgICAgICBjb25zdCBJbnRSZWN0JiBvcmlnaW5hbEZyYW1lUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fb3JpZ2luYWxGcmFtZVJlY3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNh
aXJvLmNwcAppbmRleCAzZmU3MDQwMjM0MTlkOTc1M2IxMzk5ZDlmNmMwMGI2NzM5NDUxMjk2Li43
YjQxMjk1Zjg1NzM1OGZiYmYzNWMxYjA1MjVlOGQ2Y2MzNTIwZjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
SW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2Uo
KSBjb25zdAorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zv
cl9kYXRhKAogICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9j
YXN0PFBpeGVsRGF0YSo+KG1fYnl0ZXMpKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCmluZGV4IDQyZWE1ZWU1MzQyMWE3N2QwN2UzNGU2ZjgwYjQzM2M2MjA3MzdiOGMu
LmMxNWZhZmJkOGVhMWI2MTMyNDg2NTY1NGQ5NDk0MmRmZWQ0NjUzNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTgwLDE3ICsxODAsMTcgQEAgdm9pZCBT
VkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0U2l6ZSBjb250YWkKIH0KIAogI2lmIFVTRShDQUlSTykKLS8vIFBhc3NlcyBvd25lcnNo
aXAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIFBhc3NOYXRpdmVJbWFnZVB0
ciBuZWVkcworLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBj
YWxsZXIgc28gTmF0aXZlSW1hZ2VQdHIgbmVlZHMKIC8vIHRvIGJlIGEgc21hcnQgcG9pbnRlciB0
eXBlLgotUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpCitOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKQogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAvLyBDYWlybyBkb2VzIG5vdCB1c2UgdGhlIGFjY2VsZXJhdGVk
IGRyYXdpbmcgZmxhZywgc28gaXQncyBPSyB0byBtYWtlIGFuIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkIGJ1ZmZlci4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAo
IWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJl
Y3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAppbmRleCA4NzBmNmM4NWM1ZTY4NGUxNzdjMzBkMTZjMjE2NmEzNDBkY2Q1YTdiLi40
OTFkZGZiM2MyMTM5ZWY4ODIxMDFkMWFmNDViNWFlZjExMGM0ZmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXNldEFuaW1hdGlvbigpIG92ZXJyaWRlOwogCiAjaWYgVVNFKENBSVJPKQotICAgIFBhc3NO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAg
IE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IDRlMTYxZTNmMGQ0NGE2YWE2ZWE2YzAzZjVl
ZDlhYmMxOWViYWVhMWQuLjdlMTQzZGVkMmQ2NjlhYjNhYzA5YzQ5NmI0ZTRiZWU3ZGM4N2YyMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAg
IG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV96b29tLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29t
cG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorTmF0aXZl
SW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmgKaW5kZXggMzU5NzU0Mjg5ZmMzMDQyMThjZGI4YmYxMjAzYjg3M2MyOWZkNTJkMi4uZDIy
NGZjNDYxMmZkOTVhMWFlYTc3YWZiNDQ3OTc2OTIzNTI3YWNkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNv
bnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFNWR0ltYWdl
Rm9yQ29udGFpbmVyKFNWR0ltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJT
aXplLCBmbG9hdCB6b29tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCmluZGV4IDBmNmRlN2ExNDZhNjExYTUyYWExZTUz
OTAxOWZhNmMxYzQ2NzI1YWUuLjY3N2ZiODMyZTg5NWYzZGIxZDRhZWVlYzBmNzQyN2NkOTgyMDQy
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25E
YXRhYmFzZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJ
Y29uRGF0YWJhc2VDRy5jcHAKQEAgLTM3LDEyICszNywxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIENHSW1hZ2VSZWYgV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJMKFdLSWNv
bkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1NpemUgc2l6
ZSkKIHsKICAgICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VG
b3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdl
LT5nZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoSW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHNpemUu
d2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KSkpIDogMDsKKyAgICByZXR1cm4g
aW1hZ2UgPyBpbWFnZS0+Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKEludFNpemUoc3RhdGljX2Nh
c3Q8aW50PihzaXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCkpKS5sZWFr
UmVmKCkgOiBudWxscHRyOwogfQogCiBDRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNH
SW1hZ2VBcnJheUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJM
UmVmIHVybFJlZikKIHsKICAgICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVm
KS0+aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFn
ZSA/IGltYWdlLT5nZXRDR0ltYWdlQXJyYXkoKS5sZWFrUmVmKCkgOiAwOworICAgIHJldHVybiBp
bWFnZSA/IGltYWdlLT5nZXRDR0ltYWdlQXJyYXkoKS5sZWFrUmVmKCkgOiBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
aW5kZXggNjhlYTIzMzRmZWJjMDQzOGMzN2IxNDgwZjdlMTlhNGVkMzk3ZjBhMi4uZWJjMWQwOTg3
MjVkZjAyOTRmOTJhYTEyNGU4MjE0ZTE1MmVlNTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTcxOSwyMSArMTcxOSwyMSBA
QCB2b2lkIFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29s
IGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZAogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIGJv
b2wgaXNBbG1vc3RTb2xpZENvbG9yKEJpdG1hcEltYWdlKiBiaXRtYXApCiB7Ci0gICAgQ0dJbWFn
ZVJlZiBpbWFnZSA9IGJpdG1hcC0+Z2V0Q0dJbWFnZVJlZigpOwotICAgIEFTU0VSVChDR0ltYWdl
R2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGltYWdlID0gYml0bWFwLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgQVNTRVJUKENHSW1hZ2VH
ZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlLmdldCgpKSA9PSA4KTsKIAotICAgIENHQml0bWFwSW5m
byBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgQ0dCaXRtYXBJ
bmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgpKTsKICAgICBp
ZiAoIShpbWFnZUluZm8gJiBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfHwgKGltYWdlSW5m
byAmIGtDR0JpdG1hcEFscGhhSW5mb01hc2spICE9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
Rmlyc3QpIHsKICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGJlaW5nIGFibGUgdG8gaGFuZGxl
IG90aGVyIHBpeGVsIGZvcm1hdHMuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdl
dFdpZHRoKGltYWdlKTsKLSAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFn
ZSk7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdl
KTsKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAg
IHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKKyAgICBzaXpl
X3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UuZ2V0KCkpOwogCi0g
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVy
Q29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihpbWFnZSkpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0lt
YWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlLmdldCgpKSkpOwogICAgIGNvbnN0IFVJbnQ4KiBkYXRh
ID0gQ0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7CiAKICAgICAvLyBPdmVybGF5IGEg
Z3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRo
ZSBpbWFnZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274557</attachid>
            <date>2016-03-20 19:17:51 -0700</date>
            <delta_ts>2016-03-20 19:44:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160320191752.patch</filename>
            <type>text/plain</type>
            <size>87515</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uYWFjMjkwNDBkMGRhNjU0MzZkM2U4YjQ4NjQxZDVk
MWVkZTkyMzY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMCBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZpbmcgTmF0aXZl
SW1hZ2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBv
ZgorICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrcyB3
YXMgZG9uZSB0byBlbnN1cmUgdGhlIENHCisgICAgICAgIHBvaW50ZXIgaXMgbWFpbnRhaW5lZCBj
b3JyZWN0bHkuIEl0IHdhcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBtb3ZlIGEKKyAgICAgICAgRnJh
bWVEYXRhIHNpbmNlIGNhbGxpbmcgdGhlIGRlc3RydWN0b3Igd2FzIHJlbGVhc2luZyB0aGUgQ0dJ
bWFnZVJlZi4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBQYXNzTmF0aXZlSW1hZ2VQdHIg
aXMgbm90IG5lZWRlZCBhbnltb3JlLiBTbyBhbGwgdGhlCisgICAgICAgIGluc3RhbmNlIG9mIFBh
c3NOYXRpdmVJbWFnZVB0ciB3aWxsIGJlIHJlcGxhY2VkIGJ5IE5hdGl2ZUltYWdlUHRyLgorCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgZ2V0UHJl
dmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6IHRyYW5zZmVyIHRoZSBvd25lcnNoaXAKKyAg
ICAgICAgb2YgdGhlIHJldHVybmVkIHBvaW50ZXIgdG8gQ0ZBdXRvcmVsZWFzZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0TlNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0R2RrUGl4YnVmKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRFdmFzT2JqZWN0KToK
KyAgICAgICAgQ2hhbmdlIGFsbCB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUg
UmV0YWluUHRyPENHSW1hZ2VSZWY+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgIENoYW5nZSBmdW5jdGlvbidzIG5hbWUgYW5kIHJlcGxhY2UgUGFzc05h
dGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUlt
YWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICBNYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQg
cG9pbnRlciBmb3IgQ0cuIEdldCByaWQgb2YgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHNp
bmNlIE5hdGl2ZUltYWdlUHRyIGlzIG5vdyBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3Jt
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2
ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICBTaW5jZSBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSByZXR1cm5zIGEgUmV0YWluUHRyLCBtb3ZlIGl0CisgICAg
ICAgIHRvIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgdG8gcmVtb3ZlIHRoZSByZWZjb3VudCBjaHVy
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgIFJlcGxhY2UgbV9mcmFtZSB3aXRoIG1faW1hZ2UgYW5kIGZyYW1l
KiB3aXRoIGZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIFJlcGxhY2Ug
KkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpj
bGVhcik6IE5vIG5lZWQgdG8gY2FsbCBDR0ltYWdlUmVsZWFzZSgpLiBKdXN0IGFzc2lnbgorICAg
ICAgICBtX2ltYWdlIHRvIG51bGxwdHIgYW5kIGl0IHdpbGwgY2FsbGVkIGZyb20gdGhlIFJldGFp
blB0ciBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBS
ZXBsYWNlIENHSW1hZ2VSZWYgd2l0aCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4uIFJlcGxhY2UKKyAg
ICAgICAgKkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICBVc2Ug
bV9jZ0ltYWdlLmdldCgpIGluc3RlYWQgb2YgbV9jZ0ltYWdlIHdoZW4gY2FsbGluZyBDRyBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgR2V0IHRoZSByYXcgQ0dJbWFnZVJlZiBmcm9tIHRoZSBOYXRpdmVJbWFnZVB0ciB3aGVu
IGNhbGxpbmcgdGhlIENHIGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUg
ZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJpYWJsZQor
ICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVycy4KKyAg
ICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAg
IExlYWsgdGhlIHJhdyBDR0ltYWdlUmVmIGZyb20gdGhlIE5hdGl2ZUltYWdlUHRyIHNpbmNlIENH
UGF0dGVybkNyZWF0ZSB3aWxsCisgICAgICAgIHJlbGVhc2UgaXQgdGhyb3VnaCB0aGUgY2FsbGJh
Y2tzLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
OgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRy
IGFuZCB1c2UgY29uc3RhbnQgcmVmZXJlbmNlLiAKKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAg
ICAgICAgQ2FsbCBhIGZ1bmN0aW9uIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAgICAKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JY29uR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9UZXh0VHJhY2tSZXByZXNlbnRh
dGlvbklPUy5tbToKKyAgICAgICAgKFRleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TOjp1cGRhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgVXNlIHNtYXJ0IHBv
aW50ZXJzIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycyBDR0lt
YWdlUmVmLgorICAgICAgICBBbmQgY2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyLgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKTogQ29sbGVjdCB0
aGUgbmF0aXZlIGltYWdlcworICAgICAgICBpbiBhIHZlY3RvciBmb3Igc21hcnQgcG9pbnRlcnMu
CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6IENoYW5nZSBQYXNz
UmVmUHRyIHRvIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGgg
aXRzIG5ldyBuYW1lIGFuZCByZWNlaXZlIHRoZSByZXR1cm4gdmFsdWUgaW4gYSBzbWFydCBwb2lu
dGVyIGxvY2FsCisgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rpb24K
KyAgICAgICAgd2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgorICAgICAgICBS
ZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorICAgICAgICAK
IDIwMTYtMDMtMTggIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0
ZSBBdXRvRmlsbCBidXR0b24gaW4gaW5wdXQgZmllbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDUzZmU4MWEx
MTcxY2I1N2Q0NTYyMGE3YjMyOWVjMjg0ZTU2M2IyZTguLjY0ZmU2OTM1NzU0NjgxYzI0ZGQ4Yjc1
OTI5MzYzNGJlYzlkOTBmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0wMy0y
MCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAg
IENoYW5nZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2Ug
TmF0aXZlSW1hZ2VQdHIgdG8gYmUgYSBzbWFydCBwb2ludGVyIGluc3RlYWQgb2YgcmF3IHBvaW50
ZXIgZm9yIENHLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNl
Q0cuY3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJMKTogUmV0
dXJuIHRoZSBsZWFrZWQgdGhlIHJhdyBwb2ludGVyIGZyb20KKyAgICAgICAgdGhlIHJldHVybmVk
IHNtYXJ0IHBvaW50ZXIgc2luY2UgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBvZiByZWxlYXNp
bmcgaXQuCisKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVS
TCk6IFVzZSBudWxscHRyLgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xvcik6IEJp
dG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKCkgbm93IHJldHVybnMgYQorICAgICAgICBzbWFydCBw
b2ludGVyLgorCiAyMDE2LTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgR2l2ZSBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uIGluZm9y
bWF0aW9uIGFib3V0IHBhcmVudCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1t
CmluZGV4IGFiOWYzZjg5NzljMzk2YzE4MWU5OTE1ZjM2N2IyNWRjZjM3YjAyOTEuLjJjZmVlMjIz
YWFhNDlkYTFhYjBjNzQ0OTY0NGRhMzc3ZmEwYWIwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tCkBAIC02MDYsNyArNjA2LDcgQEAgLSAodm9pZClnZXRQcmV2aWV3U25hcHNob3RJ
bWFnZTooQ0dJbWFnZVJlZiopY2dJbWFnZSBhbmRSZWN0czooTlNBcnJheSAqKilyZWN0cwogCiAg
ICAgaWYgKHRleHRJbmRpY2F0b3IpIHsKICAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHRleHRJ
bmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpKQotICAgICAgICAgICAgKmNnSW1hZ2UgPSAoQ0dJbWFn
ZVJlZilDRkF1dG9yZWxlYXNlKENHSW1hZ2VSZXRhaW4oaW1hZ2UtPmdldENHSW1hZ2VSZWYoKSkp
OworICAgICAgICAgICAgKmNnSW1hZ2UgPSAoQ0dJbWFnZVJlZilDRkF1dG9yZWxlYXNlKGltYWdl
LT5nZXRDR0ltYWdlUmVmKCkubGVha1JlZigpKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMWU2
ZmNjZDhlYjQ2OTljMDZhOTljNDIzNmIxOTE5NTFlODVkYzAyZi4uNzEzMTRiYzI2NzQ1MjhmZGQy
MTU2MmU4M2IzMmMxNjE2ZWFmNGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVv
KCkgJiYgcGxheWVyKCktPmhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotUGFzc05hdGl2
ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQor
TmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpCiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IGFkOTQ4Zjk0NGEzMDgxNmFhNTdi
M2M4ZWVhNjAyNDg4MTI0NTY1MTUuLmI0ZDdmMWUxNzBmMWY3M2VjYTQ4NjU2NDYwN2NkNTdlZjFm
NGZlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBh
Y2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCk7CiAKICAgICAvLyBVc2VkIGJ5IFdlYkdMIHRvIGRvIEdQVS1HUFUgdGV4dHVy
ZXMgY29weSBpZiBwb3NzaWJsZS4KICAgICAvLyBTZWUgbW9yZSBkZXRhaWxzIGF0IE1lZGlhUGxh
eWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBkZWZpbmVkIGluIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApp
bmRleCA3YmY2ODA0ZmNmOGFmYTVjY2VjMDE5NDMwOWJlYzU5NzQ3NzNlMjI3Li5kNjhmOTg2Y2Fh
N2IzODhhNTI5ZjNiODM5MGEwZTYzNzNlNmFhYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE2MjUs
NyArMTYyNSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UoSFRN
TFZpZGVvRWxlbWVudCogdmlkZW8sIGNvbnN0IEZsb2F0UmVjCiAgICAgY2hlY2tPcmlnaW4odmlk
ZW8pOwogCiAjaWYgVVNFKENHKSB8fCAoRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykgJiYg
VVNFKEdTVFJFQU1FUl9HTCkgJiYgVVNFKENBSVJPKSkKLSAgICBpZiAoUGFzc05hdGl2ZUltYWdl
UHRyIGltYWdlID0gdmlkZW8tPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgeworICAgIGlm
IChOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkpIHsKICAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8t
PnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsK
ICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkKICAgICAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwCmluZGV4IDk5OTQ2NWVhMzkwNjk3Y2JlMDBmZTZmYTg4MzhjMTM4ZTU0NDdhMTcu
LjgxNDIwMTNkYzYyODE3ODdjYTJjMGUwNjg0YWE3ZmUxMzAzYzQ5ODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtMjA0LDE2ICsyMDQsMTMgQEAg
dW5zaWduZWQgTWVtb3J5Q2FjaGU6OmxpdmVDYXBhY2l0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y2FwYWNpdHkgLSBkZWFkQ2FwYWNpdHkoKTsKIH0KIAotI2lmIFVTRShDRykKLS8vIEZJWE1FOiBS
ZW1vdmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFrZSBOYXRpdmVJbWFnZVB0ciBhIHNt
YXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotLy8gcmVtb3ZlIHRoZSB1c2FnZSBvZiBD
RlJldGFpbigpIGluIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoKSBzbyBhcyB0byBtYWtl
IHRoZSBjb2RlIHBsYXRmb3JtLWluZGVwZW5kZW50Lgogc3RhdGljIENhY2hlZEltYWdlQ2xpZW50
JiBkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Q2FjaGVkSW1hZ2VDbGllbnQ+IGNsaWVudDsKICAgICByZXR1cm4gY2xpZW50OwogfQogCi1ib29s
IE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKQorYm9vbCBN
ZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pCiB7
CiAgICAgQVNTRVJUKGltYWdlKTsKICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gU2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCk7CkBAIC0yMjUsOCArMjIyLDYgQEAgYm9vbCBNZW1vcnlDYWNo
ZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3QKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBD
YWNoZWRJbWFnZTo6TWFudWFsbHlDYWNoZWQsIHNlc3Npb25JRCk7CiAKLSAgICAvLyBBY3R1YWwg
cmVsZWFzZSBvZiB0aGUgQ0dJbWFnZVJlZiBpcyBkb25lIGluIEJpdG1hcEltYWdlLgotICAgIENG
UmV0YWluKGltYWdlKTsKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCZkdW1teUNhY2hlZElt
YWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFn
ZS0+ZGVjb2RlZFNpemUoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKQEAgLTI2
NCw3ICsyNTksNiBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVJbWFnZUZyb21DYWNoZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYQogICAgIC8vIHJlc291cmNlIG1h
eSBiZSBkZWxldGVkIGFmdGVyIHRoaXMgY2FsbC4KICAgICBkb3duY2FzdDxDYWNoZWRJbWFnZT4o
KnJlc291cmNlKS5yZW1vdmVDbGllbnQoJmR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7CiB9Ci0j
ZW5kaWYKIAogdm9pZCBNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2VzKGJvb2wgc2hvdWxk
RGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKaW5kZXggYzg4ZDJkYmQ0ZTZiMWQyNzgwZGRhMDRm
Y2NhZjliODIzYTQ2MTdhMC4uYzQ1YjQ2ZmQxODAwNTUxNzNhNmNiMDViODQ4NzY3NmIzYmVjODg5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTE1NSwx
MiArMTU1LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dp
dGhDYWNoZShTZWN1cml0eU9yaWdpblNldCYgb3JpZ2lucyk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zV2l0aENhY2hlKFNlc3Npb25J
RCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0cpCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgVVNFKENH
KSBvbmNlIHdlIGVpdGhlciBtYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQgcG9pbnRlciBvbiBh
bGwgcGxhdGZvcm1zIG9yCi0gICAgLy8gcmVtb3ZlIHRoZSB1c2FnZSBvZiBDRlJldGFpbigpIGlu
IE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoKSBzbyBhcyB0byBtYWtlIHRoZSBjb2RlIHBs
YXRmb3JtLWluZGVwZW5kZW50LgotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSW1hZ2VUb0Nh
Y2hlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFkZEltYWdlVG9DYWNoZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9y
Q2FjaGVQYXJ0aXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlSW1hZ2VGcm9t
Q2FjaGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7
Ci0jZW5kaWYKIAogICAgIC8vIHBydW5lRGVhZCooKSAtIEZsdXNoIGRlY29kZWQgYW5kIGVuY29k
ZWQgZGF0YSBmcm9tIHJlc291cmNlcyBub3QgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCiAgICAg
Ly8gcHJ1bmVMaXZlKigpIC0gRmx1c2ggZGVjb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIHN0aWxs
IHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25EYXRhYmFzZS5jcHAKaW5kZXggZGNjYTg4ZTViNzA3ZDFhNzAwYmY0NmVmNjMwMDQ3YTMzY2Y4
OGI5Zi4uNmRhMjQ0ZTVkM2ExZTY0YWIzYTE4MGQ5MTM4MDI1MGI2NDkwYTM4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC0zMDAsNyArMzAwLDcg
QEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY28KICAgICByZXR1cm4gaWNvblJlY29yZC0+aW1hZ2Uo
c2l6ZSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3Vz
TmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0
IEludFNpemUmIHNpemUpCitOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3Vz
TmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0
IEludFNpemUmIHNpemUpCiB7CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25Gb3JQ
YWdlVVJMKHBhZ2VVUkxPcmlnaW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCA1MzBhM2EzMDg5MDE0YTNlYjFi
ZTAyZDMyNDgyOWNhYzI2ZDg2ZDMyLi5kYjQzZWMyY2IzMTE5ZTU2MzAwODc0NGJhYmMwNTkyNGRl
NjFjMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAt
ODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJY29uVVJM
Rm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCkg
b3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgUGFz
c05hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKKyAgICBOYXRp
dmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
cGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIEljb25Mb2FkRGVjaXNp
b24gc3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIERvY3Vt
ZW50TG9hZGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2VCYXNlLmgKaW5kZXggMDI1NDY1MzA0MTY5MTk3MjIyZTc3ZGYwNmU2NmZmNjYzZTc4
MDhhYS4uNTQ0Y2JhY2I2OThjNjhiMGQ4NjgxYzI4YmQ2MThjZTcyOGMxYWZiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaApAQCAtMTc5LDcgKzE3
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3luY2hyb25vdXNJY29uRGF0YUtub3du
Rm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
SWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3Qg
U3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSB7IHJldHVybiBJY29uTG9hZE5vOyB9CiAgICAgdmly
dHVhbCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25z
dCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgUGFzc05hdGl2ZUlt
YWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29u
c3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdl
UHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3Qg
SW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFzeW5jaHJvbm91cyBjYWxs
cyB3ZSBzaG91bGQgdXNlIHRvIHJlcGxhY2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVkLgogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
CmluZGV4IGZhZjBmODY5NjJjM2ZiNjU3Nzc0NWJmYWY3NWI0Yzg0ZDgwY2MwNjAuLjRhNWM2MWE1
ZDI3YmE4NTU0M2MwMDY0NWRmOGVhMjAzMzUwYTllMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihkb3VibGUgZGVsYXkpCiAgICAgbV9mcmFtZVRpbWVy
LT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQogCi1ib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVB
dEluZGV4KHNpemVfdCBpbmRleCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6
OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1l
cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tp
bmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAK
IGJvb2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTE4
NCw5ICsxODQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgICAgICBtX2ZyYW1lcy5n
cm93KG51bUZyYW1lcyk7CiAKICAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSA9IG1fc291cmNlLmNy
ZWF0ZUZyYW1lQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgICAgIG1fZnJh
bWVzW2luZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1w
bGluZ0xldmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAx
ICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBpZiAobnVtRnJhbWVzID09IDEg
JiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgICAgICBjaGVja0ZvclNvbGlkQ29s
b3IoKTsKICAgICB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNo
ZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJ
bQogICAgIGlmICghc3Vic2FtcGxpbmdMZXZlbCAmJiBmcmFtZVNpemUgIT0gbV9zaXplKQogICAg
ICAgICBtX2hhc1VuaWZvcm1GcmFtZVNpemUgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lc1tp
bmRleF0ubV9mcmFtZSkgeworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewogICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcyk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gZGVsdGFCeXRlczsKICAgICAgICAg
Ly8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJzdW1lIHRoZSBwYXJ0aWFsbHkgZGVj
b2RlZCBkYXRhIHVzZWQKQEAgLTM3OSwxNCArMzc5LDE0IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNh
Y2hpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUg
JiYgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09
IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAg
ICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJhbWVzW2lu
ZGV4XS5tX2hhdmVNZXRhZGF0YSkpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAsIGZyYW1l
Q2FjaGluZyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJp
dG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25T
Y2FsZUhpbnQpCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCiB7CiAgICAgaWYgKGlu
ZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zOTUsNyAr
Mzk1LDcgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EKIAogICAgIC8vIFdlIG1heSBoYXZlIGNh
Y2hlZCBhIGZyYW1lIHdpdGggYSBoaWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNh
c2Ugd2UgbmVlZCB0bwogICAgIC8vIHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAg
aWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lICYm
IHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7
CisgICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2lt
YWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsKSB7CiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0
IHRvbyBzbWFsbCBhIHNpemUsIHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgogICAgICAgICBp
bnQgc2l6ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwogICAgICAgICBt
X2ZyYW1lc1tpbmRleF0uY2xlYXIodHJ1ZSk7CkBAIC00MDYsMTAgKzQwNiwxMCBAQCBQYXNzTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0
IHByZXNlbnRhdGlvblNjYQogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmVuJ3QgZmV0Y2hlZCBh
IGZyYW1lIHlldCwgZG8gc28uCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAh
bV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUo
KSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKLSAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2lt
YWdlOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVf
dCBpbmRleCkKQEAgLTQyOCw5ICs0MjgsOSBAQCBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9k
dXJhdGlvbjsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKQogewotICAgIHJldHVybiBmcmFtZUF0SW5kZXgoY3VycmVudEZy
YW1lKCkpOworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CiB9
CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4
IDc0OTNjNmE0YmZiODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQuLjI0MjMyZmUwMmQ3MDlj
NDc2OTc4MjEzNzY2NmNmMDgwZmRjYTkyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtNDcsMTYgKzQ3LDYgQEAgdHlwZWRlZiBzdHJ1
Y3QgSEJJVE1BUF9fICpIQklUTUFQOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICBzdHJ1Y3QgRnJhbWVEYXRhOwotfQotCi1uYW1lc3BhY2UgV1RGIHsKLSAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBWZWN0b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1wbGVD
bGFzc1ZlY3RvclRyYWl0cyB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkluaXRpYWxp
emVXaXRoTWVtc2V0ID0gZmFsc2U7IC8vIE5vdCBhbGwgRnJhbWVEYXRhIG1lbWJlcnMgaW5pdGlh
bGl6ZSB0byAwLgotICAgIH07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGlt
ZXI7CiAKQEAgLTY1LDE2ICs1NSwxNSBAQCBjbGFzcyBUaW1lcjsKIC8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBzdHJ1Y3QgRnJhbWVEYXRhIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZURhdGEpOwogcHVibGljOgogICAgIEZyYW1l
RGF0YSgpCi0gICAgICAgIDogbV9mcmFtZSgwKQorICAgICAgICA6IG1faW1hZ2UobnVsbHB0cikK
ICAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQogICAgICAg
ICAsIG1fc3Vic2FtcGxpbmdMZXZlbCgwKQogICAgICAgICAsIG1fZHVyYXRpb24oMCkKICAgICAg
ICAgLCBtX2hhdmVNZXRhZGF0YShmYWxzZSkKICAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2Up
Ci0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKSAKKyAgICAgICAgLCBtX2hhc0FscGhhKHRydWUp
CiAgICAgICAgICwgbV9mcmFtZUJ5dGVzKDApCiAgICAgewogICAgIH0KQEAgLTg4LDcgKzc3LDcg
QEAgcHVibGljOgogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdl
IGRhdGEgdG8gY2xlYXIuCiAgICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwogCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgbV9mcmFtZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwog
ICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKICAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbDsKICAgICBmbG9hdCBtX2R1cmF0aW9uOwpAQCAtMTA4LDExICs5
NywxMSBAQCBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJp
ZW5kIGNsYXNzIEdyYWRpZW50SW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoUGFzc05hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCisgICAg
c3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRp
dmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2UobmF0aXZlSW1hZ2UsIG9ic2VydmVy
KSk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlciA9IDApCisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKG9ic2VydmVyKSk7CiAgICAgfQpAQCAtMTU0LDggKzE0
Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKENHKQotICAgIFdFQkNPUkVfRVhQT1JU
IENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIG92ZXJyaWRlOwotICAgIENHSW1hZ2VSZWYgZ2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZ2V0Q0dJbWFnZVJlZigpIG92ZXJyaWRl
OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29u
c3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBnZXRDR0lt
YWdlQXJyYXkoKSBvdmVycmlkZTsKICNlbmRpZgogCkBAIC0xNzIsNyArMTYxLDcgQEAgcHVibGlj
OgogICAgIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSBvdmVycmlkZTsKICNlbmRp
ZgogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkg
b3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSBvdmVycmlkZTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZy
YW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoY3VycmVudEZy
YW1lKCkpOyB9CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJy
aWRlOwpAQCAtMTk5LDggKzE4OCw4IEBAIHByb3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8v
IFRoZSByZXBldGl0aW9uIGNvdW50IGlzIGtub3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgSW1hZ2VP
YnNlcnZlciogPSAwKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2Vy
dmVyKiA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCiAjaWYgUExBVEZPUk0oV0lO
KQogICAgIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9z
aXRlT3BlcmF0b3IpIG92ZXJyaWRlOwpAQCAtMjE0LDEwICsyMDMsMTAgQEAgcHJvdGVjdGVkOgog
CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFt
ZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKLSAgICBQ
YXNzTmF0aXZlSW1hZ2VQdHIgY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAg
TmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRp
b25TY2FsZUhpbnQgPSAxKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QpOwogCi0gICAgYm9vbCBoYXZlRnJhbWVBdEluZGV4KHNpemVfdCk7
CisgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IGJhYmM0Yzg1Y2MyZGY3NDk1OGZhMWM5MTBlNTZhYWNiODcx
OTBjZjIuLmM1MjRiYTE5ZDVkZGE0MDVjNjBjMTQ3ODIxNjI3OWMwYzg1OTY2OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zMDIsNyArMzAyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNF
KENBSVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmll
bnRhdGlvbik7CiAjZW5kaWYKIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGUzNmJhM2FhNTZk
NThjMjA2YTk4M2ZmNWJhOWJmYTdiMTM2NTExODIuLmRiYmJjZjU4YzM3YjlhNmIxNjRkNmYxMzUx
Y2Q2ZTE1ZWI0MWQ4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgcHVibGljOgog
ICAgICAgICBJbWFnZVNvdXJjZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBtX2ltYWdlU3VyZmFjZTsKICNlbGlmIFVTRShDRykKLSAgICAgICAgQ0dJbWFnZVJl
ZiBtX2NnSW1hZ2U7CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAg
ICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERhdGE7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1
aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ljb24uaAppbmRleCBkOTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFlZjNmM2Mx
N2I3Li5mNmJiYjgyMDZjZWFiN2NkMzYzOTYyMDgwNTBiNDAzMTYxZGFhNmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yMiw4ICsyMiw4IEBACiAjZGVmaW5l
IEljb25faAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTQ1LDE5ICs0NSwxOSBAQCBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgCiBjbGFzcyBJY29u
IDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPElj
b24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIH5JY29uKCk7CiAKICAgICB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEljb24oaEljb24pKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlKEhJ
Q09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihoSWNvbikpOyB9CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgZm9yIG5v
bi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoTmF0
aXZlSW1hZ2VQdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3Jl
YXRlSWNvbkZvckltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKElPUykKLSAgICBJY29uKENHSW1hZ2VSZWYpOworICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsK
ICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDRlZDZlMzVkOTlhZmFhYjViOGJkZWM2ZmQ3
YTEzMjBlMjBkMDQ2ZjUuLjAzODkyMGQ3MTllMDI3OThlZWRhNTllNWMzOThkY2EzNWI2Mjg0ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTM1LDIzICsx
MzUsMjMgQEAgcHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3Vu
ZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBQYXNzTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25G
b3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7IH0KIAogICAgIC8v
IEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKICNpZiBVU0UoQVBQS0lUKQot
ICAgIHZpcnR1YWwgTlNJbWFnZSogZ2V0TlNJbWFnZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIE5TSW1hZ2UqIGdldE5TSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNl
bnRhdGlvbigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIENGRGF0YVJlZiBnZXRUSUZGUmVw
cmVzZW50YXRpb24oKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFVTRShDRykK
LSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIHsgcmV0dXJuIDA7IH0KLSAg
ICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNp
emUmKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0
Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNp
emUmKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShXSU4pCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIEdka1BpeGJ1ZiogZ2V0R2RrUGl4YnVmKCkgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKSB7IHJldHVy
biBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEVGTCkKLSAgICB2aXJ0dWFsIEV2
YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBFdmFzX09iamVjdCogZ2V0RXZhc09iamVjdChFdmFzKikgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKaW5kZXggNzRlZjA1M2EzMzNmZjVmYzU3OGU4MTgwMGNjNmZjOTc1NWVmYmFiOC4u
YWUzMWM5ODM1MjFkNTAwODIyNWMxZmMzNDI5YzJjNDBhMDM3ZTQ4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMTQ4LDE5ICsx
NDgsMTkgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwogfQogCi1QYXNzTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwpCitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogewogICAgIGlm
ICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRl
eChpbmRleCk7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZy
YW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBz
b21lIHBvcnRzLiAgSWYgd2UgaGF2ZSBhbgogICAgIC8vIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwg
anVzdCBiYWlsLgogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250
ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gIEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQogICAgIC8v
IGlzIGFscmVhZHkgaW4gYSBuYXRpdmUgY29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVu
dHMgaXRzIHJlZmNvdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgKaW5kZXggYWNkZDFjZTRjZTMwMGRlODFjOWUwNjJlZWU3NjA3YmY0NzJhNzBh
Zi4uYzExZjdiZTQ4MjllNGU2YmM0MDE3ODk2M2MxZDUxYTE4NjYwYTBhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xMTAsNyArMTEw
LDcgQEAgcHVibGljOgogICAgIC8vIGRlY29kZWQgZnJhbWVzLgogICAgIC8vCiAgICAgLy8gQ2Fs
bGVycyBzaG91bGQgbm90IGNhbGwgY2xlYXIoZmFsc2UsIG4pIGFuZCBzdWJzZXF1ZW50bHkgY2Fs
bAotICAgIC8vIGNyZWF0ZUZyYW1lQXRJbmRleChtKSB3aXRoIG0gPCBuLCB1bmxlc3MgdGhleSBm
aXJzdCBjYWxsIGNsZWFyKHRydWUpLgorICAgIC8vIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG0p
IHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCiAgICAgLy8g
VGhpcyBlbnN1cmVzIHRoYXQgc3RhdGVmdWwgSW1hZ2VTb3VyY2VzL2RlY29kZXJzIHdpbGwgd29y
ayBwcm9wZXJseS4KICAgICAvLwogICAgIC8vIFRoZSB8ZGF0YXwgYW5kIHxhbGxEYXRhUmVjZWl2
ZWR8IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHN1cHBsaWVkIGJ5IGNhbGxlcnMKQEAgLTE0Niw3ICsx
NDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFm
dGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAgIC8vIHNlZSBjb21t
ZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFt
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7
CiAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJh
bWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFj
dHVhbGx5IHVzZWQgYW55IGFscGhhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDk5YjlkNWNhZGU3M2UwYzFmYWQwOWE3N2NmNWY2
ZGIyOThjMzdhYTUuLjkwNjk1YjQ0NTYzYTA4YjRkMGNjNmQzNmM0ZmZkODJkNTFjYTFmODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTgzNyw3ICs4MzcsNyBAQCBib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1
cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA1ZWE1NTg3MTEwNTkzN2VlZTQwNjNlNzI1OTJh
MWFlNTU3MTU0NWNiLi5jMmUwY2Y3YjgxMzA4MWQxNTMzN2QwYTkyZTZjYTMxN2QwYWUwODE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAg
LTQyMyw3ICs0MjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcv
dmlld3ZjL2Nocm9tZS90cnVuay9zcmMvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2UvZ2xlczJf
Y21kX2NvcHlfdGV4dHVyZV9jaHJvbWl1bS5jYyB2aWEgc2hhZGVycy4KICAgICBib29sIGNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3Jt
M0RPYmplY3QgdGV4dHVyZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpOZXR3b3Jr
U3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBl
NTc5YWU5Mzg1NmU3ZGRjODU5Njg2NDczNjE4ZGEyYTE0ZDZjNzkwLi5kOTE5ZjU0MzM3YTQ1N2Mx
MGVjNjhiYTVhMjBlYjdkZTNiOGZlYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTUxLDcgKzE1MSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChH
cmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVjdCYgcikgeyBwYWludChjLCByKTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVu
dW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKaW5kZXggZGY5NDFhNTY2
YTllNDY5Mjc3MjdiYTFlYzY4NDhmMjE2ODAzYTQ1Yi4uMDM0NjY2NWIzNmRiZTU2NjFhMDljZTcx
YzRlY2I0YTBjMWU4ZTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVmaW5lIE5hdGl2ZUlt
YWdlUHRyX2gKIAogI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiB0eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogI2VsaWYgVVNFKENBSVJPKQogI2luY2x1
ZGUgIlJlZlB0ckNhaXJvLmgiCkBAIC0zOCwyMSArMzksMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dJ
bWFnZSogQ0dJbWFnZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGSVhNRTogTmF0
aXZlSW1hZ2VQdHIgYW5kIFBhc3NOYXRpdmVJbWFnZVB0ciBzaG91bGQgYmUgc21hcnQKLS8vIHBv
aW50ZXJzIChzZWUgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpLgogI2lm
IFVTRShDRykKLXR5cGVkZWYgQ0dJbWFnZVJlZiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKENBSVJPKQogdHlw
ZWRlZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLXR5cGVkZWYgUGFz
c1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFBhc3NOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShX
SU5HREkpCiB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogI2Vu
ZGlmCiAKLSNpZiAhVVNFKENBSVJPKQotdHlwZWRlZiBOYXRpdmVJbWFnZVB0ciBQYXNzTmF0aXZl
SW1hZ2VQdHI7Ci0jZW5kaWYKLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRl
eCBmN2ZiMWFjNDY4YjA2ODExMGViYTIzMmYyYmM2ZmYwNjI2ZWZiYTIwLi5kNmRlNzYyYzFmZTJi
Zjg0NmFhYWUyNDUzYzZjNTViMGJhZGNhOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0y
NDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAg
IGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFibGVGcmFtZSgpOwogICAgIHZvaWQgcGFpbnRXaXRo
VmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgUGFz
c05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKKyAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKICAgICB2
b2lkIGNyZWF0ZU9wZW5HTFZpZGVvT3V0cHV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRl
eCAxNTQzN2RkZDhlZDZmM2QwYTJiZGJlNTVlOGYzMWRmYTdjNDZjZGRmLi5lYzZmNjAxN2YzNjRl
Zjg2OWRlZjUyYjc3YmNiZGYyZDYwZTg3NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAg
LTIzNDYsNyArMjM0Niw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgcmV0dXJuIG1f
dmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodmlk
ZW9UZXh0dXJlLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJn
ZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhh
LCBmbGlwWSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRy
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHJldHVybiBtX2xhc3RJbWFn
ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDIzMGE4ZjZiNzIxYjUxNWEzMWU1MjAyNmVmYjBk
ZWE0ZDRjMDAwMWEuLjk0MmYxNWViNzc3N2I3M2NlNGEzMTk3N2I1ZTc1MjFjZDg2MjNiNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcApAQCAtMTAwOCwxNiArMTAwOCwxNSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYg
KGltYWdlKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgYXV0byBuZXdJbWFnZSA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICBpZiAoIW5ld0ltYWdlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1FOiBwcm9iYWJseSBkb24ndCBuZWVkIG1f
dW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlIGF0IGFsbCBub3cuCi0gICAgICAgIGlmIChtX3VuY29y
cmVjdGVkQ29udGVudHNJbWFnZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQoKSA9
PSBuZXdJbWFnZSkKKyAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID09IG5l
d0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgbV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJ
bWFnZSA9IG5ld0ltYWdlOworICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IG1f
cGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBXVEZNb3ZlKG5ld0ltYWdlKTsKIAogICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOwogICAgICAgICBpZiAo
IW1fY29udGVudHNMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggY2Q1N2VlNDg1ZWE4
MGM2Y2YzNDdhYjNiZDk3MzdkNTk5OWUxMDI4Mi4uOTkzMmRiY2I1ZGUxNTZjNzJlYTZlYTkxMjE5
Y2I4NTUzMjAzMDJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTM4LDcgKzM4LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1Jl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2Jz
ZXJ2ZXIpCiAgICAgLCBtX3NpemUoY2Fpcm9TdXJmYWNlU2l6ZShuYXRpdmVJbWFnZS5nZXQoKSkp
CiAgICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKDApCkBAIC01OCw3ICs1OCw3IEBAIEJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZl
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqCiB7CiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKICAgICBtX2Zy
YW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRpdmVJbWFn
ZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1l
ID0gbmF0aXZlSW1hZ2U7CisgICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IG5hdGl2ZUltYWdlOwog
ICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIAogICAgIGNoZWNrRm9yU29s
aWRDb2xvcigpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogCiAg
ICAgc3RhcnRBbmltYXRpb24oKTsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZh
Y2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAg
aWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdl
IHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZy
YW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
c3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1
cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0Lgog
ICAgICAgICByZXR1cm47CiAKQEAgLTE1OCw4ICsxNTgsOCBAQCBib29sIEZyYW1lRGF0YTo6Y2xl
YXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIGlmIChjbGVhck1ldGFkYXRhKQogICAgICAgICBt
X2hhdmVNZXRhZGF0YSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgbV9m
cmFtZSA9IG51bGxwdHI7CisgICAgaWYgKG1faW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGNjNzA0NjE0N2FlODFmMWZhZGFh
NmQ4NDE2MjQ5ODBjNmZkZmNiZjEuLjhjNDE4NmQ3MWU1M2ExOTA3ZTkyZDczYTJiMDE2NDdmZmQ2
NmIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0yMTUsNyArMjE1
LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFn
ZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKG1f
aW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkg
fHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJ
bmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9p
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRl
eEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBs
eUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBl
YWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGYwNzkyMGYwZDIz
MjQ2MmM4ZmI0MWEwMzIyZDgyMmFjOWQ1ZWQzMDcuLmFjY2EzNjc1YzhkNTMzNjg4M2JjZjA0ODQ1
MDhmMjFlMDlkN2I4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI1OSw3
ICsyNTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdl
UHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yNjksOCArMjY5
LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1h
Z2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gaW1hZ2VQdHI7Ci0KICAgICBwbGF0Zm9ybUNvbnRl
eHQoKS0+c2F2ZSgpOwogCiAgICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCkBA
IC0yOTMsNyArMjkxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQ
YXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2kKICAgICAgICAgfQogICAg
IH0KIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChpbWFnZS5n
ZXQoKSwgZHN0LCBzcmNSZWN0LCAqdGhpcyk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPmRyYXdT
dXJmYWNlVG9Db250ZXh0KGltYWdlUHRyLmdldCgpLCBkc3QsIHNyY1JlY3QsICp0aGlzKTsKICAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+cmVzdG9yZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDAxYjdk
NjkyY2RiZDdhYjRkMjJiYmMxMzk5YzEwMzI4ZjU3ZTVlNDcuLmZkNjM2ZTEyMzdhMDQzYzFjZDY5
Y2MzOTM5ZDcxZDcwNWI2MDdjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC01OCwxOCArNTgsMTcgQEAgYm9v
bCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBtX29yaWVudGF0aW9u
ID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb247CiAgICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsK
IAotICAgIGlmIChtX2ZyYW1lKSB7CisgICAgaWYgKG1faW1hZ2UpIHsKICNpZiBDQUNIRV9TVUJJ
TUFHRVMKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9mcmFtZSk7CisgICAg
ICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1faW1hZ2UuZ2V0KCkpOwogI2VuZGlmCi0g
ICAgICAgIENHSW1hZ2VSZWxlYXNlKG1fZnJhbWUpOwotICAgICAgICBtX2ZyYW1lID0gMDsKKyAg
ICAgICAgbV9pbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVm
IGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJpdG1hcElt
YWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX21pbmltdW1TdWJzYW1wbGlu
Z0xldmVsKDApCiAgICAgLCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkKQEAgLTg5
LDggKzg4LDggQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAg
ICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKIHsKLSAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFn
ZUdldFdpZHRoKGNnSW1hZ2UpOwotICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdo
dChjZ0ltYWdlKTsKKyAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKTsKKyAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkp
OwogICAgIG1fZGVjb2RlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CiAgICAgbV9zaXplID0g
SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIApAQCAtOTksNyArOTgsNyBAQCBCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
ICAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemU7CiAKICAgICBtX2ZyYW1l
cy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBDR0ltYWdlUmV0YWluKGNnSW1h
Z2UpOworICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBpbWFnZTsKICAgICBtX2ZyYW1lc1swXS5t
X2hhc0FscGhhID0gdHJ1ZTsKICAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7
CiAKQEAgLTEzNiw3ICsxMzUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29s
b3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIWhhdmVGcmFtZUF0SW5kZXgoMCkpIHsKKyAgICBpZiAoIWhhdmVGcmFtZUltYWdlQXRJbmRl
eCgwKSkgewogICAgICAgICBJbnRTaXplIHNpemUgPSBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4
KDAsIDApOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAh
PSAxKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ1LDE1ICsxNDQsMTUgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gbnVsbHB0cjsKKyAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2U7CiAgICAgaWYgKG1fZnJhbWVzLnNpemUoKSkKLSAgICAgICAgaW1hZ2UgPSBt
X2ZyYW1lc1swXS5tX2ZyYW1lOworICAgICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1faW1hZ2U7
CiAKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDdXJyZW50bHkg
d2Ugb25seSBjaGVjayBmb3Igc29saWQgY29sb3IgaW4gdGhlIGltcG9ydGFudCBzcGVjaWFsIGNh
c2Ugb2YgYSAxeDEgaW1hZ2UuCi0gICAgaWYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gMSAm
JiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSAxKSB7CisgICAgaWYgKENHSW1hZ2VHZXRXaWR0
aChpbWFnZS5nZXQoKSkgPT0gMSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSA9PSAx
KSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKICAgICAgICAgUmV0
YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJl
ZigpLAogICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0
bWFwQnl0ZU9yZGVyMzJCaWcpKTsKQEAgLTE2MSw3ICsxNjAsNyBAQCB2b2lkIEJpdG1hcEltYWdl
OjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBHcmFw
aGljc0NvbnRleHQoYml0bWFwQ29udGV4dC5nZXQoKSkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZUNvcHkpOwogICAgICAgICBDR1JlY3QgZGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0TWFr
ZSgwLCAwLCAxLCAxKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCksIGRlc3RpbmF0aW9uUmVjdCwgaW1hZ2UpOworICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LCBpbWFnZS5nZXQoKSk7CiAg
ICAgICAgIGlmICghcGl4ZWxbM10pCiAgICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcigw
LCAwLCAwLCAwKTsKICAgICAgICAgZWxzZQpAQCAtMTcxLDE4ICsxNzAsMTggQEAgdm9pZCBCaXRt
YXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICB9CiB9CiAKLUNHSW1hZ2VSZWYgQml0
bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYoKQorUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcElt
YWdlOjpnZXRDR0ltYWdlUmVmKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KDApOworICAg
IHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKTsKIH0KIAotQ0dJbWFnZVJlZiBCaXRtYXBJbWFn
ZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUpCitSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gQml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJl
ZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOwotICAgICAgICBpZiAoY2dJbWFnZSAmJiBJbnRT
aXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKSkg
PT0gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBjZ0ltYWdlOworICAgICAgICBhdXRvIGltYWdl
ID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBJbnRTaXplKENH
SW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkp
KSA9PSBzaXplKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KIAogICAgIC8vIEZh
bGxiYWNrIHRvIHRoZSBkZWZhdWx0IENHSW1hZ2VSZWYgaWYgd2UgY2FuJ3QgZmluZCB0aGUgcmln
aHQgc2l6ZQpAQCAtMTkzLDEyICsxOTIsMTIgQEAgUmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1h
cEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291
bnQoKTsKICAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgCiAgICAgQ0ZNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBDRkFycmF5Q3Jl
YXRlTXV0YWJsZShOVUxMLCBjb3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIGlmIChDR0ltYWdlUmVm
IGN1cnJGcmFtZSA9IGZyYW1lQXRJbmRleChpKSkKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShhcnJheSwgY3VyckZyYW1lKTsKKyAgICAgICAgaWYgKGF1dG8gY3VyckZyYW1lID0gZnJh
bWVJbWFnZUF0SW5kZXgoaSkpCisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXks
IGN1cnJGcmFtZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBhZG9wdENGKGFycmF5KTsKIH0K
QEAgLTIxNCwxMiArMjEzLDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGltYWdlOwogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdl
cyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KICAgICBpZiAod2tDR0NvbnRleHRJc1BE
RkNvbnRleHQoY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCi0gICAgICAgIGltYWdlID0gYWRvcHRD
Rihjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpKTsKKyAgICAgICAgaW1h
Z2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVj
dEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0
Zm9ybUNvbnRleHQoKSkpOwogICAgICAgICBmbG9hdCBzdWJzYW1wbGluZ1NjYWxlID0gc3RkOjpt
aW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUud2lk
dGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUuaGVp
Z2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwogCi0gICAgICAgIGltYWdlID0gZnJhbWVBdEluZGV4
KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKKyAgICAgICAgaW1hZ2UgPSBmcmFt
ZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3Vic2FtcGxpbmdTY2FsZSk7CiAgICAgfQog
CiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBp
bWFnZSB5ZXQuCkBAIC0yNDUsMjQgKzI0NCwyNCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgog
ICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKQogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25B
dEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAotICAgIGN0eHQuZHJhd05hdGl2ZUltYWdlKGltYWdl
LmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwg
YmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGlt
YWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJp
dG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8
ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6
ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRl
eCwgMCk7CiAKICAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpCi0g
ICAgICAgIHJldHVybiBDR0ltYWdlUmV0YWluKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogCi0gICAgcmV0dXJuIG1fc291
cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAgcmV0dXJuIG1fc291cmNlLmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApp
bmRleCA2YzAzYTJjZWY4NDYwNjU2MWVhMDdlYjkyOGYxY2YyOTVmOWY1ZTM2Li45OWYwOWRiNjdi
YTU0MjgyZGM0ZWQ3MDVhZTQxNjM4MDMzNzE5M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApA
QCAtMzMzLDE1ICszMzMsMTUgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0
b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYg
KCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgo
MCkpOwotICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKKyAgICAgICAg
bV9kZWNvZGVkSW1hZ2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOworICAg
ICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZTsKICAgICB9IGVsc2UKICAgICAgICAgbV9j
Z0ltYWdlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAo
IW1fY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9pbWFnZVdpZHRoID0g
Q0dJbWFnZUdldFdpZHRoKG1fY2dJbWFnZSk7Ci0gICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VH
ZXRIZWlnaHQobV9jZ0ltYWdlKTsKKyAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgo
bV9jZ0ltYWdlLmdldCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodCht
X2NnSW1hZ2UuZ2V0KCkpOwogICAgIGlmICghbV9pbWFnZVdpZHRoIHx8ICFtX2ltYWdlSGVpZ2h0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0OSw3ICszNDksNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbAogICAgIC8vIHNvLCByZS1yZW5kZXIgaXQgaW50byBhbiBSR0IgY29sb3Ig
c3BhY2UuIFRoZSBpbWFnZSByZS1wYWNraW5nCiAgICAgLy8gY29kZSByZXF1aXJlcyBjb2xvciBk
YXRhLCBub3QgY29sb3IgdGFibGUgaW5kaWNlcywgZm9yIHRoZQogICAgIC8vIGltYWdlIGRhdGEu
Ci0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZSht
X2NnSW1hZ2UpOworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENv
bG9yU3BhY2UobV9jZ0ltYWdlLmdldCgpKTsKICAgICBDR0NvbG9yU3BhY2VNb2RlbCBtb2RlbCA9
IENHQ29sb3JTcGFjZUdldE1vZGVsKGNvbG9yU3BhY2UpOwogICAgIGlmIChtb2RlbCA9PSBrQ0dD
b2xvclNwYWNlTW9kZWxJbmRleGVkKSB7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+
IGJpdG1hcENvbnRleHQ7CkBAIC0zNjQsMjIgKzM2NCwyMiBAQCBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbAogCiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgp
LCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1
YWxpdHkoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAw
LCBtX2ltYWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UpOworICAgICAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2lt
YWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIC8v
IE5vdyBkaXNjYXJkIHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEg
Y29weSBmcm9tIHRoZSBiaXRtYXAgY29udGV4dC4KICAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBh
ZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsK
ICAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CiAgICAgfQogCi0gICAg
c2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChtX2Nn
SW1hZ2UpOwotICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0Qml0c1BlclBpeGVs
KG1fY2dJbWFnZSk7CisgICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0
c1BlckNvbXBvbmVudChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwg
PSBDR0ltYWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQ
ZXJDb21wb25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0gYml0c1Bl
clBpeGVsIC8gYml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0g
Q0dJbWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlKTsKKyAgICBDR0JpdG1hcEluZm8gYml0SW5m
byA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgYm9vbCBiaWdF
bmRpYW5Tb3VyY2UgPSBmYWxzZTsKICAgICAvLyBUaGVzZSBjb3VsZCB0ZWNobmljYWxseSBiZSBj
b21iaW5lZCBpbnRvIG9uZSBsYXJnZSBzd2l0Y2gKICAgICAvLyBzdGF0ZW1lbnQsIGJ1dCB3ZSBw
cmVmZXIgbm90IHRvIHNvIHRoYXQgd2UgZmFpbCBmYXN0IGlmIHdlCkBAIC00MjEsNyArNDIxLDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKIAogICAgIG1fYWxwaGFPcCA9IEFscGhhRG9Ob3Ro
aW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXROb25lOwotICAg
IHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UpKSB7CisgICAgc3dpdGNoIChD
R0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZS5nZXQoKSkpIHsKICAgICBjYXNlIGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q6CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkK
ICAgICAgICAgICAgIG1fYWxwaGFPcCA9IEFscGhhRG9Vbm11bHRpcGx5OwpAQCAtNDYxLDE0ICs0
NjEsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJ
bWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICBpZiAobV9pbWFnZVNvdXJjZUZv
cm1hdCA9PSBEYXRhRm9ybWF0TnVtRm9ybWF0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdl
dERhdGFQcm92aWRlcihtX2NnSW1hZ2UpKSk7CisgICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihtX2NnSW1hZ2UuZ2V0
KCkpKSk7CiAgICAgaWYgKCFtX3BpeGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgbV9pbWFnZVBpeGVsRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KENGRGF0
YUdldEJ5dGVQdHIobV9waXhlbERhdGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVkIGludCBzcmNV
bnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRC
eXRlc1BlclJvdyhtX2NnSW1hZ2UpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VH
ZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIHBhZGRpbmcgPSBi
eXRlc1BlclJvdyAtIGJpdHNQZXJQaXhlbCAvIDggKiBtX2ltYWdlV2lkdGg7CiAgICAgaWYgKHBh
ZGRpbmcpIHsKICAgICAgICAgc3JjVW5wYWNrQWxpZ25tZW50ID0gcGFkZGluZyArIDE7CkBAIC01
MzYsNyArNTM2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25z
dCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGltYWcKICAgICBjb250ZXh0LnNjYWxl
KEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFnZUhlaWdo
dCk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25Ob25lKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLmdldCgpLCBpbWFn
ZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENv
bXBvc2l0ZUNvcHkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UsIGltYWdl
U2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29t
cG9zaXRlQ29weSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cAppbmRleCBhNDQ5NjU0MDQ2YWU4ZjEwYWJhZDE2NDE1ZTY0NjBhZGJiYmI4ZTg4Li40YzhiN2Jk
MDMyODU1N2YyMTIwZTAyZGY0ZWU2MmMzZDdhNWJjNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBA
IC0xNjIsNyArMTYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0
YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRp
dHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQ
YXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0zMTEsOCArMzExLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBm
bG9hdCBhZGp1c3RlZFggPSBwaGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkg
KiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJh
bnNsYXRlZCB0aGUgY29udGV4dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBz
byBzdWJ0cmFjdCBpdCBvdXQuCiAgICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0
KCkgLSAocGhhc2UueSgpIC0gZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsK
IAotICAgIENHSW1hZ2VSZWYgdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOworICAg
IGF1dG8gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAg
ICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTMyNiwx
MyArMzI2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIC8vIENvcHlpbmcg
YSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRl
Y29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAg
ICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdl
LCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAg
ICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRpbGVSZWN0KSk7
CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0
KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBuZWVk
IHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkg
bG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNrIHRvIHRo
ZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZsb2F0IHNj
YWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRp
bGVJbWFnZSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UuZ2V0KCkp
OwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgp
LmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0KCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0byBpbnRlZ3JhbCBz
aXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJlcGVhdDogcm91bmQp
LAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0LCBhbmQgc3RldGNo
IHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXggZDRhMDEyYjZmNTdiZjUzOTMw
NjQ3NzdiNmMxMDkzNjZiMjRjNDQ1Yy4uNTAxNWRkMTVhYmZjODI1ZGNlYjAzMjBmMTIwMjljYmE1
MTIxODI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBzaXplX3QgSW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0ltYWdlU291
cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLUNHSW1hZ2VSZWYgSW1hZ2VTb3VyY2U6
OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwpCiB7CiAgICAgaWYgKCFpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTM2NiwxOCArMzY2LDE1IEBAIENHSW1hZ2VSZWYgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtCiAgICAgc3Rh
dGljIGNvbnN0IENGU3RyaW5nUmVmIHhibVVUSSA9IENGU1RSKCJwdWJsaWMueGJpdG1hcC1pbWFn
ZSIpOwogCiAgICAgaWYgKCFpbWFnZVVUSSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYo
KTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwogCiAgICAgaWYgKCFDRkVxdWFsKGltYWdlVVRJLCB4
Ym1VVEkpKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICByZXR1cm4g
aW1hZ2U7CiAgICAgCiAgICAgLy8gSWYgaXQgaXMgYW4geGJtIGltYWdlLCBtYXNrIG91dCBhbGwg
dGhlIHdoaXRlIGFyZWFzIHRvIHJlbmRlciB0aGVtIHRyYW5zcGFyZW50LgogICAgIGNvbnN0IENH
RmxvYXQgbWFza2luZ0NvbG9yc1s2XSA9IHsyNTUsIDI1NSwgIDI1NSwgMjU1LCAyNTUsIDI1NX07
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1hc2tlZEltYWdlID0gYWRvcHRDRihDR0ltYWdl
Q3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0KCksIG1hc2tpbmdDb2xvcnMpKTsKLSAg
ICBpZiAoIW1hc2tlZEltYWdlKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOwotCi0g
ICAgcmV0dXJuIG1hc2tlZEltYWdlLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gbWFza2VkSW1hZ2Ug
PyBtYXNrZWRJbWFnZSA6IGltYWdlOwogfQogCiBib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGIzMDMzZmUwNTEwZjc5ZDI1MTJhNDA2
YmIxYmRkZjI5NWFmYTVhMzQuLjc4OWI3ZjhjOGQxZjI3YzMxZDgyM2U0NDc3ZDRmZjg2OTM2MzU5
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcApAQCAtNzEsMTAgKzcxLDEyIEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAg
cGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRlcm5UcmFu
c2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKKyAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCk7
CisKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90aCBkaXJlY3Rpb25zLCB3ZSBjYW4g
dXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGluc3RlYWQgb2YgY3VzdG9tIHBhdHRl
cm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3JhY2tzLgogICAgIGlmIChtX3JlcGVh
dFggJiYgbV9yZXBlYXRZKQotICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1h
Z2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPmdldENHSW1hZ2VSZWYoKSwgcGF0dGVyblRyYW5z
Zm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAgICAgcmV0dXJuIHdr
Q0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtKHBsYXRmb3JtSW1hZ2UuZ2V0KCks
IHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAg
ICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBu
b3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAg
Ly8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04NSwxMCArODcsOCBAQCBD
R1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIENHRmxvYXQgeVN0ZXAgPSBtX3JlcGVhdFkgPyB0
aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBwYXR0ZXJuIHdpbGwg
cmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJpbmcgaW4gcGF0dGVy
blJlbGVhc2VDYWxsYmFjawotICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IENHSW1hZ2VS
ZXRhaW4odGlsZUltYWdlKCktPmdldENHSW1hZ2VSZWYoKSk7Ci0KICAgICBjb25zdCBDR1BhdHRl
cm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0
ZXJuUmVsZWFzZUNhbGxiYWNrIH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9y
bUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0
ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CisgICAg
cmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKSwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50
U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3MpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMDI0Y2JmZTAwYjUyMjMzOTMzNTkyMGY5Zjg1MzRj
ODM2ZGFjY2Y4OC4uZjM1NDg5YzM0OWJhZmU1YjJjMGZlYjNmMTdjMjMzZDA1MDM2OGY4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDkxLDcgKzQ5MSw3IEBAIHN0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3VGls
ZWRTY2FsZWRJbWFnZSYgaXRlbSkKIH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotRHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRy
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0RyYXdOYXRpdmVJbWFn
ZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZVB0ciwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAgOiBEcmF3aW5nSXRlbShJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogTmVlZCB0
byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCkBAIC01MTYsNyArNTE2LDcgQEAgRHJhd05hdGl2
ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25z
dCBGbG9hdFNpemUmIGkKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKG1faW1hZ2VQdHIuZ2V0KCksIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBtX3Ny
Y1JlY3QsIG1fb3AsIG1fYmxlbmRNb2RlLCBtX29yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShtX2ltYWdlUHRyLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9z
cmNSZWN0LCBtX29wLCBtX2JsZW5kTW9kZSwgbV9vcmllbnRhdGlvbik7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShjb250ZXh0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKaW5kZXggNWE4NDk2NGM1NzliMzJmZGMwZWM2ZWYxNDVmNjQyNjBmMTM1YWZmZi4uNGYxMzUx
ZWJiMjMwNjUxYzU1ZTEzNjVhNjE2MDRlMzM2NDMxZWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCkBAIC02MzksNyArNjM5LDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0cpIHx8
IFVTRShDQUlSTykKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShQYXNzTmF0
aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShp
bWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3Jp
ZW50YXRpb24pKTsKICAgICB9CkBAIC02NDgsNyArNjQ4LDcgQEAgcHVibGljOgogICAgIEZsb2F0
UmVjdCBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAogcHJp
dmF0ZToKLSAgICBEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24pOworICAgIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNWU1MmVj
OTE5MjNkNDU5ZjA4MjIxOTFmNjY5ZDBjMDBlZWRmMjU4YS4uZDQ3NWQ1MGVkNWM5ZTdkYzBmMTI4
NGM1MmM5ZTg5OGJjMjg0NTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdl
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QKIH0KIAog
I2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24pCit2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKIHsKICAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihh
cHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlUHRyLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpKTsKICAgICB1cGRh
dGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKaW5kZXggYTVkMmM3MWEyNWViZGJmZTRmM2JhN2ZkYWNkMWYyZGU1ODg2ZGM1MC4uZWI5OWEz
ZGRhMDBkMzE3MGNmYzhmMDg2YTQwMjljYmJjZTFjZDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRy
YXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAgICAgdm9pZCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1h
Z2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJik7CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi0gICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKICNl
bmRpZgogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4
dDNERWZsLmNwcAppbmRleCBiYTQxNTk3YWExMTAxZGI2MjkwMjNkMjczYjIwMGU3ODFkMzNhYWM5
Li41OWNjMmM5YmU4YjNmZmUxMTE4NmE2ODVkMmU4Y2Y1OTRjMWQzOTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0Nv
bnRleHQzREVmbC5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9v
bAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
bV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAg
bV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1M
VmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFw
cGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwCmluZGV4IDlj
OTJjMDg1M2MyNjFjNzYwYTdjMDgxZjZjODdlOTkwYjFiODhkYWIuLjA3YmViZTY5NDljMWM4NGEx
ZTc4NjQyMWMwZTlkN2FmNzc3ZTc2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMTAgKzUxLDEwIEBAIEljb246On5JY29uKCkKIHsKIH0K
IAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ljb25HdGsuY3BwCmluZGV4IDU5NDVlMWY4YzRiNDc0NDhmMzQ4NWZjNjRiYjU3
NjU3YWY0YzM4ZmUuLjg4MGM0Yzk3OTRhNWVkNmQzYWMyZjhhNjc0N2NjMjEyNjkyZDIxOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTAsNyArOTAsNyBAQCBz
dGF0aWMgU3RyaW5nIGxvb2t1cEljb25OYW1lKFN0cmluZyBNSU1FVHlwZSkKIH0KIAogLy8gRklY
TUU6IE1vdmUgdGhlIGNvZGUgdG8gQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4KLVBhc3NS
ZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pb3MvSWNvbklPUy5tbQppbmRleCAyMTU5MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4NmQyMjQ5
YjgxZDlkNzZhLi4zNmIyNGY1Y2ZmMGE2YjYxZTU0NTc0NjczMmI2MjZjZDM5ODdjYjQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAt
MzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKENH
SW1hZ2VSZWYgaW1hZ2UpCitJY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
ICAgICA6IG1fY2dJbWFnZShpbWFnZSkKIHsKIH0KQEAgLTQyLDE3ICs0MiwxNyBAQCBJY29uOjp+
SWNvbigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQorUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykK
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVh
dGVJY29uRm9ySW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2VSZWYpCitSZWZQdHI8SWNvbj4gSWNv
bjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2Up
CiB7Ci0gICAgaWYgKCFpbWFnZVJlZikKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZVJlZikpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZSkpOwogfQogCiB2b2lkIEljb246OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lv
cy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbklPUy5tbQppbmRleCA5ZWY1NmE4YjdjMmM0NmUzYjVk
M2IwOTE4YjAyYzNiMTk4ZWJmNjk4Li5lMDAxNjFkYTA0Y2RlNDEzNDlmOGY1ZDM4ZWUyNWNjMjZj
MGY4Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL1RleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TLm1tCkBAIC0xMjAsNyAr
MTIwLDcgQEAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1M6On5UZXh0VHJhY2tSZXByZXNlbnRh
dGlvbklPUygpCiB2b2lkIFRleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TOjp1cGRhdGUoKQogewog
ICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGllbnQuY3JlYXRlVGV4dFRyYWNrUmVw
cmVzZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50czoo
aWQpcmVwcmVzZW50YXRpb24tPmdldENHSW1hZ2VSZWYoKV07CisgICAgICAgIFttX2xheWVyLmdl
dCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+Z2V0Q0dJbWFnZVJlZigpLmdldCgp
XTsKIH0KIAogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbklPUzo6c2V0Q29udGVudFNjYWxl
KGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ljb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
SWNvbk1hYy5tbQppbmRleCA0Y2ZjNTJmZGMxMzU3ZGVmMTY5M2RhMTc5YWI4NDJlNmM0NThmOTk0
Li5lNDYwNWRlMjAwM2JkZjA2NjM3MzUwMzcwMGFiMDEwMmQ2YzM1NjFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQpAQCAtMjcsNyArMjcs
NyBAQAogI2ltcG9ydCAiSW50UmVjdC5oIgogI2ltcG9ydCAiTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0LmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKLSNpbXBvcnQgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ3LDcgQEAgSWNvbjo6fklj
b24oKQogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY29kZSB0byBDaHJvbWVDbGllbnQ6Omljb25G
b3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAo
ZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggZmYwNzEz
MWE2MWZjZWQwNDU4NmIzNzJkOWJhMjA3OWE5ODczYzM4Yi4uZjkxMmRlMWRkMGFlYmRjNDhiNTAy
ZDhkOTRlNWU1OTRjODlmNmVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtOTMsMTEgKzkzLDExIEBAIENGRGF0YVJlZiBCaXRt
YXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkKICAgICBpZiAoIW51bUZyYW1lcykKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOworICAgIFZl
Y3RvcjxSZXRhaW5QdHI8Q0dJbWFnZVJlZj4+IGltYWdlczsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtRnJhbWVzOyArK2kgKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9
IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2Ug
PSBmcmFtZUltYWdlQXRJbmRleChpKTsKICAgICAgICAgaWYgKGNnSW1hZ2UpCi0gICAgICAgICAg
ICBpbWFnZXMuYXBwZW5kKGNnSW1hZ2UpOworICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChXVEZN
b3ZlKGNnSW1hZ2UpKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBudW1WYWxpZEZyYW1lcyA9IGlt
YWdlcy5zaXplKCk7CkBAIC0xMDksNyArMTA5LDcgQEAgQ0ZEYXRhUmVmIEJpdG1hcEltYWdlOjpn
ZXRUSUZGUmVwcmVzZW50YXRpb24oKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1WYWxpZEZyYW1lczsgKytpKQotICAgICAgICBDR0ltYWdlRGVz
dGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2VzW2ldLCAwKTsKKyAgICAg
ICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIGltYWdlc1tp
XS5nZXQoKSwgMCk7CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlv
bi5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JY29uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
Y29uV2luLmNwcAppbmRleCBhNzgwNzBkOWFhYWY3ZjRlMmEzMTg5ZWUxNDhhNmE1Yzc5Mzg4YzA1
Li5hMzk0NmNhZjRmODNlMDBjZmQxYjk5YTU4ZjJjOTkyMjMxNzliNGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCkBAIC00Myw3ICs0
Myw3IEBAIEljb246On5JY29uKCkKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhlIGNvZGUgdG8gQ2hy
b21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4KLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRl
SWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCitSZWZQdHI8SWNv
bj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFt
ZXMpCiB7CiAgICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4u
Y3BwCmluZGV4IDgzNWVjZjNmNGZlZWViOGEwZGZhOGQzNjk3MzEyOGYzYjgwN2I5MjYuLmRlMGE3
MGJmOGEwNmE0Y2VmZDU5ZmFlMjM5Yzg5NTcwMzQ5NjhjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTkwLDggKzkw
LDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJh
bWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAg
ICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleChpKTsKLSAgICAgICAgaWYgKGlt
YWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3Jj
U2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUu
aGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZy
YW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7CiAg
ICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNT
aXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9y
bWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggMjlh
MjAyM2RiNjNhOTE0MzRjMzk0OGVhYTU1MjNiYjYxZmU4MTA3NS4uOTdlZDA5NzkzNWM1MWZjMjBh
ODQ1Yzk1OGUxNTY5OGQyMDAwZGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250
ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7
CiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CmluZGV4IGZjODdmODM0MDMzMTk1NTczZjU2N2ZjMDU4YzdjNzNkODU4YTE5N2EuLmIzNTQ3ZDk0
ZTgwOGY4NzRhZWQ5ZGEwZjI5MWJlY2UyMGE2NDY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC05OCw3ICs5
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1v
d25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAg
ICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1h
Z2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCi0gICAgICAg
IFBhc3NOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CisgICAgICAgIE5h
dGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKIAogICAgICAgICBib29sIGhh
c0FscGhhKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJhbWVSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1h
Z2VEZWNvZGVyQ2Fpcm8uY3BwCmluZGV4IDNmZTcwNDAyMzQxOWQ5NzUzYjEzOTlkOWY2YzAwYjY3
Mzk0NTEyOTYuLjdiNDEyOTVmODU3MzU4ZmJiZjM1YzFiMDUyNWU4ZDZjYzM1MjBmNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
RGVjb2RlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdO
YXRpdmVJbWFnZSgpIGNvbnN0CitOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEoCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hh
cio+KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRhKj4obV9ieXRlcykpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNDJlYTVlZTUzNDIxYTc3ZDA3ZTM0ZTZmODBiNDMz
YzYyMDczN2I4Yy4uYzE1ZmFmYmQ4ZWExYjYxMzI0ODY1NjU0ZDk0OTQyZGZlZDQ2NTM1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xODAsMTcgKzE4MCwx
NyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaQogfQogCiAjaWYgVVNFKENBSVJPKQotLy8gUGFz
c2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gUGFzc05h
dGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1h
Z2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcwogLy8gdG8gYmUgYSBzbWFy
dCBwb2ludGVyIHR5cGUuCi1QYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENhaXJvIGRvZXMgbm90IHVzZSB0aGUg
YWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQp
OwogICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZHJhdyhidWZmZXItPmNv
bnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5v
cm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDg3MGY2Yzg1YzVlNjg0ZTE3N2MzMGQxNmMyMTY2YTM0
MGRjZDVhN2IuLjQ5MWRkZmIzYzIxMzllZjg4MjEwMWQxYWY0NWI1YWVmMTEwYzRmZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoQ0FJUk8p
Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3Zl
cnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBv
dmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggNGUxNjFlM2YwZDQ0YTZh
YTZlYTZjMDNmNWVkOWFiYzE5ZWJhZWExZC4uN2UxNDNkZWQyZDY2OWFiM2FjMDljNDk2YjRlNGJl
ZTdkYzg3ZjIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JD
b250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0CiAgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9j
b250YWluZXJTaXplLCBtX3pvb20sIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAotUGFzc05hdGl2
ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpCitOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKQogewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuaAppbmRleCAzNTk3NTQyODlmYzMwNDIxOGNkYjhiZjEyMDNiODczYzI5
ZmQ1MmQyLi5kMjI0ZmM0NjEyZmQ5NWExYWVhNzdhZmI0NDc5NzY5MjM1MjdhY2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRv
IGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3Bh
cXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgU1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKaW5kZXggMGY2ZGU3YTE0NmE2
MTFhNTJhYTFlNTM5MDE5ZmE2YzFjNDY3MjVhZS4uNjc3ZmI4MzJlODk1ZjNkYjFkNGFlZWVjMGY3
NDI3Y2Q5ODIwNDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogQ0dJbWFnZVJlZiBXS0ljb25EYXRhYmFzZVRyeUdldENHSW1hZ2VG
b3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiB1cmxSZWYs
IFdLU2l6ZSBzaXplKQogewogICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29uRGF0YWJhc2VS
ZWYpLT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAgcmV0dXJuIGlt
YWdlID8gaW1hZ2UtPmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShJbnRTaXplKHN0YXRpY19jYXN0
PGludD4oc2l6ZS53aWR0aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkgOiAwOwor
ICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoSW50U2l6
ZShzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVp
Z2h0KSkpLmxlYWtSZWYoKSA6IG51bGxwdHI7CiB9CiAKIENGQXJyYXlSZWYgV0tJY29uRGF0YWJh
c2VUcnlDb3B5Q0dJbWFnZUFycmF5Rm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFz
ZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewogICAgIEltYWdlKiBpbWFnZSA9IHRvSW1wbChpY29u
RGF0YWJhc2VSZWYpLT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7Ci0gICAg
cmV0dXJuIGltYWdlID8gaW1hZ2UtPmdldENHSW1hZ2VBcnJheSgpLmxlYWtSZWYoKSA6IDA7Cisg
ICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPmdldENHSW1hZ2VBcnJheSgpLmxlYWtSZWYoKSA6IG51
bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCA2OGVhMjMzNGZlYmMwNDM4YzM3YjE0ODBmN2UxOWE0ZWQzOTdmMGEy
Li5lYmMxZDA5ODcyNWRmMDI5NGY5MmFhMTI0ZTgyMTRlMTUyZWU1MTY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNzE5LDIx
ICsxNzE5LDIxIEBAIHZvaWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlk
Q2hhbmdlKGJvb2wgaXNWaXNpYmxlLCB1aW50NjRfdCB3aW5kCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiBzdGF0aWMgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKIHsK
LSAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5nZXRDR0ltYWdlUmVmKCk7Ci0gICAgQVNT
RVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKKyAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBiaXRtYXAtPmdldENHSW1hZ2VSZWYoKTsKKyAgICBBU1NF
UlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UuZ2V0KCkpID09IDgpOwogCi0gICAg
Q0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlKTsKKyAg
ICBDR0JpdG1hcEluZm8gaW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2UuZ2V0
KCkpOwogICAgIGlmICghKGltYWdlSW5mbyAmIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlKSB8
fCAoaW1hZ2VJbmZvICYga0NHQml0bWFwQWxwaGFJbmZvTWFzaykgIT0ga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRGaXJzdCkgewogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgYmVpbmcgYWJs
ZSB0byBoYW5kbGUgb3RoZXIgcGl4ZWwgZm9ybWF0cy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzaXplX3Qgd2lkdGgg
PSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpOwotICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlKTsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQ
ZXJSb3coaW1hZ2UpOworICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5n
ZXQoKSk7CisgICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkp
OworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZS5n
ZXQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOworICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNv
cHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UuZ2V0KCkpKSk7CiAgICAgY29uc3Qg
VUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKIAogICAgIC8v
IE92ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5nIGRvdHMgb24gdG9wIG9mIGEgZ3JheXNjYWxlIHZl
cnNpb24gb2YgdGhlIGltYWdlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274559</attachid>
            <date>2016-03-20 19:44:09 -0700</date>
            <delta_ts>2016-03-20 20:24:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160320194409.patch</filename>
            <type>text/plain</type>
            <size>88851</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uYWFjMjkwNDBkMGRhNjU0MzZkM2U4YjQ4NjQxZDVk
MWVkZTkyMzY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMCBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZpbmcgTmF0aXZl
SW1hZ2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBv
ZgorICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrcyB3
YXMgZG9uZSB0byBlbnN1cmUgdGhlIENHCisgICAgICAgIHBvaW50ZXIgaXMgbWFpbnRhaW5lZCBj
b3JyZWN0bHkuIEl0IHdhcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBtb3ZlIGEKKyAgICAgICAgRnJh
bWVEYXRhIHNpbmNlIGNhbGxpbmcgdGhlIGRlc3RydWN0b3Igd2FzIHJlbGVhc2luZyB0aGUgQ0dJ
bWFnZVJlZi4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBQYXNzTmF0aXZlSW1hZ2VQdHIg
aXMgbm90IG5lZWRlZCBhbnltb3JlLiBTbyBhbGwgdGhlCisgICAgICAgIGluc3RhbmNlIG9mIFBh
c3NOYXRpdmVJbWFnZVB0ciB3aWxsIGJlIHJlcGxhY2VkIGJ5IE5hdGl2ZUltYWdlUHRyLgorCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgZ2V0UHJl
dmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6IHRyYW5zZmVyIHRoZSBvd25lcnNoaXAKKyAg
ICAgICAgb2YgdGhlIHJldHVybmVkIHBvaW50ZXIgdG8gQ0ZBdXRvcmVsZWFzZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0TlNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0R2RrUGl4YnVmKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRFdmFzT2JqZWN0KToK
KyAgICAgICAgQ2hhbmdlIGFsbCB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUg
UmV0YWluUHRyPENHSW1hZ2VSZWY+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgIENoYW5nZSBmdW5jdGlvbidzIG5hbWUgYW5kIHJlcGxhY2UgUGFzc05h
dGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUlt
YWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICBNYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQg
cG9pbnRlciBmb3IgQ0cuIEdldCByaWQgb2YgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHNp
bmNlIE5hdGl2ZUltYWdlUHRyIGlzIG5vdyBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3Jt
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2
ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICBTaW5jZSBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSByZXR1cm5zIGEgUmV0YWluUHRyLCBtb3ZlIGl0CisgICAg
ICAgIHRvIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgdG8gcmVtb3ZlIHRoZSByZWZjb3VudCBjaHVy
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgIFJlcGxhY2UgbV9mcmFtZSB3aXRoIG1faW1hZ2UgYW5kIGZyYW1l
KiB3aXRoIGZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIFJlcGxhY2Ug
KkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpj
bGVhcik6IE5vIG5lZWQgdG8gY2FsbCBDR0ltYWdlUmVsZWFzZSgpLiBKdXN0IGFzc2lnbgorICAg
ICAgICBtX2ltYWdlIHRvIG51bGxwdHIgYW5kIGl0IHdpbGwgY2FsbGVkIGZyb20gdGhlIFJldGFp
blB0ciBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBS
ZXBsYWNlIENHSW1hZ2VSZWYgd2l0aCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4uIFJlcGxhY2UKKyAg
ICAgICAgKkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICBVc2Ug
bV9jZ0ltYWdlLmdldCgpIGluc3RlYWQgb2YgbV9jZ0ltYWdlIHdoZW4gY2FsbGluZyBDRyBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgR2V0IHRoZSByYXcgQ0dJbWFnZVJlZiBmcm9tIHRoZSBOYXRpdmVJbWFnZVB0ciB3aGVu
IGNhbGxpbmcgdGhlIENHIGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUg
ZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJpYWJsZQor
ICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVycy4KKyAg
ICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAg
IExlYWsgdGhlIHJhdyBDR0ltYWdlUmVmIGZyb20gdGhlIE5hdGl2ZUltYWdlUHRyIHNpbmNlIENH
UGF0dGVybkNyZWF0ZSB3aWxsCisgICAgICAgIHJlbGVhc2UgaXQgdGhyb3VnaCB0aGUgY2FsbGJh
Y2tzLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
OgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRy
IGFuZCB1c2UgY29uc3RhbnQgcmVmZXJlbmNlLiAKKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAg
ICAgICAgQ2FsbCBhIGZ1bmN0aW9uIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAgICAKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JY29uR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9UZXh0VHJhY2tSZXByZXNlbnRh
dGlvbklPUy5tbToKKyAgICAgICAgKFRleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TOjp1cGRhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgVXNlIHNtYXJ0IHBv
aW50ZXJzIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycyBDR0lt
YWdlUmVmLgorICAgICAgICBBbmQgY2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyLgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKTogQ29sbGVjdCB0
aGUgbmF0aXZlIGltYWdlcworICAgICAgICBpbiBhIHZlY3RvciBmb3Igc21hcnQgcG9pbnRlcnMu
CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6IENoYW5nZSBQYXNz
UmVmUHRyIHRvIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGgg
aXRzIG5ldyBuYW1lIGFuZCByZWNlaXZlIHRoZSByZXR1cm4gdmFsdWUgaW4gYSBzbWFydCBwb2lu
dGVyIGxvY2FsCisgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rpb24K
KyAgICAgICAgd2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oOgorICAgICAgICBS
ZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorICAgICAgICAK
IDIwMTYtMDMtMTggIFpodW8gTGkgIDx6YWNobGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0
ZSBBdXRvRmlsbCBidXR0b24gaW4gaW5wdXQgZmllbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDE1
ZmE2YWYwYjI2ZTQ4NzM1ZDlhMTMyMmM1YjQ0M2I4N2YzZTNlMWQuLmViMzhhYzI0NTFiMzEwNGVl
ZTBlOGQxZmMxMWUwY2E4YTQ3ZDNiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNi0wMy0yMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29t
PgorCisgICAgICAgIENoYW5nZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRy
PENHSW1hZ2VSZWY+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTU0MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJM
Ol0pOgorICAgICAgICBSZXR1cm4gYSBsZWFrZWQgcmF3IENHSW1hZ2VSZWYgZnJvbSBhIE5hdGl2
ZUltYWdlUHRyLgorCiAyMDE2LTAzLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBEaXNhYmxlIENhY2hlcyBpbiBTYWZhcmkncyBEZXZlbG9wIG1lbnUgZG9lcyBu
b3QgZGlzYWJsZSBjYWNoZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTNmZTgxYTExNzFjYjU3ZDQ1NjIwYTdi
MzI5ZWMyODRlNTYzYjJlOC4uNjRmZTY5MzU3NTQ2ODFjMjRkZDhiNzU5MjkzNjM0YmVjOWQ5MGY5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTAzLTIwICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUlt
YWdlUHRyIGZvciBDRyB0byBiZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQxMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBOYXRpdmVJbWFnZVB0ciB0
byBiZSBhIHNtYXJ0IHBvaW50ZXIgaW5zdGVhZCBvZiByYXcgcG9pbnRlciBmb3IgQ0cuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHA6CisgICAgICAg
IChXS0ljb25EYXRhYmFzZVRyeUdldENHSW1hZ2VGb3JVUkwpOiBSZXR1cm4gdGhlIGxlYWtlZCB0
aGUgcmF3IHBvaW50ZXIgZnJvbQorICAgICAgICB0aGUgcmV0dXJuZWQgc21hcnQgcG9pbnRlciBz
aW5jZSB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIG9mIHJlbGVhc2luZyBpdC4KKworICAgICAg
ICAoV0tJY29uRGF0YWJhc2VUcnlDb3B5Q0dJbWFnZUFycmF5Rm9yVVJMKTogVXNlIG51bGxwdHIu
CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6aXNBbG1vc3RTb2xpZENvbG9yKTogQml0bWFwSW1hZ2U6OmdldENH
SW1hZ2VSZWYoKSBub3cgcmV0dXJucyBhCisgICAgICAgIHNtYXJ0IHBvaW50ZXIuCisKIDIwMTYt
MDMtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBHaXZlIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYWJvdXQgcGFy
ZW50IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggYWI5ZjNmODk3
OWMzOTZjMTgxZTk5MTVmMzY3YjI1ZGNmMzdiMDI5MS4uMmNmZWUyMjNhYWE0OWRhMWFiMGM3NDQ5
NjQ0ZGEzNzdmYTBhYjA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTYw
Niw3ICs2MDYsNyBAQCAtICh2b2lkKWdldFByZXZpZXdTbmFwc2hvdEltYWdlOihDR0ltYWdlUmVm
KiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5ICoqKXJlY3RzCiAKICAgICBpZiAodGV4dEluZGlj
YXRvcikgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29udGVu
dEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IChDR0ltYWdlUmVmKUNGQXV0b3JlbGVh
c2UoQ0dJbWFnZVJldGFpbihpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpKSk7CisgICAgICAgICAgICAq
Y2dJbWFnZSA9IChDR0ltYWdlUmVmKUNGQXV0b3JlbGVhc2UoaW1hZ2UtPmdldENHSW1hZ2VSZWYo
KS5sZWFrUmVmKCkpOwogICAgIH0KIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gcmVj
dEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAxZTZmY2NkOGViNDY5OWMwNmE5
OWM0MjM2YjE5MTk1MWU4NWRjMDJmLi43MTMxNGJjMjY3NDUyOGZkZDIxNTYyZTgzYjMyYzE2MTZl
YWY0ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTI3
OSw3ICsyNzksNyBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUoKSBjb25zdAogICAgIHJldHVybiBwbGF5ZXIoKS0+aGFzVmlkZW8oKSAmJiBwbGF5ZXIoKS0+
aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSFRNTFZp
ZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitOYXRpdmVJbWFnZVB0ciBI
VE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBpZiAo
IXBsYXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKaW5kZXggYWQ5NDhmOTQ0YTMwODE2YWE1N2IzYzhlZWE2MDI0ODgxMjQ1
NjUxNS4uYjRkN2YxZTE3MGYxZjczZWNhNDg2NTY0NjA3Y2Q1N2VmMWY0ZmUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgog
ICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAgIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0Jik7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAog
ICAgIC8vIFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3Np
YmxlLgogICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDdiZjY4MDRmY2Y4
YWZhNWNjZWMwMTk0MzA5YmVjNTk3NDc3M2UyMjcuLmQ2OGY5ODZjYWE3YjM4OGE1MjlmM2I4Mzkw
YTBlNjM3M2U2YWFiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTYyNSw3ICsxNjI1LDcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2
aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjaGVja09yaWdpbih2aWRlbyk7CiAKICNpZiBVU0Uo
Q0cpIHx8IChFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoR1NUUkVBTUVSX0dM
KSAmJiBVU0UoQ0FJUk8pKQotICAgIGlmIChQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRl
by0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CisgICAgaWYgKE5hdGl2ZUltYWdlUHRy
IGltYWdlID0gdmlkZW8tPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgewogICAgICAgICBj
LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZSh2aWRlby0+dmlkZW9XaWR0aCgpLCB2
aWRlby0+dmlkZW9IZWlnaHQoKSksIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVj
dENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZh
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXgg
OTk5NDY1ZWEzOTA2OTdjYmUwMGZlNmZhODgzOGMxMzhlNTQ0N2ExNy4uODE0MjAxM2RjNjI4MTc4
N2NhMmMwZTA2ODRhYTdmZTEzMDNjNDk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMDQsMTYgKzIwNCwxMyBAQCB1bnNpZ25lZCBNZW1vcnlD
YWNoZTo6bGl2ZUNhcGFjaXR5KCkgY29uc3QKICAgICByZXR1cm4gbV9jYXBhY2l0eSAtIGRlYWRD
YXBhY2l0eSgpOwogfQogCi0jaWYgVVNFKENHKQotLy8gRklYTUU6IFJlbW92ZSB0aGUgVVNFKENH
KSBvbmNlIHdlIGVpdGhlciBtYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQgcG9pbnRlciBvbiBh
bGwgcGxhdGZvcm1zIG9yCi0vLyByZW1vdmUgdGhlIHVzYWdlIG9mIENGUmV0YWluKCkgaW4gTWVt
b3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSgpIHNvIGFzIHRvIG1ha2UgdGhlIGNvZGUgcGxhdGZv
cm0taW5kZXBlbmRlbnQuCiBzdGF0aWMgQ2FjaGVkSW1hZ2VDbGllbnQmIGR1bW15Q2FjaGVkSW1h
Z2VDbGllbnQoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDYWNoZWRJbWFnZUNsaWVu
dD4gY2xpZW50OwogICAgIHJldHVybiBjbGllbnQ7CiB9CiAKLWJvb2wgTWVtb3J5Q2FjaGU6OmFk
ZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pCitib29sIE1lbW9yeUNhY2hlOjphZGRJ
bWFnZVRvQ2FjaGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKIHsKICAgICBBU1NFUlQoaW1h
Z2UpOwogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQgPSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKTsKQEAgLTIyNSw4ICsyMjIsNiBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2Fj
aGUoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPENhY2hlZEltYWdlPiBjYWNoZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UuZ2V0KCksIENhY2hlZEltYWdlOjpNYW51
YWxseUNhY2hlZCwgc2Vzc2lvbklEKTsKIAotICAgIC8vIEFjdHVhbCByZWxlYXNlIG9mIHRoZSBD
R0ltYWdlUmVmIGlzIGRvbmUgaW4gQml0bWFwSW1hZ2UuCi0gICAgQ0ZSZXRhaW4oaW1hZ2UpOwog
ICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoJmR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7CiAg
ICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgp
KTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQpAQCAtMjY0LDcgKzI1OSw2IEBAIHZv
aWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGRvbWFpbkZvckNhCiAgICAgLy8gcmVzb3VyY2UgbWF5IGJlIGRlbGV0ZWQgYWZ0
ZXIgdGhpcyBjYWxsLgogICAgIGRvd25jYXN0PENhY2hlZEltYWdlPigqcmVzb3VyY2UpLnJlbW92
ZUNsaWVudCgmZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKIH0KLSNlbmRpZgogCiB2b2lkIE1l
bW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXMoYm9vbCBzaG91bGREZXN0cm95RGVjb2RlZERh
dGFGb3JBbGxMaXZlUmVzb3VyY2VzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuaAppbmRleCBjODhkMmRiZDRlNmIxZDI3ODBkZGEwNGZjY2FmOWI4MjNhNDYxN2Ew
Li5jNDViNDZmZDE4MDA1NTE3M2E2Y2IwNWI4NDg3Njc2YjNiZWM4ODlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMTU1LDEyICsxNTUsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5
T3JpZ2luU2V0JiBvcmlnaW5zKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNXaXRoQ2FjaGUoU2Vzc2lvbklEKSBjb25zdDsKIAotI2lm
IFVTRShDRykKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9uY2Ugd2UgZWl0aGVy
IG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIG9uIGFsbCBwbGF0Zm9ybXMgb3IK
LSAgICAvLyByZW1vdmUgdGhlIHVzYWdlIG9mIENGUmV0YWluKCkgaW4gTWVtb3J5Q2FjaGU6OmFk
ZEltYWdlVG9DYWNoZSgpIHNvIGFzIHRvIG1ha2UgdGhlIGNvZGUgcGxhdGZvcm0taW5kZXBlbmRl
bnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQ
dHIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSW1hZ2VUb0NhY2hlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJbWFnZUZyb21DYWNoZShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKLSNlbmRpZgogCiAgICAg
Ly8gcHJ1bmVEZWFkKigpIC0gRmx1c2ggZGVjb2RlZCBhbmQgZW5jb2RlZCBkYXRhIGZyb20gcmVz
b3VyY2VzIG5vdCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdlcy4KICAgICAvLyBwcnVuZUxpdmUqKCkg
LSBGbHVzaCBkZWNvZGVkIGRhdGEgZnJvbSByZXNvdXJjZXMgc3RpbGwgcmVmZXJlbmNlZCBieSBX
ZWIgcGFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApp
bmRleCBkY2NhODhlNWI3MDdkMWE3MDBiZjQ2ZWY2MzAwNDdhMzNjZjg4YjlmLi42ZGEyNDRlNWQz
YTFlNjRhYjNhMTgwZDkxMzgwMjUwYjY0OTBhMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCBJbWFnZSogSWNvbkRh
dGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9y
aWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3JkLT5pbWFnZShzaXplKTsKIH0KIAotUGFz
c05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
K05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKICAgICBJbWFnZSogaWNvbiA9IHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocGFnZVVSTE9y
aWdpbmFsLCBzaXplKTsKICAgICBpZiAoIWljb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5oCmluZGV4IDUzMGEzYTMwODkwMTRhM2ViMWJlMDJkMzI0ODI5Y2FjMjZk
ODZkMzIuLmRiNDNlYzJjYjMxMTllNTYzMDA4NzQ0YmFiYzA1OTI0ZGU2MWMyZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCkBAIC04OCw3ICs4OCw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKSBvdmVycmlkZTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIg
c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmln
aW5hbCwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIHN5bmNo
cm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWws
IGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lu
Y2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBi
b29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xv
YWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaApp
bmRleCAwMjU0NjUzMDQxNjkxOTcyMjJlNzdkZjA2ZTY2ZmY2NjNlNzgwOGFhLi41NDRjYmFjYjY5
OGM2OGIwZDg2ODFjMjhiZDYxOGNlNzI4YzFhZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0
IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9u
IHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVu
dExvYWRlciopIHsgcmV0dXJuIEljb25Mb2FkTm87IH0KICAgICB2aXJ0dWFsIEltYWdlKiBzeW5j
aHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25v
dXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNO
YXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1
cm4gbnVsbHB0cjsgfQogCiAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIHdlIHNob3VsZCB1c2Ug
dG8gcmVwbGFjZSB0aGUgYWJvdmUgd2hlbiBzdXBwb3J0ZWQuCiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZmFmMGY4Njk2
MmMzZmI2NTc3NzQ1YmZhZjc1YjRjODRkODBjYzA2MC4uNGE1YzYxYTVkMjdiYTg1NTQzYzAwNjQ1
ZGY4ZWEyMDMzNTBhOWUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpz
dGFydFRpbWVyKGRvdWJsZSBkZWxheSkKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChk
ZWxheSk7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQorYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRl
eChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lOwor
ICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKIH0KIAogYm9vbCBCaXRtYXBJbWFn
ZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTg0LDkgKzE4NCw5IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsK
IAogICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAg
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4
KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1faW1h
Z2UgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCk7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwgPSBzdWJz
YW1wbGluZ0xldmVsOwotICAgICAgICBpZiAobnVtRnJhbWVzID09IDEgJiYgbV9mcmFtZXNbaW5k
ZXhdLm1fZnJhbWUpCisgICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRl
eF0ubV9pbWFnZSkKICAgICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogICAgIH0KIApA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgaWYgKCFzdWJz
YW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3NpemUpCiAgICAgICAgIG1faGFzVW5pZm9y
bUZyYW1lU2l6ZSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7
CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKSB7CiAgICAgICAgIGludCBkZWx0YUJ5
dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzKTsKICAgICAg
ICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBUaGUgZnVsbHktZGVj
b2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGRhdGEgdXNlZApA
QCAtMzc5LDE0ICszNzksMTQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hl
ZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKQotICAgICAgICB8
fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5k
ZXhdLm1fZnJhbWUpCisgICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFu
ZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgfHwgKGZyYW1lQ2Fj
aGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFk
YXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKIAogICAg
IHJldHVybiB0cnVlOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1l
QXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKK05hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZs
b2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3Vu
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM5NSw3ICszOTUsNyBAQCBQYXNzTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0
IHByZXNlbnRhdGlvblNjYQogCiAgICAgLy8gV2UgbWF5IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0
aCBhIGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAg
ICAgLy8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBsZXZlbC4KLSAgICBpZiAoaW5kZXggPCBtX2Zy
YW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgJiYgc3Vic2FtcGxpbmdMZXZl
bCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKKyAgICBpZiAoaW5kZXgg
PCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxp
bmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKICAgICAgICAg
Ly8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2FjaGVkLCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6
ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24uCiAgICAgICAgIGludCBzaXplQ2hhbmdlID0g
LW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5j
bGVhcih0cnVlKTsKQEAgLTQwNiwxMCArNDA2LDEwIEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRt
YXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2Nh
CiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJhbWUgeWV0LCBkbyBz
by4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tp
bmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wg
Qml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpAQCAtNDI4
LDkgKzQyOCw5IEBAIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpCiAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uOwogfQogCi1Q
YXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkKK05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CisgICAgcmV0
dXJuIGZyYW1lSW1hZ2VBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKIH0KIAogYm9vbCBCaXRtYXBJ
bWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNzQ5M2M2YTRiZmI4NjNk
OTc2MzdjNDljNDY0Y2MzN2FlNzhlMGEwNC4uMjQyMzJmZTAyZDcwOWM0NzY5NzgyMTM3NjY2Y2Yw
ODBmZGNhOTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCkBAIC00NywxNiArNDcsNiBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhC
SVRNQVA7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHN0cnVjdCBGcmFtZURh
dGE7Ci19Ci0KLW5hbWVzcGFjZSBXVEYgewotICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRy
YWl0czxXZWJDb3JlOjpGcmFtZURhdGE+IDogcHVibGljIFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRz
IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSBm
YWxzZTsgLy8gTm90IGFsbCBGcmFtZURhdGEgbWVtYmVycyBpbml0aWFsaXplIHRvIDAuCi0gICAg
fTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaW1lcjsKIApAQCAtNjUsMTYg
KzU1LDE1IEBAIGNsYXNzIFRpbWVyOwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAKIHN0cnVjdCBGcmFtZURhdGEgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZyYW1lRGF0YSk7CiBwdWJsaWM6CiAgICAgRnJhbWVEYXRhKCkKLSAgICAgICAg
OiBtX2ZyYW1lKDApCisgICAgICAgIDogbV9pbWFnZShudWxscHRyKQogICAgICAgICAsIG1fb3Jp
ZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgICwgbV9zdWJzYW1wbGlu
Z0xldmVsKDApCiAgICAgICAgICwgbV9kdXJhdGlvbigwKQogICAgICAgICAsIG1faGF2ZU1ldGFk
YXRhKGZhbHNlKQogICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hh
c0FscGhhKHRydWUpIAorICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKICAgICAgICAgLCBtX2Zy
YW1lQnl0ZXMoMCkKICAgICB7CiAgICAgfQpAQCAtODgsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4K
ICAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBtX2ZyYW1lOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CiAgICAgSW1hZ2VPcmllbnRh
dGlvbiBtX29yaWVudGF0aW9uOwogICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xl
dmVsOwogICAgIGZsb2F0IG1fZHVyYXRpb247CkBAIC0xMDgsMTEgKzk3LDExIEBAIGNsYXNzIEJp
dG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR3JhZGll
bnRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKKyAgICBzdGF0aWMgUmVmPEJpdG1h
cEltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBJbWFnZU9i
c2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBCaXRtYXBJbWFnZShuYXRpdmVJbWFnZSwgb2JzZXJ2ZXIpKTsKICAgICB9Ci0gICAg
c3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0g
MCkKKyAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0
bWFwSW1hZ2Uob2JzZXJ2ZXIpKTsKICAgICB9CkBAIC0xNTQsOCArMTQzLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRD
R0ltYWdlUmVmKCkgb3ZlcnJpZGU7Ci0gICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZP
ZlNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBnZXRDR0ltYWdlUmVmKCkgb3ZlcnJpZGU7CisgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgb3Zl
cnJpZGU7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIG92ZXJy
aWRlOwogI2VuZGlmCiAKQEAgLTE3Miw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmpl
Y3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBQYXNzTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAg
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7
IHJldHVybiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KIAogICAg
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGU7CkBAIC0xOTksOCAr
MTg4LDggQEAgcHJvdGVjdGVkOgogICAgICAgQ2VydGFpbiAgICAgLy8gVGhlIHJlcGV0aXRpb24g
Y291bnQgaXMga25vd24gdG8gYmUgY29ycmVjdC4KICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgQml0bWFwSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOwot
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gMCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBJbWFnZU9i
c2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdl
T2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3Zl
cnJpZGU7CkBAIC0yMTQsMTAgKzIwMywxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzaXplX3QgZnJh
bWVDb3VudCgpOwogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3Qs
IGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0
ciBjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBOYXRpdmVJbWFnZVB0ciBm
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEp
OworICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCk7CiAKLSAgICBib29sIGhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBib29sIGhhdmVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KHNpemVfdCk7CiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggYmFiYzRjODVjYzJkZjc0OTU4ZmExYzkxMGU1NmFhY2I4NzE5MGNmMi4uYzUyNGJhMTlk
NWRkYTQwNWM2MGMxNDc4MjE2Mjc5YzBjODU5NjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMwMiw3ICszMDIsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVs
dEltYWdlT3JpZW50YXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKICNlbmRp
ZgogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZTM2YmEzYWE1NmQ1OGMyMDZhOTgzZmY1YmE5
YmZhN2IxMzY1MTE4Mi4uZGJiYmNmNThjMzdiOWE2YjE2NGQ2ZjEzNTFjZDZlMTVlYjQxZDg1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC0xMjQ1LDcgKzEyNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEltYWdlU291
cmNlKiBtX2RlY29kZXI7CiAgICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1faW1hZ2VT
dXJmYWNlOwogI2VsaWYgVVNFKENHKQotICAgICAgICBDR0ltYWdlUmVmIG1fY2dJbWFnZTsKKyAg
ICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICAgICAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IG1fZGVjb2RlZEltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3Jt
YWxpemVkUkdCQThEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmlu
ZGV4IGQ5NWU3ZGViODEwZmMyNGY3ZjYxYjFiMjNhNGI5YWVmM2YzYzE3YjcuLmY2YmJiODIwNmNl
YWI3Y2QzNjM5NjIwODA1MGI0MDMxNjFkYWE2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgKQEAgLTIyLDggKzIyLDggQEAKICNkZWZpbmUgSWNvbl9oCiAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDUsMTkgKzQ1
LDE5IEBAIGNsYXNzIEZsb2F0UmVjdDsKICAgICAKIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxJY29uPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQ
dHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFt
ZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgfkljb24oKTsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihoSWNv
bikpOyB9CisgICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBmb3Igbm9uLWlPUyBwb3J0cyBhbmQg
cmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShOYXRpdmVJbWFnZVB0cik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
NjgsNyArNjgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQotICAg
IEljb24oQ0dJbWFnZVJlZik7CisgICAgSWNvbihjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4m
KTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0o
TUFDKQogICAgIEljb24oTlNJbWFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKaW5kZXggNGVkNmUzNWQ5OWFmYWFiNWI4YmRlYzZmZDdhMTMyMGUyMGQwNDZmNS4u
MDM4OTIwZDcxOWUwMjc5OGVlZGE1OWU1YzM5OGRjYTM1YjYyODQ4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xMzUsMjMgKzEzNSwyMyBAQCBwdWJsaWM6
CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxl
LCBSZXBlYXRUaWxlIH07CiAKLSAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgp
IHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBu
YXRpdmUgaW1hZ2UgZm9ybWF0cy4KIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCBOU0lt
YWdlKiBnZXROU0ltYWdlKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTlNJbWFnZSogZ2V0
TlNJbWFnZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIHsg
cmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgVVNFKENHKQotICAgIHZpcnR1YWwgQ0dJ
bWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgQ0dJbWFn
ZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7
IH0KLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkFycmF5UmVmPiBnZXRDR0ltYWdlQXJyYXkoKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZ2V0Q0dJbWFn
ZVJlZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkFycmF5UmVmPiBnZXRDR0ltYWdlQXJy
YXkoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAg
LTE2MCwxMSArMTYwLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQot
ICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oRUZMKQotICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2
YXNPYmplY3QoRXZhcyopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBn
ZXRFdmFzT2JqZWN0KEV2YXMqKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3
NGVmMDUzYTMzM2ZmNWZjNTc4ZTgxODAwY2M2ZmM5NzU1ZWZiYWI4Li5hZTMxYzk4MzUyMWQ1MDA4
MjI1YzFmYzM0MjljMmM0MGEwMzdlNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0xNDgsMTkgKzE0OCwxOSBAQCBzaXplX3Qg
SW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBt
X2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCkKK05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEltYWdlRnJh
bWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKICAgICBp
ZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFpl
cm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuICBJZiB3
ZSBoYXZlIGFuCiAgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCiAgICAg
aWYgKHNpemUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZl
IGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCiAgICAgLy8gaXMgYWxyZWFkeSBpbiBh
IG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRl
eCBhY2RkMWNlNGNlMzAwZGU4MWM5ZTA2MmVlZTc2MDdiZjQ3MmE3MGFmLi5jMTFmN2JlNDgyOWU0
ZTZiYzQwMTc4OTYzYzFkNTFhMTg2NjBhMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gZGVjb2RlZCBmcmFtZXMuCiAgICAgLy8KICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3Qg
Y2FsbCBjbGVhcihmYWxzZSwgbikgYW5kIHN1YnNlcXVlbnRseSBjYWxsCi0gICAgLy8gY3JlYXRl
RnJhbWVBdEluZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIo
dHJ1ZSkuCisgICAgLy8gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5s
ZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0cnVlKS4KICAgICAvLyBUaGlzIGVuc3VyZXMgdGhh
dCBzdGF0ZWZ1bCBJbWFnZVNvdXJjZXMvZGVjb2RlcnMgd2lsbCB3b3JrIHByb3Blcmx5LgogICAg
IC8vCiAgICAgLy8gVGhlIHxkYXRhfCBhbmQgfGFsbERhdGFSZWNlaXZlZHwgcGFyYW1ldGVycyBz
aG91bGQgYmUgc3VwcGxpZWQgYnkgY2FsbGVycwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVh
cigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkg
YWJvdmUuCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKIAogICAgIGZsb2F0IGZy
YW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkg
YWxwaGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKaW5kZXggOTliOWQ1Y2FkZTczZTBjMWZhZDA5YTc3Y2Y1ZjZkYjI5OGMzN2FhNS4uOTA2
OTViNDQ1NjNhMDhiNGQwY2M2ZDM2YzRmZmQ4MmQ1MWNhMWY4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtODM3LDcgKzgzNyw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkp
OwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCmluZGV4IDVlYTU1ODcxMTA1OTM3ZWVlNDA2M2U3MjU5MmExYWU1NTcxNTQ1Y2IuLmMy
ZTBjZjdiODEzMDgxZDE1MzM3ZDBhOTJlNmNhMzE3ZDBhZTA4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDIzLDcgKzQyMyw3IEBA
IHB1YmxpYzoKICAgICAvLyBodHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lL3Ry
dW5rL3NyYy9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9nbGVzMl9jbWRfY29weV90ZXh0dXJl
X2Nocm9taXVtLmNjIHZpYSBzaGFkZXJzLgogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
LCBHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0
LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSk7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KTsKIAogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGU1NzlhZTkzODU2ZTdkZGM4
NTk2ODY0NzM2MThkYTJhMTRkNmM3OTAuLmQ5MTlmNTQzMzdhNDU3YzEwZWM2OGJhNWEyMGViN2Rl
M2I4ZmVjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYg
YywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29s
IGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBs
YXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdD
M0RlbnVtLCBib29sLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc05h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVk
aWFQbGF5ZXI6OlByZWxvYWQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAppbmRleCBkZjk0MWE1NjZhOWU0NjkyNzcyN2JhMWVj
Njg0OGYyMTY4MDNhNDViLi4wMzQ2NjY1YjM2ZGJlNTY2MWEwOWNlNzFjNGVjYjRhMGMxZThlMjRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgTmF0aXZlSW1hZ2VQdHJfaAogCiAjaWYg
VVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIHR5cGVkZWYgc3RydWN0IENHSW1h
Z2UqIENHSW1hZ2VSZWY7CiAjZWxpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8u
aCIKQEAgLTM4LDIxICszOSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVm
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBOYXRpdmVJbWFnZVB0ciBhbmQg
UGFzc05hdGl2ZUltYWdlUHRyIHNob3VsZCBiZSBzbWFydAotLy8gcG9pbnRlcnMgKHNlZSBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkuCiAjaWYgVVNFKENHKQotdHlwZWRl
ZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwotdHlwZWRlZiBQYXNzUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gUGFzc05hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFdJTkdESSkKIHR5cGVkZWYg
UmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiAjZW5kaWYKIAotI2lmICFVU0Uo
Q0FJUk8pCi10eXBlZGVmIE5hdGl2ZUltYWdlUHRyIFBhc3NOYXRpdmVJbWFnZVB0cjsKLSNlbmRp
ZgotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0NjhiMDY4
MTEwZWJhMjMyZjJiYzZmZjA2MjZlZmJhMjAuLmQ2ZGU3NjJjMWZlMmJmODQ2YWFhZTI0NTNjNmM1
NWIwYmFkY2E5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTI0Nyw3ICsyNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgYm9vbCB2aWRlb091dHB1
dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICAgICB2b2lkIHdhaXRGb3JW
aWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsKIAogICAgIHZvaWQgY3JlYXRlT3BlbkdM
VmlkZW9PdXRwdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDE1NDM3ZGRkOGVkNmYz
ZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLmVjNmY2MDE3ZjM2NGVmODY5ZGVmNTJiNzdiY2Jk
ZjJkNjBlODc2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjM0Niw3ICsyMzQ2LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGgKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3Bp
ZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh2aWRlb1RleHR1cmUuZ2V0KCks
IHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAot
UGFzc05hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAg
dXBkYXRlTGFzdEltYWdlKCk7CiAgICAgcmV0dXJuIG1fbGFzdEltYWdlLmdldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKaW5kZXggMjMwYThmNmI3MjFiNTE1YTMxZTUyMDI2ZWZiMGRlYTRkNGMwMDAxYS4uOTQy
ZjE1ZWI3Nzc3YjczY2U0YTMxOTc3YjVlNzUyMWNkODYyM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBA
IC0xMDA4LDE2ICsxMDA4LDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1Rv
U29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAg
ICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgICAgICBhdXRvIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CiAgICAgICAgIGlmICghbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgLy8gRklYTUU6IHByb2JhYmx5IGRvbid0IG5lZWQgbV91bmNvcnJlY3RlZENvbnRl
bnRzSW1hZ2UgYXQgYWxsIG5vdy4KLSAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0lt
YWdlICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQorICAg
ICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPT0gbmV3SW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZSA9IG5ld0ltYWdlOwotICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7
CisgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbV9wZW5kaW5nQ29udGVudHNJ
bWFnZSA9IFdURk1vdmUobmV3SW1hZ2UpOwogCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgIGlmICghbV9jb250ZW50c0xheWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0
bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBjZDU3ZWU0ODVlYTgwYzZjZjM0N2FiM2JkOTcz
N2Q1OTk5ZTEwMjgyLi45OTMyZGJjYjVkZTE1NmM3MmVhNmVhOTEyMTljYjg1NTMyMDMwMmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6
OkJpdG1hcEltYWdlKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiBuYXRpdmVJbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1f
c2l6ZShjYWlyb1N1cmZhY2VTaXplKG5hdGl2ZUltYWdlLmdldCgpKSkKICAgICAsIG1fbWluaW11
bVN1YnNhbXBsaW5nTGV2ZWwoMCkKQEAgLTU4LDcgKzU4LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1h
cEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNl
cnZlcioKIHsKICAgICBtX2ZyYW1lcy5ncm93KDEpOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxw
aGEgPSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG5hdGl2ZUltYWdlLmdldCgpKSAhPSBDQUlS
T19DT05URU5UX0NPTE9SOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJbWFnZTsK
KyAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gbmF0aXZlSW1hZ2U7CiAgICAgbV9mcmFtZXNbMF0u
bV9oYXZlTWV0YWRhdGEgPSB0cnVlOwogCiAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAKICAgICBzdGFydEFuaW1hdGlv
bigpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1cmZhY2UpIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICBy
ZXR1cm47CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNv
bGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVJ
bWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQn
cyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTU4LDggKzE1OCw4IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0
YWRhdGEpCiAgICAgaWYgKGNsZWFyTWV0YWRhdGEpCiAgICAgICAgIG1faGF2ZU1ldGFkYXRhID0g
ZmFsc2U7CiAKLSAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBtX2ZyYW1lID0gbnVsbHB0cjsK
KyAgICBpZiAobV9pbWFnZSkgeworICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0M0RDYWlyby5jcHAKaW5kZXggY2M3MDQ2MTQ3YWU4MWYxZmFkYWE2ZDg0MTYyNDk4MGM2ZmRm
Y2JmMS4uOGM0MTg2ZDcxZTUzYTE5MDdlOTJkNzNhMmIwMTY0N2ZmZDY2YjFjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbAogICAgICAgICBkZWNvZGVyLnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0
cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFt
ZUlzQ29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAg
ICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhU
TUxWaWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4g
YXBwbGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggZjA3OTIwZjBkMjMyNDYyYzhmYjQxYTAzMjJk
ODIyYWM5ZDVlZDMwNy4uYWNjYTM2NzVjOGQ1MzM2ODgzYmNmMDQ4NDUwOGYyMWUwOWQ3YjhjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJv
cmRlclRoaWNrbmVzcykKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2VQdHIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2OSw4ICsyNjksNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwg
Y29uc3QgRmxvYXRTaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2UgPSBpbWFnZVB0cjsKLQogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zYXZlKCk7CiAK
ICAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KQEAgLTI5Myw3ICsyOTEsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaQogICAgICAgICB9CiAgICAgfQogCi0gICAgcGxhdGZv
cm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KGltYWdlLmdldCgpLCBkc3QsIHNyY1Jl
Y3QsICp0aGlzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQo
aW1hZ2VQdHIuZ2V0KCksIGRzdCwgc3JjUmVjdCwgKnRoaXMpOwogICAgIHBsYXRmb3JtQ29udGV4
dCgpLT5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKaW5kZXggMDFiN2Q2OTJjZGJkN2FiNGQyMmJi
YzEzOTljMTAzMjhmNTdlNWU0Ny4uZmQ2MzZlMTIzN2EwNDNjMWNkNjljYzM5MzlkNzFkNzA1YjYw
N2NhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0
bWFwSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Qml0bWFwSW1hZ2VDRy5jcHAKQEAgLTU4LDE4ICs1OCwxNyBAQCBib29sIEZyYW1lRGF0YTo6Y2xl
YXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIG1fb3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbjsKICAgICBtX3N1YnNhbXBsaW5nTGV2ZWwgPSAwOwogCi0gICAgaWYgKG1fZnJh
bWUpIHsKKyAgICBpZiAobV9pbWFnZSkgewogI2lmIENBQ0hFX1NVQklNQUdFUwotICAgICAgICBz
dWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ZyYW1lKTsKKyAgICAgICAgc3ViaW1hZ2VDYWNo
ZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgQ0dJbWFnZVJl
bGVhc2UobV9mcmFtZSk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOworICAgICAgICBtX2ltYWdlID0g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJ
bWFnZShvYnNlcnZlcikKICAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAs
IG1faW1hZ2VPcmllbnRhdGlvbihPcmlnaW5Ub3BMZWZ0KQpAQCAtODksOCArODgsOCBAQCBCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVD
b3VudCh0cnVlKQogewotICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFn
ZSk7Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOworICAg
IENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIENHRmxv
YXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAgbV9kZWNvZGVk
U2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBo
ZWlnaHQpOwogCkBAIC05OSw3ICs5OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0lt
YWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3Bl
Y3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAg
bV9mcmFtZXNbMF0ubV9mcmFtZSA9IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7CisgICAgbV9mcmFt
ZXNbMF0ubV9pbWFnZSA9IGltYWdlOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVl
OwogICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIApAQCAtMTM2LDcgKzEz
NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZy
YW1lQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaGF2ZUZyYW1lQXRJ
bmRleCgwKSkgeworICAgIGlmICghaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KDApKSB7CiAgICAgICAg
IEludFNpemUgc2l6ZSA9IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiAgICAgICAg
IGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xNDUsMTUgKzE0NCwxNSBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0Zv
clNvbGlkQ29sb3IoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENHSW1hZ2VS
ZWYgaW1hZ2UgPSBudWxscHRyOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKICAg
ICBpZiAobV9mcmFtZXMuc2l6ZSgpKQotICAgICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1fZnJh
bWU7CisgICAgICAgIGltYWdlID0gbV9mcmFtZXNbMF0ubV9pbWFnZTsKIAogICAgIGlmICghaW1h
Z2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZv
ciBzb2xpZCBjb2xvciBpbiB0aGUgaW1wb3J0YW50IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFn
ZS4KLSAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSAxICYmIENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpID09IDEpIHsKKyAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSA9
PSAxICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpID09IDEpIHsKICAgICAgICAgdW5z
aWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWws
IDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCiAgICAgICAgICAg
ICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJp
ZykpOwpAQCAtMTYxLDcgKzE2MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRD
b2xvcigpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dChiaXRt
YXBDb250ZXh0LmdldCgpKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CiAg
ICAgICAgIENHUmVjdCBkZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpOwot
ICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRp
b25SZWN0LCBpbWFnZSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0
LmdldCgpLCBkZXN0aW5hdGlvblJlY3QsIGltYWdlLmdldCgpKTsKICAgICAgICAgaWYgKCFwaXhl
bFszXSkKICAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAsIDAsIDAsIDApOwogICAg
ICAgICBlbHNlCkBAIC0xNzEsMTggKzE3MCwxOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0Zv
clNvbGlkQ29sb3IoKQogICAgIH0KIH0KIAotQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJ
bWFnZVJlZigpCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VS
ZWYoKQogewotICAgIHJldHVybiBmcmFtZUF0SW5kZXgoMCk7CisgICAgcmV0dXJuIGZyYW1lSW1h
Z2VBdEluZGV4KDApOwogfQogCi1DR0ltYWdlUmVmIEJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1h
Z2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBC
aXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFt
ZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmIChjZ0ltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdp
ZHRoKGNnSW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpKSA9PSBzaXplKQotICAgICAg
ICAgICAgcmV0dXJuIGNnSW1hZ2U7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGlt
YWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpID09IHNpemUpCisgICAg
ICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGRl
ZmF1bHQgQ0dJbWFnZVJlZiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSByaWdodCBzaXplCkBAIC0xOTMs
MTIgKzE5MiwxMiBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VBcnJheSgpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGlmICgh
Y291bnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
ICAgICBDRk11dGFibGVBcnJheVJlZiBhcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKE5VTEws
IGNvdW50LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKENHSW1hZ2VSZWYgY3VyckZyYW1lID0gZnJh
bWVBdEluZGV4KGkpKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJy
RnJhbWUpOworICAgICAgICBpZiAoYXV0byBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChp
KSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lLmdldCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwogfQpAQCAtMjE0LDEyICsyMTMs
MTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGlu
dG8gUERGIGNvbnRleHRzLgogICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBs
YXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNvcHlVbnNjYWxlZEZy
YW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOworICAgICAgICBpbWFnZSA9IGNvcHlVbnNjYWxl
ZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBlbHNlIHsKICAgICAgICAg
Q0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFu
c2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7
CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3Rk
OjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lk
dGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0Lmhl
aWdodCgpKSk7CiAKLSAgICAgICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUs
IHN1YnNhbXBsaW5nU2NhbGUpOworICAgICAgICBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1f
Y3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKICAgICB9CiAKICAgICBpZiAoIWltYWdl
KSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KQEAgLTI0
NSwyNCArMjQ0LDI0IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRlc2NyaXB0
aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24p
CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50
RnJhbWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVu
dGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24p
OwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
aWREcmF3KHRoaXMpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmNvcHlV
bnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2ZyYW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsKIAogICAgIGlm
ICghbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIENH
SW1hZ2VSZXRhaW4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpOworICAgICAgICByZXR1cm4gbV9m
cmFtZXNbaW5kZXhdLm1faW1hZ2U7CiAKLSAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVB
dEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDZjMDNhMmNlZjg0
NjA2NTYxZWEwN2ViOTI4ZjFjZjI5NWY5ZjVlMzYuLjk5ZjA5ZGI2N2JhNTQyODJkYzRlZDcwNWFl
NDE2MzgwMzM3MTkzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0zMzMsMTUgKzMzMywx
NSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVD
b3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fZGVjb2RlZElt
YWdlID0gYWRvcHRDRihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7Ci0gICAgICAgIG1f
Y2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9
IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAgIG1fY2dJbWFnZSA9
IG1fZGVjb2RlZEltYWdlOwogICAgIH0gZWxzZQogICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbV9jZ0ltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgo
bV9jZ0ltYWdlKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1h
Z2UpOworICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2UuZ2V0KCkp
OworICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5nZXQoKSk7
CiAgICAgaWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMzQ5LDcgKzM0OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Oklt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAg
ICAgLy8gc28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdl
IHJlLXBhY2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0
YWJsZSBpbmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZSk7CisgICAg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1h
Z2UuZ2V0KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dDb2xvclNwYWNlR2V0
TW9kZWwoY29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9yU3BhY2VNb2RlbElu
ZGV4ZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dDsK
QEAgLTM2NCwyMiArMzY0LDIyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAKICAgICAgICAg
Q0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNv
cHkpOwogICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShiaXRtYXBDb250
ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwg
bV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShi
aXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFn
ZUhlaWdodCksIG1fY2dJbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93IGRpc2NhcmQgdGhl
IG9yaWdpbmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5IGZyb20gdGhlIGJp
dG1hcCBjb250ZXh0LgogICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBtX2NnSW1h
Z2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKICAgICB9CiAKLSAgICBzaXplX3QgYml0c1BlckNv
bXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFnZSk7Ci0gICAgc2l6
ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlKTsKKyAg
ICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1f
Y2dJbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRz
UGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4
ICYmIGJpdHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVy
Q29tcG9uZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFw
SW5mbyhtX2NnSW1hZ2UpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJp
dG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9IGZh
bHNlOwogICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8gb25l
IGxhcmdlIHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8gc28g
dGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQyMSw3ICs0MjEsNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbAogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7CiAgICAgQWxwaGFG
b3JtYXQgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChDR0ltYWdl
R2V0QWxwaGFJbmZvKG1fY2dJbWFnZSkpIHsKKyAgICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUlu
Zm8obV9jZ0ltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbV9h
bHBoYU9wID0gQWxwaGFEb1VubXVsdGlwbHk7CkBAIC00NjEsMTQgKzQ2MSwxNCBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbAogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0ID09IERhdGFGb3Jt
YXROdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BpeGVsRGF0YSA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1f
Y2dJbWFnZSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5
RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKICAgICBpZiAo
IW1fcGl4ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2ltYWdlUGl4ZWxE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX3Bp
eGVsRGF0YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQgaW50IHNyY1VucGFja0FsaWdubWVudCA9
IDA7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1fY2dJ
bWFnZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1f
Y2dJbWFnZS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVzUGVyUm93IC0gYml0
c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGluZykgewogICAgICAg
ICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTUzNiw3ICs1MzYsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0x
KSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2FudmFzUmVj
dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7Cisg
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE0NDk2NTQw
NDZhZThmMTBhYmFkMTY0MTVlNjQ2MGFkYmJiYjhlODguLjRjOGI3YmQwMzI4NTU3ZjIxMjBlMDJk
ZjRlZTYyYzNkN2E1YmM0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0
YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdl
UmVmPiYgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMSw4
ICszMTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgIGZsb2F0IGFkanVzdGVkWCA9
IHBoYXNlLngoKSAtIGRlc3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRoZSBjb250
ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91
dC4KICAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAtIChwaGFzZS55KCkg
LSBkZXN0UmVjdC55KCkgKyB0aWxlUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBh
dHRlcm5UcmFuc2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVIZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJl
ZiB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGZs
b2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZSk7CisgICAgYXV0byB0aWxlSW1hZ2Ug
PSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGZsb2F0IGggPSBDR0lt
YWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gc3ViSW1hZ2U7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzI2LDEzICszMjYsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFnZSBvdXQg
b2YgYSBwYXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9y
aWdpbmFsIGltYWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJlY2F1c2Ug
c3ViLWltYWdlcyBhcmUgb25seSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVu
ZGVycyB3aGVuIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NFUlQoaCA9
PSBpbWFnZS5oZWlnaHQoKSk7Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsKKyAgICAgICAgc3ViSW1h
Z2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLmdldCgp
LCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBi
ZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Ig
bm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50
IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0g
dGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9y
bS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlKTsKKyAgICBm
bG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQoKSk7CiAgICAgaWYgKHcgPT0g
aW1hZ2Uuc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNw
YWNpbmcud2lkdGgoKSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhNRTog
Q0cgc2VlbXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNh
cmUgKGUuZy4gd2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdl
IHNob3VsZCB0aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2Ug
dG8gZml0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZVNvdXJjZUNHLmNwcAppbmRleCBkNGEwMTJiNmY1N2JmNTM5MzA2NDc3N2I2YzEwOTM2NmIy
NGM0NDVjLi41MDE1ZGQxNWFiZmM4MjVkY2ViMDMyMGYxMjAyOWNiYTUxMjE4Mjc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2Rl
Y29kZXIpIDogMDsKIH0KIAotQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmV0
YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBp
ZiAoIWluaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY2LDE4ICsz
NjYsMTUgQEAgQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJp
bmdSZWYgeGJtVVRJID0gQ0ZTVFIoInB1YmxpYy54Yml0bWFwLWltYWdlIik7CiAKICAgICBpZiAo
IWltYWdlVVRJKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICByZXR1
cm4gaW1hZ2U7CiAKICAgICBpZiAoIUNGRXF1YWwoaW1hZ2VVVEksIHhibVVUSSkpCi0gICAgICAg
IHJldHVybiBpbWFnZS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBpbWFnZTsKICAgICAKICAg
ICAvLyBJZiBpdCBpcyBhbiB4Ym0gaW1hZ2UsIG1hc2sgb3V0IGFsbCB0aGUgd2hpdGUgYXJlYXMg
dG8gcmVuZGVyIHRoZW0gdHJhbnNwYXJlbnQuCiAgICAgY29uc3QgQ0dGbG9hdCBtYXNraW5nQ29s
b3JzWzZdID0gezI1NSwgMjU1LCAgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gbWFza2VkSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoTWFza2lu
Z0NvbG9ycyhpbWFnZS5nZXQoKSwgbWFza2luZ0NvbG9ycykpOwotICAgIGlmICghbWFza2VkSW1h
Z2UpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Ci0KLSAgICByZXR1cm4gbWFza2Vk
SW1hZ2UubGVha1JlZigpOworICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDog
aW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6
ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Bh
dHRlcm5DRy5jcHAKaW5kZXggYjMwMzNmZTA1MTBmNzlkMjUxMmE0MDZiYjFiZGRmMjk1YWZhNWEz
NC4uNzg5YjdmOGM4ZDFmMjdjMzFkODIzZTQ0NzdkNGZmODY5MzYzNTk0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC03MSwx
MCArNzEsMTIgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBwYXR0ZXJuVHJhbnNmb3Jt
LnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUo
MCwgLXRpbGVSZWN0LmhlaWdodCgpKTsKIAorICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0
Zm9ybUltYWdlID0gdGlsZUltYWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKwogICAgIC8vIElmIHdl
J3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2Vk
IHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0
aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkp
Ci0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0
aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5U
aWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVX
aXRoSW1hZ2VBbmRUcmFuc2Zvcm0ocGxhdGZvcm1JbWFnZS5nZXQoKSwgcGF0dGVyblRyYW5zZm9y
bSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVgg
c2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVy
ZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90
aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTg1LDEwICs4Nyw4IEBAIENHUGF0dGVyblJlZiBQYXR0
ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3Bh
Y2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgp
IDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0lt
YWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
Ci0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0aWxlSW1hZ2Uo
KS0+Z2V0Q0dJbWFnZVJlZigpKTsKLQogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0
ZXJuQ2FsbGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJh
Y2sgfTsKLSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFu
dFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4gQ0dQYXR0ZXJu
Q3JlYXRlKHBsYXRmb3JtSW1hZ2UubGVha1JlZigpLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAm
cGF0dGVybkNhbGxiYWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcAppbmRleCAwMjRjYmZlMDBiNTIyMzM5MzM1OTIwZjlmODUzNGM4MzZkYWNjZjg4Li5mMzU0
ODljMzQ5YmFmZTViMmMwZmViM2YxN2MyMzNkMDUwMzY4ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCkBAIC00OTEsNyArNDkxLDcgQEAgc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdUaWxlZFNjYWxlZEltYWdlJiBp
dGVtKQogfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi1EcmF3TmF0aXZlSW1hZ2U6OkRy
YXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2UpCiAjaWYgVVNFKENHKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdl
IGZvciBDYWlyby4KQEAgLTUxNiw3ICs1MTYsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaQog
dm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKICNpZiBVU0UoQ0cpCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZVB0
ci5nZXQoKSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcCwgbV9i
bGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1f
aW1hZ2VQdHIsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBtX3NyY1JlY3QsIG1fb3AsIG1f
YmxlbmRNb2RlLCBtX29yaWVudGF0aW9uKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRl
eHQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA1YTg0OTY0
YzU3OWIzMmZkYzBlYzZlZjE0NWY2NDI2MGYxMzVhZmZmLi40ZjEzNTFlYmIyMzA2NTFjNTVlMTM2
NWE2MTYwNGUzMzY0MzFlZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAg
LTYzOSw3ICs2MzksNyBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogY2xh
c3MgRHJhd05hdGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFn
ZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCisgICAgc3RhdGlj
IFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2VQ
dHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlUHRyLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpOwogICAg
IH0KQEAgLTY0OCw3ICs2NDgsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgotICAgIERyYXdO
YXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgRHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKIAogICAgIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA1ZTUyZWM5MTkyM2Q0NTlmMDgyMjE5
MWY2NjlkMGMwMGVlZGYyNThhLi5kNDc1ZDUwZWQ1YzllN2RjMGYxMjg0YzUyYzllODk4YmMyODQ1
NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMTks
NyArMTE5LDcgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdAogfQogCiAjaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdl
UHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3Zv
aWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2VQ
dHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIERyYXdp
bmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05h
dGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3
SXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBhNWQyYzcx
YTI1ZWJkYmZlNGYzYmE3ZmRhY2QxZjJkZTU4ODZkYzUwLi5lYjk5YTNkZGEwMGQzMTcwY2ZjOGYw
ODZhNDAyOWNiYmNlMWNkM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1
bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
ICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShQYXNz
TmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOwogI2VuZGlmCiAgICAgdm9pZCBk
cmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCmluZGV4
IGJhNDE1OTdhYTExMDFkYjYyOTAyM2QyNzNiMjAwZTc4MWQzM2FhYzkuLjU5Y2MyYzliZThiM2Zm
ZTExMTg2YTY4NWQyZThjZjU5NGMxZDM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcApA
QCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9y
OjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlmICgh
ZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgw
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9
IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9
IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1
dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFs
cGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAKaW5kZXggOWM5MmMwODUzYzI2MWM3NjBh
N2MwODFmNmM4N2U5OTBiMWI4OGRhYi4uMDdiZWJlNjk0OWMxYzg0YTFlNzg2NDIxYzBlOWQ3YWY3
NzdlNzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0ljb25FZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9J
Y29uRWZsLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC01MSwxMCArNTEsMTAgQEAgSWNvbjo6fkljb24oKQogewogfQogCi1QYXNzUmVmUHRyPElj
b24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitSZWZQ
dHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SWNvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0
ay5jcHAKaW5kZXggNTk0NWUxZjhjNGI0NzQ0OGYzNDg1ZmM2NGJiNTc2NTdhZjRjMzhmZS4uODgw
YzRjOTc5NGE1ZWQ2ZDNhYzJmOGE2NzQ3Y2MyMTI2OTJkMjE5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBTdHJpbmcgbG9v
a3VwSWNvbk5hbWUoU3RyaW5nIE1JTUVUeXBlKQogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY29k
ZSB0byBDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJY29u
OjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK1Jl
ZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
SWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9T
Lm1tCmluZGV4IDIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIyNDliODFkOWQ3NmEuLjM2YjI0
ZjVjZmYwYTZiNjFlNTQ1NzQ2NzMyYjYyNmNkMzk4N2NiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUljb246Okljb24oQ0dJbWFnZVJlZiBpbWFnZSkK
K0ljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIDogbV9jZ0ltYWdl
KGltYWdlKQogewogfQpAQCAtNDIsMTcgKzQyLDE3IEBAIEljb246On5JY29uKCkKIHsKIH0KIAot
UGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIC8qZmlsZW5hbWVzKi8pCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQogewogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShO
YXRpdmVJbWFnZVB0ciBpbWFnZVJlZikKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9y
SW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKIHsKLSAgICBpZiAoIWlt
YWdlUmVmKQorICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGltYWdlUmVmKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJY29uKGltYWdlKSk7CiB9CiAKIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL1RleHRUcmFja1JlcHJlc2VudGF0aW9uSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL1RleHRUcmFja1JlcHJl
c2VudGF0aW9uSU9TLm1tCmluZGV4IDllZjU2YThiN2MyYzQ2ZTNiNWQzYjA5MThiMDJjM2IxOThl
YmY2OTguLmUwMDE2MWRhMDRjZGU0MTM0OWY4ZjVkMzhlZTI1Y2MyNmMwZjhjOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0KQEAgLTEyMCw3ICsxMjAsNyBAQCBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbklPUzo6flRleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TKCkKIHZvaWQg
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1M6OnVwZGF0ZSgpCiB7CiAgICAgaWYgKGF1dG8gcmVw
cmVzZW50YXRpb24gPSBtX2NsaWVudC5jcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdl
KCkpCi0gICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlv
bi0+Z2V0Q0dJbWFnZVJlZigpXTsKKyAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHM6
KGlkKXJlcHJlc2VudGF0aW9uLT5nZXRDR0ltYWdlUmVmKCkuZ2V0KCldOwogfQogCiB2b2lkIFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uSU9TOjpzZXRDb250ZW50U2NhbGUoZmxvYXQgc2NhbGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCmluZGV4
IDRjZmM1MmZkYzEzNTdkZWYxNjkzZGExNzlhYjg0MmU2YzQ1OGY5OTQuLmU0NjA1ZGUyMDAzYmRm
MDY2MzczNTAzNzAwYWIwMTAyZDZjMzU2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJJ
bnRSZWN0LmgiCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNpbXBv
cnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDcsNyBAQCBJY29uOjp+SWNvbigpCiB9CiAKIC8vIEZJ
WE1FOiBNb3ZlIHRoZSBjb2RlIHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCi1QYXNz
UmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZW5hbWVzKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBmZjA3MTMxYTYxZmNlZDA0NTg2YjM3
MmQ5YmEyMDc5YTk4NzNjMzhiLi5mOTEyZGUxZGQwYWViZGM0OGI1MDJkOGQ5NGU1ZTU5NGM4OWY2
ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCkBAIC05MywxMSArOTMsMTEgQEAgQ0ZEYXRhUmVmIEJpdG1hcEltYWdlOjpnZXRUSUZG
UmVwcmVzZW50YXRpb24oKQogICAgIGlmICghbnVtRnJhbWVzKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFZlY3RvcjxDR0ltYWdlUmVmPiBpbWFnZXM7CisgICAgVmVjdG9yPFJldGFpblB0cjxD
R0ltYWdlUmVmPj4gaW1hZ2VzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFt
ZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkp
OworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KGkpOwogICAgICAgICBpZiAoY2dJbWFnZSkKLSAgICAgICAgICAgIGltYWdlcy5hcHBlbmQo
Y2dJbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKFdURk1vdmUoY2dJbWFnZSkpOwog
ICAgIH0KIAogICAgIHVuc2lnbmVkIG51bVZhbGlkRnJhbWVzID0gaW1hZ2VzLnNpemUoKTsKQEAg
LTEwOSw3ICsxMDksNyBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRh
dGlvbigpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bVZhbGlkRnJhbWVzOyArK2kpCi0gICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdl
KGRlc3RpbmF0aW9uLmdldCgpLCBpbWFnZXNbaV0sIDApOworICAgICAgICBDR0ltYWdlRGVzdGlu
YXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2VzW2ldLmdldCgpLCAwKTsKIAog
ICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCmluZGV4
IGE3ODA3MGQ5YWFhZjdmNGUyYTMxODllZTE0OGE2YTVjNzkzODhjMDUuLmEzOTQ2Y2FmNGY4M2Uw
MGNmZDFiOTlhNThmMmM5OTIyMzE3OWI0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgSWNvbjo6fklj
b24oKQogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY29kZSB0byBDaHJvbWVDbGllbnQ6Omljb25G
b3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAo
ZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXggODM1ZWNm
M2Y0ZmVlZWI4YTBkZmE4ZDM2OTczMTI4ZjNiODA3YjkyNi4uZGUwYTcwYmY4YTA2YTRjZWZkNTlm
YWUyMzljODk1NzAzNDk2OGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtOTAsOCArOTAsOCBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVm
IGltYWdlID0gZnJhbWVBdEluZGV4KGkpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAm
JiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53
aWR0aCgpKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBmcmFtZUlt
YWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJ
bWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUu
d2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRG
cmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKICAgICAgICAgICAgIGRyYXco
Y3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3Jj
U2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCAyOWEyMDIzZGI2M2E5MTQzNGMz
OTQ4ZWFhNTUyM2JiNjFmZTgxMDc1Li45N2VkMDk3OTM1YzUxZmMyMGE4NDVjOTU4ZTE1Njk4ZDIw
MDBkYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKICAgICAgICAgaWYgKCFz
dXJmYWNlKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggZmM4N2Y4MzQw
MzMxOTU1NzNmNTY3ZmMwNThjN2M3M2Q4NThhMTk3YS4uYjM1NDdkOTRlODA4Zjg3NGFlZDlkYTBm
MjkxYmVjZTIwYTY0NjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIgdG8g
dGhlIHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCiAgICAgICAgIC8vIChBY3R1YWwgdXNl
OiBUaGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBCaXRtYXBJbWFnZSBhbmQgZnJlZWQgaW4K
ICAgICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4KLSAgICAgICAgUGFzc05hdGl2ZUltYWdl
UHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgYXNO
ZXdOYXRpdmVJbWFnZSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsK
ICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5j
cHAKaW5kZXggM2ZlNzA0MDIzNDE5ZDk3NTNiMTM5OWQ5ZjZjMDBiNjczOTQ1MTI5Ni4uN2I0MTI5
NWY4NTczNThmYmJmMzVjMWIwNTI1ZThkNmNjMzUyMGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
RGVjb2RlckNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29u
c3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0
YSgKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQ
aXhlbERhdGEqPihtX2J5dGVzKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAppbmRleCA0MmVhNWVlNTM0MjFhNzdkMDdlMzRlNmY4MGI0MzNjNjIwNzM3YjhjLi5jMTVm
YWZiZDhlYTFiNjEzMjQ4NjU2NTRkOTQ5NDJkZmVkNDY1MzU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE4MCwxNyArMTgwLDE3IEBAIHZvaWQgU1ZHSW1h
Z2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFNpemUgY29udGFpCiB9CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9m
IHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBQYXNzTmF0aXZlSW1hZ2VQdHIgbmVl
ZHMKKy8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVy
IHNvIE5hdGl2ZUltYWdlUHRyIG5lZWRzCiAvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4K
LVBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KQorTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkK
IHsKICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgLy8gQ2Fpcm8gZG9lcyBub3QgdXNlIHRoZSBhY2NlbGVyYXRlZCBkcmF3
aW5nIGZsYWcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVy
YXRlZCBidWZmZXIuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFidWZm
ZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCks
IHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKaW5kZXggODcwZjZjODVjNWU2ODRlMTc3YzMwZDE2YzIxNjZhMzQwZGNkNWE3Yi4uNDkxZGRm
YjNjMjEzOWVmODgyMTAxZDFhZjQ1YjVhZWYxMTBjNGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
ZXRBbmltYXRpb24oKSBvdmVycmlkZTsKIAogI2lmIFVTRShDQUlSTykKLSAgICBQYXNzTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogI2VuZGlm
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCA0ZTE2MWUzZjBkNDRhNmFhNmVhNmMwM2Y1ZWQ5YWJj
MTllYmFlYTFkLi43ZTE0M2RlZDJkNjY5YWIzYWMwOWM0OTZiNGU0YmVlN2RjODdmMjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBtX2lt
YWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1f
em9vbSwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0
ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdl
UHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7
CiAgICAgcmV0dXJuIG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5o
CmluZGV4IDM1OTc1NDI4OWZjMzA0MjE4Y2RiOGJmMTIwM2I4NzNjMjlmZDUyZDIuLmQyMjRmYzQ2
MTJmZDk1YTFhZWE3N2FmYjQ0Nzk3NjkyMzUyN2FjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC02Myw3ICs2Myw3IEBA
IHB1YmxpYzoKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2
YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNv
bnRhaW5lcihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwg
ZmxvYXQgem9vbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGQ3MWU2NjQzYjNj
MjEyYjJkYjY0NGIzMTUyOTRiMWMzYmM3NmZjZjguLjJhNTlmZDZiN2ZkNGZmYjYyMzE5MGYyYzVl
ODg3NDI3NzdkNDg5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2Fj
aGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQpAQCAtMjA0LDcg
KzIwNCw3IEBAICsgKENHSW1hZ2VSZWYpaW1hZ2VGb3JVUkw6KE5TVVJMICopdXJsCiAgICAgV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVk
SW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZS5oYXNJbWFnZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2Uo
KS0+Z2V0Q0dJbWFnZVJlZigpOworICAgIHJldHVybiBjYWNoZWRJbWFnZS5pbWFnZSgpLT5nZXRD
R0ltYWdlUmVmKCkubGVha1JlZigpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNl
Q0cuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNl
Q0cuY3BwCmluZGV4IDBmNmRlN2ExNDZhNjExYTUyYWExZTUzOTAxOWZhNmMxYzQ2NzI1YWUuLjY3
N2ZiODMyZTg5NWYzZGIxZDRhZWVlYzBmNzQyN2NkOTgyMDQyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKQEAg
LTM3LDEyICszNywxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIENHSW1hZ2VSZWYgV0tJ
Y29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRh
YmFzZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1NpemUgc2l6ZSkKIHsKICAgICBJbWFnZSogaW1h
Z2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5n
KHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRGaXJzdENHSW1hZ2VSZWZP
ZlNpemUoSW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxp
bnQ+KHNpemUuaGVpZ2h0KSkpIDogMDsKKyAgICByZXR1cm4gaW1hZ2UgPyBpbWFnZS0+Z2V0Rmly
c3RDR0ltYWdlUmVmT2ZTaXplKEludFNpemUoc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKSwg
c3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCkpKS5sZWFrUmVmKCkgOiBudWxscHRyOwogfQog
CiBDRkFycmF5UmVmIFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTChXS0lj
b25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKICAgICBJ
bWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJMKHRv
V1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRDR0ltYWdl
QXJyYXkoKS5sZWFrUmVmKCkgOiAwOworICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRDR0lt
YWdlQXJyYXkoKS5sZWFrUmVmKCkgOiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNjhlYTIzMzRmZWJjMDQz
OGMzN2IxNDgwZjdlMTlhNGVkMzk3ZjBhMi4uZWJjMWQwOTg3MjVkZjAyOTRmOTJhYTEyNGU4MjE0
ZTE1MmVlNTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtMTcxOSwyMSArMTcxOSwyMSBAQCB2b2lkIFBsdWdpblZpZXc6Ondp
bmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qg
d2luZAogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9y
KEJpdG1hcEltYWdlKiBiaXRtYXApCiB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1hcC0+
Z2V0Q0dJbWFnZVJlZigpOwotICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChp
bWFnZSkgPT0gOCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYml0bWFwLT5n
ZXRDR0ltYWdlUmVmKCk7CisgICAgQVNTRVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGlt
YWdlLmdldCgpKSA9PSA4KTsKIAotICAgIENHQml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0ltYWdl
R2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1h
Z2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgpKTsKICAgICBpZiAoIShpbWFnZUluZm8gJiBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfHwgKGltYWdlSW5mbyAmIGtDR0JpdG1hcEFscGhhSW5m
b01hc2spICE9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHsKICAgICAgICAgLy8g
RklYTUU6IENvbnNpZGVyIGJlaW5nIGFibGUgdG8gaGFuZGxlIG90aGVyIHBpeGVsIGZvcm1hdHMu
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsKLSAgICBz
aXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZSk7Ci0gICAgc2l6ZV90IGJ5dGVz
UGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdlKTsKKyAgICBzaXplX3Qgd2lkdGgg
PSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0lt
YWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UuZ2V0KCkpOwogCi0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERh
dGFQcm92aWRlcihpbWFnZSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGlt
YWdlLmdldCgpKSkpOwogICAgIGNvbnN0IFVJbnQ4KiBkYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihw
cm92aWRlci5nZXQoKSk7CiAKICAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3Rz
IG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274560</attachid>
            <date>2016-03-20 20:24:27 -0700</date>
            <delta_ts>2016-03-23 15:01:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160320202428.patch</filename>
            <type>text/plain</type>
            <size>91026</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uODEzOTgyYTNhOTg1OWRhNmM2ZGU1MDIyZTEyYmYw
ZGJiMDIyMzU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxMiBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZpbmcgTmF0aXZl
SW1hZ2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBv
ZgorICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrcyB3
YXMgZG9uZSB0byBlbnN1cmUgdGhlIENHCisgICAgICAgIHBvaW50ZXIgaXMgbWFpbnRhaW5lZCBj
b3JyZWN0bHkuIEl0IHdhcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBtb3ZlIGEKKyAgICAgICAgRnJh
bWVEYXRhIHNpbmNlIGNhbGxpbmcgdGhlIGRlc3RydWN0b3Igd2FzIHJlbGVhc2luZyB0aGUgQ0dJ
bWFnZVJlZi4KKworICAgICAgICBXaXRoIHRoaXMgY2hhbmdlLCBQYXNzTmF0aXZlSW1hZ2VQdHIg
aXMgbm90IG5lZWRlZCBhbnltb3JlLiBTbyBhbGwgdGhlCisgICAgICAgIGluc3RhbmNlIG9mIFBh
c3NOYXRpdmVJbWFnZVB0ciB3aWxsIGJlIHJlcGxhY2VkIGJ5IE5hdGl2ZUltYWdlUHRyLgorCisg
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgZ2V0UHJl
dmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6IHRyYW5zZmVyIHRoZSBvd25lcnNoaXAKKyAg
ICAgICAgb2YgdGhlIHJldHVybmVkIHBvaW50ZXIgdG8gQ0ZBdXRvcmVsZWFzZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0TlNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0R2RrUGl4YnVmKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRFdmFzT2JqZWN0KToK
KyAgICAgICAgQ2hhbmdlIGFsbCB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUg
UmV0YWluUHRyPENHSW1hZ2VSZWY+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgIENoYW5nZSBmdW5jdGlvbidzIG5hbWUgYW5kIHJlcGxhY2UgUGFzc05h
dGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUlt
YWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICBNYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQg
cG9pbnRlciBmb3IgQ0cuIEdldCByaWQgb2YgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHNp
bmNlIE5hdGl2ZUltYWdlUHRyIGlzIG5vdyBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3Jt
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2
ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICBTaW5jZSBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSByZXR1cm5zIGEgUmV0YWluUHRyLCBtb3ZlIGl0CisgICAg
ICAgIHRvIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgdG8gcmVtb3ZlIHRoZSByZWZjb3VudCBjaHVy
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgIFJlcGxhY2UgbV9mcmFtZSB3aXRoIG1faW1hZ2UgYW5kIGZyYW1l
KiB3aXRoIGZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIFJlcGxhY2Ug
KkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpj
bGVhcik6IE5vIG5lZWQgdG8gY2FsbCBDR0ltYWdlUmVsZWFzZSgpLiBKdXN0IGFzc2lnbgorICAg
ICAgICBtX2ltYWdlIHRvIG51bGxwdHIgYW5kIGl0IHdpbGwgY2FsbGVkIGZyb20gdGhlIFJldGFp
blB0ciBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBS
ZXBsYWNlIENHSW1hZ2VSZWYgd2l0aCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4uIFJlcGxhY2UKKyAg
ICAgICAgKkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICBVc2Ug
bV9jZ0ltYWdlLmdldCgpIGluc3RlYWQgb2YgbV9jZ0ltYWdlIHdoZW4gY2FsbGluZyBDRyBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgR2V0IHRoZSByYXcgQ0dJbWFnZVJlZiBmcm9tIHRoZSBOYXRpdmVJbWFnZVB0ciB3aGVu
IGNhbGxpbmcgdGhlIENHIGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUg
ZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJpYWJsZQor
ICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVycy4KKyAg
ICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAg
IExlYWsgdGhlIHJhdyBDR0ltYWdlUmVmIGZyb20gdGhlIE5hdGl2ZUltYWdlUHRyIHNpbmNlIENH
UGF0dGVybkNyZWF0ZSB3aWxsCisgICAgICAgIHJlbGVhc2UgaXQgdGhyb3VnaCB0aGUgY2FsbGJh
Y2tzLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
OgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRy
IGFuZCB1c2UgY29uc3RhbnQgcmVmZXJlbmNlLiAKKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAg
ICAgICAgQ2FsbCBhIGZ1bmN0aW9uIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAgICAKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JY29uR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9UZXh0VHJhY2tSZXByZXNlbnRh
dGlvbklPUy5tbToKKyAgICAgICAgKFRleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TOjp1cGRhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgVXNlIHNtYXJ0IHBv
aW50ZXJzIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycyBDR0lt
YWdlUmVmLgorICAgICAgICBBbmQgY2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyLgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKTogQ29sbGVjdCB0
aGUgbmF0aXZlIGltYWdlcworICAgICAgICBpbiBhIHZlY3RvciBmb3Igc21hcnQgcG9pbnRlcnMu
CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6IENoYW5nZSBQYXNz
UmVmUHRyIHRvIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGgg
aXRzIG5ldyBuYW1lIGFuZCByZWNlaXZlIHRoZSByZXR1cm4gdmFsdWUgaW4gYSBzbWFydCBwb2lu
dGVyIGxvY2FsCisgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rpb24K
KyAgICAgICAgd2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5l
cjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oOgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0
ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorICAgICAgICAKIDIwMTYtMDMtMTggIFpodW8gTGkgIDx6
YWNobGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBBdXRvRmlsbCBidXR0b24gaW4gaW5w
dXQgZmllbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDE1ZmE2YWYwYjI2ZTQ4NzM1ZDlhMTMyMmM1
YjQ0M2I4N2YzZTNlMWQuLmViMzhhYzI0NTFiMzEwNGVlZTBlOGQxZmMxMWUwY2E4YTQ3ZDNiOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMy0yMCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5nZSBOYXRp
dmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06
CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorICAgICAgICBSZXR1cm4gYSBs
ZWFrZWQgcmF3IENHSW1hZ2VSZWYgZnJvbSBhIE5hdGl2ZUltYWdlUHRyLgorCiAyMDE2LTAzLTE4
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIENhY2hl
cyBpbiBTYWZhcmkncyBEZXZlbG9wIG1lbnUgZG9lcyBub3QgZGlzYWJsZSBjYWNoZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNTNmZTgxYTExNzFjYjU3ZDQ1NjIwYTdiMzI5ZWMyODRlNTYzYjJlOC4uN2EzNTlh
ZGVkNjc0NTQ3ZDQ5OTRkNWIzNjQxYTgxN2NmY2U1YjUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI0IEBACisyMDE2LTAzLTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZSxjb20+CisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIGZvciBDRyB0byBiZSBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTQxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSBOYXRpdmVJbWFnZVB0ciB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgaW5z
dGVhZCBvZiByYXcgcG9pbnRlciBmb3IgQ0cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
Y2cvV0tJY29uRGF0YWJhc2VDRy5jcHA6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVRyeUdldENH
SW1hZ2VGb3JVUkwpOiBSZXR1cm4gdGhlIGxlYWtlZCB0aGUgcmF3IHBvaW50ZXIgZnJvbQorICAg
ICAgICB0aGUgcmV0dXJuZWQgc21hcnQgcG9pbnRlciBzaW5jZSB0aGUgY2FsbGVyIGlzIHJlc3Bv
bnNpYmxlIG9mIHJlbGVhc2luZyBpdC4KKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNH
SW1hZ2VBcnJheUZvclVSTCk6IFVzZSBudWxscHRyLgorICAgICAgICAKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6
CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6aXNBbG1vc3RTb2xpZENvbG9yKTogQml0bWFwSW1hZ2U6OmdldENH
SW1hZ2VSZWYoKSBub3cgcmV0dXJucyBhCisgICAgICAgIHNtYXJ0IHBvaW50ZXIuCisKIDIwMTYt
MDMtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBHaXZlIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYWJvdXQgcGFy
ZW50IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9N
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggYWI5ZjNmODk3
OWMzOTZjMTgxZTk5MTVmMzY3YjI1ZGNmMzdiMDI5MS4uMmNmZWUyMjNhYWE0OWRhMWFiMGM3NDQ5
NjQ0ZGEzNzdmYTBhYjA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTYw
Niw3ICs2MDYsNyBAQCAtICh2b2lkKWdldFByZXZpZXdTbmFwc2hvdEltYWdlOihDR0ltYWdlUmVm
KiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5ICoqKXJlY3RzCiAKICAgICBpZiAodGV4dEluZGlj
YXRvcikgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29udGVu
dEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IChDR0ltYWdlUmVmKUNGQXV0b3JlbGVh
c2UoQ0dJbWFnZVJldGFpbihpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpKSk7CisgICAgICAgICAgICAq
Y2dJbWFnZSA9IChDR0ltYWdlUmVmKUNGQXV0b3JlbGVhc2UoaW1hZ2UtPmdldENHSW1hZ2VSZWYo
KS5sZWFrUmVmKCkpOwogICAgIH0KIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gcmVj
dEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAxZTZmY2NkOGViNDY5OWMwNmE5
OWM0MjM2YjE5MTk1MWU4NWRjMDJmLi43MTMxNGJjMjY3NDUyOGZkZDIxNTYyZTgzYjMyYzE2MTZl
YWY0ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTI3
OSw3ICsyNzksNyBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUoKSBjb25zdAogICAgIHJldHVybiBwbGF5ZXIoKS0+aGFzVmlkZW8oKSAmJiBwbGF5ZXIoKS0+
aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSFRNTFZp
ZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitOYXRpdmVJbWFnZVB0ciBI
VE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBpZiAo
IXBsYXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKaW5kZXggYWQ5NDhmOTQ0YTMwODE2YWE1N2IzYzhlZWE2MDI0ODgxMjQ1
NjUxNS4uYjRkN2YxZTE3MGYxZjczZWNhNDg2NTY0NjA3Y2Q1N2VmMWY0ZmUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgog
ICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAgIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0Jik7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAog
ICAgIC8vIFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3Np
YmxlLgogICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDdiZjY4MDRmY2Y4
YWZhNWNjZWMwMTk0MzA5YmVjNTk3NDc3M2UyMjcuLmQ2OGY5ODZjYWE3YjM4OGE1MjlmM2I4Mzkw
YTBlNjM3M2U2YWFiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTYyNSw3ICsxNjI1LDcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2
aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjaGVja09yaWdpbih2aWRlbyk7CiAKICNpZiBVU0Uo
Q0cpIHx8IChFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoR1NUUkVBTUVSX0dM
KSAmJiBVU0UoQ0FJUk8pKQotICAgIGlmIChQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRl
by0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CisgICAgaWYgKE5hdGl2ZUltYWdlUHRy
IGltYWdlID0gdmlkZW8tPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgewogICAgICAgICBj
LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZSh2aWRlby0+dmlkZW9XaWR0aCgpLCB2
aWRlby0+dmlkZW9IZWlnaHQoKSksIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVj
dENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZh
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXgg
OTk5NDY1ZWEzOTA2OTdjYmUwMGZlNmZhODgzOGMxMzhlNTQ0N2ExNy4uODE0MjAxM2RjNjI4MTc4
N2NhMmMwZTA2ODRhYTdmZTEzMDNjNDk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMDQsMTYgKzIwNCwxMyBAQCB1bnNpZ25lZCBNZW1vcnlD
YWNoZTo6bGl2ZUNhcGFjaXR5KCkgY29uc3QKICAgICByZXR1cm4gbV9jYXBhY2l0eSAtIGRlYWRD
YXBhY2l0eSgpOwogfQogCi0jaWYgVVNFKENHKQotLy8gRklYTUU6IFJlbW92ZSB0aGUgVVNFKENH
KSBvbmNlIHdlIGVpdGhlciBtYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQgcG9pbnRlciBvbiBh
bGwgcGxhdGZvcm1zIG9yCi0vLyByZW1vdmUgdGhlIHVzYWdlIG9mIENGUmV0YWluKCkgaW4gTWVt
b3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSgpIHNvIGFzIHRvIG1ha2UgdGhlIGNvZGUgcGxhdGZv
cm0taW5kZXBlbmRlbnQuCiBzdGF0aWMgQ2FjaGVkSW1hZ2VDbGllbnQmIGR1bW15Q2FjaGVkSW1h
Z2VDbGllbnQoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDYWNoZWRJbWFnZUNsaWVu
dD4gY2xpZW50OwogICAgIHJldHVybiBjbGllbnQ7CiB9CiAKLWJvb2wgTWVtb3J5Q2FjaGU6OmFk
ZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pCitib29sIE1lbW9yeUNhY2hlOjphZGRJ
bWFnZVRvQ2FjaGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKIHsKICAgICBBU1NFUlQoaW1h
Z2UpOwogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQgPSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKTsKQEAgLTIyNSw4ICsyMjIsNiBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2Fj
aGUoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPENhY2hlZEltYWdlPiBjYWNoZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UuZ2V0KCksIENhY2hlZEltYWdlOjpNYW51
YWxseUNhY2hlZCwgc2Vzc2lvbklEKTsKIAotICAgIC8vIEFjdHVhbCByZWxlYXNlIG9mIHRoZSBD
R0ltYWdlUmVmIGlzIGRvbmUgaW4gQml0bWFwSW1hZ2UuCi0gICAgQ0ZSZXRhaW4oaW1hZ2UpOwog
ICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoJmR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7CiAg
ICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgp
KTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQpAQCAtMjY0LDcgKzI1OSw2IEBAIHZv
aWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGRvbWFpbkZvckNhCiAgICAgLy8gcmVzb3VyY2UgbWF5IGJlIGRlbGV0ZWQgYWZ0
ZXIgdGhpcyBjYWxsLgogICAgIGRvd25jYXN0PENhY2hlZEltYWdlPigqcmVzb3VyY2UpLnJlbW92
ZUNsaWVudCgmZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKIH0KLSNlbmRpZgogCiB2b2lkIE1l
bW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXMoYm9vbCBzaG91bGREZXN0cm95RGVjb2RlZERh
dGFGb3JBbGxMaXZlUmVzb3VyY2VzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuaAppbmRleCBjODhkMmRiZDRlNmIxZDI3ODBkZGEwNGZjY2FmOWI4MjNhNDYxN2Ew
Li5jNDViNDZmZDE4MDA1NTE3M2E2Y2IwNWI4NDg3Njc2YjNiZWM4ODlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMTU1LDEyICsxNTUsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5
T3JpZ2luU2V0JiBvcmlnaW5zKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNXaXRoQ2FjaGUoU2Vzc2lvbklEKSBjb25zdDsKIAotI2lm
IFVTRShDRykKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9uY2Ugd2UgZWl0aGVy
IG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIG9uIGFsbCBwbGF0Zm9ybXMgb3IK
LSAgICAvLyByZW1vdmUgdGhlIHVzYWdlIG9mIENGUmV0YWluKCkgaW4gTWVtb3J5Q2FjaGU6OmFk
ZEltYWdlVG9DYWNoZSgpIHNvIGFzIHRvIG1ha2UgdGhlIGNvZGUgcGxhdGZvcm0taW5kZXBlbmRl
bnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQ
dHIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSW1hZ2VUb0NhY2hlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJbWFnZUZyb21DYWNoZShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKLSNlbmRpZgogCiAgICAg
Ly8gcHJ1bmVEZWFkKigpIC0gRmx1c2ggZGVjb2RlZCBhbmQgZW5jb2RlZCBkYXRhIGZyb20gcmVz
b3VyY2VzIG5vdCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdlcy4KICAgICAvLyBwcnVuZUxpdmUqKCkg
LSBGbHVzaCBkZWNvZGVkIGRhdGEgZnJvbSByZXNvdXJjZXMgc3RpbGwgcmVmZXJlbmNlZCBieSBX
ZWIgcGFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApp
bmRleCBkY2NhODhlNWI3MDdkMWE3MDBiZjQ2ZWY2MzAwNDdhMzNjZjg4YjlmLi42ZGEyNDRlNWQz
YTFlNjRhYjNhMTgwZDkxMzgwMjUwYjY0OTBhMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCBJbWFnZSogSWNvbkRh
dGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9y
aWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3JkLT5pbWFnZShzaXplKTsKIH0KIAotUGFz
c05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
K05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKICAgICBJbWFnZSogaWNvbiA9IHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocGFnZVVSTE9y
aWdpbmFsLCBzaXplKTsKICAgICBpZiAoIWljb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5oCmluZGV4IDUzMGEzYTMwODkwMTRhM2ViMWJlMDJkMzI0ODI5Y2FjMjZk
ODZkMzIuLmRiNDNlYzJjYjMxMTllNTYzMDA4NzQ0YmFiYzA1OTI0ZGU2MWMyZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCkBAIC04OCw3ICs4OCw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0
IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKSBvdmVycmlkZTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIg
c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmln
aW5hbCwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIHN5bmNo
cm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWws
IGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lu
Y2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBi
b29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xv
YWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaApp
bmRleCAwMjU0NjUzMDQxNjkxOTcyMjJlNzdkZjA2ZTY2ZmY2NjNlNzgwOGFhLi41NDRjYmFjYjY5
OGM2OGIwZDg2ODFjMjhiZDYxOGNlNzI4YzFhZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0
IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9u
IHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVu
dExvYWRlciopIHsgcmV0dXJuIEljb25Mb2FkTm87IH0KICAgICB2aXJ0dWFsIEltYWdlKiBzeW5j
aHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25v
dXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNO
YXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1
cm4gbnVsbHB0cjsgfQogCiAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIHdlIHNob3VsZCB1c2Ug
dG8gcmVwbGFjZSB0aGUgYWJvdmUgd2hlbiBzdXBwb3J0ZWQuCiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZmFmMGY4Njk2
MmMzZmI2NTc3NzQ1YmZhZjc1YjRjODRkODBjYzA2MC4uNGE1YzYxYTVkMjdiYTg1NTQzYzAwNjQ1
ZGY4ZWEyMDMzNTBhOWUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpz
dGFydFRpbWVyKGRvdWJsZSBkZWxheSkKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChk
ZWxheSk7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQorYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRl
eChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lOwor
ICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKIH0KIAogYm9vbCBCaXRtYXBJbWFn
ZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTg0LDkgKzE4NCw5IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsK
IAogICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAg
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4
KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1faW1h
Z2UgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCk7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwgPSBzdWJz
YW1wbGluZ0xldmVsOwotICAgICAgICBpZiAobnVtRnJhbWVzID09IDEgJiYgbV9mcmFtZXNbaW5k
ZXhdLm1fZnJhbWUpCisgICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRl
eF0ubV9pbWFnZSkKICAgICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogICAgIH0KIApA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgaWYgKCFzdWJz
YW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3NpemUpCiAgICAgICAgIG1faGFzVW5pZm9y
bUZyYW1lU2l6ZSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7
CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKSB7CiAgICAgICAgIGludCBkZWx0YUJ5
dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzKTsKICAgICAg
ICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBUaGUgZnVsbHktZGVj
b2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGRhdGEgdXNlZApA
QCAtMzc5LDE0ICszNzksMTQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hl
ZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKQotICAgICAgICB8
fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5k
ZXhdLm1fZnJhbWUpCisgICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFu
ZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgfHwgKGZyYW1lQ2Fj
aGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFk
YXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKIAogICAg
IHJldHVybiB0cnVlOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1l
QXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKK05hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZs
b2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3Vu
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM5NSw3ICszOTUsNyBAQCBQYXNzTmF0
aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0
IHByZXNlbnRhdGlvblNjYQogCiAgICAgLy8gV2UgbWF5IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0
aCBhIGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAg
ICAgLy8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBsZXZlbC4KLSAgICBpZiAoaW5kZXggPCBtX2Zy
YW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgJiYgc3Vic2FtcGxpbmdMZXZl
bCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKKyAgICBpZiAoaW5kZXgg
PCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxp
bmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKICAgICAgICAg
Ly8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2FjaGVkLCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6
ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24uCiAgICAgICAgIGludCBzaXplQ2hhbmdlID0g
LW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5j
bGVhcih0cnVlKTsKQEAgLTQwNiwxMCArNDA2LDEwIEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRt
YXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2Nh
CiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJhbWUgeWV0LCBkbyBz
by4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tp
bmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wg
Qml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpAQCAtNDI4
LDkgKzQyOCw5IEBAIGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpCiAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uOwogfQogCi1Q
YXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkKK05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CisgICAgcmV0
dXJuIGZyYW1lSW1hZ2VBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKIH0KIAogYm9vbCBCaXRtYXBJ
bWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNzQ5M2M2YTRiZmI4NjNk
OTc2MzdjNDljNDY0Y2MzN2FlNzhlMGEwNC4uMjQyMzJmZTAyZDcwOWM0NzY5NzgyMTM3NjY2Y2Yw
ODBmZGNhOTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCkBAIC00NywxNiArNDcsNiBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhC
SVRNQVA7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHN0cnVjdCBGcmFtZURh
dGE7Ci19Ci0KLW5hbWVzcGFjZSBXVEYgewotICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRy
YWl0czxXZWJDb3JlOjpGcmFtZURhdGE+IDogcHVibGljIFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRz
IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSBm
YWxzZTsgLy8gTm90IGFsbCBGcmFtZURhdGEgbWVtYmVycyBpbml0aWFsaXplIHRvIDAuCi0gICAg
fTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaW1lcjsKIApAQCAtNjUsMTYg
KzU1LDE1IEBAIGNsYXNzIFRpbWVyOwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAKIHN0cnVjdCBGcmFtZURhdGEgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZyYW1lRGF0YSk7CiBwdWJsaWM6CiAgICAgRnJhbWVEYXRhKCkKLSAgICAgICAg
OiBtX2ZyYW1lKDApCisgICAgICAgIDogbV9pbWFnZShudWxscHRyKQogICAgICAgICAsIG1fb3Jp
ZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgICwgbV9zdWJzYW1wbGlu
Z0xldmVsKDApCiAgICAgICAgICwgbV9kdXJhdGlvbigwKQogICAgICAgICAsIG1faGF2ZU1ldGFk
YXRhKGZhbHNlKQogICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hh
c0FscGhhKHRydWUpIAorICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKICAgICAgICAgLCBtX2Zy
YW1lQnl0ZXMoMCkKICAgICB7CiAgICAgfQpAQCAtODgsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4K
ICAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBtX2ZyYW1lOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CiAgICAgSW1hZ2VPcmllbnRh
dGlvbiBtX29yaWVudGF0aW9uOwogICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xl
dmVsOwogICAgIGZsb2F0IG1fZHVyYXRpb247CkBAIC0xMDgsMTEgKzk3LDExIEBAIGNsYXNzIEJp
dG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR3JhZGll
bnRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKKyAgICBzdGF0aWMgUmVmPEJpdG1h
cEltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBJbWFnZU9i
c2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBCaXRtYXBJbWFnZShuYXRpdmVJbWFnZSwgb2JzZXJ2ZXIpKTsKICAgICB9Ci0gICAg
c3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0g
MCkKKyAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0
bWFwSW1hZ2Uob2JzZXJ2ZXIpKTsKICAgICB9CkBAIC0xNTQsOCArMTQzLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBVU0UoQ0cpCi0gICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRD
R0ltYWdlUmVmKCkgb3ZlcnJpZGU7Ci0gICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZP
ZlNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBnZXRDR0ltYWdlUmVmKCkgb3ZlcnJpZGU7CisgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgb3Zl
cnJpZGU7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIG92ZXJy
aWRlOwogI2VuZGlmCiAKQEAgLTE3Miw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmpl
Y3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBQYXNzTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAg
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7
IHJldHVybiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KIAogICAg
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGU7CkBAIC0xOTksOCAr
MTg4LDggQEAgcHJvdGVjdGVkOgogICAgICAgQ2VydGFpbiAgICAgLy8gVGhlIHJlcGV0aXRpb24g
Y291bnQgaXMga25vd24gdG8gYmUgY29ycmVjdC4KICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgQml0bWFwSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOwot
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gMCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBJbWFnZU9i
c2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdl
T2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3Zl
cnJpZGU7CkBAIC0yMTQsMTAgKzIwMywxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzaXplX3QgZnJh
bWVDb3VudCgpOwogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3Qs
IGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0
ciBjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBOYXRpdmVJbWFnZVB0ciBm
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEp
OworICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCk7CiAKLSAgICBib29sIGhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBib29sIGhhdmVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KHNpemVfdCk7CiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggYmFiYzRjODVjYzJkZjc0OTU4ZmExYzkxMGU1NmFhY2I4NzE5MGNmMi4uYzUyNGJhMTlk
NWRkYTQwNWM2MGMxNDc4MjE2Mjc5YzBjODU5NjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMwMiw3ICszMDIsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVs
dEltYWdlT3JpZW50YXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKICNlbmRp
ZgogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggZTM2YmEzYWE1NmQ1OGMyMDZhOTgzZmY1YmE5
YmZhN2IxMzY1MTE4Mi4uZGJiYmNmNThjMzdiOWE2YjE2NGQ2ZjEzNTFjZDZlMTVlYjQxZDg1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC0xMjQ1LDcgKzEyNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEltYWdlU291
cmNlKiBtX2RlY29kZXI7CiAgICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1faW1hZ2VT
dXJmYWNlOwogI2VsaWYgVVNFKENHKQotICAgICAgICBDR0ltYWdlUmVmIG1fY2dJbWFnZTsKKyAg
ICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICAgICAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IG1fZGVjb2RlZEltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBtX3BpeGVsRGF0YTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3Jt
YWxpemVkUkdCQThEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmlu
ZGV4IGQ5NWU3ZGViODEwZmMyNGY3ZjYxYjFiMjNhNGI5YWVmM2YzYzE3YjcuLmY2YmJiODIwNmNl
YWI3Y2QzNjM5NjIwODA1MGI0MDMxNjFkYWE2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JY29uLmgKQEAgLTIyLDggKzIyLDggQEAKICNkZWZpbmUgSWNvbl9oCiAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDUsMTkgKzQ1
LDE5IEBAIGNsYXNzIEZsb2F0UmVjdDsKICAgICAKIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxJY29uPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQ
dHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFt
ZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgfkljb24oKTsKIAogICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9STShXSU4pCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihoSWNv
bikpOyB9CisgICAgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBmb3Igbm9uLWlPUyBwb3J0cyBhbmQg
cmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShOYXRpdmVJbWFnZVB0cik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
NjgsNyArNjgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQotICAg
IEljb24oQ0dJbWFnZVJlZik7CisgICAgSWNvbihjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4m
KTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0o
TUFDKQogICAgIEljb24oTlNJbWFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKaW5kZXggNGVkNmUzNWQ5OWFmYWFiNWI4YmRlYzZmZDdhMTMyMGUyMGQwNDZmNS4u
MDM4OTIwZDcxOWUwMjc5OGVlZGE1OWU1YzM5OGRjYTM1YjYyODQ4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xMzUsMjMgKzEzNSwyMyBAQCBwdWJsaWM6
CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxl
LCBSZXBlYXRUaWxlIH07CiAKLSAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
ICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgp
IHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBu
YXRpdmUgaW1hZ2UgZm9ybWF0cy4KIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCBOU0lt
YWdlKiBnZXROU0ltYWdlKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTlNJbWFnZSogZ2V0
TlNJbWFnZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIHsg
cmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgVVNFKENHKQotICAgIHZpcnR1YWwgQ0dJ
bWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgQ0dJbWFn
ZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7
IH0KLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkFycmF5UmVmPiBnZXRDR0ltYWdlQXJyYXkoKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZ2V0Q0dJbWFn
ZVJlZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkFycmF5UmVmPiBnZXRDR0ltYWdlQXJy
YXkoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAg
LTE2MCwxMSArMTYwLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQot
ICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oRUZMKQotICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2
YXNPYmplY3QoRXZhcyopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBn
ZXRFdmFzT2JqZWN0KEV2YXMqKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3
NGVmMDUzYTMzM2ZmNWZjNTc4ZTgxODAwY2M2ZmM5NzU1ZWZiYWI4Li5hZTMxYzk4MzUyMWQ1MDA4
MjI1YzFmYzM0MjljMmM0MGEwMzdlNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0xNDgsMTkgKzE0OCwxOSBAQCBzaXplX3Qg
SW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBt
X2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCkKK05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEltYWdlRnJh
bWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKICAgICBp
ZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFpl
cm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuICBJZiB3
ZSBoYXZlIGFuCiAgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCiAgICAg
aWYgKHNpemUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZl
IGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCiAgICAgLy8gaXMgYWxyZWFkeSBpbiBh
IG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRl
eCBhY2RkMWNlNGNlMzAwZGU4MWM5ZTA2MmVlZTc2MDdiZjQ3MmE3MGFmLi5jMTFmN2JlNDgyOWU0
ZTZiYzQwMTc4OTYzYzFkNTFhMTg2NjBhMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gZGVjb2RlZCBmcmFtZXMuCiAgICAgLy8KICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3Qg
Y2FsbCBjbGVhcihmYWxzZSwgbikgYW5kIHN1YnNlcXVlbnRseSBjYWxsCi0gICAgLy8gY3JlYXRl
RnJhbWVBdEluZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIo
dHJ1ZSkuCisgICAgLy8gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5s
ZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0cnVlKS4KICAgICAvLyBUaGlzIGVuc3VyZXMgdGhh
dCBzdGF0ZWZ1bCBJbWFnZVNvdXJjZXMvZGVjb2RlcnMgd2lsbCB3b3JrIHByb3Blcmx5LgogICAg
IC8vCiAgICAgLy8gVGhlIHxkYXRhfCBhbmQgfGFsbERhdGFSZWNlaXZlZHwgcGFyYW1ldGVycyBz
aG91bGQgYmUgc3VwcGxpZWQgYnkgY2FsbGVycwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVh
cigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkg
YWJvdmUuCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKIAogICAgIGZsb2F0IGZy
YW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkg
YWxwaGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKaW5kZXggOTliOWQ1Y2FkZTczZTBjMWZhZDA5YTc3Y2Y1ZjZkYjI5OGMzN2FhNS4uOTA2
OTViNDQ1NjNhMDhiNGQwY2M2ZDM2YzRmZmQ4MmQ1MWNhMWY4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtODM3LDcgKzgzNyw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkp
OwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCmluZGV4IDVlYTU1ODcxMTA1OTM3ZWVlNDA2M2U3MjU5MmExYWU1NTcxNTQ1Y2IuLmMy
ZTBjZjdiODEzMDgxZDE1MzM3ZDBhOTJlNmNhMzE3ZDBhZTA4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDIzLDcgKzQyMyw3IEBA
IHB1YmxpYzoKICAgICAvLyBodHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lL3Ry
dW5rL3NyYy9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9nbGVzMl9jbWRfY29weV90ZXh0dXJl
X2Nocm9taXVtLmNjIHZpYSBzaGFkZXJzLgogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
LCBHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0
LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSk7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KTsKIAogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGU1NzlhZTkzODU2ZTdkZGM4
NTk2ODY0NzM2MThkYTJhMTRkNmM3OTAuLmQ5MTlmNTQzMzdhNDU3YzEwZWM2OGJhNWEyMGViN2Rl
M2I4ZmVjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYg
YywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29s
IGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBs
YXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdD
M0RlbnVtLCBib29sLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc05h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRy
OyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVk
aWFQbGF5ZXI6OlByZWxvYWQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAppbmRleCBkZjk0MWE1NjZhOWU0NjkyNzcyN2JhMWVj
Njg0OGYyMTY4MDNhNDViLi4wMzQ2NjY1YjM2ZGJlNTY2MWEwOWNlNzFjNGVjYjRhMGMxZThlMjRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgTmF0aXZlSW1hZ2VQdHJfaAogCiAjaWYg
VVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIHR5cGVkZWYgc3RydWN0IENHSW1h
Z2UqIENHSW1hZ2VSZWY7CiAjZWxpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8u
aCIKQEAgLTM4LDIxICszOSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVm
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBOYXRpdmVJbWFnZVB0ciBhbmQg
UGFzc05hdGl2ZUltYWdlUHRyIHNob3VsZCBiZSBzbWFydAotLy8gcG9pbnRlcnMgKHNlZSBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkuCiAjaWYgVVNFKENHKQotdHlwZWRl
ZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwotdHlwZWRlZiBQYXNzUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gUGFzc05hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFdJTkdESSkKIHR5cGVkZWYg
UmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiAjZW5kaWYKIAotI2lmICFVU0Uo
Q0FJUk8pCi10eXBlZGVmIE5hdGl2ZUltYWdlUHRyIFBhc3NOYXRpdmVJbWFnZVB0cjsKLSNlbmRp
ZgotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0NjhiMDY4
MTEwZWJhMjMyZjJiYzZmZjA2MjZlZmJhMjAuLmQ2ZGU3NjJjMWZlMmJmODQ2YWFhZTI0NTNjNmM1
NWIwYmFkY2E5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTI0Nyw3ICsyNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgYm9vbCB2aWRlb091dHB1
dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICAgICB2b2lkIHdhaXRGb3JW
aWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsKIAogICAgIHZvaWQgY3JlYXRlT3BlbkdM
VmlkZW9PdXRwdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDE1NDM3ZGRkOGVkNmYz
ZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLmVjNmY2MDE3ZjM2NGVmODY5ZGVmNTJiNzdiY2Jk
ZjJkNjBlODc2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjM0Niw3ICsyMzQ2LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGgKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3Bp
ZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh2aWRlb1RleHR1cmUuZ2V0KCks
IHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAot
UGFzc05hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAg
dXBkYXRlTGFzdEltYWdlKCk7CiAgICAgcmV0dXJuIG1fbGFzdEltYWdlLmdldCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKaW5kZXggMjMwYThmNmI3MjFiNTE1YTMxZTUyMDI2ZWZiMGRlYTRkNGMwMDAxYS4uOTQy
ZjE1ZWI3Nzc3YjczY2U0YTMxOTc3YjVlNzUyMWNkODYyM2I0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBA
IC0xMDA4LDE2ICsxMDA4LDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1Rv
U29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAg
ICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgICAgICBhdXRvIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CiAgICAgICAgIGlmICghbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgLy8gRklYTUU6IHByb2JhYmx5IGRvbid0IG5lZWQgbV91bmNvcnJlY3RlZENvbnRl
bnRzSW1hZ2UgYXQgYWxsIG5vdy4KLSAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0lt
YWdlICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQorICAg
ICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPT0gbmV3SW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFn
ZSA9IG5ld0ltYWdlOwotICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7
CisgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbV9wZW5kaW5nQ29udGVudHNJ
bWFnZSA9IFdURk1vdmUobmV3SW1hZ2UpOwogCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBv
c2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgIGlmICghbV9jb250ZW50c0xheWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0
bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBjZDU3ZWU0ODVlYTgwYzZjZjM0N2FiM2JkOTcz
N2Q1OTk5ZTEwMjgyLi45OTMyZGJjYjVkZTE1NmM3MmVhNmVhOTEyMTljYjg1NTMyMDMwMmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6
OkJpdG1hcEltYWdlKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiBuYXRpdmVJbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1f
c2l6ZShjYWlyb1N1cmZhY2VTaXplKG5hdGl2ZUltYWdlLmdldCgpKSkKICAgICAsIG1fbWluaW11
bVN1YnNhbXBsaW5nTGV2ZWwoMCkKQEAgLTU4LDcgKzU4LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1h
cEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNl
cnZlcioKIHsKICAgICBtX2ZyYW1lcy5ncm93KDEpOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxw
aGEgPSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG5hdGl2ZUltYWdlLmdldCgpKSAhPSBDQUlS
T19DT05URU5UX0NPTE9SOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJbWFnZTsK
KyAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gbmF0aXZlSW1hZ2U7CiAgICAgbV9mcmFtZXNbMF0u
bV9oYXZlTWV0YWRhdGEgPSB0cnVlOwogCiAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAKICAgICBzdGFydEFuaW1hdGlv
bigpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1cmZhY2UpIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICBy
ZXR1cm47CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNv
bGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVJ
bWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQn
cyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTU4LDggKzE1OCw4IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0
YWRhdGEpCiAgICAgaWYgKGNsZWFyTWV0YWRhdGEpCiAgICAgICAgIG1faGF2ZU1ldGFkYXRhID0g
ZmFsc2U7CiAKLSAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBtX2ZyYW1lID0gbnVsbHB0cjsK
KyAgICBpZiAobV9pbWFnZSkgeworICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0M0RDYWlyby5jcHAKaW5kZXggY2M3MDQ2MTQ3YWU4MWYxZmFkYWE2ZDg0MTYyNDk4MGM2ZmRm
Y2JmMS4uOGM0MTg2ZDcxZTUzYTE5MDdlOTJkNzNhMmIwMTY0N2ZmZDY2YjFjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbAogICAgICAgICBkZWNvZGVyLnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0
cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFt
ZUlzQ29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAg
ICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhU
TUxWaWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4g
YXBwbGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggZjA3OTIwZjBkMjMyNDYyYzhmYjQxYTAzMjJk
ODIyYWM5ZDVlZDMwNy4uYWNjYTM2NzVjOGQ1MzM2ODgzYmNmMDQ4NDUwOGYyMWUwOWQ3YjhjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJv
cmRlclRoaWNrbmVzcykKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2VQdHIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2OSw4ICsyNjksNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwg
Y29uc3QgRmxvYXRTaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2UgPSBpbWFnZVB0cjsKLQogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zYXZlKCk7CiAK
ICAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KQEAgLTI5Myw3ICsyOTEsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaQogICAgICAgICB9CiAgICAgfQogCi0gICAgcGxhdGZv
cm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KGltYWdlLmdldCgpLCBkc3QsIHNyY1Jl
Y3QsICp0aGlzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQo
aW1hZ2VQdHIuZ2V0KCksIGRzdCwgc3JjUmVjdCwgKnRoaXMpOwogICAgIHBsYXRmb3JtQ29udGV4
dCgpLT5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKaW5kZXggMDFiN2Q2OTJjZGJkN2FiNGQyMmJi
YzEzOTljMTAzMjhmNTdlNWU0Ny4uZmQ2MzZlMTIzN2EwNDNjMWNkNjljYzM5MzlkNzFkNzA1YjYw
N2NhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0
bWFwSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Qml0bWFwSW1hZ2VDRy5jcHAKQEAgLTU4LDE4ICs1OCwxNyBAQCBib29sIEZyYW1lRGF0YTo6Y2xl
YXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIG1fb3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbjsKICAgICBtX3N1YnNhbXBsaW5nTGV2ZWwgPSAwOwogCi0gICAgaWYgKG1fZnJh
bWUpIHsKKyAgICBpZiAobV9pbWFnZSkgewogI2lmIENBQ0hFX1NVQklNQUdFUwotICAgICAgICBz
dWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ZyYW1lKTsKKyAgICAgICAgc3ViaW1hZ2VDYWNo
ZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgQ0dJbWFnZVJl
bGVhc2UobV9mcmFtZSk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOworICAgICAgICBtX2ltYWdlID0g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJ
bWFnZShvYnNlcnZlcikKICAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAs
IG1faW1hZ2VPcmllbnRhdGlvbihPcmlnaW5Ub3BMZWZ0KQpAQCAtODksOCArODgsOCBAQCBCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVD
b3VudCh0cnVlKQogewotICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFn
ZSk7Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOworICAg
IENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIENHRmxv
YXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAgbV9kZWNvZGVk
U2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBo
ZWlnaHQpOwogCkBAIC05OSw3ICs5OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0lt
YWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3Bl
Y3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAg
bV9mcmFtZXNbMF0ubV9mcmFtZSA9IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7CisgICAgbV9mcmFt
ZXNbMF0ubV9pbWFnZSA9IGltYWdlOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVl
OwogICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIApAQCAtMTM2LDcgKzEz
NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZy
YW1lQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaGF2ZUZyYW1lQXRJ
bmRleCgwKSkgeworICAgIGlmICghaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KDApKSB7CiAgICAgICAg
IEludFNpemUgc2l6ZSA9IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiAgICAgICAg
IGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xNDUsMTUgKzE0NCwxNSBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0Zv
clNvbGlkQ29sb3IoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENHSW1hZ2VS
ZWYgaW1hZ2UgPSBudWxscHRyOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKICAg
ICBpZiAobV9mcmFtZXMuc2l6ZSgpKQotICAgICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1fZnJh
bWU7CisgICAgICAgIGltYWdlID0gbV9mcmFtZXNbMF0ubV9pbWFnZTsKIAogICAgIGlmICghaW1h
Z2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZv
ciBzb2xpZCBjb2xvciBpbiB0aGUgaW1wb3J0YW50IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFn
ZS4KLSAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSAxICYmIENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpID09IDEpIHsKKyAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSA9
PSAxICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpID09IDEpIHsKICAgICAgICAgdW5z
aWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWws
IDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCiAgICAgICAgICAg
ICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJp
ZykpOwpAQCAtMTYxLDcgKzE2MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRD
b2xvcigpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dChiaXRt
YXBDb250ZXh0LmdldCgpKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CiAg
ICAgICAgIENHUmVjdCBkZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpOwot
ICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRp
b25SZWN0LCBpbWFnZSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0
LmdldCgpLCBkZXN0aW5hdGlvblJlY3QsIGltYWdlLmdldCgpKTsKICAgICAgICAgaWYgKCFwaXhl
bFszXSkKICAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAsIDAsIDAsIDApOwogICAg
ICAgICBlbHNlCkBAIC0xNzEsMTggKzE3MCwxOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0Zv
clNvbGlkQ29sb3IoKQogICAgIH0KIH0KIAotQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJ
bWFnZVJlZigpCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VS
ZWYoKQogewotICAgIHJldHVybiBmcmFtZUF0SW5kZXgoMCk7CisgICAgcmV0dXJuIGZyYW1lSW1h
Z2VBdEluZGV4KDApOwogfQogCi1DR0ltYWdlUmVmIEJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1h
Z2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBC
aXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFt
ZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmIChjZ0ltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdp
ZHRoKGNnSW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpKSA9PSBzaXplKQotICAgICAg
ICAgICAgcmV0dXJuIGNnSW1hZ2U7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGlt
YWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpID09IHNpemUpCisgICAg
ICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGRl
ZmF1bHQgQ0dJbWFnZVJlZiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSByaWdodCBzaXplCkBAIC0xOTMs
MTIgKzE5MiwxMiBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VBcnJheSgpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGlmICgh
Y291bnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
ICAgICBDRk11dGFibGVBcnJheVJlZiBhcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKE5VTEws
IGNvdW50LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKENHSW1hZ2VSZWYgY3VyckZyYW1lID0gZnJh
bWVBdEluZGV4KGkpKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJy
RnJhbWUpOworICAgICAgICBpZiAoYXV0byBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChp
KSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lLmdldCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwogfQpAQCAtMjE0LDEyICsyMTMs
MTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGlu
dG8gUERGIGNvbnRleHRzLgogICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBs
YXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNvcHlVbnNjYWxlZEZy
YW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOworICAgICAgICBpbWFnZSA9IGNvcHlVbnNjYWxl
ZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBlbHNlIHsKICAgICAgICAg
Q0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFu
c2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7
CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3Rk
OjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lk
dGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0Lmhl
aWdodCgpKSk7CiAKLSAgICAgICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUs
IHN1YnNhbXBsaW5nU2NhbGUpOworICAgICAgICBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1f
Y3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKICAgICB9CiAKICAgICBpZiAoIWltYWdl
KSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KQEAgLTI0
NSwyNCArMjQ0LDI0IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRlc2NyaXB0
aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24p
CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50
RnJhbWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVu
dGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24p
OwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
aWREcmF3KHRoaXMpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmNvcHlV
bnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2ZyYW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsKIAogICAgIGlm
ICghbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIENH
SW1hZ2VSZXRhaW4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpOworICAgICAgICByZXR1cm4gbV9m
cmFtZXNbaW5kZXhdLm1faW1hZ2U7CiAKLSAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVB
dEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDZjMDNhMmNlZjg0
NjA2NTYxZWEwN2ViOTI4ZjFjZjI5NWY5ZjVlMzYuLjk5ZjA5ZGI2N2JhNTQyODJkYzRlZDcwNWFl
NDE2MzgwMzM3MTkzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0zMzMsMTUgKzMzMywx
NSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVD
b3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fZGVjb2RlZElt
YWdlID0gYWRvcHRDRihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7Ci0gICAgICAgIG1f
Y2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9
IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAgIG1fY2dJbWFnZSA9
IG1fZGVjb2RlZEltYWdlOwogICAgIH0gZWxzZQogICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbV9jZ0ltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgo
bV9jZ0ltYWdlKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1h
Z2UpOworICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2UuZ2V0KCkp
OworICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5nZXQoKSk7
CiAgICAgaWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMzQ5LDcgKzM0OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Oklt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAg
ICAgLy8gc28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdl
IHJlLXBhY2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0
YWJsZSBpbmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZSk7CisgICAg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1h
Z2UuZ2V0KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dDb2xvclNwYWNlR2V0
TW9kZWwoY29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9yU3BhY2VNb2RlbElu
ZGV4ZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dDsK
QEAgLTM2NCwyMiArMzY0LDIyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAKICAgICAgICAg
Q0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNv
cHkpOwogICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShiaXRtYXBDb250
ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwg
bV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShi
aXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFn
ZUhlaWdodCksIG1fY2dJbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93IGRpc2NhcmQgdGhl
IG9yaWdpbmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5IGZyb20gdGhlIGJp
dG1hcCBjb250ZXh0LgogICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBtX2NnSW1h
Z2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKICAgICB9CiAKLSAgICBzaXplX3QgYml0c1BlckNv
bXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFnZSk7Ci0gICAgc2l6
ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlKTsKKyAg
ICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1f
Y2dJbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRz
UGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4
ICYmIGJpdHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVy
Q29tcG9uZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFw
SW5mbyhtX2NnSW1hZ2UpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJp
dG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9IGZh
bHNlOwogICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8gb25l
IGxhcmdlIHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8gc28g
dGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQyMSw3ICs0MjEsNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbAogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7CiAgICAgQWxwaGFG
b3JtYXQgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChDR0ltYWdl
R2V0QWxwaGFJbmZvKG1fY2dJbWFnZSkpIHsKKyAgICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUlu
Zm8obV9jZ0ltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbV9h
bHBoYU9wID0gQWxwaGFEb1VubXVsdGlwbHk7CkBAIC00NjEsMTQgKzQ2MSwxNCBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbAogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0ID09IERhdGFGb3Jt
YXROdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BpeGVsRGF0YSA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1f
Y2dJbWFnZSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5
RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKICAgICBpZiAo
IW1fcGl4ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2ltYWdlUGl4ZWxE
YXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX3Bp
eGVsRGF0YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQgaW50IHNyY1VucGFja0FsaWdubWVudCA9
IDA7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1fY2dJ
bWFnZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1f
Y2dJbWFnZS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVzUGVyUm93IC0gYml0
c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGluZykgewogICAgICAg
ICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTUzNiw3ICs1MzYsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0x
KSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2FudmFzUmVj
dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7Cisg
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE0NDk2NTQw
NDZhZThmMTBhYmFkMTY0MTVlNjQ2MGFkYmJiYjhlODguLjRjOGI3YmQwMzI4NTU3ZjIxMjBlMDJk
ZjRlZTYyYzNkN2E1YmM0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0
YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdl
UmVmPiYgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMSw4
ICszMTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgIGZsb2F0IGFkanVzdGVkWCA9
IHBoYXNlLngoKSAtIGRlc3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRoZSBjb250
ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91
dC4KICAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAtIChwaGFzZS55KCkg
LSBkZXN0UmVjdC55KCkgKyB0aWxlUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBh
dHRlcm5UcmFuc2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVIZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJl
ZiB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGZs
b2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZSk7CisgICAgYXV0byB0aWxlSW1hZ2Ug
PSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGZsb2F0IGggPSBDR0lt
YWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gc3ViSW1hZ2U7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzI2LDEzICszMjYsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFnZSBvdXQg
b2YgYSBwYXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9y
aWdpbmFsIGltYWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJlY2F1c2Ug
c3ViLWltYWdlcyBhcmUgb25seSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVu
ZGVycyB3aGVuIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NFUlQoaCA9
PSBpbWFnZS5oZWlnaHQoKSk7Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsKKyAgICAgICAgc3ViSW1h
Z2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLmdldCgp
LCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBi
ZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Ig
bm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50
IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0g
dGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9y
bS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlKTsKKyAgICBm
bG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQoKSk7CiAgICAgaWYgKHcgPT0g
aW1hZ2Uuc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNw
YWNpbmcud2lkdGgoKSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhNRTog
Q0cgc2VlbXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNh
cmUgKGUuZy4gd2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdl
IHNob3VsZCB0aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2Ug
dG8gZml0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZVNvdXJjZUNHLmNwcAppbmRleCBkNGEwMTJiNmY1N2JmNTM5MzA2NDc3N2I2YzEwOTM2NmIy
NGM0NDVjLi41MDE1ZGQxNWFiZmM4MjVkY2ViMDMyMGYxMjAyOWNiYTUxMjE4Mjc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2Rl
Y29kZXIpIDogMDsKIH0KIAotQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmV0
YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBp
ZiAoIWluaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY2LDE4ICsz
NjYsMTUgQEAgQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJp
bmdSZWYgeGJtVVRJID0gQ0ZTVFIoInB1YmxpYy54Yml0bWFwLWltYWdlIik7CiAKICAgICBpZiAo
IWltYWdlVVRJKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICByZXR1
cm4gaW1hZ2U7CiAKICAgICBpZiAoIUNGRXF1YWwoaW1hZ2VVVEksIHhibVVUSSkpCi0gICAgICAg
IHJldHVybiBpbWFnZS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBpbWFnZTsKICAgICAKICAg
ICAvLyBJZiBpdCBpcyBhbiB4Ym0gaW1hZ2UsIG1hc2sgb3V0IGFsbCB0aGUgd2hpdGUgYXJlYXMg
dG8gcmVuZGVyIHRoZW0gdHJhbnNwYXJlbnQuCiAgICAgY29uc3QgQ0dGbG9hdCBtYXNraW5nQ29s
b3JzWzZdID0gezI1NSwgMjU1LCAgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gbWFza2VkSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoTWFza2lu
Z0NvbG9ycyhpbWFnZS5nZXQoKSwgbWFza2luZ0NvbG9ycykpOwotICAgIGlmICghbWFza2VkSW1h
Z2UpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Ci0KLSAgICByZXR1cm4gbWFza2Vk
SW1hZ2UubGVha1JlZigpOworICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDog
aW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6
ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1Bh
dHRlcm5DRy5jcHAKaW5kZXggYjMwMzNmZTA1MTBmNzlkMjUxMmE0MDZiYjFiZGRmMjk1YWZhNWEz
NC4uNzg5YjdmOGM4ZDFmMjdjMzFkODIzZTQ0NzdkNGZmODY5MzYzNTk0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC03MSwx
MCArNzEsMTIgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBwYXR0ZXJuVHJhbnNmb3Jt
LnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUo
MCwgLXRpbGVSZWN0LmhlaWdodCgpKTsKIAorICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0
Zm9ybUltYWdlID0gdGlsZUltYWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKwogICAgIC8vIElmIHdl
J3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2Vk
IHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0
aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkp
Ci0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0
aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5U
aWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVX
aXRoSW1hZ2VBbmRUcmFuc2Zvcm0ocGxhdGZvcm1JbWFnZS5nZXQoKSwgcGF0dGVyblRyYW5zZm9y
bSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVgg
c2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVy
ZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90
aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTg1LDEwICs4Nyw4IEBAIENHUGF0dGVyblJlZiBQYXR0
ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3Bh
Y2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgp
IDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0lt
YWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
Ci0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0aWxlSW1hZ2Uo
KS0+Z2V0Q0dJbWFnZVJlZigpKTsKLQogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0
ZXJuQ2FsbGJhY2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJh
Y2sgfTsKLSAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFu
dFNwYWNpbmcsIFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKKyAgICByZXR1cm4gQ0dQYXR0ZXJu
Q3JlYXRlKHBsYXRmb3JtSW1hZ2UubGVha1JlZigpLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAm
cGF0dGVybkNhbGxiYWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcAppbmRleCAwMjRjYmZlMDBiNTIyMzM5MzM1OTIwZjlmODUzNGM4MzZkYWNjZjg4Li5mMzU0
ODljMzQ5YmFmZTViMmMwZmViM2YxN2MyMzNkMDUwMzY4ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCkBAIC00OTEsNyArNDkxLDcgQEAgc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdUaWxlZFNjYWxlZEltYWdlJiBp
dGVtKQogfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi1EcmF3TmF0aXZlSW1hZ2U6OkRy
YXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2UpCiAjaWYgVVNFKENHKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdl
IGZvciBDYWlyby4KQEAgLTUxNiw3ICs1MTYsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaQog
dm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKICNpZiBVU0UoQ0cpCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZVB0
ci5nZXQoKSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcCwgbV9i
bGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1f
aW1hZ2VQdHIsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBtX3NyY1JlY3QsIG1fb3AsIG1f
YmxlbmRNb2RlLCBtX29yaWVudGF0aW9uKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRl
eHQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA1YTg0OTY0
YzU3OWIzMmZkYzBlYzZlZjE0NWY2NDI2MGYxMzVhZmZmLi40ZjEzNTFlYmIyMzA2NTFjNTVlMTM2
NWE2MTYwNGUzMzY0MzFlZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAg
LTYzOSw3ICs2MzksNyBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogY2xh
c3MgRHJhd05hdGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFn
ZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCisgICAgc3RhdGlj
IFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2VQ
dHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlUHRyLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpOwogICAg
IH0KQEAgLTY0OCw3ICs2NDgsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgotICAgIERyYXdO
YXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgRHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKIAogICAgIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA1ZTUyZWM5MTkyM2Q0NTlmMDgyMjE5
MWY2NjlkMGMwMGVlZGYyNThhLi5kNDc1ZDUwZWQ1YzllN2RjMGYxMjg0YzUyYzllODk4YmMyODQ1
NGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMTks
NyArMTE5LDcgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdAogfQogCiAjaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdl
UHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3Zv
aWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2VQ
dHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIERyYXdp
bmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05h
dGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3
SXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBhNWQyYzcx
YTI1ZWJkYmZlNGYzYmE3ZmRhY2QxZjJkZTU4ODZkYzUwLi5lYjk5YTNkZGEwMGQzMTcwY2ZjOGYw
ODZhNDAyOWNiYmNlMWNkM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1
bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
ICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShQYXNz
TmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOwogI2VuZGlmCiAgICAgdm9pZCBk
cmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCmluZGV4
IGJhNDE1OTdhYTExMDFkYjYyOTAyM2QyNzNiMjAwZTc4MWQzM2FhYzkuLjU5Y2MyYzliZThiM2Zm
ZTExMTg2YTY4NWQyZThjZjU5NGMxZDM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcApA
QCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9y
OjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlmICgh
ZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgw
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9
IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9
IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1
dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFs
cGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAKaW5kZXggOWM5MmMwODUzYzI2MWM3NjBh
N2MwODFmNmM4N2U5OTBiMWI4OGRhYi4uMDdiZWJlNjk0OWMxYzg0YTFlNzg2NDIxYzBlOWQ3YWY3
NzdlNzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0ljb25FZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9J
Y29uRWZsLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC01MSwxMCArNTEsMTAgQEAgSWNvbjo6fkljb24oKQogewogfQogCi1QYXNzUmVmUHRyPElj
b24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitSZWZQ
dHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxs
cHRyOwogfQogCiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SWNvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0
ay5jcHAKaW5kZXggNTk0NWUxZjhjNGI0NzQ0OGYzNDg1ZmM2NGJiNTc2NTdhZjRjMzhmZS4uODgw
YzRjOTc5NGE1ZWQ2ZDNhYzJmOGE2NzQ3Y2MyMTI2OTJkMjE5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBTdHJpbmcgbG9v
a3VwSWNvbk5hbWUoU3RyaW5nIE1JTUVUeXBlKQogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY29k
ZSB0byBDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJY29u
OjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK1Jl
ZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
SWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9T
Lm1tCmluZGV4IDIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIyNDliODFkOWQ3NmEuLjM2YjI0
ZjVjZmYwYTZiNjFlNTQ1NzQ2NzMyYjYyNmNkMzk4N2NiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUljb246Okljb24oQ0dJbWFnZVJlZiBpbWFnZSkK
K0ljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIDogbV9jZ0ltYWdl
KGltYWdlKQogewogfQpAQCAtNDIsMTcgKzQyLDE3IEBAIEljb246On5JY29uKCkKIHsKIH0KIAot
UGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIC8qZmlsZW5hbWVzKi8pCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZp
bGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQogewogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShO
YXRpdmVJbWFnZVB0ciBpbWFnZVJlZikKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9y
SW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKIHsKLSAgICBpZiAoIWlt
YWdlUmVmKQorICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGltYWdlUmVmKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJY29uKGltYWdlKSk7CiB9CiAKIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL1RleHRUcmFja1JlcHJlc2VudGF0aW9uSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL1RleHRUcmFja1JlcHJl
c2VudGF0aW9uSU9TLm1tCmluZGV4IDllZjU2YThiN2MyYzQ2ZTNiNWQzYjA5MThiMDJjM2IxOThl
YmY2OTguLmUwMDE2MWRhMDRjZGU0MTM0OWY4ZjVkMzhlZTI1Y2MyNmMwZjhjOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MubW0KQEAgLTEyMCw3ICsxMjAsNyBAQCBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbklPUzo6flRleHRUcmFja1JlcHJlc2VudGF0aW9uSU9TKCkKIHZvaWQg
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1M6OnVwZGF0ZSgpCiB7CiAgICAgaWYgKGF1dG8gcmVw
cmVzZW50YXRpb24gPSBtX2NsaWVudC5jcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdl
KCkpCi0gICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlv
bi0+Z2V0Q0dJbWFnZVJlZigpXTsKKyAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHM6
KGlkKXJlcHJlc2VudGF0aW9uLT5nZXRDR0ltYWdlUmVmKCkuZ2V0KCldOwogfQogCiB2b2lkIFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uSU9TOjpzZXRDb250ZW50U2NhbGUoZmxvYXQgc2NhbGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCmluZGV4
IDRjZmM1MmZkYzEzNTdkZWYxNjkzZGExNzlhYjg0MmU2YzQ1OGY5OTQuLmU0NjA1ZGUyMDAzYmRm
MDY2MzczNTAzNzAwYWIwMTAyZDZjMzU2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJJ
bnRSZWN0LmgiCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNpbXBv
cnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDcsNyBAQCBJY29uOjp+SWNvbigpCiB9CiAKIC8vIEZJ
WE1FOiBNb3ZlIHRoZSBjb2RlIHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCi1QYXNz
UmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZW5hbWVzKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBmZjA3MTMxYTYxZmNlZDA0NTg2YjM3
MmQ5YmEyMDc5YTk4NzNjMzhiLi5mOTEyZGUxZGQwYWViZGM0OGI1MDJkOGQ5NGU1ZTU5NGM4OWY2
ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdl
TWFjLm1tCkBAIC05MywxMSArOTMsMTEgQEAgQ0ZEYXRhUmVmIEJpdG1hcEltYWdlOjpnZXRUSUZG
UmVwcmVzZW50YXRpb24oKQogICAgIGlmICghbnVtRnJhbWVzKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFZlY3RvcjxDR0ltYWdlUmVmPiBpbWFnZXM7CisgICAgVmVjdG9yPFJldGFpblB0cjxD
R0ltYWdlUmVmPj4gaW1hZ2VzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFt
ZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkp
OworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KGkpOwogICAgICAgICBpZiAoY2dJbWFnZSkKLSAgICAgICAgICAgIGltYWdlcy5hcHBlbmQo
Y2dJbWFnZSk7CisgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKFdURk1vdmUoY2dJbWFnZSkpOwog
ICAgIH0KIAogICAgIHVuc2lnbmVkIG51bVZhbGlkRnJhbWVzID0gaW1hZ2VzLnNpemUoKTsKQEAg
LTEwOSw3ICsxMDksNyBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRh
dGlvbigpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bVZhbGlkRnJhbWVzOyArK2kpCi0gICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdl
KGRlc3RpbmF0aW9uLmdldCgpLCBpbWFnZXNbaV0sIDApOworICAgICAgICBDR0ltYWdlRGVzdGlu
YXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2VzW2ldLmdldCgpLCAwKTsKIAog
ICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCmluZGV4
IGE3ODA3MGQ5YWFhZjdmNGUyYTMxODllZTE0OGE2YTVjNzkzODhjMDUuLmEzOTQ2Y2FmNGY4M2Uw
MGNmZDFiOTlhNThmMmM5OTIyMzE3OWI0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgSWNvbjo6fklj
b24oKQogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY29kZSB0byBDaHJvbWVDbGllbnQ6Omljb25G
b3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAo
ZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXggODM1ZWNm
M2Y0ZmVlZWI4YTBkZmE4ZDM2OTczMTI4ZjNiODA3YjkyNi4uZGUwYTcwYmY4YTA2YTRjZWZkNTlm
YWUyMzljODk1NzAzNDk2OGNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtOTAsOCArOTAsOCBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVm
IGltYWdlID0gZnJhbWVBdEluZGV4KGkpOwotICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAm
JiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53
aWR0aCgpKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBmcmFtZUlt
YWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJ
bWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUu
d2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRG
cmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKICAgICAgICAgICAgIGRyYXco
Y3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3Jj
U2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCAyOWEyMDIzZGI2M2E5MTQzNGMz
OTQ4ZWFhNTUyM2JiNjFmZTgxMDc1Li45N2VkMDk3OTM1YzUxZmMyMGE4NDVjOTU4ZTE1Njk4ZDIw
MDBkYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKICAgICAgICAgaWYgKCFz
dXJmYWNlKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggZmM4N2Y4MzQw
MzMxOTU1NzNmNTY3ZmMwNThjN2M3M2Q4NThhMTk3YS4uYjM1NDdkOTRlODA4Zjg3NGFlZDlkYTBm
MjkxYmVjZTIwYTY0NjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIgdG8g
dGhlIHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCiAgICAgICAgIC8vIChBY3R1YWwgdXNl
OiBUaGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBCaXRtYXBJbWFnZSBhbmQgZnJlZWQgaW4K
ICAgICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4KLSAgICAgICAgUGFzc05hdGl2ZUltYWdl
UHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgYXNO
ZXdOYXRpdmVJbWFnZSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsK
ICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVy
biBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5j
cHAKaW5kZXggM2ZlNzA0MDIzNDE5ZDk3NTNiMTM5OWQ5ZjZjMDBiNjczOTQ1MTI5Ni4uN2I0MTI5
NWY4NTczNThmYmJmMzVjMWIwNTI1ZThkNmNjMzUyMGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
RGVjb2RlckNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29u
c3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0
YSgKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQ
aXhlbERhdGEqPihtX2J5dGVzKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNHV2luLmNwcAppbmRleCBhZDI1OTg5NjgzMGE0OWEzOTgzMDhjODQyMTk2ZjJjOTc2
MThiMDE4Li5lNDg4MTZkNDE1MjY0ZjI0NTc5MWI3MzdhNTViNzBhYzI1NTQ1MjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTEyOCw3
ICsxMjgsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBp
bWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKICAgICBpZiAoIWhibXAgfHwgIWRyYXdD
b250ZXh0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIENHSW1hZ2VSZWYgc3JjSW1hZ2UgPSBp
bWctPmdldENHSW1hZ2VSZWYoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3JjSW1hZ2Ug
PSBpbWctPmdldENHSW1hZ2VSZWYoKTsKICAgICBDR1JlY3QgcmVjdDsKICAgICByZWN0LnNpemUg
PSBJbnRTaXplKGltZy0+c2l6ZSgpKTsKICAgICByZWN0Lm9yaWdpbi54ID0gMDsKQEAgLTEzOSw3
ICsxMzksNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBp
bWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKICAgICBDR0NvbnRleHRGaWxsUmVjdChk
cmF3Q29udGV4dCwgcmVjdCk7CiAgICAgaWYgKHNyY0ltYWdlKSB7CiAgICAgICAgIENHQ29udGV4
dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAgICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZSk7CisgICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOwog
ICAgIH0KICAgICBDR0NvbnRleHRSZWxlYXNlKGRyYXdDb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNDJlYTVlZTUzNDIxYTc3ZDA3ZTM0ZTZm
ODBiNDMzYzYyMDczN2I4Yy4uYzE1ZmFmYmQ4ZWExYjYxMzI0ODY1NjU0ZDk0OTQyZGZlZDQ2NTM1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xODAsMTcg
KzE4MCwxNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaQogfQogCiAjaWYgVVNFKENBSVJPKQot
Ly8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28g
UGFzc05hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRp
dmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcwogLy8gdG8gYmUg
YSBzbWFydCBwb2ludGVyIHR5cGUuCi1QYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENhaXJvIGRvZXMgbm90IHVz
ZSB0aGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5j
b25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxl
cmF0ZWQpOwogICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZHJhdyhidWZm
ZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5k
TW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDg3MGY2Yzg1YzVlNjg0ZTE3N2MzMGQxNmMy
MTY2YTM0MGRjZDVhN2IuLjQ5MWRkZmIzYzIxMzllZjg4MjEwMWQxYWY0NWI1YWVmMTEwYzRmZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC02Niw3ICs2Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKICNpZiBVU0Uo
Q0FJUk8pCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggNGUxNjFlM2Yw
ZDQ0YTZhYTZlYTZjMDNmNWVkOWFiYzE5ZWJhZWExZC4uN2UxNDNkZWQyZDY2OWFiM2FjMDljNDk2
YjRlNGJlZTdkYzg3ZjIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgU1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0CiAgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4
dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAotUGFz
c05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpCitOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKQogewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCAzNTk3NTQyODlmYzMwNDIxOGNkYjhiZjEyMDNi
ODczYzI5ZmQ1MmQyLi5kMjI0ZmM0NjEyZmQ5NWExYWVhNzdhZmI0NDc5NzY5MjM1MjdhY2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAgIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNo
ZS5tbQppbmRleCBkNzFlNjY0M2IzYzIxMmIyZGI2NDRiMzE1Mjk0YjFjM2JjNzZmY2Y4Li4yYTU5
ZmQ2YjdmZDRmZmI2MjMxOTBmMmM1ZTg4NzQyNzc3ZDQ4OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViQ2FjaGUubW0KQEAgLTIwNCw3ICsyMDQsNyBAQCArIChDR0ltYWdlUmVmKWltYWdlRm9yVVJM
OihOU1VSTCAqKXVybAogICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9IGRv
d25jYXN0PFdlYkNvcmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwogICAgIGlmICgh
Y2FjaGVkSW1hZ2UuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIGNhY2hlZEltYWdlLmltYWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKyAgICByZXR1cm4gY2Fj
aGVkSW1hZ2UuaW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLmxlYWtSZWYoKTsKIH0KIAogI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAppbmRleCAwZjZkZTdhMTQ2YTYxMWE1MmFhMWU1
MzkwMTlmYTZjMWM0NjcyNWFlLi42NzdmYjgzMmU4OTVmM2RiMWQ0YWVlZWMwZjc0MjdjZDk4MjA0
MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29u
RGF0YWJhc2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dL
SWNvbkRhdGFiYXNlQ0cuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiBDR0ltYWdlUmVmIFdLSWNvbkRhdGFiYXNlVHJ5R2V0Q0dJbWFnZUZvclVSTChXS0lj
b25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tTaXplIHNp
emUpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gdG9JbXBsKGljb25EYXRhYmFzZVJlZiktPmltYWdl
Rm9yUGFnZVVSTCh0b1dURlN0cmluZyh1cmxSZWYpKTsKLSAgICByZXR1cm4gaW1hZ2UgPyBpbWFn
ZS0+Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKEludFNpemUoc3RhdGljX2Nhc3Q8aW50PihzaXpl
LndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50PihzaXplLmhlaWdodCkpKSA6IDA7CisgICAgcmV0dXJu
IGltYWdlID8gaW1hZ2UtPmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShJbnRTaXplKHN0YXRpY19j
YXN0PGludD4oc2l6ZS53aWR0aCksIHN0YXRpY19jYXN0PGludD4oc2l6ZS5oZWlnaHQpKSkubGVh
a1JlZigpIDogbnVsbHB0cjsKIH0KIAogQ0ZBcnJheVJlZiBXS0ljb25EYXRhYmFzZVRyeUNvcHlD
R0ltYWdlQXJyYXlGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VS
TFJlZiB1cmxSZWYpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gdG9JbXBsKGljb25EYXRhYmFzZVJl
ZiktPmltYWdlRm9yUGFnZVVSTCh0b1dURlN0cmluZyh1cmxSZWYpKTsKLSAgICByZXR1cm4gaW1h
Z2UgPyBpbWFnZS0+Z2V0Q0dJbWFnZUFycmF5KCkubGVha1JlZigpIDogMDsKKyAgICByZXR1cm4g
aW1hZ2UgPyBpbWFnZS0+Z2V0Q0dJbWFnZUFycmF5KCkubGVha1JlZigpIDogbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCAwNDBjYWYzYzQwMzhkOTQ2OTVhNmE1NjI0MDJmMTgxZGE3
M2Y3YWMwLi43NzllZWU0MzI3OTM2OGY0YTkzYjJkMjYxYWRiOTU0YjVjMTc0MmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtNDAzMyw3ICs0MDMzLDcgQEAgLSAoVUlJbWFnZSAqKV9wcmVzZW50YXRp
b25TbmFwc2hvdEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2wK
IHsKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudElt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gW1tbVUlJbWFnZSBhbGxv
Y10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29u
dGVudEltYWdlLT5nZXRDR0ltYWdlUmVmKCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tb
VUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJ
bmRpY2F0b3IuY29udGVudEltYWdlLT5nZXRDR0ltYWdlUmVmKCkuZ2V0KCldIGF1dG9yZWxlYXNl
XTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVzZW50YXRpb25SZWN0c0ZvclByZXZpZXdJdGVtQ29u
dHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cm9sbGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNjhlYTIz
MzRmZWJjMDQzOGMzN2IxNDgwZjdlMTlhNGVkMzk3ZjBhMi4uZWJjMWQwOTg3MjVkZjAyOTRmOTJh
YTEyNGU4MjE0ZTE1MmVlNTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTcxOSwyMSArMTcxOSwyMSBAQCB2b2lkIFBsdWdp
blZpZXc6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwg
dWludDY0X3Qgd2luZAogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIGJvb2wgaXNBbG1vc3RT
b2xpZENvbG9yKEJpdG1hcEltYWdlKiBiaXRtYXApCiB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9
IGJpdG1hcC0+Z2V0Q0dJbWFnZVJlZigpOwotICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0c1BlckNv
bXBvbmVudChpbWFnZSkgPT0gOCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0g
Yml0bWFwLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgQVNTRVJUKENHSW1hZ2VHZXRCaXRzUGVyQ29t
cG9uZW50KGltYWdlLmdldCgpKSA9PSA4KTsKIAotICAgIENHQml0bWFwSW5mbyBpbWFnZUluZm8g
PSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5m
byA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKGltYWdlLmdldCgpKTsKICAgICBpZiAoIShpbWFnZUlu
Zm8gJiBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSkgfHwgKGltYWdlSW5mbyAmIGtDR0JpdG1h
cEFscGhhSW5mb01hc2spICE9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHsKICAg
ICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGJlaW5nIGFibGUgdG8gaGFuZGxlIG90aGVyIHBpeGVs
IGZvcm1hdHMuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdl
KTsKLSAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZSk7Ci0gICAgc2l6
ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdlKTsKKyAgICBzaXpl
X3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBoZWln
aHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJS
b3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UuZ2V0KCkpOwogCi0gICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJ
bWFnZUdldERhdGFQcm92aWRlcihpbWFnZSkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBw
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVBy
b3ZpZGVyKGltYWdlLmdldCgpKSkpOwogICAgIGNvbnN0IFVJbnQ4KiBkYXRhID0gQ0ZEYXRhR2V0
Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7CiAKICAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1w
bGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274780</attachid>
            <date>2016-03-23 15:01:09 -0700</date>
            <delta_ts>2016-03-23 16:51:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160323150113.patch</filename>
            <type>text/plain</type>
            <size>81555</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uYzJjOGIzZTIwNGQxMzAwYzRjZDRjODZiMTdmODhj
Mjg0MmNlZDM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMSBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1h
Z2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgor
ICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrIHdhcyBk
b25lIHRvIGVuc3VyZSB0aGUgQ0cKKyAgICAgICAgcG9pbnRlciBpcyByZWZjb3VudGVkIGNvcnJl
Y3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYQorICAgICAgICBGcmFtZURh
dGEgc2luY2UgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdl
UmVmLgorCisgICAgICAgIFdpdGggdGhpcyBjaGFuZ2UsIFBhc3NOYXRpdmVJbWFnZVB0ciBpcyBu
b3QgbmVlZGVkIGFueW1vcmUuIFNvIGFsbCB0aGUKKyAgICAgICAgaW5zdGFuY2Ugb2YgUGFzc05h
dGl2ZUltYWdlUHRyIGNhbiBiZSByZXBsYWNlZCBieSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0TlNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6
Z2V0R2RrUGl4YnVmKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRFdmFzT2JqZWN0KToK
KyAgICAgICAgQ2hhbmdlIGFsbCB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUg
UmV0YWluUHRyPENHSW1hZ2VSZWY+LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgIENoYW5nZSBmdW5jdGlvbidzIG5hbWUgYW5kIHJlcGxhY2UgUGFzc05h
dGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUlt
YWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oOgorICAgICAgICBNYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQg
cG9pbnRlciBmb3IgQ0cuIEdldCByaWQgb2YgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHNp
bmNlIE5hdGl2ZUltYWdlUHRyIGlzIG5vdyBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3Jt
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2
ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICBTaW5jZSBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSByZXR1cm5zIGEgUmV0YWluUHRyLCBtb3ZlIGl0CisgICAg
ICAgIHRvIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgdG8gcmVtb3ZlIHRoZSByZWZjb3VudCBjaHVy
bi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRh
OjpjbGVhcik6CisgICAgICAgIFJlcGxhY2UgbV9mcmFtZSB3aXRoIG1faW1hZ2UgYW5kIGZyYW1l
KiB3aXRoIGZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIFJlcGxhY2Ug
KkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpj
bGVhcik6IE5vIG5lZWQgdG8gY2FsbCBDR0ltYWdlUmVsZWFzZSgpLiBKdXN0IGFzc2lnbgorICAg
ICAgICBtX2ltYWdlIHRvIG51bGxwdHIgYW5kIGl0IHdpbGwgY2FsbGVkIGZyb20gdGhlIFJldGFp
blB0ciBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBS
ZXBsYWNlIENHSW1hZ2VSZWYgd2l0aCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4uIFJlcGxhY2UKKyAg
ICAgICAgKkZyYW1lKiB3aXRoICpGcmFtZUltYWdlKi4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICBVc2Ug
bV9jZ0ltYWdlLmdldCgpIGluc3RlYWQgb2YgbV9jZ0ltYWdlIHdoZW4gY2FsbGluZyBDRyBmdW5j
dGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgR2V0IHRoZSByYXcgQ0dJbWFnZVJlZiBmcm9tIHRoZSBOYXRpdmVJbWFnZVB0ciB3aGVu
IGNhbGxpbmcgdGhlIENHIGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSB0aGUg
ZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJpYWJsZQor
ICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVycy4KKyAg
ICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJ
bWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3TmF0aXZlSW1hZ2U6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAg
ICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ciBhbmQgdXNl
IGNvbnN0YW50IHJlZmVyZW5jZS4gCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgIENh
bGwgYSBmdW5jdGlvbiB3aXRoIGl0cyBuZXcgbmFtZS4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6
Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNv
bkd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6SWNvbjo6SWNvbik6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9y
RmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6CisgICAgICAgIFVzZSBzbWFydCBwb2ludGVy
cyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW5zdGVhZCBvZiByYXcgcG9pbnRlcnMgQ0dJbWFnZVJl
Zi4KKyAgICAgICAgQW5kIGNoYW5nZSBQYXNzUmVmUHRyIHRvIFJlZlB0ci4KKyAgICAgICAgCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6IENvbGxlY3QgdGhlIG5h
dGl2ZSBpbWFnZXMKKyAgICAgICAgaW4gYSB2ZWN0b3IgZm9yIHNtYXJ0IHBvaW50ZXJzLgorICAg
ICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOiBDaGFuZ2UgUGFzc1JlZlB0
ciB0byBSZWZQdHIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUpOiBDYWxsIHRoZSBmdW5jdGlvbgorICAgICAgICB3aXRoIGl0cyBu
ZXcgbmFtZSBhbmQgcmVjZWl2ZSB0aGUgcmV0dXJuIHZhbHVlIGluIGEgc21hcnQgcG9pbnRlciBs
b2NhbAorICAgICAgICB2YXJpYWJsZS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAg
ICAgIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0
aCBOYXRpdmVJbWFnZVB0ci4KKyAgICAgICAgCiAyMDE2LTAzLTE4ICBaaHVvIExpICA8emFjaGxp
QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgQXV0b0ZpbGwgYnV0dG9uIGluIGlucHV0IGZp
ZWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDFlNmZj
Y2Q4ZWI0Njk5YzA2YTk5YzQyMzZiMTkxOTUxZTg1ZGMwMmYuLjcxMzE0YmMyNjc0NTI4ZmRkMjE1
NjJlODNiMzJjMTYxNmVhZjRmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygp
ICYmIHBsYXllcigpLT5oYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKLVBhc3NOYXRpdmVJ
bWFnZVB0ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05h
dGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZDk0OGY5NDRhMzA4MTZhYTU3YjNj
OGVlYTYwMjQ4ODEyNDU2NTE1Li5iNGQ3ZjFlMTcwZjFmNzNlY2E0ODY1NjQ2MDdjZDU3ZWYxZjRm
ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjksNyArNjks
NyBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNj
ZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpOwogCiAgICAgLy8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVz
IGNvcHkgaWYgcG9zc2libGUuCiAgICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXll
cjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5k
ZXggN2JmNjgwNGZjZjhhZmE1Y2NlYzAxOTQzMDliZWM1OTc0NzczZTIyNy4uZDY4Zjk4NmNhYTdi
Mzg4YTUyOWYzYjgzOTBhMGU2MzczZTZhYWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNjI1LDcg
KzE2MjUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxW
aWRlb0VsZW1lbnQqIHZpZGVvLCBjb25zdCBGbG9hdFJlYwogICAgIGNoZWNrT3JpZ2luKHZpZGVv
KTsKIAogI2lmIFVTRShDRykgfHwgKEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVT
RShHU1RSRUFNRVJfR0wpICYmIFVTRShDQUlSTykpCi0gICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICBpZiAo
TmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
KSB7CiAgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLT52
aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAg
ICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpCiAgICAgICAgICAgICBkaWRE
cmF3RW50aXJlQ2FudmFzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcAppbmRleCA5OTk0NjVlYTM5MDY5N2NiZTAwZmU2ZmE4ODM4YzEzOGU1NDQ3YTE3Li4w
OTkzMGUwZThjYjE5Y2E5MTBiMGUxM2JhYzU2MDc3YTYyZmEzNjk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTIwNCwyOSArMjA0LDI0IEBAIHVu
c2lnbmVkIE1lbW9yeUNhY2hlOjpsaXZlQ2FwYWNpdHkoKSBjb25zdAogICAgIHJldHVybiBtX2Nh
cGFjaXR5IC0gZGVhZENhcGFjaXR5KCk7CiB9CiAKLSNpZiBVU0UoQ0cpCi0vLyBGSVhNRTogUmVt
b3ZlIHRoZSBVU0UoQ0cpIG9uY2Ugd2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFy
dCBwb2ludGVyIG9uIGFsbCBwbGF0Zm9ybXMgb3IKLS8vIHJlbW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZS
ZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28gYXMgdG8gbWFrZSB0
aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KIHN0YXRpYyBDYWNoZWRJbWFnZUNsaWVudCYg
ZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENh
Y2hlZEltYWdlQ2xpZW50PiBjbGllbnQ7CiAgICAgcmV0dXJuIGNsaWVudDsKIH0KIAotYm9vbCBN
ZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKK2Jvb2wgTWVt
b3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKIHsKICAgICBB
U1NFUlQoaW1hZ2UpOwogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQgPSBTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3Rz
LgogCi0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoaW1hZ2UsIG51bGxwdHIpOworICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKICAgICBp
ZiAoIWJpdG1hcEltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkSW1hZ2U+IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJ
bWFnZT4odXJsLCBiaXRtYXBJbWFnZS5nZXQoKSwgQ2FjaGVkSW1hZ2U6Ok1hbnVhbGx5Q2FjaGVk
LCBzZXNzaW9uSUQpOwogCi0gICAgLy8gQWN0dWFsIHJlbGVhc2Ugb2YgdGhlIENHSW1hZ2VSZWYg
aXMgZG9uZSBpbiBCaXRtYXBJbWFnZS4KLSAgICBDRlJldGFpbihpbWFnZSk7CiAgICAgY2FjaGVk
SW1hZ2UtPmFkZENsaWVudCgmZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJ
bWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwogI2lmIEVO
QUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCkBAIC0yNjQsNyArMjU5LDYgQEAgdm9pZCBNZW1vcnlD
YWNoZTo6cmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
ZG9tYWluRm9yQ2EKICAgICAvLyByZXNvdXJjZSBtYXkgYmUgZGVsZXRlZCBhZnRlciB0aGlzIGNh
bGwuCiAgICAgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkucmVtb3ZlQ2xpZW50KCZk
dW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogfQotI2VuZGlmCiAKIHZvaWQgTWVtb3J5Q2FjaGU6
OnBydW5lTGl2ZVJlc291cmNlcyhib29sIHNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExp
dmVSZXNvdXJjZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5o
CmluZGV4IGM4OGQyZGJkNGU2YjFkMjc4MGRkYTA0ZmNjYWY5YjgyM2E0NjE3YTAuLjUzMWU5YWZm
NGI1YWIwNDBlYjFiYmQyODc2ZjdhMGE1ZmI5MWExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0xNTUsMTIgKzE1NSw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlPcmlnaW5TZXQm
IG9yaWdpbnMpOwogICAgIFdFQkNPUkVfRVhQT1JUIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4gb3JpZ2luc1dpdGhDYWNoZShTZXNzaW9uSUQpIGNvbnN0OwogCi0jaWYgVVNFKENHKQot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFrZSBOYXRp
dmVJbWFnZVB0ciBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotICAgIC8vIHJl
bW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0Nh
Y2hlKCkgc28gYXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KLSAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVJbWFnZUZyb21DYWNoZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKLSNlbmRpZgogCiAgICAgLy8gcHJ1bmVEZWFkKigp
IC0gRmx1c2ggZGVjb2RlZCBhbmQgZW5jb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIG5vdCByZWZl
cmVuY2VkIGJ5IFdlYiBwYWdlcy4KICAgICAvLyBwcnVuZUxpdmUqKCkgLSBGbHVzaCBkZWNvZGVk
IGRhdGEgZnJvbSByZXNvdXJjZXMgc3RpbGwgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBkY2NhODhlNWI3
MDdkMWE3MDBiZjQ2ZWY2MzAwNDdhMzNjZjg4YjlmLi42ZGEyNDRlNWQzYTFlNjRhYjNhMTgwZDkx
MzgwMjUwYjY0OTBhMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJv
bm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjbwogICAg
IHJldHVybiBpY29uUmVjb3JkLT5pbWFnZShzaXplKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRy
IEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK05hdGl2ZUltYWdlUHRy
IEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBJbWFnZSog
aWNvbiA9IHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocGFnZVVSTE9yaWdpbmFsLCBzaXplKTsK
ICAgICBpZiAoIWljb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5o
CmluZGV4IDUzMGEzYTMwODkwMTRhM2ViMWJlMDJkMzI0ODI5Y2FjMjZkODZkMzIuLmRiNDNlYzJj
YjMxMTllNTYzMDA4NzQ0YmFiYzA1OTI0ZGU2MWMyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVS
TCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IElu
dFNpemUmKSBvdmVycmlkZTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRp
dmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50
U2l6ZSYpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUm
KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3luY2hyb25vdXNJY29uVVJM
Rm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHN5bmNocm9ub3Vz
SWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvcklj
b25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaAppbmRleCAwMjU0NjUzMDQx
NjkxOTcyMjJlNzdkZjA2ZTY2ZmY2NjNlNzgwOGFhLi41NDRjYmFjYjY5OGM2OGIwZDg2ODFjMjhi
ZDYxOGNlNzI4YzFhZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlQmFzZS5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9h
ZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIHsgcmV0
dXJuIEljb25Mb2FkTm87IH0KICAgICB2aXJ0dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQog
CiAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIHdlIHNob3VsZCB1c2UgdG8gcmVwbGFjZSB0aGUg
YWJvdmUgd2hlbiBzdXBwb3J0ZWQuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXN5bmNocm9u
b3VzTW9kZSgpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZmFmMGY4Njk2MmMzZmI2NTc3NzQ1YmZh
Zjc1YjRjODRkODBjYzA2MC4uNGE1YzYxYTVkMjdiYTg1NTQzYzAwNjQ1ZGY4ZWEyMDMzNTBhOWUx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzdGFydFRpbWVyKGRvdWJs
ZSBkZWxheSkKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKLWJv
b2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBCaXRt
YXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAo
aW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDQsNyAr
MTA0LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xlU2Vj
dXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTg0LDkgKzE4NCw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIEltCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAogICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKTsKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgPSBtX3NvdXJjZS5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgICAg
IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOwot
ICAgICAgICBpZiAobnVtRnJhbWVzID09IDEgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisg
ICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAg
ICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogICAgIH0KIApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgaWYgKCFzdWJzYW1wbGluZ0xldmVsICYm
IGZyYW1lU2l6ZSAhPSBtX3NpemUpCiAgICAgICAgIG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IGZh
bHNlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7CisgICAgaWYgKG1fZnJh
bWVzW2luZGV4XS5tX2ltYWdlKSB7CiAgICAgICAgIGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8
aW50PihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzKTsKICAgICAgICAgbV9kZWNvZGVkU2l6
ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBUaGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxs
IHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGRhdGEgdXNlZApAQCAtMzc5LDE0ICszNzks
MTQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgs
IEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5n
ID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisg
ICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1l
dGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKICAgICAgICAg
Y2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3Qg
aW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKK05hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlv
blNjYWxlSGludCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTM5NSw3ICszOTUsNyBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0
bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNj
YQogCiAgICAgLy8gV2UgbWF5IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0aCBhIGhpZ2hlciBzdWJz
YW1wbGluZyBsZXZlbCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAgICAgLy8gcmUtZGVjb2Rl
IHdpdGggYSBsb3dlciBsZXZlbC4KLSAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYg
bV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2lu
ZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKKyAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXpl
KCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJh
bWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKICAgICAgICAgLy8gSWYgdGhlIGltYWdl
IGlzIGFscmVhZHkgY2FjaGVkLCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6ZSwgcmUtZGVjb2RlIGEg
bGFyZ2VyIHZlcnNpb24uCiAgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4
XS5tX2ZyYW1lQnl0ZXM7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5jbGVhcih0cnVlKTsKQEAg
LTQwNiwxMCArNDA2LDEwIEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVB
dEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhCiAgICAgfQogCiAgICAg
Ly8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJhbWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5k
ZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBp
ZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkK
ICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0
YUFuZEZyYW1lKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpAQCAtNDI4LDkgKzQyOCw5IEBAIGZs
b2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAg
cmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VB
dEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNB
bHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNzQ5M2M2YTRiZmI4NjNkOTc2MzdjNDljNDY0Y2Mz
N2FlNzhlMGEwNC4uNDRkNzdkMDU0Y2NjNDdhNDhlZDE4MzRkZTA4MjhmYzFjYjUzNjYwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC02
NSwxNiArNjUsMTQgQEAgY2xhc3MgVGltZXI7CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KIAogc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRnJhbWVEYXRhKTsKIHB1YmxpYzoKICAgICBGcmFtZURhdGEoKQotICAg
ICAgICA6IG1fZnJhbWUoMCkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9y
aWVudGF0aW9uKQorICAgICAgICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRp
b24pCiAgICAgICAgICwgbV9zdWJzYW1wbGluZ0xldmVsKDApCiAgICAgICAgICwgbV9kdXJhdGlv
bigwKQogICAgICAgICAsIG1faGF2ZU1ldGFkYXRhKGZhbHNlKQogICAgICAgICAsIG1faXNDb21w
bGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRydWUpIAorICAgICAgICAsIG1faGFz
QWxwaGEodHJ1ZSkKICAgICAgICAgLCBtX2ZyYW1lQnl0ZXMoMCkKICAgICB7CiAgICAgfQpAQCAt
ODgsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBj
YWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4KICAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRh
ZGF0YSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOworICAgIE5hdGl2ZUltYWdlUHRy
IG1faW1hZ2U7CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIFN1YnNh
bXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsOwogICAgIGZsb2F0IG1fZHVyYXRpb247CkBA
IC0xMDgsMTEgKzEwNiwxMiBAQCBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFn
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdyYWRpZW50SW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVh
dGUoUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
ciA9IDApCisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRy
JiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKG5hdGl2ZUltYWdlLCBv
YnNlcnZlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZN
b3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsKICAgICB9Ci0gICAgc3RhdGljIFJlZjxCaXRt
YXBJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKKworICAgIHN0YXRp
YyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxw
dHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShvYnNl
cnZlcikpOwogICAgIH0KQEAgLTE3Miw3ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgRXZhc19PYmpl
Y3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBQYXNzTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogICAg
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7
IHJldHVybiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KIAogICAg
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGU7CkBAIC0xOTksOCAr
MTk4LDggQEAgcHJvdGVjdGVkOgogICAgICAgQ2VydGFpbiAgICAgLy8gVGhlIHJlcGV0aXRpb24g
Y291bnQgaXMga25vd24gdG8gYmUgY29ycmVjdC4KICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgQml0bWFwSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBJbWFnZU9ic2VydmVyKiA9IDApOwot
ICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gMCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiwgSW1hZ2VPYnNlcnZl
ciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2Vy
dmVyKiA9IG51bGxwdHIpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgZHJhd0ZyYW1l
TWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRl
OwpAQCAtMjE0LDEwICsyMTMsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGZyYW1lQ291
bnQoKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90LCBmbG9h
dCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY29w
eVVuc2NhbGVkRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKKyAg
ICBOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwog
Ci0gICAgYm9vbCBoYXZlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgYm9vbCBoYXZlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4
IGJhYmM0Yzg1Y2MyZGY3NDk1OGZhMWM5MTBlNTZhYWNiODcxOTBjZjIuLmM1MjRiYTE5ZDVkZGE0
MDVjNjBjMTQ3ODIxNjI3OWMwYzg1OTY2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMDIsNyArMzAyLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CiAjZW5kaWYKIAog
I2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGUzNmJhM2FhNTZkNThjMjA2YTk4M2ZmNWJhOWJmYTdi
MTM2NTExODIuLmRiYmJjZjU4YzM3YjlhNmIxNjRkNmYxMzUxY2Q2ZTE1ZWI0MWQ4NTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaApAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgcHVibGljOgogICAgICAgICBJbWFnZVNvdXJjZSog
bV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX2ltYWdlU3VyZmFj
ZTsKICNlbGlmIFVTRShDRykKLSAgICAgICAgQ0dJbWFnZVJlZiBtX2NnSW1hZ2U7CisgICAgICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBtX2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9w
aXhlbERhdGE7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXpl
ZFJHQkE4RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBk
OTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFlZjNmM2MxN2I3Li5mNmJiYjgyMDZjZWFiN2Nk
MzYzOTYyMDgwNTBiNDAzMTYxZGFhNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSWNvbi5oCkBAIC0yMiw4ICsyMiw4IEBACiAjZGVmaW5lIEljb25faAogCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ1LDE5ICs0NSwxOSBA
QCBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgCiBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8
SWNvbj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPElj
b24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IH5JY29uKCk7CiAKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEljb24+
IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsg
fQorICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgSWNvbihoSWNvbikpOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgZm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92
ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFz
c1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoTmF0aXZlSW1hZ2VQdHIpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY4LDcg
KzY4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKLSAgICBJY29u
KENHSW1hZ2VSZWYpOworICAgIEljb24oY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+Jik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRlZDZlMzVkOTlhZmFhYjViOGJkZWM2ZmQ3YTEzMjBlMjBkMDQ2ZjUuLmMzMTQy
YWRlYzdhMjVjODQ2MGUyOWFmMzUwMmI5NDE0N2I3MDZjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTM1LDIzICsxMzUsMjMgQEAgcHVibGljOgogCiAg
ICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNwYWNlVGlsZSwgUmVw
ZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2
aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSB7IHJl
dHVybiBJbWFnZU9yaWVudGF0aW9uKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZl
IGltYWdlIGZvcm1hdHMuCiAKICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgTlNJbWFnZSog
Z2V0TlNJbWFnZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5TSW1h
Z2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVy
biBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFVTRShDRykKLSAgICB2aXJ0dWFsIENHSW1hZ2VS
ZWYgZ2V0Q0dJbWFnZVJlZigpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYg
Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9Ci0g
ICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJldGFp
blB0cjxDRkFycmF5UmVmPiBnZXRDR0ltYWdlQXJyYXkoKSB7IHJldHVybiBudWxscHRyOyB9CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE2MCwxMSArMTYwLDExIEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRH
ZGtQaXhidWYoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBHZGtQaXhidWYqIGdldEdka1Bp
eGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oRUZMKQot
ICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSB7IHJldHVy
biBudWxscHRyOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NGVmMDUzYTMzM2ZmNWZjNTc4ZTgxODAwY2M2
ZmM5NzU1ZWZiYWI4Li5hZTMxYzk4MzUyMWQ1MDA4MjI1YzFmYzM0MjljMmM0MGEwMzdlNDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CkBAIC0xNDgsMTkgKzE0OCwxOSBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBj
b25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7
CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKK05hdGl2ZUltYWdlUHRyIEltYWdlU291
cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJh
bWVCdWZmZXJBdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2Ug
cHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuICBJZiB3ZSBoYXZlIGFuCiAgICAgLy8gZW1wdHkgaW1h
Z2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFJldHVybiB0
aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRo
ZSBkYXRhCiAgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlz
IGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCBhY2RkMWNlNGNlMzAwZGU4MWM5ZTA2MmVl
ZTc2MDdiZjQ3MmE3MGFmLi5jMTFmN2JlNDgyOWU0ZTZiYzQwMTc4OTYzYzFkNTFhMTg2NjBhMGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gZGVjb2RlZCBmcmFtZXMuCiAgICAg
Ly8KICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCBjbGVhcihmYWxzZSwgbikgYW5kIHN1
YnNlcXVlbnRseSBjYWxsCi0gICAgLy8gY3JlYXRlRnJhbWVBdEluZGV4KG0pIHdpdGggbSA8IG4s
IHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCisgICAgLy8gY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0
cnVlKS4KICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBzdGF0ZWZ1bCBJbWFnZVNvdXJjZXMvZGVj
b2RlcnMgd2lsbCB3b3JrIHByb3Blcmx5LgogICAgIC8vCiAgICAgLy8gVGhlIHxkYXRhfCBhbmQg
fGFsbERhdGFSZWNlaXZlZHwgcGFyYW1ldGVycyBzaG91bGQgYmUgc3VwcGxpZWQgYnkgY2FsbGVy
cwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5v
dCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CiAg
ICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgUGFzc05hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAg
ICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSAwKTsKIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7
CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5v
dCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggOTliOWQ1Y2FkZTczZTBj
MWZhZDA5YTc3Y2Y1ZjZkYjI5OGMzN2FhNS4uOTA2OTViNDQ1NjNhMDhiNGQwY2M2ZDM2YzRmZmQ4
MmQ1MWNhMWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcApAQCAtODM3LDcgKzgzNyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwK
ICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
Y29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwg
dHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIg
TWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIg
TWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBt
X3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDVlYTU1ODcxMTA1OTM3
ZWVlNDA2M2U3MjU5MmExYWU1NTcxNTQ1Y2IuLmMyZTBjZjdiODEzMDgxZDE1MzM3ZDBhOTJlNmNh
MzE3ZDBhZTA4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaApAQCAtNDIzLDcgKzQyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBodHRwOi8vc3Jj
LmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lL3RydW5rL3NyYy9ncHUvY29tbWFuZF9idWZmZXIv
c2VydmljZS9nbGVzMl9jbWRfY29weV90ZXh0dXJlX2Nocm9taXVtLmNjIHZpYSBzaGFkZXJzLgog
ICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEKiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAgICBQYXNzTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIHVzaW5nIE1lZGlhUGxheWVy
RW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCmluZGV4IGU1NzlhZTkzODU2ZTdkZGM4NTk2ODY0NzM2MThkYTJhMTRkNmM3OTAuLmQ5
MTlmNTQzMzdhNDU3YzEwZWM2OGJhNWEyMGViN2RlM2I4ZmVjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0x
NTEsNyArMTUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBh
aW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBH
QzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApp
bmRleCBkZjk0MWE1NjZhOWU0NjkyNzcyN2JhMWVjNjg0OGYyMTY4MDNhNDViLi4wMzQ2NjY1YjM2
ZGJlNTY2MWEwOWNlNzFjNGVjYjRhMGMxZThlMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNk
ZWZpbmUgTmF0aXZlSW1hZ2VQdHJfaAogCiAjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CiAjZWxpZiBVU0Uo
Q0FJUk8pCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKQEAgLTM4LDIxICszOSwxNCBAQCB0eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEZJWE1FOiBOYXRpdmVJbWFnZVB0ciBhbmQgUGFzc05hdGl2ZUltYWdlUHRyIHNob3VsZCBi
ZSBzbWFydAotLy8gcG9pbnRlcnMgKHNlZSBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSkuCiAjaWYgVVNFKENHKQotdHlwZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRy
OwordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBV
U0UoQ0FJUk8pCiB0eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwotdHlwZWRlZiBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gUGFzc05hdGl2ZUltYWdlUHRy
OwogI2VsaWYgVVNFKFdJTkdESSkKIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7CiAjZW5kaWYKIAotI2lmICFVU0UoQ0FJUk8pCi10eXBlZGVmIE5hdGl2ZUltYWdl
UHRyIFBhc3NOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0NjhiMDY4MTEwZWJhMjMyZjJiYzZmZjA2MjZlZmJhMjAu
LmQ2ZGU3NjJjMWZlMmJmODQ2YWFhZTI0NTNjNmM1NWIwYmFkY2E5ZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGFz
dEltYWdlKCk7CiAgICAgYm9vbCB2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAg
dm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmKTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
IG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2UoKTsKIAogICAgIHZvaWQgY3JlYXRlT3BlbkdMVmlkZW9PdXRwdXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IDE1NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYu
LmM3Nzc2ZTA0ZmMwZjdiMTQ2MzA5NGQxNDkwOWNmN2M1MDkzZjllNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMjM0NiwxMCArMjM0NiwxMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKHZpZGVvVGV4dHVyZS5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4
dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwg
cHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBy
ZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdEltYWdlOwogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1
dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMjMwYThmNmI3MjFiNTE1
YTMxZTUyMDI2ZWZiMGRlYTRkNGMwMDAxYS4uNTZmNzkxZDk4M2U3YWNmMmJkZTdkMDU4YjQyNzY0
MDA5YTEwZmVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMDA4LDE2ICsxMDA4LDE2IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFn
ZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBhdXRvIG5ld0ltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIGlmICghbmV3
SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IHByb2JhYmx5
IGRvbid0IG5lZWQgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgYXQgYWxsIG5vdy4KLSAgICAg
ICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQorICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRl
bnRzSW1hZ2UgPT0gbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAg
ICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOwotICAgICAgICBtX3Bl
bmRpbmdDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7CisgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlID0gV1RGTW92ZShuZXdJbWFnZSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRz
SW1hZ2UgPSBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKIAogICAgICAgICBtX2NvbnRlbnRz
TGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOwogICAgICAgICBpZiAoIW1fY29u
dGVudHNMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggY2Q1N2VlNDg1ZWE4MGM2Y2Yz
NDdhYjNiZDk3MzdkNTk5OWUxMDI4Mi4uYmRhMGRjMjgxYzkzN2RjZGYyZGIxNWFjNzEyOGEyMzk0
ZDc1NzRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0Jp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmIG5hdGl2ZUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAg
ICwgbV9zaXplKGNhaXJvU3VyZmFjZVNpemUobmF0aXZlSW1hZ2UuZ2V0KCkpKQogICAgICwgbV9t
aW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgwKQpAQCAtNTgsNyArNTgsNyBAQCBCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFn
ZU9ic2VydmVyKgogewogICAgIG1fZnJhbWVzLmdyb3coMSk7CiAgICAgbV9mcmFtZXNbMF0ubV9o
YXNBbHBoYSA9IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobmF0aXZlSW1hZ2UuZ2V0KCkpICE9
IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IG5hdGl2ZUlt
YWdlOworICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKICAg
ICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7CiAKICAgICBjaGVja0ZvclNvbGlk
Q29sb3IoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KIAogICAg
IHN0YXJ0QW5pbWF0aW9uKCk7CiAKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNl
ID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBmcmFt
ZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBp
dCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENv
bG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRG
cmFtZSk7CisgICAgYXV0byBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJh
bWUpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2
ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU4LDggKzE1OCw4IEBAIGJv
b2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgaWYgKGNsZWFyTWV0
YWRhdGEpCiAgICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7CiAKLSAgICBpZiAobV9mcmFt
ZSkgewotICAgICAgICBtX2ZyYW1lID0gbnVsbHB0cjsKKyAgICBpZiAobV9pbWFnZSkgeworICAg
ICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggY2M3
MDQ2MTQ3YWU4MWYxZmFkYWE2ZDg0MTYyNDk4MGM2ZmRmY2JmMS4uOGM0MTg2ZDcxZTUzYTE5MDdl
OTJkNzNhMmIwMTY0N2ZmZDY2YjFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5j
cHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJh
Y3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBk
ZWNvZGVyLnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29k
ZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29k
ZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9p
bWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
ICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNz
dW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZh
bHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggZjA3OTIwZjBkMjMyNDYyYzhmYjQxYTAzMjJkODIyYWM5ZDVlZDMwNy4uM2NmNDU0M2Yy
MDVlZDk5NDk4ODYxMDkyMmNjZGQ3NzI1ZWUwYzE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtMjU5LDE4ICsyNTksMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gaW1hZ2VQdHI7Ci0KICAgICBwbGF0Zm9ybUNv
bnRleHQoKS0+c2F2ZSgpOwogCiAgICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJ
bWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcElt
YWdlQ0cuY3BwCmluZGV4IDAxYjdkNjkyY2RiZDdhYjRkMjJiYmMxMzk5YzEwMzI4ZjU3ZTVlNDcu
LjMyYmQwYjVjYjU1M2ZjZGVkZGJhYWQyZjk2MzYxMzAxZjVkNDZlY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBA
IC01OCwxOCArNTgsMTcgQEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0
YSkKICAgICBtX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb247CiAgICAgbV9z
dWJzYW1wbGluZ0xldmVsID0gMDsKIAotICAgIGlmIChtX2ZyYW1lKSB7CisgICAgaWYgKG1faW1h
Z2UpIHsKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFy
SW1hZ2UobV9mcmFtZSk7CisgICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1faW1h
Z2UuZ2V0KCkpOwogI2VuZGlmCi0gICAgICAgIENHSW1hZ2VSZWxlYXNlKG1fZnJhbWUpOwotICAg
ICAgICBtX2ZyYW1lID0gMDsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUJpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQor
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFJldGFpblB0cjxDR0ltYWdlUmVmPiYmIGltYWdlLCBJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9t
aW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgwKQogICAgICwgbV9pbWFnZU9yaWVudGF0aW9uKE9yaWdp
blRvcExlZnQpCkBAIC04OSw4ICs4OCw4IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0lt
YWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9zaXplQXZh
aWxhYmxlKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiB7Ci0gICAgQ0dGbG9h
dCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKTsKLSAgICBDR0Zsb2F0IGhlaWdodCA9
IENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZSk7CisgICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VH
ZXRXaWR0aChpbWFnZS5nZXQoKSk7CisgICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlLmdldCgpKTsKICAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0
OwogICAgIG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CiAKQEAgLTk5LDcgKzk4LDcg
QEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiAgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXpl
OwogCiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gQ0dJ
bWFnZVJldGFpbihjZ0ltYWdlKTsKKyAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShp
bWFnZSk7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IHRydWU7CiAgICAgbV9mcmFtZXNb
MF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwogCkBAIC0xMzYsNyArMTM1LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFoYXZlRnJhbWVBdEluZGV4KDApKSB7CisgICAg
aWYgKCFoYXZlRnJhbWVJbWFnZUF0SW5kZXgoMCkpIHsKICAgICAgICAgSW50U2l6ZSBzaXplID0g
bV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKICAgICAgICAgaWYgKHNpemUud2lkdGgo
KSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0
Nyw3ICsxNDYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogCiAg
ICAgQ0dJbWFnZVJlZiBpbWFnZSA9IG51bGxwdHI7CiAgICAgaWYgKG1fZnJhbWVzLnNpemUoKSkK
LSAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2ZyYW1lOworICAgICAgICBpbWFnZSA9IG1f
ZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCk7CiAKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1
cm47CkBAIC0xNzMsMTQgKzE3MiwxNCBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlk
Q29sb3IoKQogCiBDR0ltYWdlUmVmIEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKCkKIHsKLSAg
ICByZXR1cm4gZnJhbWVBdEluZGV4KDApOworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgw
KS5nZXQoKTsKIH0KIAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVm
T2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVD
b3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VS
ZWYgY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwogICAgICAgICBpZiAoY2dJ
bWFnZSAmJiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwgQ0dJbWFnZUdldEhlaWdo
dChjZ0ltYWdlKSkgPT0gc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBjZ0ltYWdlOwogICAgIH0K
QEAgLTE5MywxMSArMTkyLDExIEBAIFJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6
Z2V0Q0dJbWFnZUFycmF5KCkKIHsKICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CiAg
ICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIAogICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJlZiBjdXJyRnJh
bWUgPSBmcmFtZUF0SW5kZXgoaSkpCisgICAgICAgIGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9
IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpKQogICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKGFycmF5LCBjdXJyRnJhbWUpOwogICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7
CkBAIC0yMTQsMTIgKzIxMywxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFn
ZXMgZm9yIGRyYXdpbmcgaW50byBQREYgY29udGV4dHMuCiAgICAgaWYgKHdrQ0dDb250ZXh0SXNQ
REZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQotICAgICAgICBpbWFnZSA9IGFkb3B0
Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKSk7CisgICAgICAgIGlt
YWdlID0gY29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAg
IGVsc2UgewogICAgICAgICBDR1JlY3QgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3QgPSBDR1Jl
Y3RBcHBseUFmZmluZVRyYW5zZm9ybShkZXN0UmVjdCwgQ0dDb250ZXh0R2V0Q1RNKGN0eHQucGxh
dGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgZmxvYXQgc3Vic2FtcGxpbmdTY2FsZSA9IHN0ZDo6
bWluPGZsb2F0PigxLCBzdGQ6Om1heCh0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLndp
ZHRoIC8gc3JjUmVjdC53aWR0aCgpLCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLmhl
aWdodCAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKIAotICAgICAgICBpbWFnZSA9IGZyYW1lQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSwgc3Vic2FtcGxpbmdTY2FsZSk7CisgICAgICAgIGltYWdlID0gZnJh
bWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOwogICAgIH0K
IAogICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4g
aW1hZ2UgeWV0LgpAQCAtMjQ1LDI0ICsyNDQsMjQgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYK
ICAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbikKICAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKLSAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3As
IGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGN0eHQuZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRN
b2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBp
bWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK1JldGFp
blB0cjxDR0ltYWdlUmVmPiBCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8
fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNp
emUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5k
ZXgsIDApOwogCiAgICAgaWYgKCFtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKQot
ICAgICAgICByZXR1cm4gQ0dJbWFnZVJldGFpbihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSk7Cisg
ICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKIAotICAgIHJldHVybiBtX3Nv
dXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBtX3NvdXJjZS5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
aW5kZXggNmMwM2EyY2VmODQ2MDY1NjFlYTA3ZWI5MjhmMWNmMjk1ZjlmNWUzNi4uOTlmMDlkYjY3
YmE1NDI4MmRjNGVkNzA1YWU0MTYzODAzMzcxOTNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
QEAgLTMzMywxNSArMzMzLDE1IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlm
ICghZGVjb2Rlci5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4
KDApKTsKLSAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CisgICAgICAg
IG1fZGVjb2RlZEltYWdlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKKyAg
ICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2U7CiAgICAgfSBlbHNlCiAgICAgICAgIG1f
Y2dJbWFnZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYg
KCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1faW1hZ2VXaWR0aCA9
IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2UpOwotICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdl
R2V0SGVpZ2h0KG1fY2dJbWFnZSk7CisgICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRo
KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQo
bV9jZ0ltYWdlLmdldCgpKTsKICAgICBpZiAoIW1faW1hZ2VXaWR0aCB8fCAhbV9pbWFnZUhlaWdo
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNDksNyArMzQ5LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wKICAgICAvLyBzbywgcmUtcmVuZGVyIGl0IGludG8gYW4gUkdCIGNvbG9y
IHNwYWNlLiBUaGUgaW1hZ2UgcmUtcGFja2luZwogICAgIC8vIGNvZGUgcmVxdWlyZXMgY29sb3Ig
ZGF0YSwgbm90IGNvbG9yIHRhYmxlIGluZGljZXMsIGZvciB0aGUKICAgICAvLyBpbWFnZSBkYXRh
LgotICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2Uo
bV9jZ0ltYWdlKTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRD
b2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgQ0dDb2xvclNwYWNlTW9kZWwgbW9kZWwg
PSBDR0NvbG9yU3BhY2VHZXRNb2RlbChjb2xvclNwYWNlKTsKICAgICBpZiAobW9kZWwgPT0ga0NH
Q29sb3JTcGFjZU1vZGVsSW5kZXhlZCkgewogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVm
PiBiaXRtYXBDb250ZXh0OwpAQCAtMzY0LDIyICszNjQsMjIgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wKIAogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQo
KSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25R
dWFsaXR5KGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0ludGVycG9sYXRpb25Ob25lKTsKLSAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlKTsKKyAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9p
bWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlLmdldCgpKTsKIAogICAgICAgICAv
LyBOb3cgZGlzY2FyZCB0aGUgb3JpZ2luYWwgQ0cgaW1hZ2UgYW5kIHJlcGxhY2UgaXQgd2l0aCBh
IGNvcHkgZnJvbSB0aGUgYml0bWFwIGNvbnRleHQuCiAgICAgICAgIG1fZGVjb2RlZEltYWdlID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7
CiAgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOwogICAgIH0KIAotICAg
IHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQobV9j
Z0ltYWdlKTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhl
bChtX2NnSW1hZ2UpOworICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJp
dHNQZXJDb21wb25lbnQobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYml0c1BlclBpeGVs
ID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIGlmIChiaXRz
UGVyQ29tcG9uZW50ICE9IDggJiYgYml0c1BlckNvbXBvbmVudCAhPSAxNikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmIChiaXRzUGVyUGl4ZWwgJSBiaXRzUGVyQ29tcG9uZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2l6ZV90IGNvbXBvbmVudHNQZXJQaXhlbCA9IGJpdHNQ
ZXJQaXhlbCAvIGJpdHNQZXJDb21wb25lbnQ7CiAKLSAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9
IENHSW1hZ2VHZXRCaXRtYXBJbmZvKG1fY2dJbWFnZSk7CisgICAgQ0dCaXRtYXBJbmZvIGJpdElu
Zm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIGJvb2wgYmln
RW5kaWFuU291cmNlID0gZmFsc2U7CiAgICAgLy8gVGhlc2UgY291bGQgdGVjaG5pY2FsbHkgYmUg
Y29tYmluZWQgaW50byBvbmUgbGFyZ2Ugc3dpdGNoCiAgICAgLy8gc3RhdGVtZW50LCBidXQgd2Ug
cHJlZmVyIG5vdCB0byBzbyB0aGF0IHdlIGZhaWwgZmFzdCBpZiB3ZQpAQCAtNDIxLDcgKzQyMSw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2Uo
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAKICAgICBtX2FscGhhT3AgPSBBbHBoYURvTm90
aGluZzsKICAgICBBbHBoYUZvcm1hdCBhbHBoYUZvcm1hdCA9IEFscGhhRm9ybWF0Tm9uZTsKLSAg
ICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8obV9jZ0ltYWdlKSkgeworICAgIHN3aXRjaCAo
Q0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UuZ2V0KCkpKSB7CiAgICAgY2FzZSBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0OgogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEp
CiAgICAgICAgICAgICBtX2FscGhhT3AgPSBBbHBoYURvVW5tdWx0aXBseTsKQEAgLTQ2MSwxNCAr
NDYxLDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0
SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgaWYgKG1faW1hZ2VTb3VyY2VG
b3JtYXQgPT0gRGF0YUZvcm1hdE51bUZvcm1hdHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VH
ZXREYXRhUHJvdmlkZXIobV9jZ0ltYWdlKSkpOworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIobV9jZ0ltYWdlLmdl
dCgpKSkpOwogICAgIGlmICghbV9waXhlbERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihDRkRh
dGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdldCgpKSk7CiAKICAgICB1bnNpZ25lZCBpbnQgc3Jj
VW5wYWNrQWxpZ25tZW50ID0gMDsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0
Qnl0ZXNQZXJSb3cobV9jZ0ltYWdlKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdl
R2V0Qnl0ZXNQZXJSb3cobV9jZ0ltYWdlLmdldCgpKTsKICAgICB1bnNpZ25lZCBwYWRkaW5nID0g
Ynl0ZXNQZXJSb3cgLSBiaXRzUGVyUGl4ZWwgLyA4ICogbV9pbWFnZVdpZHRoOwogICAgIGlmIChw
YWRkaW5nKSB7CiAgICAgICAgIHNyY1VucGFja0FsaWdubWVudCA9IHBhZGRpbmcgKyAxOwpAQCAt
NTM2LDcgKzUzNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29u
c3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgY29udGV4dC5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VIZWln
aHQpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uTm9uZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1h
Z2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBD
b21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFn
ZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENv
bXBvc2l0ZUNvcHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKaW5kZXggYTQ0OTY1NDA0NmFlOGYxMGFiYWQxNjQxNWU2NDYwYWRiYmJiOGU4OC4uZjM0MmRh
MTY1ODExYjIxNzE2M2NmZjE5ZGU0ZjVmMTk5ZGQ4NzY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApA
QCAtMTYyLDE5ICsxNjIsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9y
bVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRl
bnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKGltYWdlUHRyKTsKKyAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2UoaW1hZ2UpOwogCi0gICAgZmxvYXQgY3Vyckhl
aWdodCA9IG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CisgICAgZmxvYXQg
Y3VyckhlaWdodCA9IG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBDR0ltYWdlR2V0
V2lkdGgoc3ViSW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSk7
CiAgICAgaWYgKGN1cnJIZWlnaHQgPD0gc3JjUmVjdC55KCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMjE2LDEzICsyMTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2kKICAgICAgICAgICAg
IGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KHN1YmltYWdlUmVjdC5oZWlnaHQoKSAvIHlTY2Fs
ZSk7CiAKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICAgICAgICAgIGltYWdlID0gc3ViaW1hZ2VD
YWNoZSgpLmdldFN1YmltYWdlKGltYWdlLmdldCgpLCBzdWJpbWFnZVJlY3QpOworICAgICAgICAg
ICAgc3ViSW1hZ2UgPSBzdWJpbWFnZUNhY2hlKCkuZ2V0U3ViaW1hZ2Uoc3ViSW1hZ2UuZ2V0KCks
IHN1YmltYWdlUmVjdCk7CiAjZWxzZQotICAgICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1h
Z2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UuZ2V0KCksIHN1YmltYWdlUmVjdCkpOworICAg
ICAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3Qo
c3ViSW1hZ2UuZ2V0KCksIHN1YmltYWdlUmVjdCkpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAo
Y3VyckhlaWdodCA8IHNyY1JlY3QubWF4WSgpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpID09IGN1cnJIZWlnaHQgLSBDR1JlY3RJbnRlZ3Jh
bChzcmNSZWN0KS5vcmlnaW4ueSk7Ci0gICAgICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5z
ZXRIZWlnaHQoQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgLyB5U2NhbGUpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdldCgpKSA9PSBjdXJy
SGVpZ2h0IC0gQ0dSZWN0SW50ZWdyYWwoc3JjUmVjdCkub3JpZ2luLnkpOworICAgICAgICAgICAg
ICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2Uu
Z2V0KCkpIC8geVNjYWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludChkZXN0UmVjdC54
KCkgLSBzcmNSZWN0LngoKSAvIHhTY2FsZSwgZGVzdFJlY3QueSgpIC0gc3JjUmVjdC55KCkgLyB5
U2NhbGUpKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05h
dGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaQogICAg
IENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKIAogICAgIC8vIERyYXcgdGhlIGlt
YWdlLgotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBhZGp1c3RlZERlc3RSZWN0LCBp
bWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIGFkanVzdGVkRGVz
dFJlY3QsIHN1YkltYWdlLmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd1BhdHRlcm5DYWxs
YmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKQEAgLTMxMSw4ICszMTEsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNlLngo
KSAtIGRlc3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
cGF0dGVyblRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRoZSBjb250ZXh0IHNvIHRo
YXQgZGVzdFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91dC4KICAgICBm
bG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAtIChwaGFzZS55KCkgLSBkZXN0UmVj
dC55KCkgKyB0aWxlUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFu
c2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVIZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJlZiB0aWxlSW1h
Z2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGZsb2F0IGggPSBD
R0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVp
Z2h0KHRpbGVJbWFnZS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1h
Z2U7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzI2LDEzICszMjYsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFnZSBvdXQgb2YgYSBwYXJ0
aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9yaWdpbmFsIGlt
YWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJlY2F1c2Ugc3ViLWltYWdl
cyBhcmUgb25seSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVuZGVycyB3aGVu
IHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NFUlQoaCA9PSBpbWFnZS5o
ZWlnaHQoKSk7Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aElt
YWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsKKyAgICAgICAgc3ViSW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLmdldCgpLCB0aWxlUmVj
dCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBiZXR3ZWVuIHRp
bGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Igbm9uLXplcm8g
c3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50IENHUGF0dGVy
bi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0gdGlsZVJlY3Qu
d2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOwot
ICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlKTsKKyAgICBmbG9hdCB3ID0g
Q0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQoKSk7CiAgICAgaWYgKHcgPT0gaW1hZ2Uuc2l6
ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNwYWNpbmcud2lk
dGgoKSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBGSVhNRTogQ0cgc2VlbXMg
dG8gc25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVuIHdlIGNhcmUgKGUuZy4g
d2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAgIC8vIHdlIHNob3VsZCB0
aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2UgdG8gZml0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAppbmRleCA4NDYzOTZjMTkwMjdjMmMyYmUyNTVjNzY0YWNhZTc2MmZlN2U5ODdhLi5m
YWNlMGMxMTUwZDBjOTE4NjcyYzBkNTAyOWZjZGQ3ZmJkYmU0MWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAt
MTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0
ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+CiAgICAgaWYgKCFpbWFnZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0
ZShpbWFnZS5nZXQoKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShp
bWFnZSkpOwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3Igc2NhbGVCZWhhdmlvcikgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHAKaW5kZXggZDRhMDEyYjZmNTdiZjUzOTMwNjQ3NzdiNmMxMDkzNjZiMjRjNDQ1
Yy4uNTAxNWRkMTVhYmZjODI1ZGNlYjAzMjBmMTIwMjljYmE1MTIxODI3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAK
QEAgLTM0MCw3ICszNDAsNyBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25z
dAogICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0ltYWdlU291cmNlR2V0Q291bnQobV9kZWNvZGVy
KSA6IDA7CiB9CiAKLUNHSW1hZ2VSZWYgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JldGFpblB0
cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFp
bml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2NiwxOCArMzY2LDE1
IEBAIENHSW1hZ2VSZWYgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtCiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVm
IHhibVVUSSA9IENGU1RSKCJwdWJsaWMueGJpdG1hcC1pbWFnZSIpOwogCiAgICAgaWYgKCFpbWFn
ZVVUSSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGlt
YWdlOwogCiAgICAgaWYgKCFDRkVxdWFsKGltYWdlVVRJLCB4Ym1VVEkpKQotICAgICAgICByZXR1
cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgCiAgICAgLy8g
SWYgaXQgaXMgYW4geGJtIGltYWdlLCBtYXNrIG91dCBhbGwgdGhlIHdoaXRlIGFyZWFzIHRvIHJl
bmRlciB0aGVtIHRyYW5zcGFyZW50LgogICAgIGNvbnN0IENHRmxvYXQgbWFza2luZ0NvbG9yc1s2
XSA9IHsyNTUsIDI1NSwgIDI1NSwgMjU1LCAyNTUsIDI1NX07CiAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1hc2tlZEltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aE1hc2tpbmdDb2xv
cnMoaW1hZ2UuZ2V0KCksIG1hc2tpbmdDb2xvcnMpKTsKLSAgICBpZiAoIW1hc2tlZEltYWdlKQot
ICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOwotCi0gICAgcmV0dXJuIG1hc2tlZEltYWdl
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdl
OwogfQogCiBib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBp
bmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAwMjRjYmZlMDBi
NTIyMzM5MzM1OTIwZjlmODUzNGM4MzZkYWNjZjg4Li40OTI3ZWFiZjhlZDEyYTZjMjFlYWIzMWJm
ZTYyZjUyYzZiMjRlYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBA
IC00OTEsMTEgKzQ5MSwxMSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiB9CiAKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFBhc3NO
YXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAg
IDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKICNpZiBVU0UoQ0cpCiAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gc3RvcmUgYW4gaW1hZ2UgZm9yIENhaXJvLgotICAgICwgbV9p
bWFnZVB0cihpbWFnZVB0cikKKyAgICAsIG1faW1hZ2UoaW1hZ2UpCiAjZW5kaWYKICAgICAsIG1f
aW1hZ2VTaXplKGltYWdlU2l6ZSkKICAgICAsIG1fZGVzdGluYXRpb24oZGVzdFJlY3QpCkBAIC01
MDcsNyArNTA3LDcgQEAgRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2
ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGkKICAgICAsIG1fb3JpZW50YXRp
b24ob3JpZW50YXRpb24pCiB7CiAjaWYgIVVTRShDRykKLSAgICBVTlVTRURfUEFSQU0oaW1hZ2VQ
dHIpOworICAgIFVOVVNFRF9QQVJBTShpbWFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKG9wKTsKICAg
ICBVTlVTRURfUEFSQU0oYmxlbmRNb2RlKTsKICNlbmRpZgpAQCAtNTE2LDcgKzUxNiw3IEBAIERy
YXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0
ciwgY29uc3QgRmxvYXRTaXplJiBpCiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogI2lmIFVTRShDRykKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShtX2ltYWdlUHRyLmdldCgpLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlv
biwgbV9zcmNSZWN0LCBtX29wLCBtX2JsZW5kTW9kZSwgbV9vcmllbnRhdGlvbik7CisgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24s
IG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCmluZGV4IDVhODQ5NjRjNTc5YjMyZmRjMGVjNmVmMTQ1ZjY0MjYwZjEzNWFmZmYuLjQ3
MGYyODI5MTAwODU0YzNjMDVmNmRlZmVkMjE1YjVmYzY0N2RhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaApAQCAtNjM5LDIzICs2MzksMjMgQEAgcHJpdmF0ZToKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5n
SXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShQ
YXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFn
ZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwg
b3JpZW50YXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUlt
YWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBv
cmllbnRhdGlvbikpOwogICAgIH0KIAogICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgRHJhd05hdGl2ZUltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBEcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOwogCiAgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbjsgfQogCiAjaWYgVVNFKENHKQotICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBtX2ltYWdlUHRyOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2ltYWdlOwogI2Vu
ZGlmCiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDVlNTJl
YzkxOTIzZDQ1OWYwODIyMTkxZjY2OWQwYzAwZWVkZjI1OGEuLjBiZjE0YmVmNzliZDNhYjJmYjcz
ZjZjNzUwODA3MjZkYTQ0MWUzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKQEAgLTExOSw5ICsxMTksOSBAQCB2b2lkIFJlY29yZGVyOjpkcmF3VGlsZWRJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0CiB9CiAK
ICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFn
ZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKQordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24p
CiB7Ci0gICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBw
ZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKSk7CisgICAgRHJhd2lu
Z0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0
aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3As
IGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKSk7CiAgICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVt
KTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXgg
YTVkMmM3MWEyNWViZGJmZTRmM2JhN2ZkYWNkMWYyZGU1ODg2ZGM1MC4uZWI5OWEzZGRhMDBkMzE3
MGNmYzhmMDg2YTQwMjljYmJjZTFjZDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdUaWxlZElt
YWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAgICAgdm9pZCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVS
dWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJik7CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAgIHZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKICNlbmRpZgogICAg
IHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNw
cAppbmRleCBiYTQxNTk3YWExMTAxZGI2MjkwMjNkMjczYjIwMGU3ODFkMzNhYWM5Li41OWNjMmM5
YmU4YjNmZmUxMTE4NmE2ODVkMmU4Y2Y1OTRjMWQzOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVm
bC5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4
dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAg
ICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9pbWFnZVN1
cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1
cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1l
bnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5k
IHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwCmluZGV4IDljOTJjMDg1M2My
NjFjNzYwYTdjMDgxZjZjODdlOTkwYjFiODhkYWIuLjA3YmViZTY5NDljMWM4NGExZTc4NjQyMWMw
ZTlkN2FmNzc3ZTc2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VmbC9JY29uRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvSWNvbkVmbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTEsMTAgKzUxLDEwIEBAIEljb246On5JY29uKCkKIHsKIH0KIAotUGFzc1Jl
ZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
KQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ljb25HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0ljb25HdGsuY3BwCmluZGV4IDU5NDVlMWY4YzRiNDc0NDhmMzQ4NWZjNjRiYjU3NjU3YWY0YzM4
ZmUuLjg4MGM0Yzk3OTRhNWVkNmQzYWMyZjhhNjc0N2NjMjEyNjkyZDIxOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgU3Ry
aW5nIGxvb2t1cEljb25OYW1lKFN0cmluZyBNSU1FVHlwZSkKIH0KIAogLy8gRklYTUU6IE1vdmUg
dGhlIGNvZGUgdG8gQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4KLVBhc3NSZWZQdHI8SWNv
bj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFt
ZXMpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
SWNvbklPUy5tbQppbmRleCAyMTU5MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4NmQyMjQ5YjgxZDlkNzZh
Li4zNmIyNGY1Y2ZmMGE2YjYxZTU0NTc0NjczMmI2MjZjZDM5ODdjYjQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAtMzMsNyArMzMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKENHSW1hZ2VSZWYg
aW1hZ2UpCitJY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1f
Y2dJbWFnZShpbWFnZSkKIHsKIH0KQEAgLTQyLDE3ICs0MiwxNyBAQCBJY29uOjp+SWNvbigpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUlj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9y
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2VSZWYpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRl
SWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCiB7Ci0gICAg
aWYgKCFpbWFnZVJlZikKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZVJlZikpOworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSWNvbihpbWFnZSkpOwogfQogCiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KaW5kZXggNGNmYzUyZmRj
MTM1N2RlZjE2OTNkYTE3OWFiODQyZTZjNDU4Zjk5NC4uZTQ2MDVkZTIwMDNiZGYwNjYzNzM1MDM3
MDBhYjAxMDJkNmMzNTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ljb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ljb25NYWMubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgIkludFJlY3QuaCIK
ICNpbXBvcnQgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiVVRJVXRp
bGl0aWVzLmgiCi0jaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00Nyw3ICs0Nyw3IEBAIEljb246On5JY29uKCkKIH0KIAogLy8gRklYTUU6IE1vdmUg
dGhlIGNvZGUgdG8gQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4KLVBhc3NSZWZQdHI8SWNv
bj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFt
ZXMpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IGZmMDcxMzFhNjFmY2VkMDQ1ODZiMzcyZDliYTIwNzlh
OTg3M2MzOGIuLmZhMDExYWE4ODE2MzAzMDAwOTQ0OThlYmMwZmZjYTlmYjljMzAzNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAg
LTk1LDcgKzk1LDcgQEAgQ0ZEYXRhUmVmIEJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRp
b24oKQogCiAgICAgVmVjdG9yPENHSW1hZ2VSZWY+IGltYWdlczsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtRnJhbWVzOyArK2kgKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFn
ZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVJ
bWFnZUF0SW5kZXgoaSkuZ2V0KCk7CiAgICAgICAgIGlmIChjZ0ltYWdlKQogICAgICAgICAgICAg
aW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKaW5kZXggYTc4MDcwZDlhYWFmN2Y0ZTJhMzE4
OWVlMTQ4YTZhNWM3OTM4OGMwNS4uYTM5NDZjYWY0ZjgzZTAwY2ZkMWI5OWE1OGYyYzk5MjIzMTc5
YjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lj
b25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29u
V2luLmNwcApAQCAtNDMsNyArNDMsNyBAQCBJY29uOjp+SWNvbigpCiB9CiAKIC8vIEZJWE1FOiBN
b3ZlIHRoZSBjb2RlIHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCi1QYXNzUmVmUHRy
PEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA4MzVlY2YzZjRmZWVlYjhhMGRmYThkMzY5NzMx
MjhmM2I4MDdiOTI2Li40NzA3M2MwZWQ2OTBlMDQ0ZmZiM2E5NGU1ODZmMjYwMjc5ZDFjNGM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dX
aW4uY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNo
aW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAg
c2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUF0SW5kZXgo
aSk7CisgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQo
KTsKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdl
KSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAgICAgICAg
IHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3Vy
cmVudEZyYW1lID0gaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCAyOWEyMDIzZGI2M2E5MTQzNGMzOTQ4ZWFh
NTUyM2JiNjFmZTgxMDc1Li40MmYzYjhiZDNhYjYzZmJiNzIwYTMzYmUzZDc0NTA0YmMwYzdiMDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
YWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ2Fpcm9XaW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdG
cmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0
CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1l
SW1hZ2VBdEluZGV4KGkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgICAgICBjb250
aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuaAppbmRleCBmYzg3ZjgzNDAzMzE5NTU3M2Y1NjdmYzA1OGM3YzczZDg1
OGExOTdhLi5iMzU0N2Q5NGU4MDhmODc0YWVkOWRhMGYyOTFiZWNlMjBhNjQ2NDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaApAQCAtOTgsNyArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJl
dHVybnMgYSBjYWxsZXItb3duZWQgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBuYXRpdmUgaW1h
Z2UgZGF0YS4KICAgICAgICAgLy8gKEFjdHVhbCB1c2U6IFRoaXMgcG9pbnRlciB3aWxsIGJlIG93
bmVkIGJ5IEJpdG1hcEltYWdlIGFuZCBmcmVlZCBpbgogICAgICAgICAvLyBGcmFtZURhdGE6OmNs
ZWFyKCkpLgotICAgICAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNv
bnN0OworICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CiAK
ICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OwogICAgICAgICBjb25zdCBJbnRSZWN0JiBv
cmlnaW5hbEZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxGcmFtZVJlY3Q7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJv
L0ltYWdlRGVjb2RlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAppbmRleCAzZmU3MDQwMjM0MTlkOTc1
M2IxMzk5ZDlmNmMwMGI2NzM5NDUxMjk2Li43YjQxMjk1Zjg1NzM1OGZiYmYzNWMxYjA1MjVlOGQ2
Y2MzNTIwZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc05hdGl2ZUltYWdlUHRyIElt
YWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VG
cmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKGNh
aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAogICAgICAgICByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KG1fYnl0ZXMpKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IGFk
MjU5ODk2ODMwYTQ5YTM5ODMwOGM4NDIxOTZmMmM5NzYxOGIwMTguLjM2Y2Q2NTE2ZTgwZjE3NDhi
ZmVhYjc3YTkzMDI3MWMxMjFkZTgwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAtMTI4LDcgKzEyOCw2IEBAIERyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKQogICAgIGlmICghaGJtcCB8fCAhZHJhd0NvbnRleHQpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgQ0dJbWFnZVJlZiBzcmNJbWFnZSA9IGltZy0+Z2V0Q0dJbWFnZVJlZigpOwogICAg
IENHUmVjdCByZWN0OwogICAgIHJlY3Quc2l6ZSA9IEludFNpemUoaW1nLT5zaXplKCkpOwogICAg
IHJlY3Qub3JpZ2luLnggPSAwOwpAQCAtMTM3LDcgKzEzNiw3IEBAIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogICAgIENHQ29udGV4dFNjYWxlQ1RNKGRyYXdDb250ZXh0LCAxLCAtMSk7CiAgICAgQ0dD
b250ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoZHJhd0NvbnRleHQsIHJlY3QpOwotICAgIGlmIChzcmNJbWFnZSkgeworICAgIGlmIChh
dXRvIHNyY0ltYWdlID0gaW1nLT5nZXRDR0ltYWdlUmVmKCkpIHsKICAgICAgICAgQ0dDb250ZXh0
U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBD
R0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHNyY0ltYWdlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA0MmVhNWVlNTM0MjFh
NzdkMDdlMzRlNmY4MGI0MzNjNjIwNzM3YjhjLi5jMTVmYWZiZDhlYTFiNjEzMjQ4NjU2NTRkOTQ5
NDJkZmVkNDY1MzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
QEAgLTE4MCwxNyArMTgwLDE3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpCiB9CiAKICNpZiBV
U0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhl
IGNhbGxlciBzbyBQYXNzTmF0aXZlSW1hZ2VQdHIgbmVlZHMKKy8vIFBhc3NlcyBvd25lcnNoaXAg
b2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdlUHRyIG5lZWRz
CiAvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4KLVBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQ2Fpcm8g
ZG9lcyBub3QgdXNlIHRoZSBhY2NlbGVyYXRlZCBkcmF3aW5nIGZsYWcsIHNvIGl0J3MgT0sgdG8g
bWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0
ZSBpbWFnZQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggODcwZjZjODVjNWU2ODRl
MTc3YzMwZDE2YzIxNjZhMzQwZGNkNWE3Yi4uNDkxZGRmYjNjMjEzOWVmODgyMTAxZDFhZjQ1YjVh
ZWYxMTBjNGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKSBvdmVycmlkZTsK
IAogI2lmIFVTRShDQUlSTykKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRl
eCA0ZTE2MWUzZjBkNDRhNmFhNmVhNmMwM2Y1ZWQ5YWJjMTllYmFlYTFkLi43ZTE0M2RlZDJkNjY5
YWIzYWMwOWM0OTZiNGU0YmVlN2RjODdmMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
dm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRh
aW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fem9vbSwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUp
OwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVy
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IDM1OTc1NDI4OWZjMzA0MjE4
Y2RiOGJmMTIwM2I4NzNjMjlmZDUyZDIuLmQyMjRmYzQ2MTJmZDk1YTFhZWE3N2FmYjQ0Nzk3Njky
MzUyN2FjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50
RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAg
UGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7
CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNvbnRhaW5lcihTVkdJbWFnZSogaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274793</attachid>
            <date>2016-03-23 16:51:32 -0700</date>
            <delta_ts>2016-03-23 18:48:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160323165135.patch</filename>
            <type>text/plain</type>
            <size>81547</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uNGI0YjQyZDBjNGFkMTU5NDYyMjU5OGVmNTI3MTY2
Nzc4ZmI2ZTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNiBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1h
Z2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgor
ICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrIHdhcyBk
b25lIHRvIGVuc3VyZSB0aGUgQ0cKKyAgICAgICAgcG9pbnRlciBpcyByZWZjb3VudGVkIGNvcnJl
Y3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYQorICAgICAgICBGcmFtZURh
dGEgc2luY2UgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdl
UmVmLgorCisgICAgICAgIFdpdGggdGhpcyBjaGFuZ2UsIFBhc3NOYXRpdmVJbWFnZVB0ciBpcyBu
b3QgbmVlZGVkIGFueW1vcmUuIFNvIGFsbCB0aGUKKyAgICAgICAgaW5zdGFuY2Ugb2YgUGFzc05h
dGl2ZUltYWdlUHRyIGNhbiBiZSByZXBsYWNlZCBieSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgIENoYW5nZSB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUgUmV0YWluUHRy
PENHSW1hZ2VSZWY+LgorICAgICAgICAgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldE5TSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0lt
YWdlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0RXZhc09iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIENoYW5nZSAwIHRvIG51bGxwdHIgYW5kIFBhc3NO
YXRpdmVJbWFnZVB0ciB0byBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1h
Z2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIE1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBw
b2ludGVyIGZvciBDRy4gR2V0IHJpZCBvZiBQYXNzTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgc2lu
Y2UgTmF0aXZlSW1hZ2VQdHIgaXMgbm93IGEgc21hcnQgcG9pbnRlciBvbiBhbGwgcGxhdGZvcm1z
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIFNpbmNlIEltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIHJldHVybnMgYSBSZXRhaW5QdHIsIG1vdmUgaXQKKyAgICAg
ICAgdG8gbV9wZW5kaW5nQ29udGVudHNJbWFnZSB0byByZW1vdmUgdGhlIHJlZmNvdW50IGNodXJu
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6
OmNsZWFyKToKKyAgICAgICAgUmVwbGFjZSBtX2ZyYW1lIHdpdGggbV9pbWFnZSBhbmQgZnJhbWUq
IHdpdGggZnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgUmVwbGFjZSAq
RnJhbWUqIHdpdGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJ
bWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNs
ZWFyKTogTm8gbmVlZCB0byBjYWxsIENHSW1hZ2VSZWxlYXNlKCkuIEp1c3QgYXNzaWduCisgICAg
ICAgIG1faW1hZ2UgdG8gbnVsbHB0ciBhbmQgQ0dJbWFnZVJlbGVhc2UoKSB3aWxsIGJlIGNhbGxl
ZCBmcm9tIHRoZSBSZXRhaW5QdHIKKyAgICAgICAgZGVzdHJ1Y3Rvci4KKworICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEZp
cnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0
Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVBdElu
ZGV4KTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBDR0ltYWdlUmVmIHdpdGggUmV0YWluUHRy
PENHSW1hZ2VSZWY+LiBSZXBsYWNlICpGcmFtZSogd2l0aAorICAgICAgICAqRnJhbWVJbWFnZSou
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFRvQ2FudmFzKToKKyAgICAgICAgVXNlIG1fY2dJbWFnZS5nZXQoKSBpbnN0ZWFkIG9mIG1fY2dJ
bWFnZSB3aGVuIGNhbGxpbmcgQ0cgZnVuY3Rpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRy
IHdpdGggTmF0aXZlSW1hZ2VQdHIuIEdldCB0aGUgcmF3IENHSW1hZ2VSZWYKKyAgICAgICAgZnJv
bSB0aGUgTmF0aXZlSW1hZ2VQdHIgd2hlbiBjYWxsaW5nIHRoZSBDRyBmdW5jdGlvbnMuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6
IE1vdmUgdGhlIGltYWdlIGFyZ3VtZW50CisgICAgICAgIHdoZW4gY2FsbGluZyBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKCkuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVG
cmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhlIGZ1bmN0aW9uIGFuZCBz
aW1wbGlmeSB0aGUgY29kZSBzaW5jZSB0aGUgbG9jYWwgdmFyaWFibGUKKyAgICAgICAgYW5kIHRo
ZSByZXR1cm4gdmFsdWUgYXJlIGJvdGggc21hcnQgcG9pbnRlcnMuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdl
OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIgYW5kIHVzZSBjb25zdGFudCByZWZl
cmVuY2UuIAorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhp
Y3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICBDYWxsIGEgZnVuY3Rpb24g
d2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2VmbC9JY29uRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okljb246Oklj
b24pOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVh
dGVJY29uRm9yRmlsZXMpOgorICAgICAgICBVc2Ugc21hcnQgcG9pbnRlcnMgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGluc3RlYWQgb2YgcmF3IHBvaW50ZXJzIENHSW1hZ2VSZWYuCisgICAgICAgIEFu
ZCBjaGFuZ2UgUGFzc1JlZlB0ciB0byBSZWZQdHIgYW5kIDAgdG8gbnVsbHB0ci4KKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6IEdldCB0aGUgcmF3
IHBvaW50ZXIgZnJvbSB0aGUKKyAgICAgICAgcmV0dXJuZWQgc21hcnQgcG9pbnRlci4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKTogQ2hhbmdlIFBhc3NSZWZQdHIg
dG8gUmVmUHRyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rpb24KKyAgICAgICAgd2l0aCBpdHMgbmV3
IG5hbWUgYW5kIGdldCB0aGUgcmF3IHBvaW50ZXIgZnJvbSB0aGUgcmV0dXJuZWQgc21hcnQgcG9p
bnRlci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fp
cm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNo
aW5nU291cmNlU2l6ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGggaXRzIG5ldyBu
YW1lLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURl
Y29kZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoK
KyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4K
KyAgICAgICAgCiAyMDE2LTAzLTE4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVcGRhdGUgQXV0b0ZpbGwgYnV0dG9uIGluIGlucHV0IGZpZWxkcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDFlNmZjY2Q4ZWI0Njk5YzA2YTk5YzQy
MzZiMTkxOTUxZTg1ZGMwMmYuLjcxMzE0YmMyNjc0NTI4ZmRkMjE1NjJlODNiMzJjMTYxNmVhZjRm
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjc5LDcg
KzI3OSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9F
bGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRyIEhUTUxW
aWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxh
eWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAppbmRleCBhZDk0OGY5NDRhMzA4MTZhYTU3YjNjOGVlYTYwMjQ4ODEyNDU2NTE1
Li5iNGQ3ZjFlMTcwZjFmNzNlY2E0ODY1NjQ2MDdjZDU3ZWYxZjRmZTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAg
Ly8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7
CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAg
Ly8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVzIGNvcHkgaWYgcG9zc2libGUu
CiAgICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2JmNjgwNGZjZjhhZmE1
Y2NlYzAxOTQzMDliZWM1OTc0NzczZTIyNy4uZDY4Zjk4NmNhYTdiMzg4YTUyOWYzYjgzOTBhMGU2
MzczZTZhYWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNjI1LDcgKzE2MjUsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVv
LCBjb25zdCBGbG9hdFJlYwogICAgIGNoZWNrT3JpZ2luKHZpZGVvKTsKIAogI2lmIFVTRShDRykg
fHwgKEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShHU1RSRUFNRVJfR0wpICYm
IFVTRShDQUlSTykpCi0gICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAgICAgIGMtPmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVv
LT52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29u
dGFpbnNDYW52YXMoZHN0UmVjdCkpCiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCA5OTk0
NjVlYTM5MDY5N2NiZTAwZmU2ZmE4ODM4YzEzOGU1NDQ3YTE3Li44MTQyMDEzZGM2MjgxNzg3Y2Ey
YzBlMDY4NGFhN2ZlMTMwM2M0OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAKQEAgLTIwNCwxNiArMjA0LDEzIEBAIHVuc2lnbmVkIE1lbW9yeUNhY2hl
OjpsaXZlQ2FwYWNpdHkoKSBjb25zdAogICAgIHJldHVybiBtX2NhcGFjaXR5IC0gZGVhZENhcGFj
aXR5KCk7CiB9CiAKLSNpZiBVU0UoQ0cpCi0vLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9u
Y2Ugd2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIG9uIGFsbCBw
bGF0Zm9ybXMgb3IKLS8vIHJlbW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlD
YWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28gYXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1p
bmRlcGVuZGVudC4KIHN0YXRpYyBDYWNoZWRJbWFnZUNsaWVudCYgZHVtbXlDYWNoZWRJbWFnZUNs
aWVudCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENhY2hlZEltYWdlQ2xpZW50PiBj
bGllbnQ7CiAgICAgcmV0dXJuIGNsaWVudDsKIH0KIAotYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKK2Jvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdl
VG9DYWNoZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKQogewogICAgIEFTU0VSVChpbWFnZSk7
CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCA9IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
OwpAQCAtMjI1LDggKzIyMiw2IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShO
YXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q2FjaGVkSW1hZ2U+IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxD
YWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5nZXQoKSwgQ2FjaGVkSW1hZ2U6Ok1hbnVhbGx5
Q2FjaGVkLCBzZXNzaW9uSUQpOwogCi0gICAgLy8gQWN0dWFsIHJlbGVhc2Ugb2YgdGhlIENHSW1h
Z2VSZWYgaXMgZG9uZSBpbiBCaXRtYXBJbWFnZS4KLSAgICBDRlJldGFpbihpbWFnZSk7CiAgICAg
Y2FjaGVkSW1hZ2UtPmFkZENsaWVudCgmZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBj
YWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwog
I2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCkBAIC0yNjQsNyArMjU5LDYgQEAgdm9pZCBN
ZW1vcnlDYWNoZTo6cmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgZG9tYWluRm9yQ2EKICAgICAvLyByZXNvdXJjZSBtYXkgYmUgZGVsZXRlZCBhZnRlciB0
aGlzIGNhbGwuCiAgICAgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkucmVtb3ZlQ2xp
ZW50KCZkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogfQotI2VuZGlmCiAKIHZvaWQgTWVtb3J5
Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNlcyhib29sIHNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZv
ckFsbExpdmVSZXNvdXJjZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCmluZGV4IGM4OGQyZGJkNGU2YjFkMjc4MGRkYTA0ZmNjYWY5YjgyM2E0NjE3YTAuLmM0
NWI0NmZkMTgwMDU1MTczYTZjYjA1Yjg0ODc2NzZiM2JlYzg4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0xNTUsMTIgKzE1NSw4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlPcmln
aW5TZXQmIG9yaWdpbnMpOwogICAgIFdFQkNPUkVfRVhQT1JUIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luc1dpdGhDYWNoZShTZXNzaW9uSUQpIGNvbnN0OwogCi0jaWYgVVNF
KENHKQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFr
ZSBOYXRpdmVJbWFnZVB0ciBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotICAg
IC8vIHJlbW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKCkgc28gYXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4K
LSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwotI2VuZGlmCiAKICAgICAvLyBw
cnVuZURlYWQqKCkgLSBGbHVzaCBkZWNvZGVkIGFuZCBlbmNvZGVkIGRhdGEgZnJvbSByZXNvdXJj
ZXMgbm90IHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2VzLgogICAgIC8vIHBydW5lTGl2ZSooKSAtIEZs
dXNoIGRlY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBzdGlsbCByZWZlcmVuY2VkIGJ5IFdlYiBw
YWdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4
IGRjY2E4OGU1YjcwN2QxYTcwMGJmNDZlZjYzMDA0N2EzM2NmODhiOWYuLjZkYTI0NGU1ZDNhMWU2
NGFiM2ExODBkOTEzODAyNTBiNjQ5MGEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIEltYWdlKiBJY29uRGF0YWJh
c2U6OnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2lu
YWwsIGNvCiAgICAgcmV0dXJuIGljb25SZWNvcmQtPmltYWdlKHNpemUpOwogfQogCi1QYXNzTmF0
aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQorTmF0
aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIEltYWdlKiBpY29uID0gc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChwYWdlVVJMT3JpZ2lu
YWwsIHNpemUpOwogICAgIGlmICghaWNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmgKaW5kZXggNTMwYTNhMzA4OTAxNGEzZWIxYmUwMmQzMjQ4MjljYWMyNmQ4NmQz
Mi4uZGI0M2VjMmNiMzExOWU1NjMwMDg3NDRiYWJjMDU5MjRkZTYxYzJlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwpIG92ZXJyaWRlOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBzeW5j
aHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFs
LCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25v
dXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29u
c3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeW5jaHJv
bm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wg
c3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICBXRUJDT1JFX0VYUE9SVCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERl
Y2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCmluZGV4
IDAyNTQ2NTMwNDE2OTE5NzIyMmU3N2RmMDZlNjZmZjY2M2U3ODA4YWEuLjU0NGNiYWNiNjk4YzY4
YjBkODY4MWMyOGJkNjE4Y2U3MjhjMWFmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3Ry
aW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIEljb25Mb2FkRGVjaXNpb24gc3lu
Y2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIERvY3VtZW50TG9h
ZGVyKikgeyByZXR1cm4gSWNvbkxvYWRObzsgfQogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNocm9u
b3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2
ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiBu
dWxscHRyOyB9CiAKICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgd2Ugc2hvdWxkIHVzZSB0byBy
ZXBsYWNlIHRoZSBhYm92ZSB3aGVuIHN1cHBvcnRlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNBc3luY2hyb25vdXNNb2RlKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBmYWYwZjg2OTYyYzNm
YjY1Nzc3NDViZmFmNzViNGM4NGQ4MGNjMDYwLi40YTVjNjFhNWQyN2JhODU1NDNjMDA2NDVkZjhl
YTIwMzM1MGE5ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0
VGltZXIoZG91YmxlIGRlbGF5KQogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5
KTsKIH0KIAotYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgp
Citib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQog
ewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4KHNp
emVfdCBpbmRleCkKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7CisgICAg
cmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpo
YXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CkBAIC0xODQsOSArMTg0LDkgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCwgSW0KICAgICAgICAgbV9mcmFtZXMuZ3JvdyhudW1GcmFtZXMpOwogCiAg
ICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpIHsKLSAgICAgICAg
bV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSA9
IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
KTsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBs
aW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZSkKKyAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5t
X2ltYWdlKQogICAgICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAgICAgfQogCkBAIC0y
MDQsNyArMjA0LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAoIXN1YnNhbXBs
aW5nTGV2ZWwgJiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3JtRnJh
bWVTaXplID0gZmFsc2U7CiAKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsKKyAg
ICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKICAgICAgICAgaW50IGRlbHRhQnl0ZXMg
PSBzYWZlQ2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwogICAgICAgICBt
X2RlY29kZWRTaXplICs9IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxseS1kZWNvZGVk
IGZyYW1lIHdpbGwgc3Vic3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1c2VkCkBAIC0z
NzksMTQgKzM3OSwxNCBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNp
emVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChm
cmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJh
bWUgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAgICB8fCAoZnJhbWVDYWNoaW5n
ID09IENhY2hlTWV0YWRhdGFPbmx5ICYmICFtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEp
KQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwLCBmcmFtZUNhY2hpbmcpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdElu
ZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50KQorTmF0aXZlSW1h
Z2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQg
cHJlc2VudGF0aW9uU2NhbGVIaW50KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzk1LDcgKzM5NSw3IEBAIFBhc3NOYXRpdmVJ
bWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJl
c2VudGF0aW9uU2NhCiAKICAgICAvLyBXZSBtYXkgaGF2ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEg
aGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8KICAgICAv
LyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgotICAgIGlmIChpbmRleCA8IG1fZnJhbWVz
LnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwg
bV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgeworICAgIGlmIChpbmRleCA8IG1f
ZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xl
dmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgewogICAgICAgICAvLyBJ
ZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQsIGJ1dCBhdCB0b28gc21hbGwgYSBzaXplLCBy
ZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KICAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9m
cmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFy
KHRydWUpOwpAQCAtNDA2LDEwICs0MDYsMTAgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EKICAg
ICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgot
ICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBD
YWNoZU1ldGFkYXRhQW5kRnJhbWUpOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKIH0KIAogYm9vbCBCaXRt
YXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCkBAIC00MjgsOSAr
NDI4LDkgQEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBp
bmRleCkKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKLVBhc3NO
YXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQor
TmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkK
IHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4g
ZnJhbWVJbWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOwogfQogCiBib29sIEJpdG1hcEltYWdl
OjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA3NDkzYzZhNGJmYjg2M2Q5NzYz
N2M0OWM0NjRjYzM3YWU3OGUwYTA0Li40NjEwZTBmN2JhOTQ5NDhjN2VmMDU1OTJjNDVlYWZlMDE0
ZWVlYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKQEAgLTY1LDE2ICs2NSwxNCBAQCBjbGFzcyBUaW1lcjsKIC8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBzdHJ1Y3QgRnJhbWVEYXRhIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZURhdGEpOwogcHVibGljOgogICAgIEZyYW1l
RGF0YSgpCi0gICAgICAgIDogbV9mcmFtZSgwKQotICAgICAgICAsIG1fb3JpZW50YXRpb24oRGVm
YXVsdEltYWdlT3JpZW50YXRpb24pCisgICAgICAgIDogbV9vcmllbnRhdGlvbihEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbikKICAgICAgICAgLCBtX3N1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAgICAg
LCBtX2R1cmF0aW9uKDApCiAgICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCiAgICAgICAg
ICwgbV9pc0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkgCisgICAg
ICAgICwgbV9oYXNBbHBoYSh0cnVlKQogICAgICAgICAsIG1fZnJhbWVCeXRlcygwKQogICAgIHsK
ICAgICB9CkBAIC04OCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIg
dGhlcmUgd2FzIGNhY2hlZCBpbWFnZSBkYXRhIHRvIGNsZWFyLgogICAgIGJvb2wgY2xlYXIoYm9v
bCBjbGVhck1ldGFkYXRhKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG1fZnJhbWU7CisgICAgTmF0
aXZlSW1hZ2VQdHIgbV9pbWFnZTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247
CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWw7CiAgICAgZmxvYXQgbV9k
dXJhdGlvbjsKQEAgLTEwOCwxMSArMTA2LDExIEBAIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDog
cHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR3JhZGllbnRJbWFnZTsKICAgICBmcmll
bmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Qml0bWFw
SW1hZ2U+IGNyZWF0ZShQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyID0gMCkKKyAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFn
ZShuYXRpdmVJbWFnZSwgb2JzZXJ2ZXIpKTsKICAgICB9Ci0gICAgc3RhdGljIFJlZjxCaXRtYXBJ
bWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKKyAgICBzdGF0aWMgUmVm
PEJpdG1hcEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2Uob2JzZXJ2ZXIp
KTsKICAgICB9CkBAIC0xNzIsNyArMTcwLDcgQEAgcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiBn
ZXRFdmFzT2JqZWN0KEV2YXMqKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgUGFzc05hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICAgICBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGUgeyByZXR1
cm4gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoY3VycmVudEZyYW1lKCkpOyB9CiAKICAgICBib29s
IGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlOwpAQCAtMTk5LDggKzE5Nyw4
IEBAIHByb3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBldGl0aW9uIGNvdW50
IGlzIGtub3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEJp
dG1hcEltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IDApOworICAgIFdFQkNP
UkVfRVhQT1JUIEJpdG1hcEltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgSW1hZ2VPYnNlcnZl
ciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2Vy
dmVyKiA9IG51bGxwdHIpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgZHJhd0ZyYW1l
TWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRl
OwpAQCAtMjE0LDEwICsyMTIsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGZyYW1lQ291
bnQoKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90LCBmbG9h
dCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY29w
eVVuc2NhbGVkRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKKyAg
ICBOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwog
Ci0gICAgYm9vbCBoYXZlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgYm9vbCBoYXZlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4
IGJhYmM0Yzg1Y2MyZGY3NDk1OGZhMWM5MTBlNTZhYWNiODcxOTBjZjIuLmM1MjRiYTE5ZDVkZGE0
MDVjNjBjMTQ3ODIxNjI3OWMwYzg1OTY2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMDIsNyArMzAyLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CiAjZW5kaWYKIAog
I2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGUzNmJhM2FhNTZkNThjMjA2YTk4M2ZmNWJhOWJmYTdi
MTM2NTExODIuLmRiYmJjZjU4YzM3YjlhNmIxNjRkNmYxMzUxY2Q2ZTE1ZWI0MWQ4NTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaApAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgcHVibGljOgogICAgICAgICBJbWFnZVNvdXJjZSog
bV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX2ltYWdlU3VyZmFj
ZTsKICNlbGlmIFVTRShDRykKLSAgICAgICAgQ0dJbWFnZVJlZiBtX2NnSW1hZ2U7CisgICAgICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBtX2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9w
aXhlbERhdGE7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXpl
ZFJHQkE4RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBk
OTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFlZjNmM2MxN2I3Li5mNmJiYjgyMDZjZWFiN2Nk
MzYzOTYyMDgwNTBiNDAzMTYxZGFhNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSWNvbi5oCkBAIC0yMiw4ICsyMiw4IEBACiAjZGVmaW5lIEljb25faAogCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ1LDE5ICs0NSwxOSBA
QCBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgCiBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50ZWQ8
SWNvbj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPElj
b24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IH5JY29uKCk7CiAKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEljb24+
IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsg
fQorICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgSWNvbihoSWNvbikpOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgZm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92
ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFz
c1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoTmF0aXZlSW1hZ2VQdHIpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY4LDcg
KzY4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKLSAgICBJY29u
KENHSW1hZ2VSZWYpOworICAgIEljb24oY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+Jik7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCmluZGV4IDRlZDZlMzVkOTlhZmFhYjViOGJkZWM2ZmQ3YTEzMjBlMjBkMDQ2ZjUuLmMzMTQy
YWRlYzdhMjVjODQ2MGUyOWFmMzUwMmI5NDE0N2I3MDZjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTM1LDIzICsxMzUsMjMgQEAgcHVibGljOgogCiAg
ICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNwYWNlVGlsZSwgUmVw
ZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2
aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSB7IHJl
dHVybiBJbWFnZU9yaWVudGF0aW9uKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZl
IGltYWdlIGZvcm1hdHMuCiAKICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgTlNJbWFnZSog
Z2V0TlNJbWFnZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5TSW1h
Z2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVy
biBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFVTRShDRykKLSAgICB2aXJ0dWFsIENHSW1hZ2VS
ZWYgZ2V0Q0dJbWFnZVJlZigpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYg
Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9Ci0g
ICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJldGFp
blB0cjxDRkFycmF5UmVmPiBnZXRDR0ltYWdlQXJyYXkoKSB7IHJldHVybiBudWxscHRyOyB9CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE2MCwxMSArMTYwLDExIEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRH
ZGtQaXhidWYoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBHZGtQaXhidWYqIGdldEdka1Bp
eGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oRUZMKQot
ICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSB7IHJldHVy
biBudWxscHRyOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NGVmMDUzYTMzM2ZmNWZjNTc4ZTgxODAwY2M2
ZmM5NzU1ZWZiYWI4Li5hZTMxYzk4MzUyMWQ1MDA4MjI1YzFmYzM0MjljMmM0MGEwMzdlNDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CkBAIC0xNDgsMTkgKzE0OCwxOSBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBj
b25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7
CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKK05hdGl2ZUltYWdlUHRyIEltYWdlU291
cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJh
bWVCdWZmZXJBdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1
cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2Ug
cHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuICBJZiB3ZSBoYXZlIGFuCiAgICAgLy8gZW1wdHkgaW1h
Z2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFJldHVybiB0
aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRo
ZSBkYXRhCiAgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlz
IGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCBhY2RkMWNlNGNlMzAwZGU4MWM5ZTA2MmVl
ZTc2MDdiZjQ3MmE3MGFmLi5jMTFmN2JlNDgyOWU0ZTZiYzQwMTc4OTYzYzFkNTFhMTg2NjBhMGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
QEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gZGVjb2RlZCBmcmFtZXMuCiAgICAg
Ly8KICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCBjbGVhcihmYWxzZSwgbikgYW5kIHN1
YnNlcXVlbnRseSBjYWxsCi0gICAgLy8gY3JlYXRlRnJhbWVBdEluZGV4KG0pIHdpdGggbSA8IG4s
IHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCisgICAgLy8gY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0
cnVlKS4KICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBzdGF0ZWZ1bCBJbWFnZVNvdXJjZXMvZGVj
b2RlcnMgd2lsbCB3b3JrIHByb3Blcmx5LgogICAgIC8vCiAgICAgLy8gVGhlIHxkYXRhfCBhbmQg
fGFsbERhdGFSZWNlaXZlZHwgcGFyYW1ldGVycyBzaG91bGQgYmUgc3VwcGxpZWQgYnkgY2FsbGVy
cwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5v
dCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CiAg
ICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgUGFzc05hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAg
ICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSAwKTsKIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7
CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5v
dCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggOTliOWQ1Y2FkZTczZTBj
MWZhZDA5YTc3Y2Y1ZjZkYjI5OGMzN2FhNS4uOTA2OTViNDQ1NjNhMDhiNGQwY2M2ZDM2YzRmZmQ4
MmQ1MWNhMWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcApAQCAtODM3LDcgKzgzNyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwK
ICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
Y29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwg
dHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIg
TWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIg
TWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBt
X3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDVlYTU1ODcxMTA1OTM3
ZWVlNDA2M2U3MjU5MmExYWU1NTcxNTQ1Y2IuLmMyZTBjZjdiODEzMDgxZDE1MzM3ZDBhOTJlNmNh
MzE3ZDBhZTA4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaApAQCAtNDIzLDcgKzQyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBodHRwOi8vc3Jj
LmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lL3RydW5rL3NyYy9ncHUvY29tbWFuZF9idWZmZXIv
c2VydmljZS9nbGVzMl9jbWRfY29weV90ZXh0dXJlX2Nocm9taXVtLmNjIHZpYSBzaGFkZXJzLgog
ICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEKiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAgICBQYXNzTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIHVzaW5nIE1lZGlhUGxheWVy
RW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCmluZGV4IGU1NzlhZTkzODU2ZTdkZGM4NTk2ODY0NzM2MThkYTJhMTRkNmM3OTAuLmQ5
MTlmNTQzMzdhNDU3YzEwZWM2OGJhNWEyMGViN2RlM2I4ZmVjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0x
NTEsNyArMTUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBh
aW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBH
QzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApp
bmRleCBkZjk0MWE1NjZhOWU0NjkyNzcyN2JhMWVjNjg0OGYyMTY4MDNhNDViLi4wMzQ2NjY1YjM2
ZGJlNTY2MWEwOWNlNzFjNGVjYjRhMGMxZThlMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNk
ZWZpbmUgTmF0aXZlSW1hZ2VQdHJfaAogCiAjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CiAjZWxpZiBVU0Uo
Q0FJUk8pCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKQEAgLTM4LDIxICszOSwxNCBAQCB0eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEZJWE1FOiBOYXRpdmVJbWFnZVB0ciBhbmQgUGFzc05hdGl2ZUltYWdlUHRyIHNob3VsZCBi
ZSBzbWFydAotLy8gcG9pbnRlcnMgKHNlZSBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSkuCiAjaWYgVVNFKENHKQotdHlwZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRy
OwordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBV
U0UoQ0FJUk8pCiB0eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwotdHlwZWRlZiBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gUGFzc05hdGl2ZUltYWdlUHRy
OwogI2VsaWYgVVNFKFdJTkdESSkKIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZl
SW1hZ2VQdHI7CiAjZW5kaWYKIAotI2lmICFVU0UoQ0FJUk8pCi10eXBlZGVmIE5hdGl2ZUltYWdl
UHRyIFBhc3NOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0NjhiMDY4MTEwZWJhMjMyZjJiYzZmZjA2MjZlZmJhMjAu
LmQ2ZGU3NjJjMWZlMmJmODQ2YWFhZTI0NTNjNmM1NWIwYmFkY2E5ZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGFz
dEltYWdlKCk7CiAgICAgYm9vbCB2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAg
dm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmKTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
IG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSBvdmVycmlkZTsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2UoKTsKIAogICAgIHZvaWQgY3JlYXRlT3BlbkdMVmlkZW9PdXRwdXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IDE1NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYu
LmM3Nzc2ZTA0ZmMwZjdiMTQ2MzA5NGQxNDkwOWNmN2M1MDkzZjllNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMjM0NiwxMCArMjM0NiwxMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKHZpZGVvVGV4dHVyZS5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4
dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwg
cHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
CitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICBy
ZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdEltYWdlOwogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1
dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMjMwYThmNmI3MjFiNTE1
YTMxZTUyMDI2ZWZiMGRlYTRkNGMwMDAxYS4uNTZmNzkxZDk4M2U3YWNmMmJkZTdkMDU4YjQyNzY0
MDA5YTEwZmVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMDA4LDE2ICsxMDA4LDE2IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFn
ZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBhdXRvIG5ld0ltYWdl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIGlmICghbmV3
SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IHByb2JhYmx5
IGRvbid0IG5lZWQgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgYXQgYWxsIG5vdy4KLSAgICAg
ICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50
c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQorICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRl
bnRzSW1hZ2UgPT0gbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAg
ICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOwotICAgICAgICBtX3Bl
bmRpbmdDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7CisgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlID0gV1RGTW92ZShuZXdJbWFnZSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRz
SW1hZ2UgPSBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKIAogICAgICAgICBtX2NvbnRlbnRz
TGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOwogICAgICAgICBpZiAoIW1fY29u
dGVudHNMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggY2Q1N2VlNDg1ZWE4MGM2Y2Yz
NDdhYjNiZDk3MzdkNTk5OWUxMDI4Mi4uZTc1ZjVmMzIzMTVmY2FkYTM1ZjAxZjk3MDM0MWJkYTQ0
ZGIyY2JlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0Jp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgbmF0
aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIp
CiAgICAgLCBtX3NpemUoY2Fpcm9TdXJmYWNlU2l6ZShuYXRpdmVJbWFnZS5nZXQoKSkpCiAgICAg
LCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKDApCkBAIC01OCw3ICs1OCw3IEBAIEJpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2Us
IEltYWdlT2JzZXJ2ZXIqCiB7CiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKICAgICBtX2ZyYW1lc1sw
XS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRpdmVJbWFnZS5nZXQo
KSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gbmF0
aXZlSW1hZ2U7CisgICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IG5hdGl2ZUltYWdlOwogICAgIG1f
ZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIAogICAgIGNoZWNrRm9yU29saWRDb2xv
cigpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogCiAgICAgc3Rh
cnRBbmltYXRpb24oKTsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBm
cmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1h
Z2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3Mg
dG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAK
QEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3Io
KQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1l
KTsKKyAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7
CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFu
IGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTgsOCArMTU4LDggQEAgYm9vbCBG
cmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBpZiAoY2xlYXJNZXRhZGF0
YSkKICAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lKSB7
Ci0gICAgICAgIG1fZnJhbWUgPSBudWxscHRyOworICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAg
IG1faW1hZ2UgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAppbmRleCBjYzcwNDYx
NDdhZTgxZjFmYWRhYTZkODQxNjI0OTgwYzZmZGZjYmYxLi44YzQxODZkNzFlNTNhMTkwN2U5MmQ3
M2EyYjAxNjQ3ZmZkNjZiMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApA
QCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9y
OjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGRlY29k
ZXIuc2V0RGF0YShtX2ltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5j
cmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ltYWdl
U3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAg
IC8vIDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0LCBhc3N1bWUg
bm8gUHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxwaGEgdmFsdWUg
aXMgMHhGRiBmb3IgZWFjaCBwaXhlbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRl
eCBmMDc5MjBmMGQyMzI0NjJjOGZiNDFhMDMyMmQ4MjJhYzlkNWVkMzA3Li4zY2Y0NTQzZjIwNWVk
OTk0OTg4NjEwOTIyY2NkZDc3MjVlZTBjMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCkBAIC0yNTksMTggKzI1OSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgY2Fpcm9f
cmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2Uo
UGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIt
PmRyYXdOYXRpdmVJbWFnZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBpbWFnZVB0cjsKLQogICAgIHBsYXRmb3JtQ29udGV4
dCgpLT5zYXZlKCk7CiAKICAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdl
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VD
Ry5jcHAKaW5kZXggMDFiN2Q2OTJjZGJkN2FiNGQyMmJiYzEzOTljMTAzMjhmNTdlNWU0Ny4uMWQ5
YWZhZWJlMWQ2ZmUzMjNhMzM0YzRkNzRlMWY3YmJiMzAyZjc5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKQEAgLTU4
LDE4ICs1OCwxNyBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQog
ICAgIG1fb3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKICAgICBtX3N1YnNh
bXBsaW5nTGV2ZWwgPSAwOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKKyAgICBpZiAobV9pbWFnZSkg
ewogI2lmIENBQ0hFX1NVQklNQUdFUwotICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFn
ZShtX2ZyYW1lKTsKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5n
ZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgQ0dJbWFnZVJlbGVhc2UobV9mcmFtZSk7Ci0gICAgICAg
IG1fZnJhbWUgPSAwOworICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQml0bWFwSW1hZ2U6OkJpdG1h
cEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1f
bWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAsIG1faW1hZ2VPcmllbnRhdGlvbihPcmln
aW5Ub3BMZWZ0KQpAQCAtODksOCArODgsOCBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJ
bWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fc2l6ZUF2
YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQogewotICAgIENHRmxv
YXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSk7Ci0gICAgQ0dGbG9hdCBoZWlnaHQg
PSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOworICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdl
R2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhl
aWdodChpbWFnZS5nZXQoKSk7CiAgICAgbV9kZWNvZGVkU2l6ZSA9IHdpZHRoICogaGVpZ2h0ICog
NDsKICAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogCkBAIC05OSw3ICs5OCw3
IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6
ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IENH
SW1hZ2VSZXRhaW4oY2dJbWFnZSk7CisgICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IGltYWdlOwog
ICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVlOwogICAgIG1fZnJhbWVzWzBdLm1faGF2
ZU1ldGFkYXRhID0gdHJ1ZTsKIApAQCAtMTM2LDcgKzEzNSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmICghaGF2ZUZyYW1lQXRJbmRleCgwKSkgeworICAgIGlmICghaGF2
ZUZyYW1lSW1hZ2VBdEluZGV4KDApKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IG1fc291cmNl
LmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiAgICAgICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8
fCBzaXplLmhlaWdodCgpICE9IDEpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDcsNyArMTQ2
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKIAogICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBudWxscHRyOwogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkpCi0gICAgICAg
IGltYWdlID0gbV9mcmFtZXNbMF0ubV9mcmFtZTsKKyAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1sw
XS5tX2ltYWdlLmdldCgpOwogCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTczLDE0ICsxNzIsMTQgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkK
IAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCiB7Ci0gICAgcmV0dXJu
IGZyYW1lQXRJbmRleCgwKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCkuZ2V0KCk7
CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBDR0ltYWdlUmVmIGNnSW1h
Z2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGNnSW1hZ2UgJiYg
SW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFn
ZSkpID09IHNpemUpCiAgICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKICAgICB9CkBAIC0xOTMs
MTEgKzE5MiwxMSBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VBcnJheSgpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGlmICgh
Y291bnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
ICAgICBDRk11dGFibGVBcnJheVJlZiBhcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKE5VTEws
IGNvdW50LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKENHSW1hZ2VSZWYgY3VyckZyYW1lID0gZnJh
bWVBdEluZGV4KGkpKQorICAgICAgICBpZiAoQ0dJbWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFtZUlt
YWdlQXRJbmRleChpKS5nZXQoKSkKICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJh
eSwgY3VyckZyYW1lKTsKICAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwpAQCAtMjE0
LDEyICsyMTMsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBk
cmF3aW5nIGludG8gUERGIGNvbnRleHRzLgogICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4
dChjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNvcHlV
bnNjYWxlZEZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOworICAgICAgICBpbWFnZSA9IGNv
cHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBlbHNlIHsK
ICAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlB
ZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29u
dGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9h
dD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNy
Y1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBz
cmNSZWN0LmhlaWdodCgpKSk7CiAKLSAgICAgICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJy
ZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOworICAgICAgICBpbWFnZSA9IGZyYW1lSW1hZ2VB
dEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKICAgICB9CiAKICAgICBp
ZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHll
dC4KQEAgLTI0NSwyNCArMjQ0LDI0IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYg
KGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgo
bV9jdXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCks
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3Jp
ZW50YXRpb24pOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNl
cnZlcigpLT5kaWREcmF3KHRoaXMpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1h
Z2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gQml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJh
bWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwg
IW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsK
IAogICAgIGlmICghbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAg
cmV0dXJuIENHSW1hZ2VSZXRhaW4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpOworICAgICAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiAKLSAgICByZXR1cm4gbV9zb3VyY2UuY3Jl
YXRlRnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDZj
MDNhMmNlZjg0NjA2NTYxZWEwN2ViOTI4ZjFjZjI5NWY5ZjVlMzYuLjk5ZjA5ZGI2N2JhNTQyODJk
YzRlZDcwNWFlNDE2MzgwMzM3MTkzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0zMzMs
MTUgKzMzMywxNSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0
cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29k
ZXIuZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1f
ZGVjb2RlZEltYWdlID0gYWRvcHRDRihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7Ci0g
ICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2RlY29k
ZWRJbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAgIG1f
Y2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwogICAgIH0gZWxzZQogICAgICAgICBtX2NnSW1hZ2Ug
PSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbV9jZ0lt
YWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdl
R2V0V2lkdGgobV9jZ0ltYWdlKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdo
dChtX2NnSW1hZ2UpOworICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1h
Z2UuZ2V0KCkpOworICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFn
ZS5nZXQoKSk7CiAgICAgaWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzQ5LDcgKzM0OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhh
LCBib29sCiAgICAgLy8gc28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4g
VGhlIGltYWdlIHJlLXBhY2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5v
dCBjb2xvciB0YWJsZSBpbmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBD
R0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFn
ZSk7CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFj
ZShtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dDb2xv
clNwYWNlR2V0TW9kZWwoY29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9yU3Bh
Y2VNb2RlbEluZGV4ZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFw
Q29udGV4dDsKQEAgLTM2NCwyMiArMzY0LDIyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Oklt
YWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAK
ICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0Js
ZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShi
aXRtYXBDb250ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENHQ29u
dGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1h
Z2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZSk7CisgICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0
aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93IGRp
c2NhcmQgdGhlIG9yaWdpbmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5IGZy
b20gdGhlIGJpdG1hcCBjb250ZXh0LgogICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogICAgICAg
ICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKICAgICB9CiAKLSAgICBzaXplX3Qg
Yml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFnZSk7
Ci0gICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0lt
YWdlKTsKKyAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29t
cG9uZW50KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1h
Z2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBv
bmVudCAhPSA4ICYmIGJpdHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwg
LyBiaXRzUGVyQ29tcG9uZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdl
R2V0Qml0bWFwSW5mbyhtX2NnSW1hZ2UpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJ
bWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNv
dXJjZSA9IGZhbHNlOwogICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVk
IGludG8gb25lIGxhcmdlIHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBu
b3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQyMSw3ICs0MjEsNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbAogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7CiAg
ICAgQWxwaGFGb3JtYXQgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNo
IChDR0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZSkpIHsKKyAgICBzd2l0Y2ggKENHSW1hZ2VH
ZXRBbHBoYUluZm8obV9jZ0ltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAg
ICAgICAgbV9hbHBoYU9wID0gQWxwaGFEb1VubXVsdGlwbHk7CkBAIC00NjEsMTQgKzQ2MSwxNCBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0ID09
IERhdGFGb3JtYXROdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3Bp
eGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVBy
b3ZpZGVyKG1fY2dJbWFnZSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsK
ICAgICBpZiAoIW1fcGl4ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2lt
YWdlUGl4ZWxEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oQ0ZEYXRhR2V0Qnl0
ZVB0cihtX3BpeGVsRGF0YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQgaW50IHNyY1VucGFja0Fs
aWdubWVudCA9IDA7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVy
Um93KG1fY2dJbWFnZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVz
UGVyUm93KG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVzUGVy
Um93IC0gYml0c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGluZykg
ewogICAgICAgICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTUzNiw3ICs1
MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRT
aXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKICAg
ICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUp
OwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwg
Y2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRl
Q29weSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBj
YW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVD
b3B5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4
IGE0NDk2NTQwNDZhZThmMTBhYmFkMTY0MTVlNjQ2MGFkYmJiYjhlODguLmYzNDJkYTE2NTgxMWIy
MTcxNjNjZmYxOWRlNGY1ZjE5OWRkODc2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2Miwx
OSArMTYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgp
CiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0g
ZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05h
dGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVy
LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFnZVB0cik7CisgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IHN1YkltYWdlKGltYWdlKTsKIAotICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBv
cmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdl
dCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGN1cnJIZWln
aHQgPSBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1
YkltYWdlLmdldCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOwogICAgIGlm
IChjdXJySGVpZ2h0IDw9IHNyY1JlY3QueSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIxNiwx
MyArMjE2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05h
dGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpCiAgICAgICAgICAgICBhZGp1c3Rl
ZERlc3RSZWN0LnNldEhlaWdodChzdWJpbWFnZVJlY3QuaGVpZ2h0KCkgLyB5U2NhbGUpOwogCiAj
aWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgICAgICBpbWFnZSA9IHN1YmltYWdlQ2FjaGUoKS5n
ZXRTdWJpbWFnZShpbWFnZS5nZXQoKSwgc3ViaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIHN1Yklt
YWdlID0gc3ViaW1hZ2VDYWNoZSgpLmdldFN1YmltYWdlKHN1YkltYWdlLmdldCgpLCBzdWJpbWFn
ZVJlY3QpOwogI2Vsc2UKLSAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRl
V2l0aEltYWdlSW5SZWN0KGltYWdlLmdldCgpLCBzdWJpbWFnZVJlY3QpKTsKKyAgICAgICAgICAg
IHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHN1YkltYWdl
LmdldCgpLCBzdWJpbWFnZVJlY3QpKTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKGN1cnJIZWln
aHQgPCBzcmNSZWN0Lm1heFkoKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlLmdldCgpKSA9PSBjdXJySGVpZ2h0IC0gQ0dSZWN0SW50ZWdyYWwoc3JjUmVj
dCkub3JpZ2luLnkpOwotICAgICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0
KENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8geVNjYWxlKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoQ0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSkgPT0gY3VyckhlaWdodCAt
IENHUmVjdEludGVncmFsKHNyY1JlY3QpLm9yaWdpbi55KTsKKyAgICAgICAgICAgICAgICBhZGp1
c3RlZERlc3RSZWN0LnNldEhlaWdodChDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdldCgpKSAv
IHlTY2FsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBh
ZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoZGVzdFJlY3QueCgpIC0gc3Jj
UmVjdC54KCkgLyB4U2NhbGUsIGRlc3RSZWN0LnkoKSAtIHNyY1JlY3QueSgpIC8geVNjYWxlKSk7
CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFn
ZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2kKICAgICBDR0NvbnRl
eHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CiAKICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KLSAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdCwgaW1hZ2UuZ2V0
KCkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBhZGp1c3RlZERlc3RSZWN0LCBz
dWJJbWFnZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdQYXR0ZXJuQ2FsbGJhY2sodm9p
ZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCkBAIC0zMTEsOCArMzExLDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QKICAgICBmbG9hdCBhZGp1c3RlZFggPSBwaGFzZS54KCkgLSBkZXN0
UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5U
cmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0aGUgY29udGV4dCBzbyB0aGF0IGRlc3RS
ZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFjdCBpdCBvdXQuCiAgICAgZmxvYXQgYWRq
dXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhhc2UueSgpIC0gZGVzdFJlY3QueSgpICsg
dGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQo
KSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKIAotICAgIENHSW1hZ2VSZWYgdGlsZUltYWdlID0gaW1h
Z2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdl
dEhlaWdodCh0aWxlSW1hZ2UpOworICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxl
SW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogI2lm
IFBMQVRGT1JNKElPUykKQEAgLTMyNiwxMyArMzI2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRl
Y29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQg
c2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9u
bHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1h
Z2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkp
OwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVj
dCh0aWxlSW1hZ2UsIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKICAg
ICB9CiAKICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNh
dXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcs
CiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQg
bWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkg
KiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9h
dCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VH
ZXRXaWR0aCh0aWxlSW1hZ2UuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0
aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYg
IXNwYWNpbmcuaGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAg
dGhlIGltYWdlcyB0byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9y
ZGVyLWltYWdlLXJlcGVhdDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwg
YnV0IHRoZSBsYXN0LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAK
aW5kZXggODQ2Mzk2YzE5MDI3YzJjMmJlMjU1Yzc2NGFjYWU3NjJmZTdlOTg3YS4uZmFjZTBjMTE1
MGQwYzkxODY3MmMwZDUwMjlmY2RkN2ZiZGJlNDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTE5OSw3ICsx
OTksNyBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGlu
Z0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPgogICAgIGlmICghaW1hZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoaW1hZ2Uu
Z2V0KCkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsK
IH0KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaGF2aW9yIHNjYWxlQmVoYXZpb3IpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cu
Y3BwCmluZGV4IGQ0YTAxMmI2ZjU3YmY1MzkzMDY0Nzc3YjZjMTA5MzY2YjI0YzQ0NWMuLjUwMTVk
ZDE1YWJmYzgyNWRjZWIwMzIwZjEyMDI5Y2JhNTEyMTgyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCkBAIC0zNDAs
NyArMzQwLDcgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWNvZGVyID8gQ0dJbWFnZVNvdXJjZUdldENvdW50KG1fZGVjb2RlcikgOiAwOwog
fQogCi1DR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewogICAgIGlmICghaW5pdGlhbGl6
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNjYsMTggKzM2NiwxNSBAQCBDR0lt
YWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbQogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkg
PSBDRlNUUigicHVibGljLnhiaXRtYXAtaW1hZ2UiKTsKIAogICAgIGlmICghaW1hZ2VVVEkpCi0g
ICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBpbWFnZTsKIAog
ICAgIGlmICghQ0ZFcXVhbChpbWFnZVVUSSwgeGJtVVRJKSkKLSAgICAgICAgcmV0dXJuIGltYWdl
LmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIAogICAgIC8vIElmIGl0IGlz
IGFuIHhibSBpbWFnZSwgbWFzayBvdXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIgdGhl
bSB0cmFuc3BhcmVudC4KICAgICBjb25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7MjU1
LCAyNTUsICAyNTUsIDI1NSwgMjU1LCAyNTV9OwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBt
YXNrZWRJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhNYXNraW5nQ29sb3JzKGltYWdl
LmdldCgpLCBtYXNraW5nQ29sb3JzKSk7Ci0gICAgaWYgKCFtYXNrZWRJbWFnZSkKLSAgICAgICAg
cmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKLQotICAgIHJldHVybiBtYXNrZWRJbWFnZS5sZWFrUmVm
KCk7CisgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAog
Ym9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMDI0Y2JmZTAwYjUyMjMzOTMz
NTkyMGY5Zjg1MzRjODM2ZGFjY2Y4OC4uNDkyN2VhYmY4ZWQxMmE2YzIxZWFiMzFiZmU2MmY1MmM2
YjI0ZWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDkxLDEx
ICs0OTEsMTEgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdUaWxlZFNjYWxlZEltYWdlJiBpdGVtKQogfQogCiAjaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1h
Z2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQor
RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICA6IERyYXdp
bmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCiAjaWYgVVNFKENHKQogICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWlyby4KLSAgICAsIG1faW1hZ2VQdHIo
aW1hZ2VQdHIpCisgICAgLCBtX2ltYWdlKGltYWdlKQogI2VuZGlmCiAgICAgLCBtX2ltYWdlU2l6
ZShpbWFnZVNpemUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQpAQCAtNTA3LDcgKzUw
Nyw3IEBAIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpCiAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVu
dGF0aW9uKQogewogI2lmICFVU0UoQ0cpCi0gICAgVU5VU0VEX1BBUkFNKGltYWdlUHRyKTsKKyAg
ICBVTlVTRURfUEFSQU0oaW1hZ2UpOwogICAgIFVOVVNFRF9QQVJBTShvcCk7CiAgICAgVU5VU0VE
X1BBUkFNKGJsZW5kTW9kZSk7CiAjZW5kaWYKQEAgLTUxNiw3ICs1MTYsNyBAQCBEcmF3TmF0aXZl
SW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0
IEZsb2F0U2l6ZSYgaQogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCi0gICAgY29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UobV9pbWFnZVB0ci5nZXQoKSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3Jj
UmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBtX3NyY1Jl
Y3QsIG1fb3AsIG1fYmxlbmRNb2RlLCBtX29yaWVudGF0aW9uKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGNvbnRleHQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApp
bmRleCA1YTg0OTY0YzU3OWIzMmZkYzBlYzZlZjE0NWY2NDI2MGYxMzVhZmZmLi40NzBmMjgyOTEw
MDg1NGMzYzA1ZjZkZWZlZDIxNWI1ZmM2NDdkYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgKQEAgLTYzOSwyMyArNjM5LDIzIEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pCiBjbGFzcyBEcmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoUGFzc05hdGl2
ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKKyAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2VQ
dHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0
aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRp
b24pKTsKICAgICB9CiAKICAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9z
cmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgotICAgIERyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZl
SW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVz
dGluYXRpb247IH0KIAogI2lmIFVTRShDRykKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9p
bWFnZVB0cjsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9pbWFnZTsKICNlbmRpZgogICAg
IEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA1ZTUyZWM5MTkyM2Q0
NTlmMDgyMjE5MWY2NjlkMGMwMGVlZGYyNThhLi4wYmYxNGJlZjc5YmQzYWIyZmI3M2Y2Yzc1MDgw
NzI2ZGE0NDFlMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CkBAIC0xMTksOSArMTE5LDkgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdAogfQogCiAjaWYgVVNF
KENHKSB8fCBVU0UoQ0FJUk8pCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05h
dGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewotICAg
IERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0o
RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSkpOworICAgIERyYXdpbmdJdGVtJiBu
ZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdl
OjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGE1ZDJjNzFh
MjVlYmRiZmU0ZjNiYTdmZGFjZDFmMmRlNTg4NmRjNTAuLmViOTlhM2RkYTAwZDMxNzBjZmM4ZjA4
NmE0MDI5Y2JiY2UxY2QzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJj
ZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwog
I2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NO
YXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CiAjZW5kaWYKICAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKaW5kZXgg
YmE0MTU5N2FhMTEwMWRiNjI5MDIzZDI3M2IyMDBlNzgxZDMzYWFjOS4uNTljYzJjOWJlOGIzZmZl
MTExODZhNjg1ZDJlOGNmNTk0YzFkMzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCkBA
IC0yNjMsNyArMjYzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6
OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDAp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
ZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
ZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0
LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxw
aGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBwaXhlbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcAppbmRleCA5YzkyYzA4NTNjMjYxYzc2MGE3
YzA4MWY2Yzg3ZTk5MGIxYjg4ZGFiLi4wN2JlYmU2OTQ5YzFjODRhMWU3ODY0MjFjMGU5ZDdhZjc3
N2U3NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
SWNvbkVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0lj
b25FZmwuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTUxLDEwICs1MSwxMCBAQCBJY29uOjp+SWNvbigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SWNv
bj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK1JlZlB0
cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9J
Y29uR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3Rr
LmNwcAppbmRleCA1OTQ1ZTFmOGM0YjQ3NDQ4ZjM0ODVmYzY0YmI1NzY1N2FmNGMzOGZlLi44ODBj
NGM5Nzk0YTVlZDZkM2FjMmY4YTY3NDdjYzIxMjY5MmQyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCkBAIC0zNiw3ICszNiw3IEBA
CiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIFN0cmluZyBsb29r
dXBJY29uTmFtZShTdHJpbmcgTUlNRVR5cGUpCiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoZSBjb2Rl
IHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCi1QYXNzUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQorUmVm
UHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9J
Y29uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1Mu
bW0KaW5kZXggMjE1OTE1ZjI4YTE5MjE3MjM5NmQ0NmYwODZkMjI0OWI4MWQ5ZDc2YS4uMzZiMjRm
NWNmZjBhNmI2MWU1NDU3NDY3MzJiNjI2Y2QzOTg3Y2I0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotSWNvbjo6SWNvbihDR0ltYWdlUmVmIGltYWdlKQor
SWNvbjo6SWNvbihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgOiBtX2NnSW1hZ2Uo
aW1hZ2UpCiB7CiB9CkBAIC00MiwxNyArNDIsMTcgQEAgSWNvbjo6fkljb24oKQogewogfQogCi1Q
YXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgLypmaWxlbmFtZXMqLykKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qZmlsZW5hbWVzKi8pCiB7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKE5h
dGl2ZUltYWdlUHRyIGltYWdlUmVmKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJ
bWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQogewotICAgIGlmICghaW1h
Z2VSZWYpCisgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaW1hZ2VSZWYpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEljb24oaW1hZ2UpKTsKIH0KIAogdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCmluZGV4IDRjZmM1MmZkYzEzNTdkZWYx
NjkzZGExNzlhYjg0MmU2YzQ1OGY5OTQuLmU0NjA1ZGUyMDAzYmRmMDY2MzczNTAzNzAwYWIwMTAy
ZDZjMzU2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JY29uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
Y29uTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0
ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5o
IgotI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDcsNyArNDcsNyBAQCBJY29uOjp+SWNvbigpCiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoZSBjb2Rl
IHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCi1QYXNzUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQorUmVm
UHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbQppbmRleCBmZjA3MTMxYTYxZmNlZDA0NTg2YjM3MmQ5YmEyMDc5YTk4NzNjMzhi
Li5mYTAxMWFhODgxNjMwMzAwMDk0NDk4ZWJjMGZmY2E5ZmI5YzMwMzRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC05NSw3ICs5
NSw3IEBAIENGRGF0YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkKIAog
ICAgIFZlY3RvcjxDR0ltYWdlUmVmPiBpbWFnZXM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bUZyYW1lczsgKytpICkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFt
ZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KGkpLmdldCgpOwogICAgICAgICBpZiAoY2dJbWFnZSkKICAgICAgICAgICAgIGltYWdlcy5h
cHBlbmQoY2dJbWFnZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ljb25XaW4uY3BwCmluZGV4IGE3ODA3MGQ5YWFhZjdmNGUyYTMxODllZTE0OGE2
YTVjNzkzODhjMDUuLmEzOTQ2Y2FmNGY4M2UwMGNmZDFiOTlhNThmMmM5OTIyMzE3OWI0ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgSWNvbjo6fkljb24oKQogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUg
Y29kZSB0byBDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJ
Y29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykK
K1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKaW5kZXggODM1ZWNmM2Y0ZmVlZWI4YTBkZmE4ZDM2OTczMTI4ZjNiODA3
YjkyNi4uNDcwNzNjMGVkNjkwZTA0NGZmYjNhOTRlNTg2ZjI2MDI3OWQxYzRjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBm
cmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7
ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KGkpOworICAg
ICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7CiAgICAg
ICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3Qg
Y3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFt
ZSA9IGk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggMjlhMjAyM2RiNjNhOTE0MzRjMzk0OGVhYTU1MjNiYjYx
ZmU4MTA3NS4uNDJmM2I4YmQzYWI2M2ZiYjcyMGEzM2JlM2Q3NDUwNGJjMGM3YjA2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAg
IHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmcmFtZXM7ICsraSkgewotICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNl
ID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgY29udGludWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggZmM4N2Y4MzQwMzMxOTU1NzNmNTY3ZmMwNThjN2M3M2Q4NThhMTk3YS4u
YjM1NDdkOTRlODA4Zjg3NGFlZDlkYTBmMjkxYmVjZTIwYTY0NjQzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAg
LTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBSZXR1cm5zIGEg
Y2FsbGVyLW93bmVkIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEu
CiAgICAgICAgIC8vIChBY3R1YWwgdXNlOiBUaGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBC
aXRtYXBJbWFnZSBhbmQgZnJlZWQgaW4KICAgICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4K
LSAgICAgICAgUGFzc05hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAg
ICAgICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OwogCiAgICAgICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxG
cmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURl
Y29kZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKaW5kZXggM2ZlNzA0MDIzNDE5ZDk3NTNiMTM5OWQ5
ZjZjMDBiNjczOTQ1MTI5Ni4uN2I0MTI5NWY4NTczNThmYmJmMzVjMWIwNTI1ZThkNmNjMzUyMGY1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fp
cm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1l
Ojphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFz
TmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFn
ZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCBhZDI1OTg5Njgz
MGE0OWEzOTgzMDhjODQyMTk2ZjJjOTc2MThiMDE4Li4zNmNkNjUxNmU4MGYxNzQ4YmZlYWI3N2E5
MzAyNzFjMTIxZGU4MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VDR1dpbi5jcHAKQEAgLTEyOCw3ICsxMjgsNiBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikK
ICAgICBpZiAoIWhibXAgfHwgIWRyYXdDb250ZXh0KQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IENHSW1hZ2VSZWYgc3JjSW1hZ2UgPSBpbWctPmdldENHSW1hZ2VSZWYoKTsKICAgICBDR1JlY3Qg
cmVjdDsKICAgICByZWN0LnNpemUgPSBJbnRTaXplKGltZy0+c2l6ZSgpKTsKICAgICByZWN0Lm9y
aWdpbi54ID0gMDsKQEAgLTEzNyw3ICsxMzYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKICAg
ICBDR0NvbnRleHRTY2FsZUNUTShkcmF3Q29udGV4dCwgMSwgLTEpOwogICAgIENHQ29udGV4dFNl
dEZpbGxDb2xvcihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4dEZpbGxSZWN0KGRy
YXdDb250ZXh0LCByZWN0KTsKLSAgICBpZiAoc3JjSW1hZ2UpIHsKKyAgICBpZiAoYXV0byBzcmNJ
bWFnZSA9IGltZy0+Z2V0Q0dJbWFnZVJlZigpKSB7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5k
TW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKICAgICAgICAgQ0dDb250ZXh0
RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNDJlYTVlZTUzNDIxYTc3ZDA3ZTM0
ZTZmODBiNDMzYzYyMDczN2I4Yy4uYzE1ZmFmYmQ4ZWExYjYxMzI0ODY1NjU0ZDk0OTQyZGZlZDQ2
NTM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xODAs
MTcgKzE4MCwxNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaQogfQogCiAjaWYgVVNFKENBSVJP
KQotLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIg
c28gUGFzc05hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBu
YXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcwogLy8gdG8g
YmUgYSBzbWFydCBwb2ludGVyIHR5cGUuCi1QYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENhaXJvIGRvZXMgbm90
IHVzZSB0aGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4g
dW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyLgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNj
ZWxlcmF0ZWQpOwogICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZHJhdyhi
dWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDg3MGY2Yzg1YzVlNjg0ZTE3N2MzMGQx
NmMyMTY2YTM0MGRjZDVhN2IuLjQ5MWRkZmIzYzIxMzllZjg4MjEwMWQxYWY0NWI1YWVmMTEwYzRm
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKICNpZiBV
U0UoQ0FJUk8pCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggNGUxNjFl
M2YwZDQ0YTZhYTZlYTZjMDNmNWVkOWFiYzE5ZWJhZWExZC4uN2UxNDNkZWQyZDY2OWFiM2FjMDlj
NDk2YjRlNGJlZTdkYzg3ZjIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgU1ZH
SW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0CiAgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29u
dGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAot
UGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCAzNTk3NTQyODlmYzMwNDIxOGNkYjhiZjEy
MDNiODczYzI5ZmQ1MmQyLi5kMjI0ZmM0NjEyZmQ5NWExYWVhNzdhZmI0NDc5NzY5MjM1MjdhY2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFBhc3NOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAgIE5h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274809</attachid>
            <date>2016-03-23 18:48:26 -0700</date>
            <delta_ts>2016-03-23 20:12:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160323184827.patch</filename>
            <type>text/plain</type>
            <size>97456</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uNGI0YjQyZDBjNGFkMTU5NDYyMjU5OGVmNTI3MTY2
Nzc4ZmI2ZTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNiBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1h
Z2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgor
ICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrIHdhcyBk
b25lIHRvIGVuc3VyZSB0aGUgQ0cKKyAgICAgICAgcG9pbnRlciBpcyByZWZjb3VudGVkIGNvcnJl
Y3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYQorICAgICAgICBGcmFtZURh
dGEgc2luY2UgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdl
UmVmLgorCisgICAgICAgIFdpdGggdGhpcyBjaGFuZ2UsIFBhc3NOYXRpdmVJbWFnZVB0ciBpcyBu
b3QgbmVlZGVkIGFueW1vcmUuIFNvIGFsbCB0aGUKKyAgICAgICAgaW5zdGFuY2Ugb2YgUGFzc05h
dGl2ZUltYWdlUHRyIGNhbiBiZSByZXBsYWNlZCBieSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgIENoYW5nZSB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUgUmV0YWluUHRy
PENHSW1hZ2VSZWY+LgorICAgICAgICAgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldE5TSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0lt
YWdlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0RXZhc09iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIENoYW5nZSAwIHRvIG51bGxwdHIgYW5kIFBhc3NO
YXRpdmVJbWFnZVB0ciB0byBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1h
Z2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIE1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBw
b2ludGVyIGZvciBDRy4gR2V0IHJpZCBvZiBQYXNzTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgc2lu
Y2UgTmF0aXZlSW1hZ2VQdHIgaXMgbm93IGEgc21hcnQgcG9pbnRlciBvbiBhbGwgcGxhdGZvcm1z
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIFNpbmNlIEltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIHJldHVybnMgYSBSZXRhaW5QdHIsIG1vdmUgaXQKKyAgICAg
ICAgdG8gbV9wZW5kaW5nQ29udGVudHNJbWFnZSB0byByZW1vdmUgdGhlIHJlZmNvdW50IGNodXJu
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6
OmNsZWFyKToKKyAgICAgICAgUmVwbGFjZSBtX2ZyYW1lIHdpdGggbV9pbWFnZSBhbmQgZnJhbWUq
IHdpdGggZnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgUmVwbGFjZSAq
RnJhbWUqIHdpdGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJ
bWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNs
ZWFyKTogTm8gbmVlZCB0byBjYWxsIENHSW1hZ2VSZWxlYXNlKCkuIEp1c3QgYXNzaWduCisgICAg
ICAgIG1faW1hZ2UgdG8gbnVsbHB0ciBhbmQgQ0dJbWFnZVJlbGVhc2UoKSB3aWxsIGJlIGNhbGxl
ZCBmcm9tIHRoZSBSZXRhaW5QdHIKKyAgICAgICAgZGVzdHJ1Y3Rvci4KKworICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEZp
cnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0
Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVBdElu
ZGV4KTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBDR0ltYWdlUmVmIHdpdGggUmV0YWluUHRy
PENHSW1hZ2VSZWY+LiBSZXBsYWNlICpGcmFtZSogd2l0aAorICAgICAgICAqRnJhbWVJbWFnZSou
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFRvQ2FudmFzKToKKyAgICAgICAgVXNlIG1fY2dJbWFnZS5nZXQoKSBpbnN0ZWFkIG9mIG1fY2dJ
bWFnZSB3aGVuIGNhbGxpbmcgQ0cgZnVuY3Rpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRy
IHdpdGggTmF0aXZlSW1hZ2VQdHIuIEdldCB0aGUgcmF3IENHSW1hZ2VSZWYKKyAgICAgICAgZnJv
bSB0aGUgTmF0aXZlSW1hZ2VQdHIgd2hlbiBjYWxsaW5nIHRoZSBDRyBmdW5jdGlvbnMuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6
IE1vdmUgdGhlIGltYWdlIGFyZ3VtZW50CisgICAgICAgIHdoZW4gY2FsbGluZyBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKCkuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVG
cmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhlIGZ1bmN0aW9uIGFuZCBz
aW1wbGlmeSB0aGUgY29kZSBzaW5jZSB0aGUgbG9jYWwgdmFyaWFibGUKKyAgICAgICAgYW5kIHRo
ZSByZXR1cm4gdmFsdWUgYXJlIGJvdGggc21hcnQgcG9pbnRlcnMuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdl
OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIgYW5kIHVzZSBjb25zdGFudCByZWZl
cmVuY2UuIAorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhp
Y3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICBDYWxsIGEgZnVuY3Rpb24g
d2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2VmbC9JY29uRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okljb246Oklj
b24pOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVh
dGVJY29uRm9yRmlsZXMpOgorICAgICAgICBVc2Ugc21hcnQgcG9pbnRlcnMgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGluc3RlYWQgb2YgcmF3IHBvaW50ZXJzIENHSW1hZ2VSZWYuCisgICAgICAgIEFu
ZCBjaGFuZ2UgUGFzc1JlZlB0ciB0byBSZWZQdHIgYW5kIDAgdG8gbnVsbHB0ci4KKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6IEdldCB0aGUgcmF3
IHBvaW50ZXIgZnJvbSB0aGUKKyAgICAgICAgcmV0dXJuZWQgc21hcnQgcG9pbnRlci4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKTogQ2hhbmdlIFBhc3NSZWZQdHIg
dG8gUmVmUHRyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rpb24KKyAgICAgICAgd2l0aCBpdHMgbmV3
IG5hbWUgYW5kIGdldCB0aGUgcmF3IHBvaW50ZXIgZnJvbSB0aGUgcmV0dXJuZWQgc21hcnQgcG9p
bnRlci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fp
cm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNo
aW5nU291cmNlU2l6ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGggaXRzIG5ldyBu
YW1lLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURl
Y29kZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoK
KyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4K
KyAgICAgICAgCiAyMDE2LTAzLTE4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVcGRhdGUgQXV0b0ZpbGwgYnV0dG9uIGluIGlucHV0IGZpZWxkcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDFlNmZjY2Q4ZWI0Njk5YzA2YTk5YzQy
MzZiMTkxOTUxZTg1ZGMwMmYuLjcxMzE0YmMyNjc0NTI4ZmRkMjE1NjJlODNiMzJjMTYxNmVhZjRm
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjc5LDcg
KzI3OSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9F
bGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRyIEhUTUxW
aWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxh
eWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAppbmRleCBhZDk0OGY5NDRhMzA4MTZhYTU3YjNjOGVlYTYwMjQ4ODEyNDU2NTE1
Li5iNGQ3ZjFlMTcwZjFmNzNlY2E0ODY1NjQ2MDdjZDU3ZWYxZjRmZTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAg
Ly8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7
CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAg
Ly8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVzIGNvcHkgaWYgcG9zc2libGUu
CiAgICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2JmNjgwNGZjZjhhZmE1
Y2NlYzAxOTQzMDliZWM1OTc0NzczZTIyNy4uZDY4Zjk4NmNhYTdiMzg4YTUyOWYzYjgzOTBhMGU2
MzczZTZhYWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNjI1LDcgKzE2MjUsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVv
LCBjb25zdCBGbG9hdFJlYwogICAgIGNoZWNrT3JpZ2luKHZpZGVvKTsKIAogI2lmIFVTRShDRykg
fHwgKEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShHU1RSRUFNRVJfR0wpICYm
IFVTRShDQUlSTykpCi0gICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAgICAgIGMtPmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVv
LT52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29u
dGFpbnNDYW52YXMoZHN0UmVjdCkpCiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCA5OTk0
NjVlYTM5MDY5N2NiZTAwZmU2ZmE4ODM4YzEzOGU1NDQ3YTE3Li4wOTkzMGUwZThjYjE5Y2E5MTBi
MGUxM2JhYzU2MDc3YTYyZmEzNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAKQEAgLTIwNCwyOSArMjA0LDI0IEBAIHVuc2lnbmVkIE1lbW9yeUNhY2hl
OjpsaXZlQ2FwYWNpdHkoKSBjb25zdAogICAgIHJldHVybiBtX2NhcGFjaXR5IC0gZGVhZENhcGFj
aXR5KCk7CiB9CiAKLSNpZiBVU0UoQ0cpCi0vLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9u
Y2Ugd2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIG9uIGFsbCBw
bGF0Zm9ybXMgb3IKLS8vIHJlbW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlD
YWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28gYXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1p
bmRlcGVuZGVudC4KIHN0YXRpYyBDYWNoZWRJbWFnZUNsaWVudCYgZHVtbXlDYWNoZWRJbWFnZUNs
aWVudCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENhY2hlZEltYWdlQ2xpZW50PiBj
bGllbnQ7CiAgICAgcmV0dXJuIGNsaWVudDsKIH0KIAotYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKK2Jvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdl
VG9DYWNoZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKIHsKICAgICBBU1NFUlQoaW1hZ2UpOwogICAg
IFNlc3Npb25JRCBzZXNzaW9uSUQgPSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKICAg
ICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsgLy8g
UmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgogCi0gICAgUmVmUHRyPEJp
dG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoaW1hZ2UsIG51bGxw
dHIpOworICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKICAgICBpZiAoIWJpdG1hcEltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkSW1hZ2U+
IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJ
bWFnZS5nZXQoKSwgQ2FjaGVkSW1hZ2U6Ok1hbnVhbGx5Q2FjaGVkLCBzZXNzaW9uSUQpOwogCi0g
ICAgLy8gQWN0dWFsIHJlbGVhc2Ugb2YgdGhlIENHSW1hZ2VSZWYgaXMgZG9uZSBpbiBCaXRtYXBJ
bWFnZS4KLSAgICBDRlJldGFpbihpbWFnZSk7CiAgICAgY2FjaGVkSW1hZ2UtPmFkZENsaWVudCgm
ZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNp
emUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJ
T05JTkcpCkBAIC0yNjQsNyArMjU5LDYgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlSW1hZ2VG
cm9tQ2FjaGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2EKICAgICAv
LyByZXNvdXJjZSBtYXkgYmUgZGVsZXRlZCBhZnRlciB0aGlzIGNhbGwuCiAgICAgZG93bmNhc3Q8
Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkucmVtb3ZlQ2xpZW50KCZkdW1teUNhY2hlZEltYWdlQ2xp
ZW50KCkpOwogfQotI2VuZGlmCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNl
cyhib29sIHNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExpdmVSZXNvdXJjZXMpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGM4OGQyZGJkNGU2
YjFkMjc4MGRkYTA0ZmNjYWY5YjgyM2E0NjE3YTAuLjUzMWU5YWZmNGI1YWIwNDBlYjFiYmQyODc2
ZjdhMGE1ZmI5MWExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oCkBAIC0xNTUsMTIgKzE1NSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlPcmlnaW5TZXQmIG9yaWdpbnMpOwogICAgIFdF
QkNPUkVfRVhQT1JUIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc1dpdGhD
YWNoZShTZXNzaW9uSUQpIGNvbnN0OwogCi0jaWYgVVNFKENHKQotICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFrZSBOYXRpdmVJbWFnZVB0ciBhIHNtYXJ0
IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotICAgIC8vIHJlbW92ZSB0aGUgdXNhZ2Ugb2Yg
Q0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28gYXMgdG8gbWFr
ZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJ
bWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBk
b21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJ
bWFnZUZyb21DYWNoZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKTsKLSNlbmRpZgogCiAgICAgLy8gcHJ1bmVEZWFkKigpIC0gRmx1c2ggZGVjb2RlZCBh
bmQgZW5jb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIG5vdCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdl
cy4KICAgICAvLyBwcnVuZUxpdmUqKCkgLSBGbHVzaCBkZWNvZGVkIGRhdGEgZnJvbSByZXNvdXJj
ZXMgc3RpbGwgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBkY2NhODhlNWI3MDdkMWE3MDBiZjQ2ZWY2MzAw
NDdhMzNjZjg4YjlmLi42ZGEyNDRlNWQzYTFlNjRhYjNhMTgwZDkxMzgwMjUwYjY0OTBhMzhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTMwMCw3
ICszMDAsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3Jk
LT5pbWFnZShzaXplKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3lu
Y2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5h
bCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3lu
Y2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5h
bCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBJbWFnZSogaWNvbiA9IHN5bmNocm9ub3Vz
SWNvbkZvclBhZ2VVUkwocGFnZVVSTE9yaWdpbmFsLCBzaXplKTsKICAgICBpZiAoIWljb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCmluZGV4IDUzMGEzYTMwODkw
MTRhM2ViMWJlMDJkMzI0ODI5Y2FjMjZkODZkMzIuLmRiNDNlYzJjYjMxMTllNTYzMDA4NzQ0YmFi
YzA1OTI0ZGU2MWMyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBw
YWdlVVJMKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlKiBzeW5jaHJvbm91
c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsK
LSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwor
ICAgIE5hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvcklj
b25VUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgSWNvbkxv
YWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5n
JiwgRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZUJhc2UuaAppbmRleCAwMjU0NjUzMDQxNjkxOTcyMjJlNzdkZjA2ZTY2
ZmY2NjNlNzgwOGFhLi41NDRjYmFjYjY5OGM2OGIwZDg2ODFjMjhiZDYxOGNlNzI4YzFhZmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCkBAIC0x
NzksNyArMTc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzeW5jaHJvbm91c0ljb25E
YXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVS
TChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIHsgcmV0dXJuIEljb25Mb2FkTm87IH0K
ICAgICB2aXJ0dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBQYXNz
TmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgLy8gQXN5bmNocm9u
b3VzIGNhbGxzIHdlIHNob3VsZCB1c2UgdG8gcmVwbGFjZSB0aGUgYWJvdmUgd2hlbiBzdXBwb3J0
ZWQuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpIHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKaW5kZXggZmFmMGY4Njk2MmMzZmI2NTc3NzQ1YmZhZjc1YjRjODRkODBjYzA2MC4u
NGE1YzYxYTVkMjdiYTg1NTQzYzAwNjQ1ZGY4ZWEyMDMzNTBhOWUxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzdGFydFRpbWVyKGRvdWJsZSBkZWxheSkKICAgICBtX2Zy
YW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6Omhh
dmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3Vu
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49
IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25z
dApAQCAtMTg0LDkgKzE4NCw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgICAgIG1f
ZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAogICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVN
ZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9z
b3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAg
ICAgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5t
X3N1YnNhbXBsaW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOwotICAgICAgICBpZiAobnVtRnJh
bWVzID09IDEgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgICAgIGlmIChudW1GcmFt
ZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgICAgIGNoZWNrRm9y
U29saWRDb2xvcigpOwogICAgIH0KIApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwsIEltCiAgICAgaWYgKCFzdWJzYW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3Np
emUpCiAgICAgICAgIG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IGZhbHNlOwogCi0gICAgaWYgKG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
KSB7CiAgICAgICAgIGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZUJ5dGVzKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwog
ICAgICAgICAvLyBUaGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRp
YWxseSBkZWNvZGVkIGRhdGEgdXNlZApAQCAtMzc5LDE0ICszNzksMTQgQEAgYm9vbCBCaXRtYXBJ
bWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5n
IGZyYW1lQ2FjaGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID49IG1f
ZnJhbWVzLnNpemUoKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgICAgIHx8IChmcmFtZUNh
Y2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZSkKICAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwg
MCwgZnJhbWVDYWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzTmF0aXZlSW1h
Z2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNl
bnRhdGlvblNjYWxlSGludCkKK05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKIHsKICAg
ICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTM5NSw3ICszOTUsNyBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYQogCiAgICAgLy8gV2UgbWF5
IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0aCBhIGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwgaW4g
d2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAgICAgLy8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBsZXZl
bC4KLSAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1f
ZnJhbWUgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5n
TGV2ZWwpIHsKKyAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5k
ZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNh
bXBsaW5nTGV2ZWwpIHsKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2FjaGVk
LCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24uCiAg
ICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7CiAg
ICAgICAgIG1fZnJhbWVzW2luZGV4XS5jbGVhcih0cnVlKTsKQEAgLTQwNiwxMCArNDA2LDEwIEBA
IFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBm
ZXRjaGVkIGEgZnJhbWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6
ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5k
ZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQpAQCAtNDI4LDkgKzQyOCw5IEBAIGZsb2F0IEJpdG1hcEltYWdlOjpm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2R1cmF0aW9uOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleChj
dXJyZW50RnJhbWUoKSk7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KGN1cnJlbnRGcmFt
ZSgpKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNzQ5M2M2YTRiZmI4NjNkOTc2MzdjNDljNDY0Y2MzN2FlNzhlMGEwNC4uNTIxZjFj
OTBkNWY4YjgyMjVhMzQ1ZTljYjJjODE5NTE5MWM4MjNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC02NSwxNiArNjUsMTQgQEAgY2xh
c3MgVGltZXI7CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KIAogc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJh
bWVEYXRhKTsKIHB1YmxpYzoKICAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fZnJhbWUoMCkK
LSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQorICAgICAg
ICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgICwgbV9z
dWJzYW1wbGluZ0xldmVsKDApCiAgICAgICAgICwgbV9kdXJhdGlvbigwKQogICAgICAgICAsIG1f
aGF2ZU1ldGFkYXRhKGZhbHNlKQogICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAg
ICAgLCBtX2hhc0FscGhhKHRydWUpIAorICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKICAgICAg
ICAgLCBtX2ZyYW1lQnl0ZXMoMCkKICAgICB7CiAgICAgfQpAQCAtODgsNyArODYsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0
byBjbGVhci4KICAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBtX2ZyYW1lOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CiAgICAgSW1h
Z2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJz
YW1wbGluZ0xldmVsOwogICAgIGZsb2F0IG1fZHVyYXRpb247CkBAIC0xMDgsMTEgKzEwNiwxMSBA
QCBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNs
YXNzIEdyYWRpZW50SW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoUGFzc05hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCisgICAgc3RhdGlj
IFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKG5hdGl2ZUltYWdlLCBvYnNlcnZlcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwg
b2JzZXJ2ZXIpKTsKICAgICB9Ci0gICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKKyAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBj
cmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2Uob2JzZXJ2ZXIpKTsKICAgICB9CkBAIC0x
NzIsNyArMTcwLDcgQEAgcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2
YXMqKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gZnJhbWVPcmllbnRh
dGlvbkF0SW5kZXgoY3VycmVudEZyYW1lKCkpOyB9CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtu
b3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlOwpAQCAtMTk5LDggKzE5Nyw4IEBAIHByb3RlY3RlZDoK
ICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBldGl0aW9uIGNvdW50IGlzIGtub3duIHRvIGJl
IGNvcnJlY3QuCiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFBhc3NO
YXRpdmVJbWFnZVB0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1h
cEltYWdlKE5hdGl2ZUltYWdlUHRyJiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAg
V0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKIAog
I2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUm
IHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSBvdmVycmlkZTsKQEAgLTIxNCwxMCArMjEyLDEw
IEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBmcmFtZUNvdW50KCk7CiAKLSAgICBQYXNzTmF0
aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVI
aW50ID0gMSk7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRl
eChzaXplX3QpOworICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwg
ZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7CisgICAgTmF0aXZlSW1hZ2VQdHIgY29w
eVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAotICAgIGJvb2wgaGF2ZUZyYW1l
QXRJbmRleChzaXplX3QpOworICAgIGJvb2wgaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7
CiAKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBmbG9hdCBm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiYWJjNGM4NWNjMmRmNzQ5NThm
YTFjOTEwZTU2YWFjYjg3MTkwY2YyLi5jNTI0YmExOWQ1ZGRhNDA1YzYwYzE0NzgyMTYyNzljMGM4
NTk2NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMzAyLDcgKzMwMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVO
b3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0g
RGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApp
bmRleCBlMzZiYTNhYTU2ZDU4YzIwNmE5ODNmZjViYTliZmE3YjEzNjUxMTgyLi5kYmJiY2Y1OGMz
N2I5YTZiMTY0ZDZmMTM1MWNkNmUxNWViNDFkODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTEyNDUsNyArMTI0
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgSW1hZ2VTb3VyY2UqIG1fZGVjb2RlcjsKICAgICAgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0g
ICAgICAgIENHSW1hZ2VSZWYgbV9jZ0ltYWdlOworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9jZ0ltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNvZGVkSW1h
Z2U7CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggZDk1ZTdkZWI4MTBmYzI0ZjdmNjFi
MWIyM2E0YjlhZWYzZjNjMTdiNy4uZjZiYmI4MjA2Y2VhYjdjZDM2Mzk2MjA4MDUwYjQwMzE2MWRh
YTZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtMjIsOCAr
MjIsOCBAQAogI2RlZmluZSBJY29uX2gKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NSwxOSArNDUsMTkgQEAgY2xhc3MgRmxvYXRSZWN0Owog
ICAgIAogY2xhc3MgSWNvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEljb24+IHsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+SWNvbigpOwogCiAgICAgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogI2lmIFBMQVRG
T1JNKFdJTikKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24p
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmUHRy
PEljb24+IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaElj
b24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IE1ha2Ug
dGhpcyB3b3JrIGZvciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUykt
Z3VhcmQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8SWNvbj4gY3JlYXRl
SWNvbkZvckltYWdlKE5hdGl2ZUltYWdlUHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCi0gICAgSWNvbihDR0ltYWdlUmVmKTsKKyAgICBJ
Y29uKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYpOwogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBtX2NnSW1hZ2U7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgSWNvbihOU0ltYWdlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA0ZWQ2ZTM1ZDk5
YWZhYWI1YjhiZGVjNmZkN2ExMzIwZTIwZDA0NmY1Li5jMzE0MmFkZWM3YTI1Yzg0NjBlMjlhZjM1
MDJiOTQxNDdiNzA2YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgKQEAgLTEzNSwyMyArMTM1LDIzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAotICAgIHZp
cnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1hZ2VPcmllbnRhdGlv
bigpOyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCiAj
aWYgVVNFKEFQUEtJVCkKLSAgICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5TSW1hZ2UoKSB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCBOU0ltYWdlKiBnZXROU0ltYWdlKCkgeyByZXR1cm4gbnVsbHB0
cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIENGRGF0YVJl
ZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBDRkRh
dGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlm
CiAKICNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSB7
IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9m
U2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgUmV0YWluUHRy
PENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSB7
IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0
Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShXSU4pCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKLSAgICB2aXJ0dWFsIEdka1BpeGJ1ZiogZ2V0R2RrUGl4YnVmKCkgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKSB7IHJldHVybiBudWxs
cHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEVGTCkKLSAgICB2aXJ0dWFsIEV2YXNfT2Jq
ZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBFdmFz
X09iamVjdCogZ2V0RXZhc09iamVjdChFdmFzKikgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlm
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKaW5kZXggNzRlZjA1M2EzMzNmZjVmYzU3OGU4MTgwMGNjNmZjOTc1NWVmYmFiOC4uYWUzMWM5
ODM1MjFkNTAwODIyNWMxZmMzNDI5YzJjNDBhMDM3ZTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMTQ4LDE5ICsxNDgsMTkg
QEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9k
ZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwogfQogCi1QYXNzTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwpCitOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQogewogICAgIGlmICghbV9k
ZWNvZGVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRl
eCk7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpG
cmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBv
cnRzLiAgSWYgd2UgaGF2ZSBhbgogICAgIC8vIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBi
YWlsLgogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBh
cyBhIG5hdGl2ZSBpbWFnZS4gIEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQogICAgIC8vIGlzIGFs
cmVhZHkgaW4gYSBuYXRpdmUgY29udGFpbmVyLCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRz
IHJlZmNvdW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmgKaW5kZXggYWNkZDFjZTRjZTMwMGRlODFjOWUwNjJlZWU3NjA3YmY0NzJhNzBhZi4uYzEx
ZjdiZTQ4MjllNGU2YmM0MDE3ODk2M2MxZDUxYTE4NjYwYTBhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xMTAsNyArMTEwLDcgQEAg
cHVibGljOgogICAgIC8vIGRlY29kZWQgZnJhbWVzLgogICAgIC8vCiAgICAgLy8gQ2FsbGVycyBz
aG91bGQgbm90IGNhbGwgY2xlYXIoZmFsc2UsIG4pIGFuZCBzdWJzZXF1ZW50bHkgY2FsbAotICAg
IC8vIGNyZWF0ZUZyYW1lQXRJbmRleChtKSB3aXRoIG0gPCBuLCB1bmxlc3MgdGhleSBmaXJzdCBj
YWxsIGNsZWFyKHRydWUpLgorICAgIC8vIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG0pIHdpdGgg
bSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCiAgICAgLy8gVGhpcyBl
bnN1cmVzIHRoYXQgc3RhdGVmdWwgSW1hZ2VTb3VyY2VzL2RlY29kZXJzIHdpbGwgd29yayBwcm9w
ZXJseS4KICAgICAvLwogICAgIC8vIFRoZSB8ZGF0YXwgYW5kIHxhbGxEYXRhUmVjZWl2ZWR8IHBh
cmFtZXRlcnMgc2hvdWxkIGJlIHN1cHBsaWVkIGJ5IGNhbGxlcnMKQEAgLTE0Niw3ICsxNDYsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNh
bGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBv
biBjbGVhcigpIGFib3ZlLgotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CiAKICAg
ICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNB
bHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5
IHVzZWQgYW55IGFscGhhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCmluZGV4IDk5YjlkNWNhZGU3M2UwYzFmYWQwOWE3N2NmNWY2ZGIyOThj
MzdhYTUuLjkwNjk1YjQ0NTYzYTA4YjRkMGNjNmQzNmM0ZmZkODJkNTFjYTFmODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTgz
Nyw3ICs4MzcsNyBAQCBib29sIE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIHRh
cmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxw
aGEsIGZsaXBZKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAppbmRleCA1ZWE1NTg3MTEwNTkzN2VlZTQwNjNlNzI1OTJhMWFlNTU3
MTU0NWNiLi5jMmUwY2Y3YjgxMzA4MWQxNTMzN2QwYTkyZTZjYTMxN2QwYWUwODE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQyMyw3
ICs0MjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3Zj
L2Nocm9tZS90cnVuay9zcmMvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2UvZ2xlczJfY21kX2Nv
cHlfdGV4dHVyZV9jaHJvbWl1bS5jYyB2aWEgc2hhZGVycy4KICAgICBib29sIGNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbEZvcm1hdCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgZmxpcFkpOwogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7
CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBlNTc5YWU5
Mzg1NmU3ZGRjODU5Njg2NDczNjE4ZGEyYTE0ZDZjNzkwLi5kOTE5ZjU0MzM3YTQ1N2MxMGVjNjhi
YTVhMjBlYjdkZTNiOGZlYzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVjdCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZp
cnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdD
M0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKaW5kZXggZGY5NDFhNTY2YTllNDY5
Mjc3MjdiYTFlYzY4NDhmMjE2ODAzYTQ1Yi4uMDM0NjY2NWIzNmRiZTU2NjFhMDljZTcxYzRlY2I0
YTBjMWU4ZTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZVB0ci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVmaW5lIE5hdGl2ZUltYWdlUHRy
X2gKIAogI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiB0eXBlZGVmIHN0
cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogI2VsaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIlJl
ZlB0ckNhaXJvLmgiCkBAIC0zOCwyMSArMzksMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSog
Q0dJbWFnZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGSVhNRTogTmF0aXZlSW1h
Z2VQdHIgYW5kIFBhc3NOYXRpdmVJbWFnZVB0ciBzaG91bGQgYmUgc21hcnQKLS8vIHBvaW50ZXJz
IChzZWUgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpLgogI2lmIFVTRShD
RykKLXR5cGVkZWYgQ0dJbWFnZVJlZiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRlZiBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKLXR5cGVkZWYgUGFzc1JlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IFBhc3NOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShXSU5HREkp
CiB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRtYXA+IE5hdGl2ZUltYWdlUHRyOwogI2VuZGlmCiAK
LSNpZiAhVVNFKENBSVJPKQotdHlwZWRlZiBOYXRpdmVJbWFnZVB0ciBQYXNzTmF0aXZlSW1hZ2VQ
dHI7Ci0jZW5kaWYKLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCBmN2Zi
MWFjNDY4YjA2ODExMGViYTIzMmYyYmM2ZmYwNjI2ZWZiYTIwLi5kNmRlNzYyYzFmZTJiZjg0NmFh
YWUyNDUzYzZjNTViMGJhZGNhOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0yNDcsNyAr
MjQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIGJvb2wg
dmlkZW9PdXRwdXRIYXNBdmFpbGFibGVGcmFtZSgpOwogICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9P
dXRwdXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgUGFzc05hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKKyAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKICAgICB2b2lkIGNy
ZWF0ZU9wZW5HTFZpZGVvT3V0cHV0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxNTQz
N2RkZDhlZDZmM2QwYTJiZGJlNTVlOGYzMWRmYTdjNDZjZGRmLi5jNzc3NmUwNGZjMGY3YjE0NjMw
OTRkMTQ5MDljZjdjNTA5M2Y5ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTIzNDYs
MTAgKzIzNDYsMTAgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGgKICAgICByZXR1cm4gbV92aWRl
b1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh2aWRlb1Rl
eHR1cmUuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwg
bGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZs
aXBZKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7Ci0gICAgcmV0dXJuIG1fbGFzdEltYWdlLmdl
dCgpOworICAgIHJldHVybiBtX2xhc3RJbWFnZTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjp3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCmluZGV4IDIzMGE4ZjZiNzIxYjUxNWEzMWU1MjAyNmVmYjBkZWE0ZDRj
MDAwMWEuLjU2Zjc5MWQ5ODNlN2FjZjJiZGU3ZDA1OGI0Mjc2NDAwOWExMGZlYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcApAQCAtMTAwOCwxNiArMTAwOCwxNiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdl
KSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKTsKKyAgICAgICAgYXV0byBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICBpZiAoIW5ld0ltYWdlKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1FOiBwcm9iYWJseSBkb24ndCBuZWVkIG1fdW5jb3Jy
ZWN0ZWRDb250ZW50c0ltYWdlIGF0IGFsbCBub3cuCi0gICAgICAgIGlmIChtX3VuY29ycmVjdGVk
Q29udGVudHNJbWFnZSAmJiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZS5nZXQoKSA9PSBuZXdJ
bWFnZSkKKyAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID09IG5ld0ltYWdl
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgbV91bmNvcnJlY3RlZENv
bnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKLSAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9
IG5ld0ltYWdlOworICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IFdURk1vdmUo
bmV3SW1hZ2UpOworICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbV91bmNvcnJlY3Rl
ZENvbnRlbnRzSW1hZ2U7CiAKICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRl
bnRzTGF5ZXJGb3JJbWFnZTsKICAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwCmluZGV4IGNkNTdlZTQ4NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAy
ODIuLmJkYTBkYzI4MWM5MzdkY2RmMmRiMTVhYzcxMjhhMjM5NGQ3NTc0YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRp
dmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1h
Z2UoUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fc2l6ZShjYWlyb1N1cmZh
Y2VTaXplKG5hdGl2ZUltYWdlLmdldCgpKSkKICAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2
ZWwoMCkKQEAgLTU4LDcgKzU4LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlcioKIHsKICAgICBt
X2ZyYW1lcy5ncm93KDEpOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSBjYWlyb19zdXJm
YWNlX2dldF9jb250ZW50KG5hdGl2ZUltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9S
OwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBuYXRpdmVJbWFnZTsKKyAgICBtX2ZyYW1lc1sw
XS5tX2ltYWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXZl
TWV0YWRhdGEgPSB0cnVlOwogCiAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CkBAIC03Miw3ICs3
Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAKICAgICBzdGFydEFuaW1hdGlvbigpOwog
Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChtX2N1
cnJlbnRGcmFtZSk7CisgICAgYXV0byBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJy
ZW50RnJhbWUpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29u
J3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIApAQCAtMTM1LDcgKzEzNSw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZyYW1l
Q291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIGF1dG8gc3Vy
ZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1cmZh
Y2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAg
ICAgICByZXR1cm47CiAKQEAgLTE1OCw4ICsxNTgsOCBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIo
Ym9vbCBjbGVhck1ldGFkYXRhKQogICAgIGlmIChjbGVhck1ldGFkYXRhKQogICAgICAgICBtX2hh
dmVNZXRhZGF0YSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgbV9mcmFt
ZSA9IG51bGxwdHI7CisgICAgaWYgKG1faW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxw
dHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0
aWxpdGllcy5jcHAKaW5kZXggYmU5NzAxMGI4NmYzMDhhMWViZWFjNzEzMGUxZTNhMGI1ZGRiYjNm
Ni4uZGQ4YjA5NzhhZGJkYWI0NmM1ODcxNmY2MjMxNjkwYmVmM2UzODkwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0
aWVzLmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4
dChjYWlyb190KiBjciwgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSwgY29uc3QgSW50U2l6CiAgICAg
Y2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLVBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5
Q2Fpcm9JbWFnZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvcmlnaW5hbFN1cmZhY2UpCitSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90
KiBvcmlnaW5hbFN1cmZhY2UpCiB7CiAgICAgLy8gQ2Fpcm8gZG9lc24ndCBwcm92aWRlIGEgd2F5
IHRvIGNvcHkgYSBjYWlyb19zdXJmYWNlX3QuCiAgICAgLy8gU2VlIGh0dHA6Ly9saXN0cy5jYWly
b2dyYXBoaWNzLm9yZy9hcmNoaXZlcy9jYWlyby8yMDA3LUp1bmUvMDEwODc3Lmh0bWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggY2M3MDQ2MTQ3YWU4MWYxZmFkYWE2ZDg0
MTYyNDk4MGM2ZmRmY2JmMS4uOGM0MTg2ZDcxZTUzYTE5MDdlOTJkNzNhMmIwMTY0N2ZmZDY2YjFj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTIxNSw3ICsyMTUsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBkZWNvZGVyLnNldERhdGEobV9pbWFn
ZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAh
ZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4
KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1h
Z2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxw
aGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2gg
cGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggZjA3OTIwZjBkMjMyNDYy
YzhmYjQxYTAzMjJkODIyYWM5ZDVlZDMwNy4uM2NmNDU0M2YyMDVlZDk5NDk4ODYxMDkyMmNjZGQ3
NzI1ZWUwYzE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMjU5LDE4ICsy
NTksMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzUmVjb3Jk
aW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9y
aWVudGF0aW9uKTsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9y
aWVudGF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRy
IGltYWdlID0gaW1hZ2VQdHI7Ci0KICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2F2ZSgpOwogCiAg
ICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
CmluZGV4IGQwZGU3YTE3YzY4NjUxNDY1YWU3ZDBkYTcyMmVkNWVkNDBiZDAyMGUuLjA0NTNhNjI1
N2YwZGVjNzk0ZTM3OGZlYTU2MWMyYjcxNmUzMGEyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
CkBAIC0yMzUsNyArMjM1LDcgQEAgUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaGF2aW8KICAgICAgICAgcmV0
dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoY29weUNhaXJvSW1hZ2VTdXJmYWNlKG1fZGF0YS5tX3N1
cmZhY2UuZ2V0KCkpKTsKIAogICAgIC8vIEJpdG1hcEltYWdlIHdpbGwgcmVsZWFzZSB0aGUgcGFz
c2VkIGluIHN1cmZhY2Ugb24gZGVzdHJ1Y3Rpb24KLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNy
ZWF0ZShtX2RhdGEubV9zdXJmYWNlKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihtX2RhdGEubV9zdXJmYWNlKSk7CiB9CiAKIEJhY2tpbmdT
dG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKQEAgLTI4Niw3ICsyODYs
NyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qg
VmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eV9y
ZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgMCwgMCwgbV9zaXplLndpZHRoKCksIG1f
c2l6ZS5oZWlnaHQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3Vy
ZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgSW50UmVj
dCYgcmVjdCkKK1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlTdXJmYWNlVG9JbWFnZUFuZEFk
anVzdFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBJbnRSZWN0JiByZWN0KQogewogICAg
IGNhaXJvX3N1cmZhY2VfdHlwZV90IHN1cmZhY2VUeXBlID0gY2Fpcm9fc3VyZmFjZV9nZXRfdHlw
ZShzdXJmYWNlKTsKIApAQCAtMzAxLDcgKzMwMSw3IEBAIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZhY2VfdCogc3Vy
CiB9CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVkPgotUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdl
QnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVm
ZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGVVbmluaXRpYWxp
emVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0KTsKIApAQCAtMzc3LDEyICszNzcs
MTIgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmUKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2Uo
KTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVu
bXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVt
KSBjb25zdAorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0
aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0
YSwgbV9zaXplKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZm
ZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRp
bmF0ZVN5c3RlbSkgY29uc3QKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6
OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0
ZVN5c3RlbSkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFByZW11bHRpcGxpZWQ+
KHJlY3QsIG1fZGF0YSwgbV9zaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKaW5kZXggMDFiN2Q2OTJjZGJkN2Fi
NGQyMmJiYzEzOTljMTAzMjhmNTdlNWU0Ny4uMzJiZDBiNWNiNTUzZmNkZWRkYmFhZDJmOTYzNjEz
MDFmNWQ0NmVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKQEAgLTU4LDE4ICs1OCwxNyBAQCBib29sIEZyYW1lRGF0
YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIG1fb3JpZW50YXRpb24gPSBEZWZhdWx0
SW1hZ2VPcmllbnRhdGlvbjsKICAgICBtX3N1YnNhbXBsaW5nTGV2ZWwgPSAwOwogCi0gICAgaWYg
KG1fZnJhbWUpIHsKKyAgICBpZiAobV9pbWFnZSkgewogI2lmIENBQ0hFX1NVQklNQUdFUwotICAg
ICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ZyYW1lKTsKKyAgICAgICAgc3ViaW1h
Z2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7CiAjZW5kaWYKLSAgICAgICAgQ0dJ
bWFnZVJlbGVhc2UobV9mcmFtZSk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOworICAgICAgICBtX2lt
YWdlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUmV0YWlu
UHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDog
SW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKDApCiAgICAg
LCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkKQEAgLTg5LDggKzg4LDggQEAgQml0
bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1l
Q291bnQodHJ1ZSkKIHsKLSAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1h
Z2UpOwotICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKTsKKyAg
ICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKKyAgICBDR0Zs
b2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogICAgIG1fZGVjb2Rl
ZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CiAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKIApAQCAtOTksNyArOTgsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJ
bWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemU7CiAKICAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAg
IG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBDR0ltYWdlUmV0YWluKGNnSW1hZ2UpOworICAgIG1fZnJh
bWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKGltYWdlKTsKICAgICBtX2ZyYW1lc1swXS5tX2hhc0Fs
cGhhID0gdHJ1ZTsKICAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7CiAKQEAg
LTEzNiw3ICsxMzUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQog
ICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWhh
dmVGcmFtZUF0SW5kZXgoMCkpIHsKKyAgICBpZiAoIWhhdmVGcmFtZUltYWdlQXRJbmRleCgwKSkg
ewogICAgICAgICBJbnRTaXplIHNpemUgPSBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4KDAsIDAp
OwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ3LDcgKzE0Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmNoZWNrRm9yU29saWRDb2xvcigpCiAKICAgICBDR0ltYWdlUmVmIGltYWdlID0gbnVsbHB0cjsK
ICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpKQotICAgICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1f
ZnJhbWU7CisgICAgICAgIGltYWdlID0gbV9mcmFtZXNbMF0ubV9pbWFnZS5nZXQoKTsKIAogICAg
IGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE3MywxNCArMTcyLDE0IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAKIENHSW1hZ2VSZWYgQml0bWFwSW1h
Z2U6OmdldENHSW1hZ2VSZWYoKQogewotICAgIHJldHVybiBmcmFtZUF0SW5kZXgoMCk7CisgICAg
cmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApLmdldCgpOwogfQogCiBDR0ltYWdlUmVmIEJpdG1h
cEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsK
ICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lQXRJ
bmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgo
aSkuZ2V0KCk7CiAgICAgICAgIGlmIChjZ0ltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRo
KGNnSW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpKSA9PSBzaXplKQogICAgICAgICAg
ICAgcmV0dXJuIGNnSW1hZ2U7CiAgICAgfQpAQCAtMTkzLDExICsxOTIsMTEgQEAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogewogICAgIHNpemVf
dCBjb3VudCA9IGZyYW1lQ291bnQoKTsKICAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgQ0ZNdXRhYmxlQXJyYXlSZWYg
YXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShOVUxMLCBjb3VudCwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAg
ICAgIGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1lQXRJbmRleChpKSkKKyAgICAgICAg
aWYgKENHSW1hZ2VSZWYgY3VyckZyYW1lID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCkpCiAg
ICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXksIGN1cnJGcmFtZSk7CiAgICAgfQog
ICAgIHJldHVybiBhZG9wdENGKGFycmF5KTsKQEAgLTIxNCwxMiArMjEzLDEyIEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlOwogICAgIC8v
IE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0
cy4KICAgICBpZiAod2tDR0NvbnRleHRJc1BERkNvbnRleHQoY3R4dC5wbGF0Zm9ybUNvbnRleHQo
KSkpCi0gICAgICAgIGltYWdlID0gYWRvcHRDRihjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIENHUmVjdCB0cmFuc2Zv
cm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0
LCBDR0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwogICAgICAgICBmbG9h
dCBzdWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9y
bWVkRGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9y
bWVkRGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwogCi0g
ICAgICAgIGltYWdlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1Nj
YWxlKTsKKyAgICAgICAgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwg
c3Vic2FtcGxpbmdTY2FsZSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZSkgLy8gSWYgaXQncyB0
b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCkBAIC0yNDUsMjQgKzI0NCwyNCBA
QCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICBvcmll
bnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAotICAg
IGN0eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
Y2FsZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAg
Y3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxlZFNy
Y1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKIAogICAgIGlmIChp
bWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsK
IH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQorUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpj
b3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGlu
ZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAo
aW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAg
ICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCk7CiAKICAgICBpZiAoIW1fZnJhbWVzW2lu
ZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBDR0ltYWdlUmV0YWluKG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKTsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5t
X2ltYWdlOwogCi0gICAgcmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7
CisgICAgcmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA2YzAzYTJjZWY4NDYwNjU2MWVhMDdlYjky
OGYxY2YyOTVmOWY1ZTM2Li45OWYwOWRiNjdiYTU0MjgyZGM0ZWQ3MDVhZTQxNjM4MDMzNzE5M2Yx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtMzMzLDE1ICszMzMsMTUgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0Yo
ZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCkpOwotICAgICAgICBtX2NnSW1hZ2UgPSBtX2Rl
Y29kZWRJbWFnZS5nZXQoKTsKKyAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBkZWNvZGVyLmNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KDApOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFn
ZTsKICAgICB9IGVsc2UKICAgICAgICAgbV9jZ0ltYWdlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW1fY2dJbWFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1fY2dJbWFnZSk7Ci0g
ICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9jZ0ltYWdlKTsKKyAgICBtX2lt
YWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBtX2ltYWdl
SGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIGlmICghbV9p
bWFnZVdpZHRoIHx8ICFtX2ltYWdlSGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTM0OSw3ICszNDksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgIC8vIHNvLCByZS1y
ZW5kZXIgaXQgaW50byBhbiBSR0IgY29sb3Igc3BhY2UuIFRoZSBpbWFnZSByZS1wYWNraW5nCiAg
ICAgLy8gY29kZSByZXF1aXJlcyBjb2xvciBkYXRhLCBub3QgY29sb3IgdGFibGUgaW5kaWNlcywg
Zm9yIHRoZQogICAgIC8vIGltYWdlIGRhdGEuCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3Bh
Y2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1hZ2UpOworICAgIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9jZ0ltYWdlLmdldCgpKTsKICAg
ICBDR0NvbG9yU3BhY2VNb2RlbCBtb2RlbCA9IENHQ29sb3JTcGFjZUdldE1vZGVsKGNvbG9yU3Bh
Y2UpOwogICAgIGlmIChtb2RlbCA9PSBrQ0dDb2xvclNwYWNlTW9kZWxJbmRleGVkKSB7CiAgICAg
ICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQ7CkBAIC0zNjQsMjIgKzM2
NCwyMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogCiAgICAgICAgIENHQ29udGV4dFNldEJs
ZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAg
Q0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoYml0bWFwQ29udGV4dC5nZXQoKSwga0NH
SW50ZXJwb2xhdGlvbk5vbmUpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQp
LCBtX2NnSW1hZ2UpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5n
ZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2Nn
SW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNjYXJkIHRoZSBvcmlnaW5hbCBDRyBp
bWFnZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9tIHRoZSBiaXRtYXAgY29udGV4dC4K
ICAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUlt
YWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVk
SW1hZ2UuZ2V0KCk7CiAgICAgfQogCi0gICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0lt
YWdlR2V0Qml0c1BlckNvbXBvbmVudChtX2NnSW1hZ2UpOwotICAgIHNpemVfdCBiaXRzUGVyUGl4
ZWwgPSBDR0ltYWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZSk7CisgICAgc2l6ZV90IGJpdHNQ
ZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChtX2NnSW1hZ2UuZ2V0KCkp
OworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJ
bWFnZS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgIT0gOCAmJiBiaXRzUGVyQ29t
cG9uZW50ICE9IDE2KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGJpdHNQZXJQaXhl
bCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzaXplX3Qg
Y29tcG9uZW50c1BlclBpeGVsID0gYml0c1BlclBpeGVsIC8gYml0c1BlckNvbXBvbmVudDsKIAot
ICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdl
KTsKKyAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKG1fY2dJ
bWFnZS5nZXQoKSk7CiAgICAgYm9vbCBiaWdFbmRpYW5Tb3VyY2UgPSBmYWxzZTsKICAgICAvLyBU
aGVzZSBjb3VsZCB0ZWNobmljYWxseSBiZSBjb21iaW5lZCBpbnRvIG9uZSBsYXJnZSBzd2l0Y2gK
ICAgICAvLyBzdGF0ZW1lbnQsIGJ1dCB3ZSBwcmVmZXIgbm90IHRvIHNvIHRoYXQgd2UgZmFpbCBm
YXN0IGlmIHdlCkBAIC00MjEsNyArNDIxLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1h
Z2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKIAog
ICAgIG1fYWxwaGFPcCA9IEFscGhhRG9Ob3RoaW5nOwogICAgIEFscGhhRm9ybWF0IGFscGhhRm9y
bWF0ID0gQWxwaGFGb3JtYXROb25lOwotICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyht
X2NnSW1hZ2UpKSB7CisgICAgc3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZS5n
ZXQoKSkpIHsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q6CiAgICAg
ICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAgIG1fYWxwaGFPcCA9IEFscGhh
RG9Vbm11bHRpcGx5OwpAQCAtNDYxLDE0ICs0NjEsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJv
b2wKICAgICBpZiAobV9pbWFnZVNvdXJjZUZvcm1hdCA9PSBEYXRhRm9ybWF0TnVtRm9ybWF0cykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihtX2NnSW1hZ2UpKSk7Cisg
ICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdl
dERhdGFQcm92aWRlcihtX2NnSW1hZ2UuZ2V0KCkpKSk7CiAgICAgaWYgKCFtX3BpeGVsRGF0YSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9pbWFnZVBpeGVsRGF0YSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KENGRGF0YUdldEJ5dGVQdHIobV9waXhlbERhdGEuZ2V0KCkp
KTsKIAogICAgIHVuc2lnbmVkIGludCBzcmNVbnBhY2tBbGlnbm1lbnQgPSAwOwotICAgIHNpemVf
dCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UpOworICAgIHNp
emVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhtX2NnSW1hZ2UuZ2V0KCkp
OwogICAgIHVuc2lnbmVkIHBhZGRpbmcgPSBieXRlc1BlclJvdyAtIGJpdHNQZXJQaXhlbCAvIDgg
KiBtX2ltYWdlV2lkdGg7CiAgICAgaWYgKHBhZGRpbmcpIHsKICAgICAgICAgc3JjVW5wYWNrQWxp
Z25tZW50ID0gcGFkZGluZyArIDE7CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
aW50IGltYWcKICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRl
eHQudHJhbnNsYXRlKDAsIC1pbWFnZUhlaWdodCk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShjZ0ltYWdlLmdldCgpLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOworICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBhNDQ5NjU0MDQ2YWU4ZjEwYWJhZDE2
NDE1ZTY0NjBhZGJiYmI4ZTg4Li5mMzQyZGExNjU4MTFiMjE3MTYzY2ZmMTlkZTRmNWYxOTlkZDg3
NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNjIsMTkgKzE2MiwxOSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9E
ZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd05hdGl2ZUltYWdlKGltYWdl
UHRyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRh
dGlvbik7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRh
dGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2UoaW1hZ2VQdHIpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJbWFnZShp
bWFnZSk7CiAKLSAgICBmbG9hdCBjdXJySGVpZ2h0ID0gb3JpZW50YXRpb24udXNlc1dpZHRoQXNI
ZWlnaHQoKSA/IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgOiBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBjdXJySGVpZ2h0ID0gb3JpZW50YXRpb24udXNlc1dp
ZHRoQXNIZWlnaHQoKSA/IENHSW1hZ2VHZXRXaWR0aChzdWJJbWFnZS5nZXQoKSkgOiBDR0ltYWdl
R2V0SGVpZ2h0KHN1YkltYWdlLmdldCgpKTsKICAgICBpZiAoY3VyckhlaWdodCA8PSBzcmNSZWN0
LnkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTYsMTMgKzIxNiwxMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwg
Y29uc3QgRmxvYXRTaQogICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRIZWlnaHQoc3Vi
aW1hZ2VSZWN0LmhlaWdodCgpIC8geVNjYWxlKTsKIAogI2lmIENBQ0hFX1NVQklNQUdFUwotICAg
ICAgICAgICAgaW1hZ2UgPSBzdWJpbWFnZUNhY2hlKCkuZ2V0U3ViaW1hZ2UoaW1hZ2UuZ2V0KCks
IHN1YmltYWdlUmVjdCk7CisgICAgICAgICAgICBzdWJJbWFnZSA9IHN1YmltYWdlQ2FjaGUoKS5n
ZXRTdWJpbWFnZShzdWJJbWFnZS5nZXQoKSwgc3ViaW1hZ2VSZWN0KTsKICNlbHNlCi0gICAgICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChpbWFnZS5n
ZXQoKSwgc3ViaW1hZ2VSZWN0KSk7CisgICAgICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChzdWJJbWFnZS5nZXQoKSwgc3ViaW1hZ2VSZWN0KSk7
CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChjdXJySGVpZ2h0IDwgc3JjUmVjdC5tYXhZKCkpIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgPT0g
Y3VyckhlaWdodCAtIENHUmVjdEludGVncmFsKHNyY1JlY3QpLm9yaWdpbi55KTsKLSAgICAgICAg
ICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
LmdldCgpKSAvIHlTY2FsZSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKENHSW1hZ2VHZXRIZWln
aHQoc3ViSW1hZ2UuZ2V0KCkpID09IGN1cnJIZWlnaHQgLSBDR1JlY3RJbnRlZ3JhbChzcmNSZWN0
KS5vcmlnaW4ueSk7CisgICAgICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRIZWlnaHQo
Q0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSkgLyB5U2NhbGUpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2Nh
dGlvbihGbG9hdFBvaW50KGRlc3RSZWN0LngoKSAtIHNyY1JlY3QueCgpIC8geFNjYWxlLCBkZXN0
UmVjdC55KCkgLSBzcmNSZWN0LnkoKSAvIHlTY2FsZSkpOwpAQCAtMjYyLDcgKzI2Miw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGlt
YWdlUHRyLCBjb25zdCBGbG9hdFNpCiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwg
LTEpOwogCiAgICAgLy8gRHJhdyB0aGUgaW1hZ2UuCi0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNv
bnRleHQsIGFkanVzdGVkRGVzdFJlY3QsIGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRleHREcmF3
SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdCwgc3ViSW1hZ2UuZ2V0KCkpOwogfQogCiBz
dGF0aWMgdm9pZCBkcmF3UGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBj
b250ZXh0KQpAQCAtMzExLDggKzMxMSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAg
ZmxvYXQgYWRqdXN0ZWRYID0gcGhhc2UueCgpIC0gZGVzdFJlY3QueCgpICsgdGlsZVJlY3QueCgp
ICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7IC8vIFdlIHRy
YW5zbGF0ZWQgdGhlIGNvbnRleHQgc28gdGhhdCBkZXN0UmVjdC54KCkgaXMgdGhlIG9yaWdpbiwg
c28gc3VidHJhY3QgaXQgb3V0LgogICAgIGZsb2F0IGFkanVzdGVkWSA9IGRlc3RSZWN0LmhlaWdo
dCgpIC0gKHBoYXNlLnkoKSAtIGRlc3RSZWN0LnkoKSArIHRpbGVSZWN0LnkoKSAqIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkpICsgc2NhbGVkVGlsZUhlaWdodCk7
CiAKLSAgICBDR0ltYWdlUmVmIHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Ci0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlKTsKKyAg
ICBhdXRvIHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLmdldCgpKTsKIAogICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJbWFnZTsKICNpZiBQTEFURk9STShJT1MpCkBAIC0zMjYs
MTMgKzMyNiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgICAgICAvLyBDb3B5aW5n
IGEgc3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1kZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBk
ZWNvZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0IHNob3VsZCBuZXZlciBoYXBwZW4KICAg
ICAgICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBvbmx5IHVzZWQgZm9yIGJvcmRlci1pbWFn
ZSwgd2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGltYWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAg
ICAgICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdodCgpKTsKLSAgICAgICAgc3ViSW1hZ2UgPSBh
ZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLCB0aWxlUmVjdCkp
OworICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVj
dCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVl
ZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5
IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0
aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBz
Y2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9h
dChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0
aWxlSW1hZ2UpOworICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlLmdldCgp
KTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lkdGgoKSAmJiBoID09IGltYWdlLnNpemUo
KS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFzcGFjaW5nLmhlaWdodCgpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRoZSBpbWFnZXMgdG8gaW50ZWdyYWwg
c2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRlci1pbWFnZS1yZXBlYXQ6IHJvdW5k
KSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1dCB0aGUgbGFzdCwgYW5kIHN0ZXRj
aCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDg0NjM5NmMxOTAyN2MyYzJi
ZTI1NWM3NjRhY2FlNzYyZmU3ZTk4N2EuLmZhY2UwYzExNTBkMGM5MTg2NzJjMGQ1MDI5ZmNkZDdm
YmRiZTQxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgc3RhdGljIFJlZlB0cjxJ
bWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4KICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGltYWdlLmdldCgpKTsKKyAgICByZXR1cm4gQml0
bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7CiB9CiAKIFJlZlB0cjxJbWFnZT4gSW1h
Z2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVC
ZWhhdmlvciBzY2FsZUJlaGF2aW9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAppbmRleCBkNGEwMTJiNmY1N2Jm
NTM5MzA2NDc3N2I2YzEwOTM2NmIyNGM0NDVjLi41MDE1ZGQxNWFiZmM4MjVkY2ViMDMyMGYxMjAy
OWNiYTUxMjE4Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHNpemVfdCBJbWFn
ZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IENHSW1h
Z2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIpIDogMDsKIH0KIAotQ0dJbWFnZVJlZiBJbWFnZVNv
dXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsKQorUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIWluaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMzY2LDE4ICszNjYsMTUgQEAgQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAg
ICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgeGJtVVRJID0gQ0ZTVFIoInB1YmxpYy54Yml0bWFw
LWltYWdlIik7CiAKICAgICBpZiAoIWltYWdlVVRJKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVh
a1JlZigpOworICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBpZiAoIUNGRXF1YWwoaW1hZ2VV
VEksIHhibVVUSSkpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7CisgICAgICAgIHJl
dHVybiBpbWFnZTsKICAgICAKICAgICAvLyBJZiBpdCBpcyBhbiB4Ym0gaW1hZ2UsIG1hc2sgb3V0
IGFsbCB0aGUgd2hpdGUgYXJlYXMgdG8gcmVuZGVyIHRoZW0gdHJhbnNwYXJlbnQuCiAgICAgY29u
c3QgQ0dGbG9hdCBtYXNraW5nQ29sb3JzWzZdID0gezI1NSwgMjU1LCAgMjU1LCAyNTUsIDI1NSwg
MjU1fTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbWFza2VkSW1hZ2UgPSBhZG9wdENGKENH
SW1hZ2VDcmVhdGVXaXRoTWFza2luZ0NvbG9ycyhpbWFnZS5nZXQoKSwgbWFza2luZ0NvbG9ycykp
OwotICAgIGlmICghbWFza2VkSW1hZ2UpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7
Ci0KLSAgICByZXR1cm4gbWFza2VkSW1hZ2UubGVha1JlZigpOworICAgIHJldHVybiBtYXNrZWRJ
bWFnZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1l
SXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCmluZGV4IDAyNGNiZmUwMGI1MjIzMzkzMzU5MjBmOWY4NTM0YzgzNmRhY2NmODgu
LjQ5MjdlYWJmOGVkMTJhNmMyMWVhYjMxYmZlNjJmNTJjNmIyNGViMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ5MSwxMSArNDkxLDExIEBAIHN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJ
bWFnZSYgaXRlbSkKIH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotRHJhd05hdGl2ZUlt
YWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05h
dGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogTmVlZCB0byBzdG9yZSBhbiBp
bWFnZSBmb3IgQ2Fpcm8uCi0gICAgLCBtX2ltYWdlUHRyKGltYWdlUHRyKQorICAgICwgbV9pbWFn
ZShpbWFnZSkKICNlbmRpZgogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9k
ZXN0aW5hdGlvbihkZXN0UmVjdCkKQEAgLTUwNyw3ICs1MDcsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6
OkRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0
U2l6ZSYgaQogICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKIHsKICNpZiAhVVNFKENH
KQotICAgIFVOVVNFRF9QQVJBTShpbWFnZVB0cik7CisgICAgVU5VU0VEX1BBUkFNKGltYWdlKTsK
ICAgICBVTlVTRURfUEFSQU0ob3ApOwogICAgIFVOVVNFRF9QQVJBTShibGVuZE1vZGUpOwogI2Vu
ZGlmCkBAIC01MTYsNyArNTE2LDcgQEAgRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2Uo
UGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGkKIHZvaWQgRHJh
d05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAj
aWYgVVNFKENHKQotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2VQdHIuZ2V0KCks
IG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBtX3NyY1JlY3QsIG1fb3AsIG1fYmxlbmRNb2Rl
LCBtX29yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBt
X2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9zcmNSZWN0LCBtX29wLCBtX2JsZW5kTW9kZSwg
bV9vcmllbnRhdGlvbik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggNWE4NDk2NGM1NzliMzJmZGMw
ZWM2ZWYxNDVmNjQyNjBmMTM1YWZmZi4uNDcwZjI4MjkxMDA4NTRjM2MwNWY2ZGVmZWQyMTViNWZj
NjQ3ZGE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC02MzksMjMgKzYz
OSwyMyBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogY2xhc3MgRHJhd05h
dGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCisgICAgc3RhdGljIFJlZjxEcmF3
TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlUHRyLCBpbWFnZVNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSk7CiAgICAgfQogCiAgICAgRmxv
YXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVj
dCBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAogcHJpdmF0
ZToKLSAgICBEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNp
emUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24p
OworICAgIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKICNpZiBVU0Uo
Q0cpCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1faW1hZ2VQdHI7CisgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IG1faW1hZ2U7CiAjZW5kaWYKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7
CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKaW5kZXggNWU1MmVjOTE5MjNkNDU5ZjA4MjIxOTFmNjY5ZDBjMDBlZWRm
MjU4YS4uMGJmMTRiZWY3OWJkM2FiMmZiNzNmNmM3NTA4MDcyNmRhNDQxZTMxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTE5LDkgKzExOSw5IEBAIHZv
aWQgUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QKIH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotdm9p
ZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIFJlY29yZGVyOjpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9
IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRl
KGltYWdlUHRyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBv
cmllbnRhdGlvbikpKTsKKyAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdp
bmdJdGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpKTsKICAg
ICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBhNWQyYzcxYTI1ZWJkYmZlNGYzYmE3ZmRhY2QxZjJk
ZTU4ODZkYzUwLi5lYjk5YTNkZGEwMGQzMTcwY2ZjOGYwODZhNDAyOWNiYmNlMWNkM2E0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKTsKICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVs
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlS
TykKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZs
b2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbik7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb24pOwogI2VuZGlmCiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzREVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCmluZGV4IGJhNDE1OTdhYTExMDFkYjYyOTAyM2Qy
NzNiMjAwZTc4MWQzM2FhYzkuLjU5Y2MyYzliZThiM2ZmZTExMTg2YTY4NWQyZThjZjU5NGMxZDM5
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzREVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwg
IWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdElu
ZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2lt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICAvLyAxLiBGb3IgdGV4
SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5
QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVh
Y2ggcGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvSWNvbkVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNv
bkVmbC5jcHAKaW5kZXggOWM5MmMwODUzYzI2MWM3NjBhN2MwODFmNmM4N2U5OTBiMWI4OGRhYi4u
MDdiZWJlNjk0OWMxYzg0YTFlNzg2NDIxYzBlOWQ3YWY3NzdlNzZlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcApAQCAtMzcsNyArMzcs
NyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSwxMCArNTEsMTAgQEAgSWNv
bjo6fkljb24oKQogewogfQogCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEljb246OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXJDYWlyby5jcHAKaW5kZXggZWUyNzI3N2ZmMGI3ZTkwMzNmNGI5MzM2MDI4YWNmNDIx
OGIyMGE1Zi4uYzU1Y2ZkZjk3YjdkNDNjNWQzNGYyZjljNTU2Mzc2ZjVhOTZhNmY4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0
cmVhbWVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcApAQCAtNjIsNyArNjIsNyBAQCBJbWFnZUdT
dHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIoR3N0U2FtcGxlKiBzYW1wbGUpCiAKICAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9j
cmVhdGVfZm9yX2RhdGEoYnVmZmVyRGF0YSwgY2Fpcm9Gb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHN0
cmlkZSkpOwogICAgIEFTU0VSVChjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlLmdldCgpKSA9
PSBDQUlST19TVEFUVVNfU1VDQ0VTUyk7Ci0gICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVh
dGUoc3VyZmFjZS5yZWxlYXNlKCkpOworICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRl
KFdURk1vdmUoc3VyZmFjZSkpOwogCiAgICAgaWYgKEdzdFZpZGVvQ3JvcE1ldGEqIGNyb3BNZXRh
ID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fY3JvcF9tZXRhKGJ1ZmZlcikpCiAgICAgICAgIHNldENy
b3BSZWN0KEZsb2F0UmVjdChjcm9wTWV0YS0+eCwgY3JvcE1ldGEtPnksIGNyb3BNZXRhLT53aWR0
aCwgY3JvcE1ldGEtPmhlaWdodCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ljb25HdGsuY3BwCmluZGV4IDU5NDVlMWY4YzRiNDc0NDhmMzQ4NWZjNjRiYjU3
NjU3YWY0YzM4ZmUuLjg4MGM0Yzk3OTRhNWVkNmQzYWMyZjhhNjc0N2NjMjEyNjkyZDIxOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTAsNyArOTAsNyBAQCBz
dGF0aWMgU3RyaW5nIGxvb2t1cEljb25OYW1lKFN0cmluZyBNSU1FVHlwZSkKIH0KIAogLy8gRklY
TUU6IE1vdmUgdGhlIGNvZGUgdG8gQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4KLVBhc3NS
ZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pb3MvSWNvbklPUy5tbQppbmRleCAyMTU5MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4NmQyMjQ5
YjgxZDlkNzZhLi4zNmIyNGY1Y2ZmMGE2YjYxZTU0NTc0NjczMmI2MjZjZDM5ODdjYjQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAt
MzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1JY29uOjpJY29uKENH
SW1hZ2VSZWYgaW1hZ2UpCitJY29uOjpJY29uKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
ICAgICA6IG1fY2dJbWFnZShpbWFnZSkKIHsKIH0KQEAgLTQyLDE3ICs0MiwxNyBAQCBJY29uOjp+
SWNvbigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQorUmVmUHRyPEljb24+IEljb246
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykK
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVh
dGVJY29uRm9ySW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2VSZWYpCitSZWZQdHI8SWNvbj4gSWNv
bjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2Up
CiB7Ci0gICAgaWYgKCFpbWFnZVJlZikKKyAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZVJlZikpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFnZSkpOwogfQogCiB2b2lkIEljb246OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KaW5kZXgg
NGNmYzUyZmRjMTM1N2RlZjE2OTNkYTE3OWFiODQyZTZjNDU4Zjk5NC4uZTQ2MDVkZTIwMDNiZGYw
NjYzNzM1MDM3MDBhYjAxMDJkNmMzNTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgIklu
dFJlY3QuaCIKICNpbXBvcnQgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9y
dCAiVVRJVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgorI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0Nyw3IEBAIEljb246On5JY29uKCkKIH0KIAogLy8gRklY
TUU6IE1vdmUgdGhlIGNvZGUgdG8gQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4KLVBhc3NS
ZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IGZmMDcxMzFhNjFmY2VkMDQ1ODZiMzcy
ZDliYTIwNzlhOTg3M2MzOGIuLmZhMDExYWE4ODE2MzAzMDAwOTQ0OThlYmMwZmZjYTlmYjljMzAz
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VN
YWMubW0KQEAgLTk1LDcgKzk1LDcgQEAgQ0ZEYXRhUmVmIEJpdG1hcEltYWdlOjpnZXRUSUZGUmVw
cmVzZW50YXRpb24oKQogCiAgICAgVmVjdG9yPENHSW1hZ2VSZWY+IGltYWdlczsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRnJhbWVzOyArK2kgKSB7Ci0gICAgICAgIENHSW1hZ2VS
ZWYgY2dJbWFnZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdl
ID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7CiAgICAgICAgIGlmIChjZ0ltYWdlKQogICAg
ICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKaW5kZXggYTc4MDcwZDlhYWFm
N2Y0ZTJhMzE4OWVlMTQ4YTZhNWM3OTM4OGMwNS4uYTM5NDZjYWY0ZjgzZTAwY2ZkMWI5OWE1OGYy
Yzk5MjIzMTc5YjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ljb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JY29uV2luLmNwcApAQCAtNDMsNyArNDMsNyBAQCBJY29uOjp+SWNvbigpCiB9CiAKIC8v
IEZJWE1FOiBNb3ZlIHRoZSBjb2RlIHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCi1Q
YXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZmlsZW5hbWVzKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxlbmFtZXMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA4MzVlY2YzZjRmZWVlYjhhMGRm
YThkMzY5NzMxMjhmM2I4MDdiOTI2Li4xMTE4NTg0ZDYxNDYzMzY1ZDBjYzkwNDMyZDk4ZGIwNTQ5
ZjJlYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhC
aXRtYXApCitSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBo
Qml0bWFwKQogewogICAgIERJQlNFQ1RJT04gZGliU2VjdGlvbjsKICAgICBpZiAoIUdldE9iamVj
dChoQml0bWFwLCBzaXplb2YoRElCU0VDVElPTiksICZkaWJTZWN0aW9uKSkKQEAgLTU0LDkgKzU0
LDkgQEAgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQ
IGhCaXRtYXApCiAgICAgICAgIGRpYlNlY3Rpb24uZHNCbS5ibVdpZHRoQnl0ZXMsIGRldmljZVJH
QkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7CiAKICAgICAvLyBUaGUgQml0bWFwSW1hZ2UgdGFrZXMg
b3duZXJzaGlwIG9mIHRoaXMuCi0gICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSk7CisgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNnSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1h
cENvbnRleHQuZ2V0KCkpKQogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJbWFnZShj
Z0ltYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKGNn
SW1hZ2UpKSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1B
UCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYg
aW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFt
ZUltYWdlQXRJbmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYg
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lk
dGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFt
ZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCAyOWEy
MDIzZGI2M2E5MTQzNGMzOTQ4ZWFhNTUyM2JiNjFmZTgxMDc1Li5kYWI5NmEzOGM1NDgxMDJhYWUy
N2FhMDE5ZWViOTllNWE4YzQyMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1h
Z2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCitSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcElt
YWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogewogICAgIERJQlNFQ1RJT04gZGliU2VjdGlv
bjsKICAgICBpZiAoIUdldE9iamVjdChoQml0bWFwLCBzaXplb2YoRElCU0VDVElPTiksICZkaWJT
ZWN0aW9uKSkKQEAgLTUyLDcgKzUyLDcgQEAgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFw
SW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiAKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fd2luMzJfc3VyZmFjZV9jcmVhdGVfd2l0aF9k
aWIoQ0FJUk9fRk9STUFUX0FSR0IzMiwgZGliU2VjdGlvbi5kc0JtLmJtV2lkdGgsIGRpYlNlY3Rp
b24uZHNCbS5ibUhlaWdodCkpOwogCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoc3Vy
ZmFjZS5yZWxlYXNlKCkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUo
c3VyZmFjZSkpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRN
QVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBhdXRvIHN1
cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKQogICAg
ICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggZmM4N2Y4MzQwMzMxOTU1NzNmNTY3
ZmMwNThjN2M3M2Q4NThhMTk3YS4uYjM1NDdkOTRlODA4Zjg3NGFlZDlkYTBmMjkxYmVjZTIwYTY0
NjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlp
bmcgbmF0aXZlIGltYWdlIGRhdGEuCiAgICAgICAgIC8vIChBY3R1YWwgdXNlOiBUaGlzIHBvaW50
ZXIgd2lsbCBiZSBvd25lZCBieSBCaXRtYXBJbWFnZSBhbmQgZnJlZWQgaW4KICAgICAgICAgLy8g
RnJhbWVEYXRhOjpjbGVhcigpKS4KLSAgICAgICAgUGFzc05hdGl2ZUltYWdlUHRyIGFzTmV3TmF0
aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFn
ZSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICAgICAgY29u
c3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFs
RnJhbWVSZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKaW5kZXggM2Zl
NzA0MDIzNDE5ZDk3NTNiMTM5OWQ5ZjZjMDBiNjczOTQ1MTI5Ni4uN2I0MTI5NWY4NTczNThmYmJm
MzVjMWIwNTI1ZThkNmNjMzUyMGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJv
LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NOYXRp
dmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK05hdGl2ZUlt
YWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHJldHVy
biBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPiht
X2J5dGVzKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2lu
LmNwcAppbmRleCBhZDI1OTg5NjgzMGE0OWEzOTgzMDhjODQyMTk2ZjJjOTc2MThiMDE4Li4zNmNk
NjUxNmU4MGYxNzQ4YmZlYWI3N2E5MzAyNzFjMTIxZGU4MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTEyOCw3ICsxMjgsNiBAQCBE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikKICAgICBpZiAoIWhibXAgfHwgIWRyYXdDb250ZXh0KQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIENHSW1hZ2VSZWYgc3JjSW1hZ2UgPSBpbWctPmdldENHSW1h
Z2VSZWYoKTsKICAgICBDR1JlY3QgcmVjdDsKICAgICByZWN0LnNpemUgPSBJbnRTaXplKGltZy0+
c2l6ZSgpKTsKICAgICByZWN0Lm9yaWdpbi54ID0gMDsKQEAgLTEzNyw3ICsxMzYsNyBAQCBEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbikKICAgICBDR0NvbnRleHRTY2FsZUNUTShkcmF3Q29udGV4dCwgMSwg
LTEpOwogICAgIENHQ29udGV4dFNldEZpbGxDb2xvcihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAg
IENHQ29udGV4dEZpbGxSZWN0KGRyYXdDb250ZXh0LCByZWN0KTsKLSAgICBpZiAoc3JjSW1hZ2Up
IHsKKyAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+Z2V0Q0dJbWFnZVJlZigpKSB7CiAgICAg
ICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFs
KTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFn
ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXgg
NDJlYTVlZTUzNDIxYTc3ZDA3ZTM0ZTZmODBiNDMzYzYyMDczN2I4Yy4uYzE1ZmFmYmQ4ZWExYjYx
MzI0ODY1NjU0ZDk0OTQyZGZlZDQ2NTM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCkBAIC0xODAsMTcgKzE4MCwxNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRh
aQogfQogCiAjaWYgVVNFKENBSVJPKQotLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZl
IGltYWdlIHRvIHRoZSBjYWxsZXIgc28gUGFzc05hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQYXNz
ZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJ
bWFnZVB0ciBuZWVkcwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVyIHR5cGUuCi1QYXNzTmF0aXZl
SW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUlt
YWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgaWYg
KCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIC8vIENhaXJvIGRvZXMgbm90IHVzZSB0aGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnLCBz
byBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVy
LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghYnVmZmVyKSAvLyBmYWls
ZWQgdG8gYWxsb2NhdGUgaW1hZ2UKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDg3
MGY2Yzg1YzVlNjg0ZTE3N2MzMGQxNmMyMTY2YTM0MGRjZDVhN2IuLjQ5MWRkZmIzYzIxMzllZjg4
MjEwMWQxYWY0NWI1YWVmMTEwYzRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9u
KCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKaW5kZXggNGUxNjFlM2YwZDQ0YTZhYTZlYTZjMDNmNWVkOWFiYzE5ZWJhZWExZC4u
N2UxNDNkZWQyZDY2OWFiM2FjMDljNDk2YjRlNGJlZTdkYzg3ZjIyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgbV9pbWFnZS0+ZHJhd1Bh
dHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIHNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVj
dCwgYmxlbmRNb2RlKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFp
bmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFnZVB0ciBTVkdJbWFn
ZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogewogICAgIHJldHVy
biBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCAzNTk3
NTQyODlmYzMwNDIxOGNkYjhiZjEyMDNiODczYzI5ZmQ1MmQyLi5kMjI0ZmM0NjEyZmQ5NWExYWVh
NzdhZmI0NDc5NzY5MjM1MjdhY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAg
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZH
SW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBkNzFlNjY0M2IzYzIxMmIyZGI2NDRi
MzE1Mjk0YjFjM2JjNzZmY2Y4Li43MGY1NDU4MzkzYzczNmM0NzBlN2ViYmI1MjJmNGVkNzVhZWRm
ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTE2MCw3ICsxNjAsNyBAQCAr
ICh2b2lkKXNpemVPZkRlYWRSZXNvdXJjZXM6KGludCAqKXJlc291cmNlcwogCiArIChib29sKWFk
ZEltYWdlVG9DYWNoZTooQ0dJbWFnZVJlZilpbWFnZSBmb3JVUkw6KE5TVVJMICopdXJsCiB7Ci0g
ICAgcmV0dXJuIFtXZWJDYWNoZSBhZGRJbWFnZVRvQ2FjaGU6aW1hZ2UgZm9yVVJMOnVybCBmb3JG
cmFtZTpuaWxdOworICAgIHJldHVybiBbV2ViQ2FjaGUgYWRkSW1hZ2VUb0NhY2hlOlJldGFpblB0
cjxDR0ltYWdlUmVmPihpbWFnZSkgZm9yVVJMOnVybCBmb3JGcmFtZTpuaWxdOwogfQogCiArIChi
b29sKWFkZEltYWdlVG9DYWNoZTooQ0dJbWFnZVJlZilpbWFnZSBmb3JVUkw6KE5TVVJMICopdXJs
IGZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCkBAIC0xNzIsNyArMTcyLDcgQEAgKyAoYm9vbClh
ZGRJbWFnZVRvQ2FjaGU6KENHSW1hZ2VSZWYpaW1hZ2UgZm9yVVJMOihOU1VSTCAqKXVybCBmb3JG
cmFtZTooV2ViRnJhbWUKICAgICBpZiAoZnJhbWUpCiAgICAgICAgIHRvcE9yaWdpbiA9IGNvcmUo
ZnJhbWUpLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKTsKICNlbmRpZgotICAgIHJldHVybiBXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKGltYWdlLCB1cmws
IHRvcE9yaWdpbiA/IHRvcE9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5
U3RyaW5nKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCku
YWRkSW1hZ2VUb0NhY2hlKFJldGFpblB0cjxDR0ltYWdlUmVmPihpbWFnZSksIHVybCwgdG9wT3Jp
Z2luID8gdG9wT3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogZW1wdHlTdHJpbmco
KSk7CiB9CiAKICsgKHZvaWQpcmVtb3ZlSW1hZ2VGcm9tQ2FjaGVGb3JVUkw6KE5TVVJMICopdXJs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAyNWVh
ZjU1MDVlNjczZDMzNTA5MTY1MTIxZjNiMzQyZGE5MDc4ZjUyLi5mZDg3MGMzNjRhMzdhODg1MTQw
NDEwOWVkMmI3NGVhNWZhODg5NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1
Z2luVmlld1dpbi5jcHAKQEAgLTkyMCw3ICs5MjAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBsYXRm
b3JtRGVzdHJveSgpCiAgICAgc2V0UGxhdGZvcm1QbHVnaW5XaWRnZXQoMCk7CiB9CiAKLVBhc3NS
ZWZQdHI8SW1hZ2U+IFBsdWdpblZpZXc6OnNuYXBzaG90KCkKK1JlZlB0cjxJbWFnZT4gUGx1Z2lu
Vmlldzo6c25hcHNob3QoKQogewogI2lmICFVU0UoV0lOR0RJKQogICAgIGF1dG8gaGRjID0gYWRv
cHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRpYmxlREMoMCkpOwpAQCAtOTUwLDcgKzk1MCw3IEBA
IFBhc3NSZWZQdHI8SW1hZ2U+IFBsdWdpblZpZXc6OnNuYXBzaG90KCkKIAogICAgIFNlbGVjdE9i
amVjdChoZGMuZ2V0KCksIGhibXBPbGQpOwogCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVh
dGUoaGJtcC5nZXQoKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZSho
Ym1wKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuY3BwCmluZGV4IDMzY2I1ZGVjZjY1MWM2NTg2NjMzOThkMDFmMTY4
ZTMxMjZmY2Y5ZWUuLjRlZWNiY2M5OTc3NDI5NGQzNDlkZDE5Y2RiMzAyOGIwNDljMWJiNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKICAgICBtX2ZsYWdzID0g
RmxhZzo6Tm9GbGFnczsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQorUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgRmxhZ3MgZmxhZ3MpCiB7CiAgICAgc2l6ZV90IG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JT
aXplKHNpemUpOwogICAgIApAQCAtNzUsNyArNzUsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBk
YXRhKSk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKK1JlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0
IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQogewogICAgIHNpemVfdCBudW1CeXRlcyA9IG51
bUJ5dGVzRm9yU2l6ZShzaXplKTsKIApAQCAtODYsNyArODYsNyBAQCBQYXNzUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6
ZSYgc2l6ZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZs
YWdzLCBzaGFyZWRNZW1vcnkpKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBQ
YXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKIHsKICAgICBBU1NFUlQo
c2hhcmVkTWVtb3J5KTsKIApAQCAtOTYsNyArOTYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBz
aGFyZWRNZW1vcnkpKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb24gcHJvdGVjdGlvbikKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24g
cHJvdGVjdGlvbikKIHsKICAgICAvLyBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkuCiAgICAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxl
Lm1faGFuZGxlLCBwcm90ZWN0aW9uKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBTaGFyZWFibGVCaXRt
YXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgdm9p
ZCogZGF0YSkKIHsKIH0KIAotU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFy
ZWRNZW1vcnkpCitTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncywgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQog
ICAgIDogbV9zaXplKHNpemUpCiAgICAgLCBtX2ZsYWdzKGZsYWdzKQogICAgICwgbV9zaGFyZWRN
ZW1vcnkoc2hhcmVkTWVtb3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
CmluZGV4IDc4MzM4OWVjNTBmODMxOWQxNzhhMDQzNDEyNjU3ZTQ3NDUyZjNlZmUuLjQ1MDkzYTQ1
OWIwZDY2N2YzYTI0YjhkN2UxZmNmNThjMmI4MmU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2hhcmVhYmxlQml0bWFwLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTc2LDE2ICs3NSwxNiBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIENy
ZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgdGhhdCB1c2VzIG1hbGxvY2VkIG1lbW9yeS4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKIAogICAgIC8vIENyZWF0ZSBhIHNo
YXJlYWJsZSBiaXRtYXAgd2hvc2UgYmFja2luZyBtZW1vcnkgY2FuIGJlIHNoYXJlZCB3aXRoIGFu
b3RoZXIgcHJvY2Vzcy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZVNoYXJlYWJsZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIEZsYWdzKTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJv
bSBhbiBhbHJlYWR5IGV4aXN0aW5nIHNoYXJlZCBtZW1vcnkgYmxvY2suCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IEZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4pOworICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBSZWZQ
dHI8U2hhcmVkTWVtb3J5Pik7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGZy
b20gYSBoYW5kbGUuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVh
dGUoY29uc3QgSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjcmVhdGUoY29uc3QgSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwogCiAgICAgLy8gQ3JlYXRlIGEgaGFu
ZGxlLgogICAgIGJvb2wgY3JlYXRlSGFuZGxlKEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKQEAgLTEwNiw3ICsx
MDUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBiaXRtYXAgaW1hZ2UgdGhh
dCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhp
cyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0
aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCi0gICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJbWFnZT4gY3JlYXRlSW1hZ2UoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNyZWF0
ZUltYWdlKCk7CiAKICNpZiBVU0UoQ0cpCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgY29waWVkIENH
SW1hZ2VSZWYgKG1vc3QgbGlrZWx5IGEgY29weS1vbi13cml0ZSkgb2YgdGhlIHNoYXJlYWJsZSBi
aXRtYXAuCkBAIC0xMTgsMTIgKzExNywxMiBAQCBwdWJsaWM6CiAjZWxpZiBVU0UoQ0FJUk8pCiAg
ICAgLy8gVGhpcyBjcmVhdGVzIGEgQml0bWFwSW1hZ2UgdGhhdCBkaXJlY3RseSByZWZlcmVuY2Vz
IHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNl
IHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3
b24ndCBjaGFuZ2UuCi0gICAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJv
U3VyZmFjZSgpOworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOwogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBGbGFncywgdm9pZCopOwotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAg
U2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUmVmUHRyPFNo
YXJlZE1lbW9yeT4pOwogCiAjaWYgVVNFKENBSVJPKQogICAgIHN0YXRpYyBzaXplX3QgbnVtQnl0
ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IGE2YjJhMjgz
ZGZiMjM3OGU4ZWI0MTZlZjVjZWEyMDIwMGViMDFhOWQuLjAzZTY4NDFiZjAzMWQyYWI2MDcyZDBk
NzlhMTQ0OGYzZWZlMjRmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2Nh
aXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzaXplX3QgU2hh
cmVhYmxlQml0bWFwOjpudW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSkKICAgICByZXR1cm4gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoY2Fpcm9Gb3JtYXQs
IHNpemUud2lkdGgoKSkgKiBzaXplLmhlaWdodCgpOwogfQogCi1zdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVTdXJmYWNlRnJvbURhdGEodm9pZCogZGF0YSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gY3JlYXRlU3VyZmFjZUZyb21EYXRhKHZvaWQqIGRhdGEsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUpCiB7CiAgICAgY29uc3QgaW50IHN0cmlkZSA9IGNhaXJvX2Zvcm1h
dF9zdHJpZGVfZm9yX3dpZHRoKGNhaXJvRm9ybWF0LCBzaXplLndpZHRoKCkpOwogICAgIHJldHVy
biBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oZGF0YSksIGNhaXJvRm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCksIHN0cmlkZSkpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1h
cDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29u
c3QgSQogICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0
KHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBjb250ZXh0KTsKIH0KIAot
UGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9T
dXJmYWNlKCkKK1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
Q2Fpcm9TdXJmYWNlKCkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZSA9IGNy
ZWF0ZVN1cmZhY2VGcm9tRGF0YShkYXRhKCksIG1fc2l6ZSk7CiAKQEAgLTg3LDEzICs4NywxMyBA
QCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZVN1cmZhY2VEYXRhKHZvaWQqIHR5cGVsZXNz
Qml0bWFwKQogICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVsZXNzQml0bWFw
KS0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVmIGluIGNyZWF0ZUNhaXJvU3VyZmFjZS4KIH0K
IAotUGFzc1JlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgpCitSZWZQ
dHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewogICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKICAgICBpZiAo
IXN1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKHN1cmZhY2UucmVsZWFzZSgpKTsKKyAgICBy
ZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJp
dG1hcENHLmNwcAppbmRleCBjZTkzM2I3MjNiZjMxZjM2NzU4MTMwZjFlZTUwYzU4OWRkNWM2Zjkw
Li44ZTNjY2E0OWI2ZmU0YjZhNDgwNWQ2ZjU5ZWU4NDczYmY0YWEyZjFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTEwNiwxMyArMTA2
LDEzIEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lk
KiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCoKICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJh
bGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVDR0ltYWdlLgogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKK1JlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVJbWFnZSgpCiB7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHBsYXRmb3Jt
SW1hZ2UgPSBtYWtlQ0dJbWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShwbGF0Zm9y
bUltYWdlLmdldCgpKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBs
YXRmb3JtSW1hZ2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274814</attachid>
            <date>2016-03-23 20:12:55 -0700</date>
            <delta_ts>2016-03-24 09:22:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160323201256.patch</filename>
            <type>text/plain</type>
            <size>100766</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uNGI0YjQyZDBjNGFkMTU5NDYyMjU5OGVmNTI3MTY2
Nzc4ZmI2ZTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNiBAQAorMjAxNi0wMy0yMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1h
Z2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgor
ICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrIHdhcyBk
b25lIHRvIGVuc3VyZSB0aGUgQ0cKKyAgICAgICAgcG9pbnRlciBpcyByZWZjb3VudGVkIGNvcnJl
Y3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYQorICAgICAgICBGcmFtZURh
dGEgc2luY2UgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdl
UmVmLgorCisgICAgICAgIFdpdGggdGhpcyBjaGFuZ2UsIFBhc3NOYXRpdmVJbWFnZVB0ciBpcyBu
b3QgbmVlZGVkIGFueW1vcmUuIFNvIGFsbCB0aGUKKyAgICAgICAgaW5zdGFuY2Ugb2YgUGFzc05h
dGl2ZUltYWdlUHRyIGNhbiBiZSByZXBsYWNlZCBieSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgIENoYW5nZSB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUgUmV0YWluUHRy
PENHSW1hZ2VSZWY+LgorICAgICAgICAgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldE5TSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0lt
YWdlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0RXZhc09iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIENoYW5nZSAwIHRvIG51bGxwdHIgYW5kIFBhc3NO
YXRpdmVJbWFnZVB0ciB0byBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1h
Z2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIE1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBw
b2ludGVyIGZvciBDRy4gR2V0IHJpZCBvZiBQYXNzTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgc2lu
Y2UgTmF0aXZlSW1hZ2VQdHIgaXMgbm93IGEgc21hcnQgcG9pbnRlciBvbiBhbGwgcGxhdGZvcm1z
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZl
SW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIFNpbmNlIEltYWdlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIHJldHVybnMgYSBSZXRhaW5QdHIsIG1vdmUgaXQKKyAgICAg
ICAgdG8gbV9wZW5kaW5nQ29udGVudHNJbWFnZSB0byByZW1vdmUgdGhlIHJlZmNvdW50IGNodXJu
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6
OmNsZWFyKToKKyAgICAgICAgUmVwbGFjZSBtX2ZyYW1lIHdpdGggbV9pbWFnZSBhbmQgZnJhbWUq
IHdpdGggZnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgUmVwbGFjZSAq
RnJhbWUqIHdpdGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJ
bWFnZVB0ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNs
ZWFyKTogTm8gbmVlZCB0byBjYWxsIENHSW1hZ2VSZWxlYXNlKCkuIEp1c3QgYXNzaWduCisgICAg
ICAgIG1faW1hZ2UgdG8gbnVsbHB0ciBhbmQgQ0dJbWFnZVJlbGVhc2UoKSB3aWxsIGJlIGNhbGxl
ZCBmcm9tIHRoZSBSZXRhaW5QdHIKKyAgICAgICAgZGVzdHJ1Y3Rvci4KKworICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEZp
cnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0
Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVBdElu
ZGV4KTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBDR0ltYWdlUmVmIHdpdGggUmV0YWluUHRy
PENHSW1hZ2VSZWY+LiBSZXBsYWNlICpGcmFtZSogd2l0aAorICAgICAgICAqRnJhbWVJbWFnZSou
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFRvQ2FudmFzKToKKyAgICAgICAgVXNlIG1fY2dJbWFnZS5nZXQoKSBpbnN0ZWFkIG9mIG1fY2dJ
bWFnZSB3aGVuIGNhbGxpbmcgQ0cgZnVuY3Rpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRy
IHdpdGggTmF0aXZlSW1hZ2VQdHIuIEdldCB0aGUgcmF3IENHSW1hZ2VSZWYKKyAgICAgICAgZnJv
bSB0aGUgTmF0aXZlSW1hZ2VQdHIgd2hlbiBjYWxsaW5nIHRoZSBDRyBmdW5jdGlvbnMuCisgICAg
ICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6
IE1vdmUgdGhlIGltYWdlIGFyZ3VtZW50CisgICAgICAgIHdoZW4gY2FsbGluZyBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKCkuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVG
cmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgdGhlIGZ1bmN0aW9uIGFuZCBz
aW1wbGlmeSB0aGUgY29kZSBzaW5jZSB0aGUgbG9jYWwgdmFyaWFibGUKKyAgICAgICAgYW5kIHRo
ZSByZXR1cm4gdmFsdWUgYXJlIGJvdGggc21hcnQgcG9pbnRlcnMuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdl
OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIgYW5kIHVzZSBjb25zdGFudCByZWZl
cmVuY2UuIAorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhp
Y3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICBDYWxsIGEgZnVuY3Rpb24g
d2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2VmbC9JY29uRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Okljb246Oklj
b24pOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVh
dGVJY29uRm9yRmlsZXMpOgorICAgICAgICBVc2Ugc21hcnQgcG9pbnRlcnMgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGluc3RlYWQgb2YgcmF3IHBvaW50ZXJzIENHSW1hZ2VSZWYuCisgICAgICAgIEFu
ZCBjaGFuZ2UgUGFzc1JlZlB0ciB0byBSZWZQdHIgYW5kIDAgdG8gbnVsbHB0ci4KKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6IEdldCB0aGUgcmF3
IHBvaW50ZXIgZnJvbSB0aGUKKyAgICAgICAgcmV0dXJuZWQgc21hcnQgcG9pbnRlci4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKTogQ2hhbmdlIFBhc3NSZWZQdHIg
dG8gUmVmUHRyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rpb24KKyAgICAgICAgd2l0aCBpdHMgbmV3
IG5hbWUgYW5kIGdldCB0aGUgcmF3IHBvaW50ZXIgZnJvbSB0aGUgcmV0dXJuZWQgc21hcnQgcG9p
bnRlci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fp
cm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNo
aW5nU291cmNlU2l6ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGggaXRzIG5ldyBu
YW1lLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURl
Y29kZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoK
KyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4K
KyAgICAgICAgCiAyMDE2LTAzLTE4ICBaaHVvIExpICA8emFjaGxpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVcGRhdGUgQXV0b0ZpbGwgYnV0dG9uIGluIGlucHV0IGZpZWxkcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDFlNmZjY2Q4ZWI0Njk5YzA2YTk5YzQy
MzZiMTkxOTUxZTg1ZGMwMmYuLjcxMzE0YmMyNjc0NTI4ZmRkMjE1NjJlODNiMzJjMTYxNmVhZjRm
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjc5LDcg
KzI3OSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygpICYmIHBsYXllcigpLT5oYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9F
bGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRyIEhUTUxW
aWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIGlmICghcGxh
eWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAppbmRleCBhZDk0OGY5NDRhMzA4MTZhYTU3YjNjOGVlYTYwMjQ4ODEyNDU2NTE1
Li5iNGQ3ZjFlMTcwZjFmNzNlY2E0ODY1NjQ2MDdjZDU3ZWYxZjRmZTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAg
Ly8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7
CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAg
Ly8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVzIGNvcHkgaWYgcG9zc2libGUu
CiAgICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2JmNjgwNGZjZjhhZmE1
Y2NlYzAxOTQzMDliZWM1OTc0NzczZTIyNy4uZDY4Zjk4NmNhYTdiMzg4YTUyOWYzYjgzOTBhMGU2
MzczZTZhYWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNjI1LDcgKzE2MjUsNyBAQCB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVv
LCBjb25zdCBGbG9hdFJlYwogICAgIGNoZWNrT3JpZ2luKHZpZGVvKTsKIAogI2lmIFVTRShDRykg
fHwgKEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVTRShHU1RSRUFNRVJfR0wpICYm
IFVTRShDQUlSTykpCi0gICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICBpZiAoTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CiAgICAgICAgIGMtPmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVv
LT52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGlmIChyZWN0Q29u
dGFpbnNDYW52YXMoZHN0UmVjdCkpCiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCA5OTk0
NjVlYTM5MDY5N2NiZTAwZmU2ZmE4ODM4YzEzOGU1NDQ3YTE3Li4wOTkzMGUwZThjYjE5Y2E5MTBi
MGUxM2JhYzU2MDc3YTYyZmEzNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAKQEAgLTIwNCwyOSArMjA0LDI0IEBAIHVuc2lnbmVkIE1lbW9yeUNhY2hl
OjpsaXZlQ2FwYWNpdHkoKSBjb25zdAogICAgIHJldHVybiBtX2NhcGFjaXR5IC0gZGVhZENhcGFj
aXR5KCk7CiB9CiAKLSNpZiBVU0UoQ0cpCi0vLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9u
Y2Ugd2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIG9uIGFsbCBw
bGF0Zm9ybXMgb3IKLS8vIHJlbW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlD
YWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28gYXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1p
bmRlcGVuZGVudC4KIHN0YXRpYyBDYWNoZWRJbWFnZUNsaWVudCYgZHVtbXlDYWNoZWRJbWFnZUNs
aWVudCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENhY2hlZEltYWdlQ2xpZW50PiBj
bGllbnQ7CiAgICAgcmV0dXJuIGNsaWVudDsKIH0KIAotYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKK2Jvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdl
VG9DYWNoZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKIHsKICAgICBBU1NFUlQoaW1hZ2UpOwogICAg
IFNlc3Npb25JRCBzZXNzaW9uSUQgPSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKICAg
ICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsgLy8g
UmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgogCi0gICAgUmVmUHRyPEJp
dG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoaW1hZ2UsIG51bGxw
dHIpOworICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKICAgICBpZiAoIWJpdG1hcEltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkSW1hZ2U+
IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJ
bWFnZS5nZXQoKSwgQ2FjaGVkSW1hZ2U6Ok1hbnVhbGx5Q2FjaGVkLCBzZXNzaW9uSUQpOwogCi0g
ICAgLy8gQWN0dWFsIHJlbGVhc2Ugb2YgdGhlIENHSW1hZ2VSZWYgaXMgZG9uZSBpbiBCaXRtYXBJ
bWFnZS4KLSAgICBDRlJldGFpbihpbWFnZSk7CiAgICAgY2FjaGVkSW1hZ2UtPmFkZENsaWVudCgm
ZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNp
emUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJ
T05JTkcpCkBAIC0yNjQsNyArMjU5LDYgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlSW1hZ2VG
cm9tQ2FjaGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2EKICAgICAv
LyByZXNvdXJjZSBtYXkgYmUgZGVsZXRlZCBhZnRlciB0aGlzIGNhbGwuCiAgICAgZG93bmNhc3Q8
Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkucmVtb3ZlQ2xpZW50KCZkdW1teUNhY2hlZEltYWdlQ2xp
ZW50KCkpOwogfQotI2VuZGlmCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lTGl2ZVJlc291cmNl
cyhib29sIHNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExpdmVSZXNvdXJjZXMpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGM4OGQyZGJkNGU2
YjFkMjc4MGRkYTA0ZmNjYWY5YjgyM2E0NjE3YTAuLjUzMWU5YWZmNGI1YWIwNDBlYjFiYmQyODc2
ZjdhMGE1ZmI5MWExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oCkBAIC0xNTUsMTIgKzE1NSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlPcmlnaW5TZXQmIG9yaWdpbnMpOwogICAgIFdF
QkNPUkVfRVhQT1JUIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc1dpdGhD
YWNoZShTZXNzaW9uSUQpIGNvbnN0OwogCi0jaWYgVVNFKENHKQotICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFrZSBOYXRpdmVJbWFnZVB0ciBhIHNtYXJ0
IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotICAgIC8vIHJlbW92ZSB0aGUgdXNhZ2Ugb2Yg
Q0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28gYXMgdG8gbWFr
ZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJ
bWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBk
b21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJ
bWFnZUZyb21DYWNoZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKTsKLSNlbmRpZgogCiAgICAgLy8gcHJ1bmVEZWFkKigpIC0gRmx1c2ggZGVjb2RlZCBh
bmQgZW5jb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIG5vdCByZWZlcmVuY2VkIGJ5IFdlYiBwYWdl
cy4KICAgICAvLyBwcnVuZUxpdmUqKCkgLSBGbHVzaCBkZWNvZGVkIGRhdGEgZnJvbSByZXNvdXJj
ZXMgc3RpbGwgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBkY2NhODhlNWI3MDdkMWE3MDBiZjQ2ZWY2MzAw
NDdhMzNjZjg4YjlmLi42ZGEyNDRlNWQzYTFlNjRhYjNhMTgwZDkxMzgwMjUwYjY0OTBhMzhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTMwMCw3
ICszMDAsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjbwogICAgIHJldHVybiBpY29uUmVjb3Jk
LT5pbWFnZShzaXplKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3lu
Y2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5h
bCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK05hdGl2ZUltYWdlUHRyIEljb25EYXRhYmFzZTo6c3lu
Y2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5h
bCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBJbWFnZSogaWNvbiA9IHN5bmNocm9ub3Vz
SWNvbkZvclBhZ2VVUkwocGFnZVVSTE9yaWdpbmFsLCBzaXplKTsKICAgICBpZiAoIWljb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCmluZGV4IDUzMGEzYTMwODkw
MTRhM2ViMWJlMDJkMzI0ODI5Y2FjMjZkODZkMzIuLmRiNDNlYzJjYjMxMTllNTYzMDA4NzQ0YmFi
YzA1OTI0ZGU2MWMyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiBw
YWdlVVJMKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlKiBzeW5jaHJvbm91
c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsK
LSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwor
ICAgIE5hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvcklj
b25VUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgSWNvbkxv
YWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5n
JiwgRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZUJhc2UuaAppbmRleCAwMjU0NjUzMDQxNjkxOTcyMjJlNzdkZjA2ZTY2
ZmY2NjNlNzgwOGFhLi41NDRjYmFjYjY5OGM2OGIwZDg2ODFjMjhiZDYxOGNlNzI4YzFhZmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCkBAIC0x
NzksNyArMTc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzeW5jaHJvbm91c0ljb25E
YXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVS
TChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIHsgcmV0dXJuIEljb25Mb2FkTm87IH0K
ICAgICB2aXJ0dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBQYXNz
TmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgLy8gQXN5bmNocm9u
b3VzIGNhbGxzIHdlIHNob3VsZCB1c2UgdG8gcmVwbGFjZSB0aGUgYWJvdmUgd2hlbiBzdXBwb3J0
ZWQuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpIHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKaW5kZXggZmFmMGY4Njk2MmMzZmI2NTc3NzQ1YmZhZjc1YjRjODRkODBjYzA2MC4u
NGE1YzYxYTVkMjdiYTg1NTQzYzAwNjQ1ZGY4ZWEyMDMzNTBhOWUxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzdGFydFRpbWVyKGRvdWJsZSBkZWxheSkKICAgICBtX2Zy
YW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6Omhh
dmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3Vu
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49
IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25z
dApAQCAtMTg0LDkgKzE4NCw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgICAgIG1f
ZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAogICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVN
ZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9z
b3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAg
ICAgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5t
X3N1YnNhbXBsaW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOwotICAgICAgICBpZiAobnVtRnJh
bWVzID09IDEgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgICAgIGlmIChudW1GcmFt
ZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgICAgIGNoZWNrRm9y
U29saWRDb2xvcigpOwogICAgIH0KIApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwsIEltCiAgICAgaWYgKCFzdWJzYW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3Np
emUpCiAgICAgICAgIG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IGZhbHNlOwogCi0gICAgaWYgKG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
KSB7CiAgICAgICAgIGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZUJ5dGVzKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwog
ICAgICAgICAvLyBUaGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRp
YWxseSBkZWNvZGVkIGRhdGEgdXNlZApAQCAtMzc5LDE0ICszNzksMTQgQEAgYm9vbCBCaXRtYXBJ
bWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5n
IGZyYW1lQ2FjaGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID49IG1f
ZnJhbWVzLnNpemUoKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFB
bmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgICAgIHx8IChmcmFtZUNh
Y2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZSkKICAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwg
MCwgZnJhbWVDYWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzTmF0aXZlSW1h
Z2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNl
bnRhdGlvblNjYWxlSGludCkKK05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKIHsKICAg
ICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTM5NSw3ICszOTUsNyBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYQogCiAgICAgLy8gV2UgbWF5
IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0aCBhIGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwgaW4g
d2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAgICAgLy8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBsZXZl
bC4KLSAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1f
ZnJhbWUgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5n
TGV2ZWwpIHsKKyAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5k
ZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNh
bXBsaW5nTGV2ZWwpIHsKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2FjaGVk
LCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24uCiAg
ICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7CiAg
ICAgICAgIG1fZnJhbWVzW2luZGV4XS5jbGVhcih0cnVlKTsKQEAgLTQwNiwxMCArNDA2LDEwIEBA
IFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBm
ZXRjaGVkIGEgZnJhbWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6
ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5k
ZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQpAQCAtNDI4LDkgKzQyOCw5IEBAIGZsb2F0IEJpdG1hcEltYWdlOjpm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2R1cmF0aW9uOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleChj
dXJyZW50RnJhbWUoKSk7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KGN1cnJlbnRGcmFt
ZSgpKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggNzQ5M2M2YTRiZmI4NjNkOTc2MzdjNDljNDY0Y2MzN2FlNzhlMGEwNC4uMDBmYmEz
M2JhNDE5YzEyNDE1NDE2NTMzMDFlMjk1Y2VmODZkMTc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC02NSwxNiArNjUsMTQgQEAgY2xh
c3MgVGltZXI7CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KIAogc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJh
bWVEYXRhKTsKIHB1YmxpYzoKICAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fZnJhbWUoMCkK
LSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQorICAgICAg
ICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgICwgbV9z
dWJzYW1wbGluZ0xldmVsKDApCiAgICAgICAgICwgbV9kdXJhdGlvbigwKQogICAgICAgICAsIG1f
aGF2ZU1ldGFkYXRhKGZhbHNlKQogICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAg
ICAgLCBtX2hhc0FscGhhKHRydWUpIAorICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKICAgICAg
ICAgLCBtX2ZyYW1lQnl0ZXMoMCkKICAgICB7CiAgICAgfQpAQCAtODgsNyArODYsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0
byBjbGVhci4KICAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7CiAKLSAgICBOYXRp
dmVJbWFnZVB0ciBtX2ZyYW1lOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CiAgICAgSW1h
Z2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJz
YW1wbGluZ0xldmVsOwogICAgIGZsb2F0IG1fZHVyYXRpb247CkBAIC0xMDgsMTYgKzEwNiwxNiBA
QCBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNs
YXNzIEdyYWRpZW50SW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoUGFzc05hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCisgICAgc3RhdGlj
IFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKG5hdGl2ZUltYWdlLCBvYnNlcnZlcikpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSwg
b2JzZXJ2ZXIpKTsKICAgICB9Ci0gICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKKyAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBj
cmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2Uob2JzZXJ2ZXIpKTsKICAgICB9CiAjaWYg
UExBVEZPUk0oV0lOKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEJpdG1h
cEltYWdlPiBjcmVhdGUoSEJJVE1BUCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxCaXRtYXBJbWFnZT4gY3JlYXRlKEhCSVRNQVApOwogI2VuZGlmCiAgICAgdmlydHVhbCB+Qml0
bWFwSW1hZ2UoKTsKICAgICAKQEAgLTE3Miw3ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgRXZhc19P
YmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICBQYXNz
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAg
ICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwog
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlk
ZSB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KIAog
ICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGU7CkBAIC0xOTks
OCArMTk3LDggQEAgcHJvdGVjdGVkOgogICAgICAgQ2VydGFpbiAgICAgLy8gVGhlIHJlcGV0aXRp
b24gY291bnQgaXMga25vd24gdG8gYmUgY29ycmVjdC4KICAgICB9OwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgQml0bWFwSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBJbWFnZU9ic2VydmVyKiA9IDAp
OwotICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gMCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiwgSW1hZ2VPYnNl
cnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9i
c2VydmVyKiA9IG51bGxwdHIpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJy
aWRlOwpAQCAtMjE0LDEwICsyMTIsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgc2l6ZV90IGZyYW1l
Q291bnQoKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUF0SW5kZXgoc2l6ZV90LCBm
bG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIg
Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsK
KyAgICBOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3Qp
OwogCi0gICAgYm9vbCBoYXZlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgYm9vbCBoYXZlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmlu
ZGV4IGJhYmM0Yzg1Y2MyZGY3NDk1OGZhMWM5MTBlNTZhYWNiODcxOTBjZjIuLmM1MjRiYTE5ZDVk
ZGE0MDVjNjBjMTQ3ODIxNjI3OWMwYzg1OTY2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zMDIsNyArMzAyLDcgQEAg
cHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERlZmF1bHRJ
bWFnZU9yaWVudGF0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CiAjZW5kaWYK
IAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGUzNmJhM2FhNTZkNThjMjA2YTk4M2ZmNWJhOWJm
YTdiMTM2NTExODIuLmRiYmJjZjU4YzM3YjlhNmIxNjRkNmYxMzUxY2Q2ZTE1ZWI0MWQ4NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaApAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgcHVibGljOgogICAgICAgICBJbWFnZVNvdXJj
ZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX2ltYWdlU3Vy
ZmFjZTsKICNlbGlmIFVTRShDRykKLSAgICAgICAgQ0dJbWFnZVJlZiBtX2NnSW1hZ2U7CisgICAg
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
bV9waXhlbERhdGE7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFs
aXplZFJHQkE4RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRl
eCBkOTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFlZjNmM2MxN2I3Li5mNmJiYjgyMDZjZWFi
N2NkMzYzOTYyMDgwNTBiNDAzMTYxZGFhNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSWNvbi5oCkBAIC0yMiw4ICsyMiw4IEBACiAjZGVmaW5lIEljb25faAogCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ1LDE5ICs0NSwx
OSBAQCBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgCiBjbGFzcyBJY29uIDogcHVibGljIFJlZkNvdW50
ZWQ8SWNvbj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRy
PEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIH5JY29uKCk7CiAKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElj
b24+IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24p
KTsgfQorICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgSWNvbihoSWNvbikpOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgZm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJl
bW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UGFzc1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoTmF0aXZlSW1hZ2VQdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY4
LDcgKzY4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKLSAgICBJ
Y29uKENHSW1hZ2VSZWYpOworICAgIEljb24oY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+Jik7
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1B
QykKICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCmluZGV4IDRlZDZlMzVkOTlhZmFhYjViOGJkZWM2ZmQ3YTEzMjBlMjBkMDQ2ZjUuLmMz
MTQyYWRlYzdhMjVjODQ2MGUyOWFmMzUwMmI5NDE0N2I3MDZjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTM1LDIzICsxMzUsMjMgQEAgcHVibGljOgog
CiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNwYWNlVGlsZSwg
UmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSB7
IHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0
aXZlIGltYWdlIGZvcm1hdHMuCiAKICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgTlNJbWFn
ZSogZ2V0TlNJbWFnZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5T
SW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJl
dHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFVTRShDRykKLSAgICB2aXJ0dWFsIENHSW1h
Z2VSZWYgZ2V0Q0dJbWFnZVJlZigpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIENHSW1hZ2VS
ZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiAwOyB9
Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyBy
ZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZP
ZlNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBnZXRDR0ltYWdlQXJyYXkoKSB7IHJldHVybiBudWxscHRyOyB9
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE2MCwxMSArMTYwLDExIEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBn
ZXRHZGtQaXhidWYoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBHZGtQaXhidWYqIGdldEdk
a1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oRUZM
KQotICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIHsgcmV0dXJu
IDA7IH0KKyAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSB7IHJl
dHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDA0ZjllZjkzYWVhOWQyMmVhZjBlNjFjOWEyMGQ2
NzM1MzcyMjk1YWIuLjU3YmE2MzUyMGZkZWIzYmEyMWUyNzBiNzY5ZmRkMjkwNGNjYTdjNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAt
MzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDxydW50
aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMSw4ICsxMDEsOCBA
QCBwdWJsaWM6CiAKICAgICBlbnVtIENvb3JkaW5hdGVTeXN0ZW0geyBMb2dpY2FsQ29vcmRpbmF0
ZVN5c3RlbSwgQmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSB9OwogCi0gICAgUGFzc1JlZlB0
cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJl
Y3QmLCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0Owot
ICAgIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldFByZW11bHRpcGxpZWRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5
c3RlbSkgY29uc3Q7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRVbm11bHRpcGxp
ZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29v
cmRpbmF0ZVN5c3RlbSkgY29uc3Q7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRQ
cmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmLCBDb29yZGluYXRlU3lzdGVtID0g
TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OwogCiAgICAgdm9pZCBwdXRCeXRlQXJyYXko
TXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqLCBjb25zdCBJbnRTaXplJiBz
b3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50LCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CmluZGV4IDc0ZWYwNTNhMzMzZmY1ZmM1NzhlODE4MDBjYzZmYzk3NTVlZmJhYjguLmFlMzFjOTgz
NTIxZDUwMDgyMjVjMWZjMzQyOWMyYzQwYTAzN2U0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTE0OCwxOSArMTQ4LDE5IEBA
IHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVj
b2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotUGFzc05hdGl2ZUltYWdl
UHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsKQorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIW1fZGVj
b2RlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
SW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgp
OwogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJh
bWVFbXB0eSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0
cy4gIElmIHdlIGhhdmUgYW4KICAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFp
bC4KICAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMg
YSBuYXRpdmUgaW1hZ2UuICBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKICAgICAvLyBpcyBhbHJl
YWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyBy
ZWZjb3VudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCmluZGV4IGFjZGQxY2U0Y2UzMDBkZTgxYzllMDYyZWVlNzYwN2JmNDcyYTcwYWYuLmMxMWY3
YmU0ODI5ZTRlNmJjNDAxNzg5NjNjMWQ1MWExODY2MGEwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1
YmxpYzoKICAgICAvLyBkZWNvZGVkIGZyYW1lcy4KICAgICAvLwogICAgIC8vIENhbGxlcnMgc2hv
dWxkIG5vdCBjYWxsIGNsZWFyKGZhbHNlLCBuKSBhbmQgc3Vic2VxdWVudGx5IGNhbGwKLSAgICAv
LyBjcmVhdGVGcmFtZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmlyc3QgY2Fs
bCBjbGVhcih0cnVlKS4KKyAgICAvLyBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChtKSB3aXRoIG0g
PCBuLCB1bmxlc3MgdGhleSBmaXJzdCBjYWxsIGNsZWFyKHRydWUpLgogICAgIC8vIFRoaXMgZW5z
dXJlcyB0aGF0IHN0YXRlZnVsIEltYWdlU291cmNlcy9kZWNvZGVycyB3aWxsIHdvcmsgcHJvcGVy
bHkuCiAgICAgLy8KICAgICAvLyBUaGUgfGRhdGF8IGFuZCB8YWxsRGF0YVJlY2VpdmVkfCBwYXJh
bWV0ZXJzIHNob3VsZCBiZSBzdXBwbGllZCBieSBjYWxsZXJzCkBAIC0xNDYsNyArMTQ2LDcgQEAg
cHVibGljOgogCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxs
aW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24g
Y2xlYXIoKSBhYm92ZS4KLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOwogCiAgICAg
ZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxseSB1
c2VkIGFueSBhbHBoYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAppbmRleCA5OWI5ZDVjYWRlNzNlMGMxZmFkMDlhNzdjZjVmNmRiMjk4YzM3
YWE1Li45MDY5NWI0NDU2M2EwOGI0ZDBjYzZkMzZjNGZmZDgyZDUxY2ExZjg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC04Mzcs
NyArODM3LDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAgIHJldHVybiBtX3ByaXZhdGUt
PmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhh
LCBmbGlwWSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllcjo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpCitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllcjo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKaW5kZXggNWVhNTU4NzExMDU5MzdlZWU0MDYzZTcyNTkyYTFhZTU1NzE1
NDVjYi4uYzJlMGNmN2I4MTMwODFkMTUzMzdkMGE5MmU2Y2EzMTdkMGFlMDgxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MjMsNyAr
NDIzLDcgQEAgcHVibGljOgogICAgIC8vIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9j
aHJvbWUvdHJ1bmsvc3JjL2dwdS9jb21tYW5kX2J1ZmZlci9zZXJ2aWNlL2dsZXMyX2NtZF9jb3B5
X3RleHR1cmVfY2hyb21pdW0uY2MgdmlhIHNoYWRlcnMuCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0
IHRleHR1cmUsIEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGZsaXBZKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpOwogCiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlOwog
ICAgIE5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4
NTZlN2RkYzg1OTY4NjQ3MzYxOGRhMmExNGQ2Yzc5MC4uZDkxOWY1NDMzN2E0NTdjMTBlYzY4YmE1
YTIwZWI3ZGUzYjhmZWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250ZXh0JiBjLCBjb25zdCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQoYywgcik7IH0KICAgICB2aXJ0
dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEKiwgUGxhdGZvcm0zRE9iamVjdCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNE
ZW51bSwgR0MzRGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJl
bG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmluZGV4IGRmOTQxYTU2NmE5ZTQ2OTI3
NzI3YmExZWM2ODQ4ZjIxNjgwM2E0NWIuLjAzNDY2NjViMzZkYmU1NjYxYTA5Y2U3MWM0ZWNiNGEw
YzFlOGUyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlUHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2VQdHIuaApAQCAtMjksNiArMjksNyBAQAogI2RlZmluZSBOYXRpdmVJbWFnZVB0cl9o
CiAKICNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogdHlwZWRlZiBzdHJ1
Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKICNlbGlmIFVTRShDQUlSTykKICNpbmNsdWRlICJSZWZQ
dHJDYWlyby5oIgpAQCAtMzgsMjEgKzM5LDE0IEBAIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENH
SW1hZ2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gRklYTUU6IE5hdGl2ZUltYWdl
UHRyIGFuZCBQYXNzTmF0aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHNtYXJ0Ci0vLyBwb2ludGVycyAo
c2VlIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKS4KICNpZiBVU0UoQ0cp
Ci10eXBlZGVmIENHSW1hZ2VSZWYgTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShDQUlSTykKIHR5cGVkZWYgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7Ci10eXBlZGVmIFBhc3NSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBQYXNzTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoV0lOR0RJKQog
dHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogCi0j
aWYgIVVTRShDQUlSTykKLXR5cGVkZWYgTmF0aXZlSW1hZ2VQdHIgUGFzc05hdGl2ZUltYWdlUHRy
OwotI2VuZGlmCi0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggZjdmYjFh
YzQ2OGIwNjgxMTBlYmEyMzJmMmJjNmZmMDYyNmVmYmEyMC4uZDZkZTc2MmMxZmUyYmY4NDZhYWFl
MjQ1M2M2YzU1YjBiYWRjYTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjQ3LDcgKzI0
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICBib29sIHZp
ZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKICAgICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0
cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwogCiAgICAgdm9pZCBjcmVh
dGVPcGVuR0xWaWRlb091dHB1dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMTU0Mzdk
ZGQ4ZWQ2ZjNkMGEyYmRiZTU1ZThmMzFkZmE3YzQ2Y2RkZi4uYzc3NzZlMDRmYzBmN2IxNDYzMDk0
ZDE0OTA5Y2Y3YzUwOTNmOWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yMzQ2LDEw
ICsyMzQ2LDEwIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgcmV0dXJuIG1fdmlkZW9U
ZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodmlkZW9UZXh0
dXJlLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxl
dmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlw
WSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2ZUltYWdlUHRyIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwotICAgIHJldHVybiBtX2xhc3RJbWFnZS5nZXQo
KTsKKyAgICByZXR1cm4gbV9sYXN0SW1hZ2U7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcAppbmRleCAyMzBhOGY2YjcyMWI1MTVhMzFlNTIwMjZlZmIwZGVhNGQ0YzAw
MDFhLi41NmY3OTFkOTgzZTdhY2YyYmRlN2QwNThiNDI3NjQwMDlhMTBmZWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKQEAgLTEwMDgsMTYgKzEwMDgsMTYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENv
bnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkg
ewotICAgICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CisgICAgICAgIGF1dG8gbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAvLyBGSVhNRTogcHJvYmFibHkgZG9uJ3QgbmVlZCBtX3VuY29ycmVj
dGVkQ29udGVudHNJbWFnZSBhdCBhbGwgbm93LgotICAgICAgICBpZiAobV91bmNvcnJlY3RlZENv
bnRlbnRzSW1hZ2UgJiYgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UuZ2V0KCkgPT0gbmV3SW1h
Z2UpCisgICAgICAgIGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9PSBuZXdJbWFnZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIG1fdW5jb3JyZWN0ZWRDb250
ZW50c0ltYWdlID0gbmV3SW1hZ2U7Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBu
ZXdJbWFnZTsKKyAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSBXVEZNb3ZlKG5l
d0ltYWdlKTsKKyAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IG1fdW5jb3JyZWN0ZWRD
b250ZW50c0ltYWdlOwogCiAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50
c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcAppbmRleCBjZDU3ZWU0ODVlYTgwYzZjZjM0N2FiM2JkOTczN2Q1OTk5ZTEwMjgy
Li5iZGEwZGMyODFjOTM3ZGNkZjJkYjE1YWM3MTI4YTIzOTRkNzU3NGFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZl
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdl
KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX3NpemUoY2Fpcm9TdXJmYWNl
U2l6ZShuYXRpdmVJbWFnZS5nZXQoKSkpCiAgICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVs
KDApCkBAIC01OCw3ICs1OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqCiB7CiAgICAgbV9m
cmFtZXMuZ3JvdygxKTsKICAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFj
ZV9nZXRfY29udGVudChuYXRpdmVJbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsK
LSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gbmF0aXZlSW1hZ2U7CisgICAgbV9mcmFtZXNbMF0u
bV9pbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwogICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1l
dGFkYXRhID0gdHJ1ZTsKIAogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwpAQCAtNzIsNyArNzIs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogCiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAot
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJy
ZW50RnJhbWUpOworICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVu
dEZyYW1lKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0
IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNv
dW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICBhdXRvIHN1cmZh
Y2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgaWYgKCFzdXJmYWNl
KSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNTgsOCArMTU4LDggQEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJv
b2wgY2xlYXJNZXRhZGF0YSkKICAgICBpZiAoY2xlYXJNZXRhZGF0YSkKICAgICAgICAgbV9oYXZl
TWV0YWRhdGEgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWUg
PSBudWxscHRyOworICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAgIG1faW1hZ2UgPSBudWxscHRy
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGls
aXRpZXMuY3BwCmluZGV4IGJlOTcwMTBiODZmMzA4YTFlYmVhYzcxMzBlMWUzYTBiNWRkYmIzZjYu
LmRkOGIwOTc4YWRiZGFiNDZjNTg3MTZmNjIzMTY5MGJlZjNlMzg5MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQo
Y2Fpcm9fdCogY3IsIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IEludFNpegogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCi1QYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weUNh
aXJvSW1hZ2VTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogb3JpZ2luYWxTdXJmYWNlKQorUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gY29weUNhaXJvSW1hZ2VTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCog
b3JpZ2luYWxTdXJmYWNlKQogewogICAgIC8vIENhaXJvIGRvZXNuJ3QgcHJvdmlkZSBhIHdheSB0
byBjb3B5IGEgY2Fpcm9fc3VyZmFjZV90LgogICAgIC8vIFNlZSBodHRwOi8vbGlzdHMuY2Fpcm9n
cmFwaGljcy5vcmcvYXJjaGl2ZXMvY2Fpcm8vMjAwNy1KdW5lLzAxMDg3Ny5odG1sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRp
ZXMuaAppbmRleCBhZGFiMGU1Yzc4Mzg2Yjg5MmFiNWI5YzQzMWE2N2RkMTM5ZWJkZjg1Li43MmI1
ZTczMzNkOGM5NjEyYTdhMzZlZjBhZjg1MzFjYWRjM2NiYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKQEAg
LTU1LDcgKzU1LDcgQEAgY2Fpcm9fb3BlcmF0b3JfdCB0b0NhaXJvT3BlcmF0b3IoQ29tcG9zaXRl
T3BlcmF0b3Igb3ApOwogY2Fpcm9fb3BlcmF0b3JfdCB0b0NhaXJvT3BlcmF0b3IoQmxlbmRNb2Rl
IGJsZW5kT3ApOwogdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBj
YWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY2Fpcm9fb3BlcmF0b3JfdCBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7Ci1QYXNz
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weUNhaXJvSW1hZ2VTdXJmYWNlKGNhaXJvX3N1cmZh
Y2VfdCopOworUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weUNhaXJvSW1hZ2VTdXJmYWNlKGNh
aXJvX3N1cmZhY2VfdCopOwogCiB2b2lkIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4
dChjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3QqIHRvLCBjb25zdCBJbnRTaXplJiBvZmZz
ZXQsIGNvbnN0IEludFJlY3QmKTsKIHZvaWQgY29weVJlY3RGcm9tT25lU3VyZmFjZVRvQW5vdGhl
cihjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3N1cmZhY2VfdCogdG8sIGNvbnN0IEludFNp
emUmIG9mZnNldCwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpLCBj
YWlyb19vcGVyYXRvcl90ID0gQ0FJUk9fT1BFUkFUT1JfT1ZFUik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGNjNzA0NjE0N2FlODFmMWZhZGFhNmQ4NDE2MjQ5ODBjNmZk
ZmNiZjEuLjhjNDE4NmQ3MWU1M2ExOTA3ZTkyZDczYTJiMDE2NDdmZmQ2NmIxYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKG1faW1hZ2UtPmRhdGEoKSwg
dHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJh
bWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAg
ICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBI
VE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVu
IGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGYwNzkyMGYwZDIzMjQ2MmM4ZmI0MWEwMzIy
ZDgyMmFjOWQ1ZWQzMDcuLjNjZjQ1NDNmMjA1ZWQ5OTQ5ODg2MTA5MjJjY2RkNzcyNWVlMGMxNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI1OSwxOCArMjU5LDE2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0
IGJvcmRlclRoaWNrbmVzcykKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIs
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0g
ICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUHRyLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7
CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IGlt
YWdlUHRyOwotCiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNhdmUoKTsKIAogICAgIC8vIFNldCB0
aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCBkMGRl
N2ExN2M2ODY1MTQ2NWFlN2QwZGE3MjJlZDVlZDQwYmQwMjBlLi4wNDUzYTYyNTdmMGRlYzc5NGUz
NzhmZWE1NjFjMmI3MTZlMzBhMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMjM1LDcg
KzIzNSw3IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWhhdmlvCiAgICAgICAgIHJldHVybiBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKGNvcHlDYWlyb0ltYWdlU3VyZmFjZShtX2RhdGEubV9zdXJmYWNlLmdldCgp
KSk7CiAKICAgICAvLyBCaXRtYXBJbWFnZSB3aWxsIHJlbGVhc2UgdGhlIHBhc3NlZCBpbiBzdXJm
YWNlIG9uIGRlc3RydWN0aW9uCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUobV9kYXRh
Lm1fc3VyZmFjZSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4obV9kYXRhLm1fc3VyZmFjZSkpOwogfQogCiBCYWNraW5nU3RvcmVDb3B5IElt
YWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBJ
bWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+
JiBsb29rVXBUYWJsZSkKICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKG1f
ZGF0YS5tX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0
KCkpOwogfQogCi1QYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weVN1cmZhY2VUb0ltYWdl
QW5kQWRqdXN0UmVjdChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIEludFJlY3QmIHJlY3QpCitS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgSW50UmVjdCYgcmVjdCkKIHsKICAgICBjYWlyb19zdXJm
YWNlX3R5cGVfdCBzdXJmYWNlVHlwZSA9IGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSk7
CiAKQEAgLTMwMSw3ICszMDEsNyBAQCBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weVN1
cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJmYWNlX3QqIHN1cgogfQogCiB0ZW1w
bGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEm
IGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdl
dEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGRh
dGEsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5pbml0aWFsaXplZChyZWN0Lndp
ZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CiAKQEAgLTM3NywxMiArMzc3LDEyIEBAIFBhc3NS
ZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBJbWFnZUJ1ZmZlCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1Jl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdl
RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAg
IHJldHVybiBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihyZWN0LCBtX2RhdGEsIG1fc2l6ZSk7
CiB9CiAKLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVt
dWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0p
IGNvbnN0CitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0
aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxQcmVtdWx0aXBsaWVkPihyZWN0LCBtX2Rh
dGEsIG1fc2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDAxYjdkNjkyY2RiZDdhYjRkMjJiYmMxMzk5
YzEwMzI4ZjU3ZTVlNDcuLjMyYmQwYjVjYjU1M2ZjZGVkZGJhYWQyZjk2MzYxMzAxZjVkNDZlY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcElt
YWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1h
cEltYWdlQ0cuY3BwCkBAIC01OCwxOCArNTgsMTcgQEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJv
b2wgY2xlYXJNZXRhZGF0YSkKICAgICBtX29yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50
YXRpb247CiAgICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsKIAotICAgIGlmIChtX2ZyYW1lKSB7
CisgICAgaWYgKG1faW1hZ2UpIHsKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICAgICAgc3ViaW1h
Z2VDYWNoZSgpLmNsZWFySW1hZ2UobV9mcmFtZSk7CisgICAgICAgIHN1YmltYWdlQ2FjaGUoKS5j
bGVhckltYWdlKG1faW1hZ2UuZ2V0KCkpOwogI2VuZGlmCi0gICAgICAgIENHSW1hZ2VSZWxlYXNl
KG1fZnJhbWUpOwotICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxw
dHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFJldGFpblB0cjxDR0ltYWdl
UmVmPiYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2Vy
dmVyKQogICAgICwgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgwKQogICAgICwgbV9pbWFnZU9y
aWVudGF0aW9uKE9yaWdpblRvcExlZnQpCkBAIC04OSw4ICs4OCw4IEBAIEJpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQog
ICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUp
CiB7Ci0gICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKTsKLSAgICBD
R0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZSk7CisgICAgQ0dGbG9hdCB3
aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSk7CisgICAgQ0dGbG9hdCBoZWlnaHQg
PSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKICAgICBtX2RlY29kZWRTaXplID0gd2lk
dGggKiBoZWlnaHQgKiA0OwogICAgIG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CiAK
QEAgLTk5LDcgKzk4LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJ
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgbV9zaXplUmVzcGVjdGluZ09yaWVu
dGF0aW9uID0gbV9zaXplOwogCiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1sw
XS5tX2ZyYW1lID0gQ0dJbWFnZVJldGFpbihjZ0ltYWdlKTsKKyAgICBtX2ZyYW1lc1swXS5tX2lt
YWdlID0gV1RGTW92ZShpbWFnZSk7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IHRydWU7
CiAgICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwogCkBAIC0xMzYsNyArMTM1
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJh
bWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFoYXZlRnJhbWVBdElu
ZGV4KDApKSB7CisgICAgaWYgKCFoYXZlRnJhbWVJbWFnZUF0SW5kZXgoMCkpIHsKICAgICAgICAg
SW50U2l6ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKICAgICAgICAg
aWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTE0Nyw3ICsxNDYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNv
bGlkQ29sb3IoKQogCiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IG51bGxwdHI7CiAgICAgaWYgKG1f
ZnJhbWVzLnNpemUoKSkKLSAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2ZyYW1lOworICAg
ICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCk7CiAKICAgICBpZiAoIWltYWdl
KQogICAgICAgICByZXR1cm47CkBAIC0xNzMsMTQgKzE3MiwxNCBAQCB2b2lkIEJpdG1hcEltYWdl
OjpjaGVja0ZvclNvbGlkQ29sb3IoKQogCiBDR0ltYWdlUmVmIEJpdG1hcEltYWdlOjpnZXRDR0lt
YWdlUmVmKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KDApOworICAgIHJldHVybiBmcmFt
ZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKIH0KIAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgc2l6ZV90
IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7Cisg
ICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwog
ICAgICAgICBpZiAoY2dJbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwg
Q0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKSkgPT0gc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBj
Z0ltYWdlOwogICAgIH0KQEAgLTE5MywxMSArMTkyLDExIEBAIFJldGFpblB0cjxDRkFycmF5UmVm
PiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkKIHsKICAgICBzaXplX3QgY291bnQgPSBm
cmFtZUNvdW50KCk7CiAgICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIAogICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZB
cnJheUNyZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJ
bWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFtZUF0SW5kZXgoaSkpCisgICAgICAgIGlmIChDR0ltYWdl
UmVmIGN1cnJGcmFtZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpKQogICAgICAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJyRnJhbWUpOwogICAgIH0KICAgICByZXR1cm4g
YWRvcHRDRihhcnJheSk7CkBAIC0yMTQsMTIgKzIxMywxMiBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKICAgICAvLyBOZXZlciB1c2Ug
c3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYgY29udGV4dHMuCiAgICAgaWYg
KHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQotICAgICAg
ICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1l
KSk7CisgICAgICAgIGltYWdlID0gY29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgobV9jdXJy
ZW50RnJhbWUpOwogICAgIGVsc2UgewogICAgICAgICBDR1JlY3QgdHJhbnNmb3JtZWREZXN0aW5h
dGlvblJlY3QgPSBDR1JlY3RBcHBseUFmZmluZVRyYW5zZm9ybShkZXN0UmVjdCwgQ0dDb250ZXh0
R2V0Q1RNKGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgZmxvYXQgc3Vic2FtcGxp
bmdTY2FsZSA9IHN0ZDo6bWluPGZsb2F0PigxLCBzdGQ6Om1heCh0cmFuc2Zvcm1lZERlc3RpbmF0
aW9uUmVjdC5zaXplLndpZHRoIC8gc3JjUmVjdC53aWR0aCgpLCB0cmFuc2Zvcm1lZERlc3RpbmF0
aW9uUmVjdC5zaXplLmhlaWdodCAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKIAotICAgICAgICBpbWFn
ZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3Vic2FtcGxpbmdTY2FsZSk7CisgICAg
ICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5n
U2NhbGUpOwogICAgIH0KIAogICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdl
IHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgpAQCAtMjQ1LDI0ICsyNDQsMjQgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEYKICAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRp
b24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKICAgICAgICAgb3JpZW50YXRpb24gPSBm
cmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKLSAgICBjdHh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVj
dCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGN0eHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21w
b3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZl
cigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAKLVBhc3NO
YXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KHNpemVf
dCBpbmRleCkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVk
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChpbmRleCA+PSBmcmFt
ZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKGluZGV4ID49IG1f
ZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgaWYgKGluZGV4
ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAg
IGNhY2hlRnJhbWUoaW5kZXgsIDApOwogCiAgICAgaWYgKCFtX2ZyYW1lc1tpbmRleF0ubV9zdWJz
YW1wbGluZ0xldmVsKQotICAgICAgICByZXR1cm4gQ0dJbWFnZVJldGFpbihtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZSk7CisgICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKIAot
ICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVy
biBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHAKaW5kZXggNmMwM2EyY2VmODQ2MDY1NjFlYTA3ZWI5MjhmMWNmMjk1Zjlm
NWUzNi4uOTlmMDlkYjY3YmE1NDI4MmRjNGVkNzA1YWU0MTYzODAzMzcxOTNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHAKQEAgLTMzMywxNSArMzMzLDE1IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sCiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKGRlY29kZXIuY3Jl
YXRlRnJhbWVBdEluZGV4KDApKTsKLSAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2Uu
Z2V0KCk7CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdl
QXRJbmRleCgwKTsKKyAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2U7CiAgICAgfSBl
bHNlCiAgICAgICAgIG1fY2dJbWFnZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7CiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2UpOwotICAgIG1faW1hZ2VI
ZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZSk7CisgICAgbV9pbWFnZVdpZHRoID0g
Q0dJbWFnZUdldFdpZHRoKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgbV9pbWFnZUhlaWdodCA9IENH
SW1hZ2VHZXRIZWlnaHQobV9jZ0ltYWdlLmdldCgpKTsKICAgICBpZiAoIW1faW1hZ2VXaWR0aCB8
fCAhbV9pbWFnZUhlaWdodCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNDksNyArMzQ5
LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFn
ZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAvLyBzbywgcmUtcmVuZGVyIGl0IGlu
dG8gYW4gUkdCIGNvbG9yIHNwYWNlLiBUaGUgaW1hZ2UgcmUtcGFja2luZwogICAgIC8vIGNvZGUg
cmVxdWlyZXMgY29sb3IgZGF0YSwgbm90IGNvbG9yIHRhYmxlIGluZGljZXMsIGZvciB0aGUKICAg
ICAvLyBpbWFnZSBkYXRhLgotICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFn
ZUdldENvbG9yU3BhY2UobV9jZ0ltYWdlKTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFj
ZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgQ0dDb2xvclNw
YWNlTW9kZWwgbW9kZWwgPSBDR0NvbG9yU3BhY2VHZXRNb2RlbChjb2xvclNwYWNlKTsKICAgICBp
ZiAobW9kZWwgPT0ga0NHQ29sb3JTcGFjZU1vZGVsSW5kZXhlZCkgewogICAgICAgICBSZXRhaW5Q
dHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0OwpAQCAtMzY0LDIyICszNjQsMjIgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wKIAogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0
bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dFNl
dEludGVycG9sYXRpb25RdWFsaXR5KGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0ludGVycG9sYXRp
b25Ob25lKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCks
IENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdl
KTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVj
dE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0KSwgbV9jZ0ltYWdlLmdldCgp
KTsKIAogICAgICAgICAvLyBOb3cgZGlzY2FyZCB0aGUgb3JpZ2luYWwgQ0cgaW1hZ2UgYW5kIHJl
cGxhY2UgaXQgd2l0aCBhIGNvcHkgZnJvbSB0aGUgYml0bWFwIGNvbnRleHQuCiAgICAgICAgIG1f
ZGVjb2RlZEltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBD
b250ZXh0LmdldCgpKSk7CiAgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgp
OwogICAgIH0KIAotICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQ
ZXJDb21wb25lbnQobV9jZ0ltYWdlKTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFn
ZUdldEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UpOworICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50
ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBzaXpl
X3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UuZ2V0KCkp
OwogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ICE9IDggJiYgYml0c1BlckNvbXBvbmVudCAhPSAx
NikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChiaXRzUGVyUGl4ZWwgJSBiaXRzUGVy
Q29tcG9uZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2l6ZV90IGNvbXBvbmVudHNQ
ZXJQaXhlbCA9IGJpdHNQZXJQaXhlbCAvIGJpdHNQZXJDb21wb25lbnQ7CiAKLSAgICBDR0JpdG1h
cEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKG1fY2dJbWFnZSk7CisgICAgQ0dC
aXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhtX2NnSW1hZ2UuZ2V0KCkp
OwogICAgIGJvb2wgYmlnRW5kaWFuU291cmNlID0gZmFsc2U7CiAgICAgLy8gVGhlc2UgY291bGQg
dGVjaG5pY2FsbHkgYmUgY29tYmluZWQgaW50byBvbmUgbGFyZ2Ugc3dpdGNoCiAgICAgLy8gc3Rh
dGVtZW50LCBidXQgd2UgcHJlZmVyIG5vdCB0byBzbyB0aGF0IHdlIGZhaWwgZmFzdCBpZiB3ZQpA
QCAtNDIxLDcgKzQyMSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9y
OjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAKICAgICBtX2FscGhh
T3AgPSBBbHBoYURvTm90aGluZzsKICAgICBBbHBoYUZvcm1hdCBhbHBoYUZvcm1hdCA9IEFscGhh
Rm9ybWF0Tm9uZTsKLSAgICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8obV9jZ0ltYWdlKSkg
eworICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UuZ2V0KCkpKSB7CiAg
ICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0OgogICAgICAgICBpZiAoIXBy
ZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBtX2FscGhhT3AgPSBBbHBoYURvVW5tdWx0aXBs
eTsKQEAgLTQ2MSwxNCArNDYxLDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgaWYg
KG1faW1hZ2VTb3VyY2VGb3JtYXQgPT0gRGF0YUZvcm1hdE51bUZvcm1hdHMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNv
cHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIobV9jZ0ltYWdlKSkpOworICAgIG1fcGl4ZWxE
YXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlk
ZXIobV9jZ0ltYWdlLmdldCgpKSkpOwogICAgIGlmICghbV9waXhlbERhdGEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIG1faW1hZ2VQaXhlbERhdGEgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IHZvaWQqPihDRkRhdGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRhLmdldCgpKSk7CiAKICAgICB1
bnNpZ25lZCBpbnQgc3JjVW5wYWNrQWxpZ25tZW50ID0gMDsKLSAgICBzaXplX3QgYnl0ZXNQZXJS
b3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3cobV9jZ0ltYWdlKTsKKyAgICBzaXplX3QgYnl0ZXNQ
ZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3cobV9jZ0ltYWdlLmdldCgpKTsKICAgICB1bnNp
Z25lZCBwYWRkaW5nID0gYnl0ZXNQZXJSb3cgLSBiaXRzUGVyUGl4ZWwgLyA4ICogbV9pbWFnZVdp
ZHRoOwogICAgIGlmIChwYWRkaW5nKSB7CiAgICAgICAgIHNyY1VucGFja0FsaWdubWVudCA9IHBh
ZGRpbmcgKyAxOwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBh
aW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0
ZSgwLCAtaW1hZ2VIZWlnaHQpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJ
bWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGltYWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKaW5kZXggYTQ0OTY1NDA0NmFlOGYxMGFiYWQxNjQxNWU2NDYwYWRi
YmJiOGU4OC4uZjM0MmRhMTY1ODExYjIxNzE2M2NmZjE5ZGU0ZjVmMTk5ZGQ4NzY1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcApAQCAtMTYyLDE5ICsxNjIsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNm
b3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAg
ICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZVB0ciwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAg
ICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKGlt
YWdlUHRyKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2UoaW1hZ2UpOwogCi0g
ICAgZmxvYXQgY3VyckhlaWdodCA9IG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQo
KSk7CisgICAgZmxvYXQgY3VyckhlaWdodCA9IG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0
KCkgPyBDR0ltYWdlR2V0V2lkdGgoc3ViSW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChz
dWJJbWFnZS5nZXQoKSk7CiAgICAgaWYgKGN1cnJIZWlnaHQgPD0gc3JjUmVjdC55KCkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMjE2LDEzICsyMTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0
U2kKICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KHN1YmltYWdlUmVjdC5o
ZWlnaHQoKSAvIHlTY2FsZSk7CiAKICNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICAgICAgICAgIGlt
YWdlID0gc3ViaW1hZ2VDYWNoZSgpLmdldFN1YmltYWdlKGltYWdlLmdldCgpLCBzdWJpbWFnZVJl
Y3QpOworICAgICAgICAgICAgc3ViSW1hZ2UgPSBzdWJpbWFnZUNhY2hlKCkuZ2V0U3ViaW1hZ2Uo
c3ViSW1hZ2UuZ2V0KCksIHN1YmltYWdlUmVjdCk7CiAjZWxzZQotICAgICAgICAgICAgaW1hZ2Ug
PSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UuZ2V0KCksIHN1Ymlt
YWdlUmVjdCkpOworICAgICAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVX
aXRoSW1hZ2VJblJlY3Qoc3ViSW1hZ2UuZ2V0KCksIHN1YmltYWdlUmVjdCkpOwogI2VuZGlmCiAg
ICAgICAgICAgICBpZiAoY3VyckhlaWdodCA8IHNyY1JlY3QubWF4WSgpKSB7Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpID09IGN1cnJIZWlnaHQg
LSBDR1JlY3RJbnRlZ3JhbChzcmNSZWN0KS5vcmlnaW4ueSk7Ci0gICAgICAgICAgICAgICAgYWRq
dXN0ZWREZXN0UmVjdC5zZXRIZWlnaHQoQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgLyB5
U2NhbGUpOworICAgICAgICAgICAgICAgIEFTU0VSVChDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdl
LmdldCgpKSA9PSBjdXJySGVpZ2h0IC0gQ0dSZWN0SW50ZWdyYWwoc3JjUmVjdCkub3JpZ2luLnkp
OworICAgICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KENHSW1hZ2VHZXRI
ZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpIC8geVNjYWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQ
b2ludChkZXN0UmVjdC54KCkgLSBzcmNSZWN0LngoKSAvIHhTY2FsZSwgZGVzdFJlY3QueSgpIC0g
c3JjUmVjdC55KCkgLyB5U2NhbGUpKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29u
c3QgRmxvYXRTaQogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKIAogICAg
IC8vIERyYXcgdGhlIGltYWdlLgotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBhZGp1
c3RlZERlc3RSZWN0LCBpbWFnZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRl
eHQsIGFkanVzdGVkRGVzdFJlY3QsIHN1YkltYWdlLmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQg
ZHJhd1BhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKQEAg
LTMxMSw4ICszMTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdAogICAgIGZsb2F0IGFkanVz
dGVkWCA9IHBoYXNlLngoKSAtIGRlc3RSZWN0LngoKSArIHRpbGVSZWN0LngoKSAqIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAvLyBXZSB0cmFuc2xhdGVkIHRo
ZSBjb250ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBvcmlnaW4sIHNvIHN1YnRyYWN0
IGl0IG91dC4KICAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVjdC5oZWlnaHQoKSAtIChwaGFz
ZS55KCkgLSBkZXN0UmVjdC55KCkgKyB0aWxlUmVjdC55KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHBhdHRlcm5UcmFuc2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVIZWlnaHQpOwogCi0gICAgQ0dJ
bWFnZVJlZiB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwot
ICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZSk7CisgICAgYXV0byB0aWxl
SW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgIGZsb2F0IGgg
PSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gc3ViSW1hZ2U7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzI2LDEzICszMjYsMTMg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFn
ZSBvdXQgb2YgYSBwYXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2Yg
dGhlIG9yaWdpbmFsIGltYWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJl
Y2F1c2Ugc3ViLWltYWdlcyBhcmUgb25seSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9u
bHkgcmVuZGVycyB3aGVuIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NF
UlQoaCA9PSBpbWFnZS5oZWlnaHQoKSk7Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGlsZVJlY3QpKTsKKyAgICAgICAg
c3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdl
LmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIG5lZWQgdG8gcGFpbnQg
Z2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBhcnRpYWxseSBsb2FkZWQgaW1h
Z2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJhY2sgdG8gdGhlIGxlc3MgZWZm
aWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAgZmxvYXQgc2NhbGVkVGlsZVdp
ZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRy
YW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdlKTsK
KyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZS5nZXQoKSk7CiAgICAgaWYg
KHcgPT0gaW1hZ2Uuc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFnZS5zaXplKCkuaGVpZ2h0KCkg
JiYgIXNwYWNpbmcud2lkdGgoKSAmJiAhc3BhY2luZy5oZWlnaHQoKSkgewogICAgICAgICAvLyBG
SVhNRTogQ0cgc2VlbXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRvIGludGVncmFsIHNpemVzLiBXaGVu
IHdlIGNhcmUgKGUuZy4gd2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0OiByb3VuZCksCiAgICAgICAg
IC8vIHdlIHNob3VsZCB0aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFuZCBzdGV0Y2ggdGhlIGxhc3Qg
aW1hZ2UgdG8gZml0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4NDYzOTZjMTkwMjdjMmMyYmUyNTVjNzY0YWNh
ZTc2MmZlN2U5ODdhLi4yMTgyMTQ2ZjU3ZTU3MDU1MDY4MmM2ZWQ1ODEwMzU4MWFkZWI0MTY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0
ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWluUHRyPENHSW1hZ2VSZWY+CiAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQml0
bWFwSW1hZ2U6OmNyZWF0ZShpbWFnZS5nZXQoKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShpbWFnZSkpOwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpj
b3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3Igc2Nh
bGVCZWhhdmlvcikgY29uc3QKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZm
ZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGlu
YXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYg
cmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIGlm
IChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0
KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1h
Z2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWMKICAgICByZXR1
cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAorUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdl
RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0
ZW0pIGNvbnN0CiB7CiAgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQog
ICAgICAgICBmbHVzaENvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXggZDRhMDEyYjZmNTdiZjUzOTMw
NjQ3NzdiNmMxMDkzNjZiMjRjNDQ1Yy4uNTAxNWRkMTVhYmZjODI1ZGNlYjAzMjBmMTIwMjljYmE1
MTIxODI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBzaXplX3QgSW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0ltYWdlU291
cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLUNHSW1hZ2VSZWYgSW1hZ2VTb3VyY2U6
OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwpCiB7CiAgICAgaWYgKCFpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTM2NiwxOCArMzY2LDE1IEBAIENHSW1hZ2VSZWYgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtCiAgICAgc3Rh
dGljIGNvbnN0IENGU3RyaW5nUmVmIHhibVVUSSA9IENGU1RSKCJwdWJsaWMueGJpdG1hcC1pbWFn
ZSIpOwogCiAgICAgaWYgKCFpbWFnZVVUSSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYo
KTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwogCiAgICAgaWYgKCFDRkVxdWFsKGltYWdlVVRJLCB4
Ym1VVEkpKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICByZXR1cm4g
aW1hZ2U7CiAgICAgCiAgICAgLy8gSWYgaXQgaXMgYW4geGJtIGltYWdlLCBtYXNrIG91dCBhbGwg
dGhlIHdoaXRlIGFyZWFzIHRvIHJlbmRlciB0aGVtIHRyYW5zcGFyZW50LgogICAgIGNvbnN0IENH
RmxvYXQgbWFza2luZ0NvbG9yc1s2XSA9IHsyNTUsIDI1NSwgIDI1NSwgMjU1LCAyNTUsIDI1NX07
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1hc2tlZEltYWdlID0gYWRvcHRDRihDR0ltYWdl
Q3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0KCksIG1hc2tpbmdDb2xvcnMpKTsKLSAg
ICBpZiAoIW1hc2tlZEltYWdlKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOwotCi0g
ICAgcmV0dXJuIG1hc2tlZEltYWdlLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gbWFza2VkSW1hZ2Ug
PyBtYXNrZWRJbWFnZSA6IGltYWdlOwogfQogCiBib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcAppbmRleCAwMjRjYmZlMDBiNTIyMzM5MzM1OTIwZjlmODUzNGM4MzZkYWNjZjg4Li40OTI3
ZWFiZjhlZDEyYTZjMjFlYWIzMWJmZTYyZjUyYzZiMjRlYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCkBAIC00OTEsMTEgKzQ5MSwxMSBAQCBzdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2Um
IGl0ZW0pCiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLURyYXdOYXRpdmVJbWFnZTo6
RHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZSkKICNpZiBVU0UoQ0cpCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gc3RvcmUgYW4gaW1hZ2Ug
Zm9yIENhaXJvLgotICAgICwgbV9pbWFnZVB0cihpbWFnZVB0cikKKyAgICAsIG1faW1hZ2UoaW1h
Z2UpCiAjZW5kaWYKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKICAgICAsIG1fZGVzdGlu
YXRpb24oZGVzdFJlY3QpCkBAIC01MDcsNyArNTA3LDcgQEAgRHJhd05hdGl2ZUltYWdlOjpEcmF3
TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUm
IGkKICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiB7CiAjaWYgIVVTRShDRykKLSAg
ICBVTlVTRURfUEFSQU0oaW1hZ2VQdHIpOworICAgIFVOVVNFRF9QQVJBTShpbWFnZSk7CiAgICAg
VU5VU0VEX1BBUkFNKG9wKTsKICAgICBVTlVTRURfUEFSQU0oYmxlbmRNb2RlKTsKICNlbmRpZgpA
QCAtNTE2LDcgKzUxNiw3IEBAIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFBhc3NO
YXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpCiB2b2lkIERyYXdOYXRp
dmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogI2lmIFVT
RShDRykKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlUHRyLmdldCgpLCBtX2lt
YWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9zcmNSZWN0LCBtX29wLCBtX2JsZW5kTW9kZSwgbV9v
cmllbnRhdGlvbik7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFn
ZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3Jp
ZW50YXRpb24pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDVhODQ5NjRjNTc5YjMyZmRjMGVjNmVm
MTQ1ZjY0MjYwZjEzNWFmZmYuLjQ3MGYyODI5MTAwODU0YzNjMDVmNmRlZmVkMjE1YjVmYzY0N2Rh
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtNjM5LDIzICs2MzksMjMg
QEAgcHJpdmF0ZToKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKIGNsYXNzIERyYXdOYXRpdmVJ
bWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3
TmF0aXZlSW1hZ2U+IGNyZWF0ZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2
ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpOwogICAgIH0KIAogICAgIEZsb2F0UmVj
dCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVz
dGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKIHByaXZhdGU6Ci0g
ICAgRHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKKyAg
ICBEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOwog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiAjaWYgVVNFKENHKQot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2ltYWdlUHRyOworICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBtX2ltYWdlOwogI2VuZGlmCiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAg
IEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCmluZGV4IDVlNTJlYzkxOTIzZDQ1OWYwODIyMTkxZjY2OWQwYzAwZWVkZjI1OGEu
LjBiZjE0YmVmNzliZDNhYjJmYjczZjZjNzUwODA3MjZkYTQ0MWUzMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTExOSw5ICsxMTksOSBAQCB2b2lkIFJl
Y29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0CiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLXZvaWQgUmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBSZWNvcmRlcjo6ZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pCiB7Ci0gICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3du
Y2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFn
ZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50
YXRpb24pKSk7CisgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRl
bT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKSk7CiAgICAgdXBk
YXRlSXRlbUV4dGVudChuZXdJdGVtKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKaW5kZXggYTVkMmM3MWEyNWViZGJmZTRmM2JhN2ZkYWNkMWYyZGU1ODg2
ZGM1MC4uZWI5OWEzZGRhMDBkMzE3MGNmYzhmMDg2YTQwMjljYmJjZTFjZDNhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7
CiAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2Fs
ZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi0g
ICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNp
emUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24p
OworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uKTsKICNlbmRpZgogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3ND
b250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCBiYTQxNTk3YWExMTAxZGI2MjkwMjNkMjczYjIw
MGU3ODFkMzNhYWM5Li41OWNjMmM5YmU4YjNmZmUxMTE4NmE2ODVkMmU4Y2Y1OTRjMWQzOTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3ND
b250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNv
ZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgw
KTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9yIHRleEltYWdl
MkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0aXBseUFscGhh
IGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZvciBlYWNoIHBp
eGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0lj
b25FZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwu
Y3BwCmluZGV4IDljOTJjMDg1M2MyNjFjNzYwYTdjMDgxZjZjODdlOTkwYjFiODhkYWIuLjA3YmVi
ZTY5NDljMWM4NGExZTc4NjQyMWMwZTlkN2FmNzc3ZTc2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMTAgKzUxLDEwIEBAIEljb246On5J
Y29uKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBJY29uOjpwYWludChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVh
bWVyQ2Fpcm8uY3BwCmluZGV4IGVlMjcyNzdmZjBiN2U5MDMzZjRiOTMzNjAyOGFjZjQyMThiMjBh
NWYuLmM1NWNmZGY5N2I3ZDQzYzVkMzRmMmY5YzU1NjM3NmY1YTk2YTZmODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1l
ckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgSW1hZ2VHU3RyZWFt
ZXI6OkltYWdlR1N0cmVhbWVyKEdzdFNhbXBsZSogc2FtcGxlKQogCiAgICAgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRl
X2Zvcl9kYXRhKGJ1ZmZlckRhdGEsIGNhaXJvRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUp
KTsKICAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZS5nZXQoKSkgPT0gQ0FJ
Uk9fU1RBVFVTX1NVQ0NFU1MpOwotICAgIG1faW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKHN1
cmZhY2UucmVsZWFzZSgpKTsKKyAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZN
b3ZlKHN1cmZhY2UpKTsKIAogICAgIGlmIChHc3RWaWRlb0Nyb3BNZXRhKiBjcm9wTWV0YSA9IGdz
dF9idWZmZXJfZ2V0X3ZpZGVvX2Nyb3BfbWV0YShidWZmZXIpKQogICAgICAgICBzZXRDcm9wUmVj
dChGbG9hdFJlY3QoY3JvcE1ldGEtPngsIGNyb3BNZXRhLT55LCBjcm9wTWV0YS0+d2lkdGgsIGNy
b3BNZXRhLT5oZWlnaHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JY29uR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JY29uR3RrLmNwcAppbmRleCA1OTQ1ZTFmOGM0YjQ3NDQ4ZjM0ODVmYzY0YmI1NzY1N2Fm
NGMzOGZlLi44ODBjNGM5Nzk0YTVlZDZkM2FjMmY4YTY3NDdjYzIxMjY5MmQyMTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCkBAIC0z
Niw3ICszNiw3IEBACiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGlj
IFN0cmluZyBsb29rdXBJY29uTmFtZShTdHJpbmcgTUlNRVR5cGUpCiB9CiAKIC8vIEZJWE1FOiBN
b3ZlIHRoZSBjb2RlIHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCi1QYXNzUmVmUHRy
PEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lvcy9JY29uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aW9zL0ljb25JT1MubW0KaW5kZXggMjE1OTE1ZjI4YTE5MjE3MjM5NmQ0NmYwODZkMjI0OWI4MWQ5
ZDc2YS4uMzZiMjRmNWNmZjBhNmI2MWU1NDU3NDY3MzJiNjI2Y2QzOTg3Y2I0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotSWNvbjo6SWNvbihDR0ltYWdl
UmVmIGltYWdlKQorSWNvbjo6SWNvbihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAg
OiBtX2NnSW1hZ2UoaW1hZ2UpCiB7CiB9CkBAIC00MiwxNyArNDIsMTcgQEAgSWNvbjo6fkljb24o
KQogewogfQogCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVh
dGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qZmlsZW5hbWVzKi8pCiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNv
bkZvckltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlUmVmKQorUmVmUHRyPEljb24+IEljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQogewot
ICAgIGlmICghaW1hZ2VSZWYpCisgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaW1hZ2VSZWYpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEljb24oaW1hZ2UpKTsKIH0KIAogdm9pZCBJY29uOjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCmluZGV4IDRjZmM1
MmZkYzEzNTdkZWYxNjkzZGExNzlhYjg0MmU2YzQ1OGY5OTQuLmU0NjA1ZGUyMDAzYmRmMDY2Mzcz
NTAzNzAwYWIwMTAyZDZjMzU2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JY29uTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJJbnRSZWN0
LmgiCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIlVU
SVV0aWxpdGllcy5oIgotI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbXBvcnQgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDcsNyArNDcsNyBAQCBJY29uOjp+SWNvbigpCiB9CiAKIC8vIEZJWE1FOiBN
b3ZlIHRoZSBjb2RlIHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCi1QYXNzUmVmUHRy
PEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBmZjA3MTMxYTYxZmNlZDA0NTg2YjM3MmQ5YmEy
MDc5YTk4NzNjMzhiLi5mYTAxMWFhODgxNjMwMzAwMDk0NDk4ZWJjMGZmY2E5ZmI5YzMwMzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1t
CkBAIC05NSw3ICs5NSw3IEBAIENGRGF0YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2Vu
dGF0aW9uKCkKIAogICAgIFZlY3RvcjxDR0ltYWdlUmVmPiBpbWFnZXM7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bUZyYW1lczsgKytpICkgewotICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZy
YW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwogICAgICAgICBpZiAoY2dJbWFnZSkKICAgICAgICAg
ICAgIGltYWdlcy5hcHBlbmQoY2dJbWFnZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCmluZGV4IGE3ODA3MGQ5YWFhZjdmNGUy
YTMxODllZTE0OGE2YTVjNzkzODhjMDUuLmEzOTQ2Y2FmNGY4M2UwMGNmZDFiOTlhNThmMmM5OTIy
MzE3OWI0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JY29uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SWNvbldpbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgSWNvbjo6fkljb24oKQogfQogCiAvLyBGSVhN
RTogTW92ZSB0aGUgY29kZSB0byBDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFzc1Jl
ZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcykKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXggODM1ZWNmM2Y0ZmVlZWI4YTBkZmE4ZDM2
OTczMTI4ZjNiODA3YjkyNi4uOWFjNTU5YzgxNTcwY2RiZDM5MjMyMzU5YzMwYjEzMGVkMTY3NWU4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNHV2luLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBh
c3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFw
KQorUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1h
cCkKIHsKICAgICBESUJTRUNUSU9OIGRpYlNlY3Rpb247CiAgICAgaWYgKCFHZXRPYmplY3QoaEJp
dG1hcCwgc2l6ZW9mKERJQlNFQ1RJT04pLCAmZGliU2VjdGlvbikpCkBAIC01NCw5ICs1NCw5IEBA
IFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0
bWFwKQogICAgICAgICBkaWJTZWN0aW9uLmRzQm0uYm1XaWR0aEJ5dGVzLCBkZXZpY2VSR0JDb2xv
clNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRGaXJzdCkpOwogCiAgICAgLy8gVGhlIEJpdG1hcEltYWdlIHRha2VzIG93bmVy
c2hpcCBvZiB0aGlzLgotICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBjZ0ltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250
ZXh0LmdldCgpKSk7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcEltYWdlKGNnSW1h
Z2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcEltYWdlKFdURk1vdmUoY2dJbWFn
ZSkpKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJt
cCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFn
ZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lSW1h
Z2VBdEluZGV4KGkpLmdldCgpOwogICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0lt
YWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgp
KSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwog
ICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDI5YTIwMjNk
YjYzYTkxNDM0YzM5NDhlYWE1NTIzYmI2MWZlODEwNzUuLmRhYjk2YTM4YzU0ODEwMmFhZTI3YWEw
MTllZWI5OWU1YThjNDIyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6
Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKK1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6
OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiB7CiAgICAgRElCU0VDVElPTiBkaWJTZWN0aW9uOwog
ICAgIGlmICghR2V0T2JqZWN0KGhCaXRtYXAsIHNpemVvZihESUJTRUNUSU9OKSwgJmRpYlNlY3Rp
b24pKQpAQCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IHN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb193aW4zMl9zdXJmYWNlX2NyZWF0ZV93aXRoX2RpYihD
QUlST19GT1JNQVRfQVJHQjMyLCBkaWJTZWN0aW9uLmRzQm0uYm1XaWR0aCwgZGliU2VjdGlvbi5k
c0JtLmJtSGVpZ2h0KSk7CiAKLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShzdXJmYWNl
LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShzdXJm
YWNlKSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBi
bXAsIGNvbnN0IEludFNpemUqIHNpemUpCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNv
bnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIGF1dG8gc3VyZmFj
ZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCBmYzg3ZjgzNDAzMzE5NTU3M2Y1NjdmYzA1
OGM3YzczZDg1OGExOTdhLi5iMzU0N2Q5NGU4MDhmODc0YWVkOWRhMGYyOTFiZWNlMjBhNjQ2NDM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuaApAQCAtOTgsNyArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIC8vIFJldHVybnMgYSBjYWxsZXItb3duZWQgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBu
YXRpdmUgaW1hZ2UgZGF0YS4KICAgICAgICAgLy8gKEFjdHVhbCB1c2U6IFRoaXMgcG9pbnRlciB3
aWxsIGJlIG93bmVkIGJ5IEJpdG1hcEltYWdlIGFuZCBmcmVlZCBpbgogICAgICAgICAvLyBGcmFt
ZURhdGE6OmNsZWFyKCkpLgotICAgICAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJ
bWFnZSgpIGNvbnN0OworICAgICAgICBOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkg
Y29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OwogICAgICAgICBjb25zdCBJ
bnRSZWN0JiBvcmlnaW5hbEZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxGcmFt
ZVJlY3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAppbmRleCAzZmU3MDQw
MjM0MTlkOTc1M2IxMzk5ZDlmNmMwMGI2NzM5NDUxMjk2Li43YjQxMjk1Zjg1NzM1OGZiYmYzNWMx
YjA1MjVlOGQ2Y2MzNTIwZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3Bw
CkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc05hdGl2ZUlt
YWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAogICAgICAgICByZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KG1fYnl0
ZXMpKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VD
R1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3Bw
CmluZGV4IGFkMjU5ODk2ODMwYTQ5YTM5ODMwOGM4NDIxOTZmMmM5NzYxOGIwMTguLjM2Y2Q2NTE2
ZTgwZjE3NDhiZmVhYjc3YTkzMDI3MWMxMjFkZTgwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAtMTI4LDcgKzEyOCw2IEBAIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKQogICAgIGlmICghaGJtcCB8fCAhZHJhd0NvbnRleHQpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgQ0dJbWFnZVJlZiBzcmNJbWFnZSA9IGltZy0+Z2V0Q0dJbWFnZVJl
ZigpOwogICAgIENHUmVjdCByZWN0OwogICAgIHJlY3Quc2l6ZSA9IEludFNpemUoaW1nLT5zaXpl
KCkpOwogICAgIHJlY3Qub3JpZ2luLnggPSAwOwpAQCAtMTM3LDcgKzEzNiw3IEBAIERyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQogICAgIENHQ29udGV4dFNjYWxlQ1RNKGRyYXdDb250ZXh0LCAxLCAtMSk7
CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dD
b250ZXh0RmlsbFJlY3QoZHJhd0NvbnRleHQsIHJlY3QpOwotICAgIGlmIChzcmNJbWFnZSkgewor
ICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5nZXRDR0ltYWdlUmVmKCkpIHsKICAgICAgICAg
Q0dDb250ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOwog
ICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHNyY0ltYWdlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA0MmVh
NWVlNTM0MjFhNzdkMDdlMzRlNmY4MGI0MzNjNjIwNzM3YjhjLi5jMTVmYWZiZDhlYTFiNjEzMjQ4
NjU2NTRkOTQ5NDJkZmVkNDY1MzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKQEAgLTE4MCwxNyArMTgwLDE3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250
YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpCiB9
CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1h
Z2UgdG8gdGhlIGNhbGxlciBzbyBQYXNzTmF0aXZlSW1hZ2VQdHIgbmVlZHMKKy8vIFBhc3NlcyBv
d25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdl
UHRyIG5lZWRzCiAvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4KLVBhc3NOYXRpdmVJbWFn
ZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQorTmF0aXZlSW1hZ2VQ
dHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKIHsKICAgICBpZiAoIW1f
cGFnZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Ly8gQ2Fpcm8gZG9lcyBub3QgdXNlIHRoZSBhY2NlbGVyYXRlZCBkcmF3aW5nIGZsYWcsIHNvIGl0
J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0
byBhbGxvY2F0ZSBpbWFnZQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggODcwZjZj
ODVjNWU2ODRlMTc3YzMwZDE2YzIxNjZhMzQwZGNkNWE3Yi4uNDkxZGRmYjNjMjEzOWVmODgyMTAx
ZDFhZjQ1YjVhZWYxMTBjNGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKSBv
dmVycmlkZTsKIAogI2lmIFVTRShDQUlSTykKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmNwcAppbmRleCA0ZTE2MWUzZjBkNDRhNmFhNmVhNmMwM2Y1ZWQ5YWJjMTllYmFlYTFkLi43ZTE0
M2RlZDJkNjY5YWIzYWMwOWM0OTZiNGU0YmVlN2RjODdmMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBtX2ltYWdlLT5kcmF3UGF0dGVy
bkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fem9vbSwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBi
bGVuZE1vZGUpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9y
Q29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIG1f
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IDM1OTc1NDI4
OWZjMzA0MjE4Y2RiOGJmMTIwM2I4NzNjMjlmZDUyZDIuLmQyMjRmYzQ2MTJmZDk1YTFhZWE3N2Fm
YjQ0Nzk3NjkyMzUyN2FjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkg
b3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZvckNvbnRhaW5lcihTVkdJbWFn
ZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGQ3MWU2NjQzYjNjMjEyYjJkYjY0NGIzMTUy
OTRiMWMzYmM3NmZjZjguLmI2NTlkNmRiZjlhZDY5OTljM2FjOTYyZGU5NTE1NzgwOTdlMWYzYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQpAQCAtMTcyLDcgKzE3Miw3IEBAICsgKGJv
b2wpYWRkSW1hZ2VUb0NhY2hlOihDR0ltYWdlUmVmKWltYWdlIGZvclVSTDooTlNVUkwgKil1cmwg
Zm9yRnJhbWU6KFdlYkZyYW1lCiAgICAgaWYgKGZyYW1lKQogICAgICAgICB0b3BPcmlnaW4gPSBj
b3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCk7CiAjZW5kaWYKLSAgICByZXR1cm4g
V2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmFkZEltYWdlVG9DYWNoZShpbWFnZSwg
dXJsLCB0b3BPcmlnaW4gPyB0b3BPcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgOiBl
bXB0eVN0cmluZygpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRv
bigpLmFkZEltYWdlVG9DYWNoZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4oaW1hZ2UpLCB1cmwsIHRv
cE9yaWdpbiA/IHRvcE9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3Ry
aW5nKCkpOwogfQogCiArICh2b2lkKXJlbW92ZUltYWdlRnJvbUNhY2hlRm9yVVJMOihOU1VSTCAq
KXVybApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXgg
MjVlYWY1NTA1ZTY3M2QzMzUwOTE2NTEyMWYzYjM0MmRhOTA3OGY1Mi4uZmQ4NzBjMzY0YTM3YTg4
NTE0MDQxMDllZDJiNzRlYTVmYTg4OTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXdXaW4uY3BwCkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpw
bGF0Zm9ybURlc3Ryb3koKQogICAgIHNldFBsYXRmb3JtUGx1Z2luV2lkZ2V0KDApOwogfQogCi1Q
YXNzUmVmUHRyPEltYWdlPiBQbHVnaW5WaWV3OjpzbmFwc2hvdCgpCitSZWZQdHI8SW1hZ2U+IFBs
dWdpblZpZXc6OnNuYXBzaG90KCkKIHsKICNpZiAhVVNFKFdJTkdESSkKICAgICBhdXRvIGhkYyA9
IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKDApKTsKQEAgLTk1MCw3ICs5NTAs
NyBAQCBQYXNzUmVmUHRyPEltYWdlPiBQbHVnaW5WaWV3OjpzbmFwc2hvdCgpCiAKICAgICBTZWxl
Y3RPYmplY3QoaGRjLmdldCgpLCBoYm1wT2xkKTsKIAotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6
Y3JlYXRlKGhibXAuZ2V0KCkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1v
dmUoaGJtcCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCAzM2NiNWRlY2Y2NTFjNjU4NjYzMzk4ZDAx
ZjE2OGUzMTI2ZmNmOWVlLi40ZWVjYmNjOTk3NzQyOTRkMzQ5ZGQxOWNkYjMwMjhiMDQ5YzFiYjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtNjQsNyAr
NjQsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcigpCiAgICAgbV9mbGFn
cyA9IEZsYWc6Ok5vRmxhZ3M7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKK1Jl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIEZsYWdzIGZsYWdzKQogewogICAgIHNpemVfdCBudW1CeXRlcyA9IG51bUJ5dGVz
Rm9yU2l6ZShzaXplKTsKICAgICAKQEAgLTc1LDcgKzc1LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZs
YWdzIGYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFn
cywgZGF0YSkpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCitS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShj
b25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKIHsKICAgICBzaXplX3QgbnVtQnl0ZXMg
PSBudW1CeXRlc0ZvclNpemUoc2l6ZSk7CiAKQEAgLTg2LDcgKzg2LDcgQEAgUGFzc1JlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IElu
dFNpemUmIHNpemUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXpl
LCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFn
cywgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZs
YWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCiB7CiAgICAgQVNT
RVJUKHNoYXJlZE1lbW9yeSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZs
YWdzIGYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFn
cywgc2hhcmVkTWVtb3J5KSk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uIHByb3RlY3Rpb24pCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5LgogICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhh
bmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbik7CkBAIC0xMjQsNyArMTI0LDcgQEAgU2hhcmVhYmxl
Qml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3Ms
IHZvaWQqIGRhdGEpCiB7CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNv
bnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4g
c2hhcmVkTWVtb3J5KQorU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9mbGFncyhmbGFncykKICAgICAsIG1fc2hh
cmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaAppbmRleCA3ODMzODllYzUwZjgzMTlkMTc4YTA0MzQxMjY1N2U0NzQ1MmYzZWZlLi40NTA5
M2E0NTliMGQ2NjdmM2EyNGI4ZDdlMWZjZjU4YzJiODJlOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC03NiwxNiArNzUsMTYgQEAgcHVibGljOgogICAgIH07CiAKICAgICAv
LyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHRoYXQgdXNlcyBtYWxsb2NlZCBtZW1vcnkuCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CiAKICAgICAvLyBDcmVhdGUg
YSBzaGFyZWFibGUgYml0bWFwIHdob3NlIGJhY2tpbmcgbWVtb3J5IGNhbiBiZSBzaGFyZWQgd2l0
aCBhbm90aGVyIHByb2Nlc3MuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBGbGFncyk7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFw
IGZyb20gYW4gYWxyZWFkeSBleGlzdGluZyBzaGFyZWQgbWVtb3J5IGJsb2NrLgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBGbGFncywgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywg
UmVmUHRyPFNoYXJlZE1lbW9yeT4pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1h
cCBmcm9tIGEgaGFuZGxlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Y3JlYXRlKGNvbnN0IEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY3JlYXRlKGNvbnN0IEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKIAogICAgIC8vIENyZWF0ZSBh
IGhhbmRsZS4KICAgICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CkBAIC0xMDYs
NyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgYml0bWFwIGltYWdl
IHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8v
IFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMg
b2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgotICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2U+IGNyZWF0ZUltYWdlKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBj
cmVhdGVJbWFnZSgpOwogCiAjaWYgVVNFKENHKQogICAgIC8vIFRoaXMgY3JlYXRlcyBhIGNvcGll
ZCBDR0ltYWdlUmVmIChtb3N0IGxpa2VseSBhIGNvcHktb24td3JpdGUpIG9mIHRoZSBzaGFyZWFi
bGUgYml0bWFwLgpAQCAtMTE4LDEyICsxMTcsMTIgQEAgcHVibGljOgogI2VsaWYgVVNFKENBSVJP
KQogICAgIC8vIFRoaXMgY3JlYXRlcyBhIEJpdG1hcEltYWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJl
bmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRv
IHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRt
YXAgd29uJ3QgY2hhbmdlLgotICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVD
YWlyb1N1cmZhY2UoKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1
cmZhY2UoKTsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIHZvaWQqKTsKLSAgICBTaGFyZWFibGVCaXRtYXAoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4pOwor
ICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0
cjxTaGFyZWRNZW1vcnk+KTsKIAogI2lmIFVTRShDQUlSTykKICAgICBzdGF0aWMgc2l6ZV90IG51
bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCBhNmIy
YTI4M2RmYjIzNzhlOGViNDE2ZWY1Y2VhMjAyMDBlYjAxYTlkLi4wM2U2ODQxYmYwMzFkMmFiNjA3
MmQwZDc5YTE0NDhmM2VmZTI0ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Y2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc2l6ZV90
IFNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNpemUpCiAgICAgcmV0dXJuIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKGNhaXJvRm9y
bWF0LCBzaXplLndpZHRoKCkpICogc2l6ZS5oZWlnaHQoKTsKIH0KIAotc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlU3VyZmFjZUZyb21EYXRhKHZvaWQqIGRh
dGEsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IGNyZWF0ZVN1cmZhY2VGcm9tRGF0YSh2b2lkKiBkYXRhLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewogICAgIGNvbnN0IGludCBzdHJpZGUgPSBjYWlyb19m
b3JtYXRfc3RyaWRlX2Zvcl93aWR0aChjYWlyb0Zvcm1hdCwgc2l6ZS53aWR0aCgpKTsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpLCBjYWlyb0Zvcm1hdCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpLCBzdHJpZGUpKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWFibGVC
aXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3Is
IGNvbnN0IEkKICAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29u
dGV4dChzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgY29udGV4dCk7CiB9
CiAKLVBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNh
aXJvU3VyZmFjZSgpCitSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUNhaXJvU3VyZmFjZSgpCiB7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2Ug
PSBjcmVhdGVTdXJmYWNlRnJvbURhdGEoZGF0YSgpLCBtX3NpemUpOwogCkBAIC04NywxMyArODcs
MTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VTdXJmYWNlRGF0YSh2b2lkKiB0eXBl
bGVzc0JpdG1hcCkKICAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAqPih0eXBlbGVzc0Jp
dG1hcCktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVDYWlyb1N1cmZhY2Uu
CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQor
UmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKICAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CiAgICAg
aWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShzdXJmYWNlLnJlbGVhc2UoKSk7Cisg
ICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAKaW5kZXggY2U5MzNiNzIzYmYzMWYzNjc1ODEzMGYxZWU1MGM1ODlkZDVj
NmY5MC4uOGUzY2NhNDliNmZlNGI2YTQ4MDVkNmY1OWVlODQ3M2JmNGFhMmYxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xMDYsMTMg
KzEwNiwxMyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEo
dm9pZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqCiAgICAgYml0bWFwLT5kZXJlZigpOyAv
LyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlQ0dJbWFnZS4KIH0KIAotUGFzc1JlZlB0cjxJbWFn
ZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgpCitSZWZQdHI8SW1hZ2U+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0
Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKTsKICAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUocGxh
dGZvcm1JbWFnZS5nZXQoKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274836</attachid>
            <date>2016-03-24 09:22:09 -0700</date>
            <delta_ts>2016-03-24 09:55:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160324092211.patch</filename>
            <type>text/plain</type>
            <size>110366</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uN2JhNjZkOTg5NDA5MDIyZjNkZDQzOTJkN2I3MmE0
NThkMDM3ZTk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMSBAQAorMjAxNi0wMy0yNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1h
Z2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgor
ICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrIHdhcyBk
b25lIHRvIGVuc3VyZSB0aGUgQ0cKKyAgICAgICAgcG9pbnRlciBpcyByZWZjb3VudGVkIGNvcnJl
Y3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYQorICAgICAgICBGcmFtZURh
dGEgc2luY2UgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdl
UmVmLgorCisgICAgICAgIFdpdGggdGhpcyBjaGFuZ2UsIFBhc3NOYXRpdmVJbWFnZVB0ciBpcyBu
b3QgbmVlZGVkIGFueW1vcmUuIFNvIGFsbCB0aGUKKyAgICAgICAgaW5zdGFuY2Ugb2YgUGFzc05h
dGl2ZUltYWdlUHRyIGNhbiBiZSByZXBsYWNlZCBieSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgIENoYW5nZSB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUgUmV0YWluUHRy
PENHSW1hZ2VSZWY+LgorICAgICAgICAgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldE5TSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0lt
YWdlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0RXZhc09iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaDoKKyAgICAgICAgQ2hhbmdlIDAgdG8gbnVsbHB0ciwgUGFzc1JlZlB0ciB0byBSZWZQdHIg
YW5kIFBhc3NOYXRpdmVJbWFnZVB0ciB0bworICAgICAgICBOYXRpdmVJbWFnZVB0ci4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVw
bGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIE1ha2UgTmF0aXZl
SW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIGZvciBDRy4gR2V0IHJpZCBvZiBQYXNzTmF0aXZlSW1h
Z2VQdHIKKyAgICAgICAgc2luY2UgTmF0aXZlSW1hZ2VQdHIgaXMgbm93IGEgc21hcnQgcG9pbnRl
ciBvbiBhbGwgcGxhdGZvcm1zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
UmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIFNp
bmNlIEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHJldHVybnMgYSBSZXRhaW5Q
dHIsIG1vdmUgaXQKKyAgICAgICAgdG8gbV9wZW5kaW5nQ29udGVudHNJbWFnZSB0byByZW1vdmUg
dGhlIHJlZmNvdW50IGNodXJuLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Qml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgUmVwbGFjZSBtX2ZyYW1lIHdpdGgg
bV9pbWFnZSBhbmQgZnJhbWUqIHdpdGggZnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b3B5Q2Fpcm9JbWFnZVN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmg6CisgICAgICAgIFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICBSZXBsYWNlICpGcmFtZSogd2l0aCAqRnJh
bWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2Up
OiBDcmVhdGUgYSBuZXcgTmF0aXZlSW1hZ2VQdHIgc28gaXQgY2FuCisgICAgICAgIGJlIG1vdmVk
IHRvIHRoZSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpjb3B5U3Vy
ZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1h
Z2VEYXRhKToKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKTogTm8gbmVlZCB0byBjYWxsIENHSW1hZ2VSZWxlYXNl
KCkuIEp1c3QgYXNzaWduCisgICAgICAgIG1faW1hZ2UgdG8gbnVsbHB0ciBhbmQgQ0dJbWFnZVJl
bGVhc2UoKSB3aWxsIGJlIGNhbGxlZCBmcm9tIHRoZSBSZXRhaW5QdHIKKyAgICAgICAgZGVzdHJ1
Y3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5z
Y2FsZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBDR0lt
YWdlUmVmIHdpdGggUmV0YWluUHRyPENHSW1hZ2VSZWY+LiBSZXBsYWNlICpGcmFtZSogd2l0aAor
ICAgICAgICAqRnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgVXNlIG1fY2dJbWFnZS5n
ZXQoKSBpbnN0ZWFkIG9mIG1fY2dJbWFnZSB3aGVuIGNhbGxpbmcgQ0cgZnVuY3Rpb25zLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIFJlcGxh
Y2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuIEdldCB0aGUgcmF3IENH
SW1hZ2VSZWYKKyAgICAgICAgZnJvbSB0aGUgTmF0aXZlSW1hZ2VQdHIgd2hlbiBjYWxsaW5nIHRo
ZSBDRyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VB
ZnRlclNjYWxpbmdJZk5lZWRlZCk6IE1vdmUgdGhlIGltYWdlIGFyZ3VtZW50CisgICAgICAgIHdo
ZW4gY2FsbGluZyBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAg
IFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFt
ZSB0aGUgZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJp
YWJsZQorICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVy
cy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdO
YXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoK
KyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ciBh
bmQgdXNlIGNvbnN0YW50IHJlZmVyZW5jZS4gCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAg
ICAgIENhbGwgYSBmdW5jdGlvbiB3aXRoIGl0cyBuZXcgbmFtZS4KKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHA6CisgICAgICAgIChJbWFnZUdTdHJlYW1l
cjo6SW1hZ2VHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29u
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgVXNlIHNtYXJ0IHBvaW50ZXJz
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycyBDR0ltYWdlUmVm
LgorICAgICAgICBBbmQgY2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyIGFuZCAwIHRvIG51bGxw
dHIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24p
OiBHZXQgdGhlIHJhdyBwb2ludGVyIGZyb20gdGhlCisgICAgICAgIHJldHVybmVkIHNtYXJ0IHBv
aW50ZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6IENoYW5n
ZSBQYXNzUmVmUHRyIHRvIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmNyZWF0ZSk6IFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0ci4KKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOiBDYWxsIHRoZSBm
dW5jdGlvbgorICAgICAgICB3aXRoIGl0cyBuZXcgbmFtZSBhbmQgZ2V0IHRoZSByYXcgcG9pbnRl
ciBmcm9tIHRoZSByZXR1cm5lZCBzbWFydCBwb2ludGVyLgorICAgICAgICAKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6Y3JlYXRlKTogUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmdFB0ciBh
bmQgdXNlCisgICAgICAgIHRoZSBtb3ZlIHNlbWFudGljcyBmb3IgcGFzc2luZyB0aGUgYXJndW1l
bnQgdG8gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6IENhbGwgdGhlIGZ1bmN0aW9uCisgICAg
ICAgIHdpdGggaXRzIG5ldyBuYW1lLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0lt
YWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0
aCBOYXRpdmVJbWFnZVB0ci4KKyAgICAgICAgCiAyMDE2LTAzLTE4ICBaaHVvIExpICA8emFjaGxp
QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgQXV0b0ZpbGwgYnV0dG9uIGluIGlucHV0IGZp
ZWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxNWZhNmFmMGIyNmU0ODczNWQ5YTEzMjJjNWI0NDNi
ODdmM2UzZTFkLi5mMTQ1OThlYjAwMzRhMTNhNmY2Y2NiNTM3ZDBiODE3ZTk5YmM0NGU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMjQgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBDaGFuZ2UgTmF0aXZlSW1h
Z2VQdHIgZm9yIENHIHRvIGJlIFJldGFpblB0cjxDR0ltYWdlUmVmPgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDEyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBNaXNjL1dlYkNhY2hlLm1tOgorICAgICAg
ICAoK1tXZWJDYWNoZSBhZGRJbWFnZVRvQ2FjaGU6Zm9yVVJMOmZvckZyYW1lOl0pOgorICAgICAg
ICBXZWJDb3JlOjpNZW1vcnlDYWNoZSgpIGlzIHRha2luZyBhbiBydmFsdWUgTmF0aXZlSW1hZ2VQ
dHIuIFdlIG5lZWQgdG8gY3JlYXRlCisgICAgICAgIE5hdGl2ZUltYWdlUHRyIGZyb20gdGhlIGlt
YWdlIHJhdyBwb2ludGVyIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorCiAyMDE2LTAzLTE4
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIENhY2hl
cyBpbiBTYWZhcmkncyBEZXZlbG9wIG1lbnUgZG9lcyBub3QgZGlzYWJsZSBjYWNoZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggNTg5ZThlZmJhM2VlNGFmZmMyZjY5MmI4NDQ4OTBjY2I4M2Y0MjZjNy4u
ZWU1ZTRiNDZiYzdkOWQzNTc5ZDdlYzg1MGNjY2YxMGRiYzE4MzRhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTI0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91
aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIGZvciBD
RyB0byBiZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQxMgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogUGx1
Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNu
YXBzaG90KToKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorCiAyMDE2
LTAzLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTk2OTUxIGFuZCByMTk3MDMxLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDUzZmU4MWExMTcxY2I1N2Q0NTYyMGE3YjMyOWVjMjg0ZTU2M2IyZTguLjJlMzE5YTg3
NmFkNDUxMzg0ZjY1YzgwYTcyNGExODc4M2VkYzljYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MyBAQAorMjAxNi0wMy0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUs
Y29tPgorCisgICAgICAgIENoYW5nZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTU0MTIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGluYXRlZFN1cmZh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNvcHlUb1RleHR1
cmUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorICAgICAg
ICAKKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpjcmVhdGVTdXJmYWNlRnJvbURhdGEpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNhaXJvU3VyZmFjZSk6CisgICAgICAgIFJlcGxhY2UgUGFz
c1JlZlB0ciB3aXRoIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRt
YXBDRy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2Up
OgorICAgICAgICBSZXBsYWNlIFBhc3NSZWZQdHIgd2l0aCBSZWZQdHIgYW5kIHVzZSB0aGUgbW92
ZSBzZW1hbnRpY3Mgd2hlbiBjYWxsaW5nCisgICAgICAgIEJpdG1hcEltYWdlOjpjcmVhdGUoKS4K
KwogMjAxNi0wMy0xOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEdpdmUgTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBh
Ym91dCBwYXJlbnQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKaW5kZXggMWU2ZmNjZDhlYjQ2OTljMDZhOTljNDIzNmIxOTE5NTFlODVkYzAyZi4uNzEzMTRi
YzI2NzQ1MjhmZGQyMTU2MmU4M2IzMmMxNjE2ZWFmNGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgYm9vbCBIVE1MVmlkZW9F
bGVtZW50OjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gcGxheWVy
KCktPmhhc1ZpZGVvKCkgJiYgcGxheWVyKCktPmhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKTsKIH0K
IAotUGFzc05hdGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IGFkOTQ4Zjk0
NGEzMDgxNmFhNTdiM2M4ZWVhNjAyNDg4MTI0NTY1MTUuLmI0ZDdmMWUxNzBmMWY3M2VjYTQ4NjU2
NDYwN2NkNTdlZjFmNGZlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIGJ5IGNhbnZhcyB0byBnYWlu
IHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi0gICAgUGFzc05hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICAvLyBVc2VkIGJ5IFdlYkdMIHRvIGRvIEdQ
VS1HUFUgdGV4dHVyZXMgY29weSBpZiBwb3NzaWJsZS4KICAgICAvLyBTZWUgbW9yZSBkZXRhaWxz
IGF0IE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoKSBkZWZp
bmVkIGluIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAppbmRleCA3YmY2ODA0ZmNmOGFmYTVjY2VjMDE5NDMwOWJlYzU5NzQ3NzNlMjI3
Li5kNjhmOTg2Y2FhN2IzODhhNTI5ZjNiODM5MGEwZTYzNzNlNmFhYmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKQEAgLTE2MjUsNyArMTYyNSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkZW8sIGNvbnN0IEZsb2F0UmVjCiAgICAgY2hl
Y2tPcmlnaW4odmlkZW8pOwogCiAjaWYgVVNFKENHKSB8fCAoRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJiYgVVNFKEdTVFJFQU1FUl9HTCkgJiYgVVNFKENBSVJPKSkKLSAgICBpZiAoUGFz
c05hdGl2ZUltYWdlUHRyIGltYWdlID0gdmlkZW8tPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KSkgeworICAgIGlmIChOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkpIHsKICAgICAgICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9h
dFNpemUodmlkZW8tPnZpZGVvV2lkdGgoKSwgdmlkZW8tPnZpZGVvSGVpZ2h0KCkpLCBkc3RSZWN0
LCBzcmNSZWN0KTsKICAgICAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkKICAg
ICAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IDk5OTQ2NWVhMzkwNjk3Y2JlMDBmZTZmYTg4Mzhj
MTM4ZTU0NDdhMTcuLjA5OTMwZTBlOGNiMTljYTkxMGIwZTEzYmFjNTYwNzdhNjJmYTM2OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtMjA0LDI5
ICsyMDQsMjQgQEAgdW5zaWduZWQgTWVtb3J5Q2FjaGU6OmxpdmVDYXBhY2l0eSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY2FwYWNpdHkgLSBkZWFkQ2FwYWNpdHkoKTsKIH0KIAotI2lmIFVTRShDRykK
LS8vIEZJWE1FOiBSZW1vdmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFrZSBOYXRpdmVJ
bWFnZVB0ciBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotLy8gcmVtb3ZlIHRo
ZSB1c2FnZSBvZiBDRlJldGFpbigpIGluIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoKSBz
byBhcyB0byBtYWtlIHRoZSBjb2RlIHBsYXRmb3JtLWluZGVwZW5kZW50Lgogc3RhdGljIENhY2hl
ZEltYWdlQ2xpZW50JiBkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Q2FjaGVkSW1hZ2VDbGllbnQ+IGNsaWVudDsKICAgICByZXR1cm4gY2xpZW50
OwogfQogCi1ib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHIg
aW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKQorYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYg
aW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKQogewogICAgIEFTU0VSVChpbWFnZSk7CiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCA9IFNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogICAgIHJlbW92ZUltYWdlRnJvbUNhY2hlKHVy
bCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAvLyBSZW1vdmUgY2FjaGUgZW50cnkgaWYgaXQg
YWxyZWFkeSBleGlzdHMuCiAKLSAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGJpdG1hcEltYWdlID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZShpbWFnZSwgbnVsbHB0cik7CisgICAgUmVmUHRyPEJpdG1hcElt
YWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSksIG51
bGxwdHIpOwogICAgIGlmICghYml0bWFwSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBDYWNoZWRJbWFnZTo6
TWFudWFsbHlDYWNoZWQsIHNlc3Npb25JRCk7CiAKLSAgICAvLyBBY3R1YWwgcmVsZWFzZSBvZiB0
aGUgQ0dJbWFnZVJlZiBpcyBkb25lIGluIEJpdG1hcEltYWdlLgotICAgIENGUmV0YWluKGltYWdl
KTsKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCZkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkp
OwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNp
emUoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKQEAgLTI2NCw3ICsyNTksNiBA
QCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVJbWFnZUZyb21DYWNoZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYQogICAgIC8vIHJlc291cmNlIG1heSBiZSBkZWxldGVk
IGFmdGVyIHRoaXMgY2FsbC4KICAgICBkb3duY2FzdDxDYWNoZWRJbWFnZT4oKnJlc291cmNlKS5y
ZW1vdmVDbGllbnQoJmR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7CiB9Ci0jZW5kaWYKIAogdm9p
ZCBNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2VzKGJvb2wgc2hvdWxkRGVzdHJveURlY29k
ZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmgKaW5kZXggYzg4ZDJkYmQ0ZTZiMWQyNzgwZGRhMDRmY2NhZjliODIzYTQ2
MTdhMC4uNTMxZTlhZmY0YjVhYjA0MGViMWJiZDI4NzZmN2EwYTVmYjkxYTExZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTE1NSwxMiArMTU1LDggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0T3JpZ2luc1dpdGhDYWNoZShTZWN1
cml0eU9yaWdpblNldCYgb3JpZ2lucyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zV2l0aENhY2hlKFNlc3Npb25JRCkgY29uc3Q7CiAK
LSNpZiBVU0UoQ0cpCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgVVNFKENHKSBvbmNlIHdlIGVp
dGhlciBtYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQgcG9pbnRlciBvbiBhbGwgcGxhdGZvcm1z
IG9yCi0gICAgLy8gcmVtb3ZlIHRoZSB1c2FnZSBvZiBDRlJldGFpbigpIGluIE1lbW9yeUNhY2hl
OjphZGRJbWFnZVRvQ2FjaGUoKSBzbyBhcyB0byBtYWtlIHRoZSBjb2RlIHBsYXRmb3JtLWluZGVw
ZW5kZW50LgotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUlt
YWdlUHRyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9u
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0
ciYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwotI2VuZGlmCiAKICAgICAv
LyBwcnVuZURlYWQqKCkgLSBGbHVzaCBkZWNvZGVkIGFuZCBlbmNvZGVkIGRhdGEgZnJvbSByZXNv
dXJjZXMgbm90IHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2VzLgogICAgIC8vIHBydW5lTGl2ZSooKSAt
IEZsdXNoIGRlY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBzdGlsbCByZWZlcmVuY2VkIGJ5IFdl
YiBwYWdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmlu
ZGV4IGRjY2E4OGU1YjcwN2QxYTcwMGJmNDZlZjYzMDA0N2EzM2NmODhiOWYuLjZkYTI0NGU1ZDNh
MWU2NGFiM2ExODBkOTEzODAyNTBiNjQ5MGEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkRhdGFiYXNlLmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIEltYWdlKiBJY29uRGF0
YWJhc2U6OnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3Jp
Z2luYWwsIGNvCiAgICAgcmV0dXJuIGljb25SZWNvcmQtPmltYWdlKHNpemUpOwogfQogCi1QYXNz
TmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQor
TmF0aXZlSW1hZ2VQdHIgSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdl
VVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJiBzaXplKQog
ewogICAgIEltYWdlKiBpY29uID0gc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChwYWdlVVJMT3Jp
Z2luYWwsIHNpemUpOwogICAgIGlmICghaWNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlLmgKaW5kZXggNTMwYTNhMzA4OTAxNGEzZWIxYmUwMmQzMjQ4MjljYWMyNmQ4
NmQzMi4uZGI0M2VjMmNiMzExOWU1NjMwMDg3NDRiYWJjMDU5MjRkZTYxYzJlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwpIG92ZXJyaWRlOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgSW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBz
eW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdp
bmFsLCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgc3luY2hy
b25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwg
Y29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeW5j
aHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIGJv
b2wgc3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9h
ZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCmlu
ZGV4IDAyNTQ2NTMwNDE2OTE5NzIyMmU3N2RmMDZlNjZmZjY2M2U3ODA4YWEuLjU0NGNiYWNiNjk4
YzY4YjBkODY4MWMyOGJkNjE4Y2U3MjhjMWFmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3Qg
U3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIEljb25Mb2FkRGVjaXNpb24g
c3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIERvY3VtZW50
TG9hZGVyKikgeyByZXR1cm4gSWNvbkxvYWRObzsgfQogICAgIHZpcnR1YWwgSW1hZ2UqIHN5bmNo
cm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0
dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91
c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVy
biBudWxscHRyOyB9CiAKICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgd2Ugc2hvdWxkIHVzZSB0
byByZXBsYWNlIHRoZSBhYm92ZSB3aGVuIHN1cHBvcnRlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNBc3luY2hyb25vdXNNb2RlKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBmYWYwZjg2OTYy
YzNmYjY1Nzc3NDViZmFmNzViNGM4NGQ4MGNjMDYwLi40YTVjNjFhNWQyN2JhODU1NDNjMDA2NDVk
ZjhlYTIwMzM1MGE5ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0
YXJ0VGltZXIoZG91YmxlIGRlbGF5KQogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRl
bGF5KTsKIH0KIAotYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5k
ZXgpCitib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4
KHNpemVfdCBpbmRleCkKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7Cisg
ICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogfQogCiBib29sIEJpdG1hcEltYWdl
OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CkBAIC0xODQsOSArMTg0LDkgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICAgICAgbV9mcmFtZXMuZ3JvdyhudW1GcmFtZXMpOwog
CiAgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpIHsKLSAgICAg
ICAgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKTsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNh
bXBsaW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZSkKKyAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlKQogICAgICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAgICAgfQogCkBA
IC0yMDQsNyArMjA0LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAoIXN1YnNh
bXBsaW5nTGV2ZWwgJiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3Jt
RnJhbWVTaXplID0gZmFsc2U7CiAKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsK
KyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKICAgICAgICAgaW50IGRlbHRhQnl0
ZXMgPSBzYWZlQ2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwogICAgICAg
ICBtX2RlY29kZWRTaXplICs9IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxseS1kZWNv
ZGVkIGZyYW1lIHdpbGwgc3Vic3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1c2VkCkBA
IC0zNzksMTQgKzM3OSwxNCBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVk
KHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8
IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5k
RnJhbWUgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAgICB8fCAoZnJhbWVDYWNo
aW5nID09IENhY2hlTWV0YWRhdGFPbmx5ICYmICFtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRh
dGEpKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwLCBmcmFtZUNhY2hpbmcpOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVB
dEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50KQorTmF0aXZl
SW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxv
YXQgcHJlc2VudGF0aW9uU2NhbGVIaW50KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzk1LDcgKzM5NSw3IEBAIFBhc3NOYXRp
dmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQg
cHJlc2VudGF0aW9uU2NhCiAKICAgICAvLyBXZSBtYXkgaGF2ZSBjYWNoZWQgYSBmcmFtZSB3aXRo
IGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8KICAg
ICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgotICAgIGlmIChpbmRleCA8IG1fZnJh
bWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSAmJiBzdWJzYW1wbGluZ0xldmVs
IDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgeworICAgIGlmIChpbmRleCA8
IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSAmJiBzdWJzYW1wbGlu
Z0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgewogICAgICAgICAv
LyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQsIGJ1dCBhdCB0b28gc21hbGwgYSBzaXpl
LCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KICAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAt
bV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLmNs
ZWFyKHRydWUpOwpAQCAtNDA2LDEwICs0MDYsMTAgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EK
ICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNv
LgotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
LCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5t
X2ZyYW1lOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKIH0KIAogYm9vbCBC
aXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCkBAIC00Mjgs
OSArNDI4LDkgQEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVf
dCBpbmRleCkKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CiB9CiAKLVBh
c3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KQorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1
cm4gZnJhbWVJbWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOwogfQogCiBib29sIEJpdG1hcElt
YWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA3NDkzYzZhNGJmYjg2M2Q5
NzYzN2M0OWM0NjRjYzM3YWU3OGUwYTA0Li4wMGZiYTMzYmE0MTljMTI0MTU0MTY1MzMwMWUyOTVj
ZWY4NmQxNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKQEAgLTY1LDE2ICs2NSwxNCBAQCBjbGFzcyBUaW1lcjsKIC8vID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBzdHJ1Y3QgRnJhbWVEYXRh
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZURhdGEpOwogcHVibGljOgogICAgIEZy
YW1lRGF0YSgpCi0gICAgICAgIDogbV9mcmFtZSgwKQotICAgICAgICAsIG1fb3JpZW50YXRpb24o
RGVmYXVsdEltYWdlT3JpZW50YXRpb24pCisgICAgICAgIDogbV9vcmllbnRhdGlvbihEZWZhdWx0
SW1hZ2VPcmllbnRhdGlvbikKICAgICAgICAgLCBtX3N1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAg
ICAgLCBtX2R1cmF0aW9uKDApCiAgICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCiAgICAg
ICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkgCisg
ICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKQogICAgICAgICAsIG1fZnJhbWVCeXRlcygwKQogICAg
IHsKICAgICB9CkBAIC04OCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHdoZXRo
ZXIgdGhlcmUgd2FzIGNhY2hlZCBpbWFnZSBkYXRhIHRvIGNsZWFyLgogICAgIGJvb2wgY2xlYXIo
Ym9vbCBjbGVhck1ldGFkYXRhKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG1fZnJhbWU7CisgICAg
TmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRp
b247CiAgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWw7CiAgICAgZmxvYXQg
bV9kdXJhdGlvbjsKQEAgLTEwOCwxNiArMTA2LDE2IEBAIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFs
IDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR3JhZGllbnRJbWFnZTsKICAgICBm
cmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Qml0
bWFwSW1hZ2U+IGNyZWF0ZShQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UsIEltYWdlT2Jz
ZXJ2ZXIqIG9ic2VydmVyID0gMCkKKyAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUo
TmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBu
dWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2Uo
bmF0aXZlSW1hZ2UsIG9ic2VydmVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJp
dG1hcEltYWdlKFdURk1vdmUobmF0aXZlSW1hZ2UpLCBvYnNlcnZlcikpOwogICAgIH0KLSAgICBz
dGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAw
KQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNl
cnZlciA9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRt
YXBJbWFnZShvYnNlcnZlcikpOwogICAgIH0KICNpZiBQTEFURk9STShXSU4pCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShIQklUTUFQKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoSEJJ
VE1BUCk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIH5CaXRtYXBJbWFnZSgpOwogICAgIApAQCAtMTcy
LDcgKzE3MCw3IEBAIHB1YmxpYzoKICAgICBFdmFzX09iamVjdCogZ2V0RXZhc09iamVjdChFdmFz
Kikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZyYW1lT3JpZW50YXRp
b25BdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsgfQogCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93
blRvQmVPcGFxdWUoKSBvdmVycmlkZTsKQEAgLTE5OSw4ICsxOTcsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICBDZXJ0YWluICAgICAvLyBUaGUgcmVwZXRpdGlvbiBjb3VudCBpcyBrbm93biB0byBiZSBj
b3JyZWN0LgogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShQYXNzTmF0
aXZlSW1hZ2VQdHIsIEltYWdlT2JzZXJ2ZXIqID0gMCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgQml0
bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSAwKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJ
bWFnZShOYXRpdmVJbWFnZVB0ciYmLCBJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdF
QkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBz
cmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CkBAIC0yMTQsMTAgKzIxMiwxMCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBzaXplX3QgZnJhbWVDb3VudCgpOwogCi0gICAgUGFzc05hdGl2
ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3QsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGlu
dCA9IDEpOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgo
c2l6ZV90KTsKKyAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleChzaXplX3QsIGZs
b2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOworICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlV
bnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKLSAgICBib29sIGhhdmVGcmFtZUF0
SW5kZXgoc2l6ZV90KTsKKyAgICBib29sIGhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwog
CiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7CiAgICAgZmxvYXQgZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYmFiYzRjODVjYzJkZjc0OTU4ZmEx
YzkxMGU1NmFhY2I4NzE5MGNmMi4uYzUyNGJhMTlkNWRkYTQwNWM2MGMxNDc4MjE2Mjc5YzBjODU5
NjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKQEAgLTMwMiw3ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiAjaWYg
VVNFKENHKSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9y
bWFsLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IERl
ZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKICNlbmRpZgogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5k
ZXggZTM2YmEzYWE1NmQ1OGMyMDZhOTgzZmY1YmE5YmZhN2IxMzY1MTE4Mi4uZGJiYmNmNThjMzdi
OWE2YjE2NGQ2ZjEzNTFjZDZlMTVlYjQxZDg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xMjQ1LDcgKzEyNDUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEltYWdlU291cmNlKiBtX2RlY29kZXI7CiAgICAgICAgIFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1faW1hZ2VTdXJmYWNlOwogI2VsaWYgVVNFKENHKQotICAg
ICAgICBDR0ltYWdlUmVmIG1fY2dJbWFnZTsKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IG1fY2dJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fZGVjb2RlZEltYWdl
OwogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3JtYWxpemVkUkdCQThEYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmluZGV4IGQ5NWU3ZGViODEwZmMyNGY3ZjYxYjFi
MjNhNGI5YWVmM2YzYzE3YjcuLmY2YmJiODIwNmNlYWI3Y2QzNjM5NjIwODA1MGI0MDMxNjFkYWE2
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKQEAgLTIyLDggKzIy
LDggQEAKICNkZWZpbmUgSWNvbl9oCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtNDUsMTkgKzQ1LDE5IEBAIGNsYXNzIEZsb2F0UmVjdDsKICAg
ICAKIGNsYXNzIEljb24gOiBwdWJsaWMgUmVmQ291bnRlZDxJY29uPiB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkljb24oKTsKIAogICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBQTEFURk9S
TShXSU4pCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SWNvbj4gY3JlYXRlKEhJQ09OIGhJY29uKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihoSWNvbikpOyB9CisgICAgc3RhdGljIFJlZlB0cjxJ
Y29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29u
KSk7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBNYWtlIHRo
aXMgd29yayBmb3Igbm9uLWlPUyBwb3J0cyBhbmQgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1
YXJkLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZUlj
b25Gb3JJbWFnZShOYXRpdmVJbWFnZVB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIEljb24oQ0dJbWFnZVJlZik7CisgICAgSWNv
bihjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9jZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIEljb24oTlNJbWFnZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNGVkNmUzNWQ5OWFm
YWFiNWI4YmRlYzZmZDdhMTMyMGUyMGQwNDZmNS4uYzMxNDJhZGVjN2EyNWM4NDYwZTI5YWYzNTAy
Yjk0MTQ3YjcwNmM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CkBAIC0xMzUsMjMgKzEzNSwyMyBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3Ry
ZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKLSAgICB2aXJ0
dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0
dXJuIDA7IH0KKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb24o
KTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KIAogI2lm
IFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCBOU0ltYWdlKiBnZXROU0ltYWdlKCkgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgTlNJbWFnZSogZ2V0TlNJbWFnZSgpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBDRkRhdGFSZWYg
Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQ0ZEYXRh
UmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgog
CiAjaWYgVVNFKENHKQotICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgeyBy
ZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIFJldGFpblB0cjxD
RkFycmF5UmVmPiBnZXRDR0ltYWdlQXJyYXkoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBD
R0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENH
SW1hZ2VBcnJheSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
V0lOKQpAQCAtMTYwLDExICsxNjAsMTEgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShHVEspCi0gICAgdmlydHVhbCBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIEdka1BpeGJ1ZiogZ2V0R2RrUGl4YnVmKCkgeyByZXR1cm4gbnVsbHB0
cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShFRkwpCi0gICAgdmlydHVhbCBFdmFzX09iamVj
dCogZ2V0RXZhc09iamVjdChFdmFzKikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgRXZhc19P
YmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgog
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5k
ZXggMDRmOWVmOTNhZWE5ZDIyZWFmMGU2MWM5YTIwZDY3MzUzNzIyOTVhYi4uNTdiYTYzNTIwZmRl
YjNiYTIxZTI3MGI3NjlmZGQyOTA0Y2NhN2M2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi
UGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTAxLDggKzEwMSw4IEBAIHB1YmxpYzoKIAogICAgIGVudW0gQ29v
cmRpbmF0ZVN5c3RlbSB7IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtLCBCYWNraW5nU3RvcmVDb29y
ZGluYXRlU3lzdGVtIH07CiAKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRV
bm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVTeXN0ZW0gPSBM
b2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gZ2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiwgQ29vcmRp
bmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKKyAgICBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IGdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0
JiwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKKyAg
ICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29u
c3QgSW50UmVjdCYsIENvb3JkaW5hdGVTeXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkg
Y29uc3Q7CiAKICAgICB2b2lkIHB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50
OENsYW1wZWRBcnJheSosIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIENvb3JkaW5hdGVTeXN0ZW0g
PSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNzRlZjA1M2EzMzNmZjVmYzU3
OGU4MTgwMGNjNmZjOTc1NWVmYmFiOC4uYWUzMWM5ODM1MjFkNTAwODIyNWMxZmMzNDI5YzJjNDBh
MDM3ZTQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcApAQCAtMTQ4LDE5ICsxNDgsMTkgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFt
ZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNv
dW50KCkgOiAwOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCitOYXRpdmVJbWFnZVB0
ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsKQogewogICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2Rl
Y29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVm
ZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMg
Y2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiAgSWYgd2UgaGF2ZSBhbgogICAgIC8v
IGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgogICAgIGlmIChzaXplKCkuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAv
LyBSZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gIEZvciBzb21l
IHBvcnRzLCB0aGUgZGF0YQogICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUgY29udGFpbmVy
LCBhbmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggYWNkZDFjZTRjZTMwMGRl
ODFjOWUwNjJlZWU3NjA3YmY0NzJhNzBhZi4uYzExZjdiZTQ4MjllNGU2YmM0MDE3ODk2M2MxZDUx
YTE4NjYwYTBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIGRlY29kZWQgZnJh
bWVzLgogICAgIC8vCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgY2xlYXIoZmFsc2Us
IG4pIGFuZCBzdWJzZXF1ZW50bHkgY2FsbAotICAgIC8vIGNyZWF0ZUZyYW1lQXRJbmRleChtKSB3
aXRoIG0gPCBuLCB1bmxlc3MgdGhleSBmaXJzdCBjYWxsIGNsZWFyKHRydWUpLgorICAgIC8vIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNh
bGwgY2xlYXIodHJ1ZSkuCiAgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgc3RhdGVmdWwgSW1hZ2VT
b3VyY2VzL2RlY29kZXJzIHdpbGwgd29yayBwcm9wZXJseS4KICAgICAvLwogICAgIC8vIFRoZSB8
ZGF0YXwgYW5kIHxhbGxEYXRhUmVjZWl2ZWR8IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHN1cHBsaWVk
IGJ5IGNhbGxlcnMKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYWxsZXJz
IHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVy
IGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIFBhc3NO
YXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gMCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CiAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hl
dGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDk5Yjlk
NWNhZGU3M2UwYzFmYWQwOWE3N2NmNWY2ZGIyOThjMzdhYTUuLjkwNjk1YjQ0NTYzYTA4YjRkMGNj
NmQzNmM0ZmZkODJkNTFjYTFmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTgzNyw3ICs4MzcsNyBAQCBib29sIE1lZGlhUGxh
eWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotUGFzc05hdGl2
ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05hdGl2
ZUltYWdlUHRyIE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAg
ICByZXR1cm4gbV9wcml2YXRlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA1ZWE1
NTg3MTEwNTkzN2VlZTQwNjNlNzI1OTJhMWFlNTU3MTU0NWNiLi5jMmUwY2Y3YjgxMzA4MWQxNTMz
N2QwYTkyZTZjYTMxN2QwYWUwODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQyMyw3ICs0MjMsNyBAQCBwdWJsaWM6CiAgICAgLy8g
aHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZS90cnVuay9zcmMvZ3B1L2NvbW1h
bmRfYnVmZmVyL3NlcnZpY2UvZ2xlczJfY21kX2NvcHlfdGV4dHVyZV9jaHJvbWl1bS5jYyB2aWEg
c2hhZGVycy4KICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCwgR0MzRGVudW0gZm9ybWF0
LCBHQzNEZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwogCi0g
ICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAgICBO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKICAgICB1c2luZyBN
ZWRpYVBsYXllckVudW1zOjpOZXR3b3JrU3RhdGU7CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBlNTc5YWU5Mzg1NmU3ZGRjODU5Njg2NDczNjE4ZGEyYTE0
ZDZjNzkwLi5kOTE5ZjU0MzM3YTQ1N2MxMGVjNjhiYTVhMjBlYjdkZTNiOGZlYzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBH
QzNEZW51bSwgR0MzRGludCwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9v
bCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2Fk
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlUHRyLmgKaW5kZXggZGY5NDFhNTY2YTllNDY5Mjc3MjdiYTFlYzY4NDhmMjE2ODAzYTQ1Yi4u
MDM0NjY2NWIzNmRiZTU2NjFhMDljZTcxYzRlY2I0YTBjMWU4ZTI0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjZGVmaW5lIE5hdGl2ZUltYWdlUHRyX2gKIAogI2lmIFVTRShDRykKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwog
I2VsaWYgVVNFKENBSVJPKQogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCkBAIC0zOCwyMSArMzks
MTQgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBGSVhNRTogTmF0aXZlSW1hZ2VQdHIgYW5kIFBhc3NOYXRpdmVJbWFnZVB0
ciBzaG91bGQgYmUgc21hcnQKLS8vIHBvaW50ZXJzIChzZWUgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpLgogI2lmIFVTRShDRykKLXR5cGVkZWYgQ0dJbWFnZVJlZiBOYXRp
dmVJbWFnZVB0cjsKK3R5cGVkZWYgUmV0YWluUHRyPENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRy
OwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRlZiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRp
dmVJbWFnZVB0cjsKLXR5cGVkZWYgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFBhc3NOYXRp
dmVJbWFnZVB0cjsKICNlbGlmIFVTRShXSU5HREkpCiB0eXBlZGVmIFJlZlB0cjxTaGFyZWRCaXRt
YXA+IE5hdGl2ZUltYWdlUHRyOwogI2VuZGlmCiAKLSNpZiAhVVNFKENBSVJPKQotdHlwZWRlZiBO
YXRpdmVJbWFnZVB0ciBQYXNzTmF0aXZlSW1hZ2VQdHI7Ci0jZW5kaWYKLQogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCBmN2ZiMWFjNDY4YjA2ODExMGViYTIzMmYyYmM2ZmYw
NjI2ZWZiYTIwLi5kNmRlNzYyYzFmZTJiZjg0NmFhYWUyNDUzYzZjNTViMGJhZGNhOWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFibGVGcmFt
ZSgpOwogICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0Jik7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURh
dGFXaWxsQ2hhbmdlKCk7CiAKICAgICB2b2lkIGNyZWF0ZU9wZW5HTFZpZGVvT3V0cHV0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxNTQzN2RkZDhlZDZmM2QwYTJiZGJlNTVlOGYzMWRm
YTdjNDZjZGRmLi5jNzc3NmUwNGZjMGY3YjE0NjMwOTRkMTQ5MDljZjdjNTA5M2Y5ZTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTIzNDYsMTAgKzIzNDYsMTAgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoR3JhcGgKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh2aWRlb1RleHR1cmUuZ2V0KCksIHdpZHRoLCBoZWlnaHQs
IG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3Jt
YXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotUGFzc05hdGl2ZUltYWdl
UHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdl
KCk7Ci0gICAgcmV0dXJuIG1fbGFzdEltYWdlLmdldCgpOworICAgIHJldHVybiBtX2xhc3RJbWFn
ZTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3YWl0Rm9y
VmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDIzMGE4
ZjZiNzIxYjUxNWEzMWU1MjAyNmVmYjBkZWE0ZDRjMDAwMWEuLjU2Zjc5MWQ5ODNlN2FjZjJiZGU3
ZDA1OGI0Mjc2NDAwOWExMGZlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTAwOCwxNiArMTAwOCwx
NiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgbmV3
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICAgICAgYXV0
byBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAg
ICBpZiAoIW5ld0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1F
OiBwcm9iYWJseSBkb24ndCBuZWVkIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlIGF0IGFsbCBu
b3cuCi0gICAgICAgIGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSAmJiBtX3VuY29ycmVj
dGVkQ29udGVudHNJbWFnZS5nZXQoKSA9PSBuZXdJbWFnZSkKKyAgICAgICAgaWYgKG1fdW5jb3Jy
ZWN0ZWRDb250ZW50c0ltYWdlID09IG5ld0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKLSAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKLSAg
ICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOworICAgICAgICBtX3VuY29y
cmVjdGVkQ29udGVudHNJbWFnZSA9IFdURk1vdmUobmV3SW1hZ2UpOworICAgICAgICBtX3BlbmRp
bmdDb250ZW50c0ltYWdlID0gbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2U7CiAKICAgICAgICAg
bV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKICAgICAgICAg
aWYgKCFtX2NvbnRlbnRzTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmluZGV4IGNkNTdlZTQ4
NWVhODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAyODIuLmJkYTBkYzI4MWM5MzdkY2RmMmRiMTVh
YzcxMjhhMjM5NGQ3NTc0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC0zOCw3ICszOCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBh
c3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4m
JiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNl
cnZlcikKICAgICAsIG1fc2l6ZShjYWlyb1N1cmZhY2VTaXplKG5hdGl2ZUltYWdlLmdldCgpKSkK
ICAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKQEAgLTU4LDcgKzU4LDcgQEAgQml0
bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJ
bWFnZSwgSW1hZ2VPYnNlcnZlcioKIHsKICAgICBtX2ZyYW1lcy5ncm93KDEpOwogICAgIG1fZnJh
bWVzWzBdLm1faGFzQWxwaGEgPSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG5hdGl2ZUltYWdl
LmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUg
PSBuYXRpdmVJbWFnZTsKKyAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShuYXRpdmVJ
bWFnZSk7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwogCiAgICAgY2hl
Y2tGb3JTb2xpZENvbG9yKCk7CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3Qg
RmxvCiAKICAgICBzdGFydEFuaW1hdGlvbigpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgYXV0byBzdXJm
YWNlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGlmICghc3VyZmFj
ZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNr
Rm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgo
bV9jdXJyZW50RnJhbWUpOworICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1f
Y3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdl
IHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAKQEAgLTE1OCw4ICsx
NTgsOCBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIGlm
IChjbGVhck1ldGFkYXRhKQogICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwogCi0gICAg
aWYgKG1fZnJhbWUpIHsKLSAgICAgICAgbV9mcmFtZSA9IG51bGxwdHI7CisgICAgaWYgKG1faW1h
Z2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggYmU5NzAxMGI4
NmYzMDhhMWViZWFjNzEzMGUxZTNhMGI1ZGRiYjNmNi4uZGQ4YjA5NzhhZGJkYWI0NmM1ODcxNmY2
MjMxNjkwYmVmM2UzODkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtMjE2LDcgKzIxNiw3IEBA
IHZvaWQgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjYWlyb190KiBjciwgY2Fpcm9fc3VyZmFj
ZV90KiBpbWFnZSwgY29uc3QgSW50U2l6CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLVBh
c3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1cmZhY2UoY2Fpcm9fc3Vy
ZmFjZV90KiBvcmlnaW5hbFN1cmZhY2UpCitSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5Q2Fp
cm9JbWFnZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBvcmlnaW5hbFN1cmZhY2UpCiB7CiAgICAg
Ly8gQ2Fpcm8gZG9lc24ndCBwcm92aWRlIGEgd2F5IHRvIGNvcHkgYSBjYWlyb19zdXJmYWNlX3Qu
CiAgICAgLy8gU2VlIGh0dHA6Ly9saXN0cy5jYWlyb2dyYXBoaWNzLm9yZy9hcmNoaXZlcy9jYWly
by8yMDA3LUp1bmUvMDEwODc3Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oCmluZGV4IGFkYWIwZTVjNzgzODZi
ODkyYWI1YjljNDMxYTY3ZGQxMzllYmRmODUuLjcyYjVlNzMzM2Q4Yzk2MTJhN2EzNmVmMGFmODUz
MWNhZGMzY2JiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaApAQCAtNTUsNyArNTUsNyBAQCBjYWlyb19vcGVy
YXRvcl90IHRvQ2Fpcm9PcGVyYXRvcihDb21wb3NpdGVPcGVyYXRvciBvcCk7CiBjYWlyb19vcGVy
YXRvcl90IHRvQ2Fpcm9PcGVyYXRvcihCbGVuZE1vZGUgYmxlbmRPcCk7CiB2b2lkIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY2Fpcm9fdCogY3IsIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNv
bnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjYWlyb19vcGVyYXRvcl90IG9wLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKLVBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBj
b3B5Q2Fpcm9JbWFnZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90Kik7CitSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90Kik7CiAKIHZvaWQg
Y29weVJlY3RGcm9tQ2Fpcm9TdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogZnJvbSwg
Y2Fpcm9fdCogdG8sIGNvbnN0IEludFNpemUmIG9mZnNldCwgY29uc3QgSW50UmVjdCYpOwogdm9p
ZCBjb3B5UmVjdEZyb21PbmVTdXJmYWNlVG9Bbm90aGVyKGNhaXJvX3N1cmZhY2VfdCogZnJvbSwg
Y2Fpcm9fc3VyZmFjZV90KiB0bywgY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRSZWN0
JiwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKCksIGNhaXJvX29wZXJhdG9yX3QgPSBDQUlST19P
UEVSQVRPUl9PVkVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggY2M3
MDQ2MTQ3YWU4MWYxZmFkYWE2ZDg0MTYyNDk4MGM2ZmRmY2JmMS4uOGM0MTg2ZDcxZTUzYTE5MDdl
OTJkNzNhMmIwMTY0N2ZmZDY2YjFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5j
cHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJh
Y3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBk
ZWNvZGVyLnNldERhdGEobV9pbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29k
ZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29k
ZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9p
bWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAg
ICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNz
dW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZh
bHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggZjA3OTIwZjBkMjMyNDYyYzhmYjQxYTAzMjJkODIyYWM5ZDVlZDMwNy4uM2NmNDU0M2Yy
MDVlZDk5NDk4ODYxMDkyMmNjZGQ3NzI1ZWUwYzE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtMjU5LDE4ICsyNTksMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlID0gaW1hZ2VQdHI7Ci0KICAgICBwbGF0Zm9ybUNv
bnRleHQoKS0+c2F2ZSgpOwogCiAgICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IGQwZGU3YTE3YzY4NjUxNDY1YWU3ZDBkYTcyMmVk
NWVkNDBiZDAyMGUuLjA0NTNhNjI1N2YwZGVjNzk0ZTM3OGZlYTU2MWMyYjcxNmUzMGEyYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgUmVmUHRyPEltYWdlPiBJ
bWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2Fs
ZUJlaGF2aW8KICAgICAgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoY29weUNhaXJvSW1h
Z2VTdXJmYWNlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpKTsKIAogICAgIC8vIEJpdG1hcEltYWdl
IHdpbGwgcmVsZWFzZSB0aGUgcGFzc2VkIGluIHN1cmZhY2Ugb24gZGVzdHJ1Y3Rpb24KLSAgICBy
ZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShtX2RhdGEubV9zdXJmYWNlKTsKKyAgICByZXR1cm4g
Qml0bWFwSW1hZ2U6OmNyZWF0ZShSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihtX2RhdGEubV9zdXJm
YWNlKSk7CiB9CiAKIEJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VN
b2RlKCkKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5z
Zm9ybUNvbG9yU3BhY2UoY29uc3QgVmVjdG9yPGludD4mIGxvb2tVcFRhYmxlKQogICAgIGNhaXJv
X3N1cmZhY2VfbWFya19kaXJ0eV9yZWN0YW5nbGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgMCwg
MCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSwgSW50UmVjdCYgcmVjdCkKK1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNv
cHlTdXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBJ
bnRSZWN0JiByZWN0KQogewogICAgIGNhaXJvX3N1cmZhY2VfdHlwZV90IHN1cmZhY2VUeXBlID0g
Y2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlKTsKIApAQCAtMzAxLDcgKzMwMSw3IEBAIFBh
c3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0
KGNhaXJvX3N1cmZhY2VfdCogc3VyCiB9CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVk
PgotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYgZGF0YSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHJlc3VsdCA9IFVpbnQ4Q2xhbXBlZEFy
cmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkgKiA0
KTsKIApAQCAtMzc3LDEyICszNzcsMTIgQEAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmUKICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJ
bWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3Qs
IENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxVbm11
bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplKTsKIH0KIAotUGFzc1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0SW1h
Z2VEYXRhPFByZW11bHRpcGxpZWQ+KHJlY3QsIG1fZGF0YSwgbV9zaXplKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAK
aW5kZXggMDFiN2Q2OTJjZGJkN2FiNGQyMmJiYzEzOTljMTAzMjhmNTdlNWU0Ny4uMzJiZDBiNWNi
NTUzZmNkZWRkYmFhZDJmOTYzNjEzMDFmNWQ0NmVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKQEAgLTU4LDE4ICs1
OCwxNyBAQCBib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogICAgIG1f
b3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKICAgICBtX3N1YnNhbXBsaW5n
TGV2ZWwgPSAwOwogCi0gICAgaWYgKG1fZnJhbWUpIHsKKyAgICBpZiAobV9pbWFnZSkgewogI2lm
IENBQ0hFX1NVQklNQUdFUwotICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2Zy
YW1lKTsKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7
CiAjZW5kaWYKLSAgICAgICAgQ0dJbWFnZVJlbGVhc2UobV9mcmFtZSk7Ci0gICAgICAgIG1fZnJh
bWUgPSAwOworICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdl
KENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFn
ZTo6Qml0bWFwSW1hZ2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX21pbmltdW1TdWJz
YW1wbGluZ0xldmVsKDApCiAgICAgLCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkK
QEAgLTg5LDggKzg4LDggQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJ
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1
ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKIHsKLSAgICBDR0Zsb2F0IHdpZHRoID0g
Q0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpOwotICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdl
dEhlaWdodChjZ0ltYWdlKTsKKyAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGlt
YWdlLmdldCgpKTsKKyAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2Uu
Z2V0KCkpOwogICAgIG1fZGVjb2RlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CiAgICAgbV9z
aXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIApAQCAtOTksNyArOTgsNyBAQCBCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemU7CiAKICAgICBt
X2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBDR0ltYWdlUmV0YWlu
KGNnSW1hZ2UpOworICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKGltYWdlKTsKICAg
ICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gdHJ1ZTsKICAgICBtX2ZyYW1lc1swXS5tX2hhdmVN
ZXRhZGF0YSA9IHRydWU7CiAKQEAgLTEzNiw3ICsxMzUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpj
aGVja0ZvclNvbGlkQ29sb3IoKQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIWhhdmVGcmFtZUF0SW5kZXgoMCkpIHsKKyAgICBpZiAoIWhhdmVG
cmFtZUltYWdlQXRJbmRleCgwKSkgewogICAgICAgICBJbnRTaXplIHNpemUgPSBtX3NvdXJjZS5m
cmFtZVNpemVBdEluZGV4KDAsIDApOwogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwg
c2l6ZS5oZWlnaHQoKSAhPSAxKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ3LDcgKzE0Niw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAKICAgICBDR0ltYWdl
UmVmIGltYWdlID0gbnVsbHB0cjsKICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpKQotICAgICAgICBp
bWFnZSA9IG1fZnJhbWVzWzBdLm1fZnJhbWU7CisgICAgICAgIGltYWdlID0gbV9mcmFtZXNbMF0u
bV9pbWFnZS5nZXQoKTsKIAogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE3
MywxNCArMTcyLDE0IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAK
IENHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYoKQogewotICAgIHJldHVybiBm
cmFtZUF0SW5kZXgoMCk7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApLmdldCgpOwog
fQogCiBDR0ltYWdlUmVmIEJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VS
ZWYgY2dJbWFnZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdl
ID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7CiAgICAgICAgIGlmIChjZ0ltYWdlICYmIElu
dFNpemUoQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2Up
KSA9PSBzaXplKQogICAgICAgICAgICAgcmV0dXJuIGNnSW1hZ2U7CiAgICAgfQpAQCAtMTkzLDEx
ICsxOTIsMTEgQEAgUmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdl
QXJyYXkoKQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKICAgICBpZiAoIWNv
dW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAg
ICAgQ0ZNdXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShOVUxMLCBj
b3VudCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7Ci0gICAgICAgIGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1l
QXRJbmRleChpKSkKKyAgICAgICAgaWYgKENHSW1hZ2VSZWYgY3VyckZyYW1lID0gZnJhbWVJbWFn
ZUF0SW5kZXgoaSkuZ2V0KCkpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXks
IGN1cnJGcmFtZSk7CiAgICAgfQogICAgIHJldHVybiBhZG9wdENGKGFycmF5KTsKQEAgLTIxNCwx
MiArMjEzLDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGltYWdlOwogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJh
d2luZyBpbnRvIFBERiBjb250ZXh0cy4KICAgICBpZiAod2tDR0NvbnRleHRJc1BERkNvbnRleHQo
Y3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCi0gICAgICAgIGltYWdlID0gYWRvcHRDRihjb3B5VW5z
Y2FsZWRGcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5
VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZm
aW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRl
eHQoKSkpOwogICAgICAgICBmbG9hdCBzdWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+
KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNS
ZWN0LndpZHRoKCksIHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3Jj
UmVjdC5oZWlnaHQoKSkpOwogCi0gICAgICAgIGltYWdlID0gZnJhbWVBdEluZGV4KG1fY3VycmVu
dEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKKyAgICAgICAgaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSwgc3Vic2FtcGxpbmdTY2FsZSk7CiAgICAgfQogCiAgICAgaWYg
KCFpbWFnZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQu
CkBAIC0yNDUsMjQgKzI0NCwyNCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgIGlmIChk
ZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKQogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1f
Y3VycmVudEZyYW1lKTsKIAotICAgIGN0eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2Rl
LCBvcmllbnRhdGlvbik7CisgICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVu
dGF0aW9uKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdlT2JzZXJ2
ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdl
Ojpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorUmV0YWluUHRyPENHSW1h
Z2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1l
c1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFt
X2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCk7CiAK
ICAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJl
dHVybiBDR0ltYWdlUmV0YWluKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKTsKKyAgICAgICAgcmV0
dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogCi0gICAgcmV0dXJuIG1fc291cmNlLmNyZWF0
ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAgcmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KGluZGV4KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA2YzAz
YTJjZWY4NDYwNjU2MWVhMDdlYjkyOGYxY2YyOTVmOWY1ZTM2Li45OWYwOWRiNjdiYTU0MjgyZGM0
ZWQ3MDVhZTQxNjM4MDMzNzE5M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtMzMzLDE1
ICszMzMsMTUgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJh
Y3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYgKCFkZWNvZGVy
LmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2Rl
Y29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCkpOwotICAg
ICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKKyAgICAgICAgbV9kZWNvZGVk
SW1hZ2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOworICAgICAgICBtX2Nn
SW1hZ2UgPSBtX2RlY29kZWRJbWFnZTsKICAgICB9IGVsc2UKICAgICAgICAgbV9jZ0ltYWdlID0g
bV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIW1fY2dJbWFn
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdl
dFdpZHRoKG1fY2dJbWFnZSk7Ci0gICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQo
bV9jZ0ltYWdlKTsKKyAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdl
LmdldCgpKTsKKyAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2Uu
Z2V0KCkpOwogICAgIGlmICghbV9pbWFnZVdpZHRoIHx8ICFtX2ltYWdlSGVpZ2h0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTM0OSw3ICszNDksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbAogICAgIC8vIHNvLCByZS1yZW5kZXIgaXQgaW50byBhbiBSR0IgY29sb3Igc3BhY2UuIFRo
ZSBpbWFnZSByZS1wYWNraW5nCiAgICAgLy8gY29kZSByZXF1aXJlcyBjb2xvciBkYXRhLCBub3Qg
Y29sb3IgdGFibGUgaW5kaWNlcywgZm9yIHRoZQogICAgIC8vIGltYWdlIGRhdGEuCi0gICAgQ0dD
b2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1hZ2Up
OworICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2Uo
bV9jZ0ltYWdlLmdldCgpKTsKICAgICBDR0NvbG9yU3BhY2VNb2RlbCBtb2RlbCA9IENHQ29sb3JT
cGFjZUdldE1vZGVsKGNvbG9yU3BhY2UpOwogICAgIGlmIChtb2RlbCA9PSBrQ0dDb2xvclNwYWNl
TW9kZWxJbmRleGVkKSB7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENv
bnRleHQ7CkBAIC0zNjQsMjIgKzM2NCwyMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFn
ZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogCiAg
ICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVu
ZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoYml0
bWFwQ29udGV4dC5nZXQoKSwga0NHSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgICAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdl
V2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UpOworICAgICAgICBDR0NvbnRleHREcmF3
SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2ltYWdlV2lkdGgs
IG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgIC8vIE5vdyBkaXNj
YXJkIHRoZSBvcmlnaW5hbCBDRyBpbWFnZSBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgY29weSBmcm9t
IHRoZSBiaXRtYXAgY29udGV4dC4KICAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKICAgICAgICAg
bV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CiAgICAgfQogCi0gICAgc2l6ZV90IGJp
dHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChtX2NnSW1hZ2UpOwot
ICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJbWFn
ZSk7CisgICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBv
bmVudChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBDR0ltYWdl
R2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgaWYgKGJpdHNQZXJDb21wb25l
bnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9uZW50ICE9IDE2KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAlIGJpdHNQZXJDb21wb25lbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBzaXplX3QgY29tcG9uZW50c1BlclBpeGVsID0gYml0c1BlclBpeGVsIC8g
Yml0c1BlckNvbXBvbmVudDsKIAotICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdl
dEJpdG1hcEluZm8obV9jZ0ltYWdlKTsKKyAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1h
Z2VHZXRCaXRtYXBJbmZvKG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgYm9vbCBiaWdFbmRpYW5Tb3Vy
Y2UgPSBmYWxzZTsKICAgICAvLyBUaGVzZSBjb3VsZCB0ZWNobmljYWxseSBiZSBjb21iaW5lZCBp
bnRvIG9uZSBsYXJnZSBzd2l0Y2gKICAgICAvLyBzdGF0ZW1lbnQsIGJ1dCB3ZSBwcmVmZXIgbm90
IHRvIHNvIHRoYXQgd2UgZmFpbCBmYXN0IGlmIHdlCkBAIC00MjEsNyArNDIxLDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wKIAogICAgIG1fYWxwaGFPcCA9IEFscGhhRG9Ob3RoaW5nOwogICAg
IEFscGhhRm9ybWF0IGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXROb25lOwotICAgIHN3aXRjaCAo
Q0dJbWFnZUdldEFscGhhSW5mbyhtX2NnSW1hZ2UpKSB7CisgICAgc3dpdGNoIChDR0ltYWdlR2V0
QWxwaGFJbmZvKG1fY2dJbWFnZS5nZXQoKSkpIHsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3Q6CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAg
ICAgIG1fYWxwaGFPcCA9IEFscGhhRG9Vbm11bHRpcGx5OwpAQCAtNDYxLDE0ICs0NjEsMTQgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICBpZiAobV9pbWFnZVNvdXJjZUZvcm1hdCA9PSBE
YXRhRm9ybWF0TnVtRm9ybWF0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9waXhl
bERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92
aWRlcihtX2NnSW1hZ2UpKSk7CisgICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3Zp
ZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihtX2NnSW1hZ2UuZ2V0KCkpKSk7CiAg
ICAgaWYgKCFtX3BpeGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9pbWFn
ZVBpeGVsRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KENGRGF0YUdldEJ5dGVQ
dHIobV9waXhlbERhdGEuZ2V0KCkpKTsKIAogICAgIHVuc2lnbmVkIGludCBzcmNVbnBhY2tBbGln
bm1lbnQgPSAwOwotICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJv
dyhtX2NnSW1hZ2UpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1Bl
clJvdyhtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIHBhZGRpbmcgPSBieXRlc1BlclJv
dyAtIGJpdHNQZXJQaXhlbCAvIDggKiBtX2ltYWdlV2lkdGg7CiAgICAgaWYgKHBhZGRpbmcpIHsK
ICAgICAgICAgc3JjVW5wYWNrQWxpZ25tZW50ID0gcGFkZGluZyArIDE7CkBAIC01MzYsNyArNTM2
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25l
ZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGltYWcKICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6
ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFnZUhlaWdodCk7CiAgICAg
Y29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsK
LSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLmdldCgpLCBpbWFnZVNpemUsIGNh
bnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNv
cHkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2Fu
dmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29w
eSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBh
NDQ5NjU0MDQ2YWU4ZjEwYWJhZDE2NDE1ZTY0NjBhZGJiYmI4ZTg4Li5mMzQyZGExNjU4MTFiMjE3
MTYzY2ZmMTlkZTRmNWYxOTlkZDg3NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNjIsMTkg
KzE2MiwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQog
ICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZh
bHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0
cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+
ZHJhd05hdGl2ZUltYWdlKGltYWdlUHRyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UoaW1hZ2VQdHIpOworICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBzdWJJbWFnZShpbWFnZSk7CiAKLSAgICBmbG9hdCBjdXJySGVpZ2h0ID0gb3Jp
ZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQo
KSkgOiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBjdXJySGVpZ2h0
ID0gb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IENHSW1hZ2VHZXRXaWR0aChzdWJJ
bWFnZS5nZXQoKSkgOiBDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdldCgpKTsKICAgICBpZiAo
Y3VyckhlaWdodCA8PSBzcmNSZWN0LnkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTYsMTMg
KzIxNiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaQogICAgICAgICAgICAgYWRqdXN0ZWRE
ZXN0UmVjdC5zZXRIZWlnaHQoc3ViaW1hZ2VSZWN0LmhlaWdodCgpIC8geVNjYWxlKTsKIAogI2lm
IENBQ0hFX1NVQklNQUdFUwotICAgICAgICAgICAgaW1hZ2UgPSBzdWJpbWFnZUNhY2hlKCkuZ2V0
U3ViaW1hZ2UoaW1hZ2UuZ2V0KCksIHN1YmltYWdlUmVjdCk7CisgICAgICAgICAgICBzdWJJbWFn
ZSA9IHN1YmltYWdlQ2FjaGUoKS5nZXRTdWJpbWFnZShzdWJJbWFnZS5nZXQoKSwgc3ViaW1hZ2VS
ZWN0KTsKICNlbHNlCi0gICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdp
dGhJbWFnZUluUmVjdChpbWFnZS5nZXQoKSwgc3ViaW1hZ2VSZWN0KSk7CisgICAgICAgICAgICBz
dWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdChzdWJJbWFnZS5n
ZXQoKSwgc3ViaW1hZ2VSZWN0KSk7CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChjdXJySGVpZ2h0
IDwgc3JjUmVjdC5tYXhZKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoQ0dJbWFnZUdldEhl
aWdodChpbWFnZS5nZXQoKSkgPT0gY3VyckhlaWdodCAtIENHUmVjdEludGVncmFsKHNyY1JlY3Qp
Lm9yaWdpbi55KTsKLSAgICAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSAvIHlTY2FsZSk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpID09IGN1cnJIZWlnaHQgLSBD
R1JlY3RJbnRlZ3JhbChzcmNSZWN0KS5vcmlnaW4ueSk7CisgICAgICAgICAgICAgICAgYWRqdXN0
ZWREZXN0UmVjdC5zZXRIZWlnaHQoQ0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSkgLyB5
U2NhbGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRq
dXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KGRlc3RSZWN0LngoKSAtIHNyY1Jl
Y3QueCgpIC8geFNjYWxlLCBkZXN0UmVjdC55KCkgLSBzcmNSZWN0LnkoKSAvIHlTY2FsZSkpOwpA
QCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2Uo
UGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpCiAgICAgQ0dDb250ZXh0
U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogCiAgICAgLy8gRHJhdyB0aGUgaW1hZ2UuCi0gICAg
Q0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIGFkanVzdGVkRGVzdFJlY3QsIGltYWdlLmdldCgp
KTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdCwgc3Vi
SW1hZ2UuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3UGF0dGVybkNhbGxiYWNrKHZvaWQq
IGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQpAQCAtMzExLDggKzMxMSw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0CiAgICAgZmxvYXQgYWRqdXN0ZWRYID0gcGhhc2UueCgpIC0gZGVzdFJl
Y3QueCgpICsgdGlsZVJlY3QueCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJh
bnNmb3JtLmEoKSk7IC8vIFdlIHRyYW5zbGF0ZWQgdGhlIGNvbnRleHQgc28gdGhhdCBkZXN0UmVj
dC54KCkgaXMgdGhlIG9yaWdpbiwgc28gc3VidHJhY3QgaXQgb3V0LgogICAgIGZsb2F0IGFkanVz
dGVkWSA9IGRlc3RSZWN0LmhlaWdodCgpIC0gKHBoYXNlLnkoKSAtIGRlc3RSZWN0LnkoKSArIHRp
bGVSZWN0LnkoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkp
ICsgc2NhbGVkVGlsZUhlaWdodCk7CiAKLSAgICBDR0ltYWdlUmVmIHRpbGVJbWFnZSA9IGltYWdl
Lm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRI
ZWlnaHQodGlsZUltYWdlKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUlt
YWdlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJbWFnZTsKICNpZiBQ
TEFURk9STShJT1MpCkBAIC0zMjYsMTMgKzMyNiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dAogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1kZWNv
ZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0IHNo
b3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBvbmx5
IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGltYWdl
IGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdodCgpKTsK
LSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3Qo
dGlsZUltYWdlLCB0aWxlUmVjdCkpOworICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CiAgICAg
fQogCiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVz
ZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAog
ICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1l
Y2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICog
bmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQg
dyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOworICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0
V2lkdGgodGlsZUltYWdlLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lkdGgo
KSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYmICFz
cGFjaW5nLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFwIHRo
ZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJvcmRl
ci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxsIGJ1
dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmlu
ZGV4IDg0NjM5NmMxOTAyN2MyYzJiZTI1NWM3NjRhY2FlNzYyZmU3ZTk4N2EuLjIxODIxNDZmNTdl
NTcwNTUwNjgyYzZlZDU4MTAzNTgxYWRlYjQxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xOTksNyArMTk5
LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJ
Zk5lZWRlZChSZXRhaW5QdHI8Q0dJbWFnZVJlZj4KICAgICBpZiAoIWltYWdlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGltYWdlLmdl
dCgpKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7CiB9
CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5
IGNvcHlCZWhhdmlvciwgU2NhbGVCZWhhdmlvciBzY2FsZUJlaGF2aW9yKSBjb25zdApAQCAtMzE5
LDcgKzMxOSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjCiAgICAgfQogfQogCi1QYXNzUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VE
YXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3Rl
bSkgY29uc3QKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVs
dGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtIGNv
b3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKQEAgLTMzMSw3ICszMzEsNyBAQCBQ
YXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVk
SW1hZ2VEYXRhKGNvbnN0IEludFJlYwogICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0
LCBpbnRlcm5hbFNpemUoKSwgY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIHRydWUs
IDEpOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0
UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lz
dGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IElt
YWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3Qs
IENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBpZiAoY29u
dGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIGZsdXNoQ29udGV4dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3Vy
Y2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcAppbmRleCBkNGEwMTJiNmY1N2JmNTM5MzA2NDc3N2I2YzEwOTM2NmIyNGM0NDVjLi41
MDE1ZGQxNWFiZmM4MjVkY2ViMDMyMGYxMjAyOWNiYTUxMjE4Mjc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApAQCAt
MzQwLDcgKzM0MCw3IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZGVjb2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIpIDog
MDsKIH0KIAotQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmV0YWluUHRyPENH
SW1hZ2VSZWY+IEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIWluaXRp
YWxpemVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY2LDE4ICszNjYsMTUgQEAg
Q0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW0KICAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgeGJt
VVRJID0gQ0ZTVFIoInB1YmxpYy54Yml0bWFwLWltYWdlIik7CiAKICAgICBpZiAoIWltYWdlVVRJ
KQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICByZXR1cm4gaW1hZ2U7
CiAKICAgICBpZiAoIUNGRXF1YWwoaW1hZ2VVVEksIHhibVVUSSkpCi0gICAgICAgIHJldHVybiBp
bWFnZS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBpbWFnZTsKICAgICAKICAgICAvLyBJZiBp
dCBpcyBhbiB4Ym0gaW1hZ2UsIG1hc2sgb3V0IGFsbCB0aGUgd2hpdGUgYXJlYXMgdG8gcmVuZGVy
IHRoZW0gdHJhbnNwYXJlbnQuCiAgICAgY29uc3QgQ0dGbG9hdCBtYXNraW5nQ29sb3JzWzZdID0g
ezI1NSwgMjU1LCAgMjU1LCAyNTUsIDI1NSwgMjU1fTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbWFza2VkSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoTWFza2luZ0NvbG9ycyhp
bWFnZS5nZXQoKSwgbWFza2luZ0NvbG9ycykpOwotICAgIGlmICghbWFza2VkSW1hZ2UpCi0gICAg
ICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Ci0KLSAgICByZXR1cm4gbWFza2VkSW1hZ2UubGVh
a1JlZigpOworICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9
CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDAyNGNiZmUwMGI1MjIz
MzkzMzU5MjBmOWY4NTM0YzgzNmRhY2NmODguLjQ5MjdlYWJmOGVkMTJhNmMyMWVhYjMxYmZlNjJm
NTJjNmIyNGViMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ5
MSwxMSArNDkxLDExIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJbWFnZSYgaXRlbSkKIH0KIAogI2lmIFVTRShDRykg
fHwgVVNFKENBSVJPKQotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2
ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAgOiBE
cmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAgICAv
LyBGSVhNRTogTmVlZCB0byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCi0gICAgLCBtX2ltYWdl
UHRyKGltYWdlUHRyKQorICAgICwgbV9pbWFnZShpbWFnZSkKICNlbmRpZgogICAgICwgbV9pbWFn
ZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvbihkZXN0UmVjdCkKQEAgLTUwNyw3
ICs1MDcsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1h
Z2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaQogICAgICwgbV9vcmllbnRhdGlvbihv
cmllbnRhdGlvbikKIHsKICNpZiAhVVNFKENHKQotICAgIFVOVVNFRF9QQVJBTShpbWFnZVB0cik7
CisgICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKICAgICBVTlVTRURfUEFSQU0ob3ApOwogICAgIFVO
VVNFRF9QQVJBTShibGVuZE1vZGUpOwogI2VuZGlmCkBAIC01MTYsNyArNTE2LDcgQEAgRHJhd05h
dGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBj
b25zdCBGbG9hdFNpemUmIGkKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIGNvbnRleHQuZHJhd05h
dGl2ZUltYWdlKG1faW1hZ2VQdHIuZ2V0KCksIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBt
X3NyY1JlY3QsIG1fb3AsIG1fYmxlbmRNb2RlLCBtX29yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9z
cmNSZWN0LCBtX29wLCBtX2JsZW5kTW9kZSwgbV9vcmllbnRhdGlvbik7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShjb250ZXh0KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKaW5kZXggNWE4NDk2NGM1NzliMzJmZGMwZWM2ZWYxNDVmNjQyNjBmMTM1YWZmZi4uNDcwZjI4
MjkxMDA4NTRjM2MwNWY2ZGVmZWQyMTViNWZjNjQ3ZGE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCkBAIC02MzksMjMgKzYzOSwyMyBAQCBwcml2YXRlOgogI2lmIFVTRShDRykg
fHwgVVNFKENBSVJPKQogY2xhc3MgRHJhd05hdGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVt
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKFBhc3NO
YXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCisgICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGlt
YWdlUHRyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmll
bnRhdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVu
dGF0aW9uKSk7CiAgICAgfQogCiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb247IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3TmF0aXZlSW1hZ2UoUGFzc05h
dGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAgIERyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uOyB9CiAKICNpZiBVU0UoQ0cpCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IG1faW1hZ2VQdHI7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1faW1hZ2U7CiAjZW5kaWYK
ICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNWU1MmVjOTE5
MjNkNDU5ZjA4MjIxOTFmNjY5ZDBjMDBlZWRmMjU4YS4uMGJmMTRiZWY3OWJkM2FiMmZiNzNmNmM3
NTA4MDcyNmRhNDQxZTMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcApAQCAtMTE5LDkgKzExOSw5IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QKIH0KIAogI2lm
IFVTRShDRykgfHwgVVNFKENBSVJPKQotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCit2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsK
LSAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJ
dGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlUHRyLCBpbWFnZVNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpKTsKKyAgICBEcmF3aW5nSXRl
bSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJ
bWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxl
bmRNb2RlLCBvcmllbnRhdGlvbikpKTsKICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBhNWQy
YzcxYTI1ZWJkYmZlNGYzYmE3ZmRhY2QxZjJkZTU4ODZkYzUwLi5lYjk5YTNkZGEwMGQzMTcwY2Zj
OGYwODZhNDAyOWNiYmNlMWNkM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICAgICB2b2lkIGRyYXdUaWxlZEltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUg
aFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShQ
YXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOwogI2VuZGlmCiAgICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCmlu
ZGV4IGJhNDE1OTdhYTExMDFkYjYyOTAyM2QyNzNiMjAwZTc4MWQzM2FhYzkuLjU5Y2MyYzliZThi
M2ZmZTExMTg2YTY4NWQyZThjZjU5NGMxZDM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNw
cApAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlm
ICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eCgwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2ltYWdlU3VyZmFj
ZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFj
ZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBp
bnB1dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhl
IGFscGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAKaW5kZXggOWM5MmMwODUzYzI2MWM3
NjBhN2MwODFmNmM4N2U5OTBiMWI4OGRhYi4uMDdiZWJlNjk0OWMxYzg0YTFlNzg2NDIxYzBlOWQ3
YWY3NzdlNzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0ljb25FZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9JY29uRWZsLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01MSwxMCArNTEsMTAgQEAgSWNvbjo6fkljb24oKQogewogfQogCi1QYXNzUmVmUHRy
PEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitS
ZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKaW5kZXggZWUyNzI3
N2ZmMGI3ZTkwMzNmNGI5MzM2MDI4YWNmNDIxOGIyMGE1Zi4uYzU1Y2ZkZjk3YjdkNDNjNWQzNGYy
ZjljNTU2Mzc2ZjVhOTZhNmY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNw
cApAQCAtNjIsNyArNjIsNyBAQCBJbWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIoR3N0U2Ft
cGxlKiBzYW1wbGUpCiAKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRv
cHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyRGF0YSwgY2Fp
cm9Gb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSkpOwogICAgIEFTU0VSVChjYWlyb19zdXJm
YWNlX3N0YXR1cyhzdXJmYWNlLmdldCgpKSA9PSBDQUlST19TVEFUVVNfU1VDQ0VTUyk7Ci0gICAg
bV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoc3VyZmFjZS5yZWxlYXNlKCkpOworICAgIG1f
aW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOwogCiAgICAgaWYg
KEdzdFZpZGVvQ3JvcE1ldGEqIGNyb3BNZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fY3JvcF9t
ZXRhKGJ1ZmZlcikpCiAgICAgICAgIHNldENyb3BSZWN0KEZsb2F0UmVjdChjcm9wTWV0YS0+eCwg
Y3JvcE1ldGEtPnksIGNyb3BNZXRhLT53aWR0aCwgY3JvcE1ldGEtPmhlaWdodCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCmluZGV4IDU5
NDVlMWY4YzRiNDc0NDhmMzQ4NWZjNjRiYjU3NjU3YWY0YzM4ZmUuLjg4MGM0Yzk3OTRhNWVkNmQz
YWMyZjhhNjc0N2NjMjEyNjkyZDIxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUg
PGd0ay9ndGsuaD4KIAotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgU3RyaW5nIGxvb2t1cEljb25OYW1lKFN0
cmluZyBNSU1FVHlwZSkKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhlIGNvZGUgdG8gQ2hyb21lQ2xp
ZW50OjppY29uRm9yRmlsZXMoKS4KLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCitSZWZQdHI8SWNvbj4gSWNv
bjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7
CiAgICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQppbmRleCAyMTU5
MTVmMjhhMTkyMTcyMzk2ZDQ2ZjA4NmQyMjQ5YjgxZDlkNzZhLi4zNmIyNGY1Y2ZmMGE2YjYxZTU0
NTc0NjczMmI2MjZjZDM5ODdjYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pb3MvSWNvbklPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCi1JY29uOjpJY29uKENHSW1hZ2VSZWYgaW1hZ2UpCitJY29uOjpJY29uKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICA6IG1fY2dJbWFnZShpbWFnZSkKIHsKIH0K
QEAgLTQyLDE3ICs0MiwxNyBAQCBJY29uOjp+SWNvbigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SWNv
bj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVu
YW1lcyovKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
UGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoTmF0aXZlSW1hZ2VQdHIg
aW1hZ2VSZWYpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFJl
dGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCiB7Ci0gICAgaWYgKCFpbWFnZVJlZikKKyAgICBp
ZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSWNvbihpbWFnZVJlZikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihpbWFn
ZSkpOwogfQogCiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ljb25NYWMubW0KaW5kZXggNGNmYzUyZmRjMTM1N2RlZjE2OTNkYTE3OWFiODQy
ZTZjNDU4Zjk5NC4uZTQ2MDVkZTIwMDNiZGYwNjYzNzM1MDM3MDBhYjAxMDJkNmMzNTYxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KQEAg
LTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgIkludFJlY3QuaCIKICNpbXBvcnQgIkxvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDx3
dGYvUGFzc1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0Nyw3IEBA
IEljb246On5JY29uKCkKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhlIGNvZGUgdG8gQ2hyb21lQ2xp
ZW50OjppY29uRm9yRmlsZXMoKS4KLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCitSZWZQdHI8SWNvbj4gSWNv
bjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7
CiAgICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmlu
ZGV4IGZmMDcxMzFhNjFmY2VkMDQ1ODZiMzcyZDliYTIwNzlhOTg3M2MzOGIuLmZhMDExYWE4ODE2
MzAzMDAwOTQ0OThlYmMwZmZjYTlmYjljMzAzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTk1LDcgKzk1LDcgQEAgQ0ZEYXRh
UmVmIEJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24oKQogCiAgICAgVmVjdG9yPENH
SW1hZ2VSZWY+IGltYWdlczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRnJhbWVz
OyArK2kgKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lQXRJbmRleChpKTsK
KyAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7
CiAgICAgICAgIGlmIChjZ0ltYWdlKQogICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChjZ0ltYWdl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSWNvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNv
bldpbi5jcHAKaW5kZXggYTc4MDcwZDlhYWFmN2Y0ZTJhMzE4OWVlMTQ4YTZhNWM3OTM4OGMwNS4u
YTM5NDZjYWY0ZjgzZTAwY2ZkMWI5OWE1OGYyYzk5MjIzMTc5YjRkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBJY29uOjp+SWNvbigpCiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoZSBjb2RlIHRvIENocm9t
ZUNsaWVudDo6aWNvbkZvckZpbGVzKCkuCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUlj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQorUmVmUHRyPEljb24+
IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVz
KQogewogICAgIGlmIChmaWxlbmFtZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNw
cAppbmRleCA4MzVlY2YzZjRmZWVlYjhhMGRmYThkMzY5NzMxMjhmM2I4MDdiOTI2Li45YWM1NTlj
ODE1NzBjZGJkMzkyMzIzNTljMzBiMTMwZWQxNjc1ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBAIC0zNiw3ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0
bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCitSZWZQdHI8Qml0bWFwSW1hZ2U+IEJp
dG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogewogICAgIERJQlNFQ1RJT04gZGli
U2VjdGlvbjsKICAgICBpZiAoIUdldE9iamVjdChoQml0bWFwLCBzaXplb2YoRElCU0VDVElPTiks
ICZkaWJTZWN0aW9uKSkKQEAgLTU0LDkgKzU0LDkgQEAgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4g
Qml0bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiAgICAgICAgIGRpYlNlY3Rpb24u
ZHNCbS5ibVdpZHRoQnl0ZXMsIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0
ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7CiAKICAg
ICAvLyBUaGUgQml0bWFwSW1hZ2UgdGFrZXMgb3duZXJzaGlwIG9mIHRoaXMuCi0gICAgQ0dJbWFn
ZVJlZiBjZ0ltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5n
ZXQoKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIAotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQml0bWFwSW1hZ2UoY2dJbWFnZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQml0bWFwSW1hZ2UoV1RGTW92ZShjZ0ltYWdlKSkpOwogfQogCiBib29sIEJpdG1hcElt
YWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQpA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBm
cmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7
ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KGkpOworICAg
ICAgICBDR0ltYWdlUmVmIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7CiAgICAg
ICAgIGlmIChpbWFnZSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3Qg
Y3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFt
ZSA9IGk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggMjlhMjAyM2RiNjNhOTE0MzRjMzk0OGVhYTU1MjNiYjYx
ZmU4MTA3NS4uZGFiOTZhMzhjNTQ4MTAyYWFlMjdhYTAxOWVlYjk5ZTVhOGM0MjIyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NS
ZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQor
UmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkK
IHsKICAgICBESUJTRUNUSU9OIGRpYlNlY3Rpb247CiAgICAgaWYgKCFHZXRPYmplY3QoaEJpdG1h
cCwgc2l6ZW9mKERJQlNFQ1RJT04pLCAmZGliU2VjdGlvbikpCkBAIC01Miw3ICs1Miw3IEBAIFBh
c3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFw
KQogCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJv
X3dpbjMyX3N1cmZhY2VfY3JlYXRlX3dpdGhfZGliKENBSVJPX0ZPUk1BVF9BUkdCMzIsIGRpYlNl
Y3Rpb24uZHNCbS5ibVdpZHRoLCBkaWJTZWN0aW9uLmRzQm0uYm1IZWlnaHQpKTsKIAotICAgIHJl
dHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKHN1cmZhY2UucmVsZWFzZSgpKTsKKyAgICByZXR1cm4g
Qml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAogYm9vbCBCaXRtYXBJ
bWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkK
QEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
Y2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAgICBzaXplX3Qg
ZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVz
OyArK2kpIHsKLSAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1l
QXRJbmRleChpKTsKKyAgICAgICAgYXV0byBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7
CiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5o
CmluZGV4IGZjODdmODM0MDMzMTk1NTczZjU2N2ZjMDU4YzdjNzNkODU4YTE5N2EuLmIzNTQ3ZDk0
ZTgwOGY4NzRhZWQ5ZGEwZjI5MWJlY2UyMGE2NDY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC05OCw3ICs5
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1v
d25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAg
ICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1h
Z2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCi0gICAgICAg
IFBhc3NOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CisgICAgICAgIE5h
dGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKIAogICAgICAgICBib29sIGhh
c0FscGhhKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJhbWVSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1h
Z2VEZWNvZGVyQ2Fpcm8uY3BwCmluZGV4IDNmZTcwNDAyMzQxOWQ5NzUzYjEzOTlkOWY2YzAwYjY3
Mzk0NTEyOTYuLjdiNDEyOTVmODU3MzU4ZmJiZjM1YzFiMDUyNWU4ZDZjYzM1MjBmNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
RGVjb2RlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdO
YXRpdmVJbWFnZSgpIGNvbnN0CitOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2
ZUltYWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEoCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hh
cio+KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRhKj4obV9ieXRlcykpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggYWQyNTk4OTY4MzBhNDlhMzk4
MzA4Yzg0MjE5NmYyYzk3NjE4YjAxOC4uMzZjZDY1MTZlODBmMTc0OGJmZWFiNzdhOTMwMjcxYzEy
MWRlODAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dX
aW4uY3BwCkBAIC0xMjgsNyArMTI4LDYgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiAgICAgaWYg
KCFoYm1wIHx8ICFkcmF3Q29udGV4dCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBDR0ltYWdl
UmVmIHNyY0ltYWdlID0gaW1nLT5nZXRDR0ltYWdlUmVmKCk7CiAgICAgQ0dSZWN0IHJlY3Q7CiAg
ICAgcmVjdC5zaXplID0gSW50U2l6ZShpbWctPnNpemUoKSk7CiAgICAgcmVjdC5vcmlnaW4ueCA9
IDA7CkBAIC0xMzcsNyArMTM2LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21J
bWFnZShJbWFnZSogaW1nLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiAgICAgQ0dDb250
ZXh0U2NhbGVDVE0oZHJhd0NvbnRleHQsIDEsIC0xKTsKICAgICBDR0NvbnRleHRTZXRGaWxsQ29s
b3IoZHJhd0NvbnRleHQsIHdoaXRlKTsKICAgICBDR0NvbnRleHRGaWxsUmVjdChkcmF3Q29udGV4
dCwgcmVjdCk7Ci0gICAgaWYgKHNyY0ltYWdlKSB7CisgICAgaWYgKGF1dG8gc3JjSW1hZ2UgPSBp
bWctPmdldENHSW1hZ2VSZWYoKSkgewogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJh
d0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7CiAgICAgICAgIENHQ29udGV4dERyYXdJbWFn
ZShkcmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDQyZWE1ZWU1MzQyMWE3N2QwN2UzNGU2ZjgwYjQz
M2M2MjA3MzdiOGMuLmMxNWZhZmJkOGVhMWI2MTMyNDg2NTY1NGQ5NDk0MmRmZWQ0NjUzNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTgwLDE3ICsxODAs
MTcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWkKIH0KIAogI2lmIFVTRShDQUlSTykKLS8vIFBh
c3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIFBhc3NO
YXRpdmVJbWFnZVB0ciBuZWVkcworLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGlt
YWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2VQdHIgbmVlZHMKIC8vIHRvIGJlIGEgc21h
cnQgcG9pbnRlciB0eXBlLgotUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKQogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBDYWlybyBkb2VzIG5vdCB1c2UgdGhl
IGFjY2VsZXJhdGVkIGRyYXdpbmcgZmxhZywgc28gaXQncyBPSyB0byBtYWtlIGFuIHVuY29uZGl0
aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBVbmFjY2VsZXJhdGVk
KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGRyYXcoYnVmZmVyLT5j
b250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVO
b3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA4NzBmNmM4NWM1ZTY4NGUxNzdjMzBkMTZjMjE2NmEz
NDBkY2Q1YTdiLi40OTFkZGZiM2MyMTM5ZWY4ODIxMDFkMWFmNDViNWFlZjExMGM0ZmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXNldEFuaW1hdGlvbigpIG92ZXJyaWRlOwogCiAjaWYgVVNFKENBSVJP
KQotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92
ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IDRlMTYxZTNmMGQ0NGE2
YWE2ZWE2YzAzZjVlZDlhYmMxOWViYWVhMWQuLjdlMTQzZGVkMmQ2NjlhYjNhYzA5YzQ5NmI0ZTRi
ZWU3ZGM4N2YyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFNWR0ltYWdlRm9y
Q29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdAogICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1f
Y29udGFpbmVyU2l6ZSwgbV96b29tLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CiB9CiAKLVBhc3NOYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKQorTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmgKaW5kZXggMzU5NzU0Mjg5ZmMzMDQyMThjZGI4YmYxMjAzYjg3M2My
OWZkNTJkMi4uZDIyNGZjNDYxMmZkOTVhMWFlYTc3YWZiNDQ3OTc2OTIzNTI3YWNkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0
byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIFNWR0ltYWdlRm9yQ29udGFpbmVyKFNWR0ltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBjb250YWluZXJTaXplLCBmbG9hdCB6b29tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0K
aW5kZXggZDcxZTY2NDNiM2MyMTJiMmRiNjQ0YjMxNTI5NGIxYzNiYzc2ZmNmOC4uYjY1OWQ2ZGJm
OWFkNjk5OWMzYWM5NjJkZTk1MTU3ODA5N2UxZjNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNh
Y2hlLm1tCkBAIC0xNzIsNyArMTcyLDcgQEAgKyAoYm9vbClhZGRJbWFnZVRvQ2FjaGU6KENHSW1h
Z2VSZWYpaW1hZ2UgZm9yVVJMOihOU1VSTCAqKXVybCBmb3JGcmFtZTooV2ViRnJhbWUKICAgICBp
ZiAoZnJhbWUpCiAgICAgICAgIHRvcE9yaWdpbiA9IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT50
b3BPcmlnaW4oKTsKICNlbmRpZgotICAgIHJldHVybiBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2lu
Z2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKGltYWdlLCB1cmwsIHRvcE9yaWdpbiA/IHRvcE9yaWdp
bi0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3RyaW5nKCkpOworICAgIHJldHVy
biBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuYWRkSW1hZ2VUb0NhY2hlKFJldGFp
blB0cjxDR0ltYWdlUmVmPihpbWFnZSksIHVybCwgdG9wT3JpZ2luID8gdG9wT3JpZ2luLT5kb21h
aW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogZW1wdHlTdHJpbmcoKSk7CiB9CiAKICsgKHZvaWQpcmVt
b3ZlSW1hZ2VGcm9tQ2FjaGVGb3JVUkw6KE5TVVJMICopdXJsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdp
bnMvUGx1Z2luVmlldy5oCmluZGV4IDI2ZjA4NzRlNWY1YTVjODk5MzRlMGI4MTJkYjQ4YjdiNzU5
ZjU0MTYuLjY5Y2IwMTNhMDQ2ZjEzZTUzOWVhYmQ0NzZiNTdmNWFkZTNhMDc5YTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KQEAgLTI5Miw3ICsyOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
aGFuZGxlTW91c2VFdmVudChNb3VzZUV2ZW50Kik7CiAKICAgICAgICAgdm9pZCBwYWludEludG9U
cmFuc2Zvcm1lZENvbnRleHQoSERDKTsKLSAgICAgICAgUGFzc1JlZlB0cjxJbWFnZT4gc25hcHNo
b3QoKTsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBzbmFwc2hvdCgpOwogCiAgICAgICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDI1ZWFmNTUwNWU2NzNkMzM1MDkxNjUxMjFmM2IzNDJk
YTkwNzhmNTIuLjJmY2E5ZjNjOTVkNzNkYmEzYWMzMjYyNTllYTg2ZGRjZGRhMjA3MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtOTIwLDcgKzky
MCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGxhdGZvcm1EZXN0cm95KCkKICAgICBzZXRQbGF0Zm9y
bVBsdWdpbldpZGdldCgwKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gUGx1Z2luVmlldzo6c25h
cHNob3QoKQorUmVmUHRyPEltYWdlPiBQbHVnaW5WaWV3OjpzbmFwc2hvdCgpCiB7CiAjaWYgIVVT
RShXSU5HREkpCiAgICAgYXV0byBoZGMgPSBhZG9wdEdESU9iamVjdCg6OkNyZWF0ZUNvbXBhdGli
bGVEQygwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAppbmRleCBhMDMz
ODQyN2Q2NWIyZWJlMzcwZTNmNjhlNTRjYWY0NjE3NjJmNTUzLi5hMWJmZTMxYTQ0MjY1MWMyMzQ3
NjI2ZjlkYjU0MDg1OGMwZmZjNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5jcHAKQEAgLTExOCwyNSArMTE4LDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRl
eHQ+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvCiAgICAg
cmV0dXJuIGdyYXBoaWNzQ29udGV4dDsKIH0KIAotUmVmPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4g
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRp
bmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJp
dG1hcCkKK1JlZjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxh
Z3MsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIGJpdG1hcCkpOwogfQog
Ci1XZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBJbnRT
aXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwKQorV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGlu
YXRlZFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFn
cyBmbGFncywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQogICAgIDogQ29vcmRpbmF0
ZWRTdXJmYWNlKHNpemUsIGZsYWdzKQogICAgICwgbV9iaXRtYXAoYml0bWFwKQogewogfQogCiAj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi1XZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3Jk
aW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1
cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4g
c3VyZmFjZSkKK1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxh
Z3MsIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCiAgICAgOiBDb29y
ZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MpCiAgICAgLCBtX2dyYXBoaWNzU3VyZmFjZShzdXJm
YWNlKQogewogfQogCi1SZWY8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1
cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZs
YWdzIGZsYWdzLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKK1JlZjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFJlZlB0cjxHcmFw
aGljc1N1cmZhY2U+IHN1cmZhY2UpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlKSk7CiB9CkBAIC0xOTEsNyArMTkx
LDcgQEAgdm9pZCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50VG9TdXJmYWNlKGNvbnN0IElu
dFJlY3QmIHJlY3QsIENvb3JkaW5hdGVkU3VyZmEKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBF
UikKLXZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gcGFzc1RleHR1cmUsIGNvbnN0IEludFJlY3QmIHRhcmdl
dCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCkKK3ZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpjb3B5VG9UZXh0dXJlKFJlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiBwYXNzVGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0
KQogewogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKHBhc3NUZXh0dXJlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaAppbmRleCA3ZTYxMWM4ZDY2NDdiMTdkOTk1
YjhmMGIzZTZlOTU4Zjc2NDNhMDI1Li45MzhmNmE1YjE0ZWQ4ZTZhNTljZjhiZGUwZTQyNmM0MGFh
MzU0ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaApAQCAtNzQsMjIgKzc0
LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCopIG92ZXJyaWRlOwog
CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVm
UHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJn
ZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpIG92ZXJyaWRlOworICAg
IHZvaWQgY29weVRvVGV4dHVyZShSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJj
ZU9mZnNldCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXZWJDb29yZGluYXRl
ZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4pOworICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKIAogICAgIC8vIENyZWF0
ZSBhIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTaGFyZWFi
bGVCaXRtYXAuCi0gICAgc3RhdGljIFJlZjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
Pik7CisgICAgc3RhdGljIFJlZjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNz
Q29udGV4dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZB
Q0UpCi0gICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsKKyAgICBXZWJDb29y
ZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBSZWZQdHI8V2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1h
cCBiYWNrZWQgYnkgYSBncmFwaGljcyBzdXJmYWNlLgogICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgRmxhZ3MpOwogICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSByZWZlcmVu
Y2luZyBhbiBleGlzdGluZyBHcmFwaGljc1N1cmZhY2UuCi0gICAgc3RhdGljIFJlZjxXZWJDb29y
ZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CisgICAgc3RhdGljIFJlZjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3Ms
IFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsKIAogICAgIGJvb2wgaXNCYWNrZWRC
eUdyYXBoaWNzU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9ncmFwaGljc1N1cmZhY2U7IH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCAz
M2NiNWRlY2Y2NTFjNjU4NjYzMzk4ZDAxZjE2OGUzMTI2ZmNmOWVlLi40ZWVjYmNjOTk3NzQyOTRk
MzQ5ZGQxOWNkYjMwMjhiMDQ5YzFiYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVh
YmxlQml0bWFwLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlOjpjbGVhcigpCiAgICAgbV9mbGFncyA9IEZsYWc6Ok5vRmxhZ3M7CiB9CiAKLVBhc3NSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncykKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQogewogICAgIHNp
emVfdCBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplKTsKICAgICAKQEAgLTc1LDcgKzc1
LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNo
YXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgZGF0YSkpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykK
IHsKICAgICBzaXplX3QgbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSk7CiAKQEAgLTg2
LDcgKzg2LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IEludFNpemUmIHNpemUKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CiB9CiAKLVBh
c3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeSkKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBz
aGFyZWRNZW1vcnkpCiB7CiAgICAgQVNTRVJUKHNoYXJlZE1lbW9yeSk7CiAKQEAgLTk2LDcgKzk2
LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNo
YXJlYWJsZUJpdG1hcChzaXplLCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CiB9CiAKLVBhc3NSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUm
IGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCitSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgLy8gQ3JlYXRl
IHRoZSBzaGFyZWQgbWVtb3J5LgogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbik7CkBAIC0x
MjQsNyArMTI0LDcgQEAgU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIHZvaWQqIGRhdGEpCiB7CiB9CiAKLVNoYXJlYWJsZUJp
dG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBQ
YXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorU2hhcmVhYmxlQml0bWFwOjpT
aGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9m
bGFncyhmbGFncykKICAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCA3ODMzODllYzUwZjgzMTlkMTc4YTA0
MzQxMjY1N2U0NzQ1MmYzZWZlLi40NTA5M2E0NTliMGQ2NjdmM2EyNGI4ZDdlMWZjZjU4YzJiODJl
OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yOCw3ICsy
OCw2IEBACiAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFJlY3QuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC03NiwxNiArNzUsMTYgQEAg
cHVibGljOgogICAgIH07CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHRoYXQg
dXNlcyBtYWxsb2NlZCBtZW1vcnkuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncyk7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHdob3NlIGJhY2tpbmcg
bWVtb3J5IGNhbiBiZSBzaGFyZWQgd2l0aCBhbm90aGVyIHByb2Nlc3MuCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3Jl
YXRlU2hhcmVhYmxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CiAKICAgICAvLyBD
cmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGZyb20gYW4gYWxyZWFkeSBleGlzdGluZyBzaGFyZWQg
bWVtb3J5IGJsb2NrLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxTaGFyZWRNZW1v
cnk+KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBGbGFncywgUmVmUHRyPFNoYXJlZE1lbW9yeT4pOwogCiAgICAgLy8g
Q3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBmcm9tIGEgaGFuZGxlLgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IEhhbmRsZSYsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IEhhbmRsZSYsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdy
aXRlKTsKIAogICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4KICAgICBib29sIGNyZWF0ZUhhbmRsZShI
YW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRXcml0ZSk7CkBAIC0xMDYsNyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhp
cyBjcmVhdGVzIGEgYml0bWFwIGltYWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hh
cmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdl
IGtub3cgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hh
bmdlLgotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNyZWF0ZUltYWdlKCk7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjcmVhdGVJbWFnZSgpOwogCiAjaWYgVVNFKENHKQogICAg
IC8vIFRoaXMgY3JlYXRlcyBhIGNvcGllZCBDR0ltYWdlUmVmIChtb3N0IGxpa2VseSBhIGNvcHkt
b24td3JpdGUpIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwLgpAQCAtMTE4LDEyICsxMTcsMTIgQEAg
cHVibGljOgogI2VsaWYgVVNFKENBSVJPKQogICAgIC8vIFRoaXMgY3JlYXRlcyBhIEJpdG1hcElt
YWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAg
IC8vIFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVu
dHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgotICAgIFBhc3NSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKKyAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKICNlbmRpZgogCiBwcml2YXRlOgogICAg
IFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIHZvaWQqKTsK
LSAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNz
UmVmUHRyPFNoYXJlZE1lbW9yeT4pOworICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+KTsKIAogI2lmIFVTRShDQUlS
TykKICAgICBzdGF0aWMgc2l6ZV90IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxl
Qml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJp
dG1hcENhaXJvLmNwcAppbmRleCBhNmIyYTI4M2RmYjIzNzhlOGViNDE2ZWY1Y2VhMjAyMDBlYjAx
YTlkLi4wM2U2ODQxYmYwMzFkMmFiNjA3MmQwZDc5YTE0NDhmM2VmZTI0ZmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgc2l6ZV90IFNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCiAgICAgcmV0dXJuIGNhaXJvX2Zvcm1hdF9z
dHJpZGVfZm9yX3dpZHRoKGNhaXJvRm9ybWF0LCBzaXplLndpZHRoKCkpICogc2l6ZS5oZWlnaHQo
KTsKIH0KIAotc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRl
U3VyZmFjZUZyb21EYXRhKHZvaWQqIGRhdGEsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUp
CitzdGF0aWMgaW5saW5lIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZVN1cmZhY2VGcm9t
RGF0YSh2b2lkKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewogICAgIGNv
bnN0IGludCBzdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChjYWlyb0Zvcm1h
dCwgc2l6ZS53aWR0aCgpKTsKICAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpLCBjYWly
b0Zvcm1hdCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBzdHJpZGUpKTsKQEAgLTcyLDcg
KzcyLDcgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEkKICAgICBjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3Jj
UmVjdFNjYWxlZCwgY29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCitSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCiB7CiAgICAgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2UgPSBjcmVhdGVTdXJmYWNlRnJvbURhdGEoZGF0YSgpLCBt
X3NpemUpOwogCkBAIC04NywxMyArODcsMTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVh
c2VTdXJmYWNlRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCkKICAgICBzdGF0aWNfY2FzdDxTaGFy
ZWFibGVCaXRtYXAqPih0eXBlbGVzc0JpdG1hcCktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJl
ZiBpbiBjcmVhdGVDYWlyb1N1cmZhY2UuCiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQorUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUltYWdlKCkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gY3Jl
YXRlQ2Fpcm9TdXJmYWNlKCk7CiAgICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0
ZShzdXJmYWNlLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RG
TW92ZShzdXJmYWNlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggY2U5MzNiNzIzYmYz
MWYzNjc1ODEzMGYxZWU1MGM1ODlkZDVjNmY5MC4uOGUzY2NhNDliNmZlNGI2YTQ4MDVkNmY1OWVl
ODQ3M2JmNGFhMmYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwCkBAIC0xMDYsMTMgKzEwNiwxMyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQq
CiAgICAgYml0bWFwLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlQ0dJbWFn
ZS4KIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgp
CitSZWZQdHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewogICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKTsKICAgICBp
ZiAoIXBsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IEJpdG1hcEltYWdlOjpjcmVhdGUocGxhdGZvcm1JbWFnZS5nZXQoKSk7CisgICAgcmV0dXJuIEJp
dG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShwbGF0Zm9ybUltYWdlKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274838</attachid>
            <date>2016-03-24 09:55:27 -0700</date>
            <delta_ts>2016-03-24 10:58:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160324095529.patch</filename>
            <type>text/plain</type>
            <size>112837</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uYzA3OTUyNmUxNzExZDZhZmZmYjYyNjhjNTIzZTc2
Yzg3ZGU3ZWU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAxNi0wMy0yNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1h
Z2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgor
ICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrIHdhcyBk
b25lIHRvIGVuc3VyZSB0aGUgQ0cKKyAgICAgICAgcG9pbnRlciBpcyByZWZjb3VudGVkIGNvcnJl
Y3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYQorICAgICAgICBGcmFtZURh
dGEgc2luY2UgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdl
UmVmLgorCisgICAgICAgIFdpdGggdGhpcyBjaGFuZ2UsIFBhc3NOYXRpdmVJbWFnZVB0ciBpcyBu
b3QgbmVlZGVkIGFueW1vcmUuIFNvIGFsbCB0aGUKKyAgICAgICAgaW5zdGFuY2Ugb2YgUGFzc05h
dGl2ZUltYWdlUHRyIGNhbiBiZSByZXBsYWNlZCBieSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgIENoYW5nZSB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUgUmV0YWluUHRy
PENHSW1hZ2VSZWY+LgorICAgICAgICAgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldE5TSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0lt
YWdlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0RXZhc09iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaDoKKyAgICAgICAgQ2hhbmdlIDAgdG8gbnVsbHB0ciwgUGFzc1JlZlB0ciB0byBSZWZQdHIg
YW5kIFBhc3NOYXRpdmVJbWFnZVB0ciB0bworICAgICAgICBOYXRpdmVJbWFnZVB0ci4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVw
bGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIE1ha2UgTmF0aXZl
SW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIGZvciBDRy4gR2V0IHJpZCBvZiBQYXNzTmF0aXZlSW1h
Z2VQdHIKKyAgICAgICAgc2luY2UgTmF0aXZlSW1hZ2VQdHIgaXMgbm93IGEgc21hcnQgcG9pbnRl
ciBvbiBhbGwgcGxhdGZvcm1zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
UmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIFNp
bmNlIEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHJldHVybnMgYSBSZXRhaW5Q
dHIsIG1vdmUgaXQKKyAgICAgICAgdG8gbV9wZW5kaW5nQ29udGVudHNJbWFnZSB0byByZW1vdmUg
dGhlIHJlZmNvdW50IGNodXJuLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Qml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgUmVwbGFjZSBtX2ZyYW1lIHdpdGgg
bV9pbWFnZSBhbmQgZnJhbWUqIHdpdGggZnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b3B5Q2Fpcm9JbWFnZVN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmg6CisgICAgICAgIFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICBSZXBsYWNlICpGcmFtZSogd2l0aCAqRnJh
bWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2Up
OiBDcmVhdGUgYSBuZXcgTmF0aXZlSW1hZ2VQdHIgc28gaXQgY2FuCisgICAgICAgIGJlIG1vdmVk
IHRvIHRoZSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpjb3B5U3Vy
ZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1h
Z2VEYXRhKToKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKTogTm8gbmVlZCB0byBjYWxsIENHSW1hZ2VSZWxlYXNl
KCkuIEp1c3QgYXNzaWduCisgICAgICAgIG1faW1hZ2UgdG8gbnVsbHB0ciBhbmQgQ0dJbWFnZVJl
bGVhc2UoKSB3aWxsIGJlIGNhbGxlZCBmcm9tIHRoZSBSZXRhaW5QdHIKKyAgICAgICAgZGVzdHJ1
Y3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5z
Y2FsZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBDR0lt
YWdlUmVmIHdpdGggUmV0YWluUHRyPENHSW1hZ2VSZWY+LiBSZXBsYWNlICpGcmFtZSogd2l0aAor
ICAgICAgICAqRnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgVXNlIG1fY2dJbWFnZS5n
ZXQoKSBpbnN0ZWFkIG9mIG1fY2dJbWFnZSB3aGVuIGNhbGxpbmcgQ0cgZnVuY3Rpb25zLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIFJlcGxh
Y2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuIEdldCB0aGUgcmF3IENH
SW1hZ2VSZWYKKyAgICAgICAgZnJvbSB0aGUgTmF0aXZlSW1hZ2VQdHIgd2hlbiBjYWxsaW5nIHRo
ZSBDRyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VB
ZnRlclNjYWxpbmdJZk5lZWRlZCk6IE1vdmUgdGhlIGltYWdlIGFyZ3VtZW50CisgICAgICAgIHdo
ZW4gY2FsbGluZyBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAg
IFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFt
ZSB0aGUgZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJp
YWJsZQorICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVy
cy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdO
YXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoK
KyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ciBh
bmQgdXNlIGNvbnN0YW50IHJlZmVyZW5jZS4gCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAg
ICAgIENhbGwgYSBmdW5jdGlvbiB3aXRoIGl0cyBuZXcgbmFtZS4KKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHA6CisgICAgICAgIChJbWFnZUdTdHJlYW1l
cjo6SW1hZ2VHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29u
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgVXNlIHNtYXJ0IHBvaW50ZXJz
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycyBDR0ltYWdlUmVm
LgorICAgICAgICBBbmQgY2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyIGFuZCAwIHRvIG51bGxw
dHIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24p
OiBHZXQgdGhlIHJhdyBwb2ludGVyIGZyb20gdGhlCisgICAgICAgIHJldHVybmVkIHNtYXJ0IHBv
aW50ZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNz
UmVmUHRyIHdpdGggUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lj
b25XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKTog
Q2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Y3JlYXRlKTogUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6IENhbGwg
dGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGggaXRzIG5ldyBuYW1lIGFuZCBnZXQgdGhlIHJhdyBw
b2ludGVyIGZyb20gdGhlIHJldHVybmVkIHNtYXJ0IHBvaW50ZXIuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpjcmVhdGUpOiBSZXBsYWNlIFBhc3NSZWZQdHIgd2l0aCBSZWZ0
UHRyIGFuZCB1c2UKKyAgICAgICAgdGhlIG1vdmUgc2VtYW50aWNzIGZvciBwYXNzaW5nIHRoZSBh
cmd1bWVudCB0byBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rpb24K
KyAgICAgICAgd2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5l
cjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oOgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0
ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorICAgICAgICAKIDIwMTYtMDMtMTggIFpodW8gTGkgIDx6
YWNobGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBBdXRvRmlsbCBidXR0b24gaW4gaW5w
dXQgZmllbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDE1ZmE2YWYwYjI2ZTQ4NzM1ZDlhMTMyMmM1
YjQ0M2I4N2YzZTNlMWQuLmYxNDU5OGViMDAzNGExM2E2ZjZjY2I1MzdkMGI4MTdlOTliYzQ0ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wMy0yNCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5nZSBOYXRp
dmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06Cisg
ICAgICAgICgrW1dlYkNhY2hlIGFkZEltYWdlVG9DYWNoZTpmb3JVUkw6Zm9yRnJhbWU6XSk6Cisg
ICAgICAgIFdlYkNvcmU6Ok1lbW9yeUNhY2hlKCkgaXMgdGFraW5nIGFuIHJ2YWx1ZSBOYXRpdmVJ
bWFnZVB0ci4gV2UgbmVlZCB0byBjcmVhdGUKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgZnJvbSB0
aGUgaW1hZ2UgcmF3IHBvaW50ZXIgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisKIDIwMTYt
MDMtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUg
Q2FjaGVzIGluIFNhZmFyaSdzIERldmVsb3AgbWVudSBkb2VzIG5vdCBkaXNhYmxlIGNhY2hlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwppbmRleCA1ODllOGVmYmEzZWU0YWZmYzJmNjkyYjg0NDg5MGNjYjgzZjQy
NmM3Li5lZTVlNGI0NmJjN2Q5ZDM1NzlkN2VjODUwY2NjZjEwZGJjMTgzNGE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBDaGFuZ2UgTmF0aXZlSW1hZ2VQdHIg
Zm9yIENHIHRvIGJlIFJldGFpblB0cjxDR0ltYWdlUmVmPgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAg
KiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6c25hcHNob3QpOgorICAgICAgICBSZXBsYWNlIFBhc3NSZWZQdHIgd2l0aCBSZWZQdHIuCisK
IDIwMTYtMDMtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTY5NTEgYW5kIHIxOTcwMzEuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNTNmZTgxYTExNzFjYjU3ZDQ1NjIwYTdiMzI5ZWMyODRlNTYzYjJlOC4uMmUz
MTlhODc2YWQ0NTEzODRmNjVjODBhNzI0YTE4NzgzZWRjOWNjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMzIEBACisyMDE2LTAzLTI0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZSxjb20+CisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIGZvciBDRyB0byBiZSBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTQxMgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVk
U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y29weVRv
VGV4dHVyZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUpOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oOgorICAgICAgICBSZXBsYWNlIFBhc3NSZWZQdHIgd2l0aCBSZWZQdHIuCisg
ICAgICAgIAorICAgICAgICAqIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVN1cmZhY2VGcm9tRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgUmVwbGFj
ZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJ
bWFnZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0ciBhbmQgdXNlIHRo
ZSBtb3ZlIHNlbWFudGljcyB3aGVuIGNhbGxpbmcKKyAgICAgICAgQml0bWFwSW1hZ2U6OmNyZWF0
ZSgpLgorCiAyMDE2LTAzLTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgR2l2ZSBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uIGluZm9ybWF0
aW9uIGFib3V0IHBhcmVudCBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAppbmRleCAxZTZmY2NkOGViNDY5OWMwNmE5OWM0MjM2YjE5MTk1MWU4NWRjMDJmLi43
MTMxNGJjMjY3NDUyOGZkZDIxNTYyZTgzYjMyYzE2MTZlYWY0ZjRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBib29sIEhUTUxW
aWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAogICAgIHJldHVybiBw
bGF5ZXIoKS0+aGFzVmlkZW8oKSAmJiBwbGF5ZXIoKS0+aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
OwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCitOYXRpdmVJbWFnZVB0ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBpZiAoIXBsYXllcigpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggYWQ5
NDhmOTQ0YTMwODE2YWE1N2IzYzhlZWE2MDI0ODgxMjQ1NjUxNS4uYjRkN2YxZTE3MGYxZjczZWNh
NDg2NTY0NjA3Y2Q1N2VmMWY0ZmUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRv
IGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBQYXNzTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIC8vIFVzZWQgYnkgV2ViR0wgdG8g
ZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgogICAgIC8vIFNlZSBtb3JlIGRl
dGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgp
IGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCmluZGV4IDdiZjY4MDRmY2Y4YWZhNWNjZWMwMTk0MzA5YmVjNTk3NDc3
M2UyMjcuLmQ2OGY5ODZjYWE3YjM4OGE1MjlmM2I4MzkwYTBlNjM3M2U2YWFiZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcApAQCAtMTYyNSw3ICsxNjI1LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAg
ICBjaGVja09yaWdpbih2aWRlbyk7CiAKICNpZiBVU0UoQ0cpIHx8IChFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKSAmJiBVU0UoR1NUUkVBTUVSX0dMKSAmJiBVU0UoQ0FJUk8pKQotICAgIGlm
IChQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpKSB7CisgICAgaWYgKE5hdGl2ZUltYWdlUHRyIGltYWdlID0gdmlkZW8tPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKSkgewogICAgICAgICBjLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IEZsb2F0U2l6ZSh2aWRlby0+dmlkZW9XaWR0aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQoKSksIGRz
dFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3Qp
KQogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggOTk5NDY1ZWEzOTA2OTdjYmUwMGZlNmZh
ODgzOGMxMzhlNTQ0N2ExNy4uMDk5MzBlMGU4Y2IxOWNhOTEwYjBlMTNiYWM1NjA3N2E2MmZhMzY5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0y
MDQsMjkgKzIwNCwyNCBAQCB1bnNpZ25lZCBNZW1vcnlDYWNoZTo6bGl2ZUNhcGFjaXR5KCkgY29u
c3QKICAgICByZXR1cm4gbV9jYXBhY2l0eSAtIGRlYWRDYXBhY2l0eSgpOwogfQogCi0jaWYgVVNF
KENHKQotLy8gRklYTUU6IFJlbW92ZSB0aGUgVVNFKENHKSBvbmNlIHdlIGVpdGhlciBtYWtlIE5h
dGl2ZUltYWdlUHRyIGEgc21hcnQgcG9pbnRlciBvbiBhbGwgcGxhdGZvcm1zIG9yCi0vLyByZW1v
dmUgdGhlIHVzYWdlIG9mIENGUmV0YWluKCkgaW4gTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNo
ZSgpIHNvIGFzIHRvIG1ha2UgdGhlIGNvZGUgcGxhdGZvcm0taW5kZXBlbmRlbnQuCiBzdGF0aWMg
Q2FjaGVkSW1hZ2VDbGllbnQmIGR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxDYWNoZWRJbWFnZUNsaWVudD4gY2xpZW50OwogICAgIHJldHVybiBj
bGllbnQ7CiB9CiAKLWJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFn
ZVB0ciBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24pCitib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQ
dHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24pCiB7CiAgICAgQVNTRVJUKGltYWdlKTsKICAgICBTZXNzaW9uSUQgc2Vzc2lvbklE
ID0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2Fj
aGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBp
ZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAotICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGltYWdlLCBudWxscHRyKTsKKyAgICBSZWZQdHI8Qml0
bWFwSW1hZ2U+IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdl
KSwgbnVsbHB0cik7CiAgICAgaWYgKCFiaXRtYXBJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hlZEltYWdlPiBjYWNoZWRJbWFnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UuZ2V0KCksIENhY2hlZElt
YWdlOjpNYW51YWxseUNhY2hlZCwgc2Vzc2lvbklEKTsKIAotICAgIC8vIEFjdHVhbCByZWxlYXNl
IG9mIHRoZSBDR0ltYWdlUmVmIGlzIGRvbmUgaW4gQml0bWFwSW1hZ2UuCi0gICAgQ0ZSZXRhaW4o
aW1hZ2UpOwogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoJmR1bW15Q2FjaGVkSW1hZ2VDbGll
bnQoKSk7CiAgICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNv
ZGVkU2l6ZSgpKTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQpAQCAtMjY0LDcgKzI1
OSw2IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNhCiAgICAgLy8gcmVzb3VyY2UgbWF5IGJlIGRl
bGV0ZWQgYWZ0ZXIgdGhpcyBjYWxsLgogICAgIGRvd25jYXN0PENhY2hlZEltYWdlPigqcmVzb3Vy
Y2UpLnJlbW92ZUNsaWVudCgmZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKIH0KLSNlbmRpZgog
CiB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXMoYm9vbCBzaG91bGREZXN0cm95
RGVjb2RlZERhdGFGb3JBbGxMaXZlUmVzb3VyY2VzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCBjODhkMmRiZDRlNmIxZDI3ODBkZGEwNGZjY2FmOWI4
MjNhNDYxN2EwLi41MzFlOWFmZjRiNWFiMDQwZWIxYmJkMjg3NmY3YTBhNWZiOTFhMTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMTU1LDEyICsxNTUs
OCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRPcmlnaW5zV2l0aENhY2hl
KFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5zKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNXaXRoQ2FjaGUoU2Vzc2lvbklEKSBjb25z
dDsKIAotI2lmIFVTRShDRykKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9uY2Ug
d2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIG9uIGFsbCBwbGF0
Zm9ybXMgb3IKLSAgICAvLyByZW1vdmUgdGhlIHVzYWdlIG9mIENGUmV0YWluKCkgaW4gTWVtb3J5
Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSgpIHNvIGFzIHRvIG1ha2UgdGhlIGNvZGUgcGxhdGZvcm0t
aW5kZXBlbmRlbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0
aXZlSW1hZ2VQdHIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUlt
YWdlUHRyJiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7Ci0jZW5kaWYKIAog
ICAgIC8vIHBydW5lRGVhZCooKSAtIEZsdXNoIGRlY29kZWQgYW5kIGVuY29kZWQgZGF0YSBmcm9t
IHJlc291cmNlcyBub3QgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCiAgICAgLy8gcHJ1bmVMaXZl
KigpIC0gRmx1c2ggZGVjb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIHN0aWxsIHJlZmVyZW5jZWQg
YnkgV2ViIHBhZ2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5j
cHAKaW5kZXggZGNjYTg4ZTViNzA3ZDFhNzAwYmY0NmVmNjMwMDQ3YTMzY2Y4OGI5Zi4uNmRhMjQ0
ZTVkM2ExZTY0YWIzYTE4MGQ5MTM4MDI1MGI2NDkwYTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC0zMDAsNyArMzAwLDcgQEAgSW1hZ2UqIElj
b25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VV
UkxPcmlnaW5hbCwgY28KICAgICByZXR1cm4gaWNvblJlY29yZC0+aW1hZ2Uoc2l6ZSk7CiB9CiAK
LVBhc3NOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNp
emUpCitOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZv
clBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNp
emUpCiB7CiAgICAgSW1hZ2UqIGljb24gPSBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKHBhZ2VV
UkxPcmlnaW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFpY29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCA1MzBhM2EzMDg5MDE0YTNlYjFiZTAyZDMyNDgyOWNh
YzI2ZDg2ZDMyLi5kYjQzZWMyY2IzMTE5ZTU2MzAwODc0NGJhYmMwNTkyNGRlNjFjMmVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtODgsNyArODgsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChj
b25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCkgb3ZlcnJpZGU7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgUGFzc05hdGl2ZUltYWdl
UHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJM
T3JpZ2luYWwsIGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBz
eW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdp
bmFsLCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIEljb25Mb2FkRGVjaXNpb24gc3luY2hyb25v
dXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIERvY3VtZW50TG9hZGVyKikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNl
LmgKaW5kZXggMDI1NDY1MzA0MTY5MTk3MjIyZTc3ZGYwNmU2NmZmNjYzZTc4MDhhYS4uNTQ0Y2Jh
Y2I2OThjNjhiMGQ4NjgxYzI4YmQ2MThjZTcyOGMxYWZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChj
b25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNp
c2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9j
dW1lbnRMb2FkZXIqKSB7IHJldHVybiBJY29uTG9hZE5vOyB9CiAgICAgdmlydHVhbCBJbWFnZSog
c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikg
eyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIHN5bmNo
cm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYp
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHN5bmNocm9u
b3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsg
cmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFzeW5jaHJvbm91cyBjYWxscyB3ZSBzaG91bGQg
dXNlIHRvIHJlcGxhY2UgdGhlIGFib3ZlIHdoZW4gc3VwcG9ydGVkLgogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGZhZjBm
ODY5NjJjM2ZiNjU3Nzc0NWJmYWY3NWI0Yzg0ZDgwY2MwNjAuLjRhNWM2MWE1ZDI3YmE4NTU0M2Mw
MDY0NWRmOGVhMjAzMzUwYTllMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6c3RhcnRUaW1lcihkb3VibGUgZGVsYXkpCiAgICAgbV9mcmFtZVRpbWVyLT5zdGFydE9uZVNo
b3QoZGVsYXkpOwogfQogCi1ib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4KHNpemVf
dCBpbmRleCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFt
ZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFw
SW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTE4NCw5ICsxODQsOSBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1l
cyk7CiAKICAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewot
ICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgICAgIG1fZnJhbWVzW2luZGV4XS5t
X2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBs
aW5nTGV2ZWwpOwogICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsID0g
c3Vic2FtcGxpbmdMZXZlbDsKLSAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBpZiAobnVtRnJhbWVzID09IDEgJiYgbV9mcmFtZXNb
aW5kZXhdLm1faW1hZ2UpCiAgICAgICAgICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKICAgICB9
CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmICgh
c3Vic2FtcGxpbmdMZXZlbCAmJiBmcmFtZVNpemUgIT0gbV9zaXplKQogICAgICAgICBtX2hhc1Vu
aWZvcm1GcmFtZVNpemUgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9mcmFt
ZSkgeworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewogICAgICAgICBpbnQgZGVs
dGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcyk7CiAg
ICAgICAgIG1fZGVjb2RlZFNpemUgKz0gZGVsdGFCeXRlczsKICAgICAgICAgLy8gVGhlIGZ1bGx5
LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJzdW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVz
ZWQKQEAgLTM3OSwxNCArMzc5LDE0IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXND
YWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNhY2hpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkKLSAgICAg
ICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUgJiYgIW1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lKQorICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRh
dGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgIHx8IChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2hhdmVN
ZXRhZGF0YSkpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAsIGZyYW1lQ2FjaGluZyk7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpm
cmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCitO
YXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zOTUsNyArMzk1LDcgQEAgUGFz
c05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBm
bG9hdCBwcmVzZW50YXRpb25TY2EKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1l
IHdpdGggYSBoaWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0
bwogICAgIC8vIHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwg
bV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lICYmIHN1YnNhbXBsaW5n
TGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGlu
ZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNh
bXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CiAgICAg
ICAgIC8vIElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBh
IHNpemUsIHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgogICAgICAgICBpbnQgc2l6ZUNoYW5n
ZSA9IC1tX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwogICAgICAgICBtX2ZyYW1lc1tpbmRl
eF0uY2xlYXIodHJ1ZSk7CkBAIC00MDYsMTAgKzQwNiwxMCBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIg
Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlv
blNjYQogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmVuJ3QgZmV0Y2hlZCBhIGZyYW1lIHlldCwg
ZG8gc28uCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5k
ZXhdLm1fZnJhbWUpCisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFt
ZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5n
TGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5k
ZXhdLm1fZnJhbWU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogfQogCiBi
b29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKQEAg
LTQyOCw5ICs0MjgsOSBAQCBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90IGluZGV4KQogICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKIH0K
IAotUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKQogewotICAgIHJldHVybiBmcmFtZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOworICAg
IHJldHVybiBmcmFtZUltYWdlQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CiB9CiAKIGJvb2wgQml0
bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDc0OTNjNmE0YmZi
ODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQuLjAwZmJhMzNiYTQxOWMxMjQxNTQxNjUzMzAx
ZTI5NWNlZjg2ZDE3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaApAQCAtNjUsMTYgKzY1LDE0IEBAIGNsYXNzIFRpbWVyOwogLy8gPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIHN0cnVjdCBGcmFt
ZURhdGEgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lRGF0YSk7CiBwdWJsaWM6CiAg
ICAgRnJhbWVEYXRhKCkKLSAgICAgICAgOiBtX2ZyYW1lKDApCi0gICAgICAgICwgbV9vcmllbnRh
dGlvbihEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgOiBtX29yaWVudGF0aW9uKERl
ZmF1bHRJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICAsIG1fc3Vic2FtcGxpbmdMZXZlbCgwKQog
ICAgICAgICAsIG1fZHVyYXRpb24oMCkKICAgICAgICAgLCBtX2hhdmVNZXRhZGF0YShmYWxzZSkK
ICAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCi0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVl
KSAKKyAgICAgICAgLCBtX2hhc0FscGhhKHRydWUpCiAgICAgICAgICwgbV9mcmFtZUJ5dGVzKDAp
CiAgICAgewogICAgIH0KQEAgLTg4LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMg
d2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xlYXIuCiAgICAgYm9vbCBj
bGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9mcmFtZTsK
KyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwogICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmll
bnRhdGlvbjsKICAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbDsKICAgICBm
bG9hdCBtX2R1cmF0aW9uOwpAQCAtMTA4LDE2ICsxMDYsMTYgQEAgY2xhc3MgQml0bWFwSW1hZ2Ug
ZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogICAgIGZyaWVuZCBjbGFzcyBHcmFkaWVudEltYWdlOwog
ICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSwgSW1h
Z2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAwKQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNy
ZWF0ZShOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
ciA9IG51bGxwdHIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJ
bWFnZShuYXRpdmVJbWFnZSwgb2JzZXJ2ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQml0bWFwSW1hZ2UoV1RGTW92ZShuYXRpdmVJbWFnZSksIG9ic2VydmVyKSk7CiAgICAgfQot
ICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZl
ciA9IDApCisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEJpdG1hcEltYWdlKG9ic2VydmVyKSk7CiAgICAgfQogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKEhCSVRN
QVApOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0
ZShIQklUTUFQKTsKICNlbmRpZgogICAgIHZpcnR1YWwgfkJpdG1hcEltYWdlKCk7CiAgICAgCkBA
IC0xNzIsNyArMTcwLDcgQEAgcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0
KEV2YXMqKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgoY3VycmVudEZyYW1lKCkpOyB9CiAKICAgICBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlOwpAQCAtMTk5LDggKzE5Nyw4IEBAIHByb3RlY3Rl
ZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSByZXBldGl0aW9uIGNvdW50IGlzIGtub3duIHRv
IGJlIGNvcnJlY3QuCiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFBh
c3NOYXRpdmVJbWFnZVB0ciwgSW1hZ2VPYnNlcnZlciogPSAwKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IDApOworICAgIFdFQkNPUkVfRVhQT1JUIEJp
dG1hcEltYWdlKE5hdGl2ZUltYWdlUHRyJiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6
ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSBvdmVycmlkZTsKQEAgLTIxNCwxMCArMjEy
LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBmcmFtZUNvdW50KCk7CiAKLSAgICBQYXNz
TmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2Nh
bGVIaW50ID0gMSk7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lQXRJ
bmRleChzaXplX3QpOworICAgIE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7CisgICAgTmF0aXZlSW1hZ2VQdHIg
Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAotICAgIGJvb2wgaGF2ZUZy
YW1lQXRJbmRleChzaXplX3QpOworICAgIGJvb2wgaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCk7CiAKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBmbG9h
dCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBiYWJjNGM4NWNjMmRmNzQ5
NThmYTFjOTEwZTU2YWFjYjg3MTkwY2YyLi5jNTI0YmExOWQ1ZGRhNDA1YzYwYzE0NzgyMTYyNzlj
MGM4NTk2NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaApAQCAtMzAyLDcgKzMwMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAK
ICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9u
ID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAppbmRleCBlMzZiYTNhYTU2ZDU4YzIwNmE5ODNmZjViYTliZmE3YjEzNjUxMTgyLi5kYmJiY2Y1
OGMzN2I5YTZiMTY0ZDZmMTM1MWNkNmUxNWViNDFkODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTEyNDUsNyAr
MTI0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgSW1hZ2VTb3VyY2UqIG1fZGVjb2RlcjsKICAgICAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9pbWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cp
Ci0gICAgICAgIENHSW1hZ2VSZWYgbV9jZ0ltYWdlOworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gbV9jZ0ltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNvZGVk
SW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKaW5kZXggZDk1ZTdkZWI4MTBmYzI0Zjdm
NjFiMWIyM2E0YjlhZWYzZjNjMTdiNy4uZjZiYmI4MjA2Y2VhYjdjZDM2Mzk2MjA4MDUwYjQwMzE2
MWRhYTZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtMjIs
OCArMjIsOCBAQAogI2RlZmluZSBJY29uX2gKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NSwxOSArNDUsMTkgQEAgY2xhc3MgRmxvYXRSZWN0
OwogICAgIAogY2xhc3MgSWNvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEljb24+IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9y
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVuYW1lcyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+SWNvbigpOwogCiAgICAg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogI2lmIFBM
QVRGT1JNKFdJTikKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaElj
b24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVm
UHRyPEljb24+IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24o
aEljb24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IE1h
a2UgdGhpcyB3b3JrIGZvciBub24taU9TIHBvcnRzIGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElP
UyktZ3VhcmQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3NSZWZQdHI8SWNvbj4gY3Jl
YXRlSWNvbkZvckltYWdlKE5hdGl2ZUltYWdlUHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYp
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCi0gICAgSWNvbihDR0ltYWdlUmVmKTsKKyAg
ICBJY29uKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYpOwogICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBtX2NnSW1hZ2U7CiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgSWNvbihOU0ltYWdl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA0ZWQ2ZTM1
ZDk5YWZhYWI1YjhiZGVjNmZkN2ExMzIwZTIwZDA0NmY1Li5jMzE0MmFkZWM3YTI1Yzg0NjBlMjlh
ZjM1MDJiOTQxNDdiNzA2YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTEzNSwyMyArMTM1LDIzIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUg
eyBTdHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAotICAg
IHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1hZ2VPcmllbnRh
dGlvbigpOyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgog
CiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5TSW1hZ2UoKSB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCBOU0ltYWdlKiBnZXROU0ltYWdlKCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIENGRGF0
YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBD
RkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2Vu
ZGlmCiAKICNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYo
KSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJl
Zk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgUmV0YWlu
UHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2
aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUm
KSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
Z2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC0xNjAsMTEgKzE2MCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIEdka1BpeGJ1ZiogZ2V0R2RrUGl4YnVmKCkgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEVGTCkKLSAgICB2aXJ0dWFsIEV2YXNf
T2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBF
dmFzX09iamVjdCogZ2V0RXZhc09iamVjdChFdmFzKikgeyByZXR1cm4gbnVsbHB0cjsgfQogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAppbmRleCAwNGY5ZWY5M2FlYTlkMjJlYWYwZTYxYzlhMjBkNjczNTM3MjI5NWFiLi41N2JhNjM1
MjBmZGViM2JhMjFlMjcwYjc2OWZkZDI5MDRjY2E3YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJh
eS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDEsOCArMTAxLDggQEAgcHVibGljOgogCiAgICAgZW51
bSBDb29yZGluYXRlU3lzdGVtIHsgTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0sIEJhY2tpbmdTdG9y
ZUNvb3JkaW5hdGVTeXN0ZW0gfTsKIAotICAgIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IGdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiwgQ29vcmRpbmF0ZVN5c3Rl
bSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmLCBD
b29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OworICAgIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IElu
dFJlY3QmLCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0UHJlbXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lz
dGVtKSBjb25zdDsKIAogICAgIHZvaWQgcHV0Qnl0ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQs
IFVpbnQ4Q2xhbXBlZEFycmF5KiwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5
c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NGVmMDUzYTMzM2Zm
NWZjNTc4ZTgxODAwY2M2ZmM5NzU1ZWZiYWI4Li5hZTMxYzk4MzUyMWQ1MDA4MjI1YzFmYzM0Mjlj
MmM0MGEwMzdlNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCkBAIC0xNDgsMTkgKzE0OCwxOSBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6
OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZy
YW1lQ291bnQoKSA6IDA7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKK05hdGl2ZUlt
YWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9
IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWJ1ZmZlciB8
fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFplcm8taGVpZ2h0IGlt
YWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuICBJZiB3ZSBoYXZlIGFuCiAg
ICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCiAgICAgaWYgKHNpemUoKS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9y
IHNvbWUgcG9ydHMsIHRoZSBkYXRhCiAgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250
YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCBhY2RkMWNlNGNl
MzAwZGU4MWM5ZTA2MmVlZTc2MDdiZjQ3MmE3MGFmLi5jMTFmN2JlNDgyOWU0ZTZiYzQwMTc4OTYz
YzFkNTFhMTg2NjBhMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gZGVjb2Rl
ZCBmcmFtZXMuCiAgICAgLy8KICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCBjbGVhcihm
YWxzZSwgbikgYW5kIHN1YnNlcXVlbnRseSBjYWxsCi0gICAgLy8gY3JlYXRlRnJhbWVBdEluZGV4
KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCisgICAg
Ly8gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmly
c3QgY2FsbCBjbGVhcih0cnVlKS4KICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBzdGF0ZWZ1bCBJ
bWFnZVNvdXJjZXMvZGVjb2RlcnMgd2lsbCB3b3JrIHByb3Blcmx5LgogICAgIC8vCiAgICAgLy8g
VGhlIHxkYXRhfCBhbmQgfGFsbERhdGFSZWNlaXZlZHwgcGFyYW1ldGVycyBzaG91bGQgYmUgc3Vw
cGxpZWQgYnkgY2FsbGVycwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENh
bGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBo
aWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAg
UGFzc05hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25B
dEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAv
LyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
OTliOWQ1Y2FkZTczZTBjMWZhZDA5YTc3Y2Y1ZjZkYjI5OGMzN2FhNS4uOTA2OTViNDQ1NjNhMDhi
NGQwY2M2ZDM2YzRmZmQ4MmQ1MWNhMWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtODM3LDcgKzgzNyw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxG
b3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1QYXNz
TmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQor
TmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQog
ewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4
IDVlYTU1ODcxMTA1OTM3ZWVlNDA2M2U3MjU5MmExYWU1NTcxNTQ1Y2IuLmMyZTBjZjdiODEzMDgx
ZDE1MzM3ZDBhOTJlNmNhMzE3ZDBhZTA4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDIzLDcgKzQyMyw3IEBAIHB1YmxpYzoKICAg
ICAvLyBodHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lL3RydW5rL3NyYy9ncHUv
Y29tbWFuZF9idWZmZXIvc2VydmljZS9nbGVzMl9jbWRfY29weV90ZXh0dXJlX2Nocm9taXVtLmNj
IHZpYSBzaGFkZXJzLgogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBm
b3JtYXQsIEdDM0RlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7
CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwor
ICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAgIHVz
aW5nIE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbmV0
d29ya1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGU1NzlhZTkzODU2ZTdkZGM4NTk2ODY0NzM2MThk
YTJhMTRkNmM3OTAuLmQ5MTlmNTQzMzdhNDU3YzEwZWM2OGJhNWEyMGViN2RlM2I4ZmVjNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxv
YXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmpl
Y3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29s
LCBib29sKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmly
dHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4g
bnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlBy
ZWxvYWQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2VQdHIuaAppbmRleCBkZjk0MWE1NjZhOWU0NjkyNzcyN2JhMWVjNjg0OGYyMTY4MDNh
NDViLi4wMzQ2NjY1YjM2ZGJlNTY2MWEwOWNlNzFjNGVjYjRhMGMxZThlMjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNkZWZpbmUgTmF0aXZlSW1hZ2VQdHJfaAogCiAjaWYgVVNFKENHKQorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIHR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VS
ZWY7CiAjZWxpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKQEAgLTM4LDIx
ICszOSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBOYXRpdmVJbWFnZVB0ciBhbmQgUGFzc05hdGl2ZUlt
YWdlUHRyIHNob3VsZCBiZSBzbWFydAotLy8gcG9pbnRlcnMgKHNlZSBTVkdJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkuCiAjaWYgVVNFKENHKQotdHlwZWRlZiBDR0ltYWdlUmVm
IE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1h
Z2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IE5hdGl2ZUltYWdlUHRyOwotdHlwZWRlZiBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gUGFz
c05hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFdJTkdESSkKIHR5cGVkZWYgUmVmUHRyPFNoYXJl
ZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiAjZW5kaWYKIAotI2lmICFVU0UoQ0FJUk8pCi10eXBl
ZGVmIE5hdGl2ZUltYWdlUHRyIFBhc3NOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgotCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0NjhiMDY4MTEwZWJhMjMyZjJi
YzZmZjA2MjZlZmJhMjAuLmQ2ZGU3NjJjMWZlMmJmODQ2YWFhZTI0NTNjNmM1NWIwYmFkY2E5ZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgYm9vbCB2aWRlb091dHB1dEhhc0F2YWlsYWJs
ZUZyYW1lKCk7CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1l
ZGlhRGF0YVdpbGxDaGFuZ2UoKTsKIAogICAgIHZvaWQgY3JlYXRlT3BlbkdMVmlkZW9PdXRwdXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDE1NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4
ZjMxZGZhN2M0NmNkZGYuLmM3Nzc2ZTA0ZmMwZjdiMTQ2MzA5NGQxNDkwOWNmN2M1MDkzZjllNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjM0NiwxMCArMjM0NiwxMCBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHZpZGVvVGV4dHVyZS5nZXQoKSwgd2lkdGgsIGhl
aWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1QYXNzTmF0aXZl
SW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCitOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0
SW1hZ2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1hZ2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFz
dEltYWdlOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ondh
aXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
MjMwYThmNmI3MjFiNTE1YTMxZTUyMDI2ZWZiMGRlYTRkNGMwMDAxYS4uNTZmNzkxZDk4M2U3YWNm
MmJkZTdkMDU4YjQyNzY0MDA5YTEwZmVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMDA4LDE2ICsx
MDA4LDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29saWRDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0lt
YWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgQ0dJbWFnZVJl
ZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAg
ICBhdXRvIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAg
ICAgICAgIGlmICghbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8g
RklYTUU6IHByb2JhYmx5IGRvbid0IG5lZWQgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgYXQg
YWxsIG5vdy4KLSAgICAgICAgaWYgKG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlICYmIG1fdW5j
b3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09IG5ld0ltYWdlKQorICAgICAgICBpZiAobV91
bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPT0gbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIAotICAgICAgICBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSA9IG5ld0ltYWdl
OwotICAgICAgICBtX3BlbmRpbmdDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7CisgICAgICAgIG1f
dW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gV1RGTW92ZShuZXdJbWFnZSk7CisgICAgICAgIG1f
cGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKIAogICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvckltYWdlOwogICAg
ICAgICBpZiAoIW1fY29udGVudHNMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggY2Q1
N2VlNDg1ZWE4MGM2Y2YzNDdhYjNiZDk3MzdkNTk5OWUxMDI4Mi4uYmRhMGRjMjgxYzkzN2RjZGYy
ZGIxNWFjNzEyOGEyMzk0ZDc1NzRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1h
Z2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVy
KiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiYmIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdl
KG9ic2VydmVyKQogICAgICwgbV9zaXplKGNhaXJvU3VyZmFjZVNpemUobmF0aXZlSW1hZ2UuZ2V0
KCkpKQogICAgICwgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgwKQpAQCAtNTgsNyArNTgsNyBA
QCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5h
dGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogewogICAgIG1fZnJhbWVzLmdyb3coMSk7CiAgICAg
bV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobmF0aXZl
SW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci0gICAgbV9mcmFtZXNbMF0ubV9m
cmFtZSA9IG5hdGl2ZUltYWdlOworICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKG5h
dGl2ZUltYWdlKTsKICAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7CiAKICAg
ICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBj
b25zdCBGbG8KIAogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKLSAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICBhdXRv
IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgaWYgKCFz
dXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4K
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgYXV0byBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5k
ZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFy
bHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIApAQCAtMTU4
LDggKzE1OCw4IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAg
ICAgaWYgKGNsZWFyTWV0YWRhdGEpCiAgICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7CiAK
LSAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBtX2ZyYW1lID0gbnVsbHB0cjsKKyAgICBpZiAo
bV9pbWFnZSkgeworICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAppbmRleCBiZTk3
MDEwYjg2ZjMwOGExZWJlYWM3MTMwZTFlM2EwYjVkZGJiM2Y2Li5kZDhiMDk3OGFkYmRhYjQ2YzU4
NzE2ZjYyMzE2OTBiZWYzZTM4OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCkBAIC0yMTYsNyArMjE2
LDcgQEAgdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19z
dXJmYWNlX3QqIGltYWdlLCBjb25zdCBJbnRTaXoKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0K
IAotUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlDYWlyb0ltYWdlU3VyZmFjZShjYWly
b19zdXJmYWNlX3QqIG9yaWdpbmFsU3VyZmFjZSkKK1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNv
cHlDYWlyb0ltYWdlU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIG9yaWdpbmFsU3VyZmFjZSkKIHsK
ICAgICAvLyBDYWlybyBkb2Vzbid0IHByb3ZpZGUgYSB3YXkgdG8gY29weSBhIGNhaXJvX3N1cmZh
Y2VfdC4KICAgICAvLyBTZWUgaHR0cDovL2xpc3RzLmNhaXJvZ3JhcGhpY3Mub3JnL2FyY2hpdmVz
L2NhaXJvLzIwMDctSnVuZS8wMTA4NzcuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKaW5kZXggYWRhYjBlNWM3
ODM4NmI4OTJhYjViOWM0MzFhNjdkZDEzOWViZGY4NS4uNzJiNWU3MzMzZDhjOTYxMmE3YTM2ZWYw
YWY4NTMxY2FkYzNjYmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5oCkBAIC01NSw3ICs1NSw3IEBAIGNhaXJv
X29wZXJhdG9yX3QgdG9DYWlyb09wZXJhdG9yKENvbXBvc2l0ZU9wZXJhdG9yIG9wKTsKIGNhaXJv
X29wZXJhdG9yX3QgdG9DYWlyb09wZXJhdG9yKEJsZW5kTW9kZSBibGVuZE9wKTsKIHZvaWQgZHJh
d1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjYWlyb190KiBjciwgY2Fpcm9fc3VyZmFjZV90KiBpbWFn
ZSwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNhaXJvX29wZXJhdG9yX3Qg
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwotUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IGNvcHlDYWlyb0ltYWdlU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqKTsKK1JlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IGNvcHlDYWlyb0ltYWdlU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqKTsKIAog
dm9pZCBjb3B5UmVjdEZyb21DYWlyb1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBm
cm9tLCBjYWlyb190KiB0bywgY29uc3QgSW50U2l6ZSYgb2Zmc2V0LCBjb25zdCBJbnRSZWN0Jik7
CiB2b2lkIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VUb0Fub3RoZXIoY2Fpcm9fc3VyZmFjZV90KiBm
cm9tLCBjYWlyb19zdXJmYWNlX3QqIHRvLCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGNvbnN0IElu
dFJlY3QmLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoKSwgY2Fpcm9fb3BlcmF0b3JfdCA9IENB
SVJPX09QRVJBVE9SX09WRVIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAppbmRl
eCBjYzcwNDYxNDdhZTgxZjFmYWRhYTZkODQxNjI0OTgwYzZmZGZjYmYxLi44YzQxODZkNzFlNTNh
MTkwN2U5MmQ3M2EyYjAxNjQ3ZmZkNjZiMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENh
aXJvLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdl
RXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAg
ICAgIGRlY29kZXIuc2V0RGF0YShtX2ltYWdlLT5kYXRhKCksIHRydWUpOwogICAgICAgICBpZiAo
IWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
MCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
ZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
ZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0
LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxw
aGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBwaXhlbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAppbmRleCBmMDc5MjBmMGQyMzI0NjJjOGZiNDFhMDMyMmQ4MjJhYzlkNWVkMzA3Li4zY2Y0
NTQzZjIwNWVkOTk0OTg4NjEwOTIyY2NkZDc3MjVlZTBjMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCkBAIC0yNTksMTggKzI1OSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAg
ICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0
aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgICAgICBtX2Rpc3BsYXlM
aXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBpbWFnZVB0cjsKLQogICAgIHBsYXRm
b3JtQ29udGV4dCgpLT5zYXZlKCk7CiAKICAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJh
dGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggZDBkZTdhMTdjNjg2NTE0NjVhZTdkMGRh
NzIyZWQ1ZWQ0MGJkMDIwZS4uMDQ1M2E2MjU3ZjBkZWM3OTRlMzc4ZmVhNTYxYzJiNzE2ZTMwYTJj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBSZWZQdHI8SW1h
Z2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Is
IFNjYWxlQmVoYXZpbwogICAgICAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShjb3B5Q2Fp
cm9JbWFnZVN1cmZhY2UobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkpOwogCiAgICAgLy8gQml0bWFw
SW1hZ2Ugd2lsbCByZWxlYXNlIHRoZSBwYXNzZWQgaW4gc3VyZmFjZSBvbiBkZXN0cnVjdGlvbgot
ICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UpOworICAgIHJl
dHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KG1fZGF0YS5t
X3N1cmZhY2UpKTsKIH0KIAogQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJ
bWFnZU1vZGUoKQpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3Jt
VHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiAgICAg
Y2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3RhbmdsZShtX2RhdGEubV9zdXJmYWNlLmdldCgp
LCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKIH0KIAotUGFzc1JlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlTdXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlLCBJbnRSZWN0JiByZWN0KQorUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gY29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UsIEludFJlY3QmIHJlY3QpCiB7CiAgICAgY2Fpcm9fc3VyZmFjZV90eXBlX3Qgc3VyZmFjZVR5
cGUgPSBjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpOwogCkBAIC0zMDEsNyArMzAxLDcg
QEAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlTdXJmYWNlVG9JbWFnZUFuZEFkanVz
dFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBzdXIKIH0KIAogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRp
cGxpZWQ+Ci1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXpl
JiBzaXplKQorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBz
aXplKQogewogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFt
cGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQo
KSAqIDQpOwogCkBAIC0zNzcsMTIgKzM3NywxMiBAQCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZQog
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJl
Y3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYg
cmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRh
PFVubXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUpOwogfQogCi1QYXNzUmVmUHRyPFVp
bnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShj
b25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAorUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIHJldHVybiBn
ZXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBtX3NpemUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNH
LmNwcAppbmRleCAwMWI3ZDY5MmNkYmQ3YWI0ZDIyYmJjMTM5OWMxMDMyOGY1N2U1ZTQ3Li4zMmJk
MGI1Y2I1NTNmY2RlZGRiYWFkMmY5NjM2MTMwMWY1ZDQ2ZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtNTgs
MTggKzU4LDE3IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAg
ICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwogICAgIG1fc3Vic2Ft
cGxpbmdMZXZlbCA9IDA7CiAKLSAgICBpZiAobV9mcmFtZSkgeworICAgIGlmIChtX2ltYWdlKSB7
CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdl
KG1fZnJhbWUpOworICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdl
dCgpKTsKICNlbmRpZgotICAgICAgICBDR0ltYWdlUmVsZWFzZShtX2ZyYW1lKTsKLSAgICAgICAg
bV9mcmFtZSA9IDA7CisgICAgICAgIG1faW1hZ2UgPSBudWxscHRyOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mJiBpbWFnZSwgSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fbWluaW11
bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAsIG1faW1hZ2VPcmllbnRhdGlvbihPcmlnaW5Ub3BM
ZWZ0KQpAQCAtODksOCArODgsOCBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJl
ZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fc2l6ZUF2YWlsYWJs
ZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQogewotICAgIENHRmxvYXQgd2lk
dGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSk7Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0lt
YWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOworICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lk
dGgoaW1hZ2UuZ2V0KCkpOworICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChp
bWFnZS5nZXQoKSk7CiAgICAgbV9kZWNvZGVkU2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKICAg
ICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogCkBAIC05OSw3ICs5OCw3IEBAIEJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZTsKIAog
ICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IENHSW1hZ2VS
ZXRhaW4oY2dJbWFnZSk7CisgICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IFdURk1vdmUoaW1hZ2Up
OwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVlOwogICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIApAQCAtMTM2LDcgKzEzNSw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghaGF2ZUZyYW1lQXRJbmRleCgwKSkgeworICAgIGlmICgh
aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KDApKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IG1fc291
cmNlLmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiAgICAgICAgIGlmIChzaXplLndpZHRoKCkgIT0g
MSB8fCBzaXplLmhlaWdodCgpICE9IDEpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDcsNyAr
MTQ2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKIAogICAgIENH
SW1hZ2VSZWYgaW1hZ2UgPSBudWxscHRyOwogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkpCi0gICAg
ICAgIGltYWdlID0gbV9mcmFtZXNbMF0ubV9mcmFtZTsKKyAgICAgICAgaW1hZ2UgPSBtX2ZyYW1l
c1swXS5tX2ltYWdlLmdldCgpOwogCiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTczLDE0ICsxNzIsMTQgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9y
KCkKIAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lQXRJbmRleCgwKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCkuZ2V0
KCk7CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0dJ
bWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGNnSW1hZ2Ug
JiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJ
bWFnZSkpID09IHNpemUpCiAgICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKICAgICB9CkBAIC0x
OTMsMTEgKzE5MiwxMSBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENH
SW1hZ2VBcnJheSgpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGlm
ICghY291bnQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKICAgICBDRk11dGFibGVBcnJheVJlZiBhcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKE5V
TEwsIGNvdW50LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKENHSW1hZ2VSZWYgY3VyckZyYW1lID0g
ZnJhbWVBdEluZGV4KGkpKQorICAgICAgICBpZiAoQ0dJbWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFt
ZUltYWdlQXRJbmRleChpKS5nZXQoKSkKICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShh
cnJheSwgY3VyckZyYW1lKTsKICAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwpAQCAt
MjE0LDEyICsyMTMsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZv
ciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgogICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29u
dGV4dChjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNv
cHlVbnNjYWxlZEZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOworICAgICAgICBpbWFnZSA9
IGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBlbHNl
IHsKICAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBw
bHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxm
bG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAv
IHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQg
LyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKLSAgICAgICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOworICAgICAgICBpbWFnZSA9IGZyYW1lSW1h
Z2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKICAgICB9CiAKICAg
ICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdl
IHlldC4KQEAgLTI0NSwyNCArMjQ0LDI0IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAg
aWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdl
T3JpZW50YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgobV9jdXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0
KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwg
b3JpZW50YXRpb24pOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VP
YnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gQml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkg
fHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAw
KTsKIAogICAgIGlmICghbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAg
ICAgcmV0dXJuIENHSW1hZ2VSZXRhaW4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpOworICAgICAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiAKLSAgICByZXR1cm4gbV9zb3VyY2Uu
Y3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4
IDZjMDNhMmNlZjg0NjA2NTYxZWEwN2ViOTI4ZjFjZjI5NWY5ZjVlMzYuLjk5ZjA5ZGI2N2JhNTQy
ODJkYzRlZDcwNWFlNDE2MzgwMzM3MTkzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0z
MzMsMTUgKzMzMywxNSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRl
Y29kZXIuZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IG1fZGVjb2RlZEltYWdlID0gYWRvcHRDRihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7
Ci0gICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOworICAgICAgICBtX2Rl
Y29kZWRJbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAg
IG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwogICAgIH0gZWxzZQogICAgICAgICBtX2NnSW1h
Z2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghbV9j
Z0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0lt
YWdlR2V0V2lkdGgobV9jZ0ltYWdlKTsKLSAgICBtX2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhl
aWdodChtX2NnSW1hZ2UpOworICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2Nn
SW1hZ2UuZ2V0KCkpOworICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJ
bWFnZS5nZXQoKSk7CiAgICAgaWYgKCFtX2ltYWdlV2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzQ5LDcgKzM0OSw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sCiAgICAgLy8gc28sIHJlLXJlbmRlciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFj
ZS4gVGhlIGltYWdlIHJlLXBhY2tpbmcKICAgICAvLyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEs
IG5vdCBjb2xvciB0YWJsZSBpbmRpY2VzLCBmb3IgdGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAg
ICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJ
bWFnZSk7CisgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JT
cGFjZShtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIENHQ29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dD
b2xvclNwYWNlR2V0TW9kZWwoY29sb3JTcGFjZSk7CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9y
U3BhY2VNb2RlbEluZGV4ZWQpIHsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0
bWFwQ29udGV4dDsKQEAgLTM2NCwyMiArMzY0LDIyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
CiAKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtD
R0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0
eShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENH
Q29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1f
aW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZSk7CisgICAgICAgIENHQ29udGV4
dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VX
aWR0aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93
IGRpc2NhcmQgdGhlIG9yaWdpbmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5
IGZyb20gdGhlIGJpdG1hcCBjb250ZXh0LgogICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogICAg
ICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKICAgICB9CiAKLSAgICBzaXpl
X3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFn
ZSk7Ci0gICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9j
Z0ltYWdlKTsKKyAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVy
Q29tcG9uZW50KG1fY2dJbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENH
SW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlLmdldCgpKTsKICAgICBpZiAoYml0c1BlckNv
bXBvbmVudCAhPSA4ICYmIGJpdHNQZXJDb21wb25lbnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNvbXBvbmVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHNpemVfdCBjb21wb25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4
ZWwgLyBiaXRzUGVyQ29tcG9uZW50OwogCi0gICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0lt
YWdlR2V0Qml0bWFwSW5mbyhtX2NnSW1hZ2UpOworICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0g
Q0dJbWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdlLmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlh
blNvdXJjZSA9IGZhbHNlOwogICAgIC8vIFRoZXNlIGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJp
bmVkIGludG8gb25lIGxhcmdlIHN3aXRjaAogICAgIC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZl
ciBub3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZhc3QgaWYgd2UKQEAgLTQyMSw3ICs0MjEsNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogCiAgICAgbV9hbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7
CiAgICAgQWxwaGFGb3JtYXQgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dp
dGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJbWFnZSkpIHsKKyAgICBzd2l0Y2ggKENHSW1h
Z2VHZXRBbHBoYUluZm8obV9jZ0ltYWdlLmdldCgpKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAg
ICAgICAgICAgbV9hbHBoYU9wID0gQWxwaGFEb1VubXVsdGlwbHk7CkBAIC00NjEsMTQgKzQ2MSwx
NCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0
ID09IERhdGFGb3JtYXROdW1Gb3JtYXRzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBt
X3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0
YVByb3ZpZGVyKG1fY2dJbWFnZSkpKTsKKyAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkp
KTsKICAgICBpZiAoIW1fcGl4ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
X2ltYWdlUGl4ZWxEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4oQ0ZEYXRhR2V0
Qnl0ZVB0cihtX3BpeGVsRGF0YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQgaW50IHNyY1VucGFj
a0FsaWdubWVudCA9IDA7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVz
UGVyUm93KG1fY2dJbWFnZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5
dGVzUGVyUm93KG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVz
UGVyUm93IC0gYml0c1BlclBpeGVsIC8gOCAqIG1faW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGlu
ZykgewogICAgICAgICBzcmNVbnBhY2tBbGlnbm1lbnQgPSBwYWRkaW5nICsgMTsKQEAgLTUzNiw3
ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxv
YXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsK
ICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5v
bmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6
ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9z
aXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXpl
LCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3Np
dGVDb3B5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmlu
ZGV4IGE0NDk2NTQwNDZhZThmMTBhYmFkMTY0MTVlNjQ2MGFkYmJiYjhlODguLmYzNDJkYTE2NTgx
MWIyMTcxNjNjZmYxOWRlNGY1ZjE5OWRkODc2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2
MiwxOSArMTYyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0
ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5
ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFz
c05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0
YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZShpbWFnZVB0cik7CisgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlKGltYWdlKTsKIAotICAgIGZsb2F0IGN1cnJIZWlnaHQg
PSBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKGltYWdl
LmdldCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGN1cnJI
ZWlnaHQgPSBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRo
KHN1YkltYWdlLmdldCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOwogICAg
IGlmIChjdXJySGVpZ2h0IDw9IHNyY1JlY3QueSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIx
NiwxMyArMjE2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFz
c05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpCiAgICAgICAgICAgICBhZGp1
c3RlZERlc3RSZWN0LnNldEhlaWdodChzdWJpbWFnZVJlY3QuaGVpZ2h0KCkgLyB5U2NhbGUpOwog
CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgICAgICBpbWFnZSA9IHN1YmltYWdlQ2FjaGUo
KS5nZXRTdWJpbWFnZShpbWFnZS5nZXQoKSwgc3ViaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIHN1
YkltYWdlID0gc3ViaW1hZ2VDYWNoZSgpLmdldFN1YmltYWdlKHN1YkltYWdlLmdldCgpLCBzdWJp
bWFnZVJlY3QpOwogI2Vsc2UKLSAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlV2l0aEltYWdlSW5SZWN0KGltYWdlLmdldCgpLCBzdWJpbWFnZVJlY3QpKTsKKyAgICAgICAg
ICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHN1Yklt
YWdlLmdldCgpLCBzdWJpbWFnZVJlY3QpKTsKICNlbmRpZgogICAgICAgICAgICAgaWYgKGN1cnJI
ZWlnaHQgPCBzcmNSZWN0Lm1heFkoKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlLmdldCgpKSA9PSBjdXJySGVpZ2h0IC0gQ0dSZWN0SW50ZWdyYWwoc3Jj
UmVjdCkub3JpZ2luLnkpOwotICAgICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVp
Z2h0KENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8geVNjYWxlKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoQ0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSkgPT0gY3VyckhlaWdo
dCAtIENHUmVjdEludGVncmFsKHNyY1JlY3QpLm9yaWdpbi55KTsKKyAgICAgICAgICAgICAgICBh
ZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdldCgp
KSAvIHlTY2FsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoZGVzdFJlY3QueCgpIC0g
c3JjUmVjdC54KCkgLyB4U2NhbGUsIGRlc3RSZWN0LnkoKSAtIHNyY1JlY3QueSgpIC8geVNjYWxl
KSk7CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJ
bWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2kKICAgICBDR0Nv
bnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CiAKICAgICAvLyBEcmF3IHRoZSBpbWFnZS4K
LSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdCwgaW1hZ2Uu
Z2V0KCkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBhZGp1c3RlZERlc3RSZWN0
LCBzdWJJbWFnZS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdQYXR0ZXJuQ2FsbGJhY2so
dm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCkBAIC0zMTEsOCArMzExLDggQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBmbG9hdCBhZGp1c3RlZFggPSBwaGFzZS54KCkgLSBk
ZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRl
cm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNsYXRlZCB0aGUgY29udGV4dCBzbyB0aGF0IGRl
c3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBzdWJ0cmFjdCBpdCBvdXQuCiAgICAgZmxvYXQg
YWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkgLSAocGhhc2UueSgpIC0gZGVzdFJlY3QueSgp
ICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3Jt
LmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKIAotICAgIENHSW1hZ2VSZWYgdGlsZUltYWdlID0g
aW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBmbG9hdCBoID0gQ0dJbWFn
ZUdldEhlaWdodCh0aWxlSW1hZ2UpOworICAgIGF1dG8gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0
aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwog
I2lmIFBMQVRGT1JNKElPUykKQEAgLTMyNiwxMyArMzI2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0CiAgICAgICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5
LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4g
SXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJl
IG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUg
aW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0
KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUlu
UmVjdCh0aWxlSW1hZ2UsIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihD
R0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsK
ICAgICB9CiAKICAgICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBi
ZWNhdXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNp
bmcsCiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFz
ZWQgbWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRo
KCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBm
bG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFnZSk7CisgICAgZmxvYXQgdyA9IENHSW1h
Z2VHZXRXaWR0aCh0aWxlSW1hZ2UuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53
aWR0aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkg
JiYgIXNwYWNpbmcuaGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNu
YXAgdGhlIGltYWdlcyB0byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGgg
Ym9yZGVyLWltYWdlLXJlcGVhdDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBh
bGwgYnV0IHRoZSBsYXN0LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAKaW5kZXggODQ2Mzk2YzE5MDI3YzJjMmJlMjU1Yzc2NGFjYWU3NjJmZTdlOTg3YS4uMjE4MjE0
NmY1N2U1NzA1NTA2ODJjNmVkNTgxMDM1ODFhZGViNDE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTE5OSw3
ICsxOTksNyBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2Nh
bGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdlUmVmPgogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoaW1h
Z2UuZ2V0KCkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2Up
KTsKIH0KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaGF2aW9yIHNjYWxlQmVoYXZpb3IpIGNvbnN0CkBA
IC0zMTksNyArMzE5LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMKICAgICB9CiB9CiAKLVBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRl
U3lzdGVtKSBjb25zdAorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0
VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0
ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKICAgICBpZiAoY29udGV4dCgpLmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIGZsdXNoQ29udGV4dCgpOwpAQCAtMzMxLDcgKzMzMSw3
IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRp
cGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjCiAgICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNy
Y1JlY3QsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSwg
dHJ1ZSwgMSk7CiB9CiAKLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVy
OjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5h
dGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYg
cmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewogICAgIGlm
IChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0cuY3BwCmluZGV4IGQ0YTAxMmI2ZjU3YmY1MzkzMDY0Nzc3YjZjMTA5MzY2YjI0YzQ0
NWMuLjUwMTVkZDE1YWJmYzgyNWRjZWIwMzIwZjEyMDI5Y2JhNTEyMTgyNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
CkBAIC0zNDAsNyArMzQwLDcgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29u
c3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gQ0dJbWFnZVNvdXJjZUdldENvdW50KG1fZGVjb2Rl
cikgOiAwOwogfQogCi1DR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewogICAgIGlmICgh
aW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNjYsMTggKzM2Niwx
NSBAQCBDR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbQogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1Jl
ZiB4Ym1VVEkgPSBDRlNUUigicHVibGljLnhiaXRtYXAtaW1hZ2UiKTsKIAogICAgIGlmICghaW1h
Z2VVVEkpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBp
bWFnZTsKIAogICAgIGlmICghQ0ZFcXVhbChpbWFnZVVUSSwgeGJtVVRJKSkKLSAgICAgICAgcmV0
dXJuIGltYWdlLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIAogICAgIC8v
IElmIGl0IGlzIGFuIHhibSBpbWFnZSwgbWFzayBvdXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byBy
ZW5kZXIgdGhlbSB0cmFuc3BhcmVudC4KICAgICBjb25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNb
Nl0gPSB7MjU1LCAyNTUsICAyNTUsIDI1NSwgMjU1LCAyNTV9OwogICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBtYXNrZWRJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhNYXNraW5nQ29s
b3JzKGltYWdlLmdldCgpLCBtYXNraW5nQ29sb3JzKSk7Ci0gICAgaWYgKCFtYXNrZWRJbWFnZSkK
LSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKLQotICAgIHJldHVybiBtYXNrZWRJbWFn
ZS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFn
ZTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qg
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMDI0Y2JmZTAw
YjUyMjMzOTMzNTkyMGY5Zjg1MzRjODM2ZGFjY2Y4OC4uNDkyN2VhYmY4ZWQxMmE2YzIxZWFiMzFi
ZmU2MmY1MmM2YjI0ZWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApA
QCAtNDkxLDExICs0OTEsMTEgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IERyYXdUaWxlZFNjYWxlZEltYWdlJiBpdGVtKQogfQogCiAjaWYgVVNF
KENHKSB8fCBVU0UoQ0FJUk8pCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShQYXNz
TmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAg
ICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCiAjaWYgVVNFKENHKQog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWlyby4KLSAgICAsIG1f
aW1hZ2VQdHIoaW1hZ2VQdHIpCisgICAgLCBtX2ltYWdlKGltYWdlKQogI2VuZGlmCiAgICAgLCBt
X2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQpAQCAt
NTA3LDcgKzUwNyw3IEBAIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpCiAgICAgLCBtX29yaWVudGF0
aW9uKG9yaWVudGF0aW9uKQogewogI2lmICFVU0UoQ0cpCi0gICAgVU5VU0VEX1BBUkFNKGltYWdl
UHRyKTsKKyAgICBVTlVTRURfUEFSQU0oaW1hZ2UpOwogICAgIFVOVVNFRF9QQVJBTShvcCk7CiAg
ICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CiAjZW5kaWYKQEAgLTUxNiw3ICs1MTYsNyBAQCBE
cmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQ
dHIsIGNvbnN0IEZsb2F0U2l6ZSYgaQogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCi0gICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UobV9pbWFnZVB0ci5nZXQoKSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRp
b24sIG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
LCBtX3NyY1JlY3QsIG1fb3AsIG1fYmxlbmRNb2RlLCBtX29yaWVudGF0aW9uKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAppbmRleCA1YTg0OTY0YzU3OWIzMmZkYzBlYzZlZjE0NWY2NDI2MGYxMzVhZmZmLi40
NzBmMjgyOTEwMDg1NGMzYzA1ZjZkZWZlZDIxNWI1ZmM2NDdkYTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTYzOSwyMyArNjM5LDIzIEBAIHByaXZhdGU6CiAjaWYgVVNF
KENHKSB8fCBVU0UoQ0FJUk8pCiBjbGFzcyBEcmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2lu
Z0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUo
UGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKKyAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1h
Z2UoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUs
IG9yaWVudGF0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwg
b3JpZW50YXRpb24pKTsKICAgICB9CiAKICAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgotICAgIERyYXdOYXRpdmVJbWFnZShQ
YXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgRHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKIAogICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZGVzdGluYXRpb247IH0KIAogI2lmIFVTRShDRykKLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gbV9pbWFnZVB0cjsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9pbWFnZTsKICNl
bmRpZgogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5h
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA1ZTUy
ZWM5MTkyM2Q0NTlmMDgyMjE5MWY2NjlkMGMwMGVlZGYyNThhLi4wYmYxNGJlZjc5YmQzYWIyZmI3
M2Y2Yzc1MDgwNzI2ZGE0NDFlMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCkBAIC0xMTksOSArMTE5LDkgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdAogfQog
CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1h
Z2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogewotICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFw
cGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSkpOworICAgIERyYXdp
bmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05h
dGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
LCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRl
bSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4
IGE1ZDJjNzFhMjVlYmRiZmU0ZjNiYTdmZGFjZDFmMmRlNTg4NmRjNTAuLmViOTlhM2RkYTAwZDMx
NzBjZmM4ZjA4NmE0MDI5Y2JiY2UxY2QzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogICAgIHZvaWQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxl
UnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpOwogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKKyAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CiAjZW5kaWYKICAg
ICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5j
cHAKaW5kZXggYmE0MTU5N2FhMTEwMWRiNjI5MDIzZDI3M2IyMDBlNzgxZDMzYWFjOS4uNTljYzJj
OWJlOGIzZmZlMTExODZhNjg1ZDJlOGNmNTk0YzFkMzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RF
ZmwuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VF
eHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVB
dEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1faW1hZ2VT
dXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VT
dXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxt
ZW50IGlucHV0LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFu
ZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBwaXhlbCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNwcAppbmRleCA5YzkyYzA4NTNj
MjYxYzc2MGE3YzA4MWY2Yzg3ZTk5MGIxYjg4ZGFiLi4wN2JlYmU2OTQ5YzFjODRhMWU3ODY0MjFj
MGU5ZDdhZjc3N2U3NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvSWNvbkVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0ljb25FZmwuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTUxLDEwICs1MSwxMCBAQCBJY29uOjp+SWNvbigpCiB7CiB9CiAKLVBhc3NS
ZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JikKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcAppbmRleCBl
ZTI3Mjc3ZmYwYjdlOTAzM2Y0YjkzMzYwMjhhY2Y0MjE4YjIwYTVmLi5jNTVjZmRmOTdiN2Q0M2M1
ZDM0ZjJmOWM1NTYzNzZmNWE5NmE2Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fp
cm8uY3BwCkBAIC02Miw3ICs2Miw3IEBAIEltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcihH
c3RTYW1wbGUqIHNhbXBsZSkKIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2Ug
PSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShidWZmZXJEYXRh
LCBjYWlyb0Zvcm1hdCwgd2lkdGgsIGhlaWdodCwgc3RyaWRlKSk7CiAgICAgQVNTRVJUKGNhaXJv
X3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsK
LSAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShzdXJmYWNlLnJlbGVhc2UoKSk7Cisg
ICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7CiAKICAg
ICBpZiAoR3N0VmlkZW9Dcm9wTWV0YSogY3JvcE1ldGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19j
cm9wX21ldGEoYnVmZmVyKSkKICAgICAgICAgc2V0Q3JvcFJlY3QoRmxvYXRSZWN0KGNyb3BNZXRh
LT54LCBjcm9wTWV0YS0+eSwgY3JvcE1ldGEtPndpZHRoLCBjcm9wTWV0YS0+aGVpZ2h0KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKaW5k
ZXggNTk0NWUxZjhjNGI0NzQ0OGYzNDg1ZmM2NGJiNTc2NTdhZjRjMzhmZS4uODgwYzRjOTc5NGE1
ZWQ2ZDNhYzJmOGE2NzQ3Y2MyMTI2OTJkMjE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBTdHJpbmcgbG9va3VwSWNvbk5h
bWUoU3RyaW5nIE1JTUVUeXBlKQogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY29kZSB0byBDaHJv
bWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK1JlZlB0cjxJY29u
PiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1l
cykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4
IDIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIyNDliODFkOWQ3NmEuLjM2YjI0ZjVjZmYwYTZi
NjFlNTQ1NzQ2NzMyYjYyNmNkMzk4N2NiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKLUljb246Okljb24oQ0dJbWFnZVJlZiBpbWFnZSkKK0ljb246Oklj
b24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIDogbV9jZ0ltYWdlKGltYWdlKQog
ewogfQpAQCAtNDIsMTcgKzQyLDE3IEBAIEljb246On5JY29uKCkKIHsKIH0KIAotUGFzc1JlZlB0
cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8q
ZmlsZW5hbWVzKi8pCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyovKQogewogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShOYXRpdmVJbWFn
ZVB0ciBpbWFnZVJlZikKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoY29u
c3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKIHsKLSAgICBpZiAoIWltYWdlUmVmKQor
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJY29uKGltYWdlUmVmKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29u
KGltYWdlKSk7CiB9CiAKIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQppbmRleCA0Y2ZjNTJmZGMxMzU3ZGVmMTY5M2RhMTc5
YWI4NDJlNmM0NThmOTk0Li5lNDYwNWRlMjAwM2JkZjA2NjM3MzUwMzcwMGFiMDEwMmQ2YzM1NjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5t
bQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAiSW50UmVjdC5oIgogI2ltcG9ydCAiTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJVVElVdGlsaXRpZXMuaCIKLSNpbXBv
cnQgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ3
LDcgQEAgSWNvbjo6fkljb24oKQogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY29kZSB0byBDaHJv
bWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK1JlZlB0cjxJY29u
PiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1l
cykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW0KaW5kZXggZmYwNzEzMWE2MWZjZWQwNDU4NmIzNzJkOWJhMjA3OWE5ODczYzM4Yi4uZmEwMTFh
YTg4MTYzMDMwMDA5NDQ5OGViYzBmZmNhOWZiOWMzMDM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtOTUsNyArOTUsNyBAQCBD
RkRhdGFSZWYgQml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbigpCiAKICAgICBWZWN0
b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1G
cmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4
KGkpOworICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5n
ZXQoKTsKICAgICAgICAgaWYgKGNnSW1hZ2UpCiAgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKGNn
SW1hZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHAKaW5kZXggOWFhNjdhNWUwNmE5NDFmZmJhNGQ1ODQyMDc3MmMyN2FiOGVjNjVlYS4u
ZTBkODE1YmQwMjdkYWI1NWNmNDRlYzE0ODhlMzE4Y2E4ZmYxNjM1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
dm9pZCBDb29yZGluYXRlZFN1cmZhY2U6OnNldEZhY3RvcnkoQ29vcmRpbmF0ZWRTdXJmYWNlOjpG
YWN0b3J5IGZhY3RvcnkpCiAgICAgc19mYWN0b3J5ID0gZmFjdG9yeTsKIH0KIAotUGFzc1JlZlB0
cjxDb29yZGluYXRlZFN1cmZhY2U+IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQorUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3Mp
CiB7CiAgICAgQVNTRVJUKHNfZmFjdG9yeSk7CiAgICAgcmV0dXJuIHNfZmFjdG9yeShzaXplLCBm
bGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmgKaW5k
ZXggZjVlNzNlNTg1NDkzZjk1YWY0NzRiZDQzNThjNjQyODNjNTY4MzA1OC4uZjlkMzI2MjMzYWJk
MTdjODA4MmE3OTAzZTk4NWZkNDNjMmQwMDQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtMjMsNyArMjMsNyBAQAogCiAjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsOSArNDQsOSBA
QCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRvU3VyZmFjZUNvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JikgPSAwOwogICAgIH07CiAKLSAgICB0eXBlZGVmIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiBGYWN0b3J5KGNvbnN0IEludFNpemUmLCBGbGFncyk7CisgICAgdHlw
ZWRlZiBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBGYWN0b3J5KGNvbnN0IEludFNpemUmLCBG
bGFncyk7CiAgICAgc3RhdGljIHZvaWQgc2V0RmFjdG9yeShGYWN0b3J5KTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgRmxh
Z3MpOworICAgIHN0YXRpYyBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3Qg
SW50U2l6ZSYsIEZsYWdzKTsKIAogICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkU3VyZmFjZSgpIHsg
fQogCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1
cmZhY2UoY29uc3QgSW50UmVjdCYsIENsaWVudCopID0gMDsKIAogI2lmIFVTRShURVhUVVJFX01B
UFBFUikKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+LCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZz
ZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShSZWZQdHI8Qml0bWFwVGV4
dHVyZT4sIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNl
dCkgPSAwOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAppbmRleCBhNzgwNzBkOWFhYWY3ZjRlMmEzMTg5
ZWUxNDhhNmE1Yzc5Mzg4YzA1Li5hMzk0NmNhZjRmODNlMDBjZmQxYjk5YTU4ZjJjOTkyMjMxNzli
NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNv
bldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25X
aW4uY3BwCkBAIC00Myw3ICs0Myw3IEBAIEljb246On5JY29uKCkKIH0KIAogLy8gRklYTUU6IE1v
dmUgdGhlIGNvZGUgdG8gQ2hyb21lQ2xpZW50OjppY29uRm9yRmlsZXMoKS4KLVBhc3NSZWZQdHI8
SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
bmFtZXMpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAgaWYgKGZpbGVuYW1lcy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDgzNWVjZjNmNGZlZWViOGEwZGZhOGQzNjk3MzEy
OGYzYjgwN2I5MjYuLjlhYzU1OWM4MTU3MGNkYmQzOTIzMjM1OWMzMGIxMzBlZDE2NzVlOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKK1Jl
ZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiB7
CiAgICAgRElCU0VDVElPTiBkaWJTZWN0aW9uOwogICAgIGlmICghR2V0T2JqZWN0KGhCaXRtYXAs
IHNpemVvZihESUJTRUNUSU9OKSwgJmRpYlNlY3Rpb24pKQpAQCAtNTQsOSArNTQsOSBAQCBQYXNz
UmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkK
ICAgICAgICAgZGliU2VjdGlvbi5kc0JtLmJtV2lkdGhCeXRlcywgZGV2aWNlUkdCQ29sb3JTcGFj
ZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkRmlyc3QpKTsKIAogICAgIC8vIFRoZSBCaXRtYXBJbWFnZSB0YWtlcyBvd25lcnNoaXAg
b2YgdGhpcy4KLSAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJ
bWFnZShiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJ
bWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5n
ZXQoKSkpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJbWFnZShjZ0ltYWdlKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRtYXBJbWFnZShXVEZNb3ZlKGNnSW1hZ2UpKSk7
CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNv
bnN0IEludFNpemUqIHNpemUpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBm
cmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdl
dFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsK
ICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAg
ICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCAyOWEyMDIzZGI2M2E5
MTQzNGMzOTQ4ZWFhNTUyM2JiNjFmZTgxMDc1Li5kYWI5NmEzOGM1NDgxMDJhYWUyN2FhMDE5ZWVi
OTllNWE4YzQyMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNyZWF0
ZShIQklUTUFQIGhCaXRtYXApCitSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVh
dGUoSEJJVE1BUCBoQml0bWFwKQogewogICAgIERJQlNFQ1RJT04gZGliU2VjdGlvbjsKICAgICBp
ZiAoIUdldE9iamVjdChoQml0bWFwLCBzaXplb2YoRElCU0VDVElPTiksICZkaWJTZWN0aW9uKSkK
QEAgLTUyLDcgKzUyLDcgQEAgUGFzc1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNy
ZWF0ZShIQklUTUFQIGhCaXRtYXApCiAKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJm
YWNlID0gYWRvcHRSZWYoY2Fpcm9fd2luMzJfc3VyZmFjZV9jcmVhdGVfd2l0aF9kaWIoQ0FJUk9f
Rk9STUFUX0FSR0IzMiwgZGliU2VjdGlvbi5kc0JtLmJtV2lkdGgsIGRpYlNlY3Rpb24uZHNCbS5i
bUhlaWdodCkpOwogCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoc3VyZmFjZS5yZWxl
YXNlKCkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkp
OwogfQogCiBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBj
b25zdCBJbnRTaXplKiBzaXplKQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBm
cmFtZUltYWdlQXRJbmRleChpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAg
Y29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggZmM4N2Y4MzQwMzMxOTU1NzNmNTY3ZmMwNThjN2M3
M2Q4NThhMTk3YS4uYjM1NDdkOTRlODA4Zjg3NGFlZDlkYTBmMjkxYmVjZTIwYTY0NjQzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmgKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgbmF0aXZl
IGltYWdlIGRhdGEuCiAgICAgICAgIC8vIChBY3R1YWwgdXNlOiBUaGlzIHBvaW50ZXIgd2lsbCBi
ZSBvd25lZCBieSBCaXRtYXBJbWFnZSBhbmQgZnJlZWQgaW4KICAgICAgICAgLy8gRnJhbWVEYXRh
OjpjbGVhcigpKS4KLSAgICAgICAgUGFzc05hdGl2ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2Uo
KSBjb25zdDsKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0
OwogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICAgICAgY29uc3QgSW50UmVj
dCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKaW5kZXggM2ZlNzA0MDIzNDE5
ZDk3NTNiMTM5OWQ5ZjZjMDBiNjczOTQ1MTI5Ni4uN2I0MTI5NWY4NTczNThmYmJmMzVjMWIwNTI1
ZThkNmNjMzUyMGY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcApAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NOYXRpdmVJbWFnZVB0
ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKCkgY29uc3QKK05hdGl2ZUltYWdlUHRyIElt
YWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdFJl
ZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YSgKICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRl
eCBhZDI1OTg5NjgzMGE0OWEzOTgzMDhjODQyMTk2ZjJjOTc2MThiMDE4Li4zNmNkNjUxNmU4MGYx
NzQ4YmZlYWI3N2E5MzAyNzFjMTIxZGU4MDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTEyOCw3ICsxMjgsNiBAQCBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikKICAgICBpZiAoIWhibXAgfHwgIWRyYXdDb250ZXh0KQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIENHSW1hZ2VSZWYgc3JjSW1hZ2UgPSBpbWctPmdldENHSW1hZ2VSZWYoKTsK
ICAgICBDR1JlY3QgcmVjdDsKICAgICByZWN0LnNpemUgPSBJbnRTaXplKGltZy0+c2l6ZSgpKTsK
ICAgICByZWN0Lm9yaWdpbi54ID0gMDsKQEAgLTEzNyw3ICsxMzYsNyBAQCBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbikKICAgICBDR0NvbnRleHRTY2FsZUNUTShkcmF3Q29udGV4dCwgMSwgLTEpOwogICAg
IENHQ29udGV4dFNldEZpbGxDb2xvcihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4
dEZpbGxSZWN0KGRyYXdDb250ZXh0LCByZWN0KTsKLSAgICBpZiAoc3JjSW1hZ2UpIHsKKyAgICBp
ZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+Z2V0Q0dJbWFnZVJlZigpKSB7CiAgICAgICAgIENHQ29u
dGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKICAgICAg
ICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250ZXh0LCByZWN0LCBzcmNJbWFnZSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNDJlYTVlZTUz
NDIxYTc3ZDA3ZTM0ZTZmODBiNDMzYzYyMDczN2I4Yy4uYzE1ZmFmYmQ4ZWExYjYxMzI0ODY1NjU0
ZDk0OTQyZGZlZDQ2NTM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCkBAIC0xODAsMTcgKzE4MCwxNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaQogfQogCiAj
aWYgVVNFKENBSVJPKQotLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRv
IHRoZSBjYWxsZXIgc28gUGFzc05hdGl2ZUltYWdlUHRyIG5lZWRzCisvLyBQYXNzZXMgb3duZXJz
aGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBu
ZWVkcwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVyIHR5cGUuCi1QYXNzTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdlUHRyIFNW
R0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgaWYgKCFtX3BhZ2Up
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENh
aXJvIGRvZXMgbm90IHVzZSB0aGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnLCBzbyBpdCdzIE9L
IHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyLgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxs
b2NhdGUgaW1hZ2UKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDg3MGY2Yzg1YzVl
Njg0ZTE3N2MzMGQxNmMyMTY2YTM0MGRjZDVhN2IuLjQ5MWRkZmIzYzIxMzllZjg4MjEwMWQxYWY0
NWI1YWVmMTEwYzRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJp
ZGU7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAK
aW5kZXggNGUxNjFlM2YwZDQ0YTZhYTZlYTZjMDNmNWVkOWFiYzE5ZWJhZWExZC4uN2UxNDNkZWQy
ZDY2OWFiM2FjMDljNDk2YjRlNGJlZTdkYzg3ZjIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCkBAIC00Niw3ICs0Niw3
IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JD
b250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIHNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRN
b2RlKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRh
aW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogewogICAgIHJldHVybiBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCAzNTk3NTQyODlmYzMw
NDIxOGNkYjhiZjEyMDNiODczYzI5ZmQ1MmQyLi5kMjI0ZmM0NjEyZmQ5NWExYWVhNzdhZmI0NDc5
NzY5MjM1MjdhY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3Vy
cmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAot
ICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJy
aWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1hZ2VGb3JDb250YWluZXIoU1ZHSW1hZ2UqIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBkNzFlNjY0M2IzYzIxMmIyZGI2NDRiMzE1Mjk0YjFj
M2JjNzZmY2Y4Li5iNjU5ZDZkYmY5YWQ2OTk5YzNhYzk2MmRlOTUxNTc4MDk3ZTFmM2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTE3Miw3ICsxNzIsNyBAQCArIChib29sKWFk
ZEltYWdlVG9DYWNoZTooQ0dJbWFnZVJlZilpbWFnZSBmb3JVUkw6KE5TVVJMICopdXJsIGZvckZy
YW1lOihXZWJGcmFtZQogICAgIGlmIChmcmFtZSkKICAgICAgICAgdG9wT3JpZ2luID0gY29yZShm
cmFtZSktPmRvY3VtZW50KCktPnRvcE9yaWdpbigpOwogI2VuZGlmCi0gICAgcmV0dXJuIFdlYkNv
cmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5hZGRJbWFnZVRvQ2FjaGUoaW1hZ2UsIHVybCwg
dG9wT3JpZ2luID8gdG9wT3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIDogZW1wdHlT
dHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5h
ZGRJbWFnZVRvQ2FjaGUoUmV0YWluUHRyPENHSW1hZ2VSZWY+KGltYWdlKSwgdXJsLCB0b3BPcmln
aW4gPyB0b3BPcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgOiBlbXB0eVN0cmluZygp
KTsKIH0KIAogKyAodm9pZClyZW1vdmVJbWFnZUZyb21DYWNoZUZvclVSTDooTlNVUkwgKil1cmwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291
cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjZmMDg3NGU1ZjVhNWM4
OTkzNGUwYjgxMmRiNDhiN2I3NTlmNTQxNi4uNjljYjAxM2EwNDZmMTNlNTM5ZWFiZDQ3NmI1N2Y1
YWRlM2EwNzlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTM2
LDcgKzM2LDYgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMjkyLDcgKzI5MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQqKTsKIAogICAg
ICAgICB2b2lkIHBhaW50SW50b1RyYW5zZm9ybWVkQ29udGV4dChIREMpOwotICAgICAgICBQYXNz
UmVmUHRyPEltYWdlPiBzbmFwc2hvdCgpOworICAgICAgICBSZWZQdHI8SW1hZ2U+IHNuYXBzaG90
KCk7CiAKICAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMjVlYWY1NTA1ZTY3
M2QzMzUwOTE2NTEyMWYzYjM0MmRhOTA3OGY1Mi4uMmZjYTlmM2M5NWQ3M2RiYTNhYzMyNjI1OWVh
ODZkZGNkZGEyMDcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdX
aW4uY3BwCkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ry
b3koKQogICAgIHNldFBsYXRmb3JtUGx1Z2luV2lkZ2V0KDApOwogfQogCi1QYXNzUmVmUHRyPElt
YWdlPiBQbHVnaW5WaWV3OjpzbmFwc2hvdCgpCitSZWZQdHI8SW1hZ2U+IFBsdWdpblZpZXc6OnNu
YXBzaG90KCkKIHsKICNpZiAhVVNFKFdJTkdESSkKICAgICBhdXRvIGhkYyA9IGFkb3B0R0RJT2Jq
ZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1
cmZhY2UuY3BwCmluZGV4IGEwMzM4NDI3ZDY1YjJlYmUzNzBlM2Y2OGU1NGNhZjQ2MTc2MmY1NTMu
LmExYmZlMzFhNDQyNjUxYzIzNDc2MjZmOWRiNTQwODU4YzBmZmM1OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMTE4LDI1ICsxMTgsMjUgQEAgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHQoY28KICAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0OwogfQogCi1SZWY8V2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQorUmVmPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBm
bGFncywgYml0bWFwKSk7CiB9CiAKLVdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0
ZWRTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3Mg
ZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCitXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29y
ZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRt
YXApCiAgICAgOiBDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MpCiAgICAgLCBtX2JpdG1h
cChiaXRtYXApCiB7CiB9CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLVdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQorV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJD
b29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4g
c3VyZmFjZSkKICAgICA6IENvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBmbGFncykKICAgICAsIG1f
Z3JhcGhpY3NTdXJmYWNlKHN1cmZhY2UpCiB7CiB9CiAKLVJlZjxXZWJDb29yZGluYXRlZFN1cmZh
Y2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNl
PiBzdXJmYWNlKQorUmVmPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFn
cyBmbGFncywgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1cmZhY2Up
KTsKIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6cGFp
bnRUb1N1cmZhY2UoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZWRTdXJmYQogfQogCiAj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKQotdm9pZCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNvcHlU
b1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiBwYXNzVGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KQordm9p
ZCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNvcHlUb1RleHR1cmUoUmVmUHRyPFdlYkNvcmU6OkJp
dG1hcFRleHR1cmU+IHBhc3NUZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IElu
dFBvaW50JiBzb3VyY2VPZmZzZXQpCiB7CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1
cmUocGFzc1RleHR1cmUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCmluZGV4
IDdlNjExYzhkNjY0N2IxN2Q5OTViOGYwYjNlNmU5NThmNzY0M2EwMjUuLjkzOGY2YTViMTRlZDhl
NmE1OWNmOGJkZTBlNDI2YzQwYWEzNTRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3Vy
ZmFjZS5oCkBAIC03NCwyMiArNzQsMjIgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRUb1N1cmZh
Y2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6
Q2xpZW50Kikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0gICAgdm9pZCBj
b3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9m
ZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3B5VG9UZXh0dXJlKFJlZlB0cjxXZWJDb3JlOjpC
aXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRl
OgotICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxh
Z3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisgICAgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4pOwogCiAgICAgLy8gQ3JlYXRlIGEgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIHJlZmVyZW5jaW5n
IGFuIGV4aXN0aW5nIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBzdGF0aWMgUmVmPFdlYkNvb3JkaW5h
dGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4pOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZT4pOworICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgRmxhZ3MsIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsKICAgICAvLyBDcmVh
dGUgYSBzaGFyZWFibGUgYml0bWFwIGJhY2tlZCBieSBhIGdyYXBoaWNzIHN1cmZhY2UuCiAgICAg
c3RhdGljIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZVdpdGhTdXJmYWNlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CiAgICAgLy8gQ3JlYXRlIGEgV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIEdyYXBoaWNzU3VyZmFjZS4KLSAg
ICBzdGF0aWMgUmVmPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsK
KyAgICBzdGF0aWMgUmVmPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBGbGFncywgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwog
CiAgICAgYm9vbCBpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gISFt
X2dyYXBoaWNzU3VyZmFjZTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuY3BwCmluZGV4IDMzY2I1ZGVjZjY1MWM2NTg2NjMzOThkMDFmMTY4ZTMxMjZmY2Y5
ZWUuLjRlZWNiY2M5OTc3NDI5NGQzNDlkZDE5Y2RiMzAyOGIwNDljMWJiNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKICAgICBtX2ZsYWdzID0gRmxhZzo6Tm9G
bGFnczsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQorUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxh
Z3MgZmxhZ3MpCiB7CiAgICAgc2l6ZV90IG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUp
OwogICAgIApAQCAtNzUsNyArNzUsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZgogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBkYXRhKSk7CiB9
CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKK1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IEludFNpemUm
IHNpemUsIEZsYWdzIGZsYWdzKQogewogICAgIHNpemVfdCBudW1CeXRlcyA9IG51bUJ5dGVzRm9y
U2l6ZShzaXplKTsKIApAQCAtODYsNyArODYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZQog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBzaGFy
ZWRNZW1vcnkpKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBQYXNzUmVmUHRy
PFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKIHsKICAgICBBU1NFUlQoc2hhcmVkTWVt
b3J5KTsKIApAQCAtOTYsNyArOTYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZgogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlQml0bWFwKHNpemUsIGZsYWdzLCBzaGFyZWRNZW1v
cnkpKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJv
dGVjdGlvbikKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KGNvbnN0IEhhbmRsZSYgaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gcHJvdGVjdGlv
bikKIHsKICAgICAvLyBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkuCiAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLm1faGFuZGxl
LCBwcm90ZWN0aW9uKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBTaGFyZWFibGVCaXRtYXA6OlNoYXJl
YWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgdm9pZCogZGF0YSkK
IHsKIH0KIAotU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgRmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkp
CitTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXplJiBzaXplLCBG
bGFncyBmbGFncywgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQogICAgIDogbV9z
aXplKHNpemUpCiAgICAgLCBtX2ZsYWdzKGZsYWdzKQogICAgICwgbV9zaGFyZWRNZW1vcnkoc2hh
cmVkTWVtb3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDc4
MzM4OWVjNTBmODMxOWQxNzhhMDQzNDEyNjU3ZTQ3NDUyZjNlZmUuLjQ1MDkzYTQ1OWIwZDY2N2Yz
YTI0YjhkN2UxZmNmNThjMmI4MmU5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
QEAgLTc2LDE2ICs3NSwxNiBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIC8vIENyZWF0ZSBhIHNo
YXJlYWJsZSBiaXRtYXAgdGhhdCB1c2VzIG1hbGxvY2VkIG1lbW9yeS4KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
RmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBi
aXRtYXAgd2hvc2UgYmFja2luZyBtZW1vcnkgY2FuIGJlIHNoYXJlZCB3aXRoIGFub3RoZXIgcHJv
Y2Vzcy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJl
YWJsZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IEZsYWdzKTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhbiBhbHJl
YWR5IGV4aXN0aW5nIHNoYXJlZCBtZW1vcnkgYmxvY2suCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQ
YXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4pOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBSZWZQdHI8U2hhcmVk
TWVtb3J5Pik7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGZyb20gYSBoYW5k
bGUuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3Qg
SGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkV3JpdGUpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVh
dGUoY29uc3QgSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0gU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwogCiAgICAgLy8gQ3JlYXRlIGEgaGFuZGxlLgogICAg
IGJvb2wgY3JlYXRlSGFuZGxlKEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKQEAgLTEwNiw3ICsxMDUsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBiaXRtYXAgaW1hZ2UgdGhhdCBkaXJlY3Rs
eSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5
IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVh
YmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZT4g
Y3JlYXRlSW1hZ2UoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNyZWF0ZUltYWdlKCk7
CiAKICNpZiBVU0UoQ0cpCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgY29waWVkIENHSW1hZ2VSZWYg
KG1vc3QgbGlrZWx5IGEgY29weS1vbi13cml0ZSkgb2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAuCkBA
IC0xMTgsMTIgKzExNywxMiBAQCBwdWJsaWM6CiAjZWxpZiBVU0UoQ0FJUk8pCiAgICAgLy8gVGhp
cyBjcmVhdGVzIGEgQml0bWFwSW1hZ2UgdGhhdCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFy
ZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Ug
a25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFu
Z2UuCi0gICAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgp
OworICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOwogI2Vu
ZGlmCiAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBGbGFncywgdm9pZCopOwotICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAgU2hhcmVhYmxl
Qml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUmVmUHRyPFNoYXJlZE1lbW9y
eT4pOwogCiAjaWYgVVNFKENBSVJPKQogICAgIHN0YXRpYyBzaXplX3QgbnVtQnl0ZXNGb3JTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IGE2YjJhMjgzZGZiMjM3OGU4
ZWI0MTZlZjVjZWEyMDIwMGViMDFhOWQuLjAzZTY4NDFiZjAzMWQyYWI2MDcyZDBkNzlhMTQ0OGYz
ZWZlMjRmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFi
bGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJl
YWJsZUJpdG1hcENhaXJvLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzaXplX3QgU2hhcmVhYmxlQml0
bWFwOjpudW1CeXRlc0ZvclNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKICAgICBy
ZXR1cm4gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoY2Fpcm9Gb3JtYXQsIHNpemUud2lk
dGgoKSkgKiBzaXplLmhlaWdodCgpOwogfQogCi1zdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBjcmVhdGVTdXJmYWNlRnJvbURhdGEodm9pZCogZGF0YSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gY3JlYXRlU3VyZmFjZUZyb21EYXRhKHZvaWQqIGRhdGEsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUpCiB7CiAgICAgY29uc3QgaW50IHN0cmlkZSA9IGNhaXJvX2Zvcm1hdF9zdHJpZGVf
Zm9yX3dpZHRoKGNhaXJvRm9ybWF0LCBzaXplLndpZHRoKCkpOwogICAgIHJldHVybiBhZG9wdFJl
ZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oZGF0YSksIGNhaXJvRm9ybWF0LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCks
IHN0cmlkZSkpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSQogICAg
IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBjb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkK
K1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9TdXJm
YWNlKCkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZSA9IGNyZWF0ZVN1cmZh
Y2VGcm9tRGF0YShkYXRhKCksIG1fc2l6ZSk7CiAKQEAgLTg3LDEzICs4NywxMyBAQCB2b2lkIFNo
YXJlYWJsZUJpdG1hcDo6cmVsZWFzZVN1cmZhY2VEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwKQog
ICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVsZXNzQml0bWFwKS0+ZGVyZWYo
KTsgLy8gQmFsYW5jZWQgYnkgcmVmIGluIGNyZWF0ZUNhaXJvU3VyZmFjZS4KIH0KIAotUGFzc1Jl
ZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgpCitSZWZQdHI8SW1hZ2U+
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IHN1cmZhY2UgPSBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKICAgICBpZiAoIXN1cmZhY2Up
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBCaXRtYXBJbWFnZTo6Y3JlYXRlKHN1cmZhY2UucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gQml0
bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNw
cAppbmRleCBjZTkzM2I3MjNiZjMxZjM2NzU4MTMwZjFlZTUwYzU4OWRkNWM2ZjkwLi44ZTNjY2E0
OWI2ZmU0YjZhNDgwNWQ2ZjU5ZWU4NDczYmY0YWEyZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTEwNiwxMyArMTA2LDEzIEBAIHZv
aWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVz
c0JpdG1hcCwgY29uc3Qgdm9pZCoKICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5
IHJlZiBpbiBjcmVhdGVDR0ltYWdlLgogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZUltYWdlKCkKK1JlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVJbWFnZSgpCiB7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHBsYXRmb3JtSW1hZ2UgPSBt
YWtlQ0dJbWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShwbGF0Zm9ybUltYWdlLmdl
dCgpKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1h
Z2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274842</attachid>
            <date>2016-03-24 10:58:16 -0700</date>
            <delta_ts>2016-03-24 14:24:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160324105818.patch</filename>
            <type>text/plain</type>
            <size>114207</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uYzA3OTUyNmUxNzExZDZhZmZmYjYyNjhjNTIzZTc2
Yzg3ZGU3ZWU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAxNi0wMy0yNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1h
Z2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgor
ICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrIHdhcyBk
b25lIHRvIGVuc3VyZSB0aGUgQ0cKKyAgICAgICAgcG9pbnRlciBpcyByZWZjb3VudGVkIGNvcnJl
Y3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYQorICAgICAgICBGcmFtZURh
dGEgc2luY2UgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdl
UmVmLgorCisgICAgICAgIFdpdGggdGhpcyBjaGFuZ2UsIFBhc3NOYXRpdmVJbWFnZVB0ciBpcyBu
b3QgbmVlZGVkIGFueW1vcmUuIFNvIGFsbCB0aGUKKyAgICAgICAgaW5zdGFuY2Ugb2YgUGFzc05h
dGl2ZUltYWdlUHRyIGNhbiBiZSByZXBsYWNlZCBieSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgIENoYW5nZSB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUgUmV0YWluUHRy
PENHSW1hZ2VSZWY+LgorICAgICAgICAgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldE5TSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0lt
YWdlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0RXZhc09iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaDoKKyAgICAgICAgQ2hhbmdlIDAgdG8gbnVsbHB0ciwgUGFzc1JlZlB0ciB0byBSZWZQdHIg
YW5kIFBhc3NOYXRpdmVJbWFnZVB0ciB0bworICAgICAgICBOYXRpdmVJbWFnZVB0ci4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVw
bGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIE1ha2UgTmF0aXZl
SW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIGZvciBDRy4gR2V0IHJpZCBvZiBQYXNzTmF0aXZlSW1h
Z2VQdHIKKyAgICAgICAgc2luY2UgTmF0aXZlSW1hZ2VQdHIgaXMgbm93IGEgc21hcnQgcG9pbnRl
ciBvbiBhbGwgcGxhdGZvcm1zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
UmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIFNp
bmNlIEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHJldHVybnMgYSBSZXRhaW5Q
dHIsIG1vdmUgaXQKKyAgICAgICAgdG8gbV9wZW5kaW5nQ29udGVudHNJbWFnZSB0byByZW1vdmUg
dGhlIHJlZmNvdW50IGNodXJuLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Qml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgUmVwbGFjZSBtX2ZyYW1lIHdpdGgg
bV9pbWFnZSBhbmQgZnJhbWUqIHdpdGggZnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b3B5Q2Fpcm9JbWFnZVN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmg6CisgICAgICAgIFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICBSZXBsYWNlICpGcmFtZSogd2l0aCAqRnJh
bWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2Up
OiBDcmVhdGUgYSBuZXcgTmF0aXZlSW1hZ2VQdHIgc28gaXQgY2FuCisgICAgICAgIGJlIG1vdmVk
IHRvIHRoZSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpjb3B5U3Vy
ZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1h
Z2VEYXRhKToKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKTogTm8gbmVlZCB0byBjYWxsIENHSW1hZ2VSZWxlYXNl
KCkuIEp1c3QgYXNzaWduCisgICAgICAgIG1faW1hZ2UgdG8gbnVsbHB0ciBhbmQgQ0dJbWFnZVJl
bGVhc2UoKSB3aWxsIGJlIGNhbGxlZCBmcm9tIHRoZSBSZXRhaW5QdHIKKyAgICAgICAgZGVzdHJ1
Y3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5z
Y2FsZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBDR0lt
YWdlUmVmIHdpdGggUmV0YWluUHRyPENHSW1hZ2VSZWY+LiBSZXBsYWNlICpGcmFtZSogd2l0aAor
ICAgICAgICAqRnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgVXNlIG1fY2dJbWFnZS5n
ZXQoKSBpbnN0ZWFkIG9mIG1fY2dJbWFnZSB3aGVuIGNhbGxpbmcgQ0cgZnVuY3Rpb25zLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIFJlcGxh
Y2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuIEdldCB0aGUgcmF3IENH
SW1hZ2VSZWYKKyAgICAgICAgZnJvbSB0aGUgTmF0aXZlSW1hZ2VQdHIgd2hlbiBjYWxsaW5nIHRo
ZSBDRyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VB
ZnRlclNjYWxpbmdJZk5lZWRlZCk6IE1vdmUgdGhlIGltYWdlIGFyZ3VtZW50CisgICAgICAgIHdo
ZW4gY2FsbGluZyBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAg
IFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFt
ZSB0aGUgZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJp
YWJsZQorICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVy
cy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdO
YXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoK
KyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ciBh
bmQgdXNlIGNvbnN0YW50IHJlZmVyZW5jZS4gCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAg
ICAgIENhbGwgYSBmdW5jdGlvbiB3aXRoIGl0cyBuZXcgbmFtZS4KKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHA6CisgICAgICAgIChJbWFnZUdTdHJlYW1l
cjo6SW1hZ2VHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29u
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgVXNlIHNtYXJ0IHBvaW50ZXJz
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycyBDR0ltYWdlUmVm
LgorICAgICAgICBBbmQgY2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyIGFuZCAwIHRvIG51bGxw
dHIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24p
OiBHZXQgdGhlIHJhdyBwb2ludGVyIGZyb20gdGhlCisgICAgICAgIHJldHVybmVkIHNtYXJ0IHBv
aW50ZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNz
UmVmUHRyIHdpdGggUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lj
b25XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKTog
Q2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Y3JlYXRlKTogUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6IENhbGwg
dGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGggaXRzIG5ldyBuYW1lIGFuZCBnZXQgdGhlIHJhdyBw
b2ludGVyIGZyb20gdGhlIHJldHVybmVkIHNtYXJ0IHBvaW50ZXIuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpjcmVhdGUpOiBSZXBsYWNlIFBhc3NSZWZQdHIgd2l0aCBSZWZ0
UHRyIGFuZCB1c2UKKyAgICAgICAgdGhlIG1vdmUgc2VtYW50aWNzIGZvciBwYXNzaW5nIHRoZSBh
cmd1bWVudCB0byBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rpb24K
KyAgICAgICAgd2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5l
cjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oOgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0
ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorICAgICAgICAKIDIwMTYtMDMtMTggIFpodW8gTGkgIDx6
YWNobGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBBdXRvRmlsbCBidXR0b24gaW4gaW5w
dXQgZmllbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDE1ZmE2YWYwYjI2ZTQ4NzM1ZDlhMTMyMmM1
YjQ0M2I4N2YzZTNlMWQuLmYxNDU5OGViMDAzNGExM2E2ZjZjY2I1MzdkMGI4MTdlOTliYzQ0ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wMy0yNCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5nZSBOYXRp
dmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06Cisg
ICAgICAgICgrW1dlYkNhY2hlIGFkZEltYWdlVG9DYWNoZTpmb3JVUkw6Zm9yRnJhbWU6XSk6Cisg
ICAgICAgIFdlYkNvcmU6Ok1lbW9yeUNhY2hlKCkgaXMgdGFraW5nIGFuIHJ2YWx1ZSBOYXRpdmVJ
bWFnZVB0ci4gV2UgbmVlZCB0byBjcmVhdGUKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgZnJvbSB0
aGUgaW1hZ2UgcmF3IHBvaW50ZXIgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisKIDIwMTYt
MDMtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUg
Q2FjaGVzIGluIFNhZmFyaSdzIERldmVsb3AgbWVudSBkb2VzIG5vdCBkaXNhYmxlIGNhY2hlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwppbmRleCA1ODllOGVmYmEzZWU0YWZmYzJmNjkyYjg0NDg5MGNjYjgzZjQy
NmM3Li5lZTVlNGI0NmJjN2Q5ZDM1NzlkN2VjODUwY2NjZjEwZGJjMTgzNGE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBDaGFuZ2UgTmF0aXZlSW1hZ2VQdHIg
Zm9yIENHIHRvIGJlIFJldGFpblB0cjxDR0ltYWdlUmVmPgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAg
KiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6c25hcHNob3QpOgorICAgICAgICBSZXBsYWNlIFBhc3NSZWZQdHIgd2l0aCBSZWZQdHIuCisK
IDIwMTYtMDMtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTY5NTEgYW5kIHIxOTcwMzEuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNTNmZTgxYTExNzFjYjU3ZDQ1NjIwYTdiMzI5ZWMyODRlNTYzYjJlOC4uODMz
MDllNzY4YzI1MTFjNGQwNmU2ODY2MWYwYzdjZjAwNDJjYjg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM1IEBACisyMDE2LTAzLTI0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZSxjb20+CisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIGZvciBDRyB0byBiZSBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTQxMgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVX
aXRoU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNv
cHlUb1RleHR1cmUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNv
b3JkaW5hdGVkU3VyZmFjZS5oOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRy
IGFuZCB1c2UgV1RGTW92ZSgpIGluc3RlYWQgb2YgUmVmUHRyOjpyZWxlYXNlKCkKKyAgICAgICAg
d2hlbiBwYXNzaW5nIHRoZSBSZWZQdHIuCisgICAgICAgIAorICAgICAgICAqIFNoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVN1cmZh
Y2VGcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ2Fp
cm9TdXJmYWNlKToKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorICAg
ICAgICAKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc1Jl
ZlB0ciB3aXRoIFJlZlB0ciBhbmQgdXNlIHRoZSBtb3ZlIHNlbWFudGljcyB3aGVuIGNhbGxpbmcK
KyAgICAgICAgQml0bWFwSW1hZ2U6OmNyZWF0ZSgpLgorCiAyMDE2LTAzLTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR2l2ZSBOU1VSTFNl
c3Npb25Db25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFib3V0IHBhcmVudCBwcm9jZXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAxZTZmY2NkOGViNDY5OWMw
NmE5OWM0MjM2YjE5MTk1MWU4NWRjMDJmLi43MTMxNGJjMjY3NDUyOGZkZDIxNTYyZTgzYjMyYzE2
MTZlYWY0ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAg
LTI3OSw3ICsyNzksNyBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVv
RnJhbWUoKSBjb25zdAogICAgIHJldHVybiBwbGF5ZXIoKS0+aGFzVmlkZW8oKSAmJiBwbGF5ZXIo
KS0+aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSFRN
TFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitOYXRpdmVJbWFnZVB0
ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBp
ZiAoIXBsYXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmgKaW5kZXggYWQ5NDhmOTQ0YTMwODE2YWE1N2IzYzhlZWE2MDI0ODgx
MjQ1NjUxNS4uYjRkN2YxZTE3MGYxZjczZWNhNDg2NTY0NjA3Y2Q1N2VmMWY0ZmUwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGlj
OgogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAgIHZv
aWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jik7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsK
IAogICAgIC8vIFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBv
c3NpYmxlLgogICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDdiZjY4MDRm
Y2Y4YWZhNWNjZWMwMTk0MzA5YmVjNTk3NDc3M2UyMjcuLmQ2OGY5ODZjYWE3YjM4OGE1MjlmM2I4
MzkwYTBlNjM3M2U2YWFiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTYyNSw3ICsxNjI1LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50
KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjaGVja09yaWdpbih2aWRlbyk7CiAKICNpZiBV
U0UoQ0cpIHx8IChFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoR1NUUkVBTUVS
X0dMKSAmJiBVU0UoQ0FJUk8pKQotICAgIGlmIChQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2
aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKSB7CisgICAgaWYgKE5hdGl2ZUltYWdl
UHRyIGltYWdlID0gdmlkZW8tPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkgewogICAgICAg
ICBjLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZSh2aWRlby0+dmlkZW9XaWR0aCgp
LCB2aWRlby0+dmlkZW9IZWlnaHQoKSksIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAo
cmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5k
ZXggOTk5NDY1ZWEzOTA2OTdjYmUwMGZlNmZhODgzOGMxMzhlNTQ0N2ExNy4uMDk5MzBlMGU4Y2Ix
OWNhOTEwYjBlMTNiYWM1NjA3N2E2MmZhMzY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMDQsMjkgKzIwNCwyNCBAQCB1bnNpZ25lZCBNZW1v
cnlDYWNoZTo6bGl2ZUNhcGFjaXR5KCkgY29uc3QKICAgICByZXR1cm4gbV9jYXBhY2l0eSAtIGRl
YWRDYXBhY2l0eSgpOwogfQogCi0jaWYgVVNFKENHKQotLy8gRklYTUU6IFJlbW92ZSB0aGUgVVNF
KENHKSBvbmNlIHdlIGVpdGhlciBtYWtlIE5hdGl2ZUltYWdlUHRyIGEgc21hcnQgcG9pbnRlciBv
biBhbGwgcGxhdGZvcm1zIG9yCi0vLyByZW1vdmUgdGhlIHVzYWdlIG9mIENGUmV0YWluKCkgaW4g
TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSgpIHNvIGFzIHRvIG1ha2UgdGhlIGNvZGUgcGxh
dGZvcm0taW5kZXBlbmRlbnQuCiBzdGF0aWMgQ2FjaGVkSW1hZ2VDbGllbnQmIGR1bW15Q2FjaGVk
SW1hZ2VDbGllbnQoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDYWNoZWRJbWFnZUNs
aWVudD4gY2xpZW50OwogICAgIHJldHVybiBjbGllbnQ7CiB9CiAKLWJvb2wgTWVtb3J5Q2FjaGU6
OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pCitib29sIE1lbW9yeUNhY2hlOjph
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pCiB7CiAgICAgQVNTRVJUKGltYWdl
KTsKICAgICBTZXNzaW9uSUQgc2Vzc2lvbklEID0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCk7CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlv
bik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAotICAgIFJl
ZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKGltYWdl
LCBudWxscHRyKTsKKyAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IGJpdG1hcEltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7CiAgICAgaWYgKCFiaXRtYXBJ
bWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENhY2hl
ZEltYWdlPiBjYWNoZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwg
Yml0bWFwSW1hZ2UuZ2V0KCksIENhY2hlZEltYWdlOjpNYW51YWxseUNhY2hlZCwgc2Vzc2lvbklE
KTsKIAotICAgIC8vIEFjdHVhbCByZWxlYXNlIG9mIHRoZSBDR0ltYWdlUmVmIGlzIGRvbmUgaW4g
Qml0bWFwSW1hZ2UuCi0gICAgQ0ZSZXRhaW4oaW1hZ2UpOwogICAgIGNhY2hlZEltYWdlLT5hZGRD
bGllbnQoJmR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7CiAgICAgY2FjaGVkSW1hZ2UtPnNldERl
Y29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgpKTsKICNpZiBFTkFCTEUoQ0FDSEVf
UEFSVElUSU9OSU5HKQpAQCAtMjY0LDcgKzI1OSw2IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92
ZUltYWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGRvbWFpbkZvckNh
CiAgICAgLy8gcmVzb3VyY2UgbWF5IGJlIGRlbGV0ZWQgYWZ0ZXIgdGhpcyBjYWxsLgogICAgIGRv
d25jYXN0PENhY2hlZEltYWdlPigqcmVzb3VyY2UpLnJlbW92ZUNsaWVudCgmZHVtbXlDYWNoZWRJ
bWFnZUNsaWVudCgpKTsKIH0KLSNlbmRpZgogCiB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZUxpdmVS
ZXNvdXJjZXMoYm9vbCBzaG91bGREZXN0cm95RGVjb2RlZERhdGFGb3JBbGxMaXZlUmVzb3VyY2Vz
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCBjODhk
MmRiZDRlNmIxZDI3ODBkZGEwNGZjY2FmOWI4MjNhNDYxN2EwLi41MzFlOWFmZjRiNWFiMDQwZWIx
YmJkMjg3NmY3YTBhNWZiOTFhMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuaApAQCAtMTU1LDEyICsxNTUsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5zKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdp
bnNXaXRoQ2FjaGUoU2Vzc2lvbklEKSBjb25zdDsKIAotI2lmIFVTRShDRykKLSAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9uY2Ugd2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIg
YSBzbWFydCBwb2ludGVyIG9uIGFsbCBwbGF0Zm9ybXMgb3IKLSAgICAvLyByZW1vdmUgdGhlIHVz
YWdlIG9mIENGUmV0YWluKCkgaW4gTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSgpIHNvIGFz
IHRvIG1ha2UgdGhlIGNvZGUgcGxhdGZvcm0taW5kZXBlbmRlbnQuCi0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgYWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JD
YWNoZVBhcnRpdGlvbik7Ci0jZW5kaWYKIAogICAgIC8vIHBydW5lRGVhZCooKSAtIEZsdXNoIGRl
Y29kZWQgYW5kIGVuY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBub3QgcmVmZXJlbmNlZCBieSBX
ZWIgcGFnZXMuCiAgICAgLy8gcHJ1bmVMaXZlKigpIC0gRmx1c2ggZGVjb2RlZCBkYXRhIGZyb20g
cmVzb3VyY2VzIHN0aWxsIHJlZmVyZW5jZWQgYnkgV2ViIHBhZ2VzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggZGNjYTg4ZTViNzA3ZDFhNzAwYmY0
NmVmNjMwMDQ3YTMzY2Y4OGI5Zi4uNmRhMjQ0ZTVkM2ExZTY0YWIzYTE4MGQ5MTM4MDI1MGI2NDkw
YTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBA
IC0zMDAsNyArMzAwLDcgQEAgSW1hZ2UqIEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY28KICAgICByZXR1cm4gaWNv
blJlY29yZC0+aW1hZ2Uoc2l6ZSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJh
c2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJM
T3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNpemUpCitOYXRpdmVJbWFnZVB0ciBJY29uRGF0YWJh
c2U6OnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJM
T3JpZ2luYWwsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgSW1hZ2UqIGljb24gPSBzeW5j
aHJvbm91c0ljb25Gb3JQYWdlVVJMKHBhZ2VVUkxPcmlnaW5hbCwgc2l6ZSk7CiAgICAgaWYgKCFp
Y29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCA1MzBh
M2EzMDg5MDE0YTNlYjFiZTAyZDMyNDgyOWNhYzI2ZDg2ZDMyLi5kYjQzZWMyY2IzMTE5ZTU2MzAw
ODc0NGJhYmMwNTkyNGRlNjFjMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2UuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRJY29uVVJMRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0
cmluZyYgcGFnZVVSTCkgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZSogc3lu
Y2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgb3Zl
cnJpZGU7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBh
Z2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUmKSBvdmVy
cmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBzeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzeW5jaHJvbm91c0ljb25EYXRhS25v
d25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IEljb25Mb2FkRGVjaXNpb24gc3luY2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0
IFN0cmluZyYsIERvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmgKaW5kZXggMDI1NDY1MzA0MTY5MTk3MjIyZTc3
ZGYwNmU2NmZmNjYzZTc4MDhhYS4uNTQ0Y2JhY2I2OThjNjhiMGQ4NjgxYzI4YmQ2MThjZTcyOGMx
YWZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
aApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3luY2hyb25v
dXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZv
ckljb25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSB7IHJldHVybiBJY29uTG9h
ZE5vOyB9CiAgICAgdmlydHVhbCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1
YWwgUGFzc05hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0
dWFsIE5hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiwgY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIEFz
eW5jaHJvbm91cyBjYWxscyB3ZSBzaG91bGQgdXNlIHRvIHJlcGxhY2UgdGhlIGFib3ZlIHdoZW4g
c3VwcG9ydGVkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSB7
IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCmluZGV4IGZhZjBmODY5NjJjM2ZiNjU3Nzc0NWJmYWY3NWI0Yzg0ZDgw
Y2MwNjAuLjRhNWM2MWE1ZDI3YmE4NTU0M2MwMDY0NWRmOGVhMjAzMzUwYTllMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihkb3VibGUgZGVsYXkpCiAg
ICAgbV9mcmFtZVRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQogCi1ib29sIEJpdG1hcElt
YWdlOjpoYXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK2Jvb2wgQml0bWFwSW1hZ2U6Omhh
dmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZy
YW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGJv
b2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChp
bmRleCA+PSBtX2ZyYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhd
Lm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QKQEAgLTE4NCw5ICsxODQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1l
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAg
ICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKICAgICBpZiAoZnJhbWVDYWNoaW5nID09
IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFt
ZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7
CisgICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogICAgICAgICBtX2ZyYW1lc1tp
bmRleF0ubV9zdWJzYW1wbGluZ0xldmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICAgICAgaWYg
KG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBpZiAo
bnVtRnJhbWVzID09IDEgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgICAgICBj
aGVja0ZvclNvbGlkQ29sb3IoKTsKICAgICB9CiAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsLCBJbQogICAgIGlmICghc3Vic2FtcGxpbmdMZXZlbCAmJiBmcmFtZVNpemUg
IT0gbV9zaXplKQogICAgICAgICBtX2hhc1VuaWZvcm1GcmFtZVNpemUgPSBmYWxzZTsKIAotICAg
IGlmIChtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkgeworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZSkgewogICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFt
ZXNbaW5kZXhdLm1fZnJhbWVCeXRlcyk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gZGVsdGFC
eXRlczsKICAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJzdW1lIHRo
ZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKQEAgLTM3OSwxNCArMzc5LDE0IEBAIGJvb2wg
Qml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1l
Q2FjaGluZyBmcmFtZUNhY2hpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpbmRl
eCA+PSBtX2ZyYW1lcy5zaXplKCkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1l
dGFkYXRhQW5kRnJhbWUgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICB8fCAo
ZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhd
Lm1faW1hZ2UpCiAgICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkg
JiYgIW1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkpCiAgICAgICAgIGNhY2hlRnJhbWUo
aW5kZXgsIDAsIGZyYW1lQ2FjaGluZyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9h
dCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQp
CiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0zOTUsNyArMzk1LDcgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpm
cmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EKIAogICAgIC8v
IFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBoaWdoZXIgc3Vic2FtcGxpbmcgbGV2
ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8vIHJlLWRlY29kZSB3aXRoIGEgbG93
ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2lu
ZGV4XS5tX2ZyYW1lICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJz
YW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJh
bWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0u
bV9zdWJzYW1wbGluZ0xldmVsKSB7CiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5
IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUsIHJlLWRlY29kZSBhIGxhcmdlciB2ZXJz
aW9uLgogICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5
dGVzOwogICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xlYXIodHJ1ZSk7CkBAIC00MDYsMTAgKzQw
NiwxMCBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXpl
X3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYQogICAgIH0KIAogICAgIC8vIElmIHdlIGhh
dmVuJ3QgZmV0Y2hlZCBhIGZyYW1lIHlldCwgZG8gc28uCi0gICAgaWYgKGluZGV4ID49IG1fZnJh
bWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisgICAgaWYgKGluZGV4ID49
IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCiAgICAgICAgIGNh
Y2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7
CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7CisgICAgcmV0dXJuIG1fZnJh
bWVzW2luZGV4XS5tX2ltYWdlOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KHNpemVfdCBpbmRleCkKQEAgLTQyOCw5ICs0MjgsOSBAQCBmbG9hdCBCaXRtYXBJ
bWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJ
bWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogewotICAgIHJldHVybiBmcmFtZUF0
SW5kZXgoY3VycmVudEZyYW1lKCkpOworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleChjdXJy
ZW50RnJhbWUoKSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCmluZGV4IDc0OTNjNmE0YmZiODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQu
LjAwZmJhMzNiYTQxOWMxMjQxNTQxNjUzMzAxZTI5NWNlZjg2ZDE3NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtNjUsMTYgKzY1LDE0
IEBAIGNsYXNzIFRpbWVyOwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CiAKIHN0cnVjdCBGcmFtZURhdGEgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEZyYW1lRGF0YSk7CiBwdWJsaWM6CiAgICAgRnJhbWVEYXRhKCkKLSAgICAgICAgOiBtX2Zy
YW1lKDApCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikK
KyAgICAgICAgOiBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQogICAgICAg
ICAsIG1fc3Vic2FtcGxpbmdMZXZlbCgwKQogICAgICAgICAsIG1fZHVyYXRpb24oMCkKICAgICAg
ICAgLCBtX2hhdmVNZXRhZGF0YShmYWxzZSkKICAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2Up
Ci0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKSAKKyAgICAgICAgLCBtX2hhc0FscGhhKHRydWUp
CiAgICAgICAgICwgbV9mcmFtZUJ5dGVzKDApCiAgICAgewogICAgIH0KQEAgLTg4LDcgKzg2LDcg
QEAgcHVibGljOgogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdl
IGRhdGEgdG8gY2xlYXIuCiAgICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwogCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgbV9mcmFtZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwog
ICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKICAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbDsKICAgICBmbG9hdCBtX2R1cmF0aW9uOwpAQCAtMTA4LDE2ICsx
MDYsMTYgQEAgY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogICAgIGZy
aWVuZCBjbGFzcyBHcmFkaWVudEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFBhc3NOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSAwKQorICAg
IHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IG51bGxwdHIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShuYXRpdmVJbWFnZSwgb2JzZXJ2ZXIpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2UoV1RGTW92ZShuYXRpdmVJ
bWFnZSksIG9ic2VydmVyKSk7CiAgICAgfQotICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNy
ZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IDApCisgICAgc3RhdGljIFJlZjxCaXRtYXBJ
bWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKG9ic2VydmVyKSk7CiAgICAg
fQogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0
cjxCaXRtYXBJbWFnZT4gY3JlYXRlKEhCSVRNQVApOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8Qml0bWFwSW1hZ2U+IGNyZWF0ZShIQklUTUFQKTsKICNlbmRpZgogICAgIHZpcnR1
YWwgfkJpdG1hcEltYWdlKCk7CiAgICAgCkBAIC0xNzIsNyArMTcwLDcgQEAgcHVibGljOgogICAg
IEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSBvdmVycmlkZTsKICNlbmRpZgogCi0g
ICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJp
ZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVy
cmlkZTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkg
b3ZlcnJpZGUgeyByZXR1cm4gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoY3VycmVudEZyYW1lKCkp
OyB9CiAKICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlOwpA
QCAtMTk5LDggKzE5Nyw4IEBAIHByb3RlY3RlZDoKICAgICAgIENlcnRhaW4gICAgIC8vIFRoZSBy
ZXBldGl0aW9uIGNvdW50IGlzIGtub3duIHRvIGJlIGNvcnJlY3QuCiAgICAgfTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgSW1hZ2VPYnNlcnZl
ciogPSAwKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9
IDApOworICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKE5hdGl2ZUltYWdlUHRyJiYsIElt
YWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2Uo
SW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9y
KSBvdmVycmlkZTsKQEAgLTIxNCwxMCArMjEyLDEwIEBAIHByb3RlY3RlZDoKIAogICAgIHNpemVf
dCBmcmFtZUNvdW50KCk7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNp
emVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7Ci0gICAgUGFzc05hdGl2ZUlt
YWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QpOworICAgIE5hdGl2ZUltYWdl
UHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50
ID0gMSk7CisgICAgTmF0aXZlSW1hZ2VQdHIgY29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90KTsKIAotICAgIGJvb2wgaGF2ZUZyYW1lQXRJbmRleChzaXplX3QpOworICAgIGJvb2wg
aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAgICBib29sIGZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgoc2l6ZV90KTsKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAppbmRleCBiYWJjNGM4NWNjMmRmNzQ5NThmYTFjOTEwZTU2YWFjYjg3MTkwY2YyLi5jNTI0
YmExOWQ1ZGRhNDA1YzYwYzE0NzgyMTYyNzljMGM4NTk2NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzAyLDcgKzMw
Miw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBE
ZWZhdWx0SW1hZ2VPcmllbnRhdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRN
b2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pOwog
I2VuZGlmCiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCBlMzZiYTNhYTU2ZDU4YzIwNmE5ODNm
ZjViYTliZmE3YjEzNjUxMTgyLi5kYmJiY2Y1OGMzN2I5YTZiMTY0ZDZmMTM1MWNkNmUxNWViNDFk
ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKQEAgLTEyNDUsNyArMTI0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgSW1h
Z2VTb3VyY2UqIG1fZGVjb2RlcjsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbV9p
bWFnZVN1cmZhY2U7CiAjZWxpZiBVU0UoQ0cpCi0gICAgICAgIENHSW1hZ2VSZWYgbV9jZ0ltYWdl
OworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwogICAgICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNvZGVkSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IG1fcGl4ZWxEYXRhOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBt
X2Zvcm1hbGl6ZWRSR0JBOERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29u
LmgKaW5kZXggZDk1ZTdkZWI4MTBmYzI0ZjdmNjFiMWIyM2E0YjlhZWYzZjNjMTdiNy4uZjZiYmI4
MjA2Y2VhYjdjZDM2Mzk2MjA4MDUwYjQwMzE2MWRhYTZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ljb24uaApAQCAtMjIsOCArMjIsOCBAQAogI2RlZmluZSBJY29uX2gKIAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NSwx
OSArNDUsMTkgQEAgY2xhc3MgRmxvYXRSZWN0OwogICAgIAogY2xhc3MgSWNvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPEljb24+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFz
c1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcyk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB+SWNvbigpOwogCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJY29uPiBjcmVhdGUoSElDT04gaEljb24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29u
KGhJY29uKSk7IH0KKyAgICBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZShISUNPTiBoSWNvbikg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaEljb24pKTsgfQogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGZvciBub24taU9TIHBvcnRz
IGFuZCByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCi0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFBhc3NSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckltYWdlKE5hdGl2ZUltYWdlUHRy
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMp
CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgSWNvbihDR0ltYWdlUmVmKTsKKyAgICBJY29uKGNvbnN0IFJldGFpblB0cjxDR0ltYWdl
UmVmPiYpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAjZWxpZiBQTEFU
Rk9STShNQUMpCiAgICAgSWNvbihOU0ltYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaAppbmRleCA0ZWQ2ZTM1ZDk5YWZhYWI1YjhiZGVjNmZkN2ExMzIwZTIwZDA0
NmY1Li5jMzE0MmFkZWM3YTI1Yzg0NjBlMjlhZjM1MDJiOTQxNDdiNzA2YzdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTEzNSwyMyArMTM1LDIzIEBAIHB1
YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBTdHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFj
ZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAotICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRy
OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZy
YW1lKCkgeyByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOyB9CiAKICAgICAvLyBBY2Nlc3NvcnMg
Zm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2aXJ0dWFs
IE5TSW1hZ2UqIGdldE5TSW1hZ2UoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOU0ltYWdl
KiBnZXROU0ltYWdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICB2aXJ0dWFsIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9u
KCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCi0gICAgdmlydHVh
bCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBD
R0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1
cm4gMDsgfQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJh
eSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigp
IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0lt
YWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmly
dHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCkBAIC0xNjAsMTEgKzE2MCwxMSBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIEdka1Bp
eGJ1ZiogZ2V0R2RrUGl4YnVmKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgR2RrUGl4YnVm
KiBnZXRHZGtQaXhidWYoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEVGTCkKLSAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSB7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBFdmFzX09iamVjdCogZ2V0RXZhc09iamVjdChFdmFz
KikgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAwNGY5ZWY5M2FlYTlkMjJlYWYwZTYx
YzlhMjBkNjczNTM3MjI5NWFiLi41N2JhNjM1MjBmZGViM2JhMjFlMjcwYjc2OWZkZDI5MDRjY2E3
YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9VaW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDEsOCAr
MTAxLDggQEAgcHVibGljOgogCiAgICAgZW51bSBDb29yZGluYXRlU3lzdGVtIHsgTG9naWNhbENv
b3JkaW5hdGVTeXN0ZW0sIEJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0ZW0gfTsKIAotICAgIFBh
c3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25z
dCBJbnRSZWN0JiwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBj
b25zdDsKLSAgICBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRQcmVtdWx0aXBsaWVk
SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmLCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3Jk
aW5hdGVTeXN0ZW0pIGNvbnN0OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0VW5t
dWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmLCBDb29yZGluYXRlU3lzdGVtID0gTG9n
aWNhbENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gZ2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiwgQ29vcmRpbmF0ZVN5
c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSBjb25zdDsKIAogICAgIHZvaWQgcHV0Qnl0
ZUFycmF5KE11bHRpcGx5IG11bHRpcGxpZWQsIFVpbnQ4Q2xhbXBlZEFycmF5KiwgY29uc3QgSW50
U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCwgQ29vcmRpbmF0ZVN5c3RlbSA9IExvZ2ljYWxDb29yZGluYXRlU3lzdGVt
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcAppbmRleCA3NGVmMDUzYTMzM2ZmNWZjNTc4ZTgxODAwY2M2ZmM5NzU1ZWZiYWI4Li5h
ZTMxYzk4MzUyMWQ1MDA4MjI1YzFmYzM0MjljMmM0MGEwMzdlNDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0xNDgsMTkgKzE0
OCwxOSBAQCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVy
biBtX2RlY29kZXIgPyBtX2RlY29kZXItPmZyYW1lQ291bnQoKSA6IDA7CiB9CiAKLVBhc3NOYXRp
dmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCkKK05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYg
KCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4
KGluZGV4KTsKICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJh
bWU6OkZyYW1lRW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNv
bWUgcG9ydHMuICBJZiB3ZSBoYXZlIGFuCiAgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBq
dXN0IGJhaWwuCiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRl
bnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRhCiAgICAgLy8g
aXMgYWxyZWFkeSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50
cyBpdHMgcmVmY291bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaAppbmRleCBhY2RkMWNlNGNlMzAwZGU4MWM5ZTA2MmVlZTc2MDdiZjQ3MmE3MGFm
Li5jMTFmN2JlNDgyOWU0ZTZiYzQwMTc4OTYzYzFkNTFhMTg2NjBhMGEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTExMCw3ICsxMTAs
NyBAQCBwdWJsaWM6CiAgICAgLy8gZGVjb2RlZCBmcmFtZXMuCiAgICAgLy8KICAgICAvLyBDYWxs
ZXJzIHNob3VsZCBub3QgY2FsbCBjbGVhcihmYWxzZSwgbikgYW5kIHN1YnNlcXVlbnRseSBjYWxs
Ci0gICAgLy8gY3JlYXRlRnJhbWVBdEluZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZp
cnN0IGNhbGwgY2xlYXIodHJ1ZSkuCisgICAgLy8gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobSkg
d2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0cnVlKS4KICAgICAvLyBU
aGlzIGVuc3VyZXMgdGhhdCBzdGF0ZWZ1bCBJbWFnZVNvdXJjZXMvZGVjb2RlcnMgd2lsbCB3b3Jr
IHByb3Blcmx5LgogICAgIC8vCiAgICAgLy8gVGhlIHxkYXRhfCBhbmQgfGFsbERhdGFSZWNlaXZl
ZHwgcGFyYW1ldGVycyBzaG91bGQgYmUgc3VwcGxpZWQgYnkgY2FsbGVycwpAQCAtMTQ2LDcgKzE0
Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0
ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1l
bnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1l
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsK
IAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFt
ZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0
dWFsbHkgdXNlZCBhbnkgYWxwaGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggOTliOWQ1Y2FkZTczZTBjMWZhZDA5YTc3Y2Y1ZjZk
YjI5OGMzN2FhNS4uOTA2OTViNDQ1NjNhMDhiNGQwY2M2ZDM2YzRmZmQ4MmQ1MWNhMWY4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApA
QCAtODM3LDcgKzgzNyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKICAgICByZXR1cm4gbV9w
cml2YXRlLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVy
ZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlw
bHlBbHBoYSwgZmxpcFkpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQorTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDVlYTU1ODcxMTA1OTM3ZWVlNDA2M2U3MjU5MmEx
YWU1NTcxNTQ1Y2IuLmMyZTBjZjdiODEzMDgxZDE1MzM3ZDBhOTJlNmNhMzE3ZDBhZTA4MTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAt
NDIzLDcgKzQyMyw3IEBAIHB1YmxpYzoKICAgICAvLyBodHRwOi8vc3JjLmNocm9taXVtLm9yZy92
aWV3dmMvY2hyb21lL3RydW5rL3NyYy9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9nbGVzMl9j
bWRfY29weV90ZXh0dXJlX2Nocm9taXVtLmNjIHZpYSBzaGFkZXJzLgogICAgIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlLCBHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVt
IGludGVybmFsRm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKTsKIAogICAgIHVzaW5nIE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtT
dGF0ZTsKICAgICBOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGU1
NzlhZTkzODU2ZTdkZGM4NTk2ODY0NzM2MThkYTJhMTRkNmM3OTAuLmQ5MTlmNTQzMzdhNDU3YzEw
ZWM2OGJhNWEyMGViN2RlM2I4ZmVjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNTEsNyArMTUxLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAg
ICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51
bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7
IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAppbmRleCBkZjk0MWE1NjZh
OWU0NjkyNzcyN2JhMWVjNjg0OGYyMTY4MDNhNDViLi4wMzQ2NjY1YjM2ZGJlNTY2MWEwOWNlNzFj
NGVjYjRhMGMxZThlMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUHRyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgTmF0aXZlSW1h
Z2VQdHJfaAogCiAjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIHR5cGVk
ZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CiAjZWxpZiBVU0UoQ0FJUk8pCiAjaW5jbHVk
ZSAiUmVmUHRyQ2Fpcm8uaCIKQEAgLTM4LDIxICszOSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBDR0lt
YWdlKiBDR0ltYWdlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBOYXRp
dmVJbWFnZVB0ciBhbmQgUGFzc05hdGl2ZUltYWdlUHRyIHNob3VsZCBiZSBzbWFydAotLy8gcG9p
bnRlcnMgKHNlZSBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkuCiAjaWYg
VVNFKENHKQotdHlwZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRyOwordHlwZWRlZiBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiB0eXBl
ZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRyOwotdHlwZWRlZiBQYXNz
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gUGFzc05hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKFdJ
TkdESSkKIHR5cGVkZWYgUmVmUHRyPFNoYXJlZEJpdG1hcD4gTmF0aXZlSW1hZ2VQdHI7CiAjZW5k
aWYKIAotI2lmICFVU0UoQ0FJUk8pCi10eXBlZGVmIE5hdGl2ZUltYWdlUHRyIFBhc3NOYXRpdmVJ
bWFnZVB0cjsKLSNlbmRpZgotCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4
IGY3ZmIxYWM0NjhiMDY4MTEwZWJhMjMyZjJiYzZmZjA2MjZlZmJhMjAuLmQ2ZGU3NjJjMWZlMmJm
ODQ2YWFhZTI0NTNjNmM1NWIwYmFkY2E5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTI0
Nyw3ICsyNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAg
Ym9vbCB2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAgdm9pZCBwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBQYXNz
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOworICAg
IE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsKIAogICAgIHZv
aWQgY3JlYXRlT3BlbkdMVmlkZW9PdXRwdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IDE1NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLmM3Nzc2ZTA0ZmMwZjdi
MTQ2MzA5NGQxNDkwOWNmN2M1MDkzZjllNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
MjM0NiwxMCArMjM0NiwxMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHJldHVybiBt
X3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHZp
ZGVvVGV4dHVyZS5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBo
YSwgZmxpcFkpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitOYXRpdmVJbWFnZVB0
ciBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKLSAgICByZXR1cm4gbV9sYXN0SW1h
Z2UuZ2V0KCk7CisgICAgcmV0dXJuIG1fbGFzdEltYWdlOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxD
aGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMjMwYThmNmI3MjFiNTE1YTMxZTUyMDI2ZWZiMGRl
YTRkNGMwMDAxYS4uNTZmNzkxZDk4M2U3YWNmMmJkZTdkMDU4YjQyNzY0MDA5YTEwZmVhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCkBAIC0xMDA4LDE2ICsxMDA4LDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
OjpzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAo
aW1hZ2UpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAgICBhdXRvIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIGlmICghbmV3SW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IHByb2JhYmx5IGRvbid0IG5lZWQgbV91
bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgYXQgYWxsIG5vdy4KLSAgICAgICAgaWYgKG1fdW5jb3Jy
ZWN0ZWRDb250ZW50c0ltYWdlICYmIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlLmdldCgpID09
IG5ld0ltYWdlKQorICAgICAgICBpZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgPT0gbmV3
SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBtX3VuY29ycmVj
dGVkQ29udGVudHNJbWFnZSA9IG5ld0ltYWdlOwotICAgICAgICBtX3BlbmRpbmdDb250ZW50c0lt
YWdlID0gbmV3SW1hZ2U7CisgICAgICAgIG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gV1RG
TW92ZShuZXdJbWFnZSk7CisgICAgICAgIG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2UgPSBtX3VuY29y
cmVjdGVkQ29udGVudHNJbWFnZTsKIAogICAgICAgICBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlID0g
Q29udGVudHNMYXllckZvckltYWdlOwogICAgICAgICBpZiAoIW1fY29udGVudHNMYXllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0
bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggY2Q1N2VlNDg1ZWE4MGM2Y2YzNDdhYjNiZDk3MzdkNTk5
OWUxMDI4Mi4uYmRhMGRjMjgxYzkzN2RjZGYyZGIxNWFjNzEyOGEyMzk0ZDc1NzRhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0
bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRt
YXBJbWFnZShSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9zaXplKGNhaXJv
U3VyZmFjZVNpemUobmF0aXZlSW1hZ2UuZ2V0KCkpKQogICAgICwgbV9taW5pbXVtU3Vic2FtcGxp
bmdMZXZlbCgwKQpAQCAtNTgsNyArNTgsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFz
c1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogewog
ICAgIG1fZnJhbWVzLmdyb3coMSk7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJv
X3N1cmZhY2VfZ2V0X2NvbnRlbnQobmF0aXZlSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRf
Q09MT1I7Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IG5hdGl2ZUltYWdlOworICAgIG1fZnJh
bWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKICAgICBtX2ZyYW1lc1swXS5t
X2hhdmVNZXRhZGF0YSA9IHRydWU7CiAKICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKQEAgLTcy
LDcgKzcyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KIAogICAgIHN0YXJ0QW5pbWF0aW9u
KCk7CiAKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleCht
X2N1cnJlbnRGcmFtZSk7CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3
ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzUsNyAr
MTM1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICBpZiAo
ZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgYXV0
byBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGlmICgh
c3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQu
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTU4LDggKzE1OCw4IEBAIGJvb2wgRnJhbWVEYXRhOjpj
bGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgaWYgKGNsZWFyTWV0YWRhdGEpCiAgICAgICAg
IG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7CiAKLSAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBt
X2ZyYW1lID0gbnVsbHB0cjsKKyAgICBpZiAobV9pbWFnZSkgeworICAgICAgICBtX2ltYWdlID0g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmNwcAppbmRleCBiZTk3MDEwYjg2ZjMwOGExZWJlYWM3MTMwZTFlM2EwYjVk
ZGJiM2Y2Li5kZDhiMDk3OGFkYmRhYjQ2YzU4NzE2ZjYyMzE2OTBiZWYzZTM4OTA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9V
dGlsaXRpZXMuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9D
b250ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBJbnRTaXoK
ICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IGNvcHlDYWlyb0ltYWdlU3VyZmFjZShjYWlyb19zdXJmYWNlX3QqIG9yaWdpbmFsU3VyZmFjZSkK
K1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlDYWlyb0ltYWdlU3VyZmFjZShjYWlyb19zdXJm
YWNlX3QqIG9yaWdpbmFsU3VyZmFjZSkKIHsKICAgICAvLyBDYWlybyBkb2Vzbid0IHByb3ZpZGUg
YSB3YXkgdG8gY29weSBhIGNhaXJvX3N1cmZhY2VfdC4KICAgICAvLyBTZWUgaHR0cDovL2xpc3Rz
LmNhaXJvZ3JhcGhpY3Mub3JnL2FyY2hpdmVzL2NhaXJvLzIwMDctSnVuZS8wMTA4NzcuaHRtbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9V
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
VXRpbGl0aWVzLmgKaW5kZXggYWRhYjBlNWM3ODM4NmI4OTJhYjViOWM0MzFhNjdkZDEzOWViZGY4
NS4uNzJiNWU3MzMzZDhjOTYxMmE3YTM2ZWYwYWY4NTMxY2FkYzNjYmI1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5oCkBAIC01NSw3ICs1NSw3IEBAIGNhaXJvX29wZXJhdG9yX3QgdG9DYWlyb09wZXJhdG9yKENv
bXBvc2l0ZU9wZXJhdG9yIG9wKTsKIGNhaXJvX29wZXJhdG9yX3QgdG9DYWlyb09wZXJhdG9yKEJs
ZW5kTW9kZSBibGVuZE9wKTsKIHZvaWQgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChjYWlyb190
KiBjciwgY2Fpcm9fc3VyZmFjZV90KiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNhaXJvX29wZXJhdG9yX3Qgb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qp
OwotUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlDYWlyb0ltYWdlU3VyZmFjZShjYWly
b19zdXJmYWNlX3QqKTsKK1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlDYWlyb0ltYWdlU3Vy
ZmFjZShjYWlyb19zdXJmYWNlX3QqKTsKIAogdm9pZCBjb3B5UmVjdEZyb21DYWlyb1N1cmZhY2VU
b0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWlyb190KiB0bywgY29uc3QgSW50U2l6
ZSYgb2Zmc2V0LCBjb25zdCBJbnRSZWN0Jik7CiB2b2lkIGNvcHlSZWN0RnJvbU9uZVN1cmZhY2VU
b0Fub3RoZXIoY2Fpcm9fc3VyZmFjZV90KiBmcm9tLCBjYWlyb19zdXJmYWNlX3QqIHRvLCBjb25z
dCBJbnRTaXplJiBvZmZzZXQsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiA9IEludFNp
emUoKSwgY2Fpcm9fb3BlcmF0b3JfdCA9IENBSVJPX09QRVJBVE9SX09WRVIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
M0RDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRENhaXJvLmNwcAppbmRleCBjYzcwNDYxNDdhZTgxZjFmYWRhYTZkODQxNjI0
OTgwYzZmZGZjYmYxLi44YzQxODZkNzFlNTNhMTkwN2U5MmQ3M2EyYjAxNjQ3ZmZkNjZiMWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHQzRENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShtX2ltYWdlLT5k
YXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNv
ZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7
CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRl
eCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFnZTJE
IHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBoYSBo
YWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBwaXhl
bCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBmMDc5MjBmMGQyMzI0NjJjOGZi
NDFhMDMyMmQ4MjJhYzlkNWVkMzA3Li4zY2Y0NTQzZjIwNWVkOTk0OTg4NjEwOTIyY2NkZDc3MjVl
ZTBjMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0yNTksMTggKzI1OSwx
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGlt
YWdlUHRyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNSZWNvcmRpbmco
KSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFn
ZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50
YXRpb24pOworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShp
bWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50
YXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UgPSBpbWFnZVB0cjsKLQogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zYXZlKCk7CiAKICAgICAv
LyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5k
ZXggZDBkZTdhMTdjNjg2NTE0NjVhZTdkMGRhNzIyZWQ1ZWQ0MGJkMDIwZS4uMDQ1M2E2MjU3ZjBk
ZWM3OTRlMzc4ZmVhNTYxYzJiNzE2ZTMwYTJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAg
LTIzNSw3ICsyMzUsNyBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpbwogICAgICAgICByZXR1cm4g
Qml0bWFwSW1hZ2U6OmNyZWF0ZShjb3B5Q2Fpcm9JbWFnZVN1cmZhY2UobV9kYXRhLm1fc3VyZmFj
ZS5nZXQoKSkpOwogCiAgICAgLy8gQml0bWFwSW1hZ2Ugd2lsbCByZWxlYXNlIHRoZSBwYXNzZWQg
aW4gc3VyZmFjZSBvbiBkZXN0cnVjdGlvbgotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRl
KG1fZGF0YS5tX3N1cmZhY2UpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+KG1fZGF0YS5tX3N1cmZhY2UpKTsKIH0KIAogQmFja2luZ1N0b3Jl
Q29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKQpAQCAtMjg2LDcgKzI4Niw3IEBA
IHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0
b3I8aW50PiYgbG9va1VwVGFibGUpCiAgICAgY2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5X3JlY3Rh
bmdsZShtX2RhdGEubV9zdXJmYWNlLmdldCgpLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXpl
LmhlaWdodCgpKTsKIH0KIAotUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNvcHlTdXJmYWNl
VG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBJbnRSZWN0JiBy
ZWN0KQorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0
UmVjdChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIEludFJlY3QmIHJlY3QpCiB7CiAgICAgY2Fp
cm9fc3VyZmFjZV90eXBlX3Qgc3VyZmFjZVR5cGUgPSBjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1
cmZhY2UpOwogCkBAIC0zMDEsNyArMzAxLDcgQEAgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IGNvcHlTdXJmYWNlVG9JbWFnZUFuZEFkanVzdFJlY3QoY2Fpcm9fc3VyZmFjZV90KiBzdXIKIH0K
IAogdGVtcGxhdGUgPE11bHRpcGx5IG11bHRpcGxpZWQ+Ci1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZm
ZXJEYXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJE
YXRhJiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIFJlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gcmVzdWx0ID0gVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVjdC53aWR0aCgpICogcmVjdC5oZWlnaHQoKSAqIDQpOwogCkBAIC0zNzcsMTIgKzM3NywxMiBA
QCBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZQogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwog
fQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0
aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0pIGNv
bnN0CitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxp
ZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3QK
IHsKICAgICByZXR1cm4gZ2V0SW1hZ2VEYXRhPFVubXVsdGlwbGllZD4ocmVjdCwgbV9kYXRhLCBt
X3NpemUpOwogfQogCi1QYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6
Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRl
U3lzdGVtKSBjb25zdAorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0
UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lz
dGVtKSBjb25zdAogewogICAgIHJldHVybiBnZXRJbWFnZURhdGE8UHJlbXVsdGlwbGllZD4ocmVj
dCwgbV9kYXRhLCBtX3NpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCAwMWI3ZDY5MmNkYmQ3YWI0ZDIy
YmJjMTM5OWMxMDMyOGY1N2U1ZTQ3Li4zMmJkMGI1Y2I1NTNmY2RlZGRiYWFkMmY5NjM2MTMwMWY1
ZDQ2ZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9C
aXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtNTgsMTggKzU4LDE3IEBAIGJvb2wgRnJhbWVEYXRhOjpj
bGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAgICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uOwogICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IDA7CiAKLSAgICBpZiAobV9m
cmFtZSkgeworICAgIGlmIChtX2ltYWdlKSB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAg
IHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1fZnJhbWUpOworICAgICAgICBzdWJpbWFnZUNh
Y2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdldCgpKTsKICNlbmRpZgotICAgICAgICBDR0ltYWdl
UmVsZWFzZShtX2ZyYW1lKTsKLSAgICAgICAgbV9mcmFtZSA9IDA7CisgICAgICAgIG1faW1hZ2Ug
PSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKK0JpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mJiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFn
ZShvYnNlcnZlcikKICAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAsIG1f
aW1hZ2VPcmllbnRhdGlvbihPcmlnaW5Ub3BMZWZ0KQpAQCAtODksOCArODgsOCBAQCBCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3Vu
dCh0cnVlKQogewotICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSk7
Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOworICAgIENH
RmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOworICAgIENHRmxvYXQg
aGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7CiAgICAgbV9kZWNvZGVkU2l6
ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKICAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWln
aHQpOwogCkBAIC05OSw3ICs5OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdl
UmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3BlY3Rp
bmdPcmllbnRhdGlvbiA9IG1fc2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9m
cmFtZXNbMF0ubV9mcmFtZSA9IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7CisgICAgbV9mcmFtZXNb
MF0ubV9pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOwogICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEg
PSB0cnVlOwogICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIApAQCAtMTM2
LDcgKzEzNSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAg
aWYgKGZyYW1lQ291bnQoKSA+IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghaGF2ZUZy
YW1lQXRJbmRleCgwKSkgeworICAgIGlmICghaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KDApKSB7CiAg
ICAgICAgIEludFNpemUgc2l6ZSA9IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiAg
ICAgICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xNDcsNyArMTQ2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hl
Y2tGb3JTb2xpZENvbG9yKCkKIAogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBudWxscHRyOwogICAg
IGlmIChtX2ZyYW1lcy5zaXplKCkpCi0gICAgICAgIGltYWdlID0gbV9mcmFtZXNbMF0ubV9mcmFt
ZTsKKyAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2ltYWdlLmdldCgpOwogCiAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTczLDE0ICsxNzIsMTQgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKIAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6
Z2V0Q0dJbWFnZVJlZigpCiB7Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleCgwKTsKKyAgICByZXR1
cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCkuZ2V0KCk7CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1h
Z2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAg
IHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4
KGkpOworICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5n
ZXQoKTsKICAgICAgICAgaWYgKGNnSW1hZ2UgJiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJ
bWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZSkpID09IHNpemUpCiAgICAgICAgICAgICBy
ZXR1cm4gY2dJbWFnZTsKICAgICB9CkBAIC0xOTMsMTEgKzE5MiwxMSBAQCBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCiB7CiAgICAgc2l6ZV90IGNv
dW50ID0gZnJhbWVDb3VudCgpOwogICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBDRk11dGFibGVBcnJheVJlZiBhcnJh
eSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKE5VTEwsIGNvdW50LCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
aWYgKENHSW1hZ2VSZWYgY3VyckZyYW1lID0gZnJhbWVBdEluZGV4KGkpKQorICAgICAgICBpZiAo
Q0dJbWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKSkKICAgICAg
ICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKICAgICB9CiAgICAg
cmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwpAQCAtMjE0LDEyICsyMTMsMTIgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEYKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2
ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgog
ICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSkK
LSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChtX2N1cnJl
bnRGcmFtZSkpOworICAgICAgICBpbWFnZSA9IGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKICAgICBlbHNlIHsKICAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENH
Q29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1
YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKLSAgICAg
ICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUp
OworICAgICAgICBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJz
YW1wbGluZ1NjYWxlKTsKICAgICB9CiAKICAgICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBl
YXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KQEAgLTI0NSwyNCArMjQ0LDI0IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgIG9yaWVudGF0
aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCi0gICAgY3R4
dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxl
ZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0
LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVj
dCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwogCiAgICAgaWYgKGltYWdl
T2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwogfQog
Ci1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRl
eChzaXplX3QgaW5kZXgpCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFwSW1hZ2U6OmNvcHlV
bnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXgg
Pj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmIChpbmRl
eCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlm
IChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQog
ICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsKIAogICAgIGlmICghbV9mcmFtZXNbaW5kZXhd
Lm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIENHSW1hZ2VSZXRhaW4obV9mcmFt
ZXNbaW5kZXhdLm1fZnJhbWUpOworICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1h
Z2U7CiAKLSAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KTsKKyAg
ICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDZjMDNhMmNlZjg0NjA2NTYxZWEwN2ViOTI4ZjFj
ZjI5NWY5ZjVlMzYuLjk5ZjA5ZGI2N2JhNTQyODJkYzRlZDcwNWFlNDE2MzgwMzM3MTkzZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0zMzMsMTUgKzMzMywxNSBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fZGVjb2RlZEltYWdlID0gYWRvcHRDRihkZWNv
ZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7Ci0gICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2Rl
ZEltYWdlLmdldCgpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoMCk7CisgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlOwog
ICAgIH0gZWxzZQogICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwogICAgIGlmICghbV9jZ0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9jZ0ltYWdlKTsKLSAgICBt
X2ltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChtX2NnSW1hZ2UpOworICAgIG1faW1hZ2VX
aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1hZ2UuZ2V0KCkpOworICAgIG1faW1hZ2VIZWln
aHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZS5nZXQoKSk7CiAgICAgaWYgKCFtX2ltYWdl
V2lkdGggfHwgIW1faW1hZ2VIZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzQ5
LDcgKzM0OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRy
YWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgLy8gc28sIHJlLXJlbmRl
ciBpdCBpbnRvIGFuIFJHQiBjb2xvciBzcGFjZS4gVGhlIGltYWdlIHJlLXBhY2tpbmcKICAgICAv
LyBjb2RlIHJlcXVpcmVzIGNvbG9yIGRhdGEsIG5vdCBjb2xvciB0YWJsZSBpbmRpY2VzLCBmb3Ig
dGhlCiAgICAgLy8gaW1hZ2UgZGF0YS4KLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9
IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZSk7CisgICAgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UgPSBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIENH
Q29sb3JTcGFjZU1vZGVsIG1vZGVsID0gQ0dDb2xvclNwYWNlR2V0TW9kZWwoY29sb3JTcGFjZSk7
CiAgICAgaWYgKG1vZGVsID09IGtDR0NvbG9yU3BhY2VNb2RlbEluZGV4ZWQpIHsKICAgICAgICAg
UmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dDsKQEAgLTM2NCwyMiArMzY0LDIy
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2Uo
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRN
b2RlKGJpdG1hcENvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0Nv
bnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dJbnRl
cnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0
LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIG1f
Y2dJbWFnZSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgp
LCBDR1JlY3RNYWtlKDAsIDAsIG1faW1hZ2VXaWR0aCwgbV9pbWFnZUhlaWdodCksIG1fY2dJbWFn
ZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93IGRpc2NhcmQgdGhlIG9yaWdpbmFsIENHIGltYWdl
IGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5IGZyb20gdGhlIGJpdG1hcCBjb250ZXh0LgogICAg
ICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
Yml0bWFwQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFn
ZS5nZXQoKTsKICAgICB9CiAKLSAgICBzaXplX3QgYml0c1BlckNvbXBvbmVudCA9IENHSW1hZ2VH
ZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFnZSk7Ci0gICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9
IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdlKTsKKyAgICBzaXplX3QgYml0c1BlckNv
bXBvbmVudCA9IENHSW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KG1fY2dJbWFnZS5nZXQoKSk7Cisg
ICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwobV9jZ0ltYWdl
LmdldCgpKTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVudCAhPSA4ICYmIGJpdHNQZXJDb21wb25l
bnQgIT0gMTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYml0c1BlclBpeGVsICUg
Yml0c1BlckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNpemVfdCBjb21w
b25lbnRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVyQ29tcG9uZW50OwogCi0gICAg
Q0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhtX2NnSW1hZ2UpOwor
ICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8obV9jZ0ltYWdl
LmdldCgpKTsKICAgICBib29sIGJpZ0VuZGlhblNvdXJjZSA9IGZhbHNlOwogICAgIC8vIFRoZXNl
IGNvdWxkIHRlY2huaWNhbGx5IGJlIGNvbWJpbmVkIGludG8gb25lIGxhcmdlIHN3aXRjaAogICAg
IC8vIHN0YXRlbWVudCwgYnV0IHdlIHByZWZlciBub3QgdG8gc28gdGhhdCB3ZSBmYWlsIGZhc3Qg
aWYgd2UKQEAgLTQyMSw3ICs0MjEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4
dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogCiAgICAg
bV9hbHBoYU9wID0gQWxwaGFEb05vdGhpbmc7CiAgICAgQWxwaGFGb3JtYXQgYWxwaGFGb3JtYXQg
PSBBbHBoYUZvcm1hdE5vbmU7Ci0gICAgc3dpdGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKG1fY2dJ
bWFnZSkpIHsKKyAgICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8obV9jZ0ltYWdlLmdldCgp
KSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdDoKICAgICAgICAg
aWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbV9hbHBoYU9wID0gQWxwaGFEb1Vu
bXVsdGlwbHk7CkBAIC00NjEsMTQgKzQ2MSwxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJ
bWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAog
ICAgIGlmIChtX2ltYWdlU291cmNlRm9ybWF0ID09IERhdGFGb3JtYXROdW1Gb3JtYXRzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKG1fY2dJbWFnZSkpKTsKKyAgICBt
X3BpeGVsRGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0
YVByb3ZpZGVyKG1fY2dJbWFnZS5nZXQoKSkpKTsKICAgICBpZiAoIW1fcGl4ZWxEYXRhKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2ltYWdlUGl4ZWxEYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB2b2lkKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX3BpeGVsRGF0YS5nZXQoKSkpOwog
CiAgICAgdW5zaWduZWQgaW50IHNyY1VucGFja0FsaWdubWVudCA9IDA7Ci0gICAgc2l6ZV90IGJ5
dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1fY2dJbWFnZSk7CisgICAgc2l6ZV90
IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KG1fY2dJbWFnZS5nZXQoKSk7CiAg
ICAgdW5zaWduZWQgcGFkZGluZyA9IGJ5dGVzUGVyUm93IC0gYml0c1BlclBpeGVsIC8gOCAqIG1f
aW1hZ2VXaWR0aDsKICAgICBpZiAocGFkZGluZykgewogICAgICAgICBzcmNVbnBhY2tBbGlnbm1l
bnQgPSBwYWRkaW5nICsgMTsKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQg
aW1hZwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50
cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUlt
YWdlKGNnSW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3TmF0
aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE0NDk2NTQwNDZhZThmMTBhYmFkMTY0MTVl
NjQ2MGFkYmJiYjhlODguLmYzNDJkYTE2NTgxMWIyMTcxNjNjZmYxOWRlNGY1ZjE5OWRkODc2NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE2MiwxOSArMTYyLDE5IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0Rldmlj
ZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsK
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2VQdHIs
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9u
KTsKKyAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9u
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZShpbWFnZVB0cik7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlKGltYWdl
KTsKIAotICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdo
dCgpID8gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkpOworICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBvcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdldCgpKSA6IENHSW1hZ2VHZXRI
ZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOwogICAgIGlmIChjdXJySGVpZ2h0IDw9IHNyY1JlY3QueSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTIxNiwxMyArMjE2LDEzIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBjb25z
dCBGbG9hdFNpCiAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChzdWJpbWFn
ZVJlY3QuaGVpZ2h0KCkgLyB5U2NhbGUpOwogCiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAg
ICAgICBpbWFnZSA9IHN1YmltYWdlQ2FjaGUoKS5nZXRTdWJpbWFnZShpbWFnZS5nZXQoKSwgc3Vi
aW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIHN1YkltYWdlID0gc3ViaW1hZ2VDYWNoZSgpLmdldFN1
YmltYWdlKHN1YkltYWdlLmdldCgpLCBzdWJpbWFnZVJlY3QpOwogI2Vsc2UKLSAgICAgICAgICAg
IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdlLmdldCgp
LCBzdWJpbWFnZVJlY3QpKTsKKyAgICAgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdl
Q3JlYXRlV2l0aEltYWdlSW5SZWN0KHN1YkltYWdlLmdldCgpLCBzdWJpbWFnZVJlY3QpKTsKICNl
bmRpZgogICAgICAgICAgICAgaWYgKGN1cnJIZWlnaHQgPCBzcmNSZWN0Lm1heFkoKSkgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSA9PSBjdXJy
SGVpZ2h0IC0gQ0dSZWN0SW50ZWdyYWwoc3JjUmVjdCkub3JpZ2luLnkpOwotICAgICAgICAgICAg
ICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0
KCkpIC8geVNjYWxlKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoQ0dJbWFnZUdldEhlaWdodChz
dWJJbWFnZS5nZXQoKSkgPT0gY3VyckhlaWdodCAtIENHUmVjdEludGVncmFsKHNyY1JlY3QpLm9y
aWdpbi55KTsKKyAgICAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChDR0lt
YWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdldCgpKSAvIHlTY2FsZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9u
KEZsb2F0UG9pbnQoZGVzdFJlY3QueCgpIC0gc3JjUmVjdC54KCkgLyB4U2NhbGUsIGRlc3RSZWN0
LnkoKSAtIHNyY1JlY3QueSgpIC8geVNjYWxlKSk7CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQ
dHIsIGNvbnN0IEZsb2F0U2kKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7
CiAKICAgICAvLyBEcmF3IHRoZSBpbWFnZS4KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4
dCwgYWRqdXN0ZWREZXN0UmVjdCwgaW1hZ2UuZ2V0KCkpOworICAgIENHQ29udGV4dERyYXdJbWFn
ZShjb250ZXh0LCBhZGp1c3RlZERlc3RSZWN0LCBzdWJJbWFnZS5nZXQoKSk7CiB9CiAKIHN0YXRp
YyB2b2lkIGRyYXdQYXR0ZXJuQ2FsbGJhY2sodm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRl
eHQpCkBAIC0zMTEsOCArMzExLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBmbG9h
dCBhZGp1c3RlZFggPSBwaGFzZS54KCkgLSBkZXN0UmVjdC54KCkgKyB0aWxlUmVjdC54KCkgKiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsgLy8gV2UgdHJhbnNs
YXRlZCB0aGUgY29udGV4dCBzbyB0aGF0IGRlc3RSZWN0LngoKSBpcyB0aGUgb3JpZ2luLCBzbyBz
dWJ0cmFjdCBpdCBvdXQuCiAgICAgZmxvYXQgYWRqdXN0ZWRZID0gZGVzdFJlY3QuaGVpZ2h0KCkg
LSAocGhhc2UueSgpIC0gZGVzdFJlY3QueSgpICsgdGlsZVJlY3QueSgpICogbmFycm93UHJlY2lz
aW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmQoKSkgKyBzY2FsZWRUaWxlSGVpZ2h0KTsKIAot
ICAgIENHSW1hZ2VSZWYgdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UpOworICAgIGF1
dG8gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBm
bG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTMyNiwxMyAr
MzI2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIC8vIENvcHlpbmcgYSBz
dWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3RvcHMgdGhlIGRlY29k
aW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhhcHBlbgogICAgICAg
ICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9yZGVyLWltYWdlLCB3
aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVjb2RlZC4KICAgICAg
ICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBzdWJJbWFnZSA9IGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRpbGVSZWN0KSk7Cisg
ICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRp
bGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBuZWVkIHRv
IHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBwYXJ0aWFsbHkgbG9h
ZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSBs
ZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAgIGZsb2F0IHNjYWxl
ZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBh
dHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJ
bWFnZSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UuZ2V0KCkpOwog
ICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhl
aWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0KCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0byBpbnRlZ3JhbCBzaXpl
cy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJlcGVhdDogcm91bmQpLAog
ICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0LCBhbmQgc3RldGNoIHRo
ZSBsYXN0IGltYWdlIHRvIGZpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggODQ2Mzk2YzE5MDI3YzJjMmJlMjU1
Yzc2NGFjYWU3NjJmZTdlOTg3YS4uMjE4MjE0NmY1N2U1NzA1NTA2ODJjNmVkNTgxMDM1ODFhZGVi
NDE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgUmVmUHRyPEltYWdl
PiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0cjxDR0ltYWdl
UmVmPgogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoaW1hZ2UuZ2V0KCkpOworICAgIHJldHVybiBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1
ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaGF2
aW9yIHNjYWxlQmVoYXZpb3IpIGNvbnN0CkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBzcmMKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IElt
YWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwg
Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAorUmVmUHRyPFVpbnQ4Q2xh
bXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IElu
dFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsK
ICAgICBpZiAoY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCiAgICAgICAgIGZsdXNo
Q29udGV4dCgpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJy
YXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjCiAg
ICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0
KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSwgdHJ1ZSwgMSk7CiB9CiAKLVBhc3NSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNv
bnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29u
c3QKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxp
ZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGlu
YXRlU3lzdGVtKSBjb25zdAogewogICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCmluZGV4IGQ0YTAxMmI2ZjU3
YmY1MzkzMDY0Nzc3YjZjMTA5MzY2YjI0YzQ0NWMuLjUwMTVkZDE1YWJmYzgyNWRjZWIwMzIwZjEy
MDI5Y2JhNTEyMTgyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCkBAIC0zNDAsNyArMzQwLDcgQEAgc2l6ZV90IElt
YWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gQ0dJ
bWFnZVNvdXJjZUdldENvdW50KG1fZGVjb2RlcikgOiAwOwogfQogCi1DR0ltYWdlUmVmIEltYWdl
U291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwpCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VTb3VyY2U6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsKQogewogICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zNjYsMTggKzM2NiwxNSBAQCBDR0ltYWdlUmVmIEltYWdlU291cmNlOjpj
cmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbQog
ICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkgPSBDRlNUUigicHVibGljLnhiaXRt
YXAtaW1hZ2UiKTsKIAogICAgIGlmICghaW1hZ2VVVEkpCi0gICAgICAgIHJldHVybiBpbWFnZS5s
ZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGlmICghQ0ZFcXVhbChpbWFn
ZVVUSSwgeGJtVVRJKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKKyAgICAgICAg
cmV0dXJuIGltYWdlOwogICAgIAogICAgIC8vIElmIGl0IGlzIGFuIHhibSBpbWFnZSwgbWFzayBv
dXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIgdGhlbSB0cmFuc3BhcmVudC4KICAgICBj
b25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7MjU1LCAyNTUsICAyNTUsIDI1NSwgMjU1
LCAyNTV9OwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXNrZWRJbWFnZSA9IGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZVdpdGhNYXNraW5nQ29sb3JzKGltYWdlLmdldCgpLCBtYXNraW5nQ29sb3Jz
KSk7Ci0gICAgaWYgKCFtYXNrZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYo
KTsKLQotICAgIHJldHVybiBtYXNrZWRJbWFnZS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIG1hc2tl
ZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6ZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKaW5kZXggMDI0Y2JmZTAwYjUyMjMzOTMzNTkyMGY5Zjg1MzRjODM2ZGFjY2Y4
OC4uNDkyN2VhYmY4ZWQxMmE2YzIxZWFiMzFiZmU2MmY1MmM2YjI0ZWIwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDkxLDExICs0OTEsMTEgQEAgc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdUaWxlZFNjYWxl
ZEltYWdlJiBpdGVtKQogfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi1EcmF3TmF0aXZl
SW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2UpCiAjaWYgVVNFKENHKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFu
IGltYWdlIGZvciBDYWlyby4KLSAgICAsIG1faW1hZ2VQdHIoaW1hZ2VQdHIpCisgICAgLCBtX2lt
YWdlKGltYWdlKQogI2VuZGlmCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBt
X2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQpAQCAtNTA3LDcgKzUwNyw3IEBAIERyYXdOYXRpdmVJbWFn
ZTo6RHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxv
YXRTaXplJiBpCiAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQogewogI2lmICFVU0Uo
Q0cpCi0gICAgVU5VU0VEX1BBUkFNKGltYWdlUHRyKTsKKyAgICBVTlVTRURfUEFSQU0oaW1hZ2Up
OwogICAgIFVOVVNFRF9QQVJBTShvcCk7CiAgICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CiAj
ZW5kaWYKQEAgLTUxNiw3ICs1MTYsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaQogdm9pZCBE
cmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsK
ICNpZiBVU0UoQ0cpCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZVB0ci5nZXQo
KSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1v
ZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2Us
IG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBtX3NyY1JlY3QsIG1fb3AsIG1fYmxlbmRNb2Rl
LCBtX29yaWVudGF0aW9uKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA1YTg0OTY0YzU3OWIzMmZk
YzBlYzZlZjE0NWY2NDI2MGYxMzVhZmZmLi40NzBmMjgyOTEwMDg1NGMzYzA1ZjZkZWZlZDIxNWI1
ZmM2NDdkYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTYzOSwyMyAr
NjM5LDIzIEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiBjbGFzcyBEcmF3
TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRyLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKKyAgICBzdGF0aWMgUmVmPERy
YXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKTsKICAgICB9CiAKICAgICBG
bG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRS
ZWN0IGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2
YXRlOgotICAgIERyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0
U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bik7CisgICAgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAogI2lmIFVT
RShDRykKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9pbWFnZVB0cjsKKyAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gbV9pbWFnZTsKICNlbmRpZgogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6
ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAppbmRleCA1ZTUyZWM5MTkyM2Q0NTlmMDgyMjE5MWY2NjlkMGMwMGVl
ZGYyNThhLi4wYmYxNGJlZjc5YmQzYWIyZmI3M2Y2Yzc1MDgwNzI2ZGE0NDFlMzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMTksOSArMTE5LDkgQEAg
dm9pZCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdAogfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCi12
b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRy
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewotICAgIERyYXdpbmdJdGVtJiBuZXdJdGVt
ID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdlOjpjcmVh
dGUoaW1hZ2VQdHIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUs
IG9yaWVudGF0aW9uKSkpOworICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJh
d2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSkpOwog
ICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGE1ZDJjNzFhMjVlYmRiZmU0ZjNiYTdmZGFjZDFm
MmRlNTg4NmRjNTAuLmViOTlhM2RkYTAwZDMxNzBjZmM4ZjA4NmE0MDI5Y2JiY2UxY2QzYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtODYsNyArODYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpOwogICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZS
dWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogI2lmIFVTRShDRykgfHwgVVNFKENB
SVJPKQotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uKTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbik7CiAjZW5kaWYKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRv
ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFs
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNERWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKaW5kZXggYmE0MTU5N2FhMTEwMWRiNjI5MDIz
ZDI3M2IyMDBlNzgxZDMzYWFjOS4uNTljYzJjOWJlOGIzZmZlMTExODZhNjg1ZDJlOGNmNTk0YzFk
MzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNERWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8
fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0
SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1f
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIC8vIDEuIEZvciB0
ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0LCBhc3N1bWUgbm8gUHJlbXVsdGlw
bHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhGRiBmb3Ig
ZWFjaCBwaXhlbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9JY29uRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9J
Y29uRWZsLmNwcAppbmRleCA5YzkyYzA4NTNjMjYxYzc2MGE3YzA4MWY2Yzg3ZTk5MGIxYjg4ZGFi
Li4wN2JlYmU2OTQ5YzFjODRhMWU3ODY0MjFjMGU5ZDdhZjc3N2U3NmUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDEwICs1MSwxMCBAQCBJ
Y29uOjp+SWNvbigpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgSWNvbjo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZUdTdHJlYW1lckNhaXJvLmNwcAppbmRleCBlZTI3Mjc3ZmYwYjdlOTAzM2Y0YjkzMzYwMjhhY2Y0
MjE4YjIwYTVmLi5jNTVjZmRmOTdiN2Q0M2M1ZDM0ZjJmOWM1NTYzNzZmNWE5NmE2Zjg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VH
U3RyZWFtZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCkBAIC02Miw3ICs2Miw3IEBAIEltYWdl
R1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcihHc3RTYW1wbGUqIHNhbXBsZSkKIAogICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNl
X2NyZWF0ZV9mb3JfZGF0YShidWZmZXJEYXRhLCBjYWlyb0Zvcm1hdCwgd2lkdGgsIGhlaWdodCwg
c3RyaWRlKSk7CiAgICAgQVNTRVJUKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UuZ2V0KCkp
ID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsKLSAgICBtX2ltYWdlID0gQml0bWFwSW1hZ2U6OmNy
ZWF0ZShzdXJmYWNlLnJlbGVhc2UoKSk7CisgICAgbV9pbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVh
dGUoV1RGTW92ZShzdXJmYWNlKSk7CiAKICAgICBpZiAoR3N0VmlkZW9Dcm9wTWV0YSogY3JvcE1l
dGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19jcm9wX21ldGEoYnVmZmVyKSkKICAgICAgICAgc2V0
Q3JvcFJlY3QoRmxvYXRSZWN0KGNyb3BNZXRhLT54LCBjcm9wTWV0YS0+eSwgY3JvcE1ldGEtPndp
ZHRoLCBjcm9wTWV0YS0+aGVpZ2h0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvSWNvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvSWNvbkd0ay5jcHAKaW5kZXggNTk0NWUxZjhjNGI0NzQ0OGYzNDg1ZmM2NGJi
NTc2NTdhZjRjMzhmZS4uODgwYzRjOTc5NGE1ZWQ2ZDNhYzJmOGE2NzQ3Y2MyMTI2OTJkMjE5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNw
cApAQCAtMzYsNyArMzYsNyBAQAogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05MCw3ICs5MCw3IEBA
IHN0YXRpYyBTdHJpbmcgbG9va3VwSWNvbk5hbWUoU3RyaW5nIE1JTUVUeXBlKQogfQogCiAvLyBG
SVhNRTogTW92ZSB0aGUgY29kZSB0byBDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFz
c1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcykKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIy
NDliODFkOWQ3NmEuLjM2YjI0ZjVjZmYwYTZiNjFlNTQ1NzQ2NzMyYjYyNmNkMzk4N2NiNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUljb246Okljb24o
Q0dJbWFnZVJlZiBpbWFnZSkKK0ljb246Okljb24oY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
KQogICAgIDogbV9jZ0ltYWdlKGltYWdlKQogewogfQpAQCAtNDIsMTcgKzQyLDE3IEBAIEljb246
On5JY29uKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qZmlsZW5hbWVzKi8pCitSZWZQdHI8SWNvbj4gSWNv
bjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyov
KQogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNy
ZWF0ZUljb25Gb3JJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZVJlZikKK1JlZlB0cjxJY29uPiBJ
Y29uOjpjcmVhdGVJY29uRm9ySW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFn
ZSkKIHsKLSAgICBpZiAoIWltYWdlUmVmKQorICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGltYWdlUmVmKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJY29uKGltYWdlKSk7CiB9CiAKIHZvaWQgSWNvbjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQppbmRl
eCA0Y2ZjNTJmZGMxMzU3ZGVmMTY5M2RhMTc5YWI4NDJlNmM0NThmOTk0Li5lNDYwNWRlMjAwM2Jk
ZjA2NjM3MzUwMzcwMGFiMDEwMmQ2YzM1NjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAi
SW50UmVjdC5oIgogI2ltcG9ydCAiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjaW1w
b3J0ICJVVElVdGlsaXRpZXMuaCIKLSNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW1wb3J0
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ3LDcgQEAgSWNvbjo6fkljb24oKQogfQogCiAvLyBG
SVhNRTogTW92ZSB0aGUgY29kZSB0byBDaHJvbWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFz
c1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVuYW1lcykKK1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggZmYwNzEzMWE2MWZjZWQwNDU4NmIz
NzJkOWJhMjA3OWE5ODczYzM4Yi4uZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGViYzBmZmNhOWZiOWMz
MDM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0lt
YWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFn
ZU1hYy5tbQpAQCAtOTUsNyArOTUsNyBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6OmdldFRJRkZS
ZXByZXNlbnRhdGlvbigpCiAKICAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBDR0ltYWdlUmVmIGNnSW1h
Z2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGNnSW1hZ2UpCiAg
ICAgICAgICAgICBpbWFnZXMuYXBwZW5kKGNnSW1hZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKaW5kZXggOWFhNjdhNWUwNmE5NDFm
ZmJhNGQ1ODQyMDc3MmMyN2FiOGVjNjVlYS4uZTBkODE1YmQwMjdkYWI1NWNmNDRlYzE0ODhlMzE4
Y2E4ZmYxNjM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBDb29yZGluYXRlZFN1cmZhY2U6OnNldEZh
Y3RvcnkoQ29vcmRpbmF0ZWRTdXJmYWNlOjpGYWN0b3J5IGZhY3RvcnkpCiAgICAgc19mYWN0b3J5
ID0gZmFjdG9yeTsKIH0KIAotUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IENvb3JkaW5h
dGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQorUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCiB7CiAgICAgQVNTRVJUKHNfZmFjdG9yeSk7CiAg
ICAgcmV0dXJuIHNfZmFjdG9yeShzaXplLCBmbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmgKaW5kZXggZjVlNzNlNTg1NDkzZjk1YWY0NzRiZDQzNThj
NjQyODNjNTY4MzA1OC4uZjlkMzI2MjMzYWJkMTdjODA4MmE3OTAzZTk4NWZkNDNjMmQwMDQwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtMjMs
NyArMjMsNyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIklu
dFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDQsOSArNDQsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRvU3VyZmFjZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0JikgPSAwOwogICAgIH07CiAK
LSAgICB0eXBlZGVmIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBGYWN0b3J5KGNvbnN0
IEludFNpemUmLCBGbGFncyk7CisgICAgdHlwZWRlZiBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNl
PiBGYWN0b3J5KGNvbnN0IEludFNpemUmLCBGbGFncyk7CiAgICAgc3RhdGljIHZvaWQgc2V0RmFj
dG9yeShGYWN0b3J5KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgRmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8Q29vcmRp
bmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzKTsKIAogICAgIHZpcnR1
YWwgfkNvb3JkaW5hdGVkU3VyZmFjZSgpIHsgfQogCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50UmVjdCYsIENsaWVudCop
ID0gMDsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRv
VGV4dHVyZShQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+LCBjb25zdCBJbnRSZWN0JiB0YXJnZXQs
IGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29w
eVRvVGV4dHVyZShSZWZQdHI8Qml0bWFwVGV4dHVyZT4sIGNvbnN0IEludFJlY3QmIHRhcmdldCwg
Y29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCkgPSAwOwogI2VuZGlmCiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcApp
bmRleCBhNzgwNzBkOWFhYWY3ZjRlMmEzMTg5ZWUxNDhhNmE1Yzc5Mzg4YzA1Li5hMzk0NmNhZjRm
ODNlMDBjZmQxYjk5YTU4ZjJjOTkyMjMxNzliNGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCkBAIC00Myw3ICs0Myw3IEBAIEljb246
On5JY29uKCkKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhlIGNvZGUgdG8gQ2hyb21lQ2xpZW50Ojpp
Y29uRm9yRmlsZXMoKS4KLVBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCitSZWZQdHI8SWNvbj4gSWNvbjo6Y3Jl
YXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiB7CiAgICAg
aWYgKGZpbGVuYW1lcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDgz
NWVjZjNmNGZlZWViOGEwZGZhOGQzNjk3MzEyOGYzYjgwN2I5MjYuLjlhYzU1OWM4MTU3MGNkYmQz
OTIzMjM1OWMzMGIxMzBlZDE2NzVlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6
Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKK1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6
OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiB7CiAgICAgRElCU0VDVElPTiBkaWJTZWN0aW9uOwog
ICAgIGlmICghR2V0T2JqZWN0KGhCaXRtYXAsIHNpemVvZihESUJTRUNUSU9OKSwgJmRpYlNlY3Rp
b24pKQpAQCAtNTQsOSArNTQsOSBAQCBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKICAgICAgICAgZGliU2VjdGlvbi5kc0JtLmJtV2lk
dGhCeXRlcywgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxp
dHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKIAogICAgIC8vIFRoZSBC
aXRtYXBJbWFnZSB0YWtlcyBvd25lcnNoaXAgb2YgdGhpcy4KLSAgICBDR0ltYWdlUmVmIGNnSW1h
Z2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBCaXRtYXBJbWFnZShjZ0ltYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCaXRt
YXBJbWFnZShXVEZNb3ZlKGNnSW1hZ2UpKSk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCkBAIC05MCw3ICs5
MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFw
aGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZy
YW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0g
ICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGlt
YWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3Jj
U2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJh
bWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcAppbmRleCAyOWEyMDIzZGI2M2E5MTQzNGMzOTQ4ZWFhNTUyM2JiNjFmZTgxMDc1Li5k
YWI5NmEzOGM1NDgxMDJhYWUyN2FhMDE5ZWViOTllNWE4YzQyMjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxCaXRt
YXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCitSZWZQdHI8Qml0
bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogewogICAgIERJ
QlNFQ1RJT04gZGliU2VjdGlvbjsKICAgICBpZiAoIUdldE9iamVjdChoQml0bWFwLCBzaXplb2Yo
RElCU0VDVElPTiksICZkaWJTZWN0aW9uKSkKQEAgLTUyLDcgKzUyLDcgQEAgUGFzc1JlZlB0cjxC
aXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXApCiAKICAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRvcHRSZWYoY2Fpcm9fd2luMzJfc3Vy
ZmFjZV9jcmVhdGVfd2l0aF9kaWIoQ0FJUk9fRk9STUFUX0FSR0IzMiwgZGliU2VjdGlvbi5kc0Jt
LmJtV2lkdGgsIGRpYlNlY3Rpb24uZHNCbS5ibUhlaWdodCkpOwogCi0gICAgcmV0dXJuIEJpdG1h
cEltYWdlOjpjcmVhdGUoc3VyZmFjZS5yZWxlYXNlKCkpOworICAgIHJldHVybiBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpnZXRI
QklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQpAQCAtOTMsNyAr
OTMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBm
cmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewot
ICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KGkp
OworICAgICAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKICAgICAgICAg
aWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKaW5kZXggZmM4
N2Y4MzQwMzMxOTU1NzNmNTY3ZmMwNThjN2M3M2Q4NThhMTk3YS4uYjM1NDdkOTRlODA4Zjg3NGFl
ZDlkYTBmMjkxYmVjZTIwYTY0NjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKQEAgLTk4LDcgKzk4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50
ZXIgdG8gdGhlIHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCiAgICAgICAgIC8vIChBY3R1
YWwgdXNlOiBUaGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBCaXRtYXBJbWFnZSBhbmQgZnJl
ZWQgaW4KICAgICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4KLSAgICAgICAgUGFzc05hdGl2
ZUltYWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKKyAgICAgICAgTmF0aXZlSW1hZ2VQ
dHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgaGFzQWxwaGEoKSBj
b25zdDsKICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBjb25zdCB7
IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJD
YWlyby5jcHAKaW5kZXggM2ZlNzA0MDIzNDE5ZDk3NTNiMTM5OWQ5ZjZjMDBiNjczOTQ1MTI5Ni4u
N2I0MTI5NWY4NTczNThmYmJmMzVjMWIwNTI1ZThkNmNjMzUyMGY1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJv
L0ltYWdlRGVjb2RlckNhaXJvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdl
KCkgY29uc3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UoKSBj
b25zdAogewogICAgIHJldHVybiBhZG9wdFJlZihjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9m
b3JfZGF0YSgKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3Rf
Y2FzdDxQaXhlbERhdGEqPihtX2J5dGVzKSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCBhZDI1OTg5NjgzMGE0OWEzOTgzMDhjODQyMTk2
ZjJjOTc2MThiMDE4Li4zNmNkNjUxNmU4MGYxNzQ4YmZlYWI3N2E5MzAyNzFjMTIxZGU4MDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAg
LTEyOCw3ICsxMjgsNiBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKElt
YWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKICAgICBpZiAoIWhibXAgfHwg
IWRyYXdDb250ZXh0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIENHSW1hZ2VSZWYgc3JjSW1h
Z2UgPSBpbWctPmdldENHSW1hZ2VSZWYoKTsKICAgICBDR1JlY3QgcmVjdDsKICAgICByZWN0LnNp
emUgPSBJbnRTaXplKGltZy0+c2l6ZSgpKTsKICAgICByZWN0Lm9yaWdpbi54ID0gMDsKQEAgLTEz
Nyw3ICsxMzYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdl
KiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKICAgICBDR0NvbnRleHRTY2FsZUNU
TShkcmF3Q29udGV4dCwgMSwgLTEpOwogICAgIENHQ29udGV4dFNldEZpbGxDb2xvcihkcmF3Q29u
dGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4dEZpbGxSZWN0KGRyYXdDb250ZXh0LCByZWN0KTsK
LSAgICBpZiAoc3JjSW1hZ2UpIHsKKyAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+Z2V0Q0dJ
bWFnZVJlZigpKSB7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwg
a0NHQmxlbmRNb2RlTm9ybWFsKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250
ZXh0LCByZWN0LCBzcmNJbWFnZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKaW5kZXggNDJlYTVlZTUzNDIxYTc3ZDA3ZTM0ZTZmODBiNDMzYzYyMDczN2I4
Yy4uYzE1ZmFmYmQ4ZWExYjYxMzI0ODY1NjU0ZDk0OTQyZGZlZDQ2NTM1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xODAsMTcgKzE4MCwxNyBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRTaXplIGNvbnRhaQogfQogCiAjaWYgVVNFKENBSVJPKQotLy8gUGFzc2VzIG93bmVy
c2hpcCBvZiB0aGUgbmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gUGFzc05hdGl2ZUltYWdl
UHRyIG5lZWRzCisvLyBQYXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhl
IGNhbGxlciBzbyBOYXRpdmVJbWFnZVB0ciBuZWVkcwogLy8gdG8gYmUgYSBzbWFydCBwb2ludGVy
IHR5cGUuCi1QYXNzTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkKK05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIENhaXJvIGRvZXMgbm90IHVzZSB0aGUgYWNjZWxlcmF0
ZWQgZHJhd2luZyBmbGFnLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVu
YWNjZWxlcmF0ZWQgYnVmZmVyLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlm
ICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwg
cmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCmluZGV4IDg3MGY2Yzg1YzVlNjg0ZTE3N2MzMGQxNmMyMTY2YTM0MGRjZDVhN2Iu
LjQ5MWRkZmIzYzIxMzllZjg4MjEwMWQxYWY0NWI1YWVmMTEwYzRmZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgUGFz
c05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7Cisg
ICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsK
ICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggNGUxNjFlM2YwZDQ0YTZhYTZlYTZjMDNm
NWVkOWFiYzE5ZWJhZWExZC4uN2UxNDNkZWQyZDY2OWFiM2FjMDljNDk2YjRlNGJlZTdkYzg3ZjIy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAg
ICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJT
aXplLCBtX3pvb20sIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBj
b21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRy
IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCitOYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKQogewogICAgIHJldHVybiBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaAppbmRleCAzNTk3NTQyODlmYzMwNDIxOGNkYjhiZjEyMDNiODczYzI5ZmQ1MmQyLi5k
MjI0ZmM0NjEyZmQ5NWExYWVhNzdhZmI0NDc5NzY5MjM1MjdhY2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNjMsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3Mg
Y29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU1ZHSW1h
Z2VGb3JDb250YWluZXIoU1ZHSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5l
clNpemUsIGZsb2F0IHpvb20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YkNhY2hlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBkNzFl
NjY0M2IzYzIxMmIyZGI2NDRiMzE1Mjk0YjFjM2JjNzZmY2Y4Li5iNjU5ZDZkYmY5YWQ2OTk5YzNh
Yzk2MmRlOTUxNTc4MDk3ZTFmM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KQEAg
LTE3Miw3ICsxNzIsNyBAQCArIChib29sKWFkZEltYWdlVG9DYWNoZTooQ0dJbWFnZVJlZilpbWFn
ZSBmb3JVUkw6KE5TVVJMICopdXJsIGZvckZyYW1lOihXZWJGcmFtZQogICAgIGlmIChmcmFtZSkK
ICAgICAgICAgdG9wT3JpZ2luID0gY29yZShmcmFtZSktPmRvY3VtZW50KCktPnRvcE9yaWdpbigp
OwogI2VuZGlmCi0gICAgcmV0dXJuIFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5h
ZGRJbWFnZVRvQ2FjaGUoaW1hZ2UsIHVybCwgdG9wT3JpZ2luID8gdG9wT3JpZ2luLT5kb21haW5G
b3JDYWNoZVBhcnRpdGlvbigpIDogZW1wdHlTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5hZGRJbWFnZVRvQ2FjaGUoUmV0YWluUHRyPENHSW1h
Z2VSZWY+KGltYWdlKSwgdXJsLCB0b3BPcmlnaW4gPyB0b3BPcmlnaW4tPmRvbWFpbkZvckNhY2hl
UGFydGl0aW9uKCkgOiBlbXB0eVN0cmluZygpKTsKIH0KIAogKyAodm9pZClyZW1vdmVJbWFnZUZy
b21DYWNoZUZvclVSTDooTlNVUkwgKil1cmwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmgKaW5kZXggMjZmMDg3NGU1ZjVhNWM4OTkzNGUwYjgxMmRiNDhiN2I3NTlmNTQxNi4uNjlj
YjAxM2EwNDZmMTNlNTM5ZWFiZDQ3NmI1N2Y1YWRlM2EwNzlhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMjky
LDcgKzI5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBoYW5kbGVNb3Vz
ZUV2ZW50KE1vdXNlRXZlbnQqKTsKIAogICAgICAgICB2b2lkIHBhaW50SW50b1RyYW5zZm9ybWVk
Q29udGV4dChIREMpOwotICAgICAgICBQYXNzUmVmUHRyPEltYWdlPiBzbmFwc2hvdCgpOworICAg
ICAgICBSZWZQdHI8SW1hZ2U+IHNuYXBzaG90KCk7CiAKICAgICAgICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmll
d1dpbi5jcHAKaW5kZXggMjVlYWY1NTA1ZTY3M2QzMzUwOTE2NTEyMWYzYjM0MmRhOTA3OGY1Mi4u
MmZjYTlmM2M5NWQ3M2RiYTNhYzMyNjI1OWVhODZkZGNkZGEyMDcwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBAIC05MjAsNyArOTIwLDcgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpwbGF0Zm9ybURlc3Ryb3koKQogICAgIHNldFBsYXRmb3JtUGx1Z2luV2lk
Z2V0KDApOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBQbHVnaW5WaWV3OjpzbmFwc2hvdCgpCitS
ZWZQdHI8SW1hZ2U+IFBsdWdpblZpZXc6OnNuYXBzaG90KCkKIHsKICNpZiAhVVNFKFdJTkdESSkK
ICAgICBhdXRvIGhkYyA9IGFkb3B0R0RJT2JqZWN0KDo6Q3JlYXRlQ29tcGF0aWJsZURDKDApKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dl
YkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCmluZGV4IGEwMzM4NDI3ZDY1YjJl
YmUzNzBlM2Y2OGU1NGNhZjQ2MTc2MmY1NTMuLmNkODRmNzU1YjZiYjdkM2E1NDY2OTczMzYxMjQ3
MmM5ZDhlZmY2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAt
OTksOCArOTksNyBAQCBSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IEludAogICAgIGlmICghc3VyZmFjZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQoc3VyZmFjZSk7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1cmZh
Y2UucmVsZWFzZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRlZFN1
cmZhY2Uoc2l6ZSwgZmxhZ3MsIFdURk1vdmUoc3VyZmFjZSkpKTsKIH0KICNlbmRpZgogCkBAIC0x
MTgsMjUgKzExNywyNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChjbwogICAgIHJldHVybiBncmFw
aGljc0NvbnRleHQ7CiB9CiAKLVJlZjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFj
ZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCitSZWY8
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBiaXRtYXApKTsKIH0KIAotV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlOjpXZWJDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCkKK1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
KGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkKICAgICA6IENvb3JkaW5hdGVkU3VyZmFjZShz
aXplLCBmbGFncykKICAgICAsIG1fYml0bWFwKGJpdG1hcCkKIHsKIH0KIAogI2lmIFVTRShHUkFQ
SElDU19TVVJGQUNFKQotV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGluYXRlZFN1cmZh
Y2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFn
cyBmbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCitX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBSZWZQdHI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQogICAgIDogQ29vcmRpbmF0ZWRTdXJm
YWNlKHNpemUsIGZsYWdzKQogICAgICwgbV9ncmFwaGljc1N1cmZhY2Uoc3VyZmFjZSkKIHsKIH0K
IAotUmVmPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVh
dGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywg
UGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCitSZWY8V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBSZWZQdHI8R3JhcGhpY3NTdXJmYWNl
PiBzdXJmYWNlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZShzaXplLCBmbGFncywgc3VyZmFjZSkpOwogfQpAQCAtMTU1LDcgKzE1NCw3IEBAIFJlZlB0
cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNv
bnN0IEhhbmRsZSYgaGFuZGxlCiAgICAgICAgICAgICBzdXJmYWNlRmxhZ3MgfD0gR3JhcGhpY3NT
dXJmYWNlOjpTdXBwb3J0c0FscGhhOwogICAgICAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBz
dXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgc3VyZmFjZUZs
YWdzLCBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbik7CiAgICAgICAgIGlmIChzdXJmYWNl
KQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Uo
aGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIHN1cmZhY2UucmVsZWFzZSgpKSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShoYW5kbGUu
bV9zaXplLCBoYW5kbGUubV9mbGFncywgV1RGTW92ZShzdXJmYWNlKSkpOwogICAgIH0KICNlbmRp
ZgogCkBAIC0xNjMsNyArMTYyLDcgQEAgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUKICAgICBpZiAo
IWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gY3JlYXRlKGhh
bmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBiaXRtYXAucmVsZWFzZSgpKTsKKyAgICByZXR1
cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBXVEZNb3ZlKGJpdG1hcCkp
OwogfQogCiBib29sIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYg
aGFuZGxlKQpAQCAtMTkxLDcgKzE5MCw3IEBAIHZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpw
YWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlZFN1cmZhCiB9CiAK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi12b2lkIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y29w
eVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHBhc3NUZXh0dXJl
LCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpCit2
b2lkIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y29weVRvVGV4dHVyZShSZWZQdHI8V2ViQ29yZTo6
Qml0bWFwVGV4dHVyZT4gcGFzc1RleHR1cmUsIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3Qg
SW50UG9pbnQmIHNvdXJjZU9mZnNldCkKIHsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4
dHVyZShwYXNzVGV4dHVyZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKaW5k
ZXggN2U2MTFjOGQ2NjQ3YjE3ZDk5NWI4ZjBiM2U2ZTk1OGY3NjQzYTAyNS4uOTM4ZjZhNWIxNGVk
OGU2YTU5Y2Y4YmRlMGU0MjZjNDBhYTM1NGU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLmgKQEAgLTc0LDIyICs3NCwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludFRvU3Vy
ZmFjZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNl
OjpDbGllbnQqKSBvdmVycmlkZTsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICB2b2lk
IGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNl
T2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvcHlUb1RleHR1cmUoUmVmUHRyPFdlYkNvcmU6
OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZh
dGU6Ci0gICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKKyAgICBXZWJDb29yZGluYXRlZFN1
cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPik7CiAKICAgICAvLyBDcmVhdGUgYSBXZWJDb29yZGluYXRlZFN1cmZhY2UgcmVmZXJlbmNp
bmcgYW4gZXhpc3RpbmcgU2hhcmVhYmxlQml0bWFwLgotICAgIHN0YXRpYyBSZWY8V2ViQ29vcmRp
bmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOworICAgIHN0YXRpYyBSZWY8V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPik7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlPik7CisgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBGbGFncywgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwogICAgIC8vIENy
ZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgYmFja2VkIGJ5IGEgZ3JhcGhpY3Mgc3VyZmFjZS4KICAg
ICBzdGF0aWMgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlV2l0aFN1cmZhY2Uo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKICAgICAvLyBDcmVhdGUgYSBXZWJDb29y
ZGluYXRlZFN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgR3JhcGhpY3NTdXJmYWNlLgot
ICAgIHN0YXRpYyBSZWY8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4p
OworICAgIHN0YXRpYyBSZWY8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIEZsYWdzLCBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7
CiAKICAgICBib29sIGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiAh
IW1fZ3JhcGhpY3NTdXJmYWNlOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5jcHAKaW5kZXggMzNjYjVkZWNmNjUxYzY1ODY2MzM5OGQwMWYxNjhlMzEyNmZj
ZjllZS4uNGVlY2JjYzk5Nzc0Mjk0ZDM0OWRkMTljZGIzMDI4YjA0OWMxYmI1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6Y2xlYXIoKQogICAgIG1fZmxhZ3MgPSBGbGFnOjpO
b0ZsYWdzOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCitSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBG
bGFncyBmbGFncykKIHsKICAgICBzaXplX3QgbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6
ZSk7CiAgICAgCkBAIC03NSw3ICs3NSw3IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIGRhdGEpKTsK
IH0KIAotUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzKQorUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCiB7CiAgICAgc2l6ZV90IG51bUJ5dGVzID0gbnVtQnl0ZXNG
b3JTaXplKHNpemUpOwogCkBAIC04Niw3ICs4Niw3IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShjb25zdCBJbnRTaXplJiBzaXpl
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHNo
YXJlZE1lbW9yeSkpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIFBhc3NSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQogewogICAgIEFTU0VSVChzaGFyZWRN
ZW1vcnkpOwogCkBAIC05Niw3ICs5Niw3IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRtYXAoc2l6ZSwgZmxhZ3MsIHNoYXJlZE1l
bW9yeSkpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBw
cm90ZWN0aW9uKQorUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiBwcm90ZWN0
aW9uKQogewogICAgIC8vIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeS4KICAgICBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUubV9oYW5k
bGUsIHByb3RlY3Rpb24pOwpAQCAtMTI0LDcgKzEyNCw3IEBAIFNoYXJlYWJsZUJpdG1hcDo6U2hh
cmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCB2b2lkKiBkYXRh
KQogewogfQogCi1TaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJpdG1hcChjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUs
IEZsYWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCiAgICAgOiBt
X3NpemUoc2l6ZSkKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiAgICAgLCBtX3NoYXJlZE1lbW9yeShz
aGFyZWRNZW1vcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXgg
NzgzMzg5ZWM1MGY4MzE5ZDE3OGEwNDM0MTI2NTdlNDc0NTJmM2VmZS4uNDUwOTNhNDU5YjBkNjY3
ZjNhMjRiOGQ3ZTFmY2Y1OGMyYjgyZTlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IApAQCAtNzYsMTYgKzc1LDE2IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEg
c2hhcmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9jZWQgbWVtb3J5LgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBGbGFncyk7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxl
IGJpdG1hcCB3aG9zZSBiYWNraW5nIG1lbW9yeSBjYW4gYmUgc2hhcmVkIHdpdGggYW5vdGhlciBw
cm9jZXNzLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hh
cmVhYmxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CisgICAgc3RhdGljIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgRmxhZ3MpOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBmcm9tIGFuIGFs
cmVhZHkgZXhpc3Rpbmcgc2hhcmVkIG1lbW9yeSBibG9jay4KLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3Ms
IFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5Pik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+KTsKIAogICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgZnJvbSBhIGhh
bmRsZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25z
dCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSk7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZShjb25zdCBIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb24gPSBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CiAKICAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCiAg
ICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFuZGxlJiwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uID0g
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwpAQCAtMTA2LDcgKzEwNSw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIFRoaXMgY3JlYXRlcyBhIGJpdG1hcCBpbWFnZSB0aGF0IGRpcmVj
dGx5IHJlZmVyZW5jZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9u
bHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFy
ZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4KLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdl
PiBjcmVhdGVJbWFnZSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY3JlYXRlSW1hZ2Uo
KTsKIAogI2lmIFVTRShDRykKICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBjb3BpZWQgQ0dJbWFnZVJl
ZiAobW9zdCBsaWtlbHkgYSBjb3B5LW9uLXdyaXRlKSBvZiB0aGUgc2hhcmVhYmxlIGJpdG1hcC4K
QEAgLTExOCwxMiArMTE3LDEyIEBAIHB1YmxpYzoKICNlbGlmIFVTRShDQUlSTykKICAgICAvLyBU
aGlzIGNyZWF0ZXMgYSBCaXRtYXBJbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNo
YXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3
ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNo
YW5nZS4KLSAgICBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNl
KCk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CiAj
ZW5kaWYKIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIEZsYWdzLCB2b2lkKik7Ci0gICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBTaGFyZWFi
bGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBSZWZQdHI8U2hhcmVkTWVt
b3J5Pik7CiAKICNpZiBVU0UoQ0FJUk8pCiAgICAgc3RhdGljIHNpemVfdCBudW1CeXRlc0ZvclNp
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKaW5kZXggYTZiMmEyODNkZmIyMzc4
ZThlYjQxNmVmNWNlYTIwMjAwZWIwMWE5ZC4uMDNlNjg0MWJmMDMxZDJhYjYwNzJkMGQ3OWExNDQ4
ZjNlZmUyNGZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJl
YWJsZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIHNpemVfdCBTaGFyZWFibGVC
aXRtYXA6Om51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogICAg
IHJldHVybiBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChjYWlyb0Zvcm1hdCwgc2l6ZS53
aWR0aCgpKSAqIHNpemUuaGVpZ2h0KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IGNyZWF0ZVN1cmZhY2VGcm9tRGF0YSh2b2lkKiBkYXRhLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKQorc3RhdGljIGlubGluZSBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBjcmVhdGVTdXJmYWNlRnJvbURhdGEodm9pZCogZGF0YSwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSkKIHsKICAgICBjb25zdCBpbnQgc3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlk
ZV9mb3Jfd2lkdGgoY2Fpcm9Gb3JtYXQsIHNpemUud2lkdGgoKSk7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIqPihkYXRhKSwgY2Fpcm9Gb3JtYXQsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSwgc3RyaWRlKSk7CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJCiAg
ICAgY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFj
ZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIGNvbnRleHQpOwogfQogCi1QYXNzUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDYWlyb1N1cmZhY2Uo
KQorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDYWlyb1N1
cmZhY2UoKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlID0gY3JlYXRlU3Vy
ZmFjZUZyb21EYXRhKGRhdGEoKSwgbV9zaXplKTsKIApAQCAtODcsMTMgKzg3LDEzIEBAIHZvaWQg
U2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlU3VyZmFjZURhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAp
CiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlQml0bWFwKj4odHlwZWxlc3NCaXRtYXApLT5kZXJl
ZigpOyAvLyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlQ2Fpcm9TdXJmYWNlLgogfQogCi1QYXNz
UmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKK1JlZlB0cjxJbWFn
ZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgpCiB7CiAgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOwogICAgIGlmICghc3VyZmFj
ZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoc3VyZmFjZS5yZWxlYXNlKCkpOworICAgIHJldHVybiBC
aXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoc3VyZmFjZSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVC
aXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwCmluZGV4IGNlOTMzYjcyM2JmMzFmMzY3NTgxMzBmMWVlNTBjNTg5ZGQ1YzZmOTAuLjhlM2Nj
YTQ5YjZmZTRiNmE0ODA1ZDZmNTllZTg0NzNiZjRhYTJmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTA2LDEzICsxMDYsMTMgQEAg
dm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVs
ZXNzQml0bWFwLCBjb25zdCB2b2lkKgogICAgIGJpdG1hcC0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQg
YnkgcmVmIGluIGNyZWF0ZUNHSW1hZ2UuCiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQorUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUltYWdlKCkKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9
IG1ha2VDR0ltYWdlKCk7CiAgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKHBsYXRmb3JtSW1hZ2Uu
Z2V0KCkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1J
bWFnZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274855</attachid>
            <date>2016-03-24 14:24:41 -0700</date>
            <delta_ts>2016-03-24 18:13:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155412-20160324142443.patch</filename>
            <type>text/plain</type>
            <size>118438</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE1YTFiMjJmMGEyMThk
YWJiNGUzNTdkYTMzNWI5ZTQ0MDg4ZWQ0Yi4uYzA3OTUyNmUxNzExZDZhZmZmYjYyNjhjNTIzZTc2
Yzg3ZGU3ZWU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNiBAQAorMjAxNi0wMy0yNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5n
ZSBOYXRpdmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1h
Z2VQdHIgYXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgor
ICAgICAgICB0aGUgcmV0dXJuZWQgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrIHdhcyBk
b25lIHRvIGVuc3VyZSB0aGUgQ0cKKyAgICAgICAgcG9pbnRlciBpcyByZWZjb3VudGVkIGNvcnJl
Y3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYQorICAgICAgICBGcmFtZURh
dGEgc2luY2UgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFzaW5nIHRoZSBDR0ltYWdl
UmVmLgorCisgICAgICAgIFdpdGggdGhpcyBjaGFuZ2UsIFBhc3NOYXRpdmVJbWFnZVB0ciBpcyBu
b3QgbmVlZGVkIGFueW1vcmUuIFNvIGFsbCB0aGUKKyAgICAgICAgaW5zdGFuY2Ugb2YgUGFzc05h
dGl2ZUltYWdlUHRyIGNhbiBiZSByZXBsYWNlZCBieSBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlk
ZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuaDogUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJ
bWFnZVB0ci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJ
bWFnZSk6IFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyCisgICAgICAgIHdpdGggTmF0aXZlSW1h
Z2VQdHIuCisgCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOiBSZW1vdmUgVVNFKENHKSBhbmQgQ0ZSZXRhaW4oaW1h
Z2UpIHNpbmNlCisgICAgICAgIHRoaXMgY29kZSBjYW4gY29tcGlsZSBvbiBhbGwgcGxhdGZvcm1z
LiBUaGUgaW1hZ2UgcmVmY291bnQgd2lsbCBiZQorICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIHRo
ZSBpbWFnZSBpcyBhc3NpZ25lZCB0byBGcmFtZURhdGEubV9pbWFnZSBpbiB0aGUKKyAgICAgICAg
Qml0bWFwSW1hZ2UgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c05h
dGl2ZUljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmg6IFJlcGxhY2UgUGFz
c05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5k
ZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIsIG1fZnJhbWUgd2l0aCBtX2ltYWdlIGFuZAorICAgICAgICAqRnJhbWUqIHdp
dGggKkZyYW1lSW1hZ2UqLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToKKyAgICAgICAg
QSBCaXRtYXBJbWFnZSBjYW4gaGF2ZSBvbmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRh
IG1lbWJlciBjYW4gYmUKKyAgICAgICAgbmFtZWQgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUiLCAi
bV9mcmFtZXMiLCBldGMuIEEgRnJhbWVEYXRhIGNhbiBoYXZlCisgICAgICAgIHplcm8gb3Igb25l
IE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbiBiZSBuYW1lZCBhcyAiaW1hZ2Ui
LAorICAgICAgICAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOiBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0ciB3aXRoCisgICAg
ICAgIE5hdGl2ZUltYWdlUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmg6CisgICAg
ICAgIENoYW5nZSB0aGUgbWVtYmVycyBvZiB0eXBlIENHSW1hZ2VSZWYgdG8gYmUgUmV0YWluUHRy
PENHSW1hZ2VSZWY+LgorICAgICAgICAgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldE5TSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0
Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpnZXRDR0lt
YWdlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0RXZhc09iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1l
QXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaDoKKyAgICAgICAgQ2hhbmdlIDAgdG8gbnVsbHB0ciwgUGFzc1JlZlB0ciB0byBSZWZQdHIg
YW5kIFBhc3NOYXRpdmVJbWFnZVB0ciB0bworICAgICAgICBOYXRpdmVJbWFnZVB0ci4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgUmVw
bGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmg6CisgICAgICAgIE1ha2UgTmF0aXZl
SW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIGZvciBDRy4gR2V0IHJpZCBvZiBQYXNzTmF0aXZlSW1h
Z2VQdHIKKyAgICAgICAgc2luY2UgTmF0aXZlSW1hZ2VQdHIgaXMgbm93IGEgc21hcnQgcG9pbnRl
ciBvbiBhbGwgcGxhdGZvcm1zLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
UmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAgIFNp
bmNlIEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHJldHVybnMgYSBSZXRhaW5Q
dHIsIG1vdmUgaXQKKyAgICAgICAgdG8gbV9wZW5kaW5nQ29udGVudHNJbWFnZSB0byByZW1vdmUg
dGhlIHJlZmNvdW50IGNodXJuLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Qml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgUmVwbGFjZSBtX2ZyYW1lIHdpdGgg
bV9pbWFnZSBhbmQgZnJhbWUqIHdpdGggZnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b3B5Q2Fpcm9JbWFnZVN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmg6CisgICAgICAgIFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0
cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICBSZXBsYWNlICpGcmFtZSogd2l0aCAqRnJh
bWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0
aXZlSW1hZ2VQdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5SW1hZ2Up
OiBDcmVhdGUgYSBuZXcgTmF0aXZlSW1hZ2VQdHIgc28gaXQgY2FuCisgICAgICAgIGJlIG1vdmVk
IHRvIHRoZSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpjb3B5U3Vy
ZmFjZVRvSW1hZ2VBbmRBZGp1c3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1h
Z2VEYXRhKToKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKTogTm8gbmVlZCB0byBjYWxsIENHSW1hZ2VSZWxlYXNl
KCkuIEp1c3QgYXNzaWduCisgICAgICAgIG1faW1hZ2UgdG8gbnVsbHB0ciBhbmQgQ0dJbWFnZVJl
bGVhc2UoKSB3aWxsIGJlIGNhbGxlZCBmcm9tIHRoZSBSZXRhaW5QdHIKKyAgICAgICAgZGVzdHJ1
Y3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5z
Y2FsZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBDR0lt
YWdlUmVmIHdpdGggUmV0YWluUHRyPENHSW1hZ2VSZWY+LiBSZXBsYWNlICpGcmFtZSogd2l0aAor
ICAgICAgICAqRnJhbWVJbWFnZSouCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgVXNlIG1fY2dJbWFnZS5n
ZXQoKSBpbnN0ZWFkIG9mIG1fY2dJbWFnZSB3aGVuIGNhbGxpbmcgQ0cgZnVuY3Rpb25zLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIFJlcGxh
Y2UgUGFzc05hdGl2ZUltYWdlUHRyIHdpdGggTmF0aXZlSW1hZ2VQdHIuIEdldCB0aGUgcmF3IENH
SW1hZ2VSZWYKKyAgICAgICAgZnJvbSB0aGUgTmF0aXZlSW1hZ2VQdHIgd2hlbiBjYWxsaW5nIHRo
ZSBDRyBmdW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VB
ZnRlclNjYWxpbmdJZk5lZWRlZCk6IE1vdmUgdGhlIGltYWdlIGFyZ3VtZW50CisgICAgICAgIHdo
ZW4gY2FsbGluZyBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIAorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAg
IFJlcGxhY2UgUGFzc1JlZlB0ciB3aXRoIFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFt
ZSB0aGUgZnVuY3Rpb24gYW5kIHNpbXBsaWZ5IHRoZSBjb2RlIHNpbmNlIHRoZSBsb2NhbCB2YXJp
YWJsZQorICAgICAgICBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgYm90aCBzbWFydCBwb2ludGVy
cy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdO
YXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoK
KyAgICAgICAgUmVwbGFjZSBQYXNzTmF0aXZlSW1hZ2VQdHIgd2l0aCBOYXRpdmVJbWFnZVB0ciBh
bmQgdXNlIGNvbnN0YW50IHJlZmVyZW5jZS4gCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAg
ICAgIENhbGwgYSBmdW5jdGlvbiB3aXRoIGl0cyBuZXcgbmFtZS4KKyAgICAgICAgCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHA6CisgICAgICAgIChJbWFnZUdTdHJlYW1l
cjo6SW1hZ2VHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29u
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpJY29uKToKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKyAgICAgICAgVXNlIHNtYXJ0IHBvaW50ZXJz
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycyBDR0ltYWdlUmVm
LgorICAgICAgICBBbmQgY2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyIGFuZCAwIHRvIG51bGxw
dHIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVzZW50YXRpb24p
OiBHZXQgdGhlIHJhdyBwb2ludGVyIGZyb20gdGhlCisgICAgICAgIHJldHVybmVkIHNtYXJ0IHBv
aW50ZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNz
UmVmUHRyIHdpdGggUmVmUHRyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lj
b25XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKTog
Q2hhbmdlIFBhc3NSZWZQdHIgdG8gUmVmUHRyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Y3JlYXRlKTogUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6IENhbGwg
dGhlIGZ1bmN0aW9uCisgICAgICAgIHdpdGggaXRzIG5ldyBuYW1lIGFuZCBnZXQgdGhlIHJhdyBw
b2ludGVyIGZyb20gdGhlIHJldHVybmVkIHNtYXJ0IHBvaW50ZXIuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpjcmVhdGUpOiBSZXBsYWNlIFBhc3NSZWZQdHIgd2l0aCBSZWZ0
UHRyIGFuZCB1c2UKKyAgICAgICAgdGhlIG1vdmUgc2VtYW50aWNzIGZvciBwYXNzaW5nIHRoZSBh
cmd1bWVudCB0byBCaXRtYXBJbWFnZTo6Y3JlYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKTogQ2FsbCB0aGUgZnVuY3Rpb24K
KyAgICAgICAgd2l0aCBpdHMgbmV3IG5hbWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OmFzTmV3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5l
cjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oOgorICAgICAgICBSZXBsYWNlIFBhc3NOYXRpdmVJbWFnZVB0
ciB3aXRoIE5hdGl2ZUltYWdlUHRyLgorICAgICAgICAKIDIwMTYtMDMtMTggIFpodW8gTGkgIDx6
YWNobGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBBdXRvRmlsbCBidXR0b24gaW4gaW5w
dXQgZmllbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDE1ZmE2YWYwYjI2ZTQ4NzM1ZDlhMTMyMmM1
YjQ0M2I4N2YzZTNlMWQuLmYxNDU5OGViMDAzNGExM2E2ZjZjY2I1MzdkMGI4MTdlOTliYzQ0ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wMy0yNCAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5nZSBOYXRp
dmVJbWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06Cisg
ICAgICAgICgrW1dlYkNhY2hlIGFkZEltYWdlVG9DYWNoZTpmb3JVUkw6Zm9yRnJhbWU6XSk6Cisg
ICAgICAgIFdlYkNvcmU6Ok1lbW9yeUNhY2hlKCkgaXMgdGFraW5nIGFuIHJ2YWx1ZSBOYXRpdmVJ
bWFnZVB0ci4gV2UgbmVlZCB0byBjcmVhdGUKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIgZnJvbSB0
aGUgaW1hZ2UgcmF3IHBvaW50ZXIgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisKIDIwMTYt
MDMtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUg
Q2FjaGVzIGluIFNhZmFyaSdzIERldmVsb3AgbWVudSBkb2VzIG5vdCBkaXNhYmxlIGNhY2hlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwppbmRleCA1ODllOGVmYmEzZWU0YWZmYzJmNjkyYjg0NDg5MGNjYjgzZjQy
NmM3Li5lZTVlNGI0NmJjN2Q5ZDM1NzlkN2VjODUwY2NjZjEwZGJjMTgzNGE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBDaGFuZ2UgTmF0aXZlSW1hZ2VQdHIg
Zm9yIENHIHRvIGJlIFJldGFpblB0cjxDR0ltYWdlUmVmPgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAg
KiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6c25hcHNob3QpOgorICAgICAgICBSZXBsYWNlIFBhc3NSZWZQdHIgd2l0aCBSZWZQdHIuCisK
IDIwMTYtMDMtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTY5NTEgYW5kIHIxOTcwMzEuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNTNmZTgxYTExNzFjYjU3ZDQ1NjIwYTdiMzI5ZWMyODRlNTYzYjJlOC4uYjFm
NjgxOTczYjQxN2ZmZTExM2I5Y2NlMGFjNTZlOGNiMDE3ZGJhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQzIEBACisyMDE2LTAzLTI0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZSxjb20+CisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIGZvciBDRyB0byBiZSBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NTQxMgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVX
aXRoU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNv
cHlUb1RleHR1cmUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNv
b3JkaW5hdGVkU3VyZmFjZS5oOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRy
IGFuZCB1c2UgV1RGTW92ZSgpIGluc3RlYWQgb2YgUmVmUHRyOjpyZWxlYXNlKCkKKyAgICAgICAg
d2hlbiBwYXNzaW5nIHRoZSBSZWZQdHIuCisgICAgICAgIAorICAgICAgICAqIFNoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVN1cmZh
Y2VGcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ2Fp
cm9TdXJmYWNlKToKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyLgorICAg
ICAgICAKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSk6Cisg
ICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSk6CisgICAgICAgIFJlcGxhY2UgUGFzc1Jl
ZlB0ciB3aXRoIFJlZlB0ciBhbmQgdXNlIHRoZSBtb3ZlIHNlbWFudGljcyB3aGVuIGNhbGxpbmcK
KyAgICAgICAgQml0bWFwSW1hZ2U6OmNyZWF0ZSgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgUmVwbGFjZSBQYXNzUmVmUHRyIHdpdGggUmVmUHRyCisKIDIwMTYtMDMtMTgg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBH
aXZlIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYWJvdXQgcGFyZW50IHBy
b2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDFlNmZj
Y2Q4ZWI0Njk5YzA2YTk5YzQyMzZiMTkxOTUxZTg1ZGMwMmYuLjcxMzE0YmMyNjc0NTI4ZmRkMjE1
NjJlODNiMzJjMTYxNmVhZjRmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNWaWRlbygp
ICYmIHBsYXllcigpLT5oYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKLVBhc3NOYXRpdmVJ
bWFnZVB0ciBIVE1MVmlkZW9FbGVtZW50OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05h
dGl2ZUltYWdlUHRyIEhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZDk0OGY5NDRhMzA4MTZhYTU3YjNj
OGVlYTYwMjQ4ODEyNDU2NTE1Li5iNGQ3ZjFlMTcwZjFmNzNlY2E0ODY1NjQ2MDdjZDU3ZWYxZjRm
ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjksNyArNjks
NyBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNj
ZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRUaW1lKCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpOwogCiAgICAgLy8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVz
IGNvcHkgaWYgcG9zc2libGUuCiAgICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXll
cjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5k
ZXggN2JmNjgwNGZjZjhhZmE1Y2NlYzAxOTQzMDliZWM1OTc0NzczZTIyNy4uZDY4Zjk4NmNhYTdi
Mzg4YTUyOWYzYjgzOTBhMGU2MzczZTZhYWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNjI1LDcg
KzE2MjUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKEhUTUxW
aWRlb0VsZW1lbnQqIHZpZGVvLCBjb25zdCBGbG9hdFJlYwogICAgIGNoZWNrT3JpZ2luKHZpZGVv
KTsKIAogI2lmIFVTRShDRykgfHwgKEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpICYmIFVT
RShHU1RSRUFNRVJfR0wpICYmIFVTRShDQUlSTykpCi0gICAgaWYgKFBhc3NOYXRpdmVJbWFnZVB0
ciBpbWFnZSA9IHZpZGVvLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICBpZiAo
TmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSB2aWRlby0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
KSB7CiAgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgRmxvYXRTaXplKHZpZGVvLT52
aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAg
ICAgICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpCiAgICAgICAgICAgICBkaWRE
cmF3RW50aXJlQ2FudmFzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcAppbmRleCA5OTk0NjVlYTM5MDY5N2NiZTAwZmU2ZmE4ODM4YzEzOGU1NDQ3YTE3Li4w
OTkzMGUwZThjYjE5Y2E5MTBiMGUxM2JhYzU2MDc3YTYyZmEzNjk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTIwNCwyOSArMjA0LDI0IEBAIHVu
c2lnbmVkIE1lbW9yeUNhY2hlOjpsaXZlQ2FwYWNpdHkoKSBjb25zdAogICAgIHJldHVybiBtX2Nh
cGFjaXR5IC0gZGVhZENhcGFjaXR5KCk7CiB9CiAKLSNpZiBVU0UoQ0cpCi0vLyBGSVhNRTogUmVt
b3ZlIHRoZSBVU0UoQ0cpIG9uY2Ugd2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFy
dCBwb2ludGVyIG9uIGFsbCBwbGF0Zm9ybXMgb3IKLS8vIHJlbW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZS
ZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28gYXMgdG8gbWFrZSB0
aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KIHN0YXRpYyBDYWNoZWRJbWFnZUNsaWVudCYg
ZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENh
Y2hlZEltYWdlQ2xpZW50PiBjbGllbnQ7CiAgICAgcmV0dXJuIGNsaWVudDsKIH0KIAotYm9vbCBN
ZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKK2Jvb2wgTWVt
b3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikKIHsKICAgICBB
U1NFUlQoaW1hZ2UpOwogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQgPSBTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKTsKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3Rz
LgogCi0gICAgUmVmUHRyPEJpdG1hcEltYWdlPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoaW1hZ2UsIG51bGxwdHIpOworICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKICAgICBp
ZiAoIWJpdG1hcEltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q2FjaGVkSW1hZ2U+IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJ
bWFnZT4odXJsLCBiaXRtYXBJbWFnZS5nZXQoKSwgQ2FjaGVkSW1hZ2U6Ok1hbnVhbGx5Q2FjaGVk
LCBzZXNzaW9uSUQpOwogCi0gICAgLy8gQWN0dWFsIHJlbGVhc2Ugb2YgdGhlIENHSW1hZ2VSZWYg
aXMgZG9uZSBpbiBCaXRtYXBJbWFnZS4KLSAgICBDRlJldGFpbihpbWFnZSk7CiAgICAgY2FjaGVk
SW1hZ2UtPmFkZENsaWVudCgmZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJ
bWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwogI2lmIEVO
QUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCkBAIC0yNjQsNyArMjU5LDYgQEAgdm9pZCBNZW1vcnlD
YWNoZTo6cmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
ZG9tYWluRm9yQ2EKICAgICAvLyByZXNvdXJjZSBtYXkgYmUgZGVsZXRlZCBhZnRlciB0aGlzIGNh
bGwuCiAgICAgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KCpyZXNvdXJjZSkucmVtb3ZlQ2xpZW50KCZk
dW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogfQotI2VuZGlmCiAKIHZvaWQgTWVtb3J5Q2FjaGU6
OnBydW5lTGl2ZVJlc291cmNlcyhib29sIHNob3VsZERlc3Ryb3lEZWNvZGVkRGF0YUZvckFsbExp
dmVSZXNvdXJjZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5o
CmluZGV4IGM4OGQyZGJkNGU2YjFkMjc4MGRkYTA0ZmNjYWY5YjgyM2E0NjE3YTAuLjUzMWU5YWZm
NGI1YWIwNDBlYjFiYmQyODc2ZjdhMGE1ZmI5MWExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0xNTUsMTIgKzE1NSw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlPcmlnaW5TZXQm
IG9yaWdpbnMpOwogICAgIFdFQkNPUkVfRVhQT1JUIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4gb3JpZ2luc1dpdGhDYWNoZShTZXNzaW9uSUQpIGNvbnN0OwogCi0jaWYgVVNFKENHKQot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIFVTRShDRykgb25jZSB3ZSBlaXRoZXIgbWFrZSBOYXRp
dmVJbWFnZVB0ciBhIHNtYXJ0IHBvaW50ZXIgb24gYWxsIHBsYXRmb3JtcyBvcgotICAgIC8vIHJl
bW92ZSB0aGUgdXNhZ2Ugb2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0Nh
Y2hlKCkgc28gYXMgdG8gbWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KLSAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZW1vdmVJbWFnZUZyb21DYWNoZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKLSNlbmRpZgogCiAgICAgLy8gcHJ1bmVEZWFkKigp
IC0gRmx1c2ggZGVjb2RlZCBhbmQgZW5jb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIG5vdCByZWZl
cmVuY2VkIGJ5IFdlYiBwYWdlcy4KICAgICAvLyBwcnVuZUxpdmUqKCkgLSBGbHVzaCBkZWNvZGVk
IGRhdGEgZnJvbSByZXNvdXJjZXMgc3RpbGwgcmVmZXJlbmNlZCBieSBXZWIgcGFnZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBkY2NhODhlNWI3
MDdkMWE3MDBiZjQ2ZWY2MzAwNDdhMzNjZjg4YjlmLi42ZGEyNDRlNWQzYTFlNjRhYjNhMTgwZDkx
MzgwMjUwYjY0OTBhMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCBJbWFnZSogSWNvbkRhdGFiYXNlOjpzeW5jaHJv
bm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBjbwogICAg
IHJldHVybiBpY29uUmVjb3JkLT5pbWFnZShzaXplKTsKIH0KIAotUGFzc05hdGl2ZUltYWdlUHRy
IEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK05hdGl2ZUltYWdlUHRy
IEljb25EYXRhYmFzZTo6c3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBJbWFnZSog
aWNvbiA9IHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwocGFnZVVSTE9yaWdpbmFsLCBzaXplKTsK
ICAgICBpZiAoIWljb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5o
CmluZGV4IDUzMGEzYTMwODkwMTRhM2ViMWJlMDJkMzI0ODI5Y2FjMjZkODZkMzIuLmRiNDNlYzJj
YjMxMTllNTYzMDA4NzQ0YmFiYzA1OTI0ZGU2MWMyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVS
TCwgY29uc3QgU3RyaW5nJiBwYWdlVVJMKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IElu
dFNpemUmKSBvdmVycmlkZTsKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRp
dmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50
U2l6ZSYpIG92ZXJyaWRlOworICAgIE5hdGl2ZUltYWdlUHRyIHN5bmNocm9ub3VzTmF0aXZlSWNv
bkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGNvbnN0IEludFNpemUm
KSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3luY2hyb25vdXNJY29uVVJM
Rm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIHN5bmNocm9ub3Vz
SWNvbkRhdGFLbm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgSWNvbkxvYWREZWNpc2lvbiBzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvcklj
b25VUkwoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuaAppbmRleCAwMjU0NjUzMDQx
NjkxOTcyMjJlNzdkZjA2ZTY2ZmY2NjNlNzgwOGFhLi41NDRjYmFjYjY5OGM2OGIwZDg2ODFjMjhi
ZDYxOGNlNzI4YzFhZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlQmFzZS5oCkBAIC0xNzksNyArMTc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzeW5jaHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYpIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9h
ZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIHsgcmV0
dXJuIEljb25Mb2FkTm87IH0KICAgICB2aXJ0dWFsIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQ
YWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9y
UGFnZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQog
CiAgICAgLy8gQXN5bmNocm9ub3VzIGNhbGxzIHdlIHNob3VsZCB1c2UgdG8gcmVwbGFjZSB0aGUg
YWJvdmUgd2hlbiBzdXBwb3J0ZWQuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQXN5bmNocm9u
b3VzTW9kZSgpIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZmFmMGY4Njk2MmMzZmI2NTc3NzQ1YmZh
Zjc1YjRjODRkODBjYzA2MC4uNGE1YzYxYTVkMjdiYTg1NTQzYzAwNjQ1ZGY4ZWEyMDMzNTBhOWUx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzdGFydFRpbWVyKGRvdWJs
ZSBkZWxheSkKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKLWJv
b2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBCaXRt
YXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAo
aW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDQsNyAr
MTA0LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xlU2Vj
dXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTg0LDkgKzE4NCw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIEltCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAogICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKTsKKyAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgPSBtX3NvdXJjZS5j
cmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiAgICAgICAg
IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOwot
ICAgICAgICBpZiAobnVtRnJhbWVzID09IDEgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisg
ICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAg
ICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogICAgIH0KIApAQCAtMjA0LDcgKzIwNCw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgaWYgKCFzdWJzYW1wbGluZ0xldmVsICYm
IGZyYW1lU2l6ZSAhPSBtX3NpemUpCiAgICAgICAgIG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IGZh
bHNlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7CisgICAgaWYgKG1fZnJh
bWVzW2luZGV4XS5tX2ltYWdlKSB7CiAgICAgICAgIGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8
aW50PihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzKTsKICAgICAgICAgbV9kZWNvZGVkU2l6
ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBUaGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxs
IHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGRhdGEgdXNlZApAQCAtMzc5LDE0ICszNzks
MTQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgs
IEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5n
ID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCisg
ICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1l
dGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKICAgICAgICAg
Y2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3Qg
aW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkKK05hdGl2ZUltYWdlUHRyIEJpdG1h
cEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlv
blNjYWxlSGludCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTM5NSw3ICszOTUsNyBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0
bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNj
YQogCiAgICAgLy8gV2UgbWF5IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0aCBhIGhpZ2hlciBzdWJz
YW1wbGluZyBsZXZlbCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAgICAgLy8gcmUtZGVjb2Rl
IHdpdGggYSBsb3dlciBsZXZlbC4KLSAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYg
bV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2lu
ZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKKyAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXpl
KCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJh
bWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKICAgICAgICAgLy8gSWYgdGhlIGltYWdl
IGlzIGFscmVhZHkgY2FjaGVkLCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6ZSwgcmUtZGVjb2RlIGEg
bGFyZ2VyIHZlcnNpb24uCiAgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4
XS5tX2ZyYW1lQnl0ZXM7CiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5jbGVhcih0cnVlKTsKQEAg
LTQwNiwxMCArNDA2LDEwIEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVB
dEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhCiAgICAgfQogCiAgICAg
Ly8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJhbWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5k
ZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBp
ZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkK
ICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0
YUFuZEZyYW1lKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpAQCAtNDI4LDkgKzQyOCw5IEBAIGZs
b2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAg
cmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK05hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lQXRJbmRleChjdXJyZW50RnJhbWUoKSk7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VB
dEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNB
bHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNzQ5M2M2YTRiZmI4NjNkOTc2MzdjNDljNDY0Y2Mz
N2FlNzhlMGEwNC4uMDBmYmEzM2JhNDE5YzEyNDE1NDE2NTMzMDFlMjk1Y2VmODZkMTc3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC02
NSwxNiArNjUsMTQgQEAgY2xhc3MgVGltZXI7CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KIAogc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRnJhbWVEYXRhKTsKIHB1YmxpYzoKICAgICBGcmFtZURhdGEoKQotICAg
ICAgICA6IG1fZnJhbWUoMCkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9y
aWVudGF0aW9uKQorICAgICAgICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3JpZW50YXRp
b24pCiAgICAgICAgICwgbV9zdWJzYW1wbGluZ0xldmVsKDApCiAgICAgICAgICwgbV9kdXJhdGlv
bigwKQogICAgICAgICAsIG1faGF2ZU1ldGFkYXRhKGZhbHNlKQogICAgICAgICAsIG1faXNDb21w
bGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRydWUpIAorICAgICAgICAsIG1faGFz
QWxwaGEodHJ1ZSkKICAgICAgICAgLCBtX2ZyYW1lQnl0ZXMoMCkKICAgICB7CiAgICAgfQpAQCAt
ODgsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBj
YWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4KICAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRh
ZGF0YSk7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOworICAgIE5hdGl2ZUltYWdlUHRy
IG1faW1hZ2U7CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwogICAgIFN1YnNh
bXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsOwogICAgIGZsb2F0IG1fZHVyYXRpb247CkBA
IC0xMDgsMTYgKzEwNiwxNiBAQCBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFn
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdyYWRpZW50SW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdlPiBjcmVh
dGUoUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
ciA9IDApCisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRy
JiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gbnVsbHB0cikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpdG1hcEltYWdlKG5hdGl2ZUltYWdlLCBv
YnNlcnZlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXRtYXBJbWFnZShXVEZN
b3ZlKG5hdGl2ZUltYWdlKSwgb2JzZXJ2ZXIpKTsKICAgICB9Ci0gICAgc3RhdGljIFJlZjxCaXRt
YXBJbWFnZT4gY3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gMCkKKyAgICBzdGF0aWMg
UmVmPEJpdG1hcEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRy
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2Uob2JzZXJ2
ZXIpKTsKICAgICB9CiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBjcmVhdGUoSEJJVE1BUCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxCaXRtYXBJbWFnZT4gY3JlYXRlKEhCSVRNQVApOwogI2VuZGlm
CiAgICAgdmlydHVhbCB+Qml0bWFwSW1hZ2UoKTsKICAgICAKQEAgLTE3Miw3ICsxNzAsNyBAQCBw
dWJsaWM6CiAgICAgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIG92ZXJyaWRlOwog
I2VuZGlmCiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpIG92ZXJyaWRlOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJy
ZW50RnJhbWUoKSBvdmVycmlkZSB7IHJldHVybiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChjdXJy
ZW50RnJhbWUoKSk7IH0KIAogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkg
b3ZlcnJpZGU7CkBAIC0xOTksOCArMTk3LDggQEAgcHJvdGVjdGVkOgogICAgICAgQ2VydGFpbiAg
ICAgLy8gVGhlIHJlcGV0aXRpb24gY291bnQgaXMga25vd24gdG8gYmUgY29ycmVjdC4KICAgICB9
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyLCBJ
bWFnZU9ic2VydmVyKiA9IDApOwotICAgIFdFQkNPUkVfRVhQT1JUIEJpdG1hcEltYWdlKEltYWdl
T2JzZXJ2ZXIqID0gMCk7CisgICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoTmF0aXZlSW1h
Z2VQdHImJiwgSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBC
aXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IG51bGxwdHIpOwogCiAjaWYgUExBVEZPUk0oV0lO
KQogICAgIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9z
aXRlT3BlcmF0b3IpIG92ZXJyaWRlOwpAQCAtMjE0LDEwICsyMTIsMTAgQEAgcHJvdGVjdGVkOgog
CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKTsKIAotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFt
ZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKLSAgICBQ
YXNzTmF0aXZlSW1hZ2VQdHIgY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAg
TmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRp
b25TY2FsZUhpbnQgPSAxKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QpOwogCi0gICAgYm9vbCBoYXZlRnJhbWVBdEluZGV4KHNpemVfdCk7
CisgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IGJhYmM0Yzg1Y2MyZGY3NDk1OGZhMWM5MTBlNTZhYWNiODcx
OTBjZjIuLmM1MjRiYTE5ZDVkZGE0MDVjNjBjMTQ3ODIxNjI3OWMwYzg1OTY2OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0zMDIsNyArMzAyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNF
KENBSVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRp
dmVJbWFnZVB0ciwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VPcmll
bnRhdGlvbik7CiAjZW5kaWYKIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGUzNmJhM2FhNTZk
NThjMjA2YTk4M2ZmNWJhOWJmYTdiMTM2NTExODIuLmRiYmJjZjU4YzM3YjlhNmIxNjRkNmYxMzUx
Y2Q2ZTE1ZWI0MWQ4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgcHVibGljOgog
ICAgICAgICBJbWFnZVNvdXJjZSogbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiBtX2ltYWdlU3VyZmFjZTsKICNlbGlmIFVTRShDRykKLSAgICAgICAgQ0dJbWFnZVJl
ZiBtX2NnSW1hZ2U7CisgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAg
ICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERhdGE7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1
aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ljb24uaAppbmRleCBkOTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFlZjNmM2Mx
N2I3Li5mNmJiYjgyMDZjZWFiN2NkMzYzOTYyMDgwNTBiNDAzMTYxZGFhNmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC0yMiw4ICsyMiw4IEBACiAjZGVmaW5l
IEljb25faAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTQ1LDE5ICs0NSwxOSBAQCBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgCiBjbGFzcyBJY29u
IDogcHVibGljIFJlZkNvdW50ZWQ8SWNvbj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZW5hbWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPElj
b24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIH5JY29uKCk7CiAKICAgICB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEljb24+IGNyZWF0ZShISUNPTiBoSWNvbikgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEljb24oaEljb24pKTsgfQorICAgIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3JlYXRlKEhJ
Q09OIGhJY29uKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihoSWNvbikpOyB9CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgZm9yIG5v
bi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9ySW1hZ2UoTmF0
aXZlSW1hZ2VQdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SWNvbj4gY3Jl
YXRlSWNvbkZvckltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKElPUykKLSAgICBJY29uKENHSW1hZ2VSZWYpOworICAgIEljb24oY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+Jik7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsK
ICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBJY29uKE5TSW1hZ2UqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDRlZDZlMzVkOTlhZmFhYjViOGJkZWM2ZmQ3
YTEzMjBlMjBkMDQ2ZjUuLmMzMTQyYWRlYzdhMjVjODQ2MGUyOWFmMzUwMmI5NDE0N2I3MDZjN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTM1LDIzICsx
MzUsMjMgQEAgcHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3Vu
ZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCi0gICAgdmlydHVhbCBQYXNzTmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0
dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25G
b3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7IH0KIAogICAgIC8v
IEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKICNpZiBVU0UoQVBQS0lUKQot
ICAgIHZpcnR1YWwgTlNJbWFnZSogZ2V0TlNJbWFnZSgpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0
dWFsIE5TSW1hZ2UqIGdldE5TSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNl
bnRhdGlvbigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIENGRGF0YVJlZiBnZXRUSUZGUmVw
cmVzZW50YXRpb24oKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFVTRShDRykK
LSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIHsgcmV0dXJuIDA7IH0KLSAg
ICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNp
emUmKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0
Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRD
R0ltYWdlUmVmKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgQ0dJbWFnZVJlZiBn
ZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYpIHsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkFycmF5UmVmPiBnZXRDR0ltYWdlQXJyYXkoKSB7
IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE2MCwx
MSArMTYwLDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZp
cnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVh
bCBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oRUZMKQotICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmpl
Y3QoRXZhcyopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIEV2YXNfT2JqZWN0KiBnZXRFdmFz
T2JqZWN0KEV2YXMqKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
dm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDA0ZjllZjkzYWVh
OWQyMmVhZjBlNjFjOWEyMGQ2NzM1MzcyMjk1YWIuLjU3YmE2MzUyMGZkZWIzYmEyMWUyNzBiNzY5
ZmRkMjkwNGNjYTdjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIu
aCIKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTEwMSw4ICsxMDEsOCBAQCBwdWJsaWM6CiAKICAgICBlbnVtIENvb3JkaW5hdGVTeXN0ZW0g
eyBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSwgQmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSB9
OwogCi0gICAgUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gZ2V0VW5tdWx0aXBsaWVkSW1h
Z2VEYXRhKGNvbnN0IEludFJlY3QmLCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5h
dGVTeXN0ZW0pIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldFBy
ZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVTeXN0ZW0gPSBM
b2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYsIENvb3JkaW5hdGVT
eXN0ZW0gPSBMb2dpY2FsQ29vcmRpbmF0ZVN5c3RlbSkgY29uc3Q7CisgICAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmLCBD
b29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0OwogCiAgICAg
dm9pZCBwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkq
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtID0gTG9naWNhbENvb3Jk
aW5hdGVTeXN0ZW0pOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc0ZWYwNTNhMzMzZmY1ZmM1NzhlODE4MDBjYzZmYzk3
NTVlZmJhYjguLmFlMzFjOTgzNTIxZDUwMDgyMjVjMWZjMzQyOWMyYzQwYTAzN2U0ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAg
LTE0OCwxOSArMTQ4LDE5IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0K
IAotUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKQorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkK
IHsKICAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1
ZmZlckF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkg
PT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9i
bGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KICAgICAvLyBlbXB0eSBpbWFnZSBk
aW1lbnNpb24sIGp1c3QgYmFpbC4KICAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUmV0dXJuIHRoZSBi
dWZmZXIgY29udGVudHMgYXMgYSBuYXRpdmUgaW1hZ2UuICBGb3Igc29tZSBwb3J0cywgdGhlIGRh
dGEKICAgICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVz
dCBpbmNyZW1lbnRzIGl0cyByZWZjb3VudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGFjZGQxY2U0Y2UzMDBkZTgxYzllMDYyZWVlNzYw
N2JmNDcyYTcwYWYuLmMxMWY3YmU0ODI5ZTRlNmJjNDAxNzg5NjNjMWQ1MWExODY2MGEwYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAt
MTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAvLyBkZWNvZGVkIGZyYW1lcy4KICAgICAvLwog
ICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBjYWxsIGNsZWFyKGZhbHNlLCBuKSBhbmQgc3Vic2Vx
dWVudGx5IGNhbGwKLSAgICAvLyBjcmVhdGVGcmFtZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5s
ZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0cnVlKS4KKyAgICAvLyBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChtKSB3aXRoIG0gPCBuLCB1bmxlc3MgdGhleSBmaXJzdCBjYWxsIGNsZWFyKHRydWUp
LgogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHN0YXRlZnVsIEltYWdlU291cmNlcy9kZWNvZGVy
cyB3aWxsIHdvcmsgcHJvcGVybHkuCiAgICAgLy8KICAgICAvLyBUaGUgfGRhdGF8IGFuZCB8YWxs
RGF0YVJlY2VpdmVkfCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBzdXBwbGllZCBieSBjYWxsZXJzCkBA
IC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIE5h
dGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IDApOwogCiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAg
ICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRo
ZSBmcmFtZSBhY3R1YWxseSB1c2VkIGFueSBhbHBoYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA5OWI5ZDVjYWRlNzNlMGMxZmFk
MDlhNzdjZjVmNmRiMjk4YzM3YWE1Li45MDY5NWI0NDU2M2EwOGI0ZDBjYzZkMzZjNGZmZDgyZDUx
Y2ExZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCkBAIC04MzcsNyArODM3LDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAg
IHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250
ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBl
LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBNZWRp
YVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitOYXRpdmVJbWFnZVB0ciBNZWRp
YVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNWVhNTU4NzExMDU5MzdlZWU0
MDYzZTcyNTkyYTFhZTU1NzE1NDVjYi4uYzJlMGNmN2I4MTMwODFkMTUzMzdkMGE5MmU2Y2EzMTdk
MGFlMDgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCkBAIC00MjMsNyArNDIzLDcgQEAgcHVibGljOgogICAgIC8vIGh0dHA6Ly9zcmMuY2hy
b21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWUvdHJ1bmsvc3JjL2dwdS9jb21tYW5kX2J1ZmZlci9zZXJ2
aWNlL2dsZXMyX2NtZF9jb3B5X3RleHR1cmVfY2hyb21pdW0uY2MgdmlhIHNoYWRlcnMuCiAgICAg
Ym9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Qq
LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKTsKIAotICAgIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CisgICAgTmF0aXZlSW1hZ2VQdHIg
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCiAgICAgdXNpbmcgTWVkaWFQbGF5ZXJFbnVt
czo6TmV0d29ya1N0YXRlOwogICAgIE5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKaW5kZXggZTU3OWFlOTM4NTZlN2RkYzg1OTY4NjQ3MzYxOGRhMmExNGQ2Yzc5MC4uZDkxOWY1
NDMzN2E0NTdjMTBlYzY4YmE1YTIwZWI3ZGUzYjhmZWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE1MSw3
ICsxNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBjb25zdCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQo
Yywgcik7IH0KICAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCwgR0MzRGVudW0sIEdDM0Rp
bnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCmluZGV4
IGRmOTQxYTU2NmE5ZTQ2OTI3NzI3YmExZWM2ODQ4ZjIxNjgwM2E0NWIuLjAzNDY2NjViMzZkYmU1
NjYxYTA5Y2U3MWM0ZWNiNGEwYzFlOGUyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaApAQCAtMjksNiArMjksNyBAQAogI2RlZmlu
ZSBOYXRpdmVJbWFnZVB0cl9oCiAKICNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKICNlbGlmIFVTRShDQUlS
TykKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgpAQCAtMzgsMjEgKzM5LDE0IEBAIHR5cGVkZWYg
c3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8g
RklYTUU6IE5hdGl2ZUltYWdlUHRyIGFuZCBQYXNzTmF0aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHNt
YXJ0Ci0vLyBwb2ludGVycyAoc2VlIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpKS4KICNpZiBVU0UoQ0cpCi10eXBlZGVmIENHSW1hZ2VSZWYgTmF0aXZlSW1hZ2VQdHI7Cit0
eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShD
QUlSTykKIHR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7Ci10
eXBlZGVmIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBQYXNzTmF0aXZlSW1hZ2VQdHI7CiAj
ZWxpZiBVU0UoV0lOR0RJKQogdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFn
ZVB0cjsKICNlbmRpZgogCi0jaWYgIVVTRShDQUlSTykKLXR5cGVkZWYgTmF0aXZlSW1hZ2VQdHIg
UGFzc05hdGl2ZUltYWdlUHRyOwotI2VuZGlmCi0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggZjdmYjFhYzQ2OGIwNjgxMTBlYmEyMzJmMmJjNmZmMDYyNmVmYmEyMC4uZDZk
ZTc2MmMxZmUyYmY4NDZhYWFlMjQ1M2M2YzU1YjBiYWRjYTlkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVMYXN0SW1h
Z2UoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKICAgICB2b2lk
IHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYp
OwotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3Zl
cnJpZGU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgp
OwogCiAgICAgdm9pZCBjcmVhdGVPcGVuR0xWaWRlb091dHB1dCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggMTU0MzdkZGQ4ZWQ2ZjNkMGEyYmRiZTU1ZThmMzFkZmE3YzQ2Y2RkZi4uYzc3
NzZlMDRmYzBmN2IxNDYzMDk0ZDE0OTA5Y2Y3YzUwOTNmOWU0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0yMzQ2LDEwICsyMzQ2LDEwIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAg
ICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUodmlkZW9UZXh0dXJlLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJl
LCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK05h
dGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwotICAgIHJldHVy
biBtX2xhc3RJbWFnZS5nZXQoKTsKKyAgICByZXR1cm4gbV9sYXN0SW1hZ2U7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVk
aWFEYXRhV2lsbENoYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAyMzBhOGY2YjcyMWI1MTVhMzFl
NTIwMjZlZmIwZGVhNGQ0YzAwMDFhLi41NmY3OTFkOTgzZTdhY2YyYmRlN2QwNThiNDI3NjQwMDlh
MTBmZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTEwMDgsMTYgKzEwMDgsMTYgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQog
ewogICAgIGlmIChpbWFnZSkgewotICAgICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIGF1dG8gbmV3SW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgaWYgKCFuZXdJbWFn
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBGSVhNRTogcHJvYmFibHkgZG9u
J3QgbmVlZCBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZSBhdCBhbGwgbm93LgotICAgICAgICBp
ZiAobV91bmNvcnJlY3RlZENvbnRlbnRzSW1hZ2UgJiYgbV91bmNvcnJlY3RlZENvbnRlbnRzSW1h
Z2UuZ2V0KCkgPT0gbmV3SW1hZ2UpCisgICAgICAgIGlmIChtX3VuY29ycmVjdGVkQ29udGVudHNJ
bWFnZSA9PSBuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAg
IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlID0gbmV3SW1hZ2U7Ci0gICAgICAgIG1fcGVuZGlu
Z0NvbnRlbnRzSW1hZ2UgPSBuZXdJbWFnZTsKKyAgICAgICAgbV91bmNvcnJlY3RlZENvbnRlbnRz
SW1hZ2UgPSBXVEZNb3ZlKG5ld0ltYWdlKTsKKyAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFn
ZSA9IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOwogCiAgICAgICAgIG1fY29udGVudHNMYXll
clB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgIGlmICghbV9jb250ZW50
c0xheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBjZDU3ZWU0ODVlYTgwYzZjZjM0N2Fi
M2JkOTczN2Q1OTk5ZTEwMjgyLi5iZGEwZGMyODFjOTM3ZGNkZjJkYjE1YWM3MTI4YTIzOTRkNzU3
NGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFw
SW1hZ2U6OkJpdG1hcEltYWdlKFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgbmF0aXZlSW1hZ2Us
IEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBt
X3NpemUoY2Fpcm9TdXJmYWNlU2l6ZShuYXRpdmVJbWFnZS5nZXQoKSkpCiAgICAgLCBtX21pbmlt
dW1TdWJzYW1wbGluZ0xldmVsKDApCkBAIC01OCw3ICs1OCw3IEBAIEJpdG1hcEltYWdlOjpCaXRt
YXBJbWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2Jz
ZXJ2ZXIqCiB7CiAgICAgbV9mcmFtZXMuZ3JvdygxKTsKICAgICBtX2ZyYW1lc1swXS5tX2hhc0Fs
cGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRpdmVJbWFnZS5nZXQoKSkgIT0gQ0FJ
Uk9fQ09OVEVOVF9DT0xPUjsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gbmF0aXZlSW1hZ2U7
CisgICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2UpOwogICAgIG1f
ZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKIAogICAgIGNoZWNrRm9yU29saWRDb2xv
cigpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogCiAgICAgc3Rh
cnRBbmltYXRpb24oKTsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBm
cmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1h
Z2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3Mg
dG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgogICAgICAgICByZXR1cm47CiAK
QEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3Io
KQogICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1l
KTsKKyAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7
CiAgICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFu
IGltYWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTgsOCArMTU4LDggQEAgYm9vbCBG
cmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBpZiAoY2xlYXJNZXRhZGF0
YSkKICAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lKSB7
Ci0gICAgICAgIG1fZnJhbWUgPSBudWxscHRyOworICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAg
IG1faW1hZ2UgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCmluZGV4IGJlOTcwMTBiODZmMzA4YTFlYmVhYzcx
MzBlMWUzYTBiNWRkYmIzZjYuLmRkOGIwOTc4YWRiZGFiNDZjNTg3MTZmNjIzMTY5MGJlZjNlMzg5
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY2Fpcm9fdCogY3IsIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNv
bnN0IEludFNpegogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi1QYXNzUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gY29weUNhaXJvSW1hZ2VTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogb3JpZ2lu
YWxTdXJmYWNlKQorUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weUNhaXJvSW1hZ2VTdXJmYWNl
KGNhaXJvX3N1cmZhY2VfdCogb3JpZ2luYWxTdXJmYWNlKQogewogICAgIC8vIENhaXJvIGRvZXNu
J3QgcHJvdmlkZSBhIHdheSB0byBjb3B5IGEgY2Fpcm9fc3VyZmFjZV90LgogICAgIC8vIFNlZSBo
dHRwOi8vbGlzdHMuY2Fpcm9ncmFwaGljcy5vcmcvYXJjaGl2ZXMvY2Fpcm8vMjAwNy1KdW5lLzAx
MDg3Ny5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaAppbmRleCBhZGFiMGU1Yzc4Mzg2Yjg5MmFiNWI5YzQzMWE2
N2RkMTM5ZWJkZjg1Li43MmI1ZTczMzNkOGM5NjEyYTdhMzZlZjBhZjg1MzFjYWRjM2NiYjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2Fpcm9fb3BlcmF0b3JfdCB0b0NhaXJv
T3BlcmF0b3IoQ29tcG9zaXRlT3BlcmF0b3Igb3ApOwogY2Fpcm9fb3BlcmF0b3JfdCB0b0NhaXJv
T3BlcmF0b3IoQmxlbmRNb2RlIGJsZW5kT3ApOwogdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9Db250
ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBJbnRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY2Fpcm9fb3BlcmF0b3JfdCBvcCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCk7Ci1QYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weUNhaXJvSW1hZ2VT
dXJmYWNlKGNhaXJvX3N1cmZhY2VfdCopOworUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY29weUNh
aXJvSW1hZ2VTdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCopOwogCiB2b2lkIGNvcHlSZWN0RnJvbUNh
aXJvU3VyZmFjZVRvQ29udGV4dChjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3QqIHRvLCBj
b25zdCBJbnRTaXplJiBvZmZzZXQsIGNvbnN0IEludFJlY3QmKTsKIHZvaWQgY29weVJlY3RGcm9t
T25lU3VyZmFjZVRvQW5vdGhlcihjYWlyb19zdXJmYWNlX3QqIGZyb20sIGNhaXJvX3N1cmZhY2Vf
dCogdG8sIGNvbnN0IEludFNpemUmIG9mZnNldCwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNp
emUmID0gSW50U2l6ZSgpLCBjYWlyb19vcGVyYXRvcl90ID0gQ0FJUk9fT1BFUkFUT1JfT1ZFUik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGNjNzA0NjE0N2FlODFmMWZh
ZGFhNmQ4NDE2MjQ5ODBjNmZkZmNiZjEuLjhjNDE4NmQ3MWU1M2ExOTA3ZTkyZDczYTJiMDE2NDdm
ZmQ2NmIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0yMTUsNyAr
MjE1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJ
bWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgZGVjb2Rlci5zZXREYXRh
KG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50
KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1l
QXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNlID0g
bV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4gRm9y
IHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVtdWx0
aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZGIGZv
ciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGYwNzkyMGYw
ZDIzMjQ2MmM4ZmI0MWEwMzIyZDgyMmFjOWQ1ZWQzMDcuLjNjZjQ1NDNmMjA1ZWQ5OTQ5ODg2MTA5
MjJjY2RkNzcyNWVlMGMxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI1
OSwxOCArMjU5LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKICAgICBjYWlyb19yZXN0b3JlKGNy
KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZl
SW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChp
c1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd05hdGl2
ZUltYWdlKGltYWdlUHRyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRN
b2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRN
b2RlLCBvcmllbnRhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBOYXRpdmVJ
bWFnZVB0ciBpbWFnZSA9IGltYWdlUHRyOwotCiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNhdmUo
KTsKIAogICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcAppbmRleCBkMGRlN2ExN2M2ODY1MTQ2NWFlN2QwZGE3MjJlZDVlZDQwYmQwMjBlLi4w
NDUzYTYyNTdmMGRlYzc5NGUzNzhmZWE1NjFjMmI3MTZlMzBhMmM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNv
cHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWhhdmlvCiAgICAg
ICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNvcHlDYWlyb0ltYWdlU3VyZmFjZShtX2Rh
dGEubV9zdXJmYWNlLmdldCgpKSk7CiAKICAgICAvLyBCaXRtYXBJbWFnZSB3aWxsIHJlbGVhc2Ug
dGhlIHBhc3NlZCBpbiBzdXJmYWNlIG9uIGRlc3RydWN0aW9uCi0gICAgcmV0dXJuIEJpdG1hcElt
YWdlOjpjcmVhdGUobV9kYXRhLm1fc3VyZmFjZSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpj
cmVhdGUoUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4obV9kYXRhLm1fc3VyZmFjZSkpOwogfQogCiBC
YWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpCkBAIC0yODYs
NyArMjg2LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNl
KGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKICAgICBjYWlyb19zdXJmYWNlX21hcmtf
ZGlydHlfcmVjdGFuZ2xlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIDAsIDAsIG1fc2l6ZS53aWR0
aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwogfQogCi1QYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
Y29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Us
IEludFJlY3QmIHJlY3QpCitSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5U3VyZmFjZVRvSW1h
Z2VBbmRBZGp1c3RSZWN0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgSW50UmVjdCYgcmVjdCkK
IHsKICAgICBjYWlyb19zdXJmYWNlX3R5cGVfdCBzdXJmYWNlVHlwZSA9IGNhaXJvX3N1cmZhY2Vf
Z2V0X3R5cGUoc3VyZmFjZSk7CiAKQEAgLTMwMSw3ICszMDEsNyBAQCBQYXNzUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4gY29weVN1cmZhY2VUb0ltYWdlQW5kQWRqdXN0UmVjdChjYWlyb19zdXJmYWNl
X3QqIHN1cgogfQogCiB0ZW1wbGF0ZSA8TXVsdGlwbHkgbXVsdGlwbGllZD4KLVBhc3NSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBJbWFnZUJ1ZmZlckRhdGEmIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCitSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bWFnZUJ1ZmZlckRhdGEmIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiByZXN1bHQgPSBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlVW5p
bml0aWFsaXplZChyZWN0LndpZHRoKCkgKiByZWN0LmhlaWdodCgpICogNCk7CiAKQEAgLTM3Nywx
MiArMzc3LDEyIEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IGdldEltYWdlRGF0YShj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlCiAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVy
OjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0
ZVN5c3RlbSkgY29uc3QKK1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6Omdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lz
dGVtKSBjb25zdAogewogICAgIHJldHVybiBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihyZWN0
LCBtX2RhdGEsIG1fc2l6ZSk7CiB9CiAKLVBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IElt
YWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3Qs
IENvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdl
QnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENv
b3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0YTxQcmVtdWx0
aXBsaWVkPihyZWN0LCBtX2RhdGEsIG1fc2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDAxYjdkNjky
Y2RiZDdhYjRkMjJiYmMxMzk5YzEwMzI4ZjU3ZTVlNDcuLjMyYmQwYjVjYjU1M2ZjZGVkZGJhYWQy
Zjk2MzYxMzAxZjVkNDZlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC01OCwxOCArNTgsMTcgQEAgYm9vbCBG
cmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBtX29yaWVudGF0aW9uID0g
RGVmYXVsdEltYWdlT3JpZW50YXRpb247CiAgICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsKIAot
ICAgIGlmIChtX2ZyYW1lKSB7CisgICAgaWYgKG1faW1hZ2UpIHsKICNpZiBDQUNIRV9TVUJJTUFH
RVMKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9mcmFtZSk7CisgICAgICAg
IHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1faW1hZ2UuZ2V0KCkpOwogI2VuZGlmCi0gICAg
ICAgIENHSW1hZ2VSZWxlYXNlKG1fZnJhbWUpOwotICAgICAgICBtX2ZyYW1lID0gMDsKKyAgICAg
ICAgbV9pbWFnZSA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNn
SW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdl
KFJldGFpblB0cjxDR0ltYWdlUmVmPiYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
ICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgw
KQogICAgICwgbV9pbWFnZU9yaWVudGF0aW9uKE9yaWdpblRvcExlZnQpCkBAIC04OSw4ICs4OCw4
IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAgICAgLCBtX2hh
dmVGcmFtZUNvdW50KHRydWUpCiB7Ci0gICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0
aChjZ0ltYWdlKTsKLSAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFn
ZSk7CisgICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSk7Cisg
ICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKICAgICBt
X2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0OwogICAgIG1fc2l6ZSA9IEludFNpemUo
d2lkdGgsIGhlaWdodCk7CiAKQEAgLTk5LDcgKzk4LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcElt
YWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgbV9z
aXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXplOwogCiAgICAgbV9mcmFtZXMuZ3Jvdygx
KTsKLSAgICBtX2ZyYW1lc1swXS5tX2ZyYW1lID0gQ0dJbWFnZVJldGFpbihjZ0ltYWdlKTsKKyAg
ICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShpbWFnZSk7CiAgICAgbV9mcmFtZXNbMF0u
bV9oYXNBbHBoYSA9IHRydWU7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVl
OwogCkBAIC0xMzYsNyArMTM1LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENv
bG9yKCkKICAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCFoYXZlRnJhbWVBdEluZGV4KDApKSB7CisgICAgaWYgKCFoYXZlRnJhbWVJbWFnZUF0SW5k
ZXgoMCkpIHsKICAgICAgICAgSW50U2l6ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRl
eCgwLCAwKTsKICAgICAgICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkg
IT0gMSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0Nyw3ICsxNDYsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogCiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IG51
bGxwdHI7CiAgICAgaWYgKG1fZnJhbWVzLnNpemUoKSkKLSAgICAgICAgaW1hZ2UgPSBtX2ZyYW1l
c1swXS5tX2ZyYW1lOworICAgICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCk7
CiAKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xNzMsMTQgKzE3MiwxNCBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQogCiBDR0ltYWdlUmVmIEJp
dG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KDAp
OworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKIH0KIAogQ0dJbWFnZVJl
ZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNp
emUpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBm
cmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lSW1hZ2VB
dEluZGV4KGkpLmdldCgpOwogICAgICAgICBpZiAoY2dJbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VH
ZXRXaWR0aChjZ0ltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKSkgPT0gc2l6ZSkKICAg
ICAgICAgICAgIHJldHVybiBjZ0ltYWdlOwogICAgIH0KQEAgLTE5MywxMSArMTkyLDExIEBAIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkKIHsKICAg
ICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7CiAgICAgaWYgKCFjb3VudCkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIENGTXV0YWJsZUFy
cmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICBpZiAoQ0dJbWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFtZUF0SW5kZXgoaSkpCisg
ICAgICAgIGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdl
dCgpKQogICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJyRnJhbWUpOwog
ICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7CkBAIC0yMTQsMTIgKzIxMywxMiBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsK
ICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYg
Y29udGV4dHMuCiAgICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1D
b250ZXh0KCkpKQotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdElu
ZGV4KG1fY3VycmVudEZyYW1lKSk7CisgICAgICAgIGltYWdlID0gY29weVVuc2NhbGVkRnJhbWVJ
bWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGVsc2UgewogICAgICAgICBDR1JlY3Qg
dHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RBcHBseUFmZmluZVRyYW5zZm9ybShk
ZXN0UmVjdCwgQ0dDb250ZXh0R2V0Q1RNKGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAg
ICAgZmxvYXQgc3Vic2FtcGxpbmdTY2FsZSA9IHN0ZDo6bWluPGZsb2F0PigxLCBzdGQ6Om1heCh0
cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLndpZHRoIC8gc3JjUmVjdC53aWR0aCgpLCB0
cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLmhlaWdodCAvIHNyY1JlY3QuaGVpZ2h0KCkp
KTsKIAotICAgICAgICBpbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3Vic2Ft
cGxpbmdTY2FsZSk7CisgICAgICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50
RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOwogICAgIH0KIAogICAgIGlmICghaW1hZ2UpIC8vIElm
IGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgpAQCAtMjQ1LDI0ICsy
NDQsMjQgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICBpZiAoZGVzY3JpcHRpb24ucmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKICAgICAg
ICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7
CiAKLSAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24p
OworICAgIGN0eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
Y2FsZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAg
ICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXco
dGhpcyk7CiB9CiAKLVBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVk
RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBCaXRtYXBJ
bWFnZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAg
IGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWUpCisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhd
Lm1faW1hZ2UpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDApOwogCiAgICAgaWYgKCFtX2Zy
YW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKQotICAgICAgICByZXR1cm4gQ0dJbWFnZVJl
dGFpbihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSk7CisgICAgICAgIHJldHVybiBtX2ZyYW1lc1tp
bmRleF0ubV9pbWFnZTsKIAotICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgo
aW5kZXgpOworICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRl
eCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggNmMwM2EyY2VmODQ2MDY1NjFl
YTA3ZWI5MjhmMWNmMjk1ZjlmNWUzNi4uOTlmMDlkYjY3YmE1NDI4MmRjNGVkNzA1YWU0MTYzODAz
MzcxOTNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTMzMywxNSArMzMzLDE1IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9kZWNvZGVkSW1hZ2UgPSBh
ZG9wdENGKGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApKTsKLSAgICAgICAgbV9jZ0ltYWdl
ID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CisgICAgICAgIG1fZGVjb2RlZEltYWdlID0gZGVjb2Rl
ci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKKyAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNv
ZGVkSW1hZ2U7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2dJbWFnZSA9IG1faW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIG1faW1hZ2VXaWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2NnSW1h
Z2UpOwotICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1fY2dJbWFnZSk7Cisg
ICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1fY2dJbWFnZS5nZXQoKSk7CisgICAg
bV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9jZ0ltYWdlLmdldCgpKTsKICAgICBp
ZiAoIW1faW1hZ2VXaWR0aCB8fCAhbV9pbWFnZUhlaWdodCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0zNDksNyArMzQ5LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRy
YWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAvLyBz
bywgcmUtcmVuZGVyIGl0IGludG8gYW4gUkdCIGNvbG9yIHNwYWNlLiBUaGUgaW1hZ2UgcmUtcGFj
a2luZwogICAgIC8vIGNvZGUgcmVxdWlyZXMgY29sb3IgZGF0YSwgbm90IGNvbG9yIHRhYmxlIGlu
ZGljZXMsIGZvciB0aGUKICAgICAvLyBpbWFnZSBkYXRhLgotICAgIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9jZ0ltYWdlKTsKKyAgICBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xvclNwYWNlKG1fY2dJbWFnZS5nZXQo
KSk7CiAgICAgQ0dDb2xvclNwYWNlTW9kZWwgbW9kZWwgPSBDR0NvbG9yU3BhY2VHZXRNb2RlbChj
b2xvclNwYWNlKTsKICAgICBpZiAobW9kZWwgPT0ga0NHQ29sb3JTcGFjZU1vZGVsSW5kZXhlZCkg
ewogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0OwpAQCAtMzY0
LDIyICszNjQsMjIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4
dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKIAogICAgICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAg
ICAgICAgIENHQ29udGV4dFNldEludGVycG9sYXRpb25RdWFsaXR5KGJpdG1hcENvbnRleHQuZ2V0
KCksIGtDR0ludGVycG9sYXRpb25Ob25lKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJp
dG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdl
SGVpZ2h0KSwgbV9jZ0ltYWdlKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbV9pbWFnZVdpZHRoLCBtX2ltYWdlSGVpZ2h0
KSwgbV9jZ0ltYWdlLmdldCgpKTsKIAogICAgICAgICAvLyBOb3cgZGlzY2FyZCB0aGUgb3JpZ2lu
YWwgQ0cgaW1hZ2UgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIGNvcHkgZnJvbSB0aGUgYml0bWFwIGNv
bnRleHQuCiAgICAgICAgIG1fZGVjb2RlZEltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7CiAgICAgICAgIG1fY2dJbWFnZSA9IG1f
ZGVjb2RlZEltYWdlLmdldCgpOwogICAgIH0KIAotICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50
ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQobV9jZ0ltYWdlKTsKLSAgICBzaXplX3QgYml0
c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChtX2NnSW1hZ2UpOworICAgIHNpemVf
dCBiaXRzUGVyQ29tcG9uZW50ID0gQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQobV9jZ0ltYWdl
LmdldCgpKTsKKyAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhl
bChtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ICE9IDggJiYgYml0
c1BlckNvbXBvbmVudCAhPSAxNikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChiaXRz
UGVyUGl4ZWwgJSBiaXRzUGVyQ29tcG9uZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
c2l6ZV90IGNvbXBvbmVudHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbCAvIGJpdHNQZXJDb21wb25l
bnQ7CiAKLSAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZvKG1f
Y2dJbWFnZSk7CisgICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5m
byhtX2NnSW1hZ2UuZ2V0KCkpOwogICAgIGJvb2wgYmlnRW5kaWFuU291cmNlID0gZmFsc2U7CiAg
ICAgLy8gVGhlc2UgY291bGQgdGVjaG5pY2FsbHkgYmUgY29tYmluZWQgaW50byBvbmUgbGFyZ2Ug
c3dpdGNoCiAgICAgLy8gc3RhdGVtZW50LCBidXQgd2UgcHJlZmVyIG5vdCB0byBzbyB0aGF0IHdl
IGZhaWwgZmFzdCBpZiB3ZQpAQCAtNDIxLDcgKzQyMSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sCiAKICAgICBtX2FscGhhT3AgPSBBbHBoYURvTm90aGluZzsKICAgICBBbHBoYUZvcm1hdCBh
bHBoYUZvcm1hdCA9IEFscGhhRm9ybWF0Tm9uZTsKLSAgICBzd2l0Y2ggKENHSW1hZ2VHZXRBbHBo
YUluZm8obV9jZ0ltYWdlKSkgeworICAgIHN3aXRjaCAoQ0dJbWFnZUdldEFscGhhSW5mbyhtX2Nn
SW1hZ2UuZ2V0KCkpKSB7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
OgogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBtX2FscGhhT3Ag
PSBBbHBoYURvVW5tdWx0aXBseTsKQEAgLTQ2MSwxNCArNDYxLDE0IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sCiAgICAgaWYgKG1faW1hZ2VTb3VyY2VGb3JtYXQgPT0gRGF0YUZvcm1hdE51bUZv
cm1hdHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIobV9jZ0ltYWdl
KSkpOworICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENH
SW1hZ2VHZXREYXRhUHJvdmlkZXIobV9jZ0ltYWdlLmdldCgpKSkpOwogICAgIGlmICghbV9waXhl
bERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1faW1hZ2VQaXhlbERhdGEgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihDRkRhdGFHZXRCeXRlUHRyKG1fcGl4ZWxEYXRh
LmdldCgpKSk7CiAKICAgICB1bnNpZ25lZCBpbnQgc3JjVW5wYWNrQWxpZ25tZW50ID0gMDsKLSAg
ICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3cobV9jZ0ltYWdlKTsK
KyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3cobV9jZ0ltYWdl
LmdldCgpKTsKICAgICB1bnNpZ25lZCBwYWRkaW5nID0gYnl0ZXNQZXJSb3cgLSBiaXRzUGVyUGl4
ZWwgLyA4ICogbV9pbWFnZVdpZHRoOwogICAgIGlmIChwYWRkaW5nKSB7CiAgICAgICAgIHNyY1Vu
cGFja0FsaWdubWVudCA9IHBhZGRpbmcgKyAxOwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQ
aXhlbHMsIGludCBpbWFnCiAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKICAg
ICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VIZWlnaHQpOwogICAgIGNvbnRleHQuc2V0SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYTQ0OTY1NDA0NmFlOGYx
MGFiYWQxNjQxNWU2NDYwYWRiYmJiOGU4OC4uZjM0MmRhMTY1ODExYjIxNzE2M2NmZjE5ZGU0ZjVm
MTk5ZGQ4NzY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTYyLDE5ICsxNjIsMTkgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1f
dXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1h
Z2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4m
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwg
b3JpZW50YXRpb24pOworICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwg
b3JpZW50YXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGltYWdlKGltYWdlUHRyKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3Vi
SW1hZ2UoaW1hZ2UpOwogCi0gICAgZmxvYXQgY3VyckhlaWdodCA9IG9yaWVudGF0aW9uLnVzZXNX
aWR0aEFzSGVpZ2h0KCkgPyBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgY3VyckhlaWdodCA9IG9yaWVudGF0aW9u
LnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBDR0ltYWdlR2V0V2lkdGgoc3ViSW1hZ2UuZ2V0KCkpIDog
Q0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSk7CiAgICAgaWYgKGN1cnJIZWlnaHQgPD0g
c3JjUmVjdC55KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjE2LDEzICsyMTYsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIgaW1h
Z2VQdHIsIGNvbnN0IEZsb2F0U2kKICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVp
Z2h0KHN1YmltYWdlUmVjdC5oZWlnaHQoKSAvIHlTY2FsZSk7CiAKICNpZiBDQUNIRV9TVUJJTUFH
RVMKLSAgICAgICAgICAgIGltYWdlID0gc3ViaW1hZ2VDYWNoZSgpLmdldFN1YmltYWdlKGltYWdl
LmdldCgpLCBzdWJpbWFnZVJlY3QpOworICAgICAgICAgICAgc3ViSW1hZ2UgPSBzdWJpbWFnZUNh
Y2hlKCkuZ2V0U3ViaW1hZ2Uoc3ViSW1hZ2UuZ2V0KCksIHN1YmltYWdlUmVjdCk7CiAjZWxzZQot
ICAgICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3Qo
aW1hZ2UuZ2V0KCksIHN1YmltYWdlUmVjdCkpOworICAgICAgICAgICAgc3ViSW1hZ2UgPSBhZG9w
dENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3Qoc3ViSW1hZ2UuZ2V0KCksIHN1YmltYWdl
UmVjdCkpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoY3VyckhlaWdodCA8IHNyY1JlY3QubWF4
WSgpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0
KCkpID09IGN1cnJIZWlnaHQgLSBDR1JlY3RJbnRlZ3JhbChzcmNSZWN0KS5vcmlnaW4ueSk7Ci0g
ICAgICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRIZWlnaHQoQ0dJbWFnZUdldEhlaWdo
dChpbWFnZS5nZXQoKSkgLyB5U2NhbGUpOworICAgICAgICAgICAgICAgIEFTU0VSVChDR0ltYWdl
R2V0SGVpZ2h0KHN1YkltYWdlLmdldCgpKSA9PSBjdXJySGVpZ2h0IC0gQ0dSZWN0SW50ZWdyYWwo
c3JjUmVjdCkub3JpZ2luLnkpOworICAgICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0
SGVpZ2h0KENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpIC8geVNjYWxlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludChkZXN0UmVjdC54KCkgLSBzcmNSZWN0LngoKSAvIHhTY2Fs
ZSwgZGVzdFJlY3QueSgpIC0gc3JjUmVjdC55KCkgLyB5U2NhbGUpKTsKQEAgLTI2Miw3ICsyNjIs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFn
ZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaQogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRl
eHQsIDEsIC0xKTsKIAogICAgIC8vIERyYXcgdGhlIGltYWdlLgotICAgIENHQ29udGV4dERyYXdJ
bWFnZShjb250ZXh0LCBhZGp1c3RlZERlc3RSZWN0LCBpbWFnZS5nZXQoKSk7CisgICAgQ0dDb250
ZXh0RHJhd0ltYWdlKGNvbnRleHQsIGFkanVzdGVkRGVzdFJlY3QsIHN1YkltYWdlLmdldCgpKTsK
IH0KIAogc3RhdGljIHZvaWQgZHJhd1BhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRl
eHRSZWYgY29udGV4dCkKQEAgLTMxMSw4ICszMTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dAogICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNlLngoKSAtIGRlc3RSZWN0LngoKSArIHRpbGVS
ZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAv
LyBXZSB0cmFuc2xhdGVkIHRoZSBjb250ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBv
cmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91dC4KICAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVj
dC5oZWlnaHQoKSAtIChwaGFzZS55KCkgLSBkZXN0UmVjdC55KCkgKyB0aWxlUmVjdC55KCkgKiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVI
ZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJlZiB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwotICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFn
ZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOworICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CiAK
ICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2U7CiAjaWYgUExBVEZPUk0oSU9TKQpA
QCAtMzI2LDEzICszMjYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICAgICAgLy8g
Q29weWluZyBhIHN1Yi1pbWFnZSBvdXQgb2YgYSBwYXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9w
cyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9yaWdpbmFsIGltYWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFw
cGVuCiAgICAgICAgIC8vIGJlY2F1c2Ugc3ViLWltYWdlcyBhcmUgb25seSB1c2VkIGZvciBib3Jk
ZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVuZGVycyB3aGVuIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNv
ZGVkLgogICAgICAgICBBU1NFUlQoaCA9PSBpbWFnZS5oZWlnaHQoKSk7Ci0gICAgICAgIHN1Yklt
YWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZSwgdGls
ZVJlY3QpKTsKKyAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1h
Z2VJblJlY3QodGlsZUltYWdlLmdldCgpLCB0aWxlUmVjdCkpOwogICAgIH0KIAogICAgIC8vIElm
IHdlIG5lZWQgdG8gcGFpbnQgZ2FwcyBiZXR3ZWVuIHRpbGVzIGJlY2F1c2Ugd2UgaGF2ZSBhIHBh
cnRpYWxseSBsb2FkZWQgaW1hZ2Ugb3Igbm9uLXplcm8gc3BhY2luZywKICAgICAvLyBmYWxsIGJh
Y2sgdG8gdGhlIGxlc3MgZWZmaWNpZW50IENHUGF0dGVybi1iYXNlZCBtZWNoYW5pc20uCiAgICAg
ZmxvYXQgc2NhbGVkVGlsZVdpZHRoID0gdGlsZVJlY3Qud2lkdGgoKSAqIG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOwotICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0
V2lkdGgodGlsZUltYWdlKTsKKyAgICBmbG9hdCB3ID0gQ0dJbWFnZUdldFdpZHRoKHRpbGVJbWFn
ZS5nZXQoKSk7CiAgICAgaWYgKHcgPT0gaW1hZ2Uuc2l6ZSgpLndpZHRoKCkgJiYgaCA9PSBpbWFn
ZS5zaXplKCkuaGVpZ2h0KCkgJiYgIXNwYWNpbmcud2lkdGgoKSAmJiAhc3BhY2luZy5oZWlnaHQo
KSkgewogICAgICAgICAvLyBGSVhNRTogQ0cgc2VlbXMgdG8gc25hcCB0aGUgaW1hZ2VzIHRvIGlu
dGVncmFsIHNpemVzLiBXaGVuIHdlIGNhcmUgKGUuZy4gd2l0aCBib3JkZXItaW1hZ2UtcmVwZWF0
OiByb3VuZCksCiAgICAgICAgIC8vIHdlIHNob3VsZCB0aWxlIGFsbCBidXQgdGhlIGxhc3QsIGFu
ZCBzdGV0Y2ggdGhlIGxhc3QgaW1hZ2UgdG8gZml0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4NDYzOTZjMTkw
MjdjMmMyYmUyNTVjNzY0YWNhZTc2MmZlN2U5ODdhLi4yMTgyMTQ2ZjU3ZTU3MDU1MDY4MmM2ZWQ1
ODEwMzU4MWFkZWI0MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBS
ZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWlu
UHRyPENHSW1hZ2VSZWY+CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShpbWFnZS5nZXQoKSk7CisgICAgcmV0
dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSkpOwogfQogCiBSZWZQdHI8SW1h
Z2U+IEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3Is
IFNjYWxlQmVoYXZpb3Igc2NhbGVCZWhhdmlvcikgY29uc3QKQEAgLTMxOSw3ICszMTksNyBAQCB2
b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHNyYwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRS
ZWN0JiByZWN0LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CitSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVt
KSBjb25zdAogewogICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAg
ICAgICAgZmx1c2hDb250ZXh0KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgUGFzc1JlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YShjb25z
dCBJbnRSZWMKICAgICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXpl
KCksIGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKIH0KIAotUGFz
c1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJ
bWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRl
U3lzdGVtKSBjb25zdAorUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0
UHJlbXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBDb29yZGluYXRlU3lz
dGVtIGNvb3JkaW5hdGVTeXN0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKGNvbnRleHQoKS5pc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXgg
ZDRhMDEyYjZmNTdiZjUzOTMwNjQ3NzdiNmMxMDkzNjZiMjRjNDQ1Yy4uNTAxNWRkMTVhYmZjODI1
ZGNlYjAzMjBmMTIwMjljYmE1MTIxODI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTM0MCw3ICszNDAsNyBA
QCBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2Rl
Y29kZXIgPyBDR0ltYWdlU291cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLUNHSW1h
Z2VSZWYgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAgaWYgKCFpbml0aWFsaXplZCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2NiwxOCArMzY2LDE1IEBAIENHSW1hZ2VSZWYgSW1h
Z2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtCiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIHhibVVUSSA9IENGU1RSKCJw
dWJsaWMueGJpdG1hcC1pbWFnZSIpOwogCiAgICAgaWYgKCFpbWFnZVVUSSkKLSAgICAgICAgcmV0
dXJuIGltYWdlLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOwogCiAgICAgaWYgKCFD
RkVxdWFsKGltYWdlVVRJLCB4Ym1VVEkpKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigp
OworICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgCiAgICAgLy8gSWYgaXQgaXMgYW4geGJtIGlt
YWdlLCBtYXNrIG91dCBhbGwgdGhlIHdoaXRlIGFyZWFzIHRvIHJlbmRlciB0aGVtIHRyYW5zcGFy
ZW50LgogICAgIGNvbnN0IENHRmxvYXQgbWFza2luZ0NvbG9yc1s2XSA9IHsyNTUsIDI1NSwgIDI1
NSwgMjU1LCAyNTUsIDI1NX07CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1hc2tlZEltYWdl
ID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0KCksIG1h
c2tpbmdDb2xvcnMpKTsKLSAgICBpZiAoIW1hc2tlZEltYWdlKQotICAgICAgICByZXR1cm4gaW1h
Z2UubGVha1JlZigpOwotCi0gICAgcmV0dXJuIG1hc2tlZEltYWdlLmxlYWtSZWYoKTsKKyAgICBy
ZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdlOwogfQogCiBib29sIEltYWdl
U291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAwMjRjYmZlMDBiNTIyMzM5MzM1OTIwZjlmODUz
NGM4MzZkYWNjZjg4Li40OTI3ZWFiZjhlZDEyYTZjMjFlYWIzMWJmZTYyZjUyYzZiMjRlYjA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC00OTEsMTEgKzQ5MSwxMSBA
QCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykK
LURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFn
ZVB0ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCitEcmF3TmF0aXZl
SW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgIDogRHJhd2luZ0l0ZW0oSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKICNpZiBVU0UoQ0cpCiAgICAgLy8gRklYTUU6IE5lZWQg
dG8gc3RvcmUgYW4gaW1hZ2UgZm9yIENhaXJvLgotICAgICwgbV9pbWFnZVB0cihpbWFnZVB0cikK
KyAgICAsIG1faW1hZ2UoaW1hZ2UpCiAjZW5kaWYKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6
ZSkKICAgICAsIG1fZGVzdGluYXRpb24oZGVzdFJlY3QpCkBAIC01MDcsNyArNTA3LDcgQEAgRHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdlUHRyIGltYWdlUHRy
LCBjb25zdCBGbG9hdFNpemUmIGkKICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCiB7
CiAjaWYgIVVTRShDRykKLSAgICBVTlVTRURfUEFSQU0oaW1hZ2VQdHIpOworICAgIFVOVVNFRF9Q
QVJBTShpbWFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKG9wKTsKICAgICBVTlVTRURfUEFSQU0oYmxl
bmRNb2RlKTsKICNlbmRpZgpAQCAtNTE2LDcgKzUxNiw3IEBAIERyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciBpbWFnZVB0ciwgY29uc3QgRmxvYXRTaXpl
JiBpCiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBjb25zdAogewogI2lmIFVTRShDRykKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2lt
YWdlUHRyLmdldCgpLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9zcmNSZWN0LCBtX29w
LCBtX2JsZW5kTW9kZSwgbV9vcmllbnRhdGlvbik7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcCwg
bV9ibGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29u
dGV4dCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDVhODQ5
NjRjNTc5YjMyZmRjMGVjNmVmMTQ1ZjY0MjYwZjEzNWFmZmYuLjQ3MGYyODI5MTAwODU0YzNjMDVm
NmRlZmVkMjE1YjVmYzY0N2RhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtNjM5LDIzICs2MzksMjMgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykK
IGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShQYXNzTmF0aXZlSW1hZ2VQdHIg
aW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorICAgIHN0
YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZVB0ciwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpOwogICAg
IH0KIAogICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0K
ICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
OyB9CiAKIHByaXZhdGU6Ci0gICAgRHJhd05hdGl2ZUltYWdlKFBhc3NOYXRpdmVJbWFnZVB0ciwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKTsKKyAgICBEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb24pOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsg
fQogCiAjaWYgVVNFKENHKQotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2ltYWdlUHRyOwor
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2ltYWdlOwogI2VuZGlmCiAgICAgRmxvYXRTaXpl
IG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDVlNTJlYzkxOTIzZDQ1OWYwODIyMTkx
ZjY2OWQwYzAwZWVkZjI1OGEuLjBiZjE0YmVmNzliZDNhYjJmYjczZjZjNzUwODA3MjZkYTQ0MWUz
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTExOSw5
ICsxMTksOSBAQCB2b2lkIFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0CiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVT
RShDQUlSTykKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9p
ZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7Ci0gICAgRHJhd2luZ0l0
ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZl
SW1hZ2U6OmNyZWF0ZShpbWFnZVB0ciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3As
IGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKSk7CisgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBk
b3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShp
bWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50
YXRpb24pKSk7CiAgICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVtKTsKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggYTVkMmM3MWEyNWViZGJmZTRm
M2JhN2ZkYWNkMWYyZGU1ODg2ZGM1MC4uZWI5OWEzZGRhMDBkMzE3MGNmYzhmMDg2YTQwMjljYmJj
ZTFjZDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC04Niw3
ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJik7CiAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6
VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAjaWYgVVNFKENH
KSB8fCBVU0UoQ0FJUk8pCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGFzc05hdGl2ZUltYWdl
UHRyLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb24pOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKICNlbmRpZgogICAgIHZvaWQgZHJhd1BhdHRlcm4o
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCBiYTQxNTk3YWEx
MTAxZGI2MjkwMjNkMjczYjIwMGU3ODFkMzNhYWM5Li41OWNjMmM5YmU4YjNmZmUxMTE4NmE2ODVk
MmU4Y2Y1OTRjMWQzOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAgLTI2Myw3ICsy
NjMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJh
bWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNy
ZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VT
dXJmYWNlID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAg
Ly8gMS4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBu
byBQcmVtdWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBp
cyAweEZGIGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWZsL0ljb25FZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWZsL0ljb25FZmwuY3BwCmluZGV4IDljOTJjMDg1M2MyNjFjNzYwYTdjMDgxZjZjODdl
OTkwYjFiODhkYWIuLjA3YmViZTY5NDljMWM4NGExZTc4NjQyMWMwZTlkN2FmNzc3ZTc2ZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JY29uRWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSWNvbkVmbC5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTEsMTAg
KzUxLDEwIEBAIEljb246On5JY29uKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpj
cmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQorUmVmUHRyPEljb24+IElj
b246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
dm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
R1N0cmVhbWVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCmluZGV4IGVlMjcyNzdmZjBiN2U5MDMzZjRi
OTMzNjAyOGFjZjQyMThiMjBhNWYuLmM1NWNmZGY5N2I3ZDQzYzVkMzRmMmY5YzU1NjM3NmY1YTk2
YTZmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgSW1hZ2VHU3RyZWFtZXI6OkltYWdlR1N0cmVhbWVyKEdzdFNhbXBsZSogc2FtcGxlKQog
CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX2lt
YWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlckRhdGEsIGNhaXJvRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBzdHJpZGUpKTsKICAgICBBU1NFUlQoY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3Vy
ZmFjZS5nZXQoKSkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpOwotICAgIG1faW1hZ2UgPSBCaXRt
YXBJbWFnZTo6Y3JlYXRlKHN1cmZhY2UucmVsZWFzZSgpKTsKKyAgICBtX2ltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHN1cmZhY2UpKTsKIAogICAgIGlmIChHc3RWaWRlb0Nyb3BN
ZXRhKiBjcm9wTWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2Nyb3BfbWV0YShidWZmZXIpKQog
ICAgICAgICBzZXRDcm9wUmVjdChGbG9hdFJlY3QoY3JvcE1ldGEtPngsIGNyb3BNZXRhLT55LCBj
cm9wTWV0YS0+d2lkdGgsIGNyb3BNZXRhLT5oZWlnaHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcAppbmRleCA1OTQ1ZTFmOGM0YjQ3NDQ4
ZjM0ODVmYzY0YmI1NzY1N2FmNGMzOGZlLi44ODBjNGM5Nzk0YTVlZDZkM2FjMmY4YTY3NDdjYzIx
MjY5MmQyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvSWNvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0ljb25HdGsuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAK
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkw
LDcgKzkwLDcgQEAgc3RhdGljIFN0cmluZyBsb29rdXBJY29uTmFtZShTdHJpbmcgTUlNRVR5cGUp
CiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoZSBjb2RlIHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZp
bGVzKCkuCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxl
bmFtZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KaW5kZXggMjE1OTE1ZjI4YTE5MjE3MjM5
NmQ0NmYwODZkMjI0OWI4MWQ5ZDc2YS4uMzZiMjRmNWNmZjBhNmI2MWU1NDU3NDY3MzJiNjI2Y2Qz
OTg3Y2I0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9z
L0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAot
SWNvbjo6SWNvbihDR0ltYWdlUmVmIGltYWdlKQorSWNvbjo6SWNvbihjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpCiAgICAgOiBtX2NnSW1hZ2UoaW1hZ2UpCiB7CiB9CkBAIC00MiwxNyArNDIs
MTcgQEAgSWNvbjo6fkljb24oKQogewogfQogCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypmaWxlbmFtZXMqLykKK1JlZlB0
cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8q
ZmlsZW5hbWVzKi8pCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8SWNv
bj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlUmVmKQorUmVm
UHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4mIGltYWdlKQogewotICAgIGlmICghaW1hZ2VSZWYpCisgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaW1h
Z2VSZWYpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEljb24oaW1hZ2UpKTsKIH0KIAogdm9p
ZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSWNvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29u
TWFjLm1tCmluZGV4IDRjZmM1MmZkYzEzNTdkZWYxNjkzZGExNzlhYjg0MmU2YzQ1OGY5OTQuLmU0
NjA1ZGUyMDAzYmRmMDY2MzczNTAzNzAwYWIwMTAyZDZjMzU2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW1wb3J0ICJJbnRSZWN0LmgiCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgotI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDcsNyBAQCBJY29uOjp+SWNvbigp
CiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoZSBjb2RlIHRvIENocm9tZUNsaWVudDo6aWNvbkZvckZp
bGVzKCkuCi1QYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQorUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogewogICAgIGlmIChmaWxl
bmFtZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQppbmRleCBmZjA3MTMxYTYx
ZmNlZDA0NTg2YjM3MmQ5YmEyMDc5YTk4NzNjMzhiLi5mYTAxMWFhODgxNjMwMzAwMDk0NDk4ZWJj
MGZmY2E5ZmI5YzMwMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tCkBAIC05NSw3ICs5NSw3IEBAIENGRGF0YVJlZiBCaXRtYXBJbWFn
ZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkKIAogICAgIFZlY3RvcjxDR0ltYWdlUmVmPiBpbWFn
ZXM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZyYW1lczsgKytpICkgewotICAg
ICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1h
Z2VSZWYgY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwogICAgICAgICBpZiAo
Y2dJbWFnZSkKICAgICAgICAgICAgIGltYWdlcy5hcHBlbmQoY2dJbWFnZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAppbmRleCA5YWE2
N2E1ZTA2YTk0MWZmYmE0ZDU4NDIwNzcyYzI3YWI4ZWM2NWVhLi5lMGQ4MTViZDAyN2RhYjU1Y2Y0
NGVjMTQ4OGUzMThjYThmZjE2MzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMzcsNyArMzcsNyBAQCB2b2lkIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6c2V0RmFjdG9yeShDb29yZGluYXRlZFN1cmZhY2U6OkZhY3RvcnkgZmFjdG9yeSkKICAg
ICBzX2ZhY3RvcnkgPSBmYWN0b3J5OwogfQogCi1QYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFj
ZT4gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZmxhZ3MpCitSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBDb29yZGluYXRlZFN1cmZhY2U6OmNy
ZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKIHsKICAgICBBU1NFUlQoc19m
YWN0b3J5KTsKICAgICByZXR1cm4gc19mYWN0b3J5KHNpemUsIGZsYWdzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaAppbmRleCBmNWU3M2U1ODU0OTNmOTVh
ZjQ3NGJkNDM1OGM2NDI4M2M1NjgzMDU4Li5mOWQzMjYyMzNhYmQxN2M4MDgyYTc5MDNlOTg1ZmQ0
M2MyZDAwNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFj
ZS5oCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIHBhaW50VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQmKSA9IDA7
CiAgICAgfTsKIAotICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IEZh
Y3RvcnkoY29uc3QgSW50U2l6ZSYsIEZsYWdzKTsKKyAgICB0eXBlZGVmIFJlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+IEZhY3RvcnkoY29uc3QgSW50U2l6ZSYsIEZsYWdzKTsKICAgICBzdGF0aWMg
dm9pZCBzZXRGYWN0b3J5KEZhY3RvcnkpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5h
dGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBGbGFncyk7CisgICAgc3RhdGljIFJl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgRmxhZ3MpOwog
CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRTdXJmYWNlKCkgeyB9CiAKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRSZWN0
JiwgQ2xpZW50KikgPSAwOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZpcnR1YWwg
dm9pZCBjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4sIGNvbnN0IEludFJl
Y3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiwgY29uc3QgSW50UmVj
dCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KSA9IDA7CiAjZW5kaWYKIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ljb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lj
b25XaW4uY3BwCmluZGV4IGE3ODA3MGQ5YWFhZjdmNGUyYTMxODllZTE0OGE2YTVjNzkzODhjMDUu
LmEzOTQ2Y2FmNGY4M2UwMGNmZDFiOTlhNThmMmM5OTIyMzE3OWI0ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgSWNvbjo6fkljb24oKQogfQogCiAvLyBGSVhNRTogTW92ZSB0aGUgY29kZSB0byBDaHJv
bWVDbGllbnQ6Omljb25Gb3JGaWxlcygpLgotUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykKK1JlZlB0cjxJY29u
PiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1l
cykKIHsKICAgICBpZiAoZmlsZW5hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5j
cHAKaW5kZXggODM1ZWNmM2Y0ZmVlZWI4YTBkZmE4ZDM2OTczMTI4ZjNiODA3YjkyNi4uOWFjNTU5
YzgxNTcwY2RiZDM5MjMyMzU5YzMwYjEzMGVkMTY3NWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtMzYsNyArMzYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJp
dG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQorUmVmUHRyPEJpdG1hcEltYWdlPiBC
aXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKIHsKICAgICBESUJTRUNUSU9OIGRp
YlNlY3Rpb247CiAgICAgaWYgKCFHZXRPYmplY3QoaEJpdG1hcCwgc2l6ZW9mKERJQlNFQ1RJT04p
LCAmZGliU2VjdGlvbikpCkBAIC01NCw5ICs1NCw5IEBAIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+
IEJpdG1hcEltYWdlOjpjcmVhdGUoSEJJVE1BUCBoQml0bWFwKQogICAgICAgICBkaWJTZWN0aW9u
LmRzQm0uYm1XaWR0aEJ5dGVzLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5
dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOwogCiAg
ICAgLy8gVGhlIEJpdG1hcEltYWdlIHRha2VzIG93bmVyc2hpcCBvZiB0aGlzLgotICAgIENHSW1h
Z2VSZWYgY2dJbWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7CiAKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJpdG1hcEltYWdlKGNnSW1hZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEJpdG1hcEltYWdlKFdURk1vdmUoY2dJbWFnZSkpKTsKIH0KIAogYm9vbCBCaXRtYXBJ
bWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkK
QEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
Y2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAgICBzaXplX3Qg
ZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVz
OyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleChpKTsKKyAg
ICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwogICAg
ICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0
YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90
IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJh
bWUgPSBpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDI5YTIwMjNkYjYzYTkxNDM0YzM5NDhlYWE1NTIzYmI2
MWZlODEwNzUuLmRhYjk2YTM4YzU0ODEwMmFhZTI3YWEwMTllZWI5OWU1YThjNDIyMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWly
b1dpbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkK
K1JlZlB0cjxCaXRtYXBJbWFnZT4gQml0bWFwSW1hZ2U6OmNyZWF0ZShIQklUTUFQIGhCaXRtYXAp
CiB7CiAgICAgRElCU0VDVElPTiBkaWJTZWN0aW9uOwogICAgIGlmICghR2V0T2JqZWN0KGhCaXRt
YXAsIHNpemVvZihESUJTRUNUSU9OKSwgJmRpYlNlY3Rpb24pKQpAQCAtNTIsNyArNTIsNyBAQCBQ
YXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1h
cCkKIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBhZG9wdFJlZihjYWly
b193aW4zMl9zdXJmYWNlX2NyZWF0ZV93aXRoX2RpYihDQUlST19GT1JNQVRfQVJHQjMyLCBkaWJT
ZWN0aW9uLmRzQm0uYm1XaWR0aCwgZGliU2VjdGlvbi5kc0JtLmJtSGVpZ2h0KSk7CiAKLSAgICBy
ZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShzdXJmYWNlLnJlbGVhc2UoKSk7CisgICAgcmV0dXJu
IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIGJvb2wgQml0bWFw
SW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUp
CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291
cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90
IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1l
czsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFt
ZUF0SW5kZXgoaSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkp
OwogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
aAppbmRleCBmYzg3ZjgzNDAzMzE5NTU3M2Y1NjdmYzA1OGM3YzczZDg1OGExOTdhLi5iMzU0N2Q5
NGU4MDhmODc0YWVkOWRhMGYyOTFiZWNlMjBhNjQ2NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtOTgsNyAr
OTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJldHVybnMgYSBjYWxsZXIt
b3duZWQgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBuYXRpdmUgaW1hZ2UgZGF0YS4KICAgICAg
ICAgLy8gKEFjdHVhbCB1c2U6IFRoaXMgcG9pbnRlciB3aWxsIGJlIG93bmVkIGJ5IEJpdG1hcElt
YWdlIGFuZCBmcmVlZCBpbgogICAgICAgICAvLyBGcmFtZURhdGE6OmNsZWFyKCkpLgotICAgICAg
ICBQYXNzTmF0aXZlSW1hZ2VQdHIgYXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0OworICAgICAgICBO
YXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBo
YXNBbHBoYSgpIGNvbnN0OwogICAgICAgICBjb25zdCBJbnRSZWN0JiBvcmlnaW5hbEZyYW1lUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxGcmFtZVJlY3Q7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0lt
YWdlRGVjb2RlckNhaXJvLmNwcAppbmRleCAzZmU3MDQwMjM0MTlkOTc1M2IxMzk5ZDlmNmMwMGI2
NzM5NDUxMjk2Li43YjQxMjk1Zjg1NzM1OGZiYmYzNWMxYjA1MjVlOGQ2Y2MzNTIwZjU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZURlY29kZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRnJhbWU6OmFzTmV3
TmF0aXZlSW1hZ2UoKSBjb25zdAorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRp
dmVJbWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZh
Y2VfY3JlYXRlX2Zvcl9kYXRhKAogICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo
YXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KG1fYnl0ZXMpKSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IGFkMjU5ODk2ODMwYTQ5YTM5
ODMwOGM4NDIxOTZmMmM5NzYxOGIwMTguLjM2Y2Q2NTE2ZTgwZjE3NDhiZmVhYjc3YTkzMDI3MWMx
MjFkZTgwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNH
V2luLmNwcApAQCAtMTI4LDcgKzEyOCw2IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogICAgIGlm
ICghaGJtcCB8fCAhZHJhd0NvbnRleHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQ0dJbWFn
ZVJlZiBzcmNJbWFnZSA9IGltZy0+Z2V0Q0dJbWFnZVJlZigpOwogICAgIENHUmVjdCByZWN0Owog
ICAgIHJlY3Quc2l6ZSA9IEludFNpemUoaW1nLT5zaXplKCkpOwogICAgIHJlY3Qub3JpZ2luLngg
PSAwOwpAQCAtMTM3LDcgKzEzNiw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogICAgIENHQ29u
dGV4dFNjYWxlQ1RNKGRyYXdDb250ZXh0LCAxLCAtMSk7CiAgICAgQ0dDb250ZXh0U2V0RmlsbENv
bG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoZHJhd0NvbnRl
eHQsIHJlY3QpOwotICAgIGlmIChzcmNJbWFnZSkgeworICAgIGlmIChhdXRvIHNyY0ltYWdlID0g
aW1nLT5nZXRDR0ltYWdlUmVmKCkpIHsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGRy
YXdDb250ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOwogICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoZHJhd0NvbnRleHQsIHJlY3QsIHNyY0ltYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA0MmVhNWVlNTM0MjFhNzdkMDdlMzRlNmY4MGI0
MzNjNjIwNzM3YjhjLi5jMTVmYWZiZDhlYTFiNjEzMjQ4NjU2NTRkOTQ5NDJkZmVkNDY1MzU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE4MCwxNyArMTgw
LDE3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpCiB9CiAKICNpZiBVU0UoQ0FJUk8pCi0vLyBQ
YXNzZXMgb3duZXJzaGlwIG9mIHRoZSBuYXRpdmUgaW1hZ2UgdG8gdGhlIGNhbGxlciBzbyBQYXNz
TmF0aXZlSW1hZ2VQdHIgbmVlZHMKKy8vIFBhc3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBp
bWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2ZUltYWdlUHRyIG5lZWRzCiAvLyB0byBiZSBhIHNt
YXJ0IHBvaW50ZXIgdHlwZS4KLVBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKQorTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQ2Fpcm8gZG9lcyBub3QgdXNlIHRo
ZSBhY2NlbGVyYXRlZCBkcmF3aW5nIGZsYWcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRp
dGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgVW5hY2NlbGVyYXRl
ZCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBkcmF3KGJ1ZmZlci0+
Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2Rl
Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggODcwZjZjODVjNWU2ODRlMTc3YzMwZDE2YzIxNjZh
MzQwZGNkNWE3Yi4uNDkxZGRmYjNjMjEzOWVmODgyMTAxZDFhZjQ1YjVhZWYxMTBjNGZkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXRBbmltYXRpb24oKSBvdmVycmlkZTsKIAogI2lmIFVTRShDQUlS
TykKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBv
dmVycmlkZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
IG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCA0ZTE2MWUzZjBkNDRh
NmFhNmVhNmMwM2Y1ZWQ5YWJjMTllYmFlYTFkLi43ZTE0M2RlZDJkNjY5YWIzYWMwOWM0OTZiNGU0
YmVlN2RjODdmMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBTVkdJbWFnZUZv
ckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QKICAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBt
X2NvbnRhaW5lclNpemUsIG1fem9vbSwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCi1QYXNzTmF0
aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkKK05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpCiB7CiAgICAgcmV0dXJuIG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5oCmluZGV4IDM1OTc1NDI4OWZjMzA0MjE4Y2RiOGJmMTIwM2I4NzNj
MjlmZDUyZDIuLmQyMjRmYzQ2MTJmZDk1YTFhZWE3N2FmYjQ0Nzk3NjkyMzUyN2FjZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5o
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMg
dG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVP
cGFxdWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgUGFzc05hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBTVkdJbWFnZUZvckNvbnRhaW5lcihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViQ2FjaGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1t
CmluZGV4IGQ3MWU2NjQzYjNjMjEyYjJkYjY0NGIzMTUyOTRiMWMzYmM3NmZjZjguLmI2NTlkNmRi
ZjlhZDY5OTljM2FjOTYyZGU5NTE1NzgwOTdlMWYzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJD
YWNoZS5tbQpAQCAtMTcyLDcgKzE3Miw3IEBAICsgKGJvb2wpYWRkSW1hZ2VUb0NhY2hlOihDR0lt
YWdlUmVmKWltYWdlIGZvclVSTDooTlNVUkwgKil1cmwgZm9yRnJhbWU6KFdlYkZyYW1lCiAgICAg
aWYgKGZyYW1lKQogICAgICAgICB0b3BPcmlnaW4gPSBjb3JlKGZyYW1lKS0+ZG9jdW1lbnQoKS0+
dG9wT3JpZ2luKCk7CiAjZW5kaWYKLSAgICByZXR1cm4gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNp
bmdsZXRvbigpLmFkZEltYWdlVG9DYWNoZShpbWFnZSwgdXJsLCB0b3BPcmlnaW4gPyB0b3BPcmln
aW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgOiBlbXB0eVN0cmluZygpKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmFkZEltYWdlVG9DYWNoZShSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4oaW1hZ2UpLCB1cmwsIHRvcE9yaWdpbiA/IHRvcE9yaWdpbi0+ZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24oKSA6IGVtcHR5U3RyaW5nKCkpOwogfQogCiArICh2b2lkKXJl
bW92ZUltYWdlRnJvbUNhY2hlRm9yVVJMOihOU1VSTCAqKXVybApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXcuaAppbmRleCAyNmYwODc0ZTVmNWE1Yzg5OTM0ZTBiODEyZGI0OGI3Yjc1
OWY1NDE2Li42OWNiMDEzYTA0NmYxM2U1MzllYWJkNDc2YjU3ZjVhZGUzYTA3OWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC0yOTIsNyArMjkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lk
IGhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVudCopOwogCiAgICAgICAgIHZvaWQgcGFpbnRJbnRv
VHJhbnNmb3JtZWRDb250ZXh0KEhEQyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8SW1hZ2U+IHNuYXBz
aG90KCk7CisgICAgICAgIFJlZlB0cjxJbWFnZT4gc25hcHNob3QoKTsKIAogICAgICAgICBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAyNWVhZjU1MDVlNjczZDMzNTA5MTY1MTIxZjNiMzQy
ZGE5MDc4ZjUyLi4yZmNhOWYzYzk1ZDczZGJhM2FjMzI2MjU5ZWE4NmRkY2RkYTIwNzBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKQEAgLTkyMCw3ICs5
MjAsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBsYXRmb3JtRGVzdHJveSgpCiAgICAgc2V0UGxhdGZv
cm1QbHVnaW5XaWRnZXQoMCk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IFBsdWdpblZpZXc6OnNu
YXBzaG90KCkKK1JlZlB0cjxJbWFnZT4gUGx1Z2luVmlldzo6c25hcHNob3QoKQogewogI2lmICFV
U0UoV0lOR0RJKQogICAgIGF1dG8gaGRjID0gYWRvcHRHRElPYmplY3QoOjpDcmVhdGVDb21wYXRp
YmxlREMoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKaW5kZXggYTAz
Mzg0MjdkNjViMmViZTM3MGUzZjY4ZTU0Y2FmNDYxNzYyZjU1My4uY2Q4NGY3NTViNmJiN2QzYTU0
NjY5NzMzNjEyNDcyYzlkOGVmZjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZh
Y2UuY3BwCkBAIC05OSw4ICs5OSw3IEBAIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdl
YkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgSW50CiAgICAgaWYg
KCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVChzdXJmYWNl
KTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBm
bGFncywgc3VyZmFjZS5yZWxlYXNlKCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNv
b3JkaW5hdGVkU3VyZmFjZShzaXplLCBmbGFncywgV1RGTW92ZShzdXJmYWNlKSkpOwogfQogI2Vu
ZGlmCiAKQEAgLTExOCwyNSArMTE3LDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRl
eHQ+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvCiAgICAg
cmV0dXJuIGdyYXBoaWNzQ29udGV4dDsKIH0KIAotUmVmPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4g
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRp
bmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJp
dG1hcCkKK1JlZjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxh
Z3MsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIGJpdG1hcCkpOwogfQog
Ci1XZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBJbnRT
aXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwKQorV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGlu
YXRlZFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFn
cyBmbGFncywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQogICAgIDogQ29vcmRpbmF0
ZWRTdXJmYWNlKHNpemUsIGZsYWdzKQogICAgICwgbV9iaXRtYXAoYml0bWFwKQogewogfQogCiAj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi1XZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3Jk
aW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1
cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4g
c3VyZmFjZSkKK1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxh
Z3MsIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCiAgICAgOiBDb29y
ZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MpCiAgICAgLCBtX2dyYXBoaWNzU3VyZmFjZShzdXJm
YWNlKQogewogfQogCi1SZWY8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1
cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZs
YWdzIGZsYWdzLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKK1JlZjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFJlZlB0cjxHcmFw
aGljc1N1cmZhY2U+IHN1cmZhY2UpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlKSk7CiB9CkBAIC0xNTUsNyArMTU0
LDcgQEAgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUKICAgICAgICAgICAgIHN1cmZhY2VGbGFncyB8
PSBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzQWxwaGE7CiAgICAgICAgIFJlZlB0cjxHcmFwaGlj
c1N1cmZhY2U+IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShoYW5kbGUubV9zaXpl
LCBzdXJmYWNlRmxhZ3MsIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKTsKICAgICAgICAg
aWYgKHN1cmZhY2UpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5h
dGVkU3VyZmFjZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgc3VyZmFjZS5yZWxlYXNl
KCkpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBXVEZNb3ZlKHN1cmZhY2UpKSk7CiAg
ICAgfQogI2VuZGlmCiAKQEAgLTE2Myw3ICsxNjIsNyBAQCBSZWZQdHI8V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRs
ZQogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGJpdG1hcC5yZWxlYXNlKCkp
OworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIFdURk1v
dmUoYml0bWFwKSk7CiB9CiAKIGJvb2wgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVIYW5k
bGUoSGFuZGxlJiBoYW5kbGUpCkBAIC0xOTEsNyArMTkwLDcgQEAgdm9pZCBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OnBhaW50VG9TdXJmYWNlKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVk
U3VyZmEKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4g
cGFzc1RleHR1cmUsIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJj
ZU9mZnNldCkKK3ZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKFJlZlB0
cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiBwYXNzVGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFy
Z2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KQogewogICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiB0ZXh0dXJlKHBhc3NUZXh0dXJlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1
cmZhY2UuaAppbmRleCA3ZTYxMWM4ZDY2NDdiMTdkOTk1YjhmMGIzZTZlOTU4Zjc2NDNhMDI1Li45
MzhmNmE1YjE0ZWQ4ZTZhNTljZjhiZGUwZTQyNmM0MGFhMzU0ZThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJD
b29yZGluYXRlZFN1cmZhY2UuaApAQCAtNzQsMjIgKzc0LDIyIEBAIHB1YmxpYzoKICAgICB2b2lk
IHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U6OkNsaWVudCopIG92ZXJyaWRlOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQotICAgIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1
cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBzb3VyY2VPZmZzZXQpIG92ZXJyaWRlOworICAgIHZvaWQgY29weVRvVGV4dHVyZShSZWZQ
dHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdl
dCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9mZnNldCkgb3ZlcnJpZGU7CiAjZW5k
aWYKIAogcHJpdmF0ZToKLSAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOworICAgIFdlYkNv
b3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+KTsKIAogICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTaGFyZWFibGVCaXRtYXAuCi0gICAgc3RhdGljIFJl
ZjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
RmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisgICAgc3RhdGljIFJlZjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3Ms
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2U+KTsKKyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIEZsYWdzLCBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7
CiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBiYWNrZWQgYnkgYSBncmFwaGljcyBz
dXJmYWNlLgogICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVX
aXRoU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOwogICAgIC8vIENyZWF0
ZSBhIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBHcmFwaGlj
c1N1cmZhY2UuCi0gICAgc3RhdGljIFJlZjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlPik7CisgICAgc3RhdGljIFJlZjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGlj
c1N1cmZhY2U+KTsKIAogICAgIGJvb2wgaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgpIGNvbnN0
IHsgcmV0dXJuICEhbV9ncmFwaGljc1N1cmZhY2U7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCAzM2NiNWRlY2Y2NTFjNjU4NjYzMzk4ZDAx
ZjE2OGUzMTI2ZmNmOWVlLi40ZWVjYmNjOTk3NzQyOTRkMzQ5ZGQxOWNkYjMwMjhiMDQ5YzFiYjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtNjQsNyAr
NjQsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcigpCiAgICAgbV9mbGFn
cyA9IEZsYWc6Ok5vRmxhZ3M7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKK1Jl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIEZsYWdzIGZsYWdzKQogewogICAgIHNpemVfdCBudW1CeXRlcyA9IG51bUJ5dGVz
Rm9yU2l6ZShzaXplKTsKICAgICAKQEAgLTc1LDcgKzc1LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZs
YWdzIGYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFn
cywgZGF0YSkpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCitS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShj
b25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKIHsKICAgICBzaXplX3QgbnVtQnl0ZXMg
PSBudW1CeXRlc0ZvclNpemUoc2l6ZSk7CiAKQEAgLTg2LDcgKzg2LDcgQEAgUGFzc1JlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGNvbnN0IElu
dFNpemUmIHNpemUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXpl
LCBmbGFncywgc2hhcmVkTWVtb3J5KSk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFn
cywgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZs
YWdzIGZsYWdzLCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCiB7CiAgICAgQVNT
RVJUKHNoYXJlZE1lbW9yeSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZs
YWdzIGYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBmbGFn
cywgc2hhcmVkTWVtb3J5KSk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uIHByb3RlY3Rpb24pCitSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5LgogICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhh
bmRsZS5tX2hhbmRsZSwgcHJvdGVjdGlvbik7CkBAIC0xMjQsNyArMTI0LDcgQEAgU2hhcmVhYmxl
Qml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3Ms
IHZvaWQqIGRhdGEpCiB7CiB9CiAKLVNoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNv
bnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4g
c2hhcmVkTWVtb3J5KQorU2hhcmVhYmxlQml0bWFwOjpTaGFyZWFibGVCaXRtYXAoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9mbGFncyhmbGFncykKICAgICAsIG1fc2hh
cmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaAppbmRleCA3ODMzODllYzUwZjgzMTlkMTc4YTA0MzQxMjY1N2U0NzQ1MmYzZWZlLi40NTA5
M2E0NTliMGQ2NjdmM2EyNGI4ZDdlMWZjZjU4YzJiODJlOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC03NiwxNiArNzUsMTYgQEAgcHVibGljOgogICAgIH07CiAKICAgICAv
LyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHRoYXQgdXNlcyBtYWxsb2NlZCBtZW1vcnkuCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CiAKICAgICAvLyBDcmVhdGUg
YSBzaGFyZWFibGUgYml0bWFwIHdob3NlIGJhY2tpbmcgbWVtb3J5IGNhbiBiZSBzaGFyZWQgd2l0
aCBhbm90aGVyIHByb2Nlc3MuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBjcmVhdGVTaGFyZWFibGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBGbGFncyk7CiAKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFw
IGZyb20gYW4gYWxyZWFkeSBleGlzdGluZyBzaGFyZWQgbWVtb3J5IGJsb2NrLgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBGbGFncywgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywg
UmVmUHRyPFNoYXJlZE1lbW9yeT4pOwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1h
cCBmcm9tIGEgaGFuZGxlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
Y3JlYXRlKGNvbnN0IEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9IFNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY3JlYXRlKGNvbnN0IEhhbmRsZSYsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbiA9
IFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKIAogICAgIC8vIENyZWF0ZSBh
IGhhbmRsZS4KICAgICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUmLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb24gPSBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CkBAIC0xMDYs
NyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgYml0bWFwIGltYWdl
IHRoYXQgZGlyZWN0bHkgcmVmZXJlbmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8v
IFRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMg
b2YgdGhlIHNoYXJlYWJsZSBiaXRtYXAgd29uJ3QgY2hhbmdlLgotICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2U+IGNyZWF0ZUltYWdlKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBj
cmVhdGVJbWFnZSgpOwogCiAjaWYgVVNFKENHKQogICAgIC8vIFRoaXMgY3JlYXRlcyBhIGNvcGll
ZCBDR0ltYWdlUmVmIChtb3N0IGxpa2VseSBhIGNvcHktb24td3JpdGUpIG9mIHRoZSBzaGFyZWFi
bGUgYml0bWFwLgpAQCAtMTE4LDEyICsxMTcsMTIgQEAgcHVibGljOgogI2VsaWYgVVNFKENBSVJP
KQogICAgIC8vIFRoaXMgY3JlYXRlcyBhIEJpdG1hcEltYWdlIHRoYXQgZGlyZWN0bHkgcmVmZXJl
bmNlcyB0aGUgc2hhcmVkIGJpdG1hcCBkYXRhLgogICAgIC8vIFRoaXMgaXMgb25seSBzYWZlIHRv
IHVzZSB3aGVuIHdlIGtub3cgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlYWJsZSBiaXRt
YXAgd29uJ3QgY2hhbmdlLgotICAgIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVD
YWlyb1N1cmZhY2UoKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVDYWlyb1N1
cmZhY2UoKTsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIHZvaWQqKTsKLSAgICBTaGFyZWFibGVCaXRtYXAoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4pOwor
ICAgIFNoYXJlYWJsZUJpdG1hcChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFJlZlB0
cjxTaGFyZWRNZW1vcnk+KTsKIAogI2lmIFVTRShDQUlSTykKICAgICBzdGF0aWMgc2l6ZV90IG51
bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCBhNmIy
YTI4M2RmYjIzNzhlOGViNDE2ZWY1Y2VhMjAyMDBlYjAxYTlkLi4wM2U2ODQxYmYwMzFkMmFiNjA3
MmQwZDc5YTE0NDhmM2VmZTI0ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Y2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc2l6ZV90
IFNoYXJlYWJsZUJpdG1hcDo6bnVtQnl0ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNpemUpCiAgICAgcmV0dXJuIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKGNhaXJvRm9y
bWF0LCBzaXplLndpZHRoKCkpICogc2l6ZS5oZWlnaHQoKTsKIH0KIAotc3RhdGljIGlubGluZSBQ
YXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlU3VyZmFjZUZyb21EYXRhKHZvaWQqIGRh
dGEsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IGNyZWF0ZVN1cmZhY2VGcm9tRGF0YSh2b2lkKiBkYXRhLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewogICAgIGNvbnN0IGludCBzdHJpZGUgPSBjYWlyb19m
b3JtYXRfc3RyaWRlX2Zvcl93aWR0aChjYWlyb0Zvcm1hdCwgc2l6ZS53aWR0aCgpKTsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpLCBjYWlyb0Zvcm1hdCwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpLCBzdHJpZGUpKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTaGFyZWFibGVC
aXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3Is
IGNvbnN0IEkKICAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29u
dGV4dChzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxlZCwgY29udGV4dCk7CiB9
CiAKLVBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUNh
aXJvU3VyZmFjZSgpCitSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUNhaXJvU3VyZmFjZSgpCiB7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2Ug
PSBjcmVhdGVTdXJmYWNlRnJvbURhdGEoZGF0YSgpLCBtX3NpemUpOwogCkBAIC04NywxMyArODcs
MTMgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VTdXJmYWNlRGF0YSh2b2lkKiB0eXBl
bGVzc0JpdG1hcCkKICAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAqPih0eXBlbGVzc0Jp
dG1hcCktPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVDYWlyb1N1cmZhY2Uu
CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQor
UmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKICAgICBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CiAgICAg
aWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShzdXJmYWNlLnJlbGVhc2UoKSk7Cisg
ICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAKaW5kZXggY2U5MzNiNzIzYmYzMWYzNjc1ODEzMGYxZWU1MGM1ODlkZDVj
NmY5MC4uOGUzY2NhNDliNmZlNGI2YTQ4MDVkNmY1OWVlODQ3M2JmNGFhMmYxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xMDYsMTMg
KzEwNiwxMyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEo
dm9pZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqCiAgICAgYml0bWFwLT5kZXJlZigpOyAv
LyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlQ0dJbWFnZS4KIH0KIAotUGFzc1JlZlB0cjxJbWFn
ZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFnZSgpCitSZWZQdHI8SW1hZ2U+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlSW1hZ2UoKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBwbGF0
Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKTsKICAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUocGxh
dGZvcm1JbWFnZS5nZXQoKSk7CisgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92
ZShwbGF0Zm9ybUltYWdlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggZDdjOTBhNjA2ODkxOTFhNGVlN2Y1MGVjMjkzY2I5OWE3MDMzYTNiNy4uMGJkNTY1MjRj
ZTU3N2I5M2VmODJiMGI5ODAyNjlkYWM5OWNjOTU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC0yMzcsNyAr
MjM3LDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbW1pdFNjZW5lU3RhdGUo
Y29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGkKICAgICBtX2lzV2FpdGluZ0ZvclJlbmRl
cmVyID0gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IEludFNpemUm
IHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCitSZWZQdHI8Q29vcmRpbmF0
ZWRTdXJmYWNlPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvb3JkaW5hdGVkU3Vy
ZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdz
KQogewogICAgIHJldHVybiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFn
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCmluZGV4IGExZWUzNzBiMzM5NDE5M2I1NTAwZTQ5NjU1MDQ1MmQzNzdkZjZi
ODAuLjM2YzA4OTBjMTcwMzAxOTQ4MTdkOGRkNzUwNWRlYThlM2JiOTRkOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Vmlld092ZXJsYXlSb290TGF5
ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVDb29yZGluYXRlZFN1cmZh
Y2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6
RmxhZ3MpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBj
cmVhdGVDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcAppbmRleCAyNzQxMDU5ZDM3MzE4ZDAwNzQyNTc3YmU0YjQ5ZTI4ZGJkZjQxYTA5Li5hMGE3
OTA1Mjc5MmJhZDc1NTk1YmRlZjJmYTg4OTk3OGI2ZWFkYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFRocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKiB3ZWJQCiAgICAg
c2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNl
PiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJm
YWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3Mp
CitSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3Jk
aW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCiB7CiAgICAgcmV0dXJuIFRocmVhZFNhZmVDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRl
ZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhv
c3QuaAppbmRleCAwNzQyOTk2MmI1NGZkMjNlZjI3YmY5NjJlMTgxN2Y1NTM3NjRlMmViLi44MTNk
MTViOWIxYWFhMmM2ZGQ0M2E2OTFmZTQ5YTAxNmMwNGZkMzlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNldFZp
ZXdPdmVybGF5Um9vdExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZUNvb3JkaW5hdGVk
U3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlOjpGbGFncyk7CisgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U+IGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBUaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>