<?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>155139</bug_id>
          
          <creation_ts>2016-03-07 14:57:23 -0800</creation_ts>
          <short_desc>RegExp.prototype.exec() should call into Yarr at most once</short_desc>
          <delta_ts>2016-03-07 16:34: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>JavaScriptCore</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1171776</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-07 14:57:23 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171777</commentid>
    <comment_count>1</comment_count>
      <attachid>273218</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-07 14:57:47 -0800</bug_when>
    <thetext>Created attachment 273218
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171803</commentid>
    <comment_count>2</comment_count>
      <attachid>273228</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-07 15:26:58 -0800</bug_when>
    <thetext>Created attachment 273228
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171807</commentid>
    <comment_count>3</comment_count>
      <attachid>273228</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-07 15:37:42 -0800</bug_when>
    <thetext>Comment on attachment 273228
the patch

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

r=me w/ comments

&gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp:115
&gt; +        array = JSArray::tryCreateUninitialized(vm, globalObject-&gt;regExpMatchesArrayStructure(), regExp-&gt;numSubpatterns() + 1);

I think this can fail.

&gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp:125
&gt; +        RELEASE_ASSERT(array);

Is there ever a valid reason why this would fail? If so, I think we should throw an exception instead.

&gt; Source/JavaScriptCore/runtime/RegExpObject.cpp:188
&gt; +    String input = string-&gt;value(exec);

Can&apos;t this throw OOM?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171808</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-07 15:43:31 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 273228 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273228&amp;action=review
&gt; 
&gt; r=me w/ comments
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp:115
&gt; &gt; +        array = JSArray::tryCreateUninitialized(vm, globalObject-&gt;regExpMatchesArrayStructure(), regExp-&gt;numSubpatterns() + 1);
&gt; 
&gt; I think this can fail.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/RegExpMatchesArray.cpp:125
&gt; &gt; +        RELEASE_ASSERT(array);
&gt; 
&gt; Is there ever a valid reason why this would fail? If so, I think we should
&gt; throw an exception instead.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/RegExpObject.cpp:188
&gt; &gt; +    String input = string-&gt;value(exec);
&gt; 
&gt; Can&apos;t this throw OOM?

I think you&apos;re right about all of these things.  For now, I&apos;m just mirroring the behavior that the code previously had.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171809</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-07 15:44:28 -0800</bug_when>
    <thetext>I have a fix for the debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171818</commentid>
    <comment_count>6</comment_count>
      <attachid>273231</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-07 15:51:01 -0800</bug_when>
    <thetext>Created attachment 273231
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171822</commentid>
    <comment_count>7</comment_count>
      <attachid>273233</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-07 15:56:57 -0800</bug_when>
    <thetext>Created attachment 273233
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171837</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-07 16:34:57 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/197715</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273218</attachid>
            <date>2016-03-07 14:57:47 -0800</date>
            <delta_ts>2016-03-07 15:26:58 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>9886</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAkocmV2
aXNpb24gMTk3NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1
bHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksMTIgQEAKIHR5cGVkZWYgdWludDY0X3Qg
RW5jb2RlZE1hdGNoUmVzdWx0OwogCiBzdHJ1Y3QgTWF0Y2hSZXN1bHQgeworICAgIE1hdGNoUmVz
dWx0KCkKKyAgICAgICAgOiBzdGFydChXVEY6Om5vdEZvdW5kKQorICAgICAgICAsIGVuZCgwKQor
ICAgIHsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdChzaXplX3Qg
c3RhcnQsIHNpemVfdCBlbmQpCiAgICAgICAgIDogc3RhcnQoc3RhcnQpCiAgICAgICAgICwgZW5k
KGVuZCkKQEAgLTUxLDcgKzU3LDcgQEAgc3RydWN0IE1hdGNoUmVzdWx0IHsKIAogICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIE1hdGNoUmVzdWx0IGZhaWxlZCgpCiAgICAgewotICAgICAgICByZXR1
cm4gTWF0Y2hSZXN1bHQoV1RGOjpub3RGb3VuZCwgMCk7CisgICAgICAgIHJldHVybiBNYXRjaFJl
c3VsdCgpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgb3BlcmF0b3IgYm9vbCgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGlj
OgogCiAgICAgTWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKFZNJiwgUmVnRXhwKiwgSlNTdHJpbmcq
LCBjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92ZWN0b3IpOwogICAgIE1h
dGNoUmVzdWx0IHBlcmZvcm1NYXRjaChWTSYsIFJlZ0V4cCosIEpTU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiwgaW50IHN0YXJ0T2Zmc2V0KTsKKyAgICB2b2lkIHJlY29yZE1hdGNoKFZNJiwgUmVnRXhw
KiwgSlNTdHJpbmcqLCBjb25zdCBNYXRjaFJlc3VsdCYpOwogCiAgICAgdm9pZCBzZXRNdWx0aWxp
bmUoYm9vbCBtdWx0aWxpbmUpIHsgbV9tdWx0aWxpbmUgPSBtdWx0aWxpbmU7IH0KICAgICBib29s
IG11bHRpbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXVsdGlsaW5lOyB9CkBAIC0xMjQsNiArMTI1
LDEyIEBAIEFMV0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQgUmVnRXhwQ29uc3RydWMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnJl
Y29yZE1hdGNoKFZNJiB2bSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0
IE1hdGNoUmVzdWx0JiByZXN1bHQpCit7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgbV9jYWNo
ZWRSZXN1bHQucmVjb3JkKHZtLCB0aGlzLCByZWdFeHAsIHN0cmluZywgcmVzdWx0KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBSZWdFeHBDb25zdHJ1Y3Rvcl9oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5jcHAJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1Miwy
MyBAQCBzdGF0aWMgSlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlCiAKIEpTQXJyYXkq
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBpbnB1dCwgUmVnRXhwKiByZWdFeHAsCi0g
ICAgTWF0Y2hSZXN1bHQgcmVzdWx0KQorICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJl
c3VsdCYgcmVzdWx0KQogewogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXkiKTsKICAgICAKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgCisgICAgVmVjdG9yPGludCwgMzI+IHN1
YnBhdHRlcm5SZXN1bHRzOworICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2godm0sIGlu
cHV0LT52YWx1ZShleGVjKSwgc3RhcnRPZmZzZXQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICBp
ZiAocG9zaXRpb24gPT0gLTEpIHsKKyAgICAgICAgcmVzdWx0ID0gTWF0Y2hSZXN1bHQ6OmZhaWxl
ZCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKKyAgICByZXN1bHQuc3RhcnQg
PSBwb3NpdGlvbjsKKyAgICByZXN1bHQuZW5kID0gc3VicGF0dGVyblJlc3VsdHNbMV07CisgICAg
CiAgICAgSlNBcnJheSogYXJyYXk7CiAgICAgaWYgKFVOTElLRUxZKGdsb2JhbE9iamVjdC0+aXNI
YXZpbmdBQmFkVGltZSgpKSkgewogICAgICAgICBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOwpAQCAtNjYsMTIgKzc2LDYgQEAgSlNB
cnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KAogICAgICAgICBhcnJheS0+aW5pdGlhbGl6
ZUluZGV4KHZtLCAwLCBqc1N1YnN0cmluZyh2bSwgZXhlYywgaW5wdXQsIHJlc3VsdC5zdGFydCwg
cmVzdWx0LmVuZCAtIHJlc3VsdC5zdGFydCkpOwogICAgICAgICAKICAgICAgICAgaWYgKHVuc2ln
bmVkIG51bVN1YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpKSB7Ci0gICAgICAg
ICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7Ci0gICAgICAgICAgICBpbnQg
cG9zaXRpb24gPSByZWdFeHAtPm1hdGNoKHZtLCBpbnB1dC0+dmFsdWUoZXhlYyksIHJlc3VsdC5z
dGFydCwgc3VicGF0dGVyblJlc3VsdHMpOwotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChwb3Np
dGlvbiwgcG9zaXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKSA9PSBy
ZXN1bHQuc3RhcnQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5zdGFydCA9PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzBdKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
cmVzdWx0LmVuZCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzFdKSk7
Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVt
U3VicGF0dGVybnM7ICsraSkgewogICAgICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRl
cm5SZXN1bHRzWzIgKiBpXTsKICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKQEAgLTg3
LDEyICs5MSw2IEBAIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSgKICAgICAgICAg
YXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNTdWJzdHJpbmcodm0sIGV4ZWMsIGlucHV0
LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpLCBBcnJheVdpdGhDb250
aWd1b3VzKTsKICAgICAgICAgCiAgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9
IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgewotICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+
IHN1YnBhdHRlcm5SZXN1bHRzOwotICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5t
YXRjaCh2bSwgaW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1
bHRzKTsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAg
JiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKLSAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0
ZXJuUmVzdWx0c1swXSkpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOwotICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsK
ICAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMTk3NjUw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1K
U0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1N0cmluZyosIFJlZ0V4cCosIE1hdGNoUmVzdWx0KTsKK0pTQXJyYXkqIGNyZWF0ZVJl
Z0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwg
UmVnRXhwKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0Jik7CitpbmxpbmUgSlNB
cnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZywgUmVnRXhwKiByZWdFeHAsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KQoreworICAgIE1hdGNoUmVzdWx0IGlnbm9yZWRSZXN1bHQ7Cisg
ICAgcmV0dXJuIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIHN0
cmluZywgcmVnRXhwLCBzdGFydE9mZnNldCwgaWdub3JlZFJlc3VsdCk7Cit9CiBTdHJ1Y3R1cmUq
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7
CiBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSwxMSArMTU5LDU4IEBAIHZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUK
ICAgICBCYXNlOjpwdXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9
CiAKK0FMV0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0TGFzdEluZGV4QXNVbnNpZ25lZCgKKyAgICBF
eGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBjb25zdCBTdHJpbmcm
IGlucHV0KQoreworICAgIEpTVmFsdWUganNMYXN0SW5kZXggPSByZWdFeHBPYmplY3QtPmdldExh
c3RJbmRleCgpOworICAgIHVuc2lnbmVkIGxhc3RJbmRleDsKKyAgICBpZiAoTElLRUxZKGpzTGFz
dEluZGV4LmlzVUludDMyKCkpKSB7CisgICAgICAgIGxhc3RJbmRleCA9IGpzTGFzdEluZGV4LmFz
VUludDMyKCk7CisgICAgICAgIGlmIChsYXN0SW5kZXggPiBpbnB1dC5sZW5ndGgoKSkgeworICAg
ICAgICAgICAgcmVnRXhwT2JqZWN0LT5zZXRMYXN0SW5kZXgoZXhlYywgMCk7CisgICAgICAgICAg
ICByZXR1cm4gVUlOVF9NQVg7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBkb3Vi
bGUgZG91YmxlTGFzdEluZGV4ID0ganNMYXN0SW5kZXgudG9JbnRlZ2VyKGV4ZWMpOworICAgICAg
ICBpZiAoZG91YmxlTGFzdEluZGV4IDwgMCB8fCBkb3VibGVMYXN0SW5kZXggPiBpbnB1dC5sZW5n
dGgoKSkgeworICAgICAgICAgICAgcmVnRXhwT2JqZWN0LT5zZXRMYXN0SW5kZXgoZXhlYywgMCk7
CisgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CisgICAgICAgIH0KKyAgICAgICAgbGFzdElu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRvdWJsZUxhc3RJbmRleCk7CisgICAgfQorICAg
IHJldHVybiBsYXN0SW5kZXg7Cit9CisKIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmlu
ZykKIHsKLSAgICBpZiAoTWF0Y2hSZXN1bHQgcmVzdWx0ID0gbWF0Y2goZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBzdHJpbmcpKQotICAgICAgICByZXR1cm4gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAoKSwgcmVzdWx0KTsKLSAgICByZXR1cm4g
anNOdWxsKCk7CisgICAgUmVnRXhwKiByZWdFeHAgPSB0aGlzLT5yZWdFeHAoKTsKKyAgICBSZWdF
eHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENv
bnN0cnVjdG9yKCk7CisgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAoIXJlZ0V4cC0+Z2xvYmFs
KCkpIHsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworICAgICAgICBKU0FycmF5KiBhcnJh
eSA9IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZywg
cmVnRXhwLCAwLCByZXN1bHQpOworICAgICAgICBpZiAoIWFycmF5KQorICAgICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOworICAgICAgICByZWdFeHBDb25zdHJ1Y3Rvci0+cmVjb3JkTWF0Y2godm0s
IHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQor
CisgICAgdW5zaWduZWQgbGFzdEluZGV4ID0gZ2V0TGFzdEluZGV4QXNVbnNpZ25lZChleGVjLCB0
aGlzLCBpbnB1dCk7CisgICAgaWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkKKyAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOworICAgIAorICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAgICBKU0FycmF5
KiBhcnJheSA9CisgICAgICAgIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBnbG9iYWxP
YmplY3QsIHN0cmluZywgcmVnRXhwLCBsYXN0SW5kZXgsIHJlc3VsdCk7CisgICAgaWYgKCFhcnJh
eSkgeworICAgICAgICBzZXRMYXN0SW5kZXgoZXhlYywgMCk7CisgICAgICAgIHJldHVybiBqc051
bGwoKTsKKyAgICB9CisgICAgc2V0TGFzdEluZGV4KGV4ZWMsIHJlc3VsdC5lbmQpOworICAgIHJl
Z0V4cENvbnN0cnVjdG9yLT5yZWNvcmRNYXRjaCh2bSwgcmVnRXhwLCBzdHJpbmcsIHJlc3VsdCk7
CisgICAgcmV0dXJuIGFycmF5OwogfQogCiAvLyBTaGFyZWQgaW1wbGVtZW50YXRpb24gdXNlZCBi
eSB0ZXN0IGFuZCBleGVjLgpAQCAtMTc2LDIzICsyMjMsMTAgQEAgTWF0Y2hSZXN1bHQgUmVnRXhw
T2JqZWN0OjptYXRjaChFeGVjU3RhdAogICAgIGlmICghcmVnRXhwLT5nbG9iYWwoKSkKICAgICAg
ICAgcmV0dXJuIHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2godm0sIHJlZ0V4cCwgc3Ry
aW5nLCBpbnB1dCwgMCk7CiAKLSAgICBKU1ZhbHVlIGpzTGFzdEluZGV4ID0gZ2V0TGFzdEluZGV4
KCk7Ci0gICAgdW5zaWduZWQgbGFzdEluZGV4OwotICAgIGlmIChMSUtFTFkoanNMYXN0SW5kZXgu
aXNVSW50MzIoKSkpIHsKLSAgICAgICAgbGFzdEluZGV4ID0ganNMYXN0SW5kZXguYXNVSW50MzIo
KTsKLSAgICAgICAgaWYgKGxhc3RJbmRleCA+IGlucHV0Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAg
ICBzZXRMYXN0SW5kZXgoZXhlYywgMCk7Ci0gICAgICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQ6
OmZhaWxlZCgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZG91YmxlIGRvdWJs
ZUxhc3RJbmRleCA9IGpzTGFzdEluZGV4LnRvSW50ZWdlcihleGVjKTsKLSAgICAgICAgaWYgKGRv
dWJsZUxhc3RJbmRleCA8IDAgfHwgZG91YmxlTGFzdEluZGV4ID4gaW5wdXQubGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgIHNldExhc3RJbmRleChleGVjLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdDo6ZmFpbGVkKCk7Ci0gICAgICAgIH0KLSAgICAgICAgbGFzdEluZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRvdWJsZUxhc3RJbmRleCk7Ci0gICAgfQotCisgICAgdW5zaWdu
ZWQgbGFzdEluZGV4ID0gZ2V0TGFzdEluZGV4QXNVbnNpZ25lZChleGVjLCB0aGlzLCBpbnB1dCk7
CisgICAgaWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVz
dWx0OjpmYWlsZWQoKTsKKyAgICAKICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25z
dHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKHZtLCByZWdFeHAsIHN0cmluZywgaW5wdXQsIGxhc3RJbmRl
eCk7CiAgICAgc2V0TGFzdEluZGV4KGV4ZWMsIHJlc3VsdC5lbmQpOwogICAgIHJldHVybiByZXN1
bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzIsNyArMTA3
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICBNYXRj
aFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCp2bSwgcmVn
RXhwLCBzdHJpbmcsIHMsIDApOwogICAgIC8vIGNhc2Ugd2l0aG91dCAnZycgZmxhZyBpcyBoYW5k
bGVkIGxpa2UgUmVnRXhwLnByb3RvdHlwZS5leGVjCiAgICAgaWYgKCFnbG9iYWwpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAsIHJlc3VsdCkgOiBqc051bGwoKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVnRXhwTWF0
Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAsIHJlc3VsdC5zdGFy
dCkgOiBqc051bGwoKSk7CiAKICAgICAvLyByZXR1cm4gYXJyYXkgb2YgbWF0Y2hlcwogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273228</attachid>
            <date>2016-03-07 15:26:58 -0800</date>
            <delta_ts>2016-03-07 15:51:01 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16072</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDE2LTAzLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVnRXhwLnByb3RvdHlwZS5leGVjIHNob3VsZCBjYWxsIGludG8gWWFyciBhdCBtb3N0IG9uY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTEzOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciBhcHBh
cmVudGx5IG5vIGdvb2QgcmVhc29uLCBSZWdFeHAucHJvdG90eXBlLm1hdGNoKCkgd2FzIGNhbGxp
bmcgaW50byBZYXJyIHR3aWNlLCBhbG1vc3QKKyAgICAgICAgYXMgaWYgaXQgd2FzIGhvcGluZyB0
aGF0IHRoZSBub24tbWF0Y2hpbmcgY2FzZSB3YXMgc28gY29tbW9uIHRoYXQgaXQgd2FzIGJlc3Qg
dG8gaGF2ZSB0aGUKKyAgICAgICAgbWF0Y2hpbmcgY2FzZSBkbyB0aGUgd29yayBhbGwgb3ZlciBh
Z2Fpbi4KKworICAgICAgICBUaGlzIGlzIGEgNCUgc3BlZWQtdXAgb24gT2N0YW5lL3JlZ2V4cC4g
SXQncyBhbHNvIGEgbWF0dGVyIG9mIGNvbW1vbiBzZW5zZTogd2Ugc2hvdWxkIG5vdCBiZQorICAg
ICAgICBpbiB0aGUgYnVzaW5lc3Mgb2YgcHJlc3VtaW5nIHdoZXRoZXIgc29tZW9uZSdzIG1hdGNo
IHdpbGwgc3VjY2VlZCBvciBmYWlsLiBUaGUgaW5jcmVhc2VkCisgICAgICAgIGNvc3Qgb2YgcnVu
bmluZyBZYXJyIHR3aWNlIGlzIHNvIG11Y2ggbGFyZ2VyIHRoYW4gd2hhdGV2ZXIgc2F2aW5ncyB3
ZSB3ZXJlIGdldHRpbmcgZnJvbQorICAgICAgICBydW5uaW5nIGEgbWF0Y2gtb25seSByZWdleHAg
dGhhdCB0aGlzIGlzIGp1c3Qgbm90IGEgZ29vZCBvdmVyYWxsIGRlYWwgZm9yIHRoZSBlbmdpbmUu
CisKKyAgICAgICAgQWxzbywgaXQncyBpbnRlcmVzdGluZyB0aGF0IHdlIGFyZSBzZWVpbmcgYSA0
JSBzcGVlZC11cCBvbiByZWdleHAgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IGEKKyAgICAgICAgbWFq
b3JpdHkgKGFsbW9zdCBhIHN1cGVybWFqb3JpdHksIEkgdGhpbmspIG9mIGNhbGxzIGludG8gUmVn
RXhwLnByb3RvdHlwZS5tYXRjaCgpIGFyZSBmYWlsZWQKKyAgICAgICAgbWF0Y2hlcy4gU28sIHRo
aXMgY2hhbmdlIGlzIGEgNCUgc3BlZWQtdXAgZGVzcGl0ZSBiZWluZyBhIHNsb3cgZG93biBvbiB0
aGUgY29tbW9uIGNhc2UuIFRoYXQKKyAgICAgICAgdGVsbHMgeW91IGp1c3QgaG93IGJhZCB0aGUg
b2xkIGJlaGF2aW9yIHdhcyBvbiB0aGUgdW5jb21tb24gY2FzZS4KKworICAgICAgICAqIHJ1bnRp
bWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKE1hdGNoUmVzdWx0OjpNYXRjaFJlc3VsdCk6Cisg
ICAgICAgIChNYXRjaFJlc3VsdDo6ZmFpbGVkKToKKyAgICAgICAgKE1hdGNoUmVzdWx0OjpvcGVy
YXRvciBib29sKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHA6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6bGFzdFJlc3VsdCk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1
Y3Rvcjo6c2V0TXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6Om11
bHRpbGluZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpwZXJmb3JtTWF0Y2gp
OgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6cmVjb3JkTWF0Y2gpOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
UmVnRXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKEpTQzo6Y3JlYXRlRW1wdHlSZWdFeHBNYXRj
aGVzQXJyYXkpOgorICAgICAgICAoSlNDOjpjcmVhdGVTdHJ1Y3R1cmVJbXBsKToKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpnZXRMYXN0SW5k
ZXhBc1Vuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpleGVjKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwT2JqZWN0OjptYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRMYXN0SW5kZXgpOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnRlc3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTWF0Y2gpOgorCiAy
MDE2LTAzLTA3ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHJlbmFtZSBnZW5lcmF0ZWQgKkVudW1Db252ZXJzaW9uSGVscGVycy5oIHRvICpU
eXBlQ29udmVyc2lvbnMuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
Y2hSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRjaFJlc3VsdC5oCShyZXZpc2lvbiAxOTc2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXRjaFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSwxMiBAQAog
dHlwZWRlZiB1aW50NjRfdCBFbmNvZGVkTWF0Y2hSZXN1bHQ7CiAKIHN0cnVjdCBNYXRjaFJlc3Vs
dCB7CisgICAgTWF0Y2hSZXN1bHQoKQorICAgICAgICA6IHN0YXJ0KFdURjo6bm90Rm91bmQpCisg
ICAgICAgICwgZW5kKDApCisgICAgeworICAgIH0KKyAgICAKICAgICBBTFdBWVNfSU5MSU5FIE1h
dGNoUmVzdWx0KHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKICAgICAgICAgOiBzdGFydChzdGFy
dCkKICAgICAgICAgLCBlbmQoZW5kKQpAQCAtNTEsMTAgKzU3LDEwIEBAIHN0cnVjdCBNYXRjaFJl
c3VsdCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBNYXRjaFJlc3VsdCBmYWlsZWQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KFdURjo6bm90Rm91bmQsIDApOworICAg
ICAgICByZXR1cm4gTWF0Y2hSZXN1bHQoKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIG9w
ZXJhdG9yIGJvb2woKQorICAgIEFMV0FZU19JTkxJTkUgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
CiAgICAgewogICAgICAgICByZXR1cm4gc3RhcnQgIT0gV1RGOjpub3RGb3VuZDsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hl
ZFJlc3VsdC5jcHAJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1
LDEwIEBAIEpTQXJyYXkqIFJlZ0V4cENhY2hlZFJlc3VsdDo6bGFzdFJlc3VsdCgKIHsKICAgICBp
ZiAoIW1fcmVpZmllZCkgewogICAgICAgICBtX3JlaWZpZWRJbnB1dC5zZXQoZXhlYy0+dm0oKSwg
b3duZXIsIG1fbGFzdElucHV0LmdldCgpKTsKLSAgICAgICAgbV9yZWlmaWVkUmVzdWx0LnNldChl
eGVjLT52bSgpLCBvd25lciwgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQo
KSwgbV9yZXN1bHQpKTsKKyAgICAgICAgaWYgKG1fcmVzdWx0KQorICAgICAgICAgICAgbV9yZWlm
aWVkUmVzdWx0LnNldChleGVjLT52bSgpLCBvd25lciwgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbV9sYXN0SW5wdXQuZ2V0KCksIG1f
bGFzdFJlZ0V4cC5nZXQoKSwgbV9yZXN1bHQuc3RhcnQpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9yZWlmaWVkUmVzdWx0LnNldChleGVjLT52bSgpLCBvd25lciwgY3JlYXRlRW1wdHlS
ZWdFeHBNYXRjaGVzQXJyYXkoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtX2xhc3RJbnB1
dC5nZXQoKSwgbV9sYXN0UmVnRXhwLmdldCgpKSk7CiAgICAgICAgIG1fcmVpZmllZCA9IHRydWU7
CiAgICAgfQogICAgIHJldHVybiBtX3JlaWZpZWRSZXN1bHQuZ2V0KCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlz
aW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogCiAgICAg
TWF0Y2hSZXN1bHQgcGVyZm9ybU1hdGNoKFZNJiwgUmVnRXhwKiwgSlNTdHJpbmcqLCBjb25zdCBT
dHJpbmcmLCBpbnQgc3RhcnRPZmZzZXQsIGludCoqIG92ZWN0b3IpOwogICAgIE1hdGNoUmVzdWx0
IHBlcmZvcm1NYXRjaChWTSYsIFJlZ0V4cCosIEpTU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgaW50
IHN0YXJ0T2Zmc2V0KTsKKyAgICB2b2lkIHJlY29yZE1hdGNoKFZNJiwgUmVnRXhwKiwgSlNTdHJp
bmcqLCBjb25zdCBNYXRjaFJlc3VsdCYpOwogCiAgICAgdm9pZCBzZXRNdWx0aWxpbmUoYm9vbCBt
dWx0aWxpbmUpIHsgbV9tdWx0aWxpbmUgPSBtdWx0aWxpbmU7IH0KICAgICBib29sIG11bHRpbGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbXVsdGlsaW5lOyB9CkBAIC0xMjQsNiArMTI1LDEyIEBAIEFM
V0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQgUmVnRXhwQ29uc3RydWMKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnJlY29yZE1hdGNo
KFZNJiB2bSwgUmVnRXhwKiByZWdFeHAsIEpTU3RyaW5nKiBzdHJpbmcsIGNvbnN0IE1hdGNoUmVz
dWx0JiByZXN1bHQpCit7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgbV9jYWNoZWRSZXN1bHQu
cmVjb3JkKHZtLCB0aGlzLCByZWdFeHAsIHN0cmluZywgcmVzdWx0KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBSZWdFeHBDb25zdHJ1Y3Rvcl9oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJ
KHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDEzICs1MiwyMyBAQCBzdGF0
aWMgSlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlCiAKIEpTQXJyYXkqIGNyZWF0ZVJl
Z0V4cE1hdGNoZXNBcnJheSgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU3RyaW5nKiBpbnB1dCwgUmVnRXhwKiByZWdFeHAsCi0gICAgTWF0Y2hS
ZXN1bHQgcmVzdWx0KQorICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYgcmVz
dWx0KQogewogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJjcmVhdGVSZWdFeHBN
YXRjaGVzQXJyYXkiKTsKICAgICAKICAgICBBU1NFUlQocmVzdWx0KTsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgCisgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5S
ZXN1bHRzOworICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2godm0sIGlucHV0LT52YWx1
ZShleGVjKSwgc3RhcnRPZmZzZXQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICBpZiAocG9zaXRp
b24gPT0gLTEpIHsKKyAgICAgICAgcmVzdWx0ID0gTWF0Y2hSZXN1bHQ6OmZhaWxlZCgpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKKyAgICByZXN1bHQuc3RhcnQgPSBwb3NpdGlv
bjsKKyAgICByZXN1bHQuZW5kID0gc3VicGF0dGVyblJlc3VsdHNbMV07CisgICAgCiAgICAgSlNB
cnJheSogYXJyYXk7CiAgICAgaWYgKFVOTElLRUxZKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFk
VGltZSgpKSkgewogICAgICAgICBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQodm0sIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCksIHJlZ0V4
cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOwpAQCAtNjYsMTIgKzc2LDYgQEAgSlNBcnJheSogY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5KAogICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZt
LCAwLCBqc1N1YnN0cmluZyh2bSwgZXhlYywgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVu
ZCAtIHJlc3VsdC5zdGFydCkpOwogICAgICAgICAKICAgICAgICAgaWYgKHVuc2lnbmVkIG51bVN1
YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpKSB7Ci0gICAgICAgICAgICBWZWN0
b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7Ci0gICAgICAgICAgICBpbnQgcG9zaXRpb24g
PSByZWdFeHAtPm1hdGNoKHZtLCBpbnB1dC0+dmFsdWUoZXhlYyksIHJlc3VsdC5zdGFydCwgc3Vi
cGF0dGVyblJlc3VsdHMpOwotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChwb3NpdGlvbiwgcG9z
aXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKSA9PSByZXN1bHQuc3Rh
cnQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5zdGFydCA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzBdKSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LmVu
ZCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzFdKSk7Ci0gICAgICAg
ICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVy
bnM7ICsraSkgewogICAgICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRz
WzIgKiBpXTsKICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKQEAgLTg3LDEyICs5MSw2
IEBAIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSgKICAgICAgICAgYXJyYXktPmlu
aXRpYWxpemVJbmRleCh2bSwgMCwganNTdWJzdHJpbmcodm0sIGV4ZWMsIGlucHV0LCByZXN1bHQu
c3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+
bnVtU3VicGF0dGVybnMoKSkgewotICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRl
cm5SZXN1bHRzOwotICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwg
aW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKLSAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKLSAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0
c1swXSkpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07CiAgICAgICAgICAg
ICAgICAgaWYgKHN0YXJ0ID49IDApCkBAIC0xMDksNiArMTA3LDM2IEBAIEpTQXJyYXkqIGNyZWF0
ZVJlZ0V4cE1hdGNoZXNBcnJheSgKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKK0pTQXJyYXkqIGNy
ZWF0ZUVtcHR5UmVnRXhwTWF0Y2hlc0FycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTU3RyaW5nKiBpbnB1dCwgUmVnRXhwKiByZWdFeHApCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIEpTQXJyYXkqIGFycmF5OworICAgIGlmIChVTkxJS0VMWShnbG9i
YWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpIHsKKyAgICAgICAgYXJyYXkgPSBKU0FycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAgICAgICAg
CisgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpzRW1wdHlTdHJpbmcoJnZt
KSk7CisgICAgICAgIAorICAgICAgICBpZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdF
eHAtPm51bVN1YnBhdHRlcm5zKCkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7
IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkKKyAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlh
bGl6ZUluZGV4KHZtLCBpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7
CisgICAgICAgIGFycmF5ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJh
eSh2bSwgZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgcmVnRXhw
LT5udW1TdWJwYXR0ZXJucygpICsgMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5KTsK
KyAgICAgICAgCisgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpzRW1wdHlT
dHJpbmcoJnZtKSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAgICAgIAorICAgICAgICBpZiAo
dW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkpIHsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkK
KyAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBqc1VuZGVmaW5l
ZCgpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFycmF5
LT5wdXREaXJlY3Qodm0sIGluZGV4UHJvcGVydHlPZmZzZXQsIGpzTnVtYmVyKC0xKSk7CisgICAg
YXJyYXktPnB1dERpcmVjdCh2bSwgaW5wdXRQcm9wZXJ0eU9mZnNldCwgaW5wdXQpOworICAgIHJl
dHVybiBhcnJheTsKK30KKwogc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlSW1wbChW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEluZGV4aW5nVHlwZSBpbmRleGlu
Z1R5cGUpCiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hl
c0FycmF5LmgJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiwxMyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBSZWdFeHAqLCBNYXRjaFJl
c3VsdCk7CitKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBKU1N0cmluZyosIFJlZ0V4cCosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBN
YXRjaFJlc3VsdCYpOworaW5saW5lIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBz
dHJpbmcsIFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBzdGFydE9mZnNldCkKK3sKKyAgICBNYXRj
aFJlc3VsdCBpZ25vcmVkUmVzdWx0OworICAgIHJldHVybiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJy
YXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIHJlZ0V4cCwgc3RhcnRPZmZzZXQsIGlnbm9y
ZWRSZXN1bHQpOworfQorSlNBcnJheSogY3JlYXRlRW1wdHlSZWdFeHBNYXRjaGVzQXJyYXkoSlNH
bG9iYWxPYmplY3QqLCBKU1N0cmluZyosIFJlZ0V4cCopOwogU3RydWN0dXJlKiBjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwogU3RydWN0dXJl
KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBPYmplY3QuY3BwCShyZXZpc2lvbiAxOTc2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTEgKzE1OSw1
OCBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlCiAgICAgQmFzZTo6
cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCitBTFdBWVNf
SU5MSU5FIHVuc2lnbmVkIGdldExhc3RJbmRleEFzVW5zaWduZWQoCisgICAgRXhlY1N0YXRlKiBl
eGVjLCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgY29uc3QgU3RyaW5nJiBpbnB1dCkKK3sK
KyAgICBKU1ZhbHVlIGpzTGFzdEluZGV4ID0gcmVnRXhwT2JqZWN0LT5nZXRMYXN0SW5kZXgoKTsK
KyAgICB1bnNpZ25lZCBsYXN0SW5kZXg7CisgICAgaWYgKExJS0VMWShqc0xhc3RJbmRleC5pc1VJ
bnQzMigpKSkgeworICAgICAgICBsYXN0SW5kZXggPSBqc0xhc3RJbmRleC5hc1VJbnQzMigpOwor
ICAgICAgICBpZiAobGFzdEluZGV4ID4gaW5wdXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHJl
Z0V4cE9iamVjdC0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOworICAgICAgICAgICAgcmV0dXJuIFVJ
TlRfTUFYOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG91YmxlIGRvdWJsZUxh
c3RJbmRleCA9IGpzTGFzdEluZGV4LnRvSW50ZWdlcihleGVjKTsKKyAgICAgICAgaWYgKGRvdWJs
ZUxhc3RJbmRleCA8IDAgfHwgZG91YmxlTGFzdEluZGV4ID4gaW5wdXQubGVuZ3RoKCkpIHsKKyAg
ICAgICAgICAgIHJlZ0V4cE9iamVjdC0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOworICAgICAgICAg
ICAgcmV0dXJuIFVJTlRfTUFYOworICAgICAgICB9CisgICAgICAgIGxhc3RJbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihkb3VibGVMYXN0SW5kZXgpOworICAgIH0KKyAgICByZXR1cm4gbGFz
dEluZGV4OworfQorCiBKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCiB7Ci0gICAg
aWYgKE1hdGNoUmVzdWx0IHJlc3VsdCA9IG1hdGNoKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5n
KSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBnbG9iYWxP
YmplY3QsIHN0cmluZywgcmVnRXhwKCksIHJlc3VsdCk7Ci0gICAgcmV0dXJuIGpzTnVsbCgpOwor
ICAgIFJlZ0V4cCogcmVnRXhwID0gdGhpcy0+cmVnRXhwKCk7CisgICAgUmVnRXhwQ29uc3RydWN0
b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3Rvcigp
OworICAgIFN0cmluZyBpbnB1dCA9IHN0cmluZy0+dmFsdWUoZXhlYyk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgaWYgKCFyZWdFeHAtPmdsb2JhbCgpKSB7CisgICAg
ICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIHJlZ0V4cCwgMCwg
cmVzdWx0KTsKKyAgICAgICAgaWYgKCFhcnJheSkKKyAgICAgICAgICAgIHJldHVybiBqc051bGwo
KTsKKyAgICAgICAgcmVnRXhwQ29uc3RydWN0b3ItPnJlY29yZE1hdGNoKHZtLCByZWdFeHAsIHN0
cmluZywgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGFycmF5OworICAgIH0KKworICAgIHVuc2ln
bmVkIGxhc3RJbmRleCA9IGdldExhc3RJbmRleEFzVW5zaWduZWQoZXhlYywgdGhpcywgaW5wdXQp
OworICAgIGlmIChsYXN0SW5kZXggPT0gVUlOVF9NQVgpCisgICAgICAgIHJldHVybiBqc051bGwo
KTsKKyAgICAKKyAgICBNYXRjaFJlc3VsdCByZXN1bHQ7CisgICAgSlNBcnJheSogYXJyYXkgPQor
ICAgICAgICBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJp
bmcsIHJlZ0V4cCwgbGFzdEluZGV4LCByZXN1bHQpOworICAgIGlmICghYXJyYXkpIHsKKyAgICAg
ICAgc2V0TGFzdEluZGV4KGV4ZWMsIDApOworICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAg
fQorICAgIHNldExhc3RJbmRleChleGVjLCByZXN1bHQuZW5kKTsKKyAgICByZWdFeHBDb25zdHJ1
Y3Rvci0+cmVjb3JkTWF0Y2godm0sIHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOworICAgIHJldHVy
biBhcnJheTsKIH0KIAogLy8gU2hhcmVkIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgdGVzdCBhbmQg
ZXhlYy4KQEAgLTE3NiwyMyArMjIzLDEwIEBAIE1hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0
Y2goRXhlY1N0YXQKICAgICBpZiAoIXJlZ0V4cC0+Z2xvYmFsKCkpCiAgICAgICAgIHJldHVybiBy
ZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKHZtLCByZWdFeHAsIHN0cmluZywgaW5wdXQs
IDApOwogCi0gICAgSlNWYWx1ZSBqc0xhc3RJbmRleCA9IGdldExhc3RJbmRleCgpOwotICAgIHVu
c2lnbmVkIGxhc3RJbmRleDsKLSAgICBpZiAoTElLRUxZKGpzTGFzdEluZGV4LmlzVUludDMyKCkp
KSB7Ci0gICAgICAgIGxhc3RJbmRleCA9IGpzTGFzdEluZGV4LmFzVUludDMyKCk7Ci0gICAgICAg
IGlmIChsYXN0SW5kZXggPiBpbnB1dC5sZW5ndGgoKSkgewotICAgICAgICAgICAgc2V0TGFzdElu
ZGV4KGV4ZWMsIDApOwotICAgICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0OjpmYWlsZWQoKTsK
LSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvdWJsZSBkb3VibGVMYXN0SW5kZXgg
PSBqc0xhc3RJbmRleC50b0ludGVnZXIoZXhlYyk7Ci0gICAgICAgIGlmIChkb3VibGVMYXN0SW5k
ZXggPCAwIHx8IGRvdWJsZUxhc3RJbmRleCA+IGlucHV0Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAg
ICBzZXRMYXN0SW5kZXgoZXhlYywgMCk7Ci0gICAgICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQ6
OmZhaWxlZCgpOwotICAgICAgICB9Ci0gICAgICAgIGxhc3RJbmRleCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkb3VibGVMYXN0SW5kZXgpOwotICAgIH0KLQorICAgIHVuc2lnbmVkIGxhc3RJbmRl
eCA9IGdldExhc3RJbmRleEFzVW5zaWduZWQoZXhlYywgdGhpcywgaW5wdXQpOworICAgIGlmIChs
YXN0SW5kZXggPT0gVUlOVF9NQVgpCisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdDo6ZmFpbGVk
KCk7CisgICAgCiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwQ29uc3RydWN0b3ItPnBl
cmZvcm1NYXRjaCh2bSwgcmVnRXhwLCBzdHJpbmcsIGlucHV0LCBsYXN0SW5kZXgpOwogICAgIHNl
dExhc3RJbmRleChleGVjLCByZXN1bHQuZW5kKTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJldmlzaW9u
IDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fbGFzdEluZGV4LmdldCgpOwogICAgIH0KIAotICAgIGJvb2wgdGVzdChFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0
dXJuIG1hdGNoKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nKTsgfQorICAgIGJvb2wgdGVzdChF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBz
dHJpbmcpIHsgcmV0dXJuICEhbWF0Y2goZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcpOyB9CiAg
ICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsK
IAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5NzY1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNzIsNyArMTA3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25z
dHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCp2bSwgcmVnRXhwLCBzdHJpbmcsIHMsIDApOwogICAgIC8v
IGNhc2Ugd2l0aG91dCAnZycgZmxhZyBpcyBoYW5kbGVkIGxpa2UgUmVnRXhwLnByb3RvdHlwZS5l
eGVjCiAgICAgaWYgKCFnbG9iYWwpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0ID8gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5n
LCByZWdFeHAsIHJlc3VsdCkgOiBqc051bGwoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0ID8gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RyaW5nLCByZWdFeHAsIHJlc3VsdC5zdGFydCkgOiBqc051bGwoKSk7CiAKICAgICAvLyBy
ZXR1cm4gYXJyYXkgb2YgbWF0Y2hlcwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7Cg==
</data>
<flag name="review"
          id="297829"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273231</attachid>
            <date>2016-03-07 15:51:01 -0800</date>
            <delta_ts>2016-03-07 15:56:57 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16825</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDE2LTAzLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVnRXhwLnByb3RvdHlwZS5leGVjKCkgc2hvdWxkIGNhbGwgaW50byBZYXJyIGF0IG1vc3Qgb25j
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgRm9yIGFwcGFy
ZW50bHkgbm8gZ29vZCByZWFzb24sIFJlZ0V4cC5wcm90b3R5cGUubWF0Y2goKSB3YXMgY2FsbGlu
ZyBpbnRvIFlhcnIgdHdpY2UsIGFsbW9zdAorICAgICAgICBhcyBpZiBpdCB3YXMgaG9waW5nIHRo
YXQgdGhlIG5vbi1tYXRjaGluZyBjYXNlIHdhcyBzbyBjb21tb24gdGhhdCBpdCB3YXMgYmVzdCB0
byBoYXZlIHRoZQorICAgICAgICBtYXRjaGluZyBjYXNlIGRvIHRoZSB3b3JrIGFsbCBvdmVyIGFn
YWluLgorCisgICAgICAgIFRoaXMgaXMgYSA0JSBzcGVlZC11cCBvbiBPY3RhbmUvcmVnZXhwLiBJ
dCdzIGFsc28gYSBtYXR0ZXIgb2YgY29tbW9uIHNlbnNlOiB3ZSBzaG91bGQgbm90IGJlCisgICAg
ICAgIGluIHRoZSBidXNpbmVzcyBvZiBwcmVzdW1pbmcgd2hldGhlciBzb21lb25lJ3MgbWF0Y2gg
d2lsbCBzdWNjZWVkIG9yIGZhaWwuIFRoZSBpbmNyZWFzZWQKKyAgICAgICAgY29zdCBvZiBydW5u
aW5nIFlhcnIgdHdpY2UgaXMgc28gbXVjaCBsYXJnZXIgdGhhbiB3aGF0ZXZlciBzYXZpbmdzIHdl
IHdlcmUgZ2V0dGluZyBmcm9tCisgICAgICAgIHJ1bm5pbmcgYSBtYXRjaC1vbmx5IHJlZ2V4cCB0
aGF0IHRoaXMgaXMganVzdCBub3QgYSBnb29kIG92ZXJhbGwgZGVhbCBmb3IgdGhlIGVuZ2luZS4K
KworICAgICAgICBBbHNvLCBpdCdzIGludGVyZXN0aW5nIHRoYXQgd2UgYXJlIHNlZWluZyBhIDQl
IHNwZWVkLXVwIG9uIHJlZ2V4cCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgYQorICAgICAgICBtYWpv
cml0eSAoYWxtb3N0IGEgc3VwZXJtYWpvcml0eSwgSSB0aGluaykgb2YgY2FsbHMgaW50byBSZWdF
eHAucHJvdG90eXBlLm1hdGNoKCkgYXJlIGZhaWxlZAorICAgICAgICBtYXRjaGVzLiBTbywgdGhp
cyBjaGFuZ2UgaXMgYSA0JSBzcGVlZC11cCBkZXNwaXRlIGJlaW5nIGEgc2xvdyBkb3duIG9uIHRo
ZSBjb21tb24gY2FzZS4gVGhhdAorICAgICAgICB0ZWxscyB5b3UganVzdCBob3cgYmFkIHRoZSBv
bGQgYmVoYXZpb3Igd2FzIG9uIHRoZSB1bmNvbW1vbiBjYXNlLgorCisgICAgICAgICogcnVudGlt
ZS9NYXRjaFJlc3VsdC5oOgorICAgICAgICAoTWF0Y2hSZXN1bHQ6Ok1hdGNoUmVzdWx0KToKKyAg
ICAgICAgKE1hdGNoUmVzdWx0OjpmYWlsZWQpOgorICAgICAgICAoTWF0Y2hSZXN1bHQ6Om9wZXJh
dG9yIGJvb2wpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcDoKKyAg
ICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpsYXN0UmVzdWx0KToKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVj
dG9yOjpzZXRNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6bXVs
dGlsaW5lKToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaCk6
CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpyZWNvcmRNYXRjaCk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAoSlNDOjpjcmVhdGVFbXB0eVJlZ0V4cE1hdGNo
ZXNBcnJheSk6CisgICAgICAgIChKU0M6OmNyZWF0ZVN0cnVjdHVyZUltcGwpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OmdldExhc3RJbmRl
eEFzVW5zaWduZWQpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmV4ZWMpOgorICAgICAg
ICAoSlNDOjpSZWdFeHBPYmplY3Q6Om1hdGNoKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldExhc3RJbmRleCk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6dGVzdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNNYXRjaCk6CisKIDIw
MTYtMDMtMDcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogcmVuYW1lIGdlbmVyYXRlZCAqRW51bUNvbnZlcnNpb25IZWxwZXJzLmggdG8gKlR5
cGVDb252ZXJzaW9ucy5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRj
aFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGNoUmVzdWx0LmgJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGNoUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDEyIEBACiB0
eXBlZGVmIHVpbnQ2NF90IEVuY29kZWRNYXRjaFJlc3VsdDsKIAogc3RydWN0IE1hdGNoUmVzdWx0
IHsKKyAgICBNYXRjaFJlc3VsdCgpCisgICAgICAgIDogc3RhcnQoV1RGOjpub3RGb3VuZCkKKyAg
ICAgICAgLCBlbmQoMCkKKyAgICB7CisgICAgfQorICAgIAogICAgIEFMV0FZU19JTkxJTkUgTWF0
Y2hSZXN1bHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKQogICAgICAgICA6IHN0YXJ0KHN0YXJ0
KQogICAgICAgICAsIGVuZChlbmQpCkBAIC01MSwxMCArNTcsMTAgQEAgc3RydWN0IE1hdGNoUmVz
dWx0IHsKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE1hdGNoUmVzdWx0IGZhaWxlZCgpCiAg
ICAgewotICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQoV1RGOjpub3RGb3VuZCwgMCk7CisgICAg
ICAgIHJldHVybiBNYXRjaFJlc3VsdCgpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgb3Bl
cmF0b3IgYm9vbCgpCisgICAgQUxXQVlTX0lOTElORSBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGFydCAhPSBXVEY6Om5vdEZvdW5kOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3Vs
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q2FjaGVkUmVzdWx0LmNwcAkocmV2aXNpb24gMTk3NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsMTAgQEAgSlNBcnJheSogUmVnRXhwQ2FjaGVkUmVzdWx0OjpsYXN0UmVzdWx0KAogewog
ICAgIGlmICghbV9yZWlmaWVkKSB7CiAgICAgICAgIG1fcmVpZmllZElucHV0LnNldChleGVjLT52
bSgpLCBvd25lciwgbV9sYXN0SW5wdXQuZ2V0KCkpOwotICAgICAgICBtX3JlaWZpZWRSZXN1bHQu
c2V0KGV4ZWMtPnZtKCksIG93bmVyLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtX2xhc3RJbnB1dC5nZXQoKSwgbV9sYXN0UmVnRXhw
LmdldCgpLCBtX3Jlc3VsdCkpOworICAgICAgICBpZiAobV9yZXN1bHQpCisgICAgICAgICAgICBt
X3JlaWZpZWRSZXN1bHQuc2V0KGV4ZWMtPnZtKCksIG93bmVyLCBjcmVhdGVSZWdFeHBNYXRjaGVz
QXJyYXkoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtX2xhc3RJbnB1dC5nZXQo
KSwgbV9sYXN0UmVnRXhwLmdldCgpLCBtX3Jlc3VsdC5zdGFydCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0KGV4ZWMtPnZtKCksIG93bmVyLCBjcmVhdGVF
bXB0eVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1fbGFz
dElucHV0LmdldCgpLCBtX2xhc3RSZWdFeHAuZ2V0KCkpKTsKICAgICAgICAgbV9yZWlmaWVkID0g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVpZmllZFJlc3VsdC5nZXQoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gMTk3NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAK
ICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0Y2goVk0mLCBSZWdFeHAqLCBKU1N0cmluZyosIGNv
bnN0IFN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50Kiogb3ZlY3Rvcik7CiAgICAgTWF0Y2hS
ZXN1bHQgcGVyZm9ybU1hdGNoKFZNJiwgUmVnRXhwKiwgSlNTdHJpbmcqLCBjb25zdCBTdHJpbmcm
LCBpbnQgc3RhcnRPZmZzZXQpOworICAgIHZvaWQgcmVjb3JkTWF0Y2goVk0mLCBSZWdFeHAqLCBK
U1N0cmluZyosIGNvbnN0IE1hdGNoUmVzdWx0Jik7CiAKICAgICB2b2lkIHNldE11bHRpbGluZShi
b29sIG11bHRpbGluZSkgeyBtX211bHRpbGluZSA9IG11bHRpbGluZTsgfQogICAgIGJvb2wgbXVs
dGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9tdWx0aWxpbmU7IH0KQEAgLTEyNCw2ICsxMjUsMTIg
QEAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1YwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cmVjb3Jk
TWF0Y2goVk0mIHZtLCBSZWdFeHAqIHJlZ0V4cCwgSlNTdHJpbmcqIHN0cmluZywgY29uc3QgTWF0
Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICBtX2NhY2hlZFJl
c3VsdC5yZWNvcmQodm0sIHRoaXMsIHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cENvbnN0cnVjdG9yX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5
LmNwcAkocmV2aXNpb24gMTk3NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMjYgKzUyLDM0IEBA
IHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmUKIAogSlNBcnJheSogY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5KAogICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCwKLSAgICBN
YXRjaFJlc3VsdCByZXN1bHQpCisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0
JiByZXN1bHQpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oImNyZWF0ZVJl
Z0V4cE1hdGNoZXNBcnJheSIpOwogICAgIAogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAKKyAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0
dGVyblJlc3VsdHM7CisgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwgaW5wdXQt
PnZhbHVlKGV4ZWMpLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOworICAgIGlmIChw
b3NpdGlvbiA9PSAtMSkgeworICAgICAgICByZXN1bHQgPSBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAorICAgIHJlc3VsdC5zdGFydCA9IHBv
c2l0aW9uOworICAgIHJlc3VsdC5lbmQgPSBzdWJwYXR0ZXJuUmVzdWx0c1sxXTsKKyAgICAKICAg
ICBKU0FycmF5KiBhcnJheTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBoYW5kbGUgYXJy
YXkgYWxsb2NhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ0CisgICAgCiAgICAgaWYgKFVOTElLRUxZKGds
b2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgewogICAgICAgICBhcnJheSA9IEpTQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOwogICAgICAg
ICAKICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNTdWJzdHJpbmcodm0s
IGV4ZWMsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+
bnVtU3VicGF0dGVybnMoKSkgewotICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRl
cm5SZXN1bHRzOwotICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwg
aW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKLSAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKLSAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0
c1swXSkpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07CiAgICAgICAgICAg
ICAgICAgaWYgKHN0YXJ0ID49IDApCkBAIC04NywxMiArOTUsNiBAQCBKU0FycmF5KiBjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXkoCiAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAs
IGpzU3Vic3RyaW5nKHZtLCBleGVjLCBpbnB1dCwgcmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0g
cmVzdWx0LnN0YXJ0KSwgQXJyYXlXaXRoQ29udGlndW91cyk7CiAgICAgICAgIAogICAgICAgICBp
ZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkpIHsK
LSAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKLSAgICAgICAg
ICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2godm0sIGlucHV0LT52YWx1ZShleGVjKSwg
cmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7Ci0gICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHBvc2l0aW9uLCBwb3NpdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4ocG9zaXRp
b24pID09IHJlc3VsdC5zdGFydCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LnN0YXJ0ID09
IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3VsdHNbMF0pKTsKLSAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3Vs
dHNbMV0pKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7CiAgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0g
c3VicGF0dGVyblJlc3VsdHNbMiAqIGldOwogICAgICAgICAgICAgICAgIGlmIChzdGFydCA+PSAw
KQpAQCAtMTA5LDYgKzExMSw0MCBAQCBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXko
CiAgICAgcmV0dXJuIGFycmF5OwogfQogCitKU0FycmF5KiBjcmVhdGVFbXB0eVJlZ0V4cE1hdGNo
ZXNBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogaW5wdXQsIFJl
Z0V4cCogcmVnRXhwKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBK
U0FycmF5KiBhcnJheTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBoYW5kbGUgYXJyYXkg
YWxsb2NhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ0CisgICAgCisgICAgaWYgKFVOTElLRUxZKGdsb2Jh
bE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgeworICAgICAgICBhcnJheSA9IEpTQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOworICAgICAgICAK
KyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNFbXB0eVN0cmluZygmdm0p
KTsKKyAgICAgICAgCisgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4
cC0+bnVtU3VicGF0dGVybnMoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKQorICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFs
aXplSW5kZXgodm0sIGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgYXJyYXkgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5
KHZtLCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpLCByZWdFeHAt
Pm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwor
ICAgICAgICAKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNFbXB0eVN0
cmluZygmdm0pLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgCisgICAgICAgIGlmICh1
bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgeworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKQor
ICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIGksIGpzVW5kZWZpbmVk
KCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICB9CisgICAgfQorCisgICAgYXJyYXkt
PnB1dERpcmVjdCh2bSwgaW5kZXhQcm9wZXJ0eU9mZnNldCwganNOdW1iZXIoLTEpKTsKKyAgICBh
cnJheS0+cHV0RGlyZWN0KHZtLCBpbnB1dFByb3BlcnR5T2Zmc2V0LCBpbnB1dCk7CisgICAgcmV0
dXJuIGFycmF5OworfQorCiBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW5kZXhpbmdUeXBlIGluZGV4aW5n
VHlwZSkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVz
QXJyYXkuaAkocmV2aXNpb24gMTk3NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDEzIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXko
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIFJlZ0V4cCosIE1hdGNoUmVz
dWx0KTsKK0pTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIEpTU3RyaW5nKiwgUmVnRXhwKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1h
dGNoUmVzdWx0Jik7CitpbmxpbmUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0
cmluZywgUmVnRXhwKiByZWdFeHAsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQoreworICAgIE1hdGNo
UmVzdWx0IGlnbm9yZWRSZXN1bHQ7CisgICAgcmV0dXJuIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJh
eShleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZywgcmVnRXhwLCBzdGFydE9mZnNldCwgaWdub3Jl
ZFJlc3VsdCk7Cit9CitKU0FycmF5KiBjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXNBcnJheShKU0ds
b2JhbE9iamVjdCosIEpTU3RyaW5nKiwgUmVnRXhwKik7CiBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiBTdHJ1Y3R1cmUq
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw0MCArMTU5LDc0
IEBAIHZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKICAgICBCYXNlOjpw
dXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLUpTVmFsdWUg
UmVnRXhwT2JqZWN0OjpleGVjKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykKK0FMV0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0TGFz
dEluZGV4QXNVbnNpZ25lZCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cE9iamVjdCogcmVn
RXhwT2JqZWN0LCBjb25zdCBTdHJpbmcmIGlucHV0KQogewotICAgIGlmIChNYXRjaFJlc3VsdCBy
ZXN1bHQgPSBtYXRjaChleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZykpCi0gICAgICAgIHJldHVy
biBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIHJl
Z0V4cCgpLCByZXN1bHQpOwotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotLy8gU2hhcmVkIGlt
cGxlbWVudGF0aW9uIHVzZWQgYnkgdGVzdCBhbmQgZXhlYy4KLU1hdGNoUmVzdWx0IFJlZ0V4cE9i
amVjdDo6bWF0Y2goRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1N0cmluZyogc3RyaW5nKQotewotICAgIFJlZ0V4cCogcmVnRXhwID0gdGhpcy0+cmVnRXhw
KCk7Ci0gICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZ2xvYmFsT2Jq
ZWN0LT5yZWdFeHBDb25zdHJ1Y3RvcigpOwotICAgIFN0cmluZyBpbnB1dCA9IHN0cmluZy0+dmFs
dWUoZXhlYyk7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGlmICghcmVn
RXhwLT5nbG9iYWwoKSkKLSAgICAgICAgcmV0dXJuIHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3Jt
TWF0Y2godm0sIHJlZ0V4cCwgc3RyaW5nLCBpbnB1dCwgMCk7Ci0KLSAgICBKU1ZhbHVlIGpzTGFz
dEluZGV4ID0gZ2V0TGFzdEluZGV4KCk7CisgICAgSlNWYWx1ZSBqc0xhc3RJbmRleCA9IHJlZ0V4
cE9iamVjdC0+Z2V0TGFzdEluZGV4KCk7CiAgICAgdW5zaWduZWQgbGFzdEluZGV4OwogICAgIGlm
IChMSUtFTFkoanNMYXN0SW5kZXguaXNVSW50MzIoKSkpIHsKICAgICAgICAgbGFzdEluZGV4ID0g
anNMYXN0SW5kZXguYXNVSW50MzIoKTsKICAgICAgICAgaWYgKGxhc3RJbmRleCA+IGlucHV0Lmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICBzZXRMYXN0SW5kZXgoZXhlYywgMCk7Ci0gICAgICAgICAg
ICByZXR1cm4gTWF0Y2hSZXN1bHQ6OmZhaWxlZCgpOworICAgICAgICAgICAgcmVnRXhwT2JqZWN0
LT5zZXRMYXN0SW5kZXgoZXhlYywgMCk7CisgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBkb3VibGUgZG91YmxlTGFzdEluZGV4ID0g
anNMYXN0SW5kZXgudG9JbnRlZ2VyKGV4ZWMpOwogICAgICAgICBpZiAoZG91YmxlTGFzdEluZGV4
IDwgMCB8fCBkb3VibGVMYXN0SW5kZXggPiBpbnB1dC5sZW5ndGgoKSkgewotICAgICAgICAgICAg
c2V0TGFzdEluZGV4KGV4ZWMsIDApOwotICAgICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0Ojpm
YWlsZWQoKTsKKyAgICAgICAgICAgIHJlZ0V4cE9iamVjdC0+c2V0TGFzdEluZGV4KGV4ZWMsIDAp
OworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9CiAgICAgICAgIGxhc3RJ
bmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkb3VibGVMYXN0SW5kZXgpOwogICAgIH0KKyAg
ICByZXR1cm4gbGFzdEluZGV4OworfQorCitKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJp
bmcpCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSB0aGlzLT5yZWdFeHAoKTsKKyAgICBSZWdFeHBD
b25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0
cnVjdG9yKCk7CisgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsgLy8gRklY
TUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTUxNDUKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAoIXJl
Z0V4cC0+Z2xvYmFsKCkpIHsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworICAgICAgICBK
U0FycmF5KiBhcnJheSA9IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cmluZywgcmVnRXhwLCAwLCByZXN1bHQpOworICAgICAgICBpZiAoIWFycmF5KQorICAg
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgICAgICByZWdFeHBDb25zdHJ1Y3Rvci0+cmVj
b3JkTWF0Y2godm0sIHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXJy
YXk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGFzdEluZGV4ID0gZ2V0TGFzdEluZGV4QXNVbnNp
Z25lZChleGVjLCB0aGlzLCBpbnB1dCk7CisgICAgaWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkK
KyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIAorICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsK
KyAgICBKU0FycmF5KiBhcnJheSA9CisgICAgICAgIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShl
eGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZywgcmVnRXhwLCBsYXN0SW5kZXgsIHJlc3VsdCk7Cisg
ICAgaWYgKCFhcnJheSkgeworICAgICAgICBzZXRMYXN0SW5kZXgoZXhlYywgMCk7CisgICAgICAg
IHJldHVybiBqc051bGwoKTsKKyAgICB9CisgICAgc2V0TGFzdEluZGV4KGV4ZWMsIHJlc3VsdC5l
bmQpOworICAgIHJlZ0V4cENvbnN0cnVjdG9yLT5yZWNvcmRNYXRjaCh2bSwgcmVnRXhwLCBzdHJp
bmcsIHJlc3VsdCk7CisgICAgcmV0dXJuIGFycmF5OworfQorCisvLyBTaGFyZWQgaW1wbGVtZW50
YXRpb24gdXNlZCBieSB0ZXN0IGFuZCBleGVjLgorTWF0Y2hSZXN1bHQgUmVnRXhwT2JqZWN0Ojpt
YXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3Ry
aW5nKiBzdHJpbmcpCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSB0aGlzLT5yZWdFeHAoKTsKKyAg
ICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnJl
Z0V4cENvbnN0cnVjdG9yKCk7CisgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVj
KTsgLy8gRklYTUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUxNDUKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
aWYgKCFyZWdFeHAtPmdsb2JhbCgpKQorICAgICAgICByZXR1cm4gcmVnRXhwQ29uc3RydWN0b3It
PnBlcmZvcm1NYXRjaCh2bSwgcmVnRXhwLCBzdHJpbmcsIGlucHV0LCAwKTsKIAorICAgIHVuc2ln
bmVkIGxhc3RJbmRleCA9IGdldExhc3RJbmRleEFzVW5zaWduZWQoZXhlYywgdGhpcywgaW5wdXQp
OworICAgIGlmIChsYXN0SW5kZXggPT0gVUlOVF9NQVgpCisgICAgICAgIHJldHVybiBNYXRjaFJl
c3VsdDo6ZmFpbGVkKCk7CisgICAgCiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwQ29u
c3RydWN0b3ItPnBlcmZvcm1NYXRjaCh2bSwgcmVnRXhwLCBzdHJpbmcsIGlucHV0LCBsYXN0SW5k
ZXgpOwogICAgIHNldExhc3RJbmRleChleGVjLCByZXN1bHQuZW5kKTsKICAgICByZXR1cm4gcmVz
dWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fbGFzdEluZGV4LmdldCgpOwogICAgIH0KIAotICAgIGJvb2wgdGVzdChF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBz
dHJpbmcpIHsgcmV0dXJuIG1hdGNoKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nKTsgfQorICAg
IGJvb2wgdGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuICEhbWF0Y2goZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJpbmcpOyB9CiAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
SlNTdHJpbmcqKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzIsNyArMTA3Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICBNYXRjaFJlc3VsdCByZXN1bHQg
PSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCp2bSwgcmVnRXhwLCBzdHJpbmcsIHMs
IDApOwogICAgIC8vIGNhc2Ugd2l0aG91dCAnZycgZmxhZyBpcyBoYW5kbGVkIGxpa2UgUmVnRXhw
LnByb3RvdHlwZS5leGVjCiAgICAgaWYgKCFnbG9iYWwpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RyaW5nLCByZWdFeHAsIHJlc3VsdCkgOiBqc051bGwoKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAsIHJlc3VsdC5zdGFydCkgOiBqc051bGwoKSk7
CiAKICAgICAvLyByZXR1cm4gYXJyYXkgb2YgbWF0Y2hlcwogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGxpc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273233</attachid>
            <date>2016-03-07 15:56:57 -0800</date>
            <delta_ts>2016-03-07 15:56:57 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16825</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDE2LTAzLTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVnRXhwLnByb3RvdHlwZS5leGVjKCkgc2hvdWxkIGNhbGwgaW50byBZYXJyIGF0IG1vc3Qgb25j
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgRm9yIGFwcGFy
ZW50bHkgbm8gZ29vZCByZWFzb24sIFJlZ0V4cC5wcm90b3R5cGUubWF0Y2goKSB3YXMgY2FsbGlu
ZyBpbnRvIFlhcnIgdHdpY2UsIGFsbW9zdAorICAgICAgICBhcyBpZiBpdCB3YXMgaG9waW5nIHRo
YXQgdGhlIG5vbi1tYXRjaGluZyBjYXNlIHdhcyBzbyBjb21tb24gdGhhdCBpdCB3YXMgYmVzdCB0
byBoYXZlIHRoZQorICAgICAgICBtYXRjaGluZyBjYXNlIGRvIHRoZSB3b3JrIGFsbCBvdmVyIGFn
YWluLgorCisgICAgICAgIFRoaXMgaXMgYSA0JSBzcGVlZC11cCBvbiBPY3RhbmUvcmVnZXhwLiBJ
dCdzIGFsc28gYSBtYXR0ZXIgb2YgY29tbW9uIHNlbnNlOiB3ZSBzaG91bGQgbm90IGJlCisgICAg
ICAgIGluIHRoZSBidXNpbmVzcyBvZiBwcmVzdW1pbmcgd2hldGhlciBzb21lb25lJ3MgbWF0Y2gg
d2lsbCBzdWNjZWVkIG9yIGZhaWwuIFRoZSBpbmNyZWFzZWQKKyAgICAgICAgY29zdCBvZiBydW5u
aW5nIFlhcnIgdHdpY2UgaXMgc28gbXVjaCBsYXJnZXIgdGhhbiB3aGF0ZXZlciBzYXZpbmdzIHdl
IHdlcmUgZ2V0dGluZyBmcm9tCisgICAgICAgIHJ1bm5pbmcgYSBtYXRjaC1vbmx5IHJlZ2V4cCB0
aGF0IHRoaXMgaXMganVzdCBub3QgYSBnb29kIG92ZXJhbGwgZGVhbCBmb3IgdGhlIGVuZ2luZS4K
KworICAgICAgICBBbHNvLCBpdCdzIGludGVyZXN0aW5nIHRoYXQgd2UgYXJlIHNlZWluZyBhIDQl
IHNwZWVkLXVwIG9uIHJlZ2V4cCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgYQorICAgICAgICBtYWpv
cml0eSAoYWxtb3N0IGEgc3VwZXJtYWpvcml0eSwgSSB0aGluaykgb2YgY2FsbHMgaW50byBSZWdF
eHAucHJvdG90eXBlLm1hdGNoKCkgYXJlIGZhaWxlZAorICAgICAgICBtYXRjaGVzLiBTbywgdGhp
cyBjaGFuZ2UgaXMgYSA0JSBzcGVlZC11cCBkZXNwaXRlIGJlaW5nIGEgc2xvdyBkb3duIG9uIHRo
ZSBjb21tb24gY2FzZS4gVGhhdAorICAgICAgICB0ZWxscyB5b3UganVzdCBob3cgYmFkIHRoZSBv
bGQgYmVoYXZpb3Igd2FzIG9uIHRoZSB1bmNvbW1vbiBjYXNlLgorCisgICAgICAgICogcnVudGlt
ZS9NYXRjaFJlc3VsdC5oOgorICAgICAgICAoTWF0Y2hSZXN1bHQ6Ok1hdGNoUmVzdWx0KToKKyAg
ICAgICAgKE1hdGNoUmVzdWx0OjpmYWlsZWQpOgorICAgICAgICAoTWF0Y2hSZXN1bHQ6Om9wZXJh
dG9yIGJvb2wpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcDoKKyAg
ICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpsYXN0UmVzdWx0KToKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVj
dG9yOjpzZXRNdWx0aWxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6bXVs
dGlsaW5lKToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OnBlcmZvcm1NYXRjaCk6
CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpyZWNvcmRNYXRjaCk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAoSlNDOjpjcmVhdGVFbXB0eVJlZ0V4cE1hdGNo
ZXNBcnJheSk6CisgICAgICAgIChKU0M6OmNyZWF0ZVN0cnVjdHVyZUltcGwpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OmdldExhc3RJbmRl
eEFzVW5zaWduZWQpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmV4ZWMpOgorICAgICAg
ICAoSlNDOjpSZWdFeHBPYmplY3Q6Om1hdGNoKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldExhc3RJbmRleCk6CisgICAg
ICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6dGVzdCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNNYXRjaCk6CisKIDIw
MTYtMDMtMDcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogcmVuYW1lIGdlbmVyYXRlZCAqRW51bUNvbnZlcnNpb25IZWxwZXJzLmggdG8gKlR5
cGVDb252ZXJzaW9ucy5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRj
aFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGNoUmVzdWx0LmgJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGNoUmVzdWx0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDEyIEBACiB0
eXBlZGVmIHVpbnQ2NF90IEVuY29kZWRNYXRjaFJlc3VsdDsKIAogc3RydWN0IE1hdGNoUmVzdWx0
IHsKKyAgICBNYXRjaFJlc3VsdCgpCisgICAgICAgIDogc3RhcnQoV1RGOjpub3RGb3VuZCkKKyAg
ICAgICAgLCBlbmQoMCkKKyAgICB7CisgICAgfQorICAgIAogICAgIEFMV0FZU19JTkxJTkUgTWF0
Y2hSZXN1bHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKQogICAgICAgICA6IHN0YXJ0KHN0YXJ0
KQogICAgICAgICAsIGVuZChlbmQpCkBAIC01MSwxMCArNTcsMTAgQEAgc3RydWN0IE1hdGNoUmVz
dWx0IHsKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE1hdGNoUmVzdWx0IGZhaWxlZCgpCiAg
ICAgewotICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQoV1RGOjpub3RGb3VuZCwgMCk7CisgICAg
ICAgIHJldHVybiBNYXRjaFJlc3VsdCgpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgb3Bl
cmF0b3IgYm9vbCgpCisgICAgQUxXQVlTX0lOTElORSBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGFydCAhPSBXVEY6Om5vdEZvdW5kOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3Vs
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q2FjaGVkUmVzdWx0LmNwcAkocmV2aXNpb24gMTk3NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsMTAgQEAgSlNBcnJheSogUmVnRXhwQ2FjaGVkUmVzdWx0OjpsYXN0UmVzdWx0KAogewog
ICAgIGlmICghbV9yZWlmaWVkKSB7CiAgICAgICAgIG1fcmVpZmllZElucHV0LnNldChleGVjLT52
bSgpLCBvd25lciwgbV9sYXN0SW5wdXQuZ2V0KCkpOwotICAgICAgICBtX3JlaWZpZWRSZXN1bHQu
c2V0KGV4ZWMtPnZtKCksIG93bmVyLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtX2xhc3RJbnB1dC5nZXQoKSwgbV9sYXN0UmVnRXhw
LmdldCgpLCBtX3Jlc3VsdCkpOworICAgICAgICBpZiAobV9yZXN1bHQpCisgICAgICAgICAgICBt
X3JlaWZpZWRSZXN1bHQuc2V0KGV4ZWMtPnZtKCksIG93bmVyLCBjcmVhdGVSZWdFeHBNYXRjaGVz
QXJyYXkoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtX2xhc3RJbnB1dC5nZXQo
KSwgbV9sYXN0UmVnRXhwLmdldCgpLCBtX3Jlc3VsdC5zdGFydCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0KGV4ZWMtPnZtKCksIG93bmVyLCBjcmVhdGVF
bXB0eVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1fbGFz
dElucHV0LmdldCgpLCBtX2xhc3RSZWdFeHAuZ2V0KCkpKTsKICAgICAgICAgbV9yZWlmaWVkID0g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVpZmllZFJlc3VsdC5nZXQoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gMTk3NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAK
ICAgICBNYXRjaFJlc3VsdCBwZXJmb3JtTWF0Y2goVk0mLCBSZWdFeHAqLCBKU1N0cmluZyosIGNv
bnN0IFN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50Kiogb3ZlY3Rvcik7CiAgICAgTWF0Y2hS
ZXN1bHQgcGVyZm9ybU1hdGNoKFZNJiwgUmVnRXhwKiwgSlNTdHJpbmcqLCBjb25zdCBTdHJpbmcm
LCBpbnQgc3RhcnRPZmZzZXQpOworICAgIHZvaWQgcmVjb3JkTWF0Y2goVk0mLCBSZWdFeHAqLCBK
U1N0cmluZyosIGNvbnN0IE1hdGNoUmVzdWx0Jik7CiAKICAgICB2b2lkIHNldE11bHRpbGluZShi
b29sIG11bHRpbGluZSkgeyBtX211bHRpbGluZSA9IG11bHRpbGluZTsgfQogICAgIGJvb2wgbXVs
dGlsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9tdWx0aWxpbmU7IH0KQEAgLTEyNCw2ICsxMjUsMTIg
QEAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHBDb25zdHJ1YwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBSZWdFeHBDb25zdHJ1Y3Rvcjo6cmVjb3Jk
TWF0Y2goVk0mIHZtLCBSZWdFeHAqIHJlZ0V4cCwgSlNTdHJpbmcqIHN0cmluZywgY29uc3QgTWF0
Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICBtX2NhY2hlZFJl
c3VsdC5yZWNvcmQodm0sIHRoaXMsIHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cENvbnN0cnVjdG9yX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5
LmNwcAkocmV2aXNpb24gMTk3NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMjYgKzUyLDMzIEBA
IHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmUKIAogSlNBcnJheSogY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5KAogICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCwKLSAgICBN
YXRjaFJlc3VsdCByZXN1bHQpCisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0
JiByZXN1bHQpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oImNyZWF0ZVJl
Z0V4cE1hdGNoZXNBcnJheSIpOwogICAgIAotICAgIEFTU0VSVChyZXN1bHQpOwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICAKKyAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0
dGVyblJlc3VsdHM7CisgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwgaW5wdXQt
PnZhbHVlKGV4ZWMpLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOworICAgIGlmIChw
b3NpdGlvbiA9PSAtMSkgeworICAgICAgICByZXN1bHQgPSBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAorICAgIHJlc3VsdC5zdGFydCA9IHBv
c2l0aW9uOworICAgIHJlc3VsdC5lbmQgPSBzdWJwYXR0ZXJuUmVzdWx0c1sxXTsKKyAgICAKICAg
ICBKU0FycmF5KiBhcnJheTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBoYW5kbGUgYXJy
YXkgYWxsb2NhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ0CisgICAgCiAgICAgaWYgKFVOTElLRUxZKGds
b2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgewogICAgICAgICBhcnJheSA9IEpTQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOwogICAgICAg
ICAKICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNTdWJzdHJpbmcodm0s
IGV4ZWMsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+
bnVtU3VicGF0dGVybnMoKSkgewotICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRl
cm5SZXN1bHRzOwotICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwg
aW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKLSAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKLSAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0
c1swXSkpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07CiAgICAgICAgICAg
ICAgICAgaWYgKHN0YXJ0ID49IDApCkBAIC04NywxMiArOTQsNiBAQCBKU0FycmF5KiBjcmVhdGVS
ZWdFeHBNYXRjaGVzQXJyYXkoCiAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAs
IGpzU3Vic3RyaW5nKHZtLCBleGVjLCBpbnB1dCwgcmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0g
cmVzdWx0LnN0YXJ0KSwgQXJyYXlXaXRoQ29udGlndW91cyk7CiAgICAgICAgIAogICAgICAgICBp
ZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkpIHsK
LSAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKLSAgICAgICAg
ICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2godm0sIGlucHV0LT52YWx1ZShleGVjKSwg
cmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7Ci0gICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHBvc2l0aW9uLCBwb3NpdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4ocG9zaXRp
b24pID09IHJlc3VsdC5zdGFydCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LnN0YXJ0ID09
IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3VsdHNbMF0pKTsKLSAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3Vs
dHNbMV0pKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7CiAgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0g
c3VicGF0dGVyblJlc3VsdHNbMiAqIGldOwogICAgICAgICAgICAgICAgIGlmIChzdGFydCA+PSAw
KQpAQCAtMTA5LDYgKzExMCw0MCBAQCBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXko
CiAgICAgcmV0dXJuIGFycmF5OwogfQogCitKU0FycmF5KiBjcmVhdGVFbXB0eVJlZ0V4cE1hdGNo
ZXNBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogaW5wdXQsIFJl
Z0V4cCogcmVnRXhwKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBK
U0FycmF5KiBhcnJheTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBoYW5kbGUgYXJyYXkg
YWxsb2NhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ0CisgICAgCisgICAgaWYgKFVOTElLRUxZKGdsb2Jh
bE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgeworICAgICAgICBhcnJheSA9IEpTQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOworICAgICAgICAK
KyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNFbXB0eVN0cmluZygmdm0p
KTsKKyAgICAgICAgCisgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4
cC0+bnVtU3VicGF0dGVybnMoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKQorICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFs
aXplSW5kZXgodm0sIGksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgYXJyYXkgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5
KHZtLCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpLCByZWdFeHAt
Pm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwor
ICAgICAgICAKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNFbXB0eVN0
cmluZygmdm0pLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgCisgICAgICAgIGlmICh1
bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgeworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKQor
ICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIGksIGpzVW5kZWZpbmVk
KCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICB9CisgICAgfQorCisgICAgYXJyYXkt
PnB1dERpcmVjdCh2bSwgaW5kZXhQcm9wZXJ0eU9mZnNldCwganNOdW1iZXIoLTEpKTsKKyAgICBh
cnJheS0+cHV0RGlyZWN0KHZtLCBpbnB1dFByb3BlcnR5T2Zmc2V0LCBpbnB1dCk7CisgICAgcmV0
dXJuIGFycmF5OworfQorCiBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW5kZXhpbmdUeXBlIGluZGV4aW5n
VHlwZSkKIHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVz
QXJyYXkuaAkocmV2aXNpb24gMTk3NjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDEzIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXko
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIFJlZ0V4cCosIE1hdGNoUmVz
dWx0KTsKK0pTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIEpTU3RyaW5nKiwgUmVnRXhwKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1h
dGNoUmVzdWx0Jik7CitpbmxpbmUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4
ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0
cmluZywgUmVnRXhwKiByZWdFeHAsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQoreworICAgIE1hdGNo
UmVzdWx0IGlnbm9yZWRSZXN1bHQ7CisgICAgcmV0dXJuIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJh
eShleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZywgcmVnRXhwLCBzdGFydE9mZnNldCwgaWdub3Jl
ZFJlc3VsdCk7Cit9CitKU0FycmF5KiBjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXNBcnJheShKU0ds
b2JhbE9iamVjdCosIEpTU3RyaW5nKiwgUmVnRXhwKik7CiBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiBTdHJ1Y3R1cmUq
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE9iamVjdC5jcHAJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw0MCArMTU5LDc0
IEBAIHZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKICAgICBCYXNlOjpw
dXQoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKLUpTVmFsdWUg
UmVnRXhwT2JqZWN0OjpleGVjKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykKK0FMV0FZU19JTkxJTkUgdW5zaWduZWQgZ2V0TGFz
dEluZGV4QXNVbnNpZ25lZCgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cE9iamVjdCogcmVn
RXhwT2JqZWN0LCBjb25zdCBTdHJpbmcmIGlucHV0KQogewotICAgIGlmIChNYXRjaFJlc3VsdCBy
ZXN1bHQgPSBtYXRjaChleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZykpCi0gICAgICAgIHJldHVy
biBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIHJl
Z0V4cCgpLCByZXN1bHQpOwotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotLy8gU2hhcmVkIGlt
cGxlbWVudGF0aW9uIHVzZWQgYnkgdGVzdCBhbmQgZXhlYy4KLU1hdGNoUmVzdWx0IFJlZ0V4cE9i
amVjdDo6bWF0Y2goRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1N0cmluZyogc3RyaW5nKQotewotICAgIFJlZ0V4cCogcmVnRXhwID0gdGhpcy0+cmVnRXhw
KCk7Ci0gICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZ2xvYmFsT2Jq
ZWN0LT5yZWdFeHBDb25zdHJ1Y3RvcigpOwotICAgIFN0cmluZyBpbnB1dCA9IHN0cmluZy0+dmFs
dWUoZXhlYyk7Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGlmICghcmVn
RXhwLT5nbG9iYWwoKSkKLSAgICAgICAgcmV0dXJuIHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3Jt
TWF0Y2godm0sIHJlZ0V4cCwgc3RyaW5nLCBpbnB1dCwgMCk7Ci0KLSAgICBKU1ZhbHVlIGpzTGFz
dEluZGV4ID0gZ2V0TGFzdEluZGV4KCk7CisgICAgSlNWYWx1ZSBqc0xhc3RJbmRleCA9IHJlZ0V4
cE9iamVjdC0+Z2V0TGFzdEluZGV4KCk7CiAgICAgdW5zaWduZWQgbGFzdEluZGV4OwogICAgIGlm
IChMSUtFTFkoanNMYXN0SW5kZXguaXNVSW50MzIoKSkpIHsKICAgICAgICAgbGFzdEluZGV4ID0g
anNMYXN0SW5kZXguYXNVSW50MzIoKTsKICAgICAgICAgaWYgKGxhc3RJbmRleCA+IGlucHV0Lmxl
bmd0aCgpKSB7Ci0gICAgICAgICAgICBzZXRMYXN0SW5kZXgoZXhlYywgMCk7Ci0gICAgICAgICAg
ICByZXR1cm4gTWF0Y2hSZXN1bHQ6OmZhaWxlZCgpOworICAgICAgICAgICAgcmVnRXhwT2JqZWN0
LT5zZXRMYXN0SW5kZXgoZXhlYywgMCk7CisgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBkb3VibGUgZG91YmxlTGFzdEluZGV4ID0g
anNMYXN0SW5kZXgudG9JbnRlZ2VyKGV4ZWMpOwogICAgICAgICBpZiAoZG91YmxlTGFzdEluZGV4
IDwgMCB8fCBkb3VibGVMYXN0SW5kZXggPiBpbnB1dC5sZW5ndGgoKSkgewotICAgICAgICAgICAg
c2V0TGFzdEluZGV4KGV4ZWMsIDApOwotICAgICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0Ojpm
YWlsZWQoKTsKKyAgICAgICAgICAgIHJlZ0V4cE9iamVjdC0+c2V0TGFzdEluZGV4KGV4ZWMsIDAp
OworICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgICAgICB9CiAgICAgICAgIGxhc3RJ
bmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkb3VibGVMYXN0SW5kZXgpOwogICAgIH0KKyAg
ICByZXR1cm4gbGFzdEluZGV4OworfQorCitKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJp
bmcpCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSB0aGlzLT5yZWdFeHAoKTsKKyAgICBSZWdFeHBD
b25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0
cnVjdG9yKCk7CisgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsgLy8gRklY
TUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTUxNDUKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAoIXJl
Z0V4cC0+Z2xvYmFsKCkpIHsKKyAgICAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworICAgICAgICBK
U0FycmF5KiBhcnJheSA9IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cmluZywgcmVnRXhwLCAwLCByZXN1bHQpOworICAgICAgICBpZiAoIWFycmF5KQorICAg
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgICAgICByZWdFeHBDb25zdHJ1Y3Rvci0+cmVj
b3JkTWF0Y2godm0sIHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOworICAgICAgICByZXR1cm4gYXJy
YXk7CisgICAgfQorCisgICAgdW5zaWduZWQgbGFzdEluZGV4ID0gZ2V0TGFzdEluZGV4QXNVbnNp
Z25lZChleGVjLCB0aGlzLCBpbnB1dCk7CisgICAgaWYgKGxhc3RJbmRleCA9PSBVSU5UX01BWCkK
KyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIAorICAgIE1hdGNoUmVzdWx0IHJlc3VsdDsK
KyAgICBKU0FycmF5KiBhcnJheSA9CisgICAgICAgIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShl
eGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZywgcmVnRXhwLCBsYXN0SW5kZXgsIHJlc3VsdCk7Cisg
ICAgaWYgKCFhcnJheSkgeworICAgICAgICBzZXRMYXN0SW5kZXgoZXhlYywgMCk7CisgICAgICAg
IHJldHVybiBqc051bGwoKTsKKyAgICB9CisgICAgc2V0TGFzdEluZGV4KGV4ZWMsIHJlc3VsdC5l
bmQpOworICAgIHJlZ0V4cENvbnN0cnVjdG9yLT5yZWNvcmRNYXRjaCh2bSwgcmVnRXhwLCBzdHJp
bmcsIHJlc3VsdCk7CisgICAgcmV0dXJuIGFycmF5OworfQorCisvLyBTaGFyZWQgaW1wbGVtZW50
YXRpb24gdXNlZCBieSB0ZXN0IGFuZCBleGVjLgorTWF0Y2hSZXN1bHQgUmVnRXhwT2JqZWN0Ojpt
YXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3Ry
aW5nKiBzdHJpbmcpCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSB0aGlzLT5yZWdFeHAoKTsKKyAg
ICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnJl
Z0V4cENvbnN0cnVjdG9yKCk7CisgICAgU3RyaW5nIGlucHV0ID0gc3RyaW5nLT52YWx1ZShleGVj
KTsgLy8gRklYTUU6IEhhbmRsZSBlcnJvcnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTUxNDUKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
aWYgKCFyZWdFeHAtPmdsb2JhbCgpKQorICAgICAgICByZXR1cm4gcmVnRXhwQ29uc3RydWN0b3It
PnBlcmZvcm1NYXRjaCh2bSwgcmVnRXhwLCBzdHJpbmcsIGlucHV0LCAwKTsKIAorICAgIHVuc2ln
bmVkIGxhc3RJbmRleCA9IGdldExhc3RJbmRleEFzVW5zaWduZWQoZXhlYywgdGhpcywgaW5wdXQp
OworICAgIGlmIChsYXN0SW5kZXggPT0gVUlOVF9NQVgpCisgICAgICAgIHJldHVybiBNYXRjaFJl
c3VsdDo6ZmFpbGVkKCk7CisgICAgCiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwQ29u
c3RydWN0b3ItPnBlcmZvcm1NYXRjaCh2bSwgcmVnRXhwLCBzdHJpbmcsIGlucHV0LCBsYXN0SW5k
ZXgpOwogICAgIHNldExhc3RJbmRleChleGVjLCByZXN1bHQuZW5kKTsKICAgICByZXR1cm4gcmVz
dWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgJKHJldmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fbGFzdEluZGV4LmdldCgpOwogICAgIH0KIAotICAgIGJvb2wgdGVzdChF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBz
dHJpbmcpIHsgcmV0dXJuIG1hdGNoKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nKTsgfQorICAg
IGJvb2wgdGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuICEhbWF0Y2goZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJpbmcpOyB9CiAgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
SlNTdHJpbmcqKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDE5NzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzIsNyArMTA3Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICBNYXRjaFJlc3VsdCByZXN1bHQg
PSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCp2bSwgcmVnRXhwLCBzdHJpbmcsIHMs
IDApOwogICAgIC8vIGNhc2Ugd2l0aG91dCAnZycgZmxhZyBpcyBoYW5kbGVkIGxpa2UgUmVnRXhw
LnByb3RvdHlwZS5leGVjCiAgICAgaWYgKCFnbG9iYWwpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RyaW5nLCByZWdFeHAsIHJlc3VsdCkgOiBqc051bGwoKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAsIHJlc3VsdC5zdGFydCkgOiBqc051bGwoKSk7
CiAKICAgICAvLyByZXR1cm4gYXJyYXkgb2YgbWF0Y2hlcwogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGxpc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>