<?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>220381</bug_id>
          
          <creation_ts>2021-01-06 13:19:44 -0800</creation_ts>
          <short_desc>Use sendWithAsyncReply instead of dataCallback for icon loading</short_desc>
          <delta_ts>2021-01-11 15:30:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1717761</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-06 13:19:44 -0800</bug_when>
    <thetext>Use sendWithAsyncReply instead of dataCallback for icon loading</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717764</commentid>
    <comment_count>1</comment_count>
      <attachid>417122</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-06 13:27:59 -0800</bug_when>
    <thetext>Created attachment 417122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717766</commentid>
    <comment_count>2</comment_count>
      <attachid>417124</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-06 13:34:03 -0800</bug_when>
    <thetext>Created attachment 417124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717770</commentid>
    <comment_count>3</comment_count>
      <attachid>417127</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-06 14:01:53 -0800</bug_when>
    <thetext>Created attachment 417127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717771</commentid>
    <comment_count>4</comment_count>
      <attachid>417128</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-06 14:06:16 -0800</bug_when>
    <thetext>Created attachment 417128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717772</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-01-06 14:06:57 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717805</commentid>
    <comment_count>6</comment_count>
      <attachid>417139</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-06 16:40:11 -0800</bug_when>
    <thetext>Created attachment 417139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718657</commentid>
    <comment_count>7</comment_count>
      <attachid>417139</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-11 04:56:07 -0800</bug_when>
    <thetext>Comment on attachment 417139
Patch

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

&gt; Source/WebCore/loader/DocumentLoader.cpp:327
&gt; +        callback(nullptr);

Can callback modify m_iconLoaders?
Given we do m_iconLoaders.clear() below, can we do a std::exchange?

&gt; Source/WebCore/loader/DocumentLoader.cpp:2193
&gt; +    m_iconLoaders.set(WTFMove(iconLoader), WTFMove(completionHandler));

s/set/add/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718791</commentid>
    <comment_count>8</comment_count>
      <attachid>417405</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-11 13:00:35 -0800</bug_when>
    <thetext>Created attachment 417405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718800</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-11 13:36:46 -0800</bug_when>
    <thetext>Committed r271378: &lt;https://trac.webkit.org/changeset/271378&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417405.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718801</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-11 13:37:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/73011806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718835</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-01-11 15:30:43 -0800</bug_when>
    <thetext>http://trac.webkit.org/r271383</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417122</attachid>
            <date>2021-01-06 13:27:59 -0800</date>
            <delta_ts>2021-01-06 13:44:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220381-20210106132758.patch</filename>
            <type>text/plain</type>
            <size>34071</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhNGJhMmE1ZGE2MWRl
ZjJmNjQzNTRkMDExNTE5N2RlNGYxMjJkZS4uMTIxMzUwMmQ0ZGM4ZjFlMTA3N2RiNzgyMmE4MDBh
ZjUwMGJhNmY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTAxLTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNl
bmRXaXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGRhdGFDYWxsYmFjayBmb3IgaWNvbiBsb2FkaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzODEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWhhdmlv
ciBjb3ZlcmVkIGJ5IEljb25Mb2FkaW5nIEFQSSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9E
b2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3Rv
cExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkTG9hZGluZ0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDIx
LTAxLTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSB0aGUgdW51c2VkIFJlbmRlclN0eWxlOjpzZXRIYXNQc2V1ZG9TdHlsZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDU5MDcwN2JjNmFkYjhhNTdlNzllYjI2YTVjM2U5YWE0MjMyNWM4YTIuLjI3YWE3ZWVkNzk4
Mjc1ZGJiZTdiM2I3NjIzMDMwOWM4MTRmZTQwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMjEtMDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNr
IGZvciBpY29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSURhdGEuaDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYXliZUlu
c3RhbGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25M
b2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5p
c2hlZExvYWRpbmdJY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
Z0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjEtMDEtMDYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ug
c2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgaU9TLXNwZWNpZmljIEdlbmVyaWNDYWxsYmFj
a3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5NzRmYjI0ZTRkY2I0YTQxZmE4NWJi
ZmQ4MjAzNjJmOTZiZWQxYzQ1Li4yM2E3YmY4OTBjZGQwNjUyZTAyY2E2MDFhNjdlMzdkYjgwM2I2
MTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNrIGZvciBp
Y29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisKIDIwMjEtMDEt
MDQgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB1c2Vy
LXZpc2libGUgY29weXJpZ2h0IHN0cmluZ3MgdG8gaW5jbHVkZSAyMDIxCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyNmMyMTJhOTY5MGUzMGM5Y2IzZGNhMTli
YTkyZjJkZDEyNTVjY2QyLi42YTFkMGIzMjljZGUwOGVhYWY4ZDJhZDk4OWRiOTE0NDQ4YWUxZDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTMyMyw4ICsz
MjMsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeTo6Tm9uZSk7CiAg
ICAgfQogCi0gICAgZm9yIChhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA6IG1faWNvbkxvYWRlcnMu
dmFsdWVzKCkpCi0gICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVu
dGlmaWVyLCBudWxscHRyKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9pY29uTG9hZGVy
cy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CiAgICAgbV9pY29uTG9hZGVy
cy5jbGVhcigpOwogICAgIG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLmNsZWFyKCk7CiAgICAg
CkBAIC0yMTc0LDI1ICsyMTc0LDIzIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxv
YWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZv
ckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxv
YWRJZGVudGlmaWVyKTsKIAogICAgIC8vIElmIHRoZSBkZWNpc2lvbiB3YXMgbm90IHRvIGxvYWQg
b3IgdGhpcyBEb2N1bWVudExvYWRlciBpcyBhbHJlYWR5IGRldGFjaGVkLCB0aGVyZSBpcyBubyBs
b2FkIHRvIHBlcmZvcm0uCiAgICAgaWYgKCFkZWNpc2lvbiB8fCAhbV9mcmFtZSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAg
ICAvLyBJZiB0aGUgTGlua0ljb24gd2UganVzdCB0b29rIGlzIGVtcHR5LCB0aGVuIHRoZSBEb2N1
bWVudExvYWRlciBoYWQgYWxsIG9mIGl0cyBsb2FkZXJzIHN0b3BwZWQKICAgICAvLyB3aGlsZSB0
aGlzIGljb24gbG9hZCBkZWNpc2lvbiB3YXMgcGVuZGluZy4KICAgICAvLyBJbiB0aGlzIGNhc2Ug
d2UgbmVlZCB0byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBpY29uIGZpbmlzaGVkIGxvYWRp
bmcgd2l0aCBlbXB0eSBkYXRhLgotICAgIGlmIChpY29uLnVybC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbihuZXdDYWxsYmFja0lELCBudWxscHRyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaWNvbi51cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAgICBhdXRvIGljb25Mb2Fk
ZXIgPSBtYWtlVW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAgICAgYXV0byog
cmF3SWNvbkxvYWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7Ci0gICAgbV9pY29uTG9hZGVycy5zZXQo
V1RGTW92ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7CisgICAgbV9pY29uTG9hZGVycy5z
ZXQoV1RGTW92ZShpY29uTG9hZGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAg
ICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CkBAIC0yMjAyLDE1ICsyMjAwLDgg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBs
b2FkZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmUKICAgICAvLyBJZiB0aGUgRG9jdW1lbnRMb2FkZXIg
aGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNvbiBsb2FkcyBzaG91bGQgaGF2ZSBh
bHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVChtX2ZyYW1lKTsKIAotICAgIGF1dG8g
Y2FsbGJhY2tJZGVudGlmaWVyID0gbV9pY29uTG9hZGVycy50YWtlKCZsb2FkZXIpOwotICAgIG5v
dGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCBidWZmZXIpOwotfQot
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCi17Ci0gICAgUkVMRUFT
RV9BU1NFUlQoY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX2ZyYW1l
KTsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5maW5pc2hlZExvYWRpbmdJY29uKGNh
bGxiYWNrSWRlbnRpZmllciwgYnVmZmVyKTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1faWNv
bkxvYWRlcnMudGFrZSgmbG9hZGVyKSkKKyAgICAgICAgY2FsbGJhY2soYnVmZmVyKTsKIH0KIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGlzcGF0Y2hPbmxvYWRFdmVudHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBhYWU5YjQ5NzE2Y2NmY2JhODJhYjg3MzhlZjVj
YTliN2NmYjgzNWM3Li5iNjNkMTdiMWZiM2I2ZDU0MjUxYjQ4NDU0YmIyMDI1OGI0YTIyMTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMzg3LDcgKzM4Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwogCiAg
ICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CiAKICAg
ICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xp
bmtJY29uczsgfQpAQCAtNTAzLDggKzUwMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVja0lmTmVlZGVkKCk7CiAgICAgdm9pZCBiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQo
KTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciopOwotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01B
TklGRVNUKQogICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVz
dCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZl
c3Q+KTsKICNlbmRpZgpAQCAtNjA1LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgdWludDY0X3Q+IG1faWNvbkxvYWRlcnM7CisgICAg
SGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4g
bV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDk1NGE0ZDU3MmNmYjVmZWU3
NGQ5OWRhNjhlMjIzMjA3NzdlZDA4ZGYuLjE4YTFmMWUwODdiM2E3ZWFlYWE0NjNmMzQ5ZDFhYTdl
ZWI5NGFhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0zNjEsNyArMzYxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0b3JlU2Ny
b2xsUG9zaXRpb24oKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+
PiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90LCBT
aGFyZWRCdWZmZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVXaW5kb3coRE9N
V2luZG93JikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDQzNzAzNzU2YTU2YjA4NWRkYzExOTNhYjllNmY3MDVhMTI1MzY0ZmIuLmFkN2E3MjRiZWIy
ODg5M2UxYzUwNDM5ZmQ3NzYzZDA3MGZjOGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtOTUsNiArOTUsMTIgQEAgZGVmIGZ1bmN0aW9uX3BhcmFtZXRl
cl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29uc3QgJXMmJyAlIHR5cGUKIAogCitk
ZWYgcmVwbHlfdHlwZSh0eXBlKToKKyAgICBpZiB0eXBlID09ICdJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UnOgorICAgICAgICByZXR1cm4gJ0lQQzo6RGF0YVJlZmVyZW5jZScKKyAgICBy
ZXR1cm4gdHlwZQorCisKIGRlZiByZXBseV9wYXJhbWV0ZXJfdHlwZSh0eXBlKToKICAgICByZXR1
cm4gJyVzJicgJSB0eXBlCiAKQEAgLTEwNyw3ICsxMTMsNyBAQCBkZWYgYXJndW1lbnRzX3R5cGUo
bWVzc2FnZSk6CiAgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAnLCAnLmpvaW4oZnVuY3Rp
b25fcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUsIHBhcmFtZXRlci5raW5kKSBmb3IgcGFy
YW1ldGVyIGluIG1lc3NhZ2UucGFyYW1ldGVycykKIAogCi1kZWYgcmVwbHlfdHlwZShtZXNzYWdl
KToKK2RlZiByZXBseV90dXBsZShtZXNzYWdlKToKICAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+
JyAlICgnLCAnLmpvaW4ocmVwbHlfcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUpIGZvciBw
YXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKIAogCkBAIC0xNDksNyArMTU1
LDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdl
KToKICAgICAgICAgc2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4
LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJz
XQogICAgICAgICBjb21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpv
aW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1l
c3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gJywgJy5qb2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5
X3BhcmFtZXRlcnNdKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lk
IGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0
YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicg
JSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUpKQpAQCAtMTYxLDcgKzE2Nyw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlv
bihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJz
KToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBsZXRpb25faGFu
ZGxlcl9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbicpCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBSZXBseSA9ICVzO1xuJyAlIHJlcGx5X3R5cGUo
bWVzc2FnZSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBSZXBseSA9ICVzO1xu
JyAlIHJlcGx5X3R1cGxlKG1lc3NhZ2UpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNp
bmcgUmVwbHlBcmd1bWVudHMgPSAlcztcbicgJSByZXBseV9hcmd1bWVudHNfdHlwZShtZXNzYWdl
KSkKIAogICAgIGlmIGxlbihmdW5jdGlvbl9wYXJhbWV0ZXJzKToKQEAgLTgyMSwxMCArODI3LDEw
IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCiAKICAg
ICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAg
ICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFtt
b3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQorICAg
ICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFtt
b3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnNdKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbGxSZXBs
eShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKVxue1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgICAg
ICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBPcHRpb25hbDwlcz4gJXM7XG4nICUgKHgudHlwZSwgeC5uYW1l
KSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIE9wdGlvbmFsPCVzPiAl
cztcbicgJSAocmVwbHlfdHlwZSh4LnR5cGUpLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtODMyLDcg
KzgzOCw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdXVEZNb3ZlKColcyknICUgKCcpLCBXVEZNb3Zl
KConLmpvaW4oeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycykpKQogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG59XG5cbicpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57XG4gICAgY29tcGxldGlvbkhhbmRsZXIoJyAl
IG1vdmVfcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9p
bihbJ0lQQzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4
IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJywgJy5qb2luKFsnSVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50
eXBlKSArICc+OjpjcmVhdGUoKScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkp
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKIAogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5u
YW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCBjNzgyMzE2ZjMwNTdh
M2NhZjlkM2UyMDc3YzgxMzI1NTNlNjk3NTZhLi42NTcxMjM1ODhiYTk0ZGI1MDNiMzU3OWU0MjNl
ZjM0OGZhZGEzZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNywx
MSArMjcsMTkgQEAKICNpbmNsdWRlICJBUElEYXRhLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgQVBJIHsKIAorUmVmUHRyPERhdGE+
IERhdGE6OmNyZWF0ZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgaWYg
KGRhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cit9CisKIHZvaWQgRGF0YTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVu
Y2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5oCmluZGV4IGFhYzFjOWI5Nzk3OWUxZmU5
NjBlZTJkYjc5YmY5ODE4NmE4ZGMyZjIuLjkyMWE1MjVhZGI0ZTljMzJmMWU1Y2Y0ZWQ1MTFiNzkw
YzAxOTU0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuaApAQCAtNDQsNyArNDQsNyBA
QCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRGF0YSA6IHB1YmxpYyBPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpEYXRhPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqRnJlZURh
dGFGdW5jdGlvbikodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGNvbnRleHQpOworICAgIHVz
aW5nIEZyZWVEYXRhRnVuY3Rpb24gPSB2b2lkICgqKSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9p
ZCogY29udGV4dCk7CiAKICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZVdpdGhvdXRDb3B5aW5n
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3Qgc2l6ZSwgRnJlZURhdGFGdW5jdGlv
biBmcmVlRGF0YUZ1bmN0aW9uLCBjb25zdCB2b2lkKiBjb250ZXh0KQogICAgIHsKQEAgLTUzLDE0
ICs1MywxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZShjb25zdCB1
bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICB1bnNpZ25l
ZCBjaGFyICpjb3BpZWRCeXRlcyA9IDA7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvcGllZEJ5
dGVzID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoc2l6ZSkgewogICAgICAgICAgICAgY29waWVk
Qnl0ZXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZmFzdE1hbGxvYyhzaXplKSk7CiAg
ICAgICAgICAgICBtZW1jcHkoY29waWVkQnl0ZXMsIGJ5dGVzLCBzaXplKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhjb3BpZWRCeXRlcywgc2l6ZSwg
ZmFzdEZyZWVCeXRlcywgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhj
b3BpZWRCeXRlcywgc2l6ZSwgZmFzdEZyZWVCeXRlcywgbnVsbHB0cik7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBSZWY8RGF0YT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
YnVmZmVyKQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjcmVhdGUo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfQogCisgICAgc3RhdGljIFJlZlB0
cjxEYXRhPiBjcmVhdGUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxEYXRhPiBjcmVhdGVXaXRob3V0Q29weWluZyhS
ZXRhaW5QdHI8TlNEYXRhPik7CiAjZW5kaWYKQEAgLTEwMCwxMSArMTAyLDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBmYXN0RnJlZShzdGF0aWNfY2FzdDx2b2lkKj4oYnl0ZXMpKTsKICAgICB9
CiAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtX2J5dGVzOwotICAgIHNpemVfdCBtX3NpemU7
CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogbV9ieXRlcyB7IG51bGxwdHIgfTsKKyAgICBzaXpl
X3QgbV9zaXplIHsgMCB9OwogCi0gICAgRnJlZURhdGFGdW5jdGlvbiBtX2ZyZWVEYXRhRnVuY3Rp
b247Ci0gICAgY29uc3Qgdm9pZCogbV9jb250ZXh0OworICAgIEZyZWVEYXRhRnVuY3Rpb24gbV9m
cmVlRGF0YUZ1bmN0aW9uIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IHZvaWQqIG1fY29udGV4dCB7
IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCA3MzdiNjI1ODE5
ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5Li5iMWIxMWY1YzUxYTJhNDY4ZWEwYWNhNTJl
MjYzNGYwZWJmYWEyMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBJY29uTG9hZGlu
Z0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxvYWRpbmdDbGllbnQoKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6
OkxpbmtJY29uJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6RnVuY3Rpb248dm9p
ZChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGVjYzUwMDZjODZkYjI0MWVkOGZiZjhj
YmNjMzY3ZjRkMGEzMWQ0ZmUuLjE0MzE4ZTU3OGY4YzQwZmUyMzExZjc5YjZhZDY4NmM0NGRhMzFk
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC05MjYs
MTggKzkyNiwxNSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBw
cml2YXRlOgogICAgICAgICB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25IYW5kbGVy
KShOU0RhdGEqKTsKIAotICAgICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3Qg
V2ViQ29yZTo6TGlua0ljb24mIGxpbmtJY29uLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGdldExv
YWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGxpbmtJY29uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBS
ZXRhaW5QdHI8X1dLTGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19X
S0xpbmtJY29uUGFyYW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsK
IAogICAgICAgICAgICAgW21fd2tWaWV3IF9zaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOnBh
cmFtZXRlcnMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJY29uTG9hZENvbXBsZXRpb25I
YW5kbGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgICAgICBpZiAobG9hZENvbXBs
ZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFts
b2FkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkIChOU0RhdGEgKik+KGxvYWRDb21w
bGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFkYXRhKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFuZGxlcihuaWwpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFu
ZGxlcih3cmFwcGVyKCpkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIobG9hZENvbXBsZXRpb25I
YW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
Q29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0ljb25Mb2FkaW5nRGVsZWdhdGUuaAppbmRleCAwNzQzNzkwNGYxZTQyMzBiMzE1ODJhOWRmNDJj
MjNjMTRkNjA1YWQ3Li4zN2U4Yzc1ZmYzYmJhZjE2YTc4NzAzYzZiZmQ1NmYwNzdlYzcxY2Y2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVn
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH5JY29uTG9hZGluZ0Ns
aWVudCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6RnVuY3Rpb248dm9pZChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKT4mJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNv
bihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik+JiYpIG92ZXJyaWRlOwogCiAgICAgICAg
IEljb25Mb2FkaW5nRGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUu
bW0KaW5kZXggODI3MDdmOGY2MzFiOTlhN2ZhNGZhMzVlY2MxYWQ0NDhmM2VkZjBiOC4uOGY5N2Rk
ZjVmM2MwZDg5NWY2MGJiZDg5M2RiNTM4ZTZmMzExZjI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCkBAIC03MCw3ICs3
MCw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+SWNvbkxvYWRp
bmdDbGllbnQoKQogCiB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKShO
U0RhdGEqKTsKIAotdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24s
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpEYXRh
KiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBsaW5rSWNvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyc0NvbXBsZXRp
b25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpAQCAtODgs
MTEgKzg4LDggQEAgdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3IKICAgICBbZGVsZWdhdGUgd2ViVmll
dzptX2ljb25Mb2FkaW5nRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFt
ZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJY29uTG9hZENv
bXBsZXRpb25IYW5kbGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmIChsb2FkQ29tcGxldGlvbkhh
bmRsZXIpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIobG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBk
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSB8fCAhZGF0YSkKLSAgICAg
ICAgICAgICAgICAgICAgbG9hZENvbXBsZXRpb25IYW5kbGVyKG5pbCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBl
cigqZGF0YSkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEq
IGRhdGEpIHsKKyAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihk
YXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDNhNDRlMmMxMTg2YjU1MzM2MjVlYjU1NWFkNGJjNjg0YmJkNWFkNWMuLjAw
YTYwNzZmMWZiYTVmMWJlY2RkYmNjMDliNmIzOGRhNzU5MzlmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTQwMSwyNSArOTQwMSwyMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24s
IENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIpCiB7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudC0+
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0
cjxXZWJQYWdlUHJveHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oV1RGOjpGdW5jdGlvbjx2b2lk
IChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKSB7
CisgICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkSWRlbnRpZmllcl0gKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spIHsKICAgICAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2tGdW5j
dGlvbikKLSAgICAgICAgICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247Ci0g
ICAgICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENh
bGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldExv
YWREZWNpc2lvbkZvckljb24iX3MpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsKLQotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lz
aW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVudGlmaWVyKSk7CisgICAgICAgIGlm
ICghY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm4gc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBsb2FkSWRlbnRp
ZmllciksIFtdKGF1dG8pIHsgfSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmll
ciksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6
Y3JlYXRlKGljb25EYXRhKS5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKLXsKLSAgICBkYXRhQ2FsbGJhY2soZGF0
YSwgY2FsbGJhY2tJRCk7Ci19Ci0KIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gV2ViUGFnZVByb3h5Ojp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkKIHsKICAgICBy
ZXR1cm4gcGFnZUNsaWVudCgpLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTQxNjU5ZDlkMzM2MzA1YWEwNjFj
OWM4NzdjNjMzNmQxOTE0MzE3OS4uNjMwYjU2ZmU3ZjBhZjBkNDJmN2Y1MDcyMWEzOWFmYWQ0MGQ0
OGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NDgsNyAr
MTU0OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwog
CiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29u
JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2Vi
S2l0OjpDYWxsYmFja0lELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHZvaWQg
c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgzZWIwYzczNWJjNjgyZmJkNDk0NzFjZTRlOWIyNzFm
OWFkYmIwMTIuLjNhYzJjZjE5MGJiODAxZmVlYWM3NzA1ZjFiZGJjZmIwMmZkMzhhZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTUwOCw3ICs1MDgsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpCiAKICAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHN0cnVjdCBX
ZWJDb3JlOjpMaW5rSWNvbiBpY29uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAg
ICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggYjBiNGY1NzNiMDUxYWY4MzVmNjU2ODQyN2E1ZmI4NDU5NDEwYWNmNy4uMGZj
YzhjZGY3OTJkZDcxYmM4ZjQ0YmIzNzAzYzZlNmQzZDAzODg0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC0xOTA5LDE3ICsxOTA5LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb3IKICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGljb24uZmlyc3QsIENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGlj
b24uc2Vjb25kKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKiBkYXRh
KQotewotICAgIGF1dG8gY2FsbGJhY2tJRCA9IENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGNhbGxi
YWNrSWRlbnRpZmllcik7Ci0gICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdl
KCkgfSkgewotICAgICAgICBpZiAoZGF0YSkKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7ICpk
YXRhIH0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgfSkpOwot
ICAgIH0KLX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlV2luZG93KERP
TVdpbmRvdyYgd2luZG93KQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NTgxNTMyYTE2YmQxYmNmMTQ2OGUz
NWI5MTExNmYzZWY3ZjEwN2YuLjlkOWQ5OWNjNGE1Y2E2NTA0M2FiNWMyZTA5MzYxMTg1NzYxMDg5
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNjcsNyArMjY3LDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIGZpbmFsOwogCiAgICAg
dm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNv
cmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciopIGZpbmFsOwogCiAgICAgdm9pZCBkaWRDcmVhdGVXaW5kb3coV2ViQ29yZTo6RE9NV2luZG93
JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggM2YyNmRhMjM2N2RjZTI1MjQ1MTQ2ZjNhZTNjNzI3MGEwZDExYWVkOC4uYTkxNjU4
YjcwMDkxNzQxZGU4YTBiN2U1Y2ZkYTc3MmFjMWQ1MTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY1NDcsMTAgKzY1NDcsMTUgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFn
ZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxv
YWRJZGVudGlmaWVyLCBPcHRpb25hbENhbGxiYWNrSUQgbmV3Q2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lE
IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkpCi0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgbmV3Q2FsbGJh
Y2tJRC50b0ludGVnZXIoKSk7CisgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOworICAgIGlmICghZG9jdW1l
bnRMb2FkZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAg
ZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJ
ZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOworICAgIH0pOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRp
bmdDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggOGJhOWY3MWI0NjI1YjkxNWFlNWQ5OGJjMWMzN2JlNmQyNjQwYTcwMC4uOWZkZjc3MzE0MWM5
NGEyMTkyZTViOTVmOWU1MzI0ZTMxODk1M2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTE5OSw3ICsxMTk5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBP
cHRpb25hbENhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihi
b29sIGRlY2lzaW9uLCBDYWxsYmFja0lELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKICAgICB2b2lkIHNldFVzZUljb25M
b2FkaW5nQ2xpZW50KGJvb2wpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE3YzgwMjQ1ZDlhZWI0Mjg2ZGJhYWE3NmIwMDNm
MzdkNmVlMGY1NjQuLmMxNmRiYzY5NmUyMDMwZjg5NDY4NjIyZmY2YjRmN2YyODNmMmE0ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtNTQwLDcgKzU0MCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAg
ICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAot
ICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxs
YmFja0lEIGxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxs
YmFja0lEKQorICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2Vi
S2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGljb25EYXRhKSBBc3luYwogICAgIFNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJv
b2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDJhZWU4NzI0YWYzYTdkY2Q1ZTJhYjAxYjM0NTMwZGZkZTkx
NjRhMzYuLjcwMWFmODNhMmNiOWU0OWNhZGM2YjY0MWUwMGFiNjcwMjk1Y2M3NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL0hhc2hN
YXAuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgorI2ltcG9ydCA8d3RmL1dlYWtQdHIuaD4KIAogQGNsYXNzIFdlYkRvd25sb2FkOwogQGNs
YXNzIFdlYkZyYW1lOwpAQCAtNTIsNyArNTMsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIAotY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgeworY2xhc3MgV2ViRnJhbWVMb2FkZXJD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIGV4cGxpY2l0IFdl
YkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiA9IG51bGxwdHIpOwogICAgIH5XZWJGcmFtZUxv
YWRlckNsaWVudCgpOwpAQCAtMjQ2LDkgKzI0Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5k
SDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25k
cywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBnZXRM
b2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJ
Y29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbih1
aW50NjRfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopOwogCi0gICAgdWludDY0X3QgbV9h
Y3RpdmVJY29uTG9hZENhbGxiYWNrSUQgeyAwIH07CisgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsg
ZmFsc2UgfTsKIAogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gbV93ZWJGcmFtZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAzMGVlZjRkZDk2MzcyMTMyZjFkN2E5MWYwMDU1MjE4
Y2ExODFlODk0Li5mZmVjOGM0YmQ1ZTUzMTA3N2E0MmVlMDJlNmFiNjkwNGIwMTVhOTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMwMSw4ICsxMzAxLDYgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZCgpCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogewotICAgIG1fYWN0aXZl
SWNvbkxvYWRDYWxsYmFja0lEID0gMDsKLQogICAgIGlmICghW21fd2ViRnJhbWUuZ2V0KCkgX2Rh
dGFTb3VyY2VdKSB7CiAgICAgICAgIEFTU0VSVCghY29yZShtX3dlYkZyYW1lLmdldCgpKS0+dHJl
ZSgpLmNoaWxkQ291bnQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIxOTgsNyArMjE5Niw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghV2Vi
S2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfREVGQVVMVF9JQ09O
X0xPQURJTkcpKSB7CiAgICAgICAgIGZvciAoYXV0byYgaWNvbiA6IGljb25zKQotICAgICAgICAg
ICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFsc2UsIGljb24u
c2Vjb25kLCAwKTsKKyAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGZhbHNlLCBpY29uLnNlY29uZCwgW10oYXV0bykgeyB9KTsKIAogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMjIxMCwyOSArMjIwOCwzMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvcgogCiAgICAgaWYgKGRpc2FsbG93ZWREdWVUb0ltYWdlTG9hZFNldHRpbmdzIHx8ICFmcmFt
ZS0+aXNNYWluRnJhbWUoKSB8fCAhZG9jdW1lbnRMb2FkZXItPnVybCgpLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSB8fCAhW1dlYlZpZXcgX2lzSWNvbkxvYWRpbmdFbmFibGVkXSkgewogICAgICAg
ICBmb3IgKGF1dG8mIGljb24gOiBpY29ucykKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5k
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBpY29uLnNlY29uZCwgMCk7CisgICAgICAg
ICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNv
bi5zZWNvbmQsIFtdKGF1dG8pIHsgfSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEFTU0VSVCghbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOworICAgIEFTU0VSVCghbV9sb2Fk
aW5nSWNvbik7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXZWJLaXQgMSwg
d2hpY2ggb25seSBzdXBwb3J0cyBvbmUgaWNvbiBwZXIgcGFnZSBVUkwsIHRyYWRpdGlvbmFsbHkg
aGFzIHByZWZlcnJlZCB0aGUgbGFzdCBpY29uIGluIGNhc2Ugb2YgbXVsdGlwbGUgaWNvbnMgbGlz
dGVkLgogICAgIC8vIFRvIHByZXNlcnZlIHRoYXQgYmVoYXZpb3Igd2Ugd2FsayB0aGUgbGlzdCBi
YWNrd2FyZHMuCiAgICAgZm9yIChhdXRvIGljb24gPSBpY29ucy5yYmVnaW4oKTsgaWNvbiAhPSBp
Y29ucy5yZW5kKCk7ICsraWNvbikgewotICAgICAgICBpZiAoaWNvbi0+Zmlyc3QudHlwZSAhPSBX
ZWJDb3JlOjpMaW5rSWNvblR5cGU6OkZhdmljb24gfHwgbV9hY3RpdmVJY29uTG9hZENhbGxiYWNr
SUQpIHsKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGZhbHNlLCBpY29uLT5zZWNvbmQsIDApOworICAgICAgICBpZiAoaWNvbi0+Zmlyc3QudHlw
ZSAhPSBXZWJDb3JlOjpMaW5rSWNvblR5cGU6OkZhdmljb24gfHwgbV9sb2FkaW5nSWNvbikgewor
ICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFs
c2UsIGljb24tPnNlY29uZCwgW10oYXV0bykgeyB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQgPSAxOwotICAg
ICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29u
LT5zZWNvbmQsIG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEKTsKKyAgICAgICAgbV9sb2FkaW5n
SWNvbiA9IHRydWU7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZmluaXNo
ZWRMb2FkaW5nSWNvbihidWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAjZWxzZQogICAgIC8v
IE5vIFdlYkNvcmUgaWNvbiBsb2FkaW5nIG9uIGlPUwogICAgIGZvciAoYXV0byYgaWNvbiA6IGlj
b25zKQotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihm
YWxzZSwgaWNvbi5zZWNvbmQsIDApOworICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIFtdKGF1dG8pIHsgfSk7CiAjZW5k
aWYKIH0KIApAQCAtMjI2MCwxMiArMjI2MiwxMSBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJ
bWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8vICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciog
aWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29u
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgQVNTRVJUKG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEKTsKLSAgICBBU1NF
UlQoY2FsbGJhY2tJRCA9IG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEKTsKLSAgICBtX2FjdGl2
ZUljb25Mb2FkQ2FsbGJhY2tJRCA9IDA7CisgICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOworICAg
IG1fbG9hZGluZ0ljb24gPSBmYWxzZTsKIAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIGlmICghd2ViVmlldykK
</data>
<flag name="commit-queue"
          id="434766"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417124</attachid>
            <date>2021-01-06 13:34:03 -0800</date>
            <delta_ts>2021-01-06 14:14:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220381-20210106133402.patch</filename>
            <type>text/plain</type>
            <size>34310</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhNGJhMmE1ZGE2MWRl
ZjJmNjQzNTRkMDExNTE5N2RlNGYxMjJkZS4uMTIxMzUwMmQ0ZGM4ZjFlMTA3N2RiNzgyMmE4MDBh
ZjUwMGJhNmY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTAxLTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNl
bmRXaXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGRhdGFDYWxsYmFjayBmb3IgaWNvbiBsb2FkaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzODEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWhhdmlv
ciBjb3ZlcmVkIGJ5IEljb25Mb2FkaW5nIEFQSSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9E
b2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3Rv
cExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkTG9hZGluZ0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDIx
LTAxLTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSB0aGUgdW51c2VkIFJlbmRlclN0eWxlOjpzZXRIYXNQc2V1ZG9TdHlsZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDU5MDcwN2JjNmFkYjhhNTdlNzllYjI2YTVjM2U5YWE0MjMyNWM4YTIuLjI3YWE3ZWVkNzk4
Mjc1ZGJiZTdiM2I3NjIzMDMwOWM4MTRmZTQwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMjEtMDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNr
IGZvciBpY29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSURhdGEuaDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYXliZUlu
c3RhbGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25M
b2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5p
c2hlZExvYWRpbmdJY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
Z0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjEtMDEtMDYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ug
c2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgaU9TLXNwZWNpZmljIEdlbmVyaWNDYWxsYmFj
a3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5NzRmYjI0ZTRkY2I0YTQxZmE4NWJi
ZmQ4MjAzNjJmOTZiZWQxYzQ1Li4yM2E3YmY4OTBjZGQwNjUyZTAyY2E2MDFhNjdlMzdkYjgwM2I2
MTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNrIGZvciBp
Y29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisKIDIwMjEtMDEt
MDQgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB1c2Vy
LXZpc2libGUgY29weXJpZ2h0IHN0cmluZ3MgdG8gaW5jbHVkZSAyMDIxCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyNmMyMTJhOTY5MGUzMGM5Y2IzZGNhMTli
YTkyZjJkZDEyNTVjY2QyLi42YTFkMGIzMjljZGUwOGVhYWY4ZDJhZDk4OWRiOTE0NDQ4YWUxZDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTMyMyw4ICsz
MjMsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeTo6Tm9uZSk7CiAg
ICAgfQogCi0gICAgZm9yIChhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA6IG1faWNvbkxvYWRlcnMu
dmFsdWVzKCkpCi0gICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVu
dGlmaWVyLCBudWxscHRyKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9pY29uTG9hZGVy
cy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CiAgICAgbV9pY29uTG9hZGVy
cy5jbGVhcigpOwogICAgIG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLmNsZWFyKCk7CiAgICAg
CkBAIC0yMTc0LDI1ICsyMTc0LDIzIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxv
YWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZv
ckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxv
YWRJZGVudGlmaWVyKTsKIAogICAgIC8vIElmIHRoZSBkZWNpc2lvbiB3YXMgbm90IHRvIGxvYWQg
b3IgdGhpcyBEb2N1bWVudExvYWRlciBpcyBhbHJlYWR5IGRldGFjaGVkLCB0aGVyZSBpcyBubyBs
b2FkIHRvIHBlcmZvcm0uCiAgICAgaWYgKCFkZWNpc2lvbiB8fCAhbV9mcmFtZSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAg
ICAvLyBJZiB0aGUgTGlua0ljb24gd2UganVzdCB0b29rIGlzIGVtcHR5LCB0aGVuIHRoZSBEb2N1
bWVudExvYWRlciBoYWQgYWxsIG9mIGl0cyBsb2FkZXJzIHN0b3BwZWQKICAgICAvLyB3aGlsZSB0
aGlzIGljb24gbG9hZCBkZWNpc2lvbiB3YXMgcGVuZGluZy4KICAgICAvLyBJbiB0aGlzIGNhc2Ug
d2UgbmVlZCB0byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBpY29uIGZpbmlzaGVkIGxvYWRp
bmcgd2l0aCBlbXB0eSBkYXRhLgotICAgIGlmIChpY29uLnVybC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbihuZXdDYWxsYmFja0lELCBudWxscHRyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaWNvbi51cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAgICBhdXRvIGljb25Mb2Fk
ZXIgPSBtYWtlVW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAgICAgYXV0byog
cmF3SWNvbkxvYWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7Ci0gICAgbV9pY29uTG9hZGVycy5zZXQo
V1RGTW92ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7CisgICAgbV9pY29uTG9hZGVycy5z
ZXQoV1RGTW92ZShpY29uTG9hZGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAg
ICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CkBAIC0yMjAyLDE1ICsyMjAwLDgg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBs
b2FkZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmUKICAgICAvLyBJZiB0aGUgRG9jdW1lbnRMb2FkZXIg
aGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNvbiBsb2FkcyBzaG91bGQgaGF2ZSBh
bHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVChtX2ZyYW1lKTsKIAotICAgIGF1dG8g
Y2FsbGJhY2tJZGVudGlmaWVyID0gbV9pY29uTG9hZGVycy50YWtlKCZsb2FkZXIpOwotICAgIG5v
dGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCBidWZmZXIpOwotfQot
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCi17Ci0gICAgUkVMRUFT
RV9BU1NFUlQoY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX2ZyYW1l
KTsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5maW5pc2hlZExvYWRpbmdJY29uKGNh
bGxiYWNrSWRlbnRpZmllciwgYnVmZmVyKTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1faWNv
bkxvYWRlcnMudGFrZSgmbG9hZGVyKSkKKyAgICAgICAgY2FsbGJhY2soYnVmZmVyKTsKIH0KIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGlzcGF0Y2hPbmxvYWRFdmVudHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBhYWU5YjQ5NzE2Y2NmY2JhODJhYjg3MzhlZjVj
YTliN2NmYjgzNWM3Li5iNjNkMTdiMWZiM2I2ZDU0MjUxYjQ4NDU0YmIyMDI1OGI0YTIyMTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMzg3LDcgKzM4Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwogCiAg
ICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CiAKICAg
ICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xp
bmtJY29uczsgfQpAQCAtNTAzLDggKzUwMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVja0lmTmVlZGVkKCk7CiAgICAgdm9pZCBiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQo
KTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciopOwotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01B
TklGRVNUKQogICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVz
dCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZl
c3Q+KTsKICNlbmRpZgpAQCAtNjA1LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgdWludDY0X3Q+IG1faWNvbkxvYWRlcnM7CisgICAg
SGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4g
bV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDk1NGE0ZDU3MmNmYjVmZWU3
NGQ5OWRhNjhlMjIzMjA3NzdlZDA4ZGYuLjE4YTFmMWUwODdiM2E3ZWFlYWE0NjNmMzQ5ZDFhYTdl
ZWI5NGFhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0zNjEsNyArMzYxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0b3JlU2Ny
b2xsUG9zaXRpb24oKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+
PiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90LCBT
aGFyZWRCdWZmZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVXaW5kb3coRE9N
V2luZG93JikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDQzNzAzNzU2YTU2YjA4NWRkYzExOTNhYjllNmY3MDVhMTI1MzY0ZmIuLmFkN2E3MjRiZWIy
ODg5M2UxYzUwNDM5ZmQ3NzYzZDA3MGZjOGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtOTUsNiArOTUsMTIgQEAgZGVmIGZ1bmN0aW9uX3BhcmFtZXRl
cl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29uc3QgJXMmJyAlIHR5cGUKIAogCitk
ZWYgcmVwbHlfdHlwZSh0eXBlKToKKyAgICBpZiB0eXBlID09ICdJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UnOgorICAgICAgICByZXR1cm4gJ0lQQzo6RGF0YVJlZmVyZW5jZScKKyAgICBy
ZXR1cm4gdHlwZQorCisKIGRlZiByZXBseV9wYXJhbWV0ZXJfdHlwZSh0eXBlKToKICAgICByZXR1
cm4gJyVzJicgJSB0eXBlCiAKQEAgLTEwNyw3ICsxMTMsNyBAQCBkZWYgYXJndW1lbnRzX3R5cGUo
bWVzc2FnZSk6CiAgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAnLCAnLmpvaW4oZnVuY3Rp
b25fcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUsIHBhcmFtZXRlci5raW5kKSBmb3IgcGFy
YW1ldGVyIGluIG1lc3NhZ2UucGFyYW1ldGVycykKIAogCi1kZWYgcmVwbHlfdHlwZShtZXNzYWdl
KToKK2RlZiByZXBseV90dXBsZShtZXNzYWdlKToKICAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+
JyAlICgnLCAnLmpvaW4ocmVwbHlfcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUpIGZvciBw
YXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKIAogCkBAIC0xNDksNyArMTU1
LDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdl
KToKICAgICAgICAgc2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4
LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJz
XQogICAgICAgICBjb21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpv
aW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1l
c3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gJywgJy5qb2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5
X3BhcmFtZXRlcnNdKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lk
IGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0
YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicg
JSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUpKQpAQCAtMTYxLDcgKzE2Nyw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlv
bihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJz
KToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBsZXRpb25faGFu
ZGxlcl9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbicpCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBSZXBseSA9ICVzO1xuJyAlIHJlcGx5X3R5cGUo
bWVzc2FnZSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBSZXBseSA9ICVzO1xu
JyAlIHJlcGx5X3R1cGxlKG1lc3NhZ2UpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNp
bmcgUmVwbHlBcmd1bWVudHMgPSAlcztcbicgJSByZXBseV9hcmd1bWVudHNfdHlwZShtZXNzYWdl
KSkKIAogICAgIGlmIGxlbihmdW5jdGlvbl9wYXJhbWV0ZXJzKToKQEAgLTgyMSwxMCArODI3LDEw
IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCiAKICAg
ICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAg
ICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFtt
b3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQorICAg
ICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFtt
b3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnNdKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbGxSZXBs
eShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKVxue1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgICAg
ICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBPcHRpb25hbDwlcz4gJXM7XG4nICUgKHgudHlwZSwgeC5uYW1l
KSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIE9wdGlvbmFsPCVzPiAl
cztcbicgJSAocmVwbHlfdHlwZSh4LnR5cGUpLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtODMyLDcg
KzgzOCw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdXVEZNb3ZlKColcyknICUgKCcpLCBXVEZNb3Zl
KConLmpvaW4oeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycykpKQogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG59XG5cbicpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57XG4gICAgY29tcGxldGlvbkhhbmRsZXIoJyAl
IG1vdmVfcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9p
bihbJ0lQQzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4
IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJywgJy5qb2luKFsnSVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50
eXBlKSArICc+OjpjcmVhdGUoKScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkp
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKIAogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5u
YW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCBjNzgyMzE2ZjMwNTdh
M2NhZjlkM2UyMDc3YzgxMzI1NTNlNjk3NTZhLi42NTcxMjM1ODhiYTk0ZGI1MDNiMzU3OWU0MjNl
ZjM0OGZhZGEzZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNywx
MSArMjcsMTkgQEAKICNpbmNsdWRlICJBUElEYXRhLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgQVBJIHsKIAorUmVmUHRyPERhdGE+
IERhdGE6OmNyZWF0ZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgaWYg
KGRhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cit9CisKIHZvaWQgRGF0YTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVu
Y2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5oCmluZGV4IGFhYzFjOWI5Nzk3OWUxZmU5
NjBlZTJkYjc5YmY5ODE4NmE4ZGMyZjIuLjkyMWE1MjVhZGI0ZTljMzJmMWU1Y2Y0ZWQ1MTFiNzkw
YzAxOTU0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuaApAQCAtNDQsNyArNDQsNyBA
QCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRGF0YSA6IHB1YmxpYyBPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpEYXRhPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqRnJlZURh
dGFGdW5jdGlvbikodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGNvbnRleHQpOworICAgIHVz
aW5nIEZyZWVEYXRhRnVuY3Rpb24gPSB2b2lkICgqKSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9p
ZCogY29udGV4dCk7CiAKICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZVdpdGhvdXRDb3B5aW5n
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3Qgc2l6ZSwgRnJlZURhdGFGdW5jdGlv
biBmcmVlRGF0YUZ1bmN0aW9uLCBjb25zdCB2b2lkKiBjb250ZXh0KQogICAgIHsKQEAgLTUzLDE0
ICs1MywxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZShjb25zdCB1
bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICB1bnNpZ25l
ZCBjaGFyICpjb3BpZWRCeXRlcyA9IDA7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvcGllZEJ5
dGVzID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoc2l6ZSkgewogICAgICAgICAgICAgY29waWVk
Qnl0ZXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZmFzdE1hbGxvYyhzaXplKSk7CiAg
ICAgICAgICAgICBtZW1jcHkoY29waWVkQnl0ZXMsIGJ5dGVzLCBzaXplKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhjb3BpZWRCeXRlcywgc2l6ZSwg
ZmFzdEZyZWVCeXRlcywgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhj
b3BpZWRCeXRlcywgc2l6ZSwgZmFzdEZyZWVCeXRlcywgbnVsbHB0cik7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBSZWY8RGF0YT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
YnVmZmVyKQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjcmVhdGUo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfQogCisgICAgc3RhdGljIFJlZlB0
cjxEYXRhPiBjcmVhdGUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxEYXRhPiBjcmVhdGVXaXRob3V0Q29weWluZyhS
ZXRhaW5QdHI8TlNEYXRhPik7CiAjZW5kaWYKQEAgLTEwMCwxMSArMTAyLDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBmYXN0RnJlZShzdGF0aWNfY2FzdDx2b2lkKj4oYnl0ZXMpKTsKICAgICB9
CiAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtX2J5dGVzOwotICAgIHNpemVfdCBtX3NpemU7
CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogbV9ieXRlcyB7IG51bGxwdHIgfTsKKyAgICBzaXpl
X3QgbV9zaXplIHsgMCB9OwogCi0gICAgRnJlZURhdGFGdW5jdGlvbiBtX2ZyZWVEYXRhRnVuY3Rp
b247Ci0gICAgY29uc3Qgdm9pZCogbV9jb250ZXh0OworICAgIEZyZWVEYXRhRnVuY3Rpb24gbV9m
cmVlRGF0YUZ1bmN0aW9uIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IHZvaWQqIG1fY29udGV4dCB7
IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCA3MzdiNjI1ODE5
ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5Li5iMWIxMWY1YzUxYTJhNDY4ZWEwYWNhNTJl
MjYzNGYwZWJmYWEyMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBJY29uTG9hZGlu
Z0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxvYWRpbmdDbGllbnQoKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6
OkxpbmtJY29uJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6RnVuY3Rpb248dm9p
ZChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGVjYzUwMDZjODZkYjI0MWVkOGZiZjhj
YmNjMzY3ZjRkMGEzMWQ0ZmUuLjE0MzE4ZTU3OGY4YzQwZmUyMzExZjc5YjZhZDY4NmM0NGRhMzFk
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC05MjYs
MTggKzkyNiwxNSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBw
cml2YXRlOgogICAgICAgICB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25IYW5kbGVy
KShOU0RhdGEqKTsKIAotICAgICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3Qg
V2ViQ29yZTo6TGlua0ljb24mIGxpbmtJY29uLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGdldExv
YWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGxpbmtJY29uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBS
ZXRhaW5QdHI8X1dLTGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19X
S0xpbmtJY29uUGFyYW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsK
IAogICAgICAgICAgICAgW21fd2tWaWV3IF9zaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOnBh
cmFtZXRlcnMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJY29uTG9hZENvbXBsZXRpb25I
YW5kbGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgICAgICBpZiAobG9hZENvbXBs
ZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFts
b2FkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkIChOU0RhdGEgKik+KGxvYWRDb21w
bGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFkYXRhKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFuZGxlcihuaWwpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFu
ZGxlcih3cmFwcGVyKCpkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIobG9hZENvbXBsZXRpb25I
YW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
Q29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0ljb25Mb2FkaW5nRGVsZWdhdGUuaAppbmRleCAwNzQzNzkwNGYxZTQyMzBiMzE1ODJhOWRmNDJj
MjNjMTRkNjA1YWQ3Li4zN2U4Yzc1ZmYzYmJhZjE2YTc4NzAzYzZiZmQ1NmYwNzdlYzcxY2Y2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVn
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH5JY29uTG9hZGluZ0Ns
aWVudCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6RnVuY3Rpb248dm9pZChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKT4mJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNv
bihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik+JiYpIG92ZXJyaWRlOwogCiAgICAgICAg
IEljb25Mb2FkaW5nRGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUu
bW0KaW5kZXggODI3MDdmOGY2MzFiOTlhN2ZhNGZhMzVlY2MxYWQ0NDhmM2VkZjBiOC4uOGY5N2Rk
ZjVmM2MwZDg5NWY2MGJiZDg5M2RiNTM4ZTZmMzExZjI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCkBAIC03MCw3ICs3
MCw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+SWNvbkxvYWRp
bmdDbGllbnQoKQogCiB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKShO
U0RhdGEqKTsKIAotdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24s
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpEYXRh
KiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBsaW5rSWNvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyc0NvbXBsZXRp
b25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpAQCAtODgs
MTEgKzg4LDggQEAgdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3IKICAgICBbZGVsZWdhdGUgd2ViVmll
dzptX2ljb25Mb2FkaW5nRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFt
ZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJY29uTG9hZENv
bXBsZXRpb25IYW5kbGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmIChsb2FkQ29tcGxldGlvbkhh
bmRsZXIpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIobG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBk
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSB8fCAhZGF0YSkKLSAgICAg
ICAgICAgICAgICAgICAgbG9hZENvbXBsZXRpb25IYW5kbGVyKG5pbCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBl
cigqZGF0YSkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEq
IGRhdGEpIHsKKyAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihk
YXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDNhNDRlMmMxMTg2YjU1MzM2MjVlYjU1NWFkNGJjNjg0YmJkNWFkNWMuLjAw
YTYwNzZmMWZiYTVmMWJlY2RkYmNjMDliNmIzOGRhNzU5MzlmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTQwMSwyNSArOTQwMSwyMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24s
IENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIpCiB7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudC0+
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0
cjxXZWJQYWdlUHJveHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oV1RGOjpGdW5jdGlvbjx2b2lk
IChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKSB7
CisgICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkSWRlbnRpZmllcl0gKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spIHsKICAgICAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2tGdW5j
dGlvbikKLSAgICAgICAgICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247Ci0g
ICAgICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENh
bGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldExv
YWREZWNpc2lvbkZvckljb24iX3MpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsKLQotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lz
aW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVudGlmaWVyKSk7CisgICAgICAgIGlm
ICghY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm4gc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBsb2FkSWRlbnRp
ZmllciksIFtdKGF1dG8pIHsgfSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmll
ciksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6
Y3JlYXRlKGljb25EYXRhKS5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKLXsKLSAgICBkYXRhQ2FsbGJhY2soZGF0
YSwgY2FsbGJhY2tJRCk7Ci19Ci0KIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gV2ViUGFnZVByb3h5Ojp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkKIHsKICAgICBy
ZXR1cm4gcGFnZUNsaWVudCgpLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTQxNjU5ZDlkMzM2MzA1YWEwNjFj
OWM4NzdjNjMzNmQxOTE0MzE3OS4uNjMwYjU2ZmU3ZjBhZjBkNDJmN2Y1MDcyMWEzOWFmYWQ0MGQ0
OGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NDgsNyAr
MTU0OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwog
CiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29u
JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2Vi
S2l0OjpDYWxsYmFja0lELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHZvaWQg
c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgzZWIwYzczNWJjNjgyZmJkNDk0NzFjZTRlOWIyNzFm
OWFkYmIwMTIuLjNhYzJjZjE5MGJiODAxZmVlYWM3NzA1ZjFiZGJjZmIwMmZkMzhhZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTUwOCw3ICs1MDgsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpCiAKICAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHN0cnVjdCBX
ZWJDb3JlOjpMaW5rSWNvbiBpY29uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAg
ICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggYjBiNGY1NzNiMDUxYWY4MzVmNjU2ODQyN2E1ZmI4NDU5NDEwYWNmNy4uMGZj
YzhjZGY3OTJkZDcxYmM4ZjQ0YmIzNzAzYzZlNmQzZDAzODg0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC0xOTA5LDE3ICsxOTA5LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb3IKICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGljb24uZmlyc3QsIENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGlj
b24uc2Vjb25kKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKiBkYXRh
KQotewotICAgIGF1dG8gY2FsbGJhY2tJRCA9IENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGNhbGxi
YWNrSWRlbnRpZmllcik7Ci0gICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdl
KCkgfSkgewotICAgICAgICBpZiAoZGF0YSkKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7ICpk
YXRhIH0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgfSkpOwot
ICAgIH0KLX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlV2luZG93KERP
TVdpbmRvdyYgd2luZG93KQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NTgxNTMyYTE2YmQxYmNmMTQ2OGUz
NWI5MTExNmYzZWY3ZjEwN2YuLjlkOWQ5OWNjNGE1Y2E2NTA0M2FiNWMyZTA5MzYxMTg1NzYxMDg5
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNjcsNyArMjY3LDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIGZpbmFsOwogCiAgICAg
dm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNv
cmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciopIGZpbmFsOwogCiAgICAgdm9pZCBkaWRDcmVhdGVXaW5kb3coV2ViQ29yZTo6RE9NV2luZG93
JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggM2YyNmRhMjM2N2RjZTI1MjQ1MTQ2ZjNhZTNjNzI3MGEwZDExYWVkOC4uYTkxNjU4
YjcwMDkxNzQxZGU4YTBiN2U1Y2ZkYTc3MmFjMWQ1MTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY1NDcsMTAgKzY1NDcsMTUgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFn
ZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxv
YWRJZGVudGlmaWVyLCBPcHRpb25hbENhbGxiYWNrSUQgbmV3Q2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lE
IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkpCi0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgbmV3Q2FsbGJh
Y2tJRC50b0ludGVnZXIoKSk7CisgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOworICAgIGlmICghZG9jdW1l
bnRMb2FkZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAg
ZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJ
ZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOworICAgIH0pOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRp
bmdDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggOGJhOWY3MWI0NjI1YjkxNWFlNWQ5OGJjMWMzN2JlNmQyNjQwYTcwMC4uOWZkZjc3MzE0MWM5
NGEyMTkyZTViOTVmOWU1MzI0ZTMxODk1M2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTE5OSw3ICsxMTk5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBP
cHRpb25hbENhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihi
b29sIGRlY2lzaW9uLCBDYWxsYmFja0lELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKICAgICB2b2lkIHNldFVzZUljb25M
b2FkaW5nQ2xpZW50KGJvb2wpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE3YzgwMjQ1ZDlhZWI0Mjg2ZGJhYWE3NmIwMDNm
MzdkNmVlMGY1NjQuLmMxNmRiYzY5NmUyMDMwZjg5NDY4NjIyZmY2YjRmN2YyODNmMmE0ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtNTQwLDcgKzU0MCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAg
ICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAot
ICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxs
YmFja0lEIGxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxs
YmFja0lEKQorICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2Vi
S2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGljb25EYXRhKSBBc3luYwogICAgIFNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJv
b2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDJhZWU4NzI0YWYzYTdkY2Q1ZTJhYjAxYjM0NTMwZGZkZTkx
NjRhMzYuLjcwMWFmODNhMmNiOWU0OWNhZGM2YjY0MWUwMGFiNjcwMjk1Y2M3NGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL0hhc2hN
YXAuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgorI2ltcG9ydCA8d3RmL1dlYWtQdHIuaD4KIAogQGNsYXNzIFdlYkRvd25sb2FkOwogQGNs
YXNzIFdlYkZyYW1lOwpAQCAtNTIsNyArNTMsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIAotY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgeworY2xhc3MgV2ViRnJhbWVMb2FkZXJD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIGV4cGxpY2l0IFdl
YkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiA9IG51bGxwdHIpOwogICAgIH5XZWJGcmFtZUxv
YWRlckNsaWVudCgpOwpAQCAtMjQ2LDkgKzI0Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5k
SDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25k
cywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBnZXRM
b2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJ
Y29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbih1
aW50NjRfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopOwogCi0gICAgdWludDY0X3QgbV9h
Y3RpdmVJY29uTG9hZENhbGxiYWNrSUQgeyAwIH07CisgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsg
ZmFsc2UgfTsKIAogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gbV93ZWJGcmFtZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAzMGVlZjRkZDk2MzcyMTMyZjFkN2E5MWYwMDU1MjE4
Y2ExODFlODk0Li4wZDBiMWU0ZmY2ZTY2MzI4NTcwMzYwN2Q0YWI4MDc3MjZkNjY3OThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMwMSw4ICsxMzAxLDYgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZCgpCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogewotICAgIG1fYWN0aXZl
SWNvbkxvYWRDYWxsYmFja0lEID0gMDsKLQogICAgIGlmICghW21fd2ViRnJhbWUuZ2V0KCkgX2Rh
dGFTb3VyY2VdKSB7CiAgICAgICAgIEFTU0VSVCghY29yZShtX3dlYkZyYW1lLmdldCgpKS0+dHJl
ZSgpLmNoaWxkQ291bnQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIxOTgsNyArMjE5Niw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghV2Vi
S2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfREVGQVVMVF9JQ09O
X0xPQURJTkcpKSB7CiAgICAgICAgIGZvciAoYXV0byYgaWNvbiA6IGljb25zKQotICAgICAgICAg
ICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFsc2UsIGljb24u
c2Vjb25kLCAwKTsKKyAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGZhbHNlLCBpY29uLnNlY29uZCwgW10oYXV0bykgeyB9KTsKIAogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMjIxMCwyOSArMjIwOCwzMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvcgogCiAgICAgaWYgKGRpc2FsbG93ZWREdWVUb0ltYWdlTG9hZFNldHRpbmdzIHx8ICFmcmFt
ZS0+aXNNYWluRnJhbWUoKSB8fCAhZG9jdW1lbnRMb2FkZXItPnVybCgpLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSB8fCAhW1dlYlZpZXcgX2lzSWNvbkxvYWRpbmdFbmFibGVkXSkgewogICAgICAg
ICBmb3IgKGF1dG8mIGljb24gOiBpY29ucykKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5k
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBpY29uLnNlY29uZCwgMCk7CisgICAgICAg
ICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNv
bi5zZWNvbmQsIFtdKGF1dG8pIHsgfSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEFTU0VSVCghbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOworICAgIEFTU0VSVCghbV9sb2Fk
aW5nSWNvbik7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXZWJLaXQgMSwg
d2hpY2ggb25seSBzdXBwb3J0cyBvbmUgaWNvbiBwZXIgcGFnZSBVUkwsIHRyYWRpdGlvbmFsbHkg
aGFzIHByZWZlcnJlZCB0aGUgbGFzdCBpY29uIGluIGNhc2Ugb2YgbXVsdGlwbGUgaWNvbnMgbGlz
dGVkLgogICAgIC8vIFRvIHByZXNlcnZlIHRoYXQgYmVoYXZpb3Igd2Ugd2FsayB0aGUgbGlzdCBi
YWNrd2FyZHMuCiAgICAgZm9yIChhdXRvIGljb24gPSBpY29ucy5yYmVnaW4oKTsgaWNvbiAhPSBp
Y29ucy5yZW5kKCk7ICsraWNvbikgewotICAgICAgICBpZiAoaWNvbi0+Zmlyc3QudHlwZSAhPSBX
ZWJDb3JlOjpMaW5rSWNvblR5cGU6OkZhdmljb24gfHwgbV9hY3RpdmVJY29uTG9hZENhbGxiYWNr
SUQpIHsKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGZhbHNlLCBpY29uLT5zZWNvbmQsIDApOworICAgICAgICBpZiAoaWNvbi0+Zmlyc3QudHlw
ZSAhPSBXZWJDb3JlOjpMaW5rSWNvblR5cGU6OkZhdmljb24gfHwgbV9sb2FkaW5nSWNvbikgewor
ICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFs
c2UsIGljb24tPnNlY29uZCwgW10oYXV0bykgeyB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQgPSAxOwotICAg
ICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29u
LT5zZWNvbmQsIG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEKTsKKyAgICAgICAgbV9sb2FkaW5n
SWNvbiA9IHRydWU7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZmluaXNo
ZWRMb2FkaW5nSWNvbihidWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAjZWxzZQogICAgIC8v
IE5vIFdlYkNvcmUgaWNvbiBsb2FkaW5nIG9uIGlPUwogICAgIGZvciAoYXV0byYgaWNvbiA6IGlj
b25zKQotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihm
YWxzZSwgaWNvbi5zZWNvbmQsIDApOworICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIFtdKGF1dG8pIHsgfSk7CiAjZW5k
aWYKIH0KIApAQCAtMjI2MCwxMiArMjI2MiwxMSBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJ
bWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8vICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciog
aWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29u
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgQVNTRVJUKG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEKTsKLSAgICBBU1NF
UlQoY2FsbGJhY2tJRCA9IG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEKTsKLSAgICBtX2FjdGl2
ZUljb25Mb2FkQ2FsbGJhY2tJRCA9IDA7CisgICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOworICAg
IG1fbG9hZGluZ0ljb24gPSBmYWxzZTsKIAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIGlmICghd2ViVmlldykKQEAgLTIyNzksNyArMjI4
MCw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24odWlu
dDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2hhCiAgICAgaWYgKGljb24pCiAgICAgICAgIFt3
ZWJWaWV3IF9zZXRNYWluRnJhbWVJY29uOmljb25dOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2tJRCk7CiAgICAgVU5VU0VEX1BBUkFNKGljb25EYXRhKTsKICNlbmRpZgogfQo=
</data>
<flag name="commit-queue"
          id="434773"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417127</attachid>
            <date>2021-01-06 14:01:53 -0800</date>
            <delta_ts>2021-01-06 14:06:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220381-20210106140152.patch</filename>
            <type>text/plain</type>
            <size>34346</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhNGJhMmE1ZGE2MWRl
ZjJmNjQzNTRkMDExNTE5N2RlNGYxMjJkZS4uMTIxMzUwMmQ0ZGM4ZjFlMTA3N2RiNzgyMmE4MDBh
ZjUwMGJhNmY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTAxLTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNl
bmRXaXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGRhdGFDYWxsYmFjayBmb3IgaWNvbiBsb2FkaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzODEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWhhdmlv
ciBjb3ZlcmVkIGJ5IEljb25Mb2FkaW5nIEFQSSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9E
b2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3Rv
cExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkTG9hZGluZ0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDIx
LTAxLTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSB0aGUgdW51c2VkIFJlbmRlclN0eWxlOjpzZXRIYXNQc2V1ZG9TdHlsZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDU5MDcwN2JjNmFkYjhhNTdlNzllYjI2YTVjM2U5YWE0MjMyNWM4YTIuLjI3YWE3ZWVkNzk4
Mjc1ZGJiZTdiM2I3NjIzMDMwOWM4MTRmZTQwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMjEtMDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNr
IGZvciBpY29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSURhdGEuaDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYXliZUlu
c3RhbGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25M
b2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5p
c2hlZExvYWRpbmdJY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
Z0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjEtMDEtMDYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ug
c2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgaU9TLXNwZWNpZmljIEdlbmVyaWNDYWxsYmFj
a3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5NzRmYjI0ZTRkY2I0YTQxZmE4NWJi
ZmQ4MjAzNjJmOTZiZWQxYzQ1Li4yM2E3YmY4OTBjZGQwNjUyZTAyY2E2MDFhNjdlMzdkYjgwM2I2
MTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNrIGZvciBp
Y29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisKIDIwMjEtMDEt
MDQgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB1c2Vy
LXZpc2libGUgY29weXJpZ2h0IHN0cmluZ3MgdG8gaW5jbHVkZSAyMDIxCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyNmMyMTJhOTY5MGUzMGM5Y2IzZGNhMTli
YTkyZjJkZDEyNTVjY2QyLi42YTFkMGIzMjljZGUwOGVhYWY4ZDJhZDk4OWRiOTE0NDQ4YWUxZDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTMyMyw4ICsz
MjMsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeTo6Tm9uZSk7CiAg
ICAgfQogCi0gICAgZm9yIChhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA6IG1faWNvbkxvYWRlcnMu
dmFsdWVzKCkpCi0gICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVu
dGlmaWVyLCBudWxscHRyKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9pY29uTG9hZGVy
cy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CiAgICAgbV9pY29uTG9hZGVy
cy5jbGVhcigpOwogICAgIG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLmNsZWFyKCk7CiAgICAg
CkBAIC0yMTc0LDI1ICsyMTc0LDIzIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxv
YWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZv
ckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxv
YWRJZGVudGlmaWVyKTsKIAogICAgIC8vIElmIHRoZSBkZWNpc2lvbiB3YXMgbm90IHRvIGxvYWQg
b3IgdGhpcyBEb2N1bWVudExvYWRlciBpcyBhbHJlYWR5IGRldGFjaGVkLCB0aGVyZSBpcyBubyBs
b2FkIHRvIHBlcmZvcm0uCiAgICAgaWYgKCFkZWNpc2lvbiB8fCAhbV9mcmFtZSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAg
ICAvLyBJZiB0aGUgTGlua0ljb24gd2UganVzdCB0b29rIGlzIGVtcHR5LCB0aGVuIHRoZSBEb2N1
bWVudExvYWRlciBoYWQgYWxsIG9mIGl0cyBsb2FkZXJzIHN0b3BwZWQKICAgICAvLyB3aGlsZSB0
aGlzIGljb24gbG9hZCBkZWNpc2lvbiB3YXMgcGVuZGluZy4KICAgICAvLyBJbiB0aGlzIGNhc2Ug
d2UgbmVlZCB0byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBpY29uIGZpbmlzaGVkIGxvYWRp
bmcgd2l0aCBlbXB0eSBkYXRhLgotICAgIGlmIChpY29uLnVybC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbihuZXdDYWxsYmFja0lELCBudWxscHRyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaWNvbi51cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAgICBhdXRvIGljb25Mb2Fk
ZXIgPSBtYWtlVW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAgICAgYXV0byog
cmF3SWNvbkxvYWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7Ci0gICAgbV9pY29uTG9hZGVycy5zZXQo
V1RGTW92ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7CisgICAgbV9pY29uTG9hZGVycy5z
ZXQoV1RGTW92ZShpY29uTG9hZGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAg
ICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CkBAIC0yMjAyLDE1ICsyMjAwLDgg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBs
b2FkZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmUKICAgICAvLyBJZiB0aGUgRG9jdW1lbnRMb2FkZXIg
aGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNvbiBsb2FkcyBzaG91bGQgaGF2ZSBh
bHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVChtX2ZyYW1lKTsKIAotICAgIGF1dG8g
Y2FsbGJhY2tJZGVudGlmaWVyID0gbV9pY29uTG9hZGVycy50YWtlKCZsb2FkZXIpOwotICAgIG5v
dGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCBidWZmZXIpOwotfQot
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCi17Ci0gICAgUkVMRUFT
RV9BU1NFUlQoY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX2ZyYW1l
KTsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5maW5pc2hlZExvYWRpbmdJY29uKGNh
bGxiYWNrSWRlbnRpZmllciwgYnVmZmVyKTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1faWNv
bkxvYWRlcnMudGFrZSgmbG9hZGVyKSkKKyAgICAgICAgY2FsbGJhY2soYnVmZmVyKTsKIH0KIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGlzcGF0Y2hPbmxvYWRFdmVudHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBhYWU5YjQ5NzE2Y2NmY2JhODJhYjg3MzhlZjVj
YTliN2NmYjgzNWM3Li5iNjNkMTdiMWZiM2I2ZDU0MjUxYjQ4NDU0YmIyMDI1OGI0YTIyMTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMzg3LDcgKzM4Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwogCiAg
ICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CiAKICAg
ICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xp
bmtJY29uczsgfQpAQCAtNTAzLDggKzUwMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVja0lmTmVlZGVkKCk7CiAgICAgdm9pZCBiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQo
KTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciopOwotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01B
TklGRVNUKQogICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVz
dCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZl
c3Q+KTsKICNlbmRpZgpAQCAtNjA1LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgdWludDY0X3Q+IG1faWNvbkxvYWRlcnM7CisgICAg
SGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4g
bV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDk1NGE0ZDU3MmNmYjVmZWU3
NGQ5OWRhNjhlMjIzMjA3NzdlZDA4ZGYuLjE4YTFmMWUwODdiM2E3ZWFlYWE0NjNmMzQ5ZDFhYTdl
ZWI5NGFhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0zNjEsNyArMzYxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0b3JlU2Ny
b2xsUG9zaXRpb24oKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+
PiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90LCBT
aGFyZWRCdWZmZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVXaW5kb3coRE9N
V2luZG93JikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDQzNzAzNzU2YTU2YjA4NWRkYzExOTNhYjllNmY3MDVhMTI1MzY0ZmIuLmFkN2E3MjRiZWIy
ODg5M2UxYzUwNDM5ZmQ3NzYzZDA3MGZjOGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtOTUsNiArOTUsMTIgQEAgZGVmIGZ1bmN0aW9uX3BhcmFtZXRl
cl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29uc3QgJXMmJyAlIHR5cGUKIAogCitk
ZWYgcmVwbHlfdHlwZSh0eXBlKToKKyAgICBpZiB0eXBlID09ICdJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UnOgorICAgICAgICByZXR1cm4gJ0lQQzo6RGF0YVJlZmVyZW5jZScKKyAgICBy
ZXR1cm4gdHlwZQorCisKIGRlZiByZXBseV9wYXJhbWV0ZXJfdHlwZSh0eXBlKToKICAgICByZXR1
cm4gJyVzJicgJSB0eXBlCiAKQEAgLTEwNyw3ICsxMTMsNyBAQCBkZWYgYXJndW1lbnRzX3R5cGUo
bWVzc2FnZSk6CiAgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAnLCAnLmpvaW4oZnVuY3Rp
b25fcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUsIHBhcmFtZXRlci5raW5kKSBmb3IgcGFy
YW1ldGVyIGluIG1lc3NhZ2UucGFyYW1ldGVycykKIAogCi1kZWYgcmVwbHlfdHlwZShtZXNzYWdl
KToKK2RlZiByZXBseV90dXBsZShtZXNzYWdlKToKICAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+
JyAlICgnLCAnLmpvaW4ocmVwbHlfcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUpIGZvciBw
YXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKIAogCkBAIC0xNDksNyArMTU1
LDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdl
KToKICAgICAgICAgc2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4
LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJz
XQogICAgICAgICBjb21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpv
aW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1l
c3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gJywgJy5qb2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5
X3BhcmFtZXRlcnNdKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lk
IGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0
YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicg
JSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUpKQpAQCAtMTYxLDcgKzE2Nyw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlv
bihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJz
KToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBsZXRpb25faGFu
ZGxlcl9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbicpCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBSZXBseSA9ICVzO1xuJyAlIHJlcGx5X3R5cGUo
bWVzc2FnZSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBSZXBseSA9ICVzO1xu
JyAlIHJlcGx5X3R1cGxlKG1lc3NhZ2UpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNp
bmcgUmVwbHlBcmd1bWVudHMgPSAlcztcbicgJSByZXBseV9hcmd1bWVudHNfdHlwZShtZXNzYWdl
KSkKIAogICAgIGlmIGxlbihmdW5jdGlvbl9wYXJhbWV0ZXJzKToKQEAgLTgyMSwxMCArODI3LDEw
IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCiAKICAg
ICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAg
ICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFtt
b3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQorICAg
ICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFtt
b3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnNdKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbGxSZXBs
eShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKVxue1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgICAg
ICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBPcHRpb25hbDwlcz4gJXM7XG4nICUgKHgudHlwZSwgeC5uYW1l
KSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIE9wdGlvbmFsPCVzPiAl
cztcbicgJSAocmVwbHlfdHlwZSh4LnR5cGUpLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtODMyLDcg
KzgzOCw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdXVEZNb3ZlKColcyknICUgKCcpLCBXVEZNb3Zl
KConLmpvaW4oeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycykpKQogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG59XG5cbicpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57XG4gICAgY29tcGxldGlvbkhhbmRsZXIoJyAl
IG1vdmVfcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9p
bihbJ0lQQzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4
IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJywgJy5qb2luKFsnSVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50
eXBlKSArICc+OjpjcmVhdGUoKScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkp
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKIAogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5u
YW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCBjNzgyMzE2ZjMwNTdh
M2NhZjlkM2UyMDc3YzgxMzI1NTNlNjk3NTZhLi42NTcxMjM1ODhiYTk0ZGI1MDNiMzU3OWU0MjNl
ZjM0OGZhZGEzZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNywx
MSArMjcsMTkgQEAKICNpbmNsdWRlICJBUElEYXRhLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgQVBJIHsKIAorUmVmUHRyPERhdGE+
IERhdGE6OmNyZWF0ZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgaWYg
KGRhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cit9CisKIHZvaWQgRGF0YTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVu
Y2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5oCmluZGV4IGFhYzFjOWI5Nzk3OWUxZmU5
NjBlZTJkYjc5YmY5ODE4NmE4ZGMyZjIuLjkyMWE1MjVhZGI0ZTljMzJmMWU1Y2Y0ZWQ1MTFiNzkw
YzAxOTU0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuaApAQCAtNDQsNyArNDQsNyBA
QCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRGF0YSA6IHB1YmxpYyBPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpEYXRhPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqRnJlZURh
dGFGdW5jdGlvbikodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGNvbnRleHQpOworICAgIHVz
aW5nIEZyZWVEYXRhRnVuY3Rpb24gPSB2b2lkICgqKSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9p
ZCogY29udGV4dCk7CiAKICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZVdpdGhvdXRDb3B5aW5n
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3Qgc2l6ZSwgRnJlZURhdGFGdW5jdGlv
biBmcmVlRGF0YUZ1bmN0aW9uLCBjb25zdCB2b2lkKiBjb250ZXh0KQogICAgIHsKQEAgLTUzLDE0
ICs1MywxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZShjb25zdCB1
bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICB1bnNpZ25l
ZCBjaGFyICpjb3BpZWRCeXRlcyA9IDA7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvcGllZEJ5
dGVzID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoc2l6ZSkgewogICAgICAgICAgICAgY29waWVk
Qnl0ZXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZmFzdE1hbGxvYyhzaXplKSk7CiAg
ICAgICAgICAgICBtZW1jcHkoY29waWVkQnl0ZXMsIGJ5dGVzLCBzaXplKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhjb3BpZWRCeXRlcywgc2l6ZSwg
ZmFzdEZyZWVCeXRlcywgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhj
b3BpZWRCeXRlcywgc2l6ZSwgZmFzdEZyZWVCeXRlcywgbnVsbHB0cik7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBSZWY8RGF0YT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
YnVmZmVyKQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjcmVhdGUo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfQogCisgICAgc3RhdGljIFJlZlB0
cjxEYXRhPiBjcmVhdGUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxEYXRhPiBjcmVhdGVXaXRob3V0Q29weWluZyhS
ZXRhaW5QdHI8TlNEYXRhPik7CiAjZW5kaWYKQEAgLTEwMCwxMSArMTAyLDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBmYXN0RnJlZShzdGF0aWNfY2FzdDx2b2lkKj4oYnl0ZXMpKTsKICAgICB9
CiAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtX2J5dGVzOwotICAgIHNpemVfdCBtX3NpemU7
CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogbV9ieXRlcyB7IG51bGxwdHIgfTsKKyAgICBzaXpl
X3QgbV9zaXplIHsgMCB9OwogCi0gICAgRnJlZURhdGFGdW5jdGlvbiBtX2ZyZWVEYXRhRnVuY3Rp
b247Ci0gICAgY29uc3Qgdm9pZCogbV9jb250ZXh0OworICAgIEZyZWVEYXRhRnVuY3Rpb24gbV9m
cmVlRGF0YUZ1bmN0aW9uIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IHZvaWQqIG1fY29udGV4dCB7
IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCA3MzdiNjI1ODE5
ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5Li5iMWIxMWY1YzUxYTJhNDY4ZWEwYWNhNTJl
MjYzNGYwZWJmYWEyMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBJY29uTG9hZGlu
Z0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxvYWRpbmdDbGllbnQoKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6
OkxpbmtJY29uJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6RnVuY3Rpb248dm9p
ZChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IGVjYzUwMDZjODZkYjI0MWVkOGZiZjhj
YmNjMzY3ZjRkMGEzMWQ0ZmUuLjE0MzE4ZTU3OGY4YzQwZmUyMzExZjc5YjZhZDY4NmM0NGRhMzFk
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC05MjYs
MTggKzkyNiwxNSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBw
cml2YXRlOgogICAgICAgICB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25IYW5kbGVy
KShOU0RhdGEqKTsKIAotICAgICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3Qg
V2ViQ29yZTo6TGlua0ljb24mIGxpbmtJY29uLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGdldExv
YWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGxpbmtJY29uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBS
ZXRhaW5QdHI8X1dLTGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19X
S0xpbmtJY29uUGFyYW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsK
IAogICAgICAgICAgICAgW21fd2tWaWV3IF9zaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOnBh
cmFtZXRlcnMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJY29uTG9hZENvbXBsZXRpb25I
YW5kbGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgICAgICBpZiAobG9hZENvbXBs
ZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFts
b2FkQ29tcGxldGlvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkIChOU0RhdGEgKik+KGxvYWRDb21w
bGV0aW9uSGFuZGxlcildKEFQSTo6RGF0YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFkYXRhKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFuZGxlcihuaWwpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFu
ZGxlcih3cmFwcGVyKCpkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIobG9hZENvbXBsZXRpb25I
YW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
Q29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0ljb25Mb2FkaW5nRGVsZWdhdGUuaAppbmRleCAwNzQzNzkwNGYxZTQyMzBiMzE1ODJhOWRmNDJj
MjNjMTRkNjA1YWQ3Li4zN2U4Yzc1ZmYzYmJhZjE2YTc4NzAzYzZiZmQ1NmYwNzdlYzcxY2Y2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVn
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH5JY29uTG9hZGluZ0Ns
aWVudCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdURjo6RnVuY3Rpb248dm9pZChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmKT4mJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNv
bihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik+JiYpIG92ZXJyaWRlOwogCiAgICAgICAg
IEljb25Mb2FkaW5nRGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUu
bW0KaW5kZXggODI3MDdmOGY2MzFiOTlhN2ZhNGZhMzVlY2MxYWQ0NDhmM2VkZjBiOC4uOGY5N2Rk
ZjVmM2MwZDg5NWY2MGJiZDg5M2RiNTM4ZTZmMzExZjI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCkBAIC03MCw3ICs3
MCw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+SWNvbkxvYWRp
bmdDbGllbnQoKQogCiB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKShO
U0RhdGEqKTsKIAotdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24s
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpEYXRh
KiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBsaW5rSWNvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX2Rl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3U2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyc0NvbXBsZXRp
b25IYW5kbGVyKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpAQCAtODgs
MTEgKzg4LDggQEAgdm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3IKICAgICBbZGVsZWdhdGUgd2ViVmll
dzptX2ljb25Mb2FkaW5nRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFt
ZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJY29uTG9hZENv
bXBsZXRpb25IYW5kbGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmIChsb2FkQ29tcGxldGlvbkhh
bmRsZXIpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIobG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBk
YXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSB8fCAhZGF0YSkKLSAgICAg
ICAgICAgICAgICAgICAgbG9hZENvbXBsZXRpb25IYW5kbGVyKG5pbCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBl
cigqZGF0YSkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEq
IGRhdGEpIHsKKyAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihk
YXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDNhNDRlMmMxMTg2YjU1MzM2MjVlYjU1NWFkNGJjNjg0YmJkNWFkNWMuLjAw
YTYwNzZmMWZiYTVmMWJlY2RkYmNjMDliNmIzOGRhNzU5MzlmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTQwMSwyNSArOTQwMSwyMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24s
IENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIpCiB7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudC0+
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0
cjxXZWJQYWdlUHJveHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oV1RGOjpGdW5jdGlvbjx2b2lk
IChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKSB7
CisgICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkSWRlbnRpZmllcl0gKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spIHsKICAgICAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2tGdW5j
dGlvbikKLSAgICAgICAgICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247Ci0g
ICAgICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENh
bGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldExv
YWREZWNpc2lvbkZvckljb24iX3MpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsKLQotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lz
aW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVudGlmaWVyKSk7CisgICAgICAgIGlm
ICghY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm4gc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBsb2FkSWRlbnRp
ZmllciksIFtdKGF1dG8pIHsgfSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmll
ciksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6
Y3JlYXRlKGljb25EYXRhKS5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKLXsKLSAgICBkYXRhQ2FsbGJhY2soZGF0
YSwgY2FsbGJhY2tJRCk7Ci19Ci0KIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gV2ViUGFnZVByb3h5Ojp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkKIHsKICAgICBy
ZXR1cm4gcGFnZUNsaWVudCgpLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTQxNjU5ZDlkMzM2MzA1YWEwNjFj
OWM4NzdjNjMzNmQxOTE0MzE3OS4uNjMwYjU2ZmU3ZjBhZjBkNDJmN2Y1MDcyMWEzOWFmYWQ0MGQ0
OGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NDgsNyAr
MTU0OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwog
CiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29u
JiwgV2ViS2l0OjpDYWxsYmFja0lEKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2Vi
S2l0OjpDYWxsYmFja0lELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHZvaWQg
c2V0Rm9jdXMoYm9vbCBmb2N1c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgzZWIwYzczNWJjNjgyZmJkNDk0NzFjZTRlOWIyNzFm
OWFkYmIwMTIuLjNhYzJjZjE5MGJiODAxZmVlYWM3NzA1ZjFiZGJjZmIwMmZkMzhhZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTUwOCw3ICs1MDgsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpCiAKICAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHN0cnVjdCBX
ZWJDb3JlOjpMaW5rSWNvbiBpY29uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAg
ICBGaW5pc2hlZExvYWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgRGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggYjBiNGY1NzNiMDUxYWY4MzVmNjU2ODQyN2E1ZmI4NDU5NDEwYWNmNy4uMGZj
YzhjZGY3OTJkZDcxYmM4ZjQ0YmIzNzAzYzZlNmQzZDAzODg0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC0xOTA5LDE3ICsxOTA5LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb3IKICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGljb24uZmlyc3QsIENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGlj
b24uc2Vjb25kKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKiBkYXRh
KQotewotICAgIGF1dG8gY2FsbGJhY2tJRCA9IENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGNhbGxi
YWNrSWRlbnRpZmllcik7Ci0gICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdl
KCkgfSkgewotICAgICAgICBpZiAoZGF0YSkKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7ICpk
YXRhIH0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgfSkpOwot
ICAgIH0KLX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlV2luZG93KERP
TVdpbmRvdyYgd2luZG93KQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NTgxNTMyYTE2YmQxYmNmMTQ2OGUz
NWI5MTExNmYzZWY3ZjEwN2YuLjlkOWQ5OWNjNGE1Y2E2NTA0M2FiNWMyZTA5MzYxMTg1NzYxMDg5
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNjcsNyArMjY3LDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIGZpbmFsOwogCiAgICAg
dm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNv
cmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nSWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciopIGZpbmFsOwogCiAgICAgdm9pZCBkaWRDcmVhdGVXaW5kb3coV2ViQ29yZTo6RE9NV2luZG93
JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggM2YyNmRhMjM2N2RjZTI1MjQ1MTQ2ZjNhZTNjNzI3MGEwZDExYWVkOC4uYTkxNjU4
YjcwMDkxNzQxZGU4YTBiN2U1Y2ZkYTc3MmFjMWQ1MTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY1NDcsMTAgKzY1NDcsMTUgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFn
ZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxv
YWRJZGVudGlmaWVyLCBPcHRpb25hbENhbGxiYWNrSUQgbmV3Q2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lE
IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChh
dXRvKiBkb2N1bWVudExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkpCi0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgbmV3Q2FsbGJh
Y2tJRC50b0ludGVnZXIoKSk7CisgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOworICAgIGlmICghZG9jdW1l
bnRMb2FkZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAg
ZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJ
ZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOworICAgIH0pOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRp
bmdDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggOGJhOWY3MWI0NjI1YjkxNWFlNWQ5OGJjMWMzN2JlNmQyNjQwYTcwMC4uOWZkZjc3MzE0MWM5
NGEyMTkyZTViOTVmOWU1MzI0ZTMxODk1M2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTE5OSw3ICsxMTk5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBP
cHRpb25hbENhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihi
b29sIGRlY2lzaW9uLCBDYWxsYmFja0lELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKICAgICB2b2lkIHNldFVzZUljb25M
b2FkaW5nQ2xpZW50KGJvb2wpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE3YzgwMjQ1ZDlhZWI0Mjg2ZGJhYWE3NmIwMDNm
MzdkNmVlMGY1NjQuLmMxNmRiYzY5NmUyMDMwZjg5NDY4NjIyZmY2YjRmN2YyODNmMmE0ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtNTQwLDcgKzU0MCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAg
ICBTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAot
ICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxs
YmFja0lEIGxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxs
YmFja0lEKQorICAgIERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2Vi
S2l0OjpDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGljb25EYXRhKSBBc3luYwogICAgIFNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJv
b2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDJhZWU4NzI0YWYzYTdkY2Q1ZTJhYjAxYjM0NTMwZGZkZTkx
NjRhMzYuLmUwNGQzZDlhMWViODM4MDFjOTIxYzYwODNlZTJiYzNlZjNkZGVlOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL0hhc2hN
YXAuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgorI2ltcG9ydCA8d3RmL1dlYWtQdHIuaD4KIAogQGNsYXNzIFdlYkRvd25sb2FkOwogQGNs
YXNzIFdlYkZyYW1lOwpAQCAtNTIsNyArNTMsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIAotY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgeworY2xhc3MgV2ViRnJhbWVMb2FkZXJD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIGV4cGxpY2l0IFdl
YkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiA9IG51bGxwdHIpOwogICAgIH5XZWJGcmFtZUxv
YWRlckNsaWVudCgpOwpAQCAtMjQ2LDkgKzI0NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Vu
ZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29u
ZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0
TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5r
SWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24o
dWludDY0X3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKIAotICAgIHVpbnQ2NF90IG1f
YWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEIHsgMCB9OworI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CisjZW5kaWYKIAogICAgIFJldGFp
blB0cjxXZWJGcmFtZT4gbV93ZWJGcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpp
bmRleCAzMGVlZjRkZDk2MzcyMTMyZjFkN2E5MWYwMDU1MjE4Y2ExODFlODk0Li41NjM0OTZhZGQ3
NWZiODM1MzlhYjljMzAxZjBiODc1YjBlYzZjY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQpAQCAtMTMwMSw4ICsxMzAxLDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
RmluaXNoTG9hZCgpCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRh
U291cmNlUmVwbGFjZW1lbnQoKQogewotICAgIG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEID0g
MDsKLQogICAgIGlmICghW21fd2ViRnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdKSB7CiAgICAgICAg
IEFTU0VSVCghY29yZShtX3dlYkZyYW1lLmdldCgpKS0+dHJlZSgpLmNoaWxkQ291bnQoKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTIxOTgsNyArMjE5Niw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2Vi
Q29yCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdF
QktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfREVGQVVMVF9JQ09OX0xPQURJTkcpKSB7CiAgICAgICAg
IGZvciAoYXV0byYgaWNvbiA6IGljb25zKQotICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oZmFsc2UsIGljb24uc2Vjb25kLCAwKTsKKyAgICAgICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBpY29u
LnNlY29uZCwgW10oYXV0bykgeyB9KTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjIx
MCwyOSArMjIwOCwzMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcgogCiAgICAgaWYgKGRpc2Fs
bG93ZWREdWVUb0ltYWdlTG9hZFNldHRpbmdzIHx8ICFmcmFtZS0+aXNNYWluRnJhbWUoKSB8fCAh
ZG9jdW1lbnRMb2FkZXItPnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCAhW1dlYlZp
ZXcgX2lzSWNvbkxvYWRpbmdFbmFibGVkXSkgewogICAgICAgICBmb3IgKGF1dG8mIGljb24gOiBp
Y29ucykKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGZhbHNlLCBpY29uLnNlY29uZCwgMCk7CisgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIFtdKGF1dG8pIHsg
fSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCghbV9hY3RpdmVJY29u
TG9hZENhbGxiYWNrSUQpOwotCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgQVNTRVJU
KCFtX2xvYWRpbmdJY29uKTsKICAgICAvLyBXZWJLaXQgMSwgd2hpY2ggb25seSBzdXBwb3J0cyBv
bmUgaWNvbiBwZXIgcGFnZSBVUkwsIHRyYWRpdGlvbmFsbHkgaGFzIHByZWZlcnJlZCB0aGUgbGFz
dCBpY29uIGluIGNhc2Ugb2YgbXVsdGlwbGUgaWNvbnMgbGlzdGVkLgogICAgIC8vIFRvIHByZXNl
cnZlIHRoYXQgYmVoYXZpb3Igd2Ugd2FsayB0aGUgbGlzdCBiYWNrd2FyZHMuCiAgICAgZm9yIChh
dXRvIGljb24gPSBpY29ucy5yYmVnaW4oKTsgaWNvbiAhPSBpY29ucy5yZW5kKCk7ICsraWNvbikg
ewotICAgICAgICBpZiAoaWNvbi0+Zmlyc3QudHlwZSAhPSBXZWJDb3JlOjpMaW5rSWNvblR5cGU6
OkZhdmljb24gfHwgbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpIHsKLSAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBpY29uLT5zZWNv
bmQsIDApOworICAgICAgICBpZiAoaWNvbi0+Zmlyc3QudHlwZSAhPSBXZWJDb3JlOjpMaW5rSWNv
blR5cGU6OkZhdmljb24gfHwgbV9sb2FkaW5nSWNvbikgeworICAgICAgICAgICAgZG9jdW1lbnRM
b2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFsc2UsIGljb24tPnNlY29uZCwgW10o
YXV0bykgeyB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
bV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQgPSAxOwotICAgICAgICBkb2N1bWVudExvYWRlci0+
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIG1fYWN0aXZlSWNv
bkxvYWRDYWxsYmFja0lEKTsKKyAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7CisgICAgICAg
IGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNl
Y29uZCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nSWNvbihidWZmZXIp
OworICAgICAgICB9KTsKICAgICB9CiAjZWxzZQogICAgIC8vIE5vIFdlYkNvcmUgaWNvbiBsb2Fk
aW5nIG9uIGlPUwogICAgIGZvciAoYXV0byYgaWNvbiA6IGljb25zKQotICAgICAgICBkb2N1bWVu
dExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIDAp
OworICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxz
ZSwgaWNvbi5zZWNvbmQsIFtdKGF1dG8pIHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtMjI2MCwxMiAr
MjI2MSwxMSBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSog
aW1hZ2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90
IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQVNTRVJUKG1f
YWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEKTsKLSAgICBBU1NFUlQoY2FsbGJhY2tJRCA9IG1fYWN0
aXZlSWNvbkxvYWRDYWxsYmFja0lEKTsKLSAgICBtX2FjdGl2ZUljb25Mb2FkQ2FsbGJhY2tJRCA9
IDA7CisgICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOworICAgIG1fbG9hZGluZ0ljb24gPSBmYWxz
ZTsKIAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkp
OwogICAgIGlmICghd2ViVmlldykKQEAgLTIyNzksNyArMjI3OSw2IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJRCwgV2Vi
Q29yZTo6U2hhCiAgICAgaWYgKGljb24pCiAgICAgICAgIFt3ZWJWaWV3IF9zZXRNYWluRnJhbWVJ
Y29uOmljb25dOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2tJRCk7CiAgICAgVU5V
U0VEX1BBUkFNKGljb25EYXRhKTsKICNlbmRpZgogfQo=
</data>
<flag name="commit-queue"
          id="434772"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417128</attachid>
            <date>2021-01-06 14:06:16 -0800</date>
            <delta_ts>2021-01-06 16:40:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220381-20210106140615.patch</filename>
            <type>text/plain</type>
            <size>35759</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhNGJhMmE1ZGE2MWRl
ZjJmNjQzNTRkMDExNTE5N2RlNGYxMjJkZS4uMTIxMzUwMmQ0ZGM4ZjFlMTA3N2RiNzgyMmE4MDBh
ZjUwMGJhNmY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTAxLTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNl
bmRXaXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGRhdGFDYWxsYmFjayBmb3IgaWNvbiBsb2FkaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzODEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWhhdmlv
ciBjb3ZlcmVkIGJ5IEljb25Mb2FkaW5nIEFQSSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9E
b2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3Rv
cExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkTG9hZGluZ0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDIx
LTAxLTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSB0aGUgdW51c2VkIFJlbmRlclN0eWxlOjpzZXRIYXNQc2V1ZG9TdHlsZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDU5MDcwN2JjNmFkYjhhNTdlNzllYjI2YTVjM2U5YWE0MjMyNWM4YTIuLjI3YWE3ZWVkNzk4
Mjc1ZGJiZTdiM2I3NjIzMDMwOWM4MTRmZTQwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMjEtMDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNr
IGZvciBpY29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSURhdGEuaDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYXliZUlu
c3RhbGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25M
b2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5p
c2hlZExvYWRpbmdJY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
Z0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjEtMDEtMDYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ug
c2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgaU9TLXNwZWNpZmljIEdlbmVyaWNDYWxsYmFj
a3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5NzRmYjI0ZTRkY2I0YTQxZmE4NWJi
ZmQ4MjAzNjJmOTZiZWQxYzQ1Li4yM2E3YmY4OTBjZGQwNjUyZTAyY2E2MDFhNjdlMzdkYjgwM2I2
MTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNrIGZvciBp
Y29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisKIDIwMjEtMDEt
MDQgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB1c2Vy
LXZpc2libGUgY29weXJpZ2h0IHN0cmluZ3MgdG8gaW5jbHVkZSAyMDIxCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyNmMyMTJhOTY5MGUzMGM5Y2IzZGNhMTli
YTkyZjJkZDEyNTVjY2QyLi42YTFkMGIzMjljZGUwOGVhYWY4ZDJhZDk4OWRiOTE0NDQ4YWUxZDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTMyMyw4ICsz
MjMsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeTo6Tm9uZSk7CiAg
ICAgfQogCi0gICAgZm9yIChhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA6IG1faWNvbkxvYWRlcnMu
dmFsdWVzKCkpCi0gICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVu
dGlmaWVyLCBudWxscHRyKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9pY29uTG9hZGVy
cy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CiAgICAgbV9pY29uTG9hZGVy
cy5jbGVhcigpOwogICAgIG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLmNsZWFyKCk7CiAgICAg
CkBAIC0yMTc0LDI1ICsyMTc0LDIzIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxv
YWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZv
ckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxv
YWRJZGVudGlmaWVyKTsKIAogICAgIC8vIElmIHRoZSBkZWNpc2lvbiB3YXMgbm90IHRvIGxvYWQg
b3IgdGhpcyBEb2N1bWVudExvYWRlciBpcyBhbHJlYWR5IGRldGFjaGVkLCB0aGVyZSBpcyBubyBs
b2FkIHRvIHBlcmZvcm0uCiAgICAgaWYgKCFkZWNpc2lvbiB8fCAhbV9mcmFtZSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAg
ICAvLyBJZiB0aGUgTGlua0ljb24gd2UganVzdCB0b29rIGlzIGVtcHR5LCB0aGVuIHRoZSBEb2N1
bWVudExvYWRlciBoYWQgYWxsIG9mIGl0cyBsb2FkZXJzIHN0b3BwZWQKICAgICAvLyB3aGlsZSB0
aGlzIGljb24gbG9hZCBkZWNpc2lvbiB3YXMgcGVuZGluZy4KICAgICAvLyBJbiB0aGlzIGNhc2Ug
d2UgbmVlZCB0byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBpY29uIGZpbmlzaGVkIGxvYWRp
bmcgd2l0aCBlbXB0eSBkYXRhLgotICAgIGlmIChpY29uLnVybC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbihuZXdDYWxsYmFja0lELCBudWxscHRyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaWNvbi51cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAgICBhdXRvIGljb25Mb2Fk
ZXIgPSBtYWtlVW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAgICAgYXV0byog
cmF3SWNvbkxvYWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7Ci0gICAgbV9pY29uTG9hZGVycy5zZXQo
V1RGTW92ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7CisgICAgbV9pY29uTG9hZGVycy5z
ZXQoV1RGTW92ZShpY29uTG9hZGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAg
ICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CkBAIC0yMjAyLDE1ICsyMjAwLDgg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBs
b2FkZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmUKICAgICAvLyBJZiB0aGUgRG9jdW1lbnRMb2FkZXIg
aGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNvbiBsb2FkcyBzaG91bGQgaGF2ZSBh
bHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVChtX2ZyYW1lKTsKIAotICAgIGF1dG8g
Y2FsbGJhY2tJZGVudGlmaWVyID0gbV9pY29uTG9hZGVycy50YWtlKCZsb2FkZXIpOwotICAgIG5v
dGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCBidWZmZXIpOwotfQot
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCi17Ci0gICAgUkVMRUFT
RV9BU1NFUlQoY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX2ZyYW1l
KTsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5maW5pc2hlZExvYWRpbmdJY29uKGNh
bGxiYWNrSWRlbnRpZmllciwgYnVmZmVyKTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1faWNv
bkxvYWRlcnMudGFrZSgmbG9hZGVyKSkKKyAgICAgICAgY2FsbGJhY2soYnVmZmVyKTsKIH0KIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGlzcGF0Y2hPbmxvYWRFdmVudHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBhYWU5YjQ5NzE2Y2NmY2JhODJhYjg3MzhlZjVj
YTliN2NmYjgzNWM3Li5iNjNkMTdiMWZiM2I2ZDU0MjUxYjQ4NDU0YmIyMDI1OGI0YTIyMTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMzg3LDcgKzM4Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwogCiAg
ICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CiAKICAg
ICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xp
bmtJY29uczsgfQpAQCAtNTAzLDggKzUwMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVja0lmTmVlZGVkKCk7CiAgICAgdm9pZCBiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQo
KTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciopOwotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01B
TklGRVNUKQogICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVz
dCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZl
c3Q+KTsKICNlbmRpZgpAQCAtNjA1LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgdWludDY0X3Q+IG1faWNvbkxvYWRlcnM7CisgICAg
SGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4g
bV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDk1NGE0ZDU3MmNmYjVmZWU3
NGQ5OWRhNjhlMjIzMjA3NzdlZDA4ZGYuLjE4YTFmMWUwODdiM2E3ZWFlYWE0NjNmMzQ5ZDFhYTdl
ZWI5NGFhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0zNjEsNyArMzYxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0b3JlU2Ny
b2xsUG9zaXRpb24oKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+
PiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90LCBT
aGFyZWRCdWZmZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVXaW5kb3coRE9N
V2luZG93JikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDQzNzAzNzU2YTU2YjA4NWRkYzExOTNhYjllNmY3MDVhMTI1MzY0ZmIuLmFkN2E3MjRiZWIy
ODg5M2UxYzUwNDM5ZmQ3NzYzZDA3MGZjOGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtOTUsNiArOTUsMTIgQEAgZGVmIGZ1bmN0aW9uX3BhcmFtZXRl
cl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29uc3QgJXMmJyAlIHR5cGUKIAogCitk
ZWYgcmVwbHlfdHlwZSh0eXBlKToKKyAgICBpZiB0eXBlID09ICdJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UnOgorICAgICAgICByZXR1cm4gJ0lQQzo6RGF0YVJlZmVyZW5jZScKKyAgICBy
ZXR1cm4gdHlwZQorCisKIGRlZiByZXBseV9wYXJhbWV0ZXJfdHlwZSh0eXBlKToKICAgICByZXR1
cm4gJyVzJicgJSB0eXBlCiAKQEAgLTEwNyw3ICsxMTMsNyBAQCBkZWYgYXJndW1lbnRzX3R5cGUo
bWVzc2FnZSk6CiAgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAnLCAnLmpvaW4oZnVuY3Rp
b25fcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUsIHBhcmFtZXRlci5raW5kKSBmb3IgcGFy
YW1ldGVyIGluIG1lc3NhZ2UucGFyYW1ldGVycykKIAogCi1kZWYgcmVwbHlfdHlwZShtZXNzYWdl
KToKK2RlZiByZXBseV90dXBsZShtZXNzYWdlKToKICAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+
JyAlICgnLCAnLmpvaW4ocmVwbHlfcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUpIGZvciBw
YXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKIAogCkBAIC0xNDksNyArMTU1
LDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdl
KToKICAgICAgICAgc2VuZF9wYXJhbWV0ZXJzID0gWyhmdW5jdGlvbl9wYXJhbWV0ZXJfdHlwZSh4
LnR5cGUsIHgua2luZCksIHgubmFtZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJz
XQogICAgICAgICBjb21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycyA9ICclcycgJSAnLCAnLmpv
aW4oWycgJy5qb2luKHgpIGZvciB4IGluIHNlbmRfcGFyYW1ldGVyc10pCiAgICAgICAgIGlmIG1l
c3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAgICAgICAgICAgbW92ZV9w
YXJhbWV0ZXJzID0gJywgJy5qb2luKFttb3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnNdKQorICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gJywgJy5q
b2luKFttb3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5
X3BhcmFtZXRlcnNdKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lk
IGNhbGxSZXBseShJUEM6OkRlY29kZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJik7
XG4nICUgbW92ZV9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0
YXRpYyB2b2lkIGNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicg
JSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgYXN5bmNNZXNzYWdlUmVwbHlOYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6JXNfJXNSZXBseTsgfVxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5h
bWUpKQpAQCAtMTYxLDcgKzE2Nyw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlv
bihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJz
KToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBsZXRpb25faGFu
ZGxlcl9wYXJhbWV0ZXJzKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbicpCi0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBSZXBseSA9ICVzO1xuJyAlIHJlcGx5X3R5cGUo
bWVzc2FnZSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBSZXBseSA9ICVzO1xu
JyAlIHJlcGx5X3R1cGxlKG1lc3NhZ2UpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNp
bmcgUmVwbHlBcmd1bWVudHMgPSAlcztcbicgJSByZXBseV9hcmd1bWVudHNfdHlwZShtZXNzYWdl
KSkKIAogICAgIGlmIGxlbihmdW5jdGlvbl9wYXJhbWV0ZXJzKToKQEAgLTgyMSwxMCArODI3LDEw
IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyNpZiAlc1xuXG4nICUgbWVzc2FnZS5jb25kaXRpb24pCiAKICAg
ICAgICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgotICAg
ICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFtt
b3ZlX3R5cGUoeC50eXBlKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKQorICAg
ICAgICAgICAgICAgIG1vdmVfcGFyYW1ldGVycyA9IG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKFtt
b3ZlX3R5cGUocmVwbHlfdHlwZSh4LnR5cGUpKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFt
ZXRlcnNdKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbGxSZXBs
eShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoJXMpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKVxue1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgICAg
ICBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBPcHRpb25hbDwlcz4gJXM7XG4nICUgKHgudHlwZSwgeC5uYW1l
KSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIE9wdGlvbmFsPCVzPiAl
cztcbicgJSAocmVwbHlfdHlwZSh4LnR5cGUpLCB4Lm5hbWUpKQogICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgZGVjb2RlciA+PiAlcztcbicgJSB4Lm5hbWUpCiAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoISVzKSB7XG4gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpO1xuICAgICAgICBjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4nICUgeC5uYW1lKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjb21wbGV0aW9uSGFuZGxlcignKQpAQCAtODMyLDcg
KzgzOCw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdXVEZNb3ZlKColcyknICUgKCcpLCBXVEZNb3Zl
KConLmpvaW4oeC5uYW1lIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycykpKQogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG59XG5cbicpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgndm9pZCAlczo6Y2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57XG4gICAgY29tcGxldGlvbkhhbmRsZXIoJyAl
IG1vdmVfcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICcuam9p
bihbJ0lQQzo6QXN5bmNSZXBseUVycm9yPCcgKyB4LnR5cGUgKyAnPjo6Y3JlYXRlKCknIGZvciB4
IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJywgJy5qb2luKFsnSVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHJlcGx5X3R5cGUoeC50
eXBlKSArICc+OjpjcmVhdGUoKScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkp
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1cblxuJykKIAogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6c2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmIGVuY29kZXIsIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbicgJSAobWVzc2FnZS5u
YW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCBjNzgyMzE2ZjMwNTdh
M2NhZjlkM2UyMDc3YzgxMzI1NTNlNjk3NTZhLi42NTcxMjM1ODhiYTk0ZGI1MDNiMzU3OWU0MjNl
ZjM0OGZhZGEzZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0yNywx
MSArMjcsMTkgQEAKICNpbmNsdWRlICJBUElEYXRhLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgQVBJIHsKIAorUmVmUHRyPERhdGE+
IERhdGE6OmNyZWF0ZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgaWYg
KGRhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cit9CisKIHZvaWQgRGF0YTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGRhdGFSZWZlcmVu
Y2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5oCmluZGV4IGFhYzFjOWI5Nzk3OWUxZmU5
NjBlZTJkYjc5YmY5ODE4NmE4ZGMyZjIuLjkyMWE1MjVhZGI0ZTljMzJmMWU1Y2Y0ZWQ1MTFiNzkw
YzAxOTU0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuaApAQCAtNDQsNyArNDQsNyBA
QCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRGF0YSA6IHB1YmxpYyBPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpEYXRhPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqRnJlZURh
dGFGdW5jdGlvbikodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGNvbnRleHQpOworICAgIHVz
aW5nIEZyZWVEYXRhRnVuY3Rpb24gPSB2b2lkICgqKSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9p
ZCogY29udGV4dCk7CiAKICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZVdpdGhvdXRDb3B5aW5n
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3Qgc2l6ZSwgRnJlZURhdGFGdW5jdGlv
biBmcmVlRGF0YUZ1bmN0aW9uLCBjb25zdCB2b2lkKiBjb250ZXh0KQogICAgIHsKQEAgLTUzLDE0
ICs1MywxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZShjb25zdCB1
bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICB1bnNpZ25l
ZCBjaGFyICpjb3BpZWRCeXRlcyA9IDA7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvcGllZEJ5
dGVzID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoc2l6ZSkgewogICAgICAgICAgICAgY29waWVk
Qnl0ZXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZmFzdE1hbGxvYyhzaXplKSk7CiAg
ICAgICAgICAgICBtZW1jcHkoY29waWVkQnl0ZXMsIGJ5dGVzLCBzaXplKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhjb3BpZWRCeXRlcywgc2l6ZSwg
ZmFzdEZyZWVCeXRlcywgMCk7CisgICAgICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhj
b3BpZWRCeXRlcywgc2l6ZSwgZmFzdEZyZWVCeXRlcywgbnVsbHB0cik7CiAgICAgfQogICAgIAog
ICAgIHN0YXRpYyBSZWY8RGF0YT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYg
YnVmZmVyKQpAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjcmVhdGUo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfQogCisgICAgc3RhdGljIFJlZlB0
cjxEYXRhPiBjcmVhdGUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxEYXRhPiBjcmVhdGVXaXRob3V0Q29weWluZyhS
ZXRhaW5QdHI8TlNEYXRhPik7CiAjZW5kaWYKQEAgLTEwMCwxMSArMTAyLDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBmYXN0RnJlZShzdGF0aWNfY2FzdDx2b2lkKj4oYnl0ZXMpKTsKICAgICB9
CiAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtX2J5dGVzOwotICAgIHNpemVfdCBtX3NpemU7
CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogbV9ieXRlcyB7IG51bGxwdHIgfTsKKyAgICBzaXpl
X3QgbV9zaXplIHsgMCB9OwogCi0gICAgRnJlZURhdGFGdW5jdGlvbiBtX2ZyZWVEYXRhRnVuY3Rp
b247Ci0gICAgY29uc3Qgdm9pZCogbV9jb250ZXh0OworICAgIEZyZWVEYXRhRnVuY3Rpb24gbV9m
cmVlRGF0YUZ1bmN0aW9uIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IHZvaWQqIG1fY29udGV4dCB7
IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCA3MzdiNjI1ODE5
ODY2YTBlY2I1OTlhMjEzMGIzMjkxM2VhZjM5NmQ5Li5iMWIxMWY1YzUxYTJhNDY4ZWEwYWNhNTJl
MjYzNGYwZWJmYWEyMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBJY29uTG9hZGlu
Z0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxvYWRpbmdDbGllbnQoKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6
OkxpbmtJY29uJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6RnVuY3Rpb248dm9p
ZChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0Ns
aWVudC5jcHAKaW5kZXggNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2RlYjI1ZmRhYTI3ZjY2YzUyMy4u
YTRlZTAxNmYzYzNjYzRkNjZmNjhjMjY4ODIwMjc5NzA3YWRiZjA0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5n
Q2xpZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYg
aWNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGdW5jdGlvbjx2b2lkKEFQSTo6RGF0YSosIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAg
ICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGlj
b24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRh
dGEqKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICAv
LyBXZWJDb3JlIGNhbiBzZW5kIG5vbiBIVFRQIGljb25zLgogICAgICAgICBpZiAoIWljb24udXJs
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewpAQCAtNDksOCArNDksOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoW3Byb3RlY3RlZFdlYlZpZXcgPSBXVEZNb3ZlKHByb3RlY3RlZFdlYlZp
ZXcpLCBpY29uID0gV1RGTW92ZShpY29uKV0gKEFQSTo6RGF0YSogaWNvbkRhdGEsIENhbGxiYWNr
QmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSB8fCAhaWNvbkRhdGEpCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihbcHJvdGVjdGVkV2ViVmlldyA9IFdURk1vdmUocHJvdGVjdGVkV2ViVmlldyksIGlj
b24gPSBXVEZNb3ZlKGljb24pXSAoQVBJOjpEYXRhKiBpY29uRGF0YSkgeworICAgICAgICAgICAg
ICAgIGlmICghaWNvbkRhdGEpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB3ZWJraXRXZWJWaWV3U2V0SWNvbihwcm90ZWN0ZWRXZWJWaWV3LmdldCgpLCBpY29u
LCAqaWNvbkRhdGEpOwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tCmluZGV4IGVjYzUwMDZjODZkYjI0MWVkOGZiZjhjYmNjMzY3ZjRkMGEz
MWQ0ZmUuLjE0MzE4ZTU3OGY4YzQwZmUyMzExZjc5YjZhZDY4NmM0NGRhMzFkYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC05MjYsMTggKzkyNiwxNSBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBwcml2YXRlOgogICAg
ICAgICB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKShOU0RhdGEqKTsK
IAotICAgICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlu
a0ljb24mIGxpbmtJY29uLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpGdW5jdGlv
bjx2b2lkKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZv
ckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGxpbmtJY29uLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8X1dL
TGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS0xpbmtJY29uUGFy
YW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsKIAogICAgICAgICAg
ICAgW21fd2tWaWV3IF9zaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOnBhcmFtZXRlcnMuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJY29uTG9hZENvbXBsZXRpb25IYW5kbGVyIGxvYWRD
b21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgICAgICBpZiAobG9hZENvbXBsZXRpb25IYW5kbGVy
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlv
bkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkIChOU0RhdGEgKik+KGxvYWRDb21wbGV0aW9uSGFuZGxl
cildKEFQSTo6RGF0YSogZGF0YSwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yOjpOb25lIHx8ICFkYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRDb21wbGV0aW9uSGFuZGxlcihuaWwpOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFuZGxlcih3cmFwcGVy
KCpkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIobG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJ
OjpEYXRhKiBkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhh
bmRsZXIod3JhcHBlcihkYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2Fk
aW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUuaAppbmRleCAwNzQzNzkwNGYxZTQyMzBiMzE1ODJhOWRmNDJjMjNjMTRkNjA1YWQ3
Li4zN2U4Yzc1ZmYzYmJhZjE2YTc4NzAzYzZiZmQ1NmYwNzdlYzcxY2Y2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCkBAIC01
NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH5JY29uTG9hZGluZ0NsaWVudCgpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdl
YkNvcmU6OkxpbmtJY29uJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6RnVuY3Rp
b248dm9pZChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKT4mJikg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJD
b3JlOjpMaW5rSWNvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChBUEk6OkRhdGEqKT4mJik+JiYpIG92ZXJyaWRlOwogCiAgICAgICAgIEljb25Mb2FkaW5n
RGVsZWdhdGUmIG1faWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KaW5kZXggODI3
MDdmOGY2MzFiOTlhN2ZhNGZhMzVlY2MxYWQ0NDhmM2VkZjBiOC4uOGY5N2RkZjVmM2MwZDg5NWY2
MGJiZDg5M2RiNTM4ZTZmMzExZjI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCkBAIC03MCw3ICs3MCw3IEBAIEljb25M
b2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50Ojp+SWNvbkxvYWRpbmdDbGllbnQoKQog
CiB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKShOU0RhdGEqKTsKIAot
dm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24sIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpEYXRhKiwgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEljb25M
b2FkaW5nRGVsZWdhdGU6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBsaW5rSWNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIW1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3U2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyc0NvbXBsZXRpb25IYW5kbGVyKSB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpAQCAtODgsMTEgKzg4LDggQEAg
dm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihjb25zdCBXZWJDb3IKICAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2Fk
aW5nRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1l
dGVycy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJY29uTG9hZENvbXBsZXRpb25IYW5k
bGVyIGxvYWRDb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAgICAgICAgIGlmIChsb2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIobG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3Ig
IT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSB8fCAhZGF0YSkKLSAgICAgICAgICAgICAgICAg
ICAgbG9hZENvbXBsZXRpb25IYW5kbGVyKG5pbCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBlcigqZGF0YSkpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsKKyAg
ICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSk7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDNhNDRlMmMxMTg2YjU1MzM2MjVlYjU1NWFkNGJjNjg0YmJkNWFkNWMuLjAwYTYwNzZmMWZiYTVm
MWJlY2RkYmNjMDliNmIzOGRhNzU5MzlmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtOTQwMSwyNSArOTQwMSwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWRE
ZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWNrSUQg
bG9hZElkZW50aWZpZXIpCiB7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudC0+Z2V0TG9hZERlY2lz
aW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxXZWJQYWdlUHJv
eHk+KHRoaXMpLCBsb2FkSWRlbnRpZmllcl0oV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKSB7CisgICAgbV9pY29u
TG9hZGluZ0NsaWVudC0+Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihpY29uLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkSWRlbnRpZmllcl0gKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoQVBJOjpEYXRhKik+JiYgY2FsbGJhY2spIHsKICAgICAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKSB7Ci0gICAgICAgICAgICBpZiAoY2FsbGJhY2tGdW5jdGlvbikKLSAgICAg
ICAgICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxwdHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6
OlVua25vd24pOworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNh
bGxiYWNrKG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247Ci0gICAgICAgIGF1dG8g
bmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENhbGxiYWNrSUQobV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZv
ckljb24iX3MpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsKLQotICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRl
bnRpZmllciwgbmV3Q2FsbGJhY2tJZGVudGlmaWVyKSk7CisgICAgICAgIGlmICghY2FsbGJhY2sp
CisgICAgICAgICAgICByZXR1cm4gc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBsb2FkSWRlbnRpZmllciksIFtdKGF1
dG8pIHsgfSk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBsb2FkSWRlbnRpZmllciksIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGljb25EYXRh
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEFQSTo6RGF0YTo6Y3JlYXRlKGljb25E
YXRhKS5nZXQoKSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZmluaXNoZWRMb2FkaW5nSWNvbihDYWxsYmFja0lEIGNhbGxiYWNrSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKLXsKLSAgICBkYXRhQ2FsbGJhY2soZGF0YSwgY2FsbGJhY2tJ
RCk7Ci19Ci0KIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gV2ViUGFnZVBy
b3h5Ojp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkKIHsKICAgICByZXR1cm4gcGFnZUNs
aWVudCgpLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTQxNjU5ZDlkMzM2MzA1YWEwNjFjOWM4NzdjNjMzNmQx
OTE0MzE3OS4uNjMwYjU2ZmU3ZjBhZjBkNDJmN2Y1MDcyMWEzOWFmYWQ0MGQ0OGYyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NDgsNyArMTU0OCw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogCiAgICAgdm9pZCBn
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgV2ViS2l0OjpD
YWxsYmFja0lEKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFj
a0lELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHZvaWQgc2V0Rm9jdXMoYm9v
bCBmb2N1c2VkKTsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDgzZWIwYzczNWJjNjgyZmJkNDk0NzFjZTRlOWIyNzFmOWFkYmIwMTIuLjNh
YzJjZjE5MGJiODAxZmVlYWM3NzA1ZjFiZGJjZmIwMmZkMzhhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTUwOCw3ICs1MDgs
NiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZFJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpCiAKICAgICBHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHN0cnVjdCBXZWJDb3JlOjpMaW5r
SWNvbiBpY29uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBGaW5pc2hlZExv
YWRpbmdJY29uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lELCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgZGF0YSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgRGlkSGFuZGxl
QWNjZXB0ZWRDYW5kaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
YjBiNGY1NzNiMDUxYWY4MzVmNjU2ODQyN2E1ZmI4NDU5NDEwYWNmNy4uMGZjYzhjZGY3OTJkZDcx
YmM4ZjQ0YmIzNzAzYzZlNmQzZDAzODg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0xOTA5LDE3ICsxOTA5LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0
TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAgICAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGljb24uZmlyc3QsIENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGljb24uc2Vjb25kKSkp
OwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKiBkYXRhKQotewotICAgIGF1
dG8gY2FsbGJhY2tJRCA9IENhbGxiYWNrSUQ6OmZyb21JbnRlZ2VyKGNhbGxiYWNrSWRlbnRpZmll
cik7Ci0gICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkgewotICAg
ICAgICBpZiAoZGF0YSkKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lELCB7ICpkYXRhIH0pKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSUQsIHsgfSkpOwotICAgIH0KLX0KLQog
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlV2luZG93KERPTVdpbmRvdyYgd2lu
ZG93KQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NTgxNTMyYTE2YmQxYmNmMTQ2OGUzNWI5MTExNmYzZWY3
ZjEwN2YuLjlkOWQ5OWNjNGE1Y2E2NTA0M2FiNWMyZTA5MzYxMTg1NzYxMDg5YTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNjcsNyArMjY3LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIGZpbmFsOwogCiAgICAgdm9pZCBnZXRMb2Fk
RGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29u
JiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbih1aW50
NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopIGZpbmFsOwog
CiAgICAgdm9pZCBkaWRDcmVhdGVXaW5kb3coV2ViQ29yZTo6RE9NV2luZG93JikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2Yy
NmRhMjM2N2RjZTI1MjQ1MTQ2ZjNhZTNjNzI3MGEwZDExYWVkOC4uYTkxNjU4YjcwMDkxNzQxZGU4
YTBiN2U1Y2ZkYTc3MmFjMWQ1MTZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY1NDcsMTAgKzY1NDcsMTUgQEAgdm9pZCBXZWJQYWdlOjpk
aWRMb3NlUG9pbnRlckxvY2soKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVy
LCBPcHRpb25hbENhbGxiYWNrSUQgbmV3Q2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChhdXRvKiBkb2N1bWVu
dExvYWRlciA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCkpCi0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRl
Y2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgbmV3Q2FsbGJhY2tJRC50b0ludGVn
ZXIoKSk7CisgICAgYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOworICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAgZG9jdW1lbnRMb2Fk
ZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRv
SW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOworICAgIH0pOwogfQogCiB2b2lkIFdlYlBh
Z2U6OnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOGJhOWY3MWI0
NjI1YjkxNWFlNWQ5OGJjMWMzN2JlNmQyNjQwYTcwMC4uOWZkZjc3MzE0MWM5NGEyMTkyZTViOTVm
OWU1MzI0ZTMxODk1M2ZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtMTE5OSw3ICsxMTk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTG9zZVBv
aW50ZXJMb2NrKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyLCBPcHRpb25hbENhbGxi
YWNrSUQpOworICAgIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9u
LCBDYWxsYmFja0lELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSYpPiYmKTsKICAgICB2b2lkIHNldFVzZUljb25Mb2FkaW5nQ2xpZW50
KGJvb2wpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDE3YzgwMjQ1ZDlhZWI0Mjg2ZGJhYWE3NmIwMDNmMzdkNmVlMGY1NjQu
LmMxNmRiYzY5NmUyMDMwZjg5NDY4NjIyZmY2YjRmN2YyODNmMmE0ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
NTQwLDcgKzU0MCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50
OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAgICBTZXRVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbikKIAotICAgIERpZEdldExv
YWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGxvYWRJ
ZGVudGlmaWVyLCBXZWJLaXQ6Ok9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxsYmFja0lEKQorICAg
IERpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgV2ViS2l0OjpDYWxsYmFj
a0lEIGxvYWRJZGVudGlmaWVyKSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGlj
b25EYXRhKSBBc3luYwogICAgIFNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxv
YWRpbmdDbGllbnQpCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDJhZWU4NzI0YWYzYTdkY2Q1ZTJhYjAxYjM0NTMwZGZkZTkxNjRhMzYuLmUwNGQz
ZDlhMWViODM4MDFjOTIxYzYwODNlZTJiYzNlZjNkZGVlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorI2ltcG9y
dCA8d3RmL1dlYWtQdHIuaD4KIAogQGNsYXNzIFdlYkRvd25sb2FkOwogQGNsYXNzIFdlYkZyYW1l
OwpAQCAtNTIsNyArNTMsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIH0KIAotY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnQgeworY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJG
cmFtZUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkZyYW1lTG9hZGVy
Q2xpZW50KFdlYkZyYW1lKiA9IG51bGxwdHIpOwogICAgIH5XZWJGcmFtZUxvYWRlckNsaWVudCgp
OwpAQCAtMjQ2LDkgKzI0NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9u
Rm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2
NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNv
bihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKIAotICAgIHVpbnQ2NF90IG1fYWN0aXZlSWNvbkxv
YWRDYWxsYmFja0lEIHsgMCB9OworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGJvb2wg
bV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CisjZW5kaWYKIAogICAgIFJldGFpblB0cjxXZWJGcmFt
ZT4gbV93ZWJGcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAzMGVlZjRk
ZDk2MzcyMTMyZjFkN2E5MWYwMDU1MjE4Y2ExODFlODk0Li41NjM0OTZhZGQ3NWZiODM1MzlhYjlj
MzAxZjBiODc1YjBlYzZjY2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMw
MSw4ICsxMzAxLDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZCgp
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFj
ZW1lbnQoKQogewotICAgIG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEID0gMDsKLQogICAgIGlm
ICghW21fd2ViRnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdKSB7CiAgICAgICAgIEFTU0VSVCghY29y
ZShtX3dlYkZyYW1lLmdldCgpKS0+dHJlZSgpLmNoaWxkQ291bnQoKSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTIxOTgsNyArMjE5Niw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExv
YWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9W
RVJTSU9OX1dJVEhfREVGQVVMVF9JQ09OX0xPQURJTkcpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
aWNvbiA6IGljb25zKQotICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oZmFsc2UsIGljb24uc2Vjb25kLCAwKTsKKyAgICAgICAgICAgIGRvY3VtZW50
TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBpY29uLnNlY29uZCwgW10o
YXV0bykgeyB9KTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjIxMCwyOSArMjIwOCwz
MiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcgogCiAgICAgaWYgKGRpc2FsbG93ZWREdWVUb0lt
YWdlTG9hZFNldHRpbmdzIHx8ICFmcmFtZS0+aXNNYWluRnJhbWUoKSB8fCAhZG9jdW1lbnRMb2Fk
ZXItPnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCAhW1dlYlZpZXcgX2lzSWNvbkxv
YWRpbmdFbmFibGVkXSkgewogICAgICAgICBmb3IgKGF1dG8mIGljb24gOiBpY29ucykKLSAgICAg
ICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBp
Y29uLnNlY29uZCwgMCk7CisgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIFtdKGF1dG8pIHsgfSk7CiAKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCghbV9hY3RpdmVJY29uTG9hZENhbGxiYWNr
SUQpOwotCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgQVNTRVJUKCFtX2xvYWRpbmdJ
Y29uKTsKICAgICAvLyBXZWJLaXQgMSwgd2hpY2ggb25seSBzdXBwb3J0cyBvbmUgaWNvbiBwZXIg
cGFnZSBVUkwsIHRyYWRpdGlvbmFsbHkgaGFzIHByZWZlcnJlZCB0aGUgbGFzdCBpY29uIGluIGNh
c2Ugb2YgbXVsdGlwbGUgaWNvbnMgbGlzdGVkLgogICAgIC8vIFRvIHByZXNlcnZlIHRoYXQgYmVo
YXZpb3Igd2Ugd2FsayB0aGUgbGlzdCBiYWNrd2FyZHMuCiAgICAgZm9yIChhdXRvIGljb24gPSBp
Y29ucy5yYmVnaW4oKTsgaWNvbiAhPSBpY29ucy5yZW5kKCk7ICsraWNvbikgewotICAgICAgICBp
ZiAoaWNvbi0+Zmlyc3QudHlwZSAhPSBXZWJDb3JlOjpMaW5rSWNvblR5cGU6OkZhdmljb24gfHwg
bV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpIHsKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVy
LT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBpY29uLT5zZWNvbmQsIDApOworICAg
ICAgICBpZiAoaWNvbi0+Zmlyc3QudHlwZSAhPSBXZWJDb3JlOjpMaW5rSWNvblR5cGU6OkZhdmlj
b24gfHwgbV9sb2FkaW5nSWNvbikgeworICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdl
dExvYWREZWNpc2lvbkZvckljb24oZmFsc2UsIGljb24tPnNlY29uZCwgW10oYXV0bykgeyB9KTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgbV9hY3RpdmVJY29u
TG9hZENhbGxiYWNrSUQgPSAxOwotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFj
a0lEKTsKKyAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7CisgICAgICAgIGRvY3VtZW50TG9h
ZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBi
dWZmZXIpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nSWNvbihidWZmZXIpOworICAgICAgICB9
KTsKICAgICB9CiAjZWxzZQogICAgIC8vIE5vIFdlYkNvcmUgaWNvbiBsb2FkaW5nIG9uIGlPUwog
ICAgIGZvciAoYXV0byYgaWNvbiA6IGljb25zKQotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIDApOworICAgICAgICBk
b2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNv
bmQsIFtdKGF1dG8pIHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtMjI2MCwxMiArMjI2MSwxMSBAQCBz
dGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6
ZSBzaXplKQogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSUQs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEp
CiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQVNTRVJUKG1fYWN0aXZlSWNvbkxv
YWRDYWxsYmFja0lEKTsKLSAgICBBU1NFUlQoY2FsbGJhY2tJRCA9IG1fYWN0aXZlSWNvbkxvYWRD
YWxsYmFja0lEKTsKLSAgICBtX2FjdGl2ZUljb25Mb2FkQ2FsbGJhY2tJRCA9IDA7CisgICAgQVNT
RVJUKG1fbG9hZGluZ0ljb24pOworICAgIG1fbG9hZGluZ0ljb24gPSBmYWxzZTsKIAogICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIGlmICgh
d2ViVmlldykKQEAgLTIyNzksNyArMjI3OSw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2hhCiAg
ICAgaWYgKGljb24pCiAgICAgICAgIFt3ZWJWaWV3IF9zZXRNYWluRnJhbWVJY29uOmljb25dOwog
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2tJRCk7CiAgICAgVU5VU0VEX1BBUkFNKGlj
b25EYXRhKTsKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417139</attachid>
            <date>2021-01-06 16:40:11 -0800</date>
            <delta_ts>2021-01-11 13:00:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220381-20210106164010.patch</filename>
            <type>text/plain</type>
            <size>36067</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhNGJhMmE1ZGE2MWRl
ZjJmNjQzNTRkMDExNTE5N2RlNGYxMjJkZS4uMTIxMzUwMmQ0ZGM4ZjFlMTA3N2RiNzgyMmE4MDBh
ZjUwMGJhNmY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTAxLTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNl
bmRXaXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGRhdGFDYWxsYmFjayBmb3IgaWNvbiBsb2FkaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzODEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWhhdmlv
ciBjb3ZlcmVkIGJ5IEljb25Mb2FkaW5nIEFQSSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9E
b2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3Rv
cExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkTG9hZGluZ0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDIx
LTAxLTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSB0aGUgdW51c2VkIFJlbmRlclN0eWxlOjpzZXRIYXNQc2V1ZG9TdHlsZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDU5MDcwN2JjNmFkYjhhNTdlNzllYjI2YTVjM2U5YWE0MjMyNWM4YTIuLjI3YWE3ZWVkNzk4
Mjc1ZGJiZTdiM2I3NjIzMDMwOWM4MTRmZTQwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMjEtMDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNr
IGZvciBpY29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElEYXRhLmNwcDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSURhdGEuaDoKKyAgICAgICAgKEFQSTo6RGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Okljb25Mb2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYXliZUlu
c3RhbGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25M
b2FkaW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5p
c2hlZExvYWRpbmdJY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
Z0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjEtMDEtMDYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ug
c2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgaU9TLXNwZWNpZmljIEdlbmVyaWNDYWxsYmFj
a3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5NzRmYjI0ZTRkY2I0YTQxZmE4NWJi
ZmQ4MjAzNjJmOTZiZWQxYzQ1Li4yM2E3YmY4OTBjZGQwNjUyZTAyY2E2MDFhNjdlMzdkYjgwM2I2
MTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEt
MDEtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNhbGxiYWNrIGZvciBp
Y29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisKIDIwMjEtMDEt
MDQgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB1c2Vy
LXZpc2libGUgY29weXJpZ2h0IHN0cmluZ3MgdG8gaW5jbHVkZSAyMDIxCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAyNmMyMTJhOTY5MGUzMGM5Y2IzZGNhMTli
YTkyZjJkZDEyNTVjY2QyLi42YTFkMGIzMjljZGUwOGVhYWY4ZDJhZDk4OWRiOTE0NDQ4YWUxZDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTMyMyw4ICsz
MjMsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeTo6Tm9uZSk7CiAg
ICAgfQogCi0gICAgZm9yIChhdXRvIGNhbGxiYWNrSWRlbnRpZmllciA6IG1faWNvbkxvYWRlcnMu
dmFsdWVzKCkpCi0gICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVu
dGlmaWVyLCBudWxscHRyKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9pY29uTG9hZGVy
cy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CiAgICAgbV9pY29uTG9hZGVy
cy5jbGVhcigpOwogICAgIG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLmNsZWFyKCk7CiAgICAg
CkBAIC0yMTc0LDI1ICsyMTc0LDIzIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxv
YWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZv
ckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxv
YWRJZGVudGlmaWVyKTsKIAogICAgIC8vIElmIHRoZSBkZWNpc2lvbiB3YXMgbm90IHRvIGxvYWQg
b3IgdGhpcyBEb2N1bWVudExvYWRlciBpcyBhbHJlYWR5IGRldGFjaGVkLCB0aGVyZSBpcyBubyBs
b2FkIHRvIHBlcmZvcm0uCiAgICAgaWYgKCFkZWNpc2lvbiB8fCAhbV9mcmFtZSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAg
ICAvLyBJZiB0aGUgTGlua0ljb24gd2UganVzdCB0b29rIGlzIGVtcHR5LCB0aGVuIHRoZSBEb2N1
bWVudExvYWRlciBoYWQgYWxsIG9mIGl0cyBsb2FkZXJzIHN0b3BwZWQKICAgICAvLyB3aGlsZSB0
aGlzIGljb24gbG9hZCBkZWNpc2lvbiB3YXMgcGVuZGluZy4KICAgICAvLyBJbiB0aGlzIGNhc2Ug
d2UgbmVlZCB0byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBpY29uIGZpbmlzaGVkIGxvYWRp
bmcgd2l0aCBlbXB0eSBkYXRhLgotICAgIGlmIChpY29uLnVybC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbihuZXdDYWxsYmFja0lELCBudWxscHRyKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaWNvbi51cmwuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAgICBhdXRvIGljb25Mb2Fk
ZXIgPSBtYWtlVW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAgICAgYXV0byog
cmF3SWNvbkxvYWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7Ci0gICAgbV9pY29uTG9hZGVycy5zZXQo
V1RGTW92ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7CisgICAgbV9pY29uTG9hZGVycy5z
ZXQoV1RGTW92ZShpY29uTG9hZGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAg
ICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CkBAIC0yMjAyLDE1ICsyMjAwLDgg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBs
b2FkZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmUKICAgICAvLyBJZiB0aGUgRG9jdW1lbnRMb2FkZXIg
aGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNvbiBsb2FkcyBzaG91bGQgaGF2ZSBh
bHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVChtX2ZyYW1lKTsKIAotICAgIGF1dG8g
Y2FsbGJhY2tJZGVudGlmaWVyID0gbV9pY29uTG9hZGVycy50YWtlKCZsb2FkZXIpOwotICAgIG5v
dGlmeUZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJZGVudGlmaWVyLCBidWZmZXIpOwotfQot
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCi17Ci0gICAgUkVMRUFT
RV9BU1NFUlQoY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX2ZyYW1l
KTsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5maW5pc2hlZExvYWRpbmdJY29uKGNh
bGxiYWNrSWRlbnRpZmllciwgYnVmZmVyKTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1faWNv
bkxvYWRlcnMudGFrZSgmbG9hZGVyKSkKKyAgICAgICAgY2FsbGJhY2soYnVmZmVyKTsKIH0KIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGlzcGF0Y2hPbmxvYWRFdmVudHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBhYWU5YjQ5NzE2Y2NmY2JhODJhYjg3MzhlZjVj
YTliN2NmYjgzNWM3Li5iNjNkMTdiMWZiM2I2ZDU0MjUxYjQ4NDU0YmIyMDI1OGI0YTIyMTY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMzg3LDcgKzM4Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwogCiAg
ICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CiAKICAg
ICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xp
bmtJY29uczsgfQpAQCAtNTAzLDggKzUwMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxQ
b2xpY3lDaGVja0lmTmVlZGVkKCk7CiAgICAgdm9pZCBiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQo
KTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciopOwotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01B
TklGRVNUKQogICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVz
dCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZl
c3Q+KTsKICNlbmRpZgpAQCAtNjA1LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgdWludDY0X3Q+IG1faWNvbkxvYWRlcnM7CisgICAg
SGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4g
bV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDk1NGE0ZDU3MmNmYjVmZWU3
NGQ5OWRhNjhlMjIzMjA3NzdlZDA4ZGYuLjE4YTFmMWUwODdiM2E3ZWFlYWE0NjNmMzQ5ZDFhYTdl
ZWI5NGFhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0zNjEsNyArMzYxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0b3JlU2Ny
b2xsUG9zaXRpb24oKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+
PiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90LCBT
aGFyZWRCdWZmZXIqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVXaW5kb3coRE9N
V2luZG93JikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cmlu
ZGV4IDQzNzAzNzU2YTU2YjA4NWRkYzExOTNhYjllNmY3MDVhMTI1MzY0ZmIuLjBkYjU2MzgxNzc3
ZTY4NDM2M2IyN2VlNDk4NzU1MGE4NmYxNmYyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQpAQCAtOTUsNiArOTUsMTIgQEAgZGVmIGZ1bmN0aW9uX3BhcmFtZXRl
cl90eXBlKHR5cGUsIGtpbmQpOgogICAgIHJldHVybiAnY29uc3QgJXMmJyAlIHR5cGUKIAogCitk
ZWYgcmVwbHlfdHlwZSh0eXBlKToKKyAgICBpZiB0eXBlID09ICdJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UnOgorICAgICAgICByZXR1cm4gJ0lQQzo6RGF0YVJlZmVyZW5jZScKKyAgICBy
ZXR1cm4gdHlwZQorCisKIGRlZiByZXBseV9wYXJhbWV0ZXJfdHlwZSh0eXBlKToKICAgICByZXR1
cm4gJyVzJicgJSB0eXBlCiAKQEAgLTEwNywxMiArMTEzLDEyIEBAIGRlZiBhcmd1bWVudHNfdHlw
ZShtZXNzYWdlKToKICAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+JyAlICcsICcuam9pbihmdW5j
dGlvbl9wYXJhbWV0ZXJfdHlwZShwYXJhbWV0ZXIudHlwZSwgcGFyYW1ldGVyLmtpbmQpIGZvciBw
YXJhbWV0ZXIgaW4gbWVzc2FnZS5wYXJhbWV0ZXJzKQogCiAKLWRlZiByZXBseV90eXBlKG1lc3Nh
Z2UpOgorZGVmIHJlcGx5X3R1cGxlKG1lc3NhZ2UpOgogICAgIHJldHVybiAnc3RkOjp0dXBsZTwl
cz4nICUgKCcsICcuam9pbihyZXBseV9wYXJhbWV0ZXJfdHlwZShwYXJhbWV0ZXIudHlwZSkgZm9y
IHBhcmFtZXRlciBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKQogCiAKIGRlZiByZXBseV9h
cmd1bWVudHNfdHlwZShtZXNzYWdlKToKLSAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+JyAlICgn
LCAnLmpvaW4ocGFyYW1ldGVyLnR5cGUgZm9yIHBhcmFtZXRlciBpbiBtZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnMpKQorICAgIHJldHVybiAnc3RkOjp0dXBsZTwlcz4nICUgKCcsICcuam9pbihyZXBs
eV90eXBlKHBhcmFtZXRlci50eXBlKSBmb3IgcGFyYW1ldGVyIGluIG1lc3NhZ2UucmVwbHlfcGFy
YW1ldGVycykpCiAKIAogZGVmIG1lc3NhZ2VfdG9fcmVwbHlfZm9yd2FyZF9kZWNsYXJhdGlvbiht
ZXNzYWdlKToKQEAgLTE0OSw3ICsxNTUsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFy
YXRpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICBzZW5kX3BhcmFtZXRlcnMgPSBbKGZ1
bmN0aW9uX3BhcmFtZXRlcl90eXBlKHgudHlwZSwgeC5raW5kKSwgeC5uYW1lKSBmb3IgeCBpbiBt
ZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCiAgICAgICAgIGNvbXBsZXRpb25faGFuZGxlcl9wYXJh
bWV0ZXJzID0gJyVzJyAlICcsICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJh
bWV0ZXJzXSkKICAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVU
RSk6Ci0gICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZSh4
LnR5cGUpIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAgICBt
b3ZlX3BhcmFtZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBlKHgudHlwZSkp
IGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCglcyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBs
eU5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OyB9XG4nICUgKHJl
Y2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCkBAIC0xNjEsNyArMTY3LDcgQEAgZGVmIG1lc3Nh
Z2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAgICAg
IGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JywgJXMnICUgY29tcGxldGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcpO1xuJykKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5nIFJlcGx5
ID0gJXM7XG4nICUgcmVwbHlfdHlwZShtZXNzYWdlKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIHVzaW5nIFJlcGx5ID0gJXM7XG4nICUgcmVwbHlfdHVwbGUobWVzc2FnZSkpCiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9ICVzO1xuJyAlIHJlcGx5
X2FyZ3VtZW50c190eXBlKG1lc3NhZ2UpKQogCiAgICAgaWYgbGVuKGZ1bmN0aW9uX3BhcmFtZXRl
cnMpOgpAQCAtODIxLDEwICs4MjcsMTAgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihy
ZWNlaXZlcik6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2lmICVzXG5cbicgJSBt
ZXNzYWdlLmNvbmRpdGlvbikKIAogICAgICAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRl
KEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gbWVz
c2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlwZSh4LnR5cGUpIGZvciB4IGluIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAgICAgICAgbW92ZV9wYXJhbWV0ZXJzID0gbWVz
c2FnZS5uYW1lLCAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBlKHgudHlwZSkpIGZvciB4
IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgndm9pZCAlczo6Y2FsbFJlcGx5KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCglcyk+JiYgY29tcGxldGlvbkhhbmRsZXIpXG57XG4nICUgbW92ZV9wYXJh
bWV0ZXJzKQogICAgICAgICAgICAgICAgIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVy
czoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIE9wdGlvbmFsPCVzPiAl
cztcbicgJSAoeC50eXBlLCB4Lm5hbWUpKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgT3B0aW9uYWw8JXM+ICVzO1xuJyAlIChyZXBseV90eXBlKHgudHlwZSksIHgubmFt
ZSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWNvZGVyID4+ICVz
O1xuJyAlIHgubmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlm
ICghJXMpIHtcbiAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4gICAgICAgIGNhbmNlbFJl
cGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1c
bicgJSB4Lm5hbWUpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNvbXBsZXRp
b25IYW5kbGVyKCcpCkBAIC04MzIsNyArODM4LDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFu
ZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1dURk1v
dmUoKiVzKScgJSAoJyksIFdURk1vdmUoKicuam9pbih4Lm5hbWUgZm9yIHggaW4gbWVzc2FnZS5y
ZXBseV9wYXJhbWV0ZXJzKSkpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKTtcbn1c
blxuJykKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpjYW5jZWxSZXBs
eShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcilcbntcbiAg
ICBjb21wbGV0aW9uSGFuZGxlcignICUgbW92ZV9wYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJywgJy5qb2luKFsnSVBDOjpBc3luY1JlcGx5RXJyb3I8JyArIHgudHlw
ZSArICc+OjpjcmVhdGUoKScgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkpCisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4oWydJUEM6OkFzeW5jUmVwbHlF
cnJvcjwnICsgcmVwbHlfdHlwZSh4LnR5cGUpICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBpbiBtZXNz
YWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcp
O1xufVxuXG4nKQogCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYgZW5jb2RlciwgSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uJyAlIChtZXNzYWdlLm5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEu
Y3BwCmluZGV4IGM3ODIzMTZmMzA1N2EzY2FmOWQzZTIwNzdjODEzMjU1M2U2OTc1NmEuLjY1NzEy
MzU4OGJhOTRkYjUwM2IzNTc5ZTQyM2VmMzQ4ZmFkYTNlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJRGF0YS5jcHAKQEAgLTI3LDExICsyNywxOSBAQAogI2luY2x1ZGUgIkFQSURhdGEuaCIK
IAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFj
ZSBBUEkgewogCitSZWZQdHI8RGF0YT4gRGF0YTo6Y3JlYXRlKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKK3sKKyAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKK30K
Kwogdm9pZCBEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAg
IGVuY29kZXIgPDwgZGF0YVJlZmVyZW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmgK
aW5kZXggYWFjMWM5Yjk3OTc5ZTFmZTk2MGVlMmRiNzliZjk4MTg2YThkYzJmMi4uOTIxYTUyNWFk
YjRlOWMzMmYxZTVjZjRlZDUxMWI3OTBjMDE5NTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
RGF0YS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBEYXRhIDog
cHVibGljIE9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRhdGE+IHsKIHB1YmxpYzoKLSAg
ICB0eXBlZGVmIHZvaWQgKCpGcmVlRGF0YUZ1bmN0aW9uKSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
dm9pZCogY29udGV4dCk7CisgICAgdXNpbmcgRnJlZURhdGFGdW5jdGlvbiA9IHZvaWQgKCopKHVu
c2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBjb250ZXh0KTsKIAogICAgIHN0YXRpYyBSZWY8RGF0
YT4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVf
dCBzaXplLCBGcmVlRGF0YUZ1bmN0aW9uIGZyZWVEYXRhRnVuY3Rpb24sIGNvbnN0IHZvaWQqIGNv
bnRleHQpCiAgICAgewpAQCAtNTMsMTQgKzUzLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBS
ZWY8RGF0YT4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3Qgc2l6ZSkK
ICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvcGllZEJ5dGVzID0gMDsKKyAgICAgICAg
dW5zaWduZWQgY2hhciAqY29waWVkQnl0ZXMgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChzaXpl
KSB7CiAgICAgICAgICAgICBjb3BpZWRCeXRlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihmYXN0TWFsbG9jKHNpemUpKTsKICAgICAgICAgICAgIG1lbWNweShjb3BpZWRCeXRlcywgYnl0
ZXMsIHNpemUpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdpdGhvdXRDb3B5
aW5nKGNvcGllZEJ5dGVzLCBzaXplLCBmYXN0RnJlZUJ5dGVzLCAwKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvcGllZEJ5dGVzLCBzaXplLCBmYXN0RnJlZUJ5dGVzLCBu
dWxscHRyKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIFJlZjxEYXRhPiBjcmVhdGUoY29uc3Qg
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBidWZmZXIpCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgUmVmUHRyPERhdGE+IGNyZWF0ZShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKTsKKyAgICAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPERhdGE+
IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKFJldGFpblB0cjxOU0RhdGE+KTsKICNlbmRpZgpAQCAtMTAw
LDExICsxMDIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZhc3RGcmVlKHN0YXRpY19jYXN0
PHZvaWQqPihieXRlcykpOwogICAgIH0KIAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1fYnl0
ZXM7Ci0gICAgc2l6ZV90IG1fc2l6ZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtX2J5dGVz
IHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKLSAgICBGcmVlRGF0YUZ1
bmN0aW9uIG1fZnJlZURhdGFGdW5jdGlvbjsKLSAgICBjb25zdCB2b2lkKiBtX2NvbnRleHQ7Cisg
ICAgRnJlZURhdGFGdW5jdGlvbiBtX2ZyZWVEYXRhRnVuY3Rpb24geyBudWxscHRyIH07CisgICAg
Y29uc3Qgdm9pZCogbV9jb250ZXh0IHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oCmluZGV4IDczN2I2MjU4MTk4NjZhMGVjYjU5OWEyMTMwYjMyOTEzZWFmMzk2ZDkuLmIx
YjExZjVjNTFhMmE0NjhlYTBhY2E1MmUyNjM0ZjBlYmZhYTIxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
Y29uTG9hZGluZ0NsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGdldExvYWREZWNpc2lv
bkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHZpcnR1YWwgdm9pZCBnZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcAppbmRleCA2NWZkN2M2OTkyMzg4MDExNTU4
YzY3ZGViMjVmZGFhMjdmNjZjNTIzLi5hNGVlMDE2ZjNjM2NjNGQ2NmY2OGMyNjg4MjAyNzk3MDdh
ZGJmMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRJY29uTG9hZGluZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNv
bnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZ1bmN0
aW9uPHZvaWQoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIC8vIFdlYkNvcmUgY2FuIHNlbmQgbm9uIEhUVFAgaWNvbnMu
CiAgICAgICAgIGlmICghaWNvbi51cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CkBAIC00
OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbcHJvdGVjdGVkV2ViVmlldyA9
IFdURk1vdmUocHJvdGVjdGVkV2ViVmlldyksIGljb24gPSBXVEZNb3ZlKGljb24pXSAoQVBJOjpE
YXRhKiBpY29uRGF0YSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICAgICAg
ICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFpY29uRGF0YSkK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtwcm90ZWN0ZWRXZWJWaWV3ID0gV1RGTW92
ZShwcm90ZWN0ZWRXZWJWaWV3KSwgaWNvbiA9IFdURk1vdmUoaWNvbildIChBUEk6OkRhdGEqIGlj
b25EYXRhKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpY29uRGF0YSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdTZXRJY29uKHByb3Rl
Y3RlZFdlYlZpZXcuZ2V0KCksIGljb24sICppY29uRGF0YSk7CiAgICAgICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggZWNjNTAwNmM4NmRi
MjQxZWQ4ZmJmOGNiY2MzNjdmNGQwYTMxZDRmZS4uMTQzMThlNTc4ZjhjNDBmZTIzMTFmNzliNmFk
Njg2YzQ0ZGEzMWRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KQEAgLTkyNiwxOCArOTI2LDE1IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgdm9pZCAoXkljb25Mb2FkQ29tcGxl
dGlvbkhhbmRsZXIpKE5TRGF0YSopOwogCi0gICAgICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9y
SWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24sIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpEYXRhKiwgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgICAg
IHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlu
a0ljb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6
OkRhdGEqKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIFJldGFpblB0cjxfV0tMaW5rSWNvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnMgPSBh
ZG9wdE5TKFtbX1dLTGlua0ljb25QYXJhbWV0ZXJzIGFsbG9jXSBfaW5pdFdpdGhMaW5rSWNvbjps
aW5rSWNvbl0pOwogCiAgICAgICAgICAgICBbbV93a1ZpZXcgX3Nob3VsZExvYWRJY29uV2l0aFBh
cmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEljb25Mb2Fk
Q29tcGxldGlvbkhhbmRsZXIgbG9hZENvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgICAgIGlm
IChsb2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoW2xvYWRDb21wbGV0aW9uSGFuZGxlciA9IEJsb2NrUHRyPHZvaWQgKE5TRGF0YSAq
KT4obG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJv
ciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgfHwgIWRhdGEpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZENvbXBsZXRpb25IYW5kbGVyKG5pbCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZENv
bXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoKmRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihsb2Fk
Q29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxvYWRDb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRhdGEpKTsKICAgICAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCmluZGV4IDA3NDM3OTA0ZjFlNDIzMGIz
MTU4MmE5ZGY0MmMyM2MxNGQ2MDVhZDcuLjM3ZThjNzVmZjNiYmFmMTZhNzg3MDNjNmJmZDU2ZjA3
N2VjNzFjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25M
b2FkaW5nRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfklj
b25Mb2FkaW5nQ2xpZW50KCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGdldExvYWRE
ZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpPiYmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBnZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKT4mJikgb3ZlcnJpZGU7
CiAKICAgICAgICAgSWNvbkxvYWRpbmdEZWxlZ2F0ZSYgbV9pY29uTG9hZGluZ0RlbGVnYXRlOwog
ICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9h
ZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRp
bmdEZWxlZ2F0ZS5tbQppbmRleCA4MjcwN2Y4ZjYzMWI5OWE3ZmE0ZmEzNWVjYzFhZDQ0OGYzZWRm
MGI4Li44Zjk3ZGRmNWYzYzBkODk1ZjYwYmJkODkzZGI1MzhlNmYzMTFmMjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0K
QEAgLTcwLDcgKzcwLDcgQEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRpbmdDbGllbnQ6
On5JY29uTG9hZGluZ0NsaWVudCgpCiAKIHR5cGVkZWYgdm9pZCAoXkljb25Mb2FkQ29tcGxldGlv
bkhhbmRsZXIpKE5TRGF0YSopOwogCi12b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2Fk
aW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29u
JiBsaW5rSWNvbiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6RnVuY3Rpb248dm9p
ZChBUEk6OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRpbmdDbGllbnQ6
OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGxpbmtJY29u
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRh
Kik+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9pY29uTG9hZGluZ0Rl
bGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTaG91bGRMb2FkSWNvbldpdGhQYXJhbWV0
ZXJzQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0
cik7CkBAIC04OCwxMSArODgsOCBAQCB2b2lkIEljb25Mb2FkaW5nRGVsZWdhdGU6Okljb25Mb2Fk
aW5nQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcgogICAgIFtkZWxl
Z2F0ZSB3ZWJWaWV3Om1faWNvbkxvYWRpbmdEZWxlZ2F0ZS5tX3dlYlZpZXcgc2hvdWxkTG9hZElj
b25XaXRoUGFyYW1ldGVyczpwYXJhbWV0ZXJzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KEljb25Mb2FkQ29tcGxldGlvbkhhbmRsZXIgbG9hZENvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxl
IHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKGxvYWRD
b21wbGV0aW9uSGFuZGxlcikgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2xvYWRD
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShB
UEk6OkRhdGEqIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAg
ICAgICAgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lIHx8ICFk
YXRhKQotICAgICAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIobmlsKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFu
ZGxlcih3cmFwcGVyKCpkYXRhKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbbG9h
ZENvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGxvYWRDb21wbGV0aW9uSGFuZGxlcild
KEFQSTo6RGF0YSogZGF0YSkgeworICAgICAgICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFuZGxl
cih3cmFwcGVyKGRhdGEpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggM2E0NGUyYzExODZiNTUzMzYyNWViNTU1YWQ0YmM2ODRi
YmQ1YWQ1Yy4uMDBhNjA3NmYxZmJhNWYxYmVjZGRiY2MwOWI2YjM4ZGE3NTkzOWZmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05NDAxLDI1ICs5NDAxLDIx
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5r
SWNvbiYgaWNvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcikKIHsKLSAgICBtX2ljb25Mb2Fk
aW5nQ2xpZW50LT5nZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmUHRyPFdlYlBhZ2VQcm94eT4odGhpcyksIGxvYWRJZGVudGlmaWVyXShXVEY6OkZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pIHsKKyAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5nZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRJZGVu
dGlmaWVyXSAoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykg
ewogICAgICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgICAgIGlmIChj
YWxsYmFja0Z1bmN0aW9uKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0
ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgICAgICBpZiAoY2FsbGJh
Y2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGRlY2lzaW9uID0gKGJvb2wpY2FsbGJhY2tG
dW5jdGlvbjsKLSAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/
IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbiJfcykpKSA6IE9wdGlvbmFsQ2FsbGJhY2tJRCgp
OwotCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZv
ckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIpKTsK
KyAgICAgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybiBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFsc2Us
IGxvYWRJZGVudGlmaWVyKSwgW10oYXV0bykgeyB9KTsKKyAgICAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGxv
YWRJZGVudGlmaWVyKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgaWNvbkRhdGEpIG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2so
QVBJOjpEYXRhOjpjcmVhdGUoaWNvbkRhdGEpLmdldCgpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQotewotICAgIGRhdGFD
YWxsYmFjayhkYXRhLCBjYWxsYmFja0lEKTsKLX0KLQogV2ViQ29yZTo6VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbiBXZWJQYWdlUHJveHk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24o
KQogewogICAgIHJldHVybiBwYWdlQ2xpZW50KCkudXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNDE2NTlkOWQz
MzYzMDVhYTA2MWM5Yzg3N2M2MzM2ZDE5MTQzMTc5Li42MzBiNTZmZTdmMGFmMGQ0MmY3ZjUwNzIx
YTM5YWZhZDQwZDQ4ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTU0OCw3ICsxNTQ4LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBv
c2l0aW9uKCk7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29y
ZTo6TGlua0ljb24mLCBXZWJLaXQ6OkNhbGxiYWNrSUQpOwotICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nSWNvbihXZWJLaXQ6OkNhbGxiYWNrSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwog
CiAgICAgdm9pZCBzZXRGb2N1cyhib29sIGZvY3VzZWQpOwogICAgIHZvaWQgc2V0V2luZG93RnJh
bWUoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODNlYjBjNzM1YmM2ODJmYmQ0OTQ3
MWNlNGU5YjI3MWY5YWRiYjAxMi4uM2FjMmNmMTkwYmI4MDFmZWVhYzc3MDVmMWJkYmNmYjAyZmQz
OGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNTA4LDcgKzUwOCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgRGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogICAgIEdldExvYWREZWNpc2lvbkZvcklj
b24oc3RydWN0IFdlYkNvcmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQotICAgIEZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBEaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBiMGI0ZjU3M2IwNTFhZjgzNWY2NTY4NDI3YTVmYjg0NTk0
MTBhY2Y3Li4wZmNjOGNkZjc5MmRkNzFiYzhmNDRiYjM3MDNjNmU2ZDNkMDM4ODQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE5MDksMTcgKzE5MDksNiBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFdlYkNvcgogICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkdldExvYWREZWNpc2lvbkZvckljb24oaWNvbi5maXJzdCwgQ2FsbGJhY2tJRDo6ZnJv
bUludGVnZXIoaWNvbi5zZWNvbmQpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBTaGFyZWRC
dWZmZXIqIGRhdGEpCi17Ci0gICAgYXV0byBjYWxsYmFja0lEID0gQ2FsbGJhY2tJRDo6ZnJvbUlu
dGVnZXIoY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSB7IG1f
ZnJhbWUtPnBhZ2UoKSB9KSB7Ci0gICAgICAgIGlmIChkYXRhKQotICAgICAgICAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29uKGNhbGxi
YWNrSUQsIHsgKmRhdGEgfSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmlzaGVkTG9hZGluZ0ljb24oY2FsbGJhY2tJ
RCwgeyB9KSk7Ci0gICAgfQotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDcmVh
dGVXaW5kb3coRE9NV2luZG93JiB3aW5kb3cpCiB7CiAgICAgYXV0byogd2ViUGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMDk1ODE1MzJhMTZi
ZDFiY2YxNDY4ZTM1YjkxMTE2ZjNlZjdmMTA3Zi4uOWQ5ZDk5Y2M0YTVjYTY1MDQzYWI1YzJlMDkz
NjExODU3NjEwODlhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI2Nyw3ICsy
NjcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkgZmlu
YWw7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+JikgZmluYWw7Ci0gICAgdm9pZCBm
aW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKikgZmluYWw7CiAKICAgICB2b2lkIGRpZENyZWF0ZVdpbmRvdyhXZWJDb3Jl
OjpET01XaW5kb3cmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCAzZjI2ZGEyMzY3ZGNlMjUyNDUxNDZmM2FlM2M3MjcwYTBkMTFh
ZWQ4Li5hOTE2NThiNzAwOTE3NDFkZThhMGI3ZTVjZmRhNzcyYWMxZDUxNmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjU0NywxMCArNjU0
NywxNSBAQCB2b2lkIFdlYlBhZ2U6OmRpZExvc2VQb2ludGVyTG9jaygpCiB9CiAjZW5kaWYKIAot
dm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENh
bGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCBuZXdDYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24s
IENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCku
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdl
dExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigp
LCBuZXdDYWxsYmFja0lELnRvSW50ZWdlcigpKTsKKyAgICBhdXRvKiBkb2N1bWVudExvYWRlciA9
IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CisgICAg
aWYgKCFkb2N1bWVudExvYWRlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CisKKyAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNp
c2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0
YSkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1
c2VJY29uTG9hZGluZ0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA4YmE5ZjcxYjQ2MjViOTE1YWU1ZDk4YmMxYzM3YmU2ZDI2NDBhNzAwLi45
ZmRmNzczMTQxYzk0YTIxOTJlNWI5NWY5ZTUzMjRlMzE4OTUzZmM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMTk5LDcgKzExOTksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKICNlbmRpZgogCi0gICAgdm9pZCBk
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElk
ZW50aWZpZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYpOwogICAgIHZvaWQg
c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMTdjODAyNDVkOWFlYjQyODZk
YmFhYTc2YjAwM2YzN2Q2ZWUwZjU2NC4uYzE2ZGJjNjk2ZTIwMzBmODk0Njg2MjJmZjZiNGY3ZjI4
M2YyYTRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01NDAsNyArNTQwLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKIAogICAgIFNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24odWludDMyX3QgZGly
ZWN0aW9uKQogCi0gICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIsIFdlYktpdDo6T3B0aW9uYWxDYWxsYmFj
a0lEIG5ld0NhbGxiYWNrSUQpCisgICAgRGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRl
Y2lzaW9uLCBXZWJLaXQ6OkNhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIpIC0+IChJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgaWNvbkRhdGEpIEFzeW5jCiAgICAgU2V0VXNlSWNvbkxvYWRp
bmdDbGllbnQoYm9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkKIAogI2lmIEVOQUJMRShHQU1FUEFE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMmFlZTg3MjRhZjNhN2RjZDVlMmFiMDFi
MzQ1MzBkZmRlOTE2NGEzNi4uZTA0ZDNkOWExZWI4MzgwMWM5MjFjNjA4M2VlMmJjM2VmM2RkZWU4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0
IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYvV2Vha1B0ci5oPgogCiBAY2xhc3MgV2ViRG93
bmxvYWQ7CiBAY2xhc3MgV2ViRnJhbWU7CkBAIC01Miw3ICs1Myw3IEBAIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQogCi1jbGFzcyBXZWJGcmFtZUxvYWRl
ckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CitjbGFzcyBXZWJG
cmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgV2ViRnJhbWVMb2FkZXJDbGllbnQoV2ViRnJhbWUqID0gbnVsbHB0cik7CiAgICAg
fldlYkZyYW1lTG9hZGVyQ2xpZW50KCk7CkBAIC0yNDYsOSArMjQ3LDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRM
b2FkaW5nSWNvbih1aW50NjRfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKikgZmluYWw7CisgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopOwogCi0gICAg
dWludDY0X3QgbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQgeyAwIH07CisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2UgfTsKKyNlbmRpZgog
CiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBtX3dlYkZyYW1lOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCmluZGV4IDMwZWVmNGRkOTYzNzIxMzJmMWQ3YTkxZjAwNTUyMThjYTE4MWU4OTQu
LjU2MzQ5NmFkZDc1ZmI4MzUzOWFiOWMzMDFmMGI4NzViMGVjNmNjYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCkBAIC0xMzAxLDggKzEzMDEsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRGaW5pc2hMb2FkKCkKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJl
cGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiB7Ci0gICAgbV9hY3RpdmVJY29uTG9hZENh
bGxiYWNrSUQgPSAwOwotCiAgICAgaWYgKCFbbV93ZWJGcmFtZS5nZXQoKSBfZGF0YVNvdXJjZV0p
IHsKICAgICAgICAgQVNTRVJUKCFjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT50cmVlKCkuY2hpbGRD
b3VudCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5OCw3ICsyMTk2LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxXZWJDb3IKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFXZWJLaXRMaW5rZWRP
bk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9ERUZBVUxUX0lDT05fTE9BRElORykp
IHsKICAgICAgICAgZm9yIChhdXRvJiBpY29uIDogaWNvbnMpCi0gICAgICAgICAgICBkb2N1bWVu
dExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIDAp
OworICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24o
ZmFsc2UsIGljb24uc2Vjb25kLCBbXShhdXRvKSB7IH0pOwogCiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0yMjEwLDI5ICsyMjA4LDMyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Omdl
dExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAKICAg
ICBpZiAoZGlzYWxsb3dlZER1ZVRvSW1hZ2VMb2FkU2V0dGluZ3MgfHwgIWZyYW1lLT5pc01haW5G
cmFtZSgpIHx8ICFkb2N1bWVudExvYWRlci0+dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
IHx8ICFbV2ViVmlldyBfaXNJY29uTG9hZGluZ0VuYWJsZWRdKSB7CiAgICAgICAgIGZvciAoYXV0
byYgaWNvbiA6IGljb25zKQotICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24oZmFsc2UsIGljb24uc2Vjb25kLCAwKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBpY29uLnNlY29uZCwg
W10oYXV0bykgeyB9KTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKCFt
X2FjdGl2ZUljb25Mb2FkQ2FsbGJhY2tJRCk7Ci0KICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBBU1NFUlQoIW1fbG9hZGluZ0ljb24pOwogICAgIC8vIFdlYktpdCAxLCB3aGljaCBvbmx5
IHN1cHBvcnRzIG9uZSBpY29uIHBlciBwYWdlIFVSTCwgdHJhZGl0aW9uYWxseSBoYXMgcHJlZmVy
cmVkIHRoZSBsYXN0IGljb24gaW4gY2FzZSBvZiBtdWx0aXBsZSBpY29ucyBsaXN0ZWQuCiAgICAg
Ly8gVG8gcHJlc2VydmUgdGhhdCBiZWhhdmlvciB3ZSB3YWxrIHRoZSBsaXN0IGJhY2t3YXJkcy4K
ICAgICBmb3IgKGF1dG8gaWNvbiA9IGljb25zLnJiZWdpbigpOyBpY29uICE9IGljb25zLnJlbmQo
KTsgKytpY29uKSB7Ci0gICAgICAgIGlmIChpY29uLT5maXJzdC50eXBlICE9IFdlYkNvcmU6Okxp
bmtJY29uVHlwZTo6RmF2aWNvbiB8fCBtX2FjdGl2ZUljb25Mb2FkQ2FsbGJhY2tJRCkgewotICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFsc2Us
IGljb24tPnNlY29uZCwgMCk7CisgICAgICAgIGlmIChpY29uLT5maXJzdC50eXBlICE9IFdlYkNv
cmU6OkxpbmtJY29uVHlwZTo6RmF2aWNvbiB8fCBtX2xvYWRpbmdJY29uKSB7CisgICAgICAgICAg
ICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi0+
c2Vjb25kLCBbXShhdXRvKSB7IH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAotICAgICAgICBtX2FjdGl2ZUljb25Mb2FkQ2FsbGJhY2tJRCA9IDE7Ci0gICAgICAgIGRvY3Vt
ZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwg
bV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOworICAgICAgICBtX2xvYWRpbmdJY29uID0gdHJ1
ZTsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1
ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmdJ
Y29uKGJ1ZmZlcik7CisgICAgICAgIH0pOwogICAgIH0KICNlbHNlCiAgICAgLy8gTm8gV2ViQ29y
ZSBpY29uIGxvYWRpbmcgb24gaU9TCiAgICAgZm9yIChhdXRvJiBpY29uIDogaWNvbnMpCi0gICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBpY29u
LnNlY29uZCwgMCk7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGZhbHNlLCBpY29uLnNlY29uZCwgW10oYXV0bykgeyB9KTsKICNlbmRpZgogfQogCkBA
IC0yMjYwLDEyICsyMjYxLDExIEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJHZXROU0ltYWdlKFdlYkNv
cmU6OkltYWdlKiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0lj
b24odWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBBU1NFUlQobV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOwotICAgIEFTU0VSVChjYWxsYmFj
a0lEID0gbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOwotICAgIG1fYWN0aXZlSWNvbkxvYWRD
YWxsYmFja0lEID0gMDsKKyAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CisgICAgbV9sb2FkaW5n
SWNvbiA9IGZhbHNlOwogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSk7CiAgICAgaWYgKCF3ZWJWaWV3KQpAQCAtMjI3OSw3ICsyMjc5LDYgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxs
YmFja0lELCBXZWJDb3JlOjpTaGEKICAgICBpZiAoaWNvbikKICAgICAgICAgW3dlYlZpZXcgX3Nl
dE1haW5GcmFtZUljb246aWNvbl07CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFja0lE
KTsKICAgICBVTlVTRURfUEFSQU0oaWNvbkRhdGEpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417405</attachid>
            <date>2021-01-11 13:00:35 -0800</date>
            <delta_ts>2021-01-11 14:41:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220381-20210111130034.patch</filename>
            <type>text/plain</type>
            <size>34566</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTM3MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIxLTAxLTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIHNlbmRX
aXRoQXN5bmNSZXBseSBpbnN0ZWFkIG9mIGRhdGFDYWxsYmFjayBmb3IgaWNvbiBsb2FkaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAzODEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEJlaGF2aW9yIGNv
dmVyZWQgYnkgSWNvbkxvYWRpbmcgQVBJIHRlc3RzLgorCisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lz
aW9uRm9ySWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWRMb2FkaW5nSWNvbik6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMjEtMDEt
MTEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KIAogICAgICAgICBLZWVwIG5ld2x5
IGNyZWF0ZWQgSURCSW5kZXggb2JqZWN0cyBpbiBkZWxldGVkIG1hcCB3aGVuIElEQlRyYW5zYWN0
aW9uIGlzIGFib3J0ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAkocmV2aXNpb24gMjcxMzcwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDkgKzMyMyw4IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKICAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLnN0
b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5OjpOb25lKTsKICAgICB9CiAKLSAgICBmb3IgKGF1
dG8gY2FsbGJhY2tJZGVudGlmaWVyIDogbV9pY29uTG9hZGVycy52YWx1ZXMoKSkKLSAgICAgICAg
bm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFja0lkZW50aWZpZXIsIG51bGxwdHIpOwot
ICAgIG1faWNvbkxvYWRlcnMuY2xlYXIoKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogc3Rk
OjpleGNoYW5nZShtX2ljb25Mb2FkZXJzLCB7IH0pLnZhbHVlcygpKQorICAgICAgICBjYWxsYmFj
ayhudWxscHRyKTsKICAgICBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi5jbGVhcigpOwogICAg
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKQEAgLTIxNzQsMjUgKzIxNzMsMjMg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCiAgICAgbV9mcmFtZS0+
bG9hZGVyKCkuY2xpZW50KCkuZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoaWNvbkRlY2lzaW9ucyk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9v
bCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0NhbGxiYWNr
SUQpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9
IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwogCiAgICAg
Ly8gSWYgdGhlIGRlY2lzaW9uIHdhcyBub3QgdG8gbG9hZCBvciB0aGlzIERvY3VtZW50TG9hZGVy
IGlzIGFscmVhZHkgZGV0YWNoZWQsIHRoZXJlIGlzIG5vIGxvYWQgdG8gcGVyZm9ybS4KICAgICBp
ZiAoIWRlY2lzaW9uIHx8ICFtX2ZyYW1lKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKIAogICAgIC8vIElmIHRoZSBMaW5rSWNvbiB3
ZSBqdXN0IHRvb2sgaXMgZW1wdHksIHRoZW4gdGhlIERvY3VtZW50TG9hZGVyIGhhZCBhbGwgb2Yg
aXRzIGxvYWRlcnMgc3RvcHBlZAogICAgIC8vIHdoaWxlIHRoaXMgaWNvbiBsb2FkIGRlY2lzaW9u
IHdhcyBwZW5kaW5nLgogICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIG5vdGlmeSB0aGUg
Y2xpZW50IHRoYXQgdGhlIGljb24gZmluaXNoZWQgbG9hZGluZyB3aXRoIGVtcHR5IGRhdGEuCi0g
ICAgaWYgKGljb24udXJsLmlzRW1wdHkoKSkgewotICAgICAgICBub3RpZnlGaW5pc2hlZExvYWRp
bmdJY29uKG5ld0NhbGxiYWNrSUQsIG51bGxwdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChpY29uLnVybC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKIAogICAgIGF1dG8gaWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8SWNvbkxv
YWRlcj4oKnRoaXMsIGljb24udXJsKTsKICAgICBhdXRvKiByYXdJY29uTG9hZGVyID0gaWNvbkxv
YWRlci5nZXQoKTsKLSAgICBtX2ljb25Mb2FkZXJzLnNldChXVEZNb3ZlKGljb25Mb2FkZXIpLCBu
ZXdDYWxsYmFja0lEKTsKKyAgICBtX2ljb25Mb2FkZXJzLmFkZChXVEZNb3ZlKGljb25Mb2FkZXIp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICByYXdJY29uTG9hZGVyLT5zdGFy
dExvYWRpbmcoKTsKIH0KQEAgLTIyMDIsMTUgKzIxOTksOCBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpmaW5pc2hlZExvYWRpbmdJY29uCiAgICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBk
ZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFk
eSBiZWVuIGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CiAKLSAgICBhdXRvIGNhbGxi
YWNrSWRlbnRpZmllciA9IG1faWNvbkxvYWRlcnMudGFrZSgmbG9hZGVyKTsKLSAgICBub3RpZnlG
aW5pc2hlZExvYWRpbmdJY29uKGNhbGxiYWNrSWRlbnRpZmllciwgYnVmZmVyKTsKLX0KLQotdm9p
ZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmVyKQotewotICAgIFJFTEVBU0VfQVNT
RVJUKGNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9mcmFtZSk7Ci0g
ICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZmluaXNoZWRMb2FkaW5nSWNvbihjYWxsYmFj
a0lkZW50aWZpZXIsIGJ1ZmZlcik7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2ljb25Mb2Fk
ZXJzLnRha2UoJmxvYWRlcikpCisgICAgICAgIGNhbGxiYWNrKGJ1ZmZlcik7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmRpc3BhdGNoT25sb2FkRXZlbnRzKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyNzEzNzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzg3LDcgKzM4
Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0
OwogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDYWxsYmFja0lEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9h
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwog
ICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7
CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVy
biBtX2xpbmtJY29uczsgfQpAQCAtNTAzLDggKzUwMyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
YW5jZWxQb2xpY3lDaGVja0lmTmVlZGVkKCk7CiAgICAgdm9pZCBiZWNvbWVNYWluUmVzb3VyY2VD
bGllbnQoKTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciopOwotCiAjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQogICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25N
YW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIE9wdGlvbmFsPEFwcGxpY2F0aW9u
TWFuaWZlc3Q+KTsKICNlbmRpZgpAQCAtNjA1LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8
dWludDY0X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNo
TWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgdWludDY0X3Q+IG1faWNvbkxvYWRlcnM7
CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5r
SWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
MjcxMzcwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2MSw3ICszNjEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldExv
YWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0lj
b24mLCB1aW50NjRfdD4+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZ0lj
b24odWludDY0X3QsIFNoYXJlZEJ1ZmZlciopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZVdpbmRvdyhET01XaW5kb3cmKSB7IH0KIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTM3
MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzUgQEAKKzIwMjEtMDEtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KKworICAgICAgICBVc2Ugc2VuZFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgZGF0YUNh
bGxiYWNrIGZvciBpY29uIGxvYWRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMDM4MQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJs
ZXQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSURhdGEuY3BwOgorICAgICAgICAoQVBJOjpEYXRhOjpjcmVhdGUpOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5oOgorICAgICAgICAoQVBJOjpEYXRhOjpjcmVhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDoKKyAgICAg
ICAgKEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IG1h
eWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L0ljb25Mb2FkaW5nRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6
SWNvbkxvYWRpbmdDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmZpbmlzaGVkTG9hZGluZ0ljb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9u
Rm9ySWNvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMS0x
MSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBz
aG91bGQgbWFrZSBzdXJlIHRvIHJlbW92ZSB0aGUgc2VsZWN0ZWQgcHJvY2VzcyBmcm9tIHRoZSBj
YWNoZQpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZp
c2lvbiAyNzEzNzApCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDEyIEBAIGRlZiBmdW5jdGlvbl9wYXJhbWV0
ZXJfdHlwZSh0eXBlLCBraW5kKToKICAgICByZXR1cm4gJ2NvbnN0ICVzJicgJSB0eXBlCiAKIAor
ZGVmIHJlcGx5X3R5cGUodHlwZSk6CisgICAgaWYgdHlwZSA9PSAnSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlJzoKKyAgICAgICAgcmV0dXJuICdJUEM6OkRhdGFSZWZlcmVuY2UnCisgICAg
cmV0dXJuIHR5cGUKKworCiBkZWYgcmVwbHlfcGFyYW1ldGVyX3R5cGUodHlwZSk6CiAgICAgcmV0
dXJuICclcyYnICUgdHlwZQogCkBAIC0xNTEsMTIgKzE1NywxMiBAQCBkZWYgYXJndW1lbnRzX3R5
cGUobWVzc2FnZSk6CiAgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAnLCAnLmpvaW4oZnVu
Y3Rpb25fcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUsIHBhcmFtZXRlci5raW5kKSBmb3Ig
cGFyYW1ldGVyIGluIG1lc3NhZ2UucGFyYW1ldGVycykKIAogCi1kZWYgcmVwbHlfdHlwZShtZXNz
YWdlKToKK2RlZiByZXBseV90dXBsZShtZXNzYWdlKToKICAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8
JXM+JyAlICgnLCAnLmpvaW4ocmVwbHlfcGFyYW1ldGVyX3R5cGUocGFyYW1ldGVyLnR5cGUpIGZv
ciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzKSkKIAogCiBkZWYgcmVwbHlf
YXJndW1lbnRzX3R5cGUobWVzc2FnZSk6Ci0gICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVzPicgJSAo
JywgJy5qb2luKHBhcmFtZXRlci50eXBlIGZvciBwYXJhbWV0ZXIgaW4gbWVzc2FnZS5yZXBseV9w
YXJhbWV0ZXJzKSkKKyAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+JyAlICgnLCAnLmpvaW4ocmVw
bHlfdHlwZShwYXJhbWV0ZXIudHlwZSkgZm9yIHBhcmFtZXRlciBpbiBtZXNzYWdlLnJlcGx5X3Bh
cmFtZXRlcnMpKQogCiAKIGRlZiBtZXNzYWdlX3RvX3JlcGx5X2ZvcndhcmRfZGVjbGFyYXRpb24o
bWVzc2FnZSk6CkBAIC0xOTMsNyArMTk5LDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xh
cmF0aW9uKHJlY2VpdgogICAgICAgICBzZW5kX3BhcmFtZXRlcnMgPSBbKGZ1bmN0aW9uX3BhcmFt
ZXRlcl90eXBlKHgudHlwZSwgeC5raW5kKSwgeC5uYW1lKSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5
X3BhcmFtZXRlcnNdCiAgICAgICAgIGNvbXBsZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzID0gJyVz
JyAlICcsICcuam9pbihbJyAnLmpvaW4oeCkgZm9yIHggaW4gc2VuZF9wYXJhbWV0ZXJzXSkKICAg
ICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Ci0gICAgICAg
ICAgICBtb3ZlX3BhcmFtZXRlcnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZSh4LnR5cGUpIGZvciB4
IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCisgICAgICAgICAgICBtb3ZlX3BhcmFtZXRl
cnMgPSAnLCAnLmpvaW4oW21vdmVfdHlwZShyZXBseV90eXBlKHgudHlwZSkpIGZvciB4IGluIG1l
c3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
c3RhdGljIHZvaWQgY2FsbFJlcGx5KElQQzo6RGVjb2RlciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoJXMpPiYmKTtcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgc3RhdGljIHZvaWQgY2FuY2VsUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgl
cyk+JiYpO1xuJyAlIG1vdmVfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBhc3luY01lc3NhZ2VSZXBseU5hbWUoKSB7IHJl
dHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjolc18lc1JlcGx5OyB9XG4nICUgKHJlY2VpdmVyLm5hbWUs
IG1lc3NhZ2UubmFtZSkpCkBAIC0yMDUsNyArMjExLDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0
X2RlY2xhcmF0aW9uKHJlY2VpdgogICAgICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAlcycgJSBjb21wbGV0aW9uX2hhbmRs
ZXJfcGFyYW1ldGVycykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG4nKQotICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcgUmVwbHkgPSAlcztcbicgJSByZXBseV90eXBlKG1l
c3NhZ2UpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcgUmVwbHkgPSAlcztcbicg
JSByZXBseV90dXBsZShtZXNzYWdlKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gJXM7XG4nICUgcmVwbHlfYXJndW1lbnRzX3R5cGUobWVzc2FnZSkp
CiAKICAgICBpZiBsZW4oZnVuY3Rpb25fcGFyYW1ldGVycyk6CkBAIC04NjUsMTAgKzg3MSwxMCBA
QCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcjaWYgJXNcblxuJyAlIG1lc3NhZ2UuY29uZGl0aW9uKQogCiAgICAg
ICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKLSAgICAg
ICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBtZXNzYWdlLm5hbWUsICcsICcuam9pbihbbW92
ZV90eXBlKHgudHlwZSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzXSkKKyAgICAg
ICAgICAgICAgICBtb3ZlX3BhcmFtZXRlcnMgPSBtZXNzYWdlLm5hbWUsICcsICcuam9pbihbbW92
ZV90eXBlKHJlcGx5X3R5cGUoeC50eXBlKSkgZm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0
ZXJzXSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpjYWxsUmVwbHko
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCVzKT4mJiBjb21w
bGV0aW9uSGFuZGxlcilcbntcbicgJSBtb3ZlX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAg
Zm9yIHggaW4gbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzOgotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgT3B0aW9uYWw8JXM+ICVzO1xuJyAlICh4LnR5cGUsIHgubmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBPcHRpb25hbDwlcz4gJXM7
XG4nICUgKHJlcGx5X3R5cGUoeC50eXBlKSwgeC5uYW1lKSkKICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIGRlY29kZXIgPj4gJXM7XG4nICUgeC5uYW1lKQogICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKCElcykge1xuICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTtcbiAgICAgICAgY2FuY2VsUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuJyAlIHgubmFtZSkKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgY29tcGxldGlvbkhhbmRsZXIoJykKQEAgLTg3Niw3ICs4
ODIsNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnV1RGTW92ZSgqJXMpJyAlICgnKSwgV1RGTW92ZSgq
Jy5qb2luKHgubmFtZSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMpKSkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpO1xufVxuXG4nKQogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmNhbmNlbFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
JXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKVxue1xuICAgIGNvbXBsZXRpb25IYW5kbGVyKCcgJSBt
b3ZlX3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAnLmpvaW4o
WydJUEM6OkFzeW5jUmVwbHlFcnJvcjwnICsgeC50eXBlICsgJz46OmNyZWF0ZSgpJyBmb3IgeCBp
biBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdKSkKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcsICcuam9pbihbJ0lQQzo6QXN5bmNSZXBseUVycm9yPCcgKyByZXBseV90eXBlKHgudHlw
ZSkgKyAnPjo6Y3JlYXRlKCknIGZvciB4IGluIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVyc10pKQog
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyk7XG59XG5cbicpCiAKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OnNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mJiBlbmNvZGVyLCBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24nICUgKG1lc3NhZ2UubmFt
ZSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCShyZXZpc2lvbiAyNzEz
NzApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDExICsyNywxOSBAQAogI2luY2x1ZGUgIkFQSURhdGEuaCIKIAogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBBUEkgewogCitS
ZWZQdHI8RGF0YT4gRGF0YTo6Y3JlYXRlKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkK
K3sKKyAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKK30KKwogdm9pZCBEYXRh
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwg
ZGF0YVJlZmVyZW5jZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5oCShyZXZp
c2lvbiAyNzEzNzApCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBEYXRh
IDogcHVibGljIE9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRhdGE+IHsKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIHZvaWQgKCpGcmVlRGF0YUZ1bmN0aW9uKSh1bnNpZ25lZCBjaGFyKiwgY29u
c3Qgdm9pZCogY29udGV4dCk7CisgICAgdXNpbmcgRnJlZURhdGFGdW5jdGlvbiA9IHZvaWQgKCop
KHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBjb250ZXh0KTsKIAogICAgIHN0YXRpYyBSZWY8
RGF0YT4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXMsIHNp
emVfdCBzaXplLCBGcmVlRGF0YUZ1bmN0aW9uIGZyZWVEYXRhRnVuY3Rpb24sIGNvbnN0IHZvaWQq
IGNvbnRleHQpCiAgICAgewpAQCAtNTMsMTQgKzUzLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBSZWY8RGF0YT4gY3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3Qgc2l6
ZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvcGllZEJ5dGVzID0gMDsKKyAgICAg
ICAgdW5zaWduZWQgY2hhciAqY29waWVkQnl0ZXMgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChz
aXplKSB7CiAgICAgICAgICAgICBjb3BpZWRCeXRlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIqPihmYXN0TWFsbG9jKHNpemUpKTsKICAgICAgICAgICAgIG1lbWNweShjb3BpZWRCeXRlcywg
Ynl0ZXMsIHNpemUpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVdpdGhvdXRD
b3B5aW5nKGNvcGllZEJ5dGVzLCBzaXplLCBmYXN0RnJlZUJ5dGVzLCAwKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvcGllZEJ5dGVzLCBzaXplLCBmYXN0RnJlZUJ5dGVz
LCBudWxscHRyKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIFJlZjxEYXRhPiBjcmVhdGUoY29u
c3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBidWZmZXIpCkBAIC02OCw2ICs2OCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGNyZWF0ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgUmVmUHRyPERhdGE+IGNyZWF0ZShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKKyAgICAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPERh
dGE+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKFJldGFpblB0cjxOU0RhdGE+KTsKICNlbmRpZgpAQCAt
MTAwLDExICsxMDIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZhc3RGcmVlKHN0YXRpY19j
YXN0PHZvaWQqPihieXRlcykpOwogICAgIH0KIAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1f
Ynl0ZXM7Ci0gICAgc2l6ZV90IG1fc2l6ZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtX2J5
dGVzIHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKLSAgICBGcmVlRGF0
YUZ1bmN0aW9uIG1fZnJlZURhdGFGdW5jdGlvbjsKLSAgICBjb25zdCB2b2lkKiBtX2NvbnRleHQ7
CisgICAgRnJlZURhdGFGdW5jdGlvbiBtX2ZyZWVEYXRhRnVuY3Rpb24geyBudWxscHRyIH07Cisg
ICAgY29uc3Qgdm9pZCogbV9jb250ZXh0IHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDI3MTM3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk0MDUsMjUgKzk0MDUsMjEgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhY2tJRCBs
b2FkSWRlbnRpZmllcikKIHsKLSAgICBtX2ljb25Mb2FkaW5nQ2xpZW50LT5nZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmUHRyPFdlYlBhZ2VQcm94
eT4odGhpcyksIGxvYWRJZGVudGlmaWVyXShXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pIHsKKyAgICBtX2ljb25M
b2FkaW5nQ2xpZW50LT5nZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24sIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRJZGVudGlmaWVyXSAoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBUEk6OkRhdGEqKT4mJiBjYWxsYmFjaykgewogICAgICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKLSAgICAgICAgICAgIGlmIChjYWxsYmFja0Z1bmN0aW9uKQotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
VW5rbm93bik7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAgY2Fs
bGJhY2sobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBib29sIGRlY2lzaW9uID0gKGJvb2wpY2FsbGJhY2tGdW5jdGlvbjsKLSAgICAgICAgYXV0byBu
ZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9y
SWNvbiJfcykpKSA6IE9wdGlvbmFsQ2FsbGJhY2tJRCgpOwotCi0gICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVu
dGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIpKTsKKyAgICAgICAgaWYgKCFjYWxsYmFjaykK
KyAgICAgICAgICAgIHJldHVybiBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFsc2UsIGxvYWRJZGVudGlmaWVyKSwgW10oYXV0
bykgeyB9KTsKKyAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGxvYWRJZGVudGlmaWVyKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaWNvbkRhdGEp
IG11dGFibGUgeworICAgICAgICAgICAgY2FsbGJhY2soQVBJOjpEYXRhOjpjcmVhdGUoaWNvbkRh
dGEpLmdldCgpKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpmaW5pc2hlZExvYWRpbmdJY29uKENhbGxiYWNrSUQgY2FsbGJhY2tJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQotewotICAgIGRhdGFDYWxsYmFjayhkYXRhLCBjYWxsYmFja0lE
KTsKLX0KLQogV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBXZWJQYWdlUHJv
eHk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKQogewogICAgIHJldHVybiBwYWdlQ2xp
ZW50KCkudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI3MTM3MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ4LDcgKzE1
NDgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKIAog
ICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYs
IFdlYktpdDo6Q2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYktp
dDo6Q2FsbGJhY2tJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAKICAgICB2b2lkIHNl
dEZvY3VzKGJvb2wgZm9jdXNlZCk7CiAgICAgdm9pZCBzZXRXaW5kb3dGcmFtZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3MTM3MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
NTA4LDcgKzUwOCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkUmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCkKIAogICAgIEdldExvYWREZWNpc2lvbkZvckljb24oc3RydWN0IFdl
YkNvcmU6OkxpbmtJY29uIGljb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAg
IEZpbmlzaGVkTG9hZGluZ0ljb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBEaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAkocmV2aXNpb24gMjcxMzcw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25Mb2FkaW5nQ2xpZW50KCkgeyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNv
biYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpE
YXRhKiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgdmlydHVhbCB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29y
ZTo6TGlua0ljb24mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQVBJOjpEYXRhKik+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjcxMzcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEZ1bmN0aW9uPHZvaWQoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgZ2V0TG9hZERlY2lz
aW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIC8vIFdlYkNvcmUgY2FuIHNlbmQg
bm9uIEhUVFAgaWNvbnMuCiAgICAgICAgIGlmICghaWNvbi51cmwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpKSB7CkBAIC00OSw4ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbcHJv
dGVjdGVkV2ViVmlldyA9IFdURk1vdmUocHJvdGVjdGVkV2ViVmlldyksIGljb24gPSBXVEZNb3Zl
KGljb24pXSAoQVBJOjpEYXRhKiBpY29uRGF0YSwgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
ewotICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
IHx8ICFpY29uRGF0YSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtwcm90ZWN0ZWRX
ZWJWaWV3ID0gV1RGTW92ZShwcm90ZWN0ZWRXZWJWaWV3KSwgaWNvbiA9IFdURk1vdmUoaWNvbild
IChBUEk6OkRhdGEqIGljb25EYXRhKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpY29uRGF0YSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIHdlYmtpdFdlYlZp
ZXdTZXRJY29uKHByb3RlY3RlZFdlYlZpZXcuZ2V0KCksIGljb24sICppY29uRGF0YSk7CiAgICAg
ICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tCShyZXZpc2lvbiAyNzEzNzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTI2LDE4ICs5MjYsMTUgQEAgLSAodm9pZClt
YXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVk
ZWYgdm9pZCAoXkljb25Mb2FkQ29tcGxldGlvbkhhbmRsZXIpKE5TRGF0YSopOwogCi0gICAgICAg
IHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlu
a0ljb24sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJ
OjpEYXRhKiwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEqKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIFJldGFpblB0cjxfV0tMaW5rSWNvblBh
cmFtZXRlcnM+IHBhcmFtZXRlcnMgPSBhZG9wdE5TKFtbX1dLTGlua0ljb25QYXJhbWV0ZXJzIGFs
bG9jXSBfaW5pdFdpdGhMaW5rSWNvbjpsaW5rSWNvbl0pOwogCiAgICAgICAgICAgICBbbV93a1Zp
ZXcgX3Nob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKEljb25Mb2FkQ29tcGxldGlvbkhhbmRsZXIgbG9hZENvbXBsZXRpb25I
YW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgICAgICAgICAgICAgIGlmIChsb2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9uSGFuZGxlciA9
IEJsb2NrUHRyPHZvaWQgKE5TRGF0YSAqKT4obG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpE
YXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6
Ok5vbmUgfHwgIWRhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZENvbXBsZXRp
b25IYW5kbGVyKG5pbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZENvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoKmRhdGEpKTsK
KyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihsb2FkQ29tcGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRh
dGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRDb21wbGV0aW9uSGFuZGxlcih3cmFw
cGVyKGRhdGEpKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVs
ZWdhdGUuaAkocmV2aXNpb24gMjcxMzcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIH5JY29uTG9hZGluZ0NsaWVudCgpOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0IFdlYkNvcmU6OkxpbmtJ
Y29uJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6RnVuY3Rpb248dm9pZChBUEk6
OkRhdGEqLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKT4mJikgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNv
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRh
dGEqKT4mJik+JiYpIG92ZXJyaWRlOwogCiAgICAgICAgIEljb25Mb2FkaW5nRGVsZWdhdGUmIG1f
aWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCShyZXZpc2lvbiAyNzEz
NzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6
Okljb25Mb2FkaW5nQ2xpZW50OjoKIAogdHlwZWRlZiB2b2lkICheSWNvbkxvYWRDb21wbGV0aW9u
SGFuZGxlcikoTlNEYXRhKik7CiAKLXZvaWQgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRp
bmdDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24m
IGxpbmtJY29uLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpGdW5jdGlvbjx2b2lk
KEFQSTo6RGF0YSosIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBJY29uTG9hZGluZ0RlbGVnYXRlOjpJY29uTG9hZGluZ0NsaWVudDo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgbGlua0ljb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBUEk6OkRhdGEq
KT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2ljb25Mb2FkaW5nRGVs
ZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Nob3VsZExvYWRJY29uV2l0aFBhcmFtZXRl
cnNDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRy
KTsKQEAgLTg4LDExICs4OCw4IEBAIHZvaWQgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxvYWRp
bmdDbGkKICAgICBbZGVsZWdhdGUgd2ViVmlldzptX2ljb25Mb2FkaW5nRGVsZWdhdGUubV93ZWJW
aWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6cGFyYW1ldGVycy5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChJY29uTG9hZENvbXBsZXRpb25IYW5kbGVyIGxvYWRDb21wbGV0aW9u
SGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAg
ICAgICAgIGlmIChsb2FkQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIobG9hZENvbXBs
ZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSB8fCAhZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgbG9hZENvbXBsZXRpb25I
YW5kbGVyKG5pbCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBs
b2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBlcigqZGF0YSkpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoW2xvYWRDb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihsb2FkQ29t
cGxldGlvbkhhbmRsZXIpXShBUEk6OkRhdGEqIGRhdGEpIHsKKyAgICAgICAgICAgICAgICBsb2Fk
Q29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjcxMzcwKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwOSwxNyArMTkwOSw2IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2kKICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGljb24uZmlyc3QsIENhbGxi
YWNrSUQ6OmZyb21JbnRlZ2VyKGljb24uc2Vjb25kKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgU2hhcmVkQnVmZmVyKiBkYXRhKQotewotICAgIGF1dG8gY2FsbGJhY2tJRCA9IENhbGxiYWNr
SUQ6OmZyb21JbnRlZ2VyKGNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgaWYgKFdlYlBhZ2UqIHdl
YlBhZ2UgeyBtX2ZyYW1lLT5wYWdlKCkgfSkgewotICAgICAgICBpZiAoZGF0YSkKLSAgICAgICAg
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluaXNoZWRMb2FkaW5n
SWNvbihjYWxsYmFja0lELCB7ICpkYXRhIH0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5pc2hlZExvYWRpbmdJY29u
KGNhbGxiYWNrSUQsIHsgfSkpOwotICAgIH0KLX0KLQogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkQ3JlYXRlV2luZG93KERPTVdpbmRvdyYgd2luZG93KQogewogICAgIGF1dG8qIHdlYlBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gMjcxMzcwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkgZmluYWw7
CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+JikgZmluYWw7Ci0gICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKikgZmluYWw7CiAKICAgICB2b2lkIGRpZENyZWF0ZVdpbmRvdyhXZWJDb3JlOjpE
T01XaW5kb3cmKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI3MTM3MCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTQ4LDEwICs2
NTQ4LDE1IEBAIHZvaWQgV2ViUGFnZTo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKIH0KICNlbmRpZgog
Ci12b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwg
Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgT3B0aW9uYWxDYWxsYmFja0lEIG5ld0NhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2Vy
KCksIG5ld0NhbGxiYWNrSUQudG9JbnRlZ2VyKCkpOworICAgIGF1dG8qIGRvY3VtZW50TG9hZGVy
ID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKKyAg
ICBpZiAoIWRvY3VtZW50TG9hZGVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRl
Y2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25E
YXRhKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBpY29uRGF0YSB9KTsK
KyAgICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29s
IHVzZUljb25Mb2FkaW5nQ2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjcxMzcwKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk5LDcgKzExOTks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKICNlbmRpZgogCi0g
ICAgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNr
SUQgbG9hZElkZW50aWZpZXIsIE9wdGlvbmFsQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJik+JiYpOwog
ICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCk7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAyNzEzNzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsNyArNTQwLDcgQEAgR2VuZXJhdGVTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogCiAgICAgU2V0VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24pCiAKLSAgICBEaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllciwg
V2ViS2l0OjpPcHRpb25hbENhbGxiYWNrSUQgbmV3Q2FsbGJhY2tJRCkKKyAgICBEaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIFdlYktpdDo6Q2FsbGJhY2tJRCBsb2FkSWRl
bnRpZmllcikgLT4gKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBpY29uRGF0YSkgQXN5
bmMKICAgICBTZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50
KQogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzEzNzApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMS0xMSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBzZW5kV2l0aEFz
eW5jUmVwbHkgaW5zdGVhZCBvZiBkYXRhQ2FsbGJhY2sgZm9yIGljb24gbG9hZGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMzgxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorCiAyMDIxLTAxLTA3ICBBbGV4ZXkgU2h2YXlrYSAg
PHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBTaW1wbGlmeSBnZXQqUHJv
cGVydHlOYW1lcygpIG1ldGhvZHMgYW5kIEVudW1lcmF0aW9uTW9kZQpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNzEzNzApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisjaW1wb3J0IDx3dGYv
V2Vha1B0ci5oPgogCiBAY2xhc3MgV2ViRG93bmxvYWQ7CiBAY2xhc3MgV2ViRnJhbWU7CkBAIC01
Miw3ICs1Myw3IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogfQogCi1jbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudCB7CitjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkZyYW1lTG9h
ZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViRnJhbWVMb2FkZXJDbGllbnQo
V2ViRnJhbWUqID0gbnVsbHB0cik7CiAgICAgfldlYkZyYW1lTG9hZGVyQ2xpZW50KCk7CkBAIC0y
NDYsOSArMjQ3LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29u
cyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYp
IGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciopOwogCi0gICAgdWludDY0X3QgbV9hY3RpdmVJY29uTG9hZENhbGxi
YWNrSUQgeyAwIH07CisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYm9vbCBtX2xvYWRp
bmdJY29uIHsgZmFsc2UgfTsKKyNlbmRpZgogCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBtX3dl
YkZyYW1lOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjcx
MzcwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMDEsOCArMTMwMSw2IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWQKIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiB7Ci0gICAgbV9hY3Rp
dmVJY29uTG9hZENhbGxiYWNrSUQgPSAwOwotCiAgICAgaWYgKCFbbV93ZWJGcmFtZS5nZXQoKSBf
ZGF0YVNvdXJjZV0pIHsKICAgICAgICAgQVNTRVJUKCFjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT50
cmVlKCkuY2hpbGRDb3VudCgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5OCw3ICsyMTk2LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaQogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBpZiAoIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lP
Tl9XSVRIX0RFRkFVTFRfSUNPTl9MT0FESU5HKSkgewogICAgICAgICBmb3IgKGF1dG8mIGljb24g
OiBpY29ucykKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGZhbHNlLCBpY29uLnNlY29uZCwgMCk7CisgICAgICAgICAgICBkb2N1bWVudExvYWRl
ci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIFtdKGF1dG8p
IHsgfSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyMTAsMjkgKzIyMDgsMzIgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaQogCiAgICAgaWYgKGRpc2Fs
bG93ZWREdWVUb0ltYWdlTG9hZFNldHRpbmdzIHx8ICFmcmFtZS0+aXNNYWluRnJhbWUoKSB8fCAh
ZG9jdW1lbnRMb2FkZXItPnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCAhW1dlYlZp
ZXcgX2lzSWNvbkxvYWRpbmdFbmFibGVkXSkgewogICAgICAgICBmb3IgKGF1dG8mIGljb24gOiBp
Y29ucykKLSAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGZhbHNlLCBpY29uLnNlY29uZCwgMCk7CisgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIFtdKGF1dG8pIHsg
fSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCghbV9hY3RpdmVJY29u
TG9hZENhbGxiYWNrSUQpOwotCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgQVNTRVJU
KCFtX2xvYWRpbmdJY29uKTsKICAgICAvLyBXZWJLaXQgMSwgd2hpY2ggb25seSBzdXBwb3J0cyBv
bmUgaWNvbiBwZXIgcGFnZSBVUkwsIHRyYWRpdGlvbmFsbHkgaGFzIHByZWZlcnJlZCB0aGUgbGFz
dCBpY29uIGluIGNhc2Ugb2YgbXVsdGlwbGUgaWNvbnMgbGlzdGVkLgogICAgIC8vIFRvIHByZXNl
cnZlIHRoYXQgYmVoYXZpb3Igd2Ugd2FsayB0aGUgbGlzdCBiYWNrd2FyZHMuCiAgICAgZm9yIChh
dXRvIGljb24gPSBpY29ucy5yYmVnaW4oKTsgaWNvbiAhPSBpY29ucy5yZW5kKCk7ICsraWNvbikg
ewotICAgICAgICBpZiAoaWNvbi0+Zmlyc3QudHlwZSAhPSBXZWJDb3JlOjpMaW5rSWNvblR5cGU6
OkZhdmljb24gfHwgbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpIHsKLSAgICAgICAgICAgIGRv
Y3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGZhbHNlLCBpY29uLT5zZWNv
bmQsIDApOworICAgICAgICBpZiAoaWNvbi0+Zmlyc3QudHlwZSAhPSBXZWJDb3JlOjpMaW5rSWNv
blR5cGU6OkZhdmljb24gfHwgbV9sb2FkaW5nSWNvbikgeworICAgICAgICAgICAgZG9jdW1lbnRM
b2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZmFsc2UsIGljb24tPnNlY29uZCwgW10o
YXV0bykgeyB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
bV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQgPSAxOwotICAgICAgICBkb2N1bWVudExvYWRlci0+
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIG1fYWN0aXZlSWNv
bkxvYWRDYWxsYmFja0lEKTsKKyAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7CisgICAgICAg
IGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNl
Y29uZCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nSWNvbihidWZmZXIp
OworICAgICAgICB9KTsKICAgICB9CiAjZWxzZQogICAgIC8vIE5vIFdlYkNvcmUgaWNvbiBsb2Fk
aW5nIG9uIGlPUwogICAgIGZvciAoYXV0byYgaWNvbiA6IGljb25zKQotICAgICAgICBkb2N1bWVu
dExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxzZSwgaWNvbi5zZWNvbmQsIDAp
OworICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihmYWxz
ZSwgaWNvbi5zZWNvbmQsIFtdKGF1dG8pIHsgfSk7CiAjZW5kaWYKIH0KIApAQCAtMjI2MCwxMiAr
MjI2MSwxMSBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJCiB9CiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVk
TG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBBU1NFUlQobV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQp
OwotICAgIEFTU0VSVChjYWxsYmFja0lEID0gbV9hY3RpdmVJY29uTG9hZENhbGxiYWNrSUQpOwot
ICAgIG1fYWN0aXZlSWNvbkxvYWRDYWxsYmFja0lEID0gMDsKKyAgICBBU1NFUlQobV9sb2FkaW5n
SWNvbik7CisgICAgbV9sb2FkaW5nSWNvbiA9IGZhbHNlOwogCiAgICAgV2ViVmlldyAqd2ViVmll
dyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgaWYgKCF3ZWJWaWV3KQpAQCAt
MjI3OSw3ICsyMjc5LDYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2Fk
aQogICAgIGlmIChpY29uKQogICAgICAgICBbd2ViVmlldyBfc2V0TWFpbkZyYW1lSWNvbjppY29u
XTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrSUQpOwogICAgIFVOVVNFRF9QQVJB
TShpY29uRGF0YSk7CiAjZW5kaWYKIH0K
</data>
<flag name="commit-queue"
          id="435124"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>