<?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>62149</bug_id>
          
          <creation_ts>2011-06-06 14:29:31 -0700</creation_ts>
          <short_desc>Web Inspector: [Chromium] DevTools does not highlight elements when accelerated compositing is on.</short_desc>
          <delta_ts>2012-02-21 06:38:23 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79100</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>jamesr</cc>
    
    <cc>loislo</cc>
    
    <cc>nduca</cc>
    
    <cc>pfeldman</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>416006</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-06 14:29:31 -0700</bug_when>
    <thetext>DevTools does not highlight elements when accelerated compositing is on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416017</commentid>
    <comment_count>1</comment_count>
      <attachid>96124</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-06 14:39:34 -0700</bug_when>
    <thetext>Created attachment 96124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416029</commentid>
    <comment_count>2</comment_count>
      <attachid>96124</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-06 14:51:03 -0700</bug_when>
    <thetext>Comment on attachment 96124
Patch

This should not be conflated with the CCHeadsUpDisplay, that&apos;s for debugging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416036</commentid>
    <comment_count>3</comment_count>
      <attachid>96124</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-06 15:02:26 -0700</bug_when>
    <thetext>Comment on attachment 96124
Patch

For compositor debugging, I should say.  The inspector is for debugging as well, but of a rather different source.

WebKit2 makes a GraphicsLayer for the PageOverlay and inserts it into the compositing tree at the appropriate place.  That seems like a more sound approach, could you try that?  Look at how LayerTreeHostCA handles it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416047</commentid>
    <comment_count>4</comment_count>
      <attachid>96124</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-06-06 15:10:55 -0700</bug_when>
    <thetext>Comment on attachment 96124
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp:90
&gt; +        hudSize.setWidth(m_layerRenderer-&gt;viewportSize().width());

still need to clamp to the max texture size .  An example can be found in DrawingBuffer::reset() (DrawingBuffer.cpp)

&gt; Source/WebKit/chromium/src/PageOverlay.cpp:84
&gt; +    if (!m_viewImpl-&gt;isAcceleratedCompositingActive()) {

isAcceleratedCompositingActive() needs to be protected by USE(ACCELERATED_COMPOSITING) guards.

&gt; Source/WebKit/chromium/src/PageOverlay.cpp:105
&gt; +void PageOverlay::webFramePainted(GraphicsContext&amp; gc)

The method should probably be named using an active verb.  paintWebFrame ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416053</commentid>
    <comment_count>5</comment_count>
      <attachid>96124</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-06 15:13:59 -0700</bug_when>
    <thetext>Comment on attachment 96124
Patch

resetting review? flag to review-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416071</commentid>
    <comment_count>6</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-06-06 15:33:35 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 96124 [details])
&gt; For compositor debugging, I should say.  The inspector is for debugging as well, but of a rather different source.
&gt; 
&gt; WebKit2 makes a GraphicsLayer for the PageOverlay and inserts it into the compositing tree at the appropriate place.  That seems like a more sound approach, could you try that?  Look at how LayerTreeHostCA handles it.

Good suggestion.  It sounds like it would require some additional plumbing the the creation of a new GraphicsLayer type for overlay content that has the appropriate Painter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416072</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-06 15:35:29 -0700</bug_when>
    <thetext>It shouldn&apos;t take much - just provide an implementation of GraphicsLayerClient and the compositor can treat it like a normal content layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416585</commentid>
    <comment_count>8</comment_count>
      <attachid>96253</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-07 09:59:57 -0700</bug_when>
    <thetext>Created attachment 96253
Patch with fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416587</commentid>
    <comment_count>9</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-07 10:03:11 -0700</bug_when>
    <thetext>I have uploaded a new patch with the GraphicsLayer approach. Since there is no way to get GraphicsLayer from LayerChromium, I changed ChromeClientImpl to pass root GraphicsLayer to WebViewImpl, where I save it and use for overlay manipulations.

(In reply to comment #4)
&gt; (From update of attachment 96124 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96124&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/PageOverlay.cpp:84
&gt; &gt; +    if (!m_viewImpl-&gt;isAcceleratedCompositingActive()) {
&gt; 
&gt; isAcceleratedCompositingActive() needs to be protected by USE(ACCELERATED_COMPOSITING) guards.
I don&apos;t think it needs that, I made it the same way I saw in WebViewImpl, (e.g. WebViewImpl::resize)

&gt; &gt; Source/WebKit/chromium/src/PageOverlay.cpp:105
&gt; &gt; +void PageOverlay::webFramePainted(GraphicsContext&amp; gc)
&gt; 
&gt; The method should probably be named using an active verb.  paintWebFrame ?
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418924</commentid>
    <comment_count>10</comment_count>
      <attachid>96253</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-06-10 14:34:40 -0700</bug_when>
    <thetext>Comment on attachment 96253
Patch with fixes

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

Looks good overall to me (minus the one comment).  James can you please have a look too?

&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:286
&gt; +    m_webViewImpl-&gt;setPageOverlayClient(this);

highlight seems like a method that will get called often.  setPageOverlayClient() seems to blindly create a new PageOverlay instance.  Isn&apos;t that excessive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418937</commentid>
    <comment_count>11</comment_count>
      <attachid>96253</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-10 14:53:15 -0700</bug_when>
    <thetext>Comment on attachment 96253
Patch with fixes

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

This is looking great overall.  My main concern is the same as Vangelis&apos; - it seems that this code will create a new PageOverlay on every call to highlightNode(), which is super frequent.  Can you look into that?

&gt; Source/WebKit/chromium/src/PageOverlay.cpp:57
&gt; +    update();

is this call just to run the code at lines 129-132?  can you just move that cleanup code directly to here? i realize that probably means adding an #if USE(ACCELERATED_COMPOSITING) block here but that feels less weird than calling a member function inside a destructor

&gt; Source/WebKit/chromium/src/PageOverlay.h:60
&gt; +    PageOverlay(WebViewImpl*, PageOverlayClient*);
&gt; +    WebViewImpl* m_viewImpl;

super-nitpicky nitpick: would prefer a newline between the last member function and the first member variable, just to make this a bit easier to scan</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419020</commentid>
    <comment_count>12</comment_count>
      <attachid>96815</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-10 16:00:26 -0700</bug_when>
    <thetext>Created attachment 96815
patch with fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419022</commentid>
    <comment_count>13</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-06-10 16:03:00 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 96253 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=96253&amp;action=review
&gt; 
&gt; This is looking great overall.  My main concern is the same as Vangelis&apos; - it seems that this code will create a new PageOverlay on every call to highlightNode(), which is super frequent.  Can you look into that?
I am only setting PageOverlayClient now, if m_pageOverlay object is not null.

&gt; &gt; Source/WebKit/chromium/src/PageOverlay.cpp:57
&gt; &gt; +    update();
&gt; 
&gt; is this call just to run the code at lines 129-132?  can you just move that cleanup code directly to here? i realize that probably means adding an #if USE(ACCELERATED_COMPOSITING) block here but that feels less weird than calling a member function inside a destructor
As I said on IRC, WebFrame invalidation is also needed for non-composited case.
I have added a clear() method to handle highlighting hiding.

&gt; &gt; Source/WebKit/chromium/src/PageOverlay.h:60
&gt; &gt; +    PageOverlay(WebViewImpl*, PageOverlayClient*);
&gt; &gt; +    WebViewImpl* m_viewImpl;
&gt; 
&gt; super-nitpicky nitpick: would prefer a newline between the last member function and the first member variable, just to make this a bit easier to scan
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419057</commentid>
    <comment_count>14</comment_count>
      <attachid>96815</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-10 17:00:03 -0700</bug_when>
    <thetext>Comment on attachment 96815
patch with fixes

Great, R=me.  Thanks for doing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419075</commentid>
    <comment_count>15</comment_count>
      <attachid>96815</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-10 17:39:23 -0700</bug_when>
    <thetext>Comment on attachment 96815
patch with fixes

Clearing flags on attachment: 96815

Committed r88582: &lt;http://trac.webkit.org/changeset/88582&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419076</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-10 17:39:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96124</attachid>
            <date>2011-06-06 14:39:34 -0700</date>
            <delta_ts>2011-06-07 09:59:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62149-20110607013931.patch</filename>
            <type>text/plain</type>
            <size>21085</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc4ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYTBlYjdkMTFjZjk5ZTc2
ZjkxZjcyZTkwOThjYzhhOTc2MzdjMTc1Li41ZDVkMWExZGMzNTQwZmU5YTA0MjFkMzYzODMxZWJm
NWQ3MmNjY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDYtMDYgIFZzZXZv
bG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0Nocm9taXVtXSBEZXZU
b29scyBkb2VzIG5vdCBoaWdobGlnaHQgZWxlbWVudHMgd2hlbiBhY2NlbGVyYXRlZCBjb21wb3Np
dGluZyBpcyBvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYyMTQ5CisKKyAgICAgICAgQWRkZWQgcGFnZSBvdmVybGF5IGZvciBpbnNwZWN0b3IgaGln
aGxpZ2h0IHN1cHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3Bs
YXk6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENv
bnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6OmRyYXdPdmVybGF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpzZXRPdmVybGF5UGFp
bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjplbmFibGVkKToKKwog
MjAxMS0wNi0wMiAgSWFuIEhlbmRlcnNvbiAgPGlhbmhAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAK
aW5kZXggZTE5OWQ1ZWY4MjhlNzFjZTI3N2NkM2M2ZmFhZTE1YmZkNWEzOGQ1Yy4uN2FhZmRkYWRh
MzdjMDg3NGY0ZTA4MjVmNjMxMDhlNTc3OGFmZTE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheS5jcHAKQEAgLTg2LDcgKzg2LDEwIEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJh
dygpCiAKICAgICAvLyBVc2UgYSBmdWxsc2NyZWVuIHRleHR1cmUgb25seSBpZiB3ZSBuZWVkIHRv
Li4uCiAgICAgSW50U2l6ZSBodWRTaXplOwotICAgIGlmIChtX3Nob3dQbGF0Zm9ybUxheWVyVHJl
ZSkgeworICAgIGlmIChtX292ZXJsYXlQYWludGVyKSB7CisgICAgICAgIGh1ZFNpemUuc2V0V2lk
dGgobV9sYXllclJlbmRlcmVyLT52aWV3cG9ydFNpemUoKS53aWR0aCgpKTsKKyAgICAgICAgaHVk
U2l6ZS5zZXRIZWlnaHQobV9sYXllclJlbmRlcmVyLT52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSk7
CisgICAgfSBlbHNlIGlmIChtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZSkgewogICAgICAgICBodWRT
aXplLnNldFdpZHRoKG1pbigyMDQ4LCBtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0U2l6ZSgpLndp
ZHRoKCkpKTsKICAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQobWluKDIwNDgsIG1fbGF5ZXJSZW5k
ZXJlci0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpKTsKICAgICB9IGVsc2UgewpAQCAtMTU1LDYg
KzE1OCw5IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhd0h1ZENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY3R4LCBjb25zdCBJbnRTaXplJiBodWRTCiAKICAgICBpZiAobV9zaG93UGxhdGZv
cm1MYXllclRyZWUpCiAgICAgICAgIGRyYXdQbGF0Zm9ybUxheWVyVHJlZShjdHgsIHBsYXRmb3Jt
TGF5ZXJUcmVlVG9wKTsKKworICAgIGlmIChtX292ZXJsYXlQYWludGVyKQorICAgICAgICBkcmF3
T3ZlcmxheShjdHgpOwogfQogCiB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdGUFNDb3VudGVy
KEdyYXBoaWNzQ29udGV4dCogY3R4LCBpbnQgdG9wLCBpbnQgaGVpZ2h0KQpAQCAtMjI2LDYgKzIz
MiwxMSBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdQbGF0Zm9ybUxheWVyVHJlZShHcmFw
aGljc0NvbnRleHQqIGN0eCwgaW50IHRvcCkKICAgICB9CiB9CiAKK3ZvaWQgQ0NIZWFkc1VwRGlz
cGxheTo6ZHJhd092ZXJsYXkoR3JhcGhpY3NDb250ZXh0KiBjdHgpCit7CisgICAgbV9vdmVybGF5
UGFpbnRlci0+cGFpbnQoKmN0eCk7Cit9CisKIHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6b25GcmFt
ZUJlZ2luKGRvdWJsZSB0aW1lc3RhbXApCiB7CiAgICAgbV9iZWdpblRpbWVIaXN0b3J5SW5TZWNb
bV9jdXJyZW50RnJhbWVOdW1iZXIgJSBrQmVnaW5GcmFtZUhpc3RvcnlTaXplXSA9IHRpbWVzdGFt
cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSGVhZHNVcERpc3BsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuaAppbmRleCBkNjQ4NzhkYTlhYzVmODRiOTVj
ZDIwZTI0MjZkYmZkZTk3MzZmMzdhLi4wNDU4N2VkMTliZDg5MjhiMTY4YzU4ZDBjZDQ3NzBmZGI5
MWNmODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5oCkBAIC0zNCw2ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdlb21ldHJ5QmluZGluZzsKK2NsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOwogY2xhc3MgTGF5ZXJUZXh0dXJlOwpAQCAtNDIsNiArNDMsMTEgQEAgY2xh
c3MgTGF5ZXJUZXh0dXJlOwogY2xhc3MgQ0NIZWFkc1VwRGlzcGxheSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ0NIZWFkc1VwRGlzcGxheSk7CiBwdWJsaWM6CisgICAgY2xhc3MgT3Zlcmxh
eVBhaW50ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYpID0gMDsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NIZWFk
c1VwRGlzcGxheT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogb3duZXIpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDSGVhZHNVcERpc3BsYXkob3duZXIpKTsKQEAg
LTU4LDcgKzY0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvd1BsYXRmb3JtTGF5ZXJUcmVl
KGJvb2wgZW5hYmxlKSB7IG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlID0gZW5hYmxlOyB9CiAgICAg
Ym9vbCBzaG93UGxhdGZvcm1MYXllclRyZWUoKSBjb25zdCB7IHJldHVybiBtX3Nob3dQbGF0Zm9y
bUxheWVyVHJlZTsgfQogCi0gICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zaG93
UGxhdGZvcm1MYXllclRyZWUgfHwgbV9zaG93RlBTQ291bnRlcjsgfQorICAgIHZvaWQgc2V0T3Zl
cmxheVBhaW50ZXIoUGFzc093blB0cjxPdmVybGF5UGFpbnRlcj4gb3ZlcmxheVBhaW50ZXIpIHsg
bV9vdmVybGF5UGFpbnRlciA9IG92ZXJsYXlQYWludGVyOyB9CisKKyAgICBib29sIGVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZSB8fCBtX3Nob3dGUFNDb3Vu
dGVyIHx8IG1fb3ZlcmxheVBhaW50ZXI7IH0KICAgICB2b2lkIGRyYXcoKTsKIAogICAgIHR5cGVk
ZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUG9zVGV4LCBGcmFnbWVudFNoYWRlckJHUkFU
ZXhBbHBoYT4gUHJvZ3JhbTsKQEAgLTY4LDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRy
YXdIdWRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRTaXplJiBodWRTaXplKTsK
ICAgICB2b2lkIGRyYXdGUFNDb3VudGVyKEdyYXBoaWNzQ29udGV4dCosIGludCB0b3AsIGludCBo
ZWlnaHQpOwogICAgIHZvaWQgZHJhd1BsYXRmb3JtTGF5ZXJUcmVlKEdyYXBoaWNzQ29udGV4dCos
IGludCB0b3ApOworICAgIHZvaWQgZHJhd092ZXJsYXkoR3JhcGhpY3NDb250ZXh0Kik7CiAKIAog
ICAgIGludCBtX2N1cnJlbnRGcmFtZU51bWJlcjsKQEAgLTc1LDYgKzg0LDcgQEAgcHJpdmF0ZToK
ICAgICBkb3VibGUgbV9maWx0ZXJlZEZyYW1lVGltZTsKIAogICAgIE93blB0cjxMYXllclRleHR1
cmU+IG1faHVkVGV4dHVyZTsKKyAgICBPd25QdHI8T3ZlcmxheVBhaW50ZXI+IG1fb3ZlcmxheVBh
aW50ZXI7CiAKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIG1fbGF5ZXJSZW5kZXJlcjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4MDNmYzE5ODdmZmRmZmE2NDg1MDIyMDk2ODJj
MDBjMGQzYTFhNGFkLi4zYWE2ZTFiYWY1MDg2NmUyZjVhZjAyZDFhZDdkYjM4MmFlNmM5Njc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTA2LTA2ICBW
c2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1bV0g
RGV2VG9vbHMgZG9lcyBub3QgaGlnaGxpZ2h0IGVsZW1lbnRzIHdoZW4gYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgaXMgb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MjE0OQorCisgICAgICAgIEFkZGVkIHBhZ2Ugb3ZlcmxheSBmb3IgaW5zcGVjdG9y
IGhpZ2hsaWdodCBzdXBwb3J0LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBz
cmMvUGFnZU92ZXJsYXkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Ojp+UGFnZU92ZXJsYXkpOgorICAgICAgICAoV2Vi
S2l0OjpPdmVybGF5UGFpbnRlckltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok92ZXJs
YXlQYWludGVySW1wbDo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpPdmVybGF5UGFpbnRlcklt
cGw6Ok92ZXJsYXlQYWludGVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Ojp1
cGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6d2ViRnJhbWVQYWludGVkKToK
KyAgICAgICAgKiBzcmMvUGFnZU92ZXJsYXkuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkRl
dlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudElt
cGw6OnBhaW50UGFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50
SW1wbDo6aGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6
OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUltcGw6OnBhaW50V2l0aENvbnRleHQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlT3ZlcmxheUNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRPdmVybGF5UGFpbnRlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJlbmRlcmVyKToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnBhZ2VPdmVybGF5KToKKwogMjAxMS0wNi0wMSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCmluZGV4IGJmOGU2Yzc1NGEzYmQ4NzgwOWFiZGQxYmE0ZjlhYjQ0ZDdl
MzkyZDIuLmQyODJhOGFhNGJkMzU5ZmY5NWU2ZjQxYWIxMjVjY2M1MzcyNTAxODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM5Myw2ICszOTMsOCBAQAogICAgICAgICAgICAgICAg
ICdzcmMvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L05vdGlmaWNhdGlvblByZXNlbnRlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL3Bh
aW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9Q
YWdlT3ZlcmxheS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvUGFnZU92ZXJsYXkuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGFnZU92ZXJsYXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3Yzg4YjUxOTJmYTg1ZDE3MjRlNjBh
NWUyYjVkNDgyOGVkZDRkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9QYWdlT3ZlcmxheS5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4K
KyAqIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCisKKyNpbmNs
dWRlICJXZWJWaWV3Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRl
ICJjYy9DQ0hlYWRzVXBEaXNwbGF5LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc093blB0cjxQYWdlT3ZlcmxheT4gUGFnZU92ZXJsYXk6
OmNyZWF0ZShXZWJWaWV3SW1wbCogdmlld0ltcGwsIFBhZ2VPdmVybGF5Q2xpZW50KiBjbGllbnQp
Cit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlT3ZlcmxheSh2aWV3SW1wbCwgY2xpZW50
KSk7Cit9CisKK1BhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheShXZWJWaWV3SW1wbCogdmlld0ltcGws
IFBhZ2VPdmVybGF5Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX3ZpZXdJbXBsKHZpZXdJbXBsKQor
ICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCitQYWdlT3ZlcmxheTo6flBhZ2VPdmVybGF5
KCkKK3sKKyAgICBtX2NsaWVudCA9IDA7CisgICAgdXBkYXRlKCk7Cit9CisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCitjbGFzcyBPdmVybGF5UGFpbnRlckltcGwgOiBwdWJsaWMg
V2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6T3ZlcmxheVBhaW50ZXIgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPE92ZXJsYXlQYWludGVySW1wbCo+IGNyZWF0ZShQYWdlT3Zlcmxh
eTo6UGFnZU92ZXJsYXlDbGllbnQqIHBhZ2VPdmVybGF5Q2xpZW50KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBPdmVybGF5UGFpbnRlckltcGwocGFnZU92ZXJsYXlDbGllbnQp
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQorICAgIHsKKyAgICAgICAgbV9wYWdlT3ZlcmxheUNsaWVudC0+cGFpbnRQYWdlT3Zlcmxh
eShjb250ZXh0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgT3ZlcmxheVBhaW50
ZXJJbXBsKFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUNsaWVudCogcGFnZU92ZXJsYXlDbGllbnQp
CisgICAgICAgIDogbV9wYWdlT3ZlcmxheUNsaWVudChwYWdlT3ZlcmxheUNsaWVudCkKKyAgICB7
CisgICAgfQorCisgICAgUGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5Q2xpZW50KiBtX3BhZ2VPdmVy
bGF5Q2xpZW50OworfTsKKyNlbmRpZgorCit2b2lkIFBhZ2VPdmVybGF5Ojp1cGRhdGUoKQorewor
ICAgIC8vIFBhZ2VPdmVybGF5Q2xpZW50IGRvZXMgdGhlIGFjdHVhbCBwYWludGluZyBvZiB0aGUg
b3ZlcmxheS4KKyAgICAvLyBIZXJlIHdlIGp1c3QgbWFrZSBzdXJlIHRvIGludmFsaWRhdGUuCisg
ICAgaWYgKCFtX3ZpZXdJbXBsLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgewor
ICAgICAgICAvLyBGSVhNRTogYWJsZSB0byBpbnZhbGlkYXRlIGEgc21hbGxlciByZWN0LgorICAg
ICAgICAvLyBGSVhNRTogSXMgaXQgaW1wb3J0YW50IHRvIGp1c3QgaW52YWxpZGF0ZSBhIHNtYWxs
ZXIgcmVjdCBnaXZlbiB0aGF0CisgICAgICAgIC8vIHRoaXMgaXMgbm90IG9uIGEgY3JpdGljYWwg
Y29kZXBhdGg/IEluIG9yZGVyIHRvIGRvIHNvLCB3ZSdkCisgICAgICAgIC8vIGhhdmUgdG8gdGFr
ZSBzY3JvbGxpbmcgaW50byBhY2NvdW50LgorICAgICAgICBjb25zdCBXZWJTaXplJiBzaXplID0g
bV92aWV3SW1wbC0+c2l6ZSgpOworICAgICAgICBXZWJSZWN0IGRhbWFnZWRSZWN0KDAsIDAsIHNp
emUud2lkdGgsIHNpemUuaGVpZ2h0KTsKKyAgICAgICAgaWYgKG1fdmlld0ltcGwtPmNsaWVudCgp
KQorICAgICAgICAgICAgbV92aWV3SW1wbC0+Y2xpZW50KCktPmRpZEludmFsaWRhdGVSZWN0KGRh
bWFnZWRSZWN0KTsKKyAgICB9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX3ZpZXdJbXBsLT5zZXRPdmVybGF5UGFpbnRlcihP
dmVybGF5UGFpbnRlckltcGw6OmNyZWF0ZShtX2NsaWVudCkpOworICAgIGVsc2UKKyAgICAgICAg
bV92aWV3SW1wbC0+c2V0T3ZlcmxheVBhaW50ZXIobnVsbHB0cik7CisgICAgaWYgKG1fdmlld0lt
cGwtPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKQorICAgICAgICBtX3ZpZXdJbXBs
LT5zZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2VPdmVy
bGF5Ojp3ZWJGcmFtZVBhaW50ZWQoR3JhcGhpY3NDb250ZXh0JiBnYykKK3sKKyAgICBpZiAoIW1f
dmlld0ltcGwtPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKQorICAgICAgICBtX2Ns
aWVudC0+cGFpbnRQYWdlT3ZlcmxheShnYyk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZU92ZXJsYXkuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VPdmVybGF5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc5
ZThkNGFlMjYzN2Y4NjhlNjU4Y2E5YTkzNDRlOGUyMWM2YjRiYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VPdmVybGF5LmgKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09P
R0xFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBHT09HTEUgSU5DLgorICogT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VPdmVybGF5X2gKKyNkZWZpbmUgUGFnZU92
ZXJsYXlfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViVmlld0ltcGw7CisKK2NsYXNzIFBhZ2VPdmVybGF5IHsKK3B1YmxpYzoKKyAgICBj
bGFzcyBQYWdlT3ZlcmxheUNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRQYWdlT3ZlcmxheShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSA9IDA7CisgICAg
fTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VPdmVybGF5PiBjcmVhdGUoV2ViVmlld0lt
cGwqLCBQYWdlT3ZlcmxheUNsaWVudCopOworCisgICAgflBhZ2VPdmVybGF5KCk7CisKKyAgICB2
b2lkIHVwZGF0ZSgpOworCisgICAgdm9pZCB3ZWJGcmFtZVBhaW50ZWQoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Jik7CisKK3ByaXZhdGU6CisgICAgUGFnZU92ZXJsYXkoV2ViVmlld0ltcGwqLCBQ
YWdlT3ZlcmxheUNsaWVudCopOworICAgIFdlYlZpZXdJbXBsKiBtX3ZpZXdJbXBsOworICAgIFBh
Z2VPdmVybGF5Q2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFBhZ2VPdmVybGF5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCA2OGZhNjE4MDZkMjMxMWMyYzcx
ZTBkZTZjZDRkNDYzNTI1MjNjODUxLi40ZDc2ZDk1OTljMDJlYjQ3ZmViNDE5ZmI5ZmM1OWNkNWI4
ODQ3MGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuY3BwCkBAIC0zNCwxMiArMzQsMTQgQEAKICNpbmNsdWRlICJEZWJ1Z2dlckFn
ZW50SW1wbC5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyQWdlbnRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdl
R3JvdXAuaCIKKyNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VFcnJvci5oIgpAQCAtMjcxLDI0ICsyNzMsMjIgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50
SW1wbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKQogewogfQog
CisvLyBQYWdlT3ZlcmxheUNsaWVudAordm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6cGFpbnRQ
YWdlT3ZlcmxheShHcmFwaGljc0NvbnRleHQmIGdjKQoreworICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgIGlmIChpYykKKyAgICAgICAgaWMt
PmRyYXdOb2RlSGlnaGxpZ2h0KGdjKTsKK30KKwogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6
aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gSW5zcGVjdG9yQ29udHJvbGxlciBkb2Vz
IHRoZSBhY3R1YWxsIHRyYWNraW5nIG9mIHRoZSBoaWdobGlnaHRlZCBub2RlCi0gICAgLy8gYW5k
IHRoZSBkcmF3aW5nIG9mIHRoZSBoaWdobGlnaHQuIEhlcmUgd2UganVzdCBtYWtlIHN1cmUgdG8g
aW52YWxpZGF0ZQotICAgIC8vIHRoZSByZWN0cyBvZiB0aGUgb2xkIGFuZCBuZXcgbm9kZXMuCi0g
ICAgaGlkZUhpZ2hsaWdodCgpOworICAgIG1fd2ViVmlld0ltcGwtPnNldFBhZ2VPdmVybGF5Q2xp
ZW50KHRoaXMpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpoaWRlSGlnaGxpZ2h0
KCkKIHsKLSAgICAvLyBGSVhNRTogYWJsZSB0byBpbnZhbGlkYXRlIGEgc21hbGxlciByZWN0Lgot
ICAgIC8vIEZJWE1FOiBJcyBpdCBpbXBvcnRhbnQgdG8ganVzdCBpbnZhbGlkYXRlIHRoZSByZWN0
IG9mIHRoZSBub2RlIHJlZ2lvbgotICAgIC8vIGdpdmVuIHRoYXQgdGhpcyBpcyBub3Qgb24gYSBj
cml0aWNhbCBjb2RlcGF0aD8gIEluIG9yZGVyIHRvIGRvIHNvLCB3ZSdkCi0gICAgLy8gaGF2ZSB0
byB0YWtlIHNjcm9sbGluZyBpbnRvIGFjY291bnQuCi0gICAgY29uc3QgV2ViU2l6ZSYgc2l6ZSA9
IG1fd2ViVmlld0ltcGwtPnNpemUoKTsKLSAgICBXZWJSZWN0IGRhbWFnZWRSZWN0KDAsIDAsIHNp
emUud2lkdGgsIHNpemUuaGVpZ2h0KTsKLSAgICBpZiAobV93ZWJWaWV3SW1wbC0+Y2xpZW50KCkp
Ci0gICAgICAgIG1fd2ViVmlld0ltcGwtPmNsaWVudCgpLT5kaWRJbnZhbGlkYXRlUmVjdChkYW1h
Z2VkUmVjdCk7CisgICAgbV93ZWJWaWV3SW1wbC0+c2V0UGFnZU92ZXJsYXlDbGllbnQoMCk7CiB9
CiAKIGJvb2wgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuaAppbmRleCAzM2NhMjMyNjg4YWQ5M2IzZThlMzk0Y2UyN2VjMGVi
NmQwY2Y2M2Y2Li5lZjVjYzIzMmUxZWRjMTYwYTBiZmI1N2RlYzYwNmJiYzQwYzk4OTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgK
QEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogCisjaW5j
bHVkZSAiUGFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5o
IgogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQxLDYgKzQyLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7CitjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9s
bGVyOwogY2xhc3MgTm9kZTsKQEAgLTYwLDcgKzYyLDggQEAgc3RydWN0IFdlYlVSTEVycm9yOwog
c3RydWN0IFdlYkRldlRvb2xzTWVzc2FnZURhdGE7CiAKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRJ
bXBsIDogcHVibGljIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUNs
aWVudCB7CiBwdWJsaWM6CiAgICAgV2ViRGV2VG9vbHNBZ2VudEltcGwoV2ViVmlld0ltcGwqIHdl
YlZpZXdJbXBsLCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBjbGllbnQpOwogICAgIHZpcnR1YWwg
fldlYkRldlRvb2xzQWdlbnRJbXBsKCk7CkBAIC04OSw2ICs5Miw5IEBAIHB1YmxpYzoKIAogICAg
IGludCBob3N0SWQoKSB7IHJldHVybiBtX2hvc3RJZDsgfQogCisgICAgLy8gUGFnZU92ZXJsYXlD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQYWdlT3ZlcmxheShXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmKTsKKwogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIG1haW5GcmFtZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggMGQ2
NDI4ZDg0ZmYyNDAwZTY1OWVlZmMxNzY2MmRjYmI4MTY4ZWFkZi4uYTg1NjBmMDgzMjVhMWQyYWQ4
Yjk0ZWYyMDY4MWZmMTk1NjhiNzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlICJJY29uVVJMLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4
dEJ1aWxkZXIuaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
QnJpZGdlLmgiCkBAIC0yMDE3LDcgKzIwMTgsOCBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6cGFpbnRX
aXRoQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGdjLCBjb25zdCBXZWJSZWN0JiByZWN0KQogICAg
IGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lVmlldygpKSB7CiAgICAgICAgIGdjLmNs
aXAoZGlydHlSZWN0KTsKICAgICAgICAgZnJhbWVWaWV3KCktPnBhaW50KCZnYywgZGlydHlSZWN0
KTsKLSAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRyYXdO
b2RlSGlnaGxpZ2h0KGdjKTsKKyAgICAgICAgaWYgKHZpZXdJbXBsKCktPnBhZ2VPdmVybGF5KCkp
CisgICAgICAgICAgICB2aWV3SW1wbCgpLT5wYWdlT3ZlcmxheSgpLT53ZWJGcmFtZVBhaW50ZWQo
Z2MpOwogICAgIH0gZWxzZQogICAgICAgICBnYy5maWxsUmVjdChkaXJ0eVJlY3QsIENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgZ2MucmVzdG9yZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDFlNWQwNjQxYWY4MWMwNzE5
NjAyZjExMTllNTIxNjhjNDQ1ZTI1ZjEuLmFlYTFmNjIyYmNiNTE0MzZjNDY0MTI2YzI4Y2NhZmY2
ODk4Zjg3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTIyOTUsNiArMjI5NSwyMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJZ25vcmVJbnB1dEV2
ZW50cyhib29sIG5ld1ZhbHVlKQogICAgIG1faWdub3JlSW5wdXRFdmVudHMgPSBuZXdWYWx1ZTsK
IH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2V0UGFnZU92ZXJsYXlDbGllbnQoUGFnZU92ZXJsYXk6
OlBhZ2VPdmVybGF5Q2xpZW50KiBwYWdlT3ZlcmxheUNsaWVudCkKK3sKKyAgICBpZiAocGFnZU92
ZXJsYXlDbGllbnQpIHsKKyAgICAgICAgbV9wYWdlT3ZlcmxheSA9IFBhZ2VPdmVybGF5OjpjcmVh
dGUodGhpcywgcGFnZU92ZXJsYXlDbGllbnQpOworICAgICAgICBtX3BhZ2VPdmVybGF5LT51cGRh
dGUoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9wYWdlT3ZlcmxheSA9IG51bGxwdHI7Cit9CisK
K3ZvaWQgV2ViVmlld0ltcGw6OnNldE92ZXJsYXlQYWludGVyKFBhc3NPd25QdHI8V2ViQ29yZTo6
Q0NIZWFkc1VwRGlzcGxheTo6T3ZlcmxheVBhaW50ZXI+IG92ZXJsYXlQYWludGVyKQoreworICAg
IGlmIChtX2xheWVyUmVuZGVyZXIpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+aGVhZHNVcERp
c3BsYXkoKS0+c2V0T3ZlcmxheVBhaW50ZXIob3ZlcmxheVBhaW50ZXIpOworfQorCiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiBOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBsKiBXZWJWaWV3SW1w
bDo6bm90aWZpY2F0aW9uUHJlc2VudGVySW1wbCgpCiB7CkBAIC0yNDgzLDYgKzI0OTgsOCBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBh
Y3RpdmUpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nKHRydWUpOwogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUgPSB0cnVlOwogICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGlmIChtX3BhZ2VPdmVybGF5KQorICAgICAgICAgICAgICAgIG1fcGFn
ZU92ZXJsYXktPnVwZGF0ZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9pc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRBY3RpdmF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoZmFsc2UpOwpAQCAtMjUzOCw2ICsy
NTU1LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJlbmRlcmVyKCkKICAgICAgICAg
Ly8gRm9yY2VzIFZpZXdIb3N0TXNnX0RpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyB0
byBiZSBzZW50IHNvCiAgICAgICAgIC8vIHRoYXQgdGhlIGJyb3dzZXIgcHJvY2VzcyBjYW4gcmVh
Y3F1aXJlIHN1cmZhY2VzLgogICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nKHRydWUpOworICAgICAgICBpZiAobV9wYWdlT3ZlcmxheSkKKyAgICAgICAg
ICAgIG1fcGFnZU92ZXJsYXktPnVwZGF0ZSgpOwogICAgIH0gZWxzZQogICAgICAgICBzZXRSb290
R3JhcGhpY3NMYXllcigwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCmluZGV4IDg5OGU1NjVhZDc5Njc0NGYyMjJkZjAyODBkYjUzNDUwMzc3NDliNTQuLjA4ZWUy
MDU5OGUxYjBmMGU4YzQzYmQxMDAzOWY2NjRlZjQ1MjBlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJOb3Rp
ZmljYXRpb25QcmVzZW50ZXJJbXBsLmgiCisjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMjA2
LDYgKzIwNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZ25vcmVJbnB1dEV2ZW50cyhib29s
IG5ld1ZhbHVlKTsKICAgICBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZSogZGV2VG9vbHNBZ2VudFBy
aXZhdGUoKSB7IHJldHVybiBtX2RldlRvb2xzQWdlbnQuZ2V0KCk7IH0KIAorICAgIFBhZ2VPdmVy
bGF5KiBwYWdlT3ZlcmxheSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU92ZXJsYXkuZ2V0KCk7IH0K
KyAgICB2b2lkIHNldFBhZ2VPdmVybGF5Q2xpZW50KFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUNs
aWVudCopOworCisgICAgdm9pZCBzZXRPdmVybGF5UGFpbnRlcihQYXNzT3duUHRyPFdlYkNvcmU6
OkNDSGVhZHNVcERpc3BsYXk6Ok92ZXJsYXlQYWludGVyPik7CisKICAgICBjb25zdCBXZWJQb2lu
dCYgbGFzdE1vdXNlRG93blBvaW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2xh
c3RNb3VzZURvd25Qb2ludDsKQEAgLTUwOCw2ICs1MTQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxXZWJDb3JlOjpQb3B1cENvbnRhaW5lcj4gbV9zZWxlY3RQb3B1cDsKIAogICAgIE93blB0cjxX
ZWJEZXZUb29sc0FnZW50UHJpdmF0ZT4gbV9kZXZUb29sc0FnZW50OworICAgIE93blB0cjxQYWdl
T3ZlcmxheT4gbV9wYWdlT3ZlcmxheTsKIAogICAgIC8vIFdoZXRoZXIgdGhlIHdlYnZpZXcgaXMg
cmVuZGVyaW5nIHRyYW5zcGFyZW50bHkuCiAgICAgYm9vbCBtX2lzVHJhbnNwYXJlbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96253</attachid>
            <date>2011-06-07 09:59:57 -0700</date>
            <delta_ts>2011-06-10 16:00:11 -0700</delta_ts>
            <desc>Patch with fixes</desc>
            <filename>bug-62149-20110607205955.patch</filename>
            <type>text/plain</type>
            <size>21858</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyNDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
NjMzMTRjNDViZGY0MmE3NWM4ZThhNmNhNzgxZmQ1NGJmZTdkZGFhOC4uMGZhOWE3OTNiYTVmMWJi
Yjg2NDAzZTJkMTFkMzYwNWEwZGIyNTNiYiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0OSBAQAorMjAxMS0wNi0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBbQ2hyb21pdW1dIERldlRvb2xzIGRvZXMgbm90IGhpZ2hsaWdodCBl
bGVtZW50cyB3aGVuIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIG9uLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNDkKKworICAgICAgICBBZGRl
ZCBwYWdlIG92ZXJsYXkgZm9yIGluc3BlY3RvciBoaWdobGlnaHQgc3VwcG9ydC4KKworICAgICAg
ICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6
CisgICAgICAgICogc3JjL1BhZ2VPdmVybGF5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlBhZ2VPdmVybGF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6UGFn
ZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6flBhZ2VPdmVybGF5KToK
KyAgICAgICAgKFdlYktpdDo6T3ZlcmxheUdyYXBoaWNzTGF5ZXJDbGllbnRJbXBsOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpPdmVybGF5R3JhcGhpY3NMYXllckNsaWVudEltcGw6On5PdmVy
bGF5R3JhcGhpY3NMYXllckNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpPdmVybGF5R3Jh
cGhpY3NMYXllckNsaWVudEltcGw6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAo
V2ViS2l0OjpPdmVybGF5R3JhcGhpY3NMYXllckNsaWVudEltcGw6Om5vdGlmeVN5bmNSZXF1aXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50SW1wbDo6cGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6Ok92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50
SW1wbDo6c2hvd0RlYnVnQm9yZGVycyk6CisgICAgICAgIChXZWJLaXQ6Ok92ZXJsYXlHcmFwaGlj
c0xheWVyQ2xpZW50SW1wbDo6c2hvd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKFdlYktpdDo6
T3ZlcmxheUdyYXBoaWNzTGF5ZXJDbGllbnRJbXBsOjpPdmVybGF5R3JhcGhpY3NMYXllckNsaWVu
dEltcGwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6dXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZU92ZXJsYXk6OnBhaW50V2ViRnJhbWUpOgorICAgICAgICAqIHNyYy9QYWdl
T3ZlcmxheS5oOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6cGFpbnRQYWdlT3Zlcmxh
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpoaWdobGlnaHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6aGlkZUhpZ2hsaWdodCk6Cisg
ICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6cGFpbnRXaXRoQ29u
dGV4dCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNldFBhZ2VPdmVybGF5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dE92ZXJsYXlMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRSb290R3Jh
cGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRSb290UGxhdGZv
cm1MYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZG9Db21w
b3NpdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJlbmRlcmVy
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnBhZ2VPdmVybGF5KToKKwogMjAxMS0wNi0wMyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1
cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDEyMGI3OTJhNTNiZjIwZmNkYzRkNjM1MmZl
MzAyZjgxMTY1Y2QxZTYuLjZkMDhkOGI3NzU2Y2MwMWI1NWFkMjM2OWZmNWNhMzZhZTE0ZmQ5NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM5Myw2ICszOTMsOCBAQAogICAgICAg
ICAgICAgICAgICdzcmMvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL05vdGlmaWNhdGlvblByZXNlbnRlckltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL3BhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9QYWdlT3ZlcmxheS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvUGFnZU92ZXJs
YXkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCBjMWNlNDZiNjQ1
YWMyYjc1ZTg2YzcxMWMyYWU5ZWM1ZGYxNmY2YTE0Li40MmQxN2Y5NzUyMTZmOTNhNzU5MGVjMjhh
MTRhMjE3N2MyNGZjZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1w
bDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKiBmcmFt
ZSwKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIENocm9tZUNsaWVudElt
cGw6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NMYXllciog
Z3JhcGhpY3NMYXllcikKIHsKLSAgICBtX3dlYlZpZXctPnNldFJvb3RHcmFwaGljc0xheWVyKGdy
YXBoaWNzTGF5ZXIgPyBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwKTsKKyAgICBt
X3dlYlZpZXctPnNldFJvb3RHcmFwaGljc0xheWVyKGdyYXBoaWNzTGF5ZXIpOwogfQogCiB2b2lk
IENocm9tZUNsaWVudEltcGw6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZU92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZU92ZXJsYXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhZTAxYzVh
YTZlYmQwNjE5MTIwOGY5N2ViNGMwYWJkNjk5NWI1ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlT3ZlcmxheS5jcHAKQEAgLTAsMCArMSwxNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgR09PR0xFIElOQy4KKyAqIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VPdmVy
bGF5LmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNsaWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25Q
dHI8UGFnZU92ZXJsYXk+IFBhZ2VPdmVybGF5OjpjcmVhdGUoV2ViVmlld0ltcGwqIHZpZXdJbXBs
LCBQYWdlT3ZlcmxheUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
UGFnZU92ZXJsYXkodmlld0ltcGwsIGNsaWVudCkpOworfQorCitQYWdlT3ZlcmxheTo6UGFnZU92
ZXJsYXkoV2ViVmlld0ltcGwqIHZpZXdJbXBsLCBQYWdlT3ZlcmxheUNsaWVudCogY2xpZW50KQor
ICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKK3sKK30K
KworUGFnZU92ZXJsYXk6On5QYWdlT3ZlcmxheSgpCit7CisgICAgbV9jbGllbnQgPSAwOworICAg
IHVwZGF0ZSgpOworfQorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorY2xhc3Mg
T3ZlcmxheUdyYXBoaWNzTGF5ZXJDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPE92ZXJsYXlHcmFw
aGljc0xheWVyQ2xpZW50SW1wbCo+IGNyZWF0ZShXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwsIFBh
Z2VPdmVybGF5OjpQYWdlT3ZlcmxheUNsaWVudCogcGFnZU92ZXJsYXlDbGllbnQpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50SW1w
bCh3ZWJWaWV3SW1wbCwgcGFnZU92ZXJsYXlDbGllbnQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IH5PdmVybGF5R3JhcGhpY3NMYXllckNsaWVudEltcGwoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGlt
ZSkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWlu
dGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0JiBpbkNsaXApCisgICAgeworICAgICAgICBtX3BhZ2VP
dmVybGF5Q2xpZW50LT5wYWludFBhZ2VPdmVybGF5KGNvbnRleHQpOworICAgIH0KKworICAgIHZp
cnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3dlYlZpZXdJbXBsLT5wYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3dlYlZpZXdJbXBsLT5wYWdlKCktPnNldHRpbmdzKCktPnNo
b3dSZXBhaW50Q291bnRlcigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBPdmVy
bGF5R3JhcGhpY3NMYXllckNsaWVudEltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBQYWdl
T3ZlcmxheTo6UGFnZU92ZXJsYXlDbGllbnQqIHBhZ2VPdmVybGF5Q2xpZW50KQorICAgICAgICA6
IG1fcGFnZU92ZXJsYXlDbGllbnQocGFnZU92ZXJsYXlDbGllbnQpCisgICAgICAgICwgbV93ZWJW
aWV3SW1wbCh3ZWJWaWV3SW1wbCkKKyAgICB7CisgICAgfQorCisgICAgUGFnZU92ZXJsYXk6OlBh
Z2VPdmVybGF5Q2xpZW50KiBtX3BhZ2VPdmVybGF5Q2xpZW50OworICAgIFdlYlZpZXdJbXBsKiBt
X3dlYlZpZXdJbXBsOworfTsKKyNlbmRpZgorCit2b2lkIFBhZ2VPdmVybGF5Ojp1cGRhdGUoKQor
eworICAgIC8vIFBhZ2VPdmVybGF5Q2xpZW50IGRvZXMgdGhlIGFjdHVhbCBwYWludGluZyBvZiB0
aGUgb3ZlcmxheS4KKyAgICAvLyBIZXJlIHdlIGp1c3QgbWFrZSBzdXJlIHRvIGludmFsaWRhdGUu
CisgICAgaWYgKCFtX3ZpZXdJbXBsLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkg
eworICAgICAgICAvLyBGSVhNRTogYWJsZSB0byBpbnZhbGlkYXRlIGEgc21hbGxlciByZWN0Lgor
ICAgICAgICAvLyBGSVhNRTogSXMgaXQgaW1wb3J0YW50IHRvIGp1c3QgaW52YWxpZGF0ZSBhIHNt
YWxsZXIgcmVjdCBnaXZlbiB0aGF0CisgICAgICAgIC8vIHRoaXMgaXMgbm90IG9uIGEgY3JpdGlj
YWwgY29kZXBhdGg/IEluIG9yZGVyIHRvIGRvIHNvLCB3ZSdkCisgICAgICAgIC8vIGhhdmUgdG8g
dGFrZSBzY3JvbGxpbmcgaW50byBhY2NvdW50LgorICAgICAgICBjb25zdCBXZWJTaXplJiBzaXpl
ID0gbV92aWV3SW1wbC0+c2l6ZSgpOworICAgICAgICBXZWJSZWN0IGRhbWFnZWRSZWN0KDAsIDAs
IHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KTsKKyAgICAgICAgaWYgKG1fdmlld0ltcGwtPmNsaWVu
dCgpKQorICAgICAgICAgICAgbV92aWV3SW1wbC0+Y2xpZW50KCktPmRpZEludmFsaWRhdGVSZWN0
KGRhbWFnZWRSZWN0KTsKKyAgICB9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIGlmICghbV9sYXllcikgeworICAgICAgICAg
ICAgbV9sYXllckNsaWVudCA9IE92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50SW1wbDo6Y3JlYXRl
KG1fdmlld0ltcGwsIG1fY2xpZW50KTsKKyAgICAgICAgICAgIG1fbGF5ZXIgPSBHcmFwaGljc0xh
eWVyOjpjcmVhdGUobV9sYXllckNsaWVudC5nZXQoKSk7CisgICAgICAgICAgICBtX2xheWVyLT5z
ZXROYW1lKCJXZWJWaWV3SW1wbCBwYWdlIG92ZXJsYXkgY29udGVudCIpOworICAgICAgICAgICAg
bV9sYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgICAgICAgICAgY29uc3QgV2ViU2l6
ZSYgc2l6ZSA9IG1fdmlld0ltcGwtPnNpemUoKTsKKyAgICAgICAgICAgIG1fbGF5ZXItPnNldFNp
emUoSW50U2l6ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCkpOworICAgICAgICB9CisgICAgICAg
IG1fdmlld0ltcGwtPnNldE92ZXJsYXlMYXllcihtX2xheWVyLmdldCgpKTsKKyAgICAgICAgbV9s
YXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fbGF5
ZXIpCisgICAgICAgICAgICBtX2xheWVyLT5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgIG1f
bGF5ZXIgPSBudWxscHRyOworICAgICAgICBtX2xheWVyQ2xpZW50ID0gbnVsbHB0cjsKKyAgICB9
CisjZW5kaWYKK30KKwordm9pZCBQYWdlT3ZlcmxheTo6cGFpbnRXZWJGcmFtZShHcmFwaGljc0Nv
bnRleHQmIGdjKQoreworICAgIGlmICghbV92aWV3SW1wbC0+aXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKCkpCisgICAgICAgIG1fY2xpZW50LT5wYWludFBhZ2VPdmVybGF5KGdjKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9QYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZU92
ZXJsYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZTA4NzY0ZjdlODYwMjkyNmU5NzliNzc5M2FkOGEwZGNkNGE0
NWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZU92
ZXJsYXkuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuCisgKiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGFnZU92
ZXJsYXlfaAorI2RlZmluZSBQYWdlT3ZlcmxheV9oCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgR3JhcGhpY3NMYXllcjsKK2NsYXNzIEdyYXBoaWNz
TGF5ZXJDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViVmlld0ltcGw7
CisKK2NsYXNzIFBhZ2VPdmVybGF5IHsKK3B1YmxpYzoKKyAgICBjbGFzcyBQYWdlT3ZlcmxheUNs
aWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQYWdlT3Zlcmxh
eShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSA9IDA7CisgICAgfTsKKworICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFBhZ2VPdmVybGF5PiBjcmVhdGUoV2ViVmlld0ltcGwqLCBQYWdlT3ZlcmxheUNs
aWVudCopOworCisgICAgflBhZ2VPdmVybGF5KCk7CisKKyAgICB2b2lkIHVwZGF0ZSgpOworICAg
IHZvaWQgcGFpbnRXZWJGcmFtZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKworcHJpdmF0
ZToKKyAgICBQYWdlT3ZlcmxheShXZWJWaWV3SW1wbCosIFBhZ2VPdmVybGF5Q2xpZW50Kik7Cisg
ICAgV2ViVmlld0ltcGwqIG1fdmlld0ltcGw7CisgICAgUGFnZU92ZXJsYXlDbGllbnQqIG1fY2xp
ZW50OworICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2xheWVyOworICAgIE93
blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50PiBtX2xheWVyQ2xpZW50OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQYWdlT3ZlcmxheV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5k
ZXggMzhhOGI4YmI4NmJkMGU3MDgwOWRmOWYwMjQxYzhmYzYwYTdmNjI2ZS4uMTNlYzcxZjY5OGZi
NTNmMThlYjdjNmZmOTBiMGM5YWYyZTYwODdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtMzQsMTIgKzM0LDE0IEBA
CiAjaW5jbHVkZSAiRGVidWdnZXJBZ2VudEltcGwuaCIKICNpbmNsdWRlICJEZWJ1Z2dlckFnZW50
TWFuYWdlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIK
ICNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKQEAgLTI3MSwyNCArMjczLDIyIEBA
IHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0
b3JDb250cm9sbGVyKikKIHsKIH0KIAorLy8gUGFnZU92ZXJsYXlDbGllbnQKK3ZvaWQgV2ViRGV2
VG9vbHNBZ2VudEltcGw6OnBhaW50UGFnZU92ZXJsYXkoR3JhcGhpY3NDb250ZXh0JiBnYykKK3sK
KyAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKTsKKyAg
ICBpZiAoaWMpCisgICAgICAgIGljLT5kcmF3Tm9kZUhpZ2hsaWdodChnYyk7Cit9CisKIHZvaWQg
V2ViRGV2VG9vbHNBZ2VudEltcGw6OmhpZ2hsaWdodChOb2RlKiBub2RlKQogewotICAgIC8vIElu
c3BlY3RvckNvbnRyb2xsZXIgZG9lcyB0aGUgYWN0dWFsbCB0cmFja2luZyBvZiB0aGUgaGlnaGxp
Z2h0ZWQgbm9kZQotICAgIC8vIGFuZCB0aGUgZHJhd2luZyBvZiB0aGUgaGlnaGxpZ2h0LiBIZXJl
IHdlIGp1c3QgbWFrZSBzdXJlIHRvIGludmFsaWRhdGUKLSAgICAvLyB0aGUgcmVjdHMgb2YgdGhl
IG9sZCBhbmQgbmV3IG5vZGVzLgotICAgIGhpZGVIaWdobGlnaHQoKTsKKyAgICBtX3dlYlZpZXdJ
bXBsLT5zZXRQYWdlT3ZlcmxheUNsaWVudCh0aGlzKTsKIH0KIAogdm9pZCBXZWJEZXZUb29sc0Fn
ZW50SW1wbDo6aGlkZUhpZ2hsaWdodCgpCiB7Ci0gICAgLy8gRklYTUU6IGFibGUgdG8gaW52YWxp
ZGF0ZSBhIHNtYWxsZXIgcmVjdC4KLSAgICAvLyBGSVhNRTogSXMgaXQgaW1wb3J0YW50IHRvIGp1
c3QgaW52YWxpZGF0ZSB0aGUgcmVjdCBvZiB0aGUgbm9kZSByZWdpb24KLSAgICAvLyBnaXZlbiB0
aGF0IHRoaXMgaXMgbm90IG9uIGEgY3JpdGljYWwgY29kZXBhdGg/ICBJbiBvcmRlciB0byBkbyBz
bywgd2UnZAotICAgIC8vIGhhdmUgdG8gdGFrZSBzY3JvbGxpbmcgaW50byBhY2NvdW50LgotICAg
IGNvbnN0IFdlYlNpemUmIHNpemUgPSBtX3dlYlZpZXdJbXBsLT5zaXplKCk7Ci0gICAgV2ViUmVj
dCBkYW1hZ2VkUmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCk7Ci0gICAgaWYgKG1f
d2ViVmlld0ltcGwtPmNsaWVudCgpKQotICAgICAgICBtX3dlYlZpZXdJbXBsLT5jbGllbnQoKS0+
ZGlkSW52YWxpZGF0ZVJlY3QoZGFtYWdlZFJlY3QpOworICAgIG1fd2ViVmlld0ltcGwtPnNldFBh
Z2VPdmVybGF5Q2xpZW50KDApOwogfQogCiBib29sIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggN2MxYTkzZGI5
NjUyZDBiMjUwZTc1NmM2NGY5MzUzNGY3Mjk1ZTMyNy4uNjUxOTVhYjkzZGU0MDhmOGQxOTk2ZWJj
Njg3YzFlOWQ2Zjk3N2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJJbnNw
ZWN0b3JDbGllbnQuaCIKIAorI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiV2Vi
RGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00
MSw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEZyYW1lOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50Owog
Y2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIE5vZGU7CkBAIC02MCw3ICs2Miw4IEBA
IHN0cnVjdCBXZWJVUkxFcnJvcjsKIHN0cnVjdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhOwogCiBj
bGFzcyBXZWJEZXZUb29sc0FnZW50SW1wbCA6IHB1YmxpYyBXZWJEZXZUb29sc0FnZW50UHJpdmF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBQYWdl
T3ZlcmxheTo6UGFnZU92ZXJsYXlDbGllbnQgewogcHVibGljOgogICAgIFdlYkRldlRvb2xzQWdl
bnRJbXBsKFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCog
Y2xpZW50KTsKICAgICB2aXJ0dWFsIH5XZWJEZXZUb29sc0FnZW50SW1wbCgpOwpAQCAtOTAsNiAr
OTMsOSBAQCBwdWJsaWM6CiAKICAgICBpbnQgaG9zdElkKCkgeyByZXR1cm4gbV9ob3N0SWQ7IH0K
IAorICAgIC8vIFBhZ2VPdmVybGF5Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIHBhaW50UGFnZU92
ZXJsYXkoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisKIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcigpOwogICAgIFdlYkNv
cmU6OkZyYW1lKiBtYWluRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCmluZGV4IDE5ZDhjNzEzMTVlNTVlMzA4ZGY4Yjk3NzFkZTI3ZTY4OTk0NTc4
YzkuLmYwN2U3M2M3YzlhYzEzN2E4Mzk2MGYxZWU4ODFhNTZlOTIxOGNkM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBA
CiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJw
YWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUGVyZm9ybWFuY2Uu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgpAQCAtMjAyMSw3ICsyMDIyLDggQEAgdm9p
ZCBXZWJGcmFtZUltcGw6OnBhaW50V2l0aENvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBnYywgY29u
c3QgV2ViUmVjdCYgcmVjdCkKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZVZp
ZXcoKSkgewogICAgICAgICBnYy5jbGlwKGRpcnR5UmVjdCk7CiAgICAgICAgIGZyYW1lVmlldygp
LT5wYWludCgmZ2MsIGRpcnR5UmVjdCk7Ci0gICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5kcmF3Tm9kZUhpZ2hsaWdodChnYyk7CisgICAgICAgIGlmICh2aWV3
SW1wbCgpLT5wYWdlT3ZlcmxheSgpKQorICAgICAgICAgICAgdmlld0ltcGwoKS0+cGFnZU92ZXJs
YXkoKS0+cGFpbnRXZWJGcmFtZShnYyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGdjLmZpbGxSZWN0
KGRpcnR5UmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBnYy5y
ZXN0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggN2M4OWE3Mzg0MWRmOWNiZjk4MmQ2NDYxNzIwYWQ2YzQ2YTRlNDZkMC4uNzljNTkwOWU3MTAx
MTMwOTBjMzNkODAyZWE0YzFhOGUyYTIzYzkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzI5LDYgKzMyOSw3IEBAIFdlYlZpZXdJbXBsOjpXZWJW
aWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2RyYWdTY3JvbGxUaW1lcihh
ZG9wdFB0cihuZXcgRHJhZ1Njcm9sbFRpbWVyKSkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAgICAgLCBtX2xheWVyUmVuZGVyZXIoMCkKKyAgICAsIG1fcm9vdEdyYXBoaWNzTGF5
ZXIoMCkKICAgICAsIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGZhbHNlKQogICAg
ICwgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQoZmFsc2UpCiAgICAgLCBtX3JlY3JlYXRpbmdH
cmFwaGljc0NvbnRleHQoZmFsc2UpCkBAIC0yMjk1LDYgKzIyOTYsMjggQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2V0SWdub3JlSW5wdXRFdmVudHMoYm9vbCBuZXdWYWx1ZSkKICAgICBtX2lnbm9yZUlu
cHV0RXZlbnRzID0gbmV3VmFsdWU7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFBhZ2VPdmVy
bGF5Q2xpZW50KFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUNsaWVudCogcGFnZU92ZXJsYXlDbGll
bnQpCit7CisgICAgaWYgKHBhZ2VPdmVybGF5Q2xpZW50KSB7CisgICAgICAgIG1fcGFnZU92ZXJs
YXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKHRoaXMsIHBhZ2VPdmVybGF5Q2xpZW50KTsKKyAgICAg
ICAgbV9wYWdlT3ZlcmxheS0+dXBkYXRlKCk7CisgICAgICAgIHNldFJvb3RMYXllck5lZWRzRGlz
cGxheSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX3BhZ2VPdmVybGF5KSB7CisgICAg
ICAgICAgICBtX3BhZ2VPdmVybGF5ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHNldFJvb3RMYXll
ck5lZWRzRGlzcGxheSgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFdlYlZpZXdJbXBs
OjpzZXRPdmVybGF5TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAg
aWYgKG1fcm9vdEdyYXBoaWNzTGF5ZXIpIHsKKyAgICAgICAgaWYgKGxheWVyLT5wYXJlbnQoKSAh
PSBtX3Jvb3RHcmFwaGljc0xheWVyKQorICAgICAgICAgICAgbV9yb290R3JhcGhpY3NMYXllci0+
YWRkQ2hpbGQobGF5ZXIpOworICAgIH0KK30KKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQog
Tm90aWZpY2F0aW9uUHJlc2VudGVySW1wbCogV2ViVmlld0ltcGw6Om5vdGlmaWNhdGlvblByZXNl
bnRlckltcGwoKQogewpAQCAtMjM3Nyw3ICsyNDAwLDEzIEBAIGJvb2wgV2ViVmlld0ltcGw6OnBh
Z2VIYXNSVExTdHlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIChzdHlsZS0+ZGlyZWN0aW9uKCkgPT0g
UlRMKTsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoV2ViQ29y
ZTo6UGxhdGZvcm1MYXllciogbGF5ZXIpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhp
Y3NMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBtX3Jvb3RHcmFw
aGljc0xheWVyID0gbGF5ZXI7CisgICAgc2V0Um9vdFBsYXRmb3JtTGF5ZXIobGF5ZXIgPyBsYXll
ci0+cGxhdGZvcm1MYXllcigpIDogMCk7Cit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFJvb3RQ
bGF0Zm9ybUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqIGxheWVyKQogewogICAgIC8vIEZJ
WE1FOiBSVEwgc3R5bGUgbm90IHN1cHBvcnRlZCBieSB0aGUgY29tcG9zaXRvciB5ZXQuCiAgICAg
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGxheWVyICYmICFwYWdlSGFzUlRMU3R5
bGUoKSA/IHRydWUgOiBmYWxzZSk7CkBAIC0yNDgzLDYgKzI1MTIsOCBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKHRydWUp
OwogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSB0cnVlOwog
ICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmIChtX3BhZ2VPdmVybGF5KQorICAgICAgICAgICAgICAgIG1fcGFnZU92ZXJsYXktPnVw
ZGF0ZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0
ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoZmFsc2UpOwpAQCAtMjUxMSw2ICsyNTQyLDkgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6ZG9Db21wb3NpdGUoKQogICAgIGh1ZC0+c2V0U2hvd0ZQU0NvdW50ZXIo
c2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKSk7CiAgICAgaHVkLT5zZXRTaG93UGxhdGZvcm1M
YXllclRyZWUoc2V0dGluZ3MoKS0+c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCkpOwogCisgICAgaWYg
KG1fcGFnZU92ZXJsYXkpCisgICAgICAgIG1fcGFnZU92ZXJsYXktPnVwZGF0ZSgpOworCiAgICAg
bV9sYXllclJlbmRlcmVyLT51cGRhdGVBbmREcmF3TGF5ZXJzKCk7CiB9CiAKQEAgLTI1MzQsMTIg
KzI1NjgsMTQgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJlbmRlcmVyKCkKICAgICAg
ICAgLy8gaW1tZWRpYXRlbHkgb2J2aW91cyB0aGF0IEdyYXBoaWNzQ29udGV4dDNEIG9iamVjdCB3
aWxsIG5vdAogICAgICAgICAvLyBmdW5jdGlvbiBwcm9wZXJseSB1bnRpbCBpdHMgcmVzaGFwZSBt
ZXRob2QgaXMgY2FsbGVkLgogICAgICAgICBuZXdDb250ZXh0LT5yZXNoYXBlKHN0ZDo6bWF4KDEs
IG1fc2l6ZS53aWR0aCksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQpKTsKLSAgICAgICAgc2V0
Um9vdEdyYXBoaWNzTGF5ZXIobV9sYXllclJlbmRlcmVyLT5yb290TGF5ZXIoKSk7CisgICAgICAg
IHNldFJvb3RQbGF0Zm9ybUxheWVyKG1fbGF5ZXJSZW5kZXJlci0+cm9vdExheWVyKCkpOwogICAg
ICAgICAvLyBGb3JjZXMgVmlld0hvc3RNc2dfRGlkQWN0aXZhdGVBY2NlbGVyYXRlZENvbXBvc2l0
aW5nIHRvIGJlIHNlbnQgc28KICAgICAgICAgLy8gdGhhdCB0aGUgYnJvd3NlciBwcm9jZXNzIGNh
biByZWFjcXVpcmUgc3VyZmFjZXMuCiAgICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmcodHJ1ZSk7CisgICAgICAgIGlmIChtX3BhZ2VPdmVybGF5KQorICAg
ICAgICAgICAgbV9wYWdlT3ZlcmxheS0+dXBkYXRlKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHNl
dFJvb3RHcmFwaGljc0xheWVyKDApOworICAgICAgICBzZXRSb290UGxhdGZvcm1MYXllcigwKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRl
eCBmNTdhMzdhMmY1YmVkNmQ3MzdiMTM4MDBiOGYyMjRlZjFmZTY2MzZhLi42ZDg5N2RmODA5NzNk
OGRjMTBkN2QyMDAxMTg5MTBmZWI1ZWU5ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9u
UHJlc2VudGVySW1wbC5oIgorI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTIwNiw2ICsyMDcs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWdub3JlSW5wdXRFdmVudHMoYm9vbCBuZXdWYWx1
ZSk7CiAgICAgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUqIGRldlRvb2xzQWdlbnRQcml2YXRlKCkg
eyByZXR1cm4gbV9kZXZUb29sc0FnZW50LmdldCgpOyB9CiAKKyAgICBQYWdlT3ZlcmxheSogcGFn
ZU92ZXJsYXkoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VPdmVybGF5LmdldCgpOyB9CisgICAgdm9p
ZCBzZXRQYWdlT3ZlcmxheUNsaWVudChQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXlDbGllbnQqKTsK
KworICAgIHZvaWQgc2V0T3ZlcmxheUxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKwog
ICAgIGNvbnN0IFdlYlBvaW50JiBsYXN0TW91c2VEb3duUG9pbnQoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fbGFzdE1vdXNlRG93blBvaW50OwpAQCAtMzQ1LDcgKzM1MSw4IEBAIHB1
YmxpYzoKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgYm9vbCBhbGxvd3NB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CiAgICAgYm9vbCBwYWdlSGFzUlRMU3R5bGUoKSBjb25z
dDsKLSAgICB2b2lkIHNldFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIq
KTsKKyAgICB2b2lkIHNldFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KTsKKyAgICB2b2lkIHNldFJvb3RQbGF0Zm9ybUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIq
KTsKICAgICB2b2lkIHNldFJvb3RMYXllck5lZWRzRGlzcGxheSgpOwogICAgIHZvaWQgc2Nyb2xs
Um9vdExheWVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZvaWQgaW52YWxpZGF0ZVJvb3RMYXll
clJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpAQCAtNTA4LDYgKzUxNSw3IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyPiBtX3NlbGVjdFBvcHVwOwog
CiAgICAgT3duUHRyPFdlYkRldlRvb2xzQWdlbnRQcml2YXRlPiBtX2RldlRvb2xzQWdlbnQ7Cisg
ICAgT3duUHRyPFBhZ2VPdmVybGF5PiBtX3BhZ2VPdmVybGF5OwogCiAgICAgLy8gV2hldGhlciB0
aGUgd2VidmlldyBpcyByZW5kZXJpbmcgdHJhbnNwYXJlbnRseS4KICAgICBib29sIG1faXNUcmFu
c3BhcmVudDsKQEAgLTUzMyw2ICs1NDEsNyBAQCBwcml2YXRlOgogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcm9vdExheWVyU2Nyb2xsRGFt
YWdlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW0+IG1fbGF5ZXJS
ZW5kZXJlcjsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RHcmFwaGljc0xheWVy
OwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CiAgICAgYm9vbCBt
X2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZDsKICAgICAvLyBJZiB0cnVlLCB0aGUgZ3JhcGhpY3Mg
Y29udGV4dCBpcyBiZWluZyByZXN0b3JlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96815</attachid>
            <date>2011-06-10 16:00:26 -0700</date>
            <delta_ts>2011-06-10 17:39:23 -0700</delta_ts>
            <desc>patch with fixes</desc>
            <filename>bug-62149-20110611030024.patch</filename>
            <type>text/plain</type>
            <size>22198</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg1NTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
ZjZlMmE5NTk4MDBjNjI3OGU4ZWQwYjU0M2ViMDIxOThkZjE5YjIxNC4uN2I5NzljN2M4NDBlNjBl
YTZlYzM0ODI0MTg4NmIxYzEzNjA3MzhiNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAxMS0wNi0xMCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBbQ2hyb21pdW1dIERldlRvb2xzIGRvZXMgbm90IGhpZ2hsaWdodCBl
bGVtZW50cyB3aGVuIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIG9uLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjIxNDkKKworICAgICAgICBBZGRl
ZCBwYWdlIG92ZXJsYXkgZm9yIGluc3BlY3RvciBoaWdobGlnaHQgc3VwcG9ydC4KKworICAgICAg
ICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjphdHRhY2hSb290R3JhcGhpY3NMYXllcik6
CisgICAgICAgICogc3JjL1BhZ2VPdmVybGF5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlBhZ2VPdmVybGF5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6UGFn
ZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpPdmVybGF5R3JhcGhpY3NMYXllckNsaWVudElt
cGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50
SW1wbDo6fk92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6
Ok92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50SW1wbDo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCk6
CisgICAgICAgIChXZWJLaXQ6Ok92ZXJsYXlHcmFwaGljc0xheWVyQ2xpZW50SW1wbDo6bm90aWZ5
U3luY1JlcXVpcmVkKToKKyAgICAgICAgKFdlYktpdDo6T3ZlcmxheUdyYXBoaWNzTGF5ZXJDbGll
bnRJbXBsOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6T3ZlcmxheUdyYXBoaWNz
TGF5ZXJDbGllbnRJbXBsOjpzaG93RGVidWdCb3JkZXJzKToKKyAgICAgICAgKFdlYktpdDo6T3Zl
cmxheUdyYXBoaWNzTGF5ZXJDbGllbnRJbXBsOjpzaG93UmVwYWludENvdW50ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpPdmVybGF5R3JhcGhpY3NMYXllckNsaWVudEltcGw6Ok92ZXJsYXlHcmFwaGlj
c0xheWVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpjbGVhcik6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlT3ZlcmxheTo6cGFpbnRXZWJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVy
bGF5OjppbnZhbGlkYXRlV2ViRnJhbWUpOgorICAgICAgICAqIHNyYy9QYWdlT3ZlcmxheS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6On5QYWdlT3ZlcmxheSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpzZXRDbGllbnQpOgorICAgICAgICAqIHNyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJ
bXBsOjpwYWludFBhZ2VPdmVybGF5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2Vu
dEltcGw6OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBs
OjpoaWRlSGlnaGxpZ2h0KToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaDoK
KyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVJbXBsOjpwYWludFdpdGhDb250ZXh0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UGFnZU92ZXJsYXlDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0T3ZlcmxheUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFJvb3RQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpkb0NvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpyZWFsbG9jYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGFnZU92ZXJsYXkpOgorCiAyMDExLTA2LTEwICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGxlZCBERVBTLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDk4ODQ0NTNjNjNkODkyNDNiZjliMmYxNDVj
NmNlMmU1ZmMyZjZhZDUuLjQwMDkyMmE0YjYyNmM4MmZlZWYwZmViOTNhMWM1ZWFkOGM4ZjlmMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM5Myw2ICszOTMsOCBAQAogICAgICAg
ICAgICAgICAgICdzcmMvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL05vdGlmaWNhdGlvblByZXNlbnRlckltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL3BhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9QYWdlT3ZlcmxheS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvUGFnZU92ZXJs
YXkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA2OWZiNTIzNmVl
NWE3YzdmMDQ5YzU0YTU3NjcyYjg1MzI4NzI1OWEzLi5mNGUzYTA1MTM1ZjFjZDEwNGUxZThhNGYz
N2FjOGJiMWI1M2U2MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1w
bDo6Y2FuY2VsR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdEZvckZyYW1lKEZyYW1lKiBmcmFt
ZSwKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIENocm9tZUNsaWVudElt
cGw6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NMYXllciog
Z3JhcGhpY3NMYXllcikKIHsKLSAgICBtX3dlYlZpZXctPnNldFJvb3RHcmFwaGljc0xheWVyKGdy
YXBoaWNzTGF5ZXIgPyBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwKTsKKyAgICBt
X3dlYlZpZXctPnNldFJvb3RHcmFwaGljc0xheWVyKGdyYXBoaWNzTGF5ZXIpOwogfQogCiB2b2lk
IENocm9tZUNsaWVudEltcGw6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZU92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUGFnZU92ZXJsYXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YTI3ZmI1
MmNhN2MwYTJmMzk2YWE2MTU1YTNiMzMwZjNjMjY2YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlT3ZlcmxheS5jcHAKQEAgLTAsMCArMSwxNDggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgR09PR0xFIElOQy4KKyAqIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VPdmVy
bGF5LmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNsaWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25Q
dHI8UGFnZU92ZXJsYXk+IFBhZ2VPdmVybGF5OjpjcmVhdGUoV2ViVmlld0ltcGwqIHZpZXdJbXBs
LCBQYWdlT3ZlcmxheUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
UGFnZU92ZXJsYXkodmlld0ltcGwsIGNsaWVudCkpOworfQorCitQYWdlT3ZlcmxheTo6UGFnZU92
ZXJsYXkoV2ViVmlld0ltcGwqIHZpZXdJbXBsLCBQYWdlT3ZlcmxheUNsaWVudCogY2xpZW50KQor
ICAgIDogbV92aWV3SW1wbCh2aWV3SW1wbCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKK3sKK30K
KworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK2NsYXNzIE92ZXJsYXlHcmFwaGlj
c0xheWVyQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxPdmVybGF5R3JhcGhpY3NMYXllckNsaWVu
dEltcGwqPiBjcmVhdGUoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBQYWdlT3ZlcmxheTo6UGFn
ZU92ZXJsYXlDbGllbnQqIHBhZ2VPdmVybGF5Q2xpZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBPdmVybGF5R3JhcGhpY3NMYXllckNsaWVudEltcGwod2ViVmlld0ltcGws
IHBhZ2VPdmVybGF5Q2xpZW50KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+T3ZlcmxheUdyYXBo
aWNzTGF5ZXJDbGllbnRJbXBsKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0
aW9uU3RhcnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29u
c3QgSW50UmVjdCYgaW5DbGlwKQorICAgIHsKKyAgICAgICAgbV9wYWdlT3ZlcmxheUNsaWVudC0+
cGFpbnRQYWdlT3ZlcmxheShjb250ZXh0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
d0RlYnVnQm9yZGVycygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV93ZWJWaWV3SW1w
bC0+cGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCk7CisgICAgfQorCisgICAg
dmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV93ZWJWaWV3SW1wbC0+cGFnZSgpLT5zZXR0aW5ncygpLT5zaG93UmVwYWludENvdW50
ZXIoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgT3ZlcmxheUdyYXBoaWNzTGF5
ZXJDbGllbnRJbXBsKFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCwgUGFnZU92ZXJsYXk6OlBhZ2VP
dmVybGF5Q2xpZW50KiBwYWdlT3ZlcmxheUNsaWVudCkKKyAgICAgICAgOiBtX3BhZ2VPdmVybGF5
Q2xpZW50KHBhZ2VPdmVybGF5Q2xpZW50KQorICAgICAgICAsIG1fd2ViVmlld0ltcGwod2ViVmll
d0ltcGwpCisgICAgeworICAgIH0KKworICAgIFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUNsaWVu
dCogbV9wYWdlT3ZlcmxheUNsaWVudDsKKyAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsK
K307CisjZW5kaWYKKwordm9pZCBQYWdlT3ZlcmxheTo6Y2xlYXIoKQoreworICAgIGludmFsaWRh
dGVXZWJGcmFtZSgpOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlm
IChtX2xheWVyKSB7CisgICAgICAgIG1fbGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKKyAgICAg
ICAgbV9sYXllciA9IG51bGxwdHI7CisgICAgICAgIG1fbGF5ZXJDbGllbnQgPSBudWxscHRyOwor
ICAgIH0KKyNlbmRpZgorfQorCit2b2lkIFBhZ2VPdmVybGF5Ojp1cGRhdGUoKQoreworICAgIGlu
dmFsaWRhdGVXZWJGcmFtZSgpOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgIGlmICghbV9sYXllcikgeworICAgICAgICBtX2xheWVyQ2xpZW50ID0gT3ZlcmxheUdyYXBo
aWNzTGF5ZXJDbGllbnRJbXBsOjpjcmVhdGUobV92aWV3SW1wbCwgbV9jbGllbnQpOworICAgICAg
ICBtX2xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG1fbGF5ZXJDbGllbnQuZ2V0KCkpOwor
ICAgICAgICBtX2xheWVyLT5zZXROYW1lKCJXZWJWaWV3SW1wbCBwYWdlIG92ZXJsYXkgY29udGVu
dCIpOworICAgICAgICBtX2xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgICAgIGNv
bnN0IFdlYlNpemUmIHNpemUgPSBtX3ZpZXdJbXBsLT5zaXplKCk7CisgICAgICAgIG1fbGF5ZXIt
PnNldFNpemUoSW50U2l6ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCkpOworICAgIH0KKyAgICBt
X3ZpZXdJbXBsLT5zZXRPdmVybGF5TGF5ZXIobV9sYXllci5nZXQoKSk7CisgICAgbV9sYXllci0+
c2V0TmVlZHNEaXNwbGF5KCk7CisjZW5kaWYKK30KKwordm9pZCBQYWdlT3ZlcmxheTo6cGFpbnRX
ZWJGcmFtZShHcmFwaGljc0NvbnRleHQmIGdjKQoreworICAgIGlmICghbV92aWV3SW1wbC0+aXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpCisgICAgICAgIG1fY2xpZW50LT5wYWludFBh
Z2VPdmVybGF5KGdjKTsKK30KKwordm9pZCBQYWdlT3ZlcmxheTo6aW52YWxpZGF0ZVdlYkZyYW1l
KCkKK3sKKyAgICAvLyBQYWdlT3ZlcmxheUNsaWVudCBkb2VzIHRoZSBhY3R1YWwgcGFpbnRpbmcg
b2YgdGhlIG92ZXJsYXkuCisgICAgLy8gSGVyZSB3ZSBqdXN0IG1ha2Ugc3VyZSB0byBpbnZhbGlk
YXRlLgorICAgIGlmICghbV92aWV3SW1wbC0+aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KCkpIHsKKyAgICAgICAgLy8gRklYTUU6IGFibGUgdG8gaW52YWxpZGF0ZSBhIHNtYWxsZXIgcmVj
dC4KKyAgICAgICAgLy8gRklYTUU6IElzIGl0IGltcG9ydGFudCB0byBqdXN0IGludmFsaWRhdGUg
YSBzbWFsbGVyIHJlY3QgZ2l2ZW4gdGhhdAorICAgICAgICAvLyB0aGlzIGlzIG5vdCBvbiBhIGNy
aXRpY2FsIGNvZGVwYXRoPyBJbiBvcmRlciB0byBkbyBzbywgd2UnZAorICAgICAgICAvLyBoYXZl
IHRvIHRha2Ugc2Nyb2xsaW5nIGludG8gYWNjb3VudC4KKyAgICAgICAgY29uc3QgV2ViU2l6ZSYg
c2l6ZSA9IG1fdmlld0ltcGwtPnNpemUoKTsKKyAgICAgICAgV2ViUmVjdCBkYW1hZ2VkUmVjdCgw
LCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCk7CisgICAgICAgIGlmIChtX3ZpZXdJbXBsLT5j
bGllbnQoKSkKKyAgICAgICAgICAgIG1fdmlld0ltcGwtPmNsaWVudCgpLT5kaWRJbnZhbGlkYXRl
UmVjdChkYW1hZ2VkUmVjdCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BhZ2VPdmVybGF5LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlT3ZlcmxheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1YmVmM2Ey
NDBhNzllZjVkM2E5OWY1ODhiNTM4ZGRmOWYyNzE4NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QYWdlT3ZlcmxheS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
R09PR0xFIElOQy4KKyAqIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlT3ZlcmxheV9oCisjZGVmaW5lIFBhZ2VPdmVybGF5
X2gKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBH
cmFwaGljc0xheWVyOworY2xhc3MgR3JhcGhpY3NMYXllckNsaWVudDsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJWaWV3SW1wbDsKKworY2xhc3MgUGFnZU92ZXJsYXkgeworcHVi
bGljOgorICAgIGNsYXNzIFBhZ2VPdmVybGF5Q2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludFBhZ2VPdmVybGF5KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYp
ID0gMDsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZU92ZXJsYXk+IGNyZWF0
ZShXZWJWaWV3SW1wbCosIFBhZ2VPdmVybGF5Q2xpZW50Kik7CisKKyAgICB+UGFnZU92ZXJsYXko
KSB7IH0KKworICAgIHZvaWQgc2V0Q2xpZW50KFBhZ2VPdmVybGF5Q2xpZW50KiBjbGllbnQpIHsg
bV9jbGllbnQgPSBjbGllbnQ7IH0KKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIHVwZGF0
ZSgpOworICAgIHZvaWQgcGFpbnRXZWJGcmFtZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsK
KworcHJpdmF0ZToKKyAgICBQYWdlT3ZlcmxheShXZWJWaWV3SW1wbCosIFBhZ2VPdmVybGF5Q2xp
ZW50Kik7CisgICAgdm9pZCBpbnZhbGlkYXRlV2ViRnJhbWUoKTsKKworICAgIFdlYlZpZXdJbXBs
KiBtX3ZpZXdJbXBsOworICAgIFBhZ2VPdmVybGF5Q2xpZW50KiBtX2NsaWVudDsKKyAgICBPd25Q
dHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9sYXllcjsKKyAgICBPd25QdHI8V2ViQ29yZTo6
R3JhcGhpY3NMYXllckNsaWVudD4gbV9sYXllckNsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gUGFnZU92ZXJsYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4IDM4YThiOGJiODZi
ZDBlNzA4MDlkZjlmMDI0MWM4ZmM2MGE3ZjYyNmUuLjEzZWM3MWY2OThmYjUzZjE4ZWI3YzZmZjkw
YjBjOWFmMmU2MDg3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRldlRvb2xzQWdlbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1ZGUgIkRl
YnVnZ2VyQWdlbnRJbXBsLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJBZ2VudE1hbmFnZXIuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiUGFn
ZVNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCkBAIC0yNzEsMjQgKzI3MywyMiBAQCB2b2lkIFdlYkRldlRv
b2xzQWdlbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciop
CiB7CiB9CiAKKy8vIFBhZ2VPdmVybGF5Q2xpZW50Cit2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBs
OjpwYWludFBhZ2VPdmVybGF5KEdyYXBoaWNzQ29udGV4dCYgZ2MpCit7CisgICAgSW5zcGVjdG9y
Q29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgaWYgKGljKQorICAg
ICAgICBpYy0+ZHJhd05vZGVIaWdobGlnaHQoZ2MpOworfQorCiB2b2lkIFdlYkRldlRvb2xzQWdl
bnRJbXBsOjpoaWdobGlnaHQoTm9kZSogbm9kZSkKIHsKLSAgICAvLyBJbnNwZWN0b3JDb250cm9s
bGVyIGRvZXMgdGhlIGFjdHVhbGwgdHJhY2tpbmcgb2YgdGhlIGhpZ2hsaWdodGVkIG5vZGUKLSAg
ICAvLyBhbmQgdGhlIGRyYXdpbmcgb2YgdGhlIGhpZ2hsaWdodC4gSGVyZSB3ZSBqdXN0IG1ha2Ug
c3VyZSB0byBpbnZhbGlkYXRlCi0gICAgLy8gdGhlIHJlY3RzIG9mIHRoZSBvbGQgYW5kIG5ldyBu
b2Rlcy4KLSAgICBoaWRlSGlnaGxpZ2h0KCk7CisgICAgbV93ZWJWaWV3SW1wbC0+c2V0UGFnZU92
ZXJsYXlDbGllbnQodGhpcyk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmhpZGVI
aWdobGlnaHQoKQogewotICAgIC8vIEZJWE1FOiBhYmxlIHRvIGludmFsaWRhdGUgYSBzbWFsbGVy
IHJlY3QuCi0gICAgLy8gRklYTUU6IElzIGl0IGltcG9ydGFudCB0byBqdXN0IGludmFsaWRhdGUg
dGhlIHJlY3Qgb2YgdGhlIG5vZGUgcmVnaW9uCi0gICAgLy8gZ2l2ZW4gdGhhdCB0aGlzIGlzIG5v
dCBvbiBhIGNyaXRpY2FsIGNvZGVwYXRoPyAgSW4gb3JkZXIgdG8gZG8gc28sIHdlJ2QKLSAgICAv
LyBoYXZlIHRvIHRha2Ugc2Nyb2xsaW5nIGludG8gYWNjb3VudC4KLSAgICBjb25zdCBXZWJTaXpl
JiBzaXplID0gbV93ZWJWaWV3SW1wbC0+c2l6ZSgpOwotICAgIFdlYlJlY3QgZGFtYWdlZFJlY3Qo
MCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwotICAgIGlmIChtX3dlYlZpZXdJbXBsLT5j
bGllbnQoKSkKLSAgICAgICAgbV93ZWJWaWV3SW1wbC0+Y2xpZW50KCktPmRpZEludmFsaWRhdGVS
ZWN0KGRhbWFnZWRSZWN0KTsKKyAgICBtX3dlYlZpZXdJbXBsLT5zZXRQYWdlT3ZlcmxheUNsaWVu
dCgwKTsKIH0KIAogYm9vbCBXZWJEZXZUb29sc0FnZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4IDdjMWE5M2RiOTY1MmQwYjI1MGU3NTZj
NjRmOTM1MzRmNzI5NWUzMjcuLjY1MTk1YWI5M2RlNDA4ZjhkMTk5NmViYzY4N2MxZTlkNmY5Nzdl
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdl
bnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50Lmgi
CiAKKyNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQ
cml2YXRlLmgiCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDEsNiArNDIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKK2NsYXNz
IEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rv
ckNvbnRyb2xsZXI7CiBjbGFzcyBOb2RlOwpAQCAtNjAsNyArNjIsOCBAQCBzdHJ1Y3QgV2ViVVJM
RXJyb3I7CiBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIAogY2xhc3MgV2ViRGV2VG9v
bHNBZ2VudEltcGwgOiBwdWJsaWMgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgUGFnZU92ZXJsYXk6OlBhZ2VP
dmVybGF5Q2xpZW50IHsKIHB1YmxpYzoKICAgICBXZWJEZXZUb29sc0FnZW50SW1wbChXZWJWaWV3
SW1wbCogd2ViVmlld0ltcGwsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGNsaWVudCk7CiAgICAg
dmlydHVhbCB+V2ViRGV2VG9vbHNBZ2VudEltcGwoKTsKQEAgLTkwLDYgKzkzLDkgQEAgcHVibGlj
OgogCiAgICAgaW50IGhvc3RJZCgpIHsgcmV0dXJuIG1faG9zdElkOyB9CiAKKyAgICAvLyBQYWdl
T3ZlcmxheUNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBwYWludFBhZ2VPdmVybGF5KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYpOworCiBwcml2YXRlOgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKTsKICAgICBXZWJDb3JlOjpGcmFtZSogbWFp
bkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApp
bmRleCAxOWQ4YzcxMzE1ZTU1ZTMwOGRmOGI5NzcxZGUyN2U2ODk5NDU3OGM5Li5mMDdlNzNjN2M5
YWMxMzdhODM5NjBmMWVlODgxYTU2ZTkyMThjZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTEwNCw2ICsxMDQsNyBAQAogI2luY2x1ZGUgIklj
b25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAicGFpbnRpbmcvR3JhcGhp
Y3NDb250ZXh0QnVpbGRlci5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1CcmlkZ2UuaCIKQEAgLTIwMjEsNyArMjAyMiw4IEBAIHZvaWQgV2ViRnJhbWVJbXBs
OjpwYWludFdpdGhDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ2MsIGNvbnN0IFdlYlJlY3QmIHJl
Y3QpCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWVWaWV3KCkpIHsKICAgICAg
ICAgZ2MuY2xpcChkaXJ0eVJlY3QpOwogICAgICAgICBmcmFtZVZpZXcoKS0+cGFpbnQoJmdjLCBk
aXJ0eVJlY3QpOwotICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+ZHJhd05vZGVIaWdobGlnaHQoZ2MpOworICAgICAgICBpZiAodmlld0ltcGwoKS0+cGFnZU92
ZXJsYXkoKSkKKyAgICAgICAgICAgIHZpZXdJbXBsKCktPnBhZ2VPdmVybGF5KCktPnBhaW50V2Vi
RnJhbWUoZ2MpOwogICAgIH0gZWxzZQogICAgICAgICBnYy5maWxsUmVjdChkaXJ0eVJlY3QsIENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgZ2MucmVzdG9yZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDU4ODhhZjJkM2Y1
MjZlM2FhYWFhZTdlMmE5Yjc1MjIwZDE4NDlhYzkuLjY4YTQ4ZDJkNjJjYmM4NDhkZGQ0MjMzZTk1
MzM5NDcyN2QzOTdlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKQEAgLTMyOSw2ICszMjksNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmll
d0NsaWVudCogY2xpZW50KQogICAgICwgbV9kcmFnU2Nyb2xsVGltZXIoYWRvcHRQdHIobmV3IERy
YWdTY3JvbGxUaW1lcikpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICwg
bV9sYXllclJlbmRlcmVyKDApCisgICAgLCBtX3Jvb3RHcmFwaGljc0xheWVyKDApCiAgICAgLCBt
X2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShmYWxzZSkKICAgICAsIG1fY29tcG9zaXRv
ckNyZWF0aW9uRmFpbGVkKGZhbHNlKQogICAgICwgbV9yZWNyZWF0aW5nR3JhcGhpY3NDb250ZXh0
KGZhbHNlKQpAQCAtMjI5MCw2ICsyMjkxLDMyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElnbm9y
ZUlucHV0RXZlbnRzKGJvb2wgbmV3VmFsdWUpCiAgICAgbV9pZ25vcmVJbnB1dEV2ZW50cyA9IG5l
d1ZhbHVlOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlT3ZlcmxheUNsaWVudChQYWdl
T3ZlcmxheTo6UGFnZU92ZXJsYXlDbGllbnQqIHBhZ2VPdmVybGF5Q2xpZW50KQoreworICAgIGlm
IChwYWdlT3ZlcmxheUNsaWVudCkgeworICAgICAgICBpZiAoIW1fcGFnZU92ZXJsYXkpCisgICAg
ICAgICAgICBtX3BhZ2VPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSh0aGlzLCBwYWdlT3Zl
cmxheUNsaWVudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcGFnZU92ZXJsYXktPnNl
dENsaWVudChwYWdlT3ZlcmxheUNsaWVudCk7CisgICAgICAgIG1fcGFnZU92ZXJsYXktPnVwZGF0
ZSgpOworICAgICAgICBzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAobV9wYWdlT3ZlcmxheSkgeworICAgICAgICAgICAgbV9wYWdlT3ZlcmxheS0+
Y2xlYXIoKTsKKyAgICAgICAgICAgIG1fcGFnZU92ZXJsYXkgPSBudWxscHRyOworICAgICAgICAg
ICAgc2V0Um9vdExheWVyTmVlZHNEaXNwbGF5KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgV2ViVmlld0ltcGw6OnNldE92ZXJsYXlMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBs
YXllcikKK3sKKyAgICBpZiAobV9yb290R3JhcGhpY3NMYXllcikgeworICAgICAgICBpZiAobGF5
ZXItPnBhcmVudCgpICE9IG1fcm9vdEdyYXBoaWNzTGF5ZXIpCisgICAgICAgICAgICBtX3Jvb3RH
cmFwaGljc0xheWVyLT5hZGRDaGlsZChsYXllcik7CisgICAgfQorfQorCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiBOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBsKiBXZWJWaWV3SW1wbDo6bm90
aWZpY2F0aW9uUHJlc2VudGVySW1wbCgpCiB7CkBAIC0yMzcyLDcgKzIzOTksMTMgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6cGFnZUhhc1JUTFN0eWxlKCkgY29uc3QKICAgICByZXR1cm4gKHN0eWxlLT5k
aXJlY3Rpb24oKSA9PSBSVEwpOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhp
Y3NMYXllcihXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKiBsYXllcikKK3ZvaWQgV2ViVmlld0ltcGw6
OnNldFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQorewor
ICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBsYXllcjsKKyAgICBzZXRSb290UGxhdGZvcm1MYXll
cihsYXllciA/IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwKTsKK30KKwordm9pZCBXZWJWaWV3
SW1wbDo6c2V0Um9vdFBsYXRmb3JtTGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1MYXllciogbGF5ZXIp
CiB7CiAgICAgc2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGxheWVyKTsKICAgICBp
ZiAobV9sYXllclJlbmRlcmVyKQpAQCAtMjQ3Nyw2ICsyNTEwLDggQEAgdm9pZCBXZWJWaWV3SW1w
bDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyh0cnVlKTsK
ICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0gdHJ1ZTsKICAg
ICAgICAgICAgIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkID0gZmFsc2U7CisgICAgICAgICAg
ICBpZiAobV9wYWdlT3ZlcmxheSkKKyAgICAgICAgICAgICAgICBtX3BhZ2VPdmVybGF5LT51cGRh
dGUoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKGZhbHNlKTsKQEAgLTI1MDUsNiArMjU0MCw5IEBAIHZvaWQg
V2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKCkKICAgICBodWQtPnNldFNob3dGUFNDb3VudGVyKHNl
dHRpbmdzKCktPnNob3dGUFNDb3VudGVyKCkpOwogICAgIGh1ZC0+c2V0U2hvd1BsYXRmb3JtTGF5
ZXJUcmVlKHNldHRpbmdzKCktPnNob3dQbGF0Zm9ybUxheWVyVHJlZSgpKTsKIAorICAgIGlmICht
X3BhZ2VPdmVybGF5KQorICAgICAgICBtX3BhZ2VPdmVybGF5LT51cGRhdGUoKTsKKwogICAgIG1f
bGF5ZXJSZW5kZXJlci0+dXBkYXRlQW5kRHJhd0xheWVycygpOwogfQogCkBAIC0yNTI4LDEyICsy
NTY2LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlYWxsb2NhdGVSZW5kZXJlcigpCiAgICAgICAg
IC8vIGltbWVkaWF0ZWx5IG9idmlvdXMgdGhhdCBHcmFwaGljc0NvbnRleHQzRCBvYmplY3Qgd2ls
bCBub3QKICAgICAgICAgLy8gZnVuY3Rpb24gcHJvcGVybHkgdW50aWwgaXRzIHJlc2hhcGUgbWV0
aG9kIGlzIGNhbGxlZC4KICAgICAgICAgbmV3Q29udGV4dC0+cmVzaGFwZShzdGQ6Om1heCgxLCBt
X3NpemUud2lkdGgpLCBzdGQ6Om1heCgxLCBtX3NpemUuaGVpZ2h0KSk7Ci0gICAgICAgIHNldFJv
b3RHcmFwaGljc0xheWVyKG1fbGF5ZXJSZW5kZXJlci0+cm9vdExheWVyKCkpOworICAgICAgICBz
ZXRSb290UGxhdGZvcm1MYXllcihtX2xheWVyUmVuZGVyZXItPnJvb3RMYXllcigpKTsKICAgICAg
ICAgLy8gRm9yY2VzIFZpZXdIb3N0TXNnX0RpZEFjdGl2YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZyB0byBiZSBzZW50IHNvCiAgICAgICAgIC8vIHRoYXQgdGhlIGJyb3dzZXIgcHJvY2VzcyBjYW4g
cmVhY3F1aXJlIHN1cmZhY2VzLgogICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVBY2NlbGVy
YXRlZENvbXBvc2l0aW5nKHRydWUpOworICAgICAgICBpZiAobV9wYWdlT3ZlcmxheSkKKyAgICAg
ICAgICAgIG1fcGFnZU92ZXJsYXktPnVwZGF0ZSgpOwogICAgIH0gZWxzZQotICAgICAgICBzZXRS
b290R3JhcGhpY3NMYXllcigwKTsKKyAgICAgICAgc2V0Um9vdFBsYXRmb3JtTGF5ZXIoMCk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXgg
ZjU3YTM3YTJmNWJlZDZkNzM3YjEzODAwYjhmMjI0ZWYxZmU2NjM2YS4uNmQ4OTdkZjgwOTczZDhk
YzEwZDdkMjAwMTE4OTEwZmViNWVlOWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBy
ZXNlbnRlckltcGwuaCIKKyNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0yMDYsNiArMjA3LDEx
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElnbm9yZUlucHV0RXZlbnRzKGJvb2wgbmV3VmFsdWUp
OwogICAgIFdlYkRldlRvb2xzQWdlbnRQcml2YXRlKiBkZXZUb29sc0FnZW50UHJpdmF0ZSgpIHsg
cmV0dXJuIG1fZGV2VG9vbHNBZ2VudC5nZXQoKTsgfQogCisgICAgUGFnZU92ZXJsYXkqIHBhZ2VP
dmVybGF5KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlT3ZlcmxheS5nZXQoKTsgfQorICAgIHZvaWQg
c2V0UGFnZU92ZXJsYXlDbGllbnQoUGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5Q2xpZW50Kik7CisK
KyAgICB2b2lkIHNldE92ZXJsYXlMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CisKICAg
ICBjb25zdCBXZWJQb2ludCYgbGFzdE1vdXNlRG93blBvaW50KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2xhc3RNb3VzZURvd25Qb2ludDsKQEAgLTM0NSw3ICszNTEsOCBAQCBwdWJs
aWM6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGJvb2wgYWxsb3dzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZygpOwogICAgIGJvb2wgcGFnZUhhc1JUTFN0eWxlKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKik7
CisgICAgdm9pZCBzZXRSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7
CisgICAgdm9pZCBzZXRSb290UGxhdGZvcm1MYXllcihXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKik7
CiAgICAgdm9pZCBzZXRSb290TGF5ZXJOZWVkc0Rpc3BsYXkoKTsKICAgICB2b2lkIHNjcm9sbFJv
b3RMYXllclJlY3QoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KTsKICAgICB2b2lkIGludmFsaWRhdGVSb290TGF5ZXJS
ZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKQEAgLTUwOCw2ICs1MTUsNyBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxXZWJDb3JlOjpQb3B1cENvbnRhaW5lcj4gbV9zZWxlY3RQb3B1cDsKIAog
ICAgIE93blB0cjxXZWJEZXZUb29sc0FnZW50UHJpdmF0ZT4gbV9kZXZUb29sc0FnZW50OworICAg
IE93blB0cjxQYWdlT3ZlcmxheT4gbV9wYWdlT3ZlcmxheTsKIAogICAgIC8vIFdoZXRoZXIgdGhl
IHdlYnZpZXcgaXMgcmVuZGVyaW5nIHRyYW5zcGFyZW50bHkuCiAgICAgYm9vbCBtX2lzVHJhbnNw
YXJlbnQ7CkBAIC01MzMsNiArNTQxLDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Jvb3RMYXllclNjcm9sbERhbWFn
ZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtPiBtX2xheWVyUmVu
ZGVyZXI7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV9yb290R3JhcGhpY3NMYXllcjsK
ICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlOwogICAgIGJvb2wgbV9j
b21wb3NpdG9yQ3JlYXRpb25GYWlsZWQ7CiAgICAgLy8gSWYgdHJ1ZSwgdGhlIGdyYXBoaWNzIGNv
bnRleHQgaXMgYmVpbmcgcmVzdG9yZWQuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>