<?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>163802</bug_id>
          
          <creation_ts>2016-10-21 10:40:18 -0700</creation_ts>
          <short_desc>Slow and big Heap methods should not be inline</short_desc>
          <delta_ts>2016-10-22 12:37:53 -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>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>
          
          <blocked>163562</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</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>1242973</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-21 10:40:18 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242977</commentid>
    <comment_count>1</comment_count>
      <attachid>292372</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-21 10:42:02 -0700</bug_when>
    <thetext>Created attachment 292372
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242981</commentid>
    <comment_count>2</comment_count>
      <attachid>292374</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-21 10:47:09 -0700</bug_when>
    <thetext>Created attachment 292374
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242983</commentid>
    <comment_count>3</comment_count>
      <attachid>292374</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-21 10:48:23 -0700</bug_when>
    <thetext>Comment on attachment 292374
the patch

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

&gt; Source/JavaScriptCore/heap/HeapInlines.h:-155
&gt; -inline void Heap::reportExtraMemoryAllocated(size_t size)
&gt; -{
&gt; -    if (size &gt; minExtraMemory) 
&gt; -        reportExtraMemoryAllocatedSlowCase(size);
&gt; -}
&gt; -

Hmmm, maybe I shouldn&apos;t have made this inline.  I&apos;ll run benchmarks and find out. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242984</commentid>
    <comment_count>4</comment_count>
      <attachid>292374</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-21 10:48:51 -0700</bug_when>
    <thetext>Comment on attachment 292374
the patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243066</commentid>
    <comment_count>5</comment_count>
      <attachid>292391</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-21 13:40:16 -0700</bug_when>
    <thetext>Created attachment 292391
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243398</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-22 12:37:53 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/207714</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292372</attachid>
            <date>2016-10-21 10:42:02 -0700</date>
            <delta_ts>2016-10-21 10:47:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>10366</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NjgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE2LTEwLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U2xvdyBhbmQgYmlnIEhlYXAgbWV0aG9kcyBzaG91bGQgbm90IGJlIGlubGluZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzODAyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBKU0Mgb2Z0ZW4g
c3VmZmVycyBmcm9tIHRoZSBpbmxpbmUgY2FyZ28gY3VsdCwgYW5kIEhlYXAgaXMgYSBwcmltZSBl
eGFtcGxlLiBUaGlzIG91dGxpbmVzIGEKKyAgICAgICAgYnVuY2ggb2YgSGVhcCBtZXRob2RzIHRo
YXQgYXJlIGVpdGhlciBhbHJlYWR5IHZlcnkgYmlnLCBvciBjYWxsIG91dC1vZi1saW5lIG1ldGhv
ZHMsIG9yIGNhbGwKKyAgICAgICAgdmVyeSBiaWcgbWV0aG9kcywgb3IgYXJlIG5vdCBjYWxsZWQg
b2Z0ZW4gZW5vdWdoIGZvciBpbmxpbmluZyB0byBtYXR0ZXIuCisgICAgICAgIAorICAgICAgICBU
aGlzIHNpbXBsaWZpZXMgY29uY3VycmVudCBHQyB3b3JrIGJlY2F1c2UgSSdtIHNvIHRpcmVkIG9m
IHJlY29tcGlsaW5nIHRoZSB3b3JsZCB3aGVuIEkgdG91Y2gKKyAgICAgICAgb25lIG9mIHRoZXNl
IG1ldGhvZHMuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFw
OjpzaG91bGRDb2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNDdXJyZW50VGhyZWFkQnVz
eSk6CisgICAgICAgIChKU0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6cmVwb3J0RXh0ZXJuYWxNZW1vcnlWaXNpdGVkKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RBY2Nv
cmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OkhlYXA6OmRlY3JlbWVu
dERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVnaXN0
ZXJXZWFrR0NNYXApOgorICAgICAgICAoSlNDOjpIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFwKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6Okhl
YXA6OmRpZEZyZWVCbG9jayk6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpIZWFwOjpzaG91bGRDb2xsZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVh
cDo6aXNDdXJyZW50VGhyZWFkQnVzeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OnJl
cG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6
cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6
cmVwb3J0RXh0ZXJuYWxNZW1vcnlWaXNpdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVh
cDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkhlYXA6OmNvbGxlY3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6cmVnaXN0ZXJXZWFrR0NNYXApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFwKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkhlYXA6OmRpZEZyZWVCbG9jayk6IERlbGV0ZWQuCisKIDIwMTYtMTAtMjAgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFdBU00gY2FsbHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lv
biAyMDc2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU0Nyw0ICsxNTQ3LDEzMCBAQCB2b2lkIEhlYXA6OndyaXRlQmFycmllclNs
b3dQYXRoKGNvbnN0IEpTCiAgICAgYWRkVG9SZW1lbWJlcmVkU2V0KGZyb20pOwogfQogCitib29s
IEhlYXA6OnNob3VsZENvbGxlY3QoKQoreworICAgIGlmIChpc0RlZmVycmVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpIHx8IG11dGF0b3JTdGF0ZSgpID09
IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0
ZWRUaGlzQ3ljbGUgPiBPcHRpb25zOjpnY01heEhlYXBTaXplKCk7CisgICAgcmV0dXJuIG1fYnl0
ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgPiBtX21heEVkZW5TaXplOworfQorCitib29sIEhlYXA6Omlz
Q3VycmVudFRocmVhZEJ1c3koKQoreworICAgIHJldHVybiBtYXlCZUdDVGhyZWFkKCkgfHwgbXV0
YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpSdW5uaW5nOworfQorCit2b2lkIEhlYXA6OnJl
cG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemVfdCBzaXplKQoreworICAgIGlmIChzaXplID4g
bWluRXh0cmFNZW1vcnkpIAorICAgICAgICByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dD
YXNlKHNpemUpOworfQorCit2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChDZWxs
U3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQoreworICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
ZG91YmxlLWNvdW50IHRoZSBleHRyYSBtZW1vcnkgdGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlv
dXMgY29sbGVjdGlvbnMuCisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25T
Y29wZTo6RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dHJhTWVtb3J5U2l6ZTsKKyAgICAK
KyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBvbGRTaXplID0gKmNvdW50ZXI7CisgICAg
ICAgIGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcChjb3VudGVyLCBvbGRTaXplLCBvbGRTaXpl
ICsgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCisjaWYgRU5BQkxFKFJF
U09VUkNFX1VTQUdFKQordm9pZCBIZWFwOjpyZXBvcnRFeHRlcm5hbE1lbW9yeVZpc2l0ZWQoQ2Vs
bFN0YXRlIG9sZFN0YXRlLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICAvLyBXZSBkb24ndCB3YW50IHRv
IGRvdWJsZS1jb3VudCB0aGUgZXh0ZXJuYWwgbWVtb3J5IHRoYXQgd2FzIHJlcG9ydGVkIGluIHBy
ZXZpb3VzIGNvbGxlY3Rpb25zLgorICAgIGlmIChjb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0
aW9uU2NvcGU6OkVkZW4gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRlOjpPbGRHcmV5KQorICAgICAg
ICByZXR1cm47CisKKyAgICBzaXplX3QqIGNvdW50ZXIgPSAmbV9leHRlcm5hbE1lbW9yeVNpemU7
CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBvbGRTaXplID0gKmNvdW50ZXI7Cisg
ICAgICAgIGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcChjb3VudGVyLCBvbGRTaXplLCBvbGRT
aXplICsgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorI2VuZGlmCisKK3Zv
aWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KHNpemVfdCBzaXplKQoreworICAg
IGlmIChzaXplID4gbWluRXh0cmFNZW1vcnkpIAorICAgICAgICBkZXByZWNhdGVkUmVwb3J0RXh0
cmFNZW1vcnlTbG93Q2FzZShzaXplKTsKK30KKworYm9vbCBIZWFwOjpjb2xsZWN0SWZOZWNlc3Nh
cnlPckRlZmVyKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCit7CisgICAgaWYg
KCFzaG91bGRDb2xsZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChkZWZl
cnJhbENvbnRleHQpCisgICAgICAgIGRlZmVycmFsQ29udGV4dC0+bV9zaG91bGRHQyA9IHRydWU7
CisgICAgZWxzZQorICAgICAgICBjb2xsZWN0KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgSGVhcDo6Y29sbGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2JhYmlsaXR5KCkKK3sKKyAgICBp
ZiAoaXNEZWZlcnJlZCgpIHx8ICFtX2lzU2FmZVRvQ29sbGVjdCB8fCBjb2xsZWN0aW9uU2NvcGUo
KSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdHQykKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKHJhbmRvbU51bWJlcigpIDwgT3B0aW9uczo6ZGVmZXJHQ1Byb2Jh
YmlsaXR5KCkpIHsKKyAgICAgICAgY29sbGVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gSWYgb3VyIGNvaW4gZmxpcCB0b2xkIHVzIG5vdCB0byBHQywgd2Ugc3RpbGwgbWln
aHQgR0MsCisgICAgLy8gYnV0IHdlIEdDIGFjY29yZGluZyB0byBvdXIgbWVtb3J5IHByZXNzdXJl
IG1hcmtlcnMuCisgICAgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOworfQorCit2b2lkIEhl
YXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKK3sKKyAgICBkZWNyZW1l
bnREZWZlcnJhbERlcHRoKCk7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmRlZmVyR0NTaG91
bGRDb2xsZWN0V2l0aFByb2JhYmlsaXR5KCkpKQorICAgICAgICBjb2xsZWN0QWNjb3JkaW5nVG9E
ZWZlckdDUHJvYmFiaWxpdHkoKTsKKyAgICBlbHNlCisgICAgICAgIGNvbGxlY3RJZk5lY2Vzc2Fy
eU9yRGVmZXIoKTsKK30KKwordm9pZCBIZWFwOjpyZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFr
R0NNYXAsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVuaW5nQ2FsbGJhY2spCit7CisgICAgbV93
ZWFrR0NNYXBzLmFkZCh3ZWFrR0NNYXAsIFdURk1vdmUocHJ1bmluZ0NhbGxiYWNrKSk7Cit9CisK
K3ZvaWQgSGVhcDo6dW5yZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXApCit7CisgICAg
bV93ZWFrR0NNYXBzLnJlbW92ZSh3ZWFrR0NNYXApOworfQorCit2b2lkIEhlYXA6OmRpZEFsbG9j
YXRlQmxvY2soc2l6ZV90IGNhcGFjaXR5KQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkK
KyAgICBtX2Jsb2NrQnl0ZXNBbGxvY2F0ZWQgKz0gY2FwYWNpdHk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShjYXBhY2l0eSk7CisjZW5kaWYKK30KKwordm9pZCBIZWFwOjpkaWRGcmVlQmxvY2so
c2l6ZV90IGNhcGFjaXR5KQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKKyAgICBtX2Js
b2NrQnl0ZXNBbGxvY2F0ZWQgLT0gY2FwYWNpdHk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShj
YXBhY2l0eSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlzaW9uIDIwNzY4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDI0ICszOSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgYm9vbCBIZWFwOjpz
aG91bGRDb2xsZWN0KCkKLXsKLSAgICBpZiAoaXNEZWZlcnJlZCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChjb2xsZWN0aW9uU2NvcGUoKSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9y
U3RhdGU6OkhlbHBpbmdHQykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChPcHRpb25z
OjpnY01heEhlYXBTaXplKCkpCi0gICAgICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5
Y2xlID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpOwotICAgIHJldHVybiBtX2J5dGVzQWxsb2Nh
dGVkVGhpc0N5Y2xlID4gbV9tYXhFZGVuU2l6ZTsKLX0KLQotaW5saW5lIGJvb2wgSGVhcDo6aXND
dXJyZW50VGhyZWFkQnVzeSgpCi17Ci0gICAgcmV0dXJuIG1heUJlR0NUaHJlYWQoKSB8fCBtdXRh
dG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmc7Ci19Ci0KIEFMV0FZU19JTkxJTkUg
SGVhcCogSGVhcDo6aGVhcChjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKICAgICByZXR1cm4gY2Vs
bC0+aGVhcCgpOwpAQCAtMTQ3LDUwICsxMjksNiBAQCBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJh
cnJpZXJXaXRob3V0RmVuCiAgICAgICAgIGFkZFRvUmVtZW1iZXJlZFNldChmcm9tKTsKIH0KIAot
aW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZV90IHNpemUp
Ci17Ci0gICAgaWYgKHNpemUgPiBtaW5FeHRyYU1lbW9yeSkgCi0gICAgICAgIHJlcG9ydEV4dHJh
TWVtb3J5QWxsb2NhdGVkU2xvd0Nhc2Uoc2l6ZSk7Ci19Ci0KLWlubGluZSB2b2lkIEhlYXA6OnJl
cG9ydEV4dHJhTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQot
ewotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZG91YmxlLWNvdW50IHRoZSBleHRyYSBtZW1vcnkg
dGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMgY29sbGVjdGlvbnMuCi0gICAgaWYgKGNvbGxl
Y3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxs
U3RhdGU6Ok9sZEdyZXkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNpemVfdCogY291bnRlciA9
ICZtX2V4dHJhTWVtb3J5U2l6ZTsKLSAgICAKLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHNpemVf
dCBvbGRTaXplID0gKmNvdW50ZXI7Ci0gICAgICAgIGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dh
cChjb3VudGVyLCBvbGRTaXplLCBvbGRTaXplICsgc2l6ZSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgfQotfQotCi0jaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotaW5saW5lIHZvaWQgSGVh
cDo6cmVwb3J0RXh0ZXJuYWxNZW1vcnlWaXNpdGVkKENlbGxTdGF0ZSBvbGRTdGF0ZSwgc2l6ZV90
IHNpemUpCi17Ci0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBkb3VibGUtY291bnQgdGhlIGV4dGVy
bmFsIG1lbW9yeSB0aGF0IHdhcyByZXBvcnRlZCBpbiBwcmV2aW91cyBjb2xsZWN0aW9ucy4KLSAg
ICBpZiAoY29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuICYmIG9sZFN0
YXRlID09IENlbGxTdGF0ZTo6T2xkR3JleSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90
KiBjb3VudGVyID0gJm1fZXh0ZXJuYWxNZW1vcnlTaXplOwotCi0gICAgZm9yICg7OykgewotICAg
ICAgICBzaXplX3Qgb2xkU2l6ZSA9ICpjb3VudGVyOwotICAgICAgICBpZiAoV1RGOjp3ZWFrQ29t
cGFyZUFuZFN3YXAoY291bnRlciwgb2xkU2l6ZSwgb2xkU2l6ZSArIHNpemUpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLX0KLSNlbmRpZgotCi1pbmxpbmUgdm9pZCBIZWFwOjpkZXByZWNh
dGVkUmVwb3J0RXh0cmFNZW1vcnkoc2l6ZV90IHNpemUpCi17Ci0gICAgaWYgKHNpemUgPiBtaW5F
eHRyYU1lbW9yeSkgCi0gICAgICAgIGRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeVNsb3dDYXNl
KHNpemUpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBIZWFw
Ojpmb3JFYWNoQ29kZUJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7CiAgICAgZm9yRWFjaENv
ZGVCbG9ja0ltcGwoc2NvcGVkTGFtYmRhUmVmPGJvb2woQ29kZUJsb2NrKik+KGZ1bmMpKTsKQEAg
LTM1Myw0MiArMjkxLDYgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0
aAogICAgIG1fZGVmZXJyYWxEZXB0aC0tOwogfQogCi1pbmxpbmUgYm9vbCBIZWFwOjpjb2xsZWN0
SWZOZWNlc3NhcnlPckRlZmVyKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCi17
Ci0gICAgaWYgKCFzaG91bGRDb2xsZWN0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChkZWZlcnJhbENvbnRleHQpCi0gICAgICAgIGRlZmVycmFsQ29udGV4dC0+bV9zaG91bGRH
QyA9IHRydWU7Ci0gICAgZWxzZQotICAgICAgICBjb2xsZWN0KCk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWlubGluZSB2b2lkIEhlYXA6OmNvbGxlY3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJp
bGl0eSgpCi17Ci0gICAgaWYgKGlzRGVmZXJyZWQoKSB8fCAhbV9pc1NhZmVUb0NvbGxlY3QgfHwg
Y29sbGVjdGlvblNjb3BlKCkgfHwgbXV0YXRvclN0YXRlKCkgPT0gTXV0YXRvclN0YXRlOjpIZWxw
aW5nR0MpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChyYW5kb21OdW1iZXIoKSA8IE9wdGlv
bnM6OmRlZmVyR0NQcm9iYWJpbGl0eSgpKSB7Ci0gICAgICAgIGNvbGxlY3QoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIG91ciBjb2luIGZsaXAgdG9sZCB1cyBub3QgdG8g
R0MsIHdlIHN0aWxsIG1pZ2h0IEdDLAotICAgIC8vIGJ1dCB3ZSBHQyBhY2NvcmRpbmcgdG8gb3Vy
IG1lbW9yeSBwcmVzc3VyZSBtYXJrZXJzLgotICAgIGNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIo
KTsKLX0KLQotaW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZO
ZWVkZWQoKQotewotICAgIGRlY3JlbWVudERlZmVycmFsRGVwdGgoKTsKLSAgICBpZiAoVU5MSUtF
TFkoT3B0aW9uczo6ZGVmZXJHQ1Nob3VsZENvbGxlY3RXaXRoUHJvYmFiaWxpdHkoKSkpCi0gICAg
ICAgIGNvbGxlY3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSgpOwotICAgIGVsc2UKLSAg
ICAgICAgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOwotfQotCiBpbmxpbmUgSGFzaFNldDxN
YXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBIZWFwOjptYXJrTGlzdFNldCgpCiB7CiAgICAgaWYgKCFt
X21hcmtMaXN0U2V0KQpAQCAtMzk2LDMyICsyOTgsNCBAQCBpbmxpbmUgSGFzaFNldDxNYXJrZWRB
cmd1bWVudEJ1ZmZlcio+JiBICiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQogCi1pbmxp
bmUgdm9pZCBIZWFwOjpyZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXAsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBwcnVuaW5nQ2FsbGJhY2spCi17Ci0gICAgbV93ZWFrR0NNYXBzLmFkZCh3
ZWFrR0NNYXAsIFdURk1vdmUocHJ1bmluZ0NhbGxiYWNrKSk7Ci19Ci0KLWlubGluZSB2b2lkIEhl
YXA6OnVucmVnaXN0ZXJXZWFrR0NNYXAodm9pZCogd2Vha0dDTWFwKQotewotICAgIG1fd2Vha0dD
TWFwcy5yZW1vdmUod2Vha0dDTWFwKTsKLX0KLQotaW5saW5lIHZvaWQgSGVhcDo6ZGlkQWxsb2Nh
dGVCbG9jayhzaXplX3QgY2FwYWNpdHkpCi17Ci0jaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQot
ICAgIG1fYmxvY2tCeXRlc0FsbG9jYXRlZCArPSBjYXBhY2l0eTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGNhcGFjaXR5KTsKLSNlbmRpZgotfQotCi1pbmxpbmUgdm9pZCBIZWFwOjpkaWRGcmVl
QmxvY2soc2l6ZV90IGNhcGFjaXR5KQotewotI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLSAg
ICBtX2Jsb2NrQnl0ZXNBbGxvY2F0ZWQgLT0gY2FwYWNpdHk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShjYXBhY2l0eSk7Ci0jZW5kaWYKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292374</attachid>
            <date>2016-10-21 10:47:09 -0700</date>
            <delta_ts>2016-10-21 13:40:16 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>11690</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NjgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE2LTEwLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U2xvdyBhbmQgYmlnIEhlYXAgbWV0aG9kcyBzaG91bGQgbm90IGJlIGlubGluZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzODAyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBKU0Mgb2Z0ZW4g
c3VmZmVycyBmcm9tIHRoZSBpbmxpbmUgY2FyZ28gY3VsdCwgYW5kIEhlYXAgaXMgYSBwcmltZSBl
eGFtcGxlLiBUaGlzIG91dGxpbmVzIGEKKyAgICAgICAgYnVuY2ggb2YgSGVhcCBtZXRob2RzIHRo
YXQgYXJlIGVpdGhlciBhbHJlYWR5IHZlcnkgYmlnLCBvciBjYWxsIG91dC1vZi1saW5lIG1ldGhv
ZHMsIG9yIGNhbGwKKyAgICAgICAgdmVyeSBiaWcgbWV0aG9kcywgb3IgYXJlIG5vdCBjYWxsZWQg
b2Z0ZW4gZW5vdWdoIGZvciBpbmxpbmluZyB0byBtYXR0ZXIuCisgICAgICAgIAorICAgICAgICBU
aGlzIHNpbXBsaWZpZXMgY29uY3VycmVudCBHQyB3b3JrIGJlY2F1c2UgSSdtIHNvIHRpcmVkIG9m
IHJlY29tcGlsaW5nIHRoZSB3b3JsZCB3aGVuIEkgdG91Y2gKKyAgICAgICAgb25lIG9mIHRoZXNl
IG1ldGhvZHMuCisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFw
OjpzaG91bGRDb2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNDdXJyZW50VGhyZWFkQnVz
eSk6CisgICAgICAgIChKU0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6cmVwb3J0RXh0ZXJuYWxNZW1vcnlWaXNpdGVkKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RBY2Nv
cmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSk6CisgICAgICAgIChKU0M6OkhlYXA6OmRlY3JlbWVu
dERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVnaXN0
ZXJXZWFrR0NNYXApOgorICAgICAgICAoSlNDOjpIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFwKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6Okhl
YXA6OmRpZEZyZWVCbG9jayk6CisgICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpIZWFwOjpzaG91bGRDb2xsZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVh
cDo6aXNDdXJyZW50VGhyZWFkQnVzeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OnJl
cG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6
cmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6
cmVwb3J0RXh0ZXJuYWxNZW1vcnlWaXNpdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVh
cDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkhlYXA6OmNvbGxlY3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SGVhcDo6cmVnaXN0ZXJXZWFrR0NNYXApOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFwKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGVCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkhlYXA6OmRpZEZyZWVCbG9jayk6IERlbGV0ZWQuCisKIDIwMTYtMTAtMjAgIEtlaXRoIE1p
bGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFdBU00gY2FsbHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lv
biAyMDc2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU0Nyw0ICsxNTQ3LDEzMCBAQCB2b2lkIEhlYXA6OndyaXRlQmFycmllclNs
b3dQYXRoKGNvbnN0IEpTCiAgICAgYWRkVG9SZW1lbWJlcmVkU2V0KGZyb20pOwogfQogCitib29s
IEhlYXA6OnNob3VsZENvbGxlY3QoKQoreworICAgIGlmIChpc0RlZmVycmVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpIHx8IG11dGF0b3JTdGF0ZSgpID09
IE11dGF0b3JTdGF0ZTo6SGVscGluZ0dDKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0
ZWRUaGlzQ3ljbGUgPiBPcHRpb25zOjpnY01heEhlYXBTaXplKCk7CisgICAgcmV0dXJuIG1fYnl0
ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgPiBtX21heEVkZW5TaXplOworfQorCitib29sIEhlYXA6Omlz
Q3VycmVudFRocmVhZEJ1c3koKQoreworICAgIHJldHVybiBtYXlCZUdDVGhyZWFkKCkgfHwgbXV0
YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpSdW5uaW5nOworfQorCit2b2lkIEhlYXA6OnJl
cG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemVfdCBzaXplKQoreworICAgIGlmIChzaXplID4g
bWluRXh0cmFNZW1vcnkpIAorICAgICAgICByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dD
YXNlKHNpemUpOworfQorCit2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChDZWxs
U3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQoreworICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
ZG91YmxlLWNvdW50IHRoZSBleHRyYSBtZW1vcnkgdGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlv
dXMgY29sbGVjdGlvbnMuCisgICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25T
Y29wZTo6RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dHJhTWVtb3J5U2l6ZTsKKyAgICAK
KyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBvbGRTaXplID0gKmNvdW50ZXI7CisgICAg
ICAgIGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcChjb3VudGVyLCBvbGRTaXplLCBvbGRTaXpl
ICsgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCisjaWYgRU5BQkxFKFJF
U09VUkNFX1VTQUdFKQordm9pZCBIZWFwOjpyZXBvcnRFeHRlcm5hbE1lbW9yeVZpc2l0ZWQoQ2Vs
bFN0YXRlIG9sZFN0YXRlLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICAvLyBXZSBkb24ndCB3YW50IHRv
IGRvdWJsZS1jb3VudCB0aGUgZXh0ZXJuYWwgbWVtb3J5IHRoYXQgd2FzIHJlcG9ydGVkIGluIHBy
ZXZpb3VzIGNvbGxlY3Rpb25zLgorICAgIGlmIChjb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0
aW9uU2NvcGU6OkVkZW4gJiYgb2xkU3RhdGUgPT0gQ2VsbFN0YXRlOjpPbGRHcmV5KQorICAgICAg
ICByZXR1cm47CisKKyAgICBzaXplX3QqIGNvdW50ZXIgPSAmbV9leHRlcm5hbE1lbW9yeVNpemU7
CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBvbGRTaXplID0gKmNvdW50ZXI7Cisg
ICAgICAgIGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcChjb3VudGVyLCBvbGRTaXplLCBvbGRT
aXplICsgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorI2VuZGlmCisKK3Zv
aWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KHNpemVfdCBzaXplKQoreworICAg
IGlmIChzaXplID4gbWluRXh0cmFNZW1vcnkpIAorICAgICAgICBkZXByZWNhdGVkUmVwb3J0RXh0
cmFNZW1vcnlTbG93Q2FzZShzaXplKTsKK30KKworYm9vbCBIZWFwOjpjb2xsZWN0SWZOZWNlc3Nh
cnlPckRlZmVyKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCit7CisgICAgaWYg
KCFzaG91bGRDb2xsZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChkZWZl
cnJhbENvbnRleHQpCisgICAgICAgIGRlZmVycmFsQ29udGV4dC0+bV9zaG91bGRHQyA9IHRydWU7
CisgICAgZWxzZQorICAgICAgICBjb2xsZWN0KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgSGVhcDo6Y29sbGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2JhYmlsaXR5KCkKK3sKKyAgICBp
ZiAoaXNEZWZlcnJlZCgpIHx8ICFtX2lzU2FmZVRvQ29sbGVjdCB8fCBjb2xsZWN0aW9uU2NvcGUo
KSB8fCBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdHQykKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKHJhbmRvbU51bWJlcigpIDwgT3B0aW9uczo6ZGVmZXJHQ1Byb2Jh
YmlsaXR5KCkpIHsKKyAgICAgICAgY29sbGVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gSWYgb3VyIGNvaW4gZmxpcCB0b2xkIHVzIG5vdCB0byBHQywgd2Ugc3RpbGwgbWln
aHQgR0MsCisgICAgLy8gYnV0IHdlIEdDIGFjY29yZGluZyB0byBvdXIgbWVtb3J5IHByZXNzdXJl
IG1hcmtlcnMuCisgICAgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOworfQorCit2b2lkIEhl
YXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKK3sKKyAgICBkZWNyZW1l
bnREZWZlcnJhbERlcHRoKCk7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmRlZmVyR0NTaG91
bGRDb2xsZWN0V2l0aFByb2JhYmlsaXR5KCkpKQorICAgICAgICBjb2xsZWN0QWNjb3JkaW5nVG9E
ZWZlckdDUHJvYmFiaWxpdHkoKTsKKyAgICBlbHNlCisgICAgICAgIGNvbGxlY3RJZk5lY2Vzc2Fy
eU9yRGVmZXIoKTsKK30KKwordm9pZCBIZWFwOjpyZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFr
R0NNYXAsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVuaW5nQ2FsbGJhY2spCit7CisgICAgbV93
ZWFrR0NNYXBzLmFkZCh3ZWFrR0NNYXAsIFdURk1vdmUocHJ1bmluZ0NhbGxiYWNrKSk7Cit9CisK
K3ZvaWQgSGVhcDo6dW5yZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXApCit7CisgICAg
bV93ZWFrR0NNYXBzLnJlbW92ZSh3ZWFrR0NNYXApOworfQorCit2b2lkIEhlYXA6OmRpZEFsbG9j
YXRlQmxvY2soc2l6ZV90IGNhcGFjaXR5KQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkK
KyAgICBtX2Jsb2NrQnl0ZXNBbGxvY2F0ZWQgKz0gY2FwYWNpdHk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShjYXBhY2l0eSk7CisjZW5kaWYKK30KKwordm9pZCBIZWFwOjpkaWRGcmVlQmxvY2so
c2l6ZV90IGNhcGFjaXR5KQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKKyAgICBtX2Js
b2NrQnl0ZXNBbGxvY2F0ZWQgLT0gY2FwYWNpdHk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShj
YXBhY2l0eSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDc2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MywxMiArMTgzLDEyIEBAIHB1
YmxpYzoKICAgICAvLyBVc2UgdGhpcyBBUEkgdG8gcmVwb3J0IG5vbi1HQyBtZW1vcnkgcmVmZXJl
bmNlZCBieSBHQyBvYmplY3RzLiBCZSBzdXJlIHRvCiAgICAgLy8gY2FsbCBib3RoIG9mIHRoZXNl
IGZ1bmN0aW9uczogQ2FsbGluZyBvbmx5IG9uZSBtYXkgdHJpZ2dlciBjYXRhc3Ryb3BpYwogICAg
IC8vIG1lbW9yeSBncm93dGguCi0gICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChz
aXplX3QpOwotICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKENlbGxTdGF0ZSBvbGRT
dGF0ZSwgc2l6ZV90KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVt
b3J5QWxsb2NhdGVkKHNpemVfdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRF
eHRyYU1lbW9yeVZpc2l0ZWQoQ2VsbFN0YXRlIG9sZFN0YXRlLCBzaXplX3QpOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX1VTQUdFKQogICAgIC8vIFVzZSB0aGlzIEFQSSB0byByZXBvcnQgdGhlIHN1
YnNldCBvZiBleHRyYSBtZW1vcnkgdGhhdCBsaXZlcyBvdXRzaWRlIHRoaXMgcHJvY2Vzcy4KLSAg
ICB2b2lkIHJlcG9ydEV4dGVybmFsTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNp
emVfdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRlcm5hbE1lbW9yeVZp
c2l0ZWQoQ2VsbFN0YXRlIG9sZFN0YXRlLCBzaXplX3QpOwogICAgIHNpemVfdCBleHRlcm5hbE1l
bW9yeVNpemUoKSB7IHJldHVybiBtX2V4dGVybmFsTWVtb3J5U2l6ZTsgfQogI2VuZGlmCiAKQEAg
LTM3NCw3ICszNzQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbmNyZW1lbnREZWZlcnJhbERl
cHRoKCk7CiAgICAgdm9pZCBkZWNyZW1lbnREZWZlcnJhbERlcHRoKCk7Ci0gICAgdm9pZCBkZWNy
ZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRlZCgpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKTsKIAogICAgIHNpemVf
dCB0aHJlYWRWaXNpdENvdW50KCk7CiAgICAgc2l6ZV90IHRocmVhZEJ5dGVzVmlzaXRlZCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAy
MDc2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSwyNCArMzksNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5l
IGJvb2wgSGVhcDo6c2hvdWxkQ29sbGVjdCgpCi17Ci0gICAgaWYgKGlzRGVmZXJyZWQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoY29sbGVjdGlvblNjb3BlKCkgfHwgbXV0YXRvclN0YXRl
KCkgPT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQotICAgICAgICByZXR1cm4gbV9ieXRlc0Fs
bG9jYXRlZFRoaXNDeWNsZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKTsKLSAgICByZXR1cm4g
bV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA+IG1fbWF4RWRlblNpemU7Ci19Ci0KLWlubGluZSBi
b29sIEhlYXA6OmlzQ3VycmVudFRocmVhZEJ1c3koKQotewotICAgIHJldHVybiBtYXlCZUdDVGhy
ZWFkKCkgfHwgbXV0YXRvclN0YXRlKCkgIT0gTXV0YXRvclN0YXRlOjpSdW5uaW5nOwotfQotCiBB
TFdBWVNfSU5MSU5FIEhlYXAqIEhlYXA6OmhlYXAoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7CiAg
ICAgcmV0dXJuIGNlbGwtPmhlYXAoKTsKQEAgLTE0Nyw1MCArMTI5LDYgQEAgaW5saW5lIHZvaWQg
SGVhcDo6d3JpdGVCYXJyaWVyV2l0aG91dEZlbgogICAgICAgICBhZGRUb1JlbWVtYmVyZWRTZXQo
ZnJvbSk7CiB9CiAKLWlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVk
KHNpemVfdCBzaXplKQotewotICAgIGlmIChzaXplID4gbWluRXh0cmFNZW1vcnkpIAotICAgICAg
ICByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZFNsb3dDYXNlKHNpemUpOwotfQotCi1pbmxpbmUg
dm9pZCBIZWFwOjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQoQ2VsbFN0YXRlIG9sZFN0YXRlLCBz
aXplX3Qgc2l6ZSkKLXsKLSAgICAvLyBXZSBkb24ndCB3YW50IHRvIGRvdWJsZS1jb3VudCB0aGUg
ZXh0cmEgbWVtb3J5IHRoYXQgd2FzIHJlcG9ydGVkIGluIHByZXZpb3VzIGNvbGxlY3Rpb25zLgot
ICAgIGlmIChjb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4gJiYgb2xk
U3RhdGUgPT0gQ2VsbFN0YXRlOjpPbGRHcmV5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXpl
X3QqIGNvdW50ZXIgPSAmbV9leHRyYU1lbW9yeVNpemU7Ci0gICAgCi0gICAgZm9yICg7Oykgewot
ICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9ICpjb3VudGVyOwotICAgICAgICBpZiAoV1RGOjp3ZWFr
Q29tcGFyZUFuZFN3YXAoY291bnRlciwgb2xkU2l6ZSwgb2xkU2l6ZSArIHNpemUpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLWlu
bGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dGVybmFsTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xk
U3RhdGUsIHNpemVfdCBzaXplKQotewotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZG91YmxlLWNv
dW50IHRoZSBleHRlcm5hbCBtZW1vcnkgdGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMgY29s
bGVjdGlvbnMuCi0gICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6
RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dGVybmFsTWVtb3J5U2l6ZTsKLQotICAgIGZv
ciAoOzspIHsKLSAgICAgICAgc2l6ZV90IG9sZFNpemUgPSAqY291bnRlcjsKLSAgICAgICAgaWYg
KFdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKGNvdW50ZXIsIG9sZFNpemUsIG9sZFNpemUgKyBzaXpl
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0jZW5kaWYKLQotaW5saW5lIHZvaWQg
SGVhcDo6ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KHNpemVfdCBzaXplKQotewotICAgIGlm
IChzaXplID4gbWluRXh0cmFNZW1vcnkpIAotICAgICAgICBkZXByZWNhdGVkUmVwb3J0RXh0cmFN
ZW1vcnlTbG93Q2FzZShzaXplKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHZvaWQgSGVhcDo6Zm9yRWFjaENvZGVCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jKQogewog
ICAgIGZvckVhY2hDb2RlQmxvY2tJbXBsKHNjb3BlZExhbWJkYVJlZjxib29sKENvZGVCbG9jayop
PihmdW5jKSk7CkBAIC0zNTMsNDIgKzI5MSw2IEBAIGlubGluZSB2b2lkIEhlYXA6OmRlY3JlbWVu
dERlZmVycmFsRGVwdGgKICAgICBtX2RlZmVycmFsRGVwdGgtLTsKIH0KIAotaW5saW5lIGJvb2wg
SGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcihHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJy
YWxDb250ZXh0KQotewotICAgIGlmICghc2hvdWxkQ29sbGVjdCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoZGVmZXJyYWxDb250ZXh0KQotICAgICAgICBkZWZlcnJhbENvbnRl
eHQtPm1fc2hvdWxkR0MgPSB0cnVlOwotICAgIGVsc2UKLSAgICAgICAgY29sbGVjdCgpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgdm9pZCBIZWFwOjpjb2xsZWN0QWNjb3JkaW5nVG9E
ZWZlckdDUHJvYmFiaWxpdHkoKQotewotICAgIGlmIChpc0RlZmVycmVkKCkgfHwgIW1faXNTYWZl
VG9Db2xsZWN0IHx8IGNvbGxlY3Rpb25TY29wZSgpIHx8IG11dGF0b3JTdGF0ZSgpID09IE11dGF0
b3JTdGF0ZTo6SGVscGluZ0dDKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocmFuZG9tTnVt
YmVyKCkgPCBPcHRpb25zOjpkZWZlckdDUHJvYmFiaWxpdHkoKSkgewotICAgICAgICBjb2xsZWN0
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJZiBvdXIgY29pbiBmbGlwIHRv
bGQgdXMgbm90IHRvIEdDLCB3ZSBzdGlsbCBtaWdodCBHQywKLSAgICAvLyBidXQgd2UgR0MgYWNj
b3JkaW5nIHRvIG91ciBtZW1vcnkgcHJlc3N1cmUgbWFya2Vycy4KLSAgICBjb2xsZWN0SWZOZWNl
c3NhcnlPckRlZmVyKCk7Ci19Ci0KLWlubGluZSB2b2lkIEhlYXA6OmRlY3JlbWVudERlZmVycmFs
RGVwdGhBbmRHQ0lmTmVlZGVkKCkKLXsKLSAgICBkZWNyZW1lbnREZWZlcnJhbERlcHRoKCk7Ci0g
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmRlZmVyR0NTaG91bGRDb2xsZWN0V2l0aFByb2JhYmls
aXR5KCkpKQotICAgICAgICBjb2xsZWN0QWNjb3JkaW5nVG9EZWZlckdDUHJvYmFiaWxpdHkoKTsK
LSAgICBlbHNlCi0gICAgICAgIGNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoKTsKLX0KLQogaW5s
aW5lIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYgSGVhcDo6bWFya0xpc3RTZXQoKQog
ewogICAgIGlmICghbV9tYXJrTGlzdFNldCkKQEAgLTM5NiwzMiArMjk4LDQgQEAgaW5saW5lIEhh
c2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYgSAogICAgIHJldHVybiAqbV9tYXJrTGlzdFNl
dDsKIH0KIAotaW5saW5lIHZvaWQgSGVhcDo6cmVnaXN0ZXJXZWFrR0NNYXAodm9pZCogd2Vha0dD
TWFwLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcHJ1bmluZ0NhbGxiYWNrKQotewotICAgIG1fd2Vh
a0dDTWFwcy5hZGQod2Vha0dDTWFwLCBXVEZNb3ZlKHBydW5pbmdDYWxsYmFjaykpOwotfQotCi1p
bmxpbmUgdm9pZCBIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFwKHZvaWQqIHdlYWtHQ01hcCkKLXsK
LSAgICBtX3dlYWtHQ01hcHMucmVtb3ZlKHdlYWtHQ01hcCk7Ci19Ci0KLWlubGluZSB2b2lkIEhl
YXA6OmRpZEFsbG9jYXRlQmxvY2soc2l6ZV90IGNhcGFjaXR5KQotewotI2lmIEVOQUJMRShSRVNP
VVJDRV9VU0FHRSkKLSAgICBtX2Jsb2NrQnl0ZXNBbGxvY2F0ZWQgKz0gY2FwYWNpdHk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShjYXBhY2l0eSk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQg
SGVhcDo6ZGlkRnJlZUJsb2NrKHNpemVfdCBjYXBhY2l0eSkKLXsKLSNpZiBFTkFCTEUoUkVTT1VS
Q0VfVVNBR0UpCi0gICAgbV9ibG9ja0J5dGVzQWxsb2NhdGVkIC09IGNhcGFjaXR5OwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oY2FwYWNpdHkpOwotI2VuZGlmCi19Ci0KIH0gLy8gbmFtZXNwYWNl
IEpTQwo=
</data>
<flag name="review"
          id="315453"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292391</attachid>
            <date>2016-10-21 13:40:16 -0700</date>
            <delta_ts>2016-10-21 13:40:16 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12335</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3NjgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE2LTEwLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U2xvdyBhbmQgYmlnIEhlYXAgbWV0aG9kcyBzaG91bGQgbm90IGJlIGlubGluZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzODAyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorICAgICAgICAKKyAgICAgICAgSlNDIG9mdGVuIHN1
ZmZlcnMgZnJvbSB0aGUgaW5saW5lIGNhcmdvIGN1bHQsIGFuZCBIZWFwIGlzIGEgcHJpbWUgZXhh
bXBsZS4gVGhpcyBvdXRsaW5lcyBhCisgICAgICAgIGJ1bmNoIG9mIEhlYXAgbWV0aG9kcyB0aGF0
IGFyZSBlaXRoZXIgYWxyZWFkeSB2ZXJ5IGJpZywgb3IgY2FsbCBvdXQtb2YtbGluZSBtZXRob2Rz
LCBvciBjYWxsCisgICAgICAgIHZlcnkgYmlnIG1ldGhvZHMsIG9yIGFyZSBub3QgY2FsbGVkIG9m
dGVuIGVub3VnaCBmb3IgaW5saW5pbmcgdG8gbWF0dGVyLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBzaW1wbGlmaWVzIGNvbmN1cnJlbnQgR0Mgd29yayBiZWNhdXNlIEknbSBzbyB0aXJlZCBvZiBy
ZWNvbXBpbGluZyB0aGUgd29ybGQgd2hlbiBJIHRvdWNoCisgICAgICAgIG9uZSBvZiB0aGVzZSBt
ZXRob2RzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBsb29rcyB0byBiZSBwZXJmLW5ldXRyYWwu
CisKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGRD
b2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6aXNDdXJyZW50VGhyZWFkQnVzeSk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6
OkhlYXA6OnJlcG9ydEV4dGVybmFsTWVtb3J5VmlzaXRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0
QWNjb3JkaW5nVG9EZWZlckdDUHJvYmFiaWxpdHkpOgorICAgICAgICAoSlNDOjpIZWFwOjpkZWNy
ZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRlZCk6CisgICAgICAgIChKU0M6OkhlYXA6OnJl
Z2lzdGVyV2Vha0dDTWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dW5yZWdpc3RlcldlYWtHQ01h
cCk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlND
OjpIZWFwOjpkaWRGcmVlQmxvY2spOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SGVhcDo6c2hvdWxkQ29sbGVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkhlYXA6OmlzQ3VycmVudFRocmVhZEJ1c3kpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRFeHRlcm5hbE1lbW9yeVZpc2l0ZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpI
ZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2JhYmlsaXR5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpyZWdpc3RlcldlYWtHQ01hcCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkhlYXA6OnVucmVnaXN0ZXJXZWFrR0NNYXApOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpIZWFwOjpkaWRBbGxvY2F0ZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SGVhcDo6ZGlkRnJlZUJsb2NrKTogRGVsZXRlZC4KKwogMjAxNi0xMC0yMCAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
V0FTTSBjYWxscwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9u
IDIwNzY4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTQ3LDQgKzE1NDcsMTE4IEBAIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyU2xv
d1BhdGgoY29uc3QgSlMKICAgICBhZGRUb1JlbWVtYmVyZWRTZXQoZnJvbSk7CiB9CiAKK2Jvb2wg
SGVhcDo6c2hvdWxkQ29sbGVjdCgpCit7CisgICAgaWYgKGlzRGVmZXJyZWQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoY29sbGVjdGlvblNjb3BlKCkgfHwgbXV0YXRvclN0YXRlKCkgPT0g
TXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
T3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpKQorICAgICAgICByZXR1cm4gbV9ieXRlc0FsbG9jYXRl
ZFRoaXNDeWNsZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKTsKKyAgICByZXR1cm4gbV9ieXRl
c0FsbG9jYXRlZFRoaXNDeWNsZSA+IG1fbWF4RWRlblNpemU7Cit9CisKK2Jvb2wgSGVhcDo6aXND
dXJyZW50VGhyZWFkQnVzeSgpCit7CisgICAgcmV0dXJuIG1heUJlR0NUaHJlYWQoKSB8fCBtdXRh
dG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlJ1bm5pbmc7Cit9CisKK3ZvaWQgSGVhcDo6cmVw
b3J0RXh0cmFNZW1vcnlWaXNpdGVkKENlbGxTdGF0ZSBvbGRTdGF0ZSwgc2l6ZV90IHNpemUpCit7
CisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBkb3VibGUtY291bnQgdGhlIGV4dHJhIG1lbW9yeSB0
aGF0IHdhcyByZXBvcnRlZCBpbiBwcmV2aW91cyBjb2xsZWN0aW9ucy4KKyAgICBpZiAoY29sbGVj
dGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuICYmIG9sZFN0YXRlID09IENlbGxT
dGF0ZTo6T2xkR3JleSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90KiBjb3VudGVyID0g
Jm1fZXh0cmFNZW1vcnlTaXplOworICAgIAorICAgIGZvciAoOzspIHsKKyAgICAgICAgc2l6ZV90
IG9sZFNpemUgPSAqY291bnRlcjsKKyAgICAgICAgaWYgKFdURjo6d2Vha0NvbXBhcmVBbmRTd2Fw
KGNvdW50ZXIsIG9sZFNpemUsIG9sZFNpemUgKyBzaXplKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9Cit9CisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCit2b2lkIEhlYXA6OnJlcG9y
dEV4dGVybmFsTWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQor
eworICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZG91YmxlLWNvdW50IHRoZSBleHRlcm5hbCBtZW1v
cnkgdGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMgY29sbGVjdGlvbnMuCisgICAgaWYgKGNv
bGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbiAmJiBvbGRTdGF0ZSA9PSBD
ZWxsU3RhdGU6Ok9sZEdyZXkpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCogY291bnRl
ciA9ICZtX2V4dGVybmFsTWVtb3J5U2l6ZTsKKworICAgIGZvciAoOzspIHsKKyAgICAgICAgc2l6
ZV90IG9sZFNpemUgPSAqY291bnRlcjsKKyAgICAgICAgaWYgKFdURjo6d2Vha0NvbXBhcmVBbmRT
d2FwKGNvdW50ZXIsIG9sZFNpemUsIG9sZFNpemUgKyBzaXplKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICB9Cit9CisjZW5kaWYKKworYm9vbCBIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRl
ZmVyKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCit7CisgICAgaWYgKCFzaG91
bGRDb2xsZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChkZWZlcnJhbENv
bnRleHQpCisgICAgICAgIGRlZmVycmFsQ29udGV4dC0+bV9zaG91bGRHQyA9IHRydWU7CisgICAg
ZWxzZQorICAgICAgICBjb2xsZWN0KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSGVh
cDo6Y29sbGVjdEFjY29yZGluZ1RvRGVmZXJHQ1Byb2JhYmlsaXR5KCkKK3sKKyAgICBpZiAoaXNE
ZWZlcnJlZCgpIHx8ICFtX2lzU2FmZVRvQ29sbGVjdCB8fCBjb2xsZWN0aW9uU2NvcGUoKSB8fCBt
dXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdHQykKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKHJhbmRvbU51bWJlcigpIDwgT3B0aW9uczo6ZGVmZXJHQ1Byb2JhYmlsaXR5
KCkpIHsKKyAgICAgICAgY29sbGVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gSWYgb3VyIGNvaW4gZmxpcCB0b2xkIHVzIG5vdCB0byBHQywgd2Ugc3RpbGwgbWlnaHQgR0Ms
CisgICAgLy8gYnV0IHdlIEdDIGFjY29yZGluZyB0byBvdXIgbWVtb3J5IHByZXNzdXJlIG1hcmtl
cnMuCisgICAgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOworfQorCit2b2lkIEhlYXA6OmRl
Y3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKK3sKKyAgICBkZWNyZW1lbnREZWZl
cnJhbERlcHRoKCk7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmRlZmVyR0NTaG91bGRDb2xs
ZWN0V2l0aFByb2JhYmlsaXR5KCkpKQorICAgICAgICBjb2xsZWN0QWNjb3JkaW5nVG9EZWZlckdD
UHJvYmFiaWxpdHkoKTsKKyAgICBlbHNlCisgICAgICAgIGNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVm
ZXIoKTsKK30KKwordm9pZCBIZWFwOjpyZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXAs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVuaW5nQ2FsbGJhY2spCit7CisgICAgbV93ZWFrR0NN
YXBzLmFkZCh3ZWFrR0NNYXAsIFdURk1vdmUocHJ1bmluZ0NhbGxiYWNrKSk7Cit9CisKK3ZvaWQg
SGVhcDo6dW5yZWdpc3RlcldlYWtHQ01hcCh2b2lkKiB3ZWFrR0NNYXApCit7CisgICAgbV93ZWFr
R0NNYXBzLnJlbW92ZSh3ZWFrR0NNYXApOworfQorCit2b2lkIEhlYXA6OmRpZEFsbG9jYXRlQmxv
Y2soc2l6ZV90IGNhcGFjaXR5KQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKKyAgICBt
X2Jsb2NrQnl0ZXNBbGxvY2F0ZWQgKz0gY2FwYWNpdHk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShjYXBhY2l0eSk7CisjZW5kaWYKK30KKwordm9pZCBIZWFwOjpkaWRGcmVlQmxvY2soc2l6ZV90
IGNhcGFjaXR5KQoreworI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKKyAgICBtX2Jsb2NrQnl0
ZXNBbGxvY2F0ZWQgLT0gY2FwYWNpdHk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjYXBhY2l0
eSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDc2ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBXZSdyZSBhbHdheXMgYnVzeSBvbiB0aGUgY29sbGVjdGlvbiB0aHJlYWRzLiBPbiB0
aGUgbWFpbiB0aHJlYWQsIHRoaXMgcmV0dXJucyB0cnVlIGlmIHdlJ3JlCiAgICAgLy8gaGVscGlu
ZyBoZWFwLgotICAgIGJvb2wgaXNDdXJyZW50VGhyZWFkQnVzeSgpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNDdXJyZW50VGhyZWFkQnVzeSgpOwogICAgIAogICAgIE1hcmtlZFNwYWNl
OjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcigpIHsgcmV0dXJu
IG1fb2JqZWN0U3BhY2Uuc3Vic3BhY2VGb3JPYmplY3RzV2l0aG91dERlc3RydWN0b3IoKTsgfQog
ICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFjZSYgc3Vic3BhY2VGb3JPYmplY3REZXN0cnVjdG9yKCkg
eyByZXR1cm4gbV9vYmplY3RTcGFjZS5zdWJzcGFjZUZvck9iamVjdHNXaXRoRGVzdHJ1Y3Rvcigp
OyB9CkBAIC0xODQsMTEgKzE4NCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gY2FsbCBib3RoIG9mIHRo
ZXNlIGZ1bmN0aW9uczogQ2FsbGluZyBvbmx5IG9uZSBtYXkgdHJpZ2dlciBjYXRhc3Ryb3BpYwog
ICAgIC8vIG1lbW9yeSBncm93dGguCiAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRl
ZChzaXplX3QpOwotICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKENlbGxTdGF0ZSBv
bGRTdGF0ZSwgc2l6ZV90KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJh
TWVtb3J5VmlzaXRlZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNpemVfdCk7CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfVVNBR0UpCiAgICAgLy8gVXNlIHRoaXMgQVBJIHRvIHJlcG9ydCB0aGUgc3Vic2V0
IG9mIGV4dHJhIG1lbW9yeSB0aGF0IGxpdmVzIG91dHNpZGUgdGhpcyBwcm9jZXNzLgotICAgIHZv
aWQgcmVwb3J0RXh0ZXJuYWxNZW1vcnlWaXNpdGVkKENlbGxTdGF0ZSBvbGRTdGF0ZSwgc2l6ZV90
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dGVybmFsTWVtb3J5VmlzaXRl
ZChDZWxsU3RhdGUgb2xkU3RhdGUsIHNpemVfdCk7CiAgICAgc2l6ZV90IGV4dGVybmFsTWVtb3J5
U2l6ZSgpIHsgcmV0dXJuIG1fZXh0ZXJuYWxNZW1vcnlTaXplOyB9CiAjZW5kaWYKIApAQCAtMjUy
LDggKzI1Miw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGlzWm9tYmlmaWVkKEpTQ2Vs
bCogY2VsbCkgeyByZXR1cm4gKih2b2lkKiopY2VsbCA9PSB6b21iaWZpZWRCaXRzOyB9CiAKLSAg
ICB2b2lkIHJlZ2lzdGVyV2Vha0dDTWFwKHZvaWQqIHdlYWtHQ01hcCwgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IHBydW5pbmdDYWxsYmFjayk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyV2Vha0dDTWFwKHZv
aWQqIHdlYWtHQ01hcCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlcldlYWtH
Q01hcCh2b2lkKiB3ZWFrR0NNYXAsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBwcnVuaW5nQ2FsbGJh
Y2spOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdW5yZWdpc3RlcldlYWtHQ01hcCh2b2lk
KiB3ZWFrR0NNYXApOwogCiAgICAgdm9pZCBhZGRMb2dpY2FsbHlFbXB0eVdlYWtCbG9jayhXZWFr
QmxvY2sqKTsKIApAQCAtMzc0LDcgKzM3NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGluY3Jl
bWVudERlZmVycmFsRGVwdGgoKTsKICAgICB2b2lkIGRlY3JlbWVudERlZmVycmFsRGVwdGgoKTsK
LSAgICB2b2lkIGRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkZWNyZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRlZCgp
OwogCiAgICAgc2l6ZV90IHRocmVhZFZpc2l0Q291bnQoKTsKICAgICBzaXplX3QgdGhyZWFkQnl0
ZXNWaXNpdGVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVz
LmgJKHJldmlzaW9uIDIwNzY4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDI0ICszOSw2IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1pbmxpbmUgYm9vbCBIZWFwOjpzaG91bGRDb2xsZWN0KCkKLXsKLSAgICBpZiAoaXNE
ZWZlcnJlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFtX2lzU2FmZVRvQ29s
bGVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChjb2xsZWN0aW9uU2NvcGUoKSB8
fCBtdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OkhlbHBpbmdHQykKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCi0gICAgICAgIHJl
dHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgp
OwotICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID4gbV9tYXhFZGVuU2l6ZTsK
LX0KLQotaW5saW5lIGJvb2wgSGVhcDo6aXNDdXJyZW50VGhyZWFkQnVzeSgpCi17Ci0gICAgcmV0
dXJuIG1heUJlR0NUaHJlYWQoKSB8fCBtdXRhdG9yU3RhdGUoKSAhPSBNdXRhdG9yU3RhdGU6OlJ1
bm5pbmc7Ci19Ci0KIEFMV0FZU19JTkxJTkUgSGVhcCogSGVhcDo6aGVhcChjb25zdCBIZWFwQ2Vs
bCogY2VsbCkKIHsKICAgICByZXR1cm4gY2VsbC0+aGVhcCgpOwpAQCAtMTQ3LDUwICsxMjksNiBA
QCBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXJXaXRob3V0RmVuCiAgICAgICAgIGFkZFRv
UmVtZW1iZXJlZFNldChmcm9tKTsKIH0KIAotaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFN
ZW1vcnlBbGxvY2F0ZWQoc2l6ZV90IHNpemUpCi17Ci0gICAgaWYgKHNpemUgPiBtaW5FeHRyYU1l
bW9yeSkgCi0gICAgICAgIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkU2xvd0Nhc2Uoc2l6ZSk7
Ci19Ci0KLWlubGluZSB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChDZWxsU3Rh
dGUgb2xkU3RhdGUsIHNpemVfdCBzaXplKQotewotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZG91
YmxlLWNvdW50IHRoZSBleHRyYSBtZW1vcnkgdGhhdCB3YXMgcmVwb3J0ZWQgaW4gcHJldmlvdXMg
Y29sbGVjdGlvbnMuCi0gICAgaWYgKGNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29w
ZTo6RWRlbiAmJiBvbGRTdGF0ZSA9PSBDZWxsU3RhdGU6Ok9sZEdyZXkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHNpemVfdCogY291bnRlciA9ICZtX2V4dHJhTWVtb3J5U2l6ZTsKLSAgICAKLSAg
ICBmb3IgKDs7KSB7Ci0gICAgICAgIHNpemVfdCBvbGRTaXplID0gKmNvdW50ZXI7Ci0gICAgICAg
IGlmIChXVEY6OndlYWtDb21wYXJlQW5kU3dhcChjb3VudGVyLCBvbGRTaXplLCBvbGRTaXplICsg
c2l6ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi0jaWYgRU5BQkxFKFJFU09V
UkNFX1VTQUdFKQotaW5saW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0ZXJuYWxNZW1vcnlWaXNpdGVk
KENlbGxTdGF0ZSBvbGRTdGF0ZSwgc2l6ZV90IHNpemUpCi17Ci0gICAgLy8gV2UgZG9uJ3Qgd2Fu
dCB0byBkb3VibGUtY291bnQgdGhlIGV4dGVybmFsIG1lbW9yeSB0aGF0IHdhcyByZXBvcnRlZCBp
biBwcmV2aW91cyBjb2xsZWN0aW9ucy4KLSAgICBpZiAoY29sbGVjdGlvblNjb3BlKCkgPT0gQ29s
bGVjdGlvblNjb3BlOjpFZGVuICYmIG9sZFN0YXRlID09IENlbGxTdGF0ZTo6T2xkR3JleSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90KiBjb3VudGVyID0gJm1fZXh0ZXJuYWxNZW1vcnlT
aXplOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBzaXplX3Qgb2xkU2l6ZSA9ICpjb3VudGVy
OwotICAgICAgICBpZiAoV1RGOjp3ZWFrQ29tcGFyZUFuZFN3YXAoY291bnRlciwgb2xkU2l6ZSwg
b2xkU2l6ZSArIHNpemUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLSNlbmRpZgot
Ci1pbmxpbmUgdm9pZCBIZWFwOjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkoc2l6ZV90IHNp
emUpCi17Ci0gICAgaWYgKHNpemUgPiBtaW5FeHRyYU1lbW9yeSkgCi0gICAgICAgIGRlcHJlY2F0
ZWRSZXBvcnRFeHRyYU1lbW9yeVNsb3dDYXNlKHNpemUpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBIZWFwOjpmb3JFYWNoQ29kZUJsb2NrKGNvbnN0IEZ1bmN0
b3ImIGZ1bmMpCiB7CiAgICAgZm9yRWFjaENvZGVCbG9ja0ltcGwoc2NvcGVkTGFtYmRhUmVmPGJv
b2woQ29kZUJsb2NrKik+KGZ1bmMpKTsKQEAgLTM1Myw0MiArMjkxLDYgQEAgaW5saW5lIHZvaWQg
SGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0aAogICAgIG1fZGVmZXJyYWxEZXB0aC0tOwogfQog
Ci1pbmxpbmUgYm9vbCBIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKEdDRGVmZXJyYWxD
b250ZXh0KiBkZWZlcnJhbENvbnRleHQpCi17Ci0gICAgaWYgKCFzaG91bGRDb2xsZWN0KCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChkZWZlcnJhbENvbnRleHQpCi0gICAgICAg
IGRlZmVycmFsQ29udGV4dC0+bV9zaG91bGRHQyA9IHRydWU7Ci0gICAgZWxzZQotICAgICAgICBj
b2xsZWN0KCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSB2b2lkIEhlYXA6OmNvbGxl
Y3RBY2NvcmRpbmdUb0RlZmVyR0NQcm9iYWJpbGl0eSgpCi17Ci0gICAgaWYgKGlzRGVmZXJyZWQo
KSB8fCAhbV9pc1NhZmVUb0NvbGxlY3QgfHwgY29sbGVjdGlvblNjb3BlKCkgfHwgbXV0YXRvclN0
YXRlKCkgPT0gTXV0YXRvclN0YXRlOjpIZWxwaW5nR0MpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChyYW5kb21OdW1iZXIoKSA8IE9wdGlvbnM6OmRlZmVyR0NQcm9iYWJpbGl0eSgpKSB7Ci0g
ICAgICAgIGNvbGxlY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIG91
ciBjb2luIGZsaXAgdG9sZCB1cyBub3QgdG8gR0MsIHdlIHN0aWxsIG1pZ2h0IEdDLAotICAgIC8v
IGJ1dCB3ZSBHQyBhY2NvcmRpbmcgdG8gb3VyIG1lbW9yeSBwcmVzc3VyZSBtYXJrZXJzLgotICAg
IGNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoKTsKLX0KLQotaW5saW5lIHZvaWQgSGVhcDo6ZGVj
cmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKQotewotICAgIGRlY3JlbWVudERlZmVy
cmFsRGVwdGgoKTsKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZGVmZXJHQ1Nob3VsZENvbGxl
Y3RXaXRoUHJvYmFiaWxpdHkoKSkpCi0gICAgICAgIGNvbGxlY3RBY2NvcmRpbmdUb0RlZmVyR0NQ
cm9iYWJpbGl0eSgpOwotICAgIGVsc2UKLSAgICAgICAgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZl
cigpOwotfQotCiBpbmxpbmUgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBIZWFwOjpt
YXJrTGlzdFNldCgpCiB7CiAgICAgaWYgKCFtX21hcmtMaXN0U2V0KQpAQCAtMzk2LDMyICsyOTgs
MTYgQEAgaW5saW5lIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYgSAogICAgIHJldHVy
biAqbV9tYXJrTGlzdFNldDsKIH0KIAotaW5saW5lIHZvaWQgSGVhcDo6cmVnaXN0ZXJXZWFrR0NN
YXAodm9pZCogd2Vha0dDTWFwLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcHJ1bmluZ0NhbGxiYWNr
KQotewotICAgIG1fd2Vha0dDTWFwcy5hZGQod2Vha0dDTWFwLCBXVEZNb3ZlKHBydW5pbmdDYWxs
YmFjaykpOwotfQotCi1pbmxpbmUgdm9pZCBIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFwKHZvaWQq
IHdlYWtHQ01hcCkKLXsKLSAgICBtX3dlYWtHQ01hcHMucmVtb3ZlKHdlYWtHQ01hcCk7Ci19Ci0K
LWlubGluZSB2b2lkIEhlYXA6OmRpZEFsbG9jYXRlQmxvY2soc2l6ZV90IGNhcGFjaXR5KQoraW5s
aW5lIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQoc2l6ZV90IHNpemUpCiB7
Ci0jaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotICAgIG1fYmxvY2tCeXRlc0FsbG9jYXRlZCAr
PSBjYXBhY2l0eTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNhcGFjaXR5KTsKLSNlbmRpZgor
ICAgIGlmIChzaXplID4gbWluRXh0cmFNZW1vcnkpIAorICAgICAgICByZXBvcnRFeHRyYU1lbW9y
eUFsbG9jYXRlZFNsb3dDYXNlKHNpemUpOwogfQogCi1pbmxpbmUgdm9pZCBIZWFwOjpkaWRGcmVl
QmxvY2soc2l6ZV90IGNhcGFjaXR5KQoraW5saW5lIHZvaWQgSGVhcDo6ZGVwcmVjYXRlZFJlcG9y
dEV4dHJhTWVtb3J5KHNpemVfdCBzaXplKQogewotI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkK
LSAgICBtX2Jsb2NrQnl0ZXNBbGxvY2F0ZWQgLT0gY2FwYWNpdHk7Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShjYXBhY2l0eSk7Ci0jZW5kaWYKKyAgICBpZiAoc2l6ZSA+IG1pbkV4dHJhTWVtb3J5
KSAKKyAgICAgICAgZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5U2xvd0Nhc2Uoc2l6ZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>