<?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>67152</bug_id>
          
          <creation_ts>2011-08-29 14:20:49 -0700</creation_ts>
          <short_desc>Move setInnerTextValue from RenderTextControl to HTMLTextFormControlElement</short_desc>
          <delta_ts>2011-08-29 23:06:25 -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>Forms</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>
          <dependson>67173</dependson>
          <blocked>66241</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>458449</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 14:20:49 -0700</bug_when>
    <thetext>setInnerTextValue shouldn&apos;t live in RenderTextControl as it&apos;s nothing to do with the renderer.  Since its sole purpose is to update the innerTextElement&apos;s children, it&apos;s more appropriate for it to live in HTMLTextFormControlElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458451</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 14:21:25 -0700</bug_when>
    <thetext>This is also a left over from WML :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458478</commentid>
    <comment_count>2</comment_count>
      <attachid>105527</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 15:12:49 -0700</bug_when>
    <thetext>Created attachment 105527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458479</commentid>
    <comment_count>3</comment_count>
      <attachid>105528</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 15:15:58 -0700</bug_when>
    <thetext>Created attachment 105528
made setLastChangeWasNotUserEdit protected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458496</commentid>
    <comment_count>4</comment_count>
      <attachid>105528</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-29 15:39:40 -0700</bug_when>
    <thetext>Comment on attachment 105528
made setLastChangeWasNotUserEdit protected

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        This patch also fixes the bug that lastChangeWasUserEdit() incorrectly returns false
&gt; +        when input or textarea don&apos;t have renderer (e.g. invisible).

Should we have a test for this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458501</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 15:41:19 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 105528 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105528&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:17
&gt; &gt; +        This patch also fixes the bug that lastChangeWasUserEdit() incorrectly returns false
&gt; &gt; +        when input or textarea don&apos;t have renderer (e.g. invisible).
&gt; 
&gt; Should we have a test for this bug?

We can&apos;t because it&apos;s only exposed as WebKit API (no Web-facing API).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458503</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-29 15:43:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; &gt; +        This patch also fixes the bug that lastChangeWasUserEdit() incorrectly returns false
&gt; &gt; &gt; +        when input or textarea don&apos;t have renderer (e.g. invisible).
&gt; &gt; 
&gt; &gt; Should we have a test for this bug?
&gt; 
&gt; We can&apos;t because it&apos;s only exposed as WebKit API (no Web-facing API).

We can expose this to DumpRenderTree in the tools itself or via window.internals. That’s what we’ve done in the past.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458509</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-29 15:51:07 -0700</bug_when>
    <thetext>For an API, the right thing to do is to expose it in LayoutTestController, I think. That way, we can test WebKit layer, too. Internals are just for stuff that&apos;s not exposed by WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458537</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 16:23:00 -0700</bug_when>
    <thetext>&gt; (In reply to comment #5)
&gt; We can expose this to DumpRenderTree in the tools itself or via window.internals. That’s what we’ve done in the past.

(In reply to comment #7)
&gt; For an API, the right thing to do is to expose it in LayoutTestController, I think. That way, we can test WebKit layer, too. Internals are just for stuff that&apos;s not exposed by WebKit.

Okay, let&apos;s do this in a separate patch.(In reply to comment #6)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458543</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-29 16:29:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; For an API, the right thing to do is to expose it in LayoutTestController, I think. That way, we can test WebKit layer, too. Internals are just for stuff that&apos;s not exposed by WebKit.

That’s not quite how I understand it.

Internals is a way to test things that are not exposed by WebKit, and also has the advantage that a single test hook that works on all platforms. Exposing things in LayoutTestController allows us to test all the WebKit code too, but is much more work to support cross-platform. Further, some things might be exposed in WebKit on some platforms and not others.

So Internals lets you test WebCore, not WebKit. And LayoutTestController can be used to test more of WebKit.

I think in this case, there are arguments both ways about what the best way to write the test is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458551</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 16:37:02 -0700</bug_when>
    <thetext>I&apos;m personally inclined towards exposing it via WebCore because the value of lastChangeWasUserEdit is unlikely to be affected by WebKit code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458552</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 16:37:25 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I&apos;m personally inclined towards exposing it via WebCore because the value of lastChangeWasUserEdit is unlikely to be affected by WebKit code.

s/WebCore/window.internals/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458594</commentid>
    <comment_count>12</comment_count>
      <attachid>105528</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-29 17:39:40 -0700</bug_when>
    <thetext>Comment on attachment 105528
made setLastChangeWasNotUserEdit protected

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

Please do your best to make the Windows build work by editing the .def file. EWS might have enough information for you to do that.

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:336
&gt; +    setLastChangeWasNotUserEdit();

Really could land this bug fix separately. Why not do that?

&gt; Source/WebCore/html/HTMLTextFormControlElement.h:103
&gt; +    void setLastChangeWasNotUserEdit() { m_lastChangeWasUserEdit = false; }
&gt;  private:

Should have a blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458599</commentid>
    <comment_count>13</comment_count>
      <attachid>105528</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 17:44:42 -0700</bug_when>
    <thetext>Comment on attachment 105528
made setLastChangeWasNotUserEdit protected

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

&gt;&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:336
&gt;&gt; +    setLastChangeWasNotUserEdit();
&gt; 
&gt; Really could land this bug fix separately. Why not do that?

It might break lastChangeWasUserEdit if I do that.  I&apos;ll add some method on internals in a separate patch so that we can test this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458656</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 19:38:59 -0700</bug_when>
    <thetext>I&apos;ll land this patch once r94038 is settled and I can confirm that this patch doesn&apos;t break lastChangeWasUserEdit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458715</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 22:50:17 -0700</bug_when>
    <thetext>Committed r94047: &lt;http://trac.webkit.org/changeset/94047&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458719</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-29 23:06:25 -0700</bug_when>
    <thetext>Committed r94049: &lt;http://trac.webkit.org/changeset/94049&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105527</attachid>
            <date>2011-08-29 15:12:49 -0700</date>
            <delta_ts>2011-08-29 15:15:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67152-20110829151248.patch</filename>
            <type>text/plain</type>
            <size>16047</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDE3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDgtMjkgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzZXRJbm5lclRleHRWYWx1
ZSBmcm9tIFJlbmRlclRleHRDb250cm9sIHRvIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzE1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIHNldElu
bmVyVGV4dFZhbHVlIGZyb20gUmVuZGVyVGV4dENvbnRyb2wgdG8gSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuCisKKyAgICAgICAgQWxzbyBtb3ZlZCBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRpdCBm
cm9tIFJlbmRlclRleHRDb250cm9sIHRvIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50CisgICAg
ICAgIGFuZCByZWxhdGVkIGlubGluZSBmdW5jdGlvbnMgZnJvbSBSZW5kZXJUZXh0Q29udHJvbCB0
byBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC4KKyAgICAgICAgQmVjYXVzZSBtX2xhc3RDaGFu
Z2VXYXNVc2VyRWRpdCBpcyBubyBsb25nZXIgcmVzZXQgd2hlbiBSZW5kZXJUZXh0Q29udHJvbCBp
cyByZWNyZWF0ZWQsCisgICAgICAgIGFkZGVkIGV4cGxpY2l0IGNhbGxzIHRvIHNldExhc3RDaGFu
Z2VXYXNOb3RVc2VyRWRpdCBpbiBzZXRWYWx1ZSBmdW5jdGlvbnMgb2YgSFRNTElucHV0RWxlbWVu
dAorICAgICAgICBhbmQgSFRNTFRleHRBcmVhRWxlbWVudC4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gZml4ZXMgdGhlIGJ1ZyB0aGF0IGxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpIGluY29ycmVj
dGx5IHJldHVybnMgZmFsc2UKKyAgICAgICAgd2hlbiBpbnB1dCBvciB0ZXh0YXJlYSBkb24ndCBo
YXZlIHJlbmRlcmVyIChlLmcuIGludmlzaWJsZSkuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwg
dGhlcmUgaXMgbm8gd2F5IHRvIHRlc3QgdGhpcyBiZWhhdmlvcmFsIGNoYW5nZSBmcm9tIGxheW91
dCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnRzIGxhc3RDaGFuZ2VX
YXNVc2VyRWRpdCBpbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCBpbnN0ZWFkIG9mCisgICAg
ICAgIHRoYXQgb2YgSFRNTElucHV0RWxlbWVudCBhbmQgSFRNTFRleHRBcmVhRWxlbWVudC4KKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6c2V0VmFsdWUpOiBFeHBsaWNpdGx5IGNhbGxzIHNldExhc3RDaGFuZ2VX
YXNOb3RVc2VyRWRpdC4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVDb21tb24pOiBEaXR0by4KKyAgICAgICAgKiBodG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6c3VidHJlZUhhc0NoYW5nZWQpOiBTZXRzIG1fbGFzdENo
YW5nZVdhc1VzZXJFZGl0IHRydWUKKyAgICAgICAgYXMgaXQgdXNlZCB0byBkbyB2aWEgcmVzcG9u
ZFRvQ2hhbmdlQnlVc2VyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6Omxhc3RDaGFuZ2VXYXNVc2VyRWRpdCk6IE1vdmVkIGZyb20gSFRNTElucHV0RWxlbWVu
dAorICAgICAgICBhbmQgSFRNTFRleHRBcmVhRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5lclRleHRWYWx1ZSk6IE1vdmVkIGZyb20g
UmVuZGVyVGV4dENvbnRyb2wuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNl
dExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCk6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJv
bDo6UmVuZGVyVGV4dENvbnRyb2wpOiBObyBsb25nZXIgaW5pdGlhbGl6ZXMgbV9sYXN0Q2hhbmdl
V2FzVXNlckVkaXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZUZyb21FbGVt
ZW50KTogQ2FsbHMgc2V0SW5uZXJUZXh0VmFsdWUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lOjp1cGRhdGVGcm9tRWxlbWVudCk6IERpdHRvLgorCiAyMDExLTA4LTI5
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFz
c2VydGlvbiBmYWlsdXJlIGluIFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzIHdoZW4g
c2Nyb2xsaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gOTQwMDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTE4Miw3ICsx
MTgyLDYgQEAgX19aTks3V2ViQ29yZTE2Rm9udEZhbGxiYWNrTGlzdDEwZm9udERhdAogX19aTks3
V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDExaXNUZXh0RmllbGRFdgogX19aTks3V2ViQ29yZTE2
SFRNTElucHV0RWxlbWVudDE1aXNQYXNzd29yZEZpZWxkRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxJ
bnB1dEVsZW1lbnQxOHNob3VsZEF1dG9jb21wbGV0ZUV2Ci1fX1pOSzdXZWJDb3JlMTZIVE1MSW5w
dXRFbGVtZW50MjFsYXN0Q2hhbmdlV2FzVXNlckVkaXRFdgogX19aTks3V2ViQ29yZTE2SWNvbkRh
dGFiYXNlQmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9u
c2UxM25zVVJMUmVzcG9uc2VFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjE3aXND
b250ZW50RWRpdGFibGVFdgpAQCAtMTE5Miw3ICsxMTkxLDYgQEAgX19aTks3V2ViQ29yZTE2Vmlz
aWJsZVNlbGVjdGlvbjIzaXNDb250ZQogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjVp
c0FsbEVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKIF9fWk5LN1dlYkNvcmUxN1Jl
c291cmNlRXJyb3JCYXNlOGxhenlJbml0RXYKIF9fWk5LN1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRy
b2xsZXIyNG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0VQTlNfOERvY3VtZW50RQotX19aTks3V2Vi
Q29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDIxbGFzdENoYW5nZVdhc1VzZXJFZGl0RXYKIF9fWk5L
N1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMGh0dHBNZXRob2RFdgogX19aTks3V2ViQ29y
ZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1aHR0cEhlYWRlckZpZWxkRVBLYwogX19aTks3V2ViQ29y
ZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTN1cmxFdgpAQCAtMTIxNyw2ICsxMjE1LDcgQEAgX19aTks3
V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJuN21hdAogX19aTks3V2ViQ29yZTIzQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UyMGF1dGhlbnRpY2F0aW9uQ2xpZW50RXYKIF9fWk5LN1dlYkNvcmUy
M0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lMTVmaXJzdExheW91dERvbmVFdgogX19aTks3V2ViQ29y
ZTIzRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUyM2NvbW1pdHRpbmdGaXJzdFJlYWxMb2FkRXYKK19f
Wk5LN1dlYkNvcmUyNkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50MjFsYXN0Q2hhbmdlV2FzVXNl
ckVkaXRFdgogX19aTks3V2ViQ29yZTI2TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI2aXNEb25l
RXYKIF9fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTE1ZmFpbHVyZVJl
c3BvbnNlRXYKIF9fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTE1cHJv
dGVjdGlvblNwYWNlRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAkocmV2aXNpb24gOTQwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsMTcgKzIwNiw2IEBAIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlQ2hlY2tlZFJhZGkKICAgICB9CiB9CiAKLWJvb2wgSFRNTElucHV0
RWxlbWVudDo6bGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3QKLXsKLSAgICBpZiAoIWlzVGV4
dEZpZWxkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAoIXJlbmRlcmVy
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0b1JlbmRlclRleHRDb250
cm9sKHJlbmRlcmVyKCkpLT5sYXN0Q2hhbmdlV2FzVXNlckVkaXQoKTsKLX0KLQogYm9vbCBIVE1M
SW5wdXRFbGVtZW50Ojppc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsK
ICAgICBpZiAoIW1faW5wdXRUeXBlLT5jYW5TZXRTdHJpbmdWYWx1ZSgpKSB7CkBAIC0xMDY4LDYg
KzEwNTcsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0CiAgICAg
U3RyaW5nIHNhbml0aXplZFZhbHVlID0gc2FuaXRpemVWYWx1ZSh2YWx1ZSk7CiAgICAgYm9vbCB2
YWx1ZUNoYW5nZWQgPSBzYW5pdGl6ZWRWYWx1ZSAhPSB0aGlzLT52YWx1ZSgpOwogCisgICAgc2V0
TGFzdENoYW5nZVdhc05vdFVzZXJFZGl0KCk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNo
ZXNSZW5kZXJlcihmYWxzZSk7CiAgICAgaWYgKG1faW5wdXRUeXBlLT5zdG9yZXNWYWx1ZVNlcGFy
YXRlRnJvbUF0dHJpYnV0ZSgpKSB7CiAgICAgICAgIGlmIChmaWxlcygpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDk0MDA5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw4
ICsyMjgsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbmZvcm1Ub0lucHV0TWFzayhjb25zdCBT
dHJpbmcmKSBjb25zdDsKICNlbmRpZgogCi0gICAgYm9vbCBsYXN0Q2hhbmdlV2FzVXNlckVkaXQo
KSBjb25zdDsKLQogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4aW11bUxlbmd0aDsKIAogcHJvdGVj
dGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw2ICszMzMsNyBAQCB2b2lkIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmFs
dWUgPSBub3JtYWxpemVkVmFsdWU7CisgICAgc2V0TGFzdENoYW5nZVdhc05vdFVzZXJFZGl0KCk7
CiAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKICAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVl
KTsKQEAgLTQzMywxMyArNDM0LDYgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRSb3dz
KGludCBybwogICAgIHNldEF0dHJpYnV0ZShyb3dzQXR0ciwgU3RyaW5nOjpudW1iZXIocm93cykp
OwogfQogCi1ib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Omxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFyZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPmxhc3RDaGFuZ2VXYXNV
c2VyRWRpdCgpOwotfQotCiBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNob3VsZFVzZUlucHV0
TWV0aG9kKCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oCShyZXZpc2lvbiA5NDAwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbHMoaW50KTsKICAgICB2b2lkIHNldFJvd3MoaW50
KTsKIAotICAgIGJvb2wgbGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3Q7Ci0KIHByaXZhdGU6
CiAgICAgSFRNTFRleHRBcmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
LCBIVE1MRm9ybUVsZW1lbnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDk0MDA5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5o
IgogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgpAQCAtMzIsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRN
TEJSRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTUwLDYgKzUyLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2MsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAgICA6IEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jLCBmb3JtKQorICAgICwgbV9sYXN0Q2hhbmdl
V2FzVXNlckVkaXQoZmFsc2UpCiAgICAgLCBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0KC0xKQogICAg
ICwgbV9jYWNoZWRTZWxlY3Rpb25FbmQoLTEpCiAgICAgLCBtX2NhY2hlZFNlbGVjdGlvbkRpcmVj
dGlvbihTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbikKQEAgLTEwMiw3ICsxMDUsNyBAQCB2b2lkIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3J3YXJkCiAKIHZvaWQgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKIHsKLSAgICB0b1JlbmRlclRleHRDb250
cm9sKHJlbmRlcmVyKCkpLT5yZXNwb25kVG9DaGFuZ2VCeVVzZXIoKTsKKyAgICBtX2xhc3RDaGFu
Z2VXYXNVc2VyRWRpdCA9IHRydWU7CiB9CiAKIFN0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c3RyaXBwZWRQbGFjZWhvbGRlcigpIGNvbnN0CkBAIC00NDEsMTEgKzQ0NCw0NSBAQCB2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpub3RpZnlGCiAgICAgRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybVN0YXRlRGlkQ2hhbmdlKHRoaXMpOwogfQogCiti
b29sIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpsYXN0Q2hhbmdlV2FzVXNlckVkaXQoKSBj
b25zdAoreworICAgIGlmICghaXNUZXh0Rm9ybUNvbnRyb2woKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRpdDsKK30KKwordm9pZCBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3sKKyAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIWlzVGV4dEZvcm1Db250cm9sKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlbmRlclRleHRDb250cm9sKiB0ZXh0Q29udHJvbCA9IHRv
UmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSk7CisgICAgYm9vbCB0ZXh0SXNDaGFuZ2VkID0g
dmFsdWUgIT0gdGV4dENvbnRyb2wtPnRleHQoKTsKKyAgICBpZiAodGV4dElzQ2hhbmdlZCB8fCAh
aW5uZXJUZXh0RWxlbWVudCgpLT5oYXNDaGlsZE5vZGVzKCkpIHsKKyAgICAgICAgaWYgKHRleHRJ
c0NoYW5nZWQgJiYgZG9jdW1lbnQoKSAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5h
YmxlZCgpKQorICAgICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90
aWZpY2F0aW9uKHRleHRDb250cm9sLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgZmFs
c2UpOworCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBpbm5lclRleHRF
bGVtZW50KCktPnNldElubmVyVGV4dCh2YWx1ZSwgZWMpOworICAgICAgICBBU1NFUlQoIWVjKTsK
KworICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoIlxuIikgfHwgdmFsdWUuZW5kc1dpdGgoIlxy
IikpIHsKKyAgICAgICAgICAgIGlubmVyVGV4dEVsZW1lbnQoKS0+YXBwZW5kQ2hpbGQoSFRNTEJS
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBlYyk7CisgICAgICAgICAgICBBU1NFUlQoIWVj
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHNldCBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRp
dCB0byBmYWxzZSBzaW5jZSB0aGlzIGNoYW5nZSB3YXMgbm90IGV4cGxpY2l0bHkgbWFkZSBieSB0
aGUgdXNlciAoc2F5LCB2aWEgdHlwaW5nIG9uIHRoZSBrZXlib2FyZCksIHNlZSA8cmRhcjovL3By
b2JsZW0vNTM1OTkyMT4uCisgICAgICAgIG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0ID0gZmFsc2U7
CisgICAgfQorCisgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsK
K30KKwogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJv
bChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9uLmlzTnVs
bCgpIHx8IHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oCShyZXZpc2lvbiA5NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCB1c2VyVHJpZ2dl
cmVkKTsKICAgICB2b2lkIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoKTsKKyAgICBib29sIGxhc3RD
aGFuZ2VXYXNVc2VyRWRpdCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFzdENoYW5nZVdhc05vdFVz
ZXJFZGl0KCkgeyBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRpdCA9IGZhbHNlOyB9CisgICAgdm9pZCBz
ZXRJbm5lclRleHRWYWx1ZShjb25zdCBTdHJpbmcmKTsKIAogcHJvdGVjdGVkOgogICAgIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhU
TUxGb3JtRWxlbWVudCopOwpAQCAtMTE5LDYgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVy
VGV4dENvbnRyb2wqIHRleHRSZW5kZXJlckFmdGVyVXBkYXRlTGF5b3V0KCk7CiAKICAgICBTdHJp
bmcgbV90ZXh0QXNPZkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50OworICAgIGJvb2wgbV9sYXN0
Q2hhbmdlV2FzVXNlckVkaXQ7CiAgICAgCiAgICAgaW50IG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQ7
CiAgICAgaW50IG1fY2FjaGVkU2VsZWN0aW9uRW5kOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lvbiA5NDAwOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5k
ZXJUZXh0Q29udHJvbC5oIgogCi0jaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUg
IkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5o
IgpAQCAtNjgsNyArNjcsNiBAQCBzdGF0aWMgQ29sb3IgZGlzYWJsZWRUZXh0Q29sb3IoY29uc3Qg
Q29sCiAKIFJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChOb2RlKiBub2RlKQog
ICAgIDogUmVuZGVyQmxvY2sobm9kZSkKLSAgICAsIG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0KGZh
bHNlKQogewogICAgIEFTU0VSVCh0b1RleHRGb3JtQ29udHJvbChub2RlKSk7CiB9CkBAIC0xNTEs
MjkgKzE0OSw2IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW4KICAg
ICAgICAgdXBkYXRlVXNlck1vZGlmeVByb3BlcnR5KG5vZGUoKSwgaW5uZXJUZXh0LT5yZW5kZXJl
cigpLT5zdHlsZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c2V0SW5uZXJUZXh0
VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBib29sIHRleHRJc0NoYW5nZWQgPSB2
YWx1ZSAhPSB0ZXh0KCk7Ci0gICAgaWYgKHRleHRJc0NoYW5nZWQgfHwgIWlubmVyVGV4dEVsZW1l
bnQoKS0+aGFzQ2hpbGROb2RlcygpKSB7Ci0gICAgICAgIGlmICh0ZXh0SXNDaGFuZ2VkICYmIGRv
Y3VtZW50KCkgJiYgQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAg
ICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbih0aGlz
LCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgZmFsc2UpOwotCi0gICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVyVGV4
dCh2YWx1ZSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLQotICAgICAgICBpZiAodmFsdWUu
ZW5kc1dpdGgoIlxuIikgfHwgdmFsdWUuZW5kc1dpdGgoIlxyIikpIHsKLSAgICAgICAgICAgIGlu
bmVyVGV4dEVsZW1lbnQoKS0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpLCBlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIFdlIHNldCBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRpdCB0byBmYWxzZSBzaW5jZSB0aGlz
IGNoYW5nZSB3YXMgbm90IGV4cGxpY2l0bHkgbWFkZSBieSB0aGUgdXNlciAoc2F5LCB2aWEgdHlw
aW5nIG9uIHRoZSBrZXlib2FyZCksIHNlZSA8cmRhcjovL3Byb2JsZW0vNTM1OTkyMT4uCi0gICAg
ICAgIG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0ID0gZmFsc2U7Ci0gICAgfQotCi0gICAgdGV4dEZv
cm1Db250cm9sRWxlbWVudCgpLT5zZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRy
dWUpOwotfQotCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dENvbnRyb2w6OnZpc2libGVQb3Np
dGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPD0gMCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCShyZXZp
c2lvbiA5NDAwOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw2IEBAIHB1YmxpYzoKICAgICBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCogdGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0ID0gMDsKIAotICAgIGJvb2wgbGFzdENo
YW5nZVdhc1VzZXJFZGl0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hhbmdlV2FzVXNlckVkaXQ7
IH0KLSAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZUJ5VXNlcigpIHsgbV9sYXN0Q2hhbmdlV2FzVXNl
ckVkaXQgPSB0cnVlOyB9CiAgICAgU3RyaW5nIHRleHQoKTsKICAgICBTdHJpbmcgdGV4dFdpdGhI
YXJkTGluZUJyZWFrcygpOwogCkBAIC01MCw3ICs0OCw2IEBAIHByb3RlY3RlZDoKIAogICAgIGlu
dCBzY3JvbGxiYXJUaGlja25lc3MoKSBjb25zdDsKICAgICB2b2lkIGFkanVzdElubmVyVGV4dFN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlLCBSZW5kZXJTdHlsZSogdGV4dEJsb2Nr
U3R5bGUpIGNvbnN0OwotICAgIHZvaWQgc2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCkBAIC04OCw4ICs4NSw2IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHN0YXRpYyBib29sIGlzU2VsZWN0YWJsZUVsZW1l
bnQoSFRNTEVsZW1lbnQqLCBOb2RlKik7Ci0gICAgCi0gICAgYm9vbCBtX2xhc3RDaGFuZ2VXYXNV
c2VyRWRpdDsKIH07CiAKIGlubGluZSBSZW5kZXJUZXh0Q29udHJvbCogdG9SZW5kZXJUZXh0Q29u
dHJvbChSZW5kZXJPYmplY3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkocmV2aXNpb24g
OTQwMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmU6OnVwZGF0ZUYKIHsKICAgICBSZW5kZXJUZXh0Q29udHJvbDo6dXBk
YXRlRnJvbUVsZW1lbnQoKTsKIAotICAgIHNldElubmVyVGV4dFZhbHVlKHN0YXRpY19jYXN0PEhU
TUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKCkpLT52YWx1ZSgpKTsKKyAgICB0ZXh0Rm9ybUNvbnRy
b2xFbGVtZW50KCktPnNldElubmVyVGV4dFZhbHVlKHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPihub2RlKCkpLT52YWx1ZSgpKTsKIH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAJKHJldmlz
aW9uIDk0MDA4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NywxNCArNDc3LDE0IEBAIHZvaWQg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp1cGRhdGUKICAgICAgICAgdXBkYXRlQ2FuY2Vs
QnV0dG9uVmlzaWJpbGl0eSgpOwogCiAgICAgaWYgKCFpbnB1dEVsZW1lbnQoKS0+c3VnZ2VzdGVk
VmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgc2V0SW5uZXJUZXh0VmFsdWUoaW5wdXRFbGVtZW50
KCktPnN1Z2dlc3RlZFZhbHVlKCkpOworICAgICAgICB0ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkt
PnNldElubmVyVGV4dFZhbHVlKGlucHV0RWxlbWVudCgpLT5zdWdnZXN0ZWRWYWx1ZSgpKTsKICAg
ICBlbHNlIHsKICAgICAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKICAg
ICAgICAgICAgIC8vIEZvciBIVE1MSW5wdXRFbGVtZW50LCB1cGRhdGUgdGhlIHJlbmRlcmVyIHZh
bHVlIGlmIHRoZSBmb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkKICAgICAgICAgICAg
IC8vIGZsYWcgaXMgZmFsc2UuIEl0IHByb3RlY3RzIGFuIHVuYWNjZXB0YWJsZSByZW5kZXJlciB2
YWx1ZSBmcm9tCiAgICAgICAgICAgICAvLyBiZWluZyBvdmVyd3JpdHRlbiB3aXRoIHRoZSBET00g
dmFsdWUuCiAgICAgICAgICAgICBpZiAoIWlucHV0RWxlbWVudCgpLT5mb3JtQ29udHJvbFZhbHVl
TWF0Y2hlc1JlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgc2V0SW5uZXJUZXh0VmFsdWUoaW5w
dXRFbGVtZW50KCktPnZpc2libGVWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICB0ZXh0Rm9ybUNv
bnRyb2xFbGVtZW50KCktPnNldElubmVyVGV4dFZhbHVlKGlucHV0RWxlbWVudCgpLT52aXNpYmxl
VmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105528</attachid>
            <date>2011-08-29 15:15:58 -0700</date>
            <delta_ts>2011-08-29 17:44:42 -0700</delta_ts>
            <desc>made setLastChangeWasNotUserEdit protected</desc>
            <filename>bug-67152-20110829151557.patch</filename>
            <type>text/plain</type>
            <size>16252</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MDE3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDgtMjkgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzZXRJbm5lclRleHRWYWx1
ZSBmcm9tIFJlbmRlclRleHRDb250cm9sIHRvIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzE1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIHNldElu
bmVyVGV4dFZhbHVlIGZyb20gUmVuZGVyVGV4dENvbnRyb2wgdG8gSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuCisKKyAgICAgICAgQWxzbyBtb3ZlZCBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRpdCBm
cm9tIFJlbmRlclRleHRDb250cm9sIHRvIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50CisgICAg
ICAgIGFuZCByZWxhdGVkIGlubGluZSBmdW5jdGlvbnMgZnJvbSBSZW5kZXJUZXh0Q29udHJvbCB0
byBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC4KKyAgICAgICAgQmVjYXVzZSBtX2xhc3RDaGFu
Z2VXYXNVc2VyRWRpdCBpcyBubyBsb25nZXIgcmVzZXQgd2hlbiBSZW5kZXJUZXh0Q29udHJvbCBp
cyByZWNyZWF0ZWQsCisgICAgICAgIGFkZGVkIGV4cGxpY2l0IGNhbGxzIHRvIHNldExhc3RDaGFu
Z2VXYXNOb3RVc2VyRWRpdCBpbiBzZXRWYWx1ZSBmdW5jdGlvbnMgb2YgSFRNTElucHV0RWxlbWVu
dAorICAgICAgICBhbmQgSFRNTFRleHRBcmVhRWxlbWVudC4KKworICAgICAgICBUaGlzIHBhdGNo
IGFsc28gZml4ZXMgdGhlIGJ1ZyB0aGF0IGxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpIGluY29ycmVj
dGx5IHJldHVybnMgZmFsc2UKKyAgICAgICAgd2hlbiBpbnB1dCBvciB0ZXh0YXJlYSBkb24ndCBo
YXZlIHJlbmRlcmVyIChlLmcuIGludmlzaWJsZSkuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwg
dGhlcmUgaXMgbm8gd2F5IHRvIHRlc3QgdGhpcyBiZWhhdmlvcmFsIGNoYW5nZSBmcm9tIGxheW91
dCB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnRzIGxhc3RDaGFuZ2VX
YXNVc2VyRWRpdCBpbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCBpbnN0ZWFkIG9mCisgICAg
ICAgIHRoYXQgb2YgSFRNTElucHV0RWxlbWVudCBhbmQgSFRNTFRleHRBcmVhRWxlbWVudC4KKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6c2V0VmFsdWUpOiBFeHBsaWNpdGx5IGNhbGxzIHNldExhc3RDaGFuZ2VX
YXNOb3RVc2VyRWRpdC4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVDb21tb24pOiBEaXR0by4KKyAgICAgICAgKiBodG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6c3VidHJlZUhhc0NoYW5nZWQpOiBTZXRzIG1fbGFzdENo
YW5nZVdhc1VzZXJFZGl0IHRydWUKKyAgICAgICAgYXMgaXQgdXNlZCB0byBkbyB2aWEgcmVzcG9u
ZFRvQ2hhbmdlQnlVc2VyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6Omxhc3RDaGFuZ2VXYXNVc2VyRWRpdCk6IE1vdmVkIGZyb20gSFRNTElucHV0RWxlbWVu
dAorICAgICAgICBhbmQgSFRNTFRleHRBcmVhRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5lclRleHRWYWx1ZSk6IE1vdmVkIGZyb20g
UmVuZGVyVGV4dENvbnRyb2wuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNl
dExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCk6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJv
bDo6UmVuZGVyVGV4dENvbnRyb2wpOiBObyBsb25nZXIgaW5pdGlhbGl6ZXMgbV9sYXN0Q2hhbmdl
V2FzVXNlckVkaXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZUZyb21FbGVt
ZW50KTogQ2FsbHMgc2V0SW5uZXJUZXh0VmFsdWUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lOjp1cGRhdGVGcm9tRWxlbWVudCk6IERpdHRvLgorCiAyMDExLTA4LTI5
ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFz
c2VydGlvbiBmYWlsdXJlIGluIFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzIHdoZW4g
c2Nyb2xsaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gOTQwMDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTE4Miw3ICsx
MTgyLDYgQEAgX19aTks3V2ViQ29yZTE2Rm9udEZhbGxiYWNrTGlzdDEwZm9udERhdAogX19aTks3
V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDExaXNUZXh0RmllbGRFdgogX19aTks3V2ViQ29yZTE2
SFRNTElucHV0RWxlbWVudDE1aXNQYXNzd29yZEZpZWxkRXYKIF9fWk5LN1dlYkNvcmUxNkhUTUxJ
bnB1dEVsZW1lbnQxOHNob3VsZEF1dG9jb21wbGV0ZUV2Ci1fX1pOSzdXZWJDb3JlMTZIVE1MSW5w
dXRFbGVtZW50MjFsYXN0Q2hhbmdlV2FzVXNlckVkaXRFdgogX19aTks3V2ViQ29yZTE2SWNvbkRh
dGFiYXNlQmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxNlJlc291cmNlUmVzcG9u
c2UxM25zVVJMUmVzcG9uc2VFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjE3aXND
b250ZW50RWRpdGFibGVFdgpAQCAtMTE5Miw3ICsxMTkxLDYgQEAgX19aTks3V2ViQ29yZTE2Vmlz
aWJsZVNlbGVjdGlvbjIzaXNDb250ZQogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjVp
c0FsbEVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKIF9fWk5LN1dlYkNvcmUxN1Jl
c291cmNlRXJyb3JCYXNlOGxhenlJbml0RXYKIF9fWk5LN1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRy
b2xsZXIyNG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0VQTlNfOERvY3VtZW50RQotX19aTks3V2Vi
Q29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDIxbGFzdENoYW5nZVdhc1VzZXJFZGl0RXYKIF9fWk5L
N1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMGh0dHBNZXRob2RFdgogX19aTks3V2ViQ29y
ZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1aHR0cEhlYWRlckZpZWxkRVBLYwogX19aTks3V2ViQ29y
ZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTN1cmxFdgpAQCAtMTIxNyw2ICsxMjE1LDcgQEAgX19aTks3
V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJuN21hdAogX19aTks3V2ViQ29yZTIzQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UyMGF1dGhlbnRpY2F0aW9uQ2xpZW50RXYKIF9fWk5LN1dlYkNvcmUy
M0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lMTVmaXJzdExheW91dERvbmVFdgogX19aTks3V2ViQ29y
ZTIzRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUyM2NvbW1pdHRpbmdGaXJzdFJlYWxMb2FkRXYKK19f
Wk5LN1dlYkNvcmUyNkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50MjFsYXN0Q2hhbmdlV2FzVXNl
ckVkaXRFdgogX19aTks3V2ViQ29yZTI2TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI2aXNEb25l
RXYKIF9fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTE1ZmFpbHVyZVJl
c3BvbnNlRXYKIF9fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTE1cHJv
dGVjdGlvblNwYWNlRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAkocmV2aXNpb24gOTQwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsMTcgKzIwNiw2IEBAIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlQ2hlY2tlZFJhZGkKICAgICB9CiB9CiAKLWJvb2wgSFRNTElucHV0
RWxlbWVudDo6bGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3QKLXsKLSAgICBpZiAoIWlzVGV4
dEZpZWxkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAoIXJlbmRlcmVy
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0b1JlbmRlclRleHRDb250
cm9sKHJlbmRlcmVyKCkpLT5sYXN0Q2hhbmdlV2FzVXNlckVkaXQoKTsKLX0KLQogYm9vbCBIVE1M
SW5wdXRFbGVtZW50Ojppc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsK
ICAgICBpZiAoIW1faW5wdXRUeXBlLT5jYW5TZXRTdHJpbmdWYWx1ZSgpKSB7CkBAIC0xMDY4LDYg
KzEwNTcsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0CiAgICAg
U3RyaW5nIHNhbml0aXplZFZhbHVlID0gc2FuaXRpemVWYWx1ZSh2YWx1ZSk7CiAgICAgYm9vbCB2
YWx1ZUNoYW5nZWQgPSBzYW5pdGl6ZWRWYWx1ZSAhPSB0aGlzLT52YWx1ZSgpOwogCisgICAgc2V0
TGFzdENoYW5nZVdhc05vdFVzZXJFZGl0KCk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNo
ZXNSZW5kZXJlcihmYWxzZSk7CiAgICAgaWYgKG1faW5wdXRUeXBlLT5zdG9yZXNWYWx1ZVNlcGFy
YXRlRnJvbUF0dHJpYnV0ZSgpKSB7CiAgICAgICAgIGlmIChmaWxlcygpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDk0MDA5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw4
ICsyMjgsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbmZvcm1Ub0lucHV0TWFzayhjb25zdCBT
dHJpbmcmKSBjb25zdDsKICNlbmRpZgogCi0gICAgYm9vbCBsYXN0Q2hhbmdlV2FzVXNlckVkaXQo
KSBjb25zdDsKLQogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4aW11bUxlbmd0aDsKIAogcHJvdGVj
dGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMyw2ICszMzMsNyBAQCB2b2lkIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmFs
dWUgPSBub3JtYWxpemVkVmFsdWU7CisgICAgc2V0TGFzdENoYW5nZVdhc05vdFVzZXJFZGl0KCk7
CiAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKICAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKCk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVl
KTsKQEAgLTQzMywxMyArNDM0LDYgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRSb3dz
KGludCBybwogICAgIHNldEF0dHJpYnV0ZShyb3dzQXR0ciwgU3RyaW5nOjpudW1iZXIocm93cykp
OwogfQogCi1ib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Omxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFyZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPmxhc3RDaGFuZ2VXYXNV
c2VyRWRpdCgpOwotfQotCiBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNob3VsZFVzZUlucHV0
TWV0aG9kKCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oCShyZXZpc2lvbiA5NDAwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbHMoaW50KTsKICAgICB2b2lkIHNldFJvd3MoaW50
KTsKIAotICAgIGJvb2wgbGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3Q7Ci0KIHByaXZhdGU6
CiAgICAgSFRNTFRleHRBcmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
LCBIVE1MRm9ybUVsZW1lbnQqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDk0MDA5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5o
IgogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgpAQCAtMzIsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRN
TEJSRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTUwLDYgKzUyLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2MsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKICAgICA6IEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jLCBmb3JtKQorICAgICwgbV9sYXN0Q2hhbmdl
V2FzVXNlckVkaXQoZmFsc2UpCiAgICAgLCBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0KC0xKQogICAg
ICwgbV9jYWNoZWRTZWxlY3Rpb25FbmQoLTEpCiAgICAgLCBtX2NhY2hlZFNlbGVjdGlvbkRpcmVj
dGlvbihTZWxlY3Rpb25IYXNOb0RpcmVjdGlvbikKQEAgLTEwMiw3ICsxMDUsNyBAQCB2b2lkIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpmb3J3YXJkCiAKIHZvaWQgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKIHsKLSAgICB0b1JlbmRlclRleHRDb250
cm9sKHJlbmRlcmVyKCkpLT5yZXNwb25kVG9DaGFuZ2VCeVVzZXIoKTsKKyAgICBtX2xhc3RDaGFu
Z2VXYXNVc2VyRWRpdCA9IHRydWU7CiB9CiAKIFN0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c3RyaXBwZWRQbGFjZWhvbGRlcigpIGNvbnN0CkBAIC00NDEsMTEgKzQ0NCw0NSBAQCB2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpub3RpZnlGCiAgICAgRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHBh
Z2UtPmNocm9tZSgpLT5jbGllbnQoKS0+Zm9ybVN0YXRlRGlkQ2hhbmdlKHRoaXMpOwogfQogCiti
b29sIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpsYXN0Q2hhbmdlV2FzVXNlckVkaXQoKSBj
b25zdAoreworICAgIGlmICghaXNUZXh0Rm9ybUNvbnRyb2woKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRpdDsKK30KKwordm9pZCBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3sKKyAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIWlzVGV4dEZvcm1Db250cm9sKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlbmRlclRleHRDb250cm9sKiB0ZXh0Q29udHJvbCA9IHRv
UmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSk7CisgICAgYm9vbCB0ZXh0SXNDaGFuZ2VkID0g
dmFsdWUgIT0gdGV4dENvbnRyb2wtPnRleHQoKTsKKyAgICBpZiAodGV4dElzQ2hhbmdlZCB8fCAh
aW5uZXJUZXh0RWxlbWVudCgpLT5oYXNDaGlsZE5vZGVzKCkpIHsKKyAgICAgICAgaWYgKHRleHRJ
c0NoYW5nZWQgJiYgZG9jdW1lbnQoKSAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5h
YmxlZCgpKQorICAgICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90
aWZpY2F0aW9uKHRleHRDb250cm9sLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgZmFs
c2UpOworCisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBpbm5lclRleHRF
bGVtZW50KCktPnNldElubmVyVGV4dCh2YWx1ZSwgZWMpOworICAgICAgICBBU1NFUlQoIWVjKTsK
KworICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoIlxuIikgfHwgdmFsdWUuZW5kc1dpdGgoIlxy
IikpIHsKKyAgICAgICAgICAgIGlubmVyVGV4dEVsZW1lbnQoKS0+YXBwZW5kQ2hpbGQoSFRNTEJS
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBlYyk7CisgICAgICAgICAgICBBU1NFUlQoIWVj
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHNldCBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRp
dCB0byBmYWxzZSBzaW5jZSB0aGlzIGNoYW5nZSB3YXMgbm90IGV4cGxpY2l0bHkgbWFkZSBieSB0
aGUgdXNlciAoc2F5LCB2aWEgdHlwaW5nIG9uIHRoZSBrZXlib2FyZCksIHNlZSA8cmRhcjovL3By
b2JsZW0vNTM1OTkyMT4uCisgICAgICAgIG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0ID0gZmFsc2U7
CisgICAgfQorCisgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsK
K30KKwogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJv
bChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9uLmlzTnVs
bCgpIHx8IHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oCShyZXZpc2lvbiA5NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoYm9vbCB1c2VyVHJpZ2dl
cmVkKTsKICAgICB2b2lkIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoKTsKKyAgICBib29sIGxhc3RD
aGFuZ2VXYXNVc2VyRWRpdCgpIGNvbnN0OworICAgIHZvaWQgc2V0SW5uZXJUZXh0VmFsdWUoY29u
c3QgU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKQEAg
LTk3LDYgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCk7CiAK
KyAgICB2b2lkIHNldExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCgpIHsgbV9sYXN0Q2hhbmdlV2Fz
VXNlckVkaXQgPSBmYWxzZTsgfQogcHJpdmF0ZToKICAgICBpbnQgY29tcHV0ZVNlbGVjdGlvblN0
YXJ0KCkgY29uc3Q7CiAgICAgaW50IGNvbXB1dGVTZWxlY3Rpb25FbmQoKSBjb25zdDsKQEAgLTEx
OSw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclRleHRDb250cm9sKiB0ZXh0UmVuZGVy
ZXJBZnRlclVwZGF0ZUxheW91dCgpOwogCiAgICAgU3RyaW5nIG1fdGV4dEFzT2ZMYXN0Rm9ybUNv
bnRyb2xDaGFuZ2VFdmVudDsKKyAgICBib29sIG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0OwogICAg
IAogICAgIGludCBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0OwogICAgIGludCBtX2NhY2hlZFNlbGVj
dGlvbkVuZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcAkocmV2aXNpb24gOTQwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKIAotI2lu
Y2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKQEAgLTY4LDcgKzY3LDYgQEAgc3Rh
dGljIENvbG9yIGRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbAogCiBSZW5kZXJUZXh0Q29udHJv
bDo6UmVuZGVyVGV4dENvbnRyb2woTm9kZSogbm9kZSkKICAgICA6IFJlbmRlckJsb2NrKG5vZGUp
Ci0gICAgLCBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRpdChmYWxzZSkKIHsKICAgICBBU1NFUlQodG9U
ZXh0Rm9ybUNvbnRyb2wobm9kZSkpOwogfQpAQCAtMTUxLDI5ICsxNDksNiBAQCB2b2lkIFJlbmRl
clRleHRDb250cm9sOjp1cGRhdGVGcm9tRWxlbWVuCiAgICAgICAgIHVwZGF0ZVVzZXJNb2RpZnlQ
cm9wZXJ0eShub2RlKCksIGlubmVyVGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKSk7CiB9CiAKLXZv
aWQgUmVuZGVyVGV4dENvbnRyb2w6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFs
dWUpCi17Ci0gICAgYm9vbCB0ZXh0SXNDaGFuZ2VkID0gdmFsdWUgIT0gdGV4dCgpOwotICAgIGlm
ICh0ZXh0SXNDaGFuZ2VkIHx8ICFpbm5lclRleHRFbGVtZW50KCktPmhhc0NoaWxkTm9kZXMoKSkg
ewotICAgICAgICBpZiAodGV4dElzQ2hhbmdlZCAmJiBkb2N1bWVudCgpICYmIEFYT2JqZWN0Q2Fj
aGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5heE9i
amVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24odGhpcywgQVhPYmplY3RDYWNoZTo6QVhWYWx1
ZUNoYW5nZWQsIGZhbHNlKTsKLQotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAg
ICAgaW5uZXJUZXh0RWxlbWVudCgpLT5zZXRJbm5lclRleHQodmFsdWUsIGVjKTsKLSAgICAgICAg
QVNTRVJUKCFlYyk7Ci0KLSAgICAgICAgaWYgKHZhbHVlLmVuZHNXaXRoKCJcbiIpIHx8IHZhbHVl
LmVuZHNXaXRoKCJcciIpKSB7Ci0gICAgICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPmFwcGVu
ZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwgZWMpOwotICAgICAgICAg
ICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBzZXQgbV9sYXN0Q2hh
bmdlV2FzVXNlckVkaXQgdG8gZmFsc2Ugc2luY2UgdGhpcyBjaGFuZ2Ugd2FzIG5vdCBleHBsaWNp
dGx5IG1hZGUgYnkgdGhlIHVzZXIgKHNheSwgdmlhIHR5cGluZyBvbiB0aGUga2V5Ym9hcmQpLCBz
ZWUgPHJkYXI6Ly9wcm9ibGVtLzUzNTk5MjE+LgotICAgICAgICBtX2xhc3RDaGFuZ2VXYXNVc2Vy
RWRpdCA9IGZhbHNlOwotICAgIH0KLQotICAgIHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS0+c2V0
Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKLX0KLQogVmlzaWJsZVBvc2l0
aW9uIFJlbmRlclRleHRDb250cm9sOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgp
IGNvbnN0CiB7CiAgICAgaWYgKGluZGV4IDw9IDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkocmV2aXNpb24gOTQwMDgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsOCArMzUsNiBAQCBwdWJsaWM6CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRl
eHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0
eWxlKSBjb25zdCA9IDA7CiAKLSAgICBib29sIGxhc3RDaGFuZ2VXYXNVc2VyRWRpdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0OyB9Ci0gICAgdm9pZCByZXNwb25kVG9D
aGFuZ2VCeVVzZXIoKSB7IG1fbGFzdENoYW5nZVdhc1VzZXJFZGl0ID0gdHJ1ZTsgfQogICAgIFN0
cmluZyB0ZXh0KCk7CiAgICAgU3RyaW5nIHRleHRXaXRoSGFyZExpbmVCcmVha3MoKTsKIApAQCAt
NTAsNyArNDgsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKCkg
Y29uc3Q7CiAgICAgdm9pZCBhZGp1c3RJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSog
c3RhcnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRleHRCbG9ja1N0eWxlKSBjb25zdDsKLSAgICB2b2lk
IHNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKIApAQCAtODgsOCArODUsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJl
c0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICBzdGF0aWMgYm9vbCBpc1NlbGVjdGFibGVFbGVtZW50KEhUTUxFbGVtZW50KiwgTm9kZSop
OwotICAgIAotICAgIGJvb2wgbV9sYXN0Q2hhbmdlV2FzVXNlckVkaXQ7CiB9OwogCiBpbmxpbmUg
UmVuZGVyVGV4dENvbnRyb2wqIHRvUmVuZGVyVGV4dENvbnRyb2woUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHAJKHJldmlzaW9uIDk0MDA4KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp1cGRh
dGVGCiB7CiAgICAgUmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KCk7CiAKLSAg
ICBzZXRJbm5lclRleHRWYWx1ZShzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9k
ZSgpKS0+dmFsdWUoKSk7CisgICAgdGV4dEZvcm1Db250cm9sRWxlbWVudCgpLT5zZXRJbm5lclRl
eHRWYWx1ZShzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKS0+dmFsdWUo
KSk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCShyZXZpc2lvbiA5NDAwOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzcsMTQgKzQ3NywxNCBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6dXBkYXRlCiAgICAgICAgIHVwZGF0ZUNhbmNlbEJ1dHRvblZpc2liaWxpdHkoKTsKIAog
ICAgIGlmICghaW5wdXRFbGVtZW50KCktPnN1Z2dlc3RlZFZhbHVlKCkuaXNOdWxsKCkpCi0gICAg
ICAgIHNldElubmVyVGV4dFZhbHVlKGlucHV0RWxlbWVudCgpLT5zdWdnZXN0ZWRWYWx1ZSgpKTsK
KyAgICAgICAgdGV4dEZvcm1Db250cm9sRWxlbWVudCgpLT5zZXRJbm5lclRleHRWYWx1ZShpbnB1
dEVsZW1lbnQoKS0+c3VnZ2VzdGVkVmFsdWUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChu
b2RlKCktPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7CiAgICAgICAgICAgICAvLyBGb3IgSFRNTElu
cHV0RWxlbWVudCwgdXBkYXRlIHRoZSByZW5kZXJlciB2YWx1ZSBpZiB0aGUgZm9ybUNvbnRyb2xW
YWx1ZU1hdGNoZXNSZW5kZXJlcigpCiAgICAgICAgICAgICAvLyBmbGFnIGlzIGZhbHNlLiBJdCBw
cm90ZWN0cyBhbiB1bmFjY2VwdGFibGUgcmVuZGVyZXIgdmFsdWUgZnJvbQogICAgICAgICAgICAg
Ly8gYmVpbmcgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgRE9NIHZhbHVlLgogICAgICAgICAgICAgaWYg
KCFpbnB1dEVsZW1lbnQoKS0+Zm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpKQotICAg
ICAgICAgICAgICAgIHNldElubmVyVGV4dFZhbHVlKGlucHV0RWxlbWVudCgpLT52aXNpYmxlVmFs
dWUoKSk7CisgICAgICAgICAgICAgICAgdGV4dEZvcm1Db250cm9sRWxlbWVudCgpLT5zZXRJbm5l
clRleHRWYWx1ZShpbnB1dEVsZW1lbnQoKS0+dmlzaWJsZVZhbHVlKCkpOwogICAgICAgICB9CiAg
ICAgfQogCg==
</data>
<flag name="review"
          id="101721"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>