<?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>172373</bug_id>
          
          <creation_ts>2017-05-19 11:58:51 -0700</creation_ts>
          <short_desc>bmalloc: scavenger runs too much on JetStream</short_desc>
          <delta_ts>2018-04-17 04:02:06 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184684</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>kling</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1310696</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-19 11:58:51 -0700</bug_when>
    <thetext>bmalloc: scavenger runs too much on JetStream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310720</commentid>
    <comment_count>1</comment_count>
      <attachid>310685</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-19 12:48:41 -0700</bug_when>
    <thetext>Created attachment 310685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310722</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-19 12:50:53 -0700</bug_when>
    <thetext>Attachment 310685 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/AsyncTask.h:129:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 7 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>1310740</commentid>
    <comment_count>3</comment_count>
      <attachid>310685</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-19 13:20:20 -0700</bug_when>
    <thetext>Comment on attachment 310685
Patch

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

&gt; Source/bmalloc/ChangeLog:28
&gt; +        One hole in this strategy is that a workload with a perfectly
&gt; +        unfragmented heap that allocates and deallocates ~16kB every 2s will
&gt; +        never shrink its heap. This doesn&apos;t seem to be a problem in practice.

Presumably, once it reaches critical memory pressure, it will still shrink?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310775</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-19 14:40:07 -0700</bug_when>
    <thetext>&gt; Presumably, once it reaches critical memory pressure, it will still shrink?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312927</commentid>
    <comment_count>5</comment_count>
      <attachid>311304</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-05-25 15:36:51 -0700</bug_when>
    <thetext>Created attachment 311304
Updated Patch

Tested this on iOS.  Working with Geoff, we made a few changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312928</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-25 15:39:20 -0700</bug_when>
    <thetext>Attachment 311304 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/AsyncTask.h:129:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/Heap.cpp:204:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/bmalloc/bmalloc/Heap.cpp:209:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/bmalloc/bmalloc/Heap.cpp:212:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/bmalloc/bmalloc/Heap.cpp:223:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 5 in 7 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>1312930</commentid>
    <comment_count>7</comment_count>
      <attachid>311304</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-25 15:42:10 -0700</bug_when>
    <thetext>Comment on attachment 311304
Updated Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312941</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-05-25 16:11:26 -0700</bug_when>
    <thetext>Committed r217456: &lt;http://trac.webkit.org/changeset/217456&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314064</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-30 20:27:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/32479828&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319259</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-06-14 11:40:06 -0700</bug_when>
    <thetext>It looks like this or https://bugs.webkit.org/show_bug.cgi?id=172617 is a 1.5% slowdown on JetStream on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322496</commentid>
    <comment_count>11</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-06-23 16:33:15 -0700</bug_when>
    <thetext>Note that if the vm.madvise_free_debug sysctl is 1, madvise(MADV_FREE_*) will synchronously zero-fill the pages. This may result in very different performance characteristics on production vs engineering builds of the OS.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310685</attachid>
            <date>2017-05-19 12:48:41 -0700</date>
            <delta_ts>2017-05-25 15:36:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172373-20170519124843.patch</filename>
            <type>text/plain</type>
            <size>18534</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzEzOCkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA1LTE5ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogc2NhdmVuZ2Vy
IHJ1bnMgdG9vIG11Y2ggb24gSmV0U3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnN0cnVtZW50cyBzYXlzIHRoYXQgSmV0U3RyZWFtIG9uIG1h
Y09TIHNwZW5kcyBhYm91dCAzJSBvZiBpdHMgdGltZSBpbgorICAgICAgICBtYWR2aXNlLgorCisg
ICAgICAgIEluIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDk4
PiwgQmVuIHNhdyBzb21lCisgICAgICAgIGV2aWRlbmNlIHRoYXQgbWFkdmlzZSB3YXMgdGhlIHJl
YXNvbiB0aGF0IHN3aXRjaGluZyB0byBibWFsbG9jIGZvcgorICAgICAgICBERkc6Ok5vZGUgYWxs
b2NhdGlvbnMgd2FzIGEgc2xvd2Rvd24gdGhlIGZpcnN0IHRpbWUgYXJvdW5kLgorCisgICAgICAg
IEluIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTI0PiwgTWlj
aGFlbCBzYXcgdGhhdAorICAgICAgICBzY2F2ZW5pbmcgcG9saWN5IGNhbiBhZmZlY3QgSmV0U3Ry
ZWFtLgorCisgICAgICAgIEludHVpdGl2ZWx5LCBpdCBzZWVtcyB3cm9uZyBmb3IgdGhlIGhlYXAg
dG8gaWRsZSBzaHJpbmsgZHVyaW5nIGhhcmRjb3JlCisgICAgICAgIGJlbmNobWFya2luZy4KKwor
ICAgICAgICBUaGUgc3RyYXRlZ3kgaGVyZSBpcyB0byBiYWNrIG9mZiBpbiByZXNwb25zZSB0byBh
bnkgaGVhcCBncm93dGggZXZlbnQsCisgICAgICAgIGFuZCB0byB3YWl0IDJzIGluc3RlYWQgb2Yg
MC41cyBmb3IgaGVhcCBncm93dGggdG8gdGFrZSBwbGFjZSAtLSBidXQgd2UKKyAgICAgICAgc2Nh
dmVuZ2UgaW1tZWRpYXRlbHkgaW4gcmVzcG9uc2UgdG8gY3JpdGljYWwgbWVtb3J5IHByZXNzdXJl
LCB0byBhdm9pZAorICAgICAgICBqZXRzYW0uCisKKyAgICAgICAgT25lIGhvbGUgaW4gdGhpcyBz
dHJhdGVneSBpcyB0aGF0IGEgd29ya2xvYWQgd2l0aCBhIHBlcmZlY3RseQorICAgICAgICB1bmZy
YWdtZW50ZWQgaGVhcCB0aGF0IGFsbG9jYXRlcyBhbmQgZGVhbGxvY2F0ZXMgfjE2a0IgZXZlcnkg
MnMgd2lsbAorICAgICAgICBuZXZlciBzaHJpbmsgaXRzIGhlYXAuIFRoaXMgZG9lc24ndCBzZWVt
IHRvIGJlIGEgcHJvYmxlbSBpbiBwcmFjdGljZS4KKworICAgICAgICBUaGlzIGxvb2tzIGxpa2Ug
YSAyJSAtIDQlIHNwZWVkdXAgb24gSmV0U3RyZWFtIG9uIE1hYyBQcm8gYW5kIE1hY0Jvb2sgQWly
LgorCisgICAgICAgICogYm1hbGxvYy9Bc3luY1Rhc2suaDoKKyAgICAgICAgKGJtYWxsb2M6OkFz
eW5jVGFzazo6d2lsbFJ1bik6CisgICAgICAgIChibWFsbG9jOjpBc3luY1Rhc2s6OndpbGxSdW5T
b29uKToKKyAgICAgICAgKGJtYWxsb2M6OkZ1bmN0aW9uPjo6QXN5bmNUYXNrKToKKyAgICAgICAg
KGJtYWxsb2M6OkZ1bmN0aW9uPjo6cnVuKToKKyAgICAgICAgKGJtYWxsb2M6OkZ1bmN0aW9uPjo6
cnVuU29vbik6CisgICAgICAgIChibWFsbG9jOjpGdW5jdGlvbj46OnRocmVhZFJ1bkxvb3ApOgor
ICAgICAgICAoYm1hbGxvYzo6RnVuY3Rpb24+OjpydW5TbG93Q2FzZSk6IERlbGV0ZWQuIEFkZGVk
IGEgInJ1biBzb29uIiBzdGF0ZQorICAgICAgICBzbyB0aGF0IGV4ZWN1dGlvbiBkZWxheSBpcyBt
b2RlbGVkIGRpcmVjdGx5IGluc3RlYWQgb2YgaW1wbGljaXRseQorICAgICAgICB0aHJvdWdoIHNs
ZWVwIGV2ZW50cy4gVGhpcyBlbmFibGVzIHRoZSBIZWFwIHRvIGlzc3VlIGEgInJ1biBub3ciIGV2
ZW50CisgICAgICAgIGF0IGFueSBtb21lbnQgaW4gcmVzcG9uc2Ugb3QgbWVtb3J5IHByZXNzdXJl
LgorCisgICAgICAgICogYm1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6
OkhlYXApOiBEb24ndCBjYWxsIGludG8gb3VyIG93biBBUEkgLS0gdGhhdCdzIGEgbGF5ZXJpbmcK
KyAgICAgICAgdmlvbGF0aW9uLgorCisgICAgICAgIChibWFsbG9jOjpIZWFwOjp1cGRhdGVNZW1v
cnlJblVzZVBhcmFtZXRlcnMpOiBObyBuZWVkIGZvcgorICAgICAgICBtX3NjYXZlbmdlU2xlZXBE
dXJhdGlvbiBhbnltb3JlLgorCisgICAgICAgIChibWFsbG9jOjpIZWFwOjpjb25jdXJyZW50U2Nh
dmVuZ2UpOiBBZGRlZCBhIGJhY2stb2ZmIHBvbGljeSB3aGVuIHRoZQorICAgICAgICBoZWFwIGlz
IGdyb3dpbmcuCisgICAgICAgIChibWFsbG9jOjpIZWFwOjpzY2F2ZW5nZSk6CisKKyAgICAgICAg
KGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdlU21hbGxQYWdlcyk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpzY2F2ZW5nZUxhcmdlT2JqZWN0cyk6IERvbid0IHRyeSB0byBnaXZlIHVwIGluIHRoZSBt
aWRkbGUKKyAgICAgICAgb2YgYSBzY2F2ZW5nZSBldmVudC4gT3VyIG5ldyBiYWNrb2ZmIHBvbGlj
eSBzdXBwbGFudHMgdGhhdCBkZXNpZ24uIEFsc28sCisgICAgICAgIGl0J3MgZWFzaWVyIHRvIHBy
b2ZpbGUgYW5kIHVuZGVyc3RhbmQgc2NhdmVuZ2luZyBiZWhhdmlvciBpZiBpdCBhbHdheXMKKyAg
ICAgICAgcnVucyB0byBjb21wbGV0aW9uIG9uY2Ugc3RhcnRlZC4KKworICAgICAgICAoYm1hbGxv
Yzo6SGVhcDo6c2NoZWR1bGVTY2F2ZW5nZXIpOiBBZGRlZCBhIHN5bmNocm9ub3VzIGFtb3J0aXpl
ZCBjaGVjaworICAgICAgICBmb3IgbWVtb3J5IHByZXNzdXJlLiBUaGlzIGNoZWNrIGhhcyB0aGUg
YmVuZWZpdCB0aGF0IGl0IHJ1bnMgaW1tZWRpYXRlbHkKKyAgICAgICAgZHVyaW5nIGhpZ2ggcmF0
ZXMgb2YgaGVhcCBhY3Rpdml0eSwgc28gd2UgY2FuIGRldGVjdCBtZW1vcnkgcHJlc3N1cmUgcmln
aHQKKyAgICAgICAgYXdheSBhbmQgd2FrZSB0aGUgc2NhdmVuZ2VyIGluc3RlYWQgb2Ygd2FpdGlu
ZyBmb3IgdGhlIHNjYXZlbmdlciB0byB3YWtlIHVwLgorCisgICAgICAgIChibWFsbG9jOjpIZWFw
OjphbGxvY2F0ZVNtYWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9jYXRl
U21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNwbGl0QW5kQWxsb2NhdGUpOgor
ICAgICAgICAoYm1hbGxvYzo6SGVhcDo6dHJ5QWxsb2NhdGVMYXJnZSk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjpzaHJpbmtMYXJnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9j
YXRlTGFyZ2UpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6
SGVhcDo6aXNVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAgICAgKiBibWFsbG9jL1NpemVzLmg6
CisgICAgICAgICogYm1hbGxvYy9WTUhlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVhcDo6
ZGVhbGxvY2F0ZVNtYWxsUGFnZSk6CisgICAgICAgICogYm1hbGxvYy9ibWFsbG9jLmg6CisgICAg
ICAgIChibWFsbG9jOjphcGk6OnNjYXZlbmdlKTogVXBkYXRlZCBmb3IgQVBJIGNoYW5nZXMgYWJv
dmUuCisKIDIwMTctMDUtMTcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gVGhlIEdhcmJhZ2UgQ29sbGVjdG9yIHNob3VsZG4ndCByZWx5IG9uIHRo
ZSBibWFsbG9jIHNjYXZlbmdlciBmb3IgdXAgdG8gZGF0ZSBtZW1vcnkgZm9vdHByaW50IGluZm8g
KDE3MjE4NikKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQXN5bmNUYXNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Bc3luY1Rhc2suaAkocmV2aXNpb24gMjE3
MDU1KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Bc3luY1Rhc2suaAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJBc3NlcnQuaCIKICNpbmNsdWRlICJJbmxp
bmUuaCIKICNpbmNsdWRlICJNdXRleC5oIgorI2luY2x1ZGUgIlNpemVzLmgiCiAjaW5jbHVkZSA8
YXRvbWljPgogI2luY2x1ZGUgPGNvbmRpdGlvbl92YXJpYWJsZT4KICNpbmNsdWRlIDx0aHJlYWQ+
CkBAIC00MCwxNCArNDEsMTkgQEAgY2xhc3MgQXN5bmNUYXNrIHsKIHB1YmxpYzoKICAgICBBc3lu
Y1Rhc2soT2JqZWN0JiwgY29uc3QgRnVuY3Rpb24mKTsKICAgICB+QXN5bmNUYXNrKCk7Ci0KKyAg
ICAKKyAgICBib29sIHdpbGxSdW4oKSB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpSdW47IH0K
ICAgICB2b2lkIHJ1bigpOwotCisgICAgCisgICAgYm9vbCB3aWxsUnVuU29vbigpIHsgcmV0dXJu
IG1fc3RhdGUgPT0gU3RhdGU6OlJ1blNvb247IH0KKyAgICB2b2lkIHJ1blNvb24oKTsKKyAgICAK
IHByaXZhdGU6Ci0gICAgZW51bSBTdGF0ZSB7IFNsZWVwaW5nLCBSdW5uaW5nLCBSdW5SZXF1ZXN0
ZWQgfTsKLQorICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTbGVlcCwgUnVuLCBSdW5Tb29uIH07Cisg
ICAgCiAgICAgdm9pZCBydW5TbG93Q2FzZSgpOwotCisgICAgdm9pZCBydW5Tb29uU2xvd0Nhc2Uo
KTsKKyAgICAKICAgICBzdGF0aWMgdm9pZCB0aHJlYWRFbnRyeVBvaW50KEFzeW5jVGFzayopOwog
ICAgIHZvaWQgdGhyZWFkUnVuTG9vcCgpOwogCkBAIC02NCw3ICs3MCw3IEBAIHByaXZhdGU6CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9iamVjdCwgdHlwZW5hbWUgRnVuY3Rpb24+CiBBc3luY1Rhc2s8
T2JqZWN0LCBGdW5jdGlvbj46OkFzeW5jVGFzayhPYmplY3QmIG9iamVjdCwgY29uc3QgRnVuY3Rp
b24mIGZ1bmN0aW9uKQotICAgIDogbV9zdGF0ZShSdW5uaW5nKQorICAgIDogbV9zdGF0ZShTdGF0
ZTo6U2xlZXApCiAgICAgLCBtX2NvbmRpdGlvbigpCiAgICAgLCBtX3RocmVhZChzdGQ6OnRocmVh
ZCgmQXN5bmNUYXNrOjp0aHJlYWRFbnRyeVBvaW50LCB0aGlzKSkKICAgICAsIG1fb2JqZWN0KG9i
amVjdCkKQEAgLTgxLDIxICs4NywxOSBAQCBBc3luY1Rhc2s8T2JqZWN0LCBGdW5jdGlvbj46On5B
c3luY1Rhc2soCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iamVjdCwgdHlwZW5hbWUgRnVuY3Rp
b24+Ci1pbmxpbmUgdm9pZCBBc3luY1Rhc2s8T2JqZWN0LCBGdW5jdGlvbj46OnJ1bigpCit2b2lk
IEFzeW5jVGFzazxPYmplY3QsIEZ1bmN0aW9uPjo6cnVuKCkKIHsKLSAgICBpZiAobV9zdGF0ZSA9
PSBSdW5SZXF1ZXN0ZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBydW5TbG93Q2FzZSgpOworICAg
IG1fc3RhdGUgPSBTdGF0ZTo6UnVuOworICAgIAorICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4g
bG9jayhtX2NvbmRpdGlvbk11dGV4KTsKKyAgICBtX2NvbmRpdGlvbi5ub3RpZnlfYWxsKCk7CiB9
Ci0KKyAgICAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iamVjdCwgdHlwZW5hbWUgRnVuY3Rpb24+Ci1O
T19JTkxJTkUgdm9pZCBBc3luY1Rhc2s8T2JqZWN0LCBGdW5jdGlvbj46OnJ1blNsb3dDYXNlKCkK
K3ZvaWQgQXN5bmNUYXNrPE9iamVjdCwgRnVuY3Rpb24+OjpydW5Tb29uKCkKIHsKLSAgICBTdGF0
ZSBvbGRTdGF0ZSA9IG1fc3RhdGUuZXhjaGFuZ2UoUnVuUmVxdWVzdGVkKTsKLSAgICBpZiAob2xk
U3RhdGUgPT0gUnVuUmVxdWVzdGVkIHx8IG9sZFN0YXRlID09IFJ1bm5pbmcpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEJBU1NFUlQob2xkU3RhdGUgPT0gU2xlZXBpbmcpOworICAgIG1fc3RhdGUg
PSBTdGF0ZTo6UnVuU29vbjsKKyAgICAKICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2so
bV9jb25kaXRpb25NdXRleCk7CiAgICAgbV9jb25kaXRpb24ubm90aWZ5X2FsbCgpOwogfQpAQCAt
MTE1LDIwICsxMTksMjMgQEAgdm9pZCBBc3luY1Rhc2s8T2JqZWN0LCBGdW5jdGlvbj46OnRocmVh
ZAogewogICAgIC8vIFRoaXMgbG9vcCByYXRjaGV0cyBkb3dud2FyZCBmcm9tIG1vc3QgYWN0aXZl
IHRvIGxlYXN0IGFjdGl2ZSBzdGF0ZS4gV2hpbGUKICAgICAvLyB3ZSByYXRjaGV0IGRvd253YXJk
LCBhbnkgb3RoZXIgdGhyZWFkIG1heSByZXNldCBvdXIgc3RhdGUuCi0KKyAgICAKICAgICAvLyBX
ZSByZXF1aXJlIGFueSBzdGF0ZSBjaGFuZ2Ugd2hpbGUgd2UgYXJlIHNsZWVwaW5nIHRvIHNpZ25h
bCB0byBvdXIKICAgICAvLyBjb25kaXRpb24gdmFyaWFibGUgYW5kIHdha2UgdXMgdXAuCi0KKyAg
ICAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBTdGF0ZSBleHBlY3RlZFN0YXRlID0gUnVuUmVx
dWVzdGVkOwotICAgICAgICBpZiAobV9zdGF0ZS5jb21wYXJlX2V4Y2hhbmdlX3dlYWsoZXhwZWN0
ZWRTdGF0ZSwgUnVubmluZykpCi0gICAgICAgICAgICAobV9vYmplY3QuKm1fZnVuY3Rpb24pKCk7
Ci0KLSAgICAgICAgZXhwZWN0ZWRTdGF0ZSA9IFJ1bm5pbmc7Ci0gICAgICAgIGlmIChtX3N0YXRl
LmNvbXBhcmVfZXhjaGFuZ2Vfd2VhayhleHBlY3RlZFN0YXRlLCBTbGVlcGluZykpIHsKKyAgICAg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlNsZWVwKSB7CisgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPE11dGV4PiBsb2NrKG1fY29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9jb25k
aXRpb24ud2FpdChsb2NrLCBbJl0oKSB7IHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpTbGVlcDsg
fSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpS
dW5Tb29uKSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKG1fY29u
ZGl0aW9uTXV0ZXgpOwotICAgICAgICAgICAgbV9jb25kaXRpb24ud2FpdChsb2NrLCBbJl0oKSB7
IHJldHVybiBtX3N0YXRlICE9IFNsZWVwaW5nOyB9KTsKKyAgICAgICAgICAgIG1fY29uZGl0aW9u
LndhaXRfZm9yKGxvY2ssIGFzeW5jVGFza1NsZWVwRHVyYXRpb24sIFsmXSgpIHsgcmV0dXJuIG1f
c3RhdGUgIT0gU3RhdGU6OlJ1blNvb247IH0pOwogICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OlNsZWVwOworICAgICAgICAobV9vYmplY3QuKm1fZnVuY3Rpb24p
KCk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHJldmlzaW9uIDIx
NzA1NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDcgKzY4LDggQEAgSGVhcDo6SGVhcChzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+
JgogICAgIGF1dG8gcXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYktpdCBNYWxsb2Mg
TWVtb3J5IFByZXNzdXJlIEhhbmRsZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwogICAgIG1f
cHJlc3N1cmVIYW5kbGVyRGlzcGF0Y2hTb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJ
U1BBVENIX1NPVVJDRV9UWVBFX01FTU9SWVBSRVNTVVJFLCAwLCBESVNQQVRDSF9NRU1PUllQUkVT
U1VSRV9DUklUSUNBTCwgcXVldWUpOwogICAgIGRpc3BhdGNoX3NvdXJjZV9zZXRfZXZlbnRfaGFu
ZGxlcihtX3ByZXNzdXJlSGFuZGxlckRpc3BhdGNoU291cmNlLCBeewotICAgICAgICBhcGk6OnNj
YXZlbmdlKCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+IGxvY2soUGVy
UHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CisgICAgICAgIHNjYXZlbmdlKGxvY2spOwogICAgIH0p
OwogICAgIGRpc3BhdGNoX3Jlc3VtZShtX3ByZXNzdXJlSGFuZGxlckRpc3BhdGNoU291cmNlKTsK
ICAgICBkaXNwYXRjaF9yZWxlYXNlKHF1ZXVlKTsKQEAgLTE0NCw5MyArMTQ1LDkwIEBAIHZvaWQg
SGVhcDo6dXBkYXRlTWVtb3J5SW5Vc2VQYXJhbWV0ZXJzKCkKIAogICAgIGRvdWJsZSBwZXJjZW50
SW5Vc2UgPSBzdGF0aWNfY2FzdDxkb3VibGU+KG1fbWVtb3J5Rm9vdHByaW50KSAvIHN0YXRpY19j
YXN0PGRvdWJsZT4obV9tYXhBdmFpbGFibGVNZW1vcnkpOwogICAgIG1fcGVyY2VudEF2YWlsYWJs
ZU1lbW9yeUluVXNlID0gc3RkOjptaW4ocGVyY2VudEluVXNlLCAxLjApOwotCi0gICAgZG91Ymxl
IHBlcmNlbnRGcmVlID0gMS4wIC0gbV9wZXJjZW50QXZhaWxhYmxlTWVtb3J5SW5Vc2U7Ci0gICAg
ZG91YmxlIHNsZWVwSW5NUyA9IDEyMDAuMCAqIHBlcmNlbnRGcmVlICogcGVyY2VudEZyZWUgLSAx
MDAuMCAqIHBlcmNlbnRGcmVlICsgMi4wOwotICAgIHNsZWVwSW5NUyA9IHN0ZDo6bWF4KHN0ZDo6
bWluKHNsZWVwSW5NUywgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXhTY2F2ZW5nZVNsZWVwRHVyYXRp
b24uY291bnQoKSkpLCAyLjApOwotCi0gICAgbV9zY2F2ZW5nZVNsZWVwRHVyYXRpb24gPSBzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oc2xlZXBJbk1TKSk7
CiB9CiAjZW5kaWYKIAogdm9pZCBIZWFwOjpjb25jdXJyZW50U2NhdmVuZ2UoKQogeworICAgIHN0
ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgo
KSk7CisKICNpZiBCT1MoREFSV0lOKQogICAgIHB0aHJlYWRfc2V0X3Fvc19jbGFzc19zZWxmX25w
KG1fcmVxdWVzdGVkU2NhdmVuZ2VyVGhyZWFkUU9TQ2xhc3MsIDApOwogI2VuZGlmCiAKLSAgICBz
dGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiBsb2NrKFBlclByb2Nlc3M8SGVhcD46Om11dGV4
KCkpOwotCi0gICAgc2NhdmVuZ2UobG9jaywgQXN5bmMpOwotCi0jaWYgQlBMQVRGT1JNKElPUykK
LSAgICB1cGRhdGVNZW1vcnlJblVzZVBhcmFtZXRlcnMoKTsKLSNlbmRpZgorICAgIGlmIChtX2lz
R3Jvd2luZyAmJiAhaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpIHsKKyAgICAgICAgbV9pc0dyb3dp
bmcgPSBmYWxzZTsKKyAgICAgICAgbV9zY2F2ZW5nZXIucnVuU29vbigpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIHNjYXZlbmdlKGxvY2spOwogfQogCi12b2lkIEhlYXA6OnNj
YXZlbmdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+JiBsb2NrLCBTY2F2ZW5nZU1vZGUg
c2NhdmVuZ2VNb2RlKQordm9pZCBIZWFwOjpzY2F2ZW5nZShzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRp
Y011dGV4PiYgbG9jaykKIHsKLSAgICBtX2lzQWxsb2NhdGluZ1BhZ2VzLmZpbGwoZmFsc2UpOwot
ICAgIG1faXNBbGxvY2F0aW5nTGFyZ2VQYWdlcyA9IGZhbHNlOwotCi0gICAgaWYgKHNjYXZlbmdl
TW9kZSA9PSBBc3luYykKLSAgICAgICAgc2xlZXAobG9jaywgbV9zY2F2ZW5nZVNsZWVwRHVyYXRp
b24pOwotCi0gICAgc2NhdmVuZ2VTbWFsbFBhZ2VzKGxvY2ssIHNjYXZlbmdlTW9kZSk7Ci0gICAg
c2NhdmVuZ2VMYXJnZU9iamVjdHMobG9jaywgc2NhdmVuZ2VNb2RlKTsKKyAgICBzY2F2ZW5nZVNt
YWxsUGFnZXMobG9jayk7CisgICAgc2NhdmVuZ2VMYXJnZU9iamVjdHMobG9jayk7CiB9Ci0KLXZv
aWQgSGVhcDo6c2NhdmVuZ2VTbWFsbFBhZ2VzKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+
JiBsb2NrLCBTY2F2ZW5nZU1vZGUgc2NhdmVuZ2VNb2RlKQorICAgIAordm9pZCBIZWFwOjpzY2F2
ZW5nZVNtYWxsUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mIGxvY2spCiB7CiAg
ICAgZm9yIChzaXplX3QgcGFnZUNsYXNzID0gMDsgcGFnZUNsYXNzIDwgcGFnZUNsYXNzQ291bnQ7
IHBhZ2VDbGFzcysrKSB7CiAgICAgICAgIGF1dG8mIHNtYWxsUGFnZXMgPSBtX3NtYWxsUGFnZXNb
cGFnZUNsYXNzXTsKIAogICAgICAgICB3aGlsZSAoIXNtYWxsUGFnZXMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBpZiAobV9pc0FsbG9jYXRpbmdQYWdlc1twYWdlQ2xhc3NdKSB7Ci0gICAgICAg
ICAgICAgICAgbV9zY2F2ZW5nZXIucnVuKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0KICAgICAgICAgICAgIFNtYWxsUGFnZSogcGFnZSA9IHNtYWxsUGFnZXMucG9w
KCk7Ci0gICAgICAgICAgICBtX3ZtSGVhcC5kZWFsbG9jYXRlU21hbGxQYWdlKGxvY2ssIHBhZ2VD
bGFzcywgcGFnZSwgc2NhdmVuZ2VNb2RlKTsKKyAgICAgICAgICAgIG1fdm1IZWFwLmRlYWxsb2Nh
dGVTbWFsbFBhZ2UobG9jaywgcGFnZUNsYXNzLCBwYWdlKTsKICAgICAgICAgfQogICAgIH0KIH0K
IAotdm9pZCBIZWFwOjpzY2F2ZW5nZUxhcmdlT2JqZWN0cyhzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRp
Y011dGV4PiYgbG9jaywgU2NhdmVuZ2VNb2RlIHNjYXZlbmdlTW9kZSkKK3ZvaWQgSGVhcDo6c2Nh
dmVuZ2VMYXJnZU9iamVjdHMoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mIGxvY2spCiB7
CiAgICAgYXV0byYgcmFuZ2VzID0gbV9sYXJnZUZyZWUucmFuZ2VzKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IHJhbmdlcy5zaXplKCk7IGktLSA+IDA7IGkgPSBzdGQ6Om1pbihpLCByYW5nZXMuc2l6
ZSgpKSkgewotICAgICAgICBpZiAobV9pc0FsbG9jYXRpbmdMYXJnZVBhZ2VzKSB7Ci0gICAgICAg
ICAgICBtX3NjYXZlbmdlci5ydW4oKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0K
ICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlcy5wb3AoaSk7Ci0KLSAgICAgICAgaWYgKHNjYXZl
bmdlTW9kZSA9PSBBc3luYykKLSAgICAgICAgICAgIGxvY2sudW5sb2NrKCk7CisgICAgICAgIAor
ICAgICAgICBsb2NrLnVubG9jaygpOwogICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2Vz
U2xvcHB5KHJhbmdlLmJlZ2luKCksIHJhbmdlLnNpemUoKSk7Ci0gICAgICAgIGlmIChzY2F2ZW5n
ZU1vZGUgPT0gQXN5bmMpCi0gICAgICAgICAgICBsb2NrLmxvY2soKTsKKyAgICAgICAgbG9jay5s
b2NrKCk7CiAKICAgICAgICAgcmFuZ2Uuc2V0UGh5c2ljYWxTaXplKDApOwogICAgICAgICByYW5n
ZXMucHVzaChyYW5nZSk7CiAgICAgfQogfQorICAgIAordm9pZCBIZWFwOjpzY2hlZHVsZVNjYXZl
bmdlcihzaXplX3QgYnl0ZXMpCit7CisgICAgbV9zY2F2ZW5nZXJCeXRlcyArPSBieXRlczsKKyAg
ICBpZiAobV9zY2F2ZW5nZXJCeXRlcyA+PSBzY2F2ZW5nZXJCeXRlc1Blck1lbW9yeVByZXNzdXJl
Q2hlY2spIHsKKyAgICAgICAgbV9zY2F2ZW5nZXJCeXRlcyA9IDA7CisgICAgICAgIAorICAgICAg
ICBpZiAoIW1fc2NhdmVuZ2VyLndpbGxSdW4oKSAmJiBpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkg
eworICAgICAgICAgICAgbV9pc0dyb3dpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fc2NhdmVu
Z2VyLnJ1bigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIAor
ICAgIGlmICghbV9zY2F2ZW5nZXIud2lsbFJ1blNvb24oKSkgeworICAgICAgICBtX2lzR3Jvd2lu
ZyA9IGZhbHNlOworICAgICAgICBtX3NjYXZlbmdlci5ydW5Tb29uKCk7CisgICAgfQorfQogCiBT
bWFsbFBhZ2UqIEhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNN
dXRleD4mIGxvY2ssIHNpemVfdCBzaXplQ2xhc3MpCiB7CiAgICAgaWYgKCFtX3NtYWxsUGFnZXNX
aXRoRnJlZUxpbmVzW3NpemVDbGFzc10uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9zbWFs
bFBhZ2VzV2l0aEZyZWVMaW5lc1tzaXplQ2xhc3NdLnBvcEZyb250KCk7CiAKKyAgICBtX2lzR3Jv
d2luZyA9IHRydWU7CisgICAgCiAgICAgU21hbGxQYWdlKiBwYWdlID0gWyZdKCkgewogICAgICAg
ICBzaXplX3QgcGFnZUNsYXNzID0gbV9wYWdlQ2xhc3Nlc1tzaXplQ2xhc3NdOwogICAgICAgICBp
ZiAoIW1fc21hbGxQYWdlc1twYWdlQ2xhc3NdLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBtX3NtYWxsUGFnZXNbcGFnZUNsYXNzXS5wb3AoKTsKIAotICAgICAgICBtX2lzQWxsb2NhdGlu
Z1BhZ2VzW3BhZ2VDbGFzc10gPSB0cnVlOwotCiAgICAgICAgIFNtYWxsUGFnZSogcGFnZSA9IG1f
dm1IZWFwLmFsbG9jYXRlU21hbGxQYWdlKGxvY2ssIHBhZ2VDbGFzcyk7CiAgICAgICAgIG1fb2Jq
ZWN0VHlwZXMuc2V0KENodW5rOjpnZXQocGFnZSksIE9iamVjdFR5cGU6OlNtYWxsKTsKICAgICAg
ICAgcmV0dXJuIHBhZ2U7CkBAIC0yNTksOCArMjU3LDggQEAgdm9pZCBIZWFwOjpkZWFsbG9jYXRl
U21hbGxMaW5lKHN0ZDo6bG9jawogCiAgICAgbV9zbWFsbFBhZ2VzV2l0aEZyZWVMaW5lc1tzaXpl
Q2xhc3NdLnJlbW92ZShwYWdlKTsKICAgICBtX3NtYWxsUGFnZXNbcGFnZUNsYXNzXS5wdXNoKHBh
Z2UpOwotCi0gICAgbV9zY2F2ZW5nZXIucnVuKCk7CisgICAgCisgICAgc2NoZWR1bGVTY2F2ZW5n
ZXIocGFnZVNpemUocGFnZUNsYXNzKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1
bXBSYW5nZXNCeU1ldGFkYXRhKApAQCAtMzk4LDggKzM5Niw2IEBAIExhcmdlUmFuZ2UgSGVhcDo6
c3BsaXRBbmRBbGxvY2F0ZShMYXJnZVIKICAgICB9CiAgICAgCiAgICAgaWYgKHJhbmdlLnBoeXNp
Y2FsU2l6ZSgpIDwgcmFuZ2Uuc2l6ZSgpKSB7Ci0gICAgICAgIG1faXNBbGxvY2F0aW5nTGFyZ2VQ
YWdlcyA9IHRydWU7Ci0KICAgICAgICAgdm1BbGxvY2F0ZVBoeXNpY2FsUGFnZXNTbG9wcHkocmFu
Z2UuYmVnaW4oKSArIHJhbmdlLnBoeXNpY2FsU2l6ZSgpLCByYW5nZS5zaXplKCkgLSByYW5nZS5w
aHlzaWNhbFNpemUoKSk7CiAgICAgICAgIHJhbmdlLnNldFBoeXNpY2FsU2l6ZShyYW5nZS5zaXpl
KCkpOwogICAgIH0KQEAgLTQyMCw2ICs0MTYsOCBAQCB2b2lkKiBIZWFwOjp0cnlBbGxvY2F0ZUxh
cmdlKHN0ZDo6bG9ja19nCiB7CiAgICAgQkFTU0VSVChpc1Bvd2VyT2ZUd28oYWxpZ25tZW50KSk7
CiAKKyAgICBtX2lzR3Jvd2luZyA9IHRydWU7CisgICAgCiAgICAgc2l6ZV90IHJvdW5kZWRTaXpl
ID0gc2l6ZSA/IHJvdW5kVXBUb011bHRpcGxlT2YobGFyZ2VBbGlnbm1lbnQsIHNpemUpIDogbGFy
Z2VBbGlnbm1lbnQ7CiAgICAgaWYgKHJvdW5kZWRTaXplIDwgc2l6ZSkgLy8gQ2hlY2sgZm9yIG92
ZXJmbG93CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDY4LDcgKzQ2Niw3IEBAIHZvaWQg
SGVhcDo6c2hyaW5rTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFMKICAgICBMYXJnZVJhbmdlIHJhbmdl
ID0gTGFyZ2VSYW5nZShvYmplY3QsIHNpemUpOwogICAgIHNwbGl0QW5kQWxsb2NhdGUocmFuZ2Us
IGFsaWdubWVudCwgbmV3U2l6ZSk7CiAKLSAgICBtX3NjYXZlbmdlci5ydW4oKTsKKyAgICBzY2hl
ZHVsZVNjYXZlbmdlcihzaXplKTsKIH0KIAogdm9pZCBIZWFwOjpkZWFsbG9jYXRlTGFyZ2Uoc3Rk
Ojpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHZvaWQqIG9iamVjdCkKQEAgLTQ3Niw3ICs0NzQs
NyBAQCB2b2lkIEhlYXA6OmRlYWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhCiAgICAgc2l6ZV90
IHNpemUgPSBtX2xhcmdlQWxsb2NhdGVkLnJlbW92ZShvYmplY3QpOwogICAgIG1fbGFyZ2VGcmVl
LmFkZChMYXJnZVJhbmdlKG9iamVjdCwgc2l6ZSwgc2l6ZSkpOwogICAgIAotICAgIG1fc2NhdmVu
Z2VyLnJ1bigpOworICAgIHNjaGVkdWxlU2NhdmVuZ2VyKHNpemUpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBibWFsbG9jCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAkocmV2aXNpb24gMjE3MDU1KQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEz
ICs3MCwxMiBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGxhcmdlU2l6ZShzdGQ6OmxvY2tfZ3VhcmQ8
U3RhdGljTXV0ZXg+Jiwgdm9pZCopOwogICAgIHZvaWQgc2hyaW5rTGFyZ2Uoc3RkOjpsb2NrX2d1
YXJkPFN0YXRpY011dGV4PiYsIGNvbnN0IFJhbmdlJiwgc2l6ZV90KTsKIAotICAgIHZvaWQgc2Nh
dmVuZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBTY2F2ZW5nZU1vZGUpOworICAg
IHZvaWQgc2NhdmVuZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mKTsKIAotI2lmIEJQ
TEFURk9STShJT1MpCiAgICAgc2l6ZV90IG1lbW9yeUZvb3RwcmludCgpOwogICAgIGRvdWJsZSBw
ZXJjZW50QXZhaWxhYmxlTWVtb3J5SW5Vc2UoKTsKLSNlbmRpZgotCisgICAgYm9vbCBpc1VuZGVy
TWVtb3J5UHJlc3N1cmUoKTsKKyAgICAKICNpZiBCT1MoREFSV0lOKQogICAgIHZvaWQgc2V0U2Nh
dmVuZ2VyVGhyZWFkUU9TQ2xhc3MocW9zX2NsYXNzX3Qgb3ZlcnJpZGVDbGFzcykgeyBtX3JlcXVl
c3RlZFNjYXZlbmdlclRocmVhZFFPU0NsYXNzID0gb3ZlcnJpZGVDbGFzczsgfQogI2VuZGlmCkBA
IC0xMTAsMTAgKzEwOSwxMSBAQCBwcml2YXRlOgogCiAgICAgTGFyZ2VSYW5nZSBzcGxpdEFuZEFs
bG9jYXRlKExhcmdlUmFuZ2UmLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogCisgICAgdm9p
ZCBzY2hlZHVsZVNjYXZlbmdlcihzaXplX3QgYnl0ZXMpOwogICAgIHZvaWQgY29uY3VycmVudFNj
YXZlbmdlKCk7Ci0gICAgdm9pZCBzY2F2ZW5nZVNtYWxsUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxT
dGF0aWNNdXRleD4mLCBTY2F2ZW5nZU1vZGUpOwotICAgIHZvaWQgc2NhdmVuZ2VMYXJnZU9iamVj
dHMoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBTY2F2ZW5nZU1vZGUpOwotCisgICAg
dm9pZCBzY2F2ZW5nZVNtYWxsUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mKTsK
KyAgICB2b2lkIHNjYXZlbmdlTGFyZ2VPYmplY3RzKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0
ZXg+Jik7CisgICAgCiAjaWYgQlBMQVRGT1JNKElPUykKICAgICB2b2lkIHVwZGF0ZU1lbW9yeUlu
VXNlUGFyYW1ldGVycygpOwogI2VuZGlmCkBAIC0xMzAsMTYgKzEzMCwxNCBAQCBwcml2YXRlOgog
CiAgICAgTWFwPENodW5rKiwgT2JqZWN0VHlwZSwgQ2h1bmtIYXNoPiBtX29iamVjdFR5cGVzOwog
Ci0gICAgc3RkOjphcnJheTxib29sLCBwYWdlQ2xhc3NDb3VudD4gbV9pc0FsbG9jYXRpbmdQYWdl
czsKLSAgICBib29sIG1faXNBbGxvY2F0aW5nTGFyZ2VQYWdlczsKLQorICAgIHNpemVfdCBtX3Nj
YXZlbmdlckJ5dGVzIHsgMCB9OworICAgIGJvb2wgbV9pc0dyb3dpbmcgeyBmYWxzZSB9OworICAg
IAogICAgIEFzeW5jVGFzazxIZWFwLCBkZWNsdHlwZSgmSGVhcDo6Y29uY3VycmVudFNjYXZlbmdl
KT4gbV9zY2F2ZW5nZXI7CiAKICAgICBFbnZpcm9ubWVudCBtX2Vudmlyb25tZW50OwogICAgIERl
YnVnSGVhcCogbV9kZWJ1Z0hlYXA7CiAKLSAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIG1f
c2NhdmVuZ2VTbGVlcER1cmF0aW9uID0geyBtYXhTY2F2ZW5nZVNsZWVwRHVyYXRpb24gfTsKLQog
I2lmIEJQTEFURk9STShJT1MpCiAgICAgc2l6ZV90IG1fbWF4QXZhaWxhYmxlTWVtb3J5OwogICAg
IHNpemVfdCBtX21lbW9yeUZvb3RwcmludDsKQEAgLTE3MCw2ICsxNjgsMTUgQEAgaW5saW5lIHZv
aWQgSGVhcDo6ZGVyZWZTbWFsbExpbmUoc3RkOjpsbwogICAgIGRlYWxsb2NhdGVTbWFsbExpbmUo
bG9jaywgb2JqZWN0KTsKIH0KIAoraW5saW5lIGJvb2wgSGVhcDo6aXNVbmRlck1lbW9yeVByZXNz
dXJlKCkKK3sKKyNpZiBCUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBwZXJjZW50QXZhaWxhYmxl
TWVtb3J5SW5Vc2UoKSA+IG1lbW9yeVByZXNzdXJlVGhyZXNob2xkOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKK30KKyAgICAKICNpZiBCUExBVEZPUk0oSU9TKQogaW5saW5lIHNp
emVfdCBIZWFwOjptZW1vcnlGb290cHJpbnQoKQogewpJbmRleDogU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9TaXplcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMu
aAkocmV2aXNpb24gMjE3MDU1KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw4ICs2OCwxMSBAQCBuYW1lc3BhY2UgU2l6ZXMgewogICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgZGVhbGxvY2F0b3JMb2dDYXBhY2l0eSA9IDUxMjsKICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGJ1bXBSYW5nZUNhY2hlQ2FwYWNpdHkgPSAzOwogICAgIAotICAgIHN0
YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIG1heFNjYXZlbmdlU2xlZXBEdXJh
dGlvbiA9IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMoNTEyKTsKLQorICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qgc2NhdmVuZ2VyQnl0ZXNQZXJNZW1vcnlQcmVzc3VyZUNoZWNrID0gMTYgKiBNQjsK
KyAgICBzdGF0aWMgY29uc3QgZG91YmxlIG1lbW9yeVByZXNzdXJlVGhyZXNob2xkID0gMC44ODsK
KyAgICAKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBhc3luY1Rh
c2tTbGVlcER1cmF0aW9uID0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcygyMDAwKTsKKyAgICAK
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1hc2tTaXplQ2xhc3NDb3VudCA9IG1hc2tTaXplQ2xh
c3NNYXggLyBhbGlnbm1lbnQ7CiAKICAgICBpbmxpbmUgY29uc3RleHByIHNpemVfdCBtYXNrU2l6
ZUNsYXNzKHNpemVfdCBzaXplKQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCShyZXZpc2lv
biAyMTcwNTUpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw3ICs0Niw3IEBAIHR5cGVkZWYgZW51bSB7IFN5bmMsIEFzeW5jIH0gU2NhdmVu
Z2VNb2QKIGNsYXNzIFZNSGVhcCB7CiBwdWJsaWM6CiAgICAgU21hbGxQYWdlKiBhbGxvY2F0ZVNt
YWxsUGFnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90KTsKLSAgICB2b2lk
IGRlYWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBzaXpl
X3QsIFNtYWxsUGFnZSosIFNjYXZlbmdlTW9kZSk7CisgICAgdm9pZCBkZWFsbG9jYXRlU21hbGxQ
YWdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90LCBTbWFsbFBhZ2UqKTsK
IAogICAgIExhcmdlUmFuZ2UgdHJ5QWxsb2NhdGVMYXJnZUNodW5rKHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4mLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogICAgIApAQCAtNzAsMTMg
KzcwLDExIEBAIGlubGluZSBTbWFsbFBhZ2UqIFZNSGVhcDo6YWxsb2NhdGVTbWFsbFAKICAgICBy
ZXR1cm4gcGFnZTsKIH0KIAotaW5saW5lIHZvaWQgVk1IZWFwOjpkZWFsbG9jYXRlU21hbGxQYWdl
KHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+JiBsb2NrLCBzaXplX3QgcGFnZUNsYXNzLCBT
bWFsbFBhZ2UqIHBhZ2UsIFNjYXZlbmdlTW9kZSBzY2F2ZW5nZU1vZGUpCitpbmxpbmUgdm9pZCBW
TUhlYXA6OmRlYWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4m
IGxvY2ssIHNpemVfdCBwYWdlQ2xhc3MsIFNtYWxsUGFnZSogcGFnZSkKIHsKLSAgICBpZiAoc2Nh
dmVuZ2VNb2RlID09IEFzeW5jKQotICAgICAgICBsb2NrLnVubG9jaygpOworICAgIGxvY2sudW5s
b2NrKCk7CiAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlc1Nsb3BweShwYWdlLT5iZWdpbigp
LT5iZWdpbigpLCBwYWdlU2l6ZShwYWdlQ2xhc3MpKTsKLSAgICBpZiAoc2NhdmVuZ2VNb2RlID09
IEFzeW5jKQotICAgICAgICBsb2NrLmxvY2soKTsKKyAgICBsb2NrLmxvY2soKTsKICAgICAKICAg
ICBtX3NtYWxsUGFnZXNbcGFnZUNsYXNzXS5wdXNoKHBhZ2UpOwogfQpJbmRleDogU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9ibWFsbG9jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9ibWFsbG9jLmgJKHJldmlzaW9uIDIxNzA1NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvYm1hbGxvYy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIGlubGluZSB2b2lk
IHNjYXZlbmdlKCkKICAgICBzY2F2ZW5nZVRoaXNUaHJlYWQoKTsKIAogICAgIHN0ZDo6dW5pcXVl
X2xvY2s8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7Ci0gICAg
UGVyUHJvY2VzczxIZWFwPjo6Z2V0KCktPnNjYXZlbmdlKGxvY2ssIFN5bmMpOworICAgIFBlclBy
b2Nlc3M8SGVhcD46OmdldCgpLT5zY2F2ZW5nZShsb2NrKTsKIH0KIAogaW5saW5lIGJvb2wgaXNF
bmFibGVkKCkK
</data>
<flag name="review"
          id="331761"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311304</attachid>
            <date>2017-05-25 15:36:51 -0700</date>
            <delta_ts>2017-05-25 15:42:10 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>172373-2.patch</filename>
            <type>text/plain</type>
            <size>19004</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzQ1MykKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDE3LTA1LTI1ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+IGFuZCBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZA
YXBwbGUuY29tPgorCisgICAgICAgIGJtYWxsb2M6IHNjYXZlbmdlciBydW5zIHRvbyBtdWNoIG9u
IEpldFN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcyMzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW5zdHJ1bWVudHMgc2F5cyB0aGF0IEpldFN0cmVhbSBvbiBtYWNPUyBzcGVuZHMgYWJvdXQg
MyUgb2YgaXRzIHRpbWUgaW4KKyAgICAgICAgbWFkdmlzZS4KKworICAgICAgICBJbiA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDA5OD4sIEJlbiBzYXcgc29tZQor
ICAgICAgICBldmlkZW5jZSB0aGF0IG1hZHZpc2Ugd2FzIHRoZSByZWFzb24gdGhhdCBzd2l0Y2hp
bmcgdG8gYm1hbGxvYyBmb3IKKyAgICAgICAgREZHOjpOb2RlIGFsbG9jYXRpb25zIHdhcyBhIHNs
b3dkb3duIHRoZSBmaXJzdCB0aW1lIGFyb3VuZC4KKworICAgICAgICBJbiA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjEyND4sIE1pY2hhZWwgc2F3IHRoYXQKKyAg
ICAgICAgc2NhdmVuaW5nIHBvbGljeSBjYW4gYWZmZWN0IEpldFN0cmVhbS4KKworICAgICAgICBJ
bnR1aXRpdmVseSwgaXQgc2VlbXMgd3JvbmcgZm9yIHRoZSBoZWFwIHRvIGlkbGUgc2hyaW5rIGR1
cmluZyBoYXJkY29yZQorICAgICAgICBiZW5jaG1hcmtpbmcuCisKKyAgICAgICAgVGhlIHN0cmF0
ZWd5IGhlcmUgaXMgdG8gYmFjayBvZmYgaW4gcmVzcG9uc2UgdG8gYW55IGhlYXAgZ3Jvd3RoIGV2
ZW50LAorICAgICAgICBhbmQgdG8gd2FpdCAycyBpbnN0ZWFkIG9mIDAuNXMgZm9yIGhlYXAgZ3Jv
d3RoIHRvIHRha2UgcGxhY2UgLS0gYnV0IHdlCisgICAgICAgIHNjYXZlbmdlIGltbWVkaWF0ZWx5
IGluIHJlc3BvbnNlIHRvIGNyaXRpY2FsIG1lbW9yeSBwcmVzc3VyZSwgdG8gYXZvaWQKKyAgICAg
ICAgamV0c2FtLgorCisgICAgICAgIE9uZSBob2xlIGluIHRoaXMgc3RyYXRlZ3kgaXMgdGhhdCBh
IHdvcmtsb2FkIHdpdGggYSBwZXJmZWN0bHkKKyAgICAgICAgdW5mcmFnbWVudGVkIGhlYXAgdGhh
dCBhbGxvY2F0ZXMgYW5kIGRlYWxsb2NhdGVzIH4xNmtCIGV2ZXJ5IDJzIHdpbGwKKyAgICAgICAg
bmV2ZXIgc2hyaW5rIGl0cyBoZWFwLiBUaGlzIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHByb2JsZW0g
aW4gcHJhY3RpY2UuCisKKyAgICAgICAgVGhpcyBsb29rcyBsaWtlIGEgMiUgLSA0JSBzcGVlZHVw
IG9uIEpldFN0cmVhbSBvbiBNYWMgUHJvIGFuZCBNYWNCb29rIEFpci4KKworICAgICAgICAqIGJt
YWxsb2MvQXN5bmNUYXNrLmg6CisgICAgICAgIChibWFsbG9jOjpBc3luY1Rhc2s6OndpbGxSdW4p
OgorICAgICAgICAoYm1hbGxvYzo6QXN5bmNUYXNrOjp3aWxsUnVuU29vbik6CisgICAgICAgIChi
bWFsbG9jOjpGdW5jdGlvbj46OkFzeW5jVGFzayk6CisgICAgICAgIChibWFsbG9jOjpGdW5jdGlv
bj46OnJ1bik6CisgICAgICAgIChibWFsbG9jOjpGdW5jdGlvbj46OnJ1blNvb24pOgorICAgICAg
ICAoYm1hbGxvYzo6RnVuY3Rpb24+Ojp0aHJlYWRSdW5Mb29wKToKKyAgICAgICAgKGJtYWxsb2M6
OkZ1bmN0aW9uPjo6cnVuU2xvd0Nhc2UpOiBEZWxldGVkLiBBZGRlZCBhICJydW4gc29vbiIgc3Rh
dGUKKyAgICAgICAgc28gdGhhdCBleGVjdXRpb24gZGVsYXkgaXMgbW9kZWxlZCBkaXJlY3RseSBp
bnN0ZWFkIG9mIGltcGxpY2l0bHkKKyAgICAgICAgdGhyb3VnaCBzbGVlcCBldmVudHMuIFRoaXMg
ZW5hYmxlcyB0aGUgSGVhcCB0byBpc3N1ZSBhICJydW4gbm93IiBldmVudAorICAgICAgICBhdCBh
bnkgbW9tZW50IGluIHJlc3BvbnNlIG90IG1lbW9yeSBwcmVzc3VyZS4KKworICAgICAgICAqIGJt
YWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpIZWFwKTogRG9uJ3QgY2Fs
bCBpbnRvIG91ciBvd24gQVBJIC0tIHRoYXQncyBhIGxheWVyaW5nCisgICAgICAgIHZpb2xhdGlv
bi4KKworICAgICAgICAoYm1hbGxvYzo6SGVhcDo6dXBkYXRlTWVtb3J5SW5Vc2VQYXJhbWV0ZXJz
KTogTm8gbmVlZCBmb3IKKyAgICAgICAgbV9zY2F2ZW5nZVNsZWVwRHVyYXRpb24gYW55bW9yZS4K
KworICAgICAgICAoYm1hbGxvYzo6SGVhcDo6Y29uY3VycmVudFNjYXZlbmdlKTogQWRkZWQgYSBi
YWNrLW9mZiBwb2xpY3kgd2hlbiB0aGUKKyAgICAgICAgaGVhcCBpcyBncm93aW5nLgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2UpOgorCisgICAgICAgIChibWFsbG9jOjpIZWFwOjpz
Y2F2ZW5nZVNtYWxsUGFnZXMpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6c2NhdmVuZ2VMYXJn
ZU9iamVjdHMpOiBEb24ndCB0cnkgdG8gZ2l2ZSB1cCBpbiB0aGUgbWlkZGxlCisgICAgICAgIG9m
IGEgc2NhdmVuZ2UgZXZlbnQuIE91ciBuZXcgYmFja29mZiBwb2xpY3kgc3VwcGxhbnRzIHRoYXQg
ZGVzaWduLiBBbHNvLAorICAgICAgICBpdCdzIGVhc2llciB0byBwcm9maWxlIGFuZCB1bmRlcnN0
YW5kIHNjYXZlbmdpbmcgYmVoYXZpb3IgaWYgaXQgYWx3YXlzCisgICAgICAgIHJ1bnMgdG8gY29t
cGxldGlvbiBvbmNlIHN0YXJ0ZWQuCisKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjaGVkdWxl
U2NhdmVuZ2VyKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjaGVkdWxlU2NhdmVuZ2VySWZV
bmRlck1lbW9yeVByZXNzdXJlKTogQWRkZWQgYQorICAgICAgICBzeW5jaHJvbm91cyBhbW9ydGl6
ZWQgY2hlY2sgZm9yIG1lbW9yeSBwcmVzc3VyZS4gVGhpcyBjaGVjayBoYXMgdGhlCisgICAgICAg
IGJlbmVmaXQgdGhhdCBpdCBydW5zIGltbWVkaWF0ZWx5IGR1cmluZyBoaWdoIHJhdGVzIG9mIGhl
YXAgYWN0aXZpdHksCisgICAgICAgIHNvIHdlIGNhbiBkZXRlY3QgbWVtb3J5IHByZXNzdXJlIHJp
Z2h0IGF3YXkgYW5kIHdha2UgdGhlIHNjYXZlbmdlcgorICAgICAgICBpbnN0ZWFkIG9mIHdhaXRp
bmcgZm9yIHRoZSBzY2F2ZW5nZXIgdG8gd2FrZSB1cC4KKworICAgICAgICAoYm1hbGxvYzo6SGVh
cDo6YWxsb2NhdGVTbWFsbFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZGVhbGxvY2F0
ZVNtYWxsTGluZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpzcGxpdEFuZEFsbG9jYXRlKToK
KyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnRyeUFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAoYm1h
bGxvYzo6SGVhcDo6c2hyaW5rTGFyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZGVhbGxv
Y2F0ZUxhcmdlKToKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoKKyAgICAgICAgKGJtYWxsb2M6
OkhlYXA6OmlzVW5kZXJNZW1vcnlQcmVzc3VyZSk6CisgICAgICAgICogYm1hbGxvYy9TaXplcy5o
OgorICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmg6CisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6
OmRlYWxsb2NhdGVTbWFsbFBhZ2UpOgorICAgICAgICAqIGJtYWxsb2MvYm1hbGxvYy5oOgorICAg
ICAgICAoYm1hbGxvYzo6YXBpOjpzY2F2ZW5nZSk6IFVwZGF0ZWQgZm9yIEFQSSBjaGFuZ2VzIGFi
b3ZlLgorCiAyMDE3LTA1LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIFRoZSBHYXJiYWdlIENvbGxlY3RvciBzaG91bGRuJ3QgcmVseSBvbiB0
aGUgYm1hbGxvYyBzY2F2ZW5nZXIgZm9yIHVwIHRvIGRhdGUgbWVtb3J5IGZvb3RwcmludCBpbmZv
ICgxNzIxODYpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FzeW5jVGFzay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQXN5bmNUYXNrLmgJKHJldmlzaW9uIDIx
NzQ1MykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQXN5bmNUYXNrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCQXNzZXJ0LmgiCiAjaW5jbHVkZSAiSW5s
aW5lLmgiCiAjaW5jbHVkZSAiTXV0ZXguaCIKKyNpbmNsdWRlICJTaXplcy5oIgogI2luY2x1ZGUg
PGF0b21pYz4KICNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CiAjaW5jbHVkZSA8dGhyZWFk
PgpAQCAtNDAsMTQgKzQxLDE5IEBAIGNsYXNzIEFzeW5jVGFzayB7CiBwdWJsaWM6CiAgICAgQXN5
bmNUYXNrKE9iamVjdCYsIGNvbnN0IEZ1bmN0aW9uJik7CiAgICAgfkFzeW5jVGFzaygpOwotCisg
ICAgCisgICAgYm9vbCB3aWxsUnVuKCkgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6UnVuOyB9
CiAgICAgdm9pZCBydW4oKTsKLQorICAgIAorICAgIGJvb2wgd2lsbFJ1blNvb24oKSB7IHJldHVy
biBtX3N0YXRlID4gU3RhdGU6OlNsZWVwOyB9CisgICAgdm9pZCBydW5Tb29uKCk7CisgICAgCiBw
cml2YXRlOgotICAgIGVudW0gU3RhdGUgeyBTbGVlcGluZywgUnVubmluZywgUnVuUmVxdWVzdGVk
IH07Ci0KKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU2xlZXAsIFJ1biwgUnVuU29vbiB9OworICAg
IAogICAgIHZvaWQgcnVuU2xvd0Nhc2UoKTsKLQorICAgIHZvaWQgcnVuU29vblNsb3dDYXNlKCk7
CisgICAgCiAgICAgc3RhdGljIHZvaWQgdGhyZWFkRW50cnlQb2ludChBc3luY1Rhc2sqKTsKICAg
ICB2b2lkIHRocmVhZFJ1bkxvb3AoKTsKIApAQCAtNjQsNyArNzAsNyBAQCBwcml2YXRlOgogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBPYmplY3QsIHR5cGVuYW1lIEZ1bmN0aW9uPgogQXN5bmNUYXNrPE9i
amVjdCwgRnVuY3Rpb24+OjpBc3luY1Rhc2soT2JqZWN0JiBvYmplY3QsIGNvbnN0IEZ1bmN0aW9u
JiBmdW5jdGlvbikKLSAgICA6IG1fc3RhdGUoUnVubmluZykKKyAgICA6IG1fc3RhdGUoU3RhdGU6
OlNsZWVwKQogICAgICwgbV9jb25kaXRpb24oKQogICAgICwgbV90aHJlYWQoc3RkOjp0aHJlYWQo
JkFzeW5jVGFzazo6dGhyZWFkRW50cnlQb2ludCwgdGhpcykpCiAgICAgLCBtX29iamVjdChvYmpl
Y3QpCkBAIC04MSwyMSArODcsMTkgQEAgQXN5bmNUYXNrPE9iamVjdCwgRnVuY3Rpb24+Ojp+QXN5
bmNUYXNrKAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmplY3QsIHR5cGVuYW1lIEZ1bmN0aW9u
PgotaW5saW5lIHZvaWQgQXN5bmNUYXNrPE9iamVjdCwgRnVuY3Rpb24+OjpydW4oKQordm9pZCBB
c3luY1Rhc2s8T2JqZWN0LCBGdW5jdGlvbj46OnJ1bigpCiB7Ci0gICAgaWYgKG1fc3RhdGUgPT0g
UnVuUmVxdWVzdGVkKQotICAgICAgICByZXR1cm47Ci0gICAgcnVuU2xvd0Nhc2UoKTsKKyAgICBt
X3N0YXRlID0gU3RhdGU6OlJ1bjsKKyAgICAKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxv
Y2sobV9jb25kaXRpb25NdXRleCk7CisgICAgbV9jb25kaXRpb24ubm90aWZ5X2FsbCgpOwogfQot
CisgICAgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmplY3QsIHR5cGVuYW1lIEZ1bmN0aW9uPgotTk9f
SU5MSU5FIHZvaWQgQXN5bmNUYXNrPE9iamVjdCwgRnVuY3Rpb24+OjpydW5TbG93Q2FzZSgpCit2
b2lkIEFzeW5jVGFzazxPYmplY3QsIEZ1bmN0aW9uPjo6cnVuU29vbigpCiB7Ci0gICAgU3RhdGUg
b2xkU3RhdGUgPSBtX3N0YXRlLmV4Y2hhbmdlKFJ1blJlcXVlc3RlZCk7Ci0gICAgaWYgKG9sZFN0
YXRlID09IFJ1blJlcXVlc3RlZCB8fCBvbGRTdGF0ZSA9PSBSdW5uaW5nKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBCQVNTRVJUKG9sZFN0YXRlID09IFNsZWVwaW5nKTsKKyAgICBtX3N0YXRlID0g
U3RhdGU6OlJ1blNvb247CisgICAgCiAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrKG1f
Y29uZGl0aW9uTXV0ZXgpOwogICAgIG1fY29uZGl0aW9uLm5vdGlmeV9hbGwoKTsKIH0KQEAgLTEx
NSwyMCArMTE5LDIzIEBAIHZvaWQgQXN5bmNUYXNrPE9iamVjdCwgRnVuY3Rpb24+Ojp0aHJlYWQK
IHsKICAgICAvLyBUaGlzIGxvb3AgcmF0Y2hldHMgZG93bndhcmQgZnJvbSBtb3N0IGFjdGl2ZSB0
byBsZWFzdCBhY3RpdmUgc3RhdGUuIFdoaWxlCiAgICAgLy8gd2UgcmF0Y2hldCBkb3dud2FyZCwg
YW55IG90aGVyIHRocmVhZCBtYXkgcmVzZXQgb3VyIHN0YXRlLgotCisgICAgCiAgICAgLy8gV2Ug
cmVxdWlyZSBhbnkgc3RhdGUgY2hhbmdlIHdoaWxlIHdlIGFyZSBzbGVlcGluZyB0byBzaWduYWwg
dG8gb3VyCiAgICAgLy8gY29uZGl0aW9uIHZhcmlhYmxlIGFuZCB3YWtlIHVzIHVwLgotCisgICAg
CiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgU3RhdGUgZXhwZWN0ZWRTdGF0ZSA9IFJ1blJlcXVl
c3RlZDsKLSAgICAgICAgaWYgKG1fc3RhdGUuY29tcGFyZV9leGNoYW5nZV93ZWFrKGV4cGVjdGVk
U3RhdGUsIFJ1bm5pbmcpKQotICAgICAgICAgICAgKG1fb2JqZWN0LiptX2Z1bmN0aW9uKSgpOwot
Ci0gICAgICAgIGV4cGVjdGVkU3RhdGUgPSBSdW5uaW5nOwotICAgICAgICBpZiAobV9zdGF0ZS5j
b21wYXJlX2V4Y2hhbmdlX3dlYWsoZXhwZWN0ZWRTdGF0ZSwgU2xlZXBpbmcpKSB7CisgICAgICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpTbGVlcCkgeworICAgICAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxNdXRleD4gbG9jayhtX2NvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgICAgIG1fY29uZGl0
aW9uLndhaXQobG9jaywgWyZdKCkgeyByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6U2xlZXA7IH0p
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UnVu
U29vbikgewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhtX2NvbmRp
dGlvbk11dGV4KTsKLSAgICAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobG9jaywgWyZdKCkgeyBy
ZXR1cm4gbV9zdGF0ZSAhPSBTbGVlcGluZzsgfSk7CisgICAgICAgICAgICBtX2NvbmRpdGlvbi53
YWl0X2Zvcihsb2NrLCBhc3luY1Rhc2tTbGVlcER1cmF0aW9uLCBbJl0oKSB7IHJldHVybiBtX3N0
YXRlICE9IFN0YXRlOjpSdW5Tb29uOyB9KTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpTbGVlcDsKKyAgICAgICAgKG1fb2JqZWN0LiptX2Z1bmN0aW9uKSgp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCShyZXZpc2lvbiAyMTc0
NTMpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw3ICs2OCw4IEBAIEhlYXA6OkhlYXAoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYK
ICAgICBhdXRvIHF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJLaXQgTWFsbG9jIE1l
bW9yeSBQcmVzc3VyZSBIYW5kbGVyIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKICAgICBtX3By
ZXNzdXJlSGFuZGxlckRpc3BhdGNoU291cmNlID0gZGlzcGF0Y2hfc291cmNlX2NyZWF0ZShESVNQ
QVRDSF9TT1VSQ0VfVFlQRV9NRU1PUllQUkVTU1VSRSwgMCwgRElTUEFUQ0hfTUVNT1JZUFJFU1NV
UkVfQ1JJVElDQUwsIHF1ZXVlKTsKICAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRs
ZXIobV9wcmVzc3VyZUhhbmRsZXJEaXNwYXRjaFNvdXJjZSwgXnsKLSAgICAgICAgYXBpOjpzY2F2
ZW5nZSgpOworICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiBsb2NrKFBlclBy
b2Nlc3M8SGVhcD46Om11dGV4KCkpOworICAgICAgICBzY2F2ZW5nZShsb2NrKTsKICAgICB9KTsK
ICAgICBkaXNwYXRjaF9yZXN1bWUobV9wcmVzc3VyZUhhbmRsZXJEaXNwYXRjaFNvdXJjZSk7CiAg
ICAgZGlzcGF0Y2hfcmVsZWFzZShxdWV1ZSk7CkBAIC0xNDQsOTMgKzE0NSwxMDIgQEAgdm9pZCBI
ZWFwOjp1cGRhdGVNZW1vcnlJblVzZVBhcmFtZXRlcnMoKQogCiAgICAgZG91YmxlIHBlcmNlbnRJ
blVzZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4obV9tZW1vcnlGb290cHJpbnQpIC8gc3RhdGljX2Nh
c3Q8ZG91YmxlPihtX21heEF2YWlsYWJsZU1lbW9yeSk7CiAgICAgbV9wZXJjZW50QXZhaWxhYmxl
TWVtb3J5SW5Vc2UgPSBzdGQ6Om1pbihwZXJjZW50SW5Vc2UsIDEuMCk7Ci0KLSAgICBkb3VibGUg
cGVyY2VudEZyZWUgPSAxLjAgLSBtX3BlcmNlbnRBdmFpbGFibGVNZW1vcnlJblVzZTsKLSAgICBk
b3VibGUgc2xlZXBJbk1TID0gMTIwMC4wICogcGVyY2VudEZyZWUgKiBwZXJjZW50RnJlZSAtIDEw
MC4wICogcGVyY2VudEZyZWUgKyAyLjA7Ci0gICAgc2xlZXBJbk1TID0gc3RkOjptYXgoc3RkOjpt
aW4oc2xlZXBJbk1TLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heFNjYXZlbmdlU2xlZXBEdXJhdGlv
bi5jb3VudCgpKSksIDIuMCk7Ci0KLSAgICBtX3NjYXZlbmdlU2xlZXBEdXJhdGlvbiA9IHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMoc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihzbGVlcEluTVMpKTsK
IH0KICNlbmRpZgogCiB2b2lkIEhlYXA6OmNvbmN1cnJlbnRTY2F2ZW5nZSgpCiB7CisgICAgc3Rk
Ojp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRleCgp
KTsKKwogI2lmIEJPUyhEQVJXSU4pCiAgICAgcHRocmVhZF9zZXRfcW9zX2NsYXNzX3NlbGZfbnAo
bV9yZXF1ZXN0ZWRTY2F2ZW5nZXJUaHJlYWRRT1NDbGFzcywgMCk7CiAjZW5kaWYKIAotICAgIHN0
ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgo
KSk7Ci0KLSAgICBzY2F2ZW5nZShsb2NrLCBBc3luYyk7Ci0KLSNpZiBCUExBVEZPUk0oSU9TKQot
ICAgIHVwZGF0ZU1lbW9yeUluVXNlUGFyYW1ldGVycygpOwotI2VuZGlmCisgICAgaWYgKG1faXNH
cm93aW5nICYmICFpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkgeworICAgICAgICBtX2lzR3Jvd2lu
ZyA9IGZhbHNlOworICAgICAgICBtX3NjYXZlbmdlci5ydW5Tb29uKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgc2NhdmVuZ2UobG9jayk7CiB9CiAKLXZvaWQgSGVhcDo6c2Nh
dmVuZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mIGxvY2ssIFNjYXZlbmdlTW9kZSBz
Y2F2ZW5nZU1vZGUpCit2b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGlj
TXV0ZXg+JiBsb2NrKQogewotICAgIG1faXNBbGxvY2F0aW5nUGFnZXMuZmlsbChmYWxzZSk7Ci0g
ICAgbV9pc0FsbG9jYXRpbmdMYXJnZVBhZ2VzID0gZmFsc2U7Ci0KLSAgICBpZiAoc2NhdmVuZ2VN
b2RlID09IEFzeW5jKQotICAgICAgICBzbGVlcChsb2NrLCBtX3NjYXZlbmdlU2xlZXBEdXJhdGlv
bik7Ci0KLSAgICBzY2F2ZW5nZVNtYWxsUGFnZXMobG9jaywgc2NhdmVuZ2VNb2RlKTsKLSAgICBz
Y2F2ZW5nZUxhcmdlT2JqZWN0cyhsb2NrLCBzY2F2ZW5nZU1vZGUpOworICAgIHNjYXZlbmdlU21h
bGxQYWdlcyhsb2NrKTsKKyAgICBzY2F2ZW5nZUxhcmdlT2JqZWN0cyhsb2NrKTsKIH0KLQotdm9p
ZCBIZWFwOjpzY2F2ZW5nZVNtYWxsUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4m
IGxvY2ssIFNjYXZlbmdlTW9kZSBzY2F2ZW5nZU1vZGUpCisgICAgCit2b2lkIEhlYXA6OnNjYXZl
bmdlU21hbGxQYWdlcyhzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYgbG9jaykKIHsKICAg
ICBmb3IgKHNpemVfdCBwYWdlQ2xhc3MgPSAwOyBwYWdlQ2xhc3MgPCBwYWdlQ2xhc3NDb3VudDsg
cGFnZUNsYXNzKyspIHsKICAgICAgICAgYXV0byYgc21hbGxQYWdlcyA9IG1fc21hbGxQYWdlc1tw
YWdlQ2xhc3NdOwogCiAgICAgICAgIHdoaWxlICghc21hbGxQYWdlcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIGlmIChtX2lzQWxsb2NhdGluZ1BhZ2VzW3BhZ2VDbGFzc10pIHsKLSAgICAgICAg
ICAgICAgICBtX3NjYXZlbmdlci5ydW4oKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLQogICAgICAgICAgICAgU21hbGxQYWdlKiBwYWdlID0gc21hbGxQYWdlcy5wb3Ao
KTsKLSAgICAgICAgICAgIG1fdm1IZWFwLmRlYWxsb2NhdGVTbWFsbFBhZ2UobG9jaywgcGFnZUNs
YXNzLCBwYWdlLCBzY2F2ZW5nZU1vZGUpOworICAgICAgICAgICAgbV92bUhlYXAuZGVhbGxvY2F0
ZVNtYWxsUGFnZShsb2NrLCBwYWdlQ2xhc3MsIHBhZ2UpOwogICAgICAgICB9CiAgICAgfQogfQog
Ci12b2lkIEhlYXA6OnNjYXZlbmdlTGFyZ2VPYmplY3RzKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGlj
TXV0ZXg+JiBsb2NrLCBTY2F2ZW5nZU1vZGUgc2NhdmVuZ2VNb2RlKQordm9pZCBIZWFwOjpzY2F2
ZW5nZUxhcmdlT2JqZWN0cyhzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYgbG9jaykKIHsK
ICAgICBhdXRvJiByYW5nZXMgPSBtX2xhcmdlRnJlZS5yYW5nZXMoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gcmFuZ2VzLnNpemUoKTsgaS0tID4gMDsgaSA9IHN0ZDo6bWluKGksIHJhbmdlcy5zaXpl
KCkpKSB7Ci0gICAgICAgIGlmIChtX2lzQWxsb2NhdGluZ0xhcmdlUGFnZXMpIHsKLSAgICAgICAg
ICAgIG1fc2NhdmVuZ2VyLnJ1bigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQog
ICAgICAgICBhdXRvIHJhbmdlID0gcmFuZ2VzLnBvcChpKTsKLQotICAgICAgICBpZiAoc2NhdmVu
Z2VNb2RlID09IEFzeW5jKQotICAgICAgICAgICAgbG9jay51bmxvY2soKTsKKyAgICAgICAgCisg
ICAgICAgIGxvY2sudW5sb2NrKCk7CiAgICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXNT
bG9wcHkocmFuZ2UuYmVnaW4oKSwgcmFuZ2Uuc2l6ZSgpKTsKLSAgICAgICAgaWYgKHNjYXZlbmdl
TW9kZSA9PSBBc3luYykKLSAgICAgICAgICAgIGxvY2subG9jaygpOworICAgICAgICBsb2NrLmxv
Y2soKTsKIAogICAgICAgICByYW5nZS5zZXRQaHlzaWNhbFNpemUoMCk7CiAgICAgICAgIHJhbmdl
cy5wdXNoKHJhbmdlKTsKICAgICB9CiB9CisgICAgCit2b2lkIEhlYXA6OnNjaGVkdWxlU2NhdmVu
Z2VySWZVbmRlck1lbW9yeVByZXNzdXJlKHNpemVfdCBieXRlcykKK3sKKyAgICBtX3NjYXZlbmdl
ckJ5dGVzICs9IGJ5dGVzOworICAgIGlmIChtX3NjYXZlbmdlckJ5dGVzIDwgc2NhdmVuZ2VyQnl0
ZXNQZXJNZW1vcnlQcmVzc3VyZUNoZWNrKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAg
IG1fc2NhdmVuZ2VyQnl0ZXMgPSAwOworICAgIAorICAgIGlmIChtX3NjYXZlbmdlci53aWxsUnVu
KCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgaWYgKCFpc1VuZGVyTWVtb3J5UHJl
c3N1cmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2lzR3Jvd2luZyA9IGZh
bHNlOworICAgIG1fc2NhdmVuZ2VyLnJ1bigpOworfQorCit2b2lkIEhlYXA6OnNjaGVkdWxlU2Nh
dmVuZ2VyKHNpemVfdCBieXRlcykKK3sKKyAgICBzY2hlZHVsZVNjYXZlbmdlcklmVW5kZXJNZW1v
cnlQcmVzc3VyZShieXRlcyk7CisKKyAgICBpZiAobV9zY2F2ZW5nZXIud2lsbFJ1blNvb24oKSkK
KyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2lzR3Jvd2luZyA9IGZhbHNlOworICAg
IG1fc2NhdmVuZ2VyLnJ1blNvb24oKTsKK30KIAogU21hbGxQYWdlKiBIZWFwOjphbGxvY2F0ZVNt
YWxsUGFnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBzaXplX3Qgc2l6ZUNs
YXNzKQogewogICAgIGlmICghbV9zbWFsbFBhZ2VzV2l0aEZyZWVMaW5lc1tzaXplQ2xhc3NdLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fc21hbGxQYWdlc1dpdGhGcmVlTGluZXNbc2l6ZUNs
YXNzXS5wb3BGcm9udCgpOwogCisgICAgbV9pc0dyb3dpbmcgPSB0cnVlOworICAgIAogICAgIFNt
YWxsUGFnZSogcGFnZSA9IFsmXSgpIHsKICAgICAgICAgc2l6ZV90IHBhZ2VDbGFzcyA9IG1fcGFn
ZUNsYXNzZXNbc2l6ZUNsYXNzXTsKICAgICAgICAgaWYgKCFtX3NtYWxsUGFnZXNbcGFnZUNsYXNz
XS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbV9zbWFsbFBhZ2VzW3BhZ2VDbGFzc10u
cG9wKCk7CiAKLSAgICAgICAgbV9pc0FsbG9jYXRpbmdQYWdlc1twYWdlQ2xhc3NdID0gdHJ1ZTsK
LQorICAgICAgICBzY2hlZHVsZVNjYXZlbmdlcklmVW5kZXJNZW1vcnlQcmVzc3VyZShwYWdlU2l6
ZShwYWdlQ2xhc3MpKTsKKyAgICAgICAgCiAgICAgICAgIFNtYWxsUGFnZSogcGFnZSA9IG1fdm1I
ZWFwLmFsbG9jYXRlU21hbGxQYWdlKGxvY2ssIHBhZ2VDbGFzcyk7CiAgICAgICAgIG1fb2JqZWN0
VHlwZXMuc2V0KENodW5rOjpnZXQocGFnZSksIE9iamVjdFR5cGU6OlNtYWxsKTsKICAgICAgICAg
cmV0dXJuIHBhZ2U7CkBAIC0yNTksOCArMjY5LDggQEAgdm9pZCBIZWFwOjpkZWFsbG9jYXRlU21h
bGxMaW5lKHN0ZDo6bG9jawogCiAgICAgbV9zbWFsbFBhZ2VzV2l0aEZyZWVMaW5lc1tzaXplQ2xh
c3NdLnJlbW92ZShwYWdlKTsKICAgICBtX3NtYWxsUGFnZXNbcGFnZUNsYXNzXS5wdXNoKHBhZ2Up
OwotCi0gICAgbV9zY2F2ZW5nZXIucnVuKCk7CisgICAgCisgICAgc2NoZWR1bGVTY2F2ZW5nZXIo
cGFnZVNpemUocGFnZUNsYXNzKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBS
YW5nZXNCeU1ldGFkYXRhKApAQCAtMzk4LDggKzQwOCw4IEBAIExhcmdlUmFuZ2UgSGVhcDo6c3Bs
aXRBbmRBbGxvY2F0ZShMYXJnZVIKICAgICB9CiAgICAgCiAgICAgaWYgKHJhbmdlLnBoeXNpY2Fs
U2l6ZSgpIDwgcmFuZ2Uuc2l6ZSgpKSB7Ci0gICAgICAgIG1faXNBbGxvY2F0aW5nTGFyZ2VQYWdl
cyA9IHRydWU7Ci0KKyAgICAgICAgc2NoZWR1bGVTY2F2ZW5nZXJJZlVuZGVyTWVtb3J5UHJlc3N1
cmUocmFuZ2Uuc2l6ZSgpKTsKKyAgICAgICAgCiAgICAgICAgIHZtQWxsb2NhdGVQaHlzaWNhbFBh
Z2VzU2xvcHB5KHJhbmdlLmJlZ2luKCkgKyByYW5nZS5waHlzaWNhbFNpemUoKSwgcmFuZ2Uuc2l6
ZSgpIC0gcmFuZ2UucGh5c2ljYWxTaXplKCkpOwogICAgICAgICByYW5nZS5zZXRQaHlzaWNhbFNp
emUocmFuZ2Uuc2l6ZSgpKTsKICAgICB9CkBAIC00MjAsNiArNDMwLDggQEAgdm9pZCogSGVhcDo6
dHJ5QWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZwogewogICAgIEJBU1NFUlQoaXNQb3dlck9mVHdv
KGFsaWdubWVudCkpOwogCisgICAgbV9pc0dyb3dpbmcgPSB0cnVlOworICAgIAogICAgIHNpemVf
dCByb3VuZGVkU2l6ZSA9IHNpemUgPyByb3VuZFVwVG9NdWx0aXBsZU9mKGxhcmdlQWxpZ25tZW50
LCBzaXplKSA6IGxhcmdlQWxpZ25tZW50OwogICAgIGlmIChyb3VuZGVkU2l6ZSA8IHNpemUpIC8v
IENoZWNrIGZvciBvdmVyZmxvdwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ2OCw3ICs0
ODAsNyBAQCB2b2lkIEhlYXA6OnNocmlua0xhcmdlKHN0ZDo6bG9ja19ndWFyZDxTCiAgICAgTGFy
Z2VSYW5nZSByYW5nZSA9IExhcmdlUmFuZ2Uob2JqZWN0LCBzaXplKTsKICAgICBzcGxpdEFuZEFs
bG9jYXRlKHJhbmdlLCBhbGlnbm1lbnQsIG5ld1NpemUpOwogCi0gICAgbV9zY2F2ZW5nZXIucnVu
KCk7CisgICAgc2NoZWR1bGVTY2F2ZW5nZXIoc2l6ZSk7CiB9CiAKIHZvaWQgSGVhcDo6ZGVhbGxv
Y2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCB2b2lkKiBvYmplY3QpCkBA
IC00NzYsNyArNDg4LDcgQEAgdm9pZCBIZWFwOjpkZWFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1
YQogICAgIHNpemVfdCBzaXplID0gbV9sYXJnZUFsbG9jYXRlZC5yZW1vdmUob2JqZWN0KTsKICAg
ICBtX2xhcmdlRnJlZS5hZGQoTGFyZ2VSYW5nZShvYmplY3QsIHNpemUsIHNpemUpKTsKICAgICAK
LSAgICBtX3NjYXZlbmdlci5ydW4oKTsKKyAgICBzY2hlZHVsZVNjYXZlbmdlcihzaXplKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgJKHJldmlz
aW9uIDIxNzQ1MykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MCwxMyArNzAsMTIgQEAgcHVibGljOgogICAgIHNpemVfdCBsYXJnZVNpemUoc3Rk
Ojpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHZvaWQqKTsKICAgICB2b2lkIHNocmlua0xhcmdl
KHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBjb25zdCBSYW5nZSYsIHNpemVfdCk7CiAK
LSAgICB2b2lkIHNjYXZlbmdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+JiwgU2NhdmVu
Z2VNb2RlKTsKKyAgICB2b2lkIHNjYXZlbmdlKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+
Jik7CiAKLSNpZiBCUExBVEZPUk0oSU9TKQogICAgIHNpemVfdCBtZW1vcnlGb290cHJpbnQoKTsK
ICAgICBkb3VibGUgcGVyY2VudEF2YWlsYWJsZU1lbW9yeUluVXNlKCk7Ci0jZW5kaWYKLQorICAg
IGJvb2wgaXNVbmRlck1lbW9yeVByZXNzdXJlKCk7CisgICAgCiAjaWYgQk9TKERBUldJTikKICAg
ICB2b2lkIHNldFNjYXZlbmdlclRocmVhZFFPU0NsYXNzKHFvc19jbGFzc190IG92ZXJyaWRlQ2xh
c3MpIHsgbV9yZXF1ZXN0ZWRTY2F2ZW5nZXJUaHJlYWRRT1NDbGFzcyA9IG92ZXJyaWRlQ2xhc3M7
IH0KICNlbmRpZgpAQCAtMTEwLDEwICsxMDksMTMgQEAgcHJpdmF0ZToKIAogICAgIExhcmdlUmFu
Z2Ugc3BsaXRBbmRBbGxvY2F0ZShMYXJnZVJhbmdlJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90
KTsKIAorICAgIHZvaWQgc2NoZWR1bGVTY2F2ZW5nZXIoc2l6ZV90KTsKKyAgICB2b2lkIHNjaGVk
dWxlU2NhdmVuZ2VySWZVbmRlck1lbW9yeVByZXNzdXJlKHNpemVfdCk7CisgICAgCiAgICAgdm9p
ZCBjb25jdXJyZW50U2NhdmVuZ2UoKTsKLSAgICB2b2lkIHNjYXZlbmdlU21hbGxQYWdlcyhzdGQ6
OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYsIFNjYXZlbmdlTW9kZSk7Ci0gICAgdm9pZCBzY2F2
ZW5nZUxhcmdlT2JqZWN0cyhzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYsIFNjYXZlbmdl
TW9kZSk7Ci0KKyAgICB2b2lkIHNjYXZlbmdlU21hbGxQYWdlcyhzdGQ6OnVuaXF1ZV9sb2NrPFN0
YXRpY011dGV4PiYpOworICAgIHZvaWQgc2NhdmVuZ2VMYXJnZU9iamVjdHMoc3RkOjp1bmlxdWVf
bG9jazxTdGF0aWNNdXRleD4mKTsKKyAgICAKICNpZiBCUExBVEZPUk0oSU9TKQogICAgIHZvaWQg
dXBkYXRlTWVtb3J5SW5Vc2VQYXJhbWV0ZXJzKCk7CiAjZW5kaWYKQEAgLTEzMCwxNiArMTMyLDE0
IEBAIHByaXZhdGU6CiAKICAgICBNYXA8Q2h1bmsqLCBPYmplY3RUeXBlLCBDaHVua0hhc2g+IG1f
b2JqZWN0VHlwZXM7CiAKLSAgICBzdGQ6OmFycmF5PGJvb2wsIHBhZ2VDbGFzc0NvdW50PiBtX2lz
QWxsb2NhdGluZ1BhZ2VzOwotICAgIGJvb2wgbV9pc0FsbG9jYXRpbmdMYXJnZVBhZ2VzOwotCisg
ICAgc2l6ZV90IG1fc2NhdmVuZ2VyQnl0ZXMgeyAwIH07CisgICAgYm9vbCBtX2lzR3Jvd2luZyB7
IGZhbHNlIH07CisgICAgCiAgICAgQXN5bmNUYXNrPEhlYXAsIGRlY2x0eXBlKCZIZWFwOjpjb25j
dXJyZW50U2NhdmVuZ2UpPiBtX3NjYXZlbmdlcjsKIAogICAgIEVudmlyb25tZW50IG1fZW52aXJv
bm1lbnQ7CiAgICAgRGVidWdIZWFwKiBtX2RlYnVnSGVhcDsKIAotICAgIHN0ZDo6Y2hyb25vOjpt
aWxsaXNlY29uZHMgbV9zY2F2ZW5nZVNsZWVwRHVyYXRpb24gPSB7IG1heFNjYXZlbmdlU2xlZXBE
dXJhdGlvbiB9OwotCiAjaWYgQlBMQVRGT1JNKElPUykKICAgICBzaXplX3QgbV9tYXhBdmFpbGFi
bGVNZW1vcnk7CiAgICAgc2l6ZV90IG1fbWVtb3J5Rm9vdHByaW50OwpAQCAtMTcwLDYgKzE3MCwx
NSBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZXJlZlNtYWxsTGluZShzdGQ6OmxvCiAgICAgZGVhbGxv
Y2F0ZVNtYWxsTGluZShsb2NrLCBvYmplY3QpOwogfQogCitpbmxpbmUgYm9vbCBIZWFwOjppc1Vu
ZGVyTWVtb3J5UHJlc3N1cmUoKQoreworI2lmIEJQTEFURk9STShJT1MpCisgICAgcmV0dXJuIHBl
cmNlbnRBdmFpbGFibGVNZW1vcnlJblVzZSgpID4gbWVtb3J5UHJlc3N1cmVUaHJlc2hvbGQ7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorICAgIAogI2lmIEJQTEFURk9STShJ
T1MpCiBpbmxpbmUgc2l6ZV90IEhlYXA6Om1lbW9yeUZvb3RwcmludCgpCiB7CkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9TaXplcy5oCShyZXZpc2lvbiAyMTc0NTMpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1NpemVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDggKzY4LDExIEBAIG5hbWVzcGFjZSBT
aXplcyB7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBkZWFsbG9jYXRvckxvZ0NhcGFjaXR5ID0g
NTEyOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYnVtcFJhbmdlQ2FjaGVDYXBhY2l0eSA9IDM7
CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbWF4U2Nh
dmVuZ2VTbGVlcER1cmF0aW9uID0gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyg1MTIpOwotCisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBzY2F2ZW5nZXJCeXRlc1Blck1lbW9yeVByZXNzdXJlQ2hl
Y2sgPSAxNiAqIE1COworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWVtb3J5UHJlc3N1cmVUaHJl
c2hvbGQgPSAwLjc1OworICAgIAorICAgIHN0YXRpYyBjb25zdCBzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzIGFzeW5jVGFza1NsZWVwRHVyYXRpb24gPSBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
KDIwMDApOworICAgIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWFza1NpemVDbGFzc0NvdW50
ID0gbWFza1NpemVDbGFzc01heCAvIGFsaWdubWVudDsKIAogICAgIGlubGluZSBjb25zdGV4cHIg
c2l6ZV90IG1hc2tTaXplQ2xhc3Moc2l6ZV90IHNpemUpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1ZNSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1I
ZWFwLmgJKHJldmlzaW9uIDIxNzQ1MykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgdHlwZWRlZiBlbnVtIHsgU3luYywg
QXN5bmMgfSBTY2F2ZW5nZU1vZAogY2xhc3MgVk1IZWFwIHsKIHB1YmxpYzoKICAgICBTbWFsbFBh
Z2UqIGFsbG9jYXRlU21hbGxQYWdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXpl
X3QpOwotICAgIHZvaWQgZGVhbGxvY2F0ZVNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRp
Y011dGV4PiYsIHNpemVfdCwgU21hbGxQYWdlKiwgU2NhdmVuZ2VNb2RlKTsKKyAgICB2b2lkIGRl
YWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBzaXplX3Qs
IFNtYWxsUGFnZSopOwogCiAgICAgTGFyZ2VSYW5nZSB0cnlBbGxvY2F0ZUxhcmdlQ2h1bmsoc3Rk
Ojpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CiAg
ICAgCkBAIC03MCwxMyArNzAsMTEgQEAgaW5saW5lIFNtYWxsUGFnZSogVk1IZWFwOjphbGxvY2F0
ZVNtYWxsUAogICAgIHJldHVybiBwYWdlOwogfQogCi1pbmxpbmUgdm9pZCBWTUhlYXA6OmRlYWxs
b2NhdGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mIGxvY2ssIHNpemVf
dCBwYWdlQ2xhc3MsIFNtYWxsUGFnZSogcGFnZSwgU2NhdmVuZ2VNb2RlIHNjYXZlbmdlTW9kZSkK
K2lubGluZSB2b2lkIFZNSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2Nr
PFN0YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IHBhZ2VDbGFzcywgU21hbGxQYWdlKiBwYWdlKQog
ewotICAgIGlmIChzY2F2ZW5nZU1vZGUgPT0gQXN5bmMpCi0gICAgICAgIGxvY2sudW5sb2NrKCk7
CisgICAgbG9jay51bmxvY2soKTsKICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5
KHBhZ2UtPmJlZ2luKCktPmJlZ2luKCksIHBhZ2VTaXplKHBhZ2VDbGFzcykpOwotICAgIGlmIChz
Y2F2ZW5nZU1vZGUgPT0gQXN5bmMpCi0gICAgICAgIGxvY2subG9jaygpOworICAgIGxvY2subG9j
aygpOwogICAgIAogICAgIG1fc21hbGxQYWdlc1twYWdlQ2xhc3NdLnB1c2gocGFnZSk7CiB9Cklu
ZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL2JtYWxsb2MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL2JtYWxsb2MuaAkocmV2aXNpb24gMjE3NDUzKQorKysgU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9ibWFsbG9jLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcg
QEAgaW5saW5lIHZvaWQgc2NhdmVuZ2UoKQogICAgIHNjYXZlbmdlVGhpc1RocmVhZCgpOwogCiAg
ICAgc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+Ojpt
dXRleCgpKTsKLSAgICBQZXJQcm9jZXNzPEhlYXA+OjpnZXQoKS0+c2NhdmVuZ2UobG9jaywgU3lu
Yyk7CisgICAgUGVyUHJvY2VzczxIZWFwPjo6Z2V0KCktPnNjYXZlbmdlKGxvY2spOwogfQogCiBp
bmxpbmUgYm9vbCBpc0VuYWJsZWQoKQo=
</data>
<flag name="review"
          id="332295"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>