<?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>79008</bug_id>
          
          <creation_ts>2012-02-19 21:14:25 -0800</creation_ts>
          <short_desc>Manage node distributions in ShadowRootList, instead of each ShadowRoots.</short_desc>
          <delta_ts>2012-02-22 21:14:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          
          <blocked>77503</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>560010</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-19 21:14:25 -0800</bug_when>
    <thetext>To support multiple shadow roots, we have to manage lifecycle of node distributions in ShadowRootList instead of ShadowRoot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560013</commentid>
    <comment_count>1</comment_count>
      <attachid>127757</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-19 21:23:23 -0800</bug_when>
    <thetext>Created attachment 127757
wip. Some layouttests becomes broken</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560041</commentid>
    <comment_count>2</comment_count>
      <attachid>127764</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-19 22:46:50 -0800</bug_when>
    <thetext>Created attachment 127764
ready for reviews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560044</commentid>
    <comment_count>3</comment_count>
      <attachid>127764</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-19 22:51:57 -0800</bug_when>
    <thetext>Comment on attachment 127764
ready for reviews

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

&gt; Source/WebCore/dom/ShadowRoot.h:63
&gt; +    // HTMLContentElement* insertionPointFor(Node*) const;

We can remove this?

&gt; Source/WebCore/dom/ShadowRoot.h:65
&gt; +    // bool isSelectorActive() const;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560047</commentid>
    <comment_count>4</comment_count>
      <attachid>127766</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-19 22:57:52 -0800</bug_when>
    <thetext>Created attachment 127766
update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560048</commentid>
    <comment_count>5</comment_count>
      <attachid>127764</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-19 22:58:04 -0800</bug_when>
    <thetext>Comment on attachment 127764
ready for reviews

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

&gt;&gt; Source/WebCore/dom/ShadowRoot.h:63
&gt;&gt; +    // HTMLContentElement* insertionPointFor(Node*) const;
&gt; 
&gt; We can remove this?

Ops. Done.

&gt;&gt; Source/WebCore/dom/ShadowRoot.h:65
&gt;&gt; +    // bool isSelectorActive() const;
&gt; 
&gt; ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560102</commentid>
    <comment_count>6</comment_count>
      <attachid>127766</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-20 01:21:16 -0800</bug_when>
    <thetext>Comment on attachment 127766
update

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Make ShadowRootList manage a node distribution.

Could you elaborate?

&gt; Source/WebCore/dom/ShadowRoot.h:31
&gt; +#include &quot;Element.h&quot;

This dependency is unfortunate. Why do we need this? It looks we can just modify removed functions as delegates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560134</commentid>
    <comment_count>7</comment_count>
      <attachid>127766</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-20 02:50:52 -0800</bug_when>
    <thetext>Comment on attachment 127766
update

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Make ShadowRootList manage a node distribution.
&gt; 
&gt; Could you elaborate?

Sure. I&apos;ve added.

&gt;&gt; Source/WebCore/dom/ShadowRoot.h:31
&gt;&gt; +#include &quot;Element.h&quot;
&gt; 
&gt; This dependency is unfortunate. Why do we need this? It looks we can just modify removed functions as delegates.

This is required due to the inline shadowRootListForThis() function.
Although I intended to get rid of this inline function in followup patches, I got rid of this function in this patch to make clear that clients should acquire ShadowRootList by themselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560136</commentid>
    <comment_count>8</comment_count>
      <attachid>127793</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-20 02:51:27 -0800</bug_when>
    <thetext>Created attachment 127793
get rid of shadowRootListForThis to make responsibility clear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560614</commentid>
    <comment_count>9</comment_count>
      <attachid>127793</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-20 21:07:15 -0800</bug_when>
    <thetext>Comment on attachment 127793
get rid of shadowRootListForThis to make responsibility clear

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

&gt; Source/WebCore/dom/ShadowRoot.cpp:132
&gt; +    ASSERT(element-&gt;shadowRootList() == shadowRoot-&gt;shadowRootListForThis());

You have gotten rid of shadowRootListForThis(), right?
This will make win bot red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560628</commentid>
    <comment_count>10</comment_count>
      <attachid>127913</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-20 21:26:21 -0800</bug_when>
    <thetext>Created attachment 127913
fix debug build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560629</commentid>
    <comment_count>11</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-20 21:26:58 -0800</bug_when>
    <thetext>Thank you. Right. Fixed.

(In reply to comment #9)
&gt; (From update of attachment 127793 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127793&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ShadowRoot.cpp:132
&gt; &gt; +    ASSERT(element-&gt;shadowRootList() == shadowRoot-&gt;shadowRootListForThis());
&gt; 
&gt; You have gotten rid of shadowRootListForThis(), right?
&gt; This will make win bot red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560679</commentid>
    <comment_count>12</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-20 22:50:33 -0800</bug_when>
    <thetext>Maybe conflicted da patch for Issue 78778.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560686</commentid>
    <comment_count>13</comment_count>
      <attachid>127924</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-20 23:00:42 -0800</bug_when>
    <thetext>Created attachment 127924
rebased to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560687</commentid>
    <comment_count>14</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-20 23:01:49 -0800</bug_when>
    <thetext>Since first-in should win, I&apos;ve rebased this patch to ToT.

(In reply to comment #12)
&gt; Maybe conflicted da patch for Issue 78778.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561860</commentid>
    <comment_count>15</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-22 05:06:09 -0800</bug_when>
    <thetext>Can someone review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562068</commentid>
    <comment_count>16</comment_count>
      <attachid>127924</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-22 09:56:53 -0800</bug_when>
    <thetext>Comment on attachment 127924
rebased to ToT

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

&gt; Source/WebCore/dom/ShadowRootList.h:50
&gt; +    bool hasShadowRoot() const;
&gt; +    ShadowRoot* youngestShadowRoot() const;
&gt; +    ShadowRoot* oldestShadowRoot() const;

These changes look unrelated to the nature of the patch. Can you split them up into a separate patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562630</commentid>
    <comment_count>17</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-22 17:41:29 -0800</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #16)
&gt; (From update of attachment 127924 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127924&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ShadowRootList.h:50
&gt; &gt; +    bool hasShadowRoot() const;
&gt; &gt; +    ShadowRoot* youngestShadowRoot() const;
&gt; &gt; +    ShadowRoot* oldestShadowRoot() const;
&gt; 
&gt; These changes look unrelated to the nature of the patch. Can you split them up into a separate patch?

I&apos;ve added these const for some reasons, but I don&apos;t remember. To recall the reasons, I&apos;ve tried to build without these const. The build was successful :) You are right.

I guess the original big patch from which this patch was separated requires these const.

Let me land this patch after removing these const from this patch. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562646</commentid>
    <comment_count>18</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-22 17:59:56 -0800</bug_when>
    <thetext>I am wrong. It seems I tried to build on an irrelevant branch.

The build failed without these const.

The reason is &apos;ShadowRootList::host const&apos; member function. &apos;hasShadowRoot()&apos; and &apos;youngestShadowRoot()&apos; are called from this const member_function.

So let me land this patch without removing these const.

(In reply to comment #17)
&gt; Thank you for the review.
&gt; 
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 127924 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127924&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/ShadowRootList.h:50
&gt; &gt; &gt; +    bool hasShadowRoot() const;
&gt; &gt; &gt; +    ShadowRoot* youngestShadowRoot() const;
&gt; &gt; &gt; +    ShadowRoot* oldestShadowRoot() const;
&gt; &gt; 
&gt; &gt; These changes look unrelated to the nature of the patch. Can you split them up into a separate patch?
&gt; 
&gt; I&apos;ve added these const for some reasons, but I don&apos;t remember. To recall the reasons, I&apos;ve tried to build without these const. The build was successful :) You are right.
&gt; 
&gt; I guess the original big patch from which this patch was separated requires these const.
&gt; 
&gt; Let me land this patch after removing these const from this patch. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562670</commentid>
    <comment_count>19</comment_count>
      <attachid>128359</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-22 18:25:07 -0800</bug_when>
    <thetext>Created attachment 128359
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562791</commentid>
    <comment_count>20</comment_count>
      <attachid>128359</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 21:14:04 -0800</bug_when>
    <thetext>Comment on attachment 128359
Patch for landing

Clearing flags on attachment: 128359

Committed r108605: &lt;http://trac.webkit.org/changeset/108605&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562792</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 21:14:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127757</attachid>
            <date>2012-02-19 21:23:23 -0800</date>
            <delta_ts>2012-02-19 22:46:45 -0800</delta_ts>
            <desc>wip. Some layouttests becomes broken</desc>
            <filename>bug-79008-20120220142322.patch</filename>
            <type>text/plain</type>
            <size>13671</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI5MTllMzM5OTk3MTk3
ZTNjYmIzZmE5NGM3ZjU5OGYwZTEwN2JmOC4uN2JiMjY5ODI2YjhjZGEyZjg2OTQxZDI4YzU2NTFk
ODg2YWQ0YjAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTE5ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3RM
aXN0IG1hbmFnZSBub2RlIGRpc3RyaWJ1dGlvbnMgaW5zdGVhZCBvZiBlYWNoIFNoYWRvd1Jvb3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkwMDgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0
cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2Rl
UmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OmF0dGFjaCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6c2hhZG93Um9vdExpc3RGb3JU
aGlzKToKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290TGlz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aW5zZXJ0aW9uUG9pbnRG
b3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlz
dDo6aXNTZWxlY3RvckFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6
ZW5zdXJlU2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290TGlzdC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dSb290TGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290TGlzdDo6aG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlz
dDo6aGFzU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6eW91
bmdlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpvbGRl
c3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpzZWxlY3Rv
cik6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb250ZW50RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9I
VE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2Vs
ZWN0b3I6OndpbGxTZWxlY3RPdmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVu
dFNlbGVjdG9yLmg6CisgICAgICAgIChIVE1MQ29udGVudFNlbGVjdG9yKToKKwogMjAxMi0wMi0x
NSAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWJTb2Nr
ZXQ6IE1lc3NhZ2VFdmVudCBmaXJlZCBkdXJpbmcgc2VuZCgpIG9uIHdvcmtlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDZjOTBiNjE5YWEwMjEx
MDlhZTE2OGE2OTQ1ZjFkN2NiMDhhNDIzNWEuLmViYTk0NGE2ZTFkNWQzODk1Yjc2MWRhYzI2MjQ0
ODE2ZGRiN2YyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtNzAsOCArNzAsOCBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmlu
Z0NvbnRleHQoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9v
dCA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dSb290TGlzdCgpLT55b3VuZ2VzdFNoYWRvd1Jv
b3QoKTsKIAogICAgICAgICBpZiAobV92aXN1YWxQYXJlbnRTaGFkb3dSb290KSB7Ci0gICAgICAg
ICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmlu
c2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCi0gICAgICAgICAgICAgICAgJiYgbV92aXN1YWxQYXJl
bnRTaGFkb3dSb290LT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIGlmICgobV9p
bnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+c2hhZG93Um9vdExpc3RG
b3JUaGlzKCktPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCisgICAgICAgICAgICAgICAgJiYg
bV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5zaGFkb3dSb290TGlzdEZvclRoaXMoKS0+aXNTZWxl
Y3RvckFjdGl2ZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENvbnRlbnRG
b3J3YXJkZWQ7CiAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5
bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAKaW5kZXggZWY5ZmYwMTQ5NjU0MmRjZTMzNDEwODdkMTM0NGJjZDIxM2Qz
MTFiZS4uNjVlNTc0OWVhYmE1NzVlMTViZDM3ZGYyYTVmN2NmM2Q5ZTRlMWZiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxDb250
ZW50U2VsZWN0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2RlUmFy
ZURhdGEuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCkBAIC0xMTYsNyArMTE3LDkgQEAgUGFzc1JlZlB0cjxT
aGFkb3dSb290PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgU2hhZG93Um9v
dENyZWF0aW9uUHUKICAgICBlbGVtZW50LT5zZXRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsK
ICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwotCisgICAgQVNTRVJUKGVsZW1lbnQgPT0g
c2hhZG93Um9vdC0+aG9zdCgpKTsKKyAgICBBU1NFUlQoZWxlbWVudC0+aGFzU2hhZG93Um9vdCgp
KTsKKyAgICBBU1NFUlQoZWxlbWVudC0+c2hhZG93Um9vdExpc3QoKSA9PSBzaGFkb3dSb290LT5z
aGFkb3dSb290TGlzdEZvclRoaXMoKSk7CiAgICAgcmV0dXJuIHNoYWRvd1Jvb3QucmVsZWFzZSgp
OwogfQogCkBAIC0xNzEsMTYgKzE3NCw2IEBAIHZvaWQgU2hhZG93Um9vdDo6c2V0TmVlZHNSZWF0
dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCiAgICAgICAgIHNoYWRvd0hvc3QoKS0+c2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogfQogCi1IVE1MQ29udGVudEVsZW1lbnQqIFNoYWRvd1Jvb3Q6Omlu
c2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3NlbGVjdG9y
KQotICAgICAgICByZXR1cm4gMDsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZm91bmQgPSBt
X3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOwotICAgIGlmICghZm91bmQpCi0gICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKLX0KLQogdm9pZCBTaGFk
b3dSb290Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAgICBpZiAoIWhhc0NvbnRlbnRFbGVt
ZW50KCkpCkBAIC0xOTAsMTEgKzE4Myw2IEBAIHZvaWQgU2hhZG93Um9vdDo6aG9zdENoaWxkcmVu
Q2hhbmdlZCgpCiAgICAgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwog
fQogCi1ib29sIFNoYWRvd1Jvb3Q6OmlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3NlbGVjdG9yICYmIG1fc2VsZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKTsKLX0KLQogYm9v
bCBTaGFkb3dSb290OjpoYXNDb250ZW50RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgZm9yIChOb2Rl
KiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkgewpA
QCAtMjIwLDEwICsyMDgsMTMgQEAgdm9pZCBTaGFkb3dSb290OjphdHRhY2goKQogICAgIC8vIENo
aWxkcmVuIG9mIG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBpbgogICAgIC8vIGVuc3Vy
ZVNlbGVjdG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQKICAgICAvLyBpdCBpcyBp
biBjbGVhbiBzdGF0ZS4KLSAgICBBU1NFUlQoIW1fc2VsZWN0b3IgfHwgIW1fc2VsZWN0b3ItPmhh
c0NhbmRpZGF0ZXMoKSk7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSBzaGFk
b3dSb290TGlzdEZvclRoaXMoKS0+c2VsZWN0b3IoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBhc3Nl
cnRpb24gYnJlYWtzIGlmIG11bHRpcGxlIHNoYWRvdyByb290cyBhcmUgYmVpbmcgYXR0YWNoZWQu
CisgICAgLy8gU2hhZG93Um9vdExpc3Qgc2hvdWxkIGhhdmUgcmVzcG9uc2liaWxpdHkgb2Ygc2lk
ZSBlZmZlY3Qgb2Ygc2VsZWN0b3IgaW4gYXR0YWNoaW5nL2RldGFjaGluZy4KKyAgICBBU1NFUlQo
IXNlbGVjdG9yIHx8ICFzZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpKTsKICAgICBEb2N1bWVudEZy
YWdtZW50OjphdHRhY2goKTsKLSAgICBpZiAobV9zZWxlY3RvcikKLSAgICAgICAgbV9zZWxlY3Rv
ci0+ZGlkU2VsZWN0KCk7CisgICAgaWYgKHNlbGVjdG9yKQorICAgICAgICBzZWxlY3Rvci0+ZGlk
U2VsZWN0KCk7CiB9CiAKIHZvaWQgU2hhZG93Um9vdDo6cmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKQpAQCAtMjQ1LDE4ICsyMzYsNCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlYXR0YWNoSG9z
dENoaWxkcmVuQW5kU2hhZG93KCkKICAgICB9CiB9CiAKLUhUTUxDb250ZW50U2VsZWN0b3IqIFNo
YWRvd1Jvb3Q6OnNlbGVjdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQo
KTsKLX0KLQotSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdDo6ZW5zdXJlU2VsZWN0b3Io
KQotewotICAgIGlmICghbV9zZWxlY3RvcikKLSAgICAgICAgbV9zZWxlY3RvciA9IGFkb3B0UHRy
KG5ldyBIVE1MQ29udGVudFNlbGVjdG9yKCkpOwotICAgIG1fc2VsZWN0b3ItPndpbGxTZWxlY3RP
dmVyKHRoaXMpOwotICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOwotfQotCi0KLX0KK30gLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA4M2UxNzEzNDk5NTI5ZTQ2NGQ4
YzM2MDk5YmZkZDViYzE1ZjRjMWUxLi5kMDQxODQ5NTU1NjU1OTgzMzAyNDM3MTA3MmQyY2E0NGRl
MTA0MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZp
bmUgU2hhZG93Um9vdF9oCiAKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVk
ZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJUcmVl
U2NvcGUuaCIKICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgpAQCAtMzYsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTENv
bnRlbnRFbGVtZW50OwotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKK2NsYXNzIFNoYWRvd1Jv
b3RMaXN0OwogCiBjbGFzcyBTaGFkb3dSb290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQsIHB1
YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PiB7
CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6RG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD47
CkBAIC01OSw5ICs2MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyTmVlZHNSZWF0dGFjaEhv
c3RDaGlsZHJlbkFuZFNoYWRvdygpOwogICAgIGJvb2wgbmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJl
bkFuZFNoYWRvdygpOwogCi0gICAgSFRNTENvbnRlbnRFbGVtZW50KiBpbnNlcnRpb25Qb2ludEZv
cihOb2RlKikgY29uc3Q7CisgICAgLy8gSFRNTENvbnRlbnRFbGVtZW50KiBpbnNlcnRpb25Qb2lu
dEZvcihOb2RlKikgY29uc3Q7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAg
Ym9vbCBpc1NlbGVjdG9yQWN0aXZlKCkgY29uc3Q7CisgICAgLy8gYm9vbCBpc1NlbGVjdG9yQWN0
aXZlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdm9pZCByZWF0
dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwpAQCAtNzEsMTMgKzcyLDEzIEBAIHB1YmxpYzoK
IAogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVybiBzaGFkb3dIb3N0KCk7IH0KIAot
ICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7Ci0gICAgSFRNTENvbnRl
bnRTZWxlY3RvciogZW5zdXJlU2VsZWN0b3IoKTsKLQogICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXJT
aGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gcHJldigpOyB9CiAgICAgU2hhZG93Um9vdCogb2xk
ZXJTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gbmV4dCgpOyB9CisgICAgU2hhZG93Um9vdExp
c3QqIHNoYWRvd1Jvb3RMaXN0Rm9yVGhpcygpIGNvbnN0IHsgcmV0dXJuIGhvc3QoKS0+c2hhZG93
Um9vdExpc3QoKTsgfQorCiAKIHByaXZhdGU6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93
Um9vdD4gY3JlYXRlKERvY3VtZW50Kik7CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOwogICAg
IHZpcnR1YWwgflNoYWRvd1Jvb3QoKTsKIApAQCAtOTEsNyArOTIsNiBAQCBwcml2YXRlOgogICAg
IFNoYWRvd1Jvb3QqIG1fbmV4dDsKICAgICBib29sIG1fYXBwbHlBdXRob3JTaGVldHMgOiAxOwog
ICAgIGJvb2wgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA6IDE7Ci0gICAgT3duUHRyPEhUTUxD
b250ZW50U2VsZWN0b3I+IG1fc2VsZWN0b3I7CiB9OwogCiBpbmxpbmUgdm9pZCBTaGFkb3dSb290
OjpjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290TGlzdC5jcHAKaW5kZXggZjk3NzZkNWIzNzZmNzY2YTE1YmQyMjRmZmM2OTkz
NzBhZjdlN2FhZS4uYjcyODQyZTljNjZjNDU5OWQ0MjJmMGYxNTVkMDc2ZjE4MjlkMjE0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
Q29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTMsNCArMTE0LDI3IEBAIHZvaWQgU2hhZG93Um9vdExpc3Q6OmRldGFj
aCgpCiAgICAgfQogfQogCitIVE1MQ29udGVudEVsZW1lbnQqIFNoYWRvd1Jvb3RMaXN0OjppbnNl
cnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAoreworICAgIGlmICghbV9zZWxlY3RvcikK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZvdW5kID0gbV9z
ZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7Cit9CisKK2Jvb2wgU2hhZG93
Um9vdExpc3Q6OmlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NlbGVj
dG9yICYmIG1fc2VsZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKTsKIH0KKworSFRNTENvbnRlbnRTZWxl
Y3RvciogU2hhZG93Um9vdExpc3Q6OmVuc3VyZVNlbGVjdG9yKCkKK3sKKyAgICBpZiAoIW1fc2Vs
ZWN0b3IpCisgICAgICAgIG1fc2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgSFRNTENvbnRlbnRTZWxl
Y3RvcigpKTsKKyAgICBtX3NlbGVjdG9yLT53aWxsU2VsZWN0T3Zlcihob3N0KCkpOworICAgIHJl
dHVybiBtX3NlbGVjdG9yLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdExpc3QuaAppbmRleCBjN2ZjOThjYWE4YTIwYjQ0ZDU0YzgzN2FiNzg0ZThjZWZj
NDVkMDA3Li5kYWM3ZTlkNWQ3MDFiNjllYjBjNmQzMDRjMDk4NGQyYzFkOTgwOGYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdExpc3QuaApAQCAtMjcsMjMgKzI3LDI3IEBACiAjaWZuZGVmIFNo
YWRvd1Jvb3RMaXN0X2gKICNkZWZpbmUgU2hhZG93Um9vdExpc3RfaAogCisjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhZG93Um9v
dDsKK2NsYXNzIE5vZGU7CiBjbGFzcyBFbGVtZW50OworY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50
OworY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKIAogY2xhc3MgU2hhZG93Um9vdExpc3Qgewog
cHVibGljOgogICAgIFNoYWRvd1Jvb3RMaXN0KCk7CiAgICAgflNoYWRvd1Jvb3RMaXN0KCk7CiAK
LSAgICBib29sIGhhc1NoYWRvd1Jvb3QoKTsKLSAgICBTaGFkb3dSb290KiB5b3VuZ2VzdFNoYWRv
d1Jvb3QoKTsKLSAgICBTaGFkb3dSb290KiBvbGRlc3RTaGFkb3dSb290KCk7CisgICAgYm9vbCBo
YXNTaGFkb3dSb290KCkgY29uc3Q7CisgICAgU2hhZG93Um9vdCogeW91bmdlc3RTaGFkb3dSb290
KCkgY29uc3Q7CisgICAgU2hhZG93Um9vdCogb2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0OwogCiAg
ICAgdm9pZCBwdXNoU2hhZG93Um9vdChTaGFkb3dSb290Kik7CiAgICAgU2hhZG93Um9vdCogcG9w
U2hhZG93Um9vdCgpOwpAQCAtNTgsMjYgKzYyLDQ1IEBAIHB1YmxpYzoKICAgICB2b2lkIGF0dGFj
aCgpOwogICAgIHZvaWQgZGV0YWNoKCk7CiAKKyAgICBFbGVtZW50KiBob3N0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChoYXNTaGFkb3dSb290KCkpOworICAgICAgICByZXR1cm4geW91
bmdlc3RTaGFkb3dSb290KCktPmhvc3QoKTsKKyAgICB9CisKKyAgICBIVE1MQ29udGVudEVsZW1l
bnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKKworICAgIEhUTUxDb250ZW50U2Vs
ZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3RvciogZW5zdXJl
U2VsZWN0b3IoKTsKKworICAgIGJvb2wgaXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIERvdWJseUxpbmtlZExpc3Q8U2hhZG93Um9vdD4gbV9zaGFkb3dSb290czsKKyAg
ICBPd25QdHI8SFRNTENvbnRlbnRTZWxlY3Rvcj4gbV9zZWxlY3RvcjsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTaGFkb3dSb290TGlzdCk7CiB9OwogCi1pbmxpbmUgYm9vbCBTaGFkb3dSb290
TGlzdDo6aGFzU2hhZG93Um9vdCgpCitpbmxpbmUgYm9vbCBTaGFkb3dSb290TGlzdDo6aGFzU2hh
ZG93Um9vdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX3NoYWRvd1Jvb3RzLmlzRW1wdHkoKTsK
IH0KIAotaW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0Ojp5b3VuZ2VzdFNoYWRvd1Jv
b3QoKQoraW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0Ojp5b3VuZ2VzdFNoYWRvd1Jv
b3QoKSBjb25zdAogewogICAgIHJldHVybiBtX3NoYWRvd1Jvb3RzLmhlYWQoKTsKIH0KIAotaW5s
aW5lIFNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290KCkKK2lubGlu
ZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6b2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgpOwogfQogCitpbmxpbmUgSFRNTENvbnRl
bnRTZWxlY3RvciogU2hhZG93Um9vdExpc3Q6OnNlbGVjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zZWxlY3Rvci5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAppbmRl
eCAxNGM0NTlhMjAyN2ZlMmExZWYyZDI5NTgzMTk4MDY1ZjQzY2Y1NTQxLi5jODU2YzlhNjRlNmEy
YTY1OTdiNjY1ZjQ1NjI2ZWFkNTBmNThiY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03NCw3ICs3NSw3IEBA
IHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjphdHRhY2goKQogCiAgICAgLy8gQmVmb3JlIGNhbGxp
bmcgU3R5bGVkRWxlbWVudDo6YXR0YWNoLCBzZWxlY3RvciBtdXN0IGJlIGNhbGN1bGF0ZWQuCiAg
ICAgaWYgKHJvb3QpIHsKLSAgICAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSBy
b290LT5lbnN1cmVTZWxlY3RvcigpOworICAgICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxl
Y3RvciA9IHJvb3QtPnNoYWRvd1Jvb3RMaXN0Rm9yVGhpcygpLT5lbnN1cmVTZWxlY3RvcigpOwog
ICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QobV9zZWxlY3Rpb25zLmdldCgpKTsKICAgICAgICAg
c2VsZWN0b3ItPnNlbGVjdCh0aGlzLCBtX3NlbGVjdGlvbnMuZ2V0KCkpOwogICAgIH0KQEAgLTkw
LDcgKzkxLDcgQEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OmF0dGFjaCgpCiB2b2lkIEhUTUxD
b250ZW50RWxlbWVudDo6ZGV0YWNoKCkKIHsKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRv
U2hhZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKLSAgICAgICAgaWYgKEhUTUxDb250
ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+c2VsZWN0b3IoKSkKKyAgICAgICAgaWYgKEhU
TUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+c2hhZG93Um9vdExpc3RGb3JUaGlz
KCktPnNlbGVjdG9yKCkpCiAgICAgICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QobV9zZWxlY3Rp
b25zLmdldCgpKTsKIAogICAgICAgICAvLyBXaGVuIGNvbnRlbnQgZWxlbWVudCBpcyBkZXRhY2hl
ZCwgc2hhZG93IHRyZWUgc2hvdWxkIGJlIHJlY3JlYXRlZCB0byByZS1jYWxjdWxhdGUgc2VsZWN0
b3IgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2Vs
ZWN0b3IuY3BwCmluZGV4IDg3ZTFhZDllYmEwMmIwNWI5NjZhZmE2ZjdlNjhhZTEyOTczMTJiNGMu
LjU1OTY4OGE1MDMxNjRjMDFlMGI0NGJlM2YzNWI0NGZmYzgzYjI0ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCkBAIC0xNDQs
MTEgKzE0NCwxMiBAQCB2b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OmRpZFNlbGVjdCgpCiAgICAg
bV9jYW5kaWRhdGVzLmNsZWFyKCk7CiB9CiAKLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6d2ls
bFNlbGVjdE92ZXIoU2hhZG93Um9vdCogc2NvcGUpCit2b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6
OndpbGxTZWxlY3RPdmVyKEVsZW1lbnQqIHNoYWRvd0hvc3QpCiB7CiAgICAgaWYgKCFtX2NhbmRp
ZGF0ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgZm9yIChOb2RlKiBub2RlID0g
c2NvcGUtPnNoYWRvd0hvc3QoKS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4
dFNpYmxpbmcoKSkKKyAgICBBU1NFUlQoc2hhZG93SG9zdCk7CisgICAgZm9yIChOb2RlKiBub2Rl
ID0gc2hhZG93SG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxp
bmcoKSkKICAgICAgICAgbV9jYW5kaWRhdGVzLmFwcGVuZChub2RlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCmluZGV4IGIwYTI4
OTIwMjY5ZTRmNmQzMTE4MDBiNWJjZGJhY2VlODUzODcyNjAuLmJlZmU1M2MwZGY2MjVlMzhkMDE3
YTEyZDNlZjljNmYyOGYzYTU2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudFNlbGVjdG9yLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKICAgICBIVE1MQ29udGVu
dFNlbGVjdGlvbiogZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0OwogCi0gICAgdm9pZCB3aWxsU2Vs
ZWN0T3ZlcihTaGFkb3dSb290Kik7CisgICAgdm9pZCB3aWxsU2VsZWN0T3ZlcihFbGVtZW50KiBz
aGFkb3dIb3N0KTsKICAgICB2b2lkIGRpZFNlbGVjdCgpOwogICAgIGJvb2wgaGFzQ2FuZGlkYXRl
cygpIGNvbnN0IHsgcmV0dXJuICFtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127764</attachid>
            <date>2012-02-19 22:46:50 -0800</date>
            <delta_ts>2012-02-20 02:51:14 -0800</delta_ts>
            <desc>ready for reviews</desc>
            <filename>bug-79008-20120220154649.patch</filename>
            <type>text/plain</type>
            <size>13562</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA0OTJkZTBmYWE1MTQ1
ZGM0ZTAwMjM0YTk5MjI2NTYzOGMxYmM4Yi4uNDY5NDNiNGZkNWMwYzAwNTcxMTUxYTk0N2ZjNGNi
YzFjOTg5ZGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTE5ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3RM
aXN0IG1hbmFnZSBhIG5vZGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkwMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgor
CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6c2hhZG93Um9vdExpc3RGb3JUaGlzKToKKyAgICAgICAgKFNoYWRvd1Jvb3Qp
OgorICAgICAgICAqIGRvbS9TaGFkb3dSb290TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290TGlzdDo6aW5zZXJ0aW9uUG9pbnRGb3IpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aXNTZWxlY3RvckFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3IpOgorICAgICAgICAq
IGRvbS9TaGFkb3dSb290TGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFk
b3dSb290TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aG9zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dSb290KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpzZWxlY3Rvcik6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxl
bWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6ZGV0
YWNoKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3RPdmVyKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmg6CisgICAgICAgIChIVE1M
Q29udGVudFNlbGVjdG9yKToKKwogMjAxMi0wMi0xOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vdmUgc3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgU2Ny
b2xsaW5nQ29vcmRpbmF0b3IgZnVuY3Rpb25zIGludG8gU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25l
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
OGU0NWI0MTNhZWNkNmUwMmMyMDUwMmUzOGExMGViNzQ2OWE0YTY5ZS4uZGE1ZGE5MWY5MTk3MTU0
OWQxMTdmZTViZGRiZTVlMGI2OTk4ODlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC02Nyw4ICs2Nyw4IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0
OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV92aXN1YWxQ
YXJlbnRTaGFkb3dSb290ID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvd1Jvb3RMaXN0KCktPnlv
dW5nZXN0U2hhZG93Um9vdCgpOwogCiAgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jv
b3QpIHsKLSAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50
U2hhZG93Um9vdC0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAm
JiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmlzU2VsZWN0b3JBY3RpdmUoKSkgeworICAgICAg
ICAgICAgaWYgKChtX2luc2VydGlvblBvaW50ID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5z
aGFkb3dSb290TGlzdEZvclRoaXMoKS0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKKyAgICAg
ICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPnNoYWRvd1Jvb3RMaXN0Rm9y
VGhpcygpLT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKICAgICAgICAgICAgICAgICBtX3BoYXNlID0g
QXR0YWNoaW5nRGlzdHJpYnV0ZWQ7CiAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5w
YXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggZWQ5MGYwZmVjODBkNThiNzhkZjdiYjcw
MjRkMTE0MjBjZjZmNWZmMy4uOWYwM2RhYTdlNWNlNTlmZjFmYzgxMWZjODhiZmE4NDBjOWY0NWNh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTI3LDcgKzEyNyw5IEBAIFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIFNo
YWRvd1Jvb3RDcmVhdGlvblB1CiAgICAgZWxlbWVudC0+c2V0U2hhZG93Um9vdChzaGFkb3dSb290
LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKLQorICAgIEFTU0VSVChlbGVt
ZW50ID09IHNoYWRvd1Jvb3QtPmhvc3QoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1NoYWRv
d1Jvb3QoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQtPnNoYWRvd1Jvb3RMaXN0KCkgPT0gc2hhZG93
Um9vdC0+c2hhZG93Um9vdExpc3RGb3JUaGlzKCkpOwogICAgIHJldHVybiBzaGFkb3dSb290LnJl
bGVhc2UoKTsKIH0KIApAQCAtMTgyLDE2ICsxODQsNiBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldE5l
ZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQogICAgICAgICBzaGFkb3dIb3N0KCkt
PnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotSFRNTENvbnRlbnRFbGVtZW50KiBTaGFkb3dS
b290OjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAotewotICAgIGlmICghbV9z
ZWxlY3RvcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZv
dW5kID0gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKLSAgICBpZiAoIWZvdW5kKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7Ci19Ci0KIHZv
aWQgU2hhZG93Um9vdDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCiB7CiAgICAgaWYgKCFoYXNDb250
ZW50RWxlbWVudCgpKQpAQCAtMjAxLDExICsxOTMsNiBAQCB2b2lkIFNoYWRvd1Jvb3Q6Omhvc3RD
aGlsZHJlbkNoYW5nZWQoKQogICAgIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKTsKIH0KIAotYm9vbCBTaGFkb3dSb290Ojppc1NlbGVjdG9yQWN0aXZlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBtX3NlbGVjdG9yLT5oYXNDYW5kaWRhdGVzKCk7Ci19
Ci0KIGJvb2wgU2hhZG93Um9vdDo6aGFzQ29udGVudEVsZW1lbnQoKSBjb25zdAogewogICAgIGZv
ciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUodGhp
cykpIHsKQEAgLTIzMSwxMCArMjE4LDEyIEBAIHZvaWQgU2hhZG93Um9vdDo6YXR0YWNoKCkKICAg
ICAvLyBDaGlsZHJlbiBvZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KICAgICAv
LyBlbnN1cmVTZWxlY3RvcigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0CiAgICAgLy8g
aXQgaXMgaW4gY2xlYW4gc3RhdGUuCi0gICAgQVNTRVJUKCFtX3NlbGVjdG9yIHx8ICFtX3NlbGVj
dG9yLT5oYXNDYW5kaWRhdGVzKCkpOworICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiBicmVh
a3MgaWYgbXVsdGlwbGUgc2hhZG93IHJvb3RzIGFyZSBiZWluZyBhdHRhY2hlZC4KKyAgICAvLyBT
aGFkb3dSb290TGlzdCBzaG91bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBv
ZiBzZWxlY3RvciBpbiBhdHRhY2hpbmcvZGV0YWNoaW5nLgorICAgIEFTU0VSVCghc2hhZG93Um9v
dExpc3RGb3JUaGlzKCktPnNlbGVjdG9yKCkgfHwgIXNoYWRvd1Jvb3RMaXN0Rm9yVGhpcygpLT5z
ZWxlY3RvcigpLT5oYXNDYW5kaWRhdGVzKCkpOwogICAgIERvY3VtZW50RnJhZ21lbnQ6OmF0dGFj
aCgpOwotICAgIGlmIChtX3NlbGVjdG9yKQotICAgICAgICBtX3NlbGVjdG9yLT5kaWRTZWxlY3Qo
KTsKKyAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSBzaGFkb3dSb290TGlz
dEZvclRoaXMoKS0+c2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZWN0b3ItPmRpZFNlbGVjdCgpOwog
fQogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKQEAg
LTI1NiwxOCArMjQ1LDQgQEAgdm9pZCBTaGFkb3dSb290OjpyZWF0dGFjaEhvc3RDaGlsZHJlbkFu
ZFNoYWRvdygpCiAgICAgfQogfQogCi1IVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290Ojpz
ZWxlY3RvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Ci19Ci0KLUhU
TUxDb250ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3Q6OmVuc3VyZVNlbGVjdG9yKCkKLXsKLSAgICBp
ZiAoIW1fc2VsZWN0b3IpCi0gICAgICAgIG1fc2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgSFRNTENv
bnRlbnRTZWxlY3RvcigpKTsKLSAgICBtX3NlbGVjdG9yLT53aWxsU2VsZWN0T3Zlcih0aGlzKTsK
LSAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKLX0KLQotCi19Cit9IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggODNlMTcxMzQ5OTUyOWU0NjRkOGMzNjA5OWJmZGQ1
YmMxNWY0YzFlMS4uZDA0MTg0OTU1NTY1NTk4MzMwMjQzNzEwNzJkMmNhNDRkZTEwNDFjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIFNoYWRvd1Jv
b3RfaAogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAj
aW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxDb250ZW50RWxlbWVu
dDsKLWNsYXNzIEhUTUxDb250ZW50U2VsZWN0b3I7CitjbGFzcyBTaGFkb3dSb290TGlzdDsKIAog
Y2xhc3MgU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNj
b3BlLCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD4gewogICAgIGZyaWVu
ZCBjbGFzcyBXVEY6OkRvdWJseUxpbmtlZExpc3ROb2RlPFNoYWRvd1Jvb3Q+OwpAQCAtNTksOSAr
NjAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5B
bmRTaGFkb3coKTsKICAgICBib29sIG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3co
KTsKIAotICAgIEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNv
bnN0OworICAgIC8vIEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSop
IGNvbnN0OwogICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwotICAgIGJvb2wgaXNTZWxl
Y3RvckFjdGl2ZSgpIGNvbnN0OworICAgIC8vIGJvb2wgaXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0
OwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZvaWQgcmVhdHRhY2hIb3N0Q2hp
bGRyZW5BbmRTaGFkb3coKTsKQEAgLTcxLDEzICs3MiwxMyBAQCBwdWJsaWM6CiAKICAgICBFbGVt
ZW50KiBob3N0KCkgY29uc3QgeyByZXR1cm4gc2hhZG93SG9zdCgpOyB9CiAKLSAgICBIVE1MQ29u
dGVudFNlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0OwotICAgIEhUTUxDb250ZW50U2VsZWN0b3Iq
IGVuc3VyZVNlbGVjdG9yKCk7Ci0KICAgICBTaGFkb3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCgp
IGNvbnN0IHsgcmV0dXJuIHByZXYoKTsgfQogICAgIFNoYWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9v
dCgpIGNvbnN0IHsgcmV0dXJuIG5leHQoKTsgfQorICAgIFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dS
b290TGlzdEZvclRoaXMoKSBjb25zdCB7IHJldHVybiBob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCk7
IH0KKwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IGNyZWF0
ZShEb2N1bWVudCopOwogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5T
aGFkb3dSb290KCk7CiAKQEAgLTkxLDcgKzkyLDYgQEAgcHJpdmF0ZToKICAgICBTaGFkb3dSb290
KiBtX25leHQ7CiAgICAgYm9vbCBtX2FwcGx5QXV0aG9yU2hlZXRzIDogMTsKICAgICBib29sIG1f
bmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgOiAxOwotICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVj
dG9yPiBtX3NlbGVjdG9yOwogfTsKIAogaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6Y2xlYXJOZWVk
c1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dExpc3QuY3BwCmluZGV4IGQxOTU1YWFlZTYwMGYwNDcxMGUxYTRiMzlmMzkwNmNlZTI1MTMyNDMu
LmJkZmE2YzMxMGIwNTExYmMyODM1MWYwNjIyMjlmZGFhZTExNTYwMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxl
Y3Rvci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAKQEAgLTEyMyw0ICsxMjQsMjcgQEAgdm9pZCBTaGFkb3dSb290TGlzdDo6
ZGV0YWNoKCkKICAgICB9CiB9CiAKK0hUTUxDb250ZW50RWxlbWVudCogU2hhZG93Um9vdExpc3Q6
Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NlbGVj
dG9yKQorICAgICAgICByZXR1cm4gMDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZm91bmQg
PSBtX3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOworICAgIGlmICghZm91bmQpCisgICAgICAgIHJl
dHVybiAwOworICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKK30KKworYm9vbCBT
aGFkb3dSb290TGlzdDo6aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwogfQorCitIVE1MQ29udGVu
dFNlbGVjdG9yKiBTaGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3IoKQoreworICAgIGlmICgh
bV9zZWxlY3RvcikKKyAgICAgICAgbV9zZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBIVE1MQ29udGVu
dFNlbGVjdG9yKCkpOworICAgIG1fc2VsZWN0b3ItPndpbGxTZWxlY3RPdmVyKGhvc3QoKSk7Cisg
ICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290TGlzdC5oCmluZGV4IGRiZWM3OTU0NjQzZTY1OGEzNDBlNzZhOTIxMGMw
OWVlOTgwZjA0NzkuLjIwZmM4ZjVmNmE3NDZkZDFhNzE3MDBmMmMwZWIxODk1ZTkyZDA2YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCkBAIC0yNywyMyArMjcsMjcgQEAKICNpZm5k
ZWYgU2hhZG93Um9vdExpc3RfaAogI2RlZmluZSBTaGFkb3dSb290TGlzdF9oCiAKKyNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFk
b3dSb290OworY2xhc3MgTm9kZTsKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1MQ29udGVudEVs
ZW1lbnQ7CitjbGFzcyBIVE1MQ29udGVudFNlbGVjdG9yOwogCiBjbGFzcyBTaGFkb3dSb290TGlz
dCB7CiBwdWJsaWM6CiAgICAgU2hhZG93Um9vdExpc3QoKTsKICAgICB+U2hhZG93Um9vdExpc3Qo
KTsKIAotICAgIGJvb2wgaGFzU2hhZG93Um9vdCgpOwotICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXN0
U2hhZG93Um9vdCgpOwotICAgIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3QoKTsKKyAgICBi
b29sIGhhc1NoYWRvd1Jvb3QoKSBjb25zdDsKKyAgICBTaGFkb3dSb290KiB5b3VuZ2VzdFNoYWRv
d1Jvb3QoKSBjb25zdDsKKyAgICBTaGFkb3dSb290KiBvbGRlc3RTaGFkb3dSb290KCkgY29uc3Q7
CiAKICAgICB2b2lkIHB1c2hTaGFkb3dSb290KFNoYWRvd1Jvb3QqKTsKICAgICBTaGFkb3dSb290
KiBwb3BTaGFkb3dSb290KCk7CkBAIC01OSwyNiArNjMsNDUgQEAgcHVibGljOgogICAgIHZvaWQg
YXR0YWNoKCk7CiAgICAgdm9pZCBkZXRhY2goKTsKIAorICAgIEVsZW1lbnQqIGhvc3QoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1NoYWRvd1Jvb3QoKSk7CisgICAgICAgIHJldHVy
biB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aG9zdCgpOworICAgIH0KKworICAgIEhUTUxDb250ZW50
RWxlbWVudCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNvbnN0OworCisgICAgSFRNTENvbnRl
bnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBl
bnN1cmVTZWxlY3RvcigpOworCisgICAgYm9vbCBpc1NlbGVjdG9yQWN0aXZlKCkgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3Rz
OworICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNoYWRvd1Jvb3RMaXN0KTsKIH07CiAKLWlubGluZSBib29sIFNoYWRv
d1Jvb3RMaXN0OjpoYXNTaGFkb3dSb290KCkKK2lubGluZSBib29sIFNoYWRvd1Jvb3RMaXN0Ojpo
YXNTaGFkb3dSb290KCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fc2hhZG93Um9vdHMuaXNFbXB0
eSgpOwogfQogCi1pbmxpbmUgU2hhZG93Um9vdCogU2hhZG93Um9vdExpc3Q6OnlvdW5nZXN0U2hh
ZG93Um9vdCgpCitpbmxpbmUgU2hhZG93Um9vdCogU2hhZG93Um9vdExpc3Q6OnlvdW5nZXN0U2hh
ZG93Um9vdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMuaGVhZCgpOwogfQog
Ci1pbmxpbmUgU2hhZG93Um9vdCogU2hhZG93Um9vdExpc3Q6Om9sZGVzdFNoYWRvd1Jvb3QoKQor
aW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy50YWlsKCk7CiB9CiAKK2lubGluZSBIVE1M
Q29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290TGlzdDo6c2VsZWN0b3IoKSBjb25zdAoreworICAg
IHJldHVybiBtX3NlbGVjdG9yLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
CmluZGV4IDE0YzQ1OWEyMDI3ZmUyYTFlZjJkMjk1ODMxOTgwNjVmNDNjZjU1NDEuLmM4NTZjOWE2
NGU2YTJhNjU5N2I2NjVmNDU2MjZlYWQ1MGY1OGJjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc0LDcgKzc1
LDcgQEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OmF0dGFjaCgpCiAKICAgICAvLyBCZWZvcmUg
Y2FsbGluZyBTdHlsZWRFbGVtZW50OjphdHRhY2gsIHNlbGVjdG9yIG11c3QgYmUgY2FsY3VsYXRl
ZC4KICAgICBpZiAocm9vdCkgewotICAgICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3Rv
ciA9IHJvb3QtPmVuc3VyZVNlbGVjdG9yKCk7CisgICAgICAgIEhUTUxDb250ZW50U2VsZWN0b3Iq
IHNlbGVjdG9yID0gcm9vdC0+c2hhZG93Um9vdExpc3RGb3JUaGlzKCktPmVuc3VyZVNlbGVjdG9y
KCk7CiAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdChtX3NlbGVjdGlvbnMuZ2V0KCkpOwogICAg
ICAgICBzZWxlY3Rvci0+c2VsZWN0KHRoaXMsIG1fc2VsZWN0aW9ucy5nZXQoKSk7CiAgICAgfQpA
QCAtOTAsNyArOTEsNyBAQCB2b2lkIEhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNoKCkKIHZvaWQg
SFRNTENvbnRlbnRFbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChTaGFkb3dSb290KiByb290
ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgewotICAgICAgICBpZiAoSFRN
TENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5zZWxlY3RvcigpKQorICAgICAgICBp
ZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5zaGFkb3dSb290TGlzdEZv
clRoaXMoKS0+c2VsZWN0b3IoKSkKICAgICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdChtX3Nl
bGVjdGlvbnMuZ2V0KCkpOwogCiAgICAgICAgIC8vIFdoZW4gY29udGVudCBlbGVtZW50IGlzIGRl
dGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBz
ZWxlY3RvciBmb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxD
b250ZW50U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRTZWxlY3Rvci5jcHAKaW5kZXggODdlMWFkOWViYTAyYjA1Yjk2NmFmYTZmN2U2OGFlMTI5NzMx
MmI0Yy4uNTU5Njg4YTUwMzE2NGMwMWUwYjQ0YmUzZjM1YjQ0ZmZjODNiMjRlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKQEAg
LTE0NCwxMSArMTQ0LDEyIEBAIHZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6ZGlkU2VsZWN0KCkK
ICAgICBtX2NhbmRpZGF0ZXMuY2xlYXIoKTsKIH0KIAotdm9pZCBIVE1MQ29udGVudFNlbGVjdG9y
Ojp3aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290KiBzY29wZSkKK3ZvaWQgSFRNTENvbnRlbnRTZWxl
Y3Rvcjo6d2lsbFNlbGVjdE92ZXIoRWxlbWVudCogc2hhZG93SG9zdCkKIHsKICAgICBpZiAoIW1f
Y2FuZGlkYXRlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBzY29wZS0+c2hhZG93SG9zdCgpLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2Rl
LT5uZXh0U2libGluZygpKQorICAgIEFTU0VSVChzaGFkb3dIb3N0KTsKKyAgICBmb3IgKE5vZGUq
IG5vZGUgPSBzaGFkb3dIb3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0
U2libGluZygpKQogICAgICAgICBtX2NhbmRpZGF0ZXMuYXBwZW5kKG5vZGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKaW5kZXgg
YjBhMjg5MjAyNjllNGY2ZDMxMTgwMGI1YmNkYmFjZWU4NTM4NzI2MC4uYmVmZTUzYzBkZjYyNWUz
OGQwMTdhMTJkM2VmOWM2ZjI4ZjNhNTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwogICAgIEhUTUxD
b250ZW50U2VsZWN0aW9uKiBmaW5kRm9yKE5vZGUqIGtleSkgY29uc3Q7CiAKLSAgICB2b2lkIHdp
bGxTZWxlY3RPdmVyKFNoYWRvd1Jvb3QqKTsKKyAgICB2b2lkIHdpbGxTZWxlY3RPdmVyKEVsZW1l
bnQqIHNoYWRvd0hvc3QpOwogICAgIHZvaWQgZGlkU2VsZWN0KCk7CiAgICAgYm9vbCBoYXNDYW5k
aWRhdGVzKCkgY29uc3QgeyByZXR1cm4gIW1fY2FuZGlkYXRlcy5pc0VtcHR5KCk7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127766</attachid>
            <date>2012-02-19 22:57:52 -0800</date>
            <delta_ts>2012-02-20 02:51:20 -0800</delta_ts>
            <desc>update</desc>
            <filename>bug-79008-20120220155751.patch</filename>
            <type>text/plain</type>
            <size>13463</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA0OTJkZTBmYWE1MTQ1
ZGM0ZTAwMjM0YTk5MjI2NTYzOGMxYmM4Yi4uNDY5NDNiNGZkNWMwYzAwNTcxMTUxYTk0N2ZjNGNi
YzFjOTg5ZGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTE5ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3RM
aXN0IG1hbmFnZSBhIG5vZGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkwMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgor
CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Um9vdDo6c2hhZG93Um9vdExpc3RGb3JUaGlzKToKKyAgICAgICAgKFNoYWRvd1Jvb3Qp
OgorICAgICAgICAqIGRvbS9TaGFkb3dSb290TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290TGlzdDo6aW5zZXJ0aW9uUG9pbnRGb3IpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aXNTZWxlY3RvckFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3IpOgorICAgICAgICAq
IGRvbS9TaGFkb3dSb290TGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFk
b3dSb290TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aG9zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dSb290KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpzZWxlY3Rvcik6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxl
bWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6ZGV0
YWNoKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3RPdmVyKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmg6CisgICAgICAgIChIVE1M
Q29udGVudFNlbGVjdG9yKToKKwogMjAxMi0wMi0xOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vdmUgc3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgU2Ny
b2xsaW5nQ29vcmRpbmF0b3IgZnVuY3Rpb25zIGludG8gU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25l
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
OGU0NWI0MTNhZWNkNmUwMmMyMDUwMmUzOGExMGViNzQ2OWE0YTY5ZS4uZGE1ZGE5MWY5MTk3MTU0
OWQxMTdmZTViZGRiZTVlMGI2OTk4ODlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC02Nyw4ICs2Nyw4IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0
OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV92aXN1YWxQ
YXJlbnRTaGFkb3dSb290ID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvd1Jvb3RMaXN0KCktPnlv
dW5nZXN0U2hhZG93Um9vdCgpOwogCiAgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jv
b3QpIHsKLSAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50
U2hhZG93Um9vdC0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAm
JiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmlzU2VsZWN0b3JBY3RpdmUoKSkgeworICAgICAg
ICAgICAgaWYgKChtX2luc2VydGlvblBvaW50ID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5z
aGFkb3dSb290TGlzdEZvclRoaXMoKS0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKKyAgICAg
ICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPnNoYWRvd1Jvb3RMaXN0Rm9y
VGhpcygpLT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKICAgICAgICAgICAgICAgICBtX3BoYXNlID0g
QXR0YWNoaW5nRGlzdHJpYnV0ZWQ7CiAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5w
YXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggZWQ5MGYwZmVjODBkNThiNzhkZjdiYjcw
MjRkMTE0MjBjZjZmNWZmMy4uOWYwM2RhYTdlNWNlNTlmZjFmYzgxMWZjODhiZmE4NDBjOWY0NWNh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTI3LDcgKzEyNyw5IEBAIFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIFNo
YWRvd1Jvb3RDcmVhdGlvblB1CiAgICAgZWxlbWVudC0+c2V0U2hhZG93Um9vdChzaGFkb3dSb290
LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKLQorICAgIEFTU0VSVChlbGVt
ZW50ID09IHNoYWRvd1Jvb3QtPmhvc3QoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1NoYWRv
d1Jvb3QoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQtPnNoYWRvd1Jvb3RMaXN0KCkgPT0gc2hhZG93
Um9vdC0+c2hhZG93Um9vdExpc3RGb3JUaGlzKCkpOwogICAgIHJldHVybiBzaGFkb3dSb290LnJl
bGVhc2UoKTsKIH0KIApAQCAtMTgyLDE2ICsxODQsNiBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldE5l
ZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQogICAgICAgICBzaGFkb3dIb3N0KCkt
PnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotSFRNTENvbnRlbnRFbGVtZW50KiBTaGFkb3dS
b290OjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAotewotICAgIGlmICghbV9z
ZWxlY3RvcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZv
dW5kID0gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKLSAgICBpZiAoIWZvdW5kKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7Ci19Ci0KIHZv
aWQgU2hhZG93Um9vdDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCiB7CiAgICAgaWYgKCFoYXNDb250
ZW50RWxlbWVudCgpKQpAQCAtMjAxLDExICsxOTMsNiBAQCB2b2lkIFNoYWRvd1Jvb3Q6Omhvc3RD
aGlsZHJlbkNoYW5nZWQoKQogICAgIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKTsKIH0KIAotYm9vbCBTaGFkb3dSb290Ojppc1NlbGVjdG9yQWN0aXZlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBtX3NlbGVjdG9yLT5oYXNDYW5kaWRhdGVzKCk7Ci19
Ci0KIGJvb2wgU2hhZG93Um9vdDo6aGFzQ29udGVudEVsZW1lbnQoKSBjb25zdAogewogICAgIGZv
ciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUodGhp
cykpIHsKQEAgLTIzMSwxMCArMjE4LDEyIEBAIHZvaWQgU2hhZG93Um9vdDo6YXR0YWNoKCkKICAg
ICAvLyBDaGlsZHJlbiBvZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KICAgICAv
LyBlbnN1cmVTZWxlY3RvcigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0CiAgICAgLy8g
aXQgaXMgaW4gY2xlYW4gc3RhdGUuCi0gICAgQVNTRVJUKCFtX3NlbGVjdG9yIHx8ICFtX3NlbGVj
dG9yLT5oYXNDYW5kaWRhdGVzKCkpOworICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiBicmVh
a3MgaWYgbXVsdGlwbGUgc2hhZG93IHJvb3RzIGFyZSBiZWluZyBhdHRhY2hlZC4KKyAgICAvLyBT
aGFkb3dSb290TGlzdCBzaG91bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBv
ZiBzZWxlY3RvciBpbiBhdHRhY2hpbmcvZGV0YWNoaW5nLgorICAgIEFTU0VSVCghc2hhZG93Um9v
dExpc3RGb3JUaGlzKCktPnNlbGVjdG9yKCkgfHwgIXNoYWRvd1Jvb3RMaXN0Rm9yVGhpcygpLT5z
ZWxlY3RvcigpLT5oYXNDYW5kaWRhdGVzKCkpOwogICAgIERvY3VtZW50RnJhZ21lbnQ6OmF0dGFj
aCgpOwotICAgIGlmIChtX3NlbGVjdG9yKQotICAgICAgICBtX3NlbGVjdG9yLT5kaWRTZWxlY3Qo
KTsKKyAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSBzaGFkb3dSb290TGlz
dEZvclRoaXMoKS0+c2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZWN0b3ItPmRpZFNlbGVjdCgpOwog
fQogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKQEAg
LTI1NiwxOCArMjQ1LDQgQEAgdm9pZCBTaGFkb3dSb290OjpyZWF0dGFjaEhvc3RDaGlsZHJlbkFu
ZFNoYWRvdygpCiAgICAgfQogfQogCi1IVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290Ojpz
ZWxlY3RvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Ci19Ci0KLUhU
TUxDb250ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3Q6OmVuc3VyZVNlbGVjdG9yKCkKLXsKLSAgICBp
ZiAoIW1fc2VsZWN0b3IpCi0gICAgICAgIG1fc2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgSFRNTENv
bnRlbnRTZWxlY3RvcigpKTsKLSAgICBtX3NlbGVjdG9yLT53aWxsU2VsZWN0T3Zlcih0aGlzKTsK
LSAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKLX0KLQotCi19Cit9IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggODNlMTcxMzQ5OTUyOWU0NjRkOGMzNjA5OWJmZGQ1
YmMxNWY0YzFlMS4uZDg5NjM5MTk5ZTA0ZTNhZjk2NzRjYzNkZGZhZTEyNDkyOTkxNzgzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIFNoYWRvd1Jv
b3RfaAogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAj
aW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxDb250ZW50RWxlbWVu
dDsKLWNsYXNzIEhUTUxDb250ZW50U2VsZWN0b3I7CitjbGFzcyBTaGFkb3dSb290TGlzdDsKIAog
Y2xhc3MgU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNj
b3BlLCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD4gewogICAgIGZyaWVu
ZCBjbGFzcyBXVEY6OkRvdWJseUxpbmtlZExpc3ROb2RlPFNoYWRvd1Jvb3Q+OwpAQCAtNTksOSAr
NjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5B
bmRTaGFkb3coKTsKICAgICBib29sIG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3co
KTsKIAotICAgIEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNv
bnN0OwogICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwotICAgIGJvb2wgaXNTZWxlY3Rv
ckFjdGl2ZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZvaWQg
cmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKQEAgLTcxLDEzICs3MCwxMyBAQCBwdWJs
aWM6CiAKICAgICBFbGVtZW50KiBob3N0KCkgY29uc3QgeyByZXR1cm4gc2hhZG93SG9zdCgpOyB9
CiAKLSAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0OwotICAgIEhUTUxD
b250ZW50U2VsZWN0b3IqIGVuc3VyZVNlbGVjdG9yKCk7Ci0KICAgICBTaGFkb3dSb290KiB5b3Vu
Z2VyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIHByZXYoKTsgfQogICAgIFNoYWRvd1Jvb3Qq
IG9sZGVyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIG5leHQoKTsgfQorICAgIFNoYWRvd1Jv
b3RMaXN0KiBzaGFkb3dSb290TGlzdEZvclRoaXMoKSBjb25zdCB7IHJldHVybiBob3N0KCktPnNo
YWRvd1Jvb3RMaXN0KCk7IH0KKwogCiBwcml2YXRlOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNo
YWRvd1Jvb3Q+IGNyZWF0ZShEb2N1bWVudCopOwogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsK
ICAgICB2aXJ0dWFsIH5TaGFkb3dSb290KCk7CiAKQEAgLTkxLDcgKzkwLDYgQEAgcHJpdmF0ZToK
ICAgICBTaGFkb3dSb290KiBtX25leHQ7CiAgICAgYm9vbCBtX2FwcGx5QXV0aG9yU2hlZXRzIDog
MTsKICAgICBib29sIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgOiAxOwotICAgIE93blB0cjxI
VE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOwogfTsKIAogaW5saW5lIHZvaWQgU2hhZG93
Um9vdDo6Y2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdExpc3QuY3BwCmluZGV4IGQxOTU1YWFlZTYwMGYwNDcxMGUxYTRiMzlm
MzkwNmNlZTI1MTMyNDMuLmJkZmE2YzMxMGIwNTExYmMyODM1MWYwNjIyMjlmZGFhZTExNTYwMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKQEAgLTEyMyw0ICsxMjQsMjcgQEAgdm9pZCBT
aGFkb3dSb290TGlzdDo6ZGV0YWNoKCkKICAgICB9CiB9CiAKK0hUTUxDb250ZW50RWxlbWVudCog
U2hhZG93Um9vdExpc3Q6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3NlbGVjdG9yKQorICAgICAgICByZXR1cm4gMDsKKyAgICBIVE1MQ29udGVudFNl
bGVjdGlvbiogZm91bmQgPSBtX3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOworICAgIGlmICghZm91
bmQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQo
KTsKK30KKworYm9vbCBTaGFkb3dSb290TGlzdDo6aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwog
fQorCitIVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3Io
KQoreworICAgIGlmICghbV9zZWxlY3RvcikKKyAgICAgICAgbV9zZWxlY3RvciA9IGFkb3B0UHRy
KG5ldyBIVE1MQ29udGVudFNlbGVjdG9yKCkpOworICAgIG1fc2VsZWN0b3ItPndpbGxTZWxlY3RP
dmVyKGhvc3QoKSk7CisgICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCmluZGV4IGRiZWM3OTU0NjQzZTY1
OGEzNDBlNzZhOTIxMGMwOWVlOTgwZjA0NzkuLjIwZmM4ZjVmNmE3NDZkZDFhNzE3MDBmMmMwZWIx
ODk1ZTkyZDA2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCkBAIC0yNywyMyAr
MjcsMjcgQEAKICNpZm5kZWYgU2hhZG93Um9vdExpc3RfaAogI2RlZmluZSBTaGFkb3dSb290TGlz
dF9oCiAKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtl
ZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFkb3dSb290OworY2xhc3MgTm9kZTsKIGNsYXNzIEVsZW1lbnQ7CitjbGFz
cyBIVE1MQ29udGVudEVsZW1lbnQ7CitjbGFzcyBIVE1MQ29udGVudFNlbGVjdG9yOwogCiBjbGFz
cyBTaGFkb3dSb290TGlzdCB7CiBwdWJsaWM6CiAgICAgU2hhZG93Um9vdExpc3QoKTsKICAgICB+
U2hhZG93Um9vdExpc3QoKTsKIAotICAgIGJvb2wgaGFzU2hhZG93Um9vdCgpOwotICAgIFNoYWRv
d1Jvb3QqIHlvdW5nZXN0U2hhZG93Um9vdCgpOwotICAgIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRv
d1Jvb3QoKTsKKyAgICBib29sIGhhc1NoYWRvd1Jvb3QoKSBjb25zdDsKKyAgICBTaGFkb3dSb290
KiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdDsKKyAgICBTaGFkb3dSb290KiBvbGRlc3RTaGFk
b3dSb290KCkgY29uc3Q7CiAKICAgICB2b2lkIHB1c2hTaGFkb3dSb290KFNoYWRvd1Jvb3QqKTsK
ICAgICBTaGFkb3dSb290KiBwb3BTaGFkb3dSb290KCk7CkBAIC01OSwyNiArNjMsNDUgQEAgcHVi
bGljOgogICAgIHZvaWQgYXR0YWNoKCk7CiAgICAgdm9pZCBkZXRhY2goKTsKIAorICAgIEVsZW1l
bnQqIGhvc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1NoYWRvd1Jvb3QoKSk7
CisgICAgICAgIHJldHVybiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aG9zdCgpOworICAgIH0KKwor
ICAgIEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNvbnN0Owor
CisgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKKyAgICBIVE1MQ29u
dGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOworCisgICAgYm9vbCBpc1NlbGVjdG9yQWN0
aXZlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290
PiBtX3NoYWRvd1Jvb3RzOworICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVj
dG9yOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd1Jvb3RMaXN0KTsKIH07CiAKLWlu
bGluZSBib29sIFNoYWRvd1Jvb3RMaXN0OjpoYXNTaGFkb3dSb290KCkKK2lubGluZSBib29sIFNo
YWRvd1Jvb3RMaXN0OjpoYXNTaGFkb3dSb290KCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fc2hh
ZG93Um9vdHMuaXNFbXB0eSgpOwogfQogCi1pbmxpbmUgU2hhZG93Um9vdCogU2hhZG93Um9vdExp
c3Q6OnlvdW5nZXN0U2hhZG93Um9vdCgpCitpbmxpbmUgU2hhZG93Um9vdCogU2hhZG93Um9vdExp
c3Q6OnlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2hhZG93Um9v
dHMuaGVhZCgpOwogfQogCi1pbmxpbmUgU2hhZG93Um9vdCogU2hhZG93Um9vdExpc3Q6Om9sZGVz
dFNoYWRvd1Jvb3QoKQoraW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0OjpvbGRlc3RT
aGFkb3dSb290KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy50YWlsKCk7CiB9
CiAKK2lubGluZSBIVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290TGlzdDo6c2VsZWN0b3Io
KSBjb25zdAoreworICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29u
dGVudEVsZW1lbnQuY3BwCmluZGV4IDE0YzQ1OWEyMDI3ZmUyYTFlZjJkMjk1ODMxOTgwNjVmNDNj
ZjU1NDEuLmM4NTZjOWE2NGU2YTJhNjU5N2I2NjVmNDU2MjZlYWQ1MGY1OGJjZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlF1YWxpZmll
ZE5hbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdExp
c3QuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTc0LDcgKzc1LDcgQEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OmF0dGFjaCgpCiAK
ICAgICAvLyBCZWZvcmUgY2FsbGluZyBTdHlsZWRFbGVtZW50OjphdHRhY2gsIHNlbGVjdG9yIG11
c3QgYmUgY2FsY3VsYXRlZC4KICAgICBpZiAocm9vdCkgewotICAgICAgICBIVE1MQ29udGVudFNl
bGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmVuc3VyZVNlbGVjdG9yKCk7CisgICAgICAgIEhUTUxD
b250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+c2hhZG93Um9vdExpc3RGb3JUaGlzKCkt
PmVuc3VyZVNlbGVjdG9yKCk7CiAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdChtX3NlbGVjdGlv
bnMuZ2V0KCkpOwogICAgICAgICBzZWxlY3Rvci0+c2VsZWN0KHRoaXMsIG1fc2VsZWN0aW9ucy5n
ZXQoKSk7CiAgICAgfQpAQCAtOTAsNyArOTEsNyBAQCB2b2lkIEhUTUxDb250ZW50RWxlbWVudDo6
YXR0YWNoKCkKIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChT
aGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgewot
ICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5zZWxlY3Rv
cigpKQorICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5z
aGFkb3dSb290TGlzdEZvclRoaXMoKS0+c2VsZWN0b3IoKSkKICAgICAgICAgICAgIHNlbGVjdG9y
LT51bnNlbGVjdChtX3NlbGVjdGlvbnMuZ2V0KCkpOwogCiAgICAgICAgIC8vIFdoZW4gY29udGVu
dCBlbGVtZW50IGlzIGRldGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRv
IHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBmb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKaW5kZXggODdlMWFkOWViYTAyYjA1Yjk2NmFm
YTZmN2U2OGFlMTI5NzMxMmI0Yy4uNTU5Njg4YTUwMzE2NGMwMWUwYjQ0YmUzZjM1YjQ0ZmZjODNi
MjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRT
ZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRT
ZWxlY3Rvci5jcHAKQEAgLTE0NCwxMSArMTQ0LDEyIEBAIHZvaWQgSFRNTENvbnRlbnRTZWxlY3Rv
cjo6ZGlkU2VsZWN0KCkKICAgICBtX2NhbmRpZGF0ZXMuY2xlYXIoKTsKIH0KIAotdm9pZCBIVE1M
Q29udGVudFNlbGVjdG9yOjp3aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290KiBzY29wZSkKK3ZvaWQg
SFRNTENvbnRlbnRTZWxlY3Rvcjo6d2lsbFNlbGVjdE92ZXIoRWxlbWVudCogc2hhZG93SG9zdCkK
IHsKICAgICBpZiAoIW1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS0+c2hhZG93SG9zdCgpLT5maXJzdENoaWxkKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQorICAgIEFTU0VSVChzaGFkb3dIb3N0KTsK
KyAgICBmb3IgKE5vZGUqIG5vZGUgPSBzaGFkb3dIb3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5v
ZGUgPSBub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICBtX2NhbmRpZGF0ZXMuYXBwZW5kKG5v
ZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29u
dGVudFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNl
bGVjdG9yLmgKaW5kZXggYjBhMjg5MjAyNjllNGY2ZDMxMTgwMGI1YmNkYmFjZWU4NTM4NzI2MC4u
YmVmZTUzYzBkZjYyNWUzOGQwMTdhMTJkM2VmOWM2ZjI4ZjNhNTZiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAtMTMzLDcgKzEz
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlz
dCopOwogICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kRm9yKE5vZGUqIGtleSkgY29uc3Q7
CiAKLSAgICB2b2lkIHdpbGxTZWxlY3RPdmVyKFNoYWRvd1Jvb3QqKTsKKyAgICB2b2lkIHdpbGxT
ZWxlY3RPdmVyKEVsZW1lbnQqIHNoYWRvd0hvc3QpOwogICAgIHZvaWQgZGlkU2VsZWN0KCk7CiAg
ICAgYm9vbCBoYXNDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gIW1fY2FuZGlkYXRlcy5pc0Vt
cHR5KCk7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127793</attachid>
            <date>2012-02-20 02:51:27 -0800</date>
            <delta_ts>2012-02-20 21:26:11 -0800</delta_ts>
            <desc>get rid of shadowRootListForThis to make responsibility clear</desc>
            <filename>bug-79008-20120220195125.patch</filename>
            <type>text/plain</type>
            <size>13608</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA0OTJkZTBmYWE1MTQ1
ZGM0ZTAwMjM0YTk5MjI2NTYzOGMxYmM4Yi4uNDBiMThhNmIyODk5NTEwNmUwZmEzMWIxNTdlMWVh
MTFjNzAyMjAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAyLTIwICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3RM
aXN0IG1hbmFnZSBhIG5vZGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkwMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9ucyBp
cyBjdXJyZW50bHkgc3RvcmVkIGluCisgICAgICAgIFNoYWRvd1Jvb3QuIFRvIHN1cHBvcnQgbXVs
dGlwbGUgU2hhZG93Um9vdHMsIHN1Y2ggbm9kZSBkaXN0cmlidXRpb24KKyAgICAgICAgaW5mb3Jt
YXRpb24gc2hvdWxkIGJlIG1hbmFnZWQgaW4gb25lIHBsYWNlIHBlciBzaGFkb3cgaG9zdC4gTm93
CisgICAgICAgIFNoYWRvd1Jvb3RMaXN0IHRha2VzIHRoaXMgcmVzcG9uc2liaWxpdHkgb24gYmVo
YWxmIG9mIG93aW5nCisgICAgICAgIG11bHRpcGxlIFNoYWRvd1Jvb3RzLiBDbGllbnRzIHNob3Vs
ZCBhc2sgU2hhZG93Um9vdExpc3QgZm9yIHN1Y2gKKyAgICAgICAgaW5mb3JtYXRpb24sIG5vdCBm
b3IgZWFjaCBTaGFkb3dSb290LCB0byBtYWtlIHJlc3BvbnNpYmlsaXRpZXMgY2xlYXIuCisKKyAg
ICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGRvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290OjphdHRhY2gpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRv
bS9TaGFkb3dSb290TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6
aW5zZXJ0aW9uUG9pbnRGb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290TGlzdDo6aXNTZWxlY3RvckFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
TGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dSb290TGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aG9zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jv
b3RMaXN0OjpzZWxlY3Rvcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3RPdmVyKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmg6CisgICAgICAgIChIVE1MQ29udGVudFNlbGVjdG9y
KToKKwogMjAxMi0wMi0xOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIE1vdmUgc3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgU2Nyb2xsaW5nQ29vcmRpbmF0
b3IgZnVuY3Rpb25zIGludG8gU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOGU0NWI0MTNhZWNkNmUw
MmMyMDUwMmUzOGExMGViNzQ2OWE0YTY5ZS4uYWI2ZTgwZjE2ZjljMmE3YTA5ZTA3MmMyYzJjMTk3
ODFjOGE2ODEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC02Nyw4ICs2Nyw5IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5n
Q29udGV4dChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290
ID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9v
dCgpOwogCiAgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QpIHsKLSAgICAgICAg
ICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aW5z
ZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVu
dFNoYWRvd1Jvb3QtPmlzU2VsZWN0b3JBY3RpdmUoKSkgeworICAgICAgICAgICAgU2hhZG93Um9v
dExpc3QqIHNoYWRvd1Jvb3RMaXN0ID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5ob3N0KCkt
PnNoYWRvd1Jvb3RMaXN0KCk7CisgICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBz
aGFkb3dSb290TGlzdC0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKKyAgICAgICAgICAgICAg
ICAmJiBzaGFkb3dSb290TGlzdC0+aXNTZWxlY3RvckFjdGl2ZSgpKSB7CiAgICAgICAgICAgICAg
ICAgbV9waGFzZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOwogICAgICAgICAgICAgICAgIG1fcGFy
ZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQobV9pbnNl
cnRpb25Qb2ludCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGVkOTBmMGZlYzgw
ZDU4Yjc4ZGY3YmI3MDI0ZDExNDIwY2Y2ZjVmZjMuLjY4N2YxNDg3YWJmNDFlNDJkYzNmY2JlZWE0
NmE1OWQ1ZWQxMGU1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTEyNyw3ICsx
MjcsOSBAQCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IFNoYWRvd1Jvb3Q6OmNyZWF0ZShFbGVtZW50
KiBlbGVtZW50LCBTaGFkb3dSb290Q3JlYXRpb25QdQogICAgIGVsZW1lbnQtPnNldFNoYWRvd1Jv
b3Qoc2hhZG93Um9vdCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7Ci0KKyAg
ICBBU1NFUlQoZWxlbWVudCA9PSBzaGFkb3dSb290LT5ob3N0KCkpOworICAgIEFTU0VSVChlbGVt
ZW50LT5oYXNTaGFkb3dSb290KCkpOworICAgIEFTU0VSVChlbGVtZW50LT5zaGFkb3dSb290TGlz
dCgpID09IHNoYWRvd1Jvb3QtPnNoYWRvd1Jvb3RMaXN0Rm9yVGhpcygpKTsKICAgICByZXR1cm4g
c2hhZG93Um9vdC5yZWxlYXNlKCk7CiB9CiAKQEAgLTE4MiwxNiArMTg0LDYgQEAgdm9pZCBTaGFk
b3dSb290OjpzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKICAgICAgICAg
c2hhZG93SG9zdCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLUhUTUxDb250ZW50RWxl
bWVudCogU2hhZG93Um9vdDo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKLXsK
LSAgICBpZiAoIW1fc2VsZWN0b3IpCi0gICAgICAgIHJldHVybiAwOwotICAgIEhUTUxDb250ZW50
U2VsZWN0aW9uKiBmb3VuZCA9IG1fc2VsZWN0b3ItPmZpbmRGb3Iobm9kZSk7Ci0gICAgaWYgKCFm
b3VuZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2lu
dCgpOwotfQotCiB2b2lkIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQogewogICAg
IGlmICghaGFzQ29udGVudEVsZW1lbnQoKSkKQEAgLTIwMSwxMSArMTkzLDYgQEAgdm9pZCBTaGFk
b3dSb290Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKICAgICBzZXROZWVkc1JlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCk7CiB9CiAKLWJvb2wgU2hhZG93Um9vdDo6aXNTZWxlY3RvckFjdGl2
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2Fu
ZGlkYXRlcygpOwotfQotCiBib29sIFNoYWRvd1Jvb3Q6Omhhc0NvbnRlbnRFbGVtZW50KCkgY29u
c3QKIHsKICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJz
ZU5leHROb2RlKHRoaXMpKSB7CkBAIC0yMzEsMTAgKzIxOCwxMiBAQCB2b2lkIFNoYWRvd1Jvb3Q6
OmF0dGFjaCgpCiAgICAgLy8gQ2hpbGRyZW4gb2YgbV9zZWxlY3RvciBpcyBwb3B1bGF0ZWQgbGF6
aWx5IGluCiAgICAgLy8gZW5zdXJlU2VsZWN0b3IoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUg
dGhhdAogICAgIC8vIGl0IGlzIGluIGNsZWFuIHN0YXRlLgotICAgIEFTU0VSVCghbV9zZWxlY3Rv
ciB8fCAhbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpKTsKKyAgICAvLyBGSVhNRTogVGhpcyBh
c3NlcnRpb24gYnJlYWtzIGlmIG11bHRpcGxlIHNoYWRvdyByb290cyBhcmUgYmVpbmcgYXR0YWNo
ZWQuCisgICAgLy8gU2hhZG93Um9vdExpc3Qgc2hvdWxkIGhhdmUgcmVzcG9uc2liaWxpdHkgb2Yg
c2lkZSBlZmZlY3Qgb2Ygc2VsZWN0b3IgaW4gYXR0YWNoaW5nL2RldGFjaGluZy4KKyAgICBBU1NF
UlQoIWhvc3QoKS0+c2hhZG93Um9vdExpc3QoKS0+c2VsZWN0b3IoKSB8fCAhaG9zdCgpLT5zaGFk
b3dSb290TGlzdCgpLT5zZWxlY3RvcigpLT5oYXNDYW5kaWRhdGVzKCkpOwogICAgIERvY3VtZW50
RnJhZ21lbnQ6OmF0dGFjaCgpOwotICAgIGlmIChtX3NlbGVjdG9yKQotICAgICAgICBtX3NlbGVj
dG9yLT5kaWRTZWxlY3QoKTsKKyAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3Ig
PSBob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9yKCkpCisgICAgICAgIHNlbGVjdG9y
LT5kaWRTZWxlY3QoKTsKIH0KIAogdm9pZCBTaGFkb3dSb290OjpyZWF0dGFjaEhvc3RDaGlsZHJl
bkFuZFNoYWRvdygpCkBAIC0yNTYsMTggKzI0NSw0IEBAIHZvaWQgU2hhZG93Um9vdDo6cmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQogICAgIH0KIH0KIAotSFRNTENvbnRlbnRTZWxlY3Rv
ciogU2hhZG93Um9vdDo6c2VsZWN0b3IoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlbGVjdG9y
LmdldCgpOwotfQotCi1IVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290OjplbnN1cmVTZWxl
Y3RvcigpCi17Ci0gICAgaWYgKCFtX3NlbGVjdG9yKQotICAgICAgICBtX3NlbGVjdG9yID0gYWRv
cHRQdHIobmV3IEhUTUxDb250ZW50U2VsZWN0b3IoKSk7Ci0gICAgbV9zZWxlY3Rvci0+d2lsbFNl
bGVjdE92ZXIodGhpcyk7Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Ci19Ci0KLQotfQor
fSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDgzZTE3MTM0OTk1Mjll
NDY0ZDhjMzYwOTliZmRkNWJjMTVmNGMxZTEuLmY5NGNjZjhkOTA1MmRiMmMxYzllMzg0NzU1MmZk
MWVlZDYzZTNjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTENvbnRlbnRF
bGVtZW50OwotY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKK2NsYXNzIFNoYWRvd1Jvb3RMaXN0
OwogCiBjbGFzcyBTaGFkb3dSb290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQsIHB1YmxpYyBU
cmVlU2NvcGUsIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PiB7CiAgICAg
ZnJpZW5kIGNsYXNzIFdURjo6RG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD47CkBAIC01
OSw5ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGls
ZHJlbkFuZFNoYWRvdygpOwogICAgIGJvb2wgbmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNo
YWRvdygpOwogCi0gICAgSFRNTENvbnRlbnRFbGVtZW50KiBpbnNlcnRpb25Qb2ludEZvcihOb2Rl
KikgY29uc3Q7CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7Ci0gICAgYm9vbCBpc1Nl
bGVjdG9yQWN0aXZlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAg
dm9pZCByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwpAQCAtNzEsMTMgKzY5LDExIEBA
IHB1YmxpYzoKIAogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVybiBzaGFkb3dIb3N0
KCk7IH0KIAotICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7Ci0gICAg
SFRNTENvbnRlbnRTZWxlY3RvciogZW5zdXJlU2VsZWN0b3IoKTsKLQogICAgIFNoYWRvd1Jvb3Qq
IHlvdW5nZXJTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gcHJldigpOyB9CiAgICAgU2hhZG93
Um9vdCogb2xkZXJTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gbmV4dCgpOyB9CiAKIHByaXZh
dGU6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50Kik7
CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflNoYWRvd1Jvb3QoKTsK
IApAQCAtOTEsNyArODcsNiBAQCBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKICAg
ICBib29sIG1fYXBwbHlBdXRob3JTaGVldHMgOiAxOwogICAgIGJvb2wgbV9uZWVkc1JlY2FsY3Vs
YXRlQ29udGVudCA6IDE7Ci0gICAgT3duUHRyPEhUTUxDb250ZW50U2VsZWN0b3I+IG1fc2VsZWN0
b3I7CiB9OwogCiBpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpjbGVhck5lZWRzUmVhdHRhY2hIb3N0
Q2hpbGRyZW5BbmRTaGFkb3coKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3RMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKaW5k
ZXggZDE5NTVhYWVlNjAwZjA0NzEwZTFhNGIzOWYzOTA2Y2VlMjUxMzI0My4uYmRmYTZjMzEwYjA1
MTFiYzI4MzUxZjA2MjIyOWZkYWFlMTE1NjAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dExpc3QuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
IApAQCAtMTIzLDQgKzEyNCwyNyBAQCB2b2lkIFNoYWRvd1Jvb3RMaXN0OjpkZXRhY2goKQogICAg
IH0KIH0KIAorSFRNTENvbnRlbnRFbGVtZW50KiBTaGFkb3dSb290TGlzdDo6aW5zZXJ0aW9uUG9p
bnRGb3IoTm9kZSogbm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIW1fc2VsZWN0b3IpCisgICAgICAg
IHJldHVybiAwOworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IG1fc2VsZWN0b3It
PmZpbmRGb3Iobm9kZSk7CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgpOworfQorCitib29sIFNoYWRvd1Jvb3RMaXN0
Ojppc1NlbGVjdG9yQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBt
X3NlbGVjdG9yLT5oYXNDYW5kaWRhdGVzKCk7CiB9CisKK0hUTUxDb250ZW50U2VsZWN0b3IqIFNo
YWRvd1Jvb3RMaXN0OjplbnN1cmVTZWxlY3RvcigpCit7CisgICAgaWYgKCFtX3NlbGVjdG9yKQor
ICAgICAgICBtX3NlbGVjdG9yID0gYWRvcHRQdHIobmV3IEhUTUxDb250ZW50U2VsZWN0b3IoKSk7
CisgICAgbV9zZWxlY3Rvci0+d2lsbFNlbGVjdE92ZXIoaG9zdCgpKTsKKyAgICByZXR1cm4gbV9z
ZWxlY3Rvci5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3RMaXN0LmgKaW5kZXggZGJlYzc5NTQ2NDNlNjU4YTM0MGU3NmE5MjEwYzA5ZWU5ODBmMDQ3OS4u
MjBmYzhmNWY2YTc0NmRkMWE3MTcwMGYyYzBlYjE4OTVlOTJkMDZjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3RMaXN0LmgKQEAgLTI3LDIzICsyNywyNyBAQAogI2lmbmRlZiBTaGFkb3dSb290
TGlzdF9oCiAjZGVmaW5lIFNoYWRvd1Jvb3RMaXN0X2gKIAorI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYWRvd1Jvb3Q7CitjbGFz
cyBOb2RlOwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKK2NsYXNz
IEhUTUxDb250ZW50U2VsZWN0b3I7CiAKIGNsYXNzIFNoYWRvd1Jvb3RMaXN0IHsKIHB1YmxpYzoK
ICAgICBTaGFkb3dSb290TGlzdCgpOwogICAgIH5TaGFkb3dSb290TGlzdCgpOwogCi0gICAgYm9v
bCBoYXNTaGFkb3dSb290KCk7Ci0gICAgU2hhZG93Um9vdCogeW91bmdlc3RTaGFkb3dSb290KCk7
Ci0gICAgU2hhZG93Um9vdCogb2xkZXN0U2hhZG93Um9vdCgpOworICAgIGJvb2wgaGFzU2hhZG93
Um9vdCgpIGNvbnN0OworICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0
OworICAgIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdDsKIAogICAgIHZvaWQg
cHVzaFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopOwogICAgIFNoYWRvd1Jvb3QqIHBvcFNoYWRvd1Jv
b3QoKTsKQEAgLTU5LDI2ICs2Myw0NSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRhY2goKTsKICAg
ICB2b2lkIGRldGFjaCgpOwogCisgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQoaGFzU2hhZG93Um9vdCgpKTsKKyAgICAgICAgcmV0dXJuIHlvdW5nZXN0U2hh
ZG93Um9vdCgpLT5ob3N0KCk7CisgICAgfQorCisgICAgSFRNTENvbnRlbnRFbGVtZW50KiBpbnNl
cnRpb25Qb2ludEZvcihOb2RlKikgY29uc3Q7CisKKyAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBz
ZWxlY3RvcigpIGNvbnN0OworICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIGVuc3VyZVNlbGVjdG9y
KCk7CisKKyAgICBib29sIGlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBEb3VibHlMaW5rZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9vdHM7CisgICAgT3duUHRy
PEhUTUxDb250ZW50U2VsZWN0b3I+IG1fc2VsZWN0b3I7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU2hhZG93Um9vdExpc3QpOwogfTsKIAotaW5saW5lIGJvb2wgU2hhZG93Um9vdExpc3Q6Omhh
c1NoYWRvd1Jvb3QoKQoraW5saW5lIGJvb2wgU2hhZG93Um9vdExpc3Q6Omhhc1NoYWRvd1Jvb3Qo
KSBjb25zdAogewogICAgIHJldHVybiAhbV9zaGFkb3dSb290cy5pc0VtcHR5KCk7CiB9CiAKLWlu
bGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dSb290KCkKK2lu
bGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dSb290KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy5oZWFkKCk7CiB9CiAKLWlubGluZSBTaGFk
b3dSb290KiBTaGFkb3dSb290TGlzdDo6b2xkZXN0U2hhZG93Um9vdCgpCitpbmxpbmUgU2hhZG93
Um9vdCogU2hhZG93Um9vdExpc3Q6Om9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3NoYWRvd1Jvb3RzLnRhaWwoKTsKIH0KIAoraW5saW5lIEhUTUxDb250ZW50U2VsZWN0
b3IqIFNoYWRvd1Jvb3RMaXN0OjpzZWxlY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Vs
ZWN0b3IuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKaW5kZXggMTRjNDU5
YTIwMjdmZTJhMWVmMmQyOTU4MzE5ODA2NWY0M2NmNTU0MS4uMjVhYWI0ZWJjYTExM2U2NTY1NzY2
ZTdiNTQxZmQ1MzIxZjg3Nzg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQsNyArNzUsNyBAQCB2b2lkIEhU
TUxDb250ZW50RWxlbWVudDo6YXR0YWNoKCkKIAogICAgIC8vIEJlZm9yZSBjYWxsaW5nIFN0eWxl
ZEVsZW1lbnQ6OmF0dGFjaCwgc2VsZWN0b3IgbXVzdCBiZSBjYWxjdWxhdGVkLgogICAgIGlmIChy
b290KSB7Ci0gICAgICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+ZW5z
dXJlU2VsZWN0b3IoKTsKKyAgICAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSBy
b290LT5ob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPmVuc3VyZVNlbGVjdG9yKCk7CiAgICAgICAg
IHNlbGVjdG9yLT51bnNlbGVjdChtX3NlbGVjdGlvbnMuZ2V0KCkpOwogICAgICAgICBzZWxlY3Rv
ci0+c2VsZWN0KHRoaXMsIG1fc2VsZWN0aW9ucy5nZXQoKSk7CiAgICAgfQpAQCAtOTAsNyArOTEs
NyBAQCB2b2lkIEhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNoKCkKIHZvaWQgSFRNTENvbnRlbnRF
bGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dS
b290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgewotICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxl
Y3Rvciogc2VsZWN0b3IgPSByb290LT5zZWxlY3RvcigpKQorICAgICAgICBpZiAoSFRNTENvbnRl
bnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5ob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNl
bGVjdG9yKCkpCiAgICAgICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QobV9zZWxlY3Rpb25zLmdl
dCgpKTsKIAogICAgICAgICAvLyBXaGVuIGNvbnRlbnQgZWxlbWVudCBpcyBkZXRhY2hlZCwgc2hh
ZG93IHRyZWUgc2hvdWxkIGJlIHJlY3JlYXRlZCB0byByZS1jYWxjdWxhdGUgc2VsZWN0b3IgZm9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3Iu
Y3BwCmluZGV4IDg3ZTFhZDllYmEwMmIwNWI5NjZhZmE2ZjdlNjhhZTEyOTczMTJiNGMuLjU1OTY4
OGE1MDMxNjRjMDFlMGI0NGJlM2YzNWI0NGZmYzgzYjI0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCkBAIC0xNDQsMTEgKzE0
NCwxMiBAQCB2b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OmRpZFNlbGVjdCgpCiAgICAgbV9jYW5k
aWRhdGVzLmNsZWFyKCk7CiB9CiAKLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6d2lsbFNlbGVj
dE92ZXIoU2hhZG93Um9vdCogc2NvcGUpCit2b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxT
ZWxlY3RPdmVyKEVsZW1lbnQqIHNoYWRvd0hvc3QpCiB7CiAgICAgaWYgKCFtX2NhbmRpZGF0ZXMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgZm9yIChOb2RlKiBub2RlID0gc2NvcGUt
PnNoYWRvd0hvc3QoKS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxp
bmcoKSkKKyAgICBBU1NFUlQoc2hhZG93SG9zdCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gc2hh
ZG93SG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkK
ICAgICAgICAgbV9jYW5kaWRhdGVzLmFwcGVuZChub2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCmluZGV4IGIwYTI4OTIwMjY5
ZTRmNmQzMTE4MDBiNWJjZGJhY2VlODUzODcyNjAuLmJlZmU1M2MwZGY2MjVlMzhkMDE3YTEyZDNl
ZjljNmYyOGYzYTU2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudFNlbGVjdG9yLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKICAgICBIVE1MQ29udGVudFNlbGVj
dGlvbiogZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0OwogCi0gICAgdm9pZCB3aWxsU2VsZWN0T3Zl
cihTaGFkb3dSb290Kik7CisgICAgdm9pZCB3aWxsU2VsZWN0T3ZlcihFbGVtZW50KiBzaGFkb3dI
b3N0KTsKICAgICB2b2lkIGRpZFNlbGVjdCgpOwogICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygpIGNv
bnN0IHsgcmV0dXJuICFtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127913</attachid>
            <date>2012-02-20 21:26:21 -0800</date>
            <delta_ts>2012-02-20 23:00:35 -0800</delta_ts>
            <desc>fix debug build</desc>
            <filename>bug-79008-20120221142619.patch</filename>
            <type>text/plain</type>
            <size>13529</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA0OTJkZTBmYWE1MTQ1
ZGM0ZTAwMjM0YTk5MjI2NTYzOGMxYmM4Yi4uNDBiMThhNmIyODk5NTEwNmUwZmEzMWIxNTdlMWVh
MTFjNzAyMjAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAyLTIwICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3RM
aXN0IG1hbmFnZSBhIG5vZGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkwMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9ucyBp
cyBjdXJyZW50bHkgc3RvcmVkIGluCisgICAgICAgIFNoYWRvd1Jvb3QuIFRvIHN1cHBvcnQgbXVs
dGlwbGUgU2hhZG93Um9vdHMsIHN1Y2ggbm9kZSBkaXN0cmlidXRpb24KKyAgICAgICAgaW5mb3Jt
YXRpb24gc2hvdWxkIGJlIG1hbmFnZWQgaW4gb25lIHBsYWNlIHBlciBzaGFkb3cgaG9zdC4gTm93
CisgICAgICAgIFNoYWRvd1Jvb3RMaXN0IHRha2VzIHRoaXMgcmVzcG9uc2liaWxpdHkgb24gYmVo
YWxmIG9mIG93aW5nCisgICAgICAgIG11bHRpcGxlIFNoYWRvd1Jvb3RzLiBDbGllbnRzIHNob3Vs
ZCBhc2sgU2hhZG93Um9vdExpc3QgZm9yIHN1Y2gKKyAgICAgICAgaW5mb3JtYXRpb24sIG5vdCBm
b3IgZWFjaCBTaGFkb3dSb290LCB0byBtYWtlIHJlc3BvbnNpYmlsaXRpZXMgY2xlYXIuCisKKyAg
ICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGRvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290OjphdHRhY2gpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRv
bS9TaGFkb3dSb290TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6
aW5zZXJ0aW9uUG9pbnRGb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290TGlzdDo6aXNTZWxlY3RvckFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
TGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dSb290TGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aG9zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFk
b3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jv
b3RMaXN0OjpzZWxlY3Rvcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3RPdmVyKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmg6CisgICAgICAgIChIVE1MQ29udGVudFNlbGVjdG9y
KToKKwogMjAxMi0wMi0xOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIE1vdmUgc3R1YiBpbXBsZW1lbnRhdGlvbnMgb2YgU2Nyb2xsaW5nQ29vcmRpbmF0
b3IgZnVuY3Rpb25zIGludG8gU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOGU0NWI0MTNhZWNkNmUw
MmMyMDUwMmUzOGExMGViNzQ2OWE0YTY5ZS4uYWI2ZTgwZjE2ZjljMmE3YTA5ZTA3MmMyYzJjMTk3
ODFjOGE2ODEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwCkBAIC02Nyw4ICs2Nyw5IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5n
Q29udGV4dChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290
ID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9v
dCgpOwogCiAgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QpIHsKLSAgICAgICAg
ICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aW5z
ZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVu
dFNoYWRvd1Jvb3QtPmlzU2VsZWN0b3JBY3RpdmUoKSkgeworICAgICAgICAgICAgU2hhZG93Um9v
dExpc3QqIHNoYWRvd1Jvb3RMaXN0ID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5ob3N0KCkt
PnNoYWRvd1Jvb3RMaXN0KCk7CisgICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBz
aGFkb3dSb290TGlzdC0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKKyAgICAgICAgICAgICAg
ICAmJiBzaGFkb3dSb290TGlzdC0+aXNTZWxlY3RvckFjdGl2ZSgpKSB7CiAgICAgICAgICAgICAg
ICAgbV9waGFzZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOwogICAgICAgICAgICAgICAgIG1fcGFy
ZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQobV9pbnNl
cnRpb25Qb2ludCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGVkOTBmMGZlYzgw
ZDU4Yjc4ZGY3YmI3MDI0ZDExNDIwY2Y2ZjVmZjMuLjNjOWRhYWYyZmQzYTVlZmVkNjNjODFjMGNh
NGJiYWQ3ZDlhM2UwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTEyNyw3ICsx
MjcsOCBAQCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IFNoYWRvd1Jvb3Q6OmNyZWF0ZShFbGVtZW50
KiBlbGVtZW50LCBTaGFkb3dSb290Q3JlYXRpb25QdQogICAgIGVsZW1lbnQtPnNldFNoYWRvd1Jv
b3Qoc2hhZG93Um9vdCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7Ci0KKyAg
ICBBU1NFUlQoZWxlbWVudCA9PSBzaGFkb3dSb290LT5ob3N0KCkpOworICAgIEFTU0VSVChlbGVt
ZW50LT5oYXNTaGFkb3dSb290KCkpOwogICAgIHJldHVybiBzaGFkb3dSb290LnJlbGVhc2UoKTsK
IH0KIApAQCAtMTgyLDE2ICsxODMsNiBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldE5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQogICAgICAgICBzaGFkb3dIb3N0KCktPnNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKIH0KIAotSFRNTENvbnRlbnRFbGVtZW50KiBTaGFkb3dSb290OjppbnNl
cnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAotewotICAgIGlmICghbV9zZWxlY3RvcikK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZvdW5kID0gbV9z
ZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKLSAgICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1cm4g
MDsKLSAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7Ci19Ci0KIHZvaWQgU2hhZG93
Um9vdDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCiB7CiAgICAgaWYgKCFoYXNDb250ZW50RWxlbWVu
dCgpKQpAQCAtMjAxLDExICsxOTIsNiBAQCB2b2lkIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZHJlbkNo
YW5nZWQoKQogICAgIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKIH0K
IAotYm9vbCBTaGFkb3dSb290Ojppc1NlbGVjdG9yQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9zZWxlY3RvciAmJiBtX3NlbGVjdG9yLT5oYXNDYW5kaWRhdGVzKCk7Ci19Ci0KIGJvb2wg
U2hhZG93Um9vdDo6aGFzQ29udGVudEVsZW1lbnQoKSBjb25zdAogewogICAgIGZvciAoTm9kZSog
biA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKQEAg
LTIzMSwxMCArMjE3LDEyIEBAIHZvaWQgU2hhZG93Um9vdDo6YXR0YWNoKCkKICAgICAvLyBDaGls
ZHJlbiBvZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KICAgICAvLyBlbnN1cmVT
ZWxlY3RvcigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0CiAgICAgLy8gaXQgaXMgaW4g
Y2xlYW4gc3RhdGUuCi0gICAgQVNTRVJUKCFtX3NlbGVjdG9yIHx8ICFtX3NlbGVjdG9yLT5oYXND
YW5kaWRhdGVzKCkpOworICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiBicmVha3MgaWYgbXVs
dGlwbGUgc2hhZG93IHJvb3RzIGFyZSBiZWluZyBhdHRhY2hlZC4KKyAgICAvLyBTaGFkb3dSb290
TGlzdCBzaG91bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBvZiBzZWxlY3Rv
ciBpbiBhdHRhY2hpbmcvZGV0YWNoaW5nLgorICAgIEFTU0VSVCghaG9zdCgpLT5zaGFkb3dSb290
TGlzdCgpLT5zZWxlY3RvcigpIHx8ICFob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9y
KCktPmhhc0NhbmRpZGF0ZXMoKSk7CiAgICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7Ci0g
ICAgaWYgKG1fc2VsZWN0b3IpCi0gICAgICAgIG1fc2VsZWN0b3ItPmRpZFNlbGVjdCgpOworICAg
IGlmIChIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IGhvc3QoKS0+c2hhZG93Um9vdExp
c3QoKS0+c2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZWN0b3ItPmRpZFNlbGVjdCgpOwogfQogCiB2
b2lkIFNoYWRvd1Jvb3Q6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKQEAgLTI1Niwx
OCArMjQ0LDQgQEAgdm9pZCBTaGFkb3dSb290OjpyZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRv
dygpCiAgICAgfQogfQogCi1IVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290OjpzZWxlY3Rv
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Ci19Ci0KLUhUTUxDb250
ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3Q6OmVuc3VyZVNlbGVjdG9yKCkKLXsKLSAgICBpZiAoIW1f
c2VsZWN0b3IpCi0gICAgICAgIG1fc2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgSFRNTENvbnRlbnRT
ZWxlY3RvcigpKTsKLSAgICBtX3NlbGVjdG9yLT53aWxsU2VsZWN0T3Zlcih0aGlzKTsKLSAgICBy
ZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKLX0KLQotCi19Cit9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKaW5kZXggODNlMTcxMzQ5OTUyOWU0NjRkOGMzNjA5OWJmZGQ1YmMxNWY0
YzFlMS4uZjk0Y2NmOGQ5MDUyZGIyYzFjOWUzODQ3NTUyZmQxZWVkNjNlM2M3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7Ci1jbGFzcyBIVE1MQ29u
dGVudFNlbGVjdG9yOworY2xhc3MgU2hhZG93Um9vdExpc3Q7CiAKIGNsYXNzIFNoYWRvd1Jvb3Qg
OiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIERvdWJs
eUxpbmtlZExpc3ROb2RlPFNoYWRvd1Jvb3Q+IHsKICAgICBmcmllbmQgY2xhc3MgV1RGOjpEb3Vi
bHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PjsKQEAgLTU5LDkgKzU5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAg
Ym9vbCBuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAKLSAgICBIVE1MQ29u
dGVudEVsZW1lbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKICAgICB2b2lkIGhv
c3RDaGlsZHJlbkNoYW5nZWQoKTsKLSAgICBib29sIGlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxk
cmVuQW5kU2hhZG93KCk7CkBAIC03MSwxMyArNjksMTEgQEAgcHVibGljOgogCiAgICAgRWxlbWVu
dCogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIHNoYWRvd0hvc3QoKTsgfQogCi0gICAgSFRNTENvbnRl
bnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKLSAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBl
bnN1cmVTZWxlY3RvcigpOwotCiAgICAgU2hhZG93Um9vdCogeW91bmdlclNoYWRvd1Jvb3QoKSBj
b25zdCB7IHJldHVybiBwcmV2KCk7IH0KICAgICBTaGFkb3dSb290KiBvbGRlclNoYWRvd1Jvb3Qo
KSBjb25zdCB7IHJldHVybiBuZXh0KCk7IH0KIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFkb3dSb290PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICBTaGFkb3dSb290KERvY3Vt
ZW50Kik7CiAgICAgdmlydHVhbCB+U2hhZG93Um9vdCgpOwogCkBAIC05MSw3ICs4Nyw2IEBAIHBy
aXZhdGU6CiAgICAgU2hhZG93Um9vdCogbV9uZXh0OwogICAgIGJvb2wgbV9hcHBseUF1dGhvclNo
ZWV0cyA6IDE7CiAgICAgYm9vbCBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50IDogMTsKLSAgICBP
d25QdHI8SFRNTENvbnRlbnRTZWxlY3Rvcj4gbV9zZWxlY3RvcjsKIH07CiAKIGlubGluZSB2b2lk
IFNoYWRvd1Jvb3Q6OmNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcAppbmRleCBkMTk1NWFhZWU2MDBmMDQ3MTBl
MWE0YjM5ZjM5MDZjZWUyNTEzMjQzLi5iZGZhNmMzMTBiMDUxMWJjMjgzNTFmMDYyMjI5ZmRhYWUx
MTU2MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCkBAIC0xMjMsNCArMTI0LDI3IEBA
IHZvaWQgU2hhZG93Um9vdExpc3Q6OmRldGFjaCgpCiAgICAgfQogfQogCitIVE1MQ29udGVudEVs
ZW1lbnQqIFNoYWRvd1Jvb3RMaXN0OjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25z
dAoreworICAgIGlmICghbV9zZWxlY3RvcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSFRNTENv
bnRlbnRTZWxlY3Rpb24qIGZvdW5kID0gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKKyAgICBp
ZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZm91bmQtPmluc2VydGlv
blBvaW50KCk7Cit9CisKK2Jvb2wgU2hhZG93Um9vdExpc3Q6OmlzU2VsZWN0b3JBY3RpdmUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3NlbGVjdG9yICYmIG1fc2VsZWN0b3ItPmhhc0NhbmRpZGF0
ZXMoKTsKIH0KKworSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdExpc3Q6OmVuc3VyZVNl
bGVjdG9yKCkKK3sKKyAgICBpZiAoIW1fc2VsZWN0b3IpCisgICAgICAgIG1fc2VsZWN0b3IgPSBh
ZG9wdFB0cihuZXcgSFRNTENvbnRlbnRTZWxlY3RvcigpKTsKKyAgICBtX3NlbGVjdG9yLT53aWxs
U2VsZWN0T3Zlcihob3N0KCkpOworICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOworfQorCit9
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaAppbmRleCBkYmVjNzk1
NDY0M2U2NThhMzQwZTc2YTkyMTBjMDllZTk4MGYwNDc5Li4yMGZjOGY1ZjZhNzQ2ZGQxYTcxNzAw
ZjJjMGViMTg5NWU5MmQwNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdExpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaApAQCAt
MjcsMjMgKzI3LDI3IEBACiAjaWZuZGVmIFNoYWRvd1Jvb3RMaXN0X2gKICNkZWZpbmUgU2hhZG93
Um9vdExpc3RfaAogCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Eb3Vi
bHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2hhZG93Um9vdDsKK2NsYXNzIE5vZGU7CiBjbGFzcyBFbGVtZW50
OworY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OworY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsK
IAogY2xhc3MgU2hhZG93Um9vdExpc3QgewogcHVibGljOgogICAgIFNoYWRvd1Jvb3RMaXN0KCk7
CiAgICAgflNoYWRvd1Jvb3RMaXN0KCk7CiAKLSAgICBib29sIGhhc1NoYWRvd1Jvb3QoKTsKLSAg
ICBTaGFkb3dSb290KiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKLSAgICBTaGFkb3dSb290KiBvbGRl
c3RTaGFkb3dSb290KCk7CisgICAgYm9vbCBoYXNTaGFkb3dSb290KCkgY29uc3Q7CisgICAgU2hh
ZG93Um9vdCogeW91bmdlc3RTaGFkb3dSb290KCkgY29uc3Q7CisgICAgU2hhZG93Um9vdCogb2xk
ZXN0U2hhZG93Um9vdCgpIGNvbnN0OwogCiAgICAgdm9pZCBwdXNoU2hhZG93Um9vdChTaGFkb3dS
b290Kik7CiAgICAgU2hhZG93Um9vdCogcG9wU2hhZG93Um9vdCgpOwpAQCAtNTksMjYgKzYzLDQ1
IEBAIHB1YmxpYzoKICAgICB2b2lkIGF0dGFjaCgpOwogICAgIHZvaWQgZGV0YWNoKCk7CiAKKyAg
ICBFbGVtZW50KiBob3N0KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNTaGFkb3dS
b290KCkpOworICAgICAgICByZXR1cm4geW91bmdlc3RTaGFkb3dSb290KCktPmhvc3QoKTsKKyAg
ICB9CisKKyAgICBIVE1MQ29udGVudEVsZW1lbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBj
b25zdDsKKworICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7CisgICAg
SFRNTENvbnRlbnRTZWxlY3RvciogZW5zdXJlU2VsZWN0b3IoKTsKKworICAgIGJvb2wgaXNTZWxl
Y3RvckFjdGl2ZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIERvdWJseUxpbmtlZExpc3Q8U2hh
ZG93Um9vdD4gbV9zaGFkb3dSb290czsKKyAgICBPd25QdHI8SFRNTENvbnRlbnRTZWxlY3Rvcj4g
bV9zZWxlY3RvcjsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFkb3dSb290TGlzdCk7CiB9
OwogCi1pbmxpbmUgYm9vbCBTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCgpCitpbmxpbmUg
Ym9vbCBTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
ICFtX3NoYWRvd1Jvb3RzLmlzRW1wdHkoKTsKIH0KIAotaW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRv
d1Jvb3RMaXN0Ojp5b3VuZ2VzdFNoYWRvd1Jvb3QoKQoraW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRv
d1Jvb3RMaXN0Ojp5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIHJldHVybiBtX3No
YWRvd1Jvb3RzLmhlYWQoKTsKIH0KIAotaW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0
OjpvbGRlc3RTaGFkb3dSb290KCkKK2lubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6
b2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFp
bCgpOwogfQogCitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdExpc3Q6OnNl
bGVjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRFbGVtZW50LmNwcAppbmRleCAxNGM0NTlhMjAyN2ZlMmExZWYyZDI5NTgzMTk4
MDY1ZjQzY2Y1NTQxLi4yNWFhYjRlYmNhMTEzZTY1NjU3NjZlN2I1NDFmZDUzMjFmODc3ODVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJR
dWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNoYWRv
d1Jvb3RMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC03NCw3ICs3NSw3IEBAIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjphdHRh
Y2goKQogCiAgICAgLy8gQmVmb3JlIGNhbGxpbmcgU3R5bGVkRWxlbWVudDo6YXR0YWNoLCBzZWxl
Y3RvciBtdXN0IGJlIGNhbGN1bGF0ZWQuCiAgICAgaWYgKHJvb3QpIHsKLSAgICAgICAgSFRNTENv
bnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5lbnN1cmVTZWxlY3RvcigpOworICAgICAg
ICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmhvc3QoKS0+c2hhZG93Um9v
dExpc3QoKS0+ZW5zdXJlU2VsZWN0b3IoKTsKICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KG1f
c2VsZWN0aW9ucy5nZXQoKSk7CiAgICAgICAgIHNlbGVjdG9yLT5zZWxlY3QodGhpcywgbV9zZWxl
Y3Rpb25zLmdldCgpKTsKICAgICB9CkBAIC05MCw3ICs5MSw3IEBAIHZvaWQgSFRNTENvbnRlbnRF
bGVtZW50OjphdHRhY2goKQogdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OmRldGFjaCgpCiB7CiAg
ICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2Rl
KCkpKSB7Ci0gICAgICAgIGlmIChIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3Qt
PnNlbGVjdG9yKCkpCisgICAgICAgIGlmIChIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9
IHJvb3QtPmhvc3QoKS0+c2hhZG93Um9vdExpc3QoKS0+c2VsZWN0b3IoKSkKICAgICAgICAgICAg
IHNlbGVjdG9yLT51bnNlbGVjdChtX3NlbGVjdGlvbnMuZ2V0KCkpOwogCiAgICAgICAgIC8vIFdo
ZW4gY29udGVudCBlbGVtZW50IGlzIGRldGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUgcmVj
cmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBmb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKaW5kZXggODdlMWFkOWViYTAy
YjA1Yjk2NmFmYTZmN2U2OGFlMTI5NzMxMmI0Yy4uNTU5Njg4YTUwMzE2NGMwMWUwYjQ0YmUzZjM1
YjQ0ZmZjODNiMjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRTZWxlY3Rvci5jcHAKQEAgLTE0NCwxMSArMTQ0LDEyIEBAIHZvaWQgSFRNTENvbnRl
bnRTZWxlY3Rvcjo6ZGlkU2VsZWN0KCkKICAgICBtX2NhbmRpZGF0ZXMuY2xlYXIoKTsKIH0KIAot
dm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp3aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290KiBzY29w
ZSkKK3ZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6d2lsbFNlbGVjdE92ZXIoRWxlbWVudCogc2hh
ZG93SG9zdCkKIHsKICAgICBpZiAoIW1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS0+c2hhZG93SG9zdCgpLT5maXJzdENo
aWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQorICAgIEFTU0VSVChzaGFk
b3dIb3N0KTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBzaGFkb3dIb3N0LT5maXJzdENoaWxkKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICBtX2NhbmRpZGF0ZXMu
YXBwZW5kKG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudFNlbGVjdG9yLmgKaW5kZXggYjBhMjg5MjAyNjllNGY2ZDMxMTgwMGI1YmNkYmFjZWU4
NTM4NzI2MC4uYmVmZTUzYzBkZjYyNWUzOGQwMTdhMTJkM2VmOWM2ZjI4ZjNhNTZiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAt
MTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuc2VsZWN0KEhUTUxDb250ZW50U2Vs
ZWN0aW9uTGlzdCopOwogICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kRm9yKE5vZGUqIGtl
eSkgY29uc3Q7CiAKLSAgICB2b2lkIHdpbGxTZWxlY3RPdmVyKFNoYWRvd1Jvb3QqKTsKKyAgICB2
b2lkIHdpbGxTZWxlY3RPdmVyKEVsZW1lbnQqIHNoYWRvd0hvc3QpOwogICAgIHZvaWQgZGlkU2Vs
ZWN0KCk7CiAgICAgYm9vbCBoYXNDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gIW1fY2FuZGlk
YXRlcy5pc0VtcHR5KCk7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127924</attachid>
            <date>2012-02-20 23:00:42 -0800</date>
            <delta_ts>2012-02-22 18:25:00 -0800</delta_ts>
            <desc>rebased to ToT</desc>
            <filename>bug-79008-20120221160040.patch</filename>
            <type>text/plain</type>
            <size>12965</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg1ODJlNGM2ZGY1YjUw
OWEyMjE1MWI1ZDI3MDBiMzFlMGJjZjdjOC4uMWE5ZTAwNTcxZGMzMjlkNjYwMTVmMjk5YTdlNjRj
NTBlM2NkZDNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDEyLTAyLTIwICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBNYWtlIFNoYWRvd1Jvb3RM
aXN0IG1hbmFnZSBhIG5vZGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkwMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmVzdWx0IG9mIG5vZGUgZGlzdHJpYnV0aW9ucyBp
cyBjdXJyZW50bHkgc3RvcmVkIGluCisgICAgICAgIFNoYWRvd1Jvb3QuIFRvIHN1cHBvcnQgbXVs
dGlwbGUgU2hhZG93Um9vdHMsIHN1Y2ggbm9kZSBkaXN0cmlidXRpb24KKyAgICAgICAgaW5mb3Jt
YXRpb24gc2hvdWxkIGJlIG1hbmFnZWQgaW4gb25lIHBsYWNlIHBlciBzaGFkb3cgaG9zdC4gTm93
CisgICAgICAgIFNoYWRvd1Jvb3RMaXN0IHRha2VzIHRoaXMgcmVzcG9uc2liaWxpdHkgb24gYmVo
YWxmIG9mIG93aW5nCisgICAgICAgIG11bHRpcGxlIFNoYWRvd1Jvb3RzLiBDbGllbnRzIHNob3Vs
ZCBhc2sgU2hhZG93Um9vdExpc3QgZm9yIHN1Y2gKKyAgICAgICAgaW5mb3JtYXRpb24sIG5vdCBm
b3IgZWFjaCBTaGFkb3dSb290LgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVo
YXZpb3IuCisKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToK
KyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dS
b290OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6YXR0YWNoKToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoU2hhZG93Um9vdCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RM
aXN0OjppbnNlcnRpb25Qb2ludEZvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd1Jvb3RMaXN0Ojppc1NlbGVjdG9yQWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3RMaXN0OjplbnN1cmVTZWxlY3Rvcik6CisgICAgICAgICogZG9tL1NoYWRv
d1Jvb3RMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1Jvb3RMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpoYXNTaGFkb3dSb290KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0Ojp5b3VuZ2VzdFNoYWRvd1Jvb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6Om9sZGVzdFNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdExpc3Q6OnNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3RMaXN0Ojpob3N0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVu
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRFbGVtZW50OjphdHRh
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRFbGVtZW50OjpkZXRhY2gpOgorICAg
ICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbnRlbnRTZWxlY3Rvcjo6d2lsbFNlbGVjdE92ZXIpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKEhUTUxDb250ZW50U2Vs
ZWN0b3IpOgorCisyMDEyLTAyLTIwICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4K
KwogICAgICAgICBVc2UgSW5zZXJ0aW5vblBvaW50IGluc3RlYWQgb2YgSFRNTENvbnRlbnRFbGVt
ZW50LgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3
NzgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
OWE1NWFiM2E0YTYzODUzMWEzOGY5ZWNhZTFkMzRiYTY2MmYzZDNiZS4uOWRiYWMxYTRiNGY0OGVh
MzZiNGI2Y2I0YzhhMTk1NDNjMDNhMzBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC02Nyw4ICs2Nyw5IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0
OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV92aXN1YWxQ
YXJlbnRTaGFkb3dSb290ID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvd1Jvb3RMaXN0KCktPnlv
dW5nZXN0U2hhZG93Um9vdCgpOwogCiAgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jv
b3QpIHsKLSAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50
U2hhZG93Um9vdC0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAm
JiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QtPmlzU2VsZWN0b3JBY3RpdmUoKSkgeworICAgICAg
ICAgICAgU2hhZG93Um9vdExpc3QqIHNoYWRvd1Jvb3RMaXN0ID0gbV92aXN1YWxQYXJlbnRTaGFk
b3dSb290LT5ob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCk7CisgICAgICAgICAgICBpZiAoKG1faW5z
ZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290TGlzdC0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkK
KyAgICAgICAgICAgICAgICAmJiBzaGFkb3dSb290TGlzdC0+aXNTZWxlY3RvckFjdGl2ZSgpKSB7
CiAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOwogICAgICAg
ICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmlu
Z0NvbnRleHQobV9pbnNlcnRpb25Qb2ludCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmlu
ZGV4IDg2YTcxNTFmNmFiYmIxMjg1N2FlZTUwNTc3ZThkODMyY2E4YjNkOTkuLjA2MjYwMjJlYzE1
NDliYjIzNGFhYTA4ZTlhZDA1Yzc0Mjk2N2RlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKQEAgLTEyOCw3ICsxMjgsOCBAQCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IFNoYWRvd1Jvb3Q6
OmNyZWF0ZShFbGVtZW50KiBlbGVtZW50LCBTaGFkb3dSb290Q3JlYXRpb25QdQogICAgIGVsZW1l
bnQtPnNldFNoYWRvd1Jvb3Qoc2hhZG93Um9vdCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAg
cmV0dXJuIDA7Ci0KKyAgICBBU1NFUlQoZWxlbWVudCA9PSBzaGFkb3dSb290LT5ob3N0KCkpOwor
ICAgIEFTU0VSVChlbGVtZW50LT5oYXNTaGFkb3dSb290KCkpOwogICAgIHJldHVybiBzaGFkb3dS
b290LnJlbGVhc2UoKTsKIH0KIApAQCAtMTgzLDE2ICsxODQsNiBAQCB2b2lkIFNoYWRvd1Jvb3Q6
OnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQogICAgICAgICBzaGFkb3dI
b3N0KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotSW5zZXJ0aW9uUG9pbnQqIFNoYWRv
d1Jvb3Q6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X3NlbGVjdG9yKQotICAgICAgICByZXR1cm4gMDsKLSAgICBIVE1MQ29udGVudFNlbGVjdGlvbiog
Zm91bmQgPSBtX3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOwotICAgIGlmICghZm91bmQpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKLX0KLQog
dm9pZCBTaGFkb3dSb290Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAgICBpZiAoIWhhc0Nv
bnRlbnRFbGVtZW50KCkpCkBAIC0yMDIsMTEgKzE5Myw2IEBAIHZvaWQgU2hhZG93Um9vdDo6aG9z
dENoaWxkcmVuQ2hhbmdlZCgpCiAgICAgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNo
YWRvdygpOwogfQogCi1ib29sIFNoYWRvd1Jvb3Q6OmlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3NlbGVjdG9yICYmIG1fc2VsZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKTsK
LX0KLQogYm9vbCBTaGFkb3dSb290OjpoYXNDb250ZW50RWxlbWVudCgpIGNvbnN0CiB7CiAgICAg
Zm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSh0
aGlzKSkgewpAQCAtMjMyLDEwICsyMTgsMTIgQEAgdm9pZCBTaGFkb3dSb290OjphdHRhY2goKQog
ICAgIC8vIENoaWxkcmVuIG9mIG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBpbgogICAg
IC8vIGVuc3VyZVNlbGVjdG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQKICAgICAv
LyBpdCBpcyBpbiBjbGVhbiBzdGF0ZS4KLSAgICBBU1NFUlQoIW1fc2VsZWN0b3IgfHwgIW1fc2Vs
ZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKSk7CisgICAgLy8gRklYTUU6IFRoaXMgYXNzZXJ0aW9uIGJy
ZWFrcyBpZiBtdWx0aXBsZSBzaGFkb3cgcm9vdHMgYXJlIGJlaW5nIGF0dGFjaGVkLgorICAgIC8v
IFNoYWRvd1Jvb3RMaXN0IHNob3VsZCBoYXZlIHJlc3BvbnNpYmlsaXR5IG9mIHNpZGUgZWZmZWN0
IG9mIHNlbGVjdG9yIGluIGF0dGFjaGluZy9kZXRhY2hpbmcuCisgICAgQVNTRVJUKCFob3N0KCkt
PnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9yKCkgfHwgIWhvc3QoKS0+c2hhZG93Um9vdExpc3Qo
KS0+c2VsZWN0b3IoKS0+aGFzQ2FuZGlkYXRlcygpKTsKICAgICBEb2N1bWVudEZyYWdtZW50Ojph
dHRhY2goKTsKLSAgICBpZiAobV9zZWxlY3RvcikKLSAgICAgICAgbV9zZWxlY3Rvci0+ZGlkU2Vs
ZWN0KCk7CisgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gaG9zdCgpLT5z
aGFkb3dSb290TGlzdCgpLT5zZWxlY3RvcigpKQorICAgICAgICBzZWxlY3Rvci0+ZGlkU2VsZWN0
KCk7CiB9CiAKIHZvaWQgU2hhZG93Um9vdDo6cmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3co
KQpAQCAtMjU3LDE4ICsyNDUsNCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnJlYXR0YWNoSG9zdENoaWxk
cmVuQW5kU2hhZG93KCkKICAgICB9CiB9CiAKLUhUTUxDb250ZW50U2VsZWN0b3IqIFNoYWRvd1Jv
b3Q6OnNlbGVjdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKLX0K
LQotSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdDo6ZW5zdXJlU2VsZWN0b3IoKQotewot
ICAgIGlmICghbV9zZWxlY3RvcikKLSAgICAgICAgbV9zZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBI
VE1MQ29udGVudFNlbGVjdG9yKCkpOwotICAgIG1fc2VsZWN0b3ItPndpbGxTZWxlY3RPdmVyKHRo
aXMpOwotICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOwotfQotCi0KLX0KK30gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBkNDc1ZjI0ODI1M2EwZDFhMDg1YjY3Nzg0
ZTcwZjY3YWQ5M2FjODdjLi41MGE3ZDExNWU5Yzg5NGRiZGVmMjA0YzRlZjQ0YWU1YmI1N2I1ZTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTYyLDcgKzYyLDYgQEAgcHVibGljOgogCiAg
ICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKICAgICB2
b2lkIGhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKLSAgICBib29sIGlzU2VsZWN0b3JBY3RpdmUoKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2b2lkIHJlYXR0YWNoSG9z
dENoaWxkcmVuQW5kU2hhZG93KCk7CkBAIC03Miw5ICs3MSw2IEBAIHB1YmxpYzoKIAogICAgIEVs
ZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVybiBzaGFkb3dIb3N0KCk7IH0KIAotICAgIEhUTUxD
b250ZW50U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rv
ciogZW5zdXJlU2VsZWN0b3IoKTsKLQogICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXJTaGFkb3dSb290
KCkgY29uc3QgeyByZXR1cm4gcHJldigpOyB9CiAgICAgU2hhZG93Um9vdCogb2xkZXJTaGFkb3dS
b290KCkgY29uc3QgeyByZXR1cm4gbmV4dCgpOyB9CiAKQEAgLTkyLDcgKzg4LDYgQEAgcHJpdmF0
ZToKICAgICBTaGFkb3dSb290KiBtX25leHQ7CiAgICAgYm9vbCBtX2FwcGx5QXV0aG9yU2hlZXRz
IDogMTsKICAgICBib29sIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgOiAxOwotICAgIE93blB0
cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOwogfTsKIAogaW5saW5lIHZvaWQgU2hh
ZG93Um9vdDo6Y2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwCmluZGV4IGQxOTU1YWFlZTYwMGYwNDcxMGUxYTRi
MzlmMzkwNmNlZTI1MTMyNDMuLjI2NDc2NGU3MmY0NzMwYmUwZmIyYjZhZmM5NzExMDMzNTJjMzEz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKQEAgLTEyMyw0ICsxMjQsMjcgQEAgdm9p
ZCBTaGFkb3dSb290TGlzdDo6ZGV0YWNoKCkKICAgICB9CiB9CiAKK0luc2VydGlvblBvaW50KiBT
aGFkb3dSb290TGlzdDo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fc2VsZWN0b3IpCisgICAgICAgIHJldHVybiAwOworICAgIEhUTUxDb250ZW50U2Vs
ZWN0aW9uKiBmb3VuZCA9IG1fc2VsZWN0b3ItPmZpbmRGb3Iobm9kZSk7CisgICAgaWYgKCFmb3Vu
ZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgp
OworfQorCitib29sIFNoYWRvd1Jvb3RMaXN0Ojppc1NlbGVjdG9yQWN0aXZlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBtX3NlbGVjdG9yLT5oYXNDYW5kaWRhdGVzKCk7CiB9
CisKK0hUTUxDb250ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3RMaXN0OjplbnN1cmVTZWxlY3Rvcigp
Cit7CisgICAgaWYgKCFtX3NlbGVjdG9yKQorICAgICAgICBtX3NlbGVjdG9yID0gYWRvcHRQdHIo
bmV3IEhUTUxDb250ZW50U2VsZWN0b3IoKSk7CisgICAgbV9zZWxlY3Rvci0+d2lsbFNlbGVjdE92
ZXIoaG9zdCgpKTsKKyAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmgKaW5kZXggZGJlYzc5NTQ2NDNlNjU4
YTM0MGU3NmE5MjEwYzA5ZWU5ODBmMDQ3OS4uMmI0OTg0OTNhODQ2N2VmYTlhMGY2MjM1MTM4YzZk
ZWQ0NDJiMDY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmgKQEAgLTI3LDIzICsy
NywyNyBAQAogI2lmbmRlZiBTaGFkb3dSb290TGlzdF9oCiAjZGVmaW5lIFNoYWRvd1Jvb3RMaXN0
X2gKIAorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2Vk
TGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYWRvd1Jvb3Q7CitjbGFzcyBOb2RlOwogY2xhc3MgRWxlbWVudDsKK2NsYXNz
IEhUTUxDb250ZW50RWxlbWVudDsKK2NsYXNzIEhUTUxDb250ZW50U2VsZWN0b3I7CiAKIGNsYXNz
IFNoYWRvd1Jvb3RMaXN0IHsKIHB1YmxpYzoKICAgICBTaGFkb3dSb290TGlzdCgpOwogICAgIH5T
aGFkb3dSb290TGlzdCgpOwogCi0gICAgYm9vbCBoYXNTaGFkb3dSb290KCk7Ci0gICAgU2hhZG93
Um9vdCogeW91bmdlc3RTaGFkb3dSb290KCk7Ci0gICAgU2hhZG93Um9vdCogb2xkZXN0U2hhZG93
Um9vdCgpOworICAgIGJvb2wgaGFzU2hhZG93Um9vdCgpIGNvbnN0OworICAgIFNoYWRvd1Jvb3Qq
IHlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0OworICAgIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRv
d1Jvb3QoKSBjb25zdDsKIAogICAgIHZvaWQgcHVzaFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopOwog
ICAgIFNoYWRvd1Jvb3QqIHBvcFNoYWRvd1Jvb3QoKTsKQEAgLTU5LDI2ICs2Myw0NyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhdHRhY2goKTsKICAgICB2b2lkIGRldGFjaCgpOwogCisgICAgSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKKworICAgIEhUTUxDb250
ZW50U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxlY3Rvciog
ZW5zdXJlU2VsZWN0b3IoKTsKKworICAgIGJvb2wgaXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Owor
CiBwcml2YXRlOgorICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdDsKKwogICAgIERvdWJseUxpbmtl
ZExpc3Q8U2hhZG93Um9vdD4gbV9zaGFkb3dSb290czsKKyAgICBPd25QdHI8SFRNTENvbnRlbnRT
ZWxlY3Rvcj4gbV9zZWxlY3RvcjsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFkb3dSb290
TGlzdCk7CiB9OwogCi1pbmxpbmUgYm9vbCBTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCgp
CitpbmxpbmUgYm9vbCBTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuICFtX3NoYWRvd1Jvb3RzLmlzRW1wdHkoKTsKIH0KIAotaW5saW5lIFNoYWRvd1Jv
b3QqIFNoYWRvd1Jvb3RMaXN0Ojp5b3VuZ2VzdFNoYWRvd1Jvb3QoKQoraW5saW5lIFNoYWRvd1Jv
b3QqIFNoYWRvd1Jvb3RMaXN0Ojp5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3NoYWRvd1Jvb3RzLmhlYWQoKTsKIH0KIAotaW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRv
d1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290KCkKK2lubGluZSBTaGFkb3dSb290KiBTaGFkb3dS
b290TGlzdDo6b2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2hhZG93
Um9vdHMudGFpbCgpOwogfQogCitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9v
dExpc3Q6OnNlbGVjdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsK
K30KKworaW5saW5lIEVsZW1lbnQqIFNoYWRvd1Jvb3RMaXN0Ojpob3N0KCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoaGFzU2hhZG93Um9vdCgpKTsKKyAgICByZXR1cm4geW91bmdlc3RTaGFkb3dSb290
KCktPmhvc3QoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAppbmRleCBkZTEyZTRj
OTVmOTgzYmY4ZjBhNTFmNWM5ZWIwYWVlODE2ZGZmZDAwLi4wNmJlMjMwMzg4ZWUxOTEwODUzN2M0
MzhiNjI1YTZhYWQwY2VkNzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Myw3ICs3NCw3IEBAIHZvaWQgSFRN
TENvbnRlbnRFbGVtZW50OjphdHRhY2goKQogCiAgICAgLy8gQmVmb3JlIGNhbGxpbmcgU3R5bGVk
RWxlbWVudDo6YXR0YWNoLCBzZWxlY3RvciBtdXN0IGJlIGNhbGN1bGF0ZWQuCiAgICAgaWYgKHJv
b3QpIHsKLSAgICAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5lbnN1
cmVTZWxlY3RvcigpOworICAgICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJv
b3QtPmhvc3QoKS0+c2hhZG93Um9vdExpc3QoKS0+ZW5zdXJlU2VsZWN0b3IoKTsKICAgICAgICAg
c2VsZWN0b3ItPnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMpOwogICAgICAgICBzZWxlY3Rvci0+c2Vs
ZWN0KHRoaXMsICZtX3NlbGVjdGlvbnMpOwogICAgIH0KQEAgLTg5LDcgKzkwLDcgQEAgdm9pZCBI
VE1MQ29udGVudEVsZW1lbnQ6OmF0dGFjaCgpCiB2b2lkIEhUTUxDb250ZW50RWxlbWVudDo6ZGV0
YWNoKCkKIHsKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93Um9vdChzaGFkb3dU
cmVlUm9vdE5vZGUoKSkpIHsKLSAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVj
dG9yID0gcm9vdC0+c2VsZWN0b3IoKSkKKyAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0b3Iq
IHNlbGVjdG9yID0gcm9vdC0+aG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5zZWxlY3RvcigpKQog
ICAgICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMpOwogCiAgICAgICAg
IC8vIFdoZW4gY29udGVudCBlbGVtZW50IGlzIGRldGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQg
YmUgcmVjcmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBmb3IKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKaW5kZXggMWNiZDIx
ODI2ZjliMDYwZDY4YTlhYjI5NTMxZGE2MjE5MTdjYzY5My4uNWMzMGZmNmUxNDM0ZTJhOTE3MWI1
YjE5MzA2NzdiZmRkNjc2OTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKQEAgLTE0NSwxMSArMTQ1LDEyIEBAIHZvaWQgSFRN
TENvbnRlbnRTZWxlY3Rvcjo6ZGlkU2VsZWN0KCkKICAgICBtX2NhbmRpZGF0ZXMuY2xlYXIoKTsK
IH0KIAotdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp3aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290
KiBzY29wZSkKK3ZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6d2lsbFNlbGVjdE92ZXIoRWxlbWVu
dCogc2hhZG93SG9zdCkKIHsKICAgICBpZiAoIW1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS0+c2hhZG93SG9zdCgpLT5m
aXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQorICAgIEFTU0VS
VChzaGFkb3dIb3N0KTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBzaGFkb3dIb3N0LT5maXJzdENo
aWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICBtX2NhbmRp
ZGF0ZXMuYXBwZW5kKG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudFNlbGVjdG9yLmgKaW5kZXggNjQyMTRjYmFiNzZlMzAwNTRkNzdkNzhkMmY4
ZWRiYzgxZWIxMzg2Ny4uMjliZDYxNjNmNTEyYWI0M2RmYjU3Zjc2MTNjN2FhNzdkMjZkOGY1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3Iu
aApAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuc2VsZWN0KEhUTUxDb250
ZW50U2VsZWN0aW9uTGlzdCopOwogICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmaW5kRm9yKE5v
ZGUqIGtleSkgY29uc3Q7CiAKLSAgICB2b2lkIHdpbGxTZWxlY3RPdmVyKFNoYWRvd1Jvb3QqKTsK
KyAgICB2b2lkIHdpbGxTZWxlY3RPdmVyKEVsZW1lbnQqIHNoYWRvd0hvc3QpOwogICAgIHZvaWQg
ZGlkU2VsZWN0KCk7CiAgICAgYm9vbCBoYXNDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gIW1f
Y2FuZGlkYXRlcy5pc0VtcHR5KCk7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128359</attachid>
            <date>2012-02-22 18:25:07 -0800</date>
            <delta_ts>2012-02-22 21:14:04 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79008-20120223112506.patch</filename>
            <type>text/plain</type>
            <size>15672</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRmNTIxOGQzY2UxNTE4
MWU2NzFmMDg0OWI4MDFjYmFlNDY4N2UyMC4uOWNmMWM5M2QyZmFhYTg1MjNhOTc2MmRmNWI3NjNj
MmM5ZmIxYTBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAyLTIwICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3RM
aXN0IG1hbmFnZSBhIG5vZGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkwMDgKKworICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCisKKyAgICAgICAgVGhlIHJlc3VsdCBvZiBub2RlIGRpc3RyaWJ1dGlvbnMg
aXMgY3VycmVudGx5IHN0b3JlZCBpbgorICAgICAgICBTaGFkb3dSb290LiBUbyBzdXBwb3J0IG11
bHRpcGxlIFNoYWRvd1Jvb3RzLCBzdWNoIG5vZGUgZGlzdHJpYnV0aW9uCisgICAgICAgIGluZm9y
bWF0aW9uIHNob3VsZCBiZSBtYW5hZ2VkIGluIG9uZSBwbGFjZSBwZXIgc2hhZG93IGhvc3QuIE5v
dworICAgICAgICBTaGFkb3dSb290TGlzdCB0YWtlcyB0aGlzIHJlc3BvbnNpYmlsaXR5IG9uIGJl
aGFsZiBvZiBvd2luZworICAgICAgICBtdWx0aXBsZSBTaGFkb3dSb290cy4gQ2xpZW50cyBzaG91
bGQgYXNrIFNoYWRvd1Jvb3RMaXN0IGZvciBzdWNoCisgICAgICAgIGluZm9ybWF0aW9uLCBub3Qg
Zm9yIGVhY2ggU2hhZG93Um9vdC4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6
CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93
Um9vdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAg
ICAqIGRvbS9TaGFkb3dSb290TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
TGlzdDo6aW5zZXJ0aW9uUG9pbnRGb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aXNTZWxlY3RvckFjdGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290TGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dSb290TGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290TGlzdDo6eW91bmdlc3RTaGFkb3dSb290KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3RMaXN0OjpzZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290TGlzdDo6aG9zdCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6YXR0
YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6ZGV0YWNoKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb250ZW50U2VsZWN0b3I6OndpbGxTZWxlY3RPdmVyKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmg6CisgICAgICAgIChIVE1MQ29udGVudFNl
bGVjdG9yKToKKwogMjAxMi0wMi0yMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29uc29sZSBkb2Vzbid0IHNob3cgcHJvcGVy
bHkgYXJyYXlzIGZyb20gd2hpY2ggdGFpbCB2YWx1ZXMgaGF2ZSBiZWVuIGRlbGV0ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCA5MWYxNTFmMDEyODUzN2JlZmYyMThkZGYwOWE3NmVlMzEwZGMyMWQxLi5k
OTMxZGViZjY2MjcxNjYwNTU1NzdiYWU2OWQyNDlhM2Q3MWFlNWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC04MDksOSArODA5LDkgQEAgYm9vbCBOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5nQm94KCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSBzdGF0aWMgU2hhZG93Um9vdCog
c2hhZG93Um9vdChOb2RlKiBub2RlKQoraW5saW5lIHN0YXRpYyBTaGFkb3dSb290KiBvbGRlc3RT
aGFkb3dSb290KE5vZGUqIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUo
KSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRvd1Jvb3QoKSA/IHRvRWxlbWVudChub2RlKS0+
c2hhZG93Um9vdExpc3QoKS0+eW91bmdlc3RTaGFkb3dSb290KCkgOiAwOworICAgIHJldHVybiBu
b2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5oYXNTaGFkb3dSb290KCkg
PyB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKSA6
IDA7CiB9CiAKIGlubGluZSB2b2lkIE5vZGU6OnNldFN0eWxlQ2hhbmdlKFN0eWxlQ2hhbmdlVHlw
ZSBjaGFuZ2VUeXBlKQpAQCAtMjI3MCwxMiArMjI3MCwxMSBAQCBzdGF0aWMgdm9pZCB0cmF2ZXJz
ZVRyZWVBbmRNYXJrKGNvbnN0IFN0cmluZyYgYmFzZUluZGVudCwgY29uc3QgTm9kZSogcm9vdE5v
ZGUsCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBpbmRlbnQudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIG5vZGUtPnNob3dOb2RlKCk7CiAKLSAgICAgICAgQ29udGFpbmVyTm9kZSogcm9v
dE5vZGUgPSBzaGFkb3dSb290KGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpKTsKLQotICAgICAgICBp
ZiAocm9vdE5vZGUpIHsKLSAgICAgICAgICAgIGluZGVudCArPSAiXHQiOwotICAgICAgICAgICAg
dHJhdmVyc2VUcmVlQW5kTWFyayhpbmRlbnQsIHJvb3ROb2RlLCBtYXJrZWROb2RlMSwgbWFya2Vk
TGFiZWwxLCBtYXJrZWROb2RlMiwgbWFya2VkTGFiZWwyKTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAobm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIGlmIChTaGFkb3dSb290KiB5
b3VuZ2VyU2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdChjb25zdF9jYXN0PE5vZGUqPihub2RlKSkt
PnlvdW5nZXJTaGFkb3dSb290KCkpCisgICAgICAgICAgICAgICAgdHJhdmVyc2VUcmVlQW5kTWFy
ayhpbmRlbnQgKyAiXHQiLCB5b3VuZ2VyU2hhZG93Um9vdCwgbWFya2VkTm9kZTEsIG1hcmtlZExh
YmVsMSwgbWFya2VkTm9kZTIsIG1hcmtlZExhYmVsMik7CisgICAgICAgIH0gZWxzZSBpZiAoU2hh
ZG93Um9vdCogcm9vdE5vZGUgPSBvbGRlc3RTaGFkb3dSb290KGNvbnN0X2Nhc3Q8Tm9kZSo+KG5v
ZGUpKSkKKyAgICAgICAgICAgIHRyYXZlcnNlVHJlZUFuZE1hcmsoaW5kZW50ICsgIlx0Iiwgcm9v
dE5vZGUsIG1hcmtlZE5vZGUxLCBtYXJrZWRMYWJlbDEsIG1hcmtlZE5vZGUyLCBtYXJrZWRMYWJl
bDIpOwogICAgIH0KIH0KIApAQCAtMjMyMSw4ICsyMzIwLDExIEBAIHN0YXRpYyB2b2lkIHNob3dT
dWJUcmVlQWNyb3NzRnJhbWUoTm9kZSogbm9kZSwgY29uc3QgTm9kZSogbWFya2VkTm9kZSwgY29u
c3QgU3RyCiAgICAgbm9kZS0+c2hvd05vZGUoKTsKICAgICBpZiAobm9kZS0+aXNGcmFtZU93bmVy
RWxlbWVudCgpKQogICAgICAgICBzaG93U3ViVHJlZUFjcm9zc0ZyYW1lKHN0YXRpY19jYXN0PEhU
TUxGcmFtZU93bmVyRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RG9jdW1lbnQoKSwgbWFya2VkTm9k
ZSwgaW5kZW50ICsgIlx0Iik7Ci0gICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvdyA9IHNoYWRvd1Jv
b3Qobm9kZSkpCi0gICAgICAgIHNob3dTdWJUcmVlQWNyb3NzRnJhbWUoc2hhZG93LCBtYXJrZWRO
b2RlLCBpbmRlbnQgKyAiXHQiKTsKKyAgICBpZiAobm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAg
ICAgICAgaWYgKFNoYWRvd1Jvb3QqIHlvdW5nZXJTaGFkb3dSb290ID0gdG9TaGFkb3dSb290KG5v
ZGUpLT55b3VuZ2VyU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgc2hvd1N1YlRyZWVBY3Jvc3NG
cmFtZSh5b3VuZ2VyU2hhZG93Um9vdCwgbWFya2VkTm9kZSwgaW5kZW50ICsgIlx0Iik7CisgICAg
fSBlbHNlIGlmIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gb2xkZXN0U2hhZG93Um9vdChub2Rl
KSkKKyAgICAgICAgc2hvd1N1YlRyZWVBY3Jvc3NGcmFtZShzaGFkb3dSb290LCBtYXJrZWROb2Rl
LCBpbmRlbnQgKyAiXHQiKTsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgc2hvd1N1
YlRyZWVBY3Jvc3NGcmFtZShjaGlsZCwgbWFya2VkTm9kZSwgaW5kZW50ICsgIlx0Iik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkNzFlM2Iy
MzRiYzc2NDJhNWU4NTIwYWIzMTM2NjJiZjk3ZTk2NDU1Li4yNDA4ZjJhN2VmNzY4YzYxY2NhYjQ5
N2I4MGNmNjJiMTMzODQyZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTY3LDggKzY3LDkgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVS
ZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX3Zpc3VhbFBhcmVudFNo
YWRvd1Jvb3QgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93Um9vdExpc3QoKS0+eW91bmdlc3RT
aGFkb3dSb290KCk7CiAKICAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdCkgewot
ICAgICAgICAgICAgaWYgKChtX2luc2VydGlvblBvaW50ID0gbV92aXN1YWxQYXJlbnRTaGFkb3dS
b290LT5pbnNlcnRpb25Qb2ludEZvcihtX25vZGUpKQotICAgICAgICAgICAgICAgICYmIG1fdmlz
dWFsUGFyZW50U2hhZG93Um9vdC0+aXNTZWxlY3RvckFjdGl2ZSgpKSB7CisgICAgICAgICAgICBT
aGFkb3dSb290TGlzdCogc2hhZG93Um9vdExpc3QgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3Qt
Pmhvc3QoKS0+c2hhZG93Um9vdExpc3QoKTsKKyAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Q
b2ludCA9IHNoYWRvd1Jvb3RMaXN0LT5pbnNlcnRpb25Qb2ludEZvcihtX25vZGUpKQorICAgICAg
ICAgICAgICAgICYmIHNoYWRvd1Jvb3RMaXN0LT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKICAgICAg
ICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRGlzdHJpYnV0ZWQ7CiAgICAgICAgICAgICAg
ICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4
dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggODZh
NzE1MWY2YWJiYjEyODU3YWVlNTA1NzdlOGQ4MzJjYThiM2Q5OS4uMDYyNjAyMmVjMTU0OWJiMjM0
YWFhMDhlOWFkMDVjNzQyOTY3ZGVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAt
MTI4LDcgKzEyOCw4IEBAIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRl
KEVsZW1lbnQqIGVsZW1lbnQsIFNoYWRvd1Jvb3RDcmVhdGlvblB1CiAgICAgZWxlbWVudC0+c2V0
U2hhZG93Um9vdChzaGFkb3dSb290LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4g
MDsKLQorICAgIEFTU0VSVChlbGVtZW50ID09IHNoYWRvd1Jvb3QtPmhvc3QoKSk7CisgICAgQVNT
RVJUKGVsZW1lbnQtPmhhc1NoYWRvd1Jvb3QoKSk7CiAgICAgcmV0dXJuIHNoYWRvd1Jvb3QucmVs
ZWFzZSgpOwogfQogCkBAIC0xODMsMTYgKzE4NCw2IEBAIHZvaWQgU2hhZG93Um9vdDo6c2V0TmVl
ZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCiAgICAgICAgIHNoYWRvd0hvc3QoKS0+
c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi1JbnNlcnRpb25Qb2ludCogU2hhZG93Um9vdDo6
aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBpZiAoIW1fc2VsZWN0
b3IpCi0gICAgICAgIHJldHVybiAwOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9
IG1fc2VsZWN0b3ItPmZpbmRGb3Iobm9kZSk7Ci0gICAgaWYgKCFmb3VuZCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgpOwotfQotCiB2b2lkIFNo
YWRvd1Jvb3Q6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQogewogICAgIGlmICghaGFzQ29udGVudEVs
ZW1lbnQoKSkKQEAgLTIwMiwxMSArMTkzLDYgQEAgdm9pZCBTaGFkb3dSb290Ojpob3N0Q2hpbGRy
ZW5DaGFuZ2VkKCkKICAgICBzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7
CiB9CiAKLWJvb2wgU2hhZG93Um9vdDo6aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwotfQotCiBi
b29sIFNoYWRvd1Jvb3Q6Omhhc0NvbnRlbnRFbGVtZW50KCkgY29uc3QKIHsKICAgICBmb3IgKE5v
ZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7
CkBAIC0yMzIsMTAgKzIxOCwxMiBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCiAgICAgLy8g
Q2hpbGRyZW4gb2YgbV9zZWxlY3RvciBpcyBwb3B1bGF0ZWQgbGF6aWx5IGluCiAgICAgLy8gZW5z
dXJlU2VsZWN0b3IoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdAogICAgIC8vIGl0IGlz
IGluIGNsZWFuIHN0YXRlLgotICAgIEFTU0VSVCghbV9zZWxlY3RvciB8fCAhbV9zZWxlY3Rvci0+
aGFzQ2FuZGlkYXRlcygpKTsKKyAgICAvLyBGSVhNRTogVGhpcyBhc3NlcnRpb24gYnJlYWtzIGlm
IG11bHRpcGxlIHNoYWRvdyByb290cyBhcmUgYmVpbmcgYXR0YWNoZWQuCisgICAgLy8gU2hhZG93
Um9vdExpc3Qgc2hvdWxkIGhhdmUgcmVzcG9uc2liaWxpdHkgb2Ygc2lkZSBlZmZlY3Qgb2Ygc2Vs
ZWN0b3IgaW4gYXR0YWNoaW5nL2RldGFjaGluZy4KKyAgICBBU1NFUlQoIWhvc3QoKS0+c2hhZG93
Um9vdExpc3QoKS0+c2VsZWN0b3IoKSB8fCAhaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5zZWxl
Y3RvcigpLT5oYXNDYW5kaWRhdGVzKCkpOwogICAgIERvY3VtZW50RnJhZ21lbnQ6OmF0dGFjaCgp
OwotICAgIGlmIChtX3NlbGVjdG9yKQotICAgICAgICBtX3NlbGVjdG9yLT5kaWRTZWxlY3QoKTsK
KyAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSBob3N0KCktPnNoYWRvd1Jv
b3RMaXN0KCktPnNlbGVjdG9yKCkpCisgICAgICAgIHNlbGVjdG9yLT5kaWRTZWxlY3QoKTsKIH0K
IAogdm9pZCBTaGFkb3dSb290OjpyZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCkBAIC0y
NTcsMTggKzI0NSw0IEBAIHZvaWQgU2hhZG93Um9vdDo6cmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKQogICAgIH0KIH0KIAotSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdDo6c2Vs
ZWN0b3IoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOwotfQotCi1IVE1M
Q29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290OjplbnN1cmVTZWxlY3RvcigpCi17Ci0gICAgaWYg
KCFtX3NlbGVjdG9yKQotICAgICAgICBtX3NlbGVjdG9yID0gYWRvcHRQdHIobmV3IEhUTUxDb250
ZW50U2VsZWN0b3IoKSk7Ci0gICAgbV9zZWxlY3Rvci0+d2lsbFNlbGVjdE92ZXIodGhpcyk7Ci0g
ICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Ci19Ci0KLQotfQorfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IGQ0NzVmMjQ4MjUzYTBkMWEwODViNjc3ODRlNzBmNjdh
ZDkzYWM4N2MuLmQzYmYzNTEyNjRjZmQzMmI2ZmUzYzE0NTQ3YjhhZmQ1MGViYzE2ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtNjIsNyArNjIsNiBAQCBwdWJsaWM6CiAKICAgICBJbnNl
cnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNvbnN0OwogICAgIHZvaWQgaG9z
dENoaWxkcmVuQ2hhbmdlZCgpOwotICAgIGJvb2wgaXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Owog
CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZvaWQgcmVhdHRhY2hIb3N0Q2hpbGRy
ZW5BbmRTaGFkb3coKTsKQEAgLTcyLDExICs3MSw4IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQq
IGhvc3QoKSBjb25zdCB7IHJldHVybiBzaGFkb3dIb3N0KCk7IH0KIAotICAgIEhUTUxDb250ZW50
U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3RvciogZW5z
dXJlU2VsZWN0b3IoKTsKLQotICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXJTaGFkb3dSb290KCkgY29u
c3QgeyByZXR1cm4gcHJldigpOyB9Ci0gICAgU2hhZG93Um9vdCogb2xkZXJTaGFkb3dSb290KCkg
Y29uc3QgeyByZXR1cm4gbmV4dCgpOyB9CisgICAgU2hhZG93Um9vdCogeW91bmdlclNoYWRvd1Jv
b3QoKSB7IHJldHVybiBwcmV2KCk7IH0KKyAgICBTaGFkb3dSb290KiBvbGRlclNoYWRvd1Jvb3Qo
KSB7IHJldHVybiBuZXh0KCk7IH0KIAogcHJpdmF0ZToKICAgICBTaGFkb3dSb290KERvY3VtZW50
Kik7CkBAIC05Miw3ICs4OCw2IEBAIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdCogbV9uZXh0Owog
ICAgIGJvb2wgbV9hcHBseUF1dGhvclNoZWV0cyA6IDE7CiAgICAgYm9vbCBtX25lZWRzUmVjYWxj
dWxhdGVDb250ZW50IDogMTsKLSAgICBPd25QdHI8SFRNTENvbnRlbnRTZWxlY3Rvcj4gbV9zZWxl
Y3RvcjsKIH07CiAKIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OmNsZWFyTmVlZHNSZWF0dGFjaEhv
c3RDaGlsZHJlbkFuZFNoYWRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcApp
bmRleCBkMTk1NWFhZWU2MDBmMDQ3MTBlMWE0YjM5ZjM5MDZjZWUyNTEzMjQzLi4yNjQ3NjRlNzJm
NDczMGJlMGZiMmI2YWZjOTcxMTAzMzUyYzMxMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290TGlzdC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgogCkBAIC0xMjMsNCArMTI0LDI3IEBAIHZvaWQgU2hhZG93Um9vdExpc3Q6OmRldGFjaCgpCiAg
ICAgfQogfQogCitJbnNlcnRpb25Qb2ludCogU2hhZG93Um9vdExpc3Q6Omluc2VydGlvblBvaW50
Rm9yKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NlbGVjdG9yKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3NlbGVjdG9yLT5m
aW5kRm9yKG5vZGUpOworICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKK30KKworYm9vbCBTaGFkb3dSb290TGlzdDo6
aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9z
ZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwogfQorCitIVE1MQ29udGVudFNlbGVjdG9yKiBTaGFk
b3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3IoKQoreworICAgIGlmICghbV9zZWxlY3RvcikKKyAg
ICAgICAgbV9zZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBIVE1MQ29udGVudFNlbGVjdG9yKCkpOwor
ICAgIG1fc2VsZWN0b3ItPndpbGxTZWxlY3RPdmVyKGhvc3QoKSk7CisgICAgcmV0dXJuIG1fc2Vs
ZWN0b3IuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
TGlzdC5oCmluZGV4IGRiZWM3OTU0NjQzZTY1OGEzNDBlNzZhOTIxMGMwOWVlOTgwZjA0NzkuLjJi
NDk4NDkzYTg0NjdlZmE5YTBmNjIzNTEzOGM2ZGVkNDQyYjA2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290TGlzdC5oCkBAIC0yNywyMyArMjcsMjcgQEAKICNpZm5kZWYgU2hhZG93Um9vdExp
c3RfaAogI2RlZmluZSBTaGFkb3dSb290TGlzdF9oCiAKKyNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAjaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFkb3dSb290OworY2xhc3Mg
Tm9kZTsKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7CitjbGFzcyBI
VE1MQ29udGVudFNlbGVjdG9yOwogCiBjbGFzcyBTaGFkb3dSb290TGlzdCB7CiBwdWJsaWM6CiAg
ICAgU2hhZG93Um9vdExpc3QoKTsKICAgICB+U2hhZG93Um9vdExpc3QoKTsKIAotICAgIGJvb2wg
aGFzU2hhZG93Um9vdCgpOwotICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXN0U2hhZG93Um9vdCgpOwot
ICAgIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3QoKTsKKyAgICBib29sIGhhc1NoYWRvd1Jv
b3QoKSBjb25zdDsKKyAgICBTaGFkb3dSb290KiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdDsK
KyAgICBTaGFkb3dSb290KiBvbGRlc3RTaGFkb3dSb290KCkgY29uc3Q7CiAKICAgICB2b2lkIHB1
c2hTaGFkb3dSb290KFNoYWRvd1Jvb3QqKTsKICAgICBTaGFkb3dSb290KiBwb3BTaGFkb3dSb290
KCk7CkBAIC01OSwyNiArNjMsNDcgQEAgcHVibGljOgogICAgIHZvaWQgYXR0YWNoKCk7CiAgICAg
dm9pZCBkZXRhY2goKTsKIAorICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihO
b2RlKikgY29uc3Q7CisKKyAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0
OworICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIGVuc3VyZVNlbGVjdG9yKCk7CisKKyAgICBib29s
IGlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdDsKKwogcHJpdmF0ZToKKyAgICBFbGVtZW50KiBob3N0
KCkgY29uc3Q7CisKICAgICBEb3VibHlMaW5rZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9v
dHM7CisgICAgT3duUHRyPEhUTUxDb250ZW50U2VsZWN0b3I+IG1fc2VsZWN0b3I7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2hhZG93Um9vdExpc3QpOwogfTsKIAotaW5saW5lIGJvb2wgU2hh
ZG93Um9vdExpc3Q6Omhhc1NoYWRvd1Jvb3QoKQoraW5saW5lIGJvb2wgU2hhZG93Um9vdExpc3Q6
Omhhc1NoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIHJldHVybiAhbV9zaGFkb3dSb290cy5pc0Vt
cHR5KCk7CiB9CiAKLWlubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6eW91bmdlc3RT
aGFkb3dSb290KCkKK2lubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6eW91bmdlc3RT
aGFkb3dSb290KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zaGFkb3dSb290cy5oZWFkKCk7CiB9
CiAKLWlubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6b2xkZXN0U2hhZG93Um9vdCgp
CitpbmxpbmUgU2hhZG93Um9vdCogU2hhZG93Um9vdExpc3Q6Om9sZGVzdFNoYWRvd1Jvb3QoKSBj
b25zdAogewogICAgIHJldHVybiBtX3NoYWRvd1Jvb3RzLnRhaWwoKTsKIH0KIAoraW5saW5lIEhU
TUxDb250ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3RMaXN0OjpzZWxlY3RvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Cit9CisKK2lubGluZSBFbGVtZW50KiBTaGFkb3dS
b290TGlzdDo6aG9zdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1NoYWRvd1Jvb3QoKSk7Cisg
ICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5ob3N0KCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50RWxlbWVudC5jcHAKaW5kZXggZGUxMmU0Yzk1Zjk4M2JmOGYwYTUxZjVjOWViMGFlZTgxNmRm
ZmQwMC4uMDZiZTIzMDM4OGVlMTkxMDg1MzdjNDM4YjYyNWE2YWFkMGNlZDc2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVk
TmFtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290TGlz
dC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNzMsNyArNzQsNyBAQCB2b2lkIEhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNoKCkKIAog
ICAgIC8vIEJlZm9yZSBjYWxsaW5nIFN0eWxlZEVsZW1lbnQ6OmF0dGFjaCwgc2VsZWN0b3IgbXVz
dCBiZSBjYWxjdWxhdGVkLgogICAgIGlmIChyb290KSB7Ci0gICAgICAgIEhUTUxDb250ZW50U2Vs
ZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+ZW5zdXJlU2VsZWN0b3IoKTsKKyAgICAgICAgSFRNTENv
bnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5ob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCkt
PmVuc3VyZVNlbGVjdG9yKCk7CiAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rp
b25zKTsKICAgICAgICAgc2VsZWN0b3ItPnNlbGVjdCh0aGlzLCAmbV9zZWxlY3Rpb25zKTsKICAg
ICB9CkBAIC04OSw3ICs5MCw3IEBAIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjphdHRhY2goKQog
dm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2RlKCkpKSB7Ci0gICAgICAgIGlm
IChIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnNlbGVjdG9yKCkpCisgICAg
ICAgIGlmIChIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmhvc3QoKS0+c2hh
ZG93Um9vdExpc3QoKS0+c2VsZWN0b3IoKSkKICAgICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVj
dCgmbV9zZWxlY3Rpb25zKTsKIAogICAgICAgICAvLyBXaGVuIGNvbnRlbnQgZWxlbWVudCBpcyBk
ZXRhY2hlZCwgc2hhZG93IHRyZWUgc2hvdWxkIGJlIHJlY3JlYXRlZCB0byByZS1jYWxjdWxhdGUg
c2VsZWN0b3IgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuY3BwCmluZGV4IDFjYmQyMTgyNmY5YjA2MGQ2OGE5YWIyOTUzMWRhNjIxOTE3
Y2M2OTMuLjVjMzBmZjZlMTQzNGUyYTkxNzFiNWIxOTMwNjc3YmZkZDY3Njk2N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwCkBA
IC0xNDUsMTEgKzE0NSwxMiBAQCB2b2lkIEhUTUxDb250ZW50U2VsZWN0b3I6OmRpZFNlbGVjdCgp
CiAgICAgbV9jYW5kaWRhdGVzLmNsZWFyKCk7CiB9CiAKLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rv
cjo6d2lsbFNlbGVjdE92ZXIoU2hhZG93Um9vdCogc2NvcGUpCit2b2lkIEhUTUxDb250ZW50U2Vs
ZWN0b3I6OndpbGxTZWxlY3RPdmVyKEVsZW1lbnQqIHNoYWRvd0hvc3QpCiB7CiAgICAgaWYgKCFt
X2NhbmRpZGF0ZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgZm9yIChOb2RlKiBu
b2RlID0gc2NvcGUtPnNoYWRvd0hvc3QoKS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9k
ZS0+bmV4dFNpYmxpbmcoKSkKKyAgICBBU1NFUlQoc2hhZG93SG9zdCk7CisgICAgZm9yIChOb2Rl
KiBub2RlID0gc2hhZG93SG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4
dFNpYmxpbmcoKSkKICAgICAgICAgbV9jYW5kaWRhdGVzLmFwcGVuZChub2RlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCmluZGV4
IDY0MjE0Y2JhYjc2ZTMwMDU0ZDc3ZDc4ZDJmOGVkYmM4MWViMTM4NjcuLjI5YmQ2MTYzZjUxMmFi
NDNkZmI1N2Y3NjEzYzdhYTc3ZDI2ZDhmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1bnNlbGVjdChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKICAgICBIVE1M
Q29udGVudFNlbGVjdGlvbiogZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0OwogCi0gICAgdm9pZCB3
aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290Kik7CisgICAgdm9pZCB3aWxsU2VsZWN0T3ZlcihFbGVt
ZW50KiBzaGFkb3dIb3N0KTsKICAgICB2b2lkIGRpZFNlbGVjdCgpOwogICAgIGJvb2wgaGFzQ2Fu
ZGlkYXRlcygpIGNvbnN0IHsgcmV0dXJuICFtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpOyB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>