<?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>97807</bug_id>
          
          <creation_ts>2012-09-27 11:45:49 -0700</creation_ts>
          <short_desc>[Chromium] Fix the find-in-page implementation for detaching frames.</short_desc>
          <delta_ts>2012-09-28 09:37:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Leandro Graciá Gil">leandrogracia</reporter>
          <assigned_to name="Leandro Graciá Gil">leandrogracia</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>729741</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-27 11:45:49 -0700</bug_when>
    <thetext>Our current find-in-page implementation is not properly tested against detaching frames, as bug 97688 proved to be the case. We should introduce proper test coverage, fix any crashes and ensure that a final reply is always sent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729747</commentid>
    <comment_count>1</comment_count>
      <attachid>166039</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-27 11:50:08 -0700</bug_when>
    <thetext>Created attachment 166039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729748</commentid>
    <comment_count>2</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-27 11:51:07 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=166039) [details]
&gt; Patch

Tested against Chromium&apos;s Find* browser_tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729754</commentid>
    <comment_count>3</comment_count>
      <attachid>166039</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 11:59:04 -0700</bug_when>
    <thetext>Comment on attachment 166039
Patch

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

This is great.  A few minor comments.  The main issue is that the unit tests should go through the API rather than manually poking at WebCore internals and potentially putting WebCore into an inconsistent state.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:581
&gt; +    virtual void willDetachPage()

willDetachPage should always occur before frameDestroyed, so m_webFrameImpl will always be non-0 here.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1658
&gt; +    // Detached frame case. Return no results.

We don&apos;t need this comment.  It just says what the code does, not why it does it.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1935
&gt; +    // Do nothing on detached frames.

ditto

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:2726
&gt; +    // Frame already detached.
&gt; +    if (!frame() || !frame()-&gt;page())
&gt; +        return;

Is this possible?  Also this comment is redundant.

&gt; Source/WebKit/chromium/src/WebFrameImpl.h:427
&gt; +    // Observes for any destruction / page detachment events that might occur
&gt; +    // to the WebCore frame.
&gt; +    OwnPtr&lt;FrameDestructionHelper&gt; m_frameDestructionHelper;

Why not just make WebFrameImpl inherit from FrameDestructionObserver?

&gt; Source/WebKit/chromium/src/WebFrameImpl.h:471
&gt; +    int m_findRequestIdentifier;

Should we initialize this value in the constructor?

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:1016
&gt; +    // Detach the frame before finding.
&gt; +    WebFrameImpl* secondFrame = static_cast&lt;WebFrameImpl*&gt;(mainFrame-&gt;traverseNext(false));
&gt; +    secondFrame-&gt;frame()-&gt;willDetachPage();
&gt; +    secondFrame-&gt;frame()-&gt;detachFromPage();

Rather than doing this manually, we should do this by manipulating the DOM via the API or via JavaScript.

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:1061
&gt; +    // Detach the frame between finding and scoping.
&gt; +    WebFrameImpl* secondFrame = static_cast&lt;WebFrameImpl*&gt;(mainFrame-&gt;traverseNext(false));
&gt; +    secondFrame-&gt;frame()-&gt;willDetachPage();
&gt; +    secondFrame-&gt;frame()-&gt;detachFromPage();

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729774</commentid>
    <comment_count>4</comment_count>
      <attachid>166044</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-27 12:36:41 -0700</bug_when>
    <thetext>Created attachment 166044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729775</commentid>
    <comment_count>5</comment_count>
      <attachid>166039</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-27 12:37:03 -0700</bug_when>
    <thetext>Comment on attachment 166039
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:581
&gt;&gt; +    virtual void willDetachPage()
&gt; 
&gt; willDetachPage should always occur before frameDestroyed, so m_webFrameImpl will always be non-0 here.

Fixed.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1658
&gt;&gt; +    // Detached frame case. Return no results.
&gt; 
&gt; We don&apos;t need this comment.  It just says what the code does, not why it does it.

Removed.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1935
&gt;&gt; +    // Do nothing on detached frames.
&gt; 
&gt; ditto

Removed.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:2726
&gt;&gt; +        return;
&gt; 
&gt; Is this possible?  Also this comment is redundant.

I was also expecting that willDetachPage would be called only once, but this is indeed being called again on detached frames during destruction.
Also comment removed.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.h:427
&gt;&gt; +    OwnPtr&lt;FrameDestructionHelper&gt; m_frameDestructionHelper;
&gt; 
&gt; Why not just make WebFrameImpl inherit from FrameDestructionObserver?

Done.

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.h:471
&gt;&gt; +    int m_findRequestIdentifier;
&gt; 
&gt; Should we initialize this value in the constructor?

Good point, I missed this. Thanks.

&gt;&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:1016
&gt;&gt; +    secondFrame-&gt;frame()-&gt;detachFromPage();
&gt; 
&gt; Rather than doing this manually, we should do this by manipulating the DOM via the API or via JavaScript.

I&apos;m open to suggestions. However, there is an important benefit of doing it this way: we can predict exactly when the willDetachPage method will be called and check all possible situations. Whatever the approach this is something we should keep.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729776</commentid>
    <comment_count>6</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-27 12:38:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=166044) [details]
&gt; Patch

Tested again against Chromium&apos;s Find* browser_tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729779</commentid>
    <comment_count>7</comment_count>
      <attachid>166044</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 12:44:30 -0700</bug_when>
    <thetext>Comment on attachment 166044
Patch

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

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:1016
&gt; +    WebFrameImpl* secondFrame = static_cast&lt;WebFrameImpl*&gt;(mainFrame-&gt;traverseNext(false));
&gt; +    secondFrame-&gt;frame()-&gt;willDetachPage();
&gt; +    secondFrame-&gt;frame()-&gt;detachFromPage();

I would add WebNode::remove to the API and then call:

mainFrame-&gt;document().getElementById(&quot;some_id_that_you_like&quot;).remove();

You might need to throw in a webkit_support::RunAllPendingMessages() but I don&apos;t think you need that anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729795</commentid>
    <comment_count>8</comment_count>
      <attachid>166044</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-27 13:14:56 -0700</bug_when>
    <thetext>Comment on attachment 166044
Patch

Attachment 166044 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14054031

New failing tests:
http/tests/workers/terminate-during-sync-operation.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729837</commentid>
    <comment_count>9</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-27 14:01:02 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 166044 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166044&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:1016
&gt; &gt; +    WebFrameImpl* secondFrame = static_cast&lt;WebFrameImpl*&gt;(mainFrame-&gt;traverseNext(false));
&gt; &gt; +    secondFrame-&gt;frame()-&gt;willDetachPage();
&gt; &gt; +    secondFrame-&gt;frame()-&gt;detachFromPage();
&gt; 
&gt; I would add WebNode::remove to the API and then call:
&gt; 
&gt; mainFrame-&gt;document().getElementById(&quot;some_id_that_you_like&quot;).remove();
&gt; 
&gt; You might need to throw in a webkit_support::RunAllPendingMessages() but I don&apos;t think you need that anymore.

Let&apos;s hope we don&apos;t need RunAllPendingMessages(), since that will trigger the scopeStringMatches operations and create issues for the cases where the frames are detached between the first call (the state reset) and the rest.

Is there any special considerations I should keep in mind in order to detach the main frame with that approach? In fact, how can I set an id for the main frame? The body, perhaps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729845</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 14:06:52 -0700</bug_when>
    <thetext>You won&apos;t be able to detach the main frame using this technique.  It&apos;s not clear to me whether you can actually detach the main frame in these scenarios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729859</commentid>
    <comment_count>11</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-27 14:23:31 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; You won&apos;t be able to detach the main frame using this technique.  It&apos;s not clear to me whether you can actually detach the main frame in these scenarios.

Should we limit the testing to the other frames with your suggested approach, then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729873</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-27 14:33:47 -0700</bug_when>
    <thetext>Yeah, that&apos;s probably the thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729874</commentid>
    <comment_count>13</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-27 14:34:40 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Yeah, that&apos;s probably the thing to do.

Ok. I&apos;ll upload a new patch tomorrow. Thanks for the feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730510</commentid>
    <comment_count>14</comment_count>
      <attachid>166213</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-28 05:01:53 -0700</bug_when>
    <thetext>Created attachment 166213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730516</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 05:04:07 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730707</commentid>
    <comment_count>16</comment_count>
      <attachid>166213</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-28 08:55:57 -0700</bug_when>
    <thetext>Comment on attachment 166213
Patch

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

Thanks for improving the test.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:2332
&gt; +    m_frame = frame;
&gt; +    observeFrame(m_frame);

m_frame is now almost redundant.  FrameDestructionObserver also has a m_frame pointer.  It might be worth adding a FIXME comment about removing m_frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730718</commentid>
    <comment_count>17</comment_count>
      <attachid>166263</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-28 09:06:03 -0700</bug_when>
    <thetext>Created attachment 166263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730720</commentid>
    <comment_count>18</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-09-28 09:07:06 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=166263) [details]
&gt; Patch

FIXME added to make sure we don&apos;t forget about this.  We should probably take a look again when rethinking the WebFrameImpl destruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730736</commentid>
    <comment_count>19</comment_count>
      <attachid>166263</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 09:37:54 -0700</bug_when>
    <thetext>Comment on attachment 166263
Patch

Clearing flags on attachment: 166263

Committed r129910: &lt;http://trac.webkit.org/changeset/129910&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730737</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-28 09:37:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166039</attachid>
            <date>2012-09-27 11:50:08 -0700</date>
            <delta_ts>2012-09-27 12:37:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97807-20120927194925.patch</filename>
            <type>text/plain</type>
            <size>21277</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDdmYTA0YTJlMGIyNmQzNTZmMTJlYjNhM2IxN2FjYWM0NzU4NjViNzAuLmQwNWFkMzdjNTBkNzUw
MTliZmM4MjgyODZiOGFhOWE1M2U4MDU3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMTItMDktMjcgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gRml4IHRoZSBmaW5kLWlu
LXBhZ2UgaW1wbGVtZW50YXRpb24gZm9yIGRldGFjaGluZyBmcmFtZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCBvZiA5NzY4OC4gSW50
cm9kdWNlcyBwcm9wZXIgdGVzdCBjb3ZlcmFnZSBmb3IgdGhlIGZpbmQtaW4tcGFnZQorICAgICAg
ICBmZWF0dXJlIGluIGRldGFjaGluZy9kZXRhY2hlZCBmcmFtZSBzaXR1YXRpb25zLCBmaXhpbmcg
YSBmZXcgY3Jhc2hlcyBhbmQKKyAgICAgICAgZW5zdXJpbmcgdGhhdCBhIGZpbmFsIHJlcGx5IGlz
IGFsd2F5cyBzZW50LgorCisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJGcmFtZUltcGw6OkZyYW1lRGVzdHJ1Y3Rpb25IZWxwZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUltcGw6OkZyYW1lRGVzdHJ1Y3Rpb25IZWxwZXI6OkZyYW1lRGVzdHJ1Y3Rpb25I
ZWxwZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OkZyYW1lRGVzdHJ1Y3Rpb25I
ZWxwZXI6On5GcmFtZURlc3RydWN0aW9uSGVscGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVJbXBsOjpGcmFtZURlc3RydWN0aW9uSGVscGVyOjpmcmFtZURlc3Ryb3llZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6RnJhbWVEZXN0cnVjdGlvbkhlbHBlcjo6d2lsbERldGFj
aFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZpbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUltcGw6OnNjb3BlU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lSW1wbDo6Zmx1c2hDdXJyZW50U2NvcGluZ0VmZm9ydCk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZpbmlzaEN1cnJlbnRTY29w
aW5nRWZmb3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpjYW5jZWxQZW5kaW5n
U2NvcGluZ0VmZm9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6V2ViRnJhbWVJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjppbml0aWFsaXplQXNNYWluRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNyZWF0ZUNoaWxkRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnNob3VsZFNjb3BlTWF0Y2hlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6d2lsbERldGFjaFBhZ2UpOgorICAgICAgICAqIHNy
Yy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKFdlYkZyYW1lSW1wbCk6CisgICAgICAgICogdGVz
dHMvV2ViRnJhbWVUZXN0LmNwcDoKKwogMjAxMi0wOS0yNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEyOTY3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmlu
ZGV4IDQ0ZjVlMTczZDE4NDA2YzA2OGQ3NWFhMzNlM2YwZmY5Zjg1ZDIxNWYuLjc4MTZhZTlhOTdi
MTA3ODc3ZWM3NmI2NmVmYTgwNmI1MjEyMWUyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtNTI3LDggKzUyNyw2IEBAIFdlYkZyYW1lSW1wbDo6
RmluZE1hdGNoOjpGaW5kTWF0Y2goUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2UsIGludCBvcmRpbmFs
KQogewogfQogCi0vLyBXZWJGcmFtZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIGNsYXNzIFdlYkZyYW1lSW1wbDo6
RGVmZXJyZWRTY29wZVN0cmluZ01hdGNoZXMgewogcHVibGljOgogICAgIERlZmVycmVkU2NvcGVT
dHJpbmdNYXRjaGVzKFdlYkZyYW1lSW1wbCogd2ViRnJhbWUsCkBAIC01NjEsNiArNTU5LDM4IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3Jlc2V0OwogfTsKIAorY2xhc3MgV2ViRnJhbWVJbXBsOjpG
cmFtZURlc3RydWN0aW9uSGVscGVyIDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRnJhbWVEZXN0cnVjdGlvbkhlbHBlcihX
ZWJGcmFtZUltcGwqIHdlYkZyYW1lSW1wbCkKKyAgICAgICAgOiBGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIod2ViRnJhbWVJbXBsLT5mcmFtZSgpKQorICAgICAgICAsIG1fd2ViRnJhbWVJbXBsKHdl
YkZyYW1lSW1wbCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+RnJhbWVEZXN0cnVjdGlv
bkhlbHBlcigpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBmcmFtZURlc3Ryb3ll
ZCgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogdGhpcyBjb3VsZCBiZSB1c2VkIHRvIGhhbmRs
ZSB0aGUgV2ViQ29yZSBGcmFtZSB2YWxpZGl0eS4gU2VlIGJlbG93LgorICAgICAgICBGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXI6OmZyYW1lRGVzdHJveWVkKCk7CisgICAgICAgIG1fd2ViRnJhbWVJ
bXBsID0gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFBhZ2UoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fd2ViRnJhbWVJbXBsKQorICAgICAgICAgICAgbV93ZWJGcmFtZUlt
cGwtPndpbGxEZXRhY2hQYWdlKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiB0
aGlzIGNvdWxkIGJlIHJlZmVyZW5jZS1jb3VudGVkIGFuZCBob2xkIFdlYkZyYW1lSW1wbCB3aGls
ZSB0aGUKKyAgICAvLyBXZWJDb3JlIEZyYW1lIGlzIHZhbGlkIGluc3RlYWQgb2YgaW52b2x2aW5n
IHRoZSBGcmFtZUxvYWRlci4gSXQgd291bGQKKyAgICAvLyBwcmV2ZW50IHJlcXVpcmluZyBtYW51
YWwgcmVmZXJlbmNlIGFkanVzdG1lbnQsIGFzIGl0IGNhbiBpbnZva2UKKyAgICAvLyBXZWJGcmFt
ZTo6Y2xvc2luZyBmcm9tIHRoZSBmcmFtZURlc3Ryb3llZCBjYWxsYmFjay4KKyAgICBXZWJGcmFt
ZUltcGwqIG1fd2ViRnJhbWVJbXBsOworfTsKIAogLy8gV2ViRnJhbWUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBA
IC0xNjI1LDYgKzE2NTUsMTQgQEAgYm9vbCBXZWJGcmFtZUltcGw6OmZpbmQoaW50IGlkZW50aWZp
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHdyYXBXaXRoaW5GcmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYlJlY3QqIHNlbGVjdGlvblJlY3QpCiB7CisgICAgLy8gRGV0
YWNoZWQgZnJhbWUgY2FzZS4gUmV0dXJuIG5vIHJlc3VsdHMuCisgICAgaWYgKCFmcmFtZSgpIHx8
ICFmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE5lZWQg
dG8ga2VlcCB0aGUgY3VycmVudCBpZGVudGlmaWVyIGxvY2FsbHkgaW4gb3JkZXIgdG8gZmluaXNo
IHRoZQorICAgIC8vIHJlcXVlc3QgaW4gY2FzZSB0aGUgZnJhbWUgaXMgZGV0YWNoZWQgZHVyaW5n
IHRoZSBwcm9jZXNzLgorICAgIG1fZmluZFJlcXVlc3RJZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
KwogICAgIFdlYkZyYW1lSW1wbCogbWFpbkZyYW1lSW1wbCA9IHZpZXdJbXBsKCktPm1haW5GcmFt
ZUltcGwoKTsKIAogICAgIGlmICghb3B0aW9ucy5maW5kTmV4dCkKQEAgLTE3MjMsMTIgKzE3NjEs
MTAgQEAgdm9pZCBXZWJGcmFtZUltcGw6OnNjb3BlU3RyaW5nTWF0Y2hlcyhpbnQgaWRlbnRpZmll
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViRmluZE9w
dGlvbnMmIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgcmVzZXQpCiB7Ci0gICAgV2ViRnJhbWVJbXBsKiBtYWluRnJhbWVJbXBsID0gdmlld0ltcGwo
KS0+bWFpbkZyYW1lSW1wbCgpOwotCiAgICAgaWYgKHJlc2V0KSB7CiAgICAgICAgIC8vIFRoaXMg
aXMgYSBicmFuZCBuZXcgc2VhcmNoLCBzbyB3ZSBuZWVkIHRvIHJlc2V0IGV2ZXJ5dGhpbmcuCiAg
ICAgICAgIC8vIFNjb3BpbmcgaXMganVzdCBhYm91dCB0byBiZWdpbi4KLSAgICAgICAgbV9zY29w
aW5nQ29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgbV9zY29waW5nSW5Qcm9ncmVzcyA9IHRydWU7
CiAKICAgICAgICAgLy8gQ2xlYXIgaGlnaGxpZ2h0aW5nIGZvciB0aGlzIGZyYW1lLgogICAgICAg
ICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkgJiYgZnJhbWUoKS0+ZWRpdG9yKCktPm1h
cmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkKQEAgLTE3NDMsNyArMTc3OSw5IEBAIHZv
aWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50IGlkZW50aWZpZXIsCiAKICAg
ICAgICAgbV9yZXN1bWVTY29waW5nRnJvbVJhbmdlID0gMDsKIAotICAgICAgICBtYWluRnJhbWVJ
bXBsLT5tX2ZyYW1lc1Njb3BpbmdDb3VudCsrOworICAgICAgICAvLyBUaGUgdmlldyBtaWdodCBi
ZSBudWxsIG9uIGRldGFjaGVkIGZyYW1lcy4KKyAgICAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUo
KS0+cGFnZSgpKQorICAgICAgICAgICAgdmlld0ltcGwoKS0+bWFpbkZyYW1lSW1wbCgpLT5tX2Zy
YW1lc1Njb3BpbmdDb3VudCsrOwogCiAgICAgICAgIC8vIE5vdywgZGVmZXIgc2NvcGluZyB1bnRp
bCBsYXRlciB0byBhbGxvdyBmaW5kIG9wZXJhdGlvbiB0byBmaW5pc2ggcXVpY2tseS4KICAgICAg
ICAgc2NvcGVTdHJpbmdNYXRjaGVzU29vbigKQEAgLTE3NjIsNiArMTgwMCw3IEBAIHZvaWQgV2Vi
RnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50IGlkZW50aWZpZXIsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZUltcGwgPSB2aWV3SW1w
bCgpLT5tYWluRnJhbWVJbXBsKCk7CiAgICAgUmVmUHRyPFJhbmdlPiBzZWFyY2hSYW5nZShyYW5n
ZU9mQ29udGVudHMoZnJhbWUoKS0+ZG9jdW1lbnQoKSkpOwogCiAgICAgTm9kZSogb3JpZ2luYWxF
bmRDb250YWluZXIgPSBzZWFyY2hSYW5nZS0+ZW5kQ29udGFpbmVyKCk7CkBAIC0xODkxLDIwICsx
OTMwLDMwIEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50IGlkZW50
aWZpZXIsCiAgICAgZmluaXNoQ3VycmVudFNjb3BpbmdFZmZvcnQoaWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgV2ViRnJhbWVJbXBsOjpmaW5pc2hDdXJyZW50U2NvcGluZ0VmZm9ydChpbnQgaWRlbnRp
ZmllcikKK3ZvaWQgV2ViRnJhbWVJbXBsOjpmbHVzaEN1cnJlbnRTY29waW5nRWZmb3J0KGludCBp
ZGVudGlmaWVyKQogeworICAgIC8vIERvIG5vdGhpbmcgb24gZGV0YWNoZWQgZnJhbWVzLgorICAg
IGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKICAg
ICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZUltcGwgPSB2aWV3SW1wbCgpLT5tYWluRnJhbWVJbXBs
KCk7CiAKICAgICAvLyBUaGlzIGZyYW1lIGhhcyBubyBmdXJ0aGVyIHNjb3BpbmcgbGVmdCwgc28g
aXQgaXMgZG9uZS4gT3RoZXIgZnJhbWVzIG1pZ2h0LAogICAgIC8vIG9mIGNvdXJzZSwgY29udGlu
dWUgdG8gc2NvcGUgbWF0Y2hlcy4KLSAgICBtX3Njb3BpbmdDb21wbGV0ZSA9IHRydWU7CiAgICAg
bWFpbkZyYW1lSW1wbC0+bV9mcmFtZXNTY29waW5nQ291bnQtLTsKLSAgICBtX2xhc3RGaW5kUmVx
dWVzdENvbXBsZXRlZFdpdGhOb01hdGNoZXMgPSAhbV9sYXN0TWF0Y2hDb3VudDsKIAogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGxhc3QgZnJhbWUgdG8gZmluaXNoIHNjb3Bpbmcgd2UgbmVlZCB0byB0
cmlnZ2VyIHRoZSBmaW5hbAogICAgIC8vIHVwZGF0ZSB0byBiZSBzZW50LgogICAgIGlmICghbWFp
bkZyYW1lSW1wbC0+bV9mcmFtZXNTY29waW5nQ291bnQpCiAgICAgICAgIG1haW5GcmFtZUltcGwt
PmluY3JlYXNlTWF0Y2hDb3VudCgwLCBpZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJGcmFtZUlt
cGw6OmZpbmlzaEN1cnJlbnRTY29waW5nRWZmb3J0KGludCBpZGVudGlmaWVyKQoreworICAgIGZs
dXNoQ3VycmVudFNjb3BpbmdFZmZvcnQoaWRlbnRpZmllcik7CisKKyAgICBtX3Njb3BpbmdJblBy
b2dyZXNzID0gZmFsc2U7CisgICAgbV9sYXN0RmluZFJlcXVlc3RDb21wbGV0ZWRXaXRoTm9NYXRj
aGVzID0gIW1fbGFzdE1hdGNoQ291bnQ7CiAKICAgICAvLyBUaGlzIGZyYW1lIGlzIGRvbmUsIHNv
IHNob3cgYW55IHNjcm9sbGJhciB0aWNrbWFya3Mgd2UgaGF2ZW4ndCBkcmF3biB5ZXQuCiAgICAg
aW52YWxpZGF0ZUFyZWEoSW52YWxpZGF0ZVNjcm9sbGJhcik7CkBAIC0xOTE3LDggKzE5NjYsMTEg
QEAgdm9pZCBXZWJGcmFtZUltcGw6OmNhbmNlbFBlbmRpbmdTY29waW5nRWZmb3J0KCkKIAogICAg
IG1fYWN0aXZlTWF0Y2hJbmRleEluQ3VycmVudEZyYW1lID0gLTE7CiAKLSAgICBpZiAoIW1fc2Nv
cGluZ0NvbXBsZXRlKQorICAgIC8vIExhc3QgcmVxdWVzdCBkaWRuJ3QgY29tcGxldGUuCisgICAg
aWYgKG1fc2NvcGluZ0luUHJvZ3Jlc3MpCiAgICAgICAgIG1fbGFzdEZpbmRSZXF1ZXN0Q29tcGxl
dGVkV2l0aE5vTWF0Y2hlcyA9IGZhbHNlOworCisgICAgbV9zY29waW5nSW5Qcm9ncmVzcyA9IGZh
bHNlOwogfQogCiB2b2lkIFdlYkZyYW1lSW1wbDo6aW5jcmVhc2VNYXRjaENvdW50KGludCBjb3Vu
dCwgaW50IGlkZW50aWZpZXIpCkBAIC0yMjkwLDcgKzIzNDIsNyBAQCBXZWJGcmFtZUltcGw6Oldl
YkZyYW1lSW1wbChXZWJGcmFtZUNsaWVudCogY2xpZW50KQogICAgICwgbV9sYXN0TWF0Y2hDb3Vu
dCgtMSkKICAgICAsIG1fdG90YWxNYXRjaENvdW50KC0xKQogICAgICwgbV9mcmFtZXNTY29waW5n
Q291bnQoLTEpCi0gICAgLCBtX3Njb3BpbmdDb21wbGV0ZShmYWxzZSkKKyAgICAsIG1fc2NvcGlu
Z0luUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2xhc3RGaW5kUmVxdWVzdENvbXBsZXRlZFdpdGhO
b01hdGNoZXMoZmFsc2UpCiAgICAgLCBtX25leHRJbnZhbGlkYXRlQWZ0ZXIoMCkKICAgICAsIG1f
ZmluZE1hdGNoTWFya2Vyc1ZlcnNpb24oMCkKQEAgLTIzMTUsNiArMjM2Nyw3IEBAIHZvaWQgV2Vi
RnJhbWVJbXBsOjppbml0aWFsaXplQXNNYWluRnJhbWUoV2ViQ29yZTo6UGFnZSogcGFnZSkKIHsK
ICAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLCAwLCAmbV9mcmFt
ZUxvYWRlckNsaWVudCk7CiAgICAgbV9mcmFtZSA9IGZyYW1lLmdldCgpOworICAgIG1fZnJhbWVE
ZXN0cnVjdGlvbkhlbHBlciA9IGFkb3B0UHRyKG5ldyBGcmFtZURlc3RydWN0aW9uSGVscGVyKHRo
aXMpKTsKIAogICAgIC8vIEFkZCByZWZlcmVuY2Ugb24gYmVoYWxmIG9mIEZyYW1lTG9hZGVyLiAg
U2VlIGNvbW1lbnRzIGluCiAgICAgLy8gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVy
RGVzdHJveWVkIGZvciBtb3JlIGluZm8uCkBAIC0yMzM4LDYgKzIzOTEsNyBAQCBQYXNzUmVmUHRy
PEZyYW1lPiBXZWJGcmFtZUltcGw6OmNyZWF0ZUNoaWxkRnJhbWUoCiAgICAgUmVmUHRyPEZyYW1l
PiBjaGlsZEZyYW1lID0gRnJhbWU6OmNyZWF0ZSgKICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLCBv
d25lckVsZW1lbnQsICZ3ZWJmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudCk7CiAgICAgd2ViZnJh
bWUtPm1fZnJhbWUgPSBjaGlsZEZyYW1lLmdldCgpOworICAgIHdlYmZyYW1lLT5tX2ZyYW1lRGVz
dHJ1Y3Rpb25IZWxwZXIgPSBhZG9wdFB0cihuZXcgRnJhbWVEZXN0cnVjdGlvbkhlbHBlcih3ZWJm
cmFtZS5nZXQoKSkpOwogCiAgICAgY2hpbGRGcmFtZS0+dHJlZSgpLT5zZXROYW1lKHJlcXVlc3Qu
ZnJhbWVOYW1lKCkpOwogCkBAIC0yNTc2LDcgKzI2MzAsOCBAQCBib29sIFdlYkZyYW1lSW1wbDo6
c2hvdWxkU2NvcGVNYXRjaGVzKGNvbnN0IFN0cmluZyYgc2VhcmNoVGV4dCkKIHsKICAgICAvLyBE
b24ndCBzY29wZSBpZiB3ZSBjYW4ndCBmaW5kIGEgZnJhbWUgb3IgYSB2aWV3LgogICAgIC8vIFRo
ZSB1c2VyIG1heSBoYXZlIGNsb3NlZCB0aGUgdGFiL2FwcGxpY2F0aW9uLCBzbyBhYm9ydC4KLSAg
ICBpZiAoIWZyYW1lKCkgfHwgIWZyYW1lKCktPnZpZXcoKSkKKyAgICAvLyBBbHNvIGlnbm9yZSBk
ZXRhY2hlZCBmcmFtZXMsIGFzIG1hbnkgZmluZCBvcGVyYXRpb25zIHJlcG9ydCB0byB0aGUgbWFp
biBmcmFtZS4KKyAgICBpZiAoIWZyYW1lKCkgfHwgIWZyYW1lKCktPnZpZXcoKSB8fCAhZnJhbWUo
KS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoZnJhbWUoKS0+
ZG9jdW1lbnQoKSAmJiBmcmFtZSgpLT52aWV3KCkpOwpAQCAtMjY2NCw0ICsyNzE5LDIyIEBAIHZv
aWQgV2ViRnJhbWVJbXBsOjpsb2FkSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiB1cmwpCiAgICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmxvYWRlcigpLT53cml0ZXIoKS0+cmVwbGFjZURvY3Vt
ZW50KHNjcmlwdFJlc3VsdCwgb3duZXJEb2N1bWVudC5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViRnJh
bWVJbXBsOjp3aWxsRGV0YWNoUGFnZSgpCit7CisgICAgLy8gRnJhbWUgYWxyZWFkeSBkZXRhY2hl
ZC4KKyAgICBpZiAoIWZyYW1lKCkgfHwgIWZyYW1lKCktPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gRG8gbm90IGV4cGVjdCBzdHJpbmcgc2NvcGluZyByZXN1bHRzIGZyb20gYW55
IGZyYW1lcyB0aGF0IGdvdCBkZXRhY2hlZAorICAgIC8vIGluIHRoZSBtaWRkbGUgb2YgdGhlIG9w
ZXJhdGlvbi4KKyAgICBpZiAobV9zY29waW5nSW5Qcm9ncmVzcykgeworCisgICAgICAgIC8vIFRo
ZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhhdCB0aGUgZnJhbWUgYmVpbmcgZGV0YWNoZWQgd2FzIHRo
ZSBvbmx5CisgICAgICAgIC8vIHBlbmRpbmcgb25lLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBmaW5h
bCByZXBsaWVzIGNhbiBiZSBzZW50LgorICAgICAgICBmbHVzaEN1cnJlbnRTY29waW5nRWZmb3J0
KG1fZmluZFJlcXVlc3RJZGVudGlmaWVyKTsKKworICAgICAgICBjYW5jZWxQZW5kaW5nU2NvcGlu
Z0VmZm9ydCgpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCmluZGV4IGEyZmU3OTdlM2MwNGQ1OWE3Zjc4
ODA5NDMzODIzODk3ZjVjZTM4NmEuLjY5MzY2MjFkMzg1ZjVkMGYxOWIwMTdiNzk0NTg5YWEwODhk
ZTYyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0z
MDEsNyArMzAxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNsYXNzIERlZmVycmVkU2Nv
cGVTdHJpbmdNYXRjaGVzOworICAgIGNsYXNzIEZyYW1lRGVzdHJ1Y3Rpb25IZWxwZXI7CiAgICAg
ZnJpZW5kIGNsYXNzIERlZmVycmVkU2NvcGVTdHJpbmdNYXRjaGVzOworICAgIGZyaWVuZCBjbGFz
cyBGcmFtZURlc3RydWN0aW9uSGVscGVyOwogICAgIGZyaWVuZCBjbGFzcyBGcmFtZUxvYWRlckNs
aWVudEltcGw7CiAKICAgICBzdHJ1Y3QgRmluZE1hdGNoIHsKQEAgLTM4Miw2ICszODQsMTEgQEAg
cHJpdmF0ZToKICAgICAvLyB3YXMgc2VhcmNoZWQuCiAgICAgYm9vbCBzaG91bGRTY29wZU1hdGNo
ZXMoY29uc3QgV1RGOjpTdHJpbmcmIHNlYXJjaFRleHQpOwogCisgICAgLy8gUmVtb3ZlcyB0aGUg
Y3VycmVudCBmcmFtZSBmcm9tIHRoZSBnbG9iYWwgc2NvcGluZyBlZmZvcnQgYW5kIHRyaWdnZXJz
IGFueQorICAgIC8vIHVwZGF0ZXMgaWYgYXBwcm9wcmlhdGUuIFRoaXMgbWV0aG9kIGRvZXMgbm90
IG1hcmsgdGhlIHNjb3Bpbmcgb3BlcmF0aW9uCisgICAgLy8gYXMgZmluaXNoZWQuCisgICAgdm9p
ZCBmbHVzaEN1cnJlbnRTY29waW5nRWZmb3J0KGludCBpZGVudGlmaWVyKTsKKwogICAgIC8vIEZp
bmlzaGVzIHRoZSBjdXJyZW50IHNjb3BpbmcgZWZmb3J0IGFuZCB0cmlnZ2VycyBhbnkgdXBkYXRl
cyBpZiBhcHByb3ByaWF0ZS4KICAgICB2b2lkIGZpbmlzaEN1cnJlbnRTY29waW5nRWZmb3J0KGlu
dCBpZGVudGlmaWVyKTsKIApAQCAtMzk1LDYgKzQwMiwxMCBAQCBwcml2YXRlOgogICAgICAgICBE
ZWZlcnJlZFNjb3BlU3RyaW5nTWF0Y2hlcyosIGludCBpZGVudGlmaWVyLCBjb25zdCBXZWJTdHJp
bmcmIHNlYXJjaFRleHQsCiAgICAgICAgIGNvbnN0IFdlYkZpbmRPcHRpb25zJiwgYm9vbCByZXNl
dCk7CiAKKyAgICAvLyBDYWxsZWQgYnkgRnJhbWVEZXN0cnVjdGlvbkhlbHBlciB3aGVuIHRoZSBX
ZWJDb3JlIGZyYW1lIGlzIGdvaW5nIHRvCisgICAgLy8gZGV0YWNoIGl0cyBhc3NvY2lhdGVkIHBh
Z2UuCisgICAgdm9pZCB3aWxsRGV0YWNoUGFnZSgpOworCiAgICAgLy8gRGV0ZXJtaW5lcyB3aGV0
aGVyIHRvIGludmFsaWRhdGUgdGhlIGNvbnRlbnQgYXJlYSBhbmQgc2Nyb2xsYmFyLgogICAgIHZv
aWQgaW52YWxpZGF0ZUlmTmVjZXNzYXJ5KCk7CiAKQEAgLTQxMSw2ICs0MjIsMTAgQEAgcHJpdmF0
ZToKICAgICAvLyBvdXJzZWx2ZXMgaXMgaGVsZCB3aGlsZSBmcmFtZV8gaXMgdmFsaWQuICBTZWUg
b3VyIENsb3NpbmcgbWV0aG9kLgogICAgIFdlYkNvcmU6OkZyYW1lKiBtX2ZyYW1lOwogCisgICAg
Ly8gT2JzZXJ2ZXMgZm9yIGFueSBkZXN0cnVjdGlvbiAvIHBhZ2UgZGV0YWNobWVudCBldmVudHMg
dGhhdCBtaWdodCBvY2N1cgorICAgIC8vIHRvIHRoZSBXZWJDb3JlIGZyYW1lLgorICAgIE93blB0
cjxGcmFtZURlc3RydWN0aW9uSGVscGVyPiBtX2ZyYW1lRGVzdHJ1Y3Rpb25IZWxwZXI7CisKICAg
ICAvLyBBIHdheSBmb3IgdGhlIG1haW4gZnJhbWUgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBmcmFt
ZSBoYXMgYW4gYWN0aXZlCiAgICAgLy8gbWF0Y2guIFNob3VsZCBiZSAwIGZvciBhbGwgb3RoZXIg
ZnJhbWVzLgogICAgIFdlYkZyYW1lSW1wbCogbV9jdXJyZW50QWN0aXZlTWF0Y2hGcmFtZTsKQEAg
LTQzOCw4ICs0NTMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gS2VlcHMgdHJhY2sgb2YgaG93IG1h
bnkgbWF0Y2hlcyB0aGlzIGZyYW1lIGhhcyBmb3VuZCBzbyBmYXIsIHNvIHRoYXQgd2UKICAgICAv
LyBkb24ndCBsb29zZSBjb3VudCBiZXR3ZWVuIHNjb3BpbmcgZWZmb3J0cywgYW5kIGlzIGFsc28g
dXNlZCAoaW4gY29uanVuY3Rpb24KLSAgICAvLyB3aXRoIG1fbGFzdFNlYXJjaFN0cmluZyBhbmQg
bV9zY29waW5nQ29tcGxldGUpIHRvIGZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0bwotICAgIC8vIHNl
YXJjaCB0aGUgZnJhbWUgYWdhaW4uCisgICAgLy8gd2l0aCBtX2xhc3RTZWFyY2hTdHJpbmcpIHRv
IGZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBzZWFyY2ggdGhlIGZyYW1lIGFnYWluLgogICAgIGlu
dCBtX2xhc3RNYXRjaENvdW50OwogCiAgICAgLy8gVGhpcyB2YXJpYWJsZSBrZWVwcyBhIGN1bXVs
YXRpdmUgdG90YWwgb2YgbWF0Y2hlcyBmb3VuZCBzbyBmYXIgZm9yIEFMTCB0aGUKQEAgLTQ1Miw5
ICs0NjYsMTIgQEAgcHJpdmF0ZToKICAgICAvLyBJdCBzaG91bGQgYmUgLTEgZm9yIGFsbCBvdGhl
ciBmcmFtZXMuCiAgICAgaW50IG1fZnJhbWVzU2NvcGluZ0NvdW50OwogCi0gICAgLy8gS2VlcHMg
dHJhY2sgb2Ygd2hldGhlciB0aGUgc2NvcGluZyBlZmZvcnQgd2FzIGNvbXBsZXRlZCAodGhlIHVz
ZXIgbWF5Ci0gICAgLy8gaW50ZXJydXB0IGl0IGJlZm9yZSBpdCBjb21wbGV0ZXMgYnkgc3VibWl0
dGluZyBhIG5ldyBzZWFyY2gpLgotICAgIGJvb2wgbV9zY29waW5nQ29tcGxldGU7CisgICAgLy8g
SWRlbnRpZmllciBvZiB0aGUgbGF0ZXN0IGZpbmQtaW4tcGFnZSByZXF1ZXN0LiBSZXF1aXJlZCB0
byBiZSBzdG9yZWQgaW4KKyAgICAvLyB0aGUgZnJhbWUgaW4gb3JkZXIgdG8gcmVwbHkgaWYgcmVx
dWlyZWQgaW4gY2FzZSB0aGUgZnJhbWUgaXMgZGV0YWNoZWQuCisgICAgaW50IG1fZmluZFJlcXVl
c3RJZGVudGlmaWVyOworCisgICAgLy8gS2VlcHMgdHJhY2sgb2Ygd2hldGhlciB0aGVyZSBpcyBh
biBzY29waW5nIGVmZm9ydCBvbmdvaW5nIGluIHRoZSBmcmFtZS4KKyAgICBib29sIG1fc2NvcGlu
Z0luUHJvZ3Jlc3M7CiAKICAgICAvLyBLZWVwcyB0cmFjayBvZiB3aGV0aGVyIHRoZSBsYXN0IGZp
bmQgcmVxdWVzdCBjb21wbGV0ZWQgaXRzIHNjb3BpbmcgZWZmb3J0CiAgICAgLy8gd2l0aG91dCBm
aW5kaW5nIGFueSBtYXRjaGVzIGluIHRoaXMgZnJhbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggYTAwNDliNjdlOGQ0MWI2MmJhNTI4NWI5
YTEwMGQ2OWM2MDZmNDAzMS4uZDlmMTYwZjlkYmViNTU1MzYwMTczY2Q1YzU4OGJmZTVhNmQwY2M3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApA
QCAtOTAwLDYgKzkwMCw4IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRjaFJl
Y3RzKQogICAgIFdlYkZyYW1lSW1wbCogbWFpbkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJ
bXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkpOwogICAgIEVYUEVDVF9UUlVFKG1haW5GcmFtZS0+
ZmluZChrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CiAK
KyAgICBtYWluRnJhbWUtPnJlc2V0TWF0Y2hDb3VudCgpOworCiAgICAgZm9yIChXZWJGcmFtZSog
ZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFs
c2UpKQogICAgICAgICBmcmFtZS0+c2NvcGVTdHJpbmdNYXRjaGVzKGtGaW5kSWRlbnRpZmllciwg
c2VhcmNoVGV4dCwgb3B0aW9ucywgdHJ1ZSk7CiAKQEAgLTk5MCw2ICs5OTIsMjAwIEBAIFRFU1Rf
RihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRjaFJlY3RzKQogICAgIHdlYlZpZXctPmNsb3Nl
KCk7CiB9CiAKK1RFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRPbkRldGFjaGVkRnJhbWUpCit7Cisg
ICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlLmh0bWwiKTsKKyAgICBy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaW5kX2luX3BhZ2VfZnJhbWUuaHRtbCIpOworCisg
ICAgRmluZFVwZGF0ZVdlYkZyYW1lQ2xpZW50IGNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3
ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZp
bmRfaW5fcGFnZS5odG1sIiwgdHJ1ZSwgJmNsaWVudCk7CisgICAgd2ViVmlldy0+cmVzaXplKFdl
YlNpemUoNjQwLCA0ODApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3Vw
cG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
a0ZpbmRTdHJpbmcgPSAicmVzdWx0IjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtGaW5kSWRlbnRp
ZmllciA9IDEyMzQ1OworCisgICAgV2ViRmluZE9wdGlvbnMgb3B0aW9uczsKKyAgICBXZWJTdHJp
bmcgc2VhcmNoVGV4dCA9IFdlYlN0cmluZzo6ZnJvbVVURjgoa0ZpbmRTdHJpbmcpOworICAgIFdl
YkZyYW1lSW1wbCogbWFpbkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmll
dy0+bWFpbkZyYW1lKCkpOworCisgICAgLy8gRGV0YWNoIHRoZSBmcmFtZSBiZWZvcmUgZmluZGlu
Zy4KKyAgICBXZWJGcmFtZUltcGwqIHNlY29uZEZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJ
bXBsKj4obWFpbkZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKTsKKyAgICBzZWNvbmRGcmFtZS0+
ZnJhbWUoKS0+d2lsbERldGFjaFBhZ2UoKTsKKyAgICBzZWNvbmRGcmFtZS0+ZnJhbWUoKS0+ZGV0
YWNoRnJvbVBhZ2UoKTsKKworICAgIEVYUEVDVF9UUlVFKG1haW5GcmFtZS0+ZmluZChrRmluZElk
ZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHNlY29uZEZyYW1lLT5maW5kKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9u
cywgZmFsc2UsIDApKTsKKworICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2Fn
ZXMoKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7CisK
KyAgICBtYWluRnJhbWUtPnJlc2V0TWF0Y2hDb3VudCgpOworCisgICAgZm9yIChXZWJGcmFtZSog
ZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFs
c2UpKQorICAgICAgICBmcmFtZS0+c2NvcGVTdHJpbmdNYXRjaGVzKGtGaW5kSWRlbnRpZmllciwg
c2VhcmNoVGV4dCwgb3B0aW9ucywgdHJ1ZSk7CisKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxs
UGVuZGluZ01lc3NhZ2VzKCk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LmZpbmRSZXN1bHRzQXJl
UmVhZHkoKSk7CisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKworVEVTVF9GKFdlYkZyYW1lVGVz
dCwgRmluZERldGFjaEZyYW1lQmVmb3JlU2NvcGVTdHJpbmdzKQoreworICAgIHJlZ2lzdGVyTW9j
a2VkSHR0cFVSTExvYWQoImZpbmRfaW5fcGFnZS5odG1sIik7CisgICAgcmVnaXN0ZXJNb2NrZWRI
dHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlX2ZyYW1lLmh0bWwiKTsKKworICAgIEZpbmRVcGRhdGVX
ZWJGcmFtZUNsaWVudCBjbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhl
bHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRt
bCIsIHRydWUsICZjbGllbnQpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0MCwgNDgw
KSk7CisgICAgd2ViVmlldy0+bGF5b3V0KCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBl
bmRpbmdNZXNzYWdlcygpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtGaW5kU3RyaW5nID0g
InJlc3VsdCI7CisgICAgc3RhdGljIGNvbnN0IGludCBrRmluZElkZW50aWZpZXIgPSAxMjM0NTsK
KworICAgIFdlYkZpbmRPcHRpb25zIG9wdGlvbnM7CisgICAgV2ViU3RyaW5nIHNlYXJjaFRleHQg
PSBXZWJTdHJpbmc6OmZyb21VVEY4KGtGaW5kU3RyaW5nKTsKKyAgICBXZWJGcmFtZUltcGwqIG1h
aW5GcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYlZpZXctPm1haW5GcmFtZSgp
KTsKKworICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKKyAgICAgICAgRVhQRUNUX1RSVUUoZnJhbWUt
PmZpbmQoa0ZpbmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxzZSwgMCkpOwor
CisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIEVYUEVD
VF9GQUxTRShjbGllbnQuZmluZFJlc3VsdHNBcmVSZWFkeSgpKTsKKworICAgIC8vIERldGFjaCB0
aGUgZnJhbWUgYmV0d2VlbiBmaW5kaW5nIGFuZCBzY29waW5nLgorICAgIFdlYkZyYW1lSW1wbCog
c2Vjb25kRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtYWluRnJhbWUtPnRyYXZl
cnNlTmV4dChmYWxzZSkpOworICAgIHNlY29uZEZyYW1lLT5mcmFtZSgpLT53aWxsRGV0YWNoUGFn
ZSgpOworICAgIHNlY29uZEZyYW1lLT5mcmFtZSgpLT5kZXRhY2hGcm9tUGFnZSgpOworCisgICAg
bWFpbkZyYW1lLT5yZXNldE1hdGNoQ291bnQoKTsKKworICAgIGZvciAoV2ViRnJhbWUqIGZyYW1l
ID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkK
KyAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJj
aFRleHQsIG9wdGlvbnMsIHRydWUpOworCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRp
bmdNZXNzYWdlcygpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5
KCkpOworICAgIHdlYlZpZXctPmNsb3NlKCk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIEZp
bmREZXRhY2hNYWluRnJhbWVCZWZvcmVTY29wZVN0cmluZ3MpCit7CisgICAgcmVnaXN0ZXJNb2Nr
ZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlLmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0
dHBVUkxMb2FkKCJmaW5kX2luX3BhZ2VfZnJhbWUuaHRtbCIpOworCisgICAgRmluZFVwZGF0ZVdl
YkZyYW1lQ2xpZW50IGNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVs
cGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpbmRfaW5fcGFnZS5odG1s
IiwgdHJ1ZSwgJmNsaWVudCk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODAp
KTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVu
ZGluZ01lc3NhZ2VzKCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAi
cmVzdWx0IjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtGaW5kSWRlbnRpZmllciA9IDEyMzQ1Owor
CisgICAgV2ViRmluZE9wdGlvbnMgb3B0aW9uczsKKyAgICBXZWJTdHJpbmcgc2VhcmNoVGV4dCA9
IFdlYlN0cmluZzo6ZnJvbVVURjgoa0ZpbmRTdHJpbmcpOworICAgIFdlYkZyYW1lSW1wbCogbWFp
bkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkp
OworCisgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQorICAgICAgICBFWFBFQ1RfVFJVRShmcmFtZS0+
ZmluZChrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CisK
KyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgRVhQRUNU
X0ZBTFNFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOworCisgICAgLy8gRGV0YWNoIHRo
ZSBmcmFtZSBiZXR3ZWVuIGZpbmRpbmcgYW5kIHNjb3BpbmcuCisgICAgbWFpbkZyYW1lLT5mcmFt
ZSgpLT53aWxsRGV0YWNoUGFnZSgpOworICAgIG1haW5GcmFtZS0+ZnJhbWUoKS0+ZGV0YWNoRnJv
bVBhZ2UoKTsKKworICAgIG1haW5GcmFtZS0+cmVzZXRNYXRjaENvdW50KCk7CisKKyAgICBmb3Ig
KFdlYkZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyYXZl
cnNlTmV4dChmYWxzZSkpCisgICAgICAgIGZyYW1lLT5zY29wZVN0cmluZ01hdGNoZXMoa0ZpbmRJ
ZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCB0cnVlKTsKKworICAgIHdlYmtpdF9zdXBw
b3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQuZmlu
ZFJlc3VsdHNBcmVSZWFkeSgpKTsKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCisKK1RFU1Rf
RihXZWJGcmFtZVRlc3QsIEZpbmREZXRhY2hGcmFtZVdoaWxlU2NvcGluZ1N0cmluZ3MpCit7Cisg
ICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlLmh0bWwiKTsKKyAgICBy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaW5kX2luX3BhZ2VfZnJhbWUuaHRtbCIpOworCisg
ICAgRmluZFVwZGF0ZVdlYkZyYW1lQ2xpZW50IGNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3
ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZp
bmRfaW5fcGFnZS5odG1sIiwgdHJ1ZSwgJmNsaWVudCk7CisgICAgd2ViVmlldy0+cmVzaXplKFdl
YlNpemUoNjQwLCA0ODApKTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3Vw
cG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
a0ZpbmRTdHJpbmcgPSAicmVzdWx0IjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtGaW5kSWRlbnRp
ZmllciA9IDEyMzQ1OworCisgICAgV2ViRmluZE9wdGlvbnMgb3B0aW9uczsKKyAgICBXZWJTdHJp
bmcgc2VhcmNoVGV4dCA9IFdlYlN0cmluZzo6ZnJvbVVURjgoa0ZpbmRTdHJpbmcpOworICAgIFdl
YkZyYW1lSW1wbCogbWFpbkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmll
dy0+bWFpbkZyYW1lKCkpOworCisgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQorICAgICAgICBFWFBF
Q1RfVFJVRShmcmFtZS0+ZmluZChrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMs
IGZhbHNlLCAwKSk7CisKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2Vz
KCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOworCisg
ICAgbWFpbkZyYW1lLT5yZXNldE1hdGNoQ291bnQoKTsKKworICAgIGZvciAoV2ViRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNl
KSkKKyAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNl
YXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOworCisgICAgLy8gVGhlIGZpcnN0IHNjb3BlU3RyaW5n
TWF0Y2hlcyB3aWxsIGhhdmUgcmVzZXQgdGhlIHN0YXRlLiBEZXRhY2ggYmVmb3JlIGl0IGFjdHVh
bGx5IHNjb3Blcy4KKyAgICBXZWJGcmFtZUltcGwqIHNlY29uZEZyYW1lID0gc3RhdGljX2Nhc3Q8
V2ViRnJhbWVJbXBsKj4obWFpbkZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKTsKKyAgICBzZWNv
bmRGcmFtZS0+ZnJhbWUoKS0+d2lsbERldGFjaFBhZ2UoKTsKKyAgICBzZWNvbmRGcmFtZS0+ZnJh
bWUoKS0+ZGV0YWNoRnJvbVBhZ2UoKTsKKworICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5k
aW5nTWVzc2FnZXMoKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQuZmluZFJlc3VsdHNBcmVSZWFk
eSgpKTsKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0LCBG
aW5kRGV0YWNoTWFpbkZyYW1lV2hpbGVTY29waW5nU3RyaW5ncykKK3sKKyAgICByZWdpc3Rlck1v
Y2tlZEh0dHBVUkxMb2FkKCJmaW5kX2luX3BhZ2UuaHRtbCIpOworICAgIHJlZ2lzdGVyTW9ja2Vk
SHR0cFVSTExvYWQoImZpbmRfaW5fcGFnZV9mcmFtZS5odG1sIik7CisKKyAgICBGaW5kVXBkYXRl
V2ViRnJhbWVDbGllbnQgY2xpZW50OworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RI
ZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiZmluZF9pbl9wYWdlLmh0
bWwiLCB0cnVlLCAmY2xpZW50KTsKKyAgICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4
MCkpOworICAgIHdlYlZpZXctPmxheW91dCgpOworICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQ
ZW5kaW5nTWVzc2FnZXMoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrRmluZFN0cmluZyA9
ICJyZXN1bHQiOworICAgIHN0YXRpYyBjb25zdCBpbnQga0ZpbmRJZGVudGlmaWVyID0gMTIzNDU7
CisKKyAgICBXZWJGaW5kT3B0aW9ucyBvcHRpb25zOworICAgIFdlYlN0cmluZyBzZWFyY2hUZXh0
ID0gV2ViU3RyaW5nOjpmcm9tVVRGOChrRmluZFN0cmluZyk7CisgICAgV2ViRnJhbWVJbXBsKiBt
YWluRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPih3ZWJWaWV3LT5tYWluRnJhbWUo
KSk7CisKKyAgICBmb3IgKFdlYkZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyYXZlcnNlTmV4dChmYWxzZSkpCisgICAgICAgIEVYUEVDVF9UUlVFKGZyYW1l
LT5maW5kKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgZmFsc2UsIDApKTsK
KworICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBFWFBF
Q1RfRkFMU0UoY2xpZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7CisKKyAgICBtYWluRnJhbWUt
PnJlc2V0TWF0Y2hDb3VudCgpOworCisgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWluRnJh
bWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQorICAgICAgICBm
cmFtZS0+c2NvcGVTdHJpbmdNYXRjaGVzKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0
aW9ucywgdHJ1ZSk7CisKKyAgICAvLyBUaGUgZmlyc3Qgc2NvcGVTdHJpbmdNYXRjaGVzIHdpbGwg
aGF2ZSByZXNldCB0aGUgc3RhdGUuIERldGFjaCBiZWZvcmUgaXQgYWN0dWFsbHkgc2NvcGVzLgor
ICAgIG1haW5GcmFtZS0+ZnJhbWUoKS0+d2lsbERldGFjaFBhZ2UoKTsKKyAgICBtYWluRnJhbWUt
PmZyYW1lKCktPmRldGFjaEZyb21QYWdlKCk7CisKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxs
UGVuZGluZ01lc3NhZ2VzKCk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LmZpbmRSZXN1bHRzQXJl
UmVhZHkoKSk7CisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKwogc3RhdGljIFdlYlZpZXcqIGNy
ZWF0ZVdlYlZpZXdGb3JUZXh0U2VsZWN0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwpCiB7CiAg
ICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRM
b2FkKHVybCwgdHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166044</attachid>
            <date>2012-09-27 12:36:41 -0700</date>
            <delta_ts>2012-09-28 05:01:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97807-20120927203558.patch</filename>
            <type>text/plain</type>
            <size>20570</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDdmYTA0YTJlMGIyNmQzNTZmMTJlYjNhM2IxN2FjYWM0NzU4NjViNzAuLjI5NWQ4ZWFiNzZjY2Q3
NjZjZDA0M2RhYjQzZTJhZDIyYWY1ODY4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTItMDktMjcgIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gRml4IHRoZSBmaW5kLWlu
LXBhZ2UgaW1wbGVtZW50YXRpb24gZm9yIGRldGFjaGluZyBmcmFtZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCBvZiA5NzY4OC4gSW50
cm9kdWNlcyBwcm9wZXIgdGVzdCBjb3ZlcmFnZSBmb3IgdGhlIGZpbmQtaW4tcGFnZQorICAgICAg
ICBmZWF0dXJlIGluIGRldGFjaGluZy9kZXRhY2hlZCBmcmFtZSBzaXR1YXRpb25zLCBmaXhpbmcg
YSBmZXcgY3Jhc2hlcyBhbmQKKyAgICAgICAgZW5zdXJpbmcgdGhhdCBhIGZpbmFsIHJlcGx5IGlz
IGFsd2F5cyBzZW50LgorCisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmluZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
SW1wbDo6c2NvcGVTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBs
OjpmbHVzaEN1cnJlbnRTY29waW5nRWZmb3J0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6ZmluaXNoQ3VycmVudFNjb3BpbmdFZmZvcnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNhbmNlbFBlbmRpbmdTY29waW5nRWZmb3J0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpXZWJGcmFtZUltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUltcGw6OnNldFdlYkNvcmVGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lSW1wbDo6aW5pdGlhbGl6ZUFzTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVJbXBsOjpjcmVhdGVDaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVJbXBsOjpzaG91bGRTY29wZU1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUlt
cGw6OndpbGxEZXRhY2hQYWdlKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmg6CisgICAg
ICAgIChXZWJGcmFtZUltcGwpOgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisK
IDIwMTItMDktMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjk2NzMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA0NGY1ZTE3M2QxODQwNmMwNjhk
NzVhYTMzZTNmMGZmOWY4NWQyMTVmLi40ZGU2NmQwNWNkNjc1NTM1Mjk3NzM0Y2JmZGI2NGZlNWMx
ODM2ZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAK
QEAgLTUyNyw4ICs1MjcsNiBAQCBXZWJGcmFtZUltcGw6OkZpbmRNYXRjaDo6RmluZE1hdGNoKFBh
c3NSZWZQdHI8UmFuZ2U+IHJhbmdlLCBpbnQgb3JkaW5hbCkKIHsKIH0KIAotLy8gV2ViRnJhbWUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCiBjbGFzcyBXZWJGcmFtZUltcGw6OkRlZmVycmVkU2NvcGVTdHJpbmdNYXRj
aGVzIHsKIHB1YmxpYzoKICAgICBEZWZlcnJlZFNjb3BlU3RyaW5nTWF0Y2hlcyhXZWJGcmFtZUlt
cGwqIHdlYkZyYW1lLApAQCAtNTYxLDcgKzU1OSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jl
c2V0OwogfTsKIAotCiAvLyBXZWJGcmFtZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGludCBXZWJGcmFtZTo6aW5z
dGFuY2VDb3VudCgpCkBAIC0xNjI1LDYgKzE2MjIsMTMgQEAgYm9vbCBXZWJGcmFtZUltcGw6OmZp
bmQoaW50IGlkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHdyYXBXaXRo
aW5GcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlJlY3QqIHNlbGVjdGlvblJlY3Qp
CiB7CisgICAgaWYgKCFmcmFtZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIE5lZWQgdG8ga2VlcCB0aGUgY3VycmVudCBpZGVudGlmaWVyIGxv
Y2FsbHkgaW4gb3JkZXIgdG8gZmluaXNoIHRoZQorICAgIC8vIHJlcXVlc3QgaW4gY2FzZSB0aGUg
ZnJhbWUgaXMgZGV0YWNoZWQgZHVyaW5nIHRoZSBwcm9jZXNzLgorICAgIG1fZmluZFJlcXVlc3RJ
ZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKwogICAgIFdlYkZyYW1lSW1wbCogbWFpbkZyYW1lSW1w
bCA9IHZpZXdJbXBsKCktPm1haW5GcmFtZUltcGwoKTsKIAogICAgIGlmICghb3B0aW9ucy5maW5k
TmV4dCkKQEAgLTE3MjMsMTIgKzE3MjcsMTAgQEAgdm9pZCBXZWJGcmFtZUltcGw6OnNjb3BlU3Ry
aW5nTWF0Y2hlcyhpbnQgaWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViRmluZE9wdGlvbnMmIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzZXQpCiB7Ci0gICAgV2ViRnJhbWVJbXBsKiBt
YWluRnJhbWVJbXBsID0gdmlld0ltcGwoKS0+bWFpbkZyYW1lSW1wbCgpOwotCiAgICAgaWYgKHJl
c2V0KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBicmFuZCBuZXcgc2VhcmNoLCBzbyB3ZSBuZWVk
IHRvIHJlc2V0IGV2ZXJ5dGhpbmcuCiAgICAgICAgIC8vIFNjb3BpbmcgaXMganVzdCBhYm91dCB0
byBiZWdpbi4KLSAgICAgICAgbV9zY29waW5nQ29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgbV9z
Y29waW5nSW5Qcm9ncmVzcyA9IHRydWU7CiAKICAgICAgICAgLy8gQ2xlYXIgaGlnaGxpZ2h0aW5n
IGZvciB0aGlzIGZyYW1lLgogICAgICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkg
JiYgZnJhbWUoKS0+ZWRpdG9yKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkK
QEAgLTE3NDMsNyArMTc0NSw5IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNo
ZXMoaW50IGlkZW50aWZpZXIsCiAKICAgICAgICAgbV9yZXN1bWVTY29waW5nRnJvbVJhbmdlID0g
MDsKIAotICAgICAgICBtYWluRnJhbWVJbXBsLT5tX2ZyYW1lc1Njb3BpbmdDb3VudCsrOworICAg
ICAgICAvLyBUaGUgdmlldyBtaWdodCBiZSBudWxsIG9uIGRldGFjaGVkIGZyYW1lcy4KKyAgICAg
ICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICAgICAgdmlld0ltcGwo
KS0+bWFpbkZyYW1lSW1wbCgpLT5tX2ZyYW1lc1Njb3BpbmdDb3VudCsrOwogCiAgICAgICAgIC8v
IE5vdywgZGVmZXIgc2NvcGluZyB1bnRpbCBsYXRlciB0byBhbGxvdyBmaW5kIG9wZXJhdGlvbiB0
byBmaW5pc2ggcXVpY2tseS4KICAgICAgICAgc2NvcGVTdHJpbmdNYXRjaGVzU29vbigKQEAgLTE3
NjIsNiArMTc2Niw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50
IGlkZW50aWZpZXIsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBXZWJGcmFtZUltcGwq
IG1haW5GcmFtZUltcGwgPSB2aWV3SW1wbCgpLT5tYWluRnJhbWVJbXBsKCk7CiAgICAgUmVmUHRy
PFJhbmdlPiBzZWFyY2hSYW5nZShyYW5nZU9mQ29udGVudHMoZnJhbWUoKS0+ZG9jdW1lbnQoKSkp
OwogCiAgICAgTm9kZSogb3JpZ2luYWxFbmRDb250YWluZXIgPSBzZWFyY2hSYW5nZS0+ZW5kQ29u
dGFpbmVyKCk7CkBAIC0xODkxLDIwICsxODk2LDI5IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29w
ZVN0cmluZ01hdGNoZXMoaW50IGlkZW50aWZpZXIsCiAgICAgZmluaXNoQ3VycmVudFNjb3BpbmdF
ZmZvcnQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViRnJhbWVJbXBsOjpmaW5pc2hDdXJyZW50
U2NvcGluZ0VmZm9ydChpbnQgaWRlbnRpZmllcikKK3ZvaWQgV2ViRnJhbWVJbXBsOjpmbHVzaEN1
cnJlbnRTY29waW5nRWZmb3J0KGludCBpZGVudGlmaWVyKQogeworICAgIGlmICghZnJhbWUoKSB8
fCAhZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJGcmFtZUltcGwq
IG1haW5GcmFtZUltcGwgPSB2aWV3SW1wbCgpLT5tYWluRnJhbWVJbXBsKCk7CiAKICAgICAvLyBU
aGlzIGZyYW1lIGhhcyBubyBmdXJ0aGVyIHNjb3BpbmcgbGVmdCwgc28gaXQgaXMgZG9uZS4gT3Ro
ZXIgZnJhbWVzIG1pZ2h0LAogICAgIC8vIG9mIGNvdXJzZSwgY29udGludWUgdG8gc2NvcGUgbWF0
Y2hlcy4KLSAgICBtX3Njb3BpbmdDb21wbGV0ZSA9IHRydWU7CiAgICAgbWFpbkZyYW1lSW1wbC0+
bV9mcmFtZXNTY29waW5nQ291bnQtLTsKLSAgICBtX2xhc3RGaW5kUmVxdWVzdENvbXBsZXRlZFdp
dGhOb01hdGNoZXMgPSAhbV9sYXN0TWF0Y2hDb3VudDsKIAogICAgIC8vIElmIHRoaXMgaXMgdGhl
IGxhc3QgZnJhbWUgdG8gZmluaXNoIHNjb3Bpbmcgd2UgbmVlZCB0byB0cmlnZ2VyIHRoZSBmaW5h
bAogICAgIC8vIHVwZGF0ZSB0byBiZSBzZW50LgogICAgIGlmICghbWFpbkZyYW1lSW1wbC0+bV9m
cmFtZXNTY29waW5nQ291bnQpCiAgICAgICAgIG1haW5GcmFtZUltcGwtPmluY3JlYXNlTWF0Y2hD
b3VudCgwLCBpZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJGcmFtZUltcGw6OmZpbmlzaEN1cnJl
bnRTY29waW5nRWZmb3J0KGludCBpZGVudGlmaWVyKQoreworICAgIGZsdXNoQ3VycmVudFNjb3Bp
bmdFZmZvcnQoaWRlbnRpZmllcik7CisKKyAgICBtX3Njb3BpbmdJblByb2dyZXNzID0gZmFsc2U7
CisgICAgbV9sYXN0RmluZFJlcXVlc3RDb21wbGV0ZWRXaXRoTm9NYXRjaGVzID0gIW1fbGFzdE1h
dGNoQ291bnQ7CiAKICAgICAvLyBUaGlzIGZyYW1lIGlzIGRvbmUsIHNvIHNob3cgYW55IHNjcm9s
bGJhciB0aWNrbWFya3Mgd2UgaGF2ZW4ndCBkcmF3biB5ZXQuCiAgICAgaW52YWxpZGF0ZUFyZWEo
SW52YWxpZGF0ZVNjcm9sbGJhcik7CkBAIC0xOTE3LDggKzE5MzEsMTEgQEAgdm9pZCBXZWJGcmFt
ZUltcGw6OmNhbmNlbFBlbmRpbmdTY29waW5nRWZmb3J0KCkKIAogICAgIG1fYWN0aXZlTWF0Y2hJ
bmRleEluQ3VycmVudEZyYW1lID0gLTE7CiAKLSAgICBpZiAoIW1fc2NvcGluZ0NvbXBsZXRlKQor
ICAgIC8vIExhc3QgcmVxdWVzdCBkaWRuJ3QgY29tcGxldGUuCisgICAgaWYgKG1fc2NvcGluZ0lu
UHJvZ3Jlc3MpCiAgICAgICAgIG1fbGFzdEZpbmRSZXF1ZXN0Q29tcGxldGVkV2l0aE5vTWF0Y2hl
cyA9IGZhbHNlOworCisgICAgbV9zY29waW5nSW5Qcm9ncmVzcyA9IGZhbHNlOwogfQogCiB2b2lk
IFdlYkZyYW1lSW1wbDo6aW5jcmVhc2VNYXRjaENvdW50KGludCBjb3VudCwgaW50IGlkZW50aWZp
ZXIpCkBAIC0yMjgwLDcgKzIyOTcsOCBAQCBQYXNzUmVmUHRyPFdlYkZyYW1lSW1wbD4gV2ViRnJh
bWVJbXBsOjpjcmVhdGUoV2ViRnJhbWVDbGllbnQqIGNsaWVudCkKIH0KIAogV2ViRnJhbWVJbXBs
OjpXZWJGcmFtZUltcGwoV2ViRnJhbWVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fZnJhbWVMb2Fk
ZXJDbGllbnQodGhpcykKKyAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcigwKQorICAgICwg
bV9mcmFtZUxvYWRlckNsaWVudCh0aGlzKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwg
bV9mcmFtZSgwKQogICAgICwgbV9jdXJyZW50QWN0aXZlTWF0Y2hGcmFtZSgwKQpAQCAtMjI5MCw3
ICsyMzA4LDggQEAgV2ViRnJhbWVJbXBsOjpXZWJGcmFtZUltcGwoV2ViRnJhbWVDbGllbnQqIGNs
aWVudCkKICAgICAsIG1fbGFzdE1hdGNoQ291bnQoLTEpCiAgICAgLCBtX3RvdGFsTWF0Y2hDb3Vu
dCgtMSkKICAgICAsIG1fZnJhbWVzU2NvcGluZ0NvdW50KC0xKQotICAgICwgbV9zY29waW5nQ29t
cGxldGUoZmFsc2UpCisgICAgLCBtX2ZpbmRSZXF1ZXN0SWRlbnRpZmllcigtMSkKKyAgICAsIG1f
c2NvcGluZ0luUHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2xhc3RGaW5kUmVxdWVzdENvbXBsZXRl
ZFdpdGhOb01hdGNoZXMoZmFsc2UpCiAgICAgLCBtX25leHRJbnZhbGlkYXRlQWZ0ZXIoMCkKICAg
ICAsIG1fZmluZE1hdGNoTWFya2Vyc1ZlcnNpb24oMCkKQEAgLTIzMTEsMTAgKzIzMzAsMTcgQEAg
V2ViRnJhbWVJbXBsOjp+V2ViRnJhbWVJbXBsKCkKICAgICBjYW5jZWxQZW5kaW5nU2NvcGluZ0Vm
Zm9ydCgpOwogfQogCit2b2lkIFdlYkZyYW1lSW1wbDo6c2V0V2ViQ29yZUZyYW1lKFdlYkNvcmU6
OkZyYW1lKiBmcmFtZSkKK3sKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIG1fZnJhbWUgPSBmcmFt
ZTsKKyAgICBvYnNlcnZlRnJhbWUobV9mcmFtZSk7Cit9CisKIHZvaWQgV2ViRnJhbWVJbXBsOjpp
bml0aWFsaXplQXNNYWluRnJhbWUoV2ViQ29yZTo6UGFnZSogcGFnZSkKIHsKICAgICBSZWZQdHI8
RnJhbWU+IGZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLCAwLCAmbV9mcmFtZUxvYWRlckNsaWVu
dCk7Ci0gICAgbV9mcmFtZSA9IGZyYW1lLmdldCgpOworICAgIHNldFdlYkNvcmVGcmFtZShmcmFt
ZS5nZXQoKSk7CiAKICAgICAvLyBBZGQgcmVmZXJlbmNlIG9uIGJlaGFsZiBvZiBGcmFtZUxvYWRl
ci4gIFNlZSBjb21tZW50cyBpbgogICAgIC8vIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxv
YWRlckRlc3Ryb3llZCBmb3IgbW9yZSBpbmZvLgpAQCAtMjMzNyw3ICsyMzYzLDcgQEAgUGFzc1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVJbXBsOjpjcmVhdGVDaGlsZEZyYW1lKAogCiAgICAgUmVmUHRy
PEZyYW1lPiBjaGlsZEZyYW1lID0gRnJhbWU6OmNyZWF0ZSgKICAgICAgICAgbV9mcmFtZS0+cGFn
ZSgpLCBvd25lckVsZW1lbnQsICZ3ZWJmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudCk7Ci0gICAg
d2ViZnJhbWUtPm1fZnJhbWUgPSBjaGlsZEZyYW1lLmdldCgpOworICAgIHdlYmZyYW1lLT5zZXRX
ZWJDb3JlRnJhbWUoY2hpbGRGcmFtZS5nZXQoKSk7CiAKICAgICBjaGlsZEZyYW1lLT50cmVlKCkt
PnNldE5hbWUocmVxdWVzdC5mcmFtZU5hbWUoKSk7CiAKQEAgLTI1NzYsNyArMjYwMiw4IEBAIGJv
b2wgV2ViRnJhbWVJbXBsOjpzaG91bGRTY29wZU1hdGNoZXMoY29uc3QgU3RyaW5nJiBzZWFyY2hU
ZXh0KQogewogICAgIC8vIERvbid0IHNjb3BlIGlmIHdlIGNhbid0IGZpbmQgYSBmcmFtZSBvciBh
IHZpZXcuCiAgICAgLy8gVGhlIHVzZXIgbWF5IGhhdmUgY2xvc2VkIHRoZSB0YWIvYXBwbGljYXRp
b24sIHNvIGFib3J0LgotICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+dmlldygpKQorICAg
IC8vIEFsc28gaWdub3JlIGRldGFjaGVkIGZyYW1lcywgYXMgbWFueSBmaW5kIG9wZXJhdGlvbnMg
cmVwb3J0IHRvIHRoZSBtYWluIGZyYW1lLgorICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+
dmlldygpIHx8ICFmcmFtZSgpLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IEFTU0VSVChmcmFtZSgpLT5kb2N1bWVudCgpICYmIGZyYW1lKCktPnZpZXcoKSk7CkBAIC0yNjY0
LDQgKzI2OTEsMjEgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmxvYWRKYXZhU2NyaXB0VVJMKGNvbnN0
IEtVUkwmIHVybCkKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPndyaXRl
cigpLT5yZXBsYWNlRG9jdW1lbnQoc2NyaXB0UmVzdWx0LCBvd25lckRvY3VtZW50LmdldCgpKTsK
IH0KIAordm9pZCBXZWJGcmFtZUltcGw6OndpbGxEZXRhY2hQYWdlKCkKK3sKKyAgICBpZiAoIWZy
YW1lKCkgfHwgIWZyYW1lKCktPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG8g
bm90IGV4cGVjdCBzdHJpbmcgc2NvcGluZyByZXN1bHRzIGZyb20gYW55IGZyYW1lcyB0aGF0IGdv
dCBkZXRhY2hlZAorICAgIC8vIGluIHRoZSBtaWRkbGUgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICBp
ZiAobV9zY29waW5nSW5Qcm9ncmVzcykgeworCisgICAgICAgIC8vIFRoZXJlIGlzIGEgcG9zc2li
aWxpdHkgdGhhdCB0aGUgZnJhbWUgYmVpbmcgZGV0YWNoZWQgd2FzIHRoZSBvbmx5CisgICAgICAg
IC8vIHBlbmRpbmcgb25lLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBmaW5hbCByZXBsaWVzIGNhbiBi
ZSBzZW50LgorICAgICAgICBmbHVzaEN1cnJlbnRTY29waW5nRWZmb3J0KG1fZmluZFJlcXVlc3RJ
ZGVudGlmaWVyKTsKKworICAgICAgICBjYW5jZWxQZW5kaW5nU2NvcGluZ0VmZm9ydCgpOworICAg
IH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5oCmluZGV4IGEyZmU3OTdlM2MwNGQ1OWE3Zjc4ODA5NDMzODIzODk3ZjVj
ZTM4NmEuLjBiMDAxZmM3NzZlOGM4NzMyYzRmMzVjMWUxZTBjNDYzMzYyN2EyYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpA
QCAtNjksNyArNzAsMTAgQEAgc3RydWN0IFdlYlByaW50UGFyYW1zOwogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKIAogLy8gSW1wbGVtZW50YXRpb24gb2YgV2ViRnJhbWUs
IG5vdGUgdGhhdCB0aGlzIGlzIGEgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0LgotY2xhc3MgV2Vi
RnJhbWVJbXBsIDogcHVibGljIFdlYkZyYW1lLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJGcmFtZUlt
cGw+IHsKK2NsYXNzIFdlYkZyYW1lSW1wbAorICAgIDogcHVibGljIFdlYkZyYW1lCisgICAgLCBw
dWJsaWMgUmVmQ291bnRlZDxXZWJGcmFtZUltcGw+CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6RnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICAvLyBXZWJGcmFtZSBtZXRob2Rz
OgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKQEAgLTI0MCw2ICsyNDQsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJr
ZXJGb3IoaW50IGZyb20sIGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5n
IGxheWVyVHJlZUFzVGV4dChib29sIHNob3dEZWJ1Z0luZm8gPSBmYWxzZSkgY29uc3Q7CiAKKyAg
ICAvLyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgbWV0aG9kcy4KKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbERldGFjaFBhZ2UoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZy
YW1lSW1wbD4gY3JlYXRlKFdlYkZyYW1lQ2xpZW50KiBjbGllbnQpOwogICAgIHZpcnR1YWwgfldl
YkZyYW1lSW1wbCgpOwogCkBAIC0zMzEsNiArMzM4LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJG
cmFtZUxvYWRlckNsaWVudAogICAgIHZvaWQgY2xvc2luZygpOwogCisgICAgLy8gU2V0cyB0aGUg
bG9jYWwgV2ViQ29yZSBmcmFtZSBhbmQgcmVnaXN0ZXJzIGRlc3RydWN0aW9uIG9ic2VydmVycy4K
KyAgICB2b2lkIHNldFdlYkNvcmVGcmFtZShXZWJDb3JlOjpGcmFtZSopOworCiAgICAgLy8gTm90
aWZpZXMgdGhlIGRlbGVnYXRlIGFib3V0IGEgbmV3IHNlbGVjdGlvbiByZWN0LgogICAgIHZvaWQg
cmVwb3J0RmluZEluUGFnZVNlbGVjdGlvbigKICAgICAgICAgY29uc3QgV2ViUmVjdCYgc2VsZWN0
aW9uUmVjdCwgaW50IGFjdGl2ZU1hdGNoT3JkaW5hbCwgaW50IGlkZW50aWZpZXIpOwpAQCAtMzgy
LDYgKzM5MiwxMSBAQCBwcml2YXRlOgogICAgIC8vIHdhcyBzZWFyY2hlZC4KICAgICBib29sIHNo
b3VsZFNjb3BlTWF0Y2hlcyhjb25zdCBXVEY6OlN0cmluZyYgc2VhcmNoVGV4dCk7CiAKKyAgICAv
LyBSZW1vdmVzIHRoZSBjdXJyZW50IGZyYW1lIGZyb20gdGhlIGdsb2JhbCBzY29waW5nIGVmZm9y
dCBhbmQgdHJpZ2dlcnMgYW55CisgICAgLy8gdXBkYXRlcyBpZiBhcHByb3ByaWF0ZS4gVGhpcyBt
ZXRob2QgZG9lcyBub3QgbWFyayB0aGUgc2NvcGluZyBvcGVyYXRpb24KKyAgICAvLyBhcyBmaW5p
c2hlZC4KKyAgICB2b2lkIGZsdXNoQ3VycmVudFNjb3BpbmdFZmZvcnQoaW50IGlkZW50aWZpZXIp
OworCiAgICAgLy8gRmluaXNoZXMgdGhlIGN1cnJlbnQgc2NvcGluZyBlZmZvcnQgYW5kIHRyaWdn
ZXJzIGFueSB1cGRhdGVzIGlmIGFwcHJvcHJpYXRlLgogICAgIHZvaWQgZmluaXNoQ3VycmVudFNj
b3BpbmdFZmZvcnQoaW50IGlkZW50aWZpZXIpOwogCkBAIC00MzgsOCArNDUzLDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIEtlZXBzIHRyYWNrIG9mIGhvdyBtYW55IG1hdGNoZXMgdGhpcyBmcmFtZSBo
YXMgZm91bmQgc28gZmFyLCBzbyB0aGF0IHdlCiAgICAgLy8gZG9uJ3QgbG9vc2UgY291bnQgYmV0
d2VlbiBzY29waW5nIGVmZm9ydHMsIGFuZCBpcyBhbHNvIHVzZWQgKGluIGNvbmp1bmN0aW9uCi0g
ICAgLy8gd2l0aCBtX2xhc3RTZWFyY2hTdHJpbmcgYW5kIG1fc2NvcGluZ0NvbXBsZXRlKSB0byBm
aWd1cmUgb3V0IGlmIHdlIG5lZWQgdG8KLSAgICAvLyBzZWFyY2ggdGhlIGZyYW1lIGFnYWluLgor
ICAgIC8vIHdpdGggbV9sYXN0U2VhcmNoU3RyaW5nKSB0byBmaWd1cmUgb3V0IGlmIHdlIG5lZWQg
dG8gc2VhcmNoIHRoZSBmcmFtZSBhZ2Fpbi4KICAgICBpbnQgbV9sYXN0TWF0Y2hDb3VudDsKIAog
ICAgIC8vIFRoaXMgdmFyaWFibGUga2VlcHMgYSBjdW11bGF0aXZlIHRvdGFsIG9mIG1hdGNoZXMg
Zm91bmQgc28gZmFyIGZvciBBTEwgdGhlCkBAIC00NTIsOSArNDY2LDEyIEBAIHByaXZhdGU6CiAg
ICAgLy8gSXQgc2hvdWxkIGJlIC0xIGZvciBhbGwgb3RoZXIgZnJhbWVzLgogICAgIGludCBtX2Zy
YW1lc1Njb3BpbmdDb3VudDsKIAotICAgIC8vIEtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlIHNj
b3BpbmcgZWZmb3J0IHdhcyBjb21wbGV0ZWQgKHRoZSB1c2VyIG1heQotICAgIC8vIGludGVycnVw
dCBpdCBiZWZvcmUgaXQgY29tcGxldGVzIGJ5IHN1Ym1pdHRpbmcgYSBuZXcgc2VhcmNoKS4KLSAg
ICBib29sIG1fc2NvcGluZ0NvbXBsZXRlOworICAgIC8vIElkZW50aWZpZXIgb2YgdGhlIGxhdGVz
dCBmaW5kLWluLXBhZ2UgcmVxdWVzdC4gUmVxdWlyZWQgdG8gYmUgc3RvcmVkIGluCisgICAgLy8g
dGhlIGZyYW1lIGluIG9yZGVyIHRvIHJlcGx5IGlmIHJlcXVpcmVkIGluIGNhc2UgdGhlIGZyYW1l
IGlzIGRldGFjaGVkLgorICAgIGludCBtX2ZpbmRSZXF1ZXN0SWRlbnRpZmllcjsKKworICAgIC8v
IEtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlcmUgaXMgYW4gc2NvcGluZyBlZmZvcnQgb25nb2lu
ZyBpbiB0aGUgZnJhbWUuCisgICAgYm9vbCBtX3Njb3BpbmdJblByb2dyZXNzOwogCiAgICAgLy8g
S2VlcHMgdHJhY2sgb2Ygd2hldGhlciB0aGUgbGFzdCBmaW5kIHJlcXVlc3QgY29tcGxldGVkIGl0
cyBzY29waW5nIGVmZm9ydAogICAgIC8vIHdpdGhvdXQgZmluZGluZyBhbnkgbWF0Y2hlcyBpbiB0
aGlzIGZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJG
cmFtZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3Qu
Y3BwCmluZGV4IGEwMDQ5YjY3ZThkNDFiNjJiYTUyODViOWExMDBkNjljNjA2ZjQwMzEuLmQ5ZjE2
MGY5ZGJlYjU1NTM2MDE3M2NkNWM1ODhiZmU1YTZkMGNjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTkwMCw2ICs5MDAsOCBAQCBURVNU
X0YoV2ViRnJhbWVUZXN0LCBGaW5kSW5QYWdlTWF0Y2hSZWN0cykKICAgICBXZWJGcmFtZUltcGwq
IG1haW5GcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYlZpZXctPm1haW5GcmFt
ZSgpKTsKICAgICBFWFBFQ1RfVFJVRShtYWluRnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlmaWVyLCBz
ZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxzZSwgMCkpOwogCisgICAgbWFpbkZyYW1lLT5yZXNldE1h
dGNoQ291bnQoKTsKKwogICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKICAgICAgICAgZnJhbWUtPnNj
b3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIHRy
dWUpOwogCkBAIC05OTAsNiArOTkyLDIwMCBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kSW5Q
YWdlTWF0Y2hSZWN0cykKICAgICB3ZWJWaWV3LT5jbG9zZSgpOwogfQogCitURVNUX0YoV2ViRnJh
bWVUZXN0LCBGaW5kT25EZXRhY2hlZEZyYW1lKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVS
TExvYWQoImZpbmRfaW5fcGFnZS5odG1sIik7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9h
ZCgiZmluZF9pbl9wYWdlX2ZyYW1lLmh0bWwiKTsKKworICAgIEZpbmRVcGRhdGVXZWJGcmFtZUNs
aWVudCBjbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNy
ZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRydWUs
ICZjbGllbnQpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7CisgICAg
d2ViVmlldy0+bGF5b3V0KCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtGaW5kU3RyaW5nID0gInJlc3VsdCI7
CisgICAgc3RhdGljIGNvbnN0IGludCBrRmluZElkZW50aWZpZXIgPSAxMjM0NTsKKworICAgIFdl
YkZpbmRPcHRpb25zIG9wdGlvbnM7CisgICAgV2ViU3RyaW5nIHNlYXJjaFRleHQgPSBXZWJTdHJp
bmc6OmZyb21VVEY4KGtGaW5kU3RyaW5nKTsKKyAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZSA9
IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYlZpZXctPm1haW5GcmFtZSgpKTsKKworICAg
IC8vIERldGFjaCB0aGUgZnJhbWUgYmVmb3JlIGZpbmRpbmcuCisgICAgV2ViRnJhbWVJbXBsKiBz
ZWNvbmRGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1haW5GcmFtZS0+dHJhdmVy
c2VOZXh0KGZhbHNlKSk7CisgICAgc2Vjb25kRnJhbWUtPmZyYW1lKCktPndpbGxEZXRhY2hQYWdl
KCk7CisgICAgc2Vjb25kRnJhbWUtPmZyYW1lKCktPmRldGFjaEZyb21QYWdlKCk7CisKKyAgICBF
WFBFQ1RfVFJVRShtYWluRnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBv
cHRpb25zLCBmYWxzZSwgMCkpOworICAgIEVYUEVDVF9GQUxTRShzZWNvbmRGcmFtZS0+ZmluZChr
RmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CisKKyAgICB3
ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgRVhQRUNUX0ZBTFNF
KGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOworCisgICAgbWFpbkZyYW1lLT5yZXNldE1h
dGNoQ291bnQoKTsKKworICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKKyAgICAgICAgZnJhbWUtPnNj
b3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIHRy
dWUpOworCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAg
IEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOworICAgIHdlYlZpZXct
PmNsb3NlKCk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmREZXRhY2hGcmFtZUJlZm9y
ZVNjb3BlU3RyaW5ncykKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaW5kX2lu
X3BhZ2UuaHRtbCIpOworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpbmRfaW5fcGFn
ZV9mcmFtZS5odG1sIik7CisKKyAgICBGaW5kVXBkYXRlV2ViRnJhbWVDbGllbnQgY2xpZW50Owor
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5k
TG9hZChtX2Jhc2VVUkwgKyAiZmluZF9pbl9wYWdlLmh0bWwiLCB0cnVlLCAmY2xpZW50KTsKKyAg
ICB3ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSg2NDAsIDQ4MCkpOworICAgIHdlYlZpZXctPmxheW91
dCgpOworICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBrRmluZFN0cmluZyA9ICJyZXN1bHQiOworICAgIHN0YXRpYyBj
b25zdCBpbnQga0ZpbmRJZGVudGlmaWVyID0gMTIzNDU7CisKKyAgICBXZWJGaW5kT3B0aW9ucyBv
cHRpb25zOworICAgIFdlYlN0cmluZyBzZWFyY2hUZXh0ID0gV2ViU3RyaW5nOjpmcm9tVVRGOChr
RmluZFN0cmluZyk7CisgICAgV2ViRnJhbWVJbXBsKiBtYWluRnJhbWUgPSBzdGF0aWNfY2FzdDxX
ZWJGcmFtZUltcGwqPih3ZWJWaWV3LT5tYWluRnJhbWUoKSk7CisKKyAgICBmb3IgKFdlYkZyYW1l
KiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyYXZlcnNlTmV4dChm
YWxzZSkpCisgICAgICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5maW5kKGtGaW5kSWRlbnRpZmllciwg
c2VhcmNoVGV4dCwgb3B0aW9ucywgZmFsc2UsIDApKTsKKworICAgIHdlYmtpdF9zdXBwb3J0OjpS
dW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50LmZpbmRSZXN1
bHRzQXJlUmVhZHkoKSk7CisKKyAgICAvLyBEZXRhY2ggdGhlIGZyYW1lIGJldHdlZW4gZmluZGlu
ZyBhbmQgc2NvcGluZy4KKyAgICBXZWJGcmFtZUltcGwqIHNlY29uZEZyYW1lID0gc3RhdGljX2Nh
c3Q8V2ViRnJhbWVJbXBsKj4obWFpbkZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKTsKKyAgICBz
ZWNvbmRGcmFtZS0+ZnJhbWUoKS0+d2lsbERldGFjaFBhZ2UoKTsKKyAgICBzZWNvbmRGcmFtZS0+
ZnJhbWUoKS0+ZGV0YWNoRnJvbVBhZ2UoKTsKKworICAgIG1haW5GcmFtZS0+cmVzZXRNYXRjaENv
dW50KCk7CisKKyAgICBmb3IgKFdlYkZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyYXZlcnNlTmV4dChmYWxzZSkpCisgICAgICAgIGZyYW1lLT5zY29wZVN0
cmluZ01hdGNoZXMoa0ZpbmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCB0cnVlKTsK
KworICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBFWFBF
Q1RfVFJVRShjbGllbnQuZmluZFJlc3VsdHNBcmVSZWFkeSgpKTsKKyAgICB3ZWJWaWV3LT5jbG9z
ZSgpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kRGV0YWNoTWFpbkZyYW1lQmVmb3Jl
U2NvcGVTdHJpbmdzKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpbmRfaW5f
cGFnZS5odG1sIik7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdl
X2ZyYW1lLmh0bWwiKTsKKworICAgIEZpbmRVcGRhdGVXZWJGcmFtZUNsaWVudCBjbGllbnQ7Cisg
ICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRM
b2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRydWUsICZjbGllbnQpOworICAg
IHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7CisgICAgd2ViVmlldy0+bGF5b3V0
KCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworCisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGtGaW5kU3RyaW5nID0gInJlc3VsdCI7CisgICAgc3RhdGljIGNv
bnN0IGludCBrRmluZElkZW50aWZpZXIgPSAxMjM0NTsKKworICAgIFdlYkZpbmRPcHRpb25zIG9w
dGlvbnM7CisgICAgV2ViU3RyaW5nIHNlYXJjaFRleHQgPSBXZWJTdHJpbmc6OmZyb21VVEY4KGtG
aW5kU3RyaW5nKTsKKyAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZSA9IHN0YXRpY19jYXN0PFdl
YkZyYW1lSW1wbCo+KHdlYlZpZXctPm1haW5GcmFtZSgpKTsKKworICAgIGZvciAoV2ViRnJhbWUq
IGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZh
bHNlKSkKKyAgICAgICAgRVhQRUNUX1RSVUUoZnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlmaWVyLCBz
ZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxzZSwgMCkpOworCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1
bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQuZmluZFJlc3Vs
dHNBcmVSZWFkeSgpKTsKKworICAgIC8vIERldGFjaCB0aGUgZnJhbWUgYmV0d2VlbiBmaW5kaW5n
IGFuZCBzY29waW5nLgorICAgIG1haW5GcmFtZS0+ZnJhbWUoKS0+d2lsbERldGFjaFBhZ2UoKTsK
KyAgICBtYWluRnJhbWUtPmZyYW1lKCktPmRldGFjaEZyb21QYWdlKCk7CisKKyAgICBtYWluRnJh
bWUtPnJlc2V0TWF0Y2hDb3VudCgpOworCisgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWlu
RnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQorICAgICAg
ICBmcmFtZS0+c2NvcGVTdHJpbmdNYXRjaGVzKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwg
b3B0aW9ucywgdHJ1ZSk7CisKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3Nh
Z2VzKCk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7Cisg
ICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKworCitURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kRGV0
YWNoRnJhbWVXaGlsZVNjb3BpbmdTdHJpbmdzKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVS
TExvYWQoImZpbmRfaW5fcGFnZS5odG1sIik7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9h
ZCgiZmluZF9pbl9wYWdlX2ZyYW1lLmh0bWwiKTsKKworICAgIEZpbmRVcGRhdGVXZWJGcmFtZUNs
aWVudCBjbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNy
ZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRydWUs
ICZjbGllbnQpOworICAgIHdlYlZpZXctPnJlc2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7CisgICAg
d2ViVmlldy0+bGF5b3V0KCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGtGaW5kU3RyaW5nID0gInJlc3VsdCI7
CisgICAgc3RhdGljIGNvbnN0IGludCBrRmluZElkZW50aWZpZXIgPSAxMjM0NTsKKworICAgIFdl
YkZpbmRPcHRpb25zIG9wdGlvbnM7CisgICAgV2ViU3RyaW5nIHNlYXJjaFRleHQgPSBXZWJTdHJp
bmc6OmZyb21VVEY4KGtGaW5kU3RyaW5nKTsKKyAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZSA9
IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYlZpZXctPm1haW5GcmFtZSgpKTsKKworICAg
IGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJhdmVyc2VOZXh0KGZhbHNlKSkKKyAgICAgICAgRVhQRUNUX1RSVUUoZnJhbWUtPmZpbmQoa0Zp
bmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxzZSwgMCkpOworCisgICAgd2Vi
a2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIEVYUEVDVF9GQUxTRShj
bGllbnQuZmluZFJlc3VsdHNBcmVSZWFkeSgpKTsKKworICAgIG1haW5GcmFtZS0+cmVzZXRNYXRj
aENvdW50KCk7CisKKyAgICBmb3IgKFdlYkZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyYXZlcnNlTmV4dChmYWxzZSkpCisgICAgICAgIGZyYW1lLT5zY29w
ZVN0cmluZ01hdGNoZXMoa0ZpbmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCB0cnVl
KTsKKworICAgIC8vIFRoZSBmaXJzdCBzY29wZVN0cmluZ01hdGNoZXMgd2lsbCBoYXZlIHJlc2V0
IHRoZSBzdGF0ZS4gRGV0YWNoIGJlZm9yZSBpdCBhY3R1YWxseSBzY29wZXMuCisgICAgV2ViRnJh
bWVJbXBsKiBzZWNvbmRGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1haW5GcmFt
ZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSk7CisgICAgc2Vjb25kRnJhbWUtPmZyYW1lKCktPndpbGxE
ZXRhY2hQYWdlKCk7CisgICAgc2Vjb25kRnJhbWUtPmZyYW1lKCktPmRldGFjaEZyb21QYWdlKCk7
CisKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgRVhQ
RUNUX1RSVUUoY2xpZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7CisgICAgd2ViVmlldy0+Y2xv
c2UoKTsKK30KKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgRmluZERldGFjaE1haW5GcmFtZVdoaWxl
U2NvcGluZ1N0cmluZ3MpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmluZF9p
bl9wYWdlLmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaW5kX2luX3Bh
Z2VfZnJhbWUuaHRtbCIpOworCisgICAgRmluZFVwZGF0ZVdlYkZyYW1lQ2xpZW50IGNsaWVudDsK
KyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0Fu
ZExvYWQobV9iYXNlVVJMICsgImZpbmRfaW5fcGFnZS5odG1sIiwgdHJ1ZSwgJmNsaWVudCk7Cisg
ICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsKKyAgICB3ZWJWaWV3LT5sYXlv
dXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisKKyAg
ICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAicmVzdWx0IjsKKyAgICBzdGF0aWMg
Y29uc3QgaW50IGtGaW5kSWRlbnRpZmllciA9IDEyMzQ1OworCisgICAgV2ViRmluZE9wdGlvbnMg
b3B0aW9uczsKKyAgICBXZWJTdHJpbmcgc2VhcmNoVGV4dCA9IFdlYlN0cmluZzo6ZnJvbVVURjgo
a0ZpbmRTdHJpbmcpOworICAgIFdlYkZyYW1lSW1wbCogbWFpbkZyYW1lID0gc3RhdGljX2Nhc3Q8
V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkpOworCisgICAgZm9yIChXZWJGcmFt
ZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQo
ZmFsc2UpKQorICAgICAgICBFWFBFQ1RfVFJVRShmcmFtZS0+ZmluZChrRmluZElkZW50aWZpZXIs
IHNlYXJjaFRleHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CisKKyAgICB3ZWJraXRfc3VwcG9ydDo6
UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5maW5kUmVz
dWx0c0FyZVJlYWR5KCkpOworCisgICAgbWFpbkZyYW1lLT5yZXNldE1hdGNoQ291bnQoKTsKKwor
ICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKKyAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hl
cyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOworCisgICAgLy8g
VGhlIGZpcnN0IHNjb3BlU3RyaW5nTWF0Y2hlcyB3aWxsIGhhdmUgcmVzZXQgdGhlIHN0YXRlLiBE
ZXRhY2ggYmVmb3JlIGl0IGFjdHVhbGx5IHNjb3Blcy4KKyAgICBtYWluRnJhbWUtPmZyYW1lKCkt
PndpbGxEZXRhY2hQYWdlKCk7CisgICAgbWFpbkZyYW1lLT5mcmFtZSgpLT5kZXRhY2hGcm9tUGFn
ZSgpOworCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAg
IEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOworICAgIHdlYlZpZXct
PmNsb3NlKCk7Cit9CisKIHN0YXRpYyBXZWJWaWV3KiBjcmVhdGVXZWJWaWV3Rm9yVGV4dFNlbGVj
dGlvbihjb25zdCBzdGQ6OnN0cmluZyYgdXJsKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBG
cmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCh1cmwsIHRydWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166213</attachid>
            <date>2012-09-28 05:01:53 -0700</date>
            <delta_ts>2012-09-28 09:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97807-20120928130109.patch</filename>
            <type>text/plain</type>
            <size>19982</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGQ4M2RiNzYwNzI2ZGQ5ZGI0YmIwZDJhNTM5NjM2MjQxY2I2YTJkY2MuLjg1OGIzYWE3ZGMxNzIx
NWQzMDUyNjE0ZTQ2MDA3NTU4YmQ3MzNiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTItMDktMjggIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gRml4IHRoZSBmaW5kLWlu
LXBhZ2UgaW1wbGVtZW50YXRpb24gZm9yIGRldGFjaGluZyBmcmFtZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCBvZiA5NzY4OC4gSW50
cm9kdWNlcyBwcm9wZXIgdGVzdCBjb3ZlcmFnZSBmb3IgdGhlIGZpbmQtaW4tcGFnZQorICAgICAg
ICBmZWF0dXJlIGluIGRldGFjaGluZy9kZXRhY2hlZCBmcmFtZSBzaXR1YXRpb25zLCBmaXhpbmcg
YSBmZXcgY3Jhc2hlcyBhbmQKKyAgICAgICAgZW5zdXJpbmcgdGhhdCBhIGZpbmFsIHJlcGx5IGlz
IGFsd2F5cyBzZW50LgorCisgICAgICAgICogcHVibGljL1dlYk5vZGUuaDoKKyAgICAgICAgKiBz
cmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmaW5k
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZsdXNoQ3VycmVudFNjb3BpbmdFZmZvcnQp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmaW5p
c2hDdXJyZW50U2NvcGluZ0VmZm9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6
Y2FuY2VsUGVuZGluZ1Njb3BpbmdFZmZvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUlt
cGw6OldlYkZyYW1lSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2V0V2Vi
Q29yZUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjppbml0aWFsaXplQXNN
YWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNyZWF0ZUNoaWxkRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnNob3VsZFNjb3BlTWF0Y2hlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6d2lsbERldGFjaFBhZ2UpOgorICAgICAg
ICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKFdlYkZyYW1lSW1wbCk6CisgICAgICAg
ICogc3JjL1dlYk5vZGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlOjpyZW1vdmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL2RhdGEvZmluZF9pbl9wYWdlLmh0bWw6CisKIDIwMTItMDktMjcgIE5hc2tv
IE9za292ICA8bmFza29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbWV0
aG9kcyBmcm9tIENocm9taXVtIFdlYktpdCBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJOb2RlLmgKaW5kZXggOTAyYjM3NjY5OGY0MzgxYmZiODhmM2Q2NGQ4NGExOTk2MTU2OWVi
NS4uNTg2OWFlZWM2Mjc3NTI3YmU4NzFiZDI0NzRhMGY2YWM0M2RlYzdlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoK
ICAgICBXRUJLSVRfRVhQT1JUIFdlYk5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0
IFdlYlN0cmluZyYpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViRWxlbWVudCByb290RWRp
dGFibGVFbGVtZW50KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGZvY3VzZWQoKSBj
b25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgcmVtb3ZlKCk7CiAKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIG5vZGUgaGFzIGEgbm9uLWVtcHR5IGJvdW5kaW5nIGJveCBpbiBsYXlvdXQu
CiAgICAgLy8gVGhpcyBkb2VzIG5vdCAxMDAlIGd1YXJhbnRlZSB0aGUgdXNlciBjYW4gc2VlIGl0
LCBidXQgaXMgcHJldHR5IGNsb3NlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAKaW5kZXggODlkZDFiYWM5MjU1OTQ0MjE4NzYwZDhkYWNhZmE4YWFiODMyMmE3
MS4uNWY4ZjhiMWFiNTUxY2YzMTVjMWY1Y2JiNjY1ODI1YjdlNjAyYjAwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC01MjcsOCArNTI3LDYgQEAg
V2ViRnJhbWVJbXBsOjpGaW5kTWF0Y2g6OkZpbmRNYXRjaChQYXNzUmVmUHRyPFJhbmdlPiByYW5n
ZSwgaW50IG9yZGluYWwpCiB7CiB9CiAKLS8vIFdlYkZyYW1lIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogY2xhc3Mg
V2ViRnJhbWVJbXBsOjpEZWZlcnJlZFNjb3BlU3RyaW5nTWF0Y2hlcyB7CiBwdWJsaWM6CiAgICAg
RGVmZXJyZWRTY29wZVN0cmluZ01hdGNoZXMoV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSwKQEAgLTU2
MSw3ICs1NTksNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXNldDsKIH07CiAKLQogLy8gV2Vi
RnJhbWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBpbnQgV2ViRnJhbWU6Omluc3RhbmNlQ291bnQoKQpAQCAtMTYy
MCw2ICsxNjE3LDkgQEAgYm9vbCBXZWJGcmFtZUltcGw6OmZpbmQoaW50IGlkZW50aWZpZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHdyYXBXaXRoaW5GcmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYlJlY3QqIHNlbGVjdGlvblJlY3QpCiB7CisgICAgaWYgKCFmcmFtZSgp
IHx8ICFmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFdlYkZy
YW1lSW1wbCogbWFpbkZyYW1lSW1wbCA9IHZpZXdJbXBsKCktPm1haW5GcmFtZUltcGwoKTsKIAog
ICAgIGlmICghb3B0aW9ucy5maW5kTmV4dCkKQEAgLTE3MTgsMTIgKzE3MTgsMTQgQEAgdm9pZCBX
ZWJGcmFtZUltcGw6OnNjb3BlU3RyaW5nTWF0Y2hlcyhpbnQgaWRlbnRpZmllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViRmluZE9wdGlvbnMmIG9wdGlv
bnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzZXQpCiB7
Ci0gICAgV2ViRnJhbWVJbXBsKiBtYWluRnJhbWVJbXBsID0gdmlld0ltcGwoKS0+bWFpbkZyYW1l
SW1wbCgpOwotCiAgICAgaWYgKHJlc2V0KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBicmFuZCBu
ZXcgc2VhcmNoLCBzbyB3ZSBuZWVkIHRvIHJlc2V0IGV2ZXJ5dGhpbmcuCiAgICAgICAgIC8vIFNj
b3BpbmcgaXMganVzdCBhYm91dCB0byBiZWdpbi4KLSAgICAgICAgbV9zY29waW5nQ29tcGxldGUg
PSBmYWxzZTsKKyAgICAgICAgbV9zY29waW5nSW5Qcm9ncmVzcyA9IHRydWU7CisKKyAgICAgICAg
Ly8gTmVlZCB0byBrZWVwIHRoZSBjdXJyZW50IGlkZW50aWZpZXIgbG9jYWxseSBpbiBvcmRlciB0
byBmaW5pc2ggdGhlCisgICAgICAgIC8vIHJlcXVlc3QgaW4gY2FzZSB0aGUgZnJhbWUgaXMgZGV0
YWNoZWQgZHVyaW5nIHRoZSBwcm9jZXNzLgorICAgICAgICBtX2ZpbmRSZXF1ZXN0SWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7CiAKICAgICAgICAgLy8gQ2xlYXIgaGlnaGxpZ2h0aW5nIGZvciB0aGlz
IGZyYW1lLgogICAgICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkgJiYgZnJhbWUo
KS0+ZWRpdG9yKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkKQEAgLTE3Mzgs
NyArMTc0MCw5IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50IGlk
ZW50aWZpZXIsCiAKICAgICAgICAgbV9yZXN1bWVTY29waW5nRnJvbVJhbmdlID0gMDsKIAotICAg
ICAgICBtYWluRnJhbWVJbXBsLT5tX2ZyYW1lc1Njb3BpbmdDb3VudCsrOworICAgICAgICAvLyBU
aGUgdmlldyBtaWdodCBiZSBudWxsIG9uIGRldGFjaGVkIGZyYW1lcy4KKyAgICAgICAgaWYgKGZy
YW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICAgICAgdmlld0ltcGwoKS0+bWFpbkZy
YW1lSW1wbCgpLT5tX2ZyYW1lc1Njb3BpbmdDb3VudCsrOwogCiAgICAgICAgIC8vIE5vdywgZGVm
ZXIgc2NvcGluZyB1bnRpbCBsYXRlciB0byBhbGxvdyBmaW5kIG9wZXJhdGlvbiB0byBmaW5pc2gg
cXVpY2tseS4KICAgICAgICAgc2NvcGVTdHJpbmdNYXRjaGVzU29vbigKQEAgLTE3NTcsNiArMTc2
MSw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50IGlkZW50aWZp
ZXIsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFt
ZUltcGwgPSB2aWV3SW1wbCgpLT5tYWluRnJhbWVJbXBsKCk7CiAgICAgUmVmUHRyPFJhbmdlPiBz
ZWFyY2hSYW5nZShyYW5nZU9mQ29udGVudHMoZnJhbWUoKS0+ZG9jdW1lbnQoKSkpOwogCiAgICAg
Tm9kZSogb3JpZ2luYWxFbmRDb250YWluZXIgPSBzZWFyY2hSYW5nZS0+ZW5kQ29udGFpbmVyKCk7
CkBAIC0xODg2LDIwICsxODkxLDI5IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01h
dGNoZXMoaW50IGlkZW50aWZpZXIsCiAgICAgZmluaXNoQ3VycmVudFNjb3BpbmdFZmZvcnQoaWRl
bnRpZmllcik7CiB9CiAKLXZvaWQgV2ViRnJhbWVJbXBsOjpmaW5pc2hDdXJyZW50U2NvcGluZ0Vm
Zm9ydChpbnQgaWRlbnRpZmllcikKK3ZvaWQgV2ViRnJhbWVJbXBsOjpmbHVzaEN1cnJlbnRTY29w
aW5nRWZmb3J0KGludCBpZGVudGlmaWVyKQogeworICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUo
KS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFt
ZUltcGwgPSB2aWV3SW1wbCgpLT5tYWluRnJhbWVJbXBsKCk7CiAKICAgICAvLyBUaGlzIGZyYW1l
IGhhcyBubyBmdXJ0aGVyIHNjb3BpbmcgbGVmdCwgc28gaXQgaXMgZG9uZS4gT3RoZXIgZnJhbWVz
IG1pZ2h0LAogICAgIC8vIG9mIGNvdXJzZSwgY29udGludWUgdG8gc2NvcGUgbWF0Y2hlcy4KLSAg
ICBtX3Njb3BpbmdDb21wbGV0ZSA9IHRydWU7CiAgICAgbWFpbkZyYW1lSW1wbC0+bV9mcmFtZXNT
Y29waW5nQ291bnQtLTsKLSAgICBtX2xhc3RGaW5kUmVxdWVzdENvbXBsZXRlZFdpdGhOb01hdGNo
ZXMgPSAhbV9sYXN0TWF0Y2hDb3VudDsKIAogICAgIC8vIElmIHRoaXMgaXMgdGhlIGxhc3QgZnJh
bWUgdG8gZmluaXNoIHNjb3Bpbmcgd2UgbmVlZCB0byB0cmlnZ2VyIHRoZSBmaW5hbAogICAgIC8v
IHVwZGF0ZSB0byBiZSBzZW50LgogICAgIGlmICghbWFpbkZyYW1lSW1wbC0+bV9mcmFtZXNTY29w
aW5nQ291bnQpCiAgICAgICAgIG1haW5GcmFtZUltcGwtPmluY3JlYXNlTWF0Y2hDb3VudCgwLCBp
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJGcmFtZUltcGw6OmZpbmlzaEN1cnJlbnRTY29waW5n
RWZmb3J0KGludCBpZGVudGlmaWVyKQoreworICAgIGZsdXNoQ3VycmVudFNjb3BpbmdFZmZvcnQo
aWRlbnRpZmllcik7CisKKyAgICBtX3Njb3BpbmdJblByb2dyZXNzID0gZmFsc2U7CisgICAgbV9s
YXN0RmluZFJlcXVlc3RDb21wbGV0ZWRXaXRoTm9NYXRjaGVzID0gIW1fbGFzdE1hdGNoQ291bnQ7
CiAKICAgICAvLyBUaGlzIGZyYW1lIGlzIGRvbmUsIHNvIHNob3cgYW55IHNjcm9sbGJhciB0aWNr
bWFya3Mgd2UgaGF2ZW4ndCBkcmF3biB5ZXQuCiAgICAgaW52YWxpZGF0ZUFyZWEoSW52YWxpZGF0
ZVNjcm9sbGJhcik7CkBAIC0xOTEyLDggKzE5MjYsMTEgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmNh
bmNlbFBlbmRpbmdTY29waW5nRWZmb3J0KCkKIAogICAgIG1fYWN0aXZlTWF0Y2hJbmRleEluQ3Vy
cmVudEZyYW1lID0gLTE7CiAKLSAgICBpZiAoIW1fc2NvcGluZ0NvbXBsZXRlKQorICAgIC8vIExh
c3QgcmVxdWVzdCBkaWRuJ3QgY29tcGxldGUuCisgICAgaWYgKG1fc2NvcGluZ0luUHJvZ3Jlc3Mp
CiAgICAgICAgIG1fbGFzdEZpbmRSZXF1ZXN0Q29tcGxldGVkV2l0aE5vTWF0Y2hlcyA9IGZhbHNl
OworCisgICAgbV9zY29waW5nSW5Qcm9ncmVzcyA9IGZhbHNlOwogfQogCiB2b2lkIFdlYkZyYW1l
SW1wbDo6aW5jcmVhc2VNYXRjaENvdW50KGludCBjb3VudCwgaW50IGlkZW50aWZpZXIpCkBAIC0y
Mjc1LDcgKzIyOTIsOCBAQCBQYXNzUmVmUHRyPFdlYkZyYW1lSW1wbD4gV2ViRnJhbWVJbXBsOjpj
cmVhdGUoV2ViRnJhbWVDbGllbnQqIGNsaWVudCkKIH0KIAogV2ViRnJhbWVJbXBsOjpXZWJGcmFt
ZUltcGwoV2ViRnJhbWVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fZnJhbWVMb2FkZXJDbGllbnQo
dGhpcykKKyAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcigwKQorICAgICwgbV9mcmFtZUxv
YWRlckNsaWVudCh0aGlzKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9mcmFtZSgw
KQogICAgICwgbV9jdXJyZW50QWN0aXZlTWF0Y2hGcmFtZSgwKQpAQCAtMjI4NSw3ICsyMzAzLDgg
QEAgV2ViRnJhbWVJbXBsOjpXZWJGcmFtZUltcGwoV2ViRnJhbWVDbGllbnQqIGNsaWVudCkKICAg
ICAsIG1fbGFzdE1hdGNoQ291bnQoLTEpCiAgICAgLCBtX3RvdGFsTWF0Y2hDb3VudCgtMSkKICAg
ICAsIG1fZnJhbWVzU2NvcGluZ0NvdW50KC0xKQotICAgICwgbV9zY29waW5nQ29tcGxldGUoZmFs
c2UpCisgICAgLCBtX2ZpbmRSZXF1ZXN0SWRlbnRpZmllcigtMSkKKyAgICAsIG1fc2NvcGluZ0lu
UHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2xhc3RGaW5kUmVxdWVzdENvbXBsZXRlZFdpdGhOb01h
dGNoZXMoZmFsc2UpCiAgICAgLCBtX25leHRJbnZhbGlkYXRlQWZ0ZXIoMCkKICAgICAsIG1fZmlu
ZE1hdGNoTWFya2Vyc1ZlcnNpb24oMCkKQEAgLTIzMDYsMTAgKzIzMjUsMTcgQEAgV2ViRnJhbWVJ
bXBsOjp+V2ViRnJhbWVJbXBsKCkKICAgICBjYW5jZWxQZW5kaW5nU2NvcGluZ0VmZm9ydCgpOwog
fQogCit2b2lkIFdlYkZyYW1lSW1wbDo6c2V0V2ViQ29yZUZyYW1lKFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSkKK3sKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIG1fZnJhbWUgPSBmcmFtZTsKKyAgICBv
YnNlcnZlRnJhbWUobV9mcmFtZSk7Cit9CisKIHZvaWQgV2ViRnJhbWVJbXBsOjppbml0aWFsaXpl
QXNNYWluRnJhbWUoV2ViQ29yZTo6UGFnZSogcGFnZSkKIHsKICAgICBSZWZQdHI8RnJhbWU+IGZy
YW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLCAwLCAmbV9mcmFtZUxvYWRlckNsaWVudCk7Ci0gICAg
bV9mcmFtZSA9IGZyYW1lLmdldCgpOworICAgIHNldFdlYkNvcmVGcmFtZShmcmFtZS5nZXQoKSk7
CiAKICAgICAvLyBBZGQgcmVmZXJlbmNlIG9uIGJlaGFsZiBvZiBGcmFtZUxvYWRlci4gIFNlZSBj
b21tZW50cyBpbgogICAgIC8vIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ry
b3llZCBmb3IgbW9yZSBpbmZvLgpAQCAtMjMzMiw3ICsyMzU4LDcgQEAgUGFzc1JlZlB0cjxGcmFt
ZT4gV2ViRnJhbWVJbXBsOjpjcmVhdGVDaGlsZEZyYW1lKAogCiAgICAgUmVmUHRyPEZyYW1lPiBj
aGlsZEZyYW1lID0gRnJhbWU6OmNyZWF0ZSgKICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLCBvd25l
ckVsZW1lbnQsICZ3ZWJmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudCk7Ci0gICAgd2ViZnJhbWUt
Pm1fZnJhbWUgPSBjaGlsZEZyYW1lLmdldCgpOworICAgIHdlYmZyYW1lLT5zZXRXZWJDb3JlRnJh
bWUoY2hpbGRGcmFtZS5nZXQoKSk7CiAKICAgICBjaGlsZEZyYW1lLT50cmVlKCktPnNldE5hbWUo
cmVxdWVzdC5mcmFtZU5hbWUoKSk7CiAKQEAgLTI1NzEsNyArMjU5Nyw4IEBAIGJvb2wgV2ViRnJh
bWVJbXBsOjpzaG91bGRTY29wZU1hdGNoZXMoY29uc3QgU3RyaW5nJiBzZWFyY2hUZXh0KQogewog
ICAgIC8vIERvbid0IHNjb3BlIGlmIHdlIGNhbid0IGZpbmQgYSBmcmFtZSBvciBhIHZpZXcuCiAg
ICAgLy8gVGhlIHVzZXIgbWF5IGhhdmUgY2xvc2VkIHRoZSB0YWIvYXBwbGljYXRpb24sIHNvIGFi
b3J0LgotICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+dmlldygpKQorICAgIC8vIEFsc28g
aWdub3JlIGRldGFjaGVkIGZyYW1lcywgYXMgbWFueSBmaW5kIG9wZXJhdGlvbnMgcmVwb3J0IHRv
IHRoZSBtYWluIGZyYW1lLgorICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+dmlldygpIHx8
ICFmcmFtZSgpLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChm
cmFtZSgpLT5kb2N1bWVudCgpICYmIGZyYW1lKCktPnZpZXcoKSk7CkBAIC0yNjU5LDQgKzI2ODYs
MjEgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmxvYWRKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmIHVy
bCkKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPndyaXRlcigpLT5yZXBs
YWNlRG9jdW1lbnQoc2NyaXB0UmVzdWx0LCBvd25lckRvY3VtZW50LmdldCgpKTsKIH0KIAordm9p
ZCBXZWJGcmFtZUltcGw6OndpbGxEZXRhY2hQYWdlKCkKK3sKKyAgICBpZiAoIWZyYW1lKCkgfHwg
IWZyYW1lKCktPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG8gbm90IGV4cGVj
dCBzdHJpbmcgc2NvcGluZyByZXN1bHRzIGZyb20gYW55IGZyYW1lcyB0aGF0IGdvdCBkZXRhY2hl
ZAorICAgIC8vIGluIHRoZSBtaWRkbGUgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICBpZiAobV9zY29w
aW5nSW5Qcm9ncmVzcykgeworCisgICAgICAgIC8vIFRoZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhh
dCB0aGUgZnJhbWUgYmVpbmcgZGV0YWNoZWQgd2FzIHRoZSBvbmx5CisgICAgICAgIC8vIHBlbmRp
bmcgb25lLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBmaW5hbCByZXBsaWVzIGNhbiBiZSBzZW50Lgor
ICAgICAgICBmbHVzaEN1cnJlbnRTY29waW5nRWZmb3J0KG1fZmluZFJlcXVlc3RJZGVudGlmaWVy
KTsKKworICAgICAgICBjYW5jZWxQZW5kaW5nU2NvcGluZ0VmZm9ydCgpOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5oCmluZGV4IDM4NDY2ZTc3MDUxZDUzY2FhMzViNmIxYjhkNGE2YmMxZmJkNDZhMTguLmRm
N2Y5Y2NlNDkzNWZhMTQyNGNiYTBlNGQ1MzRlYWEwZmRmYTlmZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
V2ViRnJhbWUuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNjksNyAr
NzAsMTAgQEAgc3RydWN0IFdlYlByaW50UGFyYW1zOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFdlYlZlY3RvcjsKIAogLy8gSW1wbGVtZW50YXRpb24gb2YgV2ViRnJhbWUsIG5vdGUgdGhh
dCB0aGlzIGlzIGEgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0LgotY2xhc3MgV2ViRnJhbWVJbXBs
IDogcHVibGljIFdlYkZyYW1lLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJGcmFtZUltcGw+IHsKK2Ns
YXNzIFdlYkZyYW1lSW1wbAorICAgIDogcHVibGljIFdlYkZyYW1lCisgICAgLCBwdWJsaWMgUmVm
Q291bnRlZDxXZWJGcmFtZUltcGw+CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICAvLyBXZWJGcmFtZSBtZXRob2RzOgogICAgIHZp
cnR1YWwgV2ViU3RyaW5nIHVuaXF1ZU5hbWUoKSBjb25zdDsKQEAgLTIzOSw2ICsyNDMsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJG
b3IoaW50IGZyb20sIGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGxh
eWVyVHJlZUFzVGV4dChib29sIHNob3dEZWJ1Z0luZm8gPSBmYWxzZSkgY29uc3Q7CiAKKyAgICAv
LyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgbWV0aG9kcy4KKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbERldGFjaFBhZ2UoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZyYW1l
SW1wbD4gY3JlYXRlKFdlYkZyYW1lQ2xpZW50KiBjbGllbnQpOwogICAgIHZpcnR1YWwgfldlYkZy
YW1lSW1wbCgpOwogCkBAIC0zMzAsNiArMzM3LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJGcmFt
ZUxvYWRlckNsaWVudAogICAgIHZvaWQgY2xvc2luZygpOwogCisgICAgLy8gU2V0cyB0aGUgbG9j
YWwgV2ViQ29yZSBmcmFtZSBhbmQgcmVnaXN0ZXJzIGRlc3RydWN0aW9uIG9ic2VydmVycy4KKyAg
ICB2b2lkIHNldFdlYkNvcmVGcmFtZShXZWJDb3JlOjpGcmFtZSopOworCiAgICAgLy8gTm90aWZp
ZXMgdGhlIGRlbGVnYXRlIGFib3V0IGEgbmV3IHNlbGVjdGlvbiByZWN0LgogICAgIHZvaWQgcmVw
b3J0RmluZEluUGFnZVNlbGVjdGlvbigKICAgICAgICAgY29uc3QgV2ViUmVjdCYgc2VsZWN0aW9u
UmVjdCwgaW50IGFjdGl2ZU1hdGNoT3JkaW5hbCwgaW50IGlkZW50aWZpZXIpOwpAQCAtMzgxLDYg
KzM5MSwxMSBAQCBwcml2YXRlOgogICAgIC8vIHdhcyBzZWFyY2hlZC4KICAgICBib29sIHNob3Vs
ZFNjb3BlTWF0Y2hlcyhjb25zdCBXVEY6OlN0cmluZyYgc2VhcmNoVGV4dCk7CiAKKyAgICAvLyBS
ZW1vdmVzIHRoZSBjdXJyZW50IGZyYW1lIGZyb20gdGhlIGdsb2JhbCBzY29waW5nIGVmZm9ydCBh
bmQgdHJpZ2dlcnMgYW55CisgICAgLy8gdXBkYXRlcyBpZiBhcHByb3ByaWF0ZS4gVGhpcyBtZXRo
b2QgZG9lcyBub3QgbWFyayB0aGUgc2NvcGluZyBvcGVyYXRpb24KKyAgICAvLyBhcyBmaW5pc2hl
ZC4KKyAgICB2b2lkIGZsdXNoQ3VycmVudFNjb3BpbmdFZmZvcnQoaW50IGlkZW50aWZpZXIpOwor
CiAgICAgLy8gRmluaXNoZXMgdGhlIGN1cnJlbnQgc2NvcGluZyBlZmZvcnQgYW5kIHRyaWdnZXJz
IGFueSB1cGRhdGVzIGlmIGFwcHJvcHJpYXRlLgogICAgIHZvaWQgZmluaXNoQ3VycmVudFNjb3Bp
bmdFZmZvcnQoaW50IGlkZW50aWZpZXIpOwogCkBAIC00MzcsOCArNDUyLDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIEtlZXBzIHRyYWNrIG9mIGhvdyBtYW55IG1hdGNoZXMgdGhpcyBmcmFtZSBoYXMg
Zm91bmQgc28gZmFyLCBzbyB0aGF0IHdlCiAgICAgLy8gZG9uJ3QgbG9vc2UgY291bnQgYmV0d2Vl
biBzY29waW5nIGVmZm9ydHMsIGFuZCBpcyBhbHNvIHVzZWQgKGluIGNvbmp1bmN0aW9uCi0gICAg
Ly8gd2l0aCBtX2xhc3RTZWFyY2hTdHJpbmcgYW5kIG1fc2NvcGluZ0NvbXBsZXRlKSB0byBmaWd1
cmUgb3V0IGlmIHdlIG5lZWQgdG8KLSAgICAvLyBzZWFyY2ggdGhlIGZyYW1lIGFnYWluLgorICAg
IC8vIHdpdGggbV9sYXN0U2VhcmNoU3RyaW5nKSB0byBmaWd1cmUgb3V0IGlmIHdlIG5lZWQgdG8g
c2VhcmNoIHRoZSBmcmFtZSBhZ2Fpbi4KICAgICBpbnQgbV9sYXN0TWF0Y2hDb3VudDsKIAogICAg
IC8vIFRoaXMgdmFyaWFibGUga2VlcHMgYSBjdW11bGF0aXZlIHRvdGFsIG9mIG1hdGNoZXMgZm91
bmQgc28gZmFyIGZvciBBTEwgdGhlCkBAIC00NTEsOSArNDY1LDEyIEBAIHByaXZhdGU6CiAgICAg
Ly8gSXQgc2hvdWxkIGJlIC0xIGZvciBhbGwgb3RoZXIgZnJhbWVzLgogICAgIGludCBtX2ZyYW1l
c1Njb3BpbmdDb3VudDsKIAotICAgIC8vIEtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlIHNjb3Bp
bmcgZWZmb3J0IHdhcyBjb21wbGV0ZWQgKHRoZSB1c2VyIG1heQotICAgIC8vIGludGVycnVwdCBp
dCBiZWZvcmUgaXQgY29tcGxldGVzIGJ5IHN1Ym1pdHRpbmcgYSBuZXcgc2VhcmNoKS4KLSAgICBi
b29sIG1fc2NvcGluZ0NvbXBsZXRlOworICAgIC8vIElkZW50aWZpZXIgb2YgdGhlIGxhdGVzdCBm
aW5kLWluLXBhZ2UgcmVxdWVzdC4gUmVxdWlyZWQgdG8gYmUgc3RvcmVkIGluCisgICAgLy8gdGhl
IGZyYW1lIGluIG9yZGVyIHRvIHJlcGx5IGlmIHJlcXVpcmVkIGluIGNhc2UgdGhlIGZyYW1lIGlz
IGRldGFjaGVkLgorICAgIGludCBtX2ZpbmRSZXF1ZXN0SWRlbnRpZmllcjsKKworICAgIC8vIEtl
ZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlcmUgaXMgYW4gc2NvcGluZyBlZmZvcnQgb25nb2luZyBp
biB0aGUgZnJhbWUuCisgICAgYm9vbCBtX3Njb3BpbmdJblByb2dyZXNzOwogCiAgICAgLy8gS2Vl
cHMgdHJhY2sgb2Ygd2hldGhlciB0aGUgbGFzdCBmaW5kIHJlcXVlc3QgY29tcGxldGVkIGl0cyBz
Y29waW5nIGVmZm9ydAogICAgIC8vIHdpdGhvdXQgZmluZGluZyBhbnkgbWF0Y2hlcyBpbiB0aGlz
IGZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAppbmRleCBjNWU4MzZk
NGExYzdjZDI1OTc4OTZiODI0OWUzYmVmYzNmODk0ODZhLi5lZWFiMWMyMzVkYzE3MTc5MGYwZmZi
MGUwNmMzZTI4OGNhMzM2YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNw
cApAQCAtMjI1LDYgKzIyNSwxMyBAQCBib29sIFdlYk5vZGU6OmZvY3VzZWQoKSBjb25zdAogICAg
IHJldHVybiBtX3ByaXZhdGUtPmZvY3VzZWQoKTsKIH0KIAorYm9vbCBXZWJOb2RlOjpyZW1vdmUo
KQoreworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSA9IDA7CisgICAgbV9wcml2YXRl
LT5yZW1vdmUoZXhjZXB0aW9uQ29kZSk7CisgICAgcmV0dXJuICFleGNlcHRpb25Db2RlOworfQor
CiBib29sIFdlYk5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdAogewogICAgIG1f
cHJpdmF0ZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5k
ZXggYTAwNDliNjdlOGQ0MWI2MmJhNTI4NWI5YTEwMGQ2OWM2MDZmNDAzMS4uZGUxNDczMTliZWJl
ZDczMDU3ZWJkOWE1MzQxODBmMjhlYmU3ZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtOTAwLDYgKzkwMCw4IEBAIFRFU1RfRihXZWJG
cmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRjaFJlY3RzKQogICAgIFdlYkZyYW1lSW1wbCogbWFpbkZy
YW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkpOwog
ICAgIEVYUEVDVF9UUlVFKG1haW5GcmFtZS0+ZmluZChrRmluZElkZW50aWZpZXIsIHNlYXJjaFRl
eHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CiAKKyAgICBtYWluRnJhbWUtPnJlc2V0TWF0Y2hDb3Vu
dCgpOworCiAgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQogICAgICAgICBmcmFtZS0+c2NvcGVTdHJp
bmdNYXRjaGVzKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgdHJ1ZSk7CiAK
QEAgLTk5MCw2ICs5OTIsMTI5IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRj
aFJlY3RzKQogICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAKK1RFU1RfRihXZWJGcmFtZVRlc3Qs
IEZpbmRPbkRldGFjaGVkRnJhbWUpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgi
ZmluZF9pbl9wYWdlLmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaW5k
X2luX3BhZ2VfZnJhbWUuaHRtbCIpOworCisgICAgRmluZFVwZGF0ZVdlYkZyYW1lQ2xpZW50IGNs
aWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2Vi
Vmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpbmRfaW5fcGFnZS5odG1sIiwgdHJ1ZSwgJmNsaWVu
dCk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsKKyAgICB3ZWJWaWV3
LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7
CisKKyAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAicmVzdWx0IjsKKyAgICBz
dGF0aWMgY29uc3QgaW50IGtGaW5kSWRlbnRpZmllciA9IDEyMzQ1OworCisgICAgV2ViRmluZE9w
dGlvbnMgb3B0aW9uczsKKyAgICBXZWJTdHJpbmcgc2VhcmNoVGV4dCA9IFdlYlN0cmluZzo6ZnJv
bVVURjgoa0ZpbmRTdHJpbmcpOworICAgIFdlYkZyYW1lSW1wbCogbWFpbkZyYW1lID0gc3RhdGlj
X2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkpOworICAgIFdlYkZyYW1l
SW1wbCogc2Vjb25kRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtYWluRnJhbWUt
PnRyYXZlcnNlTmV4dChmYWxzZSkpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gaG9sZFNl
Y29uZEZyYW1lID0gc2Vjb25kRnJhbWUtPmZyYW1lKCk7CisKKyAgICAvLyBEZXRhY2ggdGhlIGZy
YW1lIGJlZm9yZSBmaW5kaW5nLgorICAgIEVYUEVDVF9UUlVFKG1haW5GcmFtZS0+ZG9jdW1lbnQo
KS5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKS5yZW1vdmUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRSht
YWluRnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxz
ZSwgMCkpOworICAgIEVYUEVDVF9GQUxTRShzZWNvbmRGcmFtZS0+ZmluZChrRmluZElkZW50aWZp
ZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CisKKyAgICB3ZWJraXRfc3VwcG9y
dDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5maW5k
UmVzdWx0c0FyZVJlYWR5KCkpOworCisgICAgbWFpbkZyYW1lLT5yZXNldE1hdGNoQ291bnQoKTsK
KworICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKKyAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0
Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOworCisgICAg
d2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIEVYUEVDVF9UUlVF
KGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOworCisgICAgaG9sZFNlY29uZEZyYW1lLnJl
bGVhc2UoKTsKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0
LCBGaW5kRGV0YWNoRnJhbWVCZWZvcmVTY29wZVN0cmluZ3MpCit7CisgICAgcmVnaXN0ZXJNb2Nr
ZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlLmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0
dHBVUkxMb2FkKCJmaW5kX2luX3BhZ2VfZnJhbWUuaHRtbCIpOworCisgICAgRmluZFVwZGF0ZVdl
YkZyYW1lQ2xpZW50IGNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVs
cGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpbmRfaW5fcGFnZS5odG1s
IiwgdHJ1ZSwgJmNsaWVudCk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODAp
KTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVu
ZGluZ01lc3NhZ2VzKCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAi
cmVzdWx0IjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtGaW5kSWRlbnRpZmllciA9IDEyMzQ1Owor
CisgICAgV2ViRmluZE9wdGlvbnMgb3B0aW9uczsKKyAgICBXZWJTdHJpbmcgc2VhcmNoVGV4dCA9
IFdlYlN0cmluZzo6ZnJvbVVURjgoa0ZpbmRTdHJpbmcpOworICAgIFdlYkZyYW1lSW1wbCogbWFp
bkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkp
OworICAgIFdlYkZyYW1lSW1wbCogc2Vjb25kRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUlt
cGwqPihtYWluRnJhbWUtPnRyYXZlcnNlTmV4dChmYWxzZSkpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gaG9sZFNlY29uZEZyYW1lID0gc2Vjb25kRnJhbWUtPmZyYW1lKCk7CisKKyAgICBm
b3IgKFdlYkZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
YXZlcnNlTmV4dChmYWxzZSkpCisgICAgICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5maW5kKGtGaW5k
SWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgZmFsc2UsIDApKTsKKworICAgIHdlYmtp
dF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xp
ZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7CisKKyAgICAvLyBEZXRhY2ggdGhlIGZyYW1lIGJl
dHdlZW4gZmluZGluZyBhbmQgc2NvcGluZy4KKyAgICBFWFBFQ1RfVFJVRShtYWluRnJhbWUtPmRv
Y3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoImZyYW1lIikucmVtb3ZlKCkpOworCisgICAgbWFpbkZy
YW1lLT5yZXNldE1hdGNoQ291bnQoKTsKKworICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKKyAgICAg
ICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQs
IG9wdGlvbnMsIHRydWUpOworCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOwor
CisgICAgaG9sZFNlY29uZEZyYW1lLnJlbGVhc2UoKTsKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOwor
fQorCitURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kRGV0YWNoRnJhbWVXaGlsZVNjb3BpbmdTdHJp
bmdzKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpbmRfaW5fcGFnZS5odG1s
Iik7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlX2ZyYW1lLmh0
bWwiKTsKKworICAgIEZpbmRVcGRhdGVXZWJGcmFtZUNsaWVudCBjbGllbnQ7CisgICAgV2ViVmll
dyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFz
ZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRydWUsICZjbGllbnQpOworICAgIHdlYlZpZXct
PnJlc2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7CisgICAgd2ViVmlldy0+bGF5b3V0KCk7CisgICAg
d2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGtGaW5kU3RyaW5nID0gInJlc3VsdCI7CisgICAgc3RhdGljIGNvbnN0IGludCBr
RmluZElkZW50aWZpZXIgPSAxMjM0NTsKKworICAgIFdlYkZpbmRPcHRpb25zIG9wdGlvbnM7Cisg
ICAgV2ViU3RyaW5nIHNlYXJjaFRleHQgPSBXZWJTdHJpbmc6OmZyb21VVEY4KGtGaW5kU3RyaW5n
KTsKKyAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1w
bCo+KHdlYlZpZXctPm1haW5GcmFtZSgpKTsKKyAgICBXZWJGcmFtZUltcGwqIHNlY29uZEZyYW1l
ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obWFpbkZyYW1lLT50cmF2ZXJzZU5leHQoZmFs
c2UpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGhvbGRTZWNvbmRGcmFtZSA9IHNlY29u
ZEZyYW1lLT5mcmFtZSgpOworCisgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQorICAgICAgICBFWFBF
Q1RfVFJVRShmcmFtZS0+ZmluZChrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMs
IGZhbHNlLCAwKSk7CisKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2Vz
KCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOworCisg
ICAgbWFpbkZyYW1lLT5yZXNldE1hdGNoQ291bnQoKTsKKworICAgIGZvciAoV2ViRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNl
KSkKKyAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNl
YXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOworCisgICAgLy8gVGhlIGZpcnN0IHNjb3BlU3RyaW5n
TWF0Y2hlcyB3aWxsIGhhdmUgcmVzZXQgdGhlIHN0YXRlLiBEZXRhY2ggYmVmb3JlIGl0IGFjdHVh
bGx5IHNjb3Blcy4KKyAgICBFWFBFQ1RfVFJVRShtYWluRnJhbWUtPmRvY3VtZW50KCkuZ2V0RWxl
bWVudEJ5SWQoImZyYW1lIikucmVtb3ZlKCkpOworCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFs
bFBlbmRpbmdNZXNzYWdlcygpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0Fy
ZVJlYWR5KCkpOworCisgICAgaG9sZFNlY29uZEZyYW1lLnJlbGVhc2UoKTsKKyAgICB3ZWJWaWV3
LT5jbG9zZSgpOworfQorCiBzdGF0aWMgV2ViVmlldyogY3JlYXRlV2ViVmlld0ZvclRleHRTZWxl
Y3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHVybCkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
RnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQodXJsLCB0cnVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maW5kX2luX3BhZ2UuaHRt
bCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maW5kX2luX3BhZ2UuaHRtbApp
bmRleCA2NDMwNzNhMTYyNDE0MmYzY2U5MmZmY2Q3Y2ZjNzc3YWFkZmY1OGE3Li5mNWQyOGE2NDQ0
ZjFjYTg1ZTc1MGJmYzI2NzIxZTNmODU5ZjQxZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvZmluZF9pbl9wYWdlLmh0bWwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ZpbmRfaW5fcGFnZS5odG1sCkBAIC02LDcgKzYsNyBAQAog
PGJvZHk+CiBUaGlzIGEgZmluZC1pbi1wYWdlIG1hdGNoIHJlY3QgdGVzdC48L2JyPgogcmVzdWx0
IDAwPC9icj4KLTxpZnJhbWUgc3JjPSJmaW5kX2luX3BhZ2VfZnJhbWUuaHRtbCIgaGVpZ2h0PSIz
MDAiIHNjcm9sbGluZz0ieWVzIj48L2lmcmFtZT4KKzxpZnJhbWUgc3JjPSJmaW5kX2luX3BhZ2Vf
ZnJhbWUuaHRtbCIgaWQ9ImZyYW1lIiBoZWlnaHQ9IjMwMCIgc2Nyb2xsaW5nPSJ5ZXMiPjwvaWZy
YW1lPgogPC9icj4KIHJlc3VsdCAwMQogPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166263</attachid>
            <date>2012-09-28 09:06:03 -0700</date>
            <delta_ts>2012-09-28 09:37:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97807-20120928170518.patch</filename>
            <type>text/plain</type>
            <size>20324</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGQ4M2RiNzYwNzI2ZGQ5ZGI0YmIwZDJhNTM5NjM2MjQxY2I2YTJkY2MuLjg1OGIzYWE3ZGMxNzIx
NWQzMDUyNjE0ZTQ2MDA3NTU4YmQ3MzNiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTItMDktMjggIExlYW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9n
cmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gRml4IHRoZSBmaW5kLWlu
LXBhZ2UgaW1wbGVtZW50YXRpb24gZm9yIGRldGFjaGluZyBmcmFtZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgwNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCBvZiA5NzY4OC4gSW50
cm9kdWNlcyBwcm9wZXIgdGVzdCBjb3ZlcmFnZSBmb3IgdGhlIGZpbmQtaW4tcGFnZQorICAgICAg
ICBmZWF0dXJlIGluIGRldGFjaGluZy9kZXRhY2hlZCBmcmFtZSBzaXR1YXRpb25zLCBmaXhpbmcg
YSBmZXcgY3Jhc2hlcyBhbmQKKyAgICAgICAgZW5zdXJpbmcgdGhhdCBhIGZpbmFsIHJlcGx5IGlz
IGFsd2F5cyBzZW50LgorCisgICAgICAgICogcHVibGljL1dlYk5vZGUuaDoKKyAgICAgICAgKiBz
cmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmaW5k
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmZsdXNoQ3VycmVudFNjb3BpbmdFZmZvcnQp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmaW5p
c2hDdXJyZW50U2NvcGluZ0VmZm9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6
Y2FuY2VsUGVuZGluZ1Njb3BpbmdFZmZvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUlt
cGw6OldlYkZyYW1lSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2V0V2Vi
Q29yZUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjppbml0aWFsaXplQXNN
YWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNyZWF0ZUNoaWxkRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnNob3VsZFNjb3BlTWF0Y2hlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6d2lsbERldGFjaFBhZ2UpOgorICAgICAg
ICAqIHNyYy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKFdlYkZyYW1lSW1wbCk6CisgICAgICAg
ICogc3JjL1dlYk5vZGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlOjpyZW1vdmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiB0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL2RhdGEvZmluZF9pbl9wYWdlLmh0bWw6CisKIDIwMTItMDktMjcgIE5hc2tv
IE9za292ICA8bmFza29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbWV0
aG9kcyBmcm9tIENocm9taXVtIFdlYktpdCBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJOb2RlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJOb2RlLmgKaW5kZXggOTAyYjM3NjY5OGY0MzgxYmZiODhmM2Q2NGQ4NGExOTk2MTU2OWVi
NS4uNTg2OWFlZWM2Mjc3NTI3YmU4NzFiZDI0NzRhMGY2YWM0M2RlYzdlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGUuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoK
ICAgICBXRUJLSVRfRVhQT1JUIFdlYk5vZGVMaXN0IGdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0
IFdlYlN0cmluZyYpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViRWxlbWVudCByb290RWRp
dGFibGVFbGVtZW50KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGZvY3VzZWQoKSBj
b25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgcmVtb3ZlKCk7CiAKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIG5vZGUgaGFzIGEgbm9uLWVtcHR5IGJvdW5kaW5nIGJveCBpbiBsYXlvdXQu
CiAgICAgLy8gVGhpcyBkb2VzIG5vdCAxMDAlIGd1YXJhbnRlZSB0aGUgdXNlciBjYW4gc2VlIGl0
LCBidXQgaXMgcHJldHR5IGNsb3NlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAKaW5kZXggODlkZDFiYWM5MjU1OTQ0MjE4NzYwZDhkYWNhZmE4YWFiODMyMmE3
MS4uNWY4ZjhiMWFiNTUxY2YzMTVjMWY1Y2JiNjY1ODI1YjdlNjAyYjAwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC01MjcsOCArNTI3LDYgQEAg
V2ViRnJhbWVJbXBsOjpGaW5kTWF0Y2g6OkZpbmRNYXRjaChQYXNzUmVmUHRyPFJhbmdlPiByYW5n
ZSwgaW50IG9yZGluYWwpCiB7CiB9CiAKLS8vIFdlYkZyYW1lIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogY2xhc3Mg
V2ViRnJhbWVJbXBsOjpEZWZlcnJlZFNjb3BlU3RyaW5nTWF0Y2hlcyB7CiBwdWJsaWM6CiAgICAg
RGVmZXJyZWRTY29wZVN0cmluZ01hdGNoZXMoV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSwKQEAgLTU2
MSw3ICs1NTksNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXNldDsKIH07CiAKLQogLy8gV2Vi
RnJhbWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBpbnQgV2ViRnJhbWU6Omluc3RhbmNlQ291bnQoKQpAQCAtMTYy
MCw2ICsxNjE3LDkgQEAgYm9vbCBXZWJGcmFtZUltcGw6OmZpbmQoaW50IGlkZW50aWZpZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHdyYXBXaXRoaW5GcmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYlJlY3QqIHNlbGVjdGlvblJlY3QpCiB7CisgICAgaWYgKCFmcmFtZSgp
IHx8ICFmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFdlYkZy
YW1lSW1wbCogbWFpbkZyYW1lSW1wbCA9IHZpZXdJbXBsKCktPm1haW5GcmFtZUltcGwoKTsKIAog
ICAgIGlmICghb3B0aW9ucy5maW5kTmV4dCkKQEAgLTE3MTgsMTIgKzE3MTgsMTQgQEAgdm9pZCBX
ZWJGcmFtZUltcGw6OnNjb3BlU3RyaW5nTWF0Y2hlcyhpbnQgaWRlbnRpZmllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViRmluZE9wdGlvbnMmIG9wdGlv
bnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzZXQpCiB7
Ci0gICAgV2ViRnJhbWVJbXBsKiBtYWluRnJhbWVJbXBsID0gdmlld0ltcGwoKS0+bWFpbkZyYW1l
SW1wbCgpOwotCiAgICAgaWYgKHJlc2V0KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBicmFuZCBu
ZXcgc2VhcmNoLCBzbyB3ZSBuZWVkIHRvIHJlc2V0IGV2ZXJ5dGhpbmcuCiAgICAgICAgIC8vIFNj
b3BpbmcgaXMganVzdCBhYm91dCB0byBiZWdpbi4KLSAgICAgICAgbV9zY29waW5nQ29tcGxldGUg
PSBmYWxzZTsKKyAgICAgICAgbV9zY29waW5nSW5Qcm9ncmVzcyA9IHRydWU7CisKKyAgICAgICAg
Ly8gTmVlZCB0byBrZWVwIHRoZSBjdXJyZW50IGlkZW50aWZpZXIgbG9jYWxseSBpbiBvcmRlciB0
byBmaW5pc2ggdGhlCisgICAgICAgIC8vIHJlcXVlc3QgaW4gY2FzZSB0aGUgZnJhbWUgaXMgZGV0
YWNoZWQgZHVyaW5nIHRoZSBwcm9jZXNzLgorICAgICAgICBtX2ZpbmRSZXF1ZXN0SWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7CiAKICAgICAgICAgLy8gQ2xlYXIgaGlnaGxpZ2h0aW5nIGZvciB0aGlz
IGZyYW1lLgogICAgICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkgJiYgZnJhbWUo
KS0+ZWRpdG9yKCktPm1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoKSkKQEAgLTE3Mzgs
NyArMTc0MCw5IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50IGlk
ZW50aWZpZXIsCiAKICAgICAgICAgbV9yZXN1bWVTY29waW5nRnJvbVJhbmdlID0gMDsKIAotICAg
ICAgICBtYWluRnJhbWVJbXBsLT5tX2ZyYW1lc1Njb3BpbmdDb3VudCsrOworICAgICAgICAvLyBU
aGUgdmlldyBtaWdodCBiZSBudWxsIG9uIGRldGFjaGVkIGZyYW1lcy4KKyAgICAgICAgaWYgKGZy
YW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpKQorICAgICAgICAgICAgdmlld0ltcGwoKS0+bWFpbkZy
YW1lSW1wbCgpLT5tX2ZyYW1lc1Njb3BpbmdDb3VudCsrOwogCiAgICAgICAgIC8vIE5vdywgZGVm
ZXIgc2NvcGluZyB1bnRpbCBsYXRlciB0byBhbGxvdyBmaW5kIG9wZXJhdGlvbiB0byBmaW5pc2gg
cXVpY2tseS4KICAgICAgICAgc2NvcGVTdHJpbmdNYXRjaGVzU29vbigKQEAgLTE3NTcsNiArMTc2
MSw3IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01hdGNoZXMoaW50IGlkZW50aWZp
ZXIsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFt
ZUltcGwgPSB2aWV3SW1wbCgpLT5tYWluRnJhbWVJbXBsKCk7CiAgICAgUmVmUHRyPFJhbmdlPiBz
ZWFyY2hSYW5nZShyYW5nZU9mQ29udGVudHMoZnJhbWUoKS0+ZG9jdW1lbnQoKSkpOwogCiAgICAg
Tm9kZSogb3JpZ2luYWxFbmRDb250YWluZXIgPSBzZWFyY2hSYW5nZS0+ZW5kQ29udGFpbmVyKCk7
CkBAIC0xODg2LDIwICsxODkxLDI5IEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpzY29wZVN0cmluZ01h
dGNoZXMoaW50IGlkZW50aWZpZXIsCiAgICAgZmluaXNoQ3VycmVudFNjb3BpbmdFZmZvcnQoaWRl
bnRpZmllcik7CiB9CiAKLXZvaWQgV2ViRnJhbWVJbXBsOjpmaW5pc2hDdXJyZW50U2NvcGluZ0Vm
Zm9ydChpbnQgaWRlbnRpZmllcikKK3ZvaWQgV2ViRnJhbWVJbXBsOjpmbHVzaEN1cnJlbnRTY29w
aW5nRWZmb3J0KGludCBpZGVudGlmaWVyKQogeworICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUo
KS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKICAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFt
ZUltcGwgPSB2aWV3SW1wbCgpLT5tYWluRnJhbWVJbXBsKCk7CiAKICAgICAvLyBUaGlzIGZyYW1l
IGhhcyBubyBmdXJ0aGVyIHNjb3BpbmcgbGVmdCwgc28gaXQgaXMgZG9uZS4gT3RoZXIgZnJhbWVz
IG1pZ2h0LAogICAgIC8vIG9mIGNvdXJzZSwgY29udGludWUgdG8gc2NvcGUgbWF0Y2hlcy4KLSAg
ICBtX3Njb3BpbmdDb21wbGV0ZSA9IHRydWU7CiAgICAgbWFpbkZyYW1lSW1wbC0+bV9mcmFtZXNT
Y29waW5nQ291bnQtLTsKLSAgICBtX2xhc3RGaW5kUmVxdWVzdENvbXBsZXRlZFdpdGhOb01hdGNo
ZXMgPSAhbV9sYXN0TWF0Y2hDb3VudDsKIAogICAgIC8vIElmIHRoaXMgaXMgdGhlIGxhc3QgZnJh
bWUgdG8gZmluaXNoIHNjb3Bpbmcgd2UgbmVlZCB0byB0cmlnZ2VyIHRoZSBmaW5hbAogICAgIC8v
IHVwZGF0ZSB0byBiZSBzZW50LgogICAgIGlmICghbWFpbkZyYW1lSW1wbC0+bV9mcmFtZXNTY29w
aW5nQ291bnQpCiAgICAgICAgIG1haW5GcmFtZUltcGwtPmluY3JlYXNlTWF0Y2hDb3VudCgwLCBp
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJGcmFtZUltcGw6OmZpbmlzaEN1cnJlbnRTY29waW5n
RWZmb3J0KGludCBpZGVudGlmaWVyKQoreworICAgIGZsdXNoQ3VycmVudFNjb3BpbmdFZmZvcnQo
aWRlbnRpZmllcik7CisKKyAgICBtX3Njb3BpbmdJblByb2dyZXNzID0gZmFsc2U7CisgICAgbV9s
YXN0RmluZFJlcXVlc3RDb21wbGV0ZWRXaXRoTm9NYXRjaGVzID0gIW1fbGFzdE1hdGNoQ291bnQ7
CiAKICAgICAvLyBUaGlzIGZyYW1lIGlzIGRvbmUsIHNvIHNob3cgYW55IHNjcm9sbGJhciB0aWNr
bWFya3Mgd2UgaGF2ZW4ndCBkcmF3biB5ZXQuCiAgICAgaW52YWxpZGF0ZUFyZWEoSW52YWxpZGF0
ZVNjcm9sbGJhcik7CkBAIC0xOTEyLDggKzE5MjYsMTEgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmNh
bmNlbFBlbmRpbmdTY29waW5nRWZmb3J0KCkKIAogICAgIG1fYWN0aXZlTWF0Y2hJbmRleEluQ3Vy
cmVudEZyYW1lID0gLTE7CiAKLSAgICBpZiAoIW1fc2NvcGluZ0NvbXBsZXRlKQorICAgIC8vIExh
c3QgcmVxdWVzdCBkaWRuJ3QgY29tcGxldGUuCisgICAgaWYgKG1fc2NvcGluZ0luUHJvZ3Jlc3Mp
CiAgICAgICAgIG1fbGFzdEZpbmRSZXF1ZXN0Q29tcGxldGVkV2l0aE5vTWF0Y2hlcyA9IGZhbHNl
OworCisgICAgbV9zY29waW5nSW5Qcm9ncmVzcyA9IGZhbHNlOwogfQogCiB2b2lkIFdlYkZyYW1l
SW1wbDo6aW5jcmVhc2VNYXRjaENvdW50KGludCBjb3VudCwgaW50IGlkZW50aWZpZXIpCkBAIC0y
Mjc1LDcgKzIyOTIsOCBAQCBQYXNzUmVmUHRyPFdlYkZyYW1lSW1wbD4gV2ViRnJhbWVJbXBsOjpj
cmVhdGUoV2ViRnJhbWVDbGllbnQqIGNsaWVudCkKIH0KIAogV2ViRnJhbWVJbXBsOjpXZWJGcmFt
ZUltcGwoV2ViRnJhbWVDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fZnJhbWVMb2FkZXJDbGllbnQo
dGhpcykKKyAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcigwKQorICAgICwgbV9mcmFtZUxv
YWRlckNsaWVudCh0aGlzKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9mcmFtZSgw
KQogICAgICwgbV9jdXJyZW50QWN0aXZlTWF0Y2hGcmFtZSgwKQpAQCAtMjI4NSw3ICsyMzAzLDgg
QEAgV2ViRnJhbWVJbXBsOjpXZWJGcmFtZUltcGwoV2ViRnJhbWVDbGllbnQqIGNsaWVudCkKICAg
ICAsIG1fbGFzdE1hdGNoQ291bnQoLTEpCiAgICAgLCBtX3RvdGFsTWF0Y2hDb3VudCgtMSkKICAg
ICAsIG1fZnJhbWVzU2NvcGluZ0NvdW50KC0xKQotICAgICwgbV9zY29waW5nQ29tcGxldGUoZmFs
c2UpCisgICAgLCBtX2ZpbmRSZXF1ZXN0SWRlbnRpZmllcigtMSkKKyAgICAsIG1fc2NvcGluZ0lu
UHJvZ3Jlc3MoZmFsc2UpCiAgICAgLCBtX2xhc3RGaW5kUmVxdWVzdENvbXBsZXRlZFdpdGhOb01h
dGNoZXMoZmFsc2UpCiAgICAgLCBtX25leHRJbnZhbGlkYXRlQWZ0ZXIoMCkKICAgICAsIG1fZmlu
ZE1hdGNoTWFya2Vyc1ZlcnNpb24oMCkKQEAgLTIzMDYsMTAgKzIzMjUsMTcgQEAgV2ViRnJhbWVJ
bXBsOjp+V2ViRnJhbWVJbXBsKCkKICAgICBjYW5jZWxQZW5kaW5nU2NvcGluZ0VmZm9ydCgpOwog
fQogCit2b2lkIFdlYkZyYW1lSW1wbDo6c2V0V2ViQ29yZUZyYW1lKFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSkKK3sKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIG1fZnJhbWUgPSBmcmFtZTsKKyAgICBv
YnNlcnZlRnJhbWUobV9mcmFtZSk7Cit9CisKIHZvaWQgV2ViRnJhbWVJbXBsOjppbml0aWFsaXpl
QXNNYWluRnJhbWUoV2ViQ29yZTo6UGFnZSogcGFnZSkKIHsKICAgICBSZWZQdHI8RnJhbWU+IGZy
YW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLCAwLCAmbV9mcmFtZUxvYWRlckNsaWVudCk7Ci0gICAg
bV9mcmFtZSA9IGZyYW1lLmdldCgpOworICAgIHNldFdlYkNvcmVGcmFtZShmcmFtZS5nZXQoKSk7
CiAKICAgICAvLyBBZGQgcmVmZXJlbmNlIG9uIGJlaGFsZiBvZiBGcmFtZUxvYWRlci4gIFNlZSBj
b21tZW50cyBpbgogICAgIC8vIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ry
b3llZCBmb3IgbW9yZSBpbmZvLgpAQCAtMjMzMiw3ICsyMzU4LDcgQEAgUGFzc1JlZlB0cjxGcmFt
ZT4gV2ViRnJhbWVJbXBsOjpjcmVhdGVDaGlsZEZyYW1lKAogCiAgICAgUmVmUHRyPEZyYW1lPiBj
aGlsZEZyYW1lID0gRnJhbWU6OmNyZWF0ZSgKICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLCBvd25l
ckVsZW1lbnQsICZ3ZWJmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudCk7Ci0gICAgd2ViZnJhbWUt
Pm1fZnJhbWUgPSBjaGlsZEZyYW1lLmdldCgpOworICAgIHdlYmZyYW1lLT5zZXRXZWJDb3JlRnJh
bWUoY2hpbGRGcmFtZS5nZXQoKSk7CiAKICAgICBjaGlsZEZyYW1lLT50cmVlKCktPnNldE5hbWUo
cmVxdWVzdC5mcmFtZU5hbWUoKSk7CiAKQEAgLTI1NzEsNyArMjU5Nyw4IEBAIGJvb2wgV2ViRnJh
bWVJbXBsOjpzaG91bGRTY29wZU1hdGNoZXMoY29uc3QgU3RyaW5nJiBzZWFyY2hUZXh0KQogewog
ICAgIC8vIERvbid0IHNjb3BlIGlmIHdlIGNhbid0IGZpbmQgYSBmcmFtZSBvciBhIHZpZXcuCiAg
ICAgLy8gVGhlIHVzZXIgbWF5IGhhdmUgY2xvc2VkIHRoZSB0YWIvYXBwbGljYXRpb24sIHNvIGFi
b3J0LgotICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+dmlldygpKQorICAgIC8vIEFsc28g
aWdub3JlIGRldGFjaGVkIGZyYW1lcywgYXMgbWFueSBmaW5kIG9wZXJhdGlvbnMgcmVwb3J0IHRv
IHRoZSBtYWluIGZyYW1lLgorICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+dmlldygpIHx8
ICFmcmFtZSgpLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChm
cmFtZSgpLT5kb2N1bWVudCgpICYmIGZyYW1lKCktPnZpZXcoKSk7CkBAIC0yNjU5LDQgKzI2ODYs
MjEgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmxvYWRKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmIHVy
bCkKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPndyaXRlcigpLT5yZXBs
YWNlRG9jdW1lbnQoc2NyaXB0UmVzdWx0LCBvd25lckRvY3VtZW50LmdldCgpKTsKIH0KIAordm9p
ZCBXZWJGcmFtZUltcGw6OndpbGxEZXRhY2hQYWdlKCkKK3sKKyAgICBpZiAoIWZyYW1lKCkgfHwg
IWZyYW1lKCktPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG8gbm90IGV4cGVj
dCBzdHJpbmcgc2NvcGluZyByZXN1bHRzIGZyb20gYW55IGZyYW1lcyB0aGF0IGdvdCBkZXRhY2hl
ZAorICAgIC8vIGluIHRoZSBtaWRkbGUgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICBpZiAobV9zY29w
aW5nSW5Qcm9ncmVzcykgeworCisgICAgICAgIC8vIFRoZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhh
dCB0aGUgZnJhbWUgYmVpbmcgZGV0YWNoZWQgd2FzIHRoZSBvbmx5CisgICAgICAgIC8vIHBlbmRp
bmcgb25lLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBmaW5hbCByZXBsaWVzIGNhbiBiZSBzZW50Lgor
ICAgICAgICBmbHVzaEN1cnJlbnRTY29waW5nRWZmb3J0KG1fZmluZFJlcXVlc3RJZGVudGlmaWVy
KTsKKworICAgICAgICBjYW5jZWxQZW5kaW5nU2NvcGluZ0VmZm9ydCgpOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5oCmluZGV4IDM4NDY2ZTc3MDUxZDUzY2FhMzViNmIxYjhkNGE2YmMxZmJkNDZhMTguLmYy
ZWQzYzcwZDUwM2MyNGJkZTRkYjdjZWNkNGYzMGE1ODdhN2Y1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
V2ViRnJhbWUuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSA8d3RmL0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNjksNyAr
NzAsMTAgQEAgc3RydWN0IFdlYlByaW50UGFyYW1zOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFdlYlZlY3RvcjsKIAogLy8gSW1wbGVtZW50YXRpb24gb2YgV2ViRnJhbWUsIG5vdGUgdGhh
dCB0aGlzIGlzIGEgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0LgotY2xhc3MgV2ViRnJhbWVJbXBs
IDogcHVibGljIFdlYkZyYW1lLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJGcmFtZUltcGw+IHsKK2Ns
YXNzIFdlYkZyYW1lSW1wbAorICAgIDogcHVibGljIFdlYkZyYW1lCisgICAgLCBwdWJsaWMgUmVm
Q291bnRlZDxXZWJGcmFtZUltcGw+CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICAvLyBXZWJGcmFtZSBtZXRob2RzOgogICAgIHZp
cnR1YWwgV2ViU3RyaW5nIHVuaXF1ZU5hbWUoKSBjb25zdDsKQEAgLTIzOSw2ICsyNDMsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJG
b3IoaW50IGZyb20sIGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGxh
eWVyVHJlZUFzVGV4dChib29sIHNob3dEZWJ1Z0luZm8gPSBmYWxzZSkgY29uc3Q7CiAKKyAgICAv
LyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgbWV0aG9kcy4KKyAgICB2aXJ0dWFs
IHZvaWQgd2lsbERldGFjaFBhZ2UoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZyYW1l
SW1wbD4gY3JlYXRlKFdlYkZyYW1lQ2xpZW50KiBjbGllbnQpOwogICAgIHZpcnR1YWwgfldlYkZy
YW1lSW1wbCgpOwogCkBAIC0zMzAsNiArMzM3LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJGcmFt
ZUxvYWRlckNsaWVudAogICAgIHZvaWQgY2xvc2luZygpOwogCisgICAgLy8gU2V0cyB0aGUgbG9j
YWwgV2ViQ29yZSBmcmFtZSBhbmQgcmVnaXN0ZXJzIGRlc3RydWN0aW9uIG9ic2VydmVycy4KKyAg
ICB2b2lkIHNldFdlYkNvcmVGcmFtZShXZWJDb3JlOjpGcmFtZSopOworCiAgICAgLy8gTm90aWZp
ZXMgdGhlIGRlbGVnYXRlIGFib3V0IGEgbmV3IHNlbGVjdGlvbiByZWN0LgogICAgIHZvaWQgcmVw
b3J0RmluZEluUGFnZVNlbGVjdGlvbigKICAgICAgICAgY29uc3QgV2ViUmVjdCYgc2VsZWN0aW9u
UmVjdCwgaW50IGFjdGl2ZU1hdGNoT3JkaW5hbCwgaW50IGlkZW50aWZpZXIpOwpAQCAtMzgxLDYg
KzM5MSwxMSBAQCBwcml2YXRlOgogICAgIC8vIHdhcyBzZWFyY2hlZC4KICAgICBib29sIHNob3Vs
ZFNjb3BlTWF0Y2hlcyhjb25zdCBXVEY6OlN0cmluZyYgc2VhcmNoVGV4dCk7CiAKKyAgICAvLyBS
ZW1vdmVzIHRoZSBjdXJyZW50IGZyYW1lIGZyb20gdGhlIGdsb2JhbCBzY29waW5nIGVmZm9ydCBh
bmQgdHJpZ2dlcnMgYW55CisgICAgLy8gdXBkYXRlcyBpZiBhcHByb3ByaWF0ZS4gVGhpcyBtZXRo
b2QgZG9lcyBub3QgbWFyayB0aGUgc2NvcGluZyBvcGVyYXRpb24KKyAgICAvLyBhcyBmaW5pc2hl
ZC4KKyAgICB2b2lkIGZsdXNoQ3VycmVudFNjb3BpbmdFZmZvcnQoaW50IGlkZW50aWZpZXIpOwor
CiAgICAgLy8gRmluaXNoZXMgdGhlIGN1cnJlbnQgc2NvcGluZyBlZmZvcnQgYW5kIHRyaWdnZXJz
IGFueSB1cGRhdGVzIGlmIGFwcHJvcHJpYXRlLgogICAgIHZvaWQgZmluaXNoQ3VycmVudFNjb3Bp
bmdFZmZvcnQoaW50IGlkZW50aWZpZXIpOwogCkBAIC00MDYsNiArNDIxLDcgQEAgcHJpdmF0ZToK
IAogICAgIFdlYkZyYW1lQ2xpZW50KiBtX2NsaWVudDsKIAorICAgIC8vIEZJWE1FOiB0aGlzIGlz
IHJlZHVuZGFudCBhcyB3ZSBhbHJlYWR5IGhhdmUgbV9mcmFtZSBmcm9tIEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlci4KICAgICAvLyBUaGlzIGlzIGEgd2VhayBwb2ludGVyIHRvIG91ciBjb3JyZXNw
b25kaW5nIFdlYkNvcmUgZnJhbWUuICBBIHJlZmVyZW5jZSB0bwogICAgIC8vIG91cnNlbHZlcyBp
cyBoZWxkIHdoaWxlIGZyYW1lXyBpcyB2YWxpZC4gIFNlZSBvdXIgQ2xvc2luZyBtZXRob2QuCiAg
ICAgV2ViQ29yZTo6RnJhbWUqIG1fZnJhbWU7CkBAIC00MzcsOCArNDUzLDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIEtlZXBzIHRyYWNrIG9mIGhvdyBtYW55IG1hdGNoZXMgdGhpcyBmcmFtZSBoYXMg
Zm91bmQgc28gZmFyLCBzbyB0aGF0IHdlCiAgICAgLy8gZG9uJ3QgbG9vc2UgY291bnQgYmV0d2Vl
biBzY29waW5nIGVmZm9ydHMsIGFuZCBpcyBhbHNvIHVzZWQgKGluIGNvbmp1bmN0aW9uCi0gICAg
Ly8gd2l0aCBtX2xhc3RTZWFyY2hTdHJpbmcgYW5kIG1fc2NvcGluZ0NvbXBsZXRlKSB0byBmaWd1
cmUgb3V0IGlmIHdlIG5lZWQgdG8KLSAgICAvLyBzZWFyY2ggdGhlIGZyYW1lIGFnYWluLgorICAg
IC8vIHdpdGggbV9sYXN0U2VhcmNoU3RyaW5nKSB0byBmaWd1cmUgb3V0IGlmIHdlIG5lZWQgdG8g
c2VhcmNoIHRoZSBmcmFtZSBhZ2Fpbi4KICAgICBpbnQgbV9sYXN0TWF0Y2hDb3VudDsKIAogICAg
IC8vIFRoaXMgdmFyaWFibGUga2VlcHMgYSBjdW11bGF0aXZlIHRvdGFsIG9mIG1hdGNoZXMgZm91
bmQgc28gZmFyIGZvciBBTEwgdGhlCkBAIC00NTEsOSArNDY2LDEyIEBAIHByaXZhdGU6CiAgICAg
Ly8gSXQgc2hvdWxkIGJlIC0xIGZvciBhbGwgb3RoZXIgZnJhbWVzLgogICAgIGludCBtX2ZyYW1l
c1Njb3BpbmdDb3VudDsKIAotICAgIC8vIEtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlIHNjb3Bp
bmcgZWZmb3J0IHdhcyBjb21wbGV0ZWQgKHRoZSB1c2VyIG1heQotICAgIC8vIGludGVycnVwdCBp
dCBiZWZvcmUgaXQgY29tcGxldGVzIGJ5IHN1Ym1pdHRpbmcgYSBuZXcgc2VhcmNoKS4KLSAgICBi
b29sIG1fc2NvcGluZ0NvbXBsZXRlOworICAgIC8vIElkZW50aWZpZXIgb2YgdGhlIGxhdGVzdCBm
aW5kLWluLXBhZ2UgcmVxdWVzdC4gUmVxdWlyZWQgdG8gYmUgc3RvcmVkIGluCisgICAgLy8gdGhl
IGZyYW1lIGluIG9yZGVyIHRvIHJlcGx5IGlmIHJlcXVpcmVkIGluIGNhc2UgdGhlIGZyYW1lIGlz
IGRldGFjaGVkLgorICAgIGludCBtX2ZpbmRSZXF1ZXN0SWRlbnRpZmllcjsKKworICAgIC8vIEtl
ZXBzIHRyYWNrIG9mIHdoZXRoZXIgdGhlcmUgaXMgYW4gc2NvcGluZyBlZmZvcnQgb25nb2luZyBp
biB0aGUgZnJhbWUuCisgICAgYm9vbCBtX3Njb3BpbmdJblByb2dyZXNzOwogCiAgICAgLy8gS2Vl
cHMgdHJhY2sgb2Ygd2hldGhlciB0aGUgbGFzdCBmaW5kIHJlcXVlc3QgY29tcGxldGVkIGl0cyBz
Y29waW5nIGVmZm9ydAogICAgIC8vIHdpdGhvdXQgZmluZGluZyBhbnkgbWF0Y2hlcyBpbiB0aGlz
IGZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNwcAppbmRleCBjNWU4MzZk
NGExYzdjZDI1OTc4OTZiODI0OWUzYmVmYzNmODk0ODZhLi5lZWFiMWMyMzVkYzE3MTc5MGYwZmZi
MGUwNmMzZTI4OGNhMzM2YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlLmNw
cApAQCAtMjI1LDYgKzIyNSwxMyBAQCBib29sIFdlYk5vZGU6OmZvY3VzZWQoKSBjb25zdAogICAg
IHJldHVybiBtX3ByaXZhdGUtPmZvY3VzZWQoKTsKIH0KIAorYm9vbCBXZWJOb2RlOjpyZW1vdmUo
KQoreworICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSA9IDA7CisgICAgbV9wcml2YXRl
LT5yZW1vdmUoZXhjZXB0aW9uQ29kZSk7CisgICAgcmV0dXJuICFleGNlcHRpb25Db2RlOworfQor
CiBib29sIFdlYk5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdAogewogICAgIG1f
cHJpdmF0ZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5k
ZXggYTAwNDliNjdlOGQ0MWI2MmJhNTI4NWI5YTEwMGQ2OWM2MDZmNDAzMS4uZGUxNDczMTliZWJl
ZDczMDU3ZWJkOWE1MzQxODBmMjhlYmU3ZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtOTAwLDYgKzkwMCw4IEBAIFRFU1RfRihXZWJG
cmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRjaFJlY3RzKQogICAgIFdlYkZyYW1lSW1wbCogbWFpbkZy
YW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkpOwog
ICAgIEVYUEVDVF9UUlVFKG1haW5GcmFtZS0+ZmluZChrRmluZElkZW50aWZpZXIsIHNlYXJjaFRl
eHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CiAKKyAgICBtYWluRnJhbWUtPnJlc2V0TWF0Y2hDb3Vu
dCgpOworCiAgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQogICAgICAgICBmcmFtZS0+c2NvcGVTdHJp
bmdNYXRjaGVzKGtGaW5kSWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgdHJ1ZSk7CiAK
QEAgLTk5MCw2ICs5OTIsMTI5IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIEZpbmRJblBhZ2VNYXRj
aFJlY3RzKQogICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CiAKK1RFU1RfRihXZWJGcmFtZVRlc3Qs
IEZpbmRPbkRldGFjaGVkRnJhbWUpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgi
ZmluZF9pbl9wYWdlLmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaW5k
X2luX3BhZ2VfZnJhbWUuaHRtbCIpOworCisgICAgRmluZFVwZGF0ZVdlYkZyYW1lQ2xpZW50IGNs
aWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2Vi
Vmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpbmRfaW5fcGFnZS5odG1sIiwgdHJ1ZSwgJmNsaWVu
dCk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsKKyAgICB3ZWJWaWV3
LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7
CisKKyAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAicmVzdWx0IjsKKyAgICBz
dGF0aWMgY29uc3QgaW50IGtGaW5kSWRlbnRpZmllciA9IDEyMzQ1OworCisgICAgV2ViRmluZE9w
dGlvbnMgb3B0aW9uczsKKyAgICBXZWJTdHJpbmcgc2VhcmNoVGV4dCA9IFdlYlN0cmluZzo6ZnJv
bVVURjgoa0ZpbmRTdHJpbmcpOworICAgIFdlYkZyYW1lSW1wbCogbWFpbkZyYW1lID0gc3RhdGlj
X2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkpOworICAgIFdlYkZyYW1l
SW1wbCogc2Vjb25kRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtYWluRnJhbWUt
PnRyYXZlcnNlTmV4dChmYWxzZSkpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gaG9sZFNl
Y29uZEZyYW1lID0gc2Vjb25kRnJhbWUtPmZyYW1lKCk7CisKKyAgICAvLyBEZXRhY2ggdGhlIGZy
YW1lIGJlZm9yZSBmaW5kaW5nLgorICAgIEVYUEVDVF9UUlVFKG1haW5GcmFtZS0+ZG9jdW1lbnQo
KS5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKS5yZW1vdmUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRSht
YWluRnJhbWUtPmZpbmQoa0ZpbmRJZGVudGlmaWVyLCBzZWFyY2hUZXh0LCBvcHRpb25zLCBmYWxz
ZSwgMCkpOworICAgIEVYUEVDVF9GQUxTRShzZWNvbmRGcmFtZS0+ZmluZChrRmluZElkZW50aWZp
ZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIGZhbHNlLCAwKSk7CisKKyAgICB3ZWJraXRfc3VwcG9y
dDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5maW5k
UmVzdWx0c0FyZVJlYWR5KCkpOworCisgICAgbWFpbkZyYW1lLT5yZXNldE1hdGNoQ291bnQoKTsK
KworICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKKyAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0
Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOworCisgICAg
d2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworICAgIEVYUEVDVF9UUlVF
KGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOworCisgICAgaG9sZFNlY29uZEZyYW1lLnJl
bGVhc2UoKTsKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0
LCBGaW5kRGV0YWNoRnJhbWVCZWZvcmVTY29wZVN0cmluZ3MpCit7CisgICAgcmVnaXN0ZXJNb2Nr
ZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlLmh0bWwiKTsKKyAgICByZWdpc3Rlck1vY2tlZEh0
dHBVUkxMb2FkKCJmaW5kX2luX3BhZ2VfZnJhbWUuaHRtbCIpOworCisgICAgRmluZFVwZGF0ZVdl
YkZyYW1lQ2xpZW50IGNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVs
cGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImZpbmRfaW5fcGFnZS5odG1s
IiwgdHJ1ZSwgJmNsaWVudCk7CisgICAgd2ViVmlldy0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODAp
KTsKKyAgICB3ZWJWaWV3LT5sYXlvdXQoKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVu
ZGluZ01lc3NhZ2VzKCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhcioga0ZpbmRTdHJpbmcgPSAi
cmVzdWx0IjsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtGaW5kSWRlbnRpZmllciA9IDEyMzQ1Owor
CisgICAgV2ViRmluZE9wdGlvbnMgb3B0aW9uczsKKyAgICBXZWJTdHJpbmcgc2VhcmNoVGV4dCA9
IFdlYlN0cmluZzo6ZnJvbVVURjgoa0ZpbmRTdHJpbmcpOworICAgIFdlYkZyYW1lSW1wbCogbWFp
bkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4od2ViVmlldy0+bWFpbkZyYW1lKCkp
OworICAgIFdlYkZyYW1lSW1wbCogc2Vjb25kRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUlt
cGwqPihtYWluRnJhbWUtPnRyYXZlcnNlTmV4dChmYWxzZSkpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gaG9sZFNlY29uZEZyYW1lID0gc2Vjb25kRnJhbWUtPmZyYW1lKCk7CisKKyAgICBm
b3IgKFdlYkZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
YXZlcnNlTmV4dChmYWxzZSkpCisgICAgICAgIEVYUEVDVF9UUlVFKGZyYW1lLT5maW5kKGtGaW5k
SWRlbnRpZmllciwgc2VhcmNoVGV4dCwgb3B0aW9ucywgZmFsc2UsIDApKTsKKworICAgIHdlYmtp
dF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xp
ZW50LmZpbmRSZXN1bHRzQXJlUmVhZHkoKSk7CisKKyAgICAvLyBEZXRhY2ggdGhlIGZyYW1lIGJl
dHdlZW4gZmluZGluZyBhbmQgc2NvcGluZy4KKyAgICBFWFBFQ1RfVFJVRShtYWluRnJhbWUtPmRv
Y3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoImZyYW1lIikucmVtb3ZlKCkpOworCisgICAgbWFpbkZy
YW1lLT5yZXNldE1hdGNoQ291bnQoKTsKKworICAgIGZvciAoV2ViRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNlKSkKKyAgICAg
ICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQs
IG9wdGlvbnMsIHRydWUpOworCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOwor
CisgICAgaG9sZFNlY29uZEZyYW1lLnJlbGVhc2UoKTsKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOwor
fQorCitURVNUX0YoV2ViRnJhbWVUZXN0LCBGaW5kRGV0YWNoRnJhbWVXaGlsZVNjb3BpbmdTdHJp
bmdzKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZpbmRfaW5fcGFnZS5odG1s
Iik7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZmluZF9pbl9wYWdlX2ZyYW1lLmh0
bWwiKTsKKworICAgIEZpbmRVcGRhdGVXZWJGcmFtZUNsaWVudCBjbGllbnQ7CisgICAgV2ViVmll
dyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFz
ZVVSTCArICJmaW5kX2luX3BhZ2UuaHRtbCIsIHRydWUsICZjbGllbnQpOworICAgIHdlYlZpZXct
PnJlc2l6ZShXZWJTaXplKDY0MCwgNDgwKSk7CisgICAgd2ViVmlldy0+bGF5b3V0KCk7CisgICAg
d2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdlcygpOworCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGtGaW5kU3RyaW5nID0gInJlc3VsdCI7CisgICAgc3RhdGljIGNvbnN0IGludCBr
RmluZElkZW50aWZpZXIgPSAxMjM0NTsKKworICAgIFdlYkZpbmRPcHRpb25zIG9wdGlvbnM7Cisg
ICAgV2ViU3RyaW5nIHNlYXJjaFRleHQgPSBXZWJTdHJpbmc6OmZyb21VVEY4KGtGaW5kU3RyaW5n
KTsKKyAgICBXZWJGcmFtZUltcGwqIG1haW5GcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1w
bCo+KHdlYlZpZXctPm1haW5GcmFtZSgpKTsKKyAgICBXZWJGcmFtZUltcGwqIHNlY29uZEZyYW1l
ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4obWFpbkZyYW1lLT50cmF2ZXJzZU5leHQoZmFs
c2UpKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGhvbGRTZWNvbmRGcmFtZSA9IHNlY29u
ZEZyYW1lLT5mcmFtZSgpOworCisgICAgZm9yIChXZWJGcmFtZSogZnJhbWUgPSBtYWluRnJhbWU7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmF2ZXJzZU5leHQoZmFsc2UpKQorICAgICAgICBFWFBF
Q1RfVFJVRShmcmFtZS0+ZmluZChrRmluZElkZW50aWZpZXIsIHNlYXJjaFRleHQsIG9wdGlvbnMs
IGZhbHNlLCAwKSk7CisKKyAgICB3ZWJraXRfc3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2Vz
KCk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC5maW5kUmVzdWx0c0FyZVJlYWR5KCkpOworCisg
ICAgbWFpbkZyYW1lLT5yZXNldE1hdGNoQ291bnQoKTsKKworICAgIGZvciAoV2ViRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJhdmVyc2VOZXh0KGZhbHNl
KSkKKyAgICAgICAgZnJhbWUtPnNjb3BlU3RyaW5nTWF0Y2hlcyhrRmluZElkZW50aWZpZXIsIHNl
YXJjaFRleHQsIG9wdGlvbnMsIHRydWUpOworCisgICAgLy8gVGhlIGZpcnN0IHNjb3BlU3RyaW5n
TWF0Y2hlcyB3aWxsIGhhdmUgcmVzZXQgdGhlIHN0YXRlLiBEZXRhY2ggYmVmb3JlIGl0IGFjdHVh
bGx5IHNjb3Blcy4KKyAgICBFWFBFQ1RfVFJVRShtYWluRnJhbWUtPmRvY3VtZW50KCkuZ2V0RWxl
bWVudEJ5SWQoImZyYW1lIikucmVtb3ZlKCkpOworCisgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFs
bFBlbmRpbmdNZXNzYWdlcygpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC5maW5kUmVzdWx0c0Fy
ZVJlYWR5KCkpOworCisgICAgaG9sZFNlY29uZEZyYW1lLnJlbGVhc2UoKTsKKyAgICB3ZWJWaWV3
LT5jbG9zZSgpOworfQorCiBzdGF0aWMgV2ViVmlldyogY3JlYXRlV2ViVmlld0ZvclRleHRTZWxl
Y3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcmIHVybCkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
RnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQodXJsLCB0cnVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maW5kX2luX3BhZ2UuaHRt
bCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maW5kX2luX3BhZ2UuaHRtbApp
bmRleCA2NDMwNzNhMTYyNDE0MmYzY2U5MmZmY2Q3Y2ZjNzc3YWFkZmY1OGE3Li5mNWQyOGE2NDQ0
ZjFjYTg1ZTc1MGJmYzI2NzIxZTNmODU5ZjQxZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvZmluZF9pbl9wYWdlLmh0bWwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ZpbmRfaW5fcGFnZS5odG1sCkBAIC02LDcgKzYsNyBAQAog
PGJvZHk+CiBUaGlzIGEgZmluZC1pbi1wYWdlIG1hdGNoIHJlY3QgdGVzdC48L2JyPgogcmVzdWx0
IDAwPC9icj4KLTxpZnJhbWUgc3JjPSJmaW5kX2luX3BhZ2VfZnJhbWUuaHRtbCIgaGVpZ2h0PSIz
MDAiIHNjcm9sbGluZz0ieWVzIj48L2lmcmFtZT4KKzxpZnJhbWUgc3JjPSJmaW5kX2luX3BhZ2Vf
ZnJhbWUuaHRtbCIgaWQ9ImZyYW1lIiBoZWlnaHQ9IjMwMCIgc2Nyb2xsaW5nPSJ5ZXMiPjwvaWZy
YW1lPgogPC9icj4KIHJlc3VsdCAwMQogPC9ib2R5Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>