<?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>205592</bug_id>
          
          <creation_ts>2019-12-25 04:49:26 -0800</creation_ts>
          <short_desc>[JSC] StructureChain should hold vector of StructureID</short_desc>
          <delta_ts>2020-01-02 10:41:57 -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>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1601471</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-25 04:49:26 -0800</bug_when>
    <thetext>[JSC] StructureChain should hold vector of StructureID</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601472</commentid>
    <comment_count>1</comment_count>
      <attachid>386406</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-25 04:51:02 -0800</bug_when>
    <thetext>Created attachment 386406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601473</commentid>
    <comment_count>2</comment_count>
      <attachid>386406</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-25 04:52:14 -0800</bug_when>
    <thetext>Comment on attachment 386406
Patch

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

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:1476
&gt; +    bineq t2, [t3], .opPutByIdSlow
&gt; +    addp 4, t3
&gt; +    structureIDToStructureWithScratchAndTable(t2, t1, t0)
&gt; +    loadq Structure::m_prototype[t2], t2
&gt;      bqneq t2, ValueNull, .opPutByIdTransitionChainLoop

We need to load Structure* from StructureID.
If it really matters, I think we should reconsider using StructureID: we should use Structure* and we should put it in 32GB region so that we can use 32bit pointer for that.
But, I think this does not matter much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601666</commentid>
    <comment_count>3</comment_count>
      <attachid>386406</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-12-27 22:36:22 -0800</bug_when>
    <thetext>Comment on attachment 386406
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/Structure.cpp:1217
&gt; +    StructureID* structureIDVector = structureChain-&gt;head();

nit: I think &quot;structureIDPointer&quot; is a better name than &quot;structureIDVector&quot; here since we&apos;re using it as a bump pointer and not a vector.  Alternatively, &quot;currentStructureID&quot; or &quot;structureIDIterator&quot; also works.

&gt; Source/JavaScriptCore/runtime/StructureChain.cpp:67
&gt; +        vm.heap.writeBarrier(this);

Now that we&apos;re storing structureIDs and not setting a list of WriteBarrier&lt;Structure&gt;, I think we can put this writeBarrier() call after the loop.  There&apos;s nothing gained by calling it repeatedly in the loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601731</commentid>
    <comment_count>4</comment_count>
      <attachid>386406</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-28 20:47:05 -0800</bug_when>
    <thetext>Comment on attachment 386406
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/Structure.cpp:1217
&gt;&gt; +    StructureID* structureIDVector = structureChain-&gt;head();
&gt; 
&gt; nit: I think &quot;structureIDPointer&quot; is a better name than &quot;structureIDVector&quot; here since we&apos;re using it as a bump pointer and not a vector.  Alternatively, &quot;currentStructureID&quot; or &quot;structureIDIterator&quot; also works.

currentStructureID sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/StructureChain.cpp:67
&gt;&gt; +        vm.heap.writeBarrier(this);
&gt; 
&gt; Now that we&apos;re storing structureIDs and not setting a list of WriteBarrier&lt;Structure&gt;, I think we can put this writeBarrier() call after the loop.  There&apos;s nothing gained by calling it repeatedly in the loop.

Currently, storedPrototypeObject does not cause any GC related operations. But I think this is not guaranteed. So, make this safe, I like putting write-barrier here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601732</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-12-28 20:47:49 -0800</bug_when>
    <thetext>Committed r253931: &lt;https://trac.webkit.org/changeset/253931&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601733</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-28 20:48:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58228521&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601814</commentid>
    <comment_count>7</comment_count>
      <attachid>386406</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-12-29 20:55:10 -0800</bug_when>
    <thetext>Comment on attachment 386406
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/StructureChain.cpp:67
&gt;&gt;&gt; +        vm.heap.writeBarrier(this);
&gt;&gt; 
&gt;&gt; Now that we&apos;re storing structureIDs and not setting a list of WriteBarrier&lt;Structure&gt;, I think we can put this writeBarrier() call after the loop.  There&apos;s nothing gained by calling it repeatedly in the loop.
&gt; 
&gt; Currently, storedPrototypeObject does not cause any GC related operations. But I think this is not guaranteed. So, make this safe, I like putting write-barrier here.

But if you moved writeBarrier outside the loop, |this| is alive, and would be visited regardless of what is inside the loop. The loop could GC all it wants and we should be safe. So Mark is correct that it could move out to the end of the loop (and it could’ve in the old code too). (That said, I’m not sure it matters much in practice.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602166</commentid>
    <comment_count>8</comment_count>
      <attachid>386406</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-02 10:41:57 -0800</bug_when>
    <thetext>Comment on attachment 386406
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/StructureChain.cpp:67
&gt;&gt;&gt;&gt; +        vm.heap.writeBarrier(this);
&gt;&gt;&gt; 
&gt;&gt;&gt; Now that we&apos;re storing structureIDs and not setting a list of WriteBarrier&lt;Structure&gt;, I think we can put this writeBarrier() call after the loop.  There&apos;s nothing gained by calling it repeatedly in the loop.
&gt;&gt; 
&gt;&gt; Currently, storedPrototypeObject does not cause any GC related operations. But I think this is not guaranteed. So, make this safe, I like putting write-barrier here.
&gt; 
&gt; But if you moved writeBarrier outside the loop, |this| is alive, and would be visited regardless of what is inside the loop. The loop could GC all it wants and we should be safe. So Mark is correct that it could move out to the end of the loop (and it could’ve in the old code too). (That said, I’m not sure it matters much in practice.)

Is it correct? Let&apos;s consider the following case,

Now, we attempt to store 3rd StructureID. We already did GC when creating 1st StructureID. And, after that, concurrent marking happens before 2nd StructureID is stored.
2nd Structure is not in newly-allocated space. The status is,

1. |this| is already marked, but this marking only visits 1st StructureID.
2. 2nd StructureID is already stored to the vector

Then, GC happens in storedPrototypeObject. In this case, 2nd Structure can be missed because of lack of write-barrier.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386406</attachid>
            <date>2019-12-25 04:51:02 -0800</date>
            <delta_ts>2019-12-27 22:36:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205592-20191225045102.patch</filename>
            <type>text/plain</type>
            <size>13124</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzOTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YTU1NDZjNzZjNWE4Mjc0YTVjYWNhOGJiNzY5NWU5OGIyOTkzZWNkLi5jYTlkNjY5NWQ0ZjE2YzM4
ZTIyNDk5M2JhNjEzY2IyZDk5ZDgxMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxOS0xMi0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN0cnVjdHVyZUNoYWluIHNob3VsZCBob2xkIHZlY3RvciBvZiBT
dHJ1Y3R1cmVJRAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA1NTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU3RydWN0dXJlQ2hhaW4gc2hvdWxkIGtlZXAgdmVjdG9yIG9mIFN0cnVjdHVyZUlEIGluc3Rl
YWQgb2YgU3RydWN0dXJlKiB0byBtaW5pbWl6ZSB0aGUgc2l6ZSBvZiB2ZWN0b3IuCisKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmg6CisgICAgICAgIChKU0M6OnByb3BlcnR5TmFtZUVu
dW1lcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y2FuQ2FjaGVQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppc1ZhbGlkIGNvbnN0
KToKKwogMjAxOS0xMi0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIENvbXBhY3QgQnl0ZWNvZGVzIG1vcmUgYnkgZW1pdHRpbmcgMS1ieXRlIE9w
Y29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQppbmRleCBlNzBiZTU0NTVmNDY4YTM5NWRmZjFkNmIyZWEwNWI0ZDY5Mzlj
MmMxLi45Mjk4Y2NiYWM3ZjE2MGEzM2Q0MGFmMjYyNTYxZTg4ZDE5YTA5NjI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQpAQCAtMTQ0OCwxMCArMTQ0OCwxOSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9p
ZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxv
YWRwIE9wUHV0QnlJZDo6TWV0YWRhdGE6Om1fc3RydWN0dXJlQ2hhaW5bdDVdLCB0MwogICAgIGJ0
cHogdDMsIC5vcFB1dEJ5SWRUcmFuc2l0aW9uRGlyZWN0CiAKLSAgICBzdHJ1Y3R1cmVJRFRvU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDIsIHQxLCB0MykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdm1bdDFdLCB0MQorICAgIGxvYWRwIFZNOjpoZWFw
ICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVt0
MV0sIHQxCisKKyAgICBtYWNybyBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2hBbmRU
YWJsZShzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHRhYmxlLCBzY3JhdGNoKQorICAgICAgICBt
b3ZlIHN0cnVjdHVyZUlEVGhlblN0cnVjdHVyZSwgc2NyYXRjaAorICAgICAgICByc2hpZnRpIE51
bWJlck9mU3RydWN0dXJlSURFbnRyb3B5Qml0cywgc2NyYXRjaAorICAgICAgICBsb2FkcCBbdGFi
bGUsIHNjcmF0Y2gsIFB0clNpemVdLCBzY3JhdGNoCisgICAgICAgIGxzaGlmdHAgU3RydWN0dXJl
RW50cm9weUJpdHNTaGlmdCwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCisgICAgICAgIHhvcnAg
c2NyYXRjaCwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCisgICAgZW5kCiAKLSAgICAjIHJlbG9h
ZCB0aGUgU3RydWN0dXJlQ2hhaW4gc2luY2Ugd2UgdXNlZCB0MyBhcyBhIHNjcmF0Y2ggYWJvdmUK
LSAgICBsb2FkcCBPcFB1dEJ5SWQ6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUNoYWluW3Q1XSwgdDMK
KyAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2hBbmRUYWJsZSh0MiwgdDEsIHQw
KQogCiAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QzXSwgdDMKICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiB0Mywgb2sgZW5kKQpAQCAtMTQ1OSwyMCArMTQ2OCwxOSBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVb
dDJdLCB0MgogICAgIGJxZXEgdDIsIFZhbHVlTnVsbCwgLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFp
bkRvbmUKIC5vcFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Mb29wOgotICAgICMgQXQgdGhpcyBwb2lu
dCwgdDIgY29udGFpbnMgYSBwcm90b3R5ZSwgYW5kIFt0M10gY29udGFpbnMgdGhlIFN0cnVjdHVy
ZSogdGhhdCB3ZSB3YW50IHRoYXQKLSAgICAjIHByb3RvdHlwZSB0byBoYXZlLiBXZSBkb24ndCB3
YW50IHRvIGhhdmUgdG8gbG9hZCB0aGUgU3RydWN0dXJlKiBmb3IgdDIuIEluc3RlYWQsIHdlIGxv
YWQKLSAgICAjIHRoZSBTdHJ1Y3R1cmUqIGZyb20gW3QzXSwgYW5kIHRoZW4gd2UgY29tcGFyZSBp
dHMgaWQgdG8gdGhlIGlkIGluIHRoZSBoZWFkZXIgb2YgdDIuCi0gICAgbG9hZHAgW3QzXSwgdDEK
ICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDJdLCB0MgotICAgICMgTm93LCB0MSBo
YXMgdGhlIFN0cnVjdHVyZSogYW5kIHQyIGhhcyB0aGUgU3RydWN0dXJlSUQgdGhhdCB3ZSB3YW50
IHRoYXQgU3RydWN0dXJlKiB0byBoYXZlLgotICAgIGJpbmVxIHQyLCBTdHJ1Y3R1cmU6Om1fYmxv
YiArIFN0cnVjdHVyZUlEQmxvYjo6dS5maWVsZHMuc3RydWN0dXJlSURbdDFdLCAub3BQdXRCeUlk
U2xvdwotICAgIGFkZHAgUHRyU2l6ZSwgdDMKLSAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlW3QxXSwgdDIKKyAgICBiaW5lcSB0MiwgW3QzXSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRw
IDQsIHQzCisgICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoQW5kVGFibGUodDIs
IHQxLCB0MCkKKyAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QyXSwgdDIKICAgICBi
cW5lcSB0MiwgVmFsdWVOdWxsLCAub3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluTG9vcAogCiAub3BQ
dXRCeUlkVHJhbnNpdGlvbkNoYWluRG9uZToKICAgICAjIFJlbG9hZCB0aGUgbmV3IHN0cnVjdHVy
ZSwgc2luY2Ugd2UgY2xvYmJlcmVkIGl0IGFib3ZlLgogICAgIGxvYWRpIE9wUHV0QnlJZDo6TWV0
YWRhdGE6Om1fbmV3U3RydWN0dXJlSURbdDVdLCB0MQorICAgICMgUmVsb2FkIGJhc2UgaW50byB0
MAorICAgIGdldChtX2Jhc2UsIHQzKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwg
dDMsIHQwKQogCiAub3BQdXRCeUlkVHJhbnNpdGlvbkRpcmVjdDoKICAgICBzdG9yZWkgdDEsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKaW5kZXggZGFlN2M0YjdhNDIx
MmM4OTE4MTlkMDI0MjFiMzg4NmE3NTJmYTEwYi4uM2Y5NGVkMDUwYWY5ODBlYzQ3ZWUyN2M4MThh
MmI4MDNkZjBkZWE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBpbmxp
bmUgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBwcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIGVudW1lcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OmNyZWF0ZSh2bSwgc3RydWN0dXJlQWZ0ZXJHZXR0aW5nUHJvcGVydHlOYW1lcywgaW5k
ZXhlZExlbmd0aCwgbnVtYmVyU3RydWN0dXJlUHJvcGVydGllcywgV1RGTW92ZShwcm9wZXJ0eU5h
bWVzKSk7CiAgICAgaWYgKCFpbmRleGVkTGVuZ3RoICYmIHN1Y2Nlc3NmdWxseU5vcm1hbGl6ZWRD
aGFpbiAmJiBzdHJ1Y3R1cmVBZnRlckdldHRpbmdQcm9wZXJ0eU5hbWVzID09IHN0cnVjdHVyZSkg
ewogICAgICAgICBlbnVtZXJhdG9yLT5zZXRDYWNoZWRQcm90b3R5cGVDaGFpbih2bSwgc3RydWN0
dXJlLT5wcm90b3R5cGVDaGFpbihnbG9iYWxPYmplY3QsIGJhc2UpKTsKLSAgICAgICAgaWYgKHN0
cnVjdHVyZS0+Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpCisgICAgICAgIGlmIChz
dHJ1Y3R1cmUtPmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcih2bSkpCiAgICAgICAgICAg
ICBzdHJ1Y3R1cmUtPnNldENhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3Iodm0sIGVudW1lcmF0
b3IpOwogICAgIH0KICAgICByZXR1cm4gZW51bWVyYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm94eU9iamVjdC5oCmluZGV4IDcxNTBkODRhZWMyYTdhMDkxYzA3M2Q0ODcx
ODdiMDBjYWZhZTRhODguLjRhZmMyMWVlMjU1M2JmYTk3MjBlN2NjNmEyMDY2MzYwNjc0OGRlNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuaApAQCAtNTks
NyArNTksNyBAQCBjbGFzcyBQcm94eU9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKICAgICAgICAgU3RydWN0dXJlKiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFByb3h5T2JqZWN0VHlwZSwgZmxhZ3Mp
LCBpbmZvKCksIE5vbkFycmF5IHwgTWF5SGF2ZUluZGV4ZWRBY2Nlc3NvcnMpOwogICAgICAgICBy
ZXN1bHQtPnNldElzUXVpY2tQcm9wZXJ0eUFjY2Vzc0FsbG93ZWRGb3JFbnVtZXJhdGlvbihmYWxz
ZSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQtPmNhbkFjY2Vzc1Byb3BlcnRpZXNR
dWlja2x5Rm9yRW51bWVyYXRpb24oKSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQt
PmNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcigpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIXJlc3VsdC0+Y2FuQ2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKHZtKSk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAppbmRleCAxMTQwNzliNTA5OTUxZWE3MTQxNjcwNzI4ZjQxZGRkZTQzMjM2
YTYxLi4yODllZWRkNWViZjg2YWFlNzJhNjY3Y2ZmN2Q4YWMyNDg4YTEwMzc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTEyMDcsMjAgKzEyMDcs
MjIgQEAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBTdHJ1Y3R1cmU6OmNhY2hlZFByb3BlcnR5
TmFtZUVudW1lcmF0b3IoKSBjb25zdAogICAgIHJldHVybiByYXJlRGF0YSgpLT5jYWNoZWRQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKCk7CiB9CiAKLWJvb2wgU3RydWN0dXJlOjpjYW5DYWNoZVByb3Bl
cnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdAorYm9vbCBTdHJ1Y3R1cmU6OmNhbkNhY2hlUHJvcGVy
dHlOYW1lRW51bWVyYXRvcihWTSYgdm0pIGNvbnN0CiB7CiAgICAgaWYgKCF0aGlzLT5jYW5DYWNo
ZU93bktleXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU3RydWN0dXJlQ2hhaW4q
IHN0cnVjdHVyZUNoYWluID0gbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKTsKICAgICBBU1NF
UlQoc3RydWN0dXJlQ2hhaW4pOwotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBzdHJ1Y3R1
cmUgPSBzdHJ1Y3R1cmVDaGFpbi0+aGVhZCgpOworICAgIFN0cnVjdHVyZUlEKiBzdHJ1Y3R1cmVJ
RFZlY3RvciA9IHN0cnVjdHVyZUNoYWluLT5oZWFkKCk7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmdldCgpKQorICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1
cmVJRCA9ICpzdHJ1Y3R1cmVJRFZlY3RvcjsKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmVJRCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoIXN0cnVjdHVyZS0+Z2V0KCktPmNh
bkNhY2hlT3duS2V5cygpKQorICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0
cnVjdHVyZShzdHJ1Y3R1cmVJRCk7CisgICAgICAgIGlmICghc3RydWN0dXJlLT5jYW5DYWNoZU93
bktleXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc3RydWN0dXJlKys7
CisgICAgICAgIHN0cnVjdHVyZUlEVmVjdG9yKys7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4
IDEzNzJlYzAwYTc0YjkwM2U4MGJmOWQ4YTVkODdhNmQ5NWVlMDYyODcuLmVlOGRmZDYzN2ViM2Ux
MDQ5NWI0NTNlNGFiNTJlOTMzMDgyZWNkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCkBAIC00NzYsNyArNDc2LDcgQEAgY2xhc3MgU3RydWN0dXJlIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICB2b2lkIHNldENhY2hlZFByb3BlcnR5TmFtZUVudW1l
cmF0b3IoVk0mLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqKTsKICAgICBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IqIGNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdDsKLSAgICBi
b29sIGNhbkNhY2hlUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0OworICAgIGJvb2wgY2Fu
Q2FjaGVQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKFZNJikgY29uc3Q7CiAgICAgYm9vbCBjYW5BY2Nl
c3NQcm9wZXJ0aWVzUXVpY2tseUZvckVudW1lcmF0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dENhY2hlZE93bktleXMoVk0mLCBKU0ltbXV0YWJsZUJ1dHRlcmZseSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCmluZGV4IGQ0NjlhM2Jh
ODAxOWQxM2E2YjgzNDViMTljMjZiY2U5MGUzNGUzYTkuLjQzNDgyZjJmYzk4MzY3M2Y0N2NjYmZl
YmNjNmE3ZjI5NjQ5ZDQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgCiBjb25zdCBDbGFzc0luZm8gU3RydWN0dXJlQ2hhaW46OnNfaW5mbyA9IHsgIlN0cnVjdHVy
ZUNoYWluIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShT
dHJ1Y3R1cmVDaGFpbikgfTsKIAotU3RydWN0dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiB2ZWN0b3Ip
CitTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU3RydWN0dXJlSUQqIHZlY3RvcikKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAg
ICAsIG1fdmVjdG9yKHZtLCB0aGlzLCB2ZWN0b3IpCiB7CkBAIC00OSw5ICs0OSw5IEBAIFN0cnVj
dHVyZUNoYWluKiBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKFZNJiB2bSwgSlNPYmplY3QqIGhlYWQp
CiAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBj
dXJyZW50LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoY3VycmVudCkpCiAg
ICAgICAgICsrc2l6ZTsKICAgICArK3NpemU7IC8vIFNlbnRpbmVsIG51bGxwdHIuCi0gICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4qIHZlY3RvciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCAoQ2hlY2tlZDxzaXplX3Q+KHNpemUpICogc2l6ZW9mKFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+KSkudW5zYWZlR2V0KCksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6
QXNzZXJ0KSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IHZlY3RvcltpXS5jbGVhcigpOworICAgIHNpemVfdCBieXRlcyA9IChDaGVja2VkPHNpemVfdD4o
c2l6ZSkgKiBzaXplb2YoU3RydWN0dXJlSUQpKS51bnNhZmVHZXQoKTsKKyAgICBTdHJ1Y3R1cmVJ
RCogdmVjdG9yID0gc3RhdGljX2Nhc3Q8U3RydWN0dXJlSUQqPih2bS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGJ5dGVzLCBudWxscHRyLCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAgIG1lbXNldCh2ZWN0b3IsIDAsIGJ5dGVz
KTsKICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxTdHJ1Y3R1cmVDaGFpbj4odm0uaGVhcCkpIFN0cnVjdHVyZUNoYWluKHZtLCB2bS5zdHJ1Y3R1
cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgdmVjdG9yKTsKICAgICBjaGFpbi0+ZmluaXNoQ3JlYXRp
b24odm0sIGhlYWQpOwogICAgIHJldHVybiBjaGFpbjsKQEAgLTYxLDggKzYxLDExIEBAIHZvaWQg
U3RydWN0dXJlQ2hhaW46OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNPYmplY3QqIGhlYWQpCiB7
CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHNpemVfdCBpID0gMDsKLSAgICBm
b3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQt
PnN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3RvdHlwZU9iamVjdChjdXJyZW50KSkKLSAgICAgICAg
bV92ZWN0b3IuZ2V0KClbaSsrXS5zZXQodm0sIHRoaXMsIGN1cnJlbnQtPnN0cnVjdHVyZSh2bSkp
OworICAgIGZvciAoSlNPYmplY3QqIGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+c3RydWN0dXJlKHZtKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KGN1cnJlbnQpKSB7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY3VycmVudC0+c3RydWN0dXJlKHZtKTsK
KyAgICAgICAgbV92ZWN0b3IuZ2V0KClbaSsrXSA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcyk7CisgICAgfQogfQogCiB2b2lkIFN0cnVjdHVyZUNo
YWluOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBA
IC03MSw4ICs3NCwxMiBAQCB2b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5tYXJrQXV4aWxpYXJ5KHRoaXNPYmplY3QtPm1f
dmVjdG9yLmdldCgpKTsKLSAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSB0aGlzT2JqZWN0LT5tX3Zl
Y3Rvci5nZXQoKTsgKmN1cnJlbnQ7ICsrY3VycmVudCkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQo
KmN1cnJlbnQpOworICAgIFZNJiB2bSA9IHZpc2l0b3Iudm0oKTsKKyAgICBmb3IgKGF1dG8qIGN1
cnJlbnQgPSB0aGlzT2JqZWN0LT5tX3ZlY3Rvci5nZXQoKTsgKmN1cnJlbnQ7ICsrY3VycmVudCkg
eworICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9ICpjdXJyZW50OworICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmdldFN0cnVjdHVyZShzdHJ1Y3R1cmVJRCk7CisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoc3RydWN0dXJlKTsKKyAgICB9CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmgKaW5kZXggYjdhNjBmNzk4ZGJkYzRhNjhmNjA5M2ZlMDczYmJjNDRiMzE0OGQy
MC4uODVmYWI5ZGI1MjEzMjJjNzdkODE5YzA1YTY1MWFiNDNmZTcxNGE2MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCkBAIC01MCw3ICs1MCw3
IEBAIGNsYXNzIFN0cnVjdHVyZUNoYWluIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQog
CiAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoVk0mLCBKU09iamVjdCopOwotICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7
IH0KKyAgICBTdHJ1Y3R1cmVJRCogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9CiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCkBAIC02NSw4ICs2NSw4IEBAIGNs
YXNzIFN0cnVjdHVyZUNoYWluIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgSlNPYmplY3QqIGhlYWQpOwogCi0gICAgU3RydWN0dXJlQ2hhaW4o
Vk0mLCBTdHJ1Y3R1cmUqLCBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiopOwotICAgIEF1eGlsaWFy
eUJhcnJpZXI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qPiBtX3ZlY3RvcjsKKyAgICBTdHJ1Y3R1
cmVDaGFpbihWTSYsIFN0cnVjdHVyZSosIFN0cnVjdHVyZUlEKik7CisgICAgQXV4aWxpYXJ5QmFy
cmllcjxTdHJ1Y3R1cmVJRCo+IG1fdmVjdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKaW5k
ZXggYTRmOWI0ODVmZjU1YTFiYmM2NmMxY2MyYjUyMjEwYWMxNWQ3YjU1NS4uYWJmODBlZWVlNzdm
NGE1YzU4MjFiM2RiMDhlMWY5NjAyZmU0NjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaApAQCAtMzEzLDkgKzMxMyw5IEBAIGlubGlu
ZSBib29sIFN0cnVjdHVyZTo6aXNWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVDaGFpbiogY2FjCiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBwcm90b3R5cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBi
YXNlKTsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0gY2Fj
aGVkUHJvdG90eXBlQ2hhaW4tPmhlYWQoKTsKKyAgICBTdHJ1Y3R1cmVJRCogY2FjaGVkU3RydWN0
dXJlID0gY2FjaGVkUHJvdG90eXBlQ2hhaW4tPmhlYWQoKTsKICAgICB3aGlsZSAoKmNhY2hlZFN0
cnVjdHVyZSAmJiAhcHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChhc09iamVjdChw
cm90b3R5cGUpLT5zdHJ1Y3R1cmUodm0pICE9IGNhY2hlZFN0cnVjdHVyZS0+Z2V0KCkpCisgICAg
ICAgIGlmIChhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmVJRCgpICE9ICpjYWNoZWRTdHJ1
Y3R1cmUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICsrY2FjaGVkU3RydWN0
dXJlOwogICAgICAgICBwcm90b3R5cGUgPSBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm90b3R5
cGVEaXJlY3Qodm0pOwo=
</data>
<flag name="review"
          id="402207"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>