<?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>110066</bug_id>
          
          <creation_ts>2013-02-17 18:06:33 -0800</creation_ts>
          <short_desc>[EFL][Qt][WK2] Meta bug for not using ScrollView::m_fixedVisibleContentRect.</short_desc>
          <delta_ts>2017-03-11 10:43:54 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>111407</dependson>
    
    <dependson>111408</dependson>
    
    <dependson>111413</dependson>
    
    <dependson>109033</dependson>
    
    <dependson>110197</dependson>
    
    <dependson>110298</dependson>
    
    <dependson>110299</dependson>
    
    <dependson>110311</dependson>
    
    <dependson>110450</dependson>
    
    <dependson>110847</dependson>
    
    <dependson>111401</dependson>
    
    <dependson>111405</dependson>
    
    <dependson>111406</dependson>
          <blocked>103105</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dev</cc>
    
    <cc>jaepark</cc>
    
    <cc>joone</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>noam</cc>
    
    <cc>yoon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>835071</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-17 18:06:33 -0800</bug_when>
    <thetext>Kenneth raised a question that we still need to use ScrollView::m_fixedVisibleContentRect.

Currently, we used fixedVisibleContentRect to make WebCore know actual scroll position and viewport size that PageViewportController deals with.
After Bug 105978 and Bug 107424, ScrollView can trace actual viewport size of PageViewportController. So if we make ScrollView know actual scroll position, we can remove fixedVisibleContentRect as well as delegates scrolling.

This huge changes have benefits as follow:
1. We share more code with other ports
2. It would be an intermediate step to go with scrolling coordinator (AFAIK cmarcelo and MPozdnyakov are investigating)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835072</commentid>
    <comment_count>1</comment_count>
      <attachid>188786</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-17 18:10:31 -0800</bug_when>
    <thetext>Created attachment 188786
Not for Review: WIP to share the direction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835073</commentid>
    <comment_count>2</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-17 18:27:09 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=188786) [details]
&gt; Not for Review: WIP to share the direction

Could you feedback this proposal? I want to discuss about it to find the best direction :)

First of all, I&apos;m curious that could I turn off delegates scroll. In my understanding, &apos;useFixedLayout&apos; does not need &apos;delegates scroll&apos;. I also want qt webkit1 to not use &apos;delegates scroll&apos;, which allows me remove all code related to &apos;delegates scroll&apos;.

Second, I need to confirm I understand correctly efl&apos;s device scale factor policy.
If we launch MiniBrowser with -r 2 option, does 800x600 EwkView want to make PageViewportController and WebProcess know the viewport size 400x300? and then EwkView finally scale x2 when rendering?
In above example, which is fixedLayoutSize: 800x600 or 400x300?

If you have any question and opinion, please let me know! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835574</commentid>
    <comment_count>3</comment_count>
      <attachid>188786</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-18 09:46:21 -0800</bug_when>
    <thetext>Comment on attachment 188786
Not for Review: WIP to share the direction

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

We really need to split this up... like maybe start by getting rid of the setViewportSize

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2135
&gt;      // This applies when the application UI handles scrolling, in which case RenderLayerCompositor doesn&apos;t need to manage it.
&gt; -    if (m_renderView-&gt;frameView()-&gt;delegatesScrolling())
&gt; +    if (!m_renderView-&gt;frameView()-&gt;canHaveScrollbars())
&gt;          return false;

I am not sure this is really correct... other platforms might have canHaveScrollbars being false.

Maybe this should be another patch

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2662
&gt; -void WebPageProxy::pageDidScroll()
&gt; +void WebPageProxy::pageDidScroll(const IntPoint&amp; scrollPosition)
&gt;  {
&gt;      m_uiClient.pageDidScroll(this);
&gt;  #if PLATFORM(MAC)
&gt;      dismissCorrectionPanel(ReasonForDismissingAlternativeTextIgnored);
&gt;  #endif
&gt; +#if USE(TILED_BACKING_STORE)
&gt; +    m_pageClient-&gt;pageDidRequestScroll(scrollPosition);
&gt; +#endif
&gt;  }

One is that it did scroll and the other is a request to do so... seems weird

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:447
&gt; -#if PLATFORM(QT) || PLATFORM(EFL)
&gt; -    if (m_page-&gt;useFixedLayout()) {
&gt; -        // The below method updates the size().
&gt; -        m_page-&gt;resizeToContentsIfNeeded();
&gt; -        m_page-&gt;drawingArea()-&gt;layerTreeHost()-&gt;sizeDidChange(m_page-&gt;size());
&gt; -    }
&gt; +#if USE(COORDINATED_GRAPHICS)
&gt; +    if (m_page-&gt;useFixedLayout())
&gt; +        m_page-&gt;drawingArea()-&gt;layerTreeHost()-&gt;sizeDidChange(size);

You tested this on Qt?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1242
&gt; -    m_page-&gt;settings()-&gt;setEnableScrollAnimator(!fixed);
&gt; +//    m_page-&gt;settings()-&gt;setEnableScrollAnimator(!fixed);

No... :-) please dotn add outcommented code

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1250
&gt; -    view-&gt;setDelegatesScrolling(fixed);
&gt; +//    view-&gt;setDelegatesScrolling(fixed);

same</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836162</commentid>
    <comment_count>4</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-19 02:28:44 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 188786 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188786&amp;action=review

Thank you for review!

&gt; We really need to split this up... like maybe start by getting rid of the setViewportSize

I&apos;ll separate and file several bugs, so this bug&apos;s tile includes &apos;Meta&apos;. :)

&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2135
&gt; &gt;      // This applies when the application UI handles scrolling, in which case RenderLayerCompositor doesn&apos;t need to manage it.
&gt; &gt; -    if (m_renderView-&gt;frameView()-&gt;delegatesScrolling())
&gt; &gt; +    if (!m_renderView-&gt;frameView()-&gt;canHaveScrollbars())
&gt; &gt;          return false;
&gt; 
&gt; I am not sure this is really correct... other platforms might have canHaveScrollbars being false.
&gt; Maybe this should be another patch

yes

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2662
&gt; &gt; -void WebPageProxy::pageDidScroll()
&gt; &gt; +void WebPageProxy::pageDidScroll(const IntPoint&amp; scrollPosition)
&gt; &gt;  {
&gt; &gt;      m_uiClient.pageDidScroll(this);
&gt; &gt;  #if PLATFORM(MAC)
&gt; &gt;      dismissCorrectionPanel(ReasonForDismissingAlternativeTextIgnored);
&gt; &gt;  #endif
&gt; &gt; +#if USE(TILED_BACKING_STORE)
&gt; &gt; +    m_pageClient-&gt;pageDidRequestScroll(scrollPosition);
&gt; &gt; +#endif
&gt; &gt;  }
&gt; 
&gt; One is that it did scroll and the other is a request to do so... seems weird

yes, I think so. I&apos;ll make code more consistent.

&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:447
&gt; &gt; -#if PLATFORM(QT) || PLATFORM(EFL)
&gt; &gt; -    if (m_page-&gt;useFixedLayout()) {
&gt; &gt; -        // The below method updates the size().
&gt; &gt; -        m_page-&gt;resizeToContentsIfNeeded();
&gt; &gt; -        m_page-&gt;drawingArea()-&gt;layerTreeHost()-&gt;sizeDidChange(m_page-&gt;size());
&gt; &gt; -    }
&gt; &gt; +#if USE(COORDINATED_GRAPHICS)
&gt; &gt; +    if (m_page-&gt;useFixedLayout())
&gt; &gt; +        m_page-&gt;drawingArea()-&gt;layerTreeHost()-&gt;sizeDidChange(size);
&gt; 
&gt; You tested this on Qt?

yes, I have tested both EFL and Qt.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1242
&gt; &gt; -    m_page-&gt;settings()-&gt;setEnableScrollAnimator(!fixed);
&gt; &gt; +//    m_page-&gt;settings()-&gt;setEnableScrollAnimator(!fixed);
&gt; 
&gt; No... :-) please dotn add outcommented code
&gt; same

absolutely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836164</commentid>
    <comment_count>5</comment_count>
      <attachid>189033</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-19 02:32:47 -0800</bug_when>
    <thetext>Created attachment 189033
I&apos;ll separate this patch and file several bug. I submitted this patch to share my WIP until now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286547</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-11 10:43:54 -0800</bug_when>
    <thetext>Closing this bug because the EFL port has been removed from trunk.

If you feel this bug applies to a different upstream WebKit port and was closed in error, please either update the title and reopen the bug, or leave a comment to request this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188786</attachid>
            <date>2013-02-17 18:10:31 -0800</date>
            <delta_ts>2013-02-19 02:32:42 -0800</delta_ts>
            <desc>Not for Review: WIP to share the direction</desc>
            <filename>bug-110066-20130218110559.patch</filename>
            <type>text/plain</type>
            <size>24380</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRkYTkwMjBhYzg1MmZj
NDZmYjIxNmRiYjRmMmE2NDJhNDZiN2NmZS4uZTkwZDQ0ZDgzOWJlN2I1N2RjMzg4ODA2YzM2OWIw
Mzg2YjU2NjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAyLTE3ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtFRkxdW1F0
XVtXSzJdIE1ldGEgYnVnIGZvciBub3QgdXNpbmcgU2Nyb2xsVmlldzo6bV9maXhlZFZpc2libGVD
b250ZW50UmVjdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMDA2NgorCisgICAgICAgIFdJUCBwYXRjaCB0byBzaGFyZSB0aGUgZGlyZWN0aW9uCisK
KyAgICAgICAgMS4gUmVtb3ZlIG1fdmlld3BvcnRTaXplIGluIFdlYlBhZ2UuCisgICAgICAgIDIu
IERvbid0IHVzZSBkZWxlZ2F0ZXMgc2Nyb2xsaW5nIGFuZCBmaXhlZCB2aXNpYmxlIGNvbnRlbnQg
cmVjdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFSYXdXZWJWaWV3OjpzZXRTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50OjpwYWdlUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9t
ZUNsaWVudDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21l
Q2xpZW50OjpkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OmNvbnRlbnRzU2l6ZUNoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0Fy
ZWFJbXBsOjp1cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTaXplKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VuZFZpZXdwb3J0QXR0cmlidXRl
c0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhZ2VEaWRTY3JvbGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTMtMDItMTcgIFN1
ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBpbnRlbC5jb20+CiAKICAgICAg
ICAgW1dLMl1bRUZMXSBSZW1vdmUgZnVsbHNjcmVlbiBtYW5hZ2VyIHByb3h5IGFzIGEgbWVzc2Fn
ZSByZWNlaXZlciBvbiBpbnZhbGlkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMDQzNzMzMGQ3ZmNlNTFlY2RlMTI1
Zjk3MjliM2FkYWIxMjhkZTk1Ny4uNGNlOTMxNDU0Yjg3YjdkOTU5YzBlZGNhNTIxODM2MmZjNWY2
NDUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKQEAgLTIxMzEsNyArMjEzMSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpuZWVkc0NvbnRlbnRzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciogbGF5
CiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNTY3JvbGxMYXllcihSb290TGF5
ZXJBdHRhY2htZW50IGF0dGFjaG1lbnQpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBhcHBsaWVzIHdo
ZW4gdGhlIGFwcGxpY2F0aW9uIFVJIGhhbmRsZXMgc2Nyb2xsaW5nLCBpbiB3aGljaCBjYXNlIFJl
bmRlckxheWVyQ29tcG9zaXRvciBkb2Vzbid0IG5lZWQgdG8gbWFuYWdlIGl0LgotICAgIGlmICht
X3JlbmRlclZpZXctPmZyYW1lVmlldygpLT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICBpZiAo
IW1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCktPmNhbkhhdmVTY3JvbGxiYXJzKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIG91ciBvd24gc2Nyb2xs
aW5nIGlmIHdlJ3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9yYXcvcXJhd3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9y
YXcvcXJhd3dlYnZpZXcuY3BwCmluZGV4IDM4OTkxZGRmNjVjMWMzZTNjNzE2YTZkNjA5ZGNkN2Zj
OTIwMmQwNGQuLjRhYTM1MzM3N2YxNDI3YzUxNmU5NWU5YmI3YmFiYjY2ODQ1YTkyZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5j
cHAKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFFSYXdXZWJWaWV3OjpzZXRTaXplKGNvbnN0IFFT
aXplJiBzaXplKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZC0+bV93ZWJQYWdlUHJveHkt
PnVzZUZpeGVkTGF5b3V0KCkpCi0gICAgICAgIGQtPm1fd2ViUGFnZVByb3h5LT5zZXRWaWV3cG9y
dFNpemUoc2l6ZSk7CisgICAgICAgIGRyYXdpbmdBcmVhLT5zZXRTaXplKHNpemUsIFdlYkNvcmU6
OkludFNpemUoKSk7CiAKICAgICBkLT5tX3NpemUgPSBzaXplOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKaW5kZXggMWE5YmRl
NmRlNWM3NTMyYjNiOGM3ZjkxY2Q0NWMwNjg2ZWQ1NmQzMC4uYTBkZDhkMjZjOWUwMmViMjQxZmY2
YjY2ZTNjYTQxZDc3MWMwYzEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcApAQCAtMjQ4LDEwICsyNDgsMTIgQEAgdm9pZCBQ
YWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3cG9ydFNpemUoY29uc3QgRmxvYXRT
aXplJiBuZXdTaXplKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IG5l
d1NpemU7CisgICAgLy8gVGhlIHZpZXdwb3J0IGNvbnRyb2xsZXIgZXhwZWN0cyBzaXplcyBpbiBV
SSB1bml0cywgYW5kIG5vdCByYXcgZGV2aWNlIHVuaXRzLgorICAgIG1fdmlld3BvcnRTaXplLnNj
YWxlKDEgLyBkZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogICAgIC8vIExldCB0aGUgV2ViUHJvY2Vz
cyBrbm93IGFib3V0IHRoZSBuZXcgdmlld3BvcnQgc2l6ZSwgc28gdGhhdAogICAgIC8vIGl0IGNh
biByZXNpemUgdGhlIGNvbnRlbnQgYWNjb3JkaW5nbHkuCi0gICAgbV93ZWJQYWdlUHJveHktPnNl
dFZpZXdwb3J0U2l6ZShyb3VuZGVkSW50U2l6ZShuZXdTaXplKSk7CisgICAgbV93ZWJQYWdlUHJv
eHktPmRyYXdpbmdBcmVhKCktPnNldFNpemUocm91bmRlZEludFNpemUobmV3U2l6ZSksIEludFNp
emUoKSk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlQ29udGVu
dHNWaXNpYmlsaXR5KGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBmbG9hdCBzY2FsZSwgY29u
c3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYmQwMDNjMzgwODFjYjEwNjc1NGYyMzg0YjAxNTQ2MDFl
ODFjMmRiYi4uYmY1M2QwMTlkNjYwMmQ0ZGY4MjA4YWYyOGI1MTg4OWUwZDBkMGY3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMDMsMTQgKzEwMDMs
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYg
Y29tbWFuZE5hbWUpCiB9CiAgICAgCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0g
ICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRTaXplKHNpemUpLCBtX3BhZ2VJRCk7Ci19
Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCkKIHsK
ICAgICBpZiAoIWlzVmFsaWQoKSkKQEAgLTI2NDEsMTEgKzI2MzMsNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
dWludDY0X3QgZgogfQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12b2lkIFdlYlBh
Z2VQcm94eTo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvaW50KQotewot
ICAgIG1fcGFnZUNsaWVudC0+cGFnZURpZFJlcXVlc3RTY3JvbGwocG9pbnQpOwotfQotCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKIHsKICAgICBtX3Bh
Z2VDbGllbnQtPnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwpAQCAtMjY2MywxMiArMjY1
MCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNv
bnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKICAgICBtX3BhZ2VDbGllbnQtPmRpZENoYW5n
ZVZpZXdwb3J0UHJvcGVydGllcyhhdHRyKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VE
aWRTY3JvbGwoKQordm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwoY29uc3QgSW50UG9p
bnQmIHNjcm9sbFBvc2l0aW9uKQogewogICAgIG1fdWlDbGllbnQucGFnZURpZFNjcm9sbCh0aGlz
KTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCk7CiAjZW5kaWYKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyAgICBtX3BhZ2VDbGllbnQtPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xs
KHNjcm9sbFBvc2l0aW9uKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3Bl
blBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRp
bmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDk1YzEzZjY4
N2IzYWUyOWM3YmZiM2NmNzU0NzJkZmYzMTU5OTM0OTEuLjViMWNiZWQ3N2RkMWUwYmE0YzMwNGJi
Njg4MDNhOTE0ZTAyZGI5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTQxNCw3ICs0MTQsNiBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1XaWRnZXQgdmlld1dp
ZGdldCgpOwogI2VuZGlmCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdm9pZCBz
ZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZvaWQgY29tbWl0
UGFnZVRyYW5zaXRpb25WaWV3cG9ydCgpOwogI2VuZGlmCiAKQEAgLTgyNSw3ICs4MjQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2luZG93VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
dmlld1JlY3QsIFdlYkNvcmU6OkludFJlY3QmIHJlc3VsdCk7CiAgICAgdm9pZCBydW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlE
LCBib29sJiBzaG91bGRDbG9zZSk7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7Ci0gICAgdm9pZCBwYWdlRGlk
U2Nyb2xsKCk7CisgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CiAgICAgdm9pZCBydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29y
ZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHZvaWQgcHJpbnRGcmFtZSh1aW50NjRfdCBm
cmFtZUlEKTsKICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VO
YW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2Us
IHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIHVpbnQ2NF90JiBuZXdRdW90YSk7CkBAIC04NDcsNyAr
ODQ2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0
IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmcsIGNvbnN0IFN0cmluZyYgZGlyLCBjb25z
dCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogICAgIAog
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3Jv
bGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHBhZ2VUcmFuc2l0aW9uVmll
d3BvcnRSZWFkeSgpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkZjYxZTVkMzQw
MTE5Zjc5NTI3N2MwOTA1MWFiMDZhYTI4NzZjMDI4Li44YzA4YTRkZmU4NDI2ZWRhNzA3OTQ3M2Zm
N2YyOTRmYzFhMzZhNzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTU2LDcgKzU2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKICAgICBTY3JlZW5Ub1dpbmRvdyhXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2lu
dCkgLT4gKFdlYkNvcmU6OkludFBvaW50IHdpbmRvd1BvaW50KQogICAgIFdpbmRvd1RvU2NyZWVu
KFdlYkNvcmU6OkludFJlY3QgcmVjdCkgLT4gKFdlYkNvcmU6OkludFJlY3Qgc2NyZWVuRnJhbWUp
CiAgICAgUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdURjo6U3RyaW5nIG1lc3NhZ2UsIHVp
bnQ2NF90IGZyYW1lSUQpIC0+IChib29sIHNob3VsZENsb3NlKQotICAgIFBhZ2VEaWRTY3JvbGwo
KQorICAgIFBhZ2VEaWRTY3JvbGwoV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24pCiAg
ICAgUnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0
dGluZ3MgcGFyYW1ldGVycykKICAgICBQcmludEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIC0+ICgp
CiAgICAgUnVuTW9kYWwoKQpAQCAtNzQsNyArNzQsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogI2VuZGlmCiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBQYWdlRGlk
UmVxdWVzdFNjcm9sbChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKICAgICBQYWdlVHJhbnNpdGlv
blZpZXdwb3J0UmVhZHkoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsLmNwcAppbmRleCA0YjdjYjg0NWNkYjU3NTQ1MDQ4YjYyYzdiYTU1MWZjZGQw
Zjk3NzgzLi5iOTNlODFiOTg4NzY1YzE1OGQzNTIwODNkZjkyYzkwZDc0Njg3MWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKQEAgLTYxLDggKzYxLDYgQEAgdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogewogICAgIEFT
U0VSVChtX2NvbnRyb2xsZXIpOwogICAgIEZsb2F0U2l6ZSBzaXplID0gbV92aWV3LT5zaXplKCk7
Ci0gICAgLy8gVGhlIHZpZXdwb3J0IGNvbnRyb2xsZXIgZXhwZWN0cyBzaXplcyBpbiBVSSB1bml0
cywgYW5kIG5vdCByYXcgZGV2aWNlIHVuaXRzLgotICAgIHNpemUuc2NhbGUoMSAvIG1fY29udHJv
bGxlci0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VW
aWV3cG9ydFNpemUoc2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBlMDQw
NTVhMmU2ZTgxYWI2YTIzMjM3YTdlZGQxMTc0M2Y0MjczOWM2Li5lZTA2NTc2MDQ5Y2FhY2JkYTFh
ODQ0ZTc1ODMxMjcyNTFlZTFkNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xMTks
MTEgKzExOSw3IEBAIEZsb2F0UmVjdCBXZWJDaHJvbWVDbGllbnQ6OndpbmRvd1JlY3QoKQogCiBG
bG9hdFJlY3QgV2ViQ2hyb21lQ2xpZW50OjpwYWdlUmVjdCgpCiB7Ci0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCi0gICAgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fcGFnZS0+
dmlld3BvcnRTaXplKCkpOwotI2Vsc2UKICAgICByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgbV9wYWdlLT5zaXplKCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpm
b2N1cygpCkBAIC00MDAsMjAgKzM5NiwyMCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6aW52YWxp
ZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0JiByZWN0LCBib29sKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcGFnZS0+cGFnZURpZFNjcm9sbCgpOwor
ICAgIG1fcGFnZS0+cGFnZURpZFNjcm9sbChyZWN0LmxvY2F0aW9uKCkpOwogICAgIG1fcGFnZS0+
ZHJhd2luZ0FyZWEoKS0+c2V0TmVlZHNEaXNwbGF5KHJlY3QpOwogfQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2Nyb2xsKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0
JiBzY3JvbGxSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKLSAgICBtX3BhZ2UtPnBh
Z2VEaWRTY3JvbGwoKTsKKyAgICBtX3BhZ2UtPnBhZ2VEaWRTY3JvbGwoc2Nyb2xsUmVjdC5sb2Nh
dGlvbigpKTsKICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNjcm9sbChpbnRlcnNlY3Rpb24o
c2Nyb2xsUmVjdCwgY2xpcFJlY3QpLCBzY3JvbGxEZWx0YSk7CiB9CiAKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkZWxlZ2F0ZWRTY3JvbGxSZXF1
ZXN0ZWQoY29uc3QgSW50UG9pbnQmIHNjcm9sbE9mZnNldCkKIHsKLSAgICBtX3BhZ2UtPnBhZ2VE
aWRSZXF1ZXN0U2Nyb2xsKHNjcm9sbE9mZnNldCk7CisgICAgbV9wYWdlLT5wYWdlRGlkU2Nyb2xs
KHNjcm9sbE9mZnNldCk7CiB9CiAjZW5kaWYKIApAQCAtNDQ2LDE0ICs0NDIsMTEgQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OmNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqIGZyYW1lLCBjb25zdCBJ
bnRTaXplJiBzaXplKSBjb24KICAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkgIT0g
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShF
RkwpCi0gICAgaWYgKG1fcGFnZS0+dXNlRml4ZWRMYXlvdXQoKSkgewotICAgICAgICAvLyBUaGUg
YmVsb3cgbWV0aG9kIHVwZGF0ZXMgdGhlIHNpemUoKS4KLSAgICAgICAgbV9wYWdlLT5yZXNpemVU
b0NvbnRlbnRzSWZOZWVkZWQoKTsKLSAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5sYXll
clRyZWVIb3N0KCktPnNpemVEaWRDaGFuZ2UobV9wYWdlLT5zaXplKCkpOwotICAgIH0KKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgaWYgKG1fcGFnZS0+dXNlRml4ZWRMYXlvdXQo
KSkKKyAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVIb3N0KCktPnNpemVE
aWRDaGFuZ2Uoc2l6ZSk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkQ2hhbmdlQ29udGVudHNTaXplKG1fcGFnZS0+c2l6ZSgpKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKSk7
CiAjZW5kaWYKIAogICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+bWFpbkZyYW1lQ29udGVudFNp
emVDaGFuZ2VkKHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBm
OTNiNzNkY2JjNzdiMTE4MTgxMTMxMTNkMmMyOGVhY2JjYmI2OTE1Li5hMTczMGRkOTc0MjQyNzUy
ZGRmMWZhYTgyYThiMjQ0YTQzZGNhNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMTIwNSw3ICsxMjA1LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCiAgICAgYm9vbCBzaG91bGRVc2VGaXhlZExh
eW91dCA9IGlzTWFpbkZyYW1lICYmIHdlYlBhZ2UtPnVzZUZpeGVkTGF5b3V0KCk7CiAgICAgYm9v
bCBzaG91bGREaXNhYmxlU2Nyb2xsaW5nID0gaXNNYWluRnJhbWUgJiYgIXdlYlBhZ2UtPm1haW5G
cmFtZUlzU2Nyb2xsYWJsZSgpOwogICAgIGJvb2wgc2hvdWxkSGlkZVNjcm9sbGJhcnMgPSBzaG91
bGRVc2VGaXhlZExheW91dCB8fCBzaG91bGREaXNhYmxlU2Nyb2xsaW5nOwotICAgIEludFJlY3Qg
Y3VycmVudEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnZp
ZXcoKSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPmZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0KCkgOiBJbnRSZWN0KCk7CiAKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVz
cG9uc2UoKTsKICAgICBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24gPSBpc01haW5GcmFt
ZSAmJiB3ZWJQYWdlLT5zaG91bGRVc2VDdXN0b21SZXByZXNlbnRhdGlvbkZvclJlc3BvbnNlKHJl
c3BvbnNlKTsKQEAgLTEyMTQsNyArMTIxMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIFNjcm9sbGJhck1vZGUgZGVm
YXVsdFNjcm9sbGJhck1vZGUgPSBzaG91bGRIaWRlU2Nyb2xsYmFycyA/IFNjcm9sbGJhckFsd2F5
c09mZiA6IFNjcm9sbGJhckF1dG87CiAKICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+Y3JlYXRl
Vmlldyh3ZWJQYWdlLT5zaXplKCksIGJhY2tncm91bmRDb2xvciwgaXNUcmFuc3BhcmVudCwKLSAg
ICAgICAgSW50U2l6ZSgpLCBjdXJyZW50Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QsIHNob3VsZFVz
ZUZpeGVkTGF5b3V0LAorICAgICAgICBJbnRTaXplKCksIEludFJlY3QoKSwgc2hvdWxkVXNlRml4
ZWRMYXlvdXQsCiAgICAgICAgIGRlZmF1bHRTY3JvbGxiYXJNb2RlLCAvKiBsb2NrICovIHNob3Vs
ZEhpZGVTY3JvbGxiYXJzLCBkZWZhdWx0U2Nyb2xsYmFyTW9kZSwgLyogbG9jayAqLyBzaG91bGRI
aWRlU2Nyb2xsYmFycyk7CiAKICAgICBpbnQgbWluaW11bUxheW91dFdpZHRoID0gd2ViUGFnZS0+
bWluaW11bUxheW91dFdpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCBiN2Q2YzAxOGIyNDI1OWU1MDI0
N2I2MThmMTJhMWQ0ODUzYTU1OTBlLi4zOGJkOTgzZTI0ZTc4YmYwMzgwYjI4ZmQ0NjMwNTBlNzg0
OWJmZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTczMywxMSArNzMzLDggQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb24KICAgICB9CiAKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICBpZiAobV93
ZWJQYWdlLT51c2VGaXhlZExheW91dCgpKSB7Ci0gICAgICAgIC8vIFJvdW5kIHRoZSByZWN0IGlu
c3RlYWQgb2YgZW5jbG9zaW5nIGl0IHRvIG1ha2Ugc3VyZSB0aGF0IGl0cyBzaXplIHN0YXlzCi0g
ICAgICAgIC8vIHRoZSBzYW1lIHdoaWxlIHBhbm5pbmcuIFRoaXMgY2FuIGhhdmUgbmFzdHkgZWZm
ZWN0cyBvbiBsYXlvdXQuCi0gICAgICAgIG1fd2ViUGFnZS0+c2V0Rml4ZWRWaXNpYmxlQ29udGVu
dFJlY3Qocm91bmRlZEludFJlY3QocmVjdCkpOwotICAgIH0KKyAgICBpZiAobV93ZWJQYWdlLT51
c2VGaXhlZExheW91dCgpKQorICAgICAgICBtX3dlYlBhZ2UtPnNldFNjcm9sbFBvc2l0aW9uKHJv
dW5kZWRJbnRSZWN0KHJlY3QpLmxvY2F0aW9uKCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKaW5k
ZXggZGU3NTZiMTRhZTNhNTcxMjM1NzliODY4N2NhM2IyOTcyNTk0MzI4ZC4uM2I5Mjc1NjgyMTM2
NWFkODY1NmE5NTA4ODI3MzkwNWJkZWQ3MzNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTM4MSw5ICszODEs
MTEgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OnVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2
NF90IHN0YXRlSUQsIGJvb2wgcmVzcG9uZEltbWUKICAgICAgICAgbV93ZWJQYWdlLT5zY3JvbGxN
YWluRnJhbWVJZk5vdEF0TWF4U2Nyb2xsUG9zaXRpb24oc2Nyb2xsT2Zmc2V0KTsKIAogICAgICAg
ICBpZiAobV9sYXllclRyZWVIb3N0KSB7Ci0gICAgICAgICAgICAvLyBVc2UgdGhlIHByZXZpb3Vz
bHkgc2V0IHBhZ2Ugc2l6ZSBpbnN0ZWFkIG9mIHRoZSBhcmd1bWVudC4KLSAgICAgICAgICAgIC8v
IEl0IGdldHMgYWRqdXN0ZWQgcHJvcGVybHkgd2hlbiB1c2luZyB0aGUgZml4ZWQgbGF5b3V0IG1v
ZGUuCi0gICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNpemVEaWRDaGFuZ2UobV93ZWJQYWdl
LT5zaXplKCkpOworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICAgICAgICAgIC8v
IENvb3JkaW5hdGVkIEdyYXBoaWNzIHNldHMgdGhlIHNpemUgb2YgdGhlIHJvb3QgbGF5ZXIgdG8g
Y29udGVudHMgc2l6ZS4KKyAgICAgICAgICAgIGlmICghbV93ZWJQYWdlLT51c2VGaXhlZExheW91
dCgpKQorI2VuZGlmCisgICAgICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zaXplRGlkQ2hh
bmdlKG1fd2ViUGFnZS0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Rp
cnR5UmVnaW9uID0gbV93ZWJQYWdlLT5ib3VuZHMoKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDUwNzhhYmQ1YzRk
NTU0MTQ2ZTE5YTg4YmNhMzUxODBlNGFlYzA4MzQuLjQ0M2U5OWFmYjEwNDU4YzMwMmNjOTMzZDFm
ZTIzMmRmZjQzNGQyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTk3OSwxMiArOTc5LDYgQEAgdm9pZCBXZWJQYWdlOjpzZXRTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplKQogewogICAgIEZyYW1lVmlldyogdmlldyA9
IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQotICAgIC8vIElmIHdlIGFyZSByZXNpemluZyB0byBjb250ZW50IGlnbm9yZSBleHRlcm5h
bCBhdHRlbXB0cy4KLSAgICBpZiAodmlldy0+dXNlRml4ZWRMYXlvdXQoKSkKLSAgICAgICAgcmV0
dXJuOwotI2VuZGlmCi0KICAgICBpZiAobV92aWV3U2l6ZSA9PSB2aWV3U2l6ZSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC05OTMsNjIgKzk4Nyw0NyBAQCB2b2lkIFdlYlBhZ2U6OnNldFNpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUpCiAgICAgbV9kcmF3aW5nQXJlYS0+c2V0TmVl
ZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQoMCwgMCksIHZpZXdTaXplKSk7CiAgICAgCiAgICAg
bV92aWV3U2l6ZSA9IHZpZXdTaXplOwotfQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
Ci12b2lkIFdlYlBhZ2U6OnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCi17Ci0gICAgQVNTRVJUKG1fdXNlRml4ZWRMYXlvdXQpOwotCi0gICAgbV9wYWdlLT5t
YWluRnJhbWUoKS0+dmlldygpLT5zZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChyZWN0KTsKKyAg
ICBpZiAodmlldy0+dXNlRml4ZWRMYXlvdXQoKSkKKyAgICAgICAgc2VuZFZpZXdwb3J0QXR0cmli
dXRlc0NoYW5nZWQoKTsKKyNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2U6OnJlc2l6ZVRvQ29udGVu
dHNJZk5lZWRlZCgpCit2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBv
aW50JiBwb3NpdGlvbikKIHsKLSAgICBBU1NFUlQobV91c2VGaXhlZExheW91dCk7Ci0KLSAgICBG
cmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7Ci0KLSAgICBpZiAo
IXZpZXctPnVzZUZpeGVkTGF5b3V0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEludFNpemUg
bmV3U2l6ZSA9IHZpZXctPmNvbnRlbnRzU2l6ZSgpLmV4cGFuZGVkVG8odmlldy0+Zml4ZWRMYXlv
dXRTaXplKCkpOwotCi0gICAgaWYgKG5ld1NpemUgPT0gbV92aWV3U2l6ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV92aWV3U2l6ZSA9IG5ld1NpemU7Ci0gICAgdmlldy0+cmVzaXplKG5ld1Np
emUpOwotICAgIHZpZXctPnNldE5lZWRzTGF5b3V0KCk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUo
KS0+dmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbik7CiB9CiAKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKwogdm9pZCBXZWJQYWdlOjpzZW5kVmlld3BvcnRBdHRyaWJ1dGVz
Q2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKG1fdXNlRml4ZWRMYXlvdXQpOwogCiAgICAgLy8gVmll
d3BvcnQgcHJvcGVydGllcyBoYXZlIG5vIGltcGFjdCBvbiB6ZXJvIHNpemVkIGZpeGVkIHZpZXdw
b3J0cy4KLSAgICBpZiAobV92aWV3cG9ydFNpemUuaXNFbXB0eSgpKQorICAgIGlmIChtX3ZpZXdT
aXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUmVjYWxjdWxhdGUgdGhl
IHJlY29tbWVuZGVkIGxheW91dCBzaXplLCB3aGVuIHRoZSBhdmFpbGFibGUgc2l6ZSAoZGV2aWNl
IHBpeGVsKSBjaGFuZ2VzLgogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fcGFnZS0+c2V0dGlu
Z3MoKTsKIAotICAgIGludCBtaW5pbXVtTGF5b3V0RmFsbGJhY2tXaWR0aCA9IHN0ZDo6bWF4KHNl
dHRpbmdzLT5sYXlvdXRGYWxsYmFja1dpZHRoKCksIG1fdmlld3BvcnRTaXplLndpZHRoKCkpOwor
ICAgIGludCBtaW5pbXVtTGF5b3V0RmFsbGJhY2tXaWR0aCA9IHN0ZDo6bWF4KHNldHRpbmdzLT5s
YXlvdXRGYWxsYmFja1dpZHRoKCksIG1fdmlld1NpemUud2lkdGgoKSk7CiAKICAgICAvLyBJZiB1
bnNldCAgd2UgdXNlIHRoZSB2aWV3cG9ydCBkaW1lbnNpb25zLiBUaGlzIGZpdHMgd2l0aCB0aGUg
YmVoYXZpb3Igb2YgZGVza3RvcCBicm93c2Vycy4KLSAgICBpbnQgZGV2aWNlV2lkdGggPSAoc2V0
dGluZ3MtPmRldmljZVdpZHRoKCkgPiAwKSA/IHNldHRpbmdzLT5kZXZpY2VXaWR0aCgpIDogbV92
aWV3cG9ydFNpemUud2lkdGgoKTsKLSAgICBpbnQgZGV2aWNlSGVpZ2h0ID0gKHNldHRpbmdzLT5k
ZXZpY2VIZWlnaHQoKSA+IDApID8gc2V0dGluZ3MtPmRldmljZUhlaWdodCgpIDogbV92aWV3cG9y
dFNpemUuaGVpZ2h0KCk7CisgICAgaW50IGRldmljZVdpZHRoID0gKHNldHRpbmdzLT5kZXZpY2VX
aWR0aCgpID4gMCkgPyBzZXR0aW5ncy0+ZGV2aWNlV2lkdGgoKSA6IG1fdmlld1NpemUud2lkdGgo
KTsKKyAgICBpbnQgZGV2aWNlSGVpZ2h0ID0gKHNldHRpbmdzLT5kZXZpY2VIZWlnaHQoKSA+IDAp
ID8gc2V0dGluZ3MtPmRldmljZUhlaWdodCgpIDogbV92aWV3U2l6ZS5oZWlnaHQoKTsKIAotICAg
IFZpZXdwb3J0QXR0cmlidXRlcyBhdHRyID0gY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhtX3Bh
Z2UtPnZpZXdwb3J0QXJndW1lbnRzKCksIG1pbmltdW1MYXlvdXRGYWxsYmFja1dpZHRoLCBkZXZp
Y2VXaWR0aCwgZGV2aWNlSGVpZ2h0LCAxLCBtX3ZpZXdwb3J0U2l6ZSk7CisgICAgVmlld3BvcnRB
dHRyaWJ1dGVzIGF0dHIgPSBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKG1fcGFnZS0+dmlld3Bv
cnRBcmd1bWVudHMoKSwgbWluaW11bUxheW91dEZhbGxiYWNrV2lkdGgsIGRldmljZVdpZHRoLCBk
ZXZpY2VIZWlnaHQsIGRldmljZVNjYWxlRmFjdG9yKCksIG1fdmlld1NpemUpOwogCiAgICAgRnJh
bWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwogCiAgICAgLy8gSWYg
bm8gbGF5b3V0IHdhcyBkb25lIHlldCBzZXQgY29udGVudEZpeGVkT3JpZ2luIHRvICgwLDApLgot
ICAgIEludFBvaW50IGNvbnRlbnRGaXhlZE9yaWdpbiA9IHZpZXctPmRpZEZpcnN0TGF5b3V0KCkg
PyB2aWV3LT5maXhlZFZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgOiBJbnRQb2ludCgp
OworICAgIEludFBvaW50IGNvbnRlbnRGaXhlZE9yaWdpbiA9IHZpZXctPmRpZEZpcnN0TGF5b3V0
KCkgPyB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpIDogSW50UG9pbnQoKTsK
IAogICAgIC8vIFB1dCB0aGUgd2lkdGggYW5kIGhlaWdodCB0byB0aGUgdmlld3BvcnQgd2lkdGgg
YW5kIGhlaWdodC4gSW4gY3NzIHVuaXRzIGhvd2V2ZXIuCiAgICAgLy8gVXNlIEZsb2F0U2l6ZSB0
byBhdm9pZCB0cnVuY2F0ZWQgdmFsdWVzIGR1cmluZyBzY2FsZS4KLSAgICBGbG9hdFNpemUgY29u
dGVudEZpeGVkU2l6ZSA9IG1fdmlld3BvcnRTaXplOworICAgIEZsb2F0U2l6ZSBjb250ZW50Rml4
ZWRTaXplID0gbV92aWV3U2l6ZTsKIAogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04p
CiAgICAgLy8gQ1NTIHZpZXdwb3J0IGRlc2NyaXB0b3JzIG1pZ2h0IGJlIGFwcGxpZWQgdG8gYWxy
ZWFkeSBhZmZlY3RlZCB2aWV3cG9ydCBzaXplCkBAIC0xMDU3LDcgKzEwMzYsOCBAQCB2b2lkIFdl
YlBhZ2U6OnNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKCkKICNlbmRpZgogCiAgICAgY29u
dGVudEZpeGVkU2l6ZS5zY2FsZSgxIC8gYXR0ci5pbml0aWFsU2NhbGUpOwotICAgIHNldEZpeGVk
VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoY29udGVudEZpeGVkT3JpZ2luLCByb3VuZGVkSW50
U2l6ZShjb250ZW50Rml4ZWRTaXplKSkpOworICAgIHNldFNjcm9sbFBvc2l0aW9uKGNvbnRlbnRG
aXhlZE9yaWdpbik7CisgICAgLy8gRklYTUU6IHJlc2l6ZT8KIAogICAgIGF0dHIuaW5pdGlhbFNj
YWxlID0gbV9wYWdlLT52aWV3cG9ydEFyZ3VtZW50cygpLnpvb207IC8vIFJlc2V0cyBhdXRvICgt
MSkgaWYgbm8gdmFsdWUgd2FzIHNldCBieSB1c2VyLgogCkBAIC0xMDY2LDE5ICsxMDQ2LDYgQEAg
dm9pZCBXZWJQYWdlOjpzZW5kVmlld3BvcnRBdHRyaWJ1dGVzQ2hhbmdlZCgpCiAKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhhdHRy
KSk7CiB9Ci0KLXZvaWQgV2ViUGFnZTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUmIHNp
emUpCi17Ci0gICAgQVNTRVJUKG1fdXNlRml4ZWRMYXlvdXQpOwotCi0gICAgaWYgKG1fdmlld3Bv
cnRTaXplID09IHNpemUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdmlld3BvcnRTaXplID0g
c2l6ZTsKLQotICAgIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKCk7Ci19Ci0KICNlbmRp
ZgogCiB2b2lkIFdlYlBhZ2U6OnNjcm9sbE1haW5GcmFtZUlmTm90QXRNYXhTY3JvbGxQb3NpdGlv
bihjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCkBAIC0xMjcyLDcgKzEyMzksNyBAQCB2b2lk
IFdlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAjaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpICYmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQogICAgIC8vIERlbGVnYXRl
ZCBzY3JvbGxpbmcgd2lsbCBiZSBlbmFibGVkIHdoZW4gdGhlIEZyYW1lVmlldyBpcyBjcmVhdGVk
IGlmIGZpeGVkIGxheW91dCBpcyBlbmFibGVkLgogICAgIC8vIEVuc3VyZSB3ZSBkb24ndCBkbyBh
bmltYXRlZCBzY3JvbGxpbmcgaW4gdGhlIFdlYlByb2Nlc3MgaW4gdGhhdCBjYXNlLgotICAgIG1f
cGFnZS0+c2V0dGluZ3MoKS0+c2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoIWZpeGVkKTsKKy8vICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoIWZpeGVkKTsKICNl
bmRpZgogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lVmlldygpOwpAQCAtMTI4MCw3
ICsxMjQ3LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQog
ICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2aWV3
LT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcoZml4ZWQpOworLy8gICAgdmlldy0+c2V0RGVsZWdhdGVz
U2Nyb2xsaW5nKGZpeGVkKTsKICAgICB2aWV3LT5zZXRQYWludHNFbnRpcmVDb250ZW50cyhmaXhl
ZCk7CiAjZW5kaWYKICAgICB2aWV3LT5zZXRVc2VGaXhlZExheW91dChmaXhlZCk7CkBAIC0xNDM5
LDIwICsxNDA2LDEzIEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNjYWxlZFNuYXBz
aG90V2l0aE9wdGlvbnMoY29uc3QgSW50UmVjdCYgcmVjdCwgZG91CiAgICAgcmV0dXJuIHNuYXBz
aG90LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKCkKK3ZvaWQg
V2ViUGFnZTo6cGFnZURpZFNjcm9sbChjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7
CiAgICAgbV91aUNsaWVudC5wYWdlRGlkU2Nyb2xsKHRoaXMpOwogCi0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpQYWdlRGlkU2Nyb2xsKCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UGFnZURpZFNjcm9sbChzY3JvbGxQb3NpdGlvbikpOwogfQogCi0jaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12b2lkIFdlYlBhZ2U6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xs
KGNvbnN0IEludFBvaW50JiBwb2ludCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvaW50KSk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQogV2ViQ29udGV4dE1lbnUqIFdlYlBhZ2U6OmNvbnRleHRNZW51KCkK
IHsKQEAgLTE5OTgsNyArMTk1OCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJhbnNp
dGlvbigpCiB2b2lkIFdlYlBhZ2U6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oKQogewogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIGlmIChtX21haW5GcmFtZS0+Y29yZUZyYW1l
KCktPnZpZXcoKS0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCisgICAgaWYgKHVzZUZpeGVkTGF5b3V0
KCkpCiAgICAgICAgIC8vIFdhaXQgdW50aWwgdGhlIFVJIHByb2Nlc3Mgc2VudCB1cyB0aGUgdmlz
aWJsZSByZWN0IGl0IHdhbnRzIHJlbmRlcmVkLgogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpKTsKICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNmUwNjA2MDI3
MjUxYzVkYjJjMWRmZGZkYjk4MmVlZWU0YmIyNWI4Li4yODA5YWIxNmQyMmQ0ZjY3ZjkzMTdmMTli
OTdhYWU2YTczOGZjNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTM3MCwxNCArMzcwLDEwIEBAIHB1YmxpYzoKIAogICAgIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKCk7CiAKLSAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsKKyAgICB2b2lkIHBhZ2VEaWRT
Y3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHNldFNjcm9sbFBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RP
UkUpCi0gICAgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpOwotICAgIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwotICAgIHZvaWQgcmVzaXplVG9Db250ZW50c0lmTmVlZGVkKCk7CiAgICAgdm9p
ZCBzZW5kVmlld3BvcnRBdHRyaWJ1dGVzQ2hhbmdlZCgpOwotICAgIHZvaWQgc2V0Vmlld3BvcnRT
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdw
b3J0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtODcxLDEwICs4NjcsNiBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgbV9sb2dE
aWFnbm9zdGljTWVzc2FnZUNsaWVudDsKIAotI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQot
ICAgIFdlYkNvcmU6OkludFNpemUgbV92aWV3cG9ydFNpemU7Ci0jZW5kaWYKLQogICAgIEZpbmRD
b250cm9sbGVyIG1fZmluZENvbnRyb2xsZXI7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
UExBVEZPUk0oUVQpCiAgICAgVGFwSGlnaGxpZ2h0Q29udHJvbGxlciBtX3RhcEhpZ2hsaWdodENv
bnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDY3YmNlNmEyZDJmODc5MGEwNjhkYzMwZDlmYzgwMzA3
YjE1N2QyZGUuLmM1Y2E5YWY2NWUzYjc4YmU3YmM4N2FlODAyMzBjYThlZTE5YzVkM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0xMTYsMTAgKzExNiw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIFN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAgICAg
UmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogCi0jaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCi0gICAgU2V0Vmlld3BvcnRTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkK
LSNlbmRpZgotCiAgICAgQ2xvc2UoKQogICAgIFRyeUNsb3NlKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189033</attachid>
            <date>2013-02-19 02:32:47 -0800</date>
            <delta_ts>2013-02-19 02:32:47 -0800</delta_ts>
            <desc>I&apos;ll separate this patch and file several bug. I submitted this patch to share my WIP until now.</desc>
            <filename>bug-110066-20130219192809.patch</filename>
            <type>text/plain</type>
            <size>50598</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmQxYmJmMWY4NjFjODUz
MDU5YjkzMWY1Yzc3MGMyYzUzZTQzMTI1YS4uNDQ1Y2E2ZGU5MTFiYWQyYTJhMzI4YWU2YzhjOTU2
NzhkNWJlYjg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMy0wMi0xOSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBbRUZMXVtR
dF1bV0syXSBNZXRhIGJ1ZyBmb3Igbm90IHVzaW5nIFNjcm9sbFZpZXc6Om1fZml4ZWRWaXNpYmxl
Q29udGVudFJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTAwNjYKKworICAgICAgICBXSVAgcGF0Y2ggdG8gc2hhcmUgdGhlIGRpcmVjdGlvbgor
CisgICAgICAgIFtFRkxdW1dLMl0gZGVhbCB3aXRoIGRldmljZSBzY2FsZSBmYWN0b3IKKyAgICAg
ICAgW1dLMl0gQWRkIHNldE5lZWRzRGlzcGxheQorICAgICAgICBbV0syXSBSZW1vdmUgbV92aWV3
cG9ydFNpemUgaW4gV2ViUGFnZS4KKyAgICAgICAgW0VGTF1bUXRdW1dLMl0gRG9uJ3QgdXNlIGRl
bGVnYXRlcyBzY3JvbGxpbmcgYW5kIGZpeGVkIHZpc2libGUgY29udGVudCByZWN0LgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3Ojpz
ZXRTaXplKToKKyAgICAgICAgKEV3a1ZpZXc6OmRpcFNpemUpOgorICAgICAgICAoRXdrVmlldzo6
c2l6ZSk6CisgICAgICAgIChFd2tWaWV3OjpzZXRQYWdlUG9zaXRpb24pOgorICAgICAgICAoRXdr
Vmlldzo6ZGlwUGFnZVBvc2l0aW9uKToKKyAgICAgICAgKEV3a1ZpZXc6OnRyYW5zZm9ybVRvU2Nl
bmUpOgorICAgICAgICAoRXdrVmlldzo6cGFpbnRUb0NhaXJvU3VyZmFjZSk6CisgICAgICAgIChF
d2tWaWV3OjpzY2hlZHVsZVVwZGF0ZURpc3BsYXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKEV3a1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFSYXdXZWJWaWV3OjpzZXRTaXpl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjp1cGRhdGVWaWV3
cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp1cGRhdGVWaWV3cG9ydFNpemUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp2aWV3U2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDaHJvbWVDbGllbnQ6OnBhZ2VSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjppbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNocm9tZUNsaWVudDo6aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2hyb21lQ2xpZW50OjpkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDaHJvbWVDbGllbnQ6OmNvbnRlbnRzU2l6ZUNoYW5nZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzdG9yZVZpZXdTdGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JO
ZXdQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjcm9sbE5vbkNvbXBvc2l0ZWRD
b250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDb29y
ZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oOgorICAgICAgICAoRHJhd2luZ0FyZWEpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YUltcGw6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYUltcGw6OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OkRyYXdpbmdBcmVhSW1wbDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFJbXBsOjpmb3JjZVJlcGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUlt
cGw6OmRpZFVuaW5zdGFsbFBhZ2VPdmVybGF5KToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0Fy
ZWFJbXBsOjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OkRy
YXdpbmdBcmVhSW1wbDo6dXBkYXRlQmFja2luZ1N0b3JlU3RhdGUpOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYUltcGw6OnJlc3VtZVBhaW50aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmg6CisgICAgICAgIChEcmF3aW5nQXJlYUltcGwpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChM
YXllclRyZWVIb3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNpemUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZW5kVmlld3BvcnRBdHRyaWJ1dGVzQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNldFVzZUZpeGVkTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGFnZURpZFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldERy
YXdzQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldERyYXdzVHJhbnNw
YXJlbnRCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tcGxldGVQ
YWdlVHJhbnNpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3VtZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6
c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9uQ29tcG9zaXRlZENvbnRl
bnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3Rr
OjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oOgorICAgICAgICAoTGF5ZXJUcmVlSG9zdEd0ayk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLmg6Cisg
ICAgICAgIChMYXllclRyZWVIb3N0TWFjKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL0xheWVyVHJlZUhvc3RNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RN
YWM6OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RNYWM6OnNldE5vbkNvbXBvc2l0ZWRD
b250ZW50c05lZWREaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dE1hYzo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgIChSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgIChUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TmVlZHNEaXNwbGF5
SW5SZWN0KToKKwogMjAxMy0wMi0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIHdlYmtpdF93ZWJfdmlld19nZXRfc3Vi
cmVzb3VyY2VzIGZyb20gV2ViS2l0MiBHVEsrIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhNmRiOGZkMDA5YTJjYjBk
MThkNGE5YzY0ZTZiNzAyOGFiZDAzOTVhLi41ZGZiNzEwN2I5M2U3ZDRlMzU3ZjgyOWJkYzM0ZGY4
ZWE5Yzg4NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtMjEzMSw3ICsyMTMxLDcgQEAgYm9vbCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6Om5lZWRzQ29udGVudHNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVy
KiBsYXkKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc1Njcm9sbExheWVyKFJv
b3RMYXllckF0dGFjaG1lbnQgYXR0YWNobWVudCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGFwcGxp
ZXMgd2hlbiB0aGUgYXBwbGljYXRpb24gVUkgaGFuZGxlcyBzY3JvbGxpbmcsIGluIHdoaWNoIGNh
c2UgUmVuZGVyTGF5ZXJDb21wb3NpdG9yIGRvZXNuJ3QgbmVlZCB0byBtYW5hZ2UgaXQuCi0gICAg
aWYgKG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCktPmRlbGVnYXRlc1Njcm9sbGluZygpKQorICAg
IGlmICghbV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKS0+Y2FuSGF2ZVNjcm9sbGJhcnMoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gV2UgbmVlZCB0byBoYW5kbGUgb3VyIG93biBz
Y3JvbGxpbmcgaWYgd2UncmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuY3BwCmluZGV4IDBhZTZjNTYyOTFlY2E2OTU5OWJiMjNkNzNjZjQ0NzA0OGEyNjgyNTgu
LjAxNzg0MmFkNTkzMzc2ZjkwOWQ4OTA5YmJmNjFiYzdiYmM5NjQxNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC00NjksMTAgKzQ2OSwzNSBA
QCB2b2lkIEV3a1ZpZXc6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIWRy
YXdpbmdBcmVhKQogICAgICAgICByZXR1cm47CiAKLSAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZSht
X3NpemUsIEludFNpemUoKSk7CisgICAgZHJhd2luZ0FyZWEtPnNldFNpemUoZGlwU2l6ZSgpLCBJ
bnRTaXplKCkpOwogICAgIHdlYlZpZXcoKS0+dXBkYXRlVmlld3BvcnRTaXplKCk7CiB9CiAKK0lu
dFNpemUgRXdrVmlldzo6ZGlwU2l6ZSgpIGNvbnN0Cit7CisgICAgTGF5b3V0U2l6ZSBkaXBTaXpl
ID0gbV9zaXplOworICAgIGRpcFNpemUuc2NhbGUoMSAvIGRldmljZVNjYWxlRmFjdG9yKCkpOwor
ICAgIHJldHVybiByb3VuZGVkSW50U2l6ZShkaXBTaXplKTsKK30KKworSW50U2l6ZSBFd2tWaWV3
OjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcm91bmRlZEludFNpemUobV9zaXplKTsKK30K
Kwordm9pZCBFd2tWaWV3OjpzZXRQYWdlUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRp
b24pCit7CisgICAgbV9wYWdlUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICBtX3BhZ2VQb3NpdGlv
bi5zY2FsZShkZXZpY2VTY2FsZUZhY3RvcigpLCBkZXZpY2VTY2FsZUZhY3RvcigpKTsKK30KKwor
Y29uc3QgRmxvYXRQb2ludCBFd2tWaWV3OjpkaXBQYWdlUG9zaXRpb24oKSBjb25zdAoreworICAg
IEZsb2F0UG9pbnQgZGlwUG9zaXRpb24gPSBtX3BhZ2VQb3NpdGlvbjsKKyAgICBkaXBQb3NpdGlv
bi5zY2FsZSgxIC8gZGV2aWNlU2NhbGVGYWN0b3IoKSwgMSAvIGRldmljZVNjYWxlRmFjdG9yKCkp
OworICAgIHJldHVybiBkaXBQb3NpdGlvbjsKK30KKwogQWZmaW5lVHJhbnNmb3JtIEV3a1ZpZXc6
OnRyYW5zZm9ybUZyb21TY2VuZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRyYW5zZm9ybVRvU2Nl
bmUoKS5pbnZlcnNlKCk7CkBAIC00ODIsNyArNTA3LDcgQEAgQWZmaW5lVHJhbnNmb3JtIEV3a1Zp
ZXc6OnRyYW5zZm9ybVRvU2NlbmUoKSBjb25zdAogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSA9IHVzZXJWaWV3cG9ydFRyYW5zZm9ybSgpOwogCi0gICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZSgtcGFnZVBvc2l0aW9uKCkueCgpLCAtcGFnZVBvc2l0aW9uKCkueSgpKTsKKyAgICB0
cmFuc2Zvcm0udHJhbnNsYXRlKC1tX3BhZ2VQb3NpdGlvbi54KCksIC1tX3BhZ2VQb3NpdGlvbi55
KCkpOwogICAgIHRyYW5zZm9ybS5zY2FsZShkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICB0cmFu
c2Zvcm0uc2NhbGUocGFnZVNjYWxlRmFjdG9yKCkpOwogCkBAIC01NjEsNyArNTg2LDcgQEAgdm9p
ZCBFd2tWaWV3OjpwYWludFRvQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkK
IAogICAgIFJlZlB0cjxjYWlyb190PiBncmFwaGljc0NvbnRleHQgPSBhZG9wdFJlZihjYWlyb19j
cmVhdGUoc3VyZmFjZSkpOwogCi0gICAgY2Fpcm9fdHJhbnNsYXRlKGdyYXBoaWNzQ29udGV4dC5n
ZXQoKSwgLSBwYWdlUG9zaXRpb24oKS54KCksIC0gcGFnZVBvc2l0aW9uKCkueSgpKTsKKyAgICBj
YWlyb190cmFuc2xhdGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCAtbV9wYWdlUG9zaXRpb24ueCgp
LCAtbV9wYWdlUG9zaXRpb24ueSgpKTsKICAgICBjYWlyb19zY2FsZShncmFwaGljc0NvbnRleHQu
Z2V0KCksIHBhZ2VTY2FsZUZhY3RvcigpLCBwYWdlU2NhbGVGYWN0b3IoKSk7CiAgICAgY2Fpcm9f
c2NhbGUoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBkZXZpY2VTY2FsZUZhY3RvcigpLCBkZXZpY2VT
Y2FsZUZhY3RvcigpKTsKIApAQCAtNjAwLDcgKzYyNSw3IEBAIHZvaWQgRXdrVmlldzo6ZGlzcGxh
eVRpbWVyRmlyZWQoVGltZXI8RXdrVmlldz4qKQogCiB2b2lkIEV3a1ZpZXc6OnNjaGVkdWxlVXBk
YXRlRGlzcGxheSgpCiB7Ci0gICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpCisgICAgaWYgKG1fc2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9kaXNwbGF5VGltZXIu
aXNBY3RpdmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApp
bmRleCA0MjJlOThmM2NiODBkNjkyNzBlZjM0Zjg1NDY0MjY3MWFjN2U1ZDgxLi5lZTAxZjU1ZDNj
M2UyNjFkODgwYWZlMmMzMWEwMTUzMzM4MzM3ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFNpemUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpOwotICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQorICAgIFdlYkNvcmU6OkludFNpemUgZGlwU2l6ZSgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRVc2VyVmlld3BvcnRUcmFuc2Zvcm0oY29uc3QgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3VzZXJWaWV3cG9ydFRyYW5zZm9ybSA9IHRy
YW5zZm9ybTsgfQogICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IHVzZXJWaWV3cG9y
dFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclZpZXdwb3J0VHJhbnNmb3JtOyB9CkBA
IC0yMTIsOCArMjEyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZs
b2F0IHNjYWxlRmFjdG9yKSB7IG1fcGFnZVNjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3I7IH0KICAg
ICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZUZhY3Rv
cjsgfQogCi0gICAgdm9pZCBzZXRQYWdlUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgcG9zaXRpb24pIHsgbV9wYWdlUG9zaXRpb24gPSBwb3NpdGlvbjsgfQotICAgIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQgcGFnZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlUG9z
aXRpb247IH0KKyAgICB2b2lkIHNldFBhZ2VQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50Jik7CisgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCBkaXBQYWdlUG9zaXRpb24oKSBj
b25zdDsKIAogICAgIC8vIEZJWE1FOiBuZWVkcyByZWZhY3RvcmluZyAoc3BsaXQgY2FsbGJhY2sg
aW52b2tlKQogICAgIHZvaWQgaW5mb3JtVVJMQ2hhbmdlKCk7CkBAIC0yMjksNiArMjI5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpc3BsYXlUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPEV3a1Zp
ZXc+Kik7CiAKICAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZSgpOworICAgIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0Owog
CiAgICAgLy8gRXZhc19TbWFydF9DbGFzcyBjYWxsYmFjayBpbnRlcmZhY2U6CiAgICAgc3RhdGlj
IHZvaWQgaGFuZGxlRXZhc09iamVjdEFkZChFdmFzX09iamVjdCopOwpAQCAtMjY1LDcgKzI2Niw3
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEV2YXNfR0w+IG1fZXZhc0dMOwogICAgIE93blB0cjxX
ZWJLaXQ6OkV2YXNHTENvbnRleHQ+IG1fZXZhc0dMQ29udGV4dDsKICAgICBPd25QdHI8V2ViS2l0
OjpFdmFzR0xTdXJmYWNlPiBtX2V2YXNHTFN1cmZhY2U7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBt
X3NpemU7CisgICAgV2ViQ29yZTo6TGF5b3V0U2l6ZSBtX3NpemU7CiAgICAgV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXggbV91c2VyVmlld3BvcnRUcmFuc2Zvcm07CiAgICAgYm9vbCBtX3Bl
bmRpbmdTdXJmYWNlUmVzaXplOwogICAgIFJlZlB0cjxXZWJLaXQ6OldlYlZpZXc+IG1fd2ViVmll
dzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3
ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2
aWV3LmNwcAppbmRleCAzODk5MWRkZjY1YzFjM2UzYzcxNmE2ZDYwOWRjZDdmYzkyMDJkMDRkLi40
YWEzNTMzNzdmMTQyN2M1MTZlOTVlOWJiN2JhYmI2Njg0NWE5MmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCkBAIC0zNDQs
NyArMzQ0LDcgQEAgdm9pZCBRUmF3V2ViVmlldzo6c2V0U2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGQtPm1fd2ViUGFnZVByb3h5LT51c2VGaXhlZExh
eW91dCgpKQotICAgICAgICBkLT5tX3dlYlBhZ2VQcm94eS0+c2V0Vmlld3BvcnRTaXplKHNpemUp
OworICAgICAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShzaXplLCBXZWJDb3JlOjpJbnRTaXplKCkp
OwogCiAgICAgZC0+bV9zaXplID0gc2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCmluZGV4IDFhOWJkZTZkZTVjNzUzMmIz
YjhjN2Y5MWNkNDVjMDY4NmVkNTZkMzAuLjBmNmJkMjIzMGVlZmU0NGU1M2JmY2QzNjAyZDY5MWIx
MzU0Mjc3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3Bv
cnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI6OmRpZENoYW5nZVZpZXdwb3J0U2l6ZShjb25zdCBGbG9hdFNpemUmIG5ld1NpemUp
CiAKICAgICAvLyBMZXQgdGhlIFdlYlByb2Nlc3Mga25vdyBhYm91dCB0aGUgbmV3IHZpZXdwb3J0
IHNpemUsIHNvIHRoYXQKICAgICAvLyBpdCBjYW4gcmVzaXplIHRoZSBjb250ZW50IGFjY29yZGlu
Z2x5LgotICAgIG1fd2ViUGFnZVByb3h5LT5zZXRWaWV3cG9ydFNpemUocm91bmRlZEludFNpemUo
bmV3U2l6ZSkpOworICAgIG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHJv
dW5kZWRJbnRTaXplKG5ld1NpemUpLCBJbnRTaXplKCkpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShjb25zdCBGbG9hdFBvaW50
JiBwb3NpdGlvbiwgZmxvYXQgc2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDEyOWRm
YjE5Y2I2NjA5MzY4MTQ1NzBkMGI1ODQyNGNiNTcxZTg0YTIuLjZjZGI5ZTk1NzhlMDZlNTYxYWI3
MjViMGRjYzY5YTA5OGQzMThlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC0xMDA4LDE0ICsxMDA4LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1
dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogfQogICAgIAogI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQotdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0U2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdw
b3J0U2l6ZShzaXplKSwgbV9wYWdlSUQpOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0
UGFnZVRyYW5zaXRpb25WaWV3cG9ydCgpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCkBAIC0yNjQ5
LDExICsyNjQxLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IGYKIH0KIAogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQotdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xs
KGNvbnN0IEludFBvaW50JiBwb2ludCkKLXsKLSAgICBtX3BhZ2VDbGllbnQtPnBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsKHBvaW50KTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VUcmFuc2l0aW9u
Vmlld3BvcnRSZWFkeSgpCiB7CiAgICAgbV9wYWdlQ2xpZW50LT5wYWdlVHJhbnNpdGlvblZpZXdw
b3J0UmVhZHkoKTsKQEAgLTI2NzEsMTIgKzI2NTgsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIp
CiAgICAgbV9wYWdlQ2xpZW50LT5kaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoYXR0cik7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkU2Nyb2xsKCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpwYWdlRGlkU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKIHsKICAgICBt
X3VpQ2xpZW50LnBhZ2VEaWRTY3JvbGwodGhpcyk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGRp
c21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dEln
bm9yZWQpOwogI2VuZGlmCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgbV9wYWdl
Q2xpZW50LT5wYWdlRGlkUmVxdWVzdFNjcm9sbChzY3JvbGxQb3NpdGlvbik7CisjZW5kaWYKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCAyYTc4MWQ1MWYzYjI5ZGJiZDQ3OWI3NDg0NjkzMmY0NzdmYmYx
M2UzLi43Nzc1MDdhNjhjMWY5ZGIxNGJkYzE1OTg4YWUxMmNhOTYyYTgxZGNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00MTksNyArNDE5LDYgQEAgcHVibGlj
OgogICAgIFBsYXRmb3JtV2lkZ2V0IHZpZXdXaWRnZXQoKTsKICNlbmRpZgogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQotICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKTsKICAgICB2b2lkIGNvbW1pdFBhZ2VUcmFuc2l0aW9uVmlld3BvcnQoKTsKICNl
bmRpZgogCkBAIC04MzAsNyArODI5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbmRvd1RvU2Ny
ZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0JiBy
ZXN1bHQpOwogICAgIHZvaWQgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCYgc2hvdWxkQ2xvc2UpOwogICAgIHZv
aWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0
cmlidXRlcyYpOwotICAgIHZvaWQgcGFnZURpZFNjcm9sbCgpOworICAgIHZvaWQgcGFnZURpZFNj
cm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKICAg
ICB2b2lkIHByaW50RnJhbWUodWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBleGNlZWRlZERh
dGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVp
bnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCB1aW50
NjRfdCYgbmV3UXVvdGEpOwpAQCAtODUyLDcgKzg1MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
aG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwg
Y29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBs
YW5nLCBjb25zdCBTdHJpbmcmIGRpciwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
LSAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7
CiAgICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZGY2MWU1ZDM0MDExOWY3OTUyNzdjMDkwNTFhYjA2YWEyODc2YzAy
OC4uOGMwOGE0ZGZlODQyNmVkYTcwNzk0NzNmZjdmMjk0ZmMxYTM2YTczYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01Niw3
ICs1Niw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2NyZWVuVG9XaW5kb3co
V2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpIC0+IChXZWJDb3JlOjpJbnRQb2ludCB3aW5k
b3dQb2ludCkKICAgICBXaW5kb3dUb1NjcmVlbihXZWJDb3JlOjpJbnRSZWN0IHJlY3QpIC0+IChX
ZWJDb3JlOjpJbnRSZWN0IHNjcmVlbkZyYW1lKQogICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChXVEY6OlN0cmluZyBtZXNzYWdlLCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoYm9vbCBzaG91
bGRDbG9zZSkKLSAgICBQYWdlRGlkU2Nyb2xsKCkKKyAgICBQYWdlRGlkU2Nyb2xsKFdlYkNvcmU6
OkludFBvaW50IHNjcm9sbFBvc2l0aW9uKQogICAgIFJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzIHBhcmFtZXRlcnMpCiAgICAgUHJpbnRG
cmFtZSh1aW50NjRfdCBmcmFtZUlEKSAtPiAoKQogICAgIFJ1bk1vZGFsKCkKQEAgLTc0LDcgKzc0
LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAjaWYgVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCi0gICAgUGFnZURpZFJlcXVlc3RTY3JvbGwoV2ViQ29yZTo6SW50UG9p
bnQgcG9pbnQpCiAgICAgUGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKICNlbmRpZgogI2lm
IFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKaW5kZXggNGI3Y2I4
NDVjZGI1NzU0NTA0OGI2MmM3YmE1NTFmY2RkMGY5Nzc4My4uOGU0MGQxZGUwMTY4N2E5NDMyYzAw
Yjc5YTQ1MDBlNDdiYzUyODA0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCkBA
IC02MCwxMCArNjAsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNl
dFJlbmRlcmVyQWN0aXZlKGJvb2wgYWN0aXZlKQogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogewogICAgIEFTU0VSVChtX2NvbnRyb2xs
ZXIpOwotICAgIEZsb2F0U2l6ZSBzaXplID0gbV92aWV3LT5zaXplKCk7Ci0gICAgLy8gVGhlIHZp
ZXdwb3J0IGNvbnRyb2xsZXIgZXhwZWN0cyBzaXplcyBpbiBVSSB1bml0cywgYW5kIG5vdCByYXcg
ZGV2aWNlIHVuaXRzLgotICAgIHNpemUuc2NhbGUoMSAvIG1fY29udHJvbGxlci0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7Ci0gICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUoc2l6
ZSk7CisgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VWaWV3cG9ydFNpemUobV92aWV3LT5kaXBT
aXplKCkpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENo
YW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUpCkBA
IC03OCw3ICs3NSw2IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0
Vmlld3BvcnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvCiAKICAgICBGbG9hdFBvaW50
IHBvcyhjb250ZW50c1BvaW50KTsKICAgICBwb3Muc2NhbGUobV92aWV3LT5wYWdlU2NhbGVGYWN0
b3IoKSwgbV92aWV3LT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgcG9zLnNjYWxlKG1fdmlldy0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSwgbV92aWV3LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICBt
X3ZpZXctPnNldFBhZ2VQb3NpdGlvbihwb3MpOwogCiAgICAgbV9jb250cm9sbGVyLT5kaWRDaGFu
Z2VDb250ZW50c1Zpc2liaWxpdHkobV9jb250ZW50UG9zaXRpb24sIG1fdmlldy0+cGFnZVNjYWxl
RmFjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5kZXgg
YzNjMDY2NmU4NmM0OTAxN2EwZTk5MTk4ZTk4YzkwNWJmOGJjZWYxYi4uYWVlZjQ4NWZiYWJkNDI3
MmEwNmUwYzU0OTk0YWE3ZWQxYjU5MjU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBXZWJWaWV3Ojp1cGRhdGVWaWV3
cG9ydFNpemUoKQogICAgICAgICB9CiAgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudC0+dXBkYXRlVmlld3BvcnRTaXplKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcGFnZS0+
ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRSZWN0KHJvdW5kZWRJbnRQ
b2ludChtX2V3a1ZpZXctPnBhZ2VQb3NpdGlvbigpKSwgbV9ld2tWaWV3LT5zaXplKCkpLCBGbG9h
dFBvaW50KCkpOworICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250
ZW50c1JlY3QoSW50UmVjdChyb3VuZGVkSW50UG9pbnQobV9ld2tWaWV3LT5kaXBQYWdlUG9zaXRp
b24oKSksIG1fZXdrVmlldy0+ZGlwU2l6ZSgpKSwgRmxvYXRQb2ludCgpKTsKIH0KIAogdm9pZCBX
ZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSkKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFdlYlZpZXc6OnNjcm9sbFZpZXcoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UwogCiBXZWJDb3Jl
OjpJbnRTaXplIFdlYlZpZXc6OnZpZXdTaXplKCkKIHsKLSAgICByZXR1cm4gbV9ld2tWaWV3LT5z
aXplKCk7CisgICAgcmV0dXJuIG1fZXdrVmlldy0+ZGlwU2l6ZSgpOwogfQogCiBib29sIFdlYlZp
ZXc6OmlzVmlld1dpbmRvd0FjdGl2ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggZTA0
MDU1YTJlNmU4MWFiNmEyMzIzN2E3ZWRkMTE3NDNmNDI3MzljNi4uZjhkYjBmNTIyOGMzMzlhMWI0
ZjgzOWM3ZTBhYjY3NGUwMWNkMjc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTE5
LDExICsxMTksNyBAQCBGbG9hdFJlY3QgV2ViQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKIAog
RmxvYXRSZWN0IFdlYkNocm9tZUNsaWVudDo6cGFnZVJlY3QoKQogewotI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQotICAgIHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3BhZ2Ut
PnZpZXdwb3J0U2l6ZSgpKTsKLSNlbHNlCiAgICAgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIG1fcGFnZS0+c2l6ZSgpKTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6
Zm9jdXMoKQpAQCAtMzkwLDcgKzM4Niw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjppbnZhbGlk
YXRlQ29udGVudHNBbmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiByZWN0LCBib29sKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0TmVl
ZHNEaXNwbGF5KHJlY3QpOworICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KHJlY3QpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6aW52YWxpZGF0ZUNv
bnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0JiByZWN0LCBib29sKQpAQCAtNDAwLDIw
ICszOTYsMjAgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmludmFsaWRhdGVDb250ZW50c0ZvclNs
b3dTY3JvbGwoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3BhZ2UtPnBhZ2VEaWRTY3JvbGwoKTsKLSAgICBtX3BhZ2UtPmRyYXdp
bmdBcmVhKCktPnNldE5lZWRzRGlzcGxheShyZWN0KTsKKyAgICBtX3BhZ2UtPnBhZ2VEaWRTY3Jv
bGwocmVjdC5sb2NhdGlvbigpKTsKKyAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNldE5lZWRz
RGlzcGxheUluUmVjdChyZWN0KTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNjcm9sbChj
b25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29u
c3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7Ci0gICAgbV9wYWdlLT5wYWdlRGlkU2Nyb2xsKCk7Cisg
ICAgbV9wYWdlLT5wYWdlRGlkU2Nyb2xsKHNjcm9sbFJlY3QubG9jYXRpb24oKSk7CiAgICAgbV9w
YWdlLT5kcmF3aW5nQXJlYSgpLT5zY3JvbGwoaW50ZXJzZWN0aW9uKHNjcm9sbFJlY3QsIGNsaXBS
ZWN0KSwgc2Nyb2xsRGVsdGEpOwogfQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2
b2lkIFdlYkNocm9tZUNsaWVudDo6ZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBv
aW50JiBzY3JvbGxPZmZzZXQpCiB7Ci0gICAgbV9wYWdlLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChz
Y3JvbGxPZmZzZXQpOworICAgIG1fcGFnZS0+cGFnZURpZFNjcm9sbChzY3JvbGxPZmZzZXQpOwog
fQogI2VuZGlmCiAKQEAgLTQ0NiwxNCArNDQyLDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpj
b250ZW50c1NpemVDaGFuZ2VkKEZyYW1lKiBmcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29u
CiAgICAgaWYgKGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpICE9IGZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKLSNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKQotICAgIGlmIChtX3Bh
Z2UtPnVzZUZpeGVkTGF5b3V0KCkpIHsKLSAgICAgICAgLy8gVGhlIGJlbG93IG1ldGhvZCB1cGRh
dGVzIHRoZSBzaXplKCkuCi0gICAgICAgIG1fcGFnZS0+cmVzaXplVG9Db250ZW50c0lmTmVlZGVk
KCk7Ci0gICAgICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlSG9zdCgpLT5zaXpl
RGlkQ2hhbmdlKG1fcGFnZS0+c2l6ZSgpKTsKLSAgICB9CisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQorICAgIGlmIChtX3BhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpCisgICAgICAgIG1fcGFn
ZS0+ZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlSG9zdCgpLT5zaXplRGlkQ2hhbmdlKHNpemUpOwog
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENoYW5nZUNvbnRl
bnRzU2l6ZShtX3BhZ2UtPnNpemUoKSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSkpOwogI2VuZGlmCiAKICAgICBt
X3BhZ2UtPmRyYXdpbmdBcmVhKCktPm1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdlZChzaXplKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZjkzYjczZGNiYzc3YjExODE4
MTEzMTEzZDJjMjhlYWNiY2JiNjkxNS4uYTM3OWM2ZDNiM2RiZjE5YjVmMmIyZTk0OGU3OWViNjIz
NTI4NDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExMjksNyAr
MTEyOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc3RvcmVWaWV3U3RhdGUoKQog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5LiBXZWJDb3JlIHNob3Vs
ZCBiZSBjb3JyZWN0bHkgaW52YWxpZGF0aW5nCiAgICAgLy8gdGhlIHZpZXcgb24gcmVzdG9yZXMg
ZnJvbSB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgogICAgIGlmIChtX2ZyYW1lID09IG1fZnJhbWUt
PnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkpCi0gICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+ZHJhd2lu
Z0FyZWEoKS0+c2V0TmVlZHNEaXNwbGF5KG1fZnJhbWUtPnBhZ2UoKS0+Ym91bmRzKCkpOworICAg
ICAgICBtX2ZyYW1lLT5wYWdlKCktPmRyYXdpbmdBcmVhKCktPnNldE5lZWRzRGlzcGxheSgpOwog
fQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKCkK
QEAgLTEyMDUsNyArMTIwNSw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRp
b25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIGJvb2wgc2hvdWxkVXNlRml4ZWRMYXlvdXQg
PSBpc01haW5GcmFtZSAmJiB3ZWJQYWdlLT51c2VGaXhlZExheW91dCgpOwogICAgIGJvb2wgc2hv
dWxkRGlzYWJsZVNjcm9sbGluZyA9IGlzTWFpbkZyYW1lICYmICF3ZWJQYWdlLT5tYWluRnJhbWVJ
c1Njcm9sbGFibGUoKTsKICAgICBib29sIHNob3VsZEhpZGVTY3JvbGxiYXJzID0gc2hvdWxkVXNl
Rml4ZWRMYXlvdXQgfHwgc2hvdWxkRGlzYWJsZVNjcm9sbGluZzsKLSAgICBJbnRSZWN0IGN1cnJl
bnRGaXhlZFZpc2libGVDb250ZW50UmVjdCA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkg
PyBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5maXhlZFZpc2libGVDb250ZW50UmVjdCgp
IDogSW50UmVjdCgpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UgPSBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNl
KCk7CiAgICAgbV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uID0gaXNNYWluRnJhbWUgJiYg
d2ViUGFnZS0+c2hvdWxkVXNlQ3VzdG9tUmVwcmVzZW50YXRpb25Gb3JSZXNwb25zZShyZXNwb25z
ZSk7CkBAIC0xMjE0LDcgKzEyMTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFu
c2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICBTY3JvbGxiYXJNb2RlIGRlZmF1bHRT
Y3JvbGxiYXJNb2RlID0gc2hvdWxkSGlkZVNjcm9sbGJhcnMgPyBTY3JvbGxiYXJBbHdheXNPZmYg
OiBTY3JvbGxiYXJBdXRvOwogCiAgICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmNyZWF0ZVZpZXco
d2ViUGFnZS0+c2l6ZSgpLCBiYWNrZ3JvdW5kQ29sb3IsIGlzVHJhbnNwYXJlbnQsCi0gICAgICAg
IEludFNpemUoKSwgY3VycmVudEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0LCBzaG91bGRVc2VGaXhl
ZExheW91dCwKKyAgICAgICAgSW50U2l6ZSgpLCBJbnRSZWN0KCksIHNob3VsZFVzZUZpeGVkTGF5
b3V0LAogICAgICAgICBkZWZhdWx0U2Nyb2xsYmFyTW9kZSwgLyogbG9jayAqLyBzaG91bGRIaWRl
U2Nyb2xsYmFycywgZGVmYXVsdFNjcm9sbGJhck1vZGUsIC8qIGxvY2sgKi8gc2hvdWxkSGlkZVNj
cm9sbGJhcnMpOwogCiAgICAgaW50IG1pbmltdW1MYXlvdXRXaWR0aCA9IHdlYlBhZ2UtPm1pbmlt
dW1MYXlvdXRXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYjdkNmMwMThiMjQyNTllNTAyNDdiNjE4
ZjEyYTFkNDg1M2E1NTkwZS4uY2U3MGIzODFjNjAxNWZiMjAxOTcyMDYxMmU1NjA4M2NjM2RlODk3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xNzcsNyArMTc3LDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjppbnZhbGlkYXRlKCkKICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWRE
aXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCit2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoKQoreworICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgaWYg
KG1fcGFnZU92ZXJsYXlMYXllcikKKyAgICAgICAgbV9wYWdlT3ZlcmxheUxheWVyLT5zZXROZWVk
c0Rpc3BsYXkoKTsKKworICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOworfQorCit2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJ
blJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKIHsKICAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKICAgICBpZiAobV9w
YWdlT3ZlcmxheUxheWVyKQpAQCAtMTg4LDcgKzE5Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBXZWJD
b3JlCiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY3JvbGxOb25Db21wb3NpdGVk
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCkKIHsKLSAgICBzZXRO
b25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShzY3JvbGxSZWN0KTsKKyAgICBzZXROb25D
b21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChzY3JvbGxSZWN0KTsKIH0KIAogdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpCkBAIC03MzMsMTEgKzc0
Miw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uCiAgICAgfQogCiAgICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7Ci0gICAgaWYgKG1fd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKSkgewotICAgICAg
ICAvLyBSb3VuZCB0aGUgcmVjdCBpbnN0ZWFkIG9mIGVuY2xvc2luZyBpdCB0byBtYWtlIHN1cmUg
dGhhdCBpdHMgc2l6ZSBzdGF5cwotICAgICAgICAvLyB0aGUgc2FtZSB3aGlsZSBwYW5uaW5nLiBU
aGlzIGNhbiBoYXZlIG5hc3R5IGVmZmVjdHMgb24gbGF5b3V0LgotICAgICAgICBtX3dlYlBhZ2Ut
PnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KHJvdW5kZWRJbnRSZWN0KHJlY3QpKTsKLSAgICB9
CisgICAgaWYgKG1fd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKSkKKyAgICAgICAgbV93ZWJQYWdl
LT5zZXRTY3JvbGxQb3NpdGlvbihyb3VuZGVkSW50UmVjdChyZWN0KS5sb2NhdGlvbigpKTsKIH0K
IAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9y
Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IDgzNzkxMDExNWNhOGE4NzUyNTllZGJmMWZkYzJkNWVlZGZm
MTQ1MDMuLjg0NDZmNmY4NDQ1ZWI2YTdhOWJjYTg0NzhmY2Y4ZDAxNzg5OTQ2MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5o
CkBAIC02NCw3ICs2NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBv
c2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRz
TmVlZERpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbE5vbkNv
bXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCk7CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVw
YWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBkNjA1YjAzYTg1NmMyODkzM2I2NzUx
MWNiZTJlY2U1YmE1ZThjMjdkLi4xNzcxYzIyZDc4YjBmMmNhMjNkODJiYjM1NDQ0OGJhZDg2M2Jj
NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaApAQCAtNjAsNyArNjAsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBkaWRSZWNlaXZl
RHJhd2luZ0FyZWFNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEp
ID0gMDsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBs
LmNwcAppbmRleCA2M2ZkNzE4NjRiOTlhYjI1NjY2YmQ2Nzg4N2EwZmVhZGYzMGU2ZjhjLi42YzVj
YjJkMTMwOTE3NzZhZTMzZTM2YzM4Yjg0NTA5MDc4MzhmMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcApAQCAtODAs
MjQgKzgwLDM3IEBAIERyYXdpbmdBcmVhSW1wbDo6RHJhd2luZ0FyZWFJbXBsKFdlYlBhZ2UqIHdl
YlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlCiAgICAgICAgIGVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoMCk7CiB9CiAKLXZvaWQgRHJhd2luZ0FyZWFJbXBsOjpzZXRO
ZWVkc0Rpc3BsYXkoY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgRHJhd2luZ0FyZWFJbXBsOjpz
ZXROZWVkc0Rpc3BsYXkoKQogewogICAgIGlmICghbV9pc1BhaW50aW5nRW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCBkaXJ0eVJlY3QgPSByZWN0OwotICAgIGRpcnR5UmVj
dC5pbnRlcnNlY3QobV93ZWJQYWdlLT5ib3VuZHMoKSk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dCkgeworICAgICAgICBBU1NFUlQobV9kaXJ0eVJlZ2lvbi5pc0VtcHR5KCkpOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKKyAg
ICBzZXROZWVkc0Rpc3BsYXlJblJlY3QobV93ZWJQYWdlLT5ib3VuZHMoKSk7Cit9CisKK3ZvaWQg
RHJhd2luZ0FyZWFJbXBsOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyAgICBpZiAoIW1faXNQYWludGluZ0VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKICAgICAgICAgQVNTRVJUKG1fZGlydHlSZWdpb24u
aXNFbXB0eSgpKTsKLQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldE5vbkNvbXBvc2l0ZWRD
b250ZW50c05lZWREaXNwbGF5KGRpcnR5UmVjdCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QocmVjdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCisgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSByZWN0OworICAg
IGRpcnR5UmVjdC5pbnRlcnNlY3QobV93ZWJQYWdlLT5ib3VuZHMoKSk7CisKKyAgICBpZiAoZGly
dHlSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fd2ViUGFnZS0+
bWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xMzIsMTIgKzE0NSwxMiBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6c2Nyb2xsKGNvbnN0IElu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9sbERlbAogICAgICAgICBpZiAo
Y3VycmVudFNjcm9sbEFyZWEgPj0gc2Nyb2xsQXJlYSkgewogICAgICAgICAgICAgLy8gVGhlIHJl
Y3QgYmVpbmcgc2Nyb2xsZWQgaXMgYXQgbGVhc3QgYXMgbGFyZ2UgYXMgdGhlIHJlY3Qgd2UnZCBs
aWtlIHRvIHNjcm9sbC4KICAgICAgICAgICAgIC8vIEdvIGFoZWFkIGFuZCBqdXN0IGludmFsaWRh
dGUgdGhlIHNjcm9sbCByZWN0LgotICAgICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KHNjcm9sbFJl
Y3QpOworICAgICAgICAgICAgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KHNjcm9sbFJlY3QpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSnVzdCByZXBhaW50IHRo
ZSBlbnRpcmUgY3VycmVudCBzY3JvbGwgcmVjdCwgd2UnbGwgc2Nyb2xsIHRoZSBuZXcgcmVjdCBp
bnN0ZWFkLgotICAgICAgICBzZXROZWVkc0Rpc3BsYXkobV9zY3JvbGxSZWN0KTsKKyAgICAgICAg
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KG1fc2Nyb2xsUmVjdCk7CiAgICAgICAgIG1fc2Nyb2xsUmVj
dCA9IEludFJlY3QoKTsKICAgICAgICAgbV9zY3JvbGxPZmZzZXQgPSBJbnRTaXplKCk7CiAgICAg
fQpAQCAtMTg0LDcgKzE5Nyw3IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpzZXRMYXllclRyZWVT
dGF0ZUlzRnJvemVuKGJvb2wgaXNGcm96ZW4pCiAKIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpmb3Jj
ZVJlcGFpbnQoKQogewotICAgIHNldE5lZWRzRGlzcGxheShtX3dlYlBhZ2UtPmJvdW5kcygpKTsK
KyAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIAogICAgIG1fd2ViUGFnZS0+bGF5b3V0SWZOZWVkZWQo
KTsKIApAQCAtMjIzLDcgKzIzNiw3IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaWRVbmluc3Rh
bGxQYWdlT3ZlcmxheSgpCiAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5kaWRVbmluc3RhbGxQYWdlT3ZlcmxheSgpOwogCi0gICAgc2V0TmVlZHNEaXNw
bGF5KG1fd2ViUGFnZS0+Ym91bmRzKCkpOworICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCiB2
b2lkIERyYXdpbmdBcmVhSW1wbDo6c2V0UGFnZU92ZXJsYXlOZWVkc0Rpc3BsYXkoY29uc3QgSW50
UmVjdCYgcmVjdCkKQEAgLTIzMyw3ICsyNDYsNyBAQCB2b2lkIERyYXdpbmdBcmVhSW1wbDo6c2V0
UGFnZU92ZXJsYXlOZWVkc0Rpc3BsYXkoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHNldE5lZWRzRGlzcGxheShyZWN0KTsKKyAgICBzZXROZWVkc0Rp
c3BsYXlJblJlY3QocmVjdCk7CiB9CiAKIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpzZXRQYWdlT3Zl
cmxheU9wYWNpdHkoZmxvYXQgdmFsdWUpCkBAIC0zODEsOSArMzk0LDExIEBAIHZvaWQgRHJhd2lu
Z0FyZWFJbXBsOjp1cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50NjRfdCBzdGF0ZUlELCBib29s
IHJlc3BvbmRJbW1lCiAgICAgICAgIG1fd2ViUGFnZS0+c2Nyb2xsTWFpbkZyYW1lSWZOb3RBdE1h
eFNjcm9sbFBvc2l0aW9uKHNjcm9sbE9mZnNldCk7CiAKICAgICAgICAgaWYgKG1fbGF5ZXJUcmVl
SG9zdCkgewotICAgICAgICAgICAgLy8gVXNlIHRoZSBwcmV2aW91c2x5IHNldCBwYWdlIHNpemUg
aW5zdGVhZCBvZiB0aGUgYXJndW1lbnQuCi0gICAgICAgICAgICAvLyBJdCBnZXRzIGFkanVzdGVk
IHByb3Blcmx5IHdoZW4gdXNpbmcgdGhlIGZpeGVkIGxheW91dCBtb2RlLgotICAgICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zaXplRGlkQ2hhbmdlKG1fd2ViUGFnZS0+c2l6ZSgpKTsKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgICAgICAgICAvLyBDb29yZGluYXRlZCBHcmFw
aGljcyBzZXRzIHRoZSBzaXplIG9mIHRoZSByb290IGxheWVyIHRvIGNvbnRlbnRzIHNpemUuCisg
ICAgICAgICAgICBpZiAoIW1fd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQoKSkKKyNlbmRpZgorICAg
ICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2l6ZURpZENoYW5nZShtX3dlYlBhZ2UtPnNp
emUoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9kaXJ0eVJlZ2lvbiA9IG1fd2Vi
UGFnZS0+Ym91bmRzKCk7CiAgICAgfSBlbHNlIHsKQEAgLTQ4OCw3ICs1MDMsNyBAQCB2b2lkIERy
YXdpbmdBcmVhSW1wbDo6cmVzdW1lUGFpbnRpbmcoKQogICAgIG1faXNQYWludGluZ1N1c3BlbmRl
ZCA9IGZhbHNlOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBhbHdheXMgcmVwYWludCBl
dmVyeXRoaW5nIGhlcmUuCi0gICAgc2V0TmVlZHNEaXNwbGF5KG1fd2ViUGFnZS0+Ym91bmRzKCkp
OworICAgIHNldE5lZWRzRGlzcGxheSgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICht
X3dlYlBhZ2UtPndpbmRvd0lzVmlzaWJsZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oCmluZGV4IGY4ODQxMDUzNTQyMWY0NDk5
MTk1Yzc5ZDA1N2ZjZTM5NWVlODBmMWEuLmQ4OTdhMTk2MmZiMTc1MzJlN2I1MWMyYzdlNGE5Y2I2
YTgwZWUxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWFJbXBsLmgKQEAgLTUxLDcgKzUxLDggQEAgcHJpdmF0ZToKICAgICBEcmF3aW5n
QXJlYUltcGwoV2ViUGFnZSosIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAog
ICAgIC8vIERyYXdpbmdBcmVhCi0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2Nyb2xsRGVsdGEpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVu
KGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXllclRyZWVTdGF0ZUlzRnJvemVuOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCAwNjM4YTVhMWJiY2Ez
ZmY2MzRmN2IwOGVkODdjMzE1NmViZTE1M2I2Li4zOWZlZjgyNGZhMjk0YTViNWZlNmExM2ExNTY3
NTkzNWZlNzM1YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9MYXllclRyZWVIb3N0LmgKQEAgLTY0LDcgKzY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lk
IHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWRE
aXNwbGF5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNO
ZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc2Nyb2xsUmVjdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IC8qY2FsbGJhY2tJ
RCovKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDUwNzhhYmQ1YzRkNTU0MTQ2ZTE5YTg4YmNhMzUxODBlNGFl
YzA4MzQuLjE0ZDBjNmE4YzBiOGY4MmJhYWI1NTBhMWRiOTQ5ZDcwN2YyNmZlNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTk3OSw4NSAr
OTc5LDU4IEBAIHZvaWQgV2ViUGFnZTo6c2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2
aWV3U2l6ZSkKIHsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52
aWV3KCk7CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICAvLyBJZiB3ZSBhcmUg
cmVzaXppbmcgdG8gY29udGVudCBpZ25vcmUgZXh0ZXJuYWwgYXR0ZW1wdHMuCi0gICAgaWYgKHZp
ZXctPnVzZUZpeGVkTGF5b3V0KCkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCiAgICAgaWYg
KG1fdmlld1NpemUgPT0gdmlld1NpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIHZpZXctPnJl
c2l6ZSh2aWV3U2l6ZSk7CiAgICAgdmlldy0+c2V0TmVlZHNMYXlvdXQoKTsKLSAgICBtX2RyYXdp
bmdBcmVhLT5zZXROZWVkc0Rpc3BsYXkoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgdmlld1NpemUp
KTsKKyAgICBtX2RyYXdpbmdBcmVhLT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICAKICAgICBtX3Zp
ZXdTaXplID0gdmlld1NpemU7Ci19CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLXZv
aWQgV2ViUGFnZTo6c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgcmVj
dCkKLXsKLSAgICBBU1NFUlQobV91c2VGaXhlZExheW91dCk7Ci0KLSAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLT52aWV3KCktPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KHJlY3QpOworICAgIGlm
ICh2aWV3LT51c2VGaXhlZExheW91dCgpKQorICAgICAgICBzZW5kVmlld3BvcnRBdHRyaWJ1dGVz
Q2hhbmdlZCgpOworI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzaXplVG9Db250ZW50c0lm
TmVlZGVkKCkKK3ZvaWQgV2ViUGFnZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQm
IHBvc2l0aW9uKQogewotICAgIEFTU0VSVChtX3VzZUZpeGVkTGF5b3V0KTsKLQotICAgIEZyYW1l
VmlldyogdmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKLQotICAgIGlmICghdmll
dy0+dXNlRml4ZWRMYXlvdXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW50U2l6ZSBuZXdT
aXplID0gdmlldy0+Y29udGVudHNTaXplKCkuZXhwYW5kZWRUbyh2aWV3LT5maXhlZExheW91dFNp
emUoKSk7Ci0KLSAgICBpZiAobmV3U2l6ZSA9PSBtX3ZpZXdTaXplKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3ZpZXdTaXplID0gbmV3U2l6ZTsKLSAgICB2aWV3LT5yZXNpemUobmV3U2l6ZSk7
Ci0gICAgdmlldy0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52
aWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uKTsKIH0KIAorI2lmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQorCiB2b2lkIFdlYlBhZ2U6OnNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFu
Z2VkKCkKIHsKICAgICBBU1NFUlQobV91c2VGaXhlZExheW91dCk7CiAKICAgICAvLyBWaWV3cG9y
dCBwcm9wZXJ0aWVzIGhhdmUgbm8gaW1wYWN0IG9uIHplcm8gc2l6ZWQgZml4ZWQgdmlld3BvcnRz
LgotICAgIGlmIChtX3ZpZXdwb3J0U2l6ZS5pc0VtcHR5KCkpCisgICAgaWYgKG1fdmlld1NpemUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgcmVj
b21tZW5kZWQgbGF5b3V0IHNpemUsIHdoZW4gdGhlIGF2YWlsYWJsZSBzaXplIChkZXZpY2UgcGl4
ZWwpIGNoYW5nZXMuCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9wYWdlLT5zZXR0aW5ncygp
OwogCi0gICAgaW50IG1pbmltdW1MYXlvdXRGYWxsYmFja1dpZHRoID0gc3RkOjptYXgoc2V0dGlu
Z3MtPmxheW91dEZhbGxiYWNrV2lkdGgoKSwgbV92aWV3cG9ydFNpemUud2lkdGgoKSk7CisgICAg
aW50IG1pbmltdW1MYXlvdXRGYWxsYmFja1dpZHRoID0gc3RkOjptYXgoc2V0dGluZ3MtPmxheW91
dEZhbGxiYWNrV2lkdGgoKSwgbV92aWV3U2l6ZS53aWR0aCgpKTsKIAogICAgIC8vIElmIHVuc2V0
ICB3ZSB1c2UgdGhlIHZpZXdwb3J0IGRpbWVuc2lvbnMuIFRoaXMgZml0cyB3aXRoIHRoZSBiZWhh
dmlvciBvZiBkZXNrdG9wIGJyb3dzZXJzLgotICAgIGludCBkZXZpY2VXaWR0aCA9IChzZXR0aW5n
cy0+ZGV2aWNlV2lkdGgoKSA+IDApID8gc2V0dGluZ3MtPmRldmljZVdpZHRoKCkgOiBtX3ZpZXdw
b3J0U2l6ZS53aWR0aCgpOwotICAgIGludCBkZXZpY2VIZWlnaHQgPSAoc2V0dGluZ3MtPmRldmlj
ZUhlaWdodCgpID4gMCkgPyBzZXR0aW5ncy0+ZGV2aWNlSGVpZ2h0KCkgOiBtX3ZpZXdwb3J0U2l6
ZS5oZWlnaHQoKTsKKyAgICBpbnQgZGV2aWNlV2lkdGggPSAoc2V0dGluZ3MtPmRldmljZVdpZHRo
KCkgPiAwKSA/IHNldHRpbmdzLT5kZXZpY2VXaWR0aCgpIDogbV92aWV3U2l6ZS53aWR0aCgpOwor
ICAgIGludCBkZXZpY2VIZWlnaHQgPSAoc2V0dGluZ3MtPmRldmljZUhlaWdodCgpID4gMCkgPyBz
ZXR0aW5ncy0+ZGV2aWNlSGVpZ2h0KCkgOiBtX3ZpZXdTaXplLmhlaWdodCgpOwogCi0gICAgVmll
d3BvcnRBdHRyaWJ1dGVzIGF0dHIgPSBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKG1fcGFnZS0+
dmlld3BvcnRBcmd1bWVudHMoKSwgbWluaW11bUxheW91dEZhbGxiYWNrV2lkdGgsIGRldmljZVdp
ZHRoLCBkZXZpY2VIZWlnaHQsIDEsIG1fdmlld3BvcnRTaXplKTsKKyAgICBWaWV3cG9ydEF0dHJp
YnV0ZXMgYXR0ciA9IGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMobV9wYWdlLT52aWV3cG9ydEFy
Z3VtZW50cygpLCBtaW5pbXVtTGF5b3V0RmFsbGJhY2tXaWR0aCwgZGV2aWNlV2lkdGgsIGRldmlj
ZUhlaWdodCwgMSwgbV92aWV3U2l6ZSk7CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT52aWV3KCk7CiAKLSAgICAvLyBJZiBubyBsYXlvdXQgd2FzIGRvbmUgeWV0
IHNldCBjb250ZW50Rml4ZWRPcmlnaW4gdG8gKDAsMCkuCi0gICAgSW50UG9pbnQgY29udGVudEZp
eGVkT3JpZ2luID0gdmlldy0+ZGlkRmlyc3RMYXlvdXQoKSA/IHZpZXctPmZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0KCkubG9jYXRpb24oKSA6IEludFBvaW50KCk7Ci0KLSAgICAvLyBQdXQgdGhlIHdp
ZHRoIGFuZCBoZWlnaHQgdG8gdGhlIHZpZXdwb3J0IHdpZHRoIGFuZCBoZWlnaHQuIEluIGNzcyB1
bml0cyBob3dldmVyLgotICAgIC8vIFVzZSBGbG9hdFNpemUgdG8gYXZvaWQgdHJ1bmNhdGVkIHZh
bHVlcyBkdXJpbmcgc2NhbGUuCi0gICAgRmxvYXRTaXplIGNvbnRlbnRGaXhlZFNpemUgPSBtX3Zp
ZXdwb3J0U2l6ZTsKLQogI2lmIEVOQUJMRShDU1NfREVWSUNFX0FEQVBUQVRJT04pCiAgICAgLy8g
Q1NTIHZpZXdwb3J0IGRlc2NyaXB0b3JzIG1pZ2h0IGJlIGFwcGxpZWQgdG8gYWxyZWFkeSBhZmZl
Y3RlZCB2aWV3cG9ydCBzaXplCiAgICAgLy8gaWYgdGhlIHBhZ2UgZW5hYmxlcy9kaXNhYmxlcyBz
dHlsZXNoZWV0cywgc28gbmVlZCB0byBrZWVwIGluaXRpYWwgdmlld3BvcnQgc2l6ZS4KLSAgICB2
aWV3LT5zZXRJbml0aWFsVmlld3BvcnRTaXplKHJvdW5kZWRJbnRTaXplKGNvbnRlbnRGaXhlZFNp
emUpKTsKKyAgICB2aWV3LT5zZXRJbml0aWFsVmlld3BvcnRTaXplKG1fdmlld1NpemUpOwogI2Vu
ZGlmCiAKLSAgICBjb250ZW50Rml4ZWRTaXplLnNjYWxlKDEgLyBhdHRyLmluaXRpYWxTY2FsZSk7
Ci0gICAgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChjb250ZW50Rml4ZWRPcmln
aW4sIHJvdW5kZWRJbnRTaXplKGNvbnRlbnRGaXhlZFNpemUpKSk7CisgICAgLy8gSWYgbm8gbGF5
b3V0IHdhcyBkb25lIHlldCBzZXQgc2Nyb2xsUG9zaXRpb24gdG8gKDAsMCkuCisgICAgSW50UG9p
bnQgc2Nyb2xsUG9zaXRpb24gPSB2aWV3LT5kaWRGaXJzdExheW91dCgpID8gdmlldy0+c2Nyb2xs
UG9zaXRpb24oKSA6IEludFBvaW50KCk7CisgICAgc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9z
aXRpb24pOwogCiAgICAgYXR0ci5pbml0aWFsU2NhbGUgPSBtX3BhZ2UtPnZpZXdwb3J0QXJndW1l
bnRzKCkuem9vbTsgLy8gUmVzZXRzIGF1dG8gKC0xKSBpZiBubyB2YWx1ZSB3YXMgc2V0IGJ5IHVz
ZXIuCiAKQEAgLTEwNjYsMTkgKzEwMzksNiBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRWaWV3cG9ydEF0
dHJpYnV0ZXNDaGFuZ2VkKCkKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGF0dHIpKTsKIH0KLQotdm9pZCBXZWJQYWdlOjpzZXRW
aWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBBU1NFUlQobV91c2VGaXhl
ZExheW91dCk7Ci0KLSAgICBpZiAobV92aWV3cG9ydFNpemUgPT0gc2l6ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV92aWV3cG9ydFNpemUgPSBzaXplOwotCi0gICAgc2VuZFZpZXdwb3J0QXR0
cmlidXRlc0NoYW5nZWQoKTsKLX0KLQogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZTo6c2Nyb2xsTWFp
bkZyYW1lSWZOb3RBdE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNl
dCkKQEAgLTEyNjksMTggKzEyMjksMTEgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VGaXhlZExheW91
dChib29sIGZpeGVkKQogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVG
YWN0b3JJbkNvbXBvc2l0b3IoZml4ZWQpOwogI2VuZGlmCiAKLSNpZiBVU0UoVElMRURfQkFDS0lO
R19TVE9SRSkgJiYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgLy8gRGVsZWdhdGVkIHNj
cm9sbGluZyB3aWxsIGJlIGVuYWJsZWQgd2hlbiB0aGUgRnJhbWVWaWV3IGlzIGNyZWF0ZWQgaWYg
Zml4ZWQgbGF5b3V0IGlzIGVuYWJsZWQuCi0gICAgLy8gRW5zdXJlIHdlIGRvbid0IGRvIGFuaW1h
dGVkIHNjcm9sbGluZyBpbiB0aGUgV2ViUHJvY2VzcyBpbiB0aGF0IGNhc2UuCi0gICAgbV9wYWdl
LT5zZXR0aW5ncygpLT5zZXRFbmFibGVTY3JvbGxBbmltYXRvcighZml4ZWQpOwotI2VuZGlmCi0K
ICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWVWaWV3KCk7CiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2aWV3
LT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcoZml4ZWQpOwogICAgIHZpZXctPnNldFBhaW50c0VudGly
ZUNvbnRlbnRzKGZpeGVkKTsKICNlbmRpZgogICAgIHZpZXctPnNldFVzZUZpeGVkTGF5b3V0KGZp
eGVkKTsKQEAgLTE0MzksMjAgKzEzOTIsMTMgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFn
ZTo6c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3UKICAg
ICByZXR1cm4gc25hcHNob3QucmVsZWFzZSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OnBhZ2VEaWRT
Y3JvbGwoKQordm9pZCBXZWJQYWdlOjpwYWdlRGlkU2Nyb2xsKGNvbnN0IEludFBvaW50JiBzY3Jv
bGxQb3NpdGlvbikKIHsKICAgICBtX3VpQ2xpZW50LnBhZ2VEaWRTY3JvbGwodGhpcyk7CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlBhZ2VEaWRTY3JvbGwoKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdlRGlkU2Nyb2xsKHNjcm9sbFBvc2l0aW9uKSk7
CiB9CiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLXZvaWQgV2ViUGFnZTo6cGFnZURp
ZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvaW50KQotewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UGFnZURpZFJlcXVlc3RTY3JvbGwocG9pbnQpKTsKLX0KLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBXZWJDb250ZXh0TWVudSogV2ViUGFnZTo6
Y29udGV4dE1lbnUoKQogewpAQCAtMTg2OSw3ICsxODE1LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRE
cmF3c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCiAgICAgfQogCiAgICAgbV9kcmF3
aW5nQXJlYS0+cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCk7Ci0gICAgbV9kcmF3
aW5nQXJlYS0+c2V0TmVlZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fdmlld1Np
emUpKTsKKyAgICBtX2RyYXdpbmdBcmVhLT5zZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpzZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sIGRyYXdzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKQpAQCAtMTg4Niw3ICsxODMyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXREcmF3
c1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sIGRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKQog
ICAgIH0KIAogICAgIG1fZHJhd2luZ0FyZWEtPnBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hh
bmdlZCgpOwotICAgIG1fZHJhd2luZ0FyZWEtPnNldE5lZWRzRGlzcGxheShJbnRSZWN0KEludFBv
aW50KDAsIDApLCBtX3ZpZXdTaXplKSk7CisgICAgbV9kcmF3aW5nQXJlYS0+c2V0TmVlZHNEaXNw
bGF5KCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dmlld1dpbGxTdGFydExpdmVSZXNpemUoKQpAQCAt
MTk5OCw3ICsxOTQ0LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9uKCkK
IHZvaWQgV2ViUGFnZTo6ZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbigpCiB7CiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgaWYgKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+dmll
dygpLT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkKKyAgICBpZiAodXNlRml4ZWRMYXlvdXQoKSkKICAg
ICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgVUkgcHJvY2VzcyBzZW50IHVzIHRoZSB2aXNpYmxlIHJl
Y3QgaXQgd2FudHMgcmVuZGVyZWQuCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkpOwogICAgIGVsc2UKQEAgLTIwMjYsNyAr
MTk3Miw3IEBAIHZvaWQgV2ViUGFnZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKQogICAgIG1fcGFnZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsK
IAogICAgIC8vIFdlIG5lZWQgdG8gcmVwYWludCBvbiByZXN1bWUgdG8ga2lja3N0YXJ0IGFuaW1h
dGVkIHBhaW50aW5nIGFnYWluLgotICAgIG1fZHJhd2luZ0FyZWEtPnNldE5lZWRzRGlzcGxheShJ
bnRSZWN0KEludFBvaW50KDAsIDApLCBtX3ZpZXdTaXplKSk7CisgICAgbV9kcmF3aW5nQXJlYS0+
c2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKIEludFBvaW50IFdlYlBhZ2U6OnNjcmVlblRvV2luZG93
KGNvbnN0IEludFBvaW50JiBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IGE2ZTA2MDYwMjcyNTFjNWRiMmMxZGZkZmRiOTgyZWVlZTRiYjI1
YjguLjI4MDlhYjE2ZDIyZDRmNjdmOTMxN2YxOWI5N2FhZTZhNzM4ZmM3NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzcwLDE0ICszNzAsMTAg
QEAgcHVibGljOgogCiAgICAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBu
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKTsKIAotICAgIHZvaWQgcGFnZURp
ZFNjcm9sbCgpOworICAgIHZvaWQgcGFnZURpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpOworICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0
U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0gICAgdm9pZCBzZXRGaXhlZFZpc2li
bGVDb250ZW50UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdm9pZCByZXNpemVU
b0NvbnRlbnRzSWZOZWVkZWQoKTsKICAgICB2b2lkIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFu
Z2VkKCk7Ci0gICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OwotICAgIFdlYkNvcmU6OkludFNpemUgdmlld3BvcnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV92
aWV3cG9ydFNpemU7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC04
NzEsMTAgKzg2Nyw2IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudCBtX2xvZ0RpYWdub3N0aWNNZXNzYWdlQ2xpZW50OwogCi0j
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdw
b3J0U2l6ZTsKLSNlbmRpZgotCiAgICAgRmluZENvbnRyb2xsZXIgbV9maW5kQ29udHJvbGxlcjsK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShRVCkKICAgICBUYXBIaWdobGln
aHRDb250cm9sbGVyIG1fdGFwSGlnaGxpZ2h0Q29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNjdi
Y2U2YTJkMmY4NzkwYTA2OGRjMzBkOWZjODAzMDdiMTU3ZDJkZS4uYzVjYTlhZjY1ZTNiNzhiZTdi
Yzg3YWU4MDIzMGNhOGVlMTljNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTExNiwxMCArMTE2LDYgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3VzcGVuZEFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpCiAKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKLSAgICBTZXRWaWV3cG9y
dFNpemUoV2ViQ29yZTo6SW50U2l6ZSBzaXplKQotI2VuZGlmCi0KICAgICBDbG9zZSgpCiAgICAg
VHJ5Q2xvc2UoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCBlNjRhYTE3ZTRlYmQyNmM0OGY5
ZmZkN2JhNjE5OWJiMWQwNzFhYTU1Li4wMTdjZDBhNDlhOTliYzIzMzAwNjkzNzdlNjU4MDk1ZWU4
ZTUzZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTE2OCw3ICsxNjgsMTYgQEAgdm9pZCBM
YXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKCkKICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKIH0K
IAotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlz
cGxheShjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXROb25D
b21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSgpCit7CisgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVy
KQorICAgICAgICBtX3BhZ2VPdmVybGF5TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworCisgICAg
c2NoZWR1bGVMYXllckZsdXNoKCk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9u
Q29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVj
dChyZWN0KTsKICAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVyKQpAQCAtMTc5LDcgKzE4OCw3IEBA
IHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3Bs
YXkoY29uc3QgSW50UmVjdCYgcmVjdCkKIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzY3JvbGxO
b25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgSW50UmVjdCYgc2Nyb2xsUmVjdCkKIHsKLSAgICBz
ZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShzY3JvbGxSZWN0KTsKKyAgICBzZXRO
b25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChzY3JvbGxSZWN0KTsKIH0KIAog
dm9pZCBMYXllclRyZWVIb3N0R3RrOjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1Np
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xh
eWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
TGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IDU4MzI4MjNiN2YzNDM5MGFkMDljOGFjNjhlODYzOTA4
Yjc5MmJjMGYuLjE5NTU2MzQ1NjU5Zjk1MzUyYzEyNTMwNTI2YWM2OTI4MTVlNjlhMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJU
cmVlSG9zdEd0ay5oCkBAIC02NCw3ICs2NCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25z
dCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldFNob3VsZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21wb3NpdGVkQ29u
dGVudHNOZWVkRGlzcGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21w
b3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRJbnN0YWxsUGFnZU92ZXJsYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLmgKaW5kZXggNzViMzUzN2U2OTYw
MGNhZjliOTZkNThhOTAyMzA1NmQyMTg1MTUxMC4uMTMxYTM2ZTE0NGRiMjA1YTY5M2Y4NGQ2YTk4
NjkwZGJlNDg4MDVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9MYXllclRyZWVIb3N0TWFjLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLmgKQEAgLTUwLDcgKzUwLDggQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVkTGF5
ZXJGbHVzaChib29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0
aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBv
c2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXko
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc2Nyb2xsUmVjdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWlu
dCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIG5ld1NpemUpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllclRyZWVIb3N0TWFjLm1tCmluZGV4IGMy
NDg0NzUxYjU2MjI4MzkzYTZmOWI3NzRkZTNjNzkxZTExMjFhNGEuLmIxY2MxZjM5NzBiNzI0YTk2
ZmNlNjQyMDkwMzJkMTg2MzRkN2RmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJUcmVlSG9zdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyVHJlZUhvc3RNYWMubW0KQEAgLTExMiw3ICsx
MTIsMTYgQEAgdm9pZCBMYXllclRyZWVIb3N0TWFjOjppbnZhbGlkYXRlKCkKICAgICBtX2xheWVy
Rmx1c2hTY2hlZHVsZXIuaW52YWxpZGF0ZSgpOwogfQogCi12b2lkIExheWVyVHJlZUhvc3RNYWM6
OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNw
bGF5KCkKK3sKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxh
eSgpOworICAgIGlmIChtX3BhZ2VPdmVybGF5TGF5ZXIpCisgICAgICAgIG1fcGFnZU92ZXJsYXlM
YXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30K
Kwordm9pZCBMYXllclRyZWVIb3N0TWFjOjpzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlz
cGxheUluUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0KHJlY3QpOwogICAgIGlmIChtX3BhZ2VP
dmVybGF5TGF5ZXIpCkBAIC0xMjMsNyArMTMyLDcgQEAgdm9pZCBMYXllclRyZWVIb3N0TWFjOjpz
ZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQog
CiB2b2lkIExheWVyVHJlZUhvc3RNYWM6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25z
dCBJbnRSZWN0JiBzY3JvbGxSZWN0KQogewotICAgIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05l
ZWREaXNwbGF5KHNjcm9sbFJlY3QpOworICAgIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWRE
aXNwbGF5SW5SZWN0KHNjcm9sbFJlY3QpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RNYWM6OmZv
cmNlUmVwYWludCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggZTEz
ZDBhNDE3ZjBjMjFhYmE3NTA1NGQxODQzZmJkNmI3M2UxYTMyOS4uZTQ5ZDY2YzJmZDA2YmZiMDAz
NTc0MGUyY2FiYzlmZGRhYmI0OTc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEuaApAQCAtNDIsNyArNDIsOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhKFdlYlBhZ2UqLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKICAg
ICAvLyBEcmF3aW5nQXJlYQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rp
c3BsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNjcm9sbERlbHRhKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBjMzhmZGYxM2NkMGZkZTZjZDVh
OWFiZDhmYTdmMGMyOTY3MjdhOTU5Li5lY2I5ODNjNmEwZGY1NTU2ZWEyYzY2NmZhZmViNTMwOWM2
NmZlYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTQ3LDcg
KzQ3LDExIEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEoKQogewogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzZXRO
ZWVkc0Rpc3BsYXkoY29uc3QgSW50UmVjdCYpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpzZXROZWVkc0Rpc3BsYXkoKQoreworfQorCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCAyNmMzYmMxMzY5NjRk
OTQ5NTMwMjdkMzc3OGM4YWMyNThhZmU1ZGU1Li4wNDQ2MjE1MDRmOGVkNTE2NjkzMWRmZWQ4ZmFh
MDQ3YzZiMGMzN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CkBAIC01NSw3ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEoV2ViUGFnZSosIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAogICAg
IC8vIERyYXdpbmdBcmVhCi0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlz
cGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3Qo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2Nyb2xsRGVsdGEpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVw
YWludCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KaW5kZXggMjYwMTI5MWNhMGYxMDgxNGU3MjYwODU0MGFmMmNjMTNmYWQ5NDFmNi4uZDQ1NzY5
ZmUyYTQ1NmMxYzkyYmIxZTdmYzZkNzQwMmRlMmU1YTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC0xMDAsNyArMTAwLDExIEBAIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjp+VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoKQogICAg
IG1fbGF5ZXJGbHVzaFNjaGVkdWxlci5pbnZhbGlkYXRlKCk7CiB9CiAKLXZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldE5lZWRzRGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0
KQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TmVlZHNEaXNwbGF5KCkK
K3sKK30KKwordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TmVlZHNEaXNw
bGF5SW5SZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>