<?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>142058</bug_id>
          
          <creation_ts>2015-02-26 14:46:26 -0800</creation_ts>
          <short_desc>bmalloc: Pathological madvise churn on the free(malloc(x)) benchmark</short_desc>
          <delta_ts>2015-02-27 17:53:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1072496</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-02-26 14:46:26 -0800</bug_when>
    <thetext>bmalloc: Pathological madvise churn on the free(malloc(x)) benchmark</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072895</commentid>
    <comment_count>1</comment_count>
      <attachid>247569</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-02-27 15:57:21 -0800</bug_when>
    <thetext>Created attachment 247569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072897</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-27 15:59:33 -0800</bug_when>
    <thetext>Attachment 247569 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/BoundaryTag.h:88:  Please declare enum bitfields as unsigned integral types.  [runtime/enum_bitfields] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072912</commentid>
    <comment_count>3</comment_count>
      <attachid>247569</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-02-27 16:18:27 -0800</bug_when>
    <thetext>Comment on attachment 247569
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072916</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-02-27 16:29:39 -0800</bug_when>
    <thetext>Committed r180797: &lt;http://trac.webkit.org/changeset/180797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072938</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-27 17:46:57 -0800</bug_when>
    <thetext>Landed an EFL build fix in https://trac.webkit.org/changeset/180805.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072941</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-27 17:53:36 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Landed an EFL build fix in https://trac.webkit.org/changeset/180805.

Oops, I had a typo. Fixed it in https://trac.webkit.org/changeset/180806.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247569</attachid>
            <date>2015-02-27 15:57:21 -0800</date>
            <delta_ts>2015-02-27 16:18:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142058-20150227155707.patch</filename>
            <type>text/plain</type>
            <size>35370</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDc4OSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMSBAQAorMjAxNS0wMi0yNyAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIGJtYWxsb2M6IFBhdGhvbG9n
aWNhbCBtYWR2aXNlIGNodXJuIG9uIHRoZSBmcmVlKG1hbGxvYyh4KSkgYmVuY2htYXJrCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwNTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY2h1cm4gd2Fz
IGNhdXNlZCBieSByZXBlYXRlZGx5IHNwbGl0dGluZyBhbiBvYmplY3Qgd2l0aCBwaHlzaWNhbAor
ICAgICAgICBwYWdlcyBmcm9tIGFuIG9iamVjdCB3aXRob3V0LCBhbmQgdGhlbiBtZXJnaW5nIHRo
ZW0gYmFjayB0b2dldGhlciBhZ2Fpbi4KKyAgICAgICAgVGhlIG1lcmdlIHdvdWxkIGNvbnNlcnZh
dGl2ZWx5IGZvcmdldCB0aGF0IHdlIGhhZCBwaHlzaWNhbCBwYWdlcywgZm9yY2luZworICAgICAg
ICBhIG5ldyBjYWxsIHRvIG1hZHZpc2Ugb24gdGhlIG5leHQgYWxsb2NhdGlvbi4KKworICAgICAg
ICBUaGlzIHBhdGNoIG1vcmUgc3RyaWN0bHkgc2VncmVnYXRlcyBvYmplY3RzIGluIHRoZSBoZWFw
IGZyb20gb2JqZWN0cyBpbgorICAgICAgICB0aGUgVk0gaGVhcCwgd2l0aCB0aGVzZSBjaGFuZ2Vz
OgorCisgICAgICAgICgxKSBPYmplY3RzIGluIHRoZSBoZWFwIGFyZSBub3QgYWxsb3dlZCB0byBt
ZXJnZSB3aXRoIG9iamVjdHMgaW4gdGhlIFZNCisgICAgICAgIGhlYXAsIGFuZCB2aWNlIHZlcnNh
IC0tIHNpbmNlIHRoYXQgd291bGQgZXJhc2Ugb3VyIHByZWNpc2Uga25vd2xlZGdlIG9mCisgICAg
ICAgIHdoaWNoIHBoeXNpY2FsIHBhZ2VzIGhhZCBiZWVuIGFsbG9jYXRlZC4KKworICAgICAgICAo
MikgVGhlIFZNIGhlYXAgaXMgZXhjbHVzaXZlbHkgcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcg
YW5kIGRlYWxsb2NhdGluZworICAgICAgICBwaHlzaWNhbCBwYWdlcy4KKworICAgICAgICAoMykg
VGhlIGhlYXAgZnJlZSBsaXN0IG11c3QgY29uc2lkZXIgZW50cmllcyBmb3Igb2JqZWN0cyB0aGF0
IGFyZSBpbiB0aGUKKyAgICAgICAgVk0gaGVhcCB0byBiZSBpbnZhbGlkLCBhbmQgdmljZSB2ZXJz
YS4gKFRoaXMgY29uZGl0aW9uIGNhbiBhcmlzZQorICAgICAgICBiZWNhdXNlIHRoZSBmcmVlIGxp
c3QgZG9lcyBub3QgZWFnZXJseSByZW1vdmUgaXRlbXMuKQorCisgICAgICAgIFdpdGggdGhlc2Ug
Y2hhbmdlcywgd2UgY2FuIGtub3cgdGhhdCBhbnkgdmFsaWQgb2JqZWN0IGluIHRoZSBoZWFwJ3Mg
ZnJlZQorICAgICAgICBsaXN0IGFscmVhZHkgaGFzIHBoeXNpY2FsIHBhZ2VzLCBhbmQgZG9lcyBu
b3QgbmVlZCB0byBjYWxsIG1hZHZpc2UuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBWTSBoZWFw
IC0tIGFzIGJlZm9yZSAtLSBtaWdodCBzb21ldGltZXMgY29udGFpbiByYW5nZXMKKyAgICAgICAg
b3IgcGllY2VzIG9mIHJhbmdlcyB0aGF0IGhhdmUgcGh5c2ljYWwgcGFnZXMsIHNpbmNlIHdlIGFs
bG93IHNwbGl0dGluZworICAgICAgICBvZiByYW5nZXMgYXQgZ3JhbnVsYXJpdGllcyBzbWFsbGVy
IHRoYW4gdGhlIFZNIHBhZ2Ugc2l6ZS4gVGhlc2UgcmFuZ2VzCisgICAgICAgIGNhbiBldmVudHVh
bGx5IG1lcmdlIHdpdGggcmFuZ2VzIGluIHRoZSBoZWFwIGR1cmluZyBzY2F2ZW5naW5nLgorCisg
ICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICog
Ym1hbGxvYy9Cb3VuZGFyeVRhZy5oOgorICAgICAgICAoYm1hbGxvYzo6Qm91bmRhcnlUYWc6Om93
bmVyKToKKyAgICAgICAgKGJtYWxsb2M6OkJvdW5kYXJ5VGFnOjpzZXRPd25lcik6CisgICAgICAg
IChibWFsbG9jOjpCb3VuZGFyeVRhZzo6aW5pdFNlbnRpbmVsKToKKyAgICAgICAgKGJtYWxsb2M6
OkJvdW5kYXJ5VGFnOjpoYXNQaHlzaWNhbFBhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxs
b2M6OkJvdW5kYXJ5VGFnOjpzZXRIYXNQaHlzaWNhbFBhZ2VzKTogRGVsZXRlZC4gUmVwbGFjZWQg
dGhlIGNvbmNlcHQKKyAgICAgICAgb2YgImhhcyBwaHlzaWNhbCBwYWdlcyIgd2l0aCBhIGJpdCBp
bmRpY2F0aW5nIHdoaWNoIGhlYXAgb3ducyB0aGUgbGFyZ2UKKyAgICAgICAgb2JqZWN0LiBUaGlz
IGlzIGEgbW9yZSBwcmVjaXNlIGNvbmNlcHQsIHNpbmNlIHRoZSBvbGQgYml0IHdhcyByZWFsbHkg
YQorICAgICAgICBZZXMgLyBNYXliZSBiaXQuCisKKyAgICAgICAgKiBibWFsbG9jL0RlYWxsb2Nh
dG9yLmNwcDoKKworICAgICAgICAqIGJtYWxsb2MvRnJlZUxpc3QuY3BwOiBBZG9wdAorICAgICAg
ICAoYm1hbGxvYzo6RnJlZUxpc3Q6OnRha2VHcmVlZHkpOgorICAgICAgICAoYm1hbGxvYzo6RnJl
ZUxpc3Q6OnRha2UpOgorICAgICAgICAoYm1hbGxvYzo6RnJlZUxpc3Q6OnJlbW92ZUludmFsaWRB
bmREdXBsaWNhdGVFbnRyaWVzKToKKyAgICAgICAgKiBibWFsbG9jL0ZyZWVMaXN0Lmg6CisgICAg
ICAgIChibWFsbG9jOjpGcmVlTGlzdDo6cHVzaCk6IEFkZGVkIEFQSSBmb3IgY29uc2lkZXJpbmcg
dGhlIG93bmVyIHdoZW4KKyAgICAgICAgZGVjaWRpbmcgaWYgYSBmcmVlIGxpc3QgZW50cnkgaXMg
dmFsaWQuCisKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6
SGVhcDo6SGVhcCk6IEFkb3B0IG5ldyBBUEkuCisKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNj
YXZlbmdlTGFyZ2VSYW5nZXMpOiBTY2F2ZW5nZSBhbGwgcmFuZ2VzIHdpdGggbm8gbWluaW11bSwK
KyAgICAgICAgc2luY2Ugc29tZSByYW5nZXMgbWlnaHQgYmUgYWJsZSB0byBtZXJnZSB3aXRoIHJh
bmdlcyBpbiB0aGUgVk0gaGVhcCwgYW5kCisgICAgICAgIHRoZXkgd29uJ3QgYmUgYWxsb3dlZCB0
byB1bnRpbCB3ZSBzY2F2ZW5nZSB0aGVtLgorCisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxv
Y2F0ZVNtYWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZU1lZGl1bVBh
Z2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVMYXJnZSk6IE5ldyBWTSBoZWFw
IEFQSSBtYWtlcyB0aGlzIGZ1bmN0aW9uCisgICAgICAgIHNpbXBsZXIsIHNpbmNlIHdlIGFsd2F5
cyBnZXQgYmFjayBwaHlzaWNhbCBwYWdlcyBub3cuCisKKyAgICAgICAgKiBibWFsbG9jL0hlYXAu
aDoKKyAgICAgICAgKiBibWFsbG9jL0xhcmdlT2JqZWN0Lmg6CisgICAgICAgIChibWFsbG9jOjpM
YXJnZU9iamVjdDo6ZW5kKToKKyAgICAgICAgKGJtYWxsb2M6OkxhcmdlT2JqZWN0Ojpvd25lcik6
CisgICAgICAgIChibWFsbG9jOjpMYXJnZU9iamVjdDo6c2V0T3duZXIpOgorICAgICAgICAoYm1h
bGxvYzo6TGFyZ2VPYmplY3Q6OmlzVmFsaWRBbmRGcmVlKToKKyAgICAgICAgKGJtYWxsb2M6Okxh
cmdlT2JqZWN0OjptZXJnZSk6IERvIG5vdCBtZXJnZSBvYmplY3RzIGFjcm9zcyBoZWFwcyBzaW5j
ZQorICAgICAgICB0aGF0IGNhdXNlcyBtYWR2aXNlIGNodXJuLgorICAgICAgICAoYm1hbGxvYzo6
TGFyZ2VPYmplY3Q6OnZhbGlkYXRlU2VsZik6CisgICAgICAgIChibWFsbG9jOjpMYXJnZU9iamVj
dDo6aW5pdCk6CisgICAgICAgIChibWFsbG9jOjpMYXJnZU9iamVjdDo6aGFzUGh5c2ljYWxQYWdl
cyk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpMYXJnZU9iamVjdDo6c2V0SGFzUGh5c2lj
YWxQYWdlcyk6IERlbGV0ZWQuIFByb3BvZ2F0ZSB0aGUgT3duZXIgQVBJLgorCisgICAgICAgICog
Ym1hbGxvYy9Pd25lci5oOiBBZGRlZC4KKworICAgICAgICAqIGJtYWxsb2MvU2VncmVnYXRlZEZy
ZWVMaXN0LmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlNlZ3JlZ2F0ZWRGcmVlTGlzdDo6U2VncmVn
YXRlZEZyZWVMaXN0KToKKyAgICAgICAgKGJtYWxsb2M6OlNlZ3JlZ2F0ZWRGcmVlTGlzdDo6aW5z
ZXJ0KToKKyAgICAgICAgKGJtYWxsb2M6OlNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZUdyZWVkeSk6
CisgICAgICAgIChibWFsbG9jOjpTZWdyZWdhdGVkRnJlZUxpc3Q6OnRha2UpOgorICAgICAgICAq
IGJtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0Lmg6IFByb3BvZ2F0ZSB0aGUgb3duZXIgQVBJLgor
CisgICAgICAgICogYm1hbGxvYy9WTUFsbG9jYXRlLmg6CisgICAgICAgIChibWFsbG9jOjp2bURl
YWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KToKKyAgICAgICAgKGJtYWxsb2M6OnZtQWxsb2Nh
dGVQaHlzaWNhbFBhZ2VzU2xvcHB5KTogQ2xhcmlmaWVkIHRoZXNlIGZ1bmN0aW9ucyBhbmQKKyAg
ICAgICAgcmVtb3ZlZCBhbiBlZGdlIGNhc2UuCisKKyAgICAgICAgKiBibWFsbG9jL1ZNSGVhcC5j
cHA6CisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6OlZNSGVhcCk6CisgICAgICAgICogYm1hbGxv
Yy9WTUhlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVhcDo6YWxsb2NhdGVTbWFsbFBhZ2Up
OgorICAgICAgICAoYm1hbGxvYzo6Vk1IZWFwOjphbGxvY2F0ZU1lZGl1bVBhZ2UpOgorICAgICAg
ICAoYm1hbGxvYzo6Vk1IZWFwOjphbGxvY2F0ZUxhcmdlT2JqZWN0KToKKyAgICAgICAgKGJtYWxs
b2M6OlZNSGVhcDo6ZGVhbGxvY2F0ZUxhcmdlT2JqZWN0KTogQmUgc3VyZSB0byBnaXZlIGVhY2gg
b2JqZWN0CisgICAgICAgIGEgbmV3IGNoYW5jZSB0byBtZXJnZSwgc2luY2UgaXQgbWlnaHQgaGF2
ZSBiZWVuIHByb2hpYml0ZWQgZnJvbSBtZXJnaW5nCisgICAgICAgIGJlZm9yZSBieSB2aXJ0dWUg
b2Ygbm90IGJlaW5nIGluIHRoZSBWTSBoZWFwLgorCisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6
OmFsbG9jYXRlTGFyZ2VSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6
OmRlYWxsb2NhdGVMYXJnZVJhbmdlKTogRGVsZXRlZC4KKwogMjAxNS0wMi0yNiAgR2VvZmZyZXkg
R2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGJtYWxsb2M6IExhcmdlIG9iamVj
dCBmcmVlIGxpc3QgY2FuIGdyb3cgaW5maW5pdGVseQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1h
bGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgwNjk0KQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAJCTE0QzYyMTZGMUE5QTlBNjIwMEU3MjI5MyAv
KiBMYXJnZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTRDNjIxNkUxQTlBOUE2MjAwRTcyMjkzIC8qIExhcmdlT2JqZWN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRDOTE5QzkxOEZDQzU5
RjAwMjhEQjQzIC8qIEJQbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTRDOTE5QzgxOEZDQzU5RjAwMjhEQjQzIC8qIEJQbGF0Zm9ybS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0Q0MzOTRD
MThFQTg4NTgwMDRBRkUzNCAvKiBsaWJibWFsbG9jLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEYyNzFCRTE4RUEzOTYzMDA4QzE1MkYgLyogbGli
Ym1hbGxvYy5hICovOyB9OworCQkxNEQyQ0Q5QjFBQTEyQ0ZCMDA3NzA0NDAgLyogT3duZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDJDRDlBMUFB
MTJDRkIwMDc3MDQ0MCAvKiBPd25lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTE0REQ3ODhDMThGNDhDQUUwMDk1MDcwMiAvKiBMYXJnZUNodW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDdBQUE4
ODE4Q0QxN0NFMDAyMjAxRTQgLyogTGFyZ2VDaHVuay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0REQ3ODhEMThGNDhDQzYwMDk1MDcwMiAvKiBC
ZWdpblRhZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQxN0Y2NDUxOEI1NEE3MDAwNzZGQTNGIC8qIEJlZ2luVGFnLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRERDc4OEUxOEY0OENDRDAwOTUwNzAy
IC8qIEJvdW5kYXJ5VGFnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDg1NjU1RTE4QTQzQUY5MDBFRDY5NDIgLyogQm91bmRhcnlUYWcuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTM4LDYgKzEzOSw3
IEBACiAJCTE0QzYyMTZFMUE5QTlBNjIwMEU3MjI5MyAvKiBMYXJnZU9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMYXJnZU9iamVjdC5oOyBwYXRoID0gYm1hbGxvYy9M
YXJnZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEM5MTlDODE4RkND
NTlGMDAyOERCNDMgLyogQlBsYXRmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEJQbGF0Zm9ybS5oOyBwYXRoID0gYm1hbGxvYy9CUGxhdGZvcm0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRDQzM5NDQxOEVBODc0MzAwNEFGRTM0IC8qIGxpYm1ibWFsbG9j
LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGlibWJt
YWxsb2MuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTE0RDJD
RDlBMUFBMTJDRkIwMDc3MDQ0MCAvKiBPd25lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBPd25lci5oOyBwYXRoID0gYm1hbGxvYy9Pd25lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNEQ5REI0NTE3RjI0NDcxMDBFQUFCNzkgLyogRml4ZWRWZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IEZpeGVkVmVj
dG9yLmg7IHBhdGggPSBibWFsbG9jL0ZpeGVkVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3Bw
OyB9OwogCQkxNERBMzIwNzE4ODVGOUU2MDA3MjY5RTAgLyogTGluZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGluZS5oOyBwYXRoID0gYm1hbGxv
Yy9MaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9u
SWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQkxNERBMzIwQzE4ODc1QjA5MDA3
MjY5RTAgLyogSGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIZWFwLmg7
IHBhdGggPSBibWFsbG9jL0hlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIy
NCw2ICsyMjYsNyBAQAogCQkJCTE0M0VGOUFFMUE5RkFCRjYwMDRGNUM3NyAvKiBGcmVlTGlzdC5o
ICovLAogCQkJCTE0N0FBQTg4MThDRDE3Q0UwMDIyMDFFNCAvKiBMYXJnZUNodW5rLmggKi8sCiAJ
CQkJMTRDNjIxNkUxQTlBOUE2MjAwRTcyMjkzIC8qIExhcmdlT2JqZWN0LmggKi8sCisJCQkJMTRE
MkNEOUExQUExMkNGQjAwNzcwNDQwIC8qIE93bmVyLmggKi8sCiAJCQkJMTQ2QkVFMjExOEM4NDVB
RTAwMDJENUEyIC8qIFNlZ3JlZ2F0ZWRGcmVlTGlzdC5jcHAgKi8sCiAJCQkJMTQ2QkVFMUUxOEM4
NDFDNTAwMDJENUEyIC8qIFNlZ3JlZ2F0ZWRGcmVlTGlzdC5oICovLAogCQkJKTsKQEAgLTM1Myw2
ICszNTYsNyBAQAogCQkJCTE0REQ3ODhFMThGNDhDQ0QwMDk1MDcwMiAvKiBCb3VuZGFyeVRhZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QzgxOEY0OEQ3NTAwOTUwNzAyIC8qIEZpeGVkVmVj
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhCNzE4RjQ4RDZCMDA5NTA3MDIgLyogTWVk
aXVtTGluZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTREMkNEOUIxQUExMkNGQjAwNzcwNDQwIC8q
IE93bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhCNjE4RjQ4RDZCMDA5NTA3MDIgLyog
TWVkaXVtQ2h1bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OEJDMThGNDhENkIwMDk1MDcw
MiAvKiBTbWFsbExpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3ODk4MThGNDhENEEwMDk1
MDcwMiAvKiBBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Cb3VuZGFyeVRhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvQm91bmRhcnlUYWcuaAkocmV2aXNpb24gMTgwNzAxKQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Cb3VuZGFyeVRhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIEJvdW5kYXJ5VGFnX2gKIAogI2luY2x1ZGUgIkJBc3NlcnQuaCIKKyNpbmNsdWRlICJPd25l
ci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiU2l6ZXMuaCIKICNpbmNsdWRlIDxj
c3RyaW5nPgpAQCAtNDksOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VuZCgpIHsgcmV0
dXJuIG1faXNFbmQ7IH0KICAgICB2b2lkIHNldEVuZChib29sIGlzRW5kKSB7IG1faXNFbmQgPSBp
c0VuZDsgfQogCi0gICAgYm9vbCBoYXNQaHlzaWNhbFBhZ2VzKCkgeyByZXR1cm4gbV9oYXNQaHlz
aWNhbFBhZ2VzOyB9Ci0gICAgdm9pZCBzZXRIYXNQaHlzaWNhbFBhZ2VzKGJvb2wgaGFzUGh5c2lj
YWxQYWdlcykgeyBtX2hhc1BoeXNpY2FsUGFnZXMgPSBoYXNQaHlzaWNhbFBhZ2VzOyB9CisgICAg
T3duZXIgb3duZXIoKSB7IHJldHVybiBtX293bmVyOyB9CisgICAgdm9pZCBzZXRPd25lcihPd25l
ciBvd25lcikgeyBtX293bmVyID0gb3duZXI7IH0KICAgICAKICAgICBib29sIGlzTWFya2VkKCkg
eyByZXR1cm4gbV9pc01hcmtlZDsgfQogICAgIHZvaWQgc2V0TWFya2VkKGJvb2wgaXNNYXJrZWQp
IHsgbV9pc01hcmtlZCA9IGlzTWFya2VkOyB9CkBAIC04NCw3ICs4NSw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIG1faXNGcmVlOiAxOwogICAgIGJvb2wgbV9pc0VuZDogMTsKLSAgICBib29sIG1f
aGFzUGh5c2ljYWxQYWdlczogMTsKKyAgICBPd25lciBtX293bmVyOiAxOwogICAgIGJvb2wgbV9p
c01hcmtlZDogMTsKICAgICB1bnNpZ25lZCBtX2NvbXBhY3RCZWdpbjogY29tcGFjdEJlZ2luQml0
czsKICAgICB1bnNpZ25lZCBtX3NpemU6IHNpemVCaXRzOwpAQCAtMTIxLDYgKzEyMiw3IEBAIGlu
bGluZSB2b2lkIEJvdW5kYXJ5VGFnOjppbml0U2VudGluZWwoKQogewogICAgIHNldFJhbmdlKFJh
bmdlKG51bGxwdHIsIGxhcmdlTWluKSk7CiAgICAgc2V0RnJlZShmYWxzZSk7CisgICAgc2V0T3du
ZXIoT3duZXI6OlZNSGVhcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxODA2ODYpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNyArMjQsNiBAQAogICovCiAKICNpbmNsdWRlICJCQXNzZXJ0LmgiCi0jaW5jbHVkZSAiQmVn
aW5UYWcuaCIKICNpbmNsdWRlICJMYXJnZUNodW5rLmgiCiAjaW5jbHVkZSAiRGVhbGxvY2F0b3Iu
aCIKICNpbmNsdWRlICJIZWFwLmgiCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0ZyZWVM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0ZyZWVMaXN0LmNw
cAkocmV2aXNpb24gMTgwNzAxKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9GcmVlTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDI3ICsyMywyMyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI2luY2x1ZGUgIkJlZ2luVGFnLmgiCiAjaW5jbHVkZSAiTGFyZ2VDaHVuay5oIgogI2lu
Y2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5jbHVkZSAiVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBibWFs
bG9jIHsKIAotTGFyZ2VPYmplY3QgRnJlZUxpc3Q6OnRha2VHcmVlZHkoc2l6ZV90IHNpemUpCitM
YXJnZU9iamVjdCBGcmVlTGlzdDo6dGFrZUdyZWVkeShPd25lciBvd25lcikKIHsKICAgICBmb3Ig
KHNpemVfdCBpID0gbV92ZWN0b3Iuc2l6ZSgpOyBpLS0gPiAwOyApIHsKICAgICAgICAgLy8gV2Ug
ZG9uJ3QgZWFnZXJseSByZW1vdmUgaXRlbXMgd2hlbiB3ZSBtZXJnZSBhbmQvb3Igc3BsaXQgcmFu
Z2VzLAogICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHZhbGlkYXRlIGVhY2ggZnJlZSBsaXN0IGVu
dHJ5IGJlZm9yZSB1c2luZyBpdC4KICAgICAgICAgTGFyZ2VPYmplY3QgbGFyZ2VPYmplY3QoTGFy
Z2VPYmplY3Q6OkRvTm90VmFsaWRhdGUsIG1fdmVjdG9yW2ldLmJlZ2luKCkpOwotICAgICAgICBp
ZiAoIWxhcmdlT2JqZWN0LmlzVmFsaWRBbmRGcmVlKG1fdmVjdG9yW2ldLnNpemUoKSkpIHsKKyAg
ICAgICAgaWYgKCFsYXJnZU9iamVjdC5pc1ZhbGlkQW5kRnJlZShvd25lciwgbV92ZWN0b3JbaV0u
c2l6ZSgpKSkgewogICAgICAgICAgICAgbV92ZWN0b3IucG9wKGkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobGFyZ2VPYmplY3Quc2l6ZSgpIDwgc2l6
ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAgICAgIG1fdmVjdG9yLnBvcChpKTsKICAg
ICAgICAgcmV0dXJuIGxhcmdlT2JqZWN0OwogICAgIH0KQEAgLTUxLDcgKzQ3LDcgQEAgTGFyZ2VP
YmplY3QgRnJlZUxpc3Q6OnRha2VHcmVlZHkoc2l6ZV90IAogICAgIHJldHVybiBMYXJnZU9iamVj
dCgpOwogfQogCi1MYXJnZU9iamVjdCBGcmVlTGlzdDo6dGFrZShzaXplX3Qgc2l6ZSkKK0xhcmdl
T2JqZWN0IEZyZWVMaXN0Ojp0YWtlKE93bmVyIG93bmVyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBM
YXJnZU9iamVjdCBmaXJzdDsKICAgICBzaXplX3QgZW5kID0gbV92ZWN0b3Iuc2l6ZSgpID4gZnJl
ZUxpc3RTZWFyY2hEZXB0aCA/IG1fdmVjdG9yLnNpemUoKSAtIGZyZWVMaXN0U2VhcmNoRGVwdGgg
OiAwOwpAQCAtNTksNyArNTUsNyBAQCBMYXJnZU9iamVjdCBGcmVlTGlzdDo6dGFrZShzaXplX3Qg
c2l6ZSkKICAgICAgICAgLy8gV2UgZG9uJ3QgZWFnZXJseSByZW1vdmUgaXRlbXMgd2hlbiB3ZSBt
ZXJnZSBhbmQvb3Igc3BsaXQgcmFuZ2VzLCBzbwogICAgICAgICAvLyB3ZSBuZWVkIHRvIHZhbGlk
YXRlIGVhY2ggZnJlZSBsaXN0IGVudHJ5IGJlZm9yZSB1c2luZyBpdC4KICAgICAgICAgTGFyZ2VP
YmplY3QgbGFyZ2VPYmplY3QoTGFyZ2VPYmplY3Q6OkRvTm90VmFsaWRhdGUsIG1fdmVjdG9yW2ld
LmJlZ2luKCkpOwotICAgICAgICBpZiAoIWxhcmdlT2JqZWN0LmlzVmFsaWRBbmRGcmVlKG1fdmVj
dG9yW2ldLnNpemUoKSkpIHsKKyAgICAgICAgaWYgKCFsYXJnZU9iamVjdC5pc1ZhbGlkQW5kRnJl
ZShvd25lciwgbV92ZWN0b3JbaV0uc2l6ZSgpKSkgewogICAgICAgICAgICAgbV92ZWN0b3IucG9w
KGkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTc2LDcgKzcyLDcgQEAg
TGFyZ2VPYmplY3QgRnJlZUxpc3Q6OnRha2Uoc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIGZpcnN0
OwogfQogCi1MYXJnZU9iamVjdCBGcmVlTGlzdDo6dGFrZShzaXplX3QgYWxpZ25tZW50LCBzaXpl
X3Qgc2l6ZSwgc2l6ZV90IHVuYWxpZ25lZFNpemUpCitMYXJnZU9iamVjdCBGcmVlTGlzdDo6dGFr
ZShPd25lciBvd25lciwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUsIHNpemVfdCB1bmFs
aWduZWRTaXplKQogewogICAgIEJBU1NFUlQoaXNQb3dlck9mVHdvKGFsaWdubWVudCkpOwogICAg
IHNpemVfdCBhbGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMTsKQEAgLTg3LDcgKzgzLDcgQEAg
TGFyZ2VPYmplY3QgRnJlZUxpc3Q6OnRha2Uoc2l6ZV90IGFsaWdubQogICAgICAgICAvLyBXZSBk
b24ndCBlYWdlcmx5IHJlbW92ZSBpdGVtcyB3aGVuIHdlIG1lcmdlIGFuZC9vciBzcGxpdCByYW5n
ZXMsIHNvCiAgICAgICAgIC8vIHdlIG5lZWQgdG8gdmFsaWRhdGUgZWFjaCBmcmVlIGxpc3QgZW50
cnkgYmVmb3JlIHVzaW5nIGl0LgogICAgICAgICBMYXJnZU9iamVjdCBsYXJnZU9iamVjdChMYXJn
ZU9iamVjdDo6RG9Ob3RWYWxpZGF0ZSwgbV92ZWN0b3JbaV0uYmVnaW4oKSk7Ci0gICAgICAgIGlm
ICghbGFyZ2VPYmplY3QuaXNWYWxpZEFuZEZyZWUobV92ZWN0b3JbaV0uc2l6ZSgpKSkgeworICAg
ICAgICBpZiAoIWxhcmdlT2JqZWN0LmlzVmFsaWRBbmRGcmVlKG93bmVyLCBtX3ZlY3RvcltpXS5z
aXplKCkpKSB7CiAgICAgICAgICAgICBtX3ZlY3Rvci5wb3AoaSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpAQCAtMTA3LDExICsxMDMsMTEgQEAgTGFyZ2VPYmplY3QgRnJlZUxp
c3Q6OnRha2Uoc2l6ZV90IGFsaWdubQogICAgIHJldHVybiBmaXJzdDsKIH0KIAotdm9pZCBGcmVl
TGlzdDo6cmVtb3ZlSW52YWxpZEFuZER1cGxpY2F0ZUVudHJpZXMoKQordm9pZCBGcmVlTGlzdDo6
cmVtb3ZlSW52YWxpZEFuZER1cGxpY2F0ZUVudHJpZXMoT3duZXIgb3duZXIpCiB7CiAgICAgZm9y
IChzaXplX3QgaSA9IG1fdmVjdG9yLnNpemUoKTsgaS0tID4gMDsgKSB7CiAgICAgICAgIExhcmdl
T2JqZWN0IGxhcmdlT2JqZWN0KExhcmdlT2JqZWN0OjpEb05vdFZhbGlkYXRlLCBtX3ZlY3Rvcltp
XS5iZWdpbigpKTsKLSAgICAgICAgaWYgKCFsYXJnZU9iamVjdC5pc1ZhbGlkQW5kRnJlZShtX3Zl
Y3RvcltpXS5zaXplKCkpKSB7CisgICAgICAgIGlmICghbGFyZ2VPYmplY3QuaXNWYWxpZEFuZEZy
ZWUob3duZXIsIG1fdmVjdG9yW2ldLnNpemUoKSkpIHsKICAgICAgICAgICAgIG1fdmVjdG9yLnBv
cChpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0ZyZWVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9GcmVlTGlzdC5oCShyZXZpc2lvbiAxODA3MDEpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0ZyZWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDE0ICszNywxNCBAQCBjbGFzcyBG
cmVlTGlzdCB7CiBwdWJsaWM6CiAgICAgRnJlZUxpc3QoKTsKIAotICAgIHZvaWQgcHVzaChjb25z
dCBMYXJnZU9iamVjdCYpOworICAgIHZvaWQgcHVzaChPd25lciwgY29uc3QgTGFyZ2VPYmplY3Qm
KTsKIAotICAgIExhcmdlT2JqZWN0IHRha2Uoc2l6ZV90KTsKLSAgICBMYXJnZU9iamVjdCB0YWtl
KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCwgc2l6ZV90IHVuYWxpZ25lZFNpemUpOworICAgIExh
cmdlT2JqZWN0IHRha2UoT3duZXIsIHNpemVfdCk7CisgICAgTGFyZ2VPYmplY3QgdGFrZShPd25l
ciwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBzaXplX3QgdW5hbGlnbmVkU2l6ZSk7CiAgICAg
Ci0gICAgTGFyZ2VPYmplY3QgdGFrZUdyZWVkeShzaXplX3QpOworICAgIExhcmdlT2JqZWN0IHRh
a2VHcmVlZHkoT3duZXIpOwogCi0gICAgdm9pZCByZW1vdmVJbnZhbGlkQW5kRHVwbGljYXRlRW50
cmllcygpOworICAgIHZvaWQgcmVtb3ZlSW52YWxpZEFuZER1cGxpY2F0ZUVudHJpZXMoT3duZXIp
OwogICAgIAogcHJpdmF0ZToKICAgICBWZWN0b3I8UmFuZ2U+IG1fdmVjdG9yOwpAQCAtNTcsMTEg
KzU3LDExIEBAIGlubGluZSBGcmVlTGlzdDo6RnJlZUxpc3QoKQogewogfQogCi1pbmxpbmUgdm9p
ZCBGcmVlTGlzdDo6cHVzaChjb25zdCBMYXJnZU9iamVjdCYgbGFyZ2VPYmplY3QpCitpbmxpbmUg
dm9pZCBGcmVlTGlzdDo6cHVzaChPd25lciBvd25lciwgY29uc3QgTGFyZ2VPYmplY3QmIGxhcmdl
T2JqZWN0KQogewogICAgIEJBU1NFUlQobGFyZ2VPYmplY3QuaXNGcmVlKCkpOwogICAgIGlmICht
X3ZlY3Rvci5zaXplKCkgPT0gbV9saW1pdCkgewotICAgICAgICByZW1vdmVJbnZhbGlkQW5kRHVw
bGljYXRlRW50cmllcygpOworICAgICAgICByZW1vdmVJbnZhbGlkQW5kRHVwbGljYXRlRW50cmll
cyhvd25lcik7CiAgICAgICAgIG1fbGltaXQgPSBzdGQ6Om1heChtX3ZlY3Rvci5zaXplKCkgKiBm
cmVlTGlzdEdyb3dGYWN0b3IsIGZyZWVMaXN0U2VhcmNoRGVwdGgpOwogICAgIH0KICAgICBtX3Zl
Y3Rvci5wdXNoKGxhcmdlT2JqZWN0LnJhbmdlKCkpOwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAu
Y3BwCShyZXZpc2lvbiAxODA2ODYpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbGVl
cChzdGQ6OnVuaXF1ZV9sb2MKIH0KIAogSGVhcDo6SGVhcChzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TXV0ZXg+JikKLSAgICA6IG1faXNBbGxvY2F0aW5nUGFnZXMoZmFsc2UpCisgICAgOiBtX2xhcmdl
T2JqZWN0cyhPd25lcjo6SGVhcCkKKyAgICAsIG1faXNBbGxvY2F0aW5nUGFnZXMoZmFsc2UpCiAg
ICAgLCBtX3NjYXZlbmdlcigqdGhpcywgJkhlYXA6OmNvbmN1cnJlbnRTY2F2ZW5nZSkKIHsKICAg
ICBpbml0aWFsaXplTGluZU1ldGFkYXRhKCk7CkBAIC0xNDQsMTAgKzE0NSwxMCBAQCB2b2lkIEhl
YXA6OnNjYXZlbmdlTGFyZ2VSYW5nZXMoc3RkOjp1bmlxCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCi0gICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gbV9sYXJnZU9i
amVjdHMudGFrZUdyZWVkeSh2bVBhZ2VTaXplKTsKKyAgICAgICAgTGFyZ2VPYmplY3QgbGFyZ2VP
YmplY3QgPSBtX2xhcmdlT2JqZWN0cy50YWtlR3JlZWR5KCk7CiAgICAgICAgIGlmICghbGFyZ2VP
YmplY3QpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fdm1IZWFwLmRlYWxsb2NhdGVM
YXJnZVJhbmdlKGxvY2ssIGxhcmdlT2JqZWN0KTsKKyAgICAgICAgbV92bUhlYXAuZGVhbGxvY2F0
ZUxhcmdlT2JqZWN0KGxvY2ssIGxhcmdlT2JqZWN0KTsKICAgICB9CiB9CiAKQEAgLTI0MCwxMCAr
MjQxLDcgQEAgU21hbGxQYWdlKiBIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZShzdGQ6OgogICAgIFNt
YWxsUGFnZSogcGFnZSA9IFt0aGlzLCBzaXplQ2xhc3NdKCkgewogICAgICAgICBpZiAobV9zbWFs
bFBhZ2VzLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBtX3NtYWxsUGFnZXMucG9wKCk7Ci0g
ICAgICAgIAotICAgICAgICBTbWFsbFBhZ2UqIHBhZ2UgPSBtX3ZtSGVhcC5hbGxvY2F0ZVNtYWxs
UGFnZSgpOwotICAgICAgICB2bUFsbG9jYXRlUGh5c2ljYWxQYWdlcyhwYWdlLT5iZWdpbigpLT5i
ZWdpbigpLCB2bVBhZ2VTaXplKTsKLSAgICAgICAgcmV0dXJuIHBhZ2U7CisgICAgICAgIHJldHVy
biBtX3ZtSGVhcC5hbGxvY2F0ZVNtYWxsUGFnZSgpOwogICAgIH0oKTsKIAogICAgIHBhZ2UtPnNl
dFNpemVDbGFzcyhzaXplQ2xhc3MpOwpAQCAtMjY1LDEwICsyNjMsNyBAQCBNZWRpdW1QYWdlKiBI
ZWFwOjphbGxvY2F0ZU1lZGl1bVBhZ2Uoc3RkCiAgICAgTWVkaXVtUGFnZSogcGFnZSA9IFt0aGlz
LCBzaXplQ2xhc3NdKCkgewogICAgICAgICBpZiAobV9tZWRpdW1QYWdlcy5zaXplKCkpCiAgICAg
ICAgICAgICByZXR1cm4gbV9tZWRpdW1QYWdlcy5wb3AoKTsKLSAgICAgICAgCi0gICAgICAgIE1l
ZGl1bVBhZ2UqIHBhZ2UgPSBtX3ZtSGVhcC5hbGxvY2F0ZU1lZGl1bVBhZ2UoKTsKLSAgICAgICAg
dm1BbGxvY2F0ZVBoeXNpY2FsUGFnZXMocGFnZS0+YmVnaW4oKS0+YmVnaW4oKSwgdm1QYWdlU2l6
ZSk7Ci0gICAgICAgIHJldHVybiBwYWdlOworICAgICAgICByZXR1cm4gbV92bUhlYXAuYWxsb2Nh
dGVNZWRpdW1QYWdlKCk7CiAgICAgfSgpOwogCiAgICAgcGFnZS0+c2V0U2l6ZUNsYXNzKHNpemVD
bGFzcyk7CkBAIC0zNzUsMTIgKzM3MCw2IEBAIHZvaWQqIEhlYXA6OmFsbG9jYXRlTGFyZ2Uoc3Rk
Ojpsb2NrX2d1YXIKICAgICB9CiAKICAgICBsYXJnZU9iamVjdC5zZXRGcmVlKGZhbHNlKTsKLQot
ICAgIGlmICghbGFyZ2VPYmplY3QuaGFzUGh5c2ljYWxQYWdlcygpKSB7Ci0gICAgICAgIHZtQWxs
b2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KGxhcmdlT2JqZWN0LmJlZ2luKCksIGxhcmdlT2JqZWN0
LnNpemUoKSk7Ci0gICAgICAgIGxhcmdlT2JqZWN0LnNldEhhc1BoeXNpY2FsUGFnZXModHJ1ZSk7
Ci0gICAgfQotICAgIAogICAgIHJldHVybiBsYXJnZU9iamVjdC5iZWdpbigpOwogfQogCkBAIC0z
OTQsNyArMzgzLDcgQEAgdm9pZCogSGVhcDo6YWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3Vhcgog
CiAgICAgTGFyZ2VPYmplY3QgbGFyZ2VPYmplY3QgPSBtX2xhcmdlT2JqZWN0cy50YWtlKHNpemUp
OwogICAgIGlmICghbGFyZ2VPYmplY3QpCi0gICAgICAgIGxhcmdlT2JqZWN0ID0gbV92bUhlYXAu
YWxsb2NhdGVMYXJnZVJhbmdlKHNpemUpOworICAgICAgICBsYXJnZU9iamVjdCA9IG1fdm1IZWFw
LmFsbG9jYXRlTGFyZ2VPYmplY3Qoc2l6ZSk7CiAKICAgICByZXR1cm4gYWxsb2NhdGVMYXJnZShs
b2NrLCBsYXJnZU9iamVjdCwgc2l6ZSk7CiB9CkBAIC00MTUsMjEgKzQwNCwxNyBAQCB2b2lkKiBI
ZWFwOjphbGxvY2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyCiAKICAgICBMYXJnZU9iamVjdCBsYXJn
ZU9iamVjdCA9IG1fbGFyZ2VPYmplY3RzLnRha2UoYWxpZ25tZW50LCBzaXplLCB1bmFsaWduZWRT
aXplKTsKICAgICBpZiAoIWxhcmdlT2JqZWN0KQotICAgICAgICBsYXJnZU9iamVjdCA9IG1fdm1I
ZWFwLmFsbG9jYXRlTGFyZ2VSYW5nZShhbGlnbm1lbnQsIHNpemUsIHVuYWxpZ25lZFNpemUpOwor
ICAgICAgICBsYXJnZU9iamVjdCA9IG1fdm1IZWFwLmFsbG9jYXRlTGFyZ2VPYmplY3QoYWxpZ25t
ZW50LCBzaXplLCB1bmFsaWduZWRTaXplKTsKIAogICAgIHNpemVfdCBhbGlnbm1lbnRNYXNrID0g
YWxpZ25tZW50IC0gMTsKLSAgICBpZiAoIXRlc3QobGFyZ2VPYmplY3QuYmVnaW4oKSwgYWxpZ25t
ZW50TWFzaykpCi0gICAgICAgIHJldHVybiBhbGxvY2F0ZUxhcmdlKGxvY2ssIGxhcmdlT2JqZWN0
LCBzaXplKTsKKyAgICBpZiAodGVzdChsYXJnZU9iamVjdC5iZWdpbigpLCBhbGlnbm1lbnRNYXNr
KSkgeworICAgICAgICBzaXplX3QgcHJlZml4U2l6ZSA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxp
Z25tZW50LCBsYXJnZU9iamVjdC5iZWdpbigpICsgbGFyZ2VNaW4pIC0gbGFyZ2VPYmplY3QuYmVn
aW4oKTsKKyAgICAgICAgc3RkOjpwYWlyPExhcmdlT2JqZWN0LCBMYXJnZU9iamVjdD4gcGFpciA9
IGxhcmdlT2JqZWN0LnNwbGl0KHByZWZpeFNpemUpOworICAgICAgICBtX2xhcmdlT2JqZWN0cy5p
bnNlcnQocGFpci5maXJzdCk7CisgICAgICAgIGxhcmdlT2JqZWN0ID0gcGFpci5zZWNvbmQ7Cisg
ICAgfQogCi0gICAgLy8gQmVjYXVzZSB3ZSBhbGxvY2F0ZSBWTSBsZWZ0LXRvLXJpZ2h0LCB3ZSBt
dXN0IGV4cGxpY2l0bHkgYWxsb2NhdGUgdGhlCi0gICAgLy8gdW5hbGlnbmVkIHNwYWNlIG9uIHRo
ZSBsZWZ0IGluIG9yZGVyIHRvIGJyZWFrIG9mZiB0aGUgYWxpZ25lZCBzcGFjZQotICAgIC8vIHdl
IHdhbnQgaW4gdGhlIG1pZGRsZS4KLSAgICBzaXplX3QgcHJlZml4U2l6ZSA9IHJvdW5kVXBUb011
bHRpcGxlT2YoYWxpZ25tZW50LCBsYXJnZU9iamVjdC5iZWdpbigpICsgbGFyZ2VNaW4pIC0gbGFy
Z2VPYmplY3QuYmVnaW4oKTsKLSAgICBzdGQ6OnBhaXI8TGFyZ2VPYmplY3QsIExhcmdlT2JqZWN0
PiBwYWlyID0gbGFyZ2VPYmplY3Quc3BsaXQocHJlZml4U2l6ZSk7Ci0gICAgYWxsb2NhdGVMYXJn
ZShsb2NrLCBwYWlyLmZpcnN0LCBwcmVmaXhTaXplKTsKLSAgICBhbGxvY2F0ZUxhcmdlKGxvY2ss
IHBhaXIuc2Vjb25kLCBzaXplKTsKLSAgICBkZWFsbG9jYXRlTGFyZ2UobG9jaywgcGFpci5maXJz
dCk7Ci0gICAgcmV0dXJuIHBhaXIuc2Vjb25kLmJlZ2luKCk7CisgICAgcmV0dXJuIGFsbG9jYXRl
TGFyZ2UobG9jaywgbGFyZ2VPYmplY3QsIHNpemUpOwogfQogCiB2b2lkIEhlYXA6OmRlYWxsb2Nh
dGVMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgY29uc3QgTGFyZ2VPYmplY3Qm
IGxhcmdlT2JqZWN0KQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgJKHJldmlzaW9uIDE4MDY4NikK
KysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4
ICs4Niw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNwbGl0TGFyZ2UoQmVnaW5UYWcqLCBzaXpl
X3QsIEVuZFRhZyomLCBSYW5nZSYpOwogICAgIHZvaWQgbWVyZ2VMYXJnZShCZWdpblRhZyomLCBF
bmRUYWcqJiwgUmFuZ2UmKTsKLSAgICB2b2lkIG1lcmdlTGFyZ2VMZWZ0KEVuZFRhZyomLCBCZWdp
blRhZyomLCBSYW5nZSYsIGJvb2wmIGhhc1BoeXNpY2FsUGFnZXMpOwotICAgIHZvaWQgbWVyZ2VM
YXJnZVJpZ2h0KEVuZFRhZyomLCBCZWdpblRhZyomLCBSYW5nZSYsIGJvb2wmIGhhc1BoeXNpY2Fs
UGFnZXMpOworICAgIHZvaWQgbWVyZ2VMYXJnZUxlZnQoRW5kVGFnKiYsIEJlZ2luVGFnKiYsIFJh
bmdlJiwgYm9vbCYgaW5WTUhlYXApOworICAgIHZvaWQgbWVyZ2VMYXJnZVJpZ2h0KEVuZFRhZyom
LCBCZWdpblRhZyomLCBSYW5nZSYsIGJvb2wmIGluVk1IZWFwKTsKICAgICAKICAgICB2b2lkIGNv
bmN1cnJlbnRTY2F2ZW5nZSgpOwogICAgIHZvaWQgc2NhdmVuZ2VTbWFsbFBhZ2VzKHN0ZDo6dW5p
cXVlX2xvY2s8U3RhdGljTXV0ZXg+Jiwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyk7CkluZGV4
OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZU9iamVjdC5oCShyZXZpc2lvbiAxODA3MDEpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDE5ICs0NiwyMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSB7IHJldHVybiAhbV9v
YmplY3Q7IH0KIAogICAgIGNoYXIqIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Y2hhcio+KG1fb2JqZWN0KTsgfQorICAgIGNoYXIqIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGJlZ2lu
KCkgKyBzaXplKCk7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW5U
YWctPnNpemUoKTsgfQogICAgIFJhbmdlIHJhbmdlKCkgY29uc3QgeyByZXR1cm4gUmFuZ2UobV9v
YmplY3QsIHNpemUoKSk7IH0KIAogICAgIHZvaWQgc2V0RnJlZShib29sKSBjb25zdDsKICAgICBi
b29sIGlzRnJlZSgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgaGFzUGh5c2ljYWxQYWdlcygpIGNv
bnN0OwotICAgIHZvaWQgc2V0SGFzUGh5c2ljYWxQYWdlcyhib29sKSBjb25zdDsKKyAgICBPd25l
ciBvd25lcigpIGNvbnN0OworICAgIHZvaWQgc2V0T3duZXIoT3duZXIpIGNvbnN0OwogICAgIAog
ICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdDsKICAgICB2b2lkIHNldE1hcmtlZChib29sKSBjb25z
dDsKICAgICAKLSAgICBib29sIGlzVmFsaWRBbmRGcmVlKHNpemVfdCkgY29uc3Q7CisgICAgYm9v
bCBpc1ZhbGlkQW5kRnJlZShPd25lciwgc2l6ZV90KSBjb25zdDsKIAogICAgIExhcmdlT2JqZWN0
IG1lcmdlKCkgY29uc3Q7CiAgICAgc3RkOjpwYWlyPExhcmdlT2JqZWN0LCBMYXJnZU9iamVjdD4g
c3BsaXQoc2l6ZV90KSBjb25zdDsKQEAgLTExNiwxNyArMTE3LDE3IEBAIGlubGluZSBib29sIExh
cmdlT2JqZWN0Ojppc0ZyZWUoKSBjb25zdAogICAgIHJldHVybiBtX2JlZ2luVGFnLT5pc0ZyZWUo
KTsKIH0KIAotaW5saW5lIGJvb2wgTGFyZ2VPYmplY3Q6Omhhc1BoeXNpY2FsUGFnZXMoKSBjb25z
dAoraW5saW5lIE93bmVyIExhcmdlT2JqZWN0Ojpvd25lcigpIGNvbnN0CiB7CiAgICAgdmFsaWRh
dGUoKTsKLSAgICByZXR1cm4gbV9iZWdpblRhZy0+aGFzUGh5c2ljYWxQYWdlcygpOworICAgIHJl
dHVybiBtX2JlZ2luVGFnLT5vd25lcigpOwogfQogCi1pbmxpbmUgdm9pZCBMYXJnZU9iamVjdDo6
c2V0SGFzUGh5c2ljYWxQYWdlcyhib29sIGhhc1BoeXNpY2FsUGFnZXMpIGNvbnN0CitpbmxpbmUg
dm9pZCBMYXJnZU9iamVjdDo6c2V0T3duZXIoT3duZXIgb3duZXIpIGNvbnN0CiB7CiAgICAgdmFs
aWRhdGUoKTsKLSAgICBtX2JlZ2luVGFnLT5zZXRIYXNQaHlzaWNhbFBhZ2VzKGhhc1BoeXNpY2Fs
UGFnZXMpOwotICAgIG1fZW5kVGFnLT5zZXRIYXNQaHlzaWNhbFBhZ2VzKGhhc1BoeXNpY2FsUGFn
ZXMpOworICAgIG1fYmVnaW5UYWctPnNldE93bmVyKG93bmVyKTsKKyAgICBtX2VuZFRhZy0+c2V0
T3duZXIob3duZXIpOwogfQogCiBpbmxpbmUgYm9vbCBMYXJnZU9iamVjdDo6aXNNYXJrZWQoKSBj
b25zdApAQCAtMTQyLDcgKzE0Myw3IEBAIGlubGluZSB2b2lkIExhcmdlT2JqZWN0OjpzZXRNYXJr
ZWQoYm9vbCAKICAgICBtX2VuZFRhZy0+c2V0TWFya2VkKGlzTWFya2VkKTsKIH0KIAotaW5saW5l
IGJvb2wgTGFyZ2VPYmplY3Q6OmlzVmFsaWRBbmRGcmVlKHNpemVfdCBleHBlY3RlZFNpemUpIGNv
bnN0CitpbmxpbmUgYm9vbCBMYXJnZU9iamVjdDo6aXNWYWxpZEFuZEZyZWUoT3duZXIgZXhwZWN0
ZWRPd25lciwgc2l6ZV90IGV4cGVjdGVkU2l6ZSkgY29uc3QKIHsKICAgICBpZiAoIW1fYmVnaW5U
YWctPmlzRnJlZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTYsNiArMTU3LDkgQEAg
aW5saW5lIGJvb2wgTGFyZ2VPYmplY3Q6OmlzVmFsaWRBbmRGcmVlKAogICAgIGlmIChtX2JlZ2lu
VGFnLT5jb21wYWN0QmVnaW4oKSAhPSBCb3VuZGFyeVRhZzo6Y29tcGFjdEJlZ2luKG1fb2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKG1fYmVnaW5UYWctPm93bmVyKCkg
IT0gZXhwZWN0ZWRPd25lcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xNjQsMTcgKzE2OCwxNSBAQCBpbmxpbmUgTGFyZ2VPYmplY3QgTGFy
Z2VPYmplY3Q6Om1lcmdlKCkgCiAgICAgdmFsaWRhdGUoKTsKICAgICBCQVNTRVJUKGlzRnJlZSgp
KTsKIAotICAgIGJvb2wgaGFzUGh5c2ljYWxQYWdlcyA9IG1fYmVnaW5UYWctPmhhc1BoeXNpY2Fs
UGFnZXMoKTsKLQogICAgIEJlZ2luVGFnKiBiZWdpblRhZyA9IG1fYmVnaW5UYWc7CiAgICAgRW5k
VGFnKiBlbmRUYWcgPSBtX2VuZFRhZzsKICAgICBSYW5nZSByYW5nZSA9IHRoaXMtPnJhbmdlKCk7
CisgICAgT3duZXIgb3duZXIgPSB0aGlzLT5vd25lcigpOwogICAgIAogICAgIEVuZFRhZyogcHJl
diA9IGJlZ2luVGFnLT5wcmV2KCk7Ci0gICAgaWYgKHByZXYtPmlzRnJlZSgpKSB7CisgICAgaWYg
KHByZXYtPmlzRnJlZSgpICYmIHByZXYtPm93bmVyKCkgPT0gb3duZXIpIHsKICAgICAgICAgUmFu
Z2UgbGVmdChyYW5nZS5iZWdpbigpIC0gcHJldi0+c2l6ZSgpLCBwcmV2LT5zaXplKCkpOwogICAg
ICAgICByYW5nZSA9IFJhbmdlKGxlZnQuYmVnaW4oKSwgbGVmdC5zaXplKCkgKyByYW5nZS5zaXpl
KCkpOwotICAgICAgICBoYXNQaHlzaWNhbFBhZ2VzICY9IHByZXYtPmhhc1BoeXNpY2FsUGFnZXMo
KTsKIAogICAgICAgICBwcmV2LT5jbGVhcigpOwogICAgICAgICBiZWdpblRhZy0+Y2xlYXIoKTsK
QEAgLTE4MywxMiArMTg1LDEwIEBAIGlubGluZSBMYXJnZU9iamVjdCBMYXJnZU9iamVjdDo6bWVy
Z2UoKSAKICAgICB9CiAKICAgICBCZWdpblRhZyogbmV4dCA9IGVuZFRhZy0+bmV4dCgpOwotICAg
IGlmIChuZXh0LT5pc0ZyZWUoKSkgeworICAgIGlmIChuZXh0LT5pc0ZyZWUoKSAmJiBuZXh0LT5v
d25lcigpID09IG93bmVyKSB7CiAgICAgICAgIFJhbmdlIHJpZ2h0KHJhbmdlLmVuZCgpLCBuZXh0
LT5zaXplKCkpOwogICAgICAgICByYW5nZSA9IFJhbmdlKHJhbmdlLmJlZ2luKCksIHJhbmdlLnNp
emUoKSArIHJpZ2h0LnNpemUoKSk7CiAKLSAgICAgICAgaGFzUGh5c2ljYWxQYWdlcyAmPSBuZXh0
LT5oYXNQaHlzaWNhbFBhZ2VzKCk7Ci0KICAgICAgICAgZW5kVGFnLT5jbGVhcigpOwogICAgICAg
ICBuZXh0LT5jbGVhcigpOwogCkBAIC0xOTcsNyArMTk3LDcgQEAgaW5saW5lIExhcmdlT2JqZWN0
IExhcmdlT2JqZWN0OjptZXJnZSgpIAogCiAgICAgYmVnaW5UYWctPnNldFJhbmdlKHJhbmdlKTsK
ICAgICBiZWdpblRhZy0+c2V0RnJlZSh0cnVlKTsKLSAgICBiZWdpblRhZy0+c2V0SGFzUGh5c2lj
YWxQYWdlcyhoYXNQaHlzaWNhbFBhZ2VzKTsKKyAgICBiZWdpblRhZy0+c2V0T3duZXIob3duZXIp
OwogICAgIGVuZFRhZy0+aW5pdChiZWdpblRhZyk7CiAKICAgICByZXR1cm4gTGFyZ2VPYmplY3Qo
YmVnaW5UYWcsIGVuZFRhZywgcmFuZ2UuYmVnaW4oKSk7CkBAIC0yMzgsNyArMjM4LDcgQEAgaW5s
aW5lIHZvaWQgTGFyZ2VPYmplY3Q6OnZhbGlkYXRlU2VsZigpIAogCiAgICAgQkFTU0VSVChtX2Jl
Z2luVGFnLT5zaXplKCkgPT0gbV9lbmRUYWctPnNpemUoKSk7CiAgICAgQkFTU0VSVChtX2JlZ2lu
VGFnLT5pc0ZyZWUoKSA9PSBtX2VuZFRhZy0+aXNGcmVlKCkpOwotICAgIEJBU1NFUlQobV9iZWdp
blRhZy0+aGFzUGh5c2ljYWxQYWdlcygpID09IG1fZW5kVGFnLT5oYXNQaHlzaWNhbFBhZ2VzKCkp
OworICAgIEJBU1NFUlQobV9iZWdpblRhZy0+b3duZXIoKSA9PSBtX2VuZFRhZy0+b3duZXIoKSk7
CiAgICAgQkFTU0VSVChtX2JlZ2luVGFnLT5pc01hcmtlZCgpID09IG1fZW5kVGFnLT5pc01hcmtl
ZCgpKTsKIH0KIApAQCAtMjY0LDcgKzI2NCw3IEBAIGlubGluZSBSYW5nZSBMYXJnZU9iamVjdDo6
aW5pdChMYXJnZUNodW4KICAgICBCZWdpblRhZyogYmVnaW5UYWcgPSBMYXJnZUNodW5rOjpiZWdp
blRhZyhyYW5nZS5iZWdpbigpKTsKICAgICBiZWdpblRhZy0+c2V0UmFuZ2UocmFuZ2UpOwogICAg
IGJlZ2luVGFnLT5zZXRGcmVlKHRydWUpOwotICAgIGJlZ2luVGFnLT5zZXRIYXNQaHlzaWNhbFBh
Z2VzKGZhbHNlKTsKKyAgICBiZWdpblRhZy0+c2V0T3duZXIoT3duZXI6OlZNSGVhcCk7CiAKICAg
ICBFbmRUYWcqIGVuZFRhZyA9IExhcmdlQ2h1bms6OmVuZFRhZyhyYW5nZS5iZWdpbigpLCByYW5n
ZS5zaXplKCkpOwogICAgIGVuZFRhZy0+aW5pdChiZWdpblRhZyk7CkluZGV4OiBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL093bmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Pd25lci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Pd25lci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBPd25lcl9oCisjZGVmaW5lIE93bmVyX2gK
KworbmFtZXNwYWNlIGJtYWxsb2MgeworCitlbnVtIGNsYXNzIE93bmVyIDogdW5zaWduZWQgewor
ICAgIFZNSGVhcCwKKyAgICBIZWFwCit9OworCit9IC8vIG5hbWVzcGFjZSBibWFsbG9jCisKKyNl
bmRpZiAvLyBPd25lcl9oCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NlZ3JlZ2F0ZWRG
cmVlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TZWdyZWdh
dGVkRnJlZUxpc3QuY3BwCShyZXZpc2lvbiAxODA2OTMpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1NlZ3JlZ2F0ZWRGcmVlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDIxICsyNywy
MyBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKLVNlZ3JlZ2F0ZWRGcmVlTGlzdDo6U2VncmVn
YXRlZEZyZWVMaXN0KCkKK1NlZ3JlZ2F0ZWRGcmVlTGlzdDo6U2VncmVnYXRlZEZyZWVMaXN0KE93
bmVyIG93bmVyKQorICAgIDogbV9vd25lcihvd25lcikKIHsKICAgICBCQVNTRVJUKHN0YXRpY19j
YXN0PHNpemVfdD4oJnNlbGVjdChsYXJnZU1heCkgLSBtX2ZyZWVMaXN0cy5iZWdpbigpKSA9PSBt
X2ZyZWVMaXN0cy5zaXplKCkgLSAxKTsKIH0KIAogdm9pZCBTZWdyZWdhdGVkRnJlZUxpc3Q6Omlu
c2VydChjb25zdCBMYXJnZU9iamVjdCYgbGFyZ2VPYmplY3QpCiB7CisgICAgQkFTU0VSVChsYXJn
ZU9iamVjdC5vd25lcigpID09IG1fb3duZXIpOwogICAgIGF1dG8mIGxpc3QgPSBzZWxlY3QobGFy
Z2VPYmplY3Quc2l6ZSgpKTsKLSAgICBsaXN0LnB1c2gobGFyZ2VPYmplY3QpOworICAgIGxpc3Qu
cHVzaChtX293bmVyLCBsYXJnZU9iamVjdCk7CiB9CiAKLUxhcmdlT2JqZWN0IFNlZ3JlZ2F0ZWRG
cmVlTGlzdDo6dGFrZUdyZWVkeShzaXplX3Qgc2l6ZSkKK0xhcmdlT2JqZWN0IFNlZ3JlZ2F0ZWRG
cmVlTGlzdDo6dGFrZUdyZWVkeSgpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IG1fZnJlZUxpc3Rz
LnNpemUoKTsgaS0tID4gMDsgKSB7Ci0gICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0g
bV9mcmVlTGlzdHNbaV0udGFrZUdyZWVkeShzaXplKTsKKyAgICAgICAgTGFyZ2VPYmplY3QgbGFy
Z2VPYmplY3QgPSBtX2ZyZWVMaXN0c1tpXS50YWtlR3JlZWR5KG1fb3duZXIpOwogICAgICAgICBp
ZiAoIWxhcmdlT2JqZWN0KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTUzLDcgKzU1LDcg
QEAgTGFyZ2VPYmplY3QgU2VncmVnYXRlZEZyZWVMaXN0Ojp0YWtlR3JlZQogTGFyZ2VPYmplY3Qg
U2VncmVnYXRlZEZyZWVMaXN0Ojp0YWtlKHNpemVfdCBzaXplKQogewogICAgIGZvciAoYXV0byog
bGlzdCA9ICZzZWxlY3Qoc2l6ZSk7IGxpc3QgIT0gbV9mcmVlTGlzdHMuZW5kKCk7ICsrbGlzdCkg
ewotICAgICAgICBMYXJnZU9iamVjdCBsYXJnZU9iamVjdCA9IGxpc3QtPnRha2Uoc2l6ZSk7Cisg
ICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gbGlzdC0+dGFrZShtX293bmVyLCBzaXpl
KTsKICAgICAgICAgaWYgKCFsYXJnZU9iamVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBA
IC02NSw3ICs2Nyw3IEBAIExhcmdlT2JqZWN0IFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZShzaXoK
IExhcmdlT2JqZWN0IFNlZ3JlZ2F0ZWRGcmVlTGlzdDo6dGFrZShzaXplX3QgYWxpZ25tZW50LCBz
aXplX3Qgc2l6ZSwgc2l6ZV90IHVuYWxpZ25lZFNpemUpCiB7CiAgICAgZm9yIChhdXRvKiBsaXN0
ID0gJnNlbGVjdChzaXplKTsgbGlzdCAhPSBtX2ZyZWVMaXN0cy5lbmQoKTsgKytsaXN0KSB7Ci0g
ICAgICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gbGlzdC0+dGFrZShhbGlnbm1lbnQsIHNp
emUsIHVuYWxpZ25lZFNpemUpOworICAgICAgICBMYXJnZU9iamVjdCBsYXJnZU9iamVjdCA9IGxp
c3QtPnRha2UobV9vd25lciwgYWxpZ25tZW50LCBzaXplLCB1bmFsaWduZWRTaXplKTsKICAgICAg
ICAgaWYgKCFsYXJnZU9iamVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL1NlZ3JlZ2F0ZWRGcmVlTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0LmgJKHJldmlzaW9uIDE4MDY5
MykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBT
ZWdyZWdhdGVkRnJlZUxpc3QgewogcHVibGljOgotICAgIFNlZ3JlZ2F0ZWRGcmVlTGlzdCgpOwor
ICAgIFNlZ3JlZ2F0ZWRGcmVlTGlzdChPd25lcik7CiAKICAgICB2b2lkIGluc2VydChjb25zdCBM
YXJnZU9iamVjdCYpOwogCkBAIC01NCwxMSArNTQsMTIgQEAgcHVibGljOgogICAgIC8vIGZpdCBp
cyBmb3VuZC4gTmV2ZXIgcmV0dXJucyBMYXJnZU9iamVjdCgpIHNwdXJpb3VzbHkuIEluY3JlbWVu
dGFsbHkKICAgICAvLyByZW1vdmVzIHN0YWxlIGl0ZW1zIGZyb20gdGhlIGZyZWUgbGlzdCB3aGls
ZSBzZWFyY2hpbmcuIEVhZ2VybHkgcmVtb3ZlcwogICAgIC8vIHRoZSByZXR1cm5lZCBvYmplY3Qg
ZnJvbSB0aGUgZnJlZSBsaXN0LgotICAgIExhcmdlT2JqZWN0IHRha2VHcmVlZHkoc2l6ZV90KTsK
LSAgICAKKyAgICBMYXJnZU9iamVjdCB0YWtlR3JlZWR5KCk7CisKIHByaXZhdGU6CiAgICAgRnJl
ZUxpc3QmIHNlbGVjdChzaXplX3QpOwogCisgICAgT3duZXIgbV9vd25lcjsKICAgICBzdGQ6OmFy
cmF5PEZyZWVMaXN0LCAxOT4gbV9mcmVlTGlzdHM7CiB9OwogCkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1ZNQWxsb2NhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1ZNQWxsb2NhdGUuaAkocmV2aXNpb24gMTgwNjg2KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9WTUFsbG9jYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxOCArMTMxLDE2IEBAIGlu
bGluZSB2b2lkIHZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzKHZvaWQKICNlbmRpZgogfQogCi0vLyBU
cmltcyByZXF1ZXN0cyB0aGF0IGFyZSB1bi1wYWdlLWFsaWduZWQuIE5PVEU6IHNpemUgbXVzdCBi
ZSBhdCBsZWFzdCBhIHBhZ2UuCisvLyBUcmltcyByZXF1ZXN0cyB0aGF0IGFyZSB1bi1wYWdlLWFs
aWduZWQuCiBpbmxpbmUgdm9pZCB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KHZvaWQq
IHAsIHNpemVfdCBzaXplKQogewotICAgIEJBU1NFUlQoc2l6ZSA+PSB2bVBhZ2VTaXplKTsKLQog
ICAgIGNoYXIqIGJlZ2luID0gcm91bmRVcFRvTXVsdGlwbGVPZjx2bVBhZ2VTaXplPihzdGF0aWNf
Y2FzdDxjaGFyKj4ocCkpOwogICAgIGNoYXIqIGVuZCA9IHJvdW5kRG93blRvTXVsdGlwbGVPZjx2
bVBhZ2VTaXplPihzdGF0aWNfY2FzdDxjaGFyKj4ocCkgKyBzaXplKTsKIAotICAgIFJhbmdlIHJh
bmdlKGJlZ2luLCBlbmQgLSBiZWdpbik7Ci0gICAgaWYgKCFyYW5nZSkKKyAgICBpZiAoYmVnaW4g
Pj0gZW5kKQogICAgICAgICByZXR1cm47Ci0gICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyhy
YW5nZS5iZWdpbigpLCByYW5nZS5zaXplKCkpOworCisgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQ
YWdlcyhiZWdpbiwgZW5kIC0gYmVnaW4pOwogfQogCiAvLyBFeHBhbmRzIHJlcXVlc3RzIHRoYXQg
YXJlIHVuLXBhZ2UtYWxpZ25lZC4gTk9URTogQWxsb2NhdGlvbiBtdXN0IHByb2NlZWQgbGVmdC10
by1yaWdodC4KQEAgLTE1MSwxMCArMTQ5LDEwIEBAIGlubGluZSB2b2lkIHZtQWxsb2NhdGVQaHlz
aWNhbFBhZ2VzU2xvcHAKICAgICBjaGFyKiBiZWdpbiA9IHJvdW5kVXBUb011bHRpcGxlT2Y8dm1Q
YWdlU2l6ZT4oc3RhdGljX2Nhc3Q8Y2hhcio+KHApKTsKICAgICBjaGFyKiBlbmQgPSByb3VuZFVw
VG9NdWx0aXBsZU9mPHZtUGFnZVNpemU+KHN0YXRpY19jYXN0PGNoYXIqPihwKSArIHNpemUpOwog
Ci0gICAgUmFuZ2UgcmFuZ2UoYmVnaW4sIGVuZCAtIGJlZ2luKTsKLSAgICBpZiAoIXJhbmdlKQor
ICAgIGlmIChiZWdpbiA+PSBlbmQpCiAgICAgICAgIHJldHVybjsKLSAgICB2bUFsbG9jYXRlUGh5
c2ljYWxQYWdlcyhyYW5nZS5iZWdpbigpLCByYW5nZS5zaXplKCkpOworCisgICAgdm1BbGxvY2F0
ZVBoeXNpY2FsUGFnZXMoYmVnaW4sIGVuZCAtIGJlZ2luKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
Ym1hbGxvYwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcAkocmV2aXNpb24gMTgwNjkz
KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIFZNSGVhcDo6Vk1IZWFwKCkK
KyAgICA6IG1fbGFyZ2VPYmplY3RzKE93bmVyOjpWTUhlYXApCiB7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9WTUhlYXAuaAkocmV2aXNpb24gMTgwNjg2KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9WTUhlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTQgKzUyLDE1IEBAIHB1YmxpYzoK
IAogICAgIFNtYWxsUGFnZSogYWxsb2NhdGVTbWFsbFBhZ2UoKTsKICAgICBNZWRpdW1QYWdlKiBh
bGxvY2F0ZU1lZGl1bVBhZ2UoKTsKLSAgICBMYXJnZU9iamVjdCBhbGxvY2F0ZUxhcmdlUmFuZ2Uo
c2l6ZV90KTsKLSAgICBMYXJnZU9iamVjdCBhbGxvY2F0ZUxhcmdlUmFuZ2Uoc2l6ZV90IGFsaWdu
bWVudCwgc2l6ZV90LCBzaXplX3QgdW5hbGlnbmVkU2l6ZSk7CisgICAgTGFyZ2VPYmplY3QgYWxs
b2NhdGVMYXJnZU9iamVjdChzaXplX3QpOworICAgIExhcmdlT2JqZWN0IGFsbG9jYXRlTGFyZ2VP
YmplY3Qoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBzaXplX3QgdW5hbGlnbmVkU2l6ZSk7CiAK
ICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRl
eD4mLCBTbWFsbFBhZ2UqKTsKICAgICB2b2lkIGRlYWxsb2NhdGVNZWRpdW1QYWdlKHN0ZDo6dW5p
cXVlX2xvY2s8U3RhdGljTXV0ZXg+JiwgTWVkaXVtUGFnZSopOwotICAgIHZvaWQgZGVhbGxvY2F0
ZUxhcmdlUmFuZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBMYXJnZU9iamVjdCYp
OworICAgIHZvaWQgZGVhbGxvY2F0ZUxhcmdlT2JqZWN0KHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGlj
TXV0ZXg+JiwgTGFyZ2VPYmplY3QmKTsKIAogcHJpdmF0ZToKKyAgICBMYXJnZU9iamVjdCBhbGxv
Y2F0ZUxhcmdlT2JqZWN0KExhcmdlT2JqZWN0Jiwgc2l6ZV90KTsKICAgICB2b2lkIGdyb3coKTsK
IAogICAgIFZlY3RvcjxTbWFsbFBhZ2UqPiBtX3NtYWxsUGFnZXM7CkBAIC03NSw3ICs3Niw5IEBA
IGlubGluZSBTbWFsbFBhZ2UqIFZNSGVhcDo6YWxsb2NhdGVTbWFsbFAKICAgICBpZiAoIW1fc21h
bGxQYWdlcy5zaXplKCkpCiAgICAgICAgIGdyb3coKTsKIAotICAgIHJldHVybiBtX3NtYWxsUGFn
ZXMucG9wKCk7CisgICAgU21hbGxQYWdlKiBwYWdlID0gbV9zbWFsbFBhZ2VzLnBvcCgpOworICAg
IHZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzKHBhZ2UtPmJlZ2luKCktPmJlZ2luKCksIHZtUGFnZVNp
emUpOworICAgIHJldHVybiBwYWdlOwogfQogCiBpbmxpbmUgTWVkaXVtUGFnZSogVk1IZWFwOjph
bGxvY2F0ZU1lZGl1bVBhZ2UoKQpAQCAtODMsMTAgKzg2LDI3IEBAIGlubGluZSBNZWRpdW1QYWdl
KiBWTUhlYXA6OmFsbG9jYXRlTWVkaXUKICAgICBpZiAoIW1fbWVkaXVtUGFnZXMuc2l6ZSgpKQog
ICAgICAgICBncm93KCk7CiAKLSAgICByZXR1cm4gbV9tZWRpdW1QYWdlcy5wb3AoKTsKKyAgICBN
ZWRpdW1QYWdlKiBwYWdlID0gbV9tZWRpdW1QYWdlcy5wb3AoKTsKKyAgICB2bUFsbG9jYXRlUGh5
c2ljYWxQYWdlcyhwYWdlLT5iZWdpbigpLT5iZWdpbigpLCB2bVBhZ2VTaXplKTsKKyAgICByZXR1
cm4gcGFnZTsKIH0KIAotaW5saW5lIExhcmdlT2JqZWN0IFZNSGVhcDo6YWxsb2NhdGVMYXJnZVJh
bmdlKHNpemVfdCBzaXplKQoraW5saW5lIExhcmdlT2JqZWN0IFZNSGVhcDo6YWxsb2NhdGVMYXJn
ZU9iamVjdChMYXJnZU9iamVjdCYgbGFyZ2VPYmplY3QsIHNpemVfdCBzaXplKQoreworICAgIEJB
U1NFUlQobGFyZ2VPYmplY3QuaXNGcmVlKCkpOworCisgICAgaWYgKGxhcmdlT2JqZWN0LnNpemUo
KSAtIHNpemUgPiBsYXJnZU1pbikgeworICAgICAgICBzdGQ6OnBhaXI8TGFyZ2VPYmplY3QsIExh
cmdlT2JqZWN0PiBzcGxpdCA9IGxhcmdlT2JqZWN0LnNwbGl0KHNpemUpOworICAgICAgICBsYXJn
ZU9iamVjdCA9IHNwbGl0LmZpcnN0OworICAgICAgICBtX2xhcmdlT2JqZWN0cy5pbnNlcnQoc3Bs
aXQuc2Vjb25kKTsKKyAgICB9CisKKyAgICB2bUFsbG9jYXRlUGh5c2ljYWxQYWdlc1Nsb3BweShs
YXJnZU9iamVjdC5iZWdpbigpLCBsYXJnZU9iamVjdC5zaXplKCkpOworICAgIGxhcmdlT2JqZWN0
LnNldE93bmVyKE93bmVyOjpIZWFwKTsKKyAgICByZXR1cm4gbGFyZ2VPYmplY3QuYmVnaW4oKTsK
K30KKworaW5saW5lIExhcmdlT2JqZWN0IFZNSGVhcDo6YWxsb2NhdGVMYXJnZU9iamVjdChzaXpl
X3Qgc2l6ZSkKIHsKICAgICBMYXJnZU9iamVjdCBsYXJnZU9iamVjdCA9IG1fbGFyZ2VPYmplY3Rz
LnRha2Uoc2l6ZSk7CiAgICAgaWYgKCFsYXJnZU9iamVjdCkgewpAQCAtOTQsMTAgKzExNCwxMSBA
QCBpbmxpbmUgTGFyZ2VPYmplY3QgVk1IZWFwOjphbGxvY2F0ZUxhcmdlCiAgICAgICAgIGxhcmdl
T2JqZWN0ID0gbV9sYXJnZU9iamVjdHMudGFrZShzaXplKTsKICAgICAgICAgQkFTU0VSVChsYXJn
ZU9iamVjdCk7CiAgICAgfQotICAgIHJldHVybiBsYXJnZU9iamVjdDsKKworICAgIHJldHVybiBh
bGxvY2F0ZUxhcmdlT2JqZWN0KGxhcmdlT2JqZWN0LCBzaXplKTsKIH0KIAotaW5saW5lIExhcmdl
T2JqZWN0IFZNSGVhcDo6YWxsb2NhdGVMYXJnZVJhbmdlKHNpemVfdCBhbGlnbm1lbnQsIHNpemVf
dCBzaXplLCBzaXplX3QgdW5hbGlnbmVkU2l6ZSkKK2lubGluZSBMYXJnZU9iamVjdCBWTUhlYXA6
OmFsbG9jYXRlTGFyZ2VPYmplY3Qoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUsIHNpemVf
dCB1bmFsaWduZWRTaXplKQogewogICAgIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0gbV9sYXJn
ZU9iamVjdHMudGFrZShhbGlnbm1lbnQsIHNpemUsIHVuYWxpZ25lZFNpemUpOwogICAgIGlmICgh
bGFyZ2VPYmplY3QpIHsKQEAgLTEwNSw3ICsxMjYsMTEgQEAgaW5saW5lIExhcmdlT2JqZWN0IFZN
SGVhcDo6YWxsb2NhdGVMYXJnZQogICAgICAgICBsYXJnZU9iamVjdCA9IG1fbGFyZ2VPYmplY3Rz
LnRha2UoYWxpZ25tZW50LCBzaXplLCB1bmFsaWduZWRTaXplKTsKICAgICAgICAgQkFTU0VSVChs
YXJnZU9iamVjdCk7CiAgICAgfQotICAgIHJldHVybiBsYXJnZU9iamVjdDsKKworICAgIHNpemVf
dCBhbGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMTsKKyAgICBpZiAodGVzdChsYXJnZU9iamVj
dC5iZWdpbigpLCBhbGlnbm1lbnRNYXNrKSkKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlTGFyZ2VP
YmplY3QobGFyZ2VPYmplY3QsIHVuYWxpZ25lZFNpemUpOworICAgIHJldHVybiBhbGxvY2F0ZUxh
cmdlT2JqZWN0KGxhcmdlT2JqZWN0LCBzaXplKTsKIH0KIAogaW5saW5lIHZvaWQgVk1IZWFwOjpk
ZWFsbG9jYXRlU21hbGxQYWdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+JiBsb2NrLCBT
bWFsbFBhZ2UqIHBhZ2UpCkBAIC0xMjYsMjAgKzE1MSwyNSBAQCBpbmxpbmUgdm9pZCBWTUhlYXA6
OmRlYWxsb2NhdGVNZWRpdW1QYWdlCiAgICAgbV9tZWRpdW1QYWdlcy5wdXNoKHBhZ2UpOwogfQog
Ci1pbmxpbmUgdm9pZCBWTUhlYXA6OmRlYWxsb2NhdGVMYXJnZVJhbmdlKHN0ZDo6dW5pcXVlX2xv
Y2s8U3RhdGljTXV0ZXg+JiBsb2NrLCBMYXJnZU9iamVjdCYgbGFyZ2VPYmplY3QpCitpbmxpbmUg
dm9pZCBWTUhlYXA6OmRlYWxsb2NhdGVMYXJnZU9iamVjdChzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRp
Y011dGV4PiYgbG9jaywgTGFyZ2VPYmplY3QmIGxhcmdlT2JqZWN0KQogewotICAgIC8vIFRlbXBv
cmFyaWx5IG1hcmsgdGhpcyByYW5nZSBhcyBhbGxvY2F0ZWQgdG8gcHJldmVudCBjbGllbnRzIGZy
b20gbWVyZ2luZwotICAgIC8vIHdpdGggaXQgYW5kIHRoZW4gcmVhbGxvY2F0aW5nIGl0IHdoaWxl
IHdlJ3JlIG1lc3Npbmcgd2l0aCBpdHMgcGh5c2ljYWwgcGFnZXMuCi0gICAgbGFyZ2VPYmplY3Qu
c2V0RnJlZShmYWxzZSk7CisgICAgbGFyZ2VPYmplY3Quc2V0T3duZXIoT3duZXI6OlZNSGVhcCk7
CisgICAgCisgICAgLy8gSWYgd2UgY291bGRuJ3QgbWVyZ2Ugd2l0aCBvdXIgbmVpZ2hib3JzIGJl
Zm9yZSBiZWNhdXNlIHRoZXkgd2VyZSBpbiB0aGUKKyAgICAvLyBWTSBoZWFwLCB3ZSBjYW4gbWVy
Z2Ugd2l0aCB0aGVtIG5vdy4KKyAgICBMYXJnZU9iamVjdCBtZXJnZWQgPSBsYXJnZU9iamVjdC5t
ZXJnZSgpOworCisgICAgLy8gVGVtcG9yYXJpbHkgbWFyayB0aGlzIG9iamVjdCBhcyBhbGxvY2F0
ZWQgdG8gcHJldmVudCBjbGllbnRzIGZyb20gbWVyZ2luZworICAgIC8vIHdpdGggaXQgb3IgYWxs
b2NhdGluZyBpdCB3aGlsZSB3ZSdyZSBtZXNzaW5nIHdpdGggaXRzIHBoeXNpY2FsIHBhZ2VzLgor
ICAgIG1lcmdlZC5zZXRGcmVlKGZhbHNlKTsKIAogICAgIGxvY2sudW5sb2NrKCk7Ci0gICAgdm1E
ZWFsbG9jYXRlUGh5c2ljYWxQYWdlc1Nsb3BweShsYXJnZU9iamVjdC5iZWdpbigpLCBsYXJnZU9i
amVjdC5zaXplKCkpOworICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXNTbG9wcHkobWVyZ2Vk
LmJlZ2luKCksIG1lcmdlZC5zaXplKCkpOwogICAgIGxvY2subG9jaygpOwogCi0gICAgbGFyZ2VP
YmplY3Quc2V0RnJlZSh0cnVlKTsKLSAgICBsYXJnZU9iamVjdC5zZXRIYXNQaHlzaWNhbFBhZ2Vz
KGZhbHNlKTsKKyAgICBtZXJnZWQuc2V0RnJlZSh0cnVlKTsKIAotICAgIG1fbGFyZ2VPYmplY3Rz
Lmluc2VydChsYXJnZU9iamVjdCk7CisgICAgbV9sYXJnZU9iamVjdHMuaW5zZXJ0KG1lcmdlZCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MK
</data>
<flag name="review"
          id="272489"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>