<?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>207616</bug_id>
          
          <creation_ts>2020-02-12 00:29:58 -0800</creation_ts>
          <short_desc>[JSC] Compact StructureTransitionTable</short_desc>
          <delta_ts>2022-02-12 19:52:37 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tuomas.webkit</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1617885</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-12 00:29:58 -0800</bug_when>
    <thetext>[JSC] Compact StructureTransitionTable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617886</commentid>
    <comment_count>1</comment_count>
      <attachid>390495</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-12 00:31:10 -0800</bug_when>
    <thetext>Created attachment 390495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617887</commentid>
    <comment_count>2</comment_count>
      <attachid>390496</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-12 00:33:39 -0800</bug_when>
    <thetext>Created attachment 390496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617911</commentid>
    <comment_count>3</comment_count>
      <attachid>390496</attachid>
    <who name="Tuomas Karkkainen">tuomas.webkit</who>
    <bug_when>2020-02-12 02:27:48 -0800</bug_when>
    <thetext>Comment on attachment 390496
Patch

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

&gt; Source/JavaScriptCore/runtime/Structure.cpp:130
&gt; +    map()-&gt;set(StructureTransitionTable::Hash::Key(structure-&gt;m_transitionPropertyName.get(), +structure-&gt;transitionPropertyAttributes(), !structure-&gt;isPropertyDeletionTransition()), structure);

is the + needed on +structure-&gt;transitionPropertyAttributes() and if it isn&apos;t, should the comment above be removed? (I was able to build jsc with your patch but with the + removed.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618122</commentid>
    <comment_count>4</comment_count>
      <attachid>390496</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-02-12 11:09:33 -0800</bug_when>
    <thetext>Comment on attachment 390496
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Some of StructureTransitionTable are shown as very large HashMap and we can compact it by enconding key.

/enconding/encoding/

&gt;&gt; Source/JavaScriptCore/runtime/Structure.cpp:130
&gt;&gt; +    map()-&gt;set(StructureTransitionTable::Hash::Key(structure-&gt;m_transitionPropertyName.get(), +structure-&gt;transitionPropertyAttributes(), !structure-&gt;isPropertyDeletionTransition()), structure);
&gt; 
&gt; is the + needed on +structure-&gt;transitionPropertyAttributes() and if it isn&apos;t, should the comment above be removed? (I was able to build jsc with your patch but with the + removed.)

I think this + is just accidental and can be removed.

&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:149
&gt; +        // using Key = std::tuple&lt;UniquedStringImpl*, unsigned, bool&gt;;

Can you make this std::tuple&lt;UniquedStringImpl*, unsigned transitionPropertyAttributes, bool isAddition&gt; to better document the intended purpose of those parameters?

&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:153
&gt; +            static constexpr uintptr_t stringMask = ((1ULL &lt;&lt; 48) - 1) &amp; (~1ULL);
&gt; +            static constexpr uintptr_t isAdditionMask = 1ULL;

Let&apos;s swap these 2 and change stringMask to be:
    static constexpr uintptr_t stringMask = ((1ULL &lt;&lt; 48) - 1) &amp; (~isAdditionMask);

This helps document that the lowest bit is where we store the isAddition flag.

&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:160
&gt; +            // Higher 16 bits for TransitionPropertyAttributes.
&gt; +            // Lower 1 bit for isAddition flag.

/Higher 16 bits for/Highest 16 bits are for/
/Lower 1 bit for/Lowest 1 bit is for/

&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:161
&gt; +            // Remaiing bits for UniquedStringImpl*.

/Remaiing bits for/Remaining bits are for/

&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:192
&gt; +            uintptr_t m_encodedData { 0 };

Let&apos;s make this private.  If needed, make struct Hash a friend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618123</commentid>
    <comment_count>5</comment_count>
      <attachid>390496</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-02-12 11:12:18 -0800</bug_when>
    <thetext>Comment on attachment 390496
Patch

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

&gt; Source/JavaScriptCore/runtime/Structure.h:681
&gt; +    static constexpr uint32_t s_##lowerName##Width = width;\

Let&apos;s make this BitWidth instead of Width.  I think that makes it clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618161</commentid>
    <comment_count>6</comment_count>
      <attachid>390496</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-12 12:24:28 -0800</bug_when>
    <thetext>Comment on attachment 390496
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Some of StructureTransitionTable are shown as very large HashMap and we can compact it by enconding key.
&gt; 
&gt; /enconding/encoding/

Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/Structure.cpp:130
&gt;&gt;&gt; +    map()-&gt;set(StructureTransitionTable::Hash::Key(structure-&gt;m_transitionPropertyName.get(), +structure-&gt;transitionPropertyAttributes(), !structure-&gt;isPropertyDeletionTransition()), structure);
&gt;&gt; 
&gt;&gt; is the + needed on +structure-&gt;transitionPropertyAttributes() and if it isn&apos;t, should the comment above be removed? (I was able to build jsc with your patch but with the + removed.)
&gt; 
&gt; I think this + is just accidental and can be removed.

Yeah, we can remove it. Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/Structure.h:681
&gt;&gt; +    static constexpr uint32_t s_##lowerName##Width = width;\
&gt; 
&gt; Let&apos;s make this BitWidth instead of Width.  I think that makes it clearer.

I think `bitWidthOfXXX` is better here since this typename can include XXX typename without uncapitalizing it.
Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:149
&gt;&gt; +        // using Key = std::tuple&lt;UniquedStringImpl*, unsigned, bool&gt;;
&gt; 
&gt; Can you make this std::tuple&lt;UniquedStringImpl*, unsigned transitionPropertyAttributes, bool isAddition&gt; to better document the intended purpose of those parameters?

Added.

&gt;&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:153
&gt;&gt; +            static constexpr uintptr_t isAdditionMask = 1ULL;
&gt; 
&gt; Let&apos;s swap these 2 and change stringMask to be:
&gt;     static constexpr uintptr_t stringMask = ((1ULL &lt;&lt; 48) - 1) &amp; (~isAdditionMask);
&gt; 
&gt; This helps document that the lowest bit is where we store the isAddition flag.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:160
&gt;&gt; +            // Lower 1 bit for isAddition flag.
&gt; 
&gt; /Higher 16 bits for/Highest 16 bits are for/
&gt; /Lower 1 bit for/Lowest 1 bit is for/

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:161
&gt;&gt; +            // Remaiing bits for UniquedStringImpl*.
&gt; 
&gt; /Remaiing bits for/Remaining bits are for/

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/StructureTransitionTable.h:192
&gt;&gt; +            uintptr_t m_encodedData { 0 };
&gt; 
&gt; Let&apos;s make this private.  If needed, make struct Hash a friend.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618163</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-12 12:32:37 -0800</bug_when>
    <thetext>Committed r256468: &lt;https://trac.webkit.org/changeset/256468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618164</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-12 12:33:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/59396999&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840825</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-12 19:52:37 -0800</bug_when>
    <thetext>*** Bug 186728 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390495</attachid>
            <date>2020-02-12 00:31:10 -0800</date>
            <delta_ts>2020-02-12 00:33:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207616-20200212003110.patch</filename>
            <type>text/plain</type>
            <size>9173</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzI2YjJhZGYwNWQxYWY1ODlmMmExOGEwMmJmMjQ0ZGM0ZDE1MTM1Li45MzFhYzNjNTM4NDQ4MTkw
OTBiMjhjNGU0Y2QxMjg3N2VkMzM1Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMC0wMi0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIENvbXBhY3QgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIG9mIFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZSBhcmUgc2hvd24gYXMgdmVyeSBsYXJnZSBIYXNoTWFwIGFuZCB3
ZSBjYW4gY29tcGFjdCBpdCBieSBlbmNvbmRpbmcga2V5LgorICAgICAgICBXZSBsZXZlcmFnZSA0
OGJpdCBwb2ludGVycyBhbmQgOGJ5dGUgYWxpZ25tZW50IG9mIFVuaXF1ZWRTdHJpbmdJbXBsKiB0
byBlbmNvZGUgb3RoZXIgcGFyYW1ldGVycyBpbnRvIGl0LgorCisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmNv
bnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpn
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZCk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6Okhhc2g6OktleTo6S2V5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlOjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpIYXNoOjpLZXk6OmltcGwgY29uc3Qp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6OktleTo6aXNB
ZGRpdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6
SGFzaDo6S2V5OjphdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlOjpIYXNoOjpLZXk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6OktleTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6ZXF1YWwpOgorCiAyMDIwLTAyLTEwICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBQbGFjYXRlIGV4Y2VwdGlv
biBjaGVjayB2YWxpZGF0b3IgaW4gR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KCkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAxOTc3NTllYTc5
Y2I4N2UyMTQwM2E4M2NmODM3MDVkZDJjZTE1NDc3Li4yOGMxYzJkZjRlYTIxYWI1YjkxYmNkMGZj
NTAxMzM2OTZjMzdhNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6
OmNvbnRhaW5zKFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAsIHVuc2lnbmVkIGF0dHJpYnUKICAgICAg
ICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gc2luZ2xlVHJhbnNpdGlvbigpOwogICAgICAgICBy
ZXR1cm4gdHJhbnNpdGlvbiAmJiB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUg
PT0gcmVwICYmIHRyYW5zaXRpb24tPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSA9PSBh
dHRyaWJ1dGVzICYmIHRyYW5zaXRpb24tPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSA9
PSAhaXNBZGRpdGlvbjsKICAgICB9Ci0gICAgcmV0dXJuIG1hcCgpLT5nZXQoc3RkOjptYWtlX3R1
cGxlKHJlcCwgYXR0cmlidXRlcywgaXNBZGRpdGlvbikpOworICAgIHJldHVybiBtYXAoKS0+Z2V0
KFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6S2V5KHJlcCwgYXR0cmlidXRlcywgaXNBZGRpdGlv
bikpOwogfQogCiBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Omdl
dChVbmlxdWVkU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29sIGlzQWRk
aXRpb24pIGNvbnN0CkBAIC0xMDIsNyArMTAyLDcgQEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlOjpnZXQoVW5pcXVlZFN0cmluZ0ltcGwqIHJlcCwgdW5zaWduZWQK
ICAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gc2luZ2xlVHJhbnNpdGlvbigpOwogICAg
ICAgICByZXR1cm4gKHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+bV90cmFuc2l0aW9uUHJvcGVy
dHlOYW1lID09IHJlcCAmJiB0cmFuc2l0aW9uLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVz
KCkgPT0gYXR0cmlidXRlcyAmJiB0cmFuc2l0aW9uLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0
aW9uKCkgPT0gIWlzQWRkaXRpb24pID8gdHJhbnNpdGlvbiA6IDA7CiAgICAgfQotICAgIHJldHVy
biBtYXAoKS0+Z2V0KHN0ZDo6bWFrZV90dXBsZShyZXAsIGF0dHJpYnV0ZXMsIGlzQWRkaXRpb24p
KTsKKyAgICByZXR1cm4gbWFwKCktPmdldChTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OktleShy
ZXAsIGF0dHJpYnV0ZXMsIGlzQWRkaXRpb24pKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGU6OmFkZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTI3LDcgKzEy
Nyw3IEBAIHZvaWQgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICAvLyBOZXdlciB2ZXJzaW9ucyBvZiB0aGUgU1RMIGhhdmUgYW4g
c3RkOjptYWtlX3BhaXIgZnVuY3Rpb24gdGhhdCB0YWtlcyBydmFsdWUgcmVmZXJlbmNlcy4KICAg
ICAvLyBXaGVuIGVpdGhlciBvZiB0aGUgcGFyYW1ldGVycyBhcmUgYml0ZmllbGRzLCB0aGUgQysr
IGNvbXBpbGVyIHdpbGwgdHJ5IHRvIGJpbmQgdGhlbSBhcyBsdmFsdWVzLCB3aGljaCBpcyBpbnZh
bGlkLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB1c2UgdW5hcnkgIisiIHRvIG1ha2UgdGhlIHBhcmFt
ZXRlciBhbiBydmFsdWUuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01OTI2MSBmb3IgbW9yZSBkZXRhaWxzCi0gICAgbWFwKCktPnNldChzdGQ6Om1h
a2VfdHVwbGUoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUuZ2V0KCksICtzdHJ1
Y3R1cmUtPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSwgIXN0cnVjdHVyZS0+aXNQcm9w
ZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKSwgc3RydWN0dXJlKTsKKyAgICBtYXAoKS0+c2V0KFN0
cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6S2V5KHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uUHJvcGVy
dHlOYW1lLmdldCgpLCArc3RydWN0dXJlLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCks
ICFzdHJ1Y3R1cmUtPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSksIHN0cnVjdHVyZSk7
CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlzdGljcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGIzZGIzODU2ZTM4MTFkMGVmMWExNjUzZmQ3
YWMxYjhhZmQyMjJiZWUuLjkwODg2YjE2ZjBiMzAyOGFlNzEyYjFiMDBkYmJjMWE4ZWZlNGY3MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC02NzgsNiAr
Njc4LDcgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAjZGVmaW5l
IERFRklORV9CSVRGSUVMRCh0eXBlLCBsb3dlck5hbWUsIHVwcGVyTmFtZSwgd2lkdGgsIG9mZnNl
dCkgXAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc18jI2xvd2VyTmFtZSMjU2hpZnQg
PSBvZmZzZXQ7XAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc18jI2xvd2VyTmFtZSMj
TWFzayA9ICgoMSA8PCAod2lkdGggLSAxKSkgfCAoKDEgPDwgKHdpZHRoIC0gMSkpIC0gMSkpO1wK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfIyNsb3dlck5hbWUjI1dpZHRoID0gd2lk
dGg7XAogICAgIHR5cGUgbG93ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dHlw
ZT4oKG1fYml0RmllbGQgPj4gb2Zmc2V0KSAmIHNfIyNsb3dlck5hbWUjI01hc2spOyB9XAogICAg
IHZvaWQgc2V0IyN1cHBlck5hbWUodHlwZSBuZXdWYWx1ZSkgXAogICAgIHtcCkBAIC03MDMsNiAr
NzA0LDggQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgREVG
SU5FX0JJVEZJRUxEKGJvb2wsIGhhc1VuZGVyc2NvcmVQcm90b1Byb3BlcnR5RXhjbHVkaW5nT3Jp
Z2luYWxQcm90bywgSGFzVW5kZXJzY29yZVByb3RvUHJvcGVydHlFeGNsdWRpbmdPcmlnaW5hbFBy
b3RvLCAxLCAyOSk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGlzUHJvcGVydHlEZWxldGlv
blRyYW5zaXRpb24sIElzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24sIDEsIDMwKTsKIAorICAg
IHN0YXRpY19hc3NlcnQoc190cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzV2lkdGggPD0gc2l6
ZW9mKFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMpICogOCk7CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAppbmRl
eCBkZmI5MTEwNTMwZmNlNzYwOWI4YWFkMDQ2NWVjMWQzMDI4ZGIxOTExLi5kOWM5MjYzMWIyZDE2
MjE4MTdlYmEyMWJjOWUyN2Y4OTRiZjg1MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaApAQCAtNTIsNiAr
NTIsNyBAQCBlbnVtIGNsYXNzIE5vblByb3BlcnR5VHJhbnNpdGlvbiA6IHVuc2lnbmVkIHsKICAg
ICBTZWFsLAogICAgIEZyZWV6ZQogfTsKK3VzaW5nIFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0
ZXMgPSB1aW50MTZfdDsKIAogaW5saW5lIHVuc2lnbmVkIHRvQXR0cmlidXRlcyhOb25Qcm9wZXJ0
eVRyYW5zaXRpb24gdHJhbnNpdGlvbikKIHsKQEAgLTE0Myw4ICsxNDQsNzEgQEAgY2xhc3MgU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlIHsKICAgICBzdGF0aWMgY29uc3RleHByIGludHB0cl90IFVz
aW5nU2luZ2xlU2xvdEZsYWcgPSAxOwogCiAgICAgCisjaWYgQ1BVKEFERFJFU1M2NCkKICAgICBz
dHJ1Y3QgSGFzaCB7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxVbmlxdWVkU3RyaW5nSW1w
bCosIHVuc2lnbmVkLCBib29sPiBLZXk7CisgICAgICAgIC8vIHVzaW5nIEtleSA9IHN0ZDo6dHVw
bGU8VW5pcXVlZFN0cmluZ0ltcGwqLCB1bnNpZ25lZCwgYm9vbD47CisgICAgICAgIHN0cnVjdCBL
ZXkgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChXVEZfT1NfQ09OU1RBTlRfRUZGRUNUSVZF
X0FERFJFU1NfV0lEVEggPD0gNDgpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
cHRyX3Qgc3RyaW5nTWFzayA9ICgoMVVMTCA8PCA0OCkgLSAxKSAmICh+MVVMTCk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBpc0FkZGl0aW9uTWFzayA9IDFVTEw7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGF0dHJpYnV0ZXNTaGlmdCA9IDQ4
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgaGFzaFRhYmxlRGVsZXRl
ZFZhbHVlID0gMHgyOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVHJhbnNpdGlv
blByb3BlcnR5QXR0cmlidXRlcykgKiA4IDw9IDE2KTsKKyAgICAgICAgICAgIHN0YXRpY19hc3Nl
cnQoaGFzaFRhYmxlRGVsZXRlZFZhbHVlIDwgYWxpZ25vZihVbmlxdWVkU3RyaW5nSW1wbCkpOwor
CisgICAgICAgICAgICAvLyBIaWdoZXIgMTYgYml0cyBmb3IgVHJhbnNpdGlvblByb3BlcnR5QXR0
cmlidXRlcy4KKyAgICAgICAgICAgIC8vIExvd2VyIDEgYml0IGZvciBpc0FkZGl0aW9uIGZsYWcu
CisgICAgICAgICAgICAvLyBSZW1haWluZyBiaXRzIGZvciBVbmlxdWVkU3RyaW5nSW1wbCouCisg
ICAgICAgICAgICBLZXkoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIGJvb2wgaXNBZGRpdGlvbikKKyAgICAgICAgICAgICAgICA6IG1fZW5jb2RlZERhdGEoYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW1wbCkgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihhdHRy
aWJ1dGVzKSA8PCBhdHRyaWJ1dGVzU2hpZnQpIHwgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaXNB
ZGRpdGlvbikgJiBpc0FkZGl0aW9uTWFzaykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGltcGwgPT0gdGhpcy0+aW1wbCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
aXNBZGRpdGlvbiA9PSB0aGlzLT5pc0FkZGl0aW9uKCkpOworICAgICAgICAgICAgICAgIEFTU0VS
VChhdHRyaWJ1dGVzID09IHRoaXMtPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIEtleSgpID0gZGVmYXVsdDsKKworICAgICAgICAgICAgS2V5KFdURjo6SGFzaFRh
YmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6IG1fZW5jb2RlZERhdGEoaGFz
aFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICAgICAgeyB9CisKKyAgICAgICAgICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWREYXRhID09
IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZTsgfQorCisgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1w
bCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCo+
KG1fZW5jb2RlZERhdGEgJiBzdHJpbmdNYXNrKTsgfQorICAgICAgICAgICAgYm9vbCBpc0FkZGl0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkRGF0YSAmIGlzQWRkaXRpb25NYXNrOyB9Cisg
ICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVk
RGF0YSA+PiBhdHRyaWJ1dGVzU2hpZnQ7IH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYS5tX2VuY29kZWREYXRhID09IGIubV9lbmNvZGVkRGF0YTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBL
ZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gYS5tX2VuY29kZWREYXRhICE9IGIubV9lbmNvZGVkRGF0YTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdWludHB0cl90IG1fZW5jb2RlZERhdGEgeyAwIH07CisgICAgICAgIH07Cisg
ICAgICAgIHVzaW5nIEtleVRyYWl0cyA9IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxLZXk+OworCisg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtleSYgcCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEludEhhc2g8dWludHB0cl90Pjo6aGFzaChwLm1fZW5jb2RlZERhdGEp
OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS2V5JiBhLCBj
b25zdCBLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGI7CisgICAg
ICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSB0cnVlOworICAgIH07CisjZWxzZQorICAgIHN0cnVjdCBIYXNoIHsKKyAg
ICAgICAgdXNpbmcgS2V5ID0gc3RkOjp0dXBsZTxVbmlxdWVkU3RyaW5nSW1wbCosIHVuc2lnbmVk
LCBib29sPjsKKyAgICAgICAgdXNpbmcgS2V5VHJhaXRzID0gSGFzaFRyYWl0czxLZXk+OwogICAg
ICAgICAKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS2V5JiBwKQogICAgICAg
ICB7CkBAIC0xNTgsOCArMjIyLDkgQEAgY2xhc3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlIHsK
IAogICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSB0cnVlOwogICAgIH07CisjZW5kaWYKIAotICAgIHR5cGVkZWYgV2Vha0dDTWFwPEhh
c2g6OktleSwgU3RydWN0dXJlLCBIYXNoPiBUcmFuc2l0aW9uTWFwOworICAgIHR5cGVkZWYgV2Vh
a0dDTWFwPEhhc2g6OktleSwgU3RydWN0dXJlLCBIYXNoLCBIYXNoOjpLZXlUcmFpdHM+IFRyYW5z
aXRpb25NYXA7CiAKIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390496</attachid>
            <date>2020-02-12 00:33:39 -0800</date>
            <delta_ts>2020-02-12 11:09:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207616-20200212003338.patch</filename>
            <type>text/plain</type>
            <size>9191</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzI2YjJhZGYwNWQxYWY1ODlmMmExOGEwMmJmMjQ0ZGM0ZDE1MTM1Li45MzFhYzNjNTM4NDQ4MTkw
OTBiMjhjNGU0Y2QxMjg3N2VkMzM1Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMC0wMi0xMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIENvbXBhY3QgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2MTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21lIG9mIFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZSBhcmUgc2hvd24gYXMgdmVyeSBsYXJnZSBIYXNoTWFwIGFuZCB3
ZSBjYW4gY29tcGFjdCBpdCBieSBlbmNvbmRpbmcga2V5LgorICAgICAgICBXZSBsZXZlcmFnZSA0
OGJpdCBwb2ludGVycyBhbmQgOGJ5dGUgYWxpZ25tZW50IG9mIFVuaXF1ZWRTdHJpbmdJbXBsKiB0
byBlbmNvZGUgb3RoZXIgcGFyYW1ldGVycyBpbnRvIGl0LgorCisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmNv
bnRhaW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpn
ZXQgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZCk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGU6Okhhc2g6OktleTo6S2V5KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlOjpIYXNoOjpLZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpIYXNoOjpLZXk6OmltcGwgY29uc3Qp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6OktleTo6aXNB
ZGRpdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6
SGFzaDo6S2V5OjphdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlOjpIYXNoOjpLZXk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6OktleTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6ZXF1YWwpOgorCiAyMDIwLTAyLTEwICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBQbGFjYXRlIGV4Y2VwdGlv
biBjaGVjayB2YWxpZGF0b3IgaW4gR2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6cHV0KCkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAxOTc3NTllYTc5
Y2I4N2UyMTQwM2E4M2NmODM3MDVkZDJjZTE1NDc3Li43Y2E0YjRlNjY2N2UzNmQ3YmE0ODdiYmEy
MGJmNTViZDMzMzlmNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6
OmNvbnRhaW5zKFVuaXF1ZWRTdHJpbmdJbXBsKiByZXAsIHVuc2lnbmVkIGF0dHJpYnUKICAgICAg
ICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gc2luZ2xlVHJhbnNpdGlvbigpOwogICAgICAgICBy
ZXR1cm4gdHJhbnNpdGlvbiAmJiB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUg
PT0gcmVwICYmIHRyYW5zaXRpb24tPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSA9PSBh
dHRyaWJ1dGVzICYmIHRyYW5zaXRpb24tPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSA9
PSAhaXNBZGRpdGlvbjsKICAgICB9Ci0gICAgcmV0dXJuIG1hcCgpLT5nZXQoc3RkOjptYWtlX3R1
cGxlKHJlcCwgYXR0cmlidXRlcywgaXNBZGRpdGlvbikpOworICAgIHJldHVybiBtYXAoKS0+Z2V0
KFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6S2V5KHJlcCwgYXR0cmlidXRlcywgaXNB
ZGRpdGlvbikpOwogfQogCiBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGU6OmdldChVbmlxdWVkU3RyaW5nSW1wbCogcmVwLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBib29s
IGlzQWRkaXRpb24pIGNvbnN0CkBAIC0xMDIsNyArMTAyLDcgQEAgaW5saW5lIFN0cnVjdHVyZSog
U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjpnZXQoVW5pcXVlZFN0cmluZ0ltcGwqIHJlcCwgdW5z
aWduZWQKICAgICAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gc2luZ2xlVHJhbnNpdGlvbigp
OwogICAgICAgICByZXR1cm4gKHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+bV90cmFuc2l0aW9u
UHJvcGVydHlOYW1lID09IHJlcCAmJiB0cmFuc2l0aW9uLT50cmFuc2l0aW9uUHJvcGVydHlBdHRy
aWJ1dGVzKCkgPT0gYXR0cmlidXRlcyAmJiB0cmFuc2l0aW9uLT5pc1Byb3BlcnR5RGVsZXRpb25U
cmFuc2l0aW9uKCkgPT0gIWlzQWRkaXRpb24pID8gdHJhbnNpdGlvbiA6IDA7CiAgICAgfQotICAg
IHJldHVybiBtYXAoKS0+Z2V0KHN0ZDo6bWFrZV90dXBsZShyZXAsIGF0dHJpYnV0ZXMsIGlzQWRk
aXRpb24pKTsKKyAgICByZXR1cm4gbWFwKCktPmdldChTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6
Okhhc2g6OktleShyZXAsIGF0dHJpYnV0ZXMsIGlzQWRkaXRpb24pKTsKIH0KIAogdm9pZCBTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGU6OmFkZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpA
QCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjphZGQoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAvLyBOZXdlciB2ZXJzaW9ucyBvZiB0aGUg
U1RMIGhhdmUgYW4gc3RkOjptYWtlX3BhaXIgZnVuY3Rpb24gdGhhdCB0YWtlcyBydmFsdWUgcmVm
ZXJlbmNlcy4KICAgICAvLyBXaGVuIGVpdGhlciBvZiB0aGUgcGFyYW1ldGVycyBhcmUgYml0Zmll
bGRzLCB0aGUgQysrIGNvbXBpbGVyIHdpbGwgdHJ5IHRvIGJpbmQgdGhlbSBhcyBsdmFsdWVzLCB3
aGljaCBpcyBpbnZhbGlkLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCB1c2UgdW5hcnkgIisiIHRvIG1h
a2UgdGhlIHBhcmFtZXRlciBhbiBydmFsdWUuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTI2MSBmb3IgbW9yZSBkZXRhaWxzCi0gICAgbWFwKCkt
PnNldChzdGQ6Om1ha2VfdHVwbGUoc3RydWN0dXJlLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUu
Z2V0KCksICtzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSwgIXN0cnVj
dHVyZS0+aXNQcm9wZXJ0eURlbGV0aW9uVHJhbnNpdGlvbigpKSwgc3RydWN0dXJlKTsKKyAgICBt
YXAoKS0+c2V0KFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6SGFzaDo6S2V5KHN0cnVjdHVyZS0+
bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lLmdldCgpLCArc3RydWN0dXJlLT50cmFuc2l0aW9uUHJv
cGVydHlBdHRyaWJ1dGVzKCksICFzdHJ1Y3R1cmUtPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRp
b24oKSksIHN0cnVjdHVyZSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlzdGljcygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4IGIzZGIzODU2
ZTM4MTFkMGVmMWExNjUzZmQ3YWMxYjhhZmQyMjJiZWUuLjkwODg2YjE2ZjBiMzAyOGFlNzEyYjFi
MDBkYmJjMWE4ZWZlNGY3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCkBAIC02NzgsNiArNjc4LDcgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGlj
IEpTQ2VsbCB7CiAjZGVmaW5lIERFRklORV9CSVRGSUVMRCh0eXBlLCBsb3dlck5hbWUsIHVwcGVy
TmFtZSwgd2lkdGgsIG9mZnNldCkgXAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qgc18j
I2xvd2VyTmFtZSMjU2hpZnQgPSBvZmZzZXQ7XAogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3Qgc18jI2xvd2VyTmFtZSMjTWFzayA9ICgoMSA8PCAod2lkdGggLSAxKSkgfCAoKDEgPDwgKHdp
ZHRoIC0gMSkpIC0gMSkpO1wKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHNfIyNsb3dl
ck5hbWUjI1dpZHRoID0gd2lkdGg7XAogICAgIHR5cGUgbG93ZXJOYW1lKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8dHlwZT4oKG1fYml0RmllbGQgPj4gb2Zmc2V0KSAmIHNfIyNsb3dlck5h
bWUjI01hc2spOyB9XAogICAgIHZvaWQgc2V0IyN1cHBlck5hbWUodHlwZSBuZXdWYWx1ZSkgXAog
ICAgIHtcCkBAIC03MDMsNiArNzA0LDggQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFsIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc1VuZGVyc2NvcmVQcm90b1By
b3BlcnR5RXhjbHVkaW5nT3JpZ2luYWxQcm90bywgSGFzVW5kZXJzY29yZVByb3RvUHJvcGVydHlF
eGNsdWRpbmdPcmlnaW5hbFByb3RvLCAxLCAyOSk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2ws
IGlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24sIElzUHJvcGVydHlEZWxldGlvblRyYW5zaXRp
b24sIDEsIDMwKTsKIAorICAgIHN0YXRpY19hc3NlcnQoc190cmFuc2l0aW9uUHJvcGVydHlBdHRy
aWJ1dGVzV2lkdGggPD0gc2l6ZW9mKFRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMpICogOCk7
CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUuaAppbmRleCBkZmI5MTEwNTMwZmNlNzYwOWI4YWFkMDQ2NWVjMWQzMDI4ZGIx
OTExLi5kOWM5MjYzMWIyZDE2MjE4MTdlYmEyMWJjOWUyN2Y4OTRiZjg1MmU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGUuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIE5vblByb3BlcnR5VHJhbnNpdGlv
biA6IHVuc2lnbmVkIHsKICAgICBTZWFsLAogICAgIEZyZWV6ZQogfTsKK3VzaW5nIFRyYW5zaXRp
b25Qcm9wZXJ0eUF0dHJpYnV0ZXMgPSB1aW50MTZfdDsKIAogaW5saW5lIHVuc2lnbmVkIHRvQXR0
cmlidXRlcyhOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbikKIHsKQEAgLTE0Myw4ICsx
NDQsNzEgQEAgY2xhc3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlIHsKICAgICBzdGF0aWMgY29u
c3RleHByIGludHB0cl90IFVzaW5nU2luZ2xlU2xvdEZsYWcgPSAxOwogCiAgICAgCisjaWYgQ1BV
KEFERFJFU1M2NCkKICAgICBzdHJ1Y3QgSGFzaCB7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxVbmlxdWVkU3RyaW5nSW1wbCosIHVuc2lnbmVkLCBib29sPiBLZXk7CisgICAgICAgIC8vIHVz
aW5nIEtleSA9IHN0ZDo6dHVwbGU8VW5pcXVlZFN0cmluZ0ltcGwqLCB1bnNpZ25lZCwgYm9vbD47
CisgICAgICAgIHN0cnVjdCBLZXkgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChXVEZfT1Nf
Q09OU1RBTlRfRUZGRUNUSVZFX0FERFJFU1NfV0lEVEggPD0gNDgpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50cHRyX3Qgc3RyaW5nTWFzayA9ICgoMVVMTCA8PCA0OCkgLSAxKSAm
ICh+MVVMTCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBpc0FkZGl0
aW9uTWFzayA9IDFVTEw7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGF0
dHJpYnV0ZXNTaGlmdCA9IDQ4OworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRy
X3QgaGFzaFRhYmxlRGVsZXRlZFZhbHVlID0gMHgyOworICAgICAgICAgICAgc3RhdGljX2Fzc2Vy
dChzaXplb2YoVHJhbnNpdGlvblByb3BlcnR5QXR0cmlidXRlcykgKiA4IDw9IDE2KTsKKyAgICAg
ICAgICAgIHN0YXRpY19hc3NlcnQoaGFzaFRhYmxlRGVsZXRlZFZhbHVlIDwgYWxpZ25vZihVbmlx
dWVkU3RyaW5nSW1wbCkpOworCisgICAgICAgICAgICAvLyBIaWdoZXIgMTYgYml0cyBmb3IgVHJh
bnNpdGlvblByb3BlcnR5QXR0cmlidXRlcy4KKyAgICAgICAgICAgIC8vIExvd2VyIDEgYml0IGZv
ciBpc0FkZGl0aW9uIGZsYWcuCisgICAgICAgICAgICAvLyBSZW1haWluZyBiaXRzIGZvciBVbmlx
dWVkU3RyaW5nSW1wbCouCisgICAgICAgICAgICBLZXkoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGws
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIGJvb2wgaXNBZGRpdGlvbikKKyAgICAgICAgICAgICAgICA6
IG1fZW5jb2RlZERhdGEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW1wbCkgfCAoc3RhdGljX2Nh
c3Q8dWludHB0cl90PihhdHRyaWJ1dGVzKSA8PCBhdHRyaWJ1dGVzU2hpZnQpIHwgKHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oaXNBZGRpdGlvbikgJiBpc0FkZGl0aW9uTWFzaykpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGltcGwgPT0gdGhpcy0+aW1wbCgpKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoaXNBZGRpdGlvbiA9PSB0aGlzLT5pc0FkZGl0aW9uKCkpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVzID09IHRoaXMtPmF0dHJpYnV0ZXMoKSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEtleSgpID0gZGVmYXVsdDsKKworICAgICAgICAg
ICAgS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgICAgICAgICA6
IG1fZW5jb2RlZERhdGEoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICAgICAgeyB9CisK
KyAgICAgICAgICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2VuY29kZWREYXRhID09IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZTsgfQorCisgICAgICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxV
bmlxdWVkU3RyaW5nSW1wbCo+KG1fZW5jb2RlZERhdGEgJiBzdHJpbmdNYXNrKTsgfQorICAgICAg
ICAgICAgYm9vbCBpc0FkZGl0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkRGF0YSAmIGlz
QWRkaXRpb25NYXNrOyB9CisgICAgICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmNvZGVkRGF0YSA+PiBhdHRyaWJ1dGVzU2hpZnQ7IH0KKworICAgICAgICAg
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5tX2VuY29kZWREYXRhID09IGIu
bV9lbmNvZGVkRGF0YTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gYS5tX2VuY29kZWREYXRhICE9IGIubV9lbmNvZGVkRGF0YTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdWludHB0cl90IG1fZW5jb2RlZERhdGEgeyAw
IH07CisgICAgICAgIH07CisgICAgICAgIHVzaW5nIEtleVRyYWl0cyA9IFNpbXBsZUNsYXNzSGFz
aFRyYWl0czxLZXk+OworCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtleSYg
cCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEludEhhc2g8dWludHB0cl90Pjo6aGFz
aChwLm1fZW5jb2RlZERhdGEpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhID09IGI7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworICAgIH07CisjZWxzZQorICAg
IHN0cnVjdCBIYXNoIHsKKyAgICAgICAgdXNpbmcgS2V5ID0gc3RkOjp0dXBsZTxVbmlxdWVkU3Ry
aW5nSW1wbCosIHVuc2lnbmVkLCBib29sPjsKKyAgICAgICAgdXNpbmcgS2V5VHJhaXRzID0gSGFz
aFRyYWl0czxLZXk+OwogICAgICAgICAKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgS2V5JiBwKQogICAgICAgICB7CkBAIC0xNTgsOCArMjIyLDkgQEAgY2xhc3MgU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlIHsKIAogICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwogICAgIH07CisjZW5kaWYKIAotICAgIHR5
cGVkZWYgV2Vha0dDTWFwPEhhc2g6OktleSwgU3RydWN0dXJlLCBIYXNoPiBUcmFuc2l0aW9uTWFw
OworICAgIHR5cGVkZWYgV2Vha0dDTWFwPEhhc2g6OktleSwgU3RydWN0dXJlLCBIYXNoLCBIYXNo
OjpLZXlUcmFpdHM+IFRyYW5zaXRpb25NYXA7CiAKIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUoKQo=
</data>
<flag name="review"
          id="406129"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>