<?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>39636</bug_id>
          
          <creation_ts>2010-05-24 18:15:06 -0700</creation_ts>
          <short_desc>Move functions out of Frame class that were marked &quot;move to Chrome&quot;</short_desc>
          <delta_ts>2010-06-15 15:30:55 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>230019</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-24 18:15:06 -0700</bug_when>
    <thetext>Move functions out of Frame class that were marked &quot;move to Chrome&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230021</commentid>
    <comment_count>1</comment_count>
      <attachid>56954</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-24 18:22:07 -0700</bug_when>
    <thetext>Created attachment 56954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230023</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-24 18:23:01 -0700</bug_when>
    <thetext>Attachment 56954 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234549</commentid>
    <comment_count>3</comment_count>
      <attachid>56954</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 23:07:31 -0700</bug_when>
    <thetext>Comment on attachment 56954
Patch

WebCore/ChangeLog:8
 +  	Refactoring that does not require new tests.
Evil tab

WebCore/loader/FrameLoader.cpp:692
 +              // FIXME: This is only needed if we reuse the same DOMWindow for multiple URLs.
We do that in the case of fragments but not for URLs that are &quot;really&quot; different.

WebCore/page/DOMWindow.h:418
 +      inline String DOMWindow::status() const
Maybe this should be on one line to save space?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237461</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-12 20:57:42 -0700</bug_when>
    <thetext>Adam, did you review the patch? Could you either set it to review+, set it to review-, or state that you think someone else should review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238014</commentid>
    <comment_count>5</comment_count>
      <attachid>58693</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-14 13:22:03 -0700</bug_when>
    <thetext>Created attachment 58693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238358</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-06-15 06:40:08 -0700</bug_when>
    <thetext>A couple comments while waiting for Adam to respond to comment 4.

&gt; +        Move functions out of Frame class that were marked &quot;move to Chrome&quot;
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=39636

Might it be worth adding a comment saying why no functions are actually getting
added to Chrome (or anywhere for that matter)?

&gt; @@ -681,8 +680,10 @@ bool FrameLoader::didOpenURL(const KURL&amp;
&gt;      // its frame is not in a consistent state for rendering, so avoid setJSStatusBarText

Looks like you need to update this comment text.

&gt;      // since it may cause clients to attempt to render the frame.
&gt;      if (!m_creatingInitialEmptyDocument) {
&gt; -        m_frame-&gt;setJSStatusBarText(String());
&gt; -        m_frame-&gt;setJSDefaultStatusBarText(String());
&gt; +        if (DOMWindow* window = m_frame-&gt;existingDOMWindow()) {

Is it possible there is a behavior change here since it doesn&apos;t look like
the current code needs the DOMWindow to exist for it to do something.

&gt; +            window-&gt;setStatus(String());
&gt; +            window-&gt;setDefaultStatus(String());

&gt;      // Delete old status bar messages (if it _was_ activated on last URL).
&gt;      if (m_frame-&gt;script()-&gt;canExecuteScripts(NotAboutToExecuteScript)) {
&gt; -        m_frame-&gt;setJSStatusBarText(String());
&gt; -        m_frame-&gt;setJSDefaultStatusBarText(String());
&gt; +        if (DOMWindow* window = m_frame-&gt;existingDOMWindow()) {

Same question as above.

&gt; +            window-&gt;setStatus(String());
&gt; +            window-&gt;setDefaultStatus(String());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238380</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-15 07:51:13 -0700</bug_when>
    <thetext>Sorry, my comments were a drive-by.  I&apos;ll review it this afternoon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238382</commentid>
    <comment_count>8</comment_count>
      <attachid>58693</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-15 07:55:58 -0700</bug_when>
    <thetext>Comment on attachment 58693
Patch

WebCore/loader/FrameLoader.cpp:683
 +          if (DOMWindow* window = m_frame-&gt;existingDOMWindow()) {
I guess we don&apos;t care about the cases when the frame doesn&apos;t have a DOMWindow?

WebCore/page/DOMWindow.cpp:767
 +      if (!m_frame)
Don&apos;t we test for this above?

WebCore/page/DOMWindow.cpp:803
 +      if (!(page-&gt;openedByDOM() || page-&gt;getHistoryLength() &lt;= 1 || allowScriptsToCloseWindows))
I think this would be clearer if you pushed the ! inside the ||

WebCore/page/DOMWindow.h:418
 +      inline String DOMWindow::status() const
I suspect the &quot;inline&quot; here is redundant.  Also, we commonly put these trivial accessors on one line.

WebCore/page/DOMWindow.h:423
 +      inline String DOMWindow::defaultStatus() const
ditto

WebKit/win/WebView.cpp: 
 +          *result = frame-&gt;shouldClose() ? TRUE : FALSE;
Do we not need this type conversion?  I don&apos;t really understand what Windows needs here..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238570</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-15 15:15:04 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 58693 [details])
&gt; WebCore/loader/FrameLoader.cpp:683
&gt;  +          if (DOMWindow* window = m_frame-&gt;existingDOMWindow()) {
&gt; I guess we don&apos;t care about the cases when the frame doesn&apos;t have a DOMWindow?

Yes. This code resets the status string. When there is no DOM window we’re guaranteed the status string is not set.

&gt; WebCore/page/DOMWindow.cpp:767
&gt;  +      if (!m_frame)
&gt; Don&apos;t we test for this above?

Yes, but the code calls focus and that can trigger events and the JavaScript event handlers can do almost anything. By the time we return, m_frame may be 0.

&gt; WebCore/page/DOMWindow.cpp:803
&gt;  +      if (!(page-&gt;openedByDOM() || page-&gt;getHistoryLength() &lt;= 1 || allowScriptsToCloseWindows))
&gt; I think this would be clearer if you pushed the ! inside the ||

That’s funny. I thought it was clearer not to do that! Let me think about other ways to make it clear.

&gt; WebCore/page/DOMWindow.h:418
&gt;  +      inline String DOMWindow::status() const
&gt; I suspect the &quot;inline&quot; here is redundant.  Also, we commonly put these trivial accessors on one line.

The inline is not redundant because:

    1) This function definition is outside the class definition, so the rule that makes all functions defined in the class definition inline does not apply.

    2) And, the function is not marked inline in its declaration inside the class definition.

While it’s true we often put trivial accessors on one line inside the class definition, we normally do not do that for functions outside the class definition. I think in this case it’s good to leave the function outside, making the class definition even clearer. I hope it’s OK if I leave it like this.

&gt; WebKit/win/WebView.cpp: 
&gt;  +          *result = frame-&gt;shouldClose() ? TRUE : FALSE;
&gt; Do we not need this type conversion?  I don&apos;t really understand what Windows needs here..

We definitely do not need it. TRUE and FALSE are constants that are equal to 1 and 0. Assigning from a bool works fine.

The only case where &quot;? TRUE : FALSE&quot; or the line is needed is when all three of these are true:

    1) We are converting from a boolean type that can take on values other than 1 or 0, such as Boolean or BOOL (both of which are typedefs).
    2) We are converting to a boolean type that can take on values other than 1 or 0.
    3) The code path is one where the value might not be 1 or 0.

If either type is bool then that idiom is not needed. In this case, condition (1) is not true, so &quot;? TRUE : FALSE&quot; is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238578</commentid>
    <comment_count>10</comment_count>
      <attachid>58693</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-15 15:20:51 -0700</bug_when>
    <thetext>Comment on attachment 58693
Patch

Clearing flags on attachment: 58693

Committed r61217: &lt;http://trac.webkit.org/changeset/61217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238579</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-15 15:20:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238581</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-15 15:26:22 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; A couple comments while waiting for Adam to respond to comment 4.

Sorry, I saw your comments, but forgot to deal with them.

&gt; &gt; +        Move functions out of Frame class that were marked &quot;move to Chrome&quot;
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=39636
&gt; 
&gt; Might it be worth adding a comment saying why no functions are actually getting
&gt; added to Chrome (or anywhere for that matter)?

You mean to the change log? Frame.h has long had comments saying that various functions need to move out to the Frame subobjects. I could mention that again here. I would be happy to add something, but not sure what it should be.

&gt; &gt;      // its frame is not in a consistent state for rendering, so avoid setJSStatusBarText
&gt; 
&gt; Looks like you need to update this comment text.

Oops, I&apos;ll take care of that.

&gt; &gt;      // since it may cause clients to attempt to render the frame.
&gt; &gt;      if (!m_creatingInitialEmptyDocument) {
&gt; &gt; -        m_frame-&gt;setJSStatusBarText(String());
&gt; &gt; -        m_frame-&gt;setJSDefaultStatusBarText(String());
&gt; &gt; +        if (DOMWindow* window = m_frame-&gt;existingDOMWindow()) {
&gt; 
&gt; Is it possible there is a behavior change here since it doesn&apos;t look like
&gt; the current code needs the DOMWindow to exist for it to do something.

It&apos;s not. The code clears out the text, setting it to the null string. But the text is stored in the DOM window. If it&apos;s non-null the DOM window is guaranteed to exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238584</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 15:30:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61217 might have broken Qt Linux ARMv5 Release and Qt Linux ARMv7 Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56954</attachid>
            <date>2010-05-24 18:22:07 -0700</date>
            <delta_ts>2010-06-14 13:21:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39636-20100524182206.patch</filename>
            <type>text/plain</type>
            <size>17244</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDEwOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDUtMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
ZnVuY3Rpb25zIG91dCBvZiBGcmFtZSBjbGFzcyB0aGF0IHdlcmUgbWFya2VkICJtb3ZlIHRvIENo
cm9tZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjM2CisKKwlSZWZhY3RvcmluZyB0aGF0IGRvZXMgbm90IHJlcXVpcmUgbmV3IHRlc3RzLgorCisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpkaWRPcGVuVVJMKTogQ2FsbCBzZXRTdGF0dXMgYW5kIHNldERlZmF1bHRTdGF0dXMK
KyAgICAgICAgb24gRE9NV2luZG93IHJhdGhlciB0aGFuIGdvaW5nIHRocm91Z2ggRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6b3Blbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6IENh
bGwKKyAgICAgICAgc2hvdWxkQ2xvc2Ugb24gdGhpcyBvYmplY3QgaW5zdGVhZCBvZiBnb2luZyB0
aHJvdWdoIEZyYW1lLgorCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaEFsbFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudHMp
OiBDYWxsCisgICAgICAgIHNob3VsZENsb3NlIG9uIEZyYW1lTG9hZGVyIGluc3RlYWQgb2YgZ29p
bmcgdGhyb3VnaCBGcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Zm9jdXMpOiBN
b3ZlZCB0aGUgY29kZSBmcm9tIEZyYW1lOjpmb2N1c1dpbmRvdworICAgICAgICBpbiBoZXJlLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpibHVyKTogTW92ZWQgdGhlIGNvZGUgZnJvbSBG
cmFtZTo6dW5mb2N1c1dpbmRvdworICAgICAgICBpbiBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93OjpjbG9zZSk6IE1vdmVkIHRoZSBjb2RlIGZyb20gRnJhbWU6OnNjaGVkdWxlQ2xv
c2UKKyAgICAgICAgaW4gaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2V0U3Rh
dHVzKTogTW92ZWQgdGhlIGNvZGUgZnJvbQorICAgICAgICBGcmFtZTo6c2V0SlNTdGF0dXNCYXJU
ZXh0IGluIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNldERlZmF1bHRTdGF0
dXMpOiBNb3ZlZCB0aGUgY29kZSBmcm9tCisgICAgICAgIEZyYW1lOjpzZXRKU0RlZmF1bHRTdGF0
dXNCYXJUZXh0IGluIGhlcmUuCisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOiBBZGRlZCBt
X3N0YXR1cyBhbmQgbV9kZWZhdWx0U3RhdHVzIG1lbWJlcnMgdG8KKyAgICAgICAgc3RvcmUgdGhl
IHN0YXR1cyBtZXNzYWdlcyBiZWluZyBzZXQgYnkgdGhlIERPTS4KKworICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOiBSZW1vdmVkIGFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtYXJrZWQKKyAg
ICAgICAgInRvIGJlIG1vdmVkIGludG8gQ2hyb21lIi4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6
IERpdHRvLgorCiAyMDEwLTA1LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA2MDEwMykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjg4LDggKzY4OCwxMiBAQCBib29sIEZyYW1lTG9hZGVyOjpkaWRP
cGVuVVJMKGNvbnN0IEtVUkwmCiAgICAgLy8gaXRzIGZyYW1lIGlzIG5vdCBpbiBhIGNvbnNpc3Rl
bnQgc3RhdGUgZm9yIHJlbmRlcmluZywgc28gYXZvaWQgc2V0SlNTdGF0dXNCYXJUZXh0CiAgICAg
Ly8gc2luY2UgaXQgbWF5IGNhdXNlIGNsaWVudHMgdG8gYXR0ZW1wdCB0byByZW5kZXIgdGhlIGZy
YW1lLgogICAgIGlmICghbV9jcmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KSB7Ci0gICAgICAg
IG1fZnJhbWUtPnNldEpTU3RhdHVzQmFyVGV4dChTdHJpbmcoKSk7Ci0gICAgICAgIG1fZnJhbWUt
PnNldEpTRGVmYXVsdFN0YXR1c0JhclRleHQoU3RyaW5nKCkpOworICAgICAgICBpZiAoRE9NV2lu
ZG93KiB3aW5kb3cgPSBtX2ZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpKSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IG5lZWRlZCBpZiB3ZSByZXVzZSB0aGUgc2FtZSBET01X
aW5kb3cgZm9yIG11bHRpcGxlIFVSTHMuCisgICAgICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRo
ZSBjb2RlIGlzIG5vdCBuZWVkZWQuCisgICAgICAgICAgICB3aW5kb3ctPnNldFN0YXR1cyhTdHJp
bmcoKSk7CisgICAgICAgICAgICB3aW5kb3ctPnNldERlZmF1bHRTdGF0dXMoU3RyaW5nKCkpOwor
ICAgICAgICB9CiAgICAgfQogICAgIG1fVVJMID0gdXJsOwogICAgIGlmIChtX1VSTC5wcm90b2Nv
bEluSFRUUEZhbWlseSgpICYmICFtX1VSTC5ob3N0KCkuaXNFbXB0eSgpICYmIG1fVVJMLnBhdGgo
KS5pc0VtcHR5KCkpCkBAIC0yNjExLDggKzI2MTUsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3Bl
bihDYWNoZWRQYWdlJiBjYWNoZQogICAgIAogICAgIC8vIERlbGV0ZSBvbGQgc3RhdHVzIGJhciBt
ZXNzYWdlcyAoaWYgaXQgX3dhc18gYWN0aXZhdGVkIG9uIGxhc3QgVVJMKS4KICAgICBpZiAobV9m
cmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0
KSkgewotICAgICAgICBtX2ZyYW1lLT5zZXRKU1N0YXR1c0JhclRleHQoU3RyaW5nKCkpOwotICAg
ICAgICBtX2ZyYW1lLT5zZXRKU0RlZmF1bHRTdGF0dXNCYXJUZXh0KFN0cmluZygpKTsKKyAgICAg
ICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKSkg
eworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb25seSBuZWVkZWQgaWYgd2UgcmV1c2Ug
dGhlIHNhbWUgRE9NV2luZG93IGZvciBtdWx0aXBsZSBwYWdlcy4KKyAgICAgICAgICAgIC8vIEl0
J3MgcG9zc2libGUgdGhlIGNvZGUgaXMgbm90IG5lZWRlZC4KKyAgICAgICAgICAgIHdpbmRvdy0+
c2V0U3RhdHVzKFN0cmluZygpKTsKKyAgICAgICAgICAgIHdpbmRvdy0+c2V0RGVmYXVsdFN0YXR1
cyhTdHJpbmcoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBjYWNoZWRQYWdlLnJlc3RvcmUo
bV9mcmFtZS0+cGFnZSgpKTsKQEAgLTM0MjYsNyArMzQzNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWcKICAgICAvLyAgICAgICBpcyB0aGUgdXNlciByZXNwb25k
aW5nIENhbmNlbCB0byB0aGUgZm9ybSByZXBvc3QgbmFnIHNoZWV0LgogICAgIC8vICAgIDIpIFVz
ZXIgcmVzcG9uZGVkIENhbmNlbCB0byBhbiBhbGVydCBwb3BwZWQgdXAgYnkgdGhlIGJlZm9yZSB1
bmxvYWQgZXZlbnQgaGFuZGxlci4KICAgICAvLyBUaGUgImJlZm9yZSB1bmxvYWQiIGV2ZW50IGhh
bmRsZXIgcnVucyBvbmx5IGZvciB0aGUgbWFpbiBmcmFtZS4KLSAgICBib29sIGNhbkNvbnRpbnVl
ID0gc2hvdWxkQ29udGludWUgJiYgKCFpc0xvYWRpbmdNYWluRnJhbWUoKSB8fCBtX2ZyYW1lLT5z
aG91bGRDbG9zZSgpKTsKKyAgICBib29sIGNhbkNvbnRpbnVlID0gc2hvdWxkQ29udGludWUgJiYg
KCFpc0xvYWRpbmdNYWluRnJhbWUoKSB8fCBzaG91bGRDbG9zZSgpKTsKIAogICAgIGlmICghY2Fu
Q29udGludWUpIHsKICAgICAgICAgLy8gSWYgd2Ugd2VyZSB3YWl0aW5nIGZvciBhIHF1aWNrIHJl
ZGlyZWN0LCBidXQgdGhlIHBvbGljeSBkZWxlZ2F0ZSBkZWNpZGVkIHRvIGlnbm9yZSBpdCwgdGhl
biB3ZSAKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiA2MDEwNCkKKysrIFdlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNyArMjI5LDcgQEAgYm9vbCBE
T01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ0JlZm9yZQogICAgICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCFmcmFtZS0+c2hvdWxkQ2xvc2Uo
KSkKKyAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPnNob3VsZENsb3NlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03NTgsNyArNzU4LDE4IEBAIHZvaWQgRE9N
V2luZG93Ojpmb2N1cygpCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2ZyYW1lLT5mb2N1c1dpbmRvdygpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB3ZSdyZSBh
IHRvcCBsZXZlbCB3aW5kb3csIGJyaW5nIHRoZSB3aW5kb3cgdG8gdGhlIGZyb250LgorICAgIGlm
IChtX2ZyYW1lID09IHBhZ2UtPm1haW5GcmFtZSgpKQorICAgICAgICBwYWdlLT5jaHJvbWUoKS0+
Zm9jdXMoKTsKKworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9m
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmZvY3VzRG9jdW1lbnRWaWV3KCk7CiB9CiAKIHZvaWQgRE9N
V2luZG93OjpibHVyKCkKQEAgLTc2Niw3ICs3NzcsMTQgQEAgdm9pZCBET01XaW5kb3c6OmJsdXIo
KQogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcmFtZS0+dW5m
b2N1c1dpbmRvdygpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9mcmFtZSAhPSBwYWdlLT5tYWlu
RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+Y2hyb21lKCktPnVuZm9jdXMo
KTsKIH0KIAogdm9pZCBET01XaW5kb3c6OmNsb3NlKCkKQEAgLTc4NCw4ICs4MDIsMTMgQEAgdm9p
ZCBET01XaW5kb3c6OmNsb3NlKCkKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5z
ZXR0aW5ncygpOwogICAgIGJvb2wgYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MgPSBzZXR0aW5n
cyAmJiBzZXR0aW5ncy0+YWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoKTsKIAotICAgIGlmIChw
YWdlLT5vcGVuZWRCeURPTSgpIHx8IHBhZ2UtPmdldEhpc3RvcnlMZW5ndGgoKSA8PSAxIHx8IGFs
bG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKQotICAgICAgICBtX2ZyYW1lLT5zY2hlZHVsZUNsb3Nl
KCk7CisgICAgaWYgKCEocGFnZS0+b3BlbmVkQnlET00oKSB8fCBwYWdlLT5nZXRIaXN0b3J5TGVu
Z3RoKCkgPD0gMSB8fCBhbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cykpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCktPnNob3VsZENsb3NlKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5jbG9zZVdpbmRvd1Nvb24oKTsKIH0KIAog
dm9pZCBET01XaW5kb3c6OnByaW50KCkKQEAgLTEwNTAsMzYgKzEwNzMsMzQgQEAgdm9pZCBET01X
aW5kb3c6OnNldE5hbWUoY29uc3QgU3RyaW5nJiBzdAogICAgIG1fZnJhbWUtPnRyZWUoKS0+c2V0
TmFtZShzdHJpbmcpOwogfQogCi1TdHJpbmcgRE9NV2luZG93OjpzdGF0dXMoKSBjb25zdAordm9p
ZCBET01XaW5kb3c6OnNldFN0YXR1cyhjb25zdCBTdHJpbmcmIHN0cmluZykgCiB7Ci0gICAgaWYg
KCFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgbV9zdGF0dXMgPSBzdHJp
bmc7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+anNTdGF0dXNCYXJUZXh0KCk7Ci19CisgICAgaWYg
KCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgRE9NV2luZG93OjpzZXRTdGF0dXMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIAoteyAKLSAgICBpZiAoIW1fZnJhbWUpIAotICAgICAgICBy
ZXR1cm47IAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdl
KQorICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5zZXRKU1N0YXR1c0JhclRleHQoc3Ry
aW5nKTsgCisgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOyAvLyBDbGllbnQgY2FsbHMg
c2hvdWxkbid0IGJlIG1hZGUgd2hlbiB0aGUgZnJhbWUgaXMgaW4gaW5jb25zaXN0ZW50IHN0YXRl
LgorICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRTdGF0dXNiYXJUZXh0KG1fZnJhbWUsIG1fc3RhdHVz
KTsKIH0gCiAgICAgCi1TdHJpbmcgRE9NV2luZG93OjpkZWZhdWx0U3RhdHVzKCkgY29uc3QKK3Zv
aWQgRE9NV2luZG93OjpzZXREZWZhdWx0U3RhdHVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAKIHsK
LSAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBtX2RlZmF1
bHRTdGF0dXMgPSBzdHJpbmc7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+anNEZWZhdWx0U3RhdHVz
QmFyVGV4dCgpOwotfSAKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKIAotdm9p
ZCBET01XaW5kb3c6OnNldERlZmF1bHRTdGF0dXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIAoteyAK
LSAgICBpZiAoIW1fZnJhbWUpIAotICAgICAgICByZXR1cm47IAorICAgIFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CiAKLSAgICBt
X2ZyYW1lLT5zZXRKU0RlZmF1bHRTdGF0dXNCYXJUZXh0KHN0cmluZyk7CisgICAgQVNTRVJUKG1f
ZnJhbWUtPmRvY3VtZW50KCkpOyAvLyBDbGllbnQgY2FsbHMgc2hvdWxkbid0IGJlIG1hZGUgd2hl
biB0aGUgZnJhbWUgaXMgaW4gaW5jb25zaXN0ZW50IHN0YXRlLgorICAgIHBhZ2UtPmNocm9tZSgp
LT5zZXRTdGF0dXNiYXJUZXh0KG1fZnJhbWUsIG1fZGVmYXVsdFN0YXR1cyk7CiB9CiAKIERPTVdp
bmRvdyogRE9NV2luZG93OjpzZWxmKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDYw
MTAzKQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTAs
OCArNDEwLDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgICAgIEV2ZW50
VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKworICAgICAgICBTdHJpbmcgbV9zdGF0dXM7
CisgICAgICAgIFN0cmluZyBtX2RlZmF1bHRTdGF0dXM7CiAgICAgfTsKIAorICAgIGlubGluZSBT
dHJpbmcgRE9NV2luZG93OjpzdGF0dXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
c3RhdHVzOworICAgIH0KKworICAgIGlubGluZSBTdHJpbmcgRE9NV2luZG93OjpkZWZhdWx0U3Rh
dHVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2RlZmF1bHRTdGF0dXM7CisgICAg
fSAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRE9NV2luZG93X2gKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAkocmV2aXNpb24gNjAxMDQpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MTksMjIgKzYxOSw2IEBAIHZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJv
b2wgcHJpbnRpbmcsIGYKICAgICAgICAgY2hpbGQtPnNldFByaW50aW5nKHByaW50aW5nLCBtaW5Q
YWdlV2lkdGgsIG1heFBhZ2VXaWR0aCwgYWRqdXN0Vmlld1NpemUpOwogfQogCi12b2lkIEZyYW1l
OjpzZXRKU1N0YXR1c0JhclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQotewotICAgIEFTU0VSVCht
X2RvYyk7IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3QgYmUgbWFkZSB3aGVuIHRoZSBmcmFtZSBp
cyBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCi0gICAgbV9ranNTdGF0dXNCYXJUZXh0ID0gdGV4dDsK
LSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLT5zZXRTdGF0dXNiYXJU
ZXh0KHRoaXMsIG1fa2pzU3RhdHVzQmFyVGV4dCk7Ci19Ci0KLXZvaWQgRnJhbWU6OnNldEpTRGVm
YXVsdFN0YXR1c0JhclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQotewotICAgIEFTU0VSVChtX2Rv
Yyk7IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3QgYmUgbWFkZSB3aGVuIHRoZSBmcmFtZSBpcyBp
biBpbmNvbnNpc3RlbnQgc3RhdGUuCi0gICAgbV9ranNEZWZhdWx0U3RhdHVzQmFyVGV4dCA9IHRl
eHQ7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5jaHJvbWUoKS0+c2V0U3RhdHVz
YmFyVGV4dCh0aGlzLCBtX2tqc0RlZmF1bHRTdGF0dXNCYXJUZXh0KTsKLX0KLQogdm9pZCBGcmFt
ZTo6c2V0TmVlZHNSZWFwcGx5U3R5bGVzKCkKIHsKICAgICAvLyBXaGVuIHRoZSBmcmFtZSBpcyBu
b3Qgc2hvd2luZyB3ZWIgY29udGVudCwgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGFwcGx5IHN0
eWxlcy4KQEAgLTE0MzEsMzggKzE0MTUsNiBAQCBTdHJpbmcgRnJhbWU6OmRvY3VtZW50VHlwZVN0
cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIEZyYW1lOjpmb2N1
c1dpbmRvdygpCi17Ci0gICAgaWYgKCFwYWdlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IElmIHdlJ3JlIGEgdG9wIGxldmVsIHdpbmRvdywgYnJpbmcgdGhlIHdpbmRvdyB0byB0aGUgZnJv
bnQuCi0gICAgaWYgKCF0cmVlKCktPnBhcmVudCgpKQotICAgICAgICBwYWdlKCktPmNocm9tZSgp
LT5mb2N1cygpOwotCi0gICAgZXZlbnRIYW5kbGVyKCktPmZvY3VzRG9jdW1lbnRWaWV3KCk7Ci19
Ci0KLXZvaWQgRnJhbWU6OnVuZm9jdXNXaW5kb3coKQotewotICAgIGlmICghcGFnZSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiB3ZSdyZSBhIHRvcCBsZXZlbCB3aW5kb3csIGRlYWN0
aXZhdGUgdGhlIHdpbmRvdy4KLSAgICBpZiAoIXRyZWUoKS0+cGFyZW50KCkpCi0gICAgICAgIHBh
Z2UoKS0+Y2hyb21lKCktPnVuZm9jdXMoKTsKLX0KLQotdm9pZCBGcmFtZTo6c2NoZWR1bGVDbG9z
ZSgpCi17Ci0gICAgaWYgKCFzaG91bGRDbG9zZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBD
aHJvbWUqIGNocm9tZSA9IHBhZ2UoKSA/IHBhZ2UoKS0+Y2hyb21lKCkgOiAwOwotICAgIGlmIChj
aHJvbWUpCi0gICAgICAgIGNocm9tZS0+Y2xvc2VXaW5kb3dTb29uKCk7Ci19Ci0KIHZvaWQgRnJh
bWU6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xk
U2VsZWN0aW9uLCBib29sIGNsb3NlVHlwaW5nKQogewogICAgIGJvb2wgaXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQgPSBlZGl0b3IoKS0+aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA2MDEwNCkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xODksMTkgKzE4OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGxpZmVTdXBwb3J0VGltZXJGaXJlZChUaW1lcjxG
cmFtZT4qKTsKIAotICAgIC8vID09PSB0byBiZSBtb3ZlZCBpbnRvIENocm9tZQotCi0gICAgcHVi
bGljOgotICAgICAgICB2b2lkIGZvY3VzV2luZG93KCk7Ci0gICAgICAgIHZvaWQgdW5mb2N1c1dp
bmRvdygpOwotICAgICAgICBib29sIHNob3VsZENsb3NlKCk7Ci0gICAgICAgIHZvaWQgc2NoZWR1
bGVDbG9zZSgpOwotCi0gICAgICAgIHZvaWQgc2V0SlNTdGF0dXNCYXJUZXh0KGNvbnN0IFN0cmlu
ZyYpOwotICAgICAgICB2b2lkIHNldEpTRGVmYXVsdFN0YXR1c0JhclRleHQoY29uc3QgU3RyaW5n
Jik7Ci0gICAgICAgIFN0cmluZyBqc1N0YXR1c0JhclRleHQoKSBjb25zdDsKLSAgICAgICAgU3Ry
aW5nIGpzRGVmYXVsdFN0YXR1c0JhclRleHQoKSBjb25zdDsKLQogICAgIC8vID09PSB0byBiZSBt
b3ZlZCBpbnRvIEVkaXRvcgogCiAgICAgcHVibGljOgpAQCAtMzM2LDkgKzMyMyw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTY3JpcHRDb250cm9sbGVyIG1fc2NyaXB0OwogCi0g
ICAgICAgIFN0cmluZyBtX2tqc1N0YXR1c0JhclRleHQ7Ci0gICAgICAgIFN0cmluZyBtX2tqc0Rl
ZmF1bHRTdGF0dXNCYXJUZXh0OwotCiAgICAgICAgIG11dGFibGUgU2VsZWN0aW9uQ29udHJvbGxl
ciBtX3NlbGVjdGlvbkNvbnRyb2xsZXI7CiAgICAgICAgIG11dGFibGUgVmlzaWJsZVNlbGVjdGlv
biBtX21hcms7CiAgICAgICAgIG11dGFibGUgRWRpdG9yIG1fZWRpdG9yOwpAQCAtNDI0LDE2ICs0
MDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG1fbWFyayA9IHM7CiAgICAgfQog
Ci0gICAgaW5saW5lIFN0cmluZyBGcmFtZTo6anNTdGF0dXNCYXJUZXh0KCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2tqc1N0YXR1c0JhclRleHQ7Ci0gICAgfQotCi0gICAgaW5saW5l
IFN0cmluZyBGcmFtZTo6anNEZWZhdWx0U3RhdHVzQmFyVGV4dCgpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9ranNEZWZhdWx0U3RhdHVzQmFyVGV4dDsKLSAgICB9Ci0KICAgICBpbmxp
bmUgYm9vbCBGcmFtZTo6bmVlZHNSZWFwcGx5U3R5bGVzKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX25lZWRzUmVhcHBseVN0eWxlczsKQEAgLTUwOSwxMyArNDgzLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gJm1fZXZlbnRIYW5kbGVyOwogICAgIH0KIAot
ICAgIGlubGluZSBib29sIEZyYW1lOjpzaG91bGRDbG9zZSgpCi0gICAgewotICAgICAgICAvLyBG
SVhNRTogU29tZSBXZWJLaXQgY2xpZW50cyBjYWxsIEZyYW1lOjpzaG91bGRDbG9zZSgpIGRpcmVj
dGx5LgotICAgICAgICAvLyBXZSBzaG91bGQgdHJhbnNpdGlvbiB0aGVtIHRvIGNhbGxpbmcgRnJh
bWVMb2FkZXI6OnNob3VsZENsb3NlKCkgdGhlbiBnZXQgcmlkIG9mIHRoaXMgbWV0aG9kLgotICAg
ICAgICByZXR1cm4gbV9sb2FkZXIuc2hvdWxkQ2xvc2UoKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZyYW1lX2gKSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDEwOSkKKysrIFdl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDUt
MjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZnVuY3Rpb25zIG91dCBvZiBGcmFtZSBj
bGFzcyB0aGF0IHdlcmUgbWFya2VkICJtb3ZlIHRvIENocm9tZSIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NjM2CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRyeUNs
b3NlKTogQ2FsbCBzaG91bGRDbG9zZSBvbiBGcmFtZUxvYWRlciBpbnN0ZWFkIG9mCisgICAgICAg
IGdvaW5nIHRocm91Z2ggRnJhbWUuCisKIDIwMTAtMDUtMjEgIE1hcmsgUm93ZSAgPG1yb3dlQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA2MDEwMykKKysrIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIs
NyArMTQyLDcgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAKIHZvaWQgV2ViUGFnZTo6dHJ5Q2xv
c2UoKQogewotICAgIGlmICghbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zaG91bGRDbG9zZSgp
KQorICAgIGlmICghbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+c2hvdWxkQ2xv
c2UoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkNsb3NlUGFnZSwgbV9wYWdlSUQsIENv
cmVJUEM6OkluKCkpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDEwOSkKKysrIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAx
MC0wNS0yNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBmdW5jdGlvbnMgb3V0IG9mIEZy
YW1lIGNsYXNzIHRoYXQgd2VyZSBtYXJrZWQgIm1vdmUgdG8gQ2hyb21lIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk2MzYKKworICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaXNwYXRj
aEJlZm9yZVVubG9hZEV2ZW50KTogQ2FsbCBzaG91bGRDbG9zZQorICAgICAgICBvbiBGcmFtZUxv
YWRlciBpbnN0ZWFkIG9mIGdvaW5nIHRocm91Z2ggRnJhbWUuCisKIDIwMTAtMDUtMjQgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDYwMTA0
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNTIsNyArMTM1Miw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmRpc3BhdGNoQmVmb3JlVW5s
b2FkRXYKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVy
biBmcmFtZS0+c2hvdWxkQ2xvc2UoKTsKKyAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5zaG91
bGRDbG9zZSgpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpkaXNwYXRjaFVubG9hZEV2ZW50KCkK
SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2MDEwOSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDUtMjQgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1vdmUgZnVuY3Rpb25zIG91dCBvZiBGcmFtZSBjbGFzcyB0aGF0IHdlcmUgbWFya2VkICJt
b3ZlIHRvIENocm9tZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NjM2CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgc2hvdWxkQ2xvc2VdKTogQ2FsbCBzaG91bGRDbG9zZSBvbiBGcmFtZUxvYWRlciBp
bnN0ZWFkIG9mCisgICAgICAgIGdvaW5nIHRocm91Z2ggRnJhbWUuCisKIDIwMTAtMDUtMjQgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDYwMTA0KQorKysgV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyMDgsNyArNDIw
OCw3IEBAIC0gKEJPT0wpc2hvdWxkQ2xvc2UKICAgICBGcmFtZSogY29yZUZyYW1lID0gW3NlbGYg
X21haW5Db3JlRnJhbWVdOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gWUVT
OwotICAgIHJldHVybiBjb3JlRnJhbWUtPnNob3VsZENsb3NlKCk7CisgICAgcmV0dXJuIGNvcmVG
cmFtZS0+bG9hZGVyKCktPnNob3VsZENsb3NlKCk7CiB9CiAKIHN0YXRpYyBOU0FwcGxlRXZlbnRE
ZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUganNW
YWx1ZSkKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDEwOSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDUtMjQgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1vdmUgZnVuY3Rpb25zIG91dCBvZiBGcmFtZSBjbGFzcyB0aGF0IHdlcmUgbWFy
a2VkICJtb3ZlIHRvIENocm9tZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM5NjM2CisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YlZpZXc6OnNob3VsZENsb3NlKTogQ2FsbCBzaG91bGRDbG9zZSBvbiBGcmFtZUxvYWRlciBpbnN0
ZWFkIG9mCisgICAgICAgIGdvaW5nIHRocm91Z2ggRnJhbWUuCisKIDIwMTAtMDUtMjQgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA2MDEwNCkKKysrIFdlYktpdC93aW4vV2ViVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNDIsNyArNTE0Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViVmlldzo6c2hvdWwKIAogICAgICpyZXN1bHQgPSBUUlVFOwogICAgIGlmIChG
cmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpKQotICAgICAgICAqcmVzdWx0ID0gZnJh
bWUtPnNob3VsZENsb3NlKCkgPyBUUlVFIDogRkFMU0U7CisgICAgICAgICpyZXN1bHQgPSBmcmFt
ZS0+bG9hZGVyKCktPnNob3VsZENsb3NlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKSW5kZXg6
IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwko
cmV2aXNpb24gNjAxMDkpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTAtMDUtMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
ZnVuY3Rpb25zIG91dCBvZiBGcmFtZSBjbGFzcyB0aGF0IHdlcmUgbWFya2VkICJtb3ZlIHRvIENo
cm9tZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjM2CisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICh3eFdlYkZyYW1lOjpTaG91
bGRDbG9zZSk6IENhbGwgc2hvdWxkQ2xvc2Ugb24gRnJhbWVMb2FkZXIgaW5zdGVhZAorICAgICAg
ICBvZiBnb2luZyB0aHJvdWdoIEZyYW1lLgorCiAyMDEwLTA1LTI0ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6
IFdlYktpdC93eC9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYkZyYW1l
LmNwcAkocmV2aXNpb24gNjAxMDQpCisrKyBXZWJLaXQvd3gvV2ViRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgd3hXZWJWaWV3RE9NRWxlbWVudEluZm8gd3hXZWJG
cmFtZTo6SGl0VAogYm9vbCB3eFdlYkZyYW1lOjpTaG91bGRDbG9zZSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1faW1wbC0+ZnJhbWUpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT5zaG91bGRD
bG9zZSgpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+bG9hZGVyKCktPnNob3VsZENs
b3NlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58693</attachid>
            <date>2010-06-14 13:22:03 -0700</date>
            <delta_ts>2010-06-15 15:20:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39636-20100614132202.patch</filename>
            <type>text/plain</type>
            <size>18912</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTEyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDYtMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
ZnVuY3Rpb25zIG91dCBvZiBGcmFtZSBjbGFzcyB0aGF0IHdlcmUgbWFya2VkICJtb3ZlIHRvIENo
cm9tZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjM2CisKKyAgICAgICAgUmVmYWN0b3JpbmcgdGhhdCBkb2VzIG5vdCByZXF1aXJlIG5ldyB0ZXN0
cy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6ZGlkT3BlblVSTCk6IENhbGwgc2V0U3RhdHVzIGFuZCBzZXREZWZhdWx0
U3RhdHVzCisgICAgICAgIG9uIERPTVdpbmRvdyByYXRoZXIgdGhhbiBnb2luZyB0aHJvdWdoIEZy
YW1lLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Om9wZW4pOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xp
Y3kpOiBDYWxsCisgICAgICAgIHNob3VsZENsb3NlIG9uIHRoaXMgb2JqZWN0IGluc3RlYWQgb2Yg
Z29pbmcgdGhyb3VnaCBGcmFtZS4KKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hBbGxQZW5kaW5nQmVmb3JlVW5sb2Fk
RXZlbnRzKTogQ2FsbAorICAgICAgICBzaG91bGRDbG9zZSBvbiBGcmFtZUxvYWRlciBpbnN0ZWFk
IG9mIGdvaW5nIHRocm91Z2ggRnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmZv
Y3VzKTogTW92ZWQgdGhlIGNvZGUgZnJvbSBGcmFtZTo6Zm9jdXNXaW5kb3cKKyAgICAgICAgaW4g
aGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Ymx1cik6IE1vdmVkIHRoZSBjb2Rl
IGZyb20gRnJhbWU6OnVuZm9jdXNXaW5kb3cKKyAgICAgICAgaW4gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6Y2xvc2UpOiBNb3ZlZCB0aGUgY29kZSBmcm9tIEZyYW1lOjpzY2hl
ZHVsZUNsb3NlCisgICAgICAgIGluIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OnNldFN0YXR1cyk6IE1vdmVkIHRoZSBjb2RlIGZyb20KKyAgICAgICAgRnJhbWU6OnNldEpTU3Rh
dHVzQmFyVGV4dCBpbiBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzZXREZWZh
dWx0U3RhdHVzKTogTW92ZWQgdGhlIGNvZGUgZnJvbQorICAgICAgICBGcmFtZTo6c2V0SlNEZWZh
dWx0U3RhdHVzQmFyVGV4dCBpbiBoZXJlLgorCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDog
QWRkZWQgbV9zdGF0dXMgYW5kIG1fZGVmYXVsdFN0YXR1cyBtZW1iZXJzIHRvCisgICAgICAgIHN0
b3JlIHRoZSBzdGF0dXMgbWVzc2FnZXMgYmVpbmcgc2V0IGJ5IHRoZSBET00uCisKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmNwcDogUmVtb3ZlZCBhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbWFy
a2VkCisgICAgICAgICJ0byBiZSBtb3ZlZCBpbnRvIENocm9tZSIuCisgICAgICAgICogcGFnZS9G
cmFtZS5oOiBEaXR0by4KKwogMjAxMC0wNi0xNCAgQ2hhbmcgU2h1ICA8Y2hhbmcuc2h1QG5va2lh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDYxMTI5KQorKysgV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw2IEBACiAj
aW5jbHVkZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCi0jaWYgRU5BQkxFKFBMVUdJTl9QUk9Y
WV9GT1JfVklERU8pCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2VuZGlmCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVFRQUGFyc2Vycy5oIgpAQCAtODUsOSArODIsNiBAQAogI2luY2x1ZGUgIlBsdWdpbkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RW1iZWRkZWRPYmplY3QuaCIKLSNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSNp
bmNsdWRlICJSZW5kZXJWaWRlby5oIgotI2VuZGlmCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CkBAIC05OCwyMCArOTIsMjMgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0KLSNpZiBFTkFC
TEUoU0hBUkVEX1dPUktFUlMpCi0jaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgot
I2VuZGlmCi0KICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV2lu
ZG93RmVhdHVyZXMuaCIKLSNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgogI2luY2x1ZGUgIlhN
TERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJYU1NBdWRpdG9yLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlk
ZW8uaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQorI2luY2x1ZGUgIlNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNs
dWRlICJTVkdEb2N1bWVudC5oIgpAQCAtMTI1LDE2ICsxMjIsMTggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCiAjaWYgRU5BQkxFKFNWRykK
IHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKICNlbmRpZgotdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogI2lmIEVOQUJMRShYSFRNTE1QKQogc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdEFj
Y2VwdEhlYWRlcltdID0gImFwcGxpY2F0aW9uL3htbCxhcHBsaWNhdGlvbi92bmQud2FwLnhodG1s
K3htbCxhcHBsaWNhdGlvbi94aHRtbCt4bWw7cHJvZmlsZT0naHR0cDovL3d3dy53YXBmb3J1bS5v
cmcveGh0bWwnLHRleHQvaHRtbDtxPTAuOSx0ZXh0L3BsYWluO3E9MC44LGltYWdlL3BuZywqLyo7
cT0wLjUiOwogI2Vsc2UKIHN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRBY2NlcHRIZWFkZXJbXSA9
ICJhcHBsaWNhdGlvbi94bWwsYXBwbGljYXRpb24veGh0bWwreG1sLHRleHQvaHRtbDtxPTAuOSx0
ZXh0L3BsYWluO3E9MC44LGltYWdlL3BuZywqLyo7cT0wLjUiOwogI2VuZGlmCisKIHN0YXRpYyBk
b3VibGUgc3RvcmVkVGltZU9mTGFzdENvbXBsZXRlZExvYWQ7CiAKIGJvb2wgaXNCYWNrRm9yd2Fy
ZExvYWRUeXBlKEZyYW1lTG9hZFR5cGUgdHlwZSkKQEAgLTY4MSw4ICs2ODAsMTAgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6ZGlkT3BlblVSTChjb25zdCBLVVJMJgogICAgIC8vIGl0cyBmcmFtZSBpcyBu
b3QgaW4gYSBjb25zaXN0ZW50IHN0YXRlIGZvciByZW5kZXJpbmcsIHNvIGF2b2lkIHNldEpTU3Rh
dHVzQmFyVGV4dAogICAgIC8vIHNpbmNlIGl0IG1heSBjYXVzZSBjbGllbnRzIHRvIGF0dGVtcHQg
dG8gcmVuZGVyIHRoZSBmcmFtZS4KICAgICBpZiAoIW1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCkgewotICAgICAgICBtX2ZyYW1lLT5zZXRKU1N0YXR1c0JhclRleHQoU3RyaW5nKCkpOwot
ICAgICAgICBtX2ZyYW1lLT5zZXRKU0RlZmF1bHRTdGF0dXNCYXJUZXh0KFN0cmluZygpKTsKKyAg
ICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3co
KSkgeworICAgICAgICAgICAgd2luZG93LT5zZXRTdGF0dXMoU3RyaW5nKCkpOworICAgICAgICAg
ICAgd2luZG93LT5zZXREZWZhdWx0U3RhdHVzKFN0cmluZygpKTsKKyAgICAgICAgfQogICAgIH0K
ICAgICBtX1VSTCA9IHVybDsKICAgICBpZiAobV9VUkwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSAm
JiAhbV9VUkwuaG9zdCgpLmlzRW1wdHkoKSAmJiBtX1VSTC5wYXRoKCkuaXNFbXB0eSgpKQpAQCAt
MjQxMyw4ICsyNDE0LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByZXBhcmVGb3JDYWNoZWRQYWdl
UmUKICAgICAKICAgICAvLyBEZWxldGUgb2xkIHN0YXR1cyBiYXIgbWVzc2FnZXMgKGlmIGl0IF93
YXNfIGFjdGl2YXRlZCBvbiBsYXN0IFVSTCkuCiAgICAgaWYgKG1fZnJhbWUtPnNjcmlwdCgpLT5j
YW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKLSAgICAgICAgbV9m
cmFtZS0+c2V0SlNTdGF0dXNCYXJUZXh0KFN0cmluZygpKTsKLSAgICAgICAgbV9mcmFtZS0+c2V0
SlNEZWZhdWx0U3RhdHVzQmFyVGV4dChTdHJpbmcoKSk7CisgICAgICAgIGlmIChET01XaW5kb3cq
IHdpbmRvdyA9IG1fZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkpIHsKKyAgICAgICAgICAgIHdp
bmRvdy0+c2V0U3RhdHVzKFN0cmluZygpKTsKKyAgICAgICAgICAgIHdpbmRvdy0+c2V0RGVmYXVs
dFN0YXR1cyhTdHJpbmcoKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTMyMTksNyArMzIy
Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWcKICAgICAvLyAg
ICAgICBpcyB0aGUgdXNlciByZXNwb25kaW5nIENhbmNlbCB0byB0aGUgZm9ybSByZXBvc3QgbmFn
IHNoZWV0LgogICAgIC8vICAgIDIpIFVzZXIgcmVzcG9uZGVkIENhbmNlbCB0byBhbiBhbGVydCBw
b3BwZWQgdXAgYnkgdGhlIGJlZm9yZSB1bmxvYWQgZXZlbnQgaGFuZGxlci4KICAgICAvLyBUaGUg
ImJlZm9yZSB1bmxvYWQiIGV2ZW50IGhhbmRsZXIgcnVucyBvbmx5IGZvciB0aGUgbWFpbiBmcmFt
ZS4KLSAgICBib29sIGNhbkNvbnRpbnVlID0gc2hvdWxkQ29udGludWUgJiYgKCFpc0xvYWRpbmdN
YWluRnJhbWUoKSB8fCBtX2ZyYW1lLT5zaG91bGRDbG9zZSgpKTsKKyAgICBib29sIGNhbkNvbnRp
bnVlID0gc2hvdWxkQ29udGludWUgJiYgKCFpc0xvYWRpbmdNYWluRnJhbWUoKSB8fCBzaG91bGRD
bG9zZSgpKTsKIAogICAgIGlmICghY2FuQ29udGludWUpIHsKICAgICAgICAgLy8gSWYgd2Ugd2Vy
ZSB3YWl0aW5nIGZvciBhIHF1aWNrIHJlZGlyZWN0LCBidXQgdGhlIHBvbGljeSBkZWxlZ2F0ZSBk
ZWNpZGVkIHRvIGlnbm9yZSBpdCwgdGhlbiB3ZSAKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lv
biA2MTEyOSkKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjksNyArMjI5LDcgQEAgYm9vbCBET01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ0JlZm9y
ZQogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
aWYgKCFmcmFtZS0+c2hvdWxkQ2xvc2UoKSkKKyAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCkt
PnNob3VsZENsb3NlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03
NTYsNyArNzU2LDE4IEBAIHZvaWQgRE9NV2luZG93Ojpmb2N1cygpCiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5mb2N1c1dpbmRvdygpOworICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBJZiB3ZSdyZSBhIHRvcCBsZXZlbCB3aW5kb3csIGJyaW5nIHRoZSB3aW5k
b3cgdG8gdGhlIGZyb250LgorICAgIGlmIChtX2ZyYW1lID09IHBhZ2UtPm1haW5GcmFtZSgpKQor
ICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Zm9jdXMoKTsKKworICAgIGlmICghbV9mcmFtZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmZvY3VzRG9jdW1l
bnRWaWV3KCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpibHVyKCkKQEAgLTc2NCw3ICs3NzUsMTQg
QEAgdm9pZCBET01XaW5kb3c6OmJsdXIoKQogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9mcmFtZS0+dW5mb2N1c1dpbmRvdygpOworICAgIFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAobV9mcmFtZSAhPSBwYWdlLT5tYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cGFnZS0+Y2hyb21lKCktPnVuZm9jdXMoKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OmNsb3NlKCkK
QEAgLTc4Miw4ICs4MDAsMTMgQEAgdm9pZCBET01XaW5kb3c6OmNsb3NlKCkKICAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwogICAgIGJvb2wgYWxsb3dTY3JpcHRz
VG9DbG9zZVdpbmRvd3MgPSBzZXR0aW5ncyAmJiBzZXR0aW5ncy0+YWxsb3dTY3JpcHRzVG9DbG9z
ZVdpbmRvd3MoKTsKIAotICAgIGlmIChwYWdlLT5vcGVuZWRCeURPTSgpIHx8IHBhZ2UtPmdldEhp
c3RvcnlMZW5ndGgoKSA8PSAxIHx8IGFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKQotICAgICAg
ICBtX2ZyYW1lLT5zY2hlZHVsZUNsb3NlKCk7CisgICAgaWYgKCEocGFnZS0+b3BlbmVkQnlET00o
KSB8fCBwYWdlLT5nZXRIaXN0b3J5TGVuZ3RoKCkgPD0gMSB8fCBhbGxvd1NjcmlwdHNUb0Nsb3Nl
V2luZG93cykpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCkt
PnNob3VsZENsb3NlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPmNocm9tZSgpLT5j
bG9zZVdpbmRvd1Nvb24oKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OnByaW50KCkKQEAgLTEwNDgs
MzYgKzEwNzEsMzQgQEAgdm9pZCBET01XaW5kb3c6OnNldE5hbWUoY29uc3QgU3RyaW5nJiBzdAog
ICAgIG1fZnJhbWUtPnRyZWUoKS0+c2V0TmFtZShzdHJpbmcpOwogfQogCi1TdHJpbmcgRE9NV2lu
ZG93OjpzdGF0dXMoKSBjb25zdAordm9pZCBET01XaW5kb3c6OnNldFN0YXR1cyhjb25zdCBTdHJp
bmcmIHN0cmluZykgCiB7Ci0gICAgaWYgKCFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgbV9zdGF0dXMgPSBzdHJpbmc7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+anNTdGF0
dXNCYXJUZXh0KCk7Ci19CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CiAKLXZv
aWQgRE9NV2luZG93OjpzZXRTdGF0dXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpIAoteyAKLSAgICBp
ZiAoIW1fZnJhbWUpIAotICAgICAgICByZXR1cm47IAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1l
LT5zZXRKU1N0YXR1c0JhclRleHQoc3RyaW5nKTsgCisgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3Vt
ZW50KCkpOyAvLyBDbGllbnQgY2FsbHMgc2hvdWxkbid0IGJlIG1hZGUgd2hlbiB0aGUgZnJhbWUg
aXMgaW4gaW5jb25zaXN0ZW50IHN0YXRlLgorICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRTdGF0dXNi
YXJUZXh0KG1fZnJhbWUsIG1fc3RhdHVzKTsKIH0gCiAgICAgCi1TdHJpbmcgRE9NV2luZG93Ojpk
ZWZhdWx0U3RhdHVzKCkgY29uc3QKK3ZvaWQgRE9NV2luZG93OjpzZXREZWZhdWx0U3RhdHVzKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSAKIHsKLSAgICBpZiAoIW1fZnJhbWUpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICBtX2RlZmF1bHRTdGF0dXMgPSBzdHJpbmc7CiAKLSAgICByZXR1cm4g
bV9mcmFtZS0+anNEZWZhdWx0U3RhdHVzQmFyVGV4dCgpOwotfSAKKyAgICBpZiAoIW1fZnJhbWUp
CisgICAgICAgIHJldHVybjsKIAotdm9pZCBET01XaW5kb3c6OnNldERlZmF1bHRTdGF0dXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcpIAoteyAKLSAgICBpZiAoIW1fZnJhbWUpIAotICAgICAgICByZXR1
cm47IAorICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5zZXRKU0RlZmF1bHRTdGF0dXNCYXJUZXh0
KHN0cmluZyk7CisgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOyAvLyBDbGllbnQgY2Fs
bHMgc2hvdWxkbid0IGJlIG1hZGUgd2hlbiB0aGUgZnJhbWUgaXMgaW4gaW5jb25zaXN0ZW50IHN0
YXRlLgorICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRTdGF0dXNiYXJUZXh0KG1fZnJhbWUsIG1fZGVm
YXVsdFN0YXR1cyk7CiB9CiAKIERPTVdpbmRvdyogRE9NV2luZG93OjpzZWxmKCkgY29uc3QKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgJKHJldmlzaW9uIDYxMTI5KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MTAsOCArNDEwLDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNlbmRpZgogCiAgICAgICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKwor
ICAgICAgICBTdHJpbmcgbV9zdGF0dXM7CisgICAgICAgIFN0cmluZyBtX2RlZmF1bHRTdGF0dXM7
CiAgICAgfTsKIAorICAgIGlubGluZSBTdHJpbmcgRE9NV2luZG93OjpzdGF0dXMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RhdHVzOworICAgIH0KKworICAgIGlubGluZSBTdHJp
bmcgRE9NV2luZG93OjpkZWZhdWx0U3RhdHVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2RlZmF1bHRTdGF0dXM7CisgICAgfSAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRE9NV2luZG93X2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gNjExMjkpCisrKyBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjAsMjIgKzYyMCw2IEBAIHZv
aWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGYKICAgICAgICAgY2hpbGQtPnNl
dFByaW50aW5nKHByaW50aW5nLCBtaW5QYWdlV2lkdGgsIG1heFBhZ2VXaWR0aCwgYWRqdXN0Vmll
d1NpemUpOwogfQogCi12b2lkIEZyYW1lOjpzZXRKU1N0YXR1c0JhclRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0KQotewotICAgIEFTU0VSVChtX2RvYyk7IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3Qg
YmUgbWFkZSB3aGVuIHRoZSBmcmFtZSBpcyBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCi0gICAgbV9r
anNTdGF0dXNCYXJUZXh0ID0gdGV4dDsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2Ut
PmNocm9tZSgpLT5zZXRTdGF0dXNiYXJUZXh0KHRoaXMsIG1fa2pzU3RhdHVzQmFyVGV4dCk7Ci19
Ci0KLXZvaWQgRnJhbWU6OnNldEpTRGVmYXVsdFN0YXR1c0JhclRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0KQotewotICAgIEFTU0VSVChtX2RvYyk7IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3QgYmUg
bWFkZSB3aGVuIHRoZSBmcmFtZSBpcyBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCi0gICAgbV9ranNE
ZWZhdWx0U3RhdHVzQmFyVGV4dCA9IHRleHQ7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9w
YWdlLT5jaHJvbWUoKS0+c2V0U3RhdHVzYmFyVGV4dCh0aGlzLCBtX2tqc0RlZmF1bHRTdGF0dXNC
YXJUZXh0KTsKLX0KLQogdm9pZCBGcmFtZTo6c2V0TmVlZHNSZWFwcGx5U3R5bGVzKCkKIHsKICAg
ICAvLyBXaGVuIHRoZSBmcmFtZSBpcyBub3Qgc2hvd2luZyB3ZWIgY29udGVudCwgaXQgZG9lc24n
dCBtYWtlIHNlbnNlIHRvIGFwcGx5IHN0eWxlcy4KQEAgLTE0MzIsMzggKzE0MTYsNiBAQCBTdHJp
bmcgRnJhbWU6OmRvY3VtZW50VHlwZVN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi12b2lkIEZyYW1lOjpmb2N1c1dpbmRvdygpCi17Ci0gICAgaWYgKCFwYWdlKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIHdlJ3JlIGEgdG9wIGxldmVsIHdpbmRvdywgYnJp
bmcgdGhlIHdpbmRvdyB0byB0aGUgZnJvbnQuCi0gICAgaWYgKCF0cmVlKCktPnBhcmVudCgpKQot
ICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5mb2N1cygpOwotCi0gICAgZXZlbnRIYW5kbGVyKCkt
PmZvY3VzRG9jdW1lbnRWaWV3KCk7Ci19Ci0KLXZvaWQgRnJhbWU6OnVuZm9jdXNXaW5kb3coKQot
ewotICAgIGlmICghcGFnZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiB3ZSdyZSBh
IHRvcCBsZXZlbCB3aW5kb3csIGRlYWN0aXZhdGUgdGhlIHdpbmRvdy4KLSAgICBpZiAoIXRyZWUo
KS0+cGFyZW50KCkpCi0gICAgICAgIHBhZ2UoKS0+Y2hyb21lKCktPnVuZm9jdXMoKTsKLX0KLQot
dm9pZCBGcmFtZTo6c2NoZWR1bGVDbG9zZSgpCi17Ci0gICAgaWYgKCFzaG91bGRDbG9zZSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBDaHJvbWUqIGNocm9tZSA9IHBhZ2UoKSA/IHBhZ2UoKS0+
Y2hyb21lKCkgOiAwOwotICAgIGlmIChjaHJvbWUpCi0gICAgICAgIGNocm9tZS0+Y2xvc2VXaW5k
b3dTb29uKCk7Ci19Ci0KIHZvaWQgRnJhbWU6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBib29sIGNsb3NlVHlwaW5nKQogewog
ICAgIGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgPSBlZGl0b3IoKS0+aXND
b250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA2MTEyOSkK
KysrIFdlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksMTkgKzE4OSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGxpZmVT
dXBwb3J0VGltZXJGaXJlZChUaW1lcjxGcmFtZT4qKTsKIAotICAgIC8vID09PSB0byBiZSBtb3Zl
ZCBpbnRvIENocm9tZQotCi0gICAgcHVibGljOgotICAgICAgICB2b2lkIGZvY3VzV2luZG93KCk7
Ci0gICAgICAgIHZvaWQgdW5mb2N1c1dpbmRvdygpOwotICAgICAgICBib29sIHNob3VsZENsb3Nl
KCk7Ci0gICAgICAgIHZvaWQgc2NoZWR1bGVDbG9zZSgpOwotCi0gICAgICAgIHZvaWQgc2V0SlNT
dGF0dXNCYXJUZXh0KGNvbnN0IFN0cmluZyYpOwotICAgICAgICB2b2lkIHNldEpTRGVmYXVsdFN0
YXR1c0JhclRleHQoY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIFN0cmluZyBqc1N0YXR1c0JhclRl
eHQoKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIGpzRGVmYXVsdFN0YXR1c0JhclRleHQoKSBjb25z
dDsKLQogICAgIC8vID09PSB0byBiZSBtb3ZlZCBpbnRvIEVkaXRvcgogCiAgICAgcHVibGljOgpA
QCAtMzM2LDkgKzMyMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTY3JpcHRD
b250cm9sbGVyIG1fc2NyaXB0OwogCi0gICAgICAgIFN0cmluZyBtX2tqc1N0YXR1c0JhclRleHQ7
Ci0gICAgICAgIFN0cmluZyBtX2tqc0RlZmF1bHRTdGF0dXNCYXJUZXh0OwotCiAgICAgICAgIG11
dGFibGUgVmlzaWJsZVNlbGVjdGlvbiBtX21hcms7CiAgICAgICAgIG11dGFibGUgRWRpdG9yIG1f
ZWRpdG9yOwogICAgICAgICBtdXRhYmxlIFNlbGVjdGlvbkNvbnRyb2xsZXIgbV9zZWxlY3Rpb25D
b250cm9sbGVyOwpAQCAtNDI0LDE2ICs0MDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIG1fbWFyayA9IHM7CiAgICAgfQogCi0gICAgaW5saW5lIFN0cmluZyBGcmFtZTo6anNTdGF0
dXNCYXJUZXh0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2tqc1N0YXR1c0JhclRl
eHQ7Ci0gICAgfQotCi0gICAgaW5saW5lIFN0cmluZyBGcmFtZTo6anNEZWZhdWx0U3RhdHVzQmFy
VGV4dCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9ranNEZWZhdWx0U3RhdHVzQmFy
VGV4dDsKLSAgICB9Ci0KICAgICBpbmxpbmUgYm9vbCBGcmFtZTo6bmVlZHNSZWFwcGx5U3R5bGVz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX25lZWRzUmVhcHBseVN0eWxlczsKQEAg
LTUwOSwxMyArNDgzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gJm1f
ZXZlbnRIYW5kbGVyOwogICAgIH0KIAotICAgIGlubGluZSBib29sIEZyYW1lOjpzaG91bGRDbG9z
ZSgpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogU29tZSBXZWJLaXQgY2xpZW50cyBjYWxsIEZy
YW1lOjpzaG91bGRDbG9zZSgpIGRpcmVjdGx5LgotICAgICAgICAvLyBXZSBzaG91bGQgdHJhbnNp
dGlvbiB0aGVtIHRvIGNhbGxpbmcgRnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKCkgdGhlbiBnZXQg
cmlkIG9mIHRoaXMgbWV0aG9kLgotICAgICAgICByZXR1cm4gbV9sb2FkZXIuc2hvdWxkQ2xvc2Uo
KTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZyYW1lX2gK
SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTEyOSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTAtMDUtMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
ZnVuY3Rpb25zIG91dCBvZiBGcmFtZSBjbGFzcyB0aGF0IHdlcmUgbWFya2VkICJtb3ZlIHRvIENo
cm9tZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjM2CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnRyeUNsb3NlKTogQ2FsbCBzaG91bGRDbG9zZSBvbiBGcmFtZUxv
YWRlciBpbnN0ZWFkIG9mCisgICAgICAgIGdvaW5nIHRocm91Z2ggRnJhbWUuCisKIDIwMTAtMDYt
MTIgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBm
aXggZm9yIGEgbGlua2luZyBlcnJvciB3aXRoIFdlYktpdDJMb2NhbGl6YWJsZVN0cmluZ3NCdW5k
bGUgZm9yIFdpbmRvd3MgcmVsZWFzZSBidWlsZC4KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA2MTEyOSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9p
ZCBXZWJQYWdlOjpjbG9zZSgpCiAKIHZvaWQgV2ViUGFnZTo6dHJ5Q2xvc2UoKQogewotICAgIGlm
ICghbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zaG91bGRDbG9zZSgpKQorICAgIGlmICghbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+c2hvdWxkQ2xvc2UoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdl
YlBhZ2VQcm94eU1lc3NhZ2U6OkNsb3NlUGFnZSwgbV9wYWdlSUQsIENvcmVJUEM6OkluKCkpOwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTEyOSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNi0xNCAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSBmdW5jdGlvbnMgb3V0IG9mIEZyYW1lIGNsYXNzIHRoYXQg
d2VyZSBtYXJrZWQgIm1vdmUgdG8gQ2hyb21lIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk2MzYKKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaXNwYXRjaEJlZm9yZVVubG9hZEV2
ZW50KTogQ2FsbCBzaG91bGRDbG9zZQorICAgICAgICBvbiBGcmFtZUxvYWRlciBpbnN0ZWFkIG9m
IGdvaW5nIHRocm91Z2ggRnJhbWUuCisKIDIwMTAtMDYtMTQgIEplcmVteSBPcmxvdyAgPGpvcmxv
d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQnVpbGQgZml4LgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDYxMTI5KQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOTMsNyArMTM5Myw3IEBAIGJv
b2wgV2ViVmlld0ltcGw6OmRpc3BhdGNoQmVmb3JlVW5sb2FkRXYKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBmcmFtZS0+c2hvdWxkQ2xvc2UoKTsK
KyAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5zaG91bGRDbG9zZSgpOwogfQogCiB2b2lkIFdl
YlZpZXdJbXBsOjpkaXNwYXRjaFVubG9hZEV2ZW50KCkKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTEyOSkK
KysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDYtMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZnVuY3Rpb25zIG91dCBv
ZiBGcmFtZSBjbGFzcyB0aGF0IHdlcmUgbWFya2VkICJtb3ZlIHRvIENocm9tZSIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NjM2CisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgc2hvdWxkQ2xvc2VdKTog
Q2FsbCBzaG91bGRDbG9zZSBvbiBGcmFtZUxvYWRlciBpbnN0ZWFkIG9mCisgICAgICAgIGdvaW5n
IHRocm91Z2ggRnJhbWUuCisKIDIwMTAtMDYtMTQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4
OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNjExMjkpCisrKyBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIwOSw3ICs0MjA5LDcgQEAgLSAoQk9P
TClzaG91bGRDbG9zZQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFt
ZV07CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBZRVM7Ci0gICAgcmV0dXJu
IGNvcmVGcmFtZS0+c2hvdWxkQ2xvc2UoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5sb2FkZXIo
KS0+c2hvdWxkQ2xvc2UoKTsKIH0KIAogc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFl
RGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBqc1ZhbHVlKQpJbmRleDog
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDYxMTI5KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNi0xNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92
ZSBmdW5jdGlvbnMgb3V0IG9mIEZyYW1lIGNsYXNzIHRoYXQgd2VyZSBtYXJrZWQgIm1vdmUgdG8g
Q2hyb21lIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzk2MzYKKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2hvdWxk
Q2xvc2UpOiBDYWxsIHNob3VsZENsb3NlIG9uIEZyYW1lTG9hZGVyIGluc3RlYWQgb2YKKyAgICAg
ICAgZ29pbmcgdGhyb3VnaCBGcmFtZS4KKwogMjAxMC0wNi0xNCAgQ2hhbmcgU2h1ICA8Y2hhbmcu
c2h1QG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNjExMjkpCisrKyBXZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTk3LDcgKzUxOTcsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OnNob3VsCiAKICAgICAqcmVzdWx0ID0gVFJVRTsKICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKSkKLSAgICAgICAgKnJlc3VsdCA9
IGZyYW1lLT5zaG91bGRDbG9zZSgpID8gVFJVRSA6IEZBTFNFOworICAgICAgICAqcmVzdWx0ID0g
ZnJhbWUtPmxvYWRlcigpLT5zaG91bGRDbG9zZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCklu
ZGV4OiBXZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDYxMTI5KQorKysgV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA2LTE0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3ZlIGZ1bmN0aW9ucyBvdXQgb2YgRnJhbWUgY2xhc3MgdGhhdCB3ZXJlIG1hcmtlZCAibW92ZSB0
byBDaHJvbWUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zOTYzNgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAod3hXZWJGcmFtZTo6
U2hvdWxkQ2xvc2UpOiBDYWxsIHNob3VsZENsb3NlIG9uIEZyYW1lTG9hZGVyIGluc3RlYWQKKyAg
ICAgICAgb2YgZ29pbmcgdGhyb3VnaCBGcmFtZS4KKwogMjAxMC0wNi0xNCAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KSW5kZXg6IFdlYktpdC93eC9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3d4L1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNjExMjkpCisrKyBXZWJLaXQvd3gvV2ViRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgd3hXZWJWaWV3RE9NRWxl
bWVudEluZm8gd3hXZWJGcmFtZTo6SGl0VAogYm9vbCB3eFdlYkZyYW1lOjpTaG91bGRDbG9zZSgp
IGNvbnN0CiB7CiAgICAgaWYgKG1faW1wbC0+ZnJhbWUpCi0gICAgICAgIHJldHVybiBtX2ltcGwt
PmZyYW1lLT5zaG91bGRDbG9zZSgpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+bG9h
ZGVyKCktPnNob3VsZENsb3NlKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>