<?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>218733</bug_id>
          
          <creation_ts>2020-11-09 18:38:17 -0800</creation_ts>
          <short_desc>REGRESSION (r269525): Many layout tests crash when run under ASan</short_desc>
          <delta_ts>2020-11-10 12:31:09 -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>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1705958</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-09 18:38:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/71206273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705972</commentid>
    <comment_count>1</comment_count>
      <attachid>413658</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-09 20:17:52 -0800</bug_when>
    <thetext>Created attachment 413658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706124</commentid>
    <comment_count>2</comment_count>
      <attachid>413715</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 10:59:07 -0800</bug_when>
    <thetext>Created attachment 413715
roundUpToMultipleOf + remove some reinterpret_casts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706129</commentid>
    <comment_count>3</comment_count>
      <attachid>413715</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-11-10 11:10:34 -0800</bug_when>
    <thetext>Comment on attachment 413715
roundUpToMultipleOf + remove some reinterpret_casts

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:558
&gt; +    auto itemLocation = destination.data + sizeof(uint64_t);

offset?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.h:80
&gt; -        return *reinterpret_cast&lt;T*&gt;(&amp;data[sizeof(ItemType)]);
&gt; +        return *reinterpret_cast&lt;T*&gt;(&amp;data[sizeof(uint64_t)]);

Didn&apos;t want to just inflate ItemType? I guess that&apos;s OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706140</commentid>
    <comment_count>4</comment_count>
      <attachid>413715</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 11:25:10 -0800</bug_when>
    <thetext>Comment on attachment 413715
roundUpToMultipleOf + remove some reinterpret_casts

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

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:558
&gt;&gt; +    auto itemLocation = destination.data + sizeof(uint64_t);
&gt; 
&gt; offset?

Renamed!

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.h:80
&gt;&gt; +        return *reinterpret_cast&lt;T*&gt;(&amp;data[sizeof(uint64_t)]);
&gt; 
&gt; Didn&apos;t want to just inflate ItemType? I guess that&apos;s OK

Interesting. I suppose I could!

I wasn&apos;t sure if it made sense to make ItemType itself larger for the sake of aligning item data to 8 bytes…(for instance, if another data structure wants to keep just a list of item types, it would end up being much larger than necessary. But perhaps that&apos;s not really an issue, seeing as there&apos;s already padding after each type in the item buffer itself).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706151</commentid>
    <comment_count>5</comment_count>
      <attachid>413720</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 11:59:38 -0800</bug_when>
    <thetext>Created attachment 413720
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706167</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-10 12:31:09 -0800</bug_when>
    <thetext>Committed r269640: &lt;https://trac.webkit.org/changeset/269640&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413720.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413658</attachid>
            <date>2020-11-09 20:17:52 -0800</date>
            <delta_ts>2020-11-10 10:59:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218733-20201109201751.patch</filename>
            <type>text/plain</type>
            <size>33003</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y3N2I2MDEwZmU4ZWIz
NWMxOWE3NDI5OTBhODkzMTYxOTJmOTUyYy4uZDJmYzEyMGI4YjRiYjJlMjY5ZTUwYjM2MmE2NmYz
Njk0OGU2NGM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTExLTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjk1MjUpOiBNYW55IGxheW91dCB0ZXN0cyBjcmFzaCB3aGVuIHJ1biB1bmRlciBBU2FuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHJ1bm5p
bmcgdGVzdHMgdW5kZXIgQVNhbiwgbWFueSBsYXlvdXQgdGVzdHMgY3Jhc2ggdW5kZXIgYFZlY3Rv
cjo6YXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG9gLCB3aGljaCAod2hlbgorICAgICAgICBBU2Fu
IGlzIGVuYWJsZWQpIHdpbGwgY3Jhc2ggd2hlbiB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciBpcyBt
aXNhbGlnbmVkIHRvIDggYnl0ZXMuIFdoZW4gYXBwZW5kaW5nIGBEcmF3R2x5cGhgCisgICAgICAg
IGRpc3BsYXkgbGlzdCBpdGVtcyB0aGF0IGhhdmUgVmVjdG9ycyB3aXRoIGlubGluZSBjYXBhY2l0
aWVzLCB0aGUgc3RhcnQgb2YgYSBidWZmZXIgbWF5IGVuZCB1cCBhdCBhbiBvZmZzZXQgdGhhdAor
ICAgICAgICBpcyBub3QgYWxpZ25lZCB0byA4IGJ5dGVzLCBzaW5jZSBhbGwgZGlzcGxheSBsaXN0
IGl0ZW1zIGFyZSBjdXJyZW50bHkgbGFpZCBvdXQgYmFjay10by1iYWNrLCB3aXRoIGEgc2luZ2xl
IGJ5dGUKKyAgICAgICAgdG8gcmVwcmVzZW50IHRoZSBpdGVtIHR5cGUgYW5kIGVhY2ggaXRlbSdz
IGRhdGEgZm9sbG93aW5nIGltbWVkaWF0ZWx5IHRoZXJlYWZ0ZXIuCisKKyAgICAgICAgVG8gYWRk
cmVzcyB0aGlzLCBhZGp1c3QgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGxvZ2ljIHRvIG1ha2Ug
c3VyZSB0aGF0IGZvciBlYWNoIGl0ZW0gdGhhdCBpcyBhcHBlbmRlZCB0byBhbgorICAgICAgICBp
dGVtIGJ1ZmZlciwgYm90aCB0aGUgaXRlbSB0eXBlIGFuZCB0aGUgaXRlbSBpdHNlbGYgYXJlIGFs
aWduZWQgdG8gOCBieXRlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Y29weVRvIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZm
ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6
YXBwZW5kRW5jb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXI6OmFwcGVuZERhdGFBbmRMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjp0eXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpnZXQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpzaXplIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6ZU9mSXRlbUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRlZFNpemVPZlR5cGVBbmRJ
dGVtSW5CeXRlcyk6CisKKyAgICAgICAgQ2hhbmdlIGBzaXplT2ZJdGVtSW5CeXRlc2AgdG8gYHBh
ZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlc2AsIGFuZCBtYWtlIGl0IGluY2x1ZGUgYm90aCB0
aGUgcGFkZGVkIHNpemUgb2YgYW4KKyAgICAgICAgaXRlbSB0eXBlICg4IGJ5dGVzKSwgdGhlIHNp
emUgb2YgdGhlIGl0ZW0gaXRzZWxmLCBhbmQgdGhlIG1pbmltdW0gYW1vdW50IG9mIHBhZGRpbmcg
YWZ0ZXIgdGhlIGl0ZW0gdGhhdCdzCisgICAgICAgIHJlcXVpcmVkIHRvIG1ha2Ugc3VyZSB0aGUg
dG90YWwgc2l6ZSBpcyBhbGlnbmVkIHRvIDggYnl0ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgorCiAyMDIwLTExLTA5
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5leHBvc2Ugb2Jz
b2xldGUgSFRNTEFwcGxldEVsZW1lbnQgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzODliMjI5M2Y3
NWMzMzNkNWFhNjQ3MWRkN2U3ZWNkZmQwYmExODUuLmFlYmM5ZGY0NmYwM2ZmNzgzMjYyMDhjMWYx
OTg4MTQ2ZWJiNzFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTEtMDkgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TiAocjI2OTUyNSk6IE1hbnkgbGF5b3V0IHRlc3RzIGNyYXNoIHdoZW4gcnVuIHVuZGVyIEFTYW4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODczMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnN0cnVj
dCB0aGUgaXRlbSA4IGJ5dGVzIGFmdGVyIHRoZSBoYW5kbGUgb2Zmc2V0LCBpbnN0ZWFkIG9mIDEg
Ynl0ZSAoYWxzbywgYWRkIGEgRklYTUUgaW5kaWNhdGluZyB0aGF0IHdlIHNvbWUKKyAgICAgICAg
d2F5IG9mIGFjaGlldmluZyB0aGlzIHdpdGhvdXQgcmVxdWlyaW5nIFdlYktpdDIgdG8gYmUgYXdh
cmUgb2YgYW4gaXRlbSBoYW5kbGUncyBtZW1vcnkgbGF5b3V0KS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVBbmRDcmVhdGUpOgorCiAyMDIwLTExLTA5
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5leHBvc2Ugb2Jz
b2xldGUgSFRNTEFwcGxldEVsZW1lbnQgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cAppbmRleCAxZTMwNmQ2NjNiYjQ2MDFjOTM5ZDhkYzZiMGRhYTY4ZDVkNDgwOGU1Li4wYTNkMGQw
ZjM3MmU3YjI1MjEyZjBlODYzMzYwN2Y1MmQ4MjdlZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBk
YXRlQ3VycmVudEl0ZW0oKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBpdGVtcyA9ICpt
X2Rpc3BsYXlMaXN0Lm1faXRlbXM7Ci0gICAgYXV0byBpdGVtVHlwZSA9IHN0YXRpY19jYXN0PEl0
ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAgYXV0byBpdGVtVHlwZSA9IHN0YXRpY19jYXN0PEl0
ZW1UeXBlPihyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzBdKTsKICAgICBp
ZiAoaXNEcmF3aW5nSXRlbShpdGVtVHlwZSkgJiYgIW1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRl
bUV4dGVudHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fY3VycmVudEV4dGVudCA9IG1fZGlzcGxh
eUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKICAgICAgICAg
bV9kcmF3aW5nSXRlbUluZGV4Kys7CkBAIC0zNDAsMTMgKzM0MCwxMiBAQCB2b2lkIERpc3BsYXlM
aXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgICAgICBtX2N1cnJlbnRFeHRl
bnQgPSBXVEY6Om51bGxvcHQ7CiAKICAgICBhdXRvKiBjbGllbnQgPSBpdGVtcy5tX3JlYWRpbmdD
bGllbnQ7Ci0gICAgYXV0byBzaXplT2ZUeXBlQW5kSXRlbSA9IHNpemVPZkl0ZW1JbkJ5dGVzKGl0
ZW1UeXBlKSArIHNpemVvZihJdGVtVHlwZSk7Ci0gICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9
IHNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBt
X2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihm
YXN0TWFsbG9jKHNpemVPZlR5cGVBbmRJdGVtKSk7CisgICAgYXV0byBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhpdGVtVHlwZSk7CisgICAg
bV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVP
ZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0g
OiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVB
bmRJdGVtKSk7CiAgICAgaWYgKCFpc0lubGluZUl0ZW0oaXRlbVR5cGUpICYmIGNsaWVudCkgewot
ICAgICAgICBhdXRvIHNpemVPZkRhdGEgPSByZWludGVycHJldF9jYXN0PHNpemVfdCo+KG1fY3Vy
c29yICsgc2l6ZW9mKEl0ZW1UeXBlKSlbMF07Ci0gICAgICAgIGF1dG8qIHN0YXJ0T2ZQYWRkaW5n
ID0gbV9jdXJzb3IgKyBzaXplb2YoSXRlbVR5cGUpICsgc2l6ZW9mKHNpemVfdCk7Ci0gICAgICAg
IHNpemVfdCBwYWRkaW5nID0gKGFsaWdub2YodWludDY0X3QpIC0gcmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KHN0YXJ0T2ZQYWRkaW5nKSAlIGFsaWdub2YodWludDY0X3QpKSAlIGFsaWdub2Yo
dWludDY0X3QpOwotICAgICAgICBhdXRvIGRlY29kZWRJdGVtSGFuZGxlID0gY2xpZW50LT5kZWNv
ZGVJdGVtKHN0YXJ0T2ZQYWRkaW5nICsgcGFkZGluZywgc2l6ZU9mRGF0YSwgaXRlbVR5cGUsIG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0pOworICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVy
cHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFdOworICAgICAgICBhdXRvKiBzdGFydE9m
RGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7CisgICAgICAgIGF1dG8gZGVj
b2RlZEl0ZW1IYW5kbGUgPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5n
dGgsIGl0ZW1UeXBlLCBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKICAgICAgICAgaWYgKCFkZWNv
ZGVkSXRlbUhhbmRsZSkgewogICAgICAgICAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgY3Jhc2hp
bmcsIHRoaXMgbmVlZHMgdG8gZmFpbCBncmFjZWZ1bGx5IGFuZCBpbmZvcm0gdGhlIGNhbGxlci4K
ICAgICAgICAgICAgIC8vIEZvciB0aGUgdGltZSBiZWluZywgdGhpcyBhc3NlcnRpb24gbWFrZXMg
YnVncyBpbiBpdGVtIGJ1ZmZlciBlbmNvZGluZyBsb2dpYyBlYXNpZXIKQEAgLTM1NCwxMSArMzUz
LDEyIEBAIHZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSgpCiAg
ICAgICAgICAgICAvLyBkb3duIHRoZSBsaW5lLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVt
WzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwotICAgICAgICBtX2N1cnJlbnRJ
dGVtU2l6ZUluQnVmZmVyID0gc2l6ZW9mKEl0ZW1UeXBlKSArIHNpemVvZihzaXplX3QpICsgcGFk
ZGluZyArIHNpemVPZkRhdGE7CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPiht
X2N1cnJlbnRCdWZmZXJGb3JJdGVtKVswXSA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihpdGVtVHlw
ZSk7CisgICAgICAgIGF1dG8gcGFkZGluZyA9IChhbGlnbm9mKHVpbnQ2NF90KSAtIGRhdGFMZW5n
dGggJSBhbGlnbm9mKHVpbnQ2NF90KSkgJSBhbGlnbm9mKHVpbnQ2NF90KTsKKyAgICAgICAgbV9j
dXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgZGF0YUxlbmd0
aCArIHBhZGRpbmc7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSXRlbUhhbmRsZSB7IG1fY3Vyc29y
IH0uY29weVRvKHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9KTsKLSAgICAgICAgbV9jdXJyZW50
SXRlbVNpemVJbkJ1ZmZlciA9IHNpemVPZlR5cGVBbmRJdGVtOworICAgICAgICBtX2N1cnJlbnRJ
dGVtU2l6ZUluQnVmZmVyID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW07CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGQ3ZTMwN2Ew
OTFiZDczYzk2ZDFlYWU2MzNmN2EzNmVhMmFhN2JjMzguLmFjZTMxMzdmY2M0MWMxMjY0MmY0ZjQ3
NzNjZGI1ODYyNDdiYjQxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuY3BwCkBAIC01NTQsMjU2ICs1NTQsMjU3IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJv
eSgpCiB2b2lkIEl0ZW1IYW5kbGU6OmNvcHlUbyhJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25z
dAogewogICAgIGF1dG8gaXRlbVR5cGUgPSB0eXBlKCk7Ci0gICAgZGVzdGluYXRpb24uZGF0YVsw
XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKKyAgICByZWludGVycHJldF9jYXN0
PHVpbnQ2NF90Kj4oZGVzdGluYXRpb24uZGF0YSlbMF0gPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
aXRlbVR5cGUpOworICAgIGF1dG8gaXRlbUxvY2F0aW9uID0gZGVzdGluYXRpb24uZGF0YSArIHNp
emVvZih1aW50NjRfdCk7CiAgICAgc3dpdGNoIChpdGVtVHlwZSkgewogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBPdXRUb1BhdGg6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6
ZW9mKEl0ZW1UeXBlKSkgQ2xpcE91dFRvUGF0aChnZXQ8Q2xpcE91dFRvUGF0aD4oKSk7CisgICAg
ICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBDbGlwT3V0VG9QYXRoKGdldDxDbGlwT3V0VG9QYXRoPigp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDog
ewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBDbGlw
UGF0aChnZXQ8Q2xpcFBhdGg+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgQ2xpcFBh
dGgoZ2V0PENsaXBQYXRoPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlv
bi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGdldDxDbGlw
VG9EcmF3aW5nQ29tbWFuZHM+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGdldDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7Ci0g
ICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdGb2N1
c1JpbmdQYXRoKGdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxv
Y2F0aW9uKSBEcmF3Rm9jdXNSaW5nUGF0aChnZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0
czogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBE
cmF3Rm9jdXNSaW5nUmVjdHMoZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSk7CisgICAgICAgIG5l
dyAoaXRlbUxvY2F0aW9uKSBEcmF3Rm9jdXNSaW5nUmVjdHMoZ2V0PERyYXdGb2N1c1JpbmdSZWN0
cz4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ds
eXBoczogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUp
KSBEcmF3R2x5cGhzKGdldDxEcmF3R2x5cGhzPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRp
b24pIERyYXdHbHlwaHMoZ2V0PERyYXdHbHlwaHM+KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTogewotICAgICAgICBuZXcgKGRlc3RpbmF0
aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3SW1hZ2UoZ2V0PERyYXdJbWFnZT4oKSk7
CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBEcmF3SW1hZ2UoZ2V0PERyYXdJbWFnZT4oKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkp
IERyYXdJbWFnZUJ1ZmZlcihnZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsKKyAgICAgICAgbmV3IChp
dGVtTG9jYXRpb24pIERyYXdJbWFnZUJ1ZmZlcihnZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0
OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERy
YXdMaW5lc0ZvclRleHQoZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkpOworICAgICAgICBuZXcgKGl0
ZW1Mb2NhdGlvbikgRHJhd0xpbmVzRm9yVGV4dChnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERy
YXdOYXRpdmVJbWFnZShnZXQ8RHJhd05hdGl2ZUltYWdlPigpKTsKKyAgICAgICAgbmV3IChpdGVt
TG9jYXRpb24pIERyYXdOYXRpdmVJbWFnZShnZXQ8RHJhd05hdGl2ZUltYWdlPigpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDogewotICAgICAg
ICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3UGF0aChnZXQ8
RHJhd1BhdGg+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgRHJhd1BhdGgoZ2V0PERy
YXdQYXRoPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRl
bVR5cGUpKSBEcmF3UGF0dGVybihnZXQ8RHJhd1BhdHRlcm4+KCkpOworICAgICAgICBuZXcgKGl0
ZW1Mb2NhdGlvbikgRHJhd1BhdHRlcm4oZ2V0PERyYXdQYXR0ZXJuPigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogewotICAgICAg
ICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3VGlsZWRJbWFn
ZShnZXQ8RHJhd1RpbGVkSW1hZ2U+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgRHJh
d1RpbGVkSW1hZ2UoZ2V0PERyYXdUaWxlZEltYWdlPigpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogewotICAgICAgICBu
ZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3VGlsZWRTY2FsZWRJ
bWFnZShnZXQ8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2Nh
dGlvbikgRHJhd1RpbGVkU2NhbGVkSW1hZ2UoZ2V0PERyYXdUaWxlZFNjYWxlZEltYWdlPigpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRl
ZFJlY3Q6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBl
KSkgRmlsbENvbXBvc2l0ZWRSZWN0KGdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOworICAgICAg
ICBuZXcgKGl0ZW1Mb2NhdGlvbikgRmlsbENvbXBvc2l0ZWRSZWN0KGdldDxGaWxsQ29tcG9zaXRl
ZFJlY3Q+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxQYXRoOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlw
ZSkpIEZpbGxQYXRoKGdldDxGaWxsUGF0aD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9u
KSBGaWxsUGF0aChnZXQ8RmlsbFBhdGg+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOiB7Ci0gICAgICAgIG5ldyAoZGVzdGlu
YXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxSZWN0V2l0aENvbG9yKGdldDxGaWxs
UmVjdFdpdGhDb2xvcj4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxsUmVjdFdp
dGhDb2xvcihnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OiB7Ci0gICAgICAgIG5l
dyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxSZWN0V2l0aEdyYWRp
ZW50KGdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0
aW9uKSBGaWxsUmVjdFdpdGhHcmFkaWVudChnZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVt
VHlwZSkpIEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShnZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDogewotICAgICAgICBuZXcgKGRl
c3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBGaWxsUm91bmRlZFJlY3QoZ2V0PEZp
bGxSb3VuZGVkUmVjdD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxsUm91bmRl
ZFJlY3QoZ2V0PEZpbGxSb3VuZGVkUmVjdD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRp
b24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFB1dEltYWdlRGF0YShnZXQ8UHV0SW1hZ2VEYXRh
PigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIFB1dEltYWdlRGF0YShnZXQ8UHV0SW1h
Z2VEYXRhPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRMaW5lRGFzaDogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRl
bVR5cGUpKSBTZXRMaW5lRGFzaChnZXQ8U2V0TGluZURhc2g+KCkpOworICAgICAgICBuZXcgKGl0
ZW1Mb2NhdGlvbikgU2V0TGluZURhc2goZ2V0PFNldExpbmVEYXNoPigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZTogewotICAgICAgICBuZXcg
KGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTZXRTdGF0ZShnZXQ8U2V0U3Rh
dGU+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgU2V0U3RhdGUoZ2V0PFNldFN0YXRl
PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQ
YXRoOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkp
IFN0cm9rZVBhdGgoZ2V0PFN0cm9rZVBhdGg+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlv
bikgU3Ryb2tlUGF0aChnZXQ8U3Ryb2tlUGF0aD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjogewotICAgICAgICBu
ZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBBcHBseURldmljZVNjYWxl
RmFjdG9yKGdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpKTsKKyAgICAgICAgbmV3IChpdGVt
TG9jYXRpb24pIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3I+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2lmIFVTRShDRykKICAgICBjYXNlIEl0
ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0
YSArIHNpemVvZihJdGVtVHlwZSkpIEFwcGx5RmlsbFBhdHRlcm4oZ2V0PEFwcGx5RmlsbFBhdHRl
cm4+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgQXBwbHlGaWxsUGF0dGVybihnZXQ8
QXBwbHlGaWxsUGF0dGVybj4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJ
dGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24u
ZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEFwcGx5U3Ryb2tlUGF0dGVybihnZXQ8QXBwbHlTdHJv
a2VQYXR0ZXJuPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIEFwcGx5U3Ryb2tlUGF0
dGVybihnZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAg
ICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQmVnaW5UcmFu
c3BhcmVuY3lMYXllcihnZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSk7CisgICAgICAgIG5l
dyAoaXRlbUxvY2F0aW9uKSBCZWdpblRyYW5zcGFyZW5jeUxheWVyKGdldDxCZWdpblRyYW5zcGFy
ZW5jeUxheWVyPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBl
OjpDbGVhclJlY3Q6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0
ZW1UeXBlKSkgQ2xlYXJSZWN0KGdldDxDbGVhclJlY3Q+KCkpOworICAgICAgICBuZXcgKGl0ZW1M
b2NhdGlvbikgQ2xlYXJSZWN0KGdldDxDbGVhclJlY3Q+KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OiB7Ci0gICAgICAgIG5ldyAoZGVz
dGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIENsZWFyU2hhZG93KGdldDxDbGVhclNo
YWRvdz4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBDbGVhclNoYWRvdyhnZXQ8Q2xl
YXJTaGFkb3c+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXA6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBl
KSkgQ2xpcChnZXQ8Q2xpcD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBDbGlwKGdl
dDxDbGlwPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlw
ZSkpIENsaXBPdXQoZ2V0PENsaXBPdXQ+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikg
Q2xpcE91dChnZXQ8Q2xpcE91dD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5k
YXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQ29uY2F0ZW5hdGVDVE0oZ2V0PENvbmNhdGVuYXRlQ1RN
PigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIENvbmNhdGVuYXRlQ1RNKGdldDxDb25j
YXRlbmF0ZUNUTT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9u
LmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGdldDxE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24p
IERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxp
cHNlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkp
IERyYXdFbGxpcHNlKGdldDxEcmF3RWxsaXBzZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0
aW9uKSBEcmF3RWxsaXBzZShnZXQ8RHJhd0VsbGlwc2U+KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB7Ci0gICAgICAgIG5ldyAoZGVzdGlu
YXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdMaW5lKGdldDxEcmF3TGluZT4oKSk7
CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBEcmF3TGluZShnZXQ8RHJhd0xpbmU+KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB7Ci0g
ICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdSZWN0
KGdldDxEcmF3UmVjdD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBEcmF3UmVjdChn
ZXQ8RHJhd1JlY3Q+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5
cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0
YSArIHNpemVvZihJdGVtVHlwZSkpIEVuZFRyYW5zcGFyZW5jeUxheWVyKGdldDxFbmRUcmFuc3Bh
cmVuY3lMYXllcj4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBFbmRUcmFuc3BhcmVu
Y3lMYXllcihnZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOiB7Ci0gICAgICAgIG5ldyAoZGVz
dGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxFbGxpcHNlKGdldDxGaWxsRWxs
aXBzZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxsRWxsaXBzZShnZXQ8Rmls
bEVsbGlwc2U+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2lmIEVOQUJMRShJTkxJTkVf
UEFUSF9EQVRBKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOiB7Ci0gICAgICAg
IG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxJbmxpbmVQYXRo
KGdldDxGaWxsSW5saW5lUGF0aD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxs
SW5saW5lUGF0aChnZXQ8RmlsbElubGluZVBhdGg+KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6IHsKLSAgICAgICAgbmV3IChk
ZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgRmlsbFJlY3QoZ2V0PEZpbGxSZWN0
PigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIEZpbGxSZWN0KGdldDxGaWxsUmVjdD4o
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250
ZXh0OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkp
IEZsdXNoQ29udGV4dChnZXQ8Rmx1c2hDb250ZXh0PigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9j
YXRpb24pIEZsdXNoQ29udGV4dChnZXQ8Rmx1c2hDb250ZXh0PigpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZFN3aXRjaFRvOiB7Ci0gICAg
ICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIE1ldGFDb21tYW5k
U3dpdGNoVG8oZ2V0PE1ldGFDb21tYW5kU3dpdGNoVG8+KCkpOworICAgICAgICBuZXcgKGl0ZW1M
b2NhdGlvbikgTWV0YUNvbW1hbmRTd2l0Y2hUbyhnZXQ8TWV0YUNvbW1hbmRTd2l0Y2hUbz4oKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZv
ck1lZGlhOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlw
ZSkpIFBhaW50RnJhbWVGb3JNZWRpYShnZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpKTsKKyAgICAg
ICAgbmV3IChpdGVtTG9jYXRpb24pIFBhaW50RnJhbWVGb3JNZWRpYShnZXQ8UGFpbnRGcmFtZUZv
ck1lZGlhPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpS
ZXN0b3JlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlw
ZSkpIFJlc3RvcmUoZ2V0PFJlc3RvcmU+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikg
UmVzdG9yZShnZXQ8UmVzdG9yZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Um90YXRlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNp
emVvZihJdGVtVHlwZSkpIFJvdGF0ZShnZXQ8Um90YXRlPigpKTsKKyAgICAgICAgbmV3IChpdGVt
TG9jYXRpb24pIFJvdGF0ZShnZXQ8Um90YXRlPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0
YSArIHNpemVvZihJdGVtVHlwZSkpIFNhdmUoZ2V0PFNhdmU+KCkpOworICAgICAgICBuZXcgKGl0
ZW1Mb2NhdGlvbikgU2F2ZShnZXQ8U2F2ZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgY2FzZSBJdGVtVHlwZTo6U2NhbGU6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRh
ICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2NhbGUoZ2V0PFNjYWxlPigpKTsKKyAgICAgICAgbmV3IChp
dGVtTG9jYXRpb24pIFNjYWxlKGdldDxTY2FsZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24u
ZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFNldENUTShnZXQ8U2V0Q1RNPigpKTsKKyAgICAgICAg
bmV3IChpdGVtTG9jYXRpb24pIFNldENUTShnZXQ8U2V0Q1RNPigpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6IHsKLSAgICAg
ICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0SW5saW5lRmls
bENvbG9yKGdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2Nh
dGlvbikgU2V0SW5saW5lRmlsbENvbG9yKGdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFk
aWVudDogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUp
KSBTZXRJbmxpbmVGaWxsR3JhZGllbnQoZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKSk7Cisg
ICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBTZXRJbmxpbmVGaWxsR3JhZGllbnQoZ2V0PFNldElu
bGluZUZpbGxHcmFkaWVudD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJ
dGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlv
bi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0SW5saW5lU3Ryb2tlQ29sb3IoZ2V0PFNldElu
bGluZVN0cm9rZUNvbG9yPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIFNldElubGlu
ZVN0cm9rZUNvbG9yKGdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDogewotICAgICAgICBuZXcg
KGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTZXRMaW5lQ2FwKGdldDxTZXRM
aW5lQ2FwPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIFNldExpbmVDYXAoZ2V0PFNl
dExpbmVDYXA+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVKb2luOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJ
dGVtVHlwZSkpIFNldExpbmVKb2luKGdldDxTZXRMaW5lSm9pbj4oKSk7CisgICAgICAgIG5ldyAo
aXRlbUxvY2F0aW9uKSBTZXRMaW5lSm9pbihnZXQ8U2V0TGluZUpvaW4+KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6IHsKLSAgICAg
ICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0TWl0ZXJMaW1p
dChnZXQ8U2V0TWl0ZXJMaW1pdD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBTZXRN
aXRlckxpbWl0KGdldDxTZXRNaXRlckxpbWl0PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgbmV3IChk
ZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0U3Ryb2tlVGhpY2tuZXNzKGdl
dDxTZXRTdHJva2VUaGlja25lc3M+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgU2V0
U3Ryb2tlVGhpY2tuZXNzKGdldDxTZXRTdHJva2VUaGlja25lc3M+KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6IHsKLSAgICAgICAg
bmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU3Ryb2tlRWxsaXBzZShn
ZXQ8U3Ryb2tlRWxsaXBzZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBTdHJva2VF
bGxpcHNlKGdldDxTdHJva2VFbGxpcHNlPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNp
ZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxp
bmVQYXRoOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlw
ZSkpIFN0cm9rZUlubGluZVBhdGgoZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkpOworICAgICAgICBu
ZXcgKGl0ZW1Mb2NhdGlvbikgU3Ryb2tlSW5saW5lUGF0aChnZXQ8U3Ryb2tlSW5saW5lUGF0aD4o
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpT
dHJva2VSZWN0OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVt
VHlwZSkpIFN0cm9rZVJlY3QoZ2V0PFN0cm9rZVJlY3Q+KCkpOworICAgICAgICBuZXcgKGl0ZW1M
b2NhdGlvbikgU3Ryb2tlUmVjdChnZXQ8U3Ryb2tlUmVjdD4oKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZTogewotICAgICAgICBuZXcgKGRl
c3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTdHJva2VMaW5lKGdldDxTdHJva2VM
aW5lPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIFN0cm9rZUxpbmUoZ2V0PFN0cm9r
ZUxpbmU+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlRy
YW5zbGF0ZTogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5
cGUpKSBUcmFuc2xhdGUoZ2V0PFRyYW5zbGF0ZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0
aW9uKSBUcmFuc2xhdGUoZ2V0PFRyYW5zbGF0ZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgfQpAQCAtODgzLDcgKzg4NCw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6Y2xlYXIoKQogCiB2
b2lkIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJP
ZkJ5dGVzKQogewotICAgIGNvbnN0ZXhwciBhdXRvIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVtID0g
c2l6ZW9mKEl0ZW1UeXBlKSArIHNpemVvZihNZXRhQ29tbWFuZFN3aXRjaFRvKTsKKyAgICBhdXRv
IHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVz
KEl0ZW1UeXBlOjpNZXRhQ29tbWFuZFN3aXRjaFRvKTsKICAgICBpZiAobV93cml0dGVuTnVtYmVy
T2ZCeXRlcyArIG51bWJlck9mQnl0ZXMgKyBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA8PSBtX3dy
aXRhYmxlQnVmZmVyLmNhcGFjaXR5KQogICAgICAgICByZXR1cm47CiAKQEAgLTg5OSwxNiArOTAw
LDIzIEBAIHZvaWQgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90
IG51bWJlck9mQnl0ZXMpCiAgICAgbV93cml0YWJsZUJ1ZmZlciA9IFdURk1vdmUobmV4dEJ1ZmZl
cik7CiB9CiAKLXZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kRGF0YUFuZExlbmd0aChSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEsIHVpbnQ4X3QqIGxvY2F0aW9uKQordm9pZCBJdGVtQnVmZmVyOjphcHBl
bmRFbmNvZGVkRGF0YShJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiB7Ci0gICAgcmVpbnRlcnBy
ZXRfY2FzdDxzaXplX3QqPihsb2NhdGlvbilbMF0gPSBkYXRhLT5zaXplKCk7CisgICAgYXV0byBk
YXRhID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtKHRlbXBvcmFyeUl0ZW0pOworICAgIGlm
ICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkYXRhTGVuZ3RoID0gZGF0YS0+
c2l6ZSgpOworICAgIGF1dG8gcGFkZGluZyA9IChhbGlnbm9mKHVpbnQ2NF90KSAtIGRhdGFMZW5n
dGggJSBhbGlnbm9mKHVpbnQ2NF90KSkgJSBhbGlnbm9mKHVpbnQ2NF90KTsKKyAgICBhdXRvIGFk
ZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyBk
YXRhTGVuZ3RoICsgcGFkZGluZzsKKworICAgIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKGFk
ZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKIAotICAgIGF1dG8qIHN0YXJ0T2ZQYWRk
aW5nID0gbG9jYXRpb24gKyBzaXplb2Yoc2l6ZV90KTsKLSAgICBzaXplX3QgcGFkZGluZyA9IChh
bGlnbm9mKHVpbnQ2NF90KSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzdGFydE9mUGFk
ZGluZykgJSBhbGlnbm9mKHVpbnQ2NF90KSkgJSBhbGlnbm9mKHVpbnQ2NF90KTsKLSAgICBhdXRv
KiBzdGFydE9mRGF0YSA9IHN0YXJ0T2ZQYWRkaW5nICsgcGFkZGluZzsKLSAgICBtZW1jcHkoc3Rh
cnRPZkRhdGEsIGRhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIGRhdGEtPnNpemUoKSk7CisgICAgcmVp
bnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1fd3JpdHRl
bk51bWJlck9mQnl0ZXMpWzBdID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRlbXBvcmFyeUl0ZW0u
dHlwZSgpKTsKKyAgICByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV93cml0YWJsZUJ1ZmZl
ci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcylbMV0gPSBkYXRhTGVuZ3RoOworICAgIG1l
bWNweShtX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICsgMiAq
IHNpemVvZih1aW50NjRfdCksIGRhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIGRhdGFMZW5ndGgpOwog
Ci0gICAgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArPSBzaXplb2YoSXRlbVR5cGUpICsgc2l6ZW9m
KHNpemVfdCkgKyBwYWRkaW5nICsgZGF0YS0+c2l6ZSgpOworICAgIG1fd3JpdHRlbk51bWJlck9m
Qnl0ZXMgKz0gYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIERpc3BsYXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmgKaW5kZXggN2I0ODJlMGU4YjNhNDdlMDViMWM4MzZkNjZlM2RjNjcyOGNjZjRkNi4uMzM1MDI3
NjhjZGIwZGQ2MzM2OWVlM2ZjY2ZmOGFhZWZiOGEzMzk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtNTMsMTIgKzUzLDE1IEBAIHN0cnVjdCBJdGVtQnVm
ZmVySGFuZGxlIHsKIAogdXNpbmcgSXRlbUJ1ZmZlckhhbmRsZXMgPSBWZWN0b3I8SXRlbUJ1ZmZl
ckhhbmRsZSwgMj47CiAKLS8vIEFuIEl0ZW1IYW5kbGUgd3JhcHMgYSBwb2ludGVyIHRvIGFuIEl0
ZW1UeXBlLCBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSBhbiBpdGVtIG9mIHRoYXQgdHlwZS4KKy8v
IEFuIEl0ZW1IYW5kbGUgd3JhcHMgYSBwb2ludGVyIHRvIGFuIEl0ZW1UeXBlIGZvbGxvd2VkIGlt
bWVkaWF0ZWx5IGJ5IGFuIGl0ZW0gb2YgdGhhdCB0eXBlLgorLy8gRWFjaCBpdGVtIGhhbmRsZSBk
YXRhIHBvaW50ZXIgaXMgYWxpZ25lZCB0byA4IGJ5dGVzLCBhbmQgdGhlIGl0ZW0gaXRzZWxmIGlz
IGFsc28gYWxpZ25lZAorLy8gdG8gOCBieXRlcy4gVG8gZW5zdXJlIHRoaXMsIHRoZSBpdGVtIHR5
cGUgY29uc2lzdHMgb2YgOCBieXRlcyAoMSBieXRlIGZvciB0aGUgdHlwZSBhbmQgNworLy8gYnl0
ZXMgb2YgcGFkZGluZykuCiBzdHJ1Y3QgSXRlbUhhbmRsZSB7CiAgICAgdWludDhfdCogZGF0YSB7
IG51bGxwdHIgfTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgdm9p
ZCBkZXN0cm95KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXN0cm95KCk7CiAgICAgYm9v
bCBpc0RyYXdpbmdJdGVtKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6RGlzcGxheUxpc3Q6Omlz
RHJhd2luZ0l0ZW0odHlwZSgpKTsgfQogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuICEhKCp0aGlzKTsgfQpAQCAtNjgsMTQgKzcxLDEzIEBAIHN0cnVjdCBJdGVtSGFuZGxlIHsK
ICAgICBDU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIEl0ZW1UeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtVHlwZT4oZGF0YVswXSk7IH0K
LSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVvZihJdGVtVHlwZSkgKyBzaXpl
T2ZJdGVtSW5CeXRlcyh0eXBlKCkpOyB9CisgICAgSXRlbVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEl0ZW1UeXBlPihyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oZGF0
YSlbMF0pOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IFQ6Oml0ZW1UeXBlOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
VCYgZ2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpczxUPigpKTsKLSAgICAgICAg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PFQqPigmZGF0YVtzaXplb2YoSXRlbVR5cGUpXSk7Cisg
ICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxUKj4oJmRhdGFbc2l6ZW9mKHVpbnQ2NF90
KV0pOwogICAgIH0KIAogICAgIHZvaWQgY29weVRvKEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNv
bnN0OwpAQCAtMTM0LDMyICsxMzYsMjggQEAgcHVibGljOgogICAgIC8vIHdyaXRhYmxlIGJ1ZmZl
ciBoYW5kbGU7IGlmIHJlbWFpbmluZyBidWZmZXIgY2FwYWNpdHkgaXMgaW5zdWZmaWNpZW50IHRv
IHN0b3JlIHRoZSBpdGVtLCBhCiAgICAgLy8gbmV3IGJ1ZmZlciB3aWxsIGJlIGFsbG9jYXRlZCAo
ZWl0aGVyIGJ5IHRoZSBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCwgaWYgc2V0LCBvciBieSB0aGUg
aXRlbQogICAgIC8vIGJ1ZmZlciBpdHNlbGYgaWYgdGhlcmUgaXMgbm8gY2xpZW50KS4gSXRlbXMg
YXJlIHBsYWNlZCBiYWNrLXRvLWJhY2sgaW4gdGhlc2UgaXRlbSBidWZmZXJzLAotICAgIC8vIHdp
dGggYW4gSXRlbVR5cGUgc2VwYXJhdGluZyBlYWNoIGl0ZW0uCisgICAgLy8gd2l0aCBwYWRkaW5n
IGFmdGVyIGVhY2ggaXRlbSB0byBlbnN1cmUgdGhhdCBhbGwgaXRlbXMgYXJlIGFsaWduZWQgdG8g
OCBieXRlcy4KICAgICAvLwogICAgIC8vIElmIGEgd3JpdGluZyBjbGllbnQgaXMgcHJlc2VudCBh
bmQgcmVxdWlyZXMgY3VzdG9tIGVuY29kaW5nIGZvciB0aGUgZ2l2ZW4gaXRlbSB0eXBlIFQsIHRo
ZQogICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBT
aGFyZWRCdWZmZXIgY29udGFpbmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQogICAgIC8vIGl0ZW0u
IFRoaXMgZW5jb2RlZCBkYXRhIGlzIHRoZW4gYXBwZW5kZWQgdG8gdGhlIGl0ZW0gYnVmZmVyLCB3
aXRoIHBhZGRpbmcgdG8gZW5zdXJlIHRoYXQKLSAgICAvLyB0aGUgc3RhcnQgb2YgdGhpcyBkYXRh
IGlzIGFsaWduZWQgdG8gOCBieXRlcywgaWYgbmVjZXNzYXJ5LiBXaGVuIGNvbnN1bWluZyBlbmNv
ZGVkIGl0ZW0KLSAgICAvLyBkYXRhLCBhIGNvcnJlc3BvbmRpbmcgSXRlbUJ1ZmZlclJlYWRpbmdD
bGllbnQgd2lsbCBiZSByZXF1aXJlZCB0byBjb252ZXJ0IHRoaXMgZW5jb2RlZCBkYXRhCi0gICAg
Ly8gYmFjayBpbnRvIGFuIGl0ZW0gb2YgdHlwZSBULgorICAgIC8vIHRoZSBzdGFydCBhbmQgZW5k
IG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4g
Y29uc3VtaW5nIGVuY29kZWQKKyAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVt
QnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNv
ZGVkCisgICAgLy8gZGF0YSBiYWNrIGludG8gYW4gaXRlbSBvZiB0eXBlIFQuCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3Mp
CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxUPjo6dmFsdWUgfHwgIVQ6OmlzSW5saW5lSXRlbSk7Ci0gICAgICAgIGNvbnN0ZXhwciBh
dXRvIHNpemVPZlR5cGVBbmRJdGVtID0gc2l6ZW9mKEl0ZW1UeXBlKSArIHNpemVvZihUKTsKIAog
ICAgICAgICBpZiAoIVQ6OmlzSW5saW5lSXRlbSAmJiBtX3dyaXRpbmdDbGllbnQpIHsKLSAgICAg
ICAgICAgIHN0YXRpYyB1aW50OF90IGl0ZW1CdWZmZXJbc2l6ZU9mVHlwZUFuZEl0ZW1dOwotICAg
ICAgICAgICAgaXRlbUJ1ZmZlclswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBl
KTsKLSAgICAgICAgICAgIG5ldyAoaXRlbUJ1ZmZlciArIHNpemVvZihJdGVtVHlwZSkpIFQoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHNoYXJlZEJ1
ZmZlciA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbSh7IGl0ZW1CdWZmZXIgfSkpIHsKLSAg
ICAgICAgICAgICAgICBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaGFyZWRCdWZmZXItPnNp
emUoKSArIHNpemVvZihJdGVtVHlwZSkgKyBzaXplb2Yoc2l6ZV90KSArIGFsaWdub2YodWludDY0
X3QpKTsKLSAgICAgICAgICAgICAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVt
YmVyT2ZCeXRlc10gPSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjppdGVtVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kRGF0YUFuZExlbmd0aChzaGFyZWRCdWZmZXIucmVsZWFzZU5vbk51bGwo
KSwgbV93cml0YWJsZUJ1ZmZlci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIHNpemVv
ZihJdGVtVHlwZSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGljIHVpbnQ4X3Qg
dGVtcG9yYXJ5SXRlbUJ1ZmZlcltzaXplb2YodWludDY0X3QpICsgc2l6ZW9mKFQpXTsKKyAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPih0ZW1wb3JhcnlJdGVtQnVmZmVyKVsw
XSA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihUOjppdGVtVHlwZSk7CisgICAgICAgICAgICBuZXcg
KHRlbXBvcmFyeUl0ZW1CdWZmZXIgKyBzaXplb2YodWludDY0X3QpKSBUKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBhcHBlbmRFbmNvZGVkRGF0YSh7IHRlbXBvcmFy
eUl0ZW1CdWZmZXIgfSk7CisgICAgICAgICAgICBJdGVtSGFuZGxlIHsgdGVtcG9yYXJ5SXRlbUJ1
ZmZlciB9LmRlc3Ryb3koKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVPZlR5cGVBbmRJdGVtKTsKKyAgICAg
ICAgc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5
dGVzKFQ6Oml0ZW1UeXBlKSk7CiAKICAgICAgICAgaWYgKCFzdGQ6OmlzX3RyaXZpYWxseV9kZXN0
cnVjdGlibGU8VD46OnZhbHVlKQogICAgICAgICAgICAgbV9pdGVtc1RvRGVzdHJveUluQWxsb2Nh
dGVkQnVmZmVycy5hcHBlbmQoeyAmbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJl
ck9mQnl0ZXNdIH0pOwpAQCAtMTc1LDEzICsxNzMsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZv
ckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYpPiYm
KSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3dhcFdyaXRhYmxlQnVmZmVySWZO
ZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kRGF0YUFuZExlbmd0aChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1aW50OF90Kik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmRFbmNvZGVkRGF0YShJdGVtSGFuZGxlKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIHVuY2hlY2tlZEFwcGVuZChBcmdz
JiYuLi4gYXJncykKICAgICB7CiAgICAgICAgIGF1dG8qIHN0YXJ0T2ZJdGVtID0gJm1fd3JpdGFi
bGVCdWZmZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXTsKLSAgICAgICAgc3RhcnRPZkl0
ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjppdGVtVHlwZSk7Ci0gICAgICAgIG5ldyAo
c3RhcnRPZkl0ZW0gKyBzaXplb2YoSXRlbVR5cGUpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7Ci0gICAgICAgIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKz0gc2l6ZW9mKEl0ZW1UeXBl
KSArIHNpemVPZkl0ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKTsKKyAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx1aW50NjRfdCo+KHN0YXJ0T2ZJdGVtKVswXSA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihU
OjppdGVtVHlwZSk7CisgICAgICAgIG5ldyAoc3RhcnRPZkl0ZW0gKyBzaXplb2YodWludDY0X3Qp
KSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgIG1fd3JpdHRlbk51bWJl
ck9mQnl0ZXMgKz0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKTsK
ICAgICB9CiAKICAgICBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCogbV9yZWFkaW5nQ2xpZW50IHsg
bnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4
IGMyZGMwMjk5MGRlMjk5ZWM2MjFkYjM5MGY5NDlmZTEzOWUyNWQyYTEuLmJmYzZiMmNjZjM2MGU4
OTRkZmVmMTA1MGNkZGM1NmM1MTA5MmZjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLXNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlw
ZSB0eXBlKQorc3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQog
ewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CkBAIC0yNDQs
NiArMjQ0LDEyIEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVt
VHlwZSB0eXBlKQoreworICAgIGF1dG8gaXRlbVNpemUgPSBzaXplT2ZJdGVtSW5CeXRlcyh0eXBl
KTsKKyAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2NF90KSArIGl0ZW1TaXplICsgKChhbGlnbm9mKHVp
bnQ2NF90KSAtIGl0ZW1TaXplICUgYWxpZ25vZih1aW50NjRfdCkpICUgYWxpZ25vZih1aW50NjRf
dCkpOworfQorCiBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggMDIz
OTY1YTA2OTJkMTZhYzQ3Njc4OTE5OTNlNzc3MjMyYjY2ZmQ2Ni4uNzhjODE3ZDBlYTE0NDRiODY5
Y2EyNzhhMzIyYmE3OGVjMzQ4NTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oCkBAIC05OCw3ICs5OCw3IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsK
ICAgICBBcHBseURldmljZVNjYWxlRmFjdG9yLAogfTsKIAotV0VCQ09SRV9FWFBPUlQgc2l6ZV90
IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlKTsKK1dFQkNPUkVfRVhQT1JUIHNpemVfdCBwYWRk
ZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRlbVR5cGUpOwogV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc0lubGluZUl0ZW0oSXRlbVR5cGUpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0RyYXdpbmdJ
dGVtKEl0ZW1UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggM2QwMmViNDg2ZWVjM2Rm
MTlhMmE3NmIwOTY1OThjYmI5Njc4YTFmZS4uN2FjOTYyMDEwM2U1N2MwN2JiMmVlZTMzZWJlZmIy
YzQ1ZjAwN2RkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC04NCw3ICs4NCw5IEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5f
VU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pCiAgICAgewogICAgICAgICBpZiAoYXV0
byBpdGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVTaW5nbGVPYmplY3Q8VD4oZGF0YSwgbGVuZ3Ro
KSkgewotICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZihXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGUpKSBUKFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBXZWJLaXQyIHNob3VsZCBub3QgbmVlZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDgg
Ynl0ZXMgYXQgdGhlIGhhbmRsZSBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSB0eXBlLgorICAgICAgICAg
ICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0
aGluIGRpc3BsYXkgbGlzdCBjb2RlIGluIFdlYkNvcmUuCisgICAgICAgICAgICBuZXcgKGhhbmRs
ZUxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAg
ICAgICByZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAzYzQxMjIxYWVlMjM5NTY1NmQ1MGM2MjU5YzA5MmJhMDg2MWQ5ODQ5Li4y
NWQ1YmUzMjI3M2QyZDA0ODBmNGU1NmE4YjYzZTYyOWY3YmYxYWI1IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAt
MTEtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
UkVHUkVTU0lPTiAocjI2OTUyNSk6IE1hbnkgbGF5b3V0IHRlc3RzIGNyYXNoIHdoZW4gcnVuIHVu
ZGVyIEFTYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxODczMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMTEtMDkgIEFha2FzaCBKYWluICA8
YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBEbyBu
b3QgcHJpbnQgbWFzdGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBidWlsZCBzdGVwcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwCmluZGV4IDQxNzAyNjQyYWRiNGNjMzYyZDU0OTdlODNkODg0ODI0NmJhNjg5YjEuLmM3
NjJhMTliOGNlZWE5MzhiYzVlZGY4MjRmYTVlOTMxMGNmMDEyZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6U3Ryb2tl
UGF0aCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0aCwgc2l6ZW9mKHNpemVfdCkp
OwotICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZihJdGVtVHlwZSkpIFN0
cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0p
OworICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRfdCkpIFN0
cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0p
OwogICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19OwogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413715</attachid>
            <date>2020-11-10 10:59:07 -0800</date>
            <delta_ts>2020-11-10 11:10:34 -0800</delta_ts>
            <desc>roundUpToMultipleOf + remove some reinterpret_casts</desc>
            <filename>bug-218733-20201110105906.patch</filename>
            <type>text/plain</type>
            <size>31777</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzNDM2Yjk5MmEyNDk2
NGIxNzIxZmE4ODFlYjAxYWM4ODI4MDFiMi4uYTc4MzgxMTJiZDRkYzE0MzZkMTEwNzAyOGQ4NTYx
NzYzOTg2N2JjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTExLTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjk1MjUpOiBNYW55IGxheW91dCB0ZXN0cyBjcmFzaCB3aGVuIHJ1biB1bmRlciBBU2FuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHJ1bm5p
bmcgdGVzdHMgdW5kZXIgQVNhbiwgbWFueSBsYXlvdXQgdGVzdHMgY3Jhc2ggdW5kZXIgYFZlY3Rv
cjo6YXNhbkJ1ZmZlclNpemVXaWxsQ2hhbmdlVG9gLCB3aGljaCAod2hlbgorICAgICAgICBBU2Fu
IGlzIGVuYWJsZWQpIHdpbGwgY3Jhc2ggd2hlbiB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciBpcyBt
aXNhbGlnbmVkIHRvIDggYnl0ZXMuIFdoZW4gYXBwZW5kaW5nIGBEcmF3R2x5cGhgCisgICAgICAg
IGRpc3BsYXkgbGlzdCBpdGVtcyB0aGF0IGhhdmUgVmVjdG9ycyB3aXRoIGlubGluZSBjYXBhY2l0
aWVzLCB0aGUgc3RhcnQgb2YgYSBidWZmZXIgbWF5IGVuZCB1cCBhdCBhbiBvZmZzZXQgdGhhdAor
ICAgICAgICBpcyBub3QgYWxpZ25lZCB0byA4IGJ5dGVzLCBzaW5jZSBhbGwgZGlzcGxheSBsaXN0
IGl0ZW1zIGFyZSBjdXJyZW50bHkgbGFpZCBvdXQgYmFjay10by1iYWNrLCB3aXRoIGEgc2luZ2xl
IGJ5dGUKKyAgICAgICAgdG8gcmVwcmVzZW50IHRoZSBpdGVtIHR5cGUgYW5kIGVhY2ggaXRlbSdz
IGRhdGEgZm9sbG93aW5nIGltbWVkaWF0ZWx5IHRoZXJlYWZ0ZXIuCisKKyAgICAgICAgVG8gYWRk
cmVzcyB0aGlzLCBhZGp1c3QgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVyIGxvZ2ljIHRvIG1ha2Ug
c3VyZSB0aGF0IGZvciBlYWNoIGl0ZW0gdGhhdCBpcyBhcHBlbmRlZCB0byBhbgorICAgICAgICBp
dGVtIGJ1ZmZlciwgYm90aCB0aGUgaXRlbSB0eXBlIGFuZCB0aGUgaXRlbSBpdHNlbGYgYXJlIGFs
aWduZWQgdG8gOCBieXRlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6Y29weVRvIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZm
ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6
YXBwZW5kRW5jb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXI6OmFwcGVuZERhdGFBbmRMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjp0eXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpnZXQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcjo6dW5jaGVja2VkQXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpzaXplIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6c2l6ZU9mSXRlbUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnBhZGRlZFNpemVPZlR5cGVBbmRJ
dGVtSW5CeXRlcyk6CisKKyAgICAgICAgQ2hhbmdlIGBzaXplT2ZJdGVtSW5CeXRlc2AgdG8gYHBh
ZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlc2AsIGFuZCBtYWtlIGl0IGluY2x1ZGUgYm90aCB0
aGUgcGFkZGVkIHNpemUgb2YgYW4KKyAgICAgICAgaXRlbSB0eXBlICg4IGJ5dGVzKSwgdGhlIHNp
emUgb2YgdGhlIGl0ZW0gaXRzZWxmLCBhbmQgdGhlIG1pbmltdW0gYW1vdW50IG9mIHBhZGRpbmcg
YWZ0ZXIgdGhlIGl0ZW0gdGhhdCdzCisgICAgICAgIHJlcXVpcmVkIHRvIG1ha2Ugc3VyZSB0aGUg
dG90YWwgc2l6ZSBpcyBhbGlnbmVkIHRvIDggYnl0ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oOgorCiAyMDIwLTExLTEw
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRl
Z3JhdGlvbl0gQWxsb3cgb2JqZWN0LWZpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMjM4OTEzZjQ5MGVjMGU3OWI1
ZWNjNjQ2YmM0YWY4NzBhZGNjMDg2Li41MDIwZWVkYjUyNzFlYjE3YmQ2YTA5MzM1YzUwNDFlODU1
Mjk0NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTExLTA5ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjk1
MjUpOiBNYW55IGxheW91dCB0ZXN0cyBjcmFzaCB3aGVuIHJ1biB1bmRlciBBU2FuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg3MzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb25zdHJ1Y3QgdGhlIGl0
ZW0gOCBieXRlcyBhZnRlciB0aGUgaGFuZGxlIG9mZnNldCwgaW5zdGVhZCBvZiAxIGJ5dGUgKGFs
c28sIGFkZCBhIEZJWE1FIGluZGljYXRpbmcgdGhhdCB3ZSBzb21lCisgICAgICAgIHdheSBvZiBh
Y2hpZXZpbmcgdGhpcyB3aXRob3V0IHJlcXVpcmluZyBXZWJLaXQyIHRvIGJlIGF3YXJlIG9mIGFu
IGl0ZW0gaGFuZGxlJ3MgbWVtb3J5IGxheW91dCkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlQW5kQ3JlYXRlKToKKwogMjAyMC0xMS0xMCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUSzRdIFdl
YlZpZXcgaXMgZmxpcHBlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggMWUzMDZkNjYz
YmI0NjAxYzkzOWQ4ZGM2YjBkYWE2OGQ1ZDQ4MDhlNS4uZjUwNmRkZjQ5NTI3NWRiYjVjMDkwMjhj
NjFhNDkzN2E5Yzg3NTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0zNDAsMTMg
KzM0MCwxMiBAQCB2b2lkIERpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0o
KQogICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBXVEY6Om51bGxvcHQ7CiAKICAgICBhdXRvKiBj
bGllbnQgPSBpdGVtcy5tX3JlYWRpbmdDbGllbnQ7Ci0gICAgYXV0byBzaXplT2ZUeXBlQW5kSXRl
bSA9IHNpemVPZkl0ZW1JbkJ5dGVzKGl0ZW1UeXBlKSArIHNpemVvZihJdGVtVHlwZSk7Ci0gICAg
bV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IHNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVk
QnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHNpemVPZlR5cGVBbmRJdGVtKSk7Cisg
ICAgYXV0byBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVt
SW5CeXRlcyhpdGVtVHlwZSk7CisgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNp
emVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2Zp
eGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0
TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSk7CiAgICAgaWYgKCFpc0lubGluZUl0ZW0o
aXRlbVR5cGUpICYmIGNsaWVudCkgewotICAgICAgICBhdXRvIHNpemVPZkRhdGEgPSByZWludGVy
cHJldF9jYXN0PHNpemVfdCo+KG1fY3Vyc29yICsgc2l6ZW9mKEl0ZW1UeXBlKSlbMF07Ci0gICAg
ICAgIGF1dG8qIHN0YXJ0T2ZQYWRkaW5nID0gbV9jdXJzb3IgKyBzaXplb2YoSXRlbVR5cGUpICsg
c2l6ZW9mKHNpemVfdCk7Ci0gICAgICAgIHNpemVfdCBwYWRkaW5nID0gKGFsaWdub2YodWludDY0
X3QpIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0YXJ0T2ZQYWRkaW5nKSAlIGFsaWdu
b2YodWludDY0X3QpKSAlIGFsaWdub2YodWludDY0X3QpOwotICAgICAgICBhdXRvIGRlY29kZWRJ
dGVtSGFuZGxlID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZQYWRkaW5nICsgcGFkZGluZywg
c2l6ZU9mRGF0YSwgaXRlbVR5cGUsIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOworICAgICAgICBh
dXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFd
OworICAgICAgICBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50
NjRfdCk7CisgICAgICAgIGF1dG8gZGVjb2RlZEl0ZW1IYW5kbGUgPSBjbGllbnQtPmRlY29kZUl0
ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBlLCBtX2N1cnJlbnRCdWZmZXJGb3JJ
dGVtKTsKICAgICAgICAgaWYgKCFkZWNvZGVkSXRlbUhhbmRsZSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IEluc3RlYWQgb2YgY3Jhc2hpbmcsIHRoaXMgbmVlZHMgdG8gZmFpbCBncmFjZWZ1bGx5
IGFuZCBpbmZvcm0gdGhlIGNhbGxlci4KICAgICAgICAgICAgIC8vIEZvciB0aGUgdGltZSBiZWlu
ZywgdGhpcyBhc3NlcnRpb24gbWFrZXMgYnVncyBpbiBpdGVtIGJ1ZmZlciBlbmNvZGluZyBsb2dp
YyBlYXNpZXIKQEAgLTM1NSwxMCArMzU0LDEwIEBAIHZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9y
Ojp1cGRhdGVDdXJyZW50SXRlbSgpCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9CiAgICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW1bMF0gPSBz
dGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7Ci0gICAgICAgIG1fY3VycmVudEl0ZW1TaXpl
SW5CdWZmZXIgPSBzaXplb2YoSXRlbVR5cGUpICsgc2l6ZW9mKHNpemVfdCkgKyBwYWRkaW5nICsg
c2l6ZU9mRGF0YTsKKyAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IDIgKiBzaXpl
b2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2NF90KSwgZGF0
YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSXRlbUhhbmRsZSB7IG1fY3Vyc29yIH0u
Y29weVRvKHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9KTsKLSAgICAgICAgbV9jdXJyZW50SXRl
bVNpemVJbkJ1ZmZlciA9IHNpemVPZlR5cGVBbmRJdGVtOworICAgICAgICBtX2N1cnJlbnRJdGVt
U2l6ZUluQnVmZmVyID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW07CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGQ3ZTMwN2EwOTFi
ZDczYzk2ZDFlYWU2MzNmN2EzNmVhMmFhN2JjMzguLjRlNmUxNjdiMGRlZDNjYmFhYWViNGNkZWE1
N2EzZjYwMDhlM2YzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCkBAIC01NTUsMjU1ICs1NTUsMjU2IEBAIHZvaWQgSXRlbUhhbmRsZTo6Y29weVRvKEl0
ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiB7CiAgICAgYXV0byBpdGVtVHlwZSA9IHR5cGUo
KTsKICAgICBkZXN0aW5hdGlvbi5kYXRhWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5
cGUpOworICAgIGF1dG8gaXRlbUxvY2F0aW9uID0gZGVzdGluYXRpb24uZGF0YSArIHNpemVvZih1
aW50NjRfdCk7CiAgICAgc3dpdGNoIChpdGVtVHlwZSkgewogICAgIGNhc2UgSXRlbVR5cGU6OkNs
aXBPdXRUb1BhdGg6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0
ZW1UeXBlKSkgQ2xpcE91dFRvUGF0aChnZXQ8Q2xpcE91dFRvUGF0aD4oKSk7CisgICAgICAgIG5l
dyAoaXRlbUxvY2F0aW9uKSBDbGlwT3V0VG9QYXRoKGdldDxDbGlwT3V0VG9QYXRoPigpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDogewotICAg
ICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBDbGlwUGF0aChn
ZXQ8Q2xpcFBhdGg+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgQ2xpcFBhdGgoZ2V0
PENsaXBQYXRoPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRh
ICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGdldDxDbGlwVG9EcmF3
aW5nQ29tbWFuZHM+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGdldDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7Ci0gICAgICAg
IG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdGb2N1c1JpbmdQ
YXRoKGdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9u
KSBEcmF3Rm9jdXNSaW5nUGF0aChnZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czogewot
ICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3Rm9j
dXNSaW5nUmVjdHMoZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSk7CisgICAgICAgIG5ldyAoaXRl
bUxvY2F0aW9uKSBEcmF3Rm9jdXNSaW5nUmVjdHMoZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczog
ewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3
R2x5cGhzKGdldDxEcmF3R2x5cGhzPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIERy
YXdHbHlwaHMoZ2V0PERyYXdHbHlwaHM+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRh
dGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3SW1hZ2UoZ2V0PERyYXdJbWFnZT4oKSk7CisgICAg
ICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBEcmF3SW1hZ2UoZ2V0PERyYXdJbWFnZT4oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB7
Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdJ
bWFnZUJ1ZmZlcihnZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9j
YXRpb24pIERyYXdJbWFnZUJ1ZmZlcihnZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OiB7Ci0g
ICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdMaW5l
c0ZvclRleHQoZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2Nh
dGlvbikgRHJhd0xpbmVzRm9yVGV4dChnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB7Ci0g
ICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdOYXRp
dmVJbWFnZShnZXQ8RHJhd05hdGl2ZUltYWdlPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRp
b24pIERyYXdOYXRpdmVJbWFnZShnZXQ8RHJhd05hdGl2ZUltYWdlPigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDogewotICAgICAgICBuZXcg
KGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3UGF0aChnZXQ8RHJhd1Bh
dGg+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgRHJhd1BhdGgoZ2V0PERyYXdQYXRo
PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0
dGVybjogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUp
KSBEcmF3UGF0dGVybihnZXQ8RHJhd1BhdHRlcm4+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2Nh
dGlvbikgRHJhd1BhdHRlcm4oZ2V0PERyYXdQYXR0ZXJuPigpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogewotICAgICAgICBuZXcg
KGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3VGlsZWRJbWFnZShnZXQ8
RHJhd1RpbGVkSW1hZ2U+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgRHJhd1RpbGVk
SW1hZ2UoZ2V0PERyYXdUaWxlZEltYWdlPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogewotICAgICAgICBuZXcgKGRl
c3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3VGlsZWRTY2FsZWRJbWFnZShn
ZXQ8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikg
RHJhd1RpbGVkU2NhbGVkSW1hZ2UoZ2V0PERyYXdUaWxlZFNjYWxlZEltYWdlPigpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6
IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgRmls
bENvbXBvc2l0ZWRSZWN0KGdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOworICAgICAgICBuZXcg
KGl0ZW1Mb2NhdGlvbikgRmlsbENvbXBvc2l0ZWRSZWN0KGdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRo
OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZp
bGxQYXRoKGdldDxGaWxsUGF0aD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxs
UGF0aChnZXQ8RmlsbFBhdGg+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24u
ZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxSZWN0V2l0aENvbG9yKGdldDxGaWxsUmVjdFdp
dGhDb2xvcj4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxsUmVjdFdpdGhDb2xv
cihnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OiB7Ci0gICAgICAgIG5ldyAoZGVz
dGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxSZWN0V2l0aEdyYWRpZW50KGdl
dDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBG
aWxsUmVjdFdpdGhHcmFkaWVudChnZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkp
IEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7
CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShnZXQ8
RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDogewotICAgICAgICBuZXcgKGRlc3RpbmF0
aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBGaWxsUm91bmRlZFJlY3QoZ2V0PEZpbGxSb3Vu
ZGVkUmVjdD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxsUm91bmRlZFJlY3Qo
Z2V0PEZpbGxSb3VuZGVkUmVjdD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0
YSArIHNpemVvZihJdGVtVHlwZSkpIFB1dEltYWdlRGF0YShnZXQ8UHV0SW1hZ2VEYXRhPigpKTsK
KyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIFB1dEltYWdlRGF0YShnZXQ8UHV0SW1hZ2VEYXRh
PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5l
RGFzaDogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUp
KSBTZXRMaW5lRGFzaChnZXQ8U2V0TGluZURhc2g+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2Nh
dGlvbikgU2V0TGluZURhc2goZ2V0PFNldExpbmVEYXNoPigpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZTogewotICAgICAgICBuZXcgKGRlc3Rp
bmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTZXRTdGF0ZShnZXQ8U2V0U3RhdGU+KCkp
OworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgU2V0U3RhdGUoZ2V0PFNldFN0YXRlPigpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOiB7
Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFN0cm9r
ZVBhdGgoZ2V0PFN0cm9rZVBhdGg+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgU3Ry
b2tlUGF0aChnZXQ8U3Ryb2tlUGF0aD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjogewotICAgICAgICBuZXcgKGRl
c3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBBcHBseURldmljZVNjYWxlRmFjdG9y
KGdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRp
b24pIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2lmIFVTRShDRykKICAgICBjYXNlIEl0ZW1UeXBl
OjpBcHBseUZpbGxQYXR0ZXJuOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNp
emVvZihJdGVtVHlwZSkpIEFwcGx5RmlsbFBhdHRlcm4oZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkp
OworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgQXBwbHlGaWxsUGF0dGVybihnZXQ8QXBwbHlG
aWxsUGF0dGVybj4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlw
ZTo6QXBwbHlTdHJva2VQYXR0ZXJuOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSAr
IHNpemVvZihJdGVtVHlwZSkpIEFwcGx5U3Ryb2tlUGF0dGVybihnZXQ8QXBwbHlTdHJva2VQYXR0
ZXJuPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIEFwcGx5U3Ryb2tlUGF0dGVybihn
ZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAgICAgICAg
bmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihnZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSk7CisgICAgICAgIG5ldyAoaXRl
bUxvY2F0aW9uKSBCZWdpblRyYW5zcGFyZW5jeUxheWVyKGdldDxCZWdpblRyYW5zcGFyZW5jeUxh
eWVyPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpDbGVh
clJlY3Q6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBl
KSkgQ2xlYXJSZWN0KGdldDxDbGVhclJlY3Q+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlv
bikgQ2xlYXJSZWN0KGdldDxDbGVhclJlY3Q+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRp
b24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIENsZWFyU2hhZG93KGdldDxDbGVhclNoYWRvdz4o
KSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBDbGVhclNoYWRvdyhnZXQ8Q2xlYXJTaGFk
b3c+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQ2xp
cChnZXQ8Q2xpcD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBDbGlwKGdldDxDbGlw
PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIENs
aXBPdXQoZ2V0PENsaXBPdXQ+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgQ2xpcE91
dChnZXQ8Q2xpcE91dD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVt
VHlwZTo6Q29uY2F0ZW5hdGVDVE06IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsg
c2l6ZW9mKEl0ZW1UeXBlKSkgQ29uY2F0ZW5hdGVDVE0oZ2V0PENvbmNhdGVuYXRlQ1RNPigpKTsK
KyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIENvbmNhdGVuYXRlQ1RNKGdldDxDb25jYXRlbmF0
ZUNUTT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcjogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEg
KyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGdldDxEcmF3RG90
c0ZvckRvY3VtZW50TWFya2VyPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIERyYXdE
b3RzRm9yRG9jdW1lbnRNYXJrZXIoZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOiB7
Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdF
bGxpcHNlKGdldDxEcmF3RWxsaXBzZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBE
cmF3RWxsaXBzZShnZXQ8RHJhd0VsbGlwc2U+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24u
ZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdMaW5lKGdldDxEcmF3TGluZT4oKSk7CisgICAg
ICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBEcmF3TGluZShnZXQ8RHJhd0xpbmU+KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB7Ci0gICAgICAg
IG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdSZWN0KGdldDxE
cmF3UmVjdD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBEcmF3UmVjdChnZXQ8RHJh
d1JlY3Q+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkVu
ZFRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNp
emVvZihJdGVtVHlwZSkpIEVuZFRyYW5zcGFyZW5jeUxheWVyKGdldDxFbmRUcmFuc3BhcmVuY3lM
YXllcj4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBFbmRUcmFuc3BhcmVuY3lMYXll
cihnZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRp
b24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxFbGxpcHNlKGdldDxGaWxsRWxsaXBzZT4o
KSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxsRWxsaXBzZShnZXQ8RmlsbEVsbGlw
c2U+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9E
QVRBKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOiB7Ci0gICAgICAgIG5ldyAo
ZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxJbmxpbmVQYXRoKGdldDxG
aWxsSW5saW5lUGF0aD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBGaWxsSW5saW5l
UGF0aChnZXQ8RmlsbElubGluZVBhdGg+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6IHsKLSAgICAgICAgbmV3IChkZXN0aW5h
dGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgRmlsbFJlY3QoZ2V0PEZpbGxSZWN0PigpKTsK
KyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIEZpbGxSZWN0KGdldDxGaWxsUmVjdD4oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OiB7
Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZsdXNo
Q29udGV4dChnZXQ8Rmx1c2hDb250ZXh0PigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24p
IEZsdXNoQ29udGV4dChnZXQ8Rmx1c2hDb250ZXh0PigpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZFN3aXRjaFRvOiB7Ci0gICAgICAgIG5l
dyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIE1ldGFDb21tYW5kU3dpdGNo
VG8oZ2V0PE1ldGFDb21tYW5kU3dpdGNoVG8+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlv
bikgTWV0YUNvbW1hbmRTd2l0Y2hUbyhnZXQ8TWV0YUNvbW1hbmRTd2l0Y2hUbz4oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlh
OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFBh
aW50RnJhbWVGb3JNZWRpYShnZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpKTsKKyAgICAgICAgbmV3
IChpdGVtTG9jYXRpb24pIFBhaW50RnJhbWVGb3JNZWRpYShnZXQ8UGFpbnRGcmFtZUZvck1lZGlh
PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3Jl
OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFJl
c3RvcmUoZ2V0PFJlc3RvcmU+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgUmVzdG9y
ZShnZXQ8UmVzdG9yZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVt
VHlwZTo6Um90YXRlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJ
dGVtVHlwZSkpIFJvdGF0ZShnZXQ8Um90YXRlPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRp
b24pIFJvdGF0ZShnZXQ8Um90YXRlPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBj
YXNlIEl0ZW1UeXBlOjpTYXZlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNp
emVvZihJdGVtVHlwZSkpIFNhdmUoZ2V0PFNhdmU+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2Nh
dGlvbikgU2F2ZShnZXQ8U2F2ZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6U2NhbGU6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6
ZW9mKEl0ZW1UeXBlKSkgU2NhbGUoZ2V0PFNjYWxlPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9j
YXRpb24pIFNjYWxlKGdldDxTY2FsZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y2FzZSBJdGVtVHlwZTo6U2V0Q1RNOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSAr
IHNpemVvZihJdGVtVHlwZSkpIFNldENUTShnZXQ8U2V0Q1RNPigpKTsKKyAgICAgICAgbmV3IChp
dGVtTG9jYXRpb24pIFNldENUTShnZXQ8U2V0Q1RNPigpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6IHsKLSAgICAgICAgbmV3
IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0SW5saW5lRmlsbENvbG9y
KGdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikg
U2V0SW5saW5lRmlsbENvbG9yKGdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDog
ewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTZXRJ
bmxpbmVGaWxsR3JhZGllbnQoZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKSk7CisgICAgICAg
IG5ldyAoaXRlbUxvY2F0aW9uKSBTZXRJbmxpbmVGaWxsR3JhZGllbnQoZ2V0PFNldElubGluZUZp
bGxHcmFkaWVudD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlw
ZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRh
ICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0SW5saW5lU3Ryb2tlQ29sb3IoZ2V0PFNldElubGluZVN0
cm9rZUNvbG9yPigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIFNldElubGluZVN0cm9r
ZUNvbG9yKGdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDogewotICAgICAgICBuZXcgKGRlc3Rp
bmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTZXRMaW5lQ2FwKGdldDxTZXRMaW5lQ2Fw
PigpKTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIFNldExpbmVDYXAoZ2V0PFNldExpbmVD
YXA+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVKb2luOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlw
ZSkpIFNldExpbmVKb2luKGdldDxTZXRMaW5lSm9pbj4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxv
Y2F0aW9uKSBTZXRMaW5lSm9pbihnZXQ8U2V0TGluZUpvaW4+KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6IHsKLSAgICAgICAgbmV3
IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0TWl0ZXJMaW1pdChnZXQ8
U2V0TWl0ZXJMaW1pdD4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBTZXRNaXRlckxp
bWl0KGdldDxTZXRNaXRlckxpbWl0PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgbmV3IChkZXN0aW5h
dGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0U3Ryb2tlVGhpY2tuZXNzKGdldDxTZXRT
dHJva2VUaGlja25lc3M+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlvbikgU2V0U3Ryb2tl
VGhpY2tuZXNzKGdldDxTZXRTdHJva2VUaGlja25lc3M+KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6IHsKLSAgICAgICAgbmV3IChk
ZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU3Ryb2tlRWxsaXBzZShnZXQ8U3Ry
b2tlRWxsaXBzZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBTdHJva2VFbGxpcHNl
KGdldDxTdHJva2VFbGxpcHNlPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNpZiBFTkFC
TEUoSU5MSU5FX1BBVEhfREFUQSkKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRo
OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFN0
cm9rZUlubGluZVBhdGgoZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkpOworICAgICAgICBuZXcgKGl0
ZW1Mb2NhdGlvbikgU3Ryb2tlSW5saW5lUGF0aChnZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VS
ZWN0OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkp
IFN0cm9rZVJlY3QoZ2V0PFN0cm9rZVJlY3Q+KCkpOworICAgICAgICBuZXcgKGl0ZW1Mb2NhdGlv
bikgU3Ryb2tlUmVjdChnZXQ8U3Ryb2tlUmVjdD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZTogewotICAgICAgICBuZXcgKGRlc3RpbmF0
aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTdHJva2VMaW5lKGdldDxTdHJva2VMaW5lPigp
KTsKKyAgICAgICAgbmV3IChpdGVtTG9jYXRpb24pIFN0cm9rZUxpbmUoZ2V0PFN0cm9rZUxpbmU+
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0
ZTogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBU
cmFuc2xhdGUoZ2V0PFRyYW5zbGF0ZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbUxvY2F0aW9uKSBU
cmFuc2xhdGUoZ2V0PFRyYW5zbGF0ZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
fQpAQCAtODgzLDcgKzg4NCw3IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6Y2xlYXIoKQogCiB2b2lkIEl0
ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVz
KQogewotICAgIGNvbnN0ZXhwciBhdXRvIHNpemVGb3JCdWZmZXJTd2l0Y2hJdGVtID0gc2l6ZW9m
KEl0ZW1UeXBlKSArIHNpemVvZihNZXRhQ29tbWFuZFN3aXRjaFRvKTsKKyAgICBhdXRvIHNpemVG
b3JCdWZmZXJTd2l0Y2hJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1U
eXBlOjpNZXRhQ29tbWFuZFN3aXRjaFRvKTsKICAgICBpZiAobV93cml0dGVuTnVtYmVyT2ZCeXRl
cyArIG51bWJlck9mQnl0ZXMgKyBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA8PSBtX3dyaXRhYmxl
QnVmZmVyLmNhcGFjaXR5KQogICAgICAgICByZXR1cm47CiAKQEAgLTg5OSwxNiArOTAwLDIyIEBA
IHZvaWQgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJl
ck9mQnl0ZXMpCiAgICAgbV93cml0YWJsZUJ1ZmZlciA9IFdURk1vdmUobmV4dEJ1ZmZlcik7CiB9
CiAKLXZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kRGF0YUFuZExlbmd0aChSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEsIHVpbnQ4X3QqIGxvY2F0aW9uKQordm9pZCBJdGVtQnVmZmVyOjphcHBlbmRFbmNv
ZGVkRGF0YShJdGVtSGFuZGxlIHRlbXBvcmFyeUl0ZW0pCiB7Ci0gICAgcmVpbnRlcnByZXRfY2Fz
dDxzaXplX3QqPihsb2NhdGlvbilbMF0gPSBkYXRhLT5zaXplKCk7CisgICAgYXV0byBkYXRhID0g
bV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtKHRlbXBvcmFyeUl0ZW0pOworICAgIGlmICghZGF0
YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkYXRhTGVuZ3RoID0gZGF0YS0+c2l6ZSgp
OworICAgIGF1dG8gYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0gPSAyICogc2l6ZW9m
KHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFM
ZW5ndGgpOworCisgICAgc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoYWRkaXRpb25hbENhcGFj
aXR5Rm9yRW5jb2RlZEl0ZW0pOwogCi0gICAgYXV0byogc3RhcnRPZlBhZGRpbmcgPSBsb2NhdGlv
biArIHNpemVvZihzaXplX3QpOwotICAgIHNpemVfdCBwYWRkaW5nID0gKGFsaWdub2YodWludDY0
X3QpIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0YXJ0T2ZQYWRkaW5nKSAlIGFsaWdu
b2YodWludDY0X3QpKSAlIGFsaWdub2YodWludDY0X3QpOwotICAgIGF1dG8qIHN0YXJ0T2ZEYXRh
ID0gc3RhcnRPZlBhZGRpbmcgKyBwYWRkaW5nOwotICAgIG1lbWNweShzdGFydE9mRGF0YSwgZGF0
YS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBtX3dyaXRhYmxlQnVmZmVy
LmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZW1w
b3JhcnlJdGVtLnR5cGUoKSk7CisgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KG1fd3Jp
dGFibGVCdWZmZXIuZGF0YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMpWzFdID0gZGF0YUxlbmd0
aDsKKyAgICBtZW1jcHkobV93cml0YWJsZUJ1ZmZlci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZC
eXRlcyArIDIgKiBzaXplb2YodWludDY0X3QpLCBkYXRhLT5kYXRhQXNVSW50OFB0cigpLCBkYXRh
TGVuZ3RoKTsKIAotICAgIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKz0gc2l6ZW9mKEl0ZW1UeXBl
KSArIHNpemVvZihzaXplX3QpICsgcGFkZGluZyArIGRhdGEtPnNpemUoKTsKKyAgICBtX3dyaXR0
ZW5OdW1iZXJPZkJ5dGVzICs9IGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5oCmluZGV4IDdiNDgyZTBlOGIzYTQ3ZTA1YjFjODM2ZDY2ZTNkYzY3MjhjY2Y0
ZDYuLmMxMGNjM2U1MmEyMGFiNWVjMDJhNTYwNmNmYzg0OTMxZmYyMTI4NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTUzLDEyICs1MywxNSBAQCBzdHJ1
Y3QgSXRlbUJ1ZmZlckhhbmRsZSB7CiAKIHVzaW5nIEl0ZW1CdWZmZXJIYW5kbGVzID0gVmVjdG9y
PEl0ZW1CdWZmZXJIYW5kbGUsIDI+OwogCi0vLyBBbiBJdGVtSGFuZGxlIHdyYXBzIGEgcG9pbnRl
ciB0byBhbiBJdGVtVHlwZSwgZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkgYW4gaXRlbSBvZiB0aGF0
IHR5cGUuCisvLyBBbiBJdGVtSGFuZGxlIHdyYXBzIGEgcG9pbnRlciB0byBhbiBJdGVtVHlwZSBm
b2xsb3dlZCBpbW1lZGlhdGVseSBieSBhbiBpdGVtIG9mIHRoYXQgdHlwZS4KKy8vIEVhY2ggaXRl
bSBoYW5kbGUgZGF0YSBwb2ludGVyIGlzIGFsaWduZWQgdG8gOCBieXRlcywgYW5kIHRoZSBpdGVt
IGl0c2VsZiBpcyBhbHNvIGFsaWduZWQKKy8vIHRvIDggYnl0ZXMuIFRvIGVuc3VyZSB0aGlzLCB0
aGUgaXRlbSB0eXBlIGNvbnNpc3RzIG9mIDggYnl0ZXMgKDEgYnl0ZSBmb3IgdGhlIHR5cGUgYW5k
IDcKKy8vIGJ5dGVzIG9mIHBhZGRpbmcpLgogc3RydWN0IEl0ZW1IYW5kbGUgewogICAgIHVpbnQ4
X3QqIGRhdGEgeyBudWxscHRyIH07CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
OwotICAgIHZvaWQgZGVzdHJveSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVzdHJveSgp
OwogICAgIGJvb2wgaXNEcmF3aW5nSXRlbSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0Ojppc0RyYXdpbmdJdGVtKHR5cGUoKSk7IH0KIAogICAgIG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhISgqdGhpcyk7IH0KQEAgLTY5LDEzICs3MiwxMiBAQCBzdHJ1Y3QgSXRl
bUhhbmRsZSB7CiAjZW5kaWYKIAogICAgIEl0ZW1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxJdGVtVHlwZT4oZGF0YVswXSk7IH0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIHNpemVvZihJdGVtVHlwZSkgKyBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKCkpOyB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIGlzKCkgY29uc3QgeyByZXR1cm4gdHlw
ZSgpID09IFQ6Oml0ZW1UeXBlOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCYgZ2V0KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpczxUPigpKTsKLSAgICAgICAgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PFQqPigmZGF0YVtzaXplb2YoSXRlbVR5cGUpXSk7CisgICAgICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxUKj4oJmRhdGFbc2l6ZW9mKHVpbnQ2NF90KV0pOwogICAg
IH0KIAogICAgIHZvaWQgY29weVRvKEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0OwpAQCAt
MTM0LDMyICsxMzYsMjggQEAgcHVibGljOgogICAgIC8vIHdyaXRhYmxlIGJ1ZmZlciBoYW5kbGU7
IGlmIHJlbWFpbmluZyBidWZmZXIgY2FwYWNpdHkgaXMgaW5zdWZmaWNpZW50IHRvIHN0b3JlIHRo
ZSBpdGVtLCBhCiAgICAgLy8gbmV3IGJ1ZmZlciB3aWxsIGJlIGFsbG9jYXRlZCAoZWl0aGVyIGJ5
IHRoZSBJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCwgaWYgc2V0LCBvciBieSB0aGUgaXRlbQogICAg
IC8vIGJ1ZmZlciBpdHNlbGYgaWYgdGhlcmUgaXMgbm8gY2xpZW50KS4gSXRlbXMgYXJlIHBsYWNl
ZCBiYWNrLXRvLWJhY2sgaW4gdGhlc2UgaXRlbSBidWZmZXJzLAotICAgIC8vIHdpdGggYW4gSXRl
bVR5cGUgc2VwYXJhdGluZyBlYWNoIGl0ZW0uCisgICAgLy8gd2l0aCBwYWRkaW5nIGFmdGVyIGVh
Y2ggaXRlbSB0byBlbnN1cmUgdGhhdCBhbGwgaXRlbXMgYXJlIGFsaWduZWQgdG8gOCBieXRlcy4K
ICAgICAvLwogICAgIC8vIElmIGEgd3JpdGluZyBjbGllbnQgaXMgcHJlc2VudCBhbmQgcmVxdWly
ZXMgY3VzdG9tIGVuY29kaW5nIGZvciB0aGUgZ2l2ZW4gaXRlbSB0eXBlIFQsIHRoZQogICAgIC8v
IGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBTaGFyZWRCdWZm
ZXIgY29udGFpbmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQogICAgIC8vIGl0ZW0uIFRoaXMgZW5j
b2RlZCBkYXRhIGlzIHRoZW4gYXBwZW5kZWQgdG8gdGhlIGl0ZW0gYnVmZmVyLCB3aXRoIHBhZGRp
bmcgdG8gZW5zdXJlIHRoYXQKLSAgICAvLyB0aGUgc3RhcnQgb2YgdGhpcyBkYXRhIGlzIGFsaWdu
ZWQgdG8gOCBieXRlcywgaWYgbmVjZXNzYXJ5LiBXaGVuIGNvbnN1bWluZyBlbmNvZGVkIGl0ZW0K
LSAgICAvLyBkYXRhLCBhIGNvcnJlc3BvbmRpbmcgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgd2ls
bCBiZSByZXF1aXJlZCB0byBjb252ZXJ0IHRoaXMgZW5jb2RlZCBkYXRhCi0gICAgLy8gYmFjayBp
bnRvIGFuIGl0ZW0gb2YgdHlwZSBULgorICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMg
ZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5n
IGVuY29kZWQKKyAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVh
ZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCisgICAg
Ly8gZGF0YSBiYWNrIGludG8gYW4gaXRlbSBvZiB0eXBlIFQuCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6
dmFsdWUgfHwgIVQ6OmlzSW5saW5lSXRlbSk7Ci0gICAgICAgIGNvbnN0ZXhwciBhdXRvIHNpemVP
ZlR5cGVBbmRJdGVtID0gc2l6ZW9mKEl0ZW1UeXBlKSArIHNpemVvZihUKTsKIAogICAgICAgICBp
ZiAoIVQ6OmlzSW5saW5lSXRlbSAmJiBtX3dyaXRpbmdDbGllbnQpIHsKLSAgICAgICAgICAgIHN0
YXRpYyB1aW50OF90IGl0ZW1CdWZmZXJbc2l6ZU9mVHlwZUFuZEl0ZW1dOwotICAgICAgICAgICAg
aXRlbUJ1ZmZlclswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFQ6Oml0ZW1UeXBlKTsKLSAgICAg
ICAgICAgIG5ldyAoaXRlbUJ1ZmZlciArIHNpemVvZihJdGVtVHlwZSkpIFQoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IG1f
d3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbSh7IGl0ZW1CdWZmZXIgfSkpIHsKLSAgICAgICAgICAg
ICAgICBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaGFyZWRCdWZmZXItPnNpemUoKSArIHNp
emVvZihJdGVtVHlwZSkgKyBzaXplb2Yoc2l6ZV90KSArIGFsaWdub2YodWludDY0X3QpKTsKLSAg
ICAgICAgICAgICAgICBtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRl
c10gPSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjppdGVtVHlwZSk7Ci0gICAgICAgICAgICAgICAg
YXBwZW5kRGF0YUFuZExlbmd0aChzaGFyZWRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgbV93cml0
YWJsZUJ1ZmZlci5kYXRhICsgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArIHNpemVvZihJdGVtVHlw
ZSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGljIHVpbnQ4X3QgdGVtcG9yYXJ5
SXRlbUJ1ZmZlcltzaXplb2YodWludDY0X3QpICsgc2l6ZW9mKFQpXTsKKyAgICAgICAgICAgIHRl
bXBvcmFyeUl0ZW1CdWZmZXJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjppdGVtVHlwZSk7
CisgICAgICAgICAgICBuZXcgKHRlbXBvcmFyeUl0ZW1CdWZmZXIgKyBzaXplb2YodWludDY0X3Qp
KSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBhcHBlbmRFbmNv
ZGVkRGF0YSh7IHRlbXBvcmFyeUl0ZW1CdWZmZXIgfSk7CisgICAgICAgICAgICBJdGVtSGFuZGxl
IHsgdGVtcG9yYXJ5SXRlbUJ1ZmZlciB9LmRlc3Ryb3koKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVPZlR5
cGVBbmRJdGVtKTsKKyAgICAgICAgc3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQocGFkZGVkU2l6
ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKSk7CiAKICAgICAgICAgaWYgKCFzdGQ6
OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlKQogICAgICAgICAgICAgbV9pdGVt
c1RvRGVzdHJveUluQWxsb2NhdGVkQnVmZmVycy5hcHBlbmQoeyAmbV93cml0YWJsZUJ1ZmZlci5k
YXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdIH0pOwpAQCAtMTc1LDEzICsxNzMsMTMgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRl
bUJ1ZmZlckhhbmRsZSYpPiYmKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3dh
cFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YUFuZExlbmd0aChSZWY8U2hhcmVkQnVmZmVyPiYmLCB1
aW50OF90Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRFbmNvZGVkRGF0YShJdGVt
SGFuZGxlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIHVu
Y2hlY2tlZEFwcGVuZChBcmdzJiYuLi4gYXJncykKICAgICB7CiAgICAgICAgIGF1dG8qIHN0YXJ0
T2ZJdGVtID0gJm1fd3JpdGFibGVCdWZmZXIuZGF0YVttX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXTsK
ICAgICAgICAgc3RhcnRPZkl0ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjppdGVtVHlw
ZSk7Ci0gICAgICAgIG5ldyAoc3RhcnRPZkl0ZW0gKyBzaXplb2YoSXRlbVR5cGUpKSBUKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMg
Kz0gc2l6ZW9mKEl0ZW1UeXBlKSArIHNpemVPZkl0ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKTsKKyAg
ICAgICAgbmV3IChzdGFydE9mSXRlbSArIHNpemVvZih1aW50NjRfdCkpIFQoc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgbV93cml0dGVuTnVtYmVyT2ZCeXRlcyArPSBwYWRk
ZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoVDo6aXRlbVR5cGUpOwogICAgIH0KIAogICAgIEl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KiBtX3JlYWRpbmdDbGllbnQgeyBudWxscHRyIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKaW5kZXggYzJkYzAyOTkwZGUyOTll
YzYyMWRiMzkwZjk0OWZlMTM5ZTI1ZDJhMS4uYzk4Zjg0ODMwZTAxMGFhZWVlYzJmYzJlODEzZDgw
Y2NiYjc0ZjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApA
QCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlM
aXN0IHsKIAotc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCitzdGF0aWMg
c2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKQEAgLTI0NCw2ICsyNDQsMTEgQEAgYm9v
bCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitz
aXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCit7Cisg
ICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2Yo
dWludDY0X3QpLCBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7Cit9CisKIGJvb2wgaXNJbmxpbmVJ
dGVtKEl0ZW1UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAppbmRleCAwMjM5NjVhMDY5MmQxNmFjNDc2Nzg5MTk5M2U3
NzcyMzJiNjZmZDY2Li43OGM4MTdkMGVhMTQ0NGI4NjljYTI3OGEzMjJiYTc4ZWMzNDg1M2M1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKQEAgLTk4LDcgKzk4LDcgQEAg
ZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IsCiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZU9mSXRlbUluQnl0ZXMoSXRlbVR5
cGUpOworV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRl
cyhJdGVtVHlwZSk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSk7
CiBXRUJDT1JFX0VYUE9SVCBib29sIGlzRHJhd2luZ0l0ZW0oSXRlbVR5cGUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaAppbmRleCAzZDAyZWI0ODZlZWMzZGYxOWEyYTc2YjA5NjU5OGNiYjk2NzhhMWZl
Li43YWM5NjIwMTAzZTU3YzA3YmIyZWVlMzNlYmVmYjJjNDVmMDA3ZGQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKQEAgLTg0LDcgKzg0LDkgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUFuZENy
ZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90KiBoYW5kbGVM
b2NhdGlvbikKICAgICB7CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBJUEM6OkRlY29kZXI6OmRl
Y29kZVNpbmdsZU9iamVjdDxUPihkYXRhLCBsZW5ndGgpKSB7Ci0gICAgICAgICAgICBuZXcgKGhh
bmRsZUxvY2F0aW9uICsgc2l6ZW9mKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkpIFQo
V1RGTW92ZSgqaXRlbSkpOworICAgICAgICAgICAgLy8gRklYTUU6IFdlYktpdDIgc2hvdWxkIG5v
dCBuZWVkIHRvIGtub3cgdGhhdCB0aGUgZmlyc3QgOCBieXRlcyBhdCB0aGUgaGFuZGxlIGFyZSBy
ZXNlcnZlZCBmb3IgdGhlIHR5cGUuCisgICAgICAgICAgICAvLyBOZWVkIHRvIGZpZ3VyZSBvdXQg
YSB3YXkgdG8ga2VlcCB0aGlzIGtub3dsZWRnZSB3aXRoaW4gZGlzcGxheSBsaXN0IGNvZGUgaW4g
V2ViQ29yZS4KKyAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBzaXplb2YodWludDY0
X3QpKSBUKFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2Nh
dGlvbiB9fTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVmNjViNGUyYTA1
YTkyMzcyZjNjYzZjYmI0OTMyNDczY2UyOTczMDUuLjNlNWQxZWZkZTk2NzIzZTZiMjk0OTlmMWY2
ZWVkYzEwNmUwZTAwNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0xMS0wOSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY5NTI1KTogTWFu
eSBsYXlvdXQgdGVzdHMgY3Jhc2ggd2hlbiBydW4gdW5kZXIgQVNhbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NzMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAyMC0xMS0xMCAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBbUkVHUkVTU1NJT04ocjI2OTM5MCkgU2V2ZXJhbCBl
ZGl0aW5nLyB0ZXN0cyBhcmUgZmxha3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAppbmRleCA0MTcwMjY0MmFkYjRjYzM2
MmQ1NDk3ZTgzZDg4NDgyNDZiYTY4OWIxLi5jNzYyYTE5YjhjZWVhOTM4YmM1ZWRmODI0ZmE1ZTkz
MTBjZjAxMmRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgVEVTVChEaXNwbGF5
TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAgICB7CiAgICAgICAgICAgICBFWFBF
Q1RfRVEodHlwZSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOwogICAgICAgICAgICAgRVhQRUNUX0VR
KGRhdGFMZW5ndGgsIHNpemVvZihzaXplX3QpKTsKLSAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9j
YXRpb24gKyBzaXplb2YoSXRlbVR5cGUpKSBTdHJva2VQYXRoKG1faXRlbXNbKnJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKTsKKyAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9j
YXRpb24gKyBzaXplb2YodWludDY0X3QpKSBTdHJva2VQYXRoKG1faXRlbXNbKnJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKTsKICAgICAgICAgICAgIHJldHVybiB7eyBoYW5k
bGVMb2NhdGlvbiB9fTsKICAgICAgICAgfQogCg==
</data>
<flag name="review"
          id="430360"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413720</attachid>
            <date>2020-11-10 11:59:38 -0800</date>
            <delta_ts>2020-11-10 12:31:09 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-218733-20201110115937.patch</filename>
            <type>text/plain</type>
            <size>31746</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzNDM2Yjk5MmEyNDk2
NGIxNzIxZmE4ODFlYjAxYWM4ODI4MDFiMi4uY2JjOTJkMGY0ZGQ4MDM0MDgyMzdhY2VmYzg5ZDQ5
ZTc0MzI5MTIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTExLTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04g
KHIyNjk1MjUpOiBNYW55IGxheW91dCB0ZXN0cyBjcmFzaCB3aGVuIHJ1biB1bmRlciBBU2FuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg3MzMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxMjA2MjczPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRp
bSBIb3J0b24uCisKKyAgICAgICAgV2hlbiBydW5uaW5nIHRlc3RzIHVuZGVyIEFTYW4sIG1hbnkg
bGF5b3V0IHRlc3RzIGNyYXNoIHVuZGVyIGBWZWN0b3I6OmFzYW5CdWZmZXJTaXplV2lsbENoYW5n
ZVRvYCwgd2hpY2ggKHdoZW4KKyAgICAgICAgQVNhbiBpcyBlbmFibGVkKSB3aWxsIGNyYXNoIHdo
ZW4gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgaXMgbWlzYWxpZ25lZCB0byA4IGJ5dGVzLiBXaGVu
IGFwcGVuZGluZyBgRHJhd0dseXBoYAorICAgICAgICBkaXNwbGF5IGxpc3QgaXRlbXMgdGhhdCBo
YXZlIFZlY3RvcnMgd2l0aCBpbmxpbmUgY2FwYWNpdGllcywgdGhlIHN0YXJ0IG9mIGEgYnVmZmVy
IG1heSBlbmQgdXAgYXQgYW4gb2Zmc2V0IHRoYXQKKyAgICAgICAgaXMgbm90IGFsaWduZWQgdG8g
OCBieXRlcywgc2luY2UgYWxsIGRpc3BsYXkgbGlzdCBpdGVtcyBhcmUgY3VycmVudGx5IGxhaWQg
b3V0IGJhY2stdG8tYmFjaywgd2l0aCBhIHNpbmdsZSBieXRlCisgICAgICAgIHRvIHJlcHJlc2Vu
dCB0aGUgaXRlbSB0eXBlIGFuZCBlYWNoIGl0ZW0ncyBkYXRhIGZvbGxvd2luZyBpbW1lZGlhdGVs
eSB0aGVyZWFmdGVyLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhpcywgYWRqdXN0IGRpc3BsYXkg
bGlzdCBpdGVtIGJ1ZmZlciBsb2dpYyB0byBtYWtlIHN1cmUgdGhhdCBmb3IgZWFjaCBpdGVtIHRo
YXQgaXMgYXBwZW5kZWQgdG8gYW4KKyAgICAgICAgaXRlbSBidWZmZXIsIGJvdGggdGhlIGl0ZW0g
dHlwZSBhbmQgdGhlIGl0ZW0gaXRzZWxmIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjppdGVyYXRvcjo6dXBkYXRl
Q3VycmVudEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGU6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZEVuY29kZWREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmREYXRhQW5kTGVuZ3Ro
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXI6OnVuY2hlY2tlZEFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OnNpemVPZkl0ZW1JbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMpOgorCisgICAgICAgIENo
YW5nZSBgc2l6ZU9mSXRlbUluQnl0ZXNgIHRvIGBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXNgLCBhbmQgbWFrZSBpdCBpbmNsdWRlIGJvdGggdGhlIHBhZGRlZCBzaXplIG9mIGFuCisgICAg
ICAgIGl0ZW0gdHlwZSAoOCBieXRlcyksIHRoZSBzaXplIG9mIHRoZSBpdGVtIGl0c2VsZiwgYW5k
IHRoZSBtaW5pbXVtIGFtb3VudCBvZiBwYWRkaW5nIGFmdGVyIHRoZSBpdGVtIHRoYXQncworICAg
ICAgICByZXF1aXJlZCB0byBtYWtlIHN1cmUgdGhlIHRvdGFsIHNpemUgaXMgYWxpZ25lZCB0byA4
IGJ5dGVzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuaDoKKwogMjAyMC0xMS0xMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEFsbG93IG9iamVjdC1maXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYjIzODkxM2Y0OTBlYzBlNzliNWVjYzY0NmJjNGFmODcwYWRjYzA4Ni4uYWZm
N2ZlNDRlZGQ1ZTExMzA0MjYxODlkOTI3YmE1MzRlNWVmNDU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMC0xMS0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjY5NTI1KTogTWFueSBsYXlvdXQgdGVzdHMgY3Jh
c2ggd2hlbiBydW4gdW5kZXIgQVNhbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NzMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTIwNjI3Mz4K
KworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIENvbnN0cnVjdCB0
aGUgaXRlbSA4IGJ5dGVzIGFmdGVyIHRoZSBoYW5kbGUgb2Zmc2V0LCBpbnN0ZWFkIG9mIDEgYnl0
ZSAoYWxzbywgYWRkIGEgRklYTUUgaW5kaWNhdGluZyB0aGF0IHdlIHNvbWUKKyAgICAgICAgd2F5
IG9mIGFjaGlldmluZyB0aGlzIHdpdGhvdXQgcmVxdWlyaW5nIFdlYktpdDIgdG8gYmUgYXdhcmUg
b2YgYW4gaXRlbSBoYW5kbGUncyBtZW1vcnkgbGF5b3V0KS4KKworICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVBbmRDcmVhdGUpOgorCiAyMDIwLTExLTEwICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
NF0gV2ViVmlldyBpcyBmbGlwcGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAxZTMw
NmQ2NjNiYjQ2MDFjOTM5ZDhkYzZiMGRhYTY4ZDVkNDgwOGU1Li5mNTA2ZGRmNDk1Mjc1ZGJiNWMw
OTAyOGM2MWE0OTM3YTljODc1OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTM0
MCwxMyArMzQwLDEyIEBAIHZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVDdXJyZW50
SXRlbSgpCiAgICAgICAgIG1fY3VycmVudEV4dGVudCA9IFdURjo6bnVsbG9wdDsKIAogICAgIGF1
dG8qIGNsaWVudCA9IGl0ZW1zLm1fcmVhZGluZ0NsaWVudDsKLSAgICBhdXRvIHNpemVPZlR5cGVB
bmRJdGVtID0gc2l6ZU9mSXRlbUluQnl0ZXMoaXRlbVR5cGUpICsgc2l6ZW9mKEl0ZW1UeXBlKTsK
LSAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gc2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9m
Rml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2Moc2l6ZU9mVHlwZUFuZEl0ZW0p
KTsKKyAgICBhdXRvIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFu
ZEl0ZW1JbkJ5dGVzKGl0ZW1UeXBlKTsKKyAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gcGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA/
IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsKICAgICBpZiAoIWlzSW5saW5l
SXRlbShpdGVtVHlwZSkgJiYgY2xpZW50KSB7Ci0gICAgICAgIGF1dG8gc2l6ZU9mRGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Kj4obV9jdXJzb3IgKyBzaXplb2YoSXRlbVR5cGUpKVswXTsK
LSAgICAgICAgYXV0byogc3RhcnRPZlBhZGRpbmcgPSBtX2N1cnNvciArIHNpemVvZihJdGVtVHlw
ZSkgKyBzaXplb2Yoc2l6ZV90KTsKLSAgICAgICAgc2l6ZV90IHBhZGRpbmcgPSAoYWxpZ25vZih1
aW50NjRfdCkgLSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc3RhcnRPZlBhZGRpbmcpICUg
YWxpZ25vZih1aW50NjRfdCkpICUgYWxpZ25vZih1aW50NjRfdCk7Ci0gICAgICAgIGF1dG8gZGVj
b2RlZEl0ZW1IYW5kbGUgPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZlBhZGRpbmcgKyBwYWRk
aW5nLCBzaXplT2ZEYXRhLCBpdGVtVHlwZSwgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7CisgICAg
ICAgIGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNv
cilbMV07CisgICAgICAgIGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6ZW9m
KHVpbnQ2NF90KTsKKyAgICAgICAgYXV0byBkZWNvZGVkSXRlbUhhbmRsZSA9IGNsaWVudC0+ZGVj
b2RlSXRlbShzdGFydE9mRGF0YSwgZGF0YUxlbmd0aCwgaXRlbVR5cGUsIG1fY3VycmVudEJ1ZmZl
ckZvckl0ZW0pOwogICAgICAgICBpZiAoIWRlY29kZWRJdGVtSGFuZGxlKSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogSW5zdGVhZCBvZiBjcmFzaGluZywgdGhpcyBuZWVkcyB0byBmYWlsIGdyYWNl
ZnVsbHkgYW5kIGluZm9ybSB0aGUgY2FsbGVyLgogICAgICAgICAgICAgLy8gRm9yIHRoZSB0aW1l
IGJlaW5nLCB0aGlzIGFzc2VydGlvbiBtYWtlcyBidWdzIGluIGl0ZW0gYnVmZmVyIGVuY29kaW5n
IGxvZ2ljIGVhc2llcgpAQCAtMzU1LDEwICszNTQsMTAgQEAgdm9pZCBEaXNwbGF5TGlzdDo6aXRl
cmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbVsw
XSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAgICAgICAgbV9jdXJyZW50SXRl
bVNpemVJbkJ1ZmZlciA9IHNpemVvZihJdGVtVHlwZSkgKyBzaXplb2Yoc2l6ZV90KSArIHBhZGRp
bmcgKyBzaXplT2ZEYXRhOworICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAq
IHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3Qp
LCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJz
b3IgfS5jb3B5VG8oeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pOwotICAgICAgICBtX2N1cnJl
bnRJdGVtU2l6ZUluQnVmZmVyID0gc2l6ZU9mVHlwZUFuZEl0ZW07CisgICAgICAgIG1fY3VycmVu
dEl0ZW1TaXplSW5CdWZmZXIgPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggZDdlMzA3
YTA5MWJkNzNjOTZkMWVhZTYzM2Y3YTM2ZWEyYWE3YmMzOC4uYzdmOGFjODU4MDkyYTI2MDgyZTg1
Y2I4ZWRkMjczNDk2NTNkNGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKQEAgLTU1NSwyNTUgKzU1NSwyNTYgQEAgdm9pZCBJdGVtSGFuZGxlOjpjb3B5
VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKIHsKICAgICBhdXRvIGl0ZW1UeXBlID0g
dHlwZSgpOwogICAgIGRlc3RpbmF0aW9uLmRhdGFbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pihp
dGVtVHlwZSk7CisgICAgYXV0byBpdGVtT2Zmc2V0ID0gZGVzdGluYXRpb24uZGF0YSArIHNpemVv
Zih1aW50NjRfdCk7CiAgICAgc3dpdGNoIChpdGVtVHlwZSkgewogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBPdXRUb1BhdGg6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9m
KEl0ZW1UeXBlKSkgQ2xpcE91dFRvUGF0aChnZXQ8Q2xpcE91dFRvUGF0aD4oKSk7CisgICAgICAg
IG5ldyAoaXRlbU9mZnNldCkgQ2xpcE91dFRvUGF0aChnZXQ8Q2xpcE91dFRvUGF0aD4oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6IHsKLSAg
ICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQ2xpcFBhdGgo
Z2V0PENsaXBQYXRoPigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGlwUGF0aChnZXQ8
Q2xpcFBhdGg+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBUb0RyYXdpbmdDb21tYW5kczogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEg
KyBzaXplb2YoSXRlbVR5cGUpKSBDbGlwVG9EcmF3aW5nQ29tbWFuZHMoZ2V0PENsaXBUb0RyYXdp
bmdDb21tYW5kcz4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGdldDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7Ci0gICAgICAgIG5l
dyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdGb2N1c1JpbmdQYXRo
KGdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJh
d0ZvY3VzUmluZ1BhdGgoZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6IHsKLSAgICAg
ICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgRHJhd0ZvY3VzUmlu
Z1JlY3RzKGdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCkpOworICAgICAgICBuZXcgKGl0ZW1PZmZz
ZXQpIERyYXdGb2N1c1JpbmdSZWN0cyhnZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB7Ci0gICAg
ICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdHbHlwaHMo
Z2V0PERyYXdHbHlwaHM+KCkpOworICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdHbHlwaHMo
Z2V0PERyYXdHbHlwaHM+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZTogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXpl
b2YoSXRlbVR5cGUpKSBEcmF3SW1hZ2UoZ2V0PERyYXdJbWFnZT4oKSk7CisgICAgICAgIG5ldyAo
aXRlbU9mZnNldCkgRHJhd0ltYWdlKGdldDxEcmF3SW1hZ2U+KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogewotICAgICAgICBu
ZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3SW1hZ2VCdWZmZXIo
Z2V0PERyYXdJbWFnZUJ1ZmZlcj4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd0lt
YWdlQnVmZmVyKGdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6IHsKLSAgICAgICAgbmV3IChk
ZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgRHJhd0xpbmVzRm9yVGV4dChnZXQ8
RHJhd0xpbmVzRm9yVGV4dD4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd0xpbmVz
Rm9yVGV4dChnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB7Ci0gICAgICAgIG5ldyAoZGVz
dGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdOYXRpdmVJbWFnZShnZXQ8RHJh
d05hdGl2ZUltYWdlPigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3TmF0aXZlSW1h
Z2UoZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRh
ICsgc2l6ZW9mKEl0ZW1UeXBlKSkgRHJhd1BhdGgoZ2V0PERyYXdQYXRoPigpKTsKKyAgICAgICAg
bmV3IChpdGVtT2Zmc2V0KSBEcmF3UGF0aChnZXQ8RHJhd1BhdGg+KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7Ci0gICAgICAgIG5l
dyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdQYXR0ZXJuKGdldDxE
cmF3UGF0dGVybj4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdHRlcm4oZ2V0
PERyYXdQYXR0ZXJuPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3VGlsZWRJbWFnZTogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBz
aXplb2YoSXRlbVR5cGUpKSBEcmF3VGlsZWRJbWFnZShnZXQ8RHJhd1RpbGVkSW1hZ2U+KCkpOwor
ICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdUaWxlZEltYWdlKGdldDxEcmF3VGlsZWRJbWFn
ZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Rp
bGVkU2NhbGVkSW1hZ2U6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9m
KEl0ZW1UeXBlKSkgRHJhd1RpbGVkU2NhbGVkSW1hZ2UoZ2V0PERyYXdUaWxlZFNjYWxlZEltYWdl
PigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3VGlsZWRTY2FsZWRJbWFnZShnZXQ8
RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxDb21wb3NpdGVkUmVjdDogewotICAgICAgICBuZXcgKGRlc3RpbmF0
aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBGaWxsQ29tcG9zaXRlZFJlY3QoZ2V0PEZpbGxD
b21wb3NpdGVkUmVjdD4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbENvbXBvc2l0
ZWRSZWN0KGdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRp
b24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxQYXRoKGdldDxGaWxsUGF0aD4oKSk7Cisg
ICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbFBhdGgoZ2V0PEZpbGxQYXRoPigpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjog
ewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBGaWxs
UmVjdFdpdGhDb2xvcihnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOworICAgICAgICBuZXcgKGl0
ZW1PZmZzZXQpIEZpbGxSZWN0V2l0aENvbG9yKGdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3Jh
ZGllbnQ6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBl
KSkgRmlsbFJlY3RXaXRoR3JhZGllbnQoZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsKKyAg
ICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxsUmVjdFdpdGhHcmFkaWVudChnZXQ8RmlsbFJlY3RX
aXRoR3JhZGllbnQ+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24u
ZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGdldDxGaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUoZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6IHsK
LSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgRmlsbFJv
dW5kZWRSZWN0KGdldDxGaWxsUm91bmRlZFJlY3Q+KCkpOworICAgICAgICBuZXcgKGl0ZW1PZmZz
ZXQpIEZpbGxSb3VuZGVkUmVjdChnZXQ8RmlsbFJvdW5kZWRSZWN0PigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHsKLSAgICAgICAg
bmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgUHV0SW1hZ2VEYXRhKGdl
dDxQdXRJbWFnZURhdGE+KCkpOworICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFB1dEltYWdlRGF0
YShnZXQ8UHV0SW1hZ2VEYXRhPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEg
KyBzaXplb2YoSXRlbVR5cGUpKSBTZXRMaW5lRGFzaChnZXQ8U2V0TGluZURhc2g+KCkpOworICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNldExpbmVEYXNoKGdldDxTZXRMaW5lRGFzaD4oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6IHsKLSAg
ICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0U3RhdGUo
Z2V0PFNldFN0YXRlPigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTZXRTdGF0ZShnZXQ8
U2V0U3RhdGU+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6
OlN0cm9rZVBhdGg6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0
ZW1UeXBlKSkgU3Ryb2tlUGF0aChnZXQ8U3Ryb2tlUGF0aD4oKSk7CisgICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgU3Ryb2tlUGF0aChnZXQ8U3Ryb2tlUGF0aD4oKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjogewotICAg
ICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBBcHBseURldmlj
ZVNjYWxlRmFjdG9yKGdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpKTsKKyAgICAgICAgbmV3
IChpdGVtT2Zmc2V0KSBBcHBseURldmljZVNjYWxlRmFjdG9yKGdldDxBcHBseURldmljZVNjYWxl
RmFjdG9yPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNpZiBVU0UoQ0cpCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9u
LmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBBcHBseUZpbGxQYXR0ZXJuKGdldDxBcHBseUZpbGxQ
YXR0ZXJuPigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBBcHBseUZpbGxQYXR0ZXJuKGdl
dDxBcHBseUZpbGxQYXR0ZXJuPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlv
bi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQXBwbHlTdHJva2VQYXR0ZXJuKGdldDxBcHBseVN0
cm9rZVBhdHRlcm4+KCkpOworICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIEFwcGx5U3Ryb2tlUGF0
dGVybihnZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAg
ICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQmVnaW5UcmFu
c3BhcmVuY3lMYXllcihnZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSk7CisgICAgICAgIG5l
dyAoaXRlbU9mZnNldCkgQmVnaW5UcmFuc3BhcmVuY3lMYXllcihnZXQ8QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcj4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJSZWN0OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVt
VHlwZSkpIENsZWFyUmVjdChnZXQ8Q2xlYXJSZWN0PigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zm
c2V0KSBDbGVhclJlY3QoZ2V0PENsZWFyUmVjdD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6IHsKLSAgICAgICAgbmV3IChkZXN0aW5h
dGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQ2xlYXJTaGFkb3coZ2V0PENsZWFyU2hhZG93
PigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGVhclNoYWRvdyhnZXQ8Q2xlYXJTaGFk
b3c+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6
IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgQ2xp
cChnZXQ8Q2xpcD4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcChnZXQ8Q2xpcD4o
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDog
ewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBDbGlw
T3V0KGdldDxDbGlwT3V0PigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGlwT3V0KGdl
dDxDbGlwT3V0PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBl
OjpDb25jYXRlbmF0ZUNUTTogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXpl
b2YoSXRlbVR5cGUpKSBDb25jYXRlbmF0ZUNUTShnZXQ8Q29uY2F0ZW5hdGVDVE0+KCkpOworICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIENvbmNhdGVuYXRlQ1RNKGdldDxDb25jYXRlbmF0ZUNUTT4o
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcjogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXpl
b2YoSXRlbVR5cGUpKSBEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGdldDxEcmF3RG90c0ZvckRv
Y3VtZW50TWFya2VyPigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3RG90c0ZvckRv
Y3VtZW50TWFya2VyKGdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZTogewotICAgICAg
ICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBEcmF3RWxsaXBzZShn
ZXQ8RHJhd0VsbGlwc2U+KCkpOworICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdFbGxpcHNl
KGdldDxEcmF3RWxsaXBzZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmU6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6
ZW9mKEl0ZW1UeXBlKSkgRHJhd0xpbmUoZ2V0PERyYXdMaW5lPigpKTsKKyAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBEcmF3TGluZShnZXQ8RHJhd0xpbmU+KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB7Ci0gICAgICAgIG5ldyAoZGVzdGlu
YXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIERyYXdSZWN0KGdldDxEcmF3UmVjdD4oKSk7
CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1JlY3QoZ2V0PERyYXdSZWN0PigpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lM
YXllcjogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUp
KSBFbmRUcmFuc3BhcmVuY3lMYXllcihnZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOworICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIEVuZFRyYW5zcGFyZW5jeUxheWVyKGdldDxFbmRUcmFuc3Bh
cmVuY3lMYXllcj4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbEVsbGlwc2U6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9m
KEl0ZW1UeXBlKSkgRmlsbEVsbGlwc2UoZ2V0PEZpbGxFbGxpcHNlPigpKTsKKyAgICAgICAgbmV3
IChpdGVtT2Zmc2V0KSBGaWxsRWxsaXBzZShnZXQ8RmlsbEVsbGlwc2U+KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxJbmxpbmVQYXRoOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSAr
IHNpemVvZihJdGVtVHlwZSkpIEZpbGxJbmxpbmVQYXRoKGdldDxGaWxsSW5saW5lUGF0aD4oKSk7
CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbElubGluZVBhdGgoZ2V0PEZpbGxJbmxpbmVQ
YXRoPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJ
dGVtVHlwZSkpIEZpbGxSZWN0KGdldDxGaWxsUmVjdD4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9m
ZnNldCkgRmlsbFJlY3QoZ2V0PEZpbGxSZWN0PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6IHsKLSAgICAgICAgbmV3IChkZXN0aW5h
dGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgRmx1c2hDb250ZXh0KGdldDxGbHVzaENvbnRl
eHQ+KCkpOworICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIEZsdXNoQ29udGV4dChnZXQ8Rmx1c2hD
b250ZXh0PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZFN3aXRjaFRvOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNp
emVvZihJdGVtVHlwZSkpIE1ldGFDb21tYW5kU3dpdGNoVG8oZ2V0PE1ldGFDb21tYW5kU3dpdGNo
VG8+KCkpOworICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIE1ldGFDb21tYW5kU3dpdGNoVG8oZ2V0
PE1ldGFDb21tYW5kU3dpdGNoVG8+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNh
c2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYTogewotICAgICAgICBuZXcgKGRlc3RpbmF0
aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBQYWludEZyYW1lRm9yTWVkaWEoZ2V0PFBhaW50
RnJhbWVGb3JNZWRpYT4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgUGFpbnRGcmFtZUZv
ck1lZGlhKGdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlv
bi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgUmVzdG9yZShnZXQ8UmVzdG9yZT4oKSk7CisgICAg
ICAgIG5ldyAoaXRlbU9mZnNldCkgUmVzdG9yZShnZXQ8UmVzdG9yZT4oKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOiB7Ci0gICAgICAgIG5ldyAo
ZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFJvdGF0ZShnZXQ8Um90YXRlPigp
KTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBSb3RhdGUoZ2V0PFJvdGF0ZT4oKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U2F2ZTogewotICAgICAgICBu
ZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTYXZlKGdldDxTYXZlPigp
KTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTYXZlKGdldDxTYXZlPigpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZTogewotICAgICAgICBuZXcg
KGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTY2FsZShnZXQ8U2NhbGU+KCkp
OworICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNjYWxlKGdldDxTY2FsZT4oKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOiB7Ci0gICAgICAgIG5l
dyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFNldENUTShnZXQ8U2V0Q1RN
PigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTZXRDVE0oZ2V0PFNldENUTT4oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENv
bG9yOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkp
IFNldElubGluZUZpbGxDb2xvcihnZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpKTsKKyAgICAgICAg
bmV3IChpdGVtT2Zmc2V0KSBTZXRJbmxpbmVGaWxsQ29sb3IoZ2V0PFNldElubGluZUZpbGxDb2xv
cj4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5s
aW5lRmlsbEdyYWRpZW50OiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVv
ZihJdGVtVHlwZSkpIFNldElubGluZUZpbGxHcmFkaWVudChnZXQ8U2V0SW5saW5lRmlsbEdyYWRp
ZW50PigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTZXRJbmxpbmVGaWxsR3JhZGllbnQo
Z2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6IHsKLSAgICAgICAgbmV3IChk
ZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0SW5saW5lU3Ryb2tlQ29sb3Io
Z2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBT
ZXRJbmxpbmVTdHJva2VDb2xvcihnZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6IHsKLSAgICAg
ICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0TGluZUNhcChn
ZXQ8U2V0TGluZUNhcD4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2V0TGluZUNhcChn
ZXQ8U2V0TGluZUNhcD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVt
VHlwZTo6U2V0TGluZUpvaW46IHsKLSAgICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6
ZW9mKEl0ZW1UeXBlKSkgU2V0TGluZUpvaW4oZ2V0PFNldExpbmVKb2luPigpKTsKKyAgICAgICAg
bmV3IChpdGVtT2Zmc2V0KSBTZXRMaW5lSm9pbihnZXQ8U2V0TGluZUpvaW4+KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6IHsKLSAg
ICAgICAgbmV3IChkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKEl0ZW1UeXBlKSkgU2V0TWl0ZXJM
aW1pdChnZXQ8U2V0TWl0ZXJMaW1pdD4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2V0
TWl0ZXJMaW1pdChnZXQ8U2V0TWl0ZXJMaW1pdD4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOiB7Ci0gICAgICAgIG5ldyAo
ZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFNldFN0cm9rZVRoaWNrbmVzcyhn
ZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTZXRT
dHJva2VUaGlja25lc3MoZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZTogewotICAgICAgICBu
ZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBTdHJva2VFbGxpcHNlKGdl
dDxTdHJva2VFbGxpcHNlPigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTdHJva2VFbGxp
cHNlKGdldDxTdHJva2VFbGxpcHNlPigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNpZiBF
TkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQ
YXRoOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRpb24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkp
IFN0cm9rZUlubGluZVBhdGgoZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkpOworICAgICAgICBuZXcg
KGl0ZW1PZmZzZXQpIFN0cm9rZUlubGluZVBhdGgoZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
UmVjdDogewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUp
KSBTdHJva2VSZWN0KGdldDxTdHJva2VSZWN0PigpKTsKKyAgICAgICAgbmV3IChpdGVtT2Zmc2V0
KSBTdHJva2VSZWN0KGdldDxTdHJva2VSZWN0PigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOiB7Ci0gICAgICAgIG5ldyAoZGVzdGluYXRp
b24uZGF0YSArIHNpemVvZihJdGVtVHlwZSkpIFN0cm9rZUxpbmUoZ2V0PFN0cm9rZUxpbmU+KCkp
OworICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFN0cm9rZUxpbmUoZ2V0PFN0cm9rZUxpbmU+KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZTog
ewotICAgICAgICBuZXcgKGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YoSXRlbVR5cGUpKSBUcmFu
c2xhdGUoZ2V0PFRyYW5zbGF0ZT4oKSk7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgVHJhbnNs
YXRlKGdldDxUcmFuc2xhdGU+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIH0KQEAg
LTg4Myw3ICs4ODQsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmNsZWFyKCkKIAogdm9pZCBJdGVtQnVm
ZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHsK
LSAgICBjb25zdGV4cHIgYXV0byBzaXplRm9yQnVmZmVyU3dpdGNoSXRlbSA9IHNpemVvZihJdGVt
VHlwZSkgKyBzaXplb2YoTWV0YUNvbW1hbmRTd2l0Y2hUbyk7CisgICAgYXV0byBzaXplRm9yQnVm
ZmVyU3dpdGNoSXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZTo6
TWV0YUNvbW1hbmRTd2l0Y2hUbyk7CiAgICAgaWYgKG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyBu
dW1iZXJPZkJ5dGVzICsgc2l6ZUZvckJ1ZmZlclN3aXRjaEl0ZW0gPD0gbV93cml0YWJsZUJ1ZmZl
ci5jYXBhY2l0eSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04OTksMTYgKzkwMCwyMiBAQCB2b2lk
IEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5
dGVzKQogICAgIG1fd3JpdGFibGVCdWZmZXIgPSBXVEZNb3ZlKG5leHRCdWZmZXIpOwogfQogCi12
b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZERhdGFBbmRMZW5ndGgoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCB1aW50OF90KiBsb2NhdGlvbikKK3ZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kRW5jb2RlZERh
dGEoSXRlbUhhbmRsZSB0ZW1wb3JhcnlJdGVtKQogewotICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c2l6
ZV90Kj4obG9jYXRpb24pWzBdID0gZGF0YS0+c2l6ZSgpOworICAgIGF1dG8gZGF0YSA9IG1fd3Jp
dGluZ0NsaWVudC0+ZW5jb2RlSXRlbSh0ZW1wb3JhcnlJdGVtKTsKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZGF0YUxlbmd0aCA9IGRhdGEtPnNpemUoKTsKKyAg
ICBhdXRvIGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtID0gMiAqIHNpemVvZih1aW50
NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3Ro
KTsKKworICAgIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKGFkZGl0aW9uYWxDYXBhY2l0eUZv
ckVuY29kZWRJdGVtKTsKIAotICAgIGF1dG8qIHN0YXJ0T2ZQYWRkaW5nID0gbG9jYXRpb24gKyBz
aXplb2Yoc2l6ZV90KTsKLSAgICBzaXplX3QgcGFkZGluZyA9IChhbGlnbm9mKHVpbnQ2NF90KSAt
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzdGFydE9mUGFkZGluZykgJSBhbGlnbm9mKHVp
bnQ2NF90KSkgJSBhbGlnbm9mKHVpbnQ2NF90KTsKLSAgICBhdXRvKiBzdGFydE9mRGF0YSA9IHN0
YXJ0T2ZQYWRkaW5nICsgcGFkZGluZzsKLSAgICBtZW1jcHkoc3RhcnRPZkRhdGEsIGRhdGEtPmRh
dGFBc1VJbnQ4UHRyKCksIGRhdGEtPnNpemUoKSk7CisgICAgbV93cml0YWJsZUJ1ZmZlci5kYXRh
W21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odGVtcG9yYXJ5
SXRlbS50eXBlKCkpOworICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX3dyaXRhYmxl
QnVmZmVyLmRhdGEgKyBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzKVsxXSA9IGRhdGFMZW5ndGg7Cisg
ICAgbWVtY3B5KG1fd3JpdGFibGVCdWZmZXIuZGF0YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMg
KyAyICogc2l6ZW9mKHVpbnQ2NF90KSwgZGF0YS0+ZGF0YUFzVUludDhQdHIoKSwgZGF0YUxlbmd0
aCk7CiAKLSAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9IHNpemVvZihJdGVtVHlwZSkgKyBz
aXplb2Yoc2l6ZV90KSArIHBhZGRpbmcgKyBkYXRhLT5zaXplKCk7CisgICAgbV93cml0dGVuTnVt
YmVyT2ZCeXRlcyArPSBhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaAppbmRleCA3YjQ4MmUwZThiM2E0N2UwNWIxYzgzNmQ2NmUzZGM2NzI4Y2NmNGQ2Li5j
MTBjYzNlNTJhMjBhYjVlYzAyYTU2MDZjZmM4NDkzMWZmMjEyODZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC01MywxMiArNTMsMTUgQEAgc3RydWN0IEl0
ZW1CdWZmZXJIYW5kbGUgewogCiB1c2luZyBJdGVtQnVmZmVySGFuZGxlcyA9IFZlY3RvcjxJdGVt
QnVmZmVySGFuZGxlLCAyPjsKIAotLy8gQW4gSXRlbUhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8g
YW4gSXRlbVR5cGUsIGZvbGxvd2VkIGltbWVkaWF0ZWx5IGJ5IGFuIGl0ZW0gb2YgdGhhdCB0eXBl
LgorLy8gQW4gSXRlbUhhbmRsZSB3cmFwcyBhIHBvaW50ZXIgdG8gYW4gSXRlbVR5cGUgZm9sbG93
ZWQgaW1tZWRpYXRlbHkgYnkgYW4gaXRlbSBvZiB0aGF0IHR5cGUuCisvLyBFYWNoIGl0ZW0gaGFu
ZGxlIGRhdGEgcG9pbnRlciBpcyBhbGlnbmVkIHRvIDggYnl0ZXMsIGFuZCB0aGUgaXRlbSBpdHNl
bGYgaXMgYWxzbyBhbGlnbmVkCisvLyB0byA4IGJ5dGVzLiBUbyBlbnN1cmUgdGhpcywgdGhlIGl0
ZW0gdHlwZSBjb25zaXN0cyBvZiA4IGJ5dGVzICgxIGJ5dGUgZm9yIHRoZSB0eXBlIGFuZCA3Cisv
LyBieXRlcyBvZiBwYWRkaW5nKS4KIHN0cnVjdCBJdGVtSGFuZGxlIHsKICAgICB1aW50OF90KiBk
YXRhIHsgbnVsbHB0ciB9OwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKTsKLSAg
ICB2b2lkIGRlc3Ryb3koKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlc3Ryb3koKTsKICAg
ICBib29sIGlzRHJhd2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6aXNEcmF3aW5nSXRlbSh0eXBlKCkpOyB9CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gISEoKnRoaXMpOyB9CkBAIC02OSwxMyArNzIsMTIgQEAgc3RydWN0IEl0ZW1IYW5k
bGUgewogI2VuZGlmCiAKICAgICBJdGVtVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8SXRlbVR5cGU+KGRhdGFbMF0pOyB9Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBzaXplb2YoSXRlbVR5cGUpICsgc2l6ZU9mSXRlbUluQnl0ZXModHlwZSgpKTsgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBpcygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9
PSBUOjppdGVtVHlwZTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQmIGdldCgpIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoaXM8VD4oKSk7Ci0gICAgICAgIHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDxUKj4oJmRhdGFbc2l6ZW9mKEl0ZW1UeXBlKV0pOworICAgICAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8VCo+KCZkYXRhW3NpemVvZih1aW50NjRfdCldKTsKICAgICB9CiAK
ICAgICB2b2lkIGNvcHlUbyhJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdDsKQEAgLTEzNCwz
MiArMTM2LDI4IEBAIHB1YmxpYzoKICAgICAvLyB3cml0YWJsZSBidWZmZXIgaGFuZGxlOyBpZiBy
ZW1haW5pbmcgYnVmZmVyIGNhcGFjaXR5IGlzIGluc3VmZmljaWVudCB0byBzdG9yZSB0aGUgaXRl
bSwgYQogICAgIC8vIG5ldyBidWZmZXIgd2lsbCBiZSBhbGxvY2F0ZWQgKGVpdGhlciBieSB0aGUg
SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQsIGlmIHNldCwgb3IgYnkgdGhlIGl0ZW0KICAgICAvLyBi
dWZmZXIgaXRzZWxmIGlmIHRoZXJlIGlzIG5vIGNsaWVudCkuIEl0ZW1zIGFyZSBwbGFjZWQgYmFj
ay10by1iYWNrIGluIHRoZXNlIGl0ZW0gYnVmZmVycywKLSAgICAvLyB3aXRoIGFuIEl0ZW1UeXBl
IHNlcGFyYXRpbmcgZWFjaCBpdGVtLgorICAgIC8vIHdpdGggcGFkZGluZyBhZnRlciBlYWNoIGl0
ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMuCiAgICAg
Ly8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1
c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKICAgICAvLyBpdGVt
IGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVmZmVyIGNv
bnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKICAgICAvLyBpdGVtLiBUaGlzIGVuY29kZWQg
ZGF0YSBpcyB0aGVuIGFwcGVuZGVkIHRvIHRoZSBpdGVtIGJ1ZmZlciwgd2l0aCBwYWRkaW5nIHRv
IGVuc3VyZSB0aGF0Ci0gICAgLy8gdGhlIHN0YXJ0IG9mIHRoaXMgZGF0YSBpcyBhbGlnbmVkIHRv
IDggYnl0ZXMsIGlmIG5lY2Vzc2FyeS4gV2hlbiBjb25zdW1pbmcgZW5jb2RlZCBpdGVtCi0gICAg
Ly8gZGF0YSwgYSBjb3JyZXNwb25kaW5nIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHdpbGwgYmUg
cmVxdWlyZWQgdG8gY29udmVydCB0aGlzIGVuY29kZWQgZGF0YQotICAgIC8vIGJhY2sgaW50byBh
biBpdGVtIG9mIHR5cGUgVC4KKyAgICAvLyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGlzIGRhdGEg
YXJlIGFsaWduZWQgdG8gOCBieXRlcywgaWYgbmVjZXNzYXJ5LiBXaGVuIGNvbnN1bWluZyBlbmNv
ZGVkCisgICAgLy8gaXRlbSBkYXRhLCBhIGNvcnJlc3BvbmRpbmcgSXRlbUJ1ZmZlclJlYWRpbmdD
bGllbnQgd2lsbCBiZSByZXF1aXJlZCB0byBjb252ZXJ0IHRoaXMgZW5jb2RlZAorICAgIC8vIGRh
dGEgYmFjayBpbnRvIGFuIGl0ZW0gb2YgdHlwZSBULgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IGNsYXNzLi4uIEFyZ3M+IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVl
IHx8ICFUOjppc0lubGluZUl0ZW0pOwotICAgICAgICBjb25zdGV4cHIgYXV0byBzaXplT2ZUeXBl
QW5kSXRlbSA9IHNpemVvZihJdGVtVHlwZSkgKyBzaXplb2YoVCk7CiAKICAgICAgICAgaWYgKCFU
Ojppc0lubGluZUl0ZW0gJiYgbV93cml0aW5nQ2xpZW50KSB7Ci0gICAgICAgICAgICBzdGF0aWMg
dWludDhfdCBpdGVtQnVmZmVyW3NpemVPZlR5cGVBbmRJdGVtXTsKLSAgICAgICAgICAgIGl0ZW1C
dWZmZXJbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihUOjppdGVtVHlwZSk7Ci0gICAgICAgICAg
ICBuZXcgKGl0ZW1CdWZmZXIgKyBzaXplb2YoSXRlbVR5cGUpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7Ci0gICAgICAgICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSBtX3dyaXRp
bmdDbGllbnQtPmVuY29kZUl0ZW0oeyBpdGVtQnVmZmVyIH0pKSB7Ci0gICAgICAgICAgICAgICAg
c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2hhcmVkQnVmZmVyLT5zaXplKCkgKyBzaXplb2Yo
SXRlbVR5cGUpICsgc2l6ZW9mKHNpemVfdCkgKyBhbGlnbm9mKHVpbnQ2NF90KSk7Ci0gICAgICAg
ICAgICAgICAgbV93cml0YWJsZUJ1ZmZlci5kYXRhW21fd3JpdHRlbk51bWJlck9mQnl0ZXNdID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwotICAgICAgICAgICAgICAgIGFwcGVu
ZERhdGFBbmRMZW5ndGgoc2hhcmVkQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1fd3JpdGFibGVC
dWZmZXIuZGF0YSArIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKyBzaXplb2YoSXRlbVR5cGUpKTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRpYyB1aW50OF90IHRlbXBvcmFyeUl0ZW1C
dWZmZXJbc2l6ZW9mKHVpbnQ2NF90KSArIHNpemVvZihUKV07CisgICAgICAgICAgICB0ZW1wb3Jh
cnlJdGVtQnVmZmVyWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOworICAg
ICAgICAgICAgbmV3ICh0ZW1wb3JhcnlJdGVtQnVmZmVyICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgYXBwZW5kRW5jb2RlZERh
dGEoeyB0ZW1wb3JhcnlJdGVtQnVmZmVyIH0pOworICAgICAgICAgICAgSXRlbUhhbmRsZSB7IHRl
bXBvcmFyeUl0ZW1CdWZmZXIgfS5kZXN0cm95KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplT2ZUeXBlQW5k
SXRlbSk7CisgICAgICAgIHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHBhZGRlZFNpemVPZlR5
cGVBbmRJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSkpOwogCiAgICAgICAgIGlmICghc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSkKICAgICAgICAgICAgIG1faXRlbXNUb0Rl
c3Ryb3lJbkFsbG9jYXRlZEJ1ZmZlcnMuYXBwZW5kKHsgJm1fd3JpdGFibGVCdWZmZXIuZGF0YVtt
X3dyaXR0ZW5OdW1iZXJPZkJ5dGVzXSB9KTsKQEAgLTE3NSwxMyArMTczLDEzIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBmb3JFYWNoSXRlbUJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IEl0ZW1CdWZm
ZXJIYW5kbGUmKT4mJikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN3YXBXcml0
YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZERhdGFBbmRMZW5ndGgoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgdWludDhf
dCopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRW5jb2RlZERhdGEoSXRlbUhhbmRs
ZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9pZCB1bmNoZWNr
ZWRBcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBhdXRvKiBzdGFydE9mSXRl
bSA9ICZtX3dyaXRhYmxlQnVmZmVyLmRhdGFbbV93cml0dGVuTnVtYmVyT2ZCeXRlc107CiAgICAg
ICAgIHN0YXJ0T2ZJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVDo6aXRlbVR5cGUpOwot
ICAgICAgICBuZXcgKHN0YXJ0T2ZJdGVtICsgc2l6ZW9mKEl0ZW1UeXBlKSkgVChzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICBtX3dyaXR0ZW5OdW1iZXJPZkJ5dGVzICs9IHNp
emVvZihJdGVtVHlwZSkgKyBzaXplT2ZJdGVtSW5CeXRlcyhUOjppdGVtVHlwZSk7CisgICAgICAg
IG5ldyAoc3RhcnRPZkl0ZW0gKyBzaXplb2YodWludDY0X3QpKSBUKHN0ZDo6Zm9yd2FyZDxBcmdz
PihhcmdzKS4uLik7CisgICAgICAgIG1fd3JpdHRlbk51bWJlck9mQnl0ZXMgKz0gcGFkZGVkU2l6
ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKFQ6Oml0ZW1UeXBlKTsKICAgICB9CiAKICAgICBJdGVtQnVm
ZmVyUmVhZGluZ0NsaWVudCogbV9yZWFkaW5nQ2xpZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4IGMyZGMwMjk5MGRlMjk5ZWM2MjFk
YjM5MGY5NDlmZTEzOWUyNWQyYTEuLmM5OGY4NDgzMGUwMTBhYWVlZWMyZmMyZTgxM2Q4MGNjYmI3
NGY2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CiAKLXNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQorc3RhdGljIHNpemVf
dCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkg
ewogICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CkBAIC0yNDQsNiArMjQ0LDExIEBAIGJvb2wgaXNE
cmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc2l6ZV90
IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQoreworICAgIHJl
dHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2
NF90KSwgc2l6ZU9mSXRlbUluQnl0ZXModHlwZSkpOworfQorCiBib29sIGlzSW5saW5lSXRlbShJ
dGVtVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggMDIzOTY1YTA2OTJkMTZhYzQ3Njc4OTE5OTNlNzc3MjMy
YjY2ZmQ2Ni4uNzhjODE3ZDBlYTE0NDRiODY5Y2EyNzhhMzIyYmE3OGVjMzQ4NTNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC05OCw3ICs5OCw3IEBAIGVudW0g
Y2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBBcHBseURldmljZVNjYWxlRmFjdG9yLAog
fTsKIAotV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlKTsK
K1dFQkNPUkVfRVhQT1JUIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoSXRl
bVR5cGUpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUpOwogV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0RyYXdpbmdJdGVtKEl0ZW1UeXBlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKaW5kZXggM2QwMmViNDg2ZWVjM2RmMTlhMmE3NmIwOTY1OThjYmI5Njc4YTFmZS4uN2Fj
OTYyMDEwM2U1N2MwN2JiMmVlZTMzZWJlZmIyYzQ1ZjAwN2RkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oCkBAIC04NCw3ICs4NCw5IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVBbmRDcmVhdGUo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCogaGFuZGxlTG9jYXRp
b24pCiAgICAgewogICAgICAgICBpZiAoYXV0byBpdGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVT
aW5nbGVPYmplY3Q8VD4oZGF0YSwgbGVuZ3RoKSkgewotICAgICAgICAgICAgbmV3IChoYW5kbGVM
b2NhdGlvbiArIHNpemVvZihXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUpKSBUKFdURk1v
dmUoKml0ZW0pKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZWJLaXQyIHNob3VsZCBub3QgbmVl
ZCB0byBrbm93IHRoYXQgdGhlIGZpcnN0IDggYnl0ZXMgYXQgdGhlIGhhbmRsZSBhcmUgcmVzZXJ2
ZWQgZm9yIHRoZSB0eXBlLgorICAgICAgICAgICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5
IHRvIGtlZXAgdGhpcyBrbm93bGVkZ2Ugd2l0aGluIGRpc3BsYXkgbGlzdCBjb2RlIGluIFdlYkNv
cmUuCisgICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0aW9uICsgc2l6ZW9mKHVpbnQ2NF90KSkg
VChXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgICAgICByZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24g
fX07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ZjY1YjRlMmEwNWE5MjM3
MmYzY2M2Y2JiNDkzMjQ3M2NlMjk3MzA1Li4zOTMwYmZlMTk4YWExNWU5MjE0Y2M2ZjI0ZWQ2OTU5
ZGMwMzRjMWRmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTEtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI2OTUyNSk6IE1hbnkgbGF5
b3V0IHRlc3RzIGNyYXNoIHdoZW4gcnVuIHVuZGVyIEFTYW4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODczMworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNzEyMDYyNzM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTExLTEwICBDYXJsb3MgQWxiZXJ0
byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFtSRUdS
RVNTU0lPTihyMjY5MzkwKSBTZXZlcmFsIGVkaXRpbmcvIHRlc3RzIGFyZSBmbGFreQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCmluZGV4IDQxNzAyNjQyYWRiNGNjMzYyZDU0OTdlODNkODg0ODI0NmJhNjg5YjEuLmM3NjJh
MTliOGNlZWE5MzhiYzVlZGY4MjRmYTVlOTMxMGNmMDEyZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlwZTo6U3Ryb2tlUGF0
aCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0aCwgc2l6ZW9mKHNpemVfdCkpOwot
ICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZihJdGVtVHlwZSkpIFN0cm9r
ZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pOwor
ICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRfdCkpIFN0cm9r
ZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzaXplX3QqPihkYXRhKV0pOwog
ICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19OwogICAgICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>