<?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>154834</bug_id>
          
          <creation_ts>2016-02-29 13:48:14 -0800</creation_ts>
          <short_desc>Update the media element&apos;s presentation mode properly after going in and out of full screen via the Full Screen API</short_desc>
          <delta_ts>2016-03-02 16:35:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ada Chan">adachan</reporter>
          <assigned_to name="Ada Chan">adachan</assigned_to>
          <cc>eric.carlson</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>1169252</commentid>
    <comment_count>0</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-02-29 13:48:14 -0800</bug_when>
    <thetext>If both FULLSCREEN_API and VIDEO_PRESENTATION_MODE are defined, make sure both functionalities coexist nicely with each other.  That means:
- If a media element goes into Full Screen via the webkitRequestFullscreen(), retrieving webkitPresentationMode afterwards should return &quot;fullscreen&quot;.
- If a media element exits Full Screen via webkitExitFullscreen(), retrieving webkitPresentationMode afterwards should return &quot;inline&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169254</commentid>
    <comment_count>1</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-02-29 13:48:52 -0800</bug_when>
    <thetext>Related to &lt;rdar://problem/24172607&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169778</commentid>
    <comment_count>2</comment_count>
      <attachid>272642</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-03-02 00:38:52 -0800</bug_when>
    <thetext>Created attachment 272642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169868</commentid>
    <comment_count>3</comment_count>
      <attachid>272642</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-02 11:05:49 -0800</bug_when>
    <thetext>Comment on attachment 272642
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5272
&gt; +    if (document().settings() &amp;&amp; document().settings()-&gt;fullScreenEnabled()) {

I don&apos;t think you need to null-check document().settings(). If we get here with null settings, something is seriously wrong.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5280
&gt; +        if (Element* fullscreenElement = document().webkitCurrentFullScreenElement()) {
&gt; +            if (fullscreenElement-&gt;contains(this))
&gt; +                document().webkitCancelFullScreen();

I think this deserves a comment, or perhaps if (mode == VideoFullscreenModePictureInPicture). I think it&apos;s doing &quot;if entering a different fullscreen mode, get out of the current fullscreen&quot;, right?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5339
&gt; +    if (oldVideoFullscreenMode != VideoFullscreenModeNone &amp;&amp; oldVideoFullscreenMode != VideoFullscreenModeStandard &amp;&amp; document().page() &amp;&amp; is&lt;HTMLVideoElement&gt;(*this)) {

Doesn&apos;t this mean if (oldVideoFullscreenMode == VideoFullscreenModePictureInPicture ?
Should not need to null-check document().page().

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5340
&gt; +        if (document().page()-&gt;chrome().client().supportsVideoFullscreen(oldVideoFullscreenMode))

Why this supports check?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5350
&gt; +#if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
&gt; +void HTMLMediaElement::ancestorWillEnterFullscreen()
&gt; +{

I would prefer to #ifdef the contents, not the entire member function. For example, you call this unguarded in Element::willBecomeFullscreenElement().

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5351
&gt; +    if (m_videoFullscreenMode != VideoFullscreenModeNone &amp;&amp; document().page() &amp;&amp; is&lt;HTMLVideoElement&gt;(*this)) {

Don&apos;t null-check document().page().

The is&lt;HTMLVideoElement&gt;(*this) check suggests that you should move this implementation up to HTMLVideoElement.

&gt; Source/WebCore/page/ChromeClient.h:346
&gt; +    virtual void exitVideoFullscreenWithoutAnimationForVideoElement(WebCore::HTMLVideoElement&amp;, HTMLMediaElementEnums::VideoFullscreenMode /*targetMode*/) { }

Weird that exit... takes a targetMode. I think some naming needs to improve to clarify.

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.h:121
&gt; +#if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
&gt; +    void exitVideoFullscreenWithoutAnimationForVideoElement(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode);
&gt; +#endif

Would prefer to have the definition outside the #ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169896</commentid>
    <comment_count>4</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-03-02 12:26:00 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 272642 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272642&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5272
&gt; &gt; +    if (document().settings() &amp;&amp; document().settings()-&gt;fullScreenEnabled()) {
&gt; 
&gt; I don&apos;t think you need to null-check document().settings(). If we get here
&gt; with null settings, something is seriously wrong.

The null check was there before my change. But I&apos;ll remove it if you don&apos;t think it&apos;s necessary.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5280
&gt; &gt; +        if (Element* fullscreenElement = document().webkitCurrentFullScreenElement()) {
&gt; &gt; +            if (fullscreenElement-&gt;contains(this))
&gt; &gt; +                document().webkitCancelFullScreen();
&gt; 
&gt; I think this deserves a comment, or perhaps if (mode ==
&gt; VideoFullscreenModePictureInPicture). I think it&apos;s doing &quot;if entering a
&gt; different fullscreen mode, get out of the current fullscreen&quot;, right?

Yes, I&apos;ll add the following comment:

If we are not going to standard fullscreen mode, exit full screen if this media element is contained in the current full screen element.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5339
&gt; &gt; +    if (oldVideoFullscreenMode != VideoFullscreenModeNone &amp;&amp; oldVideoFullscreenMode != VideoFullscreenModeStandard &amp;&amp; document().page() &amp;&amp; is&lt;HTMLVideoElement&gt;(*this)) {
&gt; 
&gt; Doesn&apos;t this mean if (oldVideoFullscreenMode ==
&gt; VideoFullscreenModePictureInPicture ?
&gt; Should not need to null-check document().page().

As discussed offline, I&apos;ll change this to a switch statement. The null check for document().page() was done in similar code in HTMLMediaElement::exitFullscreen(). But I&apos;ll remove it if you don&apos;t think it&apos;s necessary.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5340
&gt; &gt; +        if (document().page()-&gt;chrome().client().supportsVideoFullscreen(oldVideoFullscreenMode))
&gt; 
&gt; Why this supports check?

Because we do a similar supports check before exiting fullscreen mode in HTMLMediaElement::exitFullscreen().

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5350
&gt; &gt; +#if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
&gt; &gt; +void HTMLMediaElement::ancestorWillEnterFullscreen()
&gt; &gt; +{
&gt; 
&gt; I would prefer to #ifdef the contents, not the entire member function. For
&gt; example, you call this unguarded in Element::willBecomeFullscreenElement().

OK, fixed.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5351
&gt; &gt; +    if (m_videoFullscreenMode != VideoFullscreenModeNone &amp;&amp; document().page() &amp;&amp; is&lt;HTMLVideoElement&gt;(*this)) {
&gt; 
&gt; Don&apos;t null-check document().page().
&gt; 
&gt; The is&lt;HTMLVideoElement&gt;(*this) check suggests that you should move this
&gt; implementation up to HTMLVideoElement.

Good point. Moved.

&gt; 
&gt; &gt; Source/WebCore/page/ChromeClient.h:346
&gt; &gt; +    virtual void exitVideoFullscreenWithoutAnimationForVideoElement(WebCore::HTMLVideoElement&amp;, HTMLMediaElementEnums::VideoFullscreenMode /*targetMode*/) { }
&gt; 
&gt; Weird that exit... takes a targetMode. I think some naming needs to improve
&gt; to clarify.

I renamed it to exitVideoFullscreenWithoutAnimationToMode.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.h:121
&gt; &gt; +#if PLATFORM(MAC) &amp;&amp; ENABLE(VIDEO_PRESENTATION_MODE)
&gt; &gt; +    void exitVideoFullscreenWithoutAnimationForVideoElement(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode);
&gt; &gt; +#endif
&gt; 
&gt; Would prefer to have the definition outside the #ifdef.

Fixed.

Thanks for the feedback.  I&apos;ll post an updated patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169898</commentid>
    <comment_count>5</comment_count>
      <attachid>272676</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-03-02 12:27:56 -0800</bug_when>
    <thetext>Created attachment 272676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169932</commentid>
    <comment_count>6</comment_count>
      <attachid>272676</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-03-02 14:03:53 -0800</bug_when>
    <thetext>Comment on attachment 272676
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:5352
&gt; +        if (is&lt;HTMLVideoElement&gt;(*this)) {
&gt; +            if (document().page()-&gt;chrome().client().supportsVideoFullscreen(oldVideoFullscreenMode))
&gt; +                document().page()-&gt;chrome().client().exitVideoFullscreenWithoutAnimationToMode(downcast&lt;HTMLVideoElement&gt;(*this), VideoFullscreenModeStandard);
&gt; +        }

This code should also be up in HTMLVideoElement. It looks very similar to ancestorWillEnterFullscreen()

&gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.h:119
&gt; +    void exitVideoFullscreenWithoutAnimationToMode(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode);

Name is a bit hard to parse. It could be:

exitVideoFullscreen (WithoutAnimation) ToMode
or
exitVideoFullscreen, WithoutAnimationToMode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169980</commentid>
    <comment_count>7</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-03-02 15:35:15 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 272676 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272676&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:5352
&gt; &gt; +        if (is&lt;HTMLVideoElement&gt;(*this)) {
&gt; &gt; +            if (document().page()-&gt;chrome().client().supportsVideoFullscreen(oldVideoFullscreenMode))
&gt; &gt; +                document().page()-&gt;chrome().client().exitVideoFullscreenWithoutAnimationToMode(downcast&lt;HTMLVideoElement&gt;(*this), VideoFullscreenModeStandard);
&gt; &gt; +        }
&gt; 
&gt; This code should also be up in HTMLVideoElement. It looks very similar to
&gt; ancestorWillEnterFullscreen()

I&apos;ll add a new method in HTMLVideoElement that does this called:

void exitToFullscreenModeWithoutAnimationIfPossible(HTMLMediaElementEnums::VideoFullscreenMode fromMode, HTMLMediaElementEnums::VideoFullscreenMode toMode);

This will be called by both HTMLVideoElement::ancestorWillEnterFullscreen() and HTMLMediaElement::willBecomeFullscreenElement().

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.h:119
&gt; &gt; +    void exitVideoFullscreenWithoutAnimationToMode(WebCore::HTMLVideoElement&amp;, WebCore::HTMLMediaElementEnums::VideoFullscreenMode);
&gt; 
&gt; Name is a bit hard to parse. It could be:
&gt; 
&gt; exitVideoFullscreen (WithoutAnimation) ToMode
&gt; or
&gt; exitVideoFullscreen, WithoutAnimationToMode

Renamed to exitVideoFullscreenToModeWithoutAnimation.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169994</commentid>
    <comment_count>8</comment_count>
      <attachid>272700</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-03-02 16:06:40 -0800</bug_when>
    <thetext>Created attachment 272700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170009</commentid>
    <comment_count>9</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2016-03-02 16:35:11 -0800</bug_when>
    <thetext>Committed:
http://trac.webkit.org/changeset/197478</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272642</attachid>
            <date>2016-03-02 00:38:52 -0800</date>
            <delta_ts>2016-03-02 12:27:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154834-20160302003836.patch</filename>
            <type>text/plain</type>
            <size>18928</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQzZmY5OGI4YjVjODNl
NzQ3YzU1MTYyY2IyNmRhNTYyM2E0M2Y0My4uZDQ4MWM4NGFlMGQ1MDEwNTNkZDVlMGE4MWUzY2Q3
ZWRiMTY0ZTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTAzLTAxICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB0aGUgbWVkaWEgZWxl
bWVudCdzIHByZXNlbnRhdGlvbiBtb2RlIHByb3Blcmx5IGFmdGVyIGdvaW5nIGluIGFuZCBvdXQg
b2YgZnVsbCBzY3JlZW4gdmlhIHRoZSBGdWxsIFNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YW5jZXN0b3JXaWxsRW50ZXJGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgSWYgdGhlIEZ1
bGwgU2NyZWVuIEFQSSBpcyBlbmFibGVkIGFuZCB0aGlzIG1lZGlhIGVsZW1lbnQgaXMgZW50ZXJp
bmcgYSBtb2RlIG90aGVyIHRoYW4gc3RhbmRhcmQKKyAgICAgICAgZnVsbCBzY3JlZW4sIHNlZSBp
ZiBpdCdzIGN1cnJlbnRseSBjb250YWluZWQgaW4gYSBmdWxsIHNjcmVlbiBlbGVtZW50LiBJZiBz
bywgZXhpdCBmdWxsIHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIElmIHRoaXMgbWVkaWEgZWxl
bWVudCBpcyBnb2luZyB0byBzdGFuZGFyZCBmdWxsIHNjcmVlbiwgdXBkYXRlIGl0cyBwcmVzZW50
YXRpb24gbW9kZS4gSWYKKyAgICAgICAgdGhpcyBtZWRpYSBlbGVtZW50IGFsc28gc3VwcG9ydHMg
cHJlc2VudGF0aW9uIG1vZGUgYW5kIGl0IGN1cnJlbnRseSBoYXMgYSBwcmVzZW50YXRpb24gbW9k
ZQorICAgICAgICB0aGF0J3Mgbm90IHN0YW5kYXJkIGZ1bGwgc2NyZWVuLCBleGl0IHRoYXQgcHJl
c2VudGF0aW9uIG1vZGUgZGlyZWN0bHkgd2l0aG91dCBhbmltYXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4pOgorICAg
ICAgICBSZXNldCB0aGlzIG1lZGlhIGVsZW1lbnQncyBwcmVzZW50YXRpb24gc3RhdGUgdG8gaW5s
aW5lIGlmIGl0cyBhbmNlc3RvciBpcyBnb2luZyB0byBmdWxsIHNjcmVlbi4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCk6
CisgICAgICAgIFNldCB0aGUgcHJlc2VudGF0aW9uIG1vZGUgYmFjayB0byBpbmxpbmUgdW5sZXNz
IGl0J3MgYWxyZWFkeSBjaGFuZ2VkIHRvIGEgZGlmZmVyZW50CisgICAgICAgIHByZXNlbnRhdGlv
biBtb2RlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIHBh
Z2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6CisK
IDIwMTYtMDMtMDEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAocjE5NzQyNik6IE1pc3NlZCBhZGRpbmcgdW5pY29kZSBwYXJhbWV0ZXIg
dG8gY2FsbCB0byBZYXJyOjpwYXJzZSgpIGluIFVSTEZpbHRlclBhcnNlcjo6YWRkUGF0dGVybigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggZTk0ZTkyNTc0NTA4MDEwNDBkMDMwMTlkZTk5ZDU1OWM3NzkwNzA3MC4u
NTM1Zjg4ZjdiOGFkZjhmZDdhM2ZiMzY2ZDJmMTY1ODU1MWFkZTc4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDE2LTAzLTAxICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFVwZGF0ZSB0aGUgbWVkaWEgZWxlbWVudCdzIHByZXNlbnRhdGlvbiBtb2RlIHBy
b3Blcmx5IGFmdGVyIGdvaW5nIGluIGFuZCBvdXQgb2YgZnVsbCBzY3JlZW4gdmlhIHRoZSBGdWxs
IFNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUpOgorICAgICAg
ICBDYWxsIHRoZSBuZXcgZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKCkgbWV0
aG9kIG9uIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6ZXhpdFZpZGVvRnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Gb3JW
aWRlb0VsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpleGl0VmlkZW9GdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvbkZvclZpZGVvRWxlbWVudCk6CisK
IDIwMTYtMDItMjkgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRv
cHQgdGhlIG5ldyB2ZXJzaW9uIG9mIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXIncyBzaG93
TWVudUZvclJlY3QgbWV0aG9kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZmZmNzcwMWNi
ZTA4MzRmM2NlZjI5OGNjYmViZDFiODVkN2NjYTU0Zi4uZTNlNmJmYWY5ZWJmNDdiYjk2MThhN2Mw
MDlkM2ZlZmM0ODMwMzdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NzkzLDYgKzU3
OTMsOSBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChFbGVtZW50KiBlbGVtZW50KQogCiAgICAgdW53cmFwRnVsbFNjcmVlblJlbmRlcmVyKG1fZnVs
bFNjcmVlblJlbmRlcmVyLCBtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKIAorICAgIGlmIChl
bGVtZW50KQorICAgICAgICBlbGVtZW50LT53aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsK
KyAgICAKICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKIAogI2lmIFVTRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiNmI1NjgwNjY2
OTRkYmFmZGRhY2FiMDljODFiMTFiNWFjOWFiMmM4Li5hMWNmYzI4ZjYwMmRmMTY3OWM5NmNlMzdk
YjM4NDk4ZTliZGM2YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNDE0LDYgKzI0MTQs
MTIgQEAgdm9pZCBFbGVtZW50OjpzZXRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKGNvbnN0IExheW91
dFNpemUmIHNpemUpCiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0TWluaW11bVNpemVG
b3JSZXNpemluZyhzaXplKTsKIH0KIAordm9pZCBFbGVtZW50Ojp3aWxsQmVjb21lRnVsbHNjcmVl
bkVsZW1lbnQoKQoreworICAgIGZvciAoYXV0byYgY2hpbGQgOiBkZXNjZW5kYW50c09mVHlwZTxF
bGVtZW50PigqdGhpcykpCisgICAgICAgIGNoaWxkLmFuY2VzdG9yV2lsbEVudGVyRnVsbHNjcmVl
bigpOworfQorCiBzdGF0aWMgUHNldWRvRWxlbWVudCogYmVmb3JlT3JBZnRlclBzZXVkb0VsZW1l
bnQoRWxlbWVudCYgaG9zdCwgUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIHsKICAg
ICBzd2l0Y2ggKHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IDIzZDEyNjljNWMyYWY2ZmU1ZDlhYTk0ZjlkZWIyMmE3MDcxOTExOGMuLjNiMWE4MjVmOGYxM2Mz
NzY5ZWMzMTIyYjQxYmNjNDgyNmY2YTI2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzU3LDYg
KzM1Nyw4IEBAIHB1YmxpYzoKICAgICAvLyBVc2UgRG9jdW1lbnQ6OnJlZ2lzdGVyRm9yUHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCkgdG8gc3Vic2NyaWJlIHRvIHRoaXMuCiAg
ICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkgeyB9CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CisgICAgdmlydHVh
bCB2b2lkIGFuY2VzdG9yV2lsbEVudGVyRnVsbHNjcmVlbigpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxs
U3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZjczMjRjZjJjOTI4ZDZmYTMwYTg5ZTRjNDM0YzRjMzU3
MDY4ZmNjMS4uZWY3YjJlZWVlNzJiZjUwMzczN2EwNDc1YzQ1NmRmODJjM2ZlM2QyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01MjY5LDkgKzUyNjksMTYg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oVmlkZW9GdWxsc2NyZWVu
TW9kZSBtb2RlKQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
Ci0gICAgaWYgKG1vZGUgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkICYmIGRvY3VtZW50
KCkuc2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVk
KCkpIHsKLSAgICAgICAgZG9jdW1lbnQoKS5yZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhp
cywgMCwgRG9jdW1lbnQ6OkV4ZW1wdElGcmFtZUFsbG93RnVsbFNjcmVlblJlcXVpcmVtZW50KTsK
LSAgICAgICAgcmV0dXJuOworICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkgJiYgZG9jdW1l
bnQoKS5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChtb2Rl
ID09IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkgeworICAgICAgICAgICAgZG9jdW1lbnQo
KS5yZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgMCwgRG9jdW1lbnQ6OkV4ZW1wdElG
cmFtZUFsbG93RnVsbFNjcmVlblJlcXVpcmVtZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChFbGVtZW50KiBmdWxsc2NyZWVuRWxlbWVudCA9IGRvY3Vt
ZW50KCkud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGlm
IChmdWxsc2NyZWVuRWxlbWVudC0+Y29udGFpbnModGhpcykpCisgICAgICAgICAgICAgICAgZG9j
dW1lbnQoKS53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisgICAgICAgIH0KICAgICB9CiAjZW5k
aWYKIApAQCAtNTMyMCw2ICs1MzI3LDM0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1
bGxzY3JlZW4oKQogICAgIH0KIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsQmVjb21l
RnVsbHNjcmVlbkVsZW1lbnQoKQoreworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVP
X1BSRVNFTlRBVElPTl9NT0RFKQorICAgIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlID0gbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
OworI2VuZGlmCisKKyAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9k
ZVN0YW5kYXJkKTsKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKQorICAgIGlmIChvbGRWaWRlb0Z1bGxzY3JlZW5Nb2RlICE9IFZpZGVvRnVsbHNj
cmVlbk1vZGVOb25lICYmIG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2NyZWVu
TW9kZVN0YW5kYXJkICYmIGRvY3VtZW50KCkucGFnZSgpICYmIGlzPEhUTUxWaWRlb0VsZW1lbnQ+
KCp0aGlzKSkgeworICAgICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVu
dCgpLnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpKQorICAg
ICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1
bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uRm9yVmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRl
b0VsZW1lbnQ+KCp0aGlzKSwgVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKKyAgICB9Cisj
ZW5kaWYKKworICAgIEVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOworfQor
CisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFuY2VzdG9yV2lsbEVudGVyRnVsbHNjcmVlbigpCit7Cisg
ICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSAm
JiBkb2N1bWVudCgpLnBhZ2UoKSAmJiBpczxIVE1MVmlkZW9FbGVtZW50PigqdGhpcykpIHsKKyAg
ICAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zdXBwb3J0c1Zp
ZGVvRnVsbHNjcmVlbihtX3ZpZGVvRnVsbHNjcmVlbk1vZGUpKQorICAgICAgICAgICAgZG9jdW1l
bnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5XaXRob3V0
QW5pbWF0aW9uRm9yVmlkZW9FbGVtZW50KGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlz
KSwgVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkKIHsKICAgICBpZiAo
aGFzTWVkaWFDb250cm9scygpKQpAQCAtNTMzMCw2ICs1MzY1LDkgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKQogewogICAgIGlmIChoYXNN
ZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+ZXhpdGVkRnVsbHNjcmVl
bigpOworCisgICAgaWYgKGZ1bGxzY3JlZW5Nb2RlKCkgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKQorICAgICAgICBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9k
ZU5vbmUpOwogfQogCiBQbGF0Zm9ybU1lZGlhIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVk
aWEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBmZTJh
ZTI3MDA2MjJmMjBjYjU0ZTJjNjI0OTJmNmE0ODYyYjBlODA2Li45YWJlOGJkZDRmYjJhN2E5NmEy
ZjJmYWJmNjRlMzM2YmYxODY3YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaApAQCAtNTA1LDkgKzUwNSwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwogCisgICAgdmlydHVhbCB2b2lkIHdp
bGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKIAorI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIHZpcnR1YWwgdm9p
ZCBhbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRl
eCA3NDQxZTBkYjI1ZTQ4ZDg3MjI1MjdkNmU2ZjljOGI2MzRmYTMwNDQ3Li43NGJhMmFkOGRkMWY5
M2Y5NDQ2Y2MwNmNkNTVhYzE2Nzc5OTRlZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKQEAgLTM0Myw2ICszNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyVmlk
ZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQmLCBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQogI2VuZGlmCiAgICAgdmlydHVh
bCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuV2l0
aG91dEFuaW1hdGlvbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jiwg
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIC8qdGFyZ2V0TW9kZSov
KSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFj
aygpIHsgcmV0dXJuIGZhbHNlOyB9IAogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oCmluZGV4IGM0YzI0ZDAwOTdlYTNkYzgzZjQ0ZjM0NjBhMjRkMmFj
N2VmYzk0MzcuLjVhZGQ0YzA0YzA1ZmVhMzQxNWI3YjQwNTA4NTNiMzc0M2RiNTQ4Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjLmgKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0dXBGdWxsc2NyZWVuKE5TVmlldyYgbGF5ZXJIb3N0ZWRWaWV3LCBj
b25zdCBJbnRSZWN0JiBpbml0aWFsUmVjdCwgTlNXaW5kb3cgKnBhcmVudFdpbmRvdywgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJ
blBpY3R1cmVQbGF5YmFjayk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3Jl
ZW4oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJl
Y3QmIGZpbmFsUmVjdCwgTlNXaW5kb3cgKnBhcmVudFdpbmRvdyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFudXBGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRl
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVu
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQppbmRleCA1MmE2NzJmZmQ4YWNhMmUzNDM0
MmI3ZmU0YTQzYmUyYzM3MGExMTA3Li45YmVkZDAwZjg4MTljYzVjYjVmYThkNTQwNDQ2MDAzZTk3
NTEzMzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KQEAgLTg3LDYgKzg3LDEwIEBAIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpleGl0RnVsbHNjcmVlbihjb25zdCBJ
bnRSZWN0JiwgTlNXaW5kb3cgKikKIHsKIH0KIAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpCit7Cit9CisKIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpjbGVhbnVwRnVsbHNjcmVlbigpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5LmgKaW5kZXggOTU1ZmVjOGEyMGM5OGFlZDA4N2M1NWZjMjU1ZWE5
ZGZjYTZkMDMzOS4uODRlYTU0MGI3OGFmNWE1MGE5NGEzNzdlZDFjZGNjMDU0MDQ5NTM5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTQ5LDYgKzE0OSw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6Oklu
dFJlY3QgZmluYWxSZWN0KTsKICAgICB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAgICAgdm9pZCBwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29u
dGV4dElkLCBib29sIHZpc2libGUsIFdlYkNvcmU6OkludFJlY3QgaW5saW5lUmVjdCk7CisjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgdm9p
ZCBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOwor
I2VuZGlmCiAKICAgICAvLyBNZXNzYWdlcyB0byBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAg
ICAgdm9pZCBwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyYmEyMjEyOGM2NzIwMzUxZWM5OTI5ZThl
N2Q4OWI1N2RhNmM0NWM1Li44NmI4YTlkMDBkMzQ3YmUyNzNmNzM0ZWRhYzQ3ZTdiMjEyZGMyM2Uz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTM5LDUgKzM5LDggQEAgbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
IHsKICAgICBFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJl
Y3QgZmluYWxSZWN0KQogICAgIENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
ICAgICBQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib29sIHZp
c2libGUsIFdlYkNvcmU6OkludFJlY3QgaW5saW5lUmVjdCkKKyNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKyAgICBFeGl0RnVsbHNjcmVlbldpdGhv
dXRBbmltYXRpb25Ub01vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKKyNl
bmRpZgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA5NWVh
MDExODYyMWRkM2Q2MDJmOTE3MTY0ODIxNmI1OWFmZDE0ZDcxLi5hMzdkMjFiMWEzZjE1MTIwZmMx
NzAwMGE5YTcyYTZkM2VjZWFjOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
QEAgLTQ3Myw2ICs0NzMsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZToKICNlbmRpZgogfQog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCit2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW5XaXRob3V0
QW5pbWF0aW9uVG9Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCit7CisgICAgZW5zdXJl
SW50ZXJmYWNlKGNvbnRleHRJZCkuZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2Rl
KHRhcmdldE1vZGUpOworfQorI2VuZGlmCisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpjbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgZW5z
dXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuY2xlYW51cEZ1bGxzY3JlZW4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCBkMWI5ODU5ZWE5ZjQ0MDA3NmEzMzkzNDJjMjg5NTJlNjM4NDAzYWZj
Li4wMzJlMmIxYWI2ZWVkMTYwYmI4Y2IxYTBlNTdjMTI4OTNmMzg4MjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCkBAIC04NjUsNiArODY1LDE0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpl
eGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
CiB7CiAgICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPmV4aXRWaWRlb0Z1bGxz
Y3JlZW5Gb3JWaWRlb0VsZW1lbnQodmlkZW9FbGVtZW50KTsKIH0KKworI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQordm9pZCBXZWJDaHJvbWVDbGll
bnQ6OmV4aXRWaWRlb0Z1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uRm9yVmlkZW9FbGVtZW50KFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCit7CisgICAgbV9wYWdlLT52aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKCktPmV4aXRWaWRlb0Z1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9u
Rm9yVmlkZW9FbGVtZW50KHZpZGVvRWxlbWVudCwgdGFyZ2V0TW9kZSk7Cit9CisjZW5kaWYKKwog
I2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggMmFkMjdlZmQzOGI4ZjFmYWI4ZTBjODU5MjA4NDNmNzU2MTE5Zjk4ZC4uNWFmYjky
OGI4NThjMWJiMTRiZWVhYzgwNzY0MWIxNTQ4NTQzMjE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC0yNDYsNiArMjQ2LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNW
aWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJWaWRlb0Z1bGxzY3Jl
ZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudCYpIG92ZXJyaWRlOworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxs
c2NyZWVuV2l0aG91dEFuaW1hdGlvbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlKSBvdmVycmlkZTsKKyNlbmRpZgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IGQzZGFjNGU2ZTNhMzYzMmJhMTgwYjUzNzk0
ZjJhODU5ZDlmYzhkYTkuLjI4ZjFjMTc3M2ZiMWM5N2E5ZDIyYjE1YjhmZTJmOGZkMzIxMGMyOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xMTYsNyArMTE2LDEwIEBAIHB1YmxpYzoKICAg
ICBib29sIHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgY29uc3Q7CiAgICAgdm9pZCBlbnRlclZpZGVvRnVs
bHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lk
IGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudCYpOwotICAgIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKQorICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25G
b3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CisjZW5kaWYKKwogcHJvdGVj
dGVkOgogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggMjgyNDQ4MWFiNzRkNTQ1MzNhMTIxNGQw
OTM5MGE3NWEzNGY4Mzc3MC4uMjVjMzg2ODdmZDRkZjZmNTA4OGNjOTQ3NmU5YTliZThmYWQ2MjQz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjc5LDYgKzI3OSwyMCBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1l
bnQoV2ViQ29yZTo6SFRNTAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGNsaWVudFJlY3RG
b3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKKyNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKK3ZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbldpdGhvdXRBbmltYXRp
b25Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50
LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFy
Z2V0TW9kZSkKK3sKKyAgICBBU1NFUlQobV92aWRlb0VsZW1lbnRzLmNvbnRhaW5zKCZ2aWRlb0Vs
ZW1lbnQpKTsKKworICAgIHVpbnQ2NF90IGNvbnRleHRJZCA9IG1fdmlkZW9FbGVtZW50cy5nZXQo
JnZpZGVvRWxlbWVudCk7CisgICAgYXV0byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKGNv
bnRleHRJZCk7CisKKyAgICBpbnRlcmZhY2Uuc2V0VGFyZ2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsK
KworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJn
ZXRNb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisjZW5kaWYKKwogI3ByYWdtYSBtYXJrIElu
dGVyZmFjZSB0byBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OgogCiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlc2V0TWVkaWFTdGF0ZSh1aW50NjRfdCBjb250ZXh0
SWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272676</attachid>
            <date>2016-03-02 12:27:56 -0800</date>
            <delta_ts>2016-03-02 14:03:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154834-20160302122740.patch</filename>
            <type>text/plain</type>
            <size>20310</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQzZmY5OGI4YjVjODNl
NzQ3YzU1MTYyY2IyNmRhNTYyM2E0M2Y0My4uOGIwYmRjMjgzNmRhZWZmZTk3MWZmMTMyMTMwMDAz
NDc5YThlZWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE2LTAzLTAxICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB0aGUgbWVkaWEgZWxl
bWVudCdzIHByZXNlbnRhdGlvbiBtb2RlIHByb3Blcmx5IGFmdGVyIGdvaW5nIGluIGFuZCBvdXQg
b2YgZnVsbCBzY3JlZW4gdmlhIHRoZSBGdWxsIFNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YW5jZXN0b3JXaWxsRW50ZXJGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgSWYgdGhlIEZ1
bGwgU2NyZWVuIEFQSSBpcyBlbmFibGVkIGFuZCB0aGlzIG1lZGlhIGVsZW1lbnQgaXMgZW50ZXJp
bmcgYSBtb2RlIG90aGVyIHRoYW4gc3RhbmRhcmQKKyAgICAgICAgZnVsbCBzY3JlZW4sIHNlZSBp
ZiBpdCdzIGN1cnJlbnRseSBjb250YWluZWQgaW4gYSBmdWxsIHNjcmVlbiBlbGVtZW50LiBJZiBz
bywgZXhpdCBmdWxsIHNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgIElmIHRoaXMgbWVkaWEgZWxl
bWVudCBpcyBnb2luZyB0byBzdGFuZGFyZCBmdWxsIHNjcmVlbiwgdXBkYXRlIGl0cyBwcmVzZW50
YXRpb24gbW9kZS4gSWYKKyAgICAgICAgdGhpcyBtZWRpYSBlbGVtZW50IGFsc28gc3VwcG9ydHMg
cHJlc2VudGF0aW9uIG1vZGUgYW5kIGl0IGN1cnJlbnRseSBoYXMgYSBwcmVzZW50YXRpb24gbW9k
ZQorICAgICAgICB0aGF0J3Mgbm90IHN0YW5kYXJkIGZ1bGwgc2NyZWVuLCBleGl0IHRoYXQgcHJl
c2VudGF0aW9uIG1vZGUgZGlyZWN0bHkgd2l0aG91dCBhbmltYXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQpOgor
ICAgICAgICBTZXQgdGhlIHByZXNlbnRhdGlvbiBtb2RlIGJhY2sgdG8gaW5saW5lIHVubGVzcyBp
dCdzIGFscmVhZHkgY2hhbmdlZCB0byBhIGRpZmZlcmVudAorICAgICAgICBwcmVzZW50YXRpb24g
bW9kZS4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVu
dDo6YW5jZXN0b3JXaWxsRW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgUmVzZXQgdGhpcyB2aWRl
byBlbGVtZW50J3MgcHJlc2VudGF0aW9uIHN0YXRlIHRvIGlubGluZSBpZiBpdHMgYW5jZXN0b3Ig
aXMgZ29pbmcgdG8gZnVsbCBzY3JlZW4uCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50
Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6ZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5p
bWF0aW9uVG9Nb2RlKToKKwogMjAxNi0wMy0wMSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTk3NDI2KTogTWlzc2VkIGFkZGluZyB1
bmljb2RlIHBhcmFtZXRlciB0byBjYWxsIHRvIFlhcnI6OnBhcnNlKCkgaW4gVVJMRmlsdGVyUGFy
c2VyOjphZGRQYXR0ZXJuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlOTRlOTI1NzQ1MDgwMTA0MGQwMzAxOWRl
OTlkNTU5Yzc3OTA3MDcwLi40NDdjOGIxOTI0ZTk1NDIyYmFlMmIzOTA0ZWZlOGExZTU5MjhkYjFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMDMtMDEgIEFkYSBDaGFuICA8YWRh
Y2hhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIHRoZSBtZWRpYSBlbGVtZW50J3MgcHJl
c2VudGF0aW9uIG1vZGUgcHJvcGVybHkgYWZ0ZXIgZ29pbmcgaW4gYW5kIG91dCBvZiBmdWxsIHNj
cmVlbiB2aWEgdGhlIEZ1bGwgU2NyZWVuIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlv
blRvTW9kZSk6CisgICAgICAgIENhbGwgdGhlIG5ldyBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmlt
YXRpb25Ub01vZGUoKSBtZXRob2Qgb24gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuV2l0
aG91dEFuaW1hdGlvblRvTW9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKToKKwog
MjAxNi0wMi0yOSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9w
dCB0aGUgbmV3IHZlcnNpb24gb2YgQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlcidzIHNob3dN
ZW51Rm9yUmVjdCBtZXRob2QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmZmY3NzAxY2Jl
MDgzNGYzY2VmMjk4Y2NiZWJkMWI4NWQ3Y2NhNTRmLi5lM2U2YmZhZjllYmY0N2JiOTYxOGE3YzAw
OWQzZmVmYzQ4MzAzN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU3OTMsNiArNTc5
Myw5IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQpCiAKICAgICB1bndyYXBGdWxsU2NyZWVuUmVuZGVyZXIobV9mdWxs
U2NyZWVuUmVuZGVyZXIsIG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOwogCisgICAgaWYgKGVs
ZW1lbnQpCisgICAgICAgIGVsZW1lbnQtPndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpOwor
ICAgIAogICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50OwogCiAjaWYgVVNFKE5BVElW
RV9GVUxMU0NSRUVOX1ZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGI2YjU2ODA2NjY5
NGRiYWZkZGFjYWIwOWM4MWIxMWI1YWM5YWIyYzguLmExY2ZjMjhmNjAyZGYxNjc5Yzk2Y2UzN2Ri
Mzg0OThlOWJkYzZjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTI0MTQsNiArMjQxNCwx
MiBAQCB2b2lkIEVsZW1lbnQ6OnNldE1pbmltdW1TaXplRm9yUmVzaXppbmcoY29uc3QgTGF5b3V0
U2l6ZSYgc2l6ZSkKICAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRNaW5pbXVtU2l6ZUZv
clJlc2l6aW5nKHNpemUpOwogfQogCit2b2lkIEVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVu
RWxlbWVudCgpCit7CisgICAgZm9yIChhdXRvJiBjaGlsZCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVs
ZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgY2hpbGQuYW5jZXN0b3JXaWxsRW50ZXJGdWxsc2NyZWVu
KCk7Cit9CisKIHN0YXRpYyBQc2V1ZG9FbGVtZW50KiBiZWZvcmVPckFmdGVyUHNldWRvRWxlbWVu
dChFbGVtZW50JiBob3N0LCBQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogewogICAg
IHN3aXRjaCAocHNldWRvRWxlbWVudFNwZWNpZmllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
MjNkMTI2OWM1YzJhZjZmZTVkOWFhOTRmOWRlYjIyYTcwNzE5MTE4Yy4uM2IxYTgyNWY4ZjEzYzM3
NjllYzMxMjJiNDFiY2M0ODI2ZjZhMjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zNTcsNiAr
MzU3LDggQEAgcHVibGljOgogICAgIC8vIFVzZSBEb2N1bWVudDo6cmVnaXN0ZXJGb3JQcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKSB0byBzdWJzY3JpYmUgdG8gdGhpcy4KICAg
ICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKSB7IH0KIAorICAg
IHZpcnR1YWwgdm9pZCB3aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYW5jZXN0b3JXaWxsRW50ZXJGdWxsc2NyZWVuKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
dG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCBmNzMyNGNmMmM5MjhkNmZhMzBhODllNGM0MzRjNGMzNTcw
NjhmY2MxLi5iNTU2NTYxMGY4ZjE4MjA0MjAwMzk3MTcwOTVlNGRmYzdhZWQzZDdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTUyNjksOSArNTI2OSwxOSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbihWaWRlb0Z1bGxzY3JlZW5N
b2RlIG1vZGUpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICBpZiAobW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgJiYgZG9jdW1lbnQo
KS5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQo
KSkgewotICAgICAgICBkb2N1bWVudCgpLnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCh0aGlz
LCAwLCBEb2N1bWVudDo6RXhlbXB0SUZyYW1lQWxsb3dGdWxsU2NyZWVuUmVxdWlyZW1lbnQpOwot
ICAgICAgICByZXR1cm47CisgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+ZnVsbFNjcmVl
bkVuYWJsZWQoKSkgeworICAgICAgICBpZiAobW9kZSA9PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3Rh
bmRhcmQpIHsKKyAgICAgICAgICAgIGRvY3VtZW50KCkucmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KHRoaXMsIDAsIERvY3VtZW50OjpFeGVtcHRJRnJhbWVBbGxvd0Z1bGxTY3JlZW5SZXF1aXJl
bWVudCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0
aGlzIG1lZGlhIGVsZW1lbnQgaXMgbm90IGdvaW5nIHRvIHN0YW5kYXJkIGZ1bGxzY3JlZW4gbW9k
ZSBidXQgdGhlcmUncworICAgICAgICAvLyBhbiBlbGVtZW50IHRoYXQncyBjdXJyZW50bHkgaW4g
ZnVsbCBzY3JlZW4gaW4gdGhlIGRvY3VtZW50LCBleGl0IGZ1bGwgc2NyZWVuCisgICAgICAgIC8v
IGlmIGl0IGNvbnRhaW5zIHRoaXMgbWVkaWEgZWxlbWVudC4KKyAgICAgICAgaWYgKEVsZW1lbnQq
IGZ1bGxzY3JlZW5FbGVtZW50ID0gZG9jdW1lbnQoKS53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVs
ZW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKGZ1bGxzY3JlZW5FbGVtZW50LT5jb250YWlucyh0
aGlzKSkKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLndlYmtpdENhbmNlbEZ1bGxTY3JlZW4o
KTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogCkBAIC01MzIwLDYgKzUzMzAsMzMgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgfQogfQogCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpCit7CisjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG9sZFZpZGVvRnVsbHNjcmVlbk1v
ZGUgPSBtX3ZpZGVvRnVsbHNjcmVlbk1vZGU7CisjZW5kaWYKKworICAgIGZ1bGxzY3JlZW5Nb2Rl
Q2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworCisjaWYgUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgc3dpdGNoIChvbGRWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSB7CisgICAgY2FzZSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZToKKyAg
ICBjYXNlIFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDoKKyAgICAgICAgLy8gRG9uJ3QgbmVl
ZCB0byBkbyBhbnl0aGluZyBpZiB3ZSBhcmUgbm90IGluIGFueSBzcGVjaWFsIGZ1bGxzY3JlZW4g
bW9kZSBvciBpdCdzIGFscmVhZHkKKyAgICAgICAgLy8gaW4gc3RhbmRhcmQgZnVsbHNjcmVlbiBt
b2RlLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJl
SW5QaWN0dXJlOgorICAgICAgICBpZiAoaXM8SFRNTFZpZGVvRWxlbWVudD4oKnRoaXMpKSB7Cisg
ICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLnN1cHBv
cnRzVmlkZW9GdWxsc2NyZWVuKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpKQorICAgICAgICAgICAg
ICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5leGl0VmlkZW9GdWxsc2Ny
ZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50PigqdGhp
cyksIFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgfQorI2VuZGlmCisKKyAgICBFbGVtZW50Ojp3aWxsQmVjb21lRnVsbHNjcmVlbkVs
ZW1lbnQoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRCZWNvbWVGdWxsc2NyZWVu
RWxlbWVudCgpCiB7CiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKQEAgLTUzMzAsNiArNTM2
Nyw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVt
ZW50KCkKIHsKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRy
b2xzKCktPmV4aXRlZEZ1bGxzY3JlZW4oKTsKKworICAgIGlmIChmdWxsc2NyZWVuTW9kZSgpID09
IFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKKyAgICAgICAgZnVsbHNjcmVlbk1vZGVDaGFu
Z2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKIH0KIAogUGxhdGZvcm1NZWRpYSBIVE1MTWVk
aWFFbGVtZW50OjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKaW5kZXggZmUyYWUyNzAwNjIyZjIwY2I1NGUyYzYyNDkyZjZhNDg2MmIwZTgw
Ni4uNzI1ZmIzYTdkMTAxODhhZGI2ODA4YTA1ZWZkNzRlMmQxYmU4NzUyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTUwNSw2ICs1MDUsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwog
CisgICAgdmlydHVhbCB2b2lkIHdpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMTZk
ODc3MDQwMDQ3NTg4ODA1YTUwOWY1MDhjODY4MmU5ZTRiZjI2NS4uMDYwMTViOGJhMzYxNWI1NzNl
NzYxMDZiZDljOWUzNDQyMWRhZDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCkBAIC0zMTgsNiArMzE4LDE5IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Vi
a2l0RGlzcGxheWluZ0Z1bGxzY3JlZW4oKQogICAgIHJldHVybiBpc0Z1bGxzY3JlZW4oKTsKIH0K
IAordm9pZCBIVE1MVmlkZW9FbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4oKQor
eworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQor
ICAgIGlmIChmdWxsc2NyZWVuTW9kZSgpID09IFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBJZiB0aGlzIHZpZGVvIGVsZW1lbnQncyBwcmVzZW50YXRp
b24gbW9kZSBpcyBub3QgaW5saW5lLCBidXQgaXRzIGFuY2VzdG9yCisgICAgLy8gaXMgZW50ZXJp
bmcgZnVsbHNjcmVlbiwgZXhpdCBpdHMgY3VycmVudCBmdWxsc2NyZWVuIG1vZGUuCisgICAgaWYg
KGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5zdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlbihmdWxsc2NyZWVuTW9kZSgpKSkKKyAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9t
ZSgpLmNsaWVudCgpLmV4aXRWaWRlb0Z1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKCp0
aGlzLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShX
SVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmgKaW5kZXggMmY2ZTk4NzE2ZTQ1ZTkwOGU2YTk1YWMwNGVhNzIwOTcz
ZTBlMmMyNi4uYjRlZWNmYmIyMjZjNWIzYTNhOTk3MTgxNzkzNWQxNWY0NjQxNWRkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGlj
OgogICAgIGJvb2wgd2Via2l0U3VwcG9ydHNGdWxsc2NyZWVuKCk7CiAgICAgYm9vbCB3ZWJraXRE
aXNwbGF5aW5nRnVsbHNjcmVlbigpOwogCisgICAgdmlydHVhbCB2b2lkIGFuY2VzdG9yV2lsbEVu
dGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIAogICAgIC8vIEZJWE1FOiBNYWludGFpbiAi
RnVsbFNjcmVlbiIgY2FwaXRhbGl6YXRpb24gc2NoZW1lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJp
bGl0eS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYw
ODEKICAgICB2b2lkIHdlYmtpdEVudGVyRnVsbFNjcmVlbihFeGNlcHRpb25Db2RlJiBlYykgeyB3
ZWJraXRFbnRlckZ1bGxzY3JlZW4oZWMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCA3NDQxZTBkYjI1ZTQ4ZDg3MjI1MjdkNmU2ZjljOGI2MzRmYTMwNDQ3Li44NzUxMGE2NjJj
NDE4ZmQ1MGQ3NTFiOTdjY2Q2ZDg0MWY3MGZmZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTM0Myw2ICszNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVy
VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQmLCBIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIHsgfQogI2VuZGlmCiAgICAgdmly
dHVhbCB2b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVu
V2l0aG91dEFuaW1hdGlvblRvTW9kZShXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIC8qdGFyZ2V0TW9kZSovKSB7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpIHsg
cmV0dXJuIGZhbHNlOyB9IAogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYy5oCmluZGV4IGM0YzI0ZDAwOTdlYTNkYzgzZjQ0ZjM0NjBhMjRkMmFjN2VmYzk0
MzcuLjVhZGQ0YzA0YzA1ZmVhMzQxNWI3YjQwNTA4NTNiMzc0M2RiNTQ4Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLmgKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0dXBGdWxsc2NyZWVuKE5TVmlldyYgbGF5ZXJIb3N0ZWRWaWV3LCBjb25zdCBJ
bnRSZWN0JiBpbml0aWFsUmVjdCwgTlNXaW5kb3cgKnBhcmVudFdpbmRvdywgSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1
cmVQbGF5YmFjayk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmIGZp
bmFsUmVjdCwgTlNXaW5kb3cgKnBhcmVudFdpbmRvdyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFu
dXBGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQppbmRleCA1MmE2NzJmZmQ4YWNhMmUzNDM0MmI3ZmU0
YTQzYmUyYzM3MGExMTA3Li45YmVkZDAwZjg4MTljYzVjYjVmYThkNTQwNDQ2MDAzZTk3NTEzMzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KQEAgLTg3LDYgKzg3LDEwIEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpleGl0RnVsbHNjcmVlbihjb25zdCBJbnRSZWN0
JiwgTlNXaW5kb3cgKikKIHsKIH0KIAordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWM6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpCit7Cit9CisKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjOjpjbGVhbnVwRnVsbHNjcmVlbigpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5LmgKaW5kZXggOTU1ZmVjOGEyMGM5OGFlZDA4N2M1NWZjMjU1ZWE5ZGZjYTZk
MDMzOS4uODRlYTU0MGI3OGFmNWE1MGE5NGEzNzdlZDFjZGNjMDU0MDQ5NTM5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkuaApAQCAtMTQ5LDYgKzE0OSw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBleGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3Qg
ZmluYWxSZWN0KTsKICAgICB2b2lkIGNsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CiAgICAgdm9pZCBwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElk
LCBib29sIHZpc2libGUsIFdlYkNvcmU6OkludFJlY3QgaW5saW5lUmVjdCk7CisjaWYgUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgdm9pZCBleGl0
RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpOworI2VuZGlm
CiAKICAgICAvLyBNZXNzYWdlcyB0byBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCiAgICAgdm9p
ZCBwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyYmEyMjEyOGM2NzIwMzUxZWM5OTI5ZThlN2Q4OWI1
N2RhNmM0NWM1Li44NmI4YTlkMDBkMzQ3YmUyNzNmNzM0ZWRhYzQ3ZTdiMjEyZGMyM2UzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTM5LDUg
KzM5LDggQEAgbWVzc2FnZXMgLT4gV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5IHsKICAg
ICBFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkludFJlY3QgZmlu
YWxSZWN0KQogICAgIENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBQ
cmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib29sIHZpc2libGUs
IFdlYkNvcmU6OkludFJlY3QgaW5saW5lUmVjdCkKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKyAgICBFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmlt
YXRpb25Ub01vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKKyNlbmRpZgog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA5NWVhMDExODYy
MWRkM2Q2MDJmOTE3MTY0ODIxNmI1OWFmZDE0ZDcxLi5hMzdkMjFiMWEzZjE1MTIwZmMxNzAwMGE5
YTcyYTZkM2VjZWFjOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTQ3
Myw2ICs0NzMsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRG
dWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZToKICNlbmRpZgogfQogCisjaWYg
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCit2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0
aW9uVG9Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCit7CisgICAgZW5zdXJlSW50ZXJm
YWNlKGNvbnRleHRJZCkuZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKHRhcmdl
dE1vZGUpOworfQorI2VuZGlmCisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpjbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgZW5zdXJlSW50
ZXJmYWNlKGNvbnRleHRJZCkuY2xlYW51cEZ1bGxzY3JlZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCBkMWI5ODU5ZWE5ZjQ0MDA3NmEzMzkzNDJjMjg5NTJlNjM4NDAzYWZjLi45NTBh
MGQxMjhiODJjMDIxZjM3OGJiZjhkMmQxZTA2NGFhNjYzYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCkBAIC04NjUsNiArODY1LDE0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGl0Vmlk
ZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lCiB7CiAg
ICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPmV4aXRWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQodmlkZW9FbGVtZW50KTsKIH0KKworI2lmIFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4
aXRWaWRlb0Z1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIHRhcmdldE1vZGUpCit7CisgICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyKCktPmV4aXRWaWRlb0Z1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKHZpZGVvRWxl
bWVudCwgdGFyZ2V0TW9kZSk7Cit9CisjZW5kaWYKKwogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMmFkMjdlZmQzOGI4ZjFm
YWI4ZTBjODU5MjA4NDNmNzU2MTE5Zjk4ZC4uZTRkZTJmMmY5MmEzNzdiZjZlZWYzOWM1MmJmM2Mz
MWRhMmJhM2E5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDYsNiArMjQ2LDkgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGV4aXRWaWRlb0Z1
bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYpIG92ZXJy
aWRlOworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KQorICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRv
TW9kZShXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKKyNlbmRpZgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IGQz
ZGFjNGU2ZTNhMzYzMmJhMTgwYjUzNzk0ZjJhODU5ZDlmYzhkYTkuLmU4YTA2YWY2OGQ0YzU0ZTc2
NWE2MjhlMDhiMmE5OTk2ZGZjY2Q0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC0xMTYs
NyArMTE2LDggQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBjb25zdDsK
ICAgICB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUpOwogICAgIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVu
dChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jik7Ci0gICAgCisgICAgdm9pZCBleGl0VmlkZW9G
dWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsK
KwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VDb250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggMjgyNDQ4MWFiNzRkNTQ1
MzNhMTIxNGQwOTM5MGE3NWEzNGY4Mzc3MC4uOGUwMGVkYTM4Yjg5ZGM3NGUyZjBjZDc2M2I3ZGZh
MzdhYzgzMjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjc5LDYgKzI3OSwyMyBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JW
aWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGNs
aWVudFJlY3RGb3JFbGVtZW50KCZ2aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9
CiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbldp
dGhvdXRBbmltYXRpb25Ub01vZGUoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVt
ZW50LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
dGFyZ2V0TW9kZSkKK3sKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKKyAgICBBU1NFUlQobV92aWRlb0VsZW1lbnRzLmNvbnRhaW5zKCZ2aWRlb0Vs
ZW1lbnQpKTsKKworICAgIHVpbnQ2NF90IGNvbnRleHRJZCA9IG1fdmlkZW9FbGVtZW50cy5nZXQo
JnZpZGVvRWxlbWVudCk7CisgICAgYXV0byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJmYWNlKGNv
bnRleHRJZCk7CisKKyAgICBpbnRlcmZhY2Uuc2V0VGFyZ2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsK
KworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJn
ZXRNb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2aWRl
b0VsZW1lbnQpOworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRNb2RlKTsKKyNlbmRpZgorfQorCiAj
cHJhZ21hIG1hcmsgSW50ZXJmYWNlIHRvIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQ6CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVzZXRNZWRpYVN0YXRlKHVp
bnQ2NF90IGNvbnRleHRJZCkK
</data>
<flag name="review"
          id="297439"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272700</attachid>
            <date>2016-03-02 16:06:40 -0800</date>
            <delta_ts>2016-03-02 16:06:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154834-20160302160624.patch</filename>
            <type>text/plain</type>
            <size>21057</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRmMjZkNGQzYWIzMjM0
OTlhMzkyM2EzZDRhMTdmZTNjZDRiZmM2ZS4uYzBjOTk0MmIyYzM5ZTQ1YzVlYzk2NGY2OGZlZWQ5
MDE4ZTZmNDUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE2LTAzLTAxICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSB0aGUgbWVkaWEgZWxl
bWVudCdzIHByZXNlbnRhdGlvbiBtb2RlIHByb3Blcmx5IGFmdGVyIGdvaW5nIGluIGFuZCBvdXQg
b2YgZnVsbCBzY3JlZW4gdmlhIHRoZSBGdWxsIFNjcmVlbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQp
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OndpbGxCZWNvbWVGdWxsc2NyZWVuRWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFuY2VzdG9yV2lsbEVudGVyRnVsbHNjcmVlbik6
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIElmIHRoZSBGdWxs
IFNjcmVlbiBBUEkgaXMgZW5hYmxlZCBhbmQgdGhpcyBtZWRpYSBlbGVtZW50IGlzIGVudGVyaW5n
IGEgbW9kZSBvdGhlciB0aGFuIHN0YW5kYXJkCisgICAgICAgIGZ1bGwgc2NyZWVuLCBzZWUgaWYg
aXQncyBjdXJyZW50bHkgY29udGFpbmVkIGluIGEgZnVsbCBzY3JlZW4gZWxlbWVudC4gSWYgc28s
IGV4aXQgZnVsbCBzY3JlZW4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3
aWxsQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQpOgorICAgICAgICBJZiB0aGlzIG1lZGlhIGVsZW1l
bnQgaXMgZ29pbmcgdG8gc3RhbmRhcmQgZnVsbCBzY3JlZW4sIHVwZGF0ZSBpdHMgcHJlc2VudGF0
aW9uIG1vZGUuIElmCisgICAgICAgIHRoaXMgbWVkaWEgZWxlbWVudCBhbHNvIHN1cHBvcnRzIHBy
ZXNlbnRhdGlvbiBtb2RlIGFuZCBpdCBjdXJyZW50bHkgaGFzIGEgcHJlc2VudGF0aW9uIG1vZGUK
KyAgICAgICAgdGhhdCdzIG5vdCBzdGFuZGFyZCBmdWxsIHNjcmVlbiwgZXhpdCB0aGF0IHByZXNl
bnRhdGlvbiBtb2RlIGRpcmVjdGx5IHdpdGhvdXQgYW5pbWF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6d2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KToKKyAg
ICAgICAgU2V0IHRoZSBwcmVzZW50YXRpb24gbW9kZSBiYWNrIHRvIGlubGluZSB1bmxlc3MgaXQn
cyBhbHJlYWR5IGNoYW5nZWQgdG8gYSBkaWZmZXJlbnQKKyAgICAgICAgcHJlc2VudGF0aW9uIG1v
ZGUuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OmFuY2VzdG9yV2lsbEVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIFJlc2V0IHRoaXMgdmlkZW8g
ZWxlbWVudCdzIHByZXNlbnRhdGlvbiBzdGF0ZSB0byBpbmxpbmUgaWYgaXRzIGFuY2VzdG9yIGlz
IGdvaW5nIHRvIGZ1bGwgc2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVu
dDo6ZXhpdFRvRnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3NzaWJsZSk6CisgICAg
ICAgIElmIHRoZSBmdWxsc2NyZWVuIG1vZGUgdGhlIHZpZGVvIGVsZW1lbnQgaXMgZXhpdGluZyBm
cm9tIGlzIHN1cHBvcnRlZCwgZXhpdCB0aGF0IG1vZGUgdG8gdGhlIG5ldyBtb2RlLgorICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1h
Yy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6
OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6CisKIDIwMTYtMDMtMDIgIEtv
bnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIFtjbWFrZV0g
TW92ZWQgUFJFL1BPU1RfQlVJTERfQ09NTUFORCB0byBXRUJLSVRfRlJBTUVXT1JLLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGNjYWYzMzNkZDJiNzk5NWExMTY3MWQ4NTc4NzVlMzVjZjQ5NGUxZTYuLjliNmY4NWUz
Y2ExOWU3OTBlZTYwNWRjZTA1YjQwMjNlMzRhZTM0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MiBAQAorMjAxNi0wMy0wMSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBVcGRhdGUgdGhlIG1lZGlhIGVsZW1lbnQncyBwcmVzZW50YXRpb24gbW9kZSBwcm9wZXJseSBh
ZnRlciBnb2luZyBpbiBhbmQgb3V0IG9mIGZ1bGwgc2NyZWVuIHZpYSB0aGUgRnVsbCBTY3JlZW4g
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4
MzQKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSk6CisgICAgICAgIENhbGwgdGhl
IG5ldyBleGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoKSBtZXRob2Qgb24gV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3Jl
ZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKToKKwogMjAxNi0wMy0wMiAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2hlcyBpbiBtZWRpYSB0ZXN0cyBhZnRlciBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTc0NjEKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IGQxMGVlZTEzNzY2MjI1Y2ViNzY2MThiMmY3YzUyMGU3MGM1NjJhMDcuLjE0OWY4
ZjVjMDE2NGUzNmQ5YWIzOWQ2OGIxYWMzMjc1MWYxNTJhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtNTgwMiw2ICs1ODAyLDkgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIAogICAgIHVud3JhcEZ1bGxT
Y3JlZW5SZW5kZXJlcihtX2Z1bGxTY3JlZW5SZW5kZXJlciwgbV9mdWxsU2NyZWVuRWxlbWVudC5n
ZXQoKSk7CiAKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgZWxlbWVudC0+d2lsbEJlY29tZUZ1
bGxzY3JlZW5FbGVtZW50KCk7CisgICAgCiAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1l
bnQ7CiAKICNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggNWRhZGFhMDk4YjFlZjcwMWQxMTZmNjdmMGI1OWYzNjE0YjcxMDcxNy4uMTRjNzBi
Y2FmOTNlNWM5MjMyOTViNGNiNDNjYzg3ZDhlNDU2ZDNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtMjQxOSw2ICsyNDE5LDEyIEBAIHZvaWQgRWxlbWVudDo6c2V0TWluaW11bVNpemVGb3JS
ZXNpemluZyhjb25zdCBMYXlvdXRTaXplJiBzaXplKQogICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpLnNldE1pbmltdW1TaXplRm9yUmVzaXppbmcoc2l6ZSk7CiB9CiAKK3ZvaWQgRWxlbWVudDo6
d2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkKK3sKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDog
ZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oKnRoaXMpKQorICAgICAgICBjaGlsZC5hbmNlc3Rv
cldpbGxFbnRlckZ1bGxzY3JlZW4oKTsKK30KKwogc3RhdGljIFBzZXVkb0VsZW1lbnQqIGJlZm9y
ZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGhvc3QsIFBzZXVkb0lkIHBzZXVkb0VsZW1l
bnRTcGVjaWZpZXIpCiB7CiAgICAgc3dpdGNoIChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAppbmRleCBmYThhZWYxNDVmNTQ1YjU3OGU5ZmFiY2M3M2FjNDMwNTFhMzA5
NDI3Li4zMTk1MDAwODJiNmQ5YzkxN2ZhMzM0YzM0MzllZTM0ZTdhMzVjMTFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKQEAgLTM1OCw2ICszNTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gVXNlIERvY3VtZW50
OjpyZWdpc3RlckZvclByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcygpIHRvIHN1
YnNjcmliZSB0byB0aGlzLgogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURp
ZENoYW5nZSgpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHdpbGxCZWNvbWVGdWxsc2NyZWVuRWxl
bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBhbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4oKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGFjZDc0YjAzNDU5Yzky
MjA3ZjAzNGQyM2QyYjNhN2ExODRmNDAyZmMuLmZjNzdlMTdiYWYyYTNjZDZmNTU5YTUyMjdjZDhj
NDhkZjRmYzYzN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtNTI3Nyw5ICs1Mjc3LDE5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2Ny
ZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlmIChtb2RlID09IFZpZGVvRnVsbHNjcmVlbk1vZGVT
dGFuZGFyZCAmJiBkb2N1bWVudCgpLnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS5zZXR0aW5ncygp
LT5mdWxsU2NyZWVuRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRvY3VtZW50KCkucmVxdWVzdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KHRoaXMsIDAsIERvY3VtZW50OjpFeGVtcHRJRnJhbWVBbGxvd0Z1bGxT
Y3JlZW5SZXF1aXJlbWVudCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChtb2RlID09IFZp
ZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkgeworICAgICAgICAgICAgZG9jdW1lbnQoKS5yZXF1
ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgMCwgRG9jdW1lbnQ6OkV4ZW1wdElGcmFtZUFs
bG93RnVsbFNjcmVlblJlcXVpcmVtZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIElmIHRoaXMgbWVkaWEgZWxlbWVudCBpcyBub3QgZ29pbmcgdG8gc3Rh
bmRhcmQgZnVsbHNjcmVlbiBtb2RlIGJ1dCB0aGVyZSdzCisgICAgICAgIC8vIGFuIGVsZW1lbnQg
dGhhdCdzIGN1cnJlbnRseSBpbiBmdWxsIHNjcmVlbiBpbiB0aGUgZG9jdW1lbnQsIGV4aXQgZnVs
bCBzY3JlZW4KKyAgICAgICAgLy8gaWYgaXQgY29udGFpbnMgdGhpcyBtZWRpYSBlbGVtZW50Lgor
ICAgICAgICBpZiAoRWxlbWVudCogZnVsbHNjcmVlbkVsZW1lbnQgPSBkb2N1bWVudCgpLndlYmtp
dEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKSB7CisgICAgICAgICAgICBpZiAoZnVsbHNjcmVl
bkVsZW1lbnQtPmNvbnRhaW5zKHRoaXMpKQorICAgICAgICAgICAgICAgIGRvY3VtZW50KCkud2Vi
a2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKQEAgLTUz
MjgsNiArNTMzOCwzMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkK
ICAgICB9CiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbEJlY29tZUZ1bGxzY3JlZW5F
bGVtZW50KCkKK3sKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkKKyAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUg
b2xkVmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1fdmlkZW9GdWxsc2NyZWVuTW9kZTsKKyNlbmRpZgor
CisgICAgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7
CisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkK
KyAgICBzd2l0Y2ggKG9sZFZpZGVvRnVsbHNjcmVlbk1vZGUpIHsKKyAgICBjYXNlIFZpZGVvRnVs
bHNjcmVlbk1vZGVOb25lOgorICAgIGNhc2UgVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOgor
ICAgICAgICAvLyBEb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGlmIHdlIGFyZSBub3QgaW4gYW55
IHNwZWNpYWwgZnVsbHNjcmVlbiBtb2RlIG9yIGl0J3MgYWxyZWFkeQorICAgICAgICAvLyBpbiBz
dGFuZGFyZCBmdWxsc2NyZWVuIG1vZGUuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVmlkZW9G
dWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmU6CisgICAgICAgIGlmIChpczxIVE1MVmlkZW9F
bGVtZW50PigqdGhpcykpCisgICAgICAgICAgICBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pih0
aGlzKS0+ZXhpdFRvRnVsbHNjcmVlbk1vZGVXaXRob3V0QW5pbWF0aW9uSWZQb3NzaWJsZShvbGRW
aWRlb0Z1bGxzY3JlZW5Nb2RlLCBWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpOworICAgICAg
ICBicmVhazsKKyAgICB9CisjZW5kaWYKKworICAgIEVsZW1lbnQ6OndpbGxCZWNvbWVGdWxsc2Ny
ZWVuRWxlbWVudCgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEJlY29tZUZ1bGxz
Y3JlZW5FbGVtZW50KCkKIHsKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQpAQCAtNTMzOCw2
ICs1MzczLDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsU3RvcEJlaW5nRnVsbHNjcmVl
bkVsZW1lbnQoKQogewogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAgICAgIG1lZGlh
Q29udHJvbHMoKS0+ZXhpdGVkRnVsbHNjcmVlbigpOworCisgICAgaWYgKGZ1bGxzY3JlZW5Nb2Rl
KCkgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQorICAgICAgICBmdWxsc2NyZWVuTW9k
ZUNoYW5nZWQoVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogfQogCiBQbGF0Zm9ybU1lZGlhIEhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAppbmRleCBmZTJhZTI3MDA2MjJmMjBjYjU0ZTJjNjI0OTJmNmE0ODYy
YjBlODA2Li43MjVmYjNhN2QxMDE4OGFkYjY4MDhhMDVlZmQ3NGUyZDFiZTg3NTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNTA1LDYgKzUwNSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJp
ZGU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVudCgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRl
eCAxNmQ4NzcwNDAwNDc1ODg4MDVhNTA5ZjUwOGM4NjgyZTllNGJmMjY1Li4xZTZmY2NkOGViNDY5
OWMwNmE5OWM0MjM2YjE5MTk1MWU4NWRjMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKQEAgLTMxOCw2ICszMTgsMTggQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
Ojp3ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVlbigpCiAgICAgcmV0dXJuIGlzRnVsbHNjcmVlbigp
OwogfQogCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmFuY2VzdG9yV2lsbEVudGVyRnVsbHNjcmVl
bigpCit7CisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01P
REUpCisgICAgaWYgKGZ1bGxzY3JlZW5Nb2RlKCkgPT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoaXMgdmlkZW8gZWxlbWVudCdzIHByZXNl
bnRhdGlvbiBtb2RlIGlzIG5vdCBpbmxpbmUsIGJ1dCBpdHMgYW5jZXN0b3IKKyAgICAvLyBpcyBl
bnRlcmluZyBmdWxsc2NyZWVuLCBleGl0IGl0cyBjdXJyZW50IGZ1bGxzY3JlZW4gbW9kZS4KKyAg
ICBleGl0VG9GdWxsc2NyZWVuTW9kZVdpdGhvdXRBbmltYXRpb25JZlBvc3NpYmxlKGZ1bGxzY3Jl
ZW5Nb2RlKCksIFZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyNlbmRpZgorfQorCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Vi
a2l0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdAogewpAQCAtNDc3LDYgKzQ4
OSwxNCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRl
b0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiAKICNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmV4
aXRUb0Z1bGxzY3JlZW5Nb2RlV2l0aG91dEFuaW1hdGlvbklmUG9zc2libGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIGZyb21Nb2RlLCBIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdG9Nb2RlKQoreworICAgIGlmIChkb2N1bWVudCgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oZnJvbU1v
ZGUpKQorICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdFZp
ZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oKnRoaXMsIHRvTW9kZSk7Cit9Cisj
ZW5kaWYKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgK
aW5kZXggMmY2ZTk4NzE2ZTQ1ZTkwOGU2YTk1YWMwNGVhNzIwOTczZTBlMmMyNi4uMjk2MGRkZDYx
NDEyMWYyZWJhNjA3NWZhNTk1YjFhNzM5MDFiNjNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIGJvb2wgd2Via2l0
U3VwcG9ydHNGdWxsc2NyZWVuKCk7CiAgICAgYm9vbCB3ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVl
bigpOwogCisgICAgdmlydHVhbCB2b2lkIGFuY2VzdG9yV2lsbEVudGVyRnVsbHNjcmVlbigpIG92
ZXJyaWRlOworICAgIAogICAgIC8vIEZJWE1FOiBNYWludGFpbiAiRnVsbFNjcmVlbiIgY2FwaXRh
bGl6YXRpb24gc2NoZW1lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYwODEKICAgICB2b2lkIHdlYmtp
dEVudGVyRnVsbFNjcmVlbihFeGNlcHRpb25Db2RlJiBlYykgeyB3ZWJraXRFbnRlckZ1bGxzY3Jl
ZW4oZWMpOyB9CkBAIC04Niw2ICs4OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICNlbmRp
ZgogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
CisgICAgdm9pZCBleGl0VG9GdWxsc2NyZWVuTW9kZVdpdGhvdXRBbmltYXRpb25JZlBvc3NpYmxl
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBmcm9tTW9kZSwgSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRvTW9kZSk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYsIGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCA3YWNm
OTI3ZDg2YjliM2I2ZmVhN2JhMDQxNjIxMDkxMTk3MjQ0NDI1Li5kODNjY2I0NzMwODYxMDIxZGVi
Y2JhZmE0OTkzOGFmZWU0ZjU0NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAg
LTM0NCw2ICszNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFVwVmlkZW9Db250
cm9sc01hbmFnZXIoSFRNTFZpZGVvRWxlbWVudCYpIHsgfQogI2VuZGlmCiAgICAgdmlydHVhbCB2
b2lkIGV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2Rl
V2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIC8qdGFyZ2V0TW9kZSovKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpIHsgcmV0dXJu
IGZhbHNlOyB9IAogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5oCmluZGV4IDYxYzUwOTUyMTEyOWFiZmU3ODI4ZDU0NGEyOTY2ZTc2YjBiYTQyOWEuLmRh
ZGE1OWUwNmMzZTkwZWI2OTFmYTE2NGQ4YzVkMWZlZGE0NThjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0dXBGdWxsc2NyZWVuKE5TVmlldyYgbGF5ZXJIb3N0ZWRWaWV3LCBjb25zdCBJbnRSZWN0
JiBpbml0aWFsUmVjdCwgTlNXaW5kb3cgKnBhcmVudFdpbmRvdywgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5
YmFjayk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmIGZpbmFsUmVj
dCwgTlNXaW5kb3cgKnBhcmVudFdpbmRvdyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleGl0
RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFudXBGdWxs
c2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5tbQppbmRleCA3MDA5Nzk4MDA2YmFlYWE4OTNkNGUwODlkYjc5Mjg3
NDFiYTQzZjExLi43NTZmNGU2Y2ZkNTRjNjIyODZlYWQ4OTY5NzA5OTE5MjI1NTUwNmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KQEAgLTI2MSw2ICsyNjEsMTAgQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmV4aXRGdWxsc2NyZWVuKGNvbnN0IEludFJlY3QmLCBO
U1dpbmRvdyAqKQogewogfQogCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6
ZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSkKK3sKK30KKwogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWM6OmNsZWFudXBGdWxsc2NyZWVuKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaAppbmRleCA2NzYyNmQ2ZTJiOWQzNmI4Y2VjZGQxNjJmNTg3MjlkOTg4MDhmOWZi
Li43MWEwZThmYTBmZTE4MDA3YjlhNWM4NDUyOGVkM2NlZTI3YjNkZmJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5oCkBAIC0xNTIsNiArMTUyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SW50UmVjdCBmaW5h
bFJlY3QpOwogICAgIHZvaWQgY2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKTsK
ICAgICB2b2lkIHByZXBhcmVkVG9SZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJv
b2wgdmlzaWJsZSwgV2ViQ29yZTo6SW50UmVjdCBpbmxpbmVSZWN0KTsKKyNpZiBQTEFURk9STShN
QUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKyAgICB2b2lkIGV4aXRGdWxs
c2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CisjZW5kaWYKIAog
ICAgIC8vIE1lc3NhZ2VzIHRvIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIKICAgICB2b2lkIHBs
YXkodWludDY0X3QgY29udGV4dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZlMWQyOWU1ZDY3NjM0MGI4OGZlOTMzMzBjYWFiMzZlM2I2
MjQwMTYuLjBhZWQwYmQ0MTMxYWYzNTNhZTAxOGZmMDk2ZmUzMDA1NzdlOGZlNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDAsNSArNDAs
OCBAQCBtZXNzYWdlcyAtPiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgewogICAgIENs
ZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBQcmVwYXJlZFRvUmV0dXJu
VG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib29sIHZpc2libGUsIFdlYkNvcmU6OkludFJl
Y3QgaW5saW5lUmVjdCkKICAgICBTZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyV2l0aElEKHVpbnQ2
NF90IGNvbnRleHRJZCkKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkKKyAgICBFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUodWlu
dDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUgdmlkZW9GdWxsc2NyZWVuTW9kZSkKKyNlbmRpZgogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCAyYjA0ZGY4N2Q4OTBlY2U0NTI1NDc4Yzg0
YTg0ZmYyYmJiMWYwODg0Li44MmRmMzNmYzhmYmFhMDhmOWI1MzgwNGZhYThmNDc4YTVhYmFkZDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAgLTQ5MSw2ICs0OTEsMTMgQEAg
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmV4aXRGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCwgV2ViQ29yZToKICNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6ZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKHVpbnQ2
NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIHRhcmdldE1vZGUpCit7CisgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCku
ZXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKHRhcmdldE1vZGUpOworfQorI2Vu
ZGlmCisKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjbGVhbnVwRnVsbHNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJ
ZCkuY2xlYW51cEZ1bGxzY3JlZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBlMTFh
YmM4MWM3MGQyOThkMWYyYzljM2NiM2U1OGE5MzZhZDM4NzNkLi4yNzQ4N2YzNzI0YmQwNTYzYmIy
ZWRlN2VmMGM3MzBiY2M3ZTg4MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC04NzAs
NiArODcwLDE0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGl0VmlkZW9GdWxsc2NyZWVuRm9y
VmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lCiB7CiAgICAgbV9wYWdlLT52aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKCktPmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQo
dmlkZW9FbGVtZW50KTsKIH0KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BS
RVNFTlRBVElPTl9NT0RFKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4aXRWaWRlb0Z1bGxzY3Jl
ZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVv
RWxlbWVudCwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdl
dE1vZGUpCit7CisgICAgbV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPmV4aXRWaWRl
b0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKHZpZGVvRWxlbWVudCwgdGFyZ2V0TW9k
ZSk7Cit9CisjZW5kaWYKKwogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggOGYyMTBjM2I5ZDg4NjhmOWRhYzcxZWFhYTg5MmQ1
YjVmNTgwMGU1Zi4uNmE2OTY0ZmExYWMyNTkwODIwZDgyZTRjODEwNDI4MWYzNWFhMWY5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yNDcsNiArMjQ3LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGVudGVyVmlkZW9GdWxsc2NyZWVuRm9y
VmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQmKSBvdmVycmlkZTsKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVl
blRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7
CisjZW5kaWYKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIuaAppbmRleCBlY2VmY2FhMGRmYzEyOWJjMzc5ODRkYWQ1OTcwZThhY2FkMTMzNDdj
Li44ZGIyNzgzYzRmZmIwODBkYTJjNDRkZjU3ZmM3MjA1Yjg5OTUyNzU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSkgY29uc3Q7CiAgICAgdm9pZCBlbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVv
RWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKTsKICAgICB2b2lkIGV4aXRWaWRlb0Z1bGxz
Y3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYpOworICAgIHZv
aWQgZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSk7CiAgICAgdm9pZCBzZXRVcFZpZGVvQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQmKTsKICAgICAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQppbmRleCAyMzY4NjkxNzlmNDc4YTcyZjUyOGU5M2IyZDQxOTMyOTk0NzU2YTQ4Li4xM2U0
MGViMTViOWFjNGFmYTE5ZjJiOGVlNTQ2OTY3ZmUxZTkxOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCkBAIC0zMDcsNiArMzA3LDIzIEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6c2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtCiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNl
dFVwVmlkZW9Db250cm9sc01hbmFnZXJXaXRoSUQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CiB9CiAKK3ZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNj
cmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlk
ZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUgdGFyZ2V0TW9kZSkKK3sKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19Q
UkVTRU5UQVRJT05fTU9ERSkKKyAgICBBU1NFUlQobV92aWRlb0VsZW1lbnRzLmNvbnRhaW5zKCZ2
aWRlb0VsZW1lbnQpKTsKKworICAgIHVpbnQ2NF90IGNvbnRleHRJZCA9IG1fdmlkZW9FbGVtZW50
cy5nZXQoJnZpZGVvRWxlbWVudCk7CisgICAgYXV0byYgaW50ZXJmYWNlID0gZW5zdXJlSW50ZXJm
YWNlKGNvbnRleHRJZCk7CisKKyAgICBpbnRlcmZhY2Uuc2V0VGFyZ2V0SXNGdWxsc2NyZWVuKGZh
bHNlKTsKKworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElk
LCB0YXJnZXRNb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TSh2aWRlb0VsZW1lbnQpOworICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRNb2RlKTsKKyNlbmRpZgor
fQorCiAjcHJhZ21hIG1hcmsgSW50ZXJmYWNlIHRvIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQ6CiAKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVzZXRNZWRpYVN0
YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>