<?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>96891</bug_id>
          
          <creation_ts>2012-09-16 17:19:45 -0700</creation_ts>
          <short_desc>Array profiling has convergence issues</short_desc>
          <delta_ts>2012-09-17 16:11:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96968</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>721643</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-16 17:19:45 -0700</bug_when>
    <thetext>Consider the following code:

function foo() {
    var o = {};
    o.length = 5;
    for (var i = 0; i &lt; o.length; ++i)
        o[i] = i;
}

Currently, array profiling will always say that &apos;o&apos; is NonArrayWithArrayStorage, even though on the first iteration it&apos;s a NonArray (as in it has no array storage).

We could catch this corner case in one of two ways: (1) OSR exit profiling or (2) more precise baseline profiling.  I prefer (2) because we usually only like to rely on (1) in pathological cases.  The above does not feel like a pathological case - it seems rather sensible to write a program that has a loop, where the first iteration of that loop does special things.

Of course, we could also kill off this pathology, at least in most cases, by relying on loop peeling.  But for now, I think having a more precise array profiler just feels like a nicer solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721646</commentid>
    <comment_count>1</comment_count>
      <attachid>164328</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-16 17:28:57 -0700</bug_when>
    <thetext>Created attachment 164328
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721648</commentid>
    <comment_count>2</comment_count>
      <attachid>164328</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-16 17:56:50 -0700</bug_when>
    <thetext>Comment on attachment 164328
the patch

Attachment 164328 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13873232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721652</commentid>
    <comment_count>3</comment_count>
      <attachid>164330</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-16 18:06:46 -0700</bug_when>
    <thetext>Created attachment 164330
the patch

Fix non-DFG builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722143</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-17 12:07:38 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/128790</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722358</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-09-17 16:10:33 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Landed in http://trac.webkit.org/changeset/128790

It broke the Qt ARM build - https://bugs.webkit.org/show_bug.cgi?id=96968

Could you check it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722359</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-17 16:11:17 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Landed in http://trac.webkit.org/changeset/128790
&gt; 
&gt; It broke the Qt ARM build - https://bugs.webkit.org/show_bug.cgi?id=96968
&gt; 
&gt; Could you check it, please?

It broke your build because I introduced new assembler functionality.

It&apos;s up to you guys to implement assembler functionality on your platforms.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164328</attachid>
            <date>2012-09-16 17:28:57 -0700</date>
            <delta_ts>2012-09-16 18:06:46 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>betterprofile_patch_1.diff</filename>
            <type>text/plain</type>
            <size>20657</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4NzE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDEyLTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXJyYXkgcHJvZmlsaW5nIGhhcyBjb252ZXJnZW5jZSBpc3N1ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2ODkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IGVhY2ggYXJyYXkgcHJvZmlsaW5nIHNp
dGUgbWVyZ2VzIGluIHRoZSBpbmRleGluZyB0eXBlIGl0IG9ic2VydmVkIGludG8KKyAgICAgICAg
dGhlIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIGJpdHNldC4gVGhlIEFycmF5UHJvZmlsZSBhbHNvIHVz
ZXMgdGhpcyB0byBkZXRlY3QKKyAgICAgICAgY2FzZXMgd2hlcmUgdGhlIHN0cnVjdHVyZSBtdXN0
IGhhdmUgZ29uZSBwb2x5bW9ycGhpYyAoaWYgdGhlIGJpdHNldCBpcworICAgICAgICBwb2x5bW9y
cGhpYyB0aGVuIHRoZSBzdHJ1Y3R1cmUgbXVzdCBiZSkuIFRoaXMgYWNoaWV2ZXMgc29tZXRoaW5n
IGxpa2UgdGhlCisgICAgICAgIGJlc3Qgb2YgYm90aCB3b3JsZHM6IG9uIHRoZSBvbmUgaGFuZCwg
d2UgZ2V0IGEgcHJvYmFiaWxpc3RpYyBzdHJ1Y3R1cmUgdGhhdAorICAgICAgICB3ZSBjYW4gdXNl
IHRvIG9wdGltaXplIHRoZSBtb25vbW9ycGhpYyBzdHJ1Y3R1cmUgY2FzZSwgYnV0IG9uIHRoZSBv
dGhlciBoYW5kLAorICAgICAgICB3ZSBnZXQgYW4gYWNjdXJhdGUgdmlldyBvZiB0aGUgc2V0IG9m
IHR5cGVzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZC4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9y
MzIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Ojpv
cjMyKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om9yMzIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAqIGFz
c2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6b3JsX3JtKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVBy
b2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChK
U0M6OkFycmF5UHJvZmlsZTo6YWRkcmVzc09mQXJyYXlNb2Rlcyk6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6c3RydWN0dXJlSXNQb2x5bW9ycGhpYyk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5n
dGgpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdl
dEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisKIDIwMTItMDktMTYgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBKU09iamVjdC5jcHAgYW5kIEpTQXJy
YXkuY3BwIGhhdmUgaW5jb25zaXN0ZW50IHRlc3RzIGZvciB0aGUgaW52YWxpZCBhcnJheSBpbmRl
eCBjYXNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTI4NzExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxMyw2ICszMTMsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
b3JyKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQorICAgIAorICAgIHZvaWQgb3IzMihSZWdpc3Rl
cklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZGVzdC5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2Fk
MzIoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG9yMzIo
c3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICB9CiAKICAgICB2b2lkIG9yMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDEy
ODcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODYuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3MubV9wdHIpOwogICAgIH0KICAg
ICAKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCByZWcsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHJlZywgYWRkcmVzcy5tX3B0cik7
CisgICAgfQorICAgIAogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX2ltKGltbS5t
X3ZhbHVlLCBhZGRyZXNzLm1fcHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEyODcx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsMTIgQEAgcHVibGljOgogICAgICAgICBv
cjMyKGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpKTsKICAgICB9CiAKKyAgICB2b2lkIG9y
MzIoUmVnaXN0ZXJJRCByZWcsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOwor
ICAgICAgICBvcjMyKHJlZywgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpKTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQog
ICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNo
UmVnaXN0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxMjg3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDEsNiArNTQxLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAg
ICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgY29uc3Qg
dm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9F
dkd2LCBzcmMsIGFkZHIpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBzdWJsX3JyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCShyZXZpc2lvbiAxMjg3MTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsMTEgQEAgdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJl
ZGljdAogICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gMDsKICAgICB9CiAgICAgCisgICAg
aWYgKGhhc1R3b09yTW9yZUJpdHNTZXQobV9vYnNlcnZlZEFycmF5TW9kZXMpKSB7CisgICAgICAg
IG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYyA9IHRydWU7CisgICAgICAgIG1fZXhwZWN0ZWRTdHJ1
Y3R1cmUgPSAwOworICAgIH0KKyAgICAKICAgICBpZiAob3BlcmF0aW9uID09IENvbGxlY3Rpb24K
ICAgICAgICAgJiYgbV9leHBlY3RlZFN0cnVjdHVyZQogICAgICAgICAmJiAhSGVhcDo6aXNNYXJr
ZWQobV9leHBlY3RlZFN0cnVjdHVyZSkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDEyODcxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0OyB9CiAgICAgCiAgICAgU3RydWN0dXJlKiogYWRk
cmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZTsg
fQorICAgIEFycmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNl
cnZlZEFycmF5TW9kZXM7IH0KICAgICAKICAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNzksNyArODAsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9u
ID0gTm9PcGVyYXRpb24pOwogICAgIAogICAgIFN0cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkU3RydWN0dXJlOyB9Ci0gICAgYm9vbCBzdHJ1Y3R1
cmVJc1BvbHltb3JwaGljKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGlj
OyB9CisgICAgYm9vbCBzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3N0cnVjdHVyZUlzUG9seW1vcnBoaWM7CisgICAgfQogICAgIGJvb2wgaGFz
RGVmaW5pdGVTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFzdHJ1Y3R1
cmVJc1BvbHltb3JwaGljKCkgJiYgbV9leHBlY3RlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTI4NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ5LDYgKzQ0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodW5zaWduZWQpIHsgfQog
ICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKSB7IH0KICNlbmRpZgorICAgICAg
ICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRl
eGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKik7CiAKICAgICAgICAg
ZW51bSBGaW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCShyZXZp
c2lvbiAxMjg3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhv
ZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDcgKzUyOSwyMiBAQCBpbmxpbmUgdm9pZCBKSVQ6
OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoCiB7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSht
X2J5dGVjb2RlT2Zmc2V0KTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikKKworaW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlKFJlZ2lzdGVy
SUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIEFycmF5UHJv
ZmlsZSogYXJyYXlQcm9maWxlKQoreworICAgIFJlZ2lzdGVySUQgc3RydWN0dXJlID0gc3RydWN0
dXJlQW5kSW5kZXhpbmdUeXBlOworICAgIFJlZ2lzdGVySUQgaW5kZXhpbmdUeXBlID0gc3RydWN0
dXJlQW5kSW5kZXhpbmdUeXBlOworICAgIAorICAgIGlmIChjYW5CZU9wdGltaXplZCgpKSB7Cisg
ICAgICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZSgpKTsKKyAgICAgICAgbG9hZDgoQWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBpbmRleGluZ1R5cGUpOworICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMigxKSwgc2NyYXRjaCk7CisgICAgICAgIGxzaGlmdDMyKGluZGV4aW5nVHlwZSwg
c2NyYXRjaCk7CisgICAgICAgIG9yMzIoc2NyYXRjaCwgQWJzb2x1dGVBZGRyZXNzKGFycmF5UHJv
ZmlsZS0+YWRkcmVzc09mQXJyYXlNb2RlcygpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGxvYWQ4
KEFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgaW5k
ZXhpbmdUeXBlKTsKK30KIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAko
cmV2aXNpb24gMTI4NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDEwICsyMTAsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0j
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIHN0b3JlUHRyKHJlZ1QxLCBjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkp
OwotI2VuZGlmCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdU
MSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihIYXNBcnJh
eVN0b3JhZ2UpKSk7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShyZWdUMSwgcmVnVDMsIGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoVGVzdDMyKFplcm8sIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlKSkpOwog
ICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNl
dCgpKSwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVn
VDIsIEFkZHJlc3MocmVnVDMsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7
CkBAIC0yNjksMTAgKzI2Nyw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1
Y3Rpb24KICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZSwgcmVnVDEpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAg
c3RvcmVQdHIocmVnVDEsIGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZS0+YWRk
cmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0jZW5kaWYKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKEhhc0FycmF5U3RvcmFnZSkpKTsKKyAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlQcm9m
aWxlKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0MzIoWmVybywgcmVnVDEsIFRydXN0ZWRJ
bW0zMihIYXNBcnJheVN0b3JhZ2UpKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
MzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMywgQXJyYXlTdG9yYWdlOjp2ZWN0
b3JMZW5ndGhPZmZzZXQoKSkpKTsKIApAQCAtNjE3LDEwICs2MTMsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGFycmF5
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBzdG9yZVB0cihyZWdUMiwg
bV9jb2RlQmxvY2stPmdldE9yQWRkQXJyYXlQcm9maWxlKHN0dWJJbmZvLT5ieXRlY29kZUluZGV4
KS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0jZW5kaWYKLSAgICBsb2FkOChBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgcmVnVDMpOworICAg
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1QzLCBtX2NvZGVCbG9jay0+Z2V0T3JB
ZGRBcnJheVByb2ZpbGUoc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXgpKTsKICAgICBKdW1wIGZhaWx1
cmVDYXNlczEgPSBicmFuY2hUZXN0MzIoWmVybywgcmVnVDIsIFRydXN0ZWRJbW0zMihJc0FycmF5
KSk7CiAgICAgSnVtcCBmYWlsdXJlQ2FzZXMyID0gYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QyLCBU
cnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTI4NzEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMSwxMCArMTExLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjdGlvbgogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
LCBiYXNlKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZWdUMik7Ci0jaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIHN0b3JlUHRy
KHJlZ1QyLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxh
c3RTZWVuU3RydWN0dXJlKCkpOwotI2VuZGlmCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgo
WmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihIYXNBcnJheVN0b3JhZ2UpKSk7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0
ZShyZWdUMiwgcmVnVDMsIGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QyLCBUcnVzdGVkSW1tMzIoSGFz
QXJyYXlTdG9yYWdlKSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCByZWdUMSwgQWRkcmVzcyhyZWdUMiwgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5n
dGhPZmZzZXQoKSkpKTsKQEAgLTIzNiwxMCArMjM0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0j
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIHN0b3JlUHRyKHJlZ1QyLCBjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkp
OwotI2VuZGlmCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdU
MiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihIYXNBcnJh
eVN0b3JhZ2UpKSk7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMsIGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoVGVzdDMyKFplcm8sIHJlZ1QyLCBUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlKSkpOwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
cmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFk
ZHJlc3MocmVnVDIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CiAKQEAg
LTY1NiwxMyArNjUyLDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlM
ZW4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSAmbV9jb2RlQmxvY2stPmdldFN0
dWJJbmZvKHJldHVybkFkZHJlc3MpOwogCiAgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIGFycmF5Ci0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVn
VDMpOwotI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBzdG9yZVB0cihyZWdUMywgbV9j
b2RlQmxvY2stPmdldE9yQWRkQXJyYXlQcm9maWxlKHN0dWJJbmZvLT5ieXRlY29kZUluZGV4KS0+
YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0jZW5kaWYKLSAgICBsb2FkOChBZGRyZXNz
KHJlZ1QzLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgcmVnVDMpOwotICAgIEp1
bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMywgVHJ1c3RlZEltbTMy
KElzQXJyYXkpKTsKLSAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hUZXN0MzIoWmVybywg
cmVnVDMsIFRydXN0ZWRJbW0zMihIYXNBcnJheVN0b3JhZ2UpKTsKKyAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdEFy
cmF5UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDEsIG1fY29kZUJsb2NrLT5nZXRPckFkZEFycmF5
UHJvZmlsZShzdHViSW5mby0+Ynl0ZWNvZGVJbmRleCkpOworICAgIEp1bXAgZmFpbHVyZUNhc2Vz
MSA9IGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKElzQXJyYXkpKTsKKyAg
ICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hUZXN0MzIoWmVybywgcmVnVDIsIFRydXN0ZWRJ
bW0zMihIYXNBcnJheVN0b3JhZ2UpKTsKIAogICAgIC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXQg
dGhlIGxlbmd0aCBmcm9tIHRoZSBzdG9yYWdlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQkocmV2aXNpb24gMTI4NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTExNzYsMTIgKzExNzYs
OSBAQCBfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBsb2FkcCAxNltQQ10sIHQxCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRB
cnJheUxlbmd0aFNsb3cpCiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQyCi0g
ICAgaWYgVkFMVUVfUFJPRklMRVIKLSAgICAgICAgc3RvcmVwIHQyLCBBcnJheVByb2ZpbGU6Om1f
bGFzdFNlZW5TdHJ1Y3R1cmVbdDFdCi0gICAgZW5kCi0gICAgbG9hZGIgU3RydWN0dXJlOjptX2lu
ZGV4aW5nVHlwZVt0Ml0sIHQxCi0gICAgYnRpeiB0MSwgSXNBcnJheSwgLm9wR2V0QXJyYXlMZW5n
dGhTbG93Ci0gICAgYnRpeiB0MSwgSGFzQXJyYXlTdG9yYWdlLCAub3BHZXRBcnJheUxlbmd0aFNs
b3cKKyAgICBhcnJheVByb2ZpbGUodDIsIHQxLCB0MCkKKyAgICBidGl6IHQyLCBJc0FycmF5LCAu
b3BHZXRBcnJheUxlbmd0aFNsb3cKKyAgICBidGl6IHQyLCBIYXNBcnJheVN0b3JhZ2UsIC5vcEdl
dEFycmF5TGVuZ3RoU2xvdwogICAgIGxvYWRpIDRbUENdLCB0MQogICAgIGxvYWRwIDMyW1BDXSwg
dDIKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MApAQCAtMTMwOCwxNSAr
MTMwNSwxMyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291CiBfbGxp
bnRfb3BfZ2V0X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgOFtQQ10s
IHQyCi0gICAgbG9hZGkgMTJbUENdLCB0MwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIDE2W1BDXSwgdDMKKyAgICBhcnJheVByb2Zp
bGUodDIsIHQzLCB0MSkKKyAgICBidGl6IHQyLCBIYXNBcnJheVN0b3JhZ2UsIC5vcEdldEJ5VmFs
U2xvdworICAgIGxvYWRpIDEyW1BDXSwgdDMKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQzCi0gICAgbG9hZHAgMTZbUENdLCB0MgotICAgIGlmIFZBTFVF
X1BST0ZJTEVSCi0gICAgICAgIHN0b3JlcCB0MywgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3Ry
dWN0dXJlW3QyXQotICAgIGVuZAotICAgIGJ0cHogU3RydWN0dXJlOjptX2luZGV4aW5nVHlwZVt0
M10sIEhhc0FycmF5U3RvcmFnZSwgLm9wR2V0QnlWYWxTbG93CiAgICAgbG9hZHAgSlNPYmplY3Q6
Om1fYnV0dGVyZmx5W3QwXSwgdDMKICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRl
ciArIEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdwog
ICAgIGxvYWRpIDRbUENdLCB0MApAQCAtMTM5MiwxNCArMTM4NywxMiBAQCBfbGxpbnRfb3BfcHV0
X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZh
bFNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgbG9hZHAg
MTZbUENdLCB0MAorICAgIGFycmF5UHJvZmlsZSh0MiwgdDAsIHQzKQorICAgIGJ0aXogdDIsIEhh
c0FycmF5U3RvcmFnZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlW
YWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MwotICAgIGxvYWRw
IDE2W1BDXSwgdDAKLSAgICBpZiBWQUxVRV9QUk9GSUxFUgotICAgICAgICBzdG9yZXAgdDMsIEFy
cmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MF0KLSAgICBlbmQKLSAgICBidHB6IFN0
cnVjdHVyZTo6bV9pbmRleGluZ1R5cGVbdDNdLCBIYXNBcnJheVN0b3JhZ2UsIC5vcFB1dEJ5VmFs
U2xvdwogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwCiAgICAgYmlhZXEg
dDIsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV92ZWN0b3JMZW5n
dGhbdDBdLCAub3BQdXRCeVZhbFNsb3cKICAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Ig
KyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyODcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIz
LDEyICsxMDIzLDkgQEAgX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgbG9hZHAgMzJb
UEIsIFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5v
cEdldEFycmF5TGVuZ3RoU2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwg
dDIKLSAgICBpZiBWQUxVRV9QUk9GSUxFUgotICAgICAgICBzdG9yZXAgdDIsIEFycmF5UHJvZmls
ZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MV0KLSAgICBlbmQKLSAgICBsb2FkYiBTdHJ1Y3R1cmU6
Om1faW5kZXhpbmdUeXBlW3QyXSwgdDEKLSAgICBidGl6IHQxLCBJc0FycmF5LCAub3BHZXRBcnJh
eUxlbmd0aFNsb3cKLSAgICBidGl6IHQxLCBIYXNBcnJheVN0b3JhZ2UsIC5vcEdldEFycmF5TGVu
Z3RoU2xvdworICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQwKQorICAgIGJ0aXogdDIsIElzQXJy
YXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdworICAgIGJ0aXogdDIsIEhhc0FycmF5U3RvcmFnZSwg
Lm9wR2V0QXJyYXlMZW5ndGhTbG93CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKICAgICBs
b2FkcCA2NFtQQiwgUEMsIDhdLCB0MgogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0
M10sIHQwCkBAIC0xMTUyLDE2ICsxMTQ5LDE0IEBAIF9sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWxfb3UKIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDIKLSAgICBsb2FkaXMgMjRbUEIsIFBDLCA4
XSwgdDMKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MiwgdDAsIC5vcEdldEJ5VmFs
U2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCAz
MltQQiwgUEMsIDhdLCB0MworICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRp
cyAyNFtQQiwgUEMsIDhdLCB0MworICAgIGJ0aXogdDIsIEhhc0FycmF5U3RvcmFnZSwgLm9wR2V0
QnlWYWxTbG93CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQzLCB0MSwgLm9wR2V0
QnlWYWxTbG93KQogICAgIHN4aTJwIHQxLCB0MQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MwotICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQyCi0gICAgaWYgVkFMVUVfUFJP
RklMRVIKLSAgICAgICAgc3RvcmVwIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1
cmVbdDJdCi0gICAgZW5kCi0gICAgYnRieiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3QzXSwg
SGFzQXJyYXlTdG9yYWdlLCAub3BHZXRCeVZhbFNsb3cKICAgICBsb2FkcCBKU09iamVjdDo6bV9i
dXR0ZXJmbHlbdDBdLCB0MwogICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsg
SW5kZXhpbmdIZWFkZXI6Om1fdmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CiAgICAg
bG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKQEAgLTEyMzUsMTUgKzEyMzAsMTMgQEAgX2xsaW50X29w
X3B1dF9ieV92YWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQQywg
OF0sIHQwCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BQdXRCeVZh
bFNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgbG9hZHAg
MzJbUEIsIFBDLCA4XSwgdDAKKyAgICBhcnJheVByb2ZpbGUodDIsIHQwLCB0MykKKyAgICBidGl6
IHQyLCBIYXNBcnJheVN0b3JhZ2UsIC5vcFB1dEJ5VmFsU2xvdwogICAgIGxvYWRpcyAxNltQQiwg
UEMsIDhdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MCwgdDIsIC5vcFB1
dEJ5VmFsU2xvdykKICAgICBzeGkycCB0MiwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QxXSwgdDMKLSAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MAotICAgIGlmIFZBTFVFX1BS
T0ZJTEVSCi0gICAgICAgIHN0b3JlcCB0MywgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0
dXJlW3QwXQotICAgIGVuZAotICAgIGJ0YnogU3RydWN0dXJlOjptX2luZGV4aW5nVHlwZVt0M10s
IEhhc0FycmF5U3RvcmFnZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgbG9hZHAgSlNPYmplY3Q6Om1f
YnV0dGVyZmx5W3QxXSwgdDAKICAgICBiaWFlcSB0MiwgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU2xvdwogICAg
IGJ0cHogQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0MCwgdDIsIDhdLCAub3BQdXRCeVZhbEVtcHR5
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjg3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw2ICsx
ODcsMjAgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIHNsb3dQYXRoKQogICAgICAg
ICBlbmQpCiBlbmQKIAorbWFjcm8gYXJyYXlQcm9maWxlKHN0cnVjdHVyZUFuZEluZGV4aW5nVHlw
ZSwgcHJvZmlsZSwgc2NyYXRjaCkKKyAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVBbmRJ
bmRleGluZ1R5cGUKKyAgICBjb25zdCBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmVBbmRJbmRleGlu
Z1R5cGUKKyAgICBpZiBWQUxVRV9QUk9GSUxFUgorICAgICAgICBzdG9yZXAgc3RydWN0dXJlLCBB
cnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbcHJvZmlsZV0KKyAgICAgICAgbG9hZGIg
U3RydWN0dXJlOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBpbmRleGluZ1R5cGUKKyAgICAg
ICAgbW92ZSAxLCBzY3JhdGNoCisgICAgICAgIGxzaGlmdGkgaW5kZXhpbmdUeXBlLCBzY3JhdGNo
CisgICAgICAgIG9yaSBzY3JhdGNoLCBBcnJheVByb2ZpbGU6Om1fb2JzZXJ2ZWRBcnJheU1vZGVz
W3Byb2ZpbGVdCisgICAgZWxzZQorICAgICAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdU
eXBlW3N0cnVjdHVyZV0sIGluZGV4aW5nVHlwZQorICAgIGVuZAorZW5kCisKIG1hY3JvIGNoZWNr
U3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCiAgICAgaWYgSklUX0VOQUJMRUQKICAgICAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYXRoRXh0
cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCShyZXZpc2lv
biAxMjg3MTEpCisrKyBTb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5NCw2ICsyOTQsMTYgQEAgaW5saW5lIGJvb2wgaXNXaXRoaW5JbnRSYW5nZShmbG9hdCB4
KQogICAgIHJldHVybiB4ID4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6bWluKCkpICYmIHggPCBzdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ+OjptYXgoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIGhh
c1plcm9Pck9uZUJpdHNTZXQoVCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISgodmFsdWUgLSAxKSAm
IHZhbHVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgaGFzVHdvT3JN
b3JlQml0c1NldChUIHZhbHVlKQoreworICAgIHJldHVybiAhaGFzWmVyb09yT25lQml0c1NldCh2
YWx1ZSk7Cit9CisKICNpZiAhQ09NUElMRVIoTVNWQykgJiYgIUNPTVBJTEVSKFJWQ1QpICYmICFP
UyhTT0xBUklTKQogdXNpbmcgc3RkOjppc2Zpbml0ZTsKICNpZiAhQ09NUElMRVJfUVVJUksoR0ND
MTFfR0xPQkFMX0lTSU5GX0lTTkFOKQo=
</data>
<flag name="commit-queue"
          id="176063"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164330</attachid>
            <date>2012-09-16 18:06:46 -0700</date>
            <delta_ts>2012-09-17 00:01:57 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>betterprofile_patch_2.diff</filename>
            <type>text/plain</type>
            <size>21116</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4NzE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDEyLTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXJyYXkgcHJvZmlsaW5nIGhhcyBjb252ZXJnZW5jZSBpc3N1ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2ODkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IGVhY2ggYXJyYXkgcHJvZmlsaW5nIHNp
dGUgbWVyZ2VzIGluIHRoZSBpbmRleGluZyB0eXBlIGl0IG9ic2VydmVkIGludG8KKyAgICAgICAg
dGhlIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIGJpdHNldC4gVGhlIEFycmF5UHJvZmlsZSBhbHNvIHVz
ZXMgdGhpcyB0byBkZXRlY3QKKyAgICAgICAgY2FzZXMgd2hlcmUgdGhlIHN0cnVjdHVyZSBtdXN0
IGhhdmUgZ29uZSBwb2x5bW9ycGhpYyAoaWYgdGhlIGJpdHNldCBpcworICAgICAgICBwb2x5bW9y
cGhpYyB0aGVuIHRoZSBzdHJ1Y3R1cmUgbXVzdCBiZSkuIFRoaXMgYWNoaWV2ZXMgc29tZXRoaW5n
IGxpa2UgdGhlCisgICAgICAgIGJlc3Qgb2YgYm90aCB3b3JsZHM6IG9uIHRoZSBvbmUgaGFuZCwg
d2UgZ2V0IGEgcHJvYmFiaWxpc3RpYyBzdHJ1Y3R1cmUgdGhhdAorICAgICAgICB3ZSBjYW4gdXNl
IHRvIG9wdGltaXplIHRoZSBtb25vbW9ycGhpYyBzdHJ1Y3R1cmUgY2FzZSwgYnV0IG9uIHRoZSBv
dGhlciBoYW5kLAorICAgICAgICB3ZSBnZXQgYW4gYWNjdXJhdGUgdmlldyBvZiB0aGUgc2V0IG9m
IHR5cGVzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZC4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9y
MzIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Ojpv
cjMyKToKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZf
NjQ6Om9yMzIpOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAqIGFz
c2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKFg4NkFzc2VtYmxlcik6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6b3JsX3JtKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVBy
b2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChK
U0M6OkFycmF5UHJvZmlsZTo6YWRkcmVzc09mQXJyYXlNb2Rlcyk6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvZmlsZTo6c3RydWN0dXJlSXNQb2x5bW9ycGhpYyk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAoSklUKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lTWV0aG9kcy5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5n
dGgpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdl
dEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisKIDIwMTItMDktMTYgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBKU09iamVjdC5jcHAgYW5kIEpTQXJy
YXkuY3BwIGhhdmUgaW5jb25zaXN0ZW50IHRlc3RzIGZvciB0aGUgaW52YWxpZCBhcnJheSBpbmRl
eCBjYXNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTI4NzExKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxMyw2ICszMTMsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
b3JyKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQorICAgIAorICAgIHZvaWQgb3IzMihSZWdpc3Rl
cklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoZGVzdC5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2Fk
MzIoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG9yMzIo
c3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICB9CiAKICAgICB2b2lkIG9yMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDEy
ODcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODYuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5vcmxfaW0oaW1tLm1fdmFsdWUsIGFkZHJlc3MubV9wdHIpOwogICAgIH0KICAg
ICAKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCByZWcsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JsX3JtKHJlZywgYWRkcmVzcy5tX3B0cik7
CisgICAgfQorICAgIAogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJsX2ltKGltbS5t
X3ZhbHVlLCBhZGRyZXNzLm1fcHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEyODcx
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsMTIgQEAgcHVibGljOgogICAgICAgICBv
cjMyKGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpKTsKICAgICB9CiAKKyAgICB2b2lkIG9y
MzIoUmVnaXN0ZXJJRCByZWcsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOwor
ICAgICAgICBvcjMyKHJlZywgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpKTsKKyAgICB9CisKICAg
ICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQog
ICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNo
UmVnaXN0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxMjg3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDEsNiArNTQxLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7CiAg
ICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIG9ybF9ybShSZWdpc3RlcklEIHNyYywgY29uc3Qg
dm9pZCogYWRkcikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9PUl9F
dkd2LCBzcmMsIGFkZHIpOworICAgIH0KICNlbmRpZgogCiAgICAgdm9pZCBzdWJsX3JyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCShyZXZpc2lvbiAxMjg3MTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsMTEgQEAgdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJl
ZGljdAogICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gMDsKICAgICB9CiAgICAgCisgICAg
aWYgKGhhc1R3b09yTW9yZUJpdHNTZXQobV9vYnNlcnZlZEFycmF5TW9kZXMpKSB7CisgICAgICAg
IG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYyA9IHRydWU7CisgICAgICAgIG1fZXhwZWN0ZWRTdHJ1
Y3R1cmUgPSAwOworICAgIH0KKyAgICAKICAgICBpZiAob3BlcmF0aW9uID09IENvbGxlY3Rpb24K
ICAgICAgICAgJiYgbV9leHBlY3RlZFN0cnVjdHVyZQogICAgICAgICAmJiAhSGVhcDo6aXNNYXJr
ZWQobV9leHBlY3RlZFN0cnVjdHVyZSkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDEyODcxMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0OyB9CiAgICAgCiAgICAgU3RydWN0dXJlKiogYWRk
cmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZTsg
fQorICAgIEFycmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNl
cnZlZEFycmF5TW9kZXM7IH0KICAgICAKICAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNzksNyArODAsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9u
ID0gTm9PcGVyYXRpb24pOwogICAgIAogICAgIFN0cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkU3RydWN0dXJlOyB9Ci0gICAgYm9vbCBzdHJ1Y3R1
cmVJc1BvbHltb3JwaGljKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGlj
OyB9CisgICAgYm9vbCBzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3N0cnVjdHVyZUlzUG9seW1vcnBoaWM7CisgICAgfQogICAgIGJvb2wgaGFz
RGVmaW5pdGVTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFzdHJ1Y3R1
cmVJc1BvbHltb3JwaGljKCkgJiYgbV9leHBlY3RlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTI4NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ5LDYgKzQ0OSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodW5zaWduZWQpIHsgfQog
ICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKSB7IH0KICNlbmRpZgorICAgICAg
ICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRl
eGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKik7CisgICAgICAgIHZv
aWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgoUmVnaXN0ZXJJRCBzdHJ1
Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCk7CiAKICAgICAgICAgZW51bSBGaW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBL
bm93bk5vdEZpbmFsIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiAxMjg3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDcgKzUyOSwz
MSBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoCiB7CiAgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShtX2J5dGVjb2RlT2Zmc2V0KTsKIH0KKyNlbmRpZiAvLyBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCisKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5n
U2l0ZShSZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3Jh
dGNoLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK3sKKyAgICBSZWdpc3RlcklEIHN0cnVj
dHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKKyAgICBSZWdpc3RlcklEIGluZGV4aW5n
VHlwZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKKyAgICAKKyAgICBpZiAoY2FuQmVPcHRp
bWl6ZWQoKSkgeworICAgICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIGFycmF5UHJvZmlsZS0+YWRk
cmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgICAgIGxvYWQ4KEFkZHJlc3Moc3RydWN0
dXJlLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgaW5kZXhpbmdUeXBlKTsKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gpOworICAgICAgICBsc2hpZnQzMihp
bmRleGluZ1R5cGUsIHNjcmF0Y2gpOworICAgICAgICBvcjMyKHNjcmF0Y2gsIEFic29sdXRlQWRk
cmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOworICAgIH0gZWxzZQor
ICAgICAgICBsb2FkOChBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVP
ZmZzZXQoKSksIGluZGV4aW5nVHlwZSk7Cit9CisKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRl
eGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sK
KyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShz
dHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIHNjcmF0Y2gsIG1fY29kZUJsb2NrLT5nZXRPckFkZEFy
cmF5UHJvZmlsZShieXRlY29kZUluZGV4KSk7CisjZWxzZQorICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGUoc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCAwKTsKICNlbmRpZgorfQog
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxMjg3MTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsMTAgKzIxMCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwg
cmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCi0gICAgc3RvcmVQdHIocmVnVDEsIGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFy
cmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0jZW5kaWYKLSAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6Omlu
ZGV4aW5nVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEhhc0FycmF5U3RvcmFnZSkpKTsKKyAg
ICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgY3VycmVudEluc3RydWN0aW9u
WzRdLnUuYXJyYXlQcm9maWxlKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0MzIoWmVybywg
cmVnVDEsIFRydXN0ZWRJbW0zMihIYXNBcnJheVN0b3JhZ2UpKSk7CiAgICAgCiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMyk7CiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdU
MywgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKQEAgLTI2OSwxMCArMjY3
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7
CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDEpOwotI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBzdG9yZVB0cihyZWdUMSwg
Y3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0
cnVjdHVyZSgpKTsKLSNlbmRpZgotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFk
ZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoSGFzQXJyYXlTdG9yYWdlKSkpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDEs
IHJlZ1QzLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMSwgVHJ1c3RlZEltbTMyKEhhc0FycmF5U3Rv
cmFnZSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlP
ZmZzZXQoKSksIHJlZ1QzKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWws
IHJlZ1QyLCBBZGRyZXNzKHJlZ1QzLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgp
KSkpOwogCkBAIC02MTcsMTAgKzYxMyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVBhdGNo
R2V0QXJyYXlMZW4KICAgICAKICAgICAvLyBDaGVjayBmb3IgYXJyYXkKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0jaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIHN0b3JlUHRyKHJlZ1QyLCBtX2NvZGVCbG9jay0+Z2V0
T3JBZGRBcnJheVByb2ZpbGUoc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXgpLT5hZGRyZXNzT2ZMYXN0
U2VlblN0cnVjdHVyZSgpKTsKLSNlbmRpZgotICAgIGxvYWQ4KEFkZHJlc3MocmVnVDIsIFN0cnVj
dHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCByZWdUMyk7CisgICAgZW1pdEFycmF5UHJvZmls
aW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgocmVnVDIsIHJlZ1QzLCBzdHViSW5mby0+Ynl0ZWNvZGVJ
bmRleCk7CiAgICAgSnVtcCBmYWlsdXJlQ2FzZXMxID0gYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1Qy
LCBUcnVzdGVkSW1tMzIoSXNBcnJheSkpOwogICAgIEp1bXAgZmFpbHVyZUNhc2VzMiA9IGJyYW5j
aFRlc3QzMihaZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKEhhc0FycmF5U3RvcmFnZSkpOwogICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAJKHJldmlzaW9uIDEyODcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsMTAgKzExMSw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KIAogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotI2lmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKLSAgICBzdG9yZVB0cihyZWdUMiwgY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJy
YXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKLSNlbmRpZgotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6aW5k
ZXhpbmdUeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlKSkpOworICAg
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1QzLCBjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5hcnJheVByb2ZpbGUpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihaZXJvLCBy
ZWdUMiwgVHJ1c3RlZEltbTMyKEhhc0FycmF5U3RvcmFnZSkpKTsKIAogICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDIsIEFy
cmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKSk7CkBAIC0yMzYsMTAgKzIzNCw4IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICB6ZXJvRXh0ZW5k
MzJUb1B0cihyZWdUMSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCwgYmFzZSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDIpOwotI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBzdG9y
ZVB0cihyZWdUMiwgY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNz
T2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKLSNlbmRpZgotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRl
c3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdlKSkpOworICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGUocmVnVDIsIHJlZ1QzLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMy
KEhhc0FycmF5U3RvcmFnZSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTT2JqZWN0
OjpidXR0ZXJmbHlPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxl
bmd0aE9mZnNldCgpKSkpOwogCkBAIC02NTYsMTMgKzY1MiwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVuCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
ID0gJm1fY29kZUJsb2NrLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKIAogICAgIC8vIENo
ZWNrIGVheCBpcyBhbiBhcnJheQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QzKTsKLSNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0g
ICAgc3RvcmVQdHIocmVnVDMsIG1fY29kZUJsb2NrLT5nZXRPckFkZEFycmF5UHJvZmlsZShzdHVi
SW5mby0+Ynl0ZWNvZGVJbmRleCktPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOwotI2Vu
ZGlmCi0gICAgbG9hZDgoQWRkcmVzcyhyZWdUMywgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZz
ZXQoKSksIHJlZ1QzKTsKLSAgICBKdW1wIGZhaWx1cmVDYXNlczEgPSBicmFuY2hUZXN0MzIoWmVy
bywgcmVnVDMsIFRydXN0ZWRJbW0zMihJc0FycmF5KSk7Ci0gICAgSnVtcCBmYWlsdXJlQ2FzZXMy
ID0gYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSGFzQXJyYXlTdG9yYWdl
KSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVnVDIpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KHJl
Z1QyLCByZWdUMSwgc3R1YkluZm8tPmJ5dGVjb2RlSW5kZXgpOworICAgIEp1bXAgZmFpbHVyZUNh
c2VzMSA9IGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKElzQXJyYXkpKTsK
KyAgICBKdW1wIGZhaWx1cmVDYXNlczIgPSBicmFuY2hUZXN0MzIoWmVybywgcmVnVDIsIFRydXN0
ZWRJbW0zMihIYXNBcnJheVN0b3JhZ2UpKTsKIAogICAgIC8vIENoZWNrcyBvdXQgb2theSEgLSBn
ZXQgdGhlIGxlbmd0aCBmcm9tIHRoZSBzdG9yYWdlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qw
LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCByZWdUMyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQkocmV2aXNpb24gMTI4NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTExNzYsMTIgKzEx
NzYsOSBAQCBfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBsb2FkcCAxNltQQ10sIHQx
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BH
ZXRBcnJheUxlbmd0aFNsb3cpCiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQy
Ci0gICAgaWYgVkFMVUVfUFJPRklMRVIKLSAgICAgICAgc3RvcmVwIHQyLCBBcnJheVByb2ZpbGU6
Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbdDFdCi0gICAgZW5kCi0gICAgbG9hZGIgU3RydWN0dXJlOjpt
X2luZGV4aW5nVHlwZVt0Ml0sIHQxCi0gICAgYnRpeiB0MSwgSXNBcnJheSwgLm9wR2V0QXJyYXlM
ZW5ndGhTbG93Ci0gICAgYnRpeiB0MSwgSGFzQXJyYXlTdG9yYWdlLCAub3BHZXRBcnJheUxlbmd0
aFNsb3cKKyAgICBhcnJheVByb2ZpbGUodDIsIHQxLCB0MCkKKyAgICBidGl6IHQyLCBJc0FycmF5
LCAub3BHZXRBcnJheUxlbmd0aFNsb3cKKyAgICBidGl6IHQyLCBIYXNBcnJheVN0b3JhZ2UsIC5v
cEdldEFycmF5TGVuZ3RoU2xvdwogICAgIGxvYWRpIDRbUENdLCB0MQogICAgIGxvYWRwIDMyW1BD
XSwgdDIKICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MApAQCAtMTMwOCwx
NSArMTMwNSwxMyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsX291CiBf
bGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgOFtQ
Q10sIHQyCi0gICAgbG9hZGkgMTJbUENdLCB0MwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIDE2W1BDXSwgdDMKKyAgICBhcnJheVBy
b2ZpbGUodDIsIHQzLCB0MSkKKyAgICBidGl6IHQyLCBIYXNBcnJheVN0b3JhZ2UsIC5vcEdldEJ5
VmFsU2xvdworICAgIGxvYWRpIDEyW1BDXSwgdDMKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQzCi0gICAgbG9hZHAgMTZbUENdLCB0MgotICAgIGlmIFZB
TFVFX1BST0ZJTEVSCi0gICAgICAgIHN0b3JlcCB0MywgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVu
U3RydWN0dXJlW3QyXQotICAgIGVuZAotICAgIGJ0cHogU3RydWN0dXJlOjptX2luZGV4aW5nVHlw
ZVt0M10sIEhhc0FycmF5U3RvcmFnZSwgLm9wR2V0QnlWYWxTbG93CiAgICAgbG9hZHAgSlNPYmpl
Y3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMKICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xv
dwogICAgIGxvYWRpIDRbUENdLCB0MApAQCAtMTM5MiwxNCArMTM4NywxMiBAQCBfbGxpbnRfb3Bf
cHV0X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRC
eVZhbFNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgbG9h
ZHAgMTZbUENdLCB0MAorICAgIGFycmF5UHJvZmlsZSh0MiwgdDAsIHQzKQorICAgIGJ0aXogdDIs
IEhhc0FycmF5U3RvcmFnZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0
QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MwotICAgIGxv
YWRwIDE2W1BDXSwgdDAKLSAgICBpZiBWQUxVRV9QUk9GSUxFUgotICAgICAgICBzdG9yZXAgdDMs
IEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MF0KLSAgICBlbmQKLSAgICBidHB6
IFN0cnVjdHVyZTo6bV9pbmRleGluZ1R5cGVbdDNdLCBIYXNBcnJheVN0b3JhZ2UsIC5vcFB1dEJ5
VmFsU2xvdwogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwCiAgICAgYmlh
ZXEgdDIsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV92ZWN0b3JM
ZW5ndGhbdDBdLCAub3BQdXRCeVZhbFNsb3cKICAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0
eQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyODcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIzLDEyICsxMDIzLDkgQEAgX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgbG9hZHAg
MzJbUEIsIFBDLCA4XSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMs
IC5vcEdldEFycmF5TGVuZ3RoU2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qz
XSwgdDIKLSAgICBpZiBWQUxVRV9QUk9GSUxFUgotICAgICAgICBzdG9yZXAgdDIsIEFycmF5UHJv
ZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MV0KLSAgICBlbmQKLSAgICBsb2FkYiBTdHJ1Y3R1
cmU6Om1faW5kZXhpbmdUeXBlW3QyXSwgdDEKLSAgICBidGl6IHQxLCBJc0FycmF5LCAub3BHZXRB
cnJheUxlbmd0aFNsb3cKLSAgICBidGl6IHQxLCBIYXNBcnJheVN0b3JhZ2UsIC5vcEdldEFycmF5
TGVuZ3RoU2xvdworICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQwKQorICAgIGJ0aXogdDIsIElz
QXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdworICAgIGJ0aXogdDIsIEhhc0FycmF5U3RvcmFn
ZSwgLm9wR2V0QXJyYXlMZW5ndGhTbG93CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDEKICAg
ICBsb2FkcCA2NFtQQiwgUEMsIDhdLCB0MgogICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZs
eVt0M10sIHQwCkBAIC0xMTUyLDE2ICsxMTQ5LDE0IEBAIF9sbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWxfb3UKIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDIKLSAgICBsb2FkaXMgMjRbUEIsIFBD
LCA4XSwgdDMKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MiwgdDAsIC5vcEdldEJ5
VmFsU2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2Fk
cCAzMltQQiwgUEMsIDhdLCB0MworICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQxKQorICAgIGxv
YWRpcyAyNFtQQiwgUEMsIDhdLCB0MworICAgIGJ0aXogdDIsIEhhc0FycmF5U3RvcmFnZSwgLm9w
R2V0QnlWYWxTbG93CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQzLCB0MSwgLm9w
R2V0QnlWYWxTbG93KQogICAgIHN4aTJwIHQxLCB0MQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MwotICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQyCi0gICAgaWYgVkFMVUVf
UFJPRklMRVIKLSAgICAgICAgc3RvcmVwIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1
Y3R1cmVbdDJdCi0gICAgZW5kCi0gICAgYnRieiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3Qz
XSwgSGFzQXJyYXlTdG9yYWdlLCAub3BHZXRCeVZhbFNsb3cKICAgICBsb2FkcCBKU09iamVjdDo6
bV9idXR0ZXJmbHlbdDBdLCB0MwogICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVy
ICsgSW5kZXhpbmdIZWFkZXI6Om1fdmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CiAg
ICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKQEAgLTEyMzUsMTUgKzEyMzAsMTMgQEAgX2xsaW50
X29wX3B1dF9ieV92YWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpcyA4W1BCLCBQ
QywgOF0sIHQwCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BQdXRC
eVZhbFNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgbG9h
ZHAgMzJbUEIsIFBDLCA4XSwgdDAKKyAgICBhcnJheVByb2ZpbGUodDIsIHQwLCB0MykKKyAgICBi
dGl6IHQyLCBIYXNBcnJheVN0b3JhZ2UsIC5vcFB1dEJ5VmFsU2xvdwogICAgIGxvYWRpcyAxNltQ
QiwgUEMsIDhdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MCwgdDIsIC5v
cFB1dEJ5VmFsU2xvdykKICAgICBzeGkycCB0MiwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QxXSwgdDMKLSAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0MAotICAgIGlmIFZBTFVF
X1BST0ZJTEVSCi0gICAgICAgIHN0b3JlcCB0MywgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3Ry
dWN0dXJlW3QwXQotICAgIGVuZAotICAgIGJ0YnogU3RydWN0dXJlOjptX2luZGV4aW5nVHlwZVt0
M10sIEhhc0FycmF5U3RvcmFnZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgbG9hZHAgSlNPYmplY3Q6
Om1fYnV0dGVyZmx5W3QxXSwgdDAKICAgICBiaWFlcSB0MiwgLXNpemVvZiBJbmRleGluZ0hlYWRl
ciArIEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU2xvdwog
ICAgIGJ0cHogQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0MCwgdDIsIDhdLCAub3BQdXRCeVZhbEVt
cHR5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxMjg3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw2
ICsxODcsMjAgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIHNsb3dQYXRoKQogICAg
ICAgICBlbmQpCiBlbmQKIAorbWFjcm8gYXJyYXlQcm9maWxlKHN0cnVjdHVyZUFuZEluZGV4aW5n
VHlwZSwgcHJvZmlsZSwgc2NyYXRjaCkKKyAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVB
bmRJbmRleGluZ1R5cGUKKyAgICBjb25zdCBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmVBbmRJbmRl
eGluZ1R5cGUKKyAgICBpZiBWQUxVRV9QUk9GSUxFUgorICAgICAgICBzdG9yZXAgc3RydWN0dXJl
LCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbcHJvZmlsZV0KKyAgICAgICAgbG9h
ZGIgU3RydWN0dXJlOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBpbmRleGluZ1R5cGUKKyAg
ICAgICAgbW92ZSAxLCBzY3JhdGNoCisgICAgICAgIGxzaGlmdGkgaW5kZXhpbmdUeXBlLCBzY3Jh
dGNoCisgICAgICAgIG9yaSBzY3JhdGNoLCBBcnJheVByb2ZpbGU6Om1fb2JzZXJ2ZWRBcnJheU1v
ZGVzW3Byb2ZpbGVdCisgICAgZWxzZQorICAgICAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1faW5kZXhp
bmdUeXBlW3N0cnVjdHVyZV0sIGluZGV4aW5nVHlwZQorICAgIGVuZAorZW5kCisKIG1hY3JvIGNo
ZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCiAgICAgaWYgSklUX0VOQUJMRUQKICAg
ICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYXRo
RXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCShyZXZp
c2lvbiAxMjg3MTEpCisrKyBTb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5NCw2ICsyOTQsMTYgQEAgaW5saW5lIGJvb2wgaXNXaXRoaW5JbnRSYW5nZShmbG9h
dCB4KQogICAgIHJldHVybiB4ID4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWluKCkpICYmIHggPCBzdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ+OjptYXgoKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29s
IGhhc1plcm9Pck9uZUJpdHNTZXQoVCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISgodmFsdWUgLSAx
KSAmIHZhbHVlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgaGFzVHdv
T3JNb3JlQml0c1NldChUIHZhbHVlKQoreworICAgIHJldHVybiAhaGFzWmVyb09yT25lQml0c1Nl
dCh2YWx1ZSk7Cit9CisKICNpZiAhQ09NUElMRVIoTVNWQykgJiYgIUNPTVBJTEVSKFJWQ1QpICYm
ICFPUyhTT0xBUklTKQogdXNpbmcgc3RkOjppc2Zpbml0ZTsKICNpZiAhQ09NUElMRVJfUVVJUkso
R0NDMTFfR0xPQkFMX0lTSU5GX0lTTkFOKQo=
</data>
<flag name="review"
          id="176065"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>