<?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>234341</bug_id>
          
          <creation_ts>2021-12-15 02:55:33 -0800</creation_ts>
          <short_desc>[:has() pseudo-class] Use Bloom filter to quickly reject :has() selectors</short_desc>
          <delta_ts>2021-12-15 11:47:18 -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>CSS</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>
          
          <blocked>227702</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824304</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 02:55:33 -0800</bug_when>
    <thetext>Fast reject for :has()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824307</commentid>
    <comment_count>1</comment_count>
      <attachid>447218</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 03:22:46 -0800</bug_when>
    <thetext>Created attachment 447218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824324</commentid>
    <comment_count>2</comment_count>
      <attachid>447224</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 05:09:32 -0800</bug_when>
    <thetext>Created attachment 447224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824383</commentid>
    <comment_count>3</comment_count>
      <attachid>447224</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-12-15 09:27:24 -0800</bug_when>
    <thetext>Comment on attachment 447224
Patch

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

&gt; Source/WebCore/ChangeLog:48
&gt; +        Add HasSelectorFilter which uses non-counting BloomFilter internally. The size of the filter is 64 bytes.

I don&apos;t understand how BloomFilter&lt;14&gt; is 64 bytes but I&apos;ll take your word for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824387</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 09:30:52 -0800</bug_when>
    <thetext>&gt; I don&apos;t understand how BloomFilter&lt;14&gt; is 64 bytes but I&apos;ll take your word
&gt; for it.

It is not!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824391</commentid>
    <comment_count>5</comment_count>
      <attachid>447244</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 09:42:37 -0800</bug_when>
    <thetext>Created attachment 447244
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824397</commentid>
    <comment_count>6</comment_count>
      <attachid>447247</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 09:51:49 -0800</bug_when>
    <thetext>Created attachment 447247
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824400</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-15 09:52:43 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 447247 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824401</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 09:54:10 -0800</bug_when>
    <thetext>It is now BloomFilter&lt;12&gt; and 512 bytes (hopefully)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824403</commentid>
    <comment_count>9</comment_count>
      <attachid>447249</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 10:00:15 -0800</bug_when>
    <thetext>Created attachment 447249
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824416</commentid>
    <comment_count>10</comment_count>
      <attachid>447249</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-15 10:10:41 -0800</bug_when>
    <thetext>Comment on attachment 447249
Patch for landing

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        Use it to quikly reject selectors.

quikly -&gt; quickly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824428</commentid>
    <comment_count>11</comment_count>
      <attachid>447258</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 10:48:48 -0800</bug_when>
    <thetext>Created attachment 447258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824430</commentid>
    <comment_count>12</comment_count>
      <attachid>447259</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-15 10:50:39 -0800</bug_when>
    <thetext>Created attachment 447259
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824454</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-15 11:46:30 -0800</bug_when>
    <thetext>Committed r287091 (245283@main): &lt;https://commits.webkit.org/245283@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447259.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824456</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-15 11:47:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86535166&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447218</attachid>
            <date>2021-12-15 03:22:46 -0800</date>
            <delta_ts>2021-12-15 05:09:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234341-20211215132245.patch</filename>
            <type>text/plain</type>
            <size>23437</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JmMDE5YzZlNDEzZTQ2
ZDYwMGFlOWM2OWNjNTkzZjcyMGQ5YmYzNi4uOWFhNDcxNGY1YjAyZDAxZjRlNzk2ODFlYWU1MzUw
NTYxZTdmZTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTEyLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gVXNlIEJsb29tIGZpbHRlciB0byBxdWlja2x5IHJlamVjdCA6aGFzKCkgc2VsZWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzNDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4g
ZHJhbWF0aWNhbGx5IHNwZWVkIHVwIGNhc2VzIHdoZXJlIHRoZXJlIGFyZSBtYW55IDpoYXMgcnVs
ZXMsIG1vc3Qgb2Ygd2hpY2ggZG9uJ3QgbWF0Y2ggdGhlaXIgYXJndW1lbnQKKyAgICAgICAgYnkg
YnVpbGRpbmcgYSBCbG9vbSBmaWx0ZXIgZGVzY3JpYmluZyB0aGUgZmVhdHVyZXMgb2YgdGhlIHN1
YnRyZWUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3Mg
Y29uc3QpOgorCisgICAgICAgIEJ1aWxkIGFuZCBjYWNoZSBIYXNTZWxlY3RvckZpbHRlciBwZXIg
ZWxlbWVudC9maWx0ZXIgdHlwZS4KKyAgICAgICAgVXNlIGl0IHRvIHF1aWtseSByZWplY3Qgc2Vs
ZWN0b3JzLgorCisgICAgICAgICogY3NzL1NlbGVjdG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTaW1wbGVTZWxlY3Rvckhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTZWxlY3Rvckhh
c2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckZpbHRlcjo6Y2hvb3NlU2VsZWN0b3JI
YXNoZXNGb3JGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEVsZW1lbnRJZGVudGlm
aWVySGFzaGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTaW1wbGVTZWxl
Y3Rvckhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFNlbGVjdG9ySGFz
aGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNob29zZVNlbGVjdG9ySGFzaGVzRm9y
RmlsdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU2VsZWN0b3JGaWx0ZXIuaDoKKyAgICAg
ICAgKiBzdHlsZS9IYXNTZWxlY3RvckZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmlsdGVyOjpIYXNTZWxlY3RvckZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI6OnR5cGVGb3JNYXRjaEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmlsdGVyOjptYWtlS2V5KToK
KworICAgICAgICBUaGUga2V5IGNvbnNpc3RzIG9mIHRoZSBtb3N0IHNwZWNpZmljIHN0cmluZyBp
biB0aGUgcmlnaHRtb3N0IGNvbXBvdW5kIG9mIHRoZSBzZWxlY3RvciBhbG9uZyB3aXRoCisgICAg
ICAgIDpob3ZlciBwc2V1ZG8gY2xhc3MsIGlmIGFueS4KKworICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6Okhhc1NlbGVjdG9yRmlsdGVyOjphZGQpOgorCisgICAgICAgIEFkZCBhbiBFbGVtZW50IHRv
IHRoZSBmaWx0ZXIuCisgICAgICAgIFRoZSBmZWF0dXJlcyBjb2xsZWN0ZWQgYXJlIHRoZSBzYW1l
IGFzIGZvciB0aGUgcmVndWxhciBzZWxlY3RvciBmaWx0ZXIsIHBsdXMgcGVybXV0YXRpb25zIHdp
dGgKKyAgICAgICAgOmhvdmVyIHBzZXVkby1jbGFzcyBpZiBpdCB3b3VsZCBtYXRjaC4KKworICAg
ICAgICAqIHN0eWxlL0hhc1NlbGVjdG9yRmlsdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3N0eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6Okhhc1NlbGVjdG9yRmlsdGVyOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpIYXNTZWxlY3RvckZpbHRlcjo6cmVqZWN0IGNvbnN0KToKKworICAgICAgICBBZGQgSGFz
U2VsZWN0b3JGaWx0ZXIgd2hpY2ggdXNlcyBub24tY291bnRpbmcgQmxvb21GaWx0ZXIgaW50ZXJu
YWxseS4gVGhlIHNpemUgb2YgdGhlIGZpbHRlciBpcyA2NCBieXRlcy4KKworICAgICAgICAqIHN0
eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1h
a2VIYXNQc2V1ZG9DbGFzc1NlbGVjdG9yRmlsdGVyS2V5KToKKwogMjAyMS0xMi0xNCAgQmVuIE5o
YW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgd2ViIHB1c2ggbWVzc2FnZSBkZWNy
eXB0aW9uIHJvdXRpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDY0MDk3MjdlYTQ4MTNjYjJkYzhhZmVj
NDAzNmE3OGZhYzM1YzE5NmYuLmZlYzE3YWNmZjBlZDQ1NTdiZTYwYTE1ZTg1OGI4NmIzNThjNWI1
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNTQzLDYgKzI1NDMsNyBAQCBzdHlsZS9BdHRyaWJ1dGVD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAK
IHN0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuY3BwCitzdHlsZS9IYXNTZWxlY3RvckZpbHRlci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcAogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAogc3R5bGUvSW5zcGVj
dG9yQ1NTT01XcmFwcGVycy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NzNiNzg5YjQ0M2UyODA4ZmVlYzNiMTExYjJlNmIx
ZTQ2N2I0MzRlLi45MjA3YjM0NmZlZjI3Yjk4MGY5MTg3ZjBiNGMxOWY2M2E2ZTQ1MGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC01Mzg0LDYgKzUzODQsNyBAQAogCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJh
c2VDb3JlVGV4dC5oICovOyB9OwogCQlFNEU4QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENh
c2NhZGVEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NEU5NEQ2MTIyRkYxNThBMDBERDE5MUYgLyogTGVnYWN5TGluZUxheW91dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMUFDNzgyMkZBRkQ1MDAwMTdC
NzVCIC8qIExlZ2FjeUxpbmVMYXlvdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFNEVEM0VDQzI3NjhBNTFEMDBGMTdBQzggLyogSGFzU2VsZWN0
b3JGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0RUQzRUNBMjc2OEE1MUMwMEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oICovOyB9Owog
CQlFNEYwQkUzMTI1NzEyRjZFMDA5RTc0MzEgLyogQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RjBCRTJFMjU3MTBB
NzUwMDlFNzQzMSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5oICovOyB9OwogCQlFNEYzOEQxQjI2
MjZGMTNCMDA3QjEwNjQgLyogRGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEYzOEQxOTI2MjZGMTNCMDA3
QjEwNjQgLyogRGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5LmggKi87IH07CiAJCUU0RjgxOUM2
MjZGQjRFQkYwMDk0RTE2MiAvKiBJbmxpbmVCb3hQYWludGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEY4MTlDNTI2RkI0RUJGMDA5NEUxNjIgLyog
SW5saW5lQm94UGFpbnRlci5oICovOyB9OwpAQCAtMTc0NjQsNiArMTc0NjUsOCBAQAogCQlFNEU4
QjRFRDIxNkI3OUY0MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4QjRGMDIxNkI4QjVG
MDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENh
c2NhZGVEZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEVEM0VD
QTI3NjhBNTFDMDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSGFzU2VsZWN0b3JGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTRFRDNFQ0QyNzY4QTY4ODAwRjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhc1NlbGVjdG9yRmlsdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRGMEJFMkUyNTcxMEE3NTAwOUU3NDMxIC8qIENhcmV0UmVj
dENvbXB1dGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcmV0UmVj
dENvbXB1dGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RjBCRTMwMjU3
MTBBNzYwMDlFNzQzMSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYXJldFJlY3RDb21wdXRhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RjM4RDE5MjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zMTA3Niw2ICszMTA3OSw4IEBACiAJCQkJRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8q
IENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRkJEQjYxOUExNkQ2MDMyQTAwQkIz
Mzk0IC8qIEVsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCAqLywKIAkJCQlGQkRCNjE5RTE2RDYwMzY1
MDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCAqLywKKwkJCQlFNEVEM0VDRDI3NjhB
Njg4MDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuY3BwICovLAorCQkJCUU0RUQzRUNBMjc2
OEE1MUMwMEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oICovLAogCQkJCUU0QTgxNEREMUM3
MzM4RDEwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCiAJCQkJRTRBODE0
REYxQzczMzhFQjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJMUMw
MTA2RkUxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8sCkBAIC0z
MzEyMSw3ICszMzEyNiw2IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk3QjU4MkREODI3
MTZGNTVCMDA0QjkyRDAgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgw
QTQ4MjAwMTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NE
MEUyQkYxRjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzQ0NzAsNiArMzQ0NzQsNyBAQAogCQkJCTI2RUE4OUE3MUI0RjJCNzUwMDhD
NUZEMiAvKiBIYXNoYWJsZUFjdGlvbkxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODJCNzQ2
MTE5OEMzNTQwMEJGQjAwNSAvKiBIYXNoQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4NzQ4QkUwMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUU0RUQzRUNDMjc2OEE1MUQwMEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0QyNTc5OUZCNTAwNjU2M0JCIC8qIEhkck1ldGFkYXRhVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBNTk1OTMyMTQ2REVDMzAwQTg0MTg1IC8qIEhFVkNV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTU5NTk4MjE0NkRGNzgwMEE4NDE4NSAv
KiBIRVZDVXRpbGl0aWVzQ29jb2EuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcAppbmRleCAzYTIyMDU4NDhjMzk5YTI0OWYwMTYxOWE1MDUwYzcyODkz
OTU2MDYwLi5jNDU2Mzc0ZWVjMTkyYmY3ZDg2NDExMzZjNWExMzMyNTZjY2EyOWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtMTI0OSwxMCArMTI0OSw0OSBAQCBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hTZWxlY3Rvckxpc3QoQ2hlY2tpbmdDb250ZXh0JiBj
aGVja2luZ0NvbnRleHQsIGNvbnN0CiAKIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1Bz
ZXVkb0NsYXNzKENoZWNraW5nQ29udGV4dCYgY2hlY2tpbmdDb250ZXh0LCBjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3RvciYgaGFzU2VsZWN0b3IpIGNvbnN0CiB7Ci0gICAg
YXV0byogY2FjaGUgPSBjaGVja2luZ0NvbnRleHQuc2VsZWN0b3JNYXRjaGluZ1N0YXRlID8gJmNo
ZWNraW5nQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3RhdGUtPmhhc1BzZXVkb0NsYXNzTWF0Y2hD
YWNoZSA6IG51bGxwdHI7CisgICAgYXV0byBtYXRjaEVsZW1lbnQgPSBTdHlsZTo6Y29tcHV0ZUhh
c1BzZXVkb0NsYXNzTWF0Y2hFbGVtZW50KGhhc1NlbGVjdG9yKTsKIAorICAgIGF1dG8gY2FuTWF0
Y2ggPSBbJl0geworICAgICAgICBzd2l0Y2ggKG1hdGNoRWxlbWVudCkgeworICAgICAgICBjYXNl
IFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc0NoaWxkOgorICAgICAgICBjYXNlIFN0eWxlOjpNYXRj
aEVsZW1lbnQ6Okhhc0Rlc2NlbmRhbnQ6CisgICAgICAgICAgICByZXR1cm4gISFlbGVtZW50LmZp
cnN0RWxlbWVudENoaWxkKCk7CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoRWxlbWVudDo6SGFz
U2libGluZzoKKyAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVtZW50OjpIYXNTaWJsaW5nRGVz
Y2VuZGFudDoKKyAgICAgICAgICAgIHJldHVybiAhIWVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5n
KCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fTsKKyAgICB9OworCisgICAgLy8gU2VlIGlmIHRoZXJlIGFyZSBhbnkgZWxlbWVudHMgdGhhdCB0
aGlzIDpoYXMoKSBzZWxlY3RvciBjb3VsZCBtYXRjaC4KKyAgICBpZiAoIWNhbk1hdGNoKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gZmlsdGVyRm9yRWxlbWVudCA9IFsmXSgp
IC0+IFN0eWxlOjpIYXNTZWxlY3RvckZpbHRlciogeworICAgICAgICBpZiAoIWNoZWNraW5nQ29u
dGV4dC5zZWxlY3Rvck1hdGNoaW5nU3RhdGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgYXV0byB0eXBlID0gU3R5bGU6Okhhc1NlbGVjdG9yRmlsdGVyOjp0eXBlRm9yTWF0
Y2hFbGVtZW50KG1hdGNoRWxlbWVudCk7CisgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBhdXRvJiBmaWx0ZXJzTWFwID0gY2hlY2tpbmdDb250
ZXh0LnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZS0+aGFzUHNldWRvQ2xhc3NTZWxlY3RvckZpbHRlcnM7
CisgICAgICAgIHJldHVybiBmaWx0ZXJzTWFwLmVuc3VyZShtYWtlSGFzUHNldWRvQ2xhc3NTZWxl
Y3RvckZpbHRlcktleShlbGVtZW50LCAqdHlwZSksIFsmXSB7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI+KGVsZW1lbnQsICp0eXBlKTsKKyAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIH07CisKKyAgICAvLyBDaGVjayBp
ZiB0aGUgYmxvb20gZmlsdGVyIHJlamVjdHMgdGhpcyBzZWxlY3RvcgorICAgIGlmIChhdXRvKiBm
aWx0ZXIgPSBmaWx0ZXJGb3JFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKGZpbHRlci0+cmVqZWN0
KGhhc1NlbGVjdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBh
dXRvKiBjYWNoZSA9IGNoZWNraW5nQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3RhdGUgPyAmY2hl
Y2tpbmdDb250ZXh0LnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZS0+aGFzUHNldWRvQ2xhc3NNYXRjaENh
Y2hlIDogbnVsbHB0cjsKICAgICBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaCogY2FjaGVkTWF0
Y2ggPSBudWxscHRyOwotICAgIGlmIChjYWNoZSkgeworCisgICAgYXV0byBjaGVja0ZvckNhY2hl
ZE1hdGNoID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxib29sPiB7CisgICAgICAgIGlmICghY2Fj
aGUpCisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBjYWNoZWRNYXRjaCA9ICZjYWNo
ZS0+YWRkKFN0eWxlOjptYWtlSGFzUHNldWRvQ2xhc3NDYWNoZUtleShoYXNTZWxlY3RvciwgZWxl
bWVudCksIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpOb25lKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgICAgIHN3aXRjaCAoKmNhY2hlZE1hdGNoKSB7CiAgICAgICAgIGNhc2UgU3R5bGU6Okhh
c1BzZXVkb0NsYXNzTWF0Y2g6Ok1hdGNoZXM6CkBAIC0xMjYzLDcgKzEzMDIsMTIgQEAgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVj
a2luZ0NvbnRleHQsIGNvbnMKICAgICAgICAgY2FzZSBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRj
aDo6Tm9uZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIH07CisKKyAgICAvLyBTZWUgaWYgd2Uga25vdyB0aGUgcmVzdWx0IGFs
cmVhZHkuCisgICAgaWYgKGF1dG8gbWF0Y2ggPSBjaGVja0ZvckNhY2hlZE1hdGNoKCkpCisgICAg
ICAgIHJldHVybiAqbWF0Y2g7CiAKICAgICBTZWxlY3RvckNoZWNrZXIgaGFzQ2hlY2tlcihlbGVt
ZW50LmRvY3VtZW50KCkpOwogICAgIGJvb2wgbWF0Y2hlZEluc2lkZVNjb3BlID0gZmFsc2U7CkBA
IC0xMzAwLDggKzEzNDQsNiBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIYXNQc2V1ZG9D
bGFzcyhDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29ucwogICAgIH07CiAKICAg
ICBhdXRvIG1hdGNoID0gWyZdIHsKLSAgICAgICAgYXV0byBtYXRjaEVsZW1lbnQgPSBTdHlsZTo6
Y29tcHV0ZUhhc1BzZXVkb0NsYXNzTWF0Y2hFbGVtZW50KGhhc1NlbGVjdG9yKTsKLQogICAgICAg
ICBzd2l0Y2ggKG1hdGNoRWxlbWVudCkgewogICAgICAgICAvLyA6aGFzKD4gLmNoaWxkKQogICAg
ICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc0NoaWxkOgpAQCAtMTMxMiw4ICsxMzU0
LDYgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdD
b250ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNvbnMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAvLyA6aGFzKC5kZXNjZW5kYW50KQogICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6
Okhhc0Rlc2NlbmRhbnQ6IHsKLSAgICAgICAgICAgIGlmICghZWxlbWVudC5maXJzdEVsZW1lbnRD
aGlsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChj
YWNoZSkgewogICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB3ZSBhbHJlYWR5IGtub3cgdGhpcyBk
ZXNjZW5kYW50IHNlbGVjdG9yIGRvZXNuJ3QgbWF0Y2ggaW4gdGhpcyBzdWJ0cmVlLgogICAgICAg
ICAgICAgICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQoKTsg
YW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewpAQCAtMTMy
NCw2ICsxMzY0LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3Mo
Q2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNvbnMKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChjaGVja0Rlc2NlbmRhbnRzKGVsZW1lbnQpKQogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAv
LyBGSVhNRTogQWRkIGEgc2VwYXJhdGUgY2FzZSBmb3IgYWRqYWNlbnQgY29tYmluYXRvci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCmluZGV4IDAxOTEzMjY0ZjAzYzAxOTVkMTE2
NTM1YWY0NzFiZTk1NTI0NGRkYTkuLmY4ZjJjZWMxY2RjMjk0NDYxZDJkMDUzNzc3ZDM0ZTJkMGFl
Y2E3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBzdGF0aWMgYm9vbCBpc0V4Y2x1ZGVkQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIG5hbWUgPT0gSFRNTE5hbWVzOjpjbGFzc0F0dHItPmxvY2FsTmFtZSgp
IHx8IG5hbWUgPT0gSFRNTE5hbWVzOjppZEF0dHItPmxvY2FsTmFtZSgpIHx8IG5hbWUgPT0gSFRN
TE5hbWVzOjpzdHlsZUF0dHItPmxvY2FsTmFtZSgpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQg
Y29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFZl
Y3Rvcjx1bnNpZ25lZCwgND4mIGlkZW50aWZpZXJIYXNoZXMpCit2b2lkIFNlbGVjdG9yRmlsdGVy
Ojpjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
VmVjdG9yPHVuc2lnbmVkLCA0PiYgaWRlbnRpZmllckhhc2hlcykKIHsKICAgICBBdG9tU3RyaW5n
IHRhZ0xvd2VyY2FzZUxvY2FsTmFtZSA9IGVsZW1lbnQubG9jYWxOYW1lKCkuY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKTsKICAgICBpZGVudGlmaWVySGFzaGVzLmFwcGVuZCh0YWdMb3dlcmNhc2VM
b2NhbE5hbWUuaW1wbCgpLT5leGlzdGluZ0hhc2goKSAqIFRhZ05hbWVTYWx0KTsKQEAgLTEzNCwx
NSArMTM0LDcgQEAgdm9pZCBTZWxlY3RvckZpbHRlcjo6cG9wUGFyZW50c1VudGlsKEVsZW1lbnQq
IHBhcmVudCkKICAgICB9CiB9CiAKLXN0cnVjdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyB7Ci0g
ICAgdXNpbmcgSGFzaFZlY3RvciA9IFZlY3Rvcjx1bnNpZ25lZCwgOD47Ci0gICAgSGFzaFZlY3Rv
ciBpZHM7Ci0gICAgSGFzaFZlY3RvciBjbGFzc2VzOwotICAgIEhhc2hWZWN0b3IgdGFnczsKLSAg
ICBIYXNoVmVjdG9yIGF0dHJpYnV0ZXM7Ci19OwotCi1zdGF0aWMgaW5saW5lIHZvaWQgY29sbGVj
dFNpbXBsZVNlbGVjdG9ySGFzaChDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVkSGFz
aGVzLCBjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IpCit2b2lkIFNlbGVjdG9yRmlsdGVyOjpj
b2xsZWN0U2ltcGxlU2VsZWN0b3JIYXNoKENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBjb2xsZWN0
ZWRIYXNoZXMsIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKIHsKICAgICBzd2l0Y2ggKHNl
bGVjdG9yLm1hdGNoKCkpIHsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKQEAgLTE3Niw3ICsx
NjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaChDb2xs
ZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVkSAogICAgIH0KIH0KIAotc3RhdGljIENvbGxl
Y3RlZFNlbGVjdG9ySGFzaGVzIGNvbGxlY3RTZWxlY3Rvckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rv
ciYgcmlnaHRtb3N0U2VsZWN0b3IpCithdXRvIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0U2VsZWN0
b3JIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3ImIHJpZ2h0bW9zdFNlbGVjdG9yKSAtPiBDb2xsZWN0
ZWRTZWxlY3Rvckhhc2hlcwogewogICAgIENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIGNvbGxlY3Rl
ZEhhc2hlczsKIApAQCAtMjEwLDkgKzIwMiw5IEBAIHN0YXRpYyBDb2xsZWN0ZWRTZWxlY3Rvckhh
c2hlcyBjb2xsZWN0U2VsZWN0b3JIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3ImIHJpZ2h0bW9zCiAg
ICAgcmV0dXJuIGNvbGxlY3RlZEhhc2hlczsKIH0KIAotc3RhdGljIFNlbGVjdG9yRmlsdGVyOjpI
YXNoZXMgY2hvb3NlU2VsZWN0b3JIYXNoZXNGb3JGaWx0ZXIoY29uc3QgQ29sbGVjdGVkU2VsZWN0
b3JIYXNoZXMmIGNvbGxlY3RlZFNlbGVjdG9ySGFzaGVzKQorYXV0byBTZWxlY3RvckZpbHRlcjo6
Y2hvb3NlU2VsZWN0b3JIYXNoZXNGb3JGaWx0ZXIoY29uc3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNo
ZXMmIGNvbGxlY3RlZFNlbGVjdG9ySGFzaGVzKSAtPiBIYXNoZXMKIHsKLSAgICBTZWxlY3RvckZp
bHRlcjo6SGFzaGVzIHJlc3VsdEhhc2hlczsKKyAgICBIYXNoZXMgcmVzdWx0SGFzaGVzOwogICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKIAogICAgIGF1dG8gYWRkSWZOZXcgPSBbJl0gKHVuc2lnbmVk
IGhhc2gpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmgKaW5kZXggYTg0Nzk3NDYwNzM0
Y2NkYjE0Y2I3NzVlNDJkYTI2ZjhkNTBkMWVjMS4uMDRlYzUzNzAyMzE1NzEwMmJlMDYxMmQ1YjE5
OTY3N2QwMWU0ZjU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmls
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmgKQEAgLTUwLDgg
KzUwLDIxIEBAIHB1YmxpYzoKICAgICBib29sIGZhc3RSZWplY3RTZWxlY3Rvcihjb25zdCBIYXNo
ZXMmKSBjb25zdDsKICAgICBzdGF0aWMgSGFzaGVzIGNvbGxlY3RIYXNoZXMoY29uc3QgQ1NTU2Vs
ZWN0b3ImKTsKIAorICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hl
cyhjb25zdCBFbGVtZW50JiwgVmVjdG9yPHVuc2lnbmVkLCA0PiYpOworCisgICAgc3RydWN0IENv
bGxlY3RlZFNlbGVjdG9ySGFzaGVzIHsKKyAgICAgICAgdXNpbmcgSGFzaFZlY3RvciA9IFZlY3Rv
cjx1bnNpZ25lZCwgOD47CisgICAgICAgIEhhc2hWZWN0b3IgaWRzOworICAgICAgICBIYXNoVmVj
dG9yIGNsYXNzZXM7CisgICAgICAgIEhhc2hWZWN0b3IgdGFnczsKKyAgICAgICAgSGFzaFZlY3Rv
ciBhdHRyaWJ1dGVzOworICAgIH07CisgICAgc3RhdGljIHZvaWQgY29sbGVjdFNpbXBsZVNlbGVj
dG9ySGFzaChDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYsIGNvbnN0IENTU1NlbGVjdG9yJik7CisK
IHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplUGFyZW50U3RhY2soRWxlbWVudCYgcGFyZW50
KTsKKyAgICBzdGF0aWMgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMgY29sbGVjdFNlbGVjdG9ySGFz
aGVzKGNvbnN0IENTU1NlbGVjdG9yJiByaWdodG1vc3RTZWxlY3Rvcik7CisgICAgc3RhdGljIEhh
c2hlcyBjaG9vc2VTZWxlY3Rvckhhc2hlc0ZvckZpbHRlcihjb25zdCBDb2xsZWN0ZWRTZWxlY3Rv
ckhhc2hlcyYpOwogCiAgICAgc3RydWN0IFBhcmVudFN0YWNrRnJhbWUgewogICAgICAgICBQYXJl
bnRTdGFja0ZyYW1lKCkgOiBlbGVtZW50KDApIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvSGFzU2VsZWN0b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSGFz
U2VsZWN0b3JGaWx0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNmYyODAxMzE3ZTBmOWQ1NTRmYmNiNDY1
ZTBkZmFjODYzZjk0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9I
YXNTZWxlY3RvckZpbHRlci5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhhc1NlbGVjdG9yRmlsdGVyLmgiCisKKyNpbmNs
dWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgorI2luY2x1
ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlOjpTdHlsZSB7CisKKy8v
IEZJWE1FOiBTdXBwb3J0IGFkZGl0aW9uYWwgcHNldWRvLWNsYXNzZXMuCitzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIEhvdmVyU2FsdCA9IDEwMTsKKworSGFzU2VsZWN0b3JGaWx0ZXI6Okhhc1Nl
bGVjdG9yRmlsdGVyKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFR5cGUgdHlwZSkKKyAgICA6IG1f
dHlwZSh0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgVHlwZTo6RGVzY2Vu
ZGFudHM6CisgICAgICAgIGZvciAoYXV0byYgZGVzY2VuZGFudCA6IGRlc2NlbmRhbnRzT2ZUeXBl
PEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgYWRkKGRlc2NlbmRhbnQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFR5cGU6OkNoaWxkcmVuOgorICAgICAgICBmb3IgKGF1dG8mIGNo
aWxkIDogY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICBhZGQo
Y2hpbGQpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2F1dG8gSGFzU2VsZWN0b3JGaWx0
ZXI6OnR5cGVGb3JNYXRjaEVsZW1lbnQoTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVudCkgLT4gc3Rk
OjpvcHRpb25hbDxUeXBlPgoreworICAgIHN3aXRjaCAobWF0Y2hFbGVtZW50KSB7CisgICAgY2Fz
ZSBNYXRjaEVsZW1lbnQ6Okhhc0NoaWxkOgorICAgICAgICByZXR1cm4gVHlwZTo6Q2hpbGRyZW47
CisgICAgY2FzZSBNYXRjaEVsZW1lbnQ6Okhhc0Rlc2NlbmRhbnQ6CisgICAgICAgIHJldHVybiBU
eXBlOjpEZXNjZW5kYW50czsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4geyB9OworICAg
IH0KK30KKworYXV0byBIYXNTZWxlY3RvckZpbHRlcjo6bWFrZUtleShjb25zdCBDU1NTZWxlY3Rv
ciYgaGFzU2VsZWN0b3IpIC0+IEtleQoreworICAgIFNlbGVjdG9yRmlsdGVyOjpDb2xsZWN0ZWRT
ZWxlY3Rvckhhc2hlcyBoYXNoZXM7CisgICAgYm9vbCBoYXNIb3ZlckluQ29tcG91bmQgPSBmYWxz
ZTsKKyAgICBmb3IgKGF1dG8qIHNpbXBsZVNlbGVjdG9yID0gJmhhc1NlbGVjdG9yOyBzaW1wbGVT
ZWxlY3Rvcjsgc2ltcGxlU2VsZWN0b3IgPSBzaW1wbGVTZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7
CisgICAgICAgIGlmIChzaW1wbGVTZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3MgJiYgc2ltcGxlU2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0hvdmVyKQorICAgICAgICAgICAgaGFzSG92ZXJJbkNvbXBvdW5kID0g
dHJ1ZTsKKyAgICAgICAgU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2go
aGFzaGVzLCAqc2ltcGxlU2VsZWN0b3IpOworICAgICAgICBpZiAoIWhhc2hlcy5pZHMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChzaW1wbGVTZWxlY3Rvci0+cmVs
YXRpb24oKSAhPSBDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpCisgICAgICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBhdXRvIHBpY2tLZXkgPSBbJl0oYXV0byYgaGFzaFZlY3RvcikgLT4gS2V5
IHsKKyAgICAgICAgaWYgKGhhc2hWZWN0b3IuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIGlmIChoYXNIb3ZlckluQ29tcG91bmQpCisgICAgICAgICAgICByZXR1cm4g
aGFzaFZlY3RvclswXSAqIEhvdmVyU2FsdDsKKyAgICAgICAgcmV0dXJuIGhhc2hWZWN0b3JbMF07
CisgICAgfTsKKworICAgIGlmIChhdXRvIGtleSA9IHBpY2tLZXkoaGFzaGVzLmlkcykpCisgICAg
ICAgIHJldHVybiBrZXk7CisgICAgaWYgKGF1dG8ga2V5ID0gcGlja0tleShoYXNoZXMuY2xhc3Nl
cykpCisgICAgICAgIHJldHVybiBrZXk7CisgICAgaWYgKGF1dG8ga2V5ID0gcGlja0tleShoYXNo
ZXMuYXR0cmlidXRlcykpCisgICAgICAgIHJldHVybiBrZXk7CisgICAgcmV0dXJuIHBpY2tLZXko
aGFzaGVzLnRhZ3MpOworfQorCit2b2lkIEhhc1NlbGVjdG9yRmlsdGVyOjphZGQoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQsIDQ+IGVsZW1lbnRIYXNoZXM7
CisgICAgU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyhlbGVt
ZW50LCBlbGVtZW50SGFzaGVzKTsKKworICAgIGZvciAoYXV0byBoYXNoIDogZWxlbWVudEhhc2hl
cykKKyAgICAgICAgbV9maWx0ZXIuYWRkKGhhc2gpOworCisgICAgaWYgKGVsZW1lbnQuaG92ZXJl
ZCgpKSB7CisgICAgICAgIGZvciAoYXV0byBoYXNoIDogZWxlbWVudEhhc2hlcykKKyAgICAgICAg
ICAgIG1fZmlsdGVyLmFkZChoYXNoICogSG92ZXJTYWx0KTsKKyAgICB9Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1NlbGVjdG9yRmlsdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9IYXNTZWxlY3RvckZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3ODc1ZTMyYzUw
OTRkMDc4NDA5ZmVmMDA2NzM1ZGJjNjdiNmU2NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9IYXNTZWxlY3RvckZpbHRlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1
ZGUgPHd0Zi9CbG9vbUZpbHRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
U3R5bGUgeworCitlbnVtIGNsYXNzIE1hdGNoRWxlbWVudCA6IHVpbnQ4X3Q7CisKK2NsYXNzIEhh
c1NlbGVjdG9yRmlsdGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgQ2hpbGRyZW4sIERlc2NlbmRhbnRzIH07
CisgICAgSGFzU2VsZWN0b3JGaWx0ZXIoY29uc3QgRWxlbWVudCYsIFR5cGUpOworCisgICAgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VHlwZT4gdHlwZUZvck1hdGNoRWxlbWVudChNYXRjaEVsZW1lbnQpOworCisgICAgdXNpbmcg
S2V5ID0gdW5zaWduZWQ7CisgICAgc3RhdGljIEtleSBtYWtlS2V5KGNvbnN0IENTU1NlbGVjdG9y
JiBoYXNTZWxlY3Rvcik7CisKKyAgICBib29sIHJlamVjdChjb25zdCBDU1NTZWxlY3RvciYgaGFz
U2VsZWN0b3IpIGNvbnN0IHsgcmV0dXJuIHJlamVjdChtYWtlS2V5KGhhc1NlbGVjdG9yKSk7IH0K
KyAgICBib29sIHJlamVjdChLZXkga2V5KSBjb25zdCB7IHJldHVybiAhbV9maWx0ZXIubWF5Q29u
dGFpbihrZXkpOyB9CisKKworcHJpdmF0ZToKKyAgICB2b2lkIGFkZChjb25zdCBFbGVtZW50Jik7
CisKKyAgICBjb25zdCBUeXBlIG1fdHlwZTsKKyAgICBCbG9vbUZpbHRlcjwxND4gbV9maWx0ZXI7
Cit9OworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TZWxlY3Rvck1h
dGNoaW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0
ZS5oCmluZGV4IDQyOWFiOTZjZDBlMjcxMTI5MWFiOTNmZjI5MTM3ZGQ2YjFkOTA3MzMuLmVlMDk5
M2Y0MDA3ZDZlYjg5ZTg2ZjUyZTkzZDRlYTAyNzQyOTkzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS5oCkBAIC0yNCwxOCArMjQsMjIgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJIYXNTZWxlY3RvckZpbHRlci5oIgogI2luY2x1ZGUgIlNl
bGVjdG9yRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmU6OlN0eWxlIHsKIAogdXNpbmcgSGFzUHNldWRvQ2xhc3NDYWNoZUtleSA9IHN0ZDo6cGFp
cjxjb25zdCBDU1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqPjsKK3VzaW5nIEhhc1BzZXVkb0Ns
YXNzU2VsZWN0b3JGaWx0ZXJLZXkgPSBzdGQ6OnBhaXI8Y29uc3QgRWxlbWVudCosIHVpbnQ4X3Q+
OwogCiBlbnVtIGNsYXNzIEhhc1BzZXVkb0NsYXNzTWF0Y2ggOiB1aW50OF90IHsgTm9uZSwgTWF0
Y2hlcywgRmFpbHMsIEZhaWxzU3VidHJlZSB9OwogCiBzdHJ1Y3QgU2VsZWN0b3JNYXRjaGluZ1N0
YXRlIHsKICAgICBTZWxlY3RvckZpbHRlciBzZWxlY3RvckZpbHRlcjsKKwogICAgIEhhc2hNYXA8
SGFzUHNldWRvQ2xhc3NDYWNoZUtleSwgSGFzUHNldWRvQ2xhc3NNYXRjaD4gaGFzUHNldWRvQ2xh
c3NNYXRjaENhY2hlOworICAgIEhhc2hNYXA8SGFzUHNldWRvQ2xhc3NTZWxlY3RvckZpbHRlcktl
eSwgc3RkOjp1bmlxdWVfcHRyPEhhc1NlbGVjdG9yRmlsdGVyPj4gaGFzUHNldWRvQ2xhc3NTZWxl
Y3RvckZpbHRlcnM7CiB9OwogCiBpbmxpbmUgSGFzUHNldWRvQ2xhc3NDYWNoZUtleSBtYWtlSGFz
UHNldWRvQ2xhc3NDYWNoZUtleShjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IsIGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCkBAIC00Myw0ICs0Nyw5IEBAIGlubGluZSBIYXNQc2V1ZG9DbGFzc0Nh
Y2hlS2V5IG1ha2VIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5KGNvbnN0IENTU1NlbGVjdG9yJiBzZWxl
CiAgICAgcmV0dXJuIHsgJnNlbGVjdG9yLCAmZWxlbWVudCB9OwogfQogCitpbmxpbmUgSGFzUHNl
dWRvQ2xhc3NTZWxlY3RvckZpbHRlcktleSBtYWtlSGFzUHNldWRvQ2xhc3NTZWxlY3RvckZpbHRl
cktleShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBIYXNTZWxlY3RvckZpbHRlcjo6VHlwZSB0eXBl
KQoreworICAgIHJldHVybiB7ICZlbGVtZW50LCBzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSB9
OworfQorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447224</attachid>
            <date>2021-12-15 05:09:32 -0800</date>
            <delta_ts>2021-12-15 09:42:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234341-20211215150930.patch</filename>
            <type>text/plain</type>
            <size>24726</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JmMDE5YzZlNDEzZTQ2
ZDYwMGFlOWM2OWNjNTkzZjcyMGQ5YmYzNi4uM2Y4NzM2ZWI2NGNjZDYyNWQ4YTdjOTYyODg3YWVi
NWJiYzQ2NGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTEyLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gVXNlIEJsb29tIGZpbHRlciB0byBxdWlja2x5IHJlamVjdCA6aGFzKCkgc2VsZWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzNDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4g
ZHJhbWF0aWNhbGx5IHNwZWVkIHVwIGNhc2VzIHdoZXJlIHRoZXJlIGFyZSBtYW55IDpoYXMgcnVs
ZXMsIG1vc3Qgb2Ygd2hpY2ggZG9uJ3QgbWF0Y2ggdGhlaXIgYXJndW1lbnQKKyAgICAgICAgYnkg
YnVpbGRpbmcgYSBCbG9vbSBmaWx0ZXIgZGVzY3JpYmluZyB0aGUgZmVhdHVyZXMgb2YgdGhlIHN1
YnRyZWUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3Mg
Y29uc3QpOgorCisgICAgICAgIEJ1aWxkIGFuZCBjYWNoZSBIYXNTZWxlY3RvckZpbHRlciBwZXIg
ZWxlbWVudC9maWx0ZXIgdHlwZS4KKyAgICAgICAgVXNlIGl0IHRvIHF1aWtseSByZWplY3Qgc2Vs
ZWN0b3JzLgorICAgICAgICBBbHNvIGFkZCBhIGJhc2ljIGluaXRhbCBvcHRpbWl6YXRpb24gdG8g
YmFpbCBvdXQgaWYgdGhlcmUgYXJlIG5vIGNoaWxkL3NpYmxpbmcgZWxlbWVudHMgdGhhdCBjb3Vs
ZCBtYXRjaC4KKworICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckZpbHRlcjo6Y29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0U2ltcGxlU2VsZWN0b3JI
YXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0U2VsZWN0b3JI
YXNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JGaWx0ZXI6OmNob29zZVNlbGVjdG9y
SGFzaGVzRm9yRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RFbGVtZW50SWRlbnRp
Zmllckhhc2hlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2ltcGxlU2Vs
ZWN0b3JIYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTZWxlY3Rvckhh
c2hlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjaG9vc2VTZWxlY3Rvckhhc2hlc0Zv
ckZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgICogY3NzL1NlbGVjdG9yRmlsdGVyLmg6CisgICAg
ICAgICogc3R5bGUvSGFzU2VsZWN0b3JGaWx0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpIYXNTZWxlY3RvckZpbHRlcjo6SGFzU2VsZWN0b3JGaWx0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmlsdGVyOjp0eXBlRm9yTWF0Y2hFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpIYXNTZWxlY3RvckZpbHRlcjo6bWFrZUtleSk6
CisKKyAgICAgICAgVGhlIGtleSBjb25zaXN0cyBvZiB0aGUgbW9zdCBzcGVjaWZpYyBzdHJpbmcg
aW4gdGhlIHJpZ2h0bW9zdCBjb21wb3VuZCBvZiB0aGUgc2VsZWN0b3IgYWxvbmcgd2l0aAorICAg
ICAgICA6aG92ZXIgcHNldWRvIGNsYXNzLCBpZiBhbnkuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpIYXNTZWxlY3RvckZpbHRlcjo6YWRkKToKKworICAgICAgICBBZGQgYW4gRWxlbWVudCB0
byB0aGUgZmlsdGVyLgorICAgICAgICBUaGUgZmVhdHVyZXMgY29sbGVjdGVkIGFyZSB0aGUgc2Ft
ZSBhcyBmb3IgdGhlIHJlZ3VsYXIgc2VsZWN0b3IgZmlsdGVyLCBwbHVzIHBlcm11dGF0aW9ucyB3
aXRoCisgICAgICAgIDpob3ZlciBwc2V1ZG8tY2xhc3MgaWYgaXQgd291bGQgbWF0Y2guCisKKyAg
ICAgICAgKiBzdHlsZS9IYXNTZWxlY3RvckZpbHRlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TZWxlY3Rvck1hdGNoaW5nU3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpIYXNTZWxlY3RvckZpbHRlcjo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI6OnJlamVjdCBjb25zdCk6CisKKyAgICAgICAgQWRkIEhh
c1NlbGVjdG9yRmlsdGVyIHdoaWNoIHVzZXMgbm9uLWNvdW50aW5nIEJsb29tRmlsdGVyIGludGVy
bmFsbHkuIFRoZSBzaXplIG9mIHRoZSBmaWx0ZXIgaXMgNjQgYnl0ZXMuCisKKyAgICAgICAgKiBz
dHlsZS9TZWxlY3Rvck1hdGNoaW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpt
YWtlSGFzUHNldWRvQ2xhc3NTZWxlY3RvckZpbHRlcktleSk6CisKIDIwMjEtMTItMTQgIEJlbiBO
aGFtICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHdlYiBwdXNoIG1lc3NhZ2UgZGVj
cnlwdGlvbiByb3V0aW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA2NDA5NzI3ZWE0ODEzY2IyZGM4YWZl
YzQwMzZhNzhmYWMzNWMxOTZmLi5mZWMxN2FjZmYwZWQ0NTU3YmU2MGExNWU4NThiODZiMzU4YzVi
NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjU0Myw2ICsyNTQzLDcgQEAgc3R5bGUvQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3Bw
CiBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKIHN0eWxlL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmNwcAorc3R5bGUvSGFzU2VsZWN0b3JGaWx0ZXIuY3BwCiBzdHlsZS9JZENoYW5nZUlu
dmFsaWRhdGlvbi5jcHAKIHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKIHN0eWxlL0luc3Bl
Y3RvckNTU09NV3JhcHBlcnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDczYjc4OWI0NDNlMjgwOGZlZWMzYjExMWIyZTZi
MWU0NjdiNDM0ZS4uOTIwN2IzNDZmZWYyN2I5ODBmOTE4N2YwYjRjMTlmNjNhNmU0NTBiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTM4NCw2ICs1Mzg0LDcgQEAKIAkJRTRFOEI0RUMyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3Rl
bUZvbnREYXRhYmFzZUNvcmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQuaCAqLzsgfTsKIAkJRTRFOEI0RjUyMTZCOTU2NTAwQjg4MzREIC8qIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0RThCNEYyMjE2QjhCNjAwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTRFOTRENjEyMkZGMTU4QTAwREQxOTFGIC8qIExlZ2FjeUxpbmVMYXlvdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTFBQzc4MjJGQUZENTAwMDE3
Qjc1QiAvKiBMZWdhY3lMaW5lTGF5b3V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTRFRDNFQ0MyNzY4QTUxRDAwRjE3QUM4IC8qIEhhc1NlbGVj
dG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEVEM0VDQTI3NjhBNTFDMDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuaCAqLzsgfTsK
IAkJRTRGMEJFMzEyNTcxMkY2RTAwOUU3NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEYwQkUyRTI1NzEw
QTc1MDA5RTc0MzEgLyogQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCAqLzsgfTsKIAkJRTRGMzhEMUIy
NjI2RjEzQjAwN0IxMDY0IC8qIERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRGMzhEMTkyNjI2RjEzQjAw
N0IxMDY0IC8qIERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eS5oICovOyB9OwogCQlFNEY4MTlD
NjI2RkI0RUJGMDA5NEUxNjIgLyogSW5saW5lQm94UGFpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRGODE5QzUyNkZCNEVCRjAwOTRFMTYyIC8q
IElubGluZUJveFBhaW50ZXIuaCAqLzsgfTsKQEAgLTE3NDY0LDYgKzE3NDY1LDggQEAKIAkJRTRF
OEI0RUQyMTZCNzlGNDAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRFOEI0RjAyMTZCOEI1
RjAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RThCNEYyMjE2QjhCNjAwMEI4ODM0RCAvKiBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRFRDNF
Q0EyNzY4QTUxQzAwRjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhhc1NlbGVjdG9yRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUU0RUQzRUNEMjc2OEE2ODgwMEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIYXNTZWxlY3RvckZpbHRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RjBCRTJFMjU3MTBBNzUwMDlFNzQzMSAvKiBDYXJldFJl
Y3RDb21wdXRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXJldFJl
Y3RDb21wdXRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEYwQkUzMDI1
NzEwQTc2MDA5RTc0MzEgLyogQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FyZXRSZWN0Q29tcHV0YXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNEYzOEQxOTI2MjZGMTNCMDA3QjEwNjQgLyogRGVmYXVs
dFJlc291cmNlTG9hZFByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERlZmF1bHRSZXNvdXJjZUxvYWRQcmlvcml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzEwNzYsNiArMzEwNzksOCBAQAogCQkJCUU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAv
KiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCUZCREI2MTlBMTZENjAzMkEwMEJC
MzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgKi8sCiAJCQkJRkJEQjYxOUUxNkQ2MDM2
NTAwQkIzMzk0IC8qIEVsZW1lbnRSdWxlQ29sbGVjdG9yLmggKi8sCisJCQkJRTRFRDNFQ0QyNzY4
QTY4ODAwRjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmNwcCAqLywKKwkJCQlFNEVEM0VDQTI3
NjhBNTFDMDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuaCAqLywKIAkJCQlFNEE4MTRERDFD
NzMzOEQxMDBCRjg1QUMgLyogSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJCUU0QTgx
NERGMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCTFD
MDEwNkZFMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovLApAQCAt
MzMxMjEsNyArMzMxMjYsNiBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJN0I1ODJERDgy
NzE2RjU1QjAwNEI5MkQwIC8qIChudWxsKSBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkI4MUY4
MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
RDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0NDcwLDYgKzM0NDc0LDcgQEAKIAkJCQkyNkVBODlBNzFCNEYyQjc1MDA4
QzVGRDIgLyogSGFzaGFibGVBY3Rpb25MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDgyQjc0
NjExOThDMzU0MDBCRkIwMDUgLyogSGFzaENoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODc0OEJFMDEyQ0JGMkRDMDAxRkJBNDEgLyogSGFzaFRvb2xzLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFNEVEM0VDQzI3NjhBNTFEMDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEM0VFRjNEMjU3OTlGQjUwMDY1NjNCQiAvKiBIZHJNZXRhZGF0YVR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTU5NTkzMjE0NkRFQzMwMEE4NDE4NSAvKiBIRVZD
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREE1OTU5ODIxNDZERjc4MDBBODQxODUg
LyogSEVWQ1V0aWxpdGllc0NvY29hLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggM2EyMjA1ODQ4YzM5OWEyNDlmMDE2MTlhNTA1MGM3Mjg5
Mzk1NjA2MC4uMDA5YWZiODE0OGVhYzJjZTVjODc2ZWNiZTA1MDU5NGI0NjQ1NzY0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTEyNDksMTIgKzEyNDksMzEgQEAg
Ym9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoU2VsZWN0b3JMaXN0KENoZWNraW5nQ29udGV4dCYg
Y2hlY2tpbmdDb250ZXh0LCBjb25zdAogCiBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIYXNQ
c2V1ZG9DbGFzcyhDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29uc3QgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3ImIGhhc1NlbGVjdG9yKSBjb25zdAogeworICAg
IGF1dG8gbWF0Y2hFbGVtZW50ID0gU3R5bGU6OmNvbXB1dGVIYXNQc2V1ZG9DbGFzc01hdGNoRWxl
bWVudChoYXNTZWxlY3Rvcik7CisKKyAgICBhdXRvIGNhbk1hdGNoID0gWyZdIHsKKyAgICAgICAg
c3dpdGNoIChtYXRjaEVsZW1lbnQpIHsKKyAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVtZW50
OjpIYXNDaGlsZDoKKyAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVtZW50OjpIYXNEZXNjZW5k
YW50OgorICAgICAgICAgICAgcmV0dXJuICEhZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCgpOwor
ICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc1NpYmxpbmc6CisgICAgICAgIGNh
c2UgU3R5bGU6Ok1hdGNoRWxlbWVudDo6SGFzU2libGluZ0Rlc2NlbmRhbnQ6CisgICAgICAgICAg
ICByZXR1cm4gISFlbGVtZW50Lm5leHRFbGVtZW50U2libGluZygpOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH07CisgICAgfTsKKworICAgIC8v
IFNlZSBpZiB0aGVyZSBhcmUgYW55IGVsZW1lbnRzIHRoYXQgdGhpcyA6aGFzKCkgc2VsZWN0b3Ig
Y291bGQgbWF0Y2guCisgICAgaWYgKCFjYW5NYXRjaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICBhdXRvKiBjYWNoZSA9IGNoZWNraW5nQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3Rh
dGUgPyAmY2hlY2tpbmdDb250ZXh0LnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZS0+aGFzUHNldWRvQ2xh
c3NNYXRjaENhY2hlIDogbnVsbHB0cjsKIAotICAgIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNo
KiBjYWNoZWRNYXRjaCA9IG51bGxwdHI7Ci0gICAgaWYgKGNhY2hlKSB7Ci0gICAgICAgIGNhY2hl
ZE1hdGNoID0gJmNhY2hlLT5hZGQoU3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5KGhh
c1NlbGVjdG9yLCBlbGVtZW50KSwgU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6Ok5vbmUpLml0
ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgc3dpdGNoICgqY2FjaGVkTWF0Y2gpIHsKKyAgICBhdXRv
IGNoZWNrRm9yQ2FjaGVkTWF0Y2ggPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsKKyAg
ICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHN3aXRj
aCAoY2FjaGUtPmdldChTdHlsZTo6bWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkoaGFzU2VsZWN0
b3IsIGVsZW1lbnQpKSkgewogICAgICAgICBjYXNlIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNo
OjpNYXRjaGVzOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgU3R5bGU6
Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzOgpAQCAtMTI2Myw2ICsxMjgyLDM0IEBAIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENoZWNraW5nQ29udGV4dCYgY2hl
Y2tpbmdDb250ZXh0LCBjb25zCiAgICAgICAgIGNhc2UgU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0
Y2g6Ok5vbmU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICByZXR1cm4g
eyB9OworICAgIH07CisKKyAgICAvLyBTZWUgaWYgd2Uga25vdyB0aGUgcmVzdWx0IGFscmVhZHku
CisgICAgaWYgKGF1dG8gbWF0Y2ggPSBjaGVja0ZvckNhY2hlZE1hdGNoKCkpCisgICAgICAgIHJl
dHVybiAqbWF0Y2g7CisKKyAgICBhdXRvIGZpbHRlckZvckVsZW1lbnQgPSBbJl0oKSAtPiBTdHls
ZTo6SGFzU2VsZWN0b3JGaWx0ZXIqIHsKKyAgICAgICAgaWYgKCFjaGVja2luZ0NvbnRleHQuc2Vs
ZWN0b3JNYXRjaGluZ1N0YXRlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IGF1dG8gdHlwZSA9IFN0eWxlOjpIYXNTZWxlY3RvckZpbHRlcjo6dHlwZUZvck1hdGNoRWxlbWVu
dChtYXRjaEVsZW1lbnQpOworICAgICAgICBpZiAoIXR5cGUpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgYXV0byYgZmlsdGVyc01hcCA9IGNoZWNraW5nQ29udGV4dC5zZWxl
Y3Rvck1hdGNoaW5nU3RhdGUtPmhhc1BzZXVkb0NsYXNzU2VsZWN0b3JGaWx0ZXJzOworICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IGZpbHRlcnNNYXAuYWRkKFN0eWxlOjptYWtlSGFzUHNldWRvQ2xh
c3NTZWxlY3RvckZpbHRlcktleShlbGVtZW50LCAqdHlwZSksIHN0ZDo6dW5pcXVlX3B0cjxTdHls
ZTo6SGFzU2VsZWN0b3JGaWx0ZXI+KCkpOworICAgICAgICAvLyBPbmx5IGJ1aWxkIGEgZmlsdGVy
IGlmIHRoZSBzYW1lIGVsZW1lbnQgZ2V0cyBjaGVja2VkIHNlY29uZCB0aW1lIHdpdGggYSBkaWZm
ZXJlbnQgc2VsZWN0b3IgKG1pc3NlcyB0aGUgbWF0Y2ggY2FjaGUpLgorICAgICAgICBpZiAoYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAg
ICBpZiAoIWFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpCisgICAgICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI+KGVs
ZW1lbnQsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CisgICAgfTsKKworICAgIC8vIENoZWNrIGlmIHRoZSBibG9vbSBmaWx0ZXIgcmVqZWN0
cyB0aGlzIHNlbGVjdG9yCisgICAgaWYgKGF1dG8qIGZpbHRlciA9IGZpbHRlckZvckVsZW1lbnQo
KSkgeworICAgICAgICBpZiAoZmlsdGVyLT5yZWplY3QoaGFzU2VsZWN0b3IpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIFNlbGVjdG9yQ2hlY2tlciBoYXNDaGVja2Vy
KGVsZW1lbnQuZG9jdW1lbnQoKSk7CkBAIC0xMzAwLDggKzEzNDcsNiBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6bWF0Y2hIYXNQc2V1ZG9DbGFzcyhDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29u
dGV4dCwgY29ucwogICAgIH07CiAKICAgICBhdXRvIG1hdGNoID0gWyZdIHsKLSAgICAgICAgYXV0
byBtYXRjaEVsZW1lbnQgPSBTdHlsZTo6Y29tcHV0ZUhhc1BzZXVkb0NsYXNzTWF0Y2hFbGVtZW50
KGhhc1NlbGVjdG9yKTsKLQogICAgICAgICBzd2l0Y2ggKG1hdGNoRWxlbWVudCkgewogICAgICAg
ICAvLyA6aGFzKD4gLmNoaWxkKQogICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhh
c0NoaWxkOgpAQCAtMTMxMiw4ICsxMzU3LDYgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNo
SGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNvbnMKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAvLyA6aGFzKC5kZXNjZW5kYW50KQogICAgICAgICBj
YXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc0Rlc2NlbmRhbnQ6IHsKLSAgICAgICAgICAgIGlm
ICghZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIGlmIChjYWNoZSkgewogICAgICAgICAgICAgICAgIC8vIFNlZSBp
ZiB3ZSBhbHJlYWR5IGtub3cgdGhpcyBkZXNjZW5kYW50IHNlbGVjdG9yIGRvZXNuJ3QgbWF0Y2gg
aW4gdGhpcyBzdWJ0cmVlLgogICAgICAgICAgICAgICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBl
bGVtZW50LnBhcmVudEVsZW1lbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBh
cmVudEVsZW1lbnQoKSkgewpAQCAtMTMyNCw2ICsxMzY3LDcgQEAgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQs
IGNvbnMKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGVja0Rlc2NlbmRhbnRzKGVs
ZW1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogQWRkIGEgc2VwYXJhdGUgY2FzZSBmb3Ig
YWRqYWNlbnQgY29tYmluYXRvci4KQEAgLTEzNTQsMTUgKzEzOTgsMTYgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0Nv
bnRleHQsIGNvbnMKIAogICAgIGF1dG8gcmVzdWx0ID0gbWF0Y2goKTsKIAotICAgIGlmIChjYWNo
ZWRNYXRjaCkgewotICAgICAgICAqY2FjaGVkTWF0Y2ggPSBbJl0gewotICAgICAgICAgICAgaWYg
KHJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0
Y2g6Ok1hdGNoZXM7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlZEluc2lkZVNjb3BlKQotICAgICAg
ICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHM7Ci0gICAg
ICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzU3VidHJlZTsK
LSAgICAgICAgfSgpOwotICAgIH0KKyAgICBhdXRvIG1hdGNoVHlwZUZvckNhY2hlID0gWyZdIHsK
KyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRv
Q2xhc3NNYXRjaDo6TWF0Y2hlczsKKyAgICAgICAgaWYgKG1hdGNoZWRJbnNpZGVTY29wZSkKKyAg
ICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHM7CisgICAg
ICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHNTdWJ0cmVlOworICAg
IH07CisKKyAgICBpZiAoY2FjaGUpCisgICAgICAgIGNhY2hlLT5hZGQoU3R5bGU6Om1ha2VIYXNQ
c2V1ZG9DbGFzc0NhY2hlS2V5KGhhc1NlbGVjdG9yLCBlbGVtZW50KSwgbWF0Y2hUeXBlRm9yQ2Fj
aGUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZp
bHRlci5jcHAKaW5kZXggMDE5MTMyNjRmMDNjMDE5NWQxMTY1MzVhZjQ3MWJlOTU1MjQ0ZGRhOS4u
ZjhmMmNlYzFjZGMyOTQ0NjFkMmQwNTM3NzdkMzRlMmQwYWVjYTcyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JGaWx0ZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBib29sIGlzRXhj
bHVkZWRBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbmFtZSA9
PSBIVE1MTmFtZXM6OmNsYXNzQXR0ci0+bG9jYWxOYW1lKCkgfHwgbmFtZSA9PSBIVE1MTmFtZXM6
OmlkQXR0ci0+bG9jYWxOYW1lKCkgfHwgbmFtZSA9PSBIVE1MTmFtZXM6OnN0eWxlQXR0ci0+bG9j
YWxOYW1lKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0RWxlbWVudElkZW50aWZp
ZXJIYXNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPHVuc2lnbmVkLCA0PiYgaWRl
bnRpZmllckhhc2hlcykKK3ZvaWQgU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RFbGVtZW50SWRlbnRp
Zmllckhhc2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8dW5zaWduZWQsIDQ+JiBp
ZGVudGlmaWVySGFzaGVzKQogewogICAgIEF0b21TdHJpbmcgdGFnTG93ZXJjYXNlTG9jYWxOYW1l
ID0gZWxlbWVudC5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIGlk
ZW50aWZpZXJIYXNoZXMuYXBwZW5kKHRhZ0xvd2VyY2FzZUxvY2FsTmFtZS5pbXBsKCktPmV4aXN0
aW5nSGFzaCgpICogVGFnTmFtZVNhbHQpOwpAQCAtMTM0LDE1ICsxMzQsNyBAQCB2b2lkIFNlbGVj
dG9yRmlsdGVyOjpwb3BQYXJlbnRzVW50aWwoRWxlbWVudCogcGFyZW50KQogICAgIH0KIH0KIAot
c3RydWN0IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIHsKLSAgICB1c2luZyBIYXNoVmVjdG9yID0g
VmVjdG9yPHVuc2lnbmVkLCA4PjsKLSAgICBIYXNoVmVjdG9yIGlkczsKLSAgICBIYXNoVmVjdG9y
IGNsYXNzZXM7Ci0gICAgSGFzaFZlY3RvciB0YWdzOwotICAgIEhhc2hWZWN0b3IgYXR0cmlidXRl
czsKLX07Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0U2ltcGxlU2VsZWN0b3JIYXNoKENv
bGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBjb2xsZWN0ZWRIYXNoZXMsIGNvbnN0IENTU1NlbGVjdG9y
JiBzZWxlY3RvcikKK3ZvaWQgU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTaW1wbGVTZWxlY3Rvckhh
c2goQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmIGNvbGxlY3RlZEhhc2hlcywgY29uc3QgQ1NTU2Vs
ZWN0b3ImIHNlbGVjdG9yKQogewogICAgIHN3aXRjaCAoc2VsZWN0b3IubWF0Y2goKSkgewogICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OklkOgpAQCAtMTc2LDcgKzE2OCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBjb2xsZWN0U2ltcGxlU2VsZWN0b3JIYXNoKENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBj
b2xsZWN0ZWRICiAgICAgfQogfQogCi1zdGF0aWMgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMgY29s
bGVjdFNlbGVjdG9ySGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yJiByaWdodG1vc3RTZWxlY3RvcikK
K2F1dG8gU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTZWxlY3Rvckhhc2hlcyhjb25zdCBDU1NTZWxl
Y3RvciYgcmlnaHRtb3N0U2VsZWN0b3IpIC0+IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzCiB7CiAg
ICAgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMgY29sbGVjdGVkSGFzaGVzOwogCkBAIC0yMTAsOSAr
MjAyLDkgQEAgc3RhdGljIENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIGNvbGxlY3RTZWxlY3Rvckhh
c2hlcyhjb25zdCBDU1NTZWxlY3RvciYgcmlnaHRtb3MKICAgICByZXR1cm4gY29sbGVjdGVkSGFz
aGVzOwogfQogCi1zdGF0aWMgU2VsZWN0b3JGaWx0ZXI6Okhhc2hlcyBjaG9vc2VTZWxlY3Rvckhh
c2hlc0ZvckZpbHRlcihjb25zdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVkU2Vs
ZWN0b3JIYXNoZXMpCithdXRvIFNlbGVjdG9yRmlsdGVyOjpjaG9vc2VTZWxlY3Rvckhhc2hlc0Zv
ckZpbHRlcihjb25zdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVkU2VsZWN0b3JI
YXNoZXMpIC0+IEhhc2hlcwogewotICAgIFNlbGVjdG9yRmlsdGVyOjpIYXNoZXMgcmVzdWx0SGFz
aGVzOworICAgIEhhc2hlcyByZXN1bHRIYXNoZXM7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwog
CiAgICAgYXV0byBhZGRJZk5ldyA9IFsmXSAodW5zaWduZWQgaGFzaCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JGaWx0ZXIuaAppbmRleCBhODQ3OTc0NjA3MzRjY2RiMTRjYjc3NWU0MmRhMjZmOGQ1
MGQxZWMxLi4wNGVjNTM3MDIzMTU3MTAyYmUwNjEyZDViMTk5Njc3ZDAxZTRmNTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuaApAQCAtNTAsOCArNTAsMjEgQEAgcHVibGljOgogICAg
IGJvb2wgZmFzdFJlamVjdFNlbGVjdG9yKGNvbnN0IEhhc2hlcyYpIGNvbnN0OwogICAgIHN0YXRp
YyBIYXNoZXMgY29sbGVjdEhhc2hlcyhjb25zdCBDU1NTZWxlY3RvciYpOwogCisgICAgc3RhdGlj
IHZvaWQgY29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKGNvbnN0IEVsZW1lbnQmLCBWZWN0
b3I8dW5zaWduZWQsIDQ+Jik7CisKKyAgICBzdHJ1Y3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMg
eworICAgICAgICB1c2luZyBIYXNoVmVjdG9yID0gVmVjdG9yPHVuc2lnbmVkLCA4PjsKKyAgICAg
ICAgSGFzaFZlY3RvciBpZHM7CisgICAgICAgIEhhc2hWZWN0b3IgY2xhc3NlczsKKyAgICAgICAg
SGFzaFZlY3RvciB0YWdzOworICAgICAgICBIYXNoVmVjdG9yIGF0dHJpYnV0ZXM7CisgICAgfTsK
KyAgICBzdGF0aWMgdm9pZCBjb2xsZWN0U2ltcGxlU2VsZWN0b3JIYXNoKENvbGxlY3RlZFNlbGVj
dG9ySGFzaGVzJiwgY29uc3QgQ1NTU2VsZWN0b3ImKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRpYWxpemVQYXJlbnRTdGFjayhFbGVtZW50JiBwYXJlbnQpOworICAgIHN0YXRpYyBDb2xsZWN0
ZWRTZWxlY3Rvckhhc2hlcyBjb2xsZWN0U2VsZWN0b3JIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3Im
IHJpZ2h0bW9zdFNlbGVjdG9yKTsKKyAgICBzdGF0aWMgSGFzaGVzIGNob29zZVNlbGVjdG9ySGFz
aGVzRm9yRmlsdGVyKGNvbnN0IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJik7CiAKICAgICBzdHJ1
Y3QgUGFyZW50U3RhY2tGcmFtZSB7CiAgICAgICAgIFBhcmVudFN0YWNrRnJhbWUoKSA6IGVsZW1l
bnQoMCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNTZWxlY3RvckZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNTZWxlY3RvckZpbHRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDI2ZjI4MDEzMTdlMGY5ZDU1NGZiY2I0NjVlMGRmYWM4NjNmOTQzZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1NlbGVjdG9yRmlsdGVyLmNwcApA
QCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSGFzU2VsZWN0b3JGaWx0ZXIuaCIKKworI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5o
IgorI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCisjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmU6OlN0eWxlIHsKKworLy8gRklYTUU6IFN1cHBvcnQgYWRkaXRp
b25hbCBwc2V1ZG8tY2xhc3Nlcy4KK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSG92ZXJTYWx0
ID0gMTAxOworCitIYXNTZWxlY3RvckZpbHRlcjo6SGFzU2VsZWN0b3JGaWx0ZXIoY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgVHlwZSB0eXBlKQorICAgIDogbV90eXBlKHR5cGUpCit7CisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBUeXBlOjpEZXNjZW5kYW50czoKKyAgICAgICAgZm9yIChh
dXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZWxlbWVudCkpCisg
ICAgICAgICAgICBhZGQoZGVzY2VuZGFudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHlw
ZTo6Q2hpbGRyZW46CisgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxF
bGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAgIGFkZChjaGlsZCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworYXV0byBIYXNTZWxlY3RvckZpbHRlcjo6dHlwZUZvck1hdGNoRWxlbWVu
dChNYXRjaEVsZW1lbnQgbWF0Y2hFbGVtZW50KSAtPiBzdGQ6Om9wdGlvbmFsPFR5cGU+Cit7Cisg
ICAgc3dpdGNoIChtYXRjaEVsZW1lbnQpIHsKKyAgICBjYXNlIE1hdGNoRWxlbWVudDo6SGFzQ2hp
bGQ6CisgICAgICAgIHJldHVybiBUeXBlOjpDaGlsZHJlbjsKKyAgICBjYXNlIE1hdGNoRWxlbWVu
dDo6SGFzRGVzY2VuZGFudDoKKyAgICAgICAgcmV0dXJuIFR5cGU6OkRlc2NlbmRhbnRzOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorfQorCithdXRvIEhhc1NlbGVj
dG9yRmlsdGVyOjptYWtlS2V5KGNvbnN0IENTU1NlbGVjdG9yJiBoYXNTZWxlY3RvcikgLT4gS2V5
Cit7CisgICAgU2VsZWN0b3JGaWx0ZXI6OkNvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIGhhc2hlczsK
KyAgICBib29sIGhhc0hvdmVySW5Db21wb3VuZCA9IGZhbHNlOworICAgIGZvciAoYXV0byogc2lt
cGxlU2VsZWN0b3IgPSAmaGFzU2VsZWN0b3I7IHNpbXBsZVNlbGVjdG9yOyBzaW1wbGVTZWxlY3Rv
ciA9IHNpbXBsZVNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAgaWYgKHNpbXBsZVNl
bGVjdG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJiBzaW1wbGVTZWxl
Y3Rvci0+cHNldWRvQ2xhc3NUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIp
CisgICAgICAgICAgICBoYXNIb3ZlckluQ29tcG91bmQgPSB0cnVlOworICAgICAgICBTZWxlY3Rv
ckZpbHRlcjo6Y29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaChoYXNoZXMsICpzaW1wbGVTZWxlY3Rv
cik7CisgICAgICAgIGlmICghaGFzaGVzLmlkcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgaWYgKHNpbXBsZVNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9y
OjpTdWJzZWxlY3RvcikKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGF1dG8gcGlj
a0tleSA9IFsmXShhdXRvJiBoYXNoVmVjdG9yKSAtPiBLZXkgeworICAgICAgICBpZiAoaGFzaFZl
Y3Rvci5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKGhhc0hv
dmVySW5Db21wb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBoYXNoVmVjdG9yWzBdICogSG92ZXJT
YWx0OworICAgICAgICByZXR1cm4gaGFzaFZlY3RvclswXTsKKyAgICB9OworCisgICAgaWYgKGF1
dG8ga2V5ID0gcGlja0tleShoYXNoZXMuaWRzKSkKKyAgICAgICAgcmV0dXJuIGtleTsKKyAgICBp
ZiAoYXV0byBrZXkgPSBwaWNrS2V5KGhhc2hlcy5jbGFzc2VzKSkKKyAgICAgICAgcmV0dXJuIGtl
eTsKKyAgICBpZiAoYXV0byBrZXkgPSBwaWNrS2V5KGhhc2hlcy5hdHRyaWJ1dGVzKSkKKyAgICAg
ICAgcmV0dXJuIGtleTsKKyAgICByZXR1cm4gcGlja0tleShoYXNoZXMudGFncyk7Cit9CisKK3Zv
aWQgSGFzU2VsZWN0b3JGaWx0ZXI6OmFkZChjb25zdCBFbGVtZW50JiBlbGVtZW50KQoreworICAg
IFZlY3Rvcjx1bnNpZ25lZCwgND4gZWxlbWVudEhhc2hlczsKKyAgICBTZWxlY3RvckZpbHRlcjo6
Y29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKGVsZW1lbnQsIGVsZW1lbnRIYXNoZXMpOwor
CisgICAgZm9yIChhdXRvIGhhc2ggOiBlbGVtZW50SGFzaGVzKQorICAgICAgICBtX2ZpbHRlci5h
ZGQoaGFzaCk7CisKKyAgICBpZiAoZWxlbWVudC5ob3ZlcmVkKCkpIHsKKyAgICAgICAgZm9yIChh
dXRvIGhhc2ggOiBlbGVtZW50SGFzaGVzKQorICAgICAgICAgICAgbV9maWx0ZXIuYWRkKGhhc2gg
KiBIb3ZlclNhbHQpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvSGFzU2VsZWN0b3JGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1NlbGVj
dG9yRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc4NzVlMzJjNTA5NGQwNzg0MDlmZWYwMDY3MzVkYmM2
N2I2ZTY1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1NlbGVj
dG9yRmlsdGVyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL0Jsb29tRmlsdGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CisKK2VudW0gY2xhc3Mg
TWF0Y2hFbGVtZW50IDogdWludDhfdDsKKworY2xhc3MgSGFzU2VsZWN0b3JGaWx0ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlwZSA6
IHVpbnQ4X3QgeyBDaGlsZHJlbiwgRGVzY2VuZGFudHMgfTsKKyAgICBIYXNTZWxlY3RvckZpbHRl
cihjb25zdCBFbGVtZW50JiwgVHlwZSk7CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUeXBlPiB0eXBlRm9yTWF0Y2hF
bGVtZW50KE1hdGNoRWxlbWVudCk7CisKKyAgICB1c2luZyBLZXkgPSB1bnNpZ25lZDsKKyAgICBz
dGF0aWMgS2V5IG1ha2VLZXkoY29uc3QgQ1NTU2VsZWN0b3ImIGhhc1NlbGVjdG9yKTsKKworICAg
IGJvb2wgcmVqZWN0KGNvbnN0IENTU1NlbGVjdG9yJiBoYXNTZWxlY3RvcikgY29uc3QgeyByZXR1
cm4gcmVqZWN0KG1ha2VLZXkoaGFzU2VsZWN0b3IpKTsgfQorICAgIGJvb2wgcmVqZWN0KEtleSBr
ZXkpIGNvbnN0IHsgcmV0dXJuICFtX2ZpbHRlci5tYXlDb250YWluKGtleSk7IH0KKworCitwcml2
YXRlOgorICAgIHZvaWQgYWRkKGNvbnN0IEVsZW1lbnQmKTsKKworICAgIGNvbnN0IFR5cGUgbV90
eXBlOworICAgIEJsb29tRmlsdGVyPDE0PiBtX2ZpbHRlcjsKK307CisKK30KK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JNYXRjaGluZ1N0YXRlLmgKaW5kZXggNDI5YWI5NmNkMGUy
NzExMjkxYWI5M2ZmMjkxMzdkZDZiMWQ5MDczMy4uZWUwOTkzZjQwMDdkNmViODllODZmNTJlOTNk
NGVhMDI3NDI5OTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JN
YXRjaGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JNYXRjaGlu
Z1N0YXRlLmgKQEAgLTI0LDE4ICsyNCwyMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
Ikhhc1NlbGVjdG9yRmlsdGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZTo6U3R5bGUgewogCiB1c2lu
ZyBIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5ID0gc3RkOjpwYWlyPGNvbnN0IENTU1NlbGVjdG9yKiwg
Y29uc3QgRWxlbWVudCo+OwordXNpbmcgSGFzUHNldWRvQ2xhc3NTZWxlY3RvckZpbHRlcktleSA9
IHN0ZDo6cGFpcjxjb25zdCBFbGVtZW50KiwgdWludDhfdD47CiAKIGVudW0gY2xhc3MgSGFzUHNl
dWRvQ2xhc3NNYXRjaCA6IHVpbnQ4X3QgeyBOb25lLCBNYXRjaGVzLCBGYWlscywgRmFpbHNTdWJ0
cmVlIH07CiAKIHN0cnVjdCBTZWxlY3Rvck1hdGNoaW5nU3RhdGUgewogICAgIFNlbGVjdG9yRmls
dGVyIHNlbGVjdG9yRmlsdGVyOworCiAgICAgSGFzaE1hcDxIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5
LCBIYXNQc2V1ZG9DbGFzc01hdGNoPiBoYXNQc2V1ZG9DbGFzc01hdGNoQ2FjaGU7CisgICAgSGFz
aE1hcDxIYXNQc2V1ZG9DbGFzc1NlbGVjdG9yRmlsdGVyS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8SGFz
U2VsZWN0b3JGaWx0ZXI+PiBoYXNQc2V1ZG9DbGFzc1NlbGVjdG9yRmlsdGVyczsKIH07CiAKIGlu
bGluZSBIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5IG1ha2VIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5KGNv
bnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvciwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKQEAgLTQz
LDQgKzQ3LDkgQEAgaW5saW5lIEhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkgbWFrZUhhc1BzZXVkb0Ns
YXNzQ2FjaGVLZXkoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGUKICAgICByZXR1cm4geyAmc2VsZWN0
b3IsICZlbGVtZW50IH07CiB9CiAKK2lubGluZSBIYXNQc2V1ZG9DbGFzc1NlbGVjdG9yRmlsdGVy
S2V5IG1ha2VIYXNQc2V1ZG9DbGFzc1NlbGVjdG9yRmlsdGVyS2V5KGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQsIEhhc1NlbGVjdG9yRmlsdGVyOjpUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIHsgJmVs
ZW1lbnQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHR5cGUpIH07Cit9CisKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447244</attachid>
            <date>2021-12-15 09:42:37 -0800</date>
            <delta_ts>2021-12-15 09:51:44 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234341-20211215194235.patch</filename>
            <type>text/plain</type>
            <size>25910</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JmMDE5YzZlNDEzZTQ2
ZDYwMGFlOWM2OWNjNTkzZjcyMGQ5YmYzNi4uOTU2ZDg1ZmM3MjZhZDlhNTdlMTUyN2Q3MmFhNDUz
MTQ2YjA5Yjk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEyLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gVXNlIEJsb29tIGZpbHRlciB0byBxdWlja2x5IHJlamVjdCA6aGFzKCkgc2VsZWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzNDEK
KworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgV2UgY2FuIGRy
YW1hdGljYWxseSBzcGVlZCB1cCBjYXNlcyB3aGVyZSB0aGVyZSBhcmUgbWFueSA6aGFzIHJ1bGVz
LCBtb3N0IG9mIHdoaWNoIGRvbid0IG1hdGNoIHRoZWlyIGFyZ3VtZW50CisgICAgICAgIGJ5IGJ1
aWxkaW5nIGEgQmxvb20gZmlsdGVyIGRlc2NyaWJpbmcgdGhlIGZlYXR1cmVzIG9mIHRoZSBzdWJ0
cmVlLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzIGNv
bnN0KToKKworICAgICAgICBCdWlsZCBhbmQgY2FjaGUgSGFzU2VsZWN0b3JGaWx0ZXIgcGVyIGVs
ZW1lbnQvZmlsdGVyIHR5cGUuIEl0IHdpbGwgYmUgY29uc3RydWN0ZWQgb25seSBpZiBtdWx0aXBs
ZSA6aGFzKCkKKyAgICAgICAgc2VsZWN0b3JzIGFyZSB0ZXN0ZWQgZm9yIHRoZSBzYW1lIGVsZW1l
bnQgKG90aGVyd2lzZSB0aGUgcmVndWxhciBtYXRjaCBjYWNoZSBpcyBtb3JlIGVmZmljaWVudCku
CisgICAgICAgIFVzZSBpdCB0byBxdWlrbHkgcmVqZWN0IHNlbGVjdG9ycy4KKyAgICAgICAgQWxz
byBhZGQgYSBiYXNpYyBpbml0YWwgb3B0aW1pemF0aW9uIHRvIGJhaWwgb3V0IGlmIHRoZXJlIGFy
ZSBubyBjaGlsZC9zaWJsaW5nIGVsZW1lbnRzIHRoYXQgY291bGQgbWF0Y2guCisKKyAgICAgICAg
KiBjc3MvU2VsZWN0b3JGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JGaWx0
ZXI6OmNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaCk6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNlbGVjdG9ySGFzaGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjaG9vc2VTZWxlY3Rvckhhc2hlc0ZvckZpbHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2VsZWN0b3JIYXNoZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y2hvb3NlU2VsZWN0b3JIYXNoZXNGb3JGaWx0ZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5oOgorICAgICAgICAqIHN0eWxlL0hhc1NlbGVj
dG9yRmlsdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0
b3JGaWx0ZXI6Okhhc1NlbGVjdG9yRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpI
YXNTZWxlY3RvckZpbHRlcjo6dHlwZUZvck1hdGNoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI6Om1ha2VLZXkpOgorCisgICAgICAgIFRoZSBrZXkg
Y29uc2lzdHMgb2YgdGhlIG1vc3Qgc3BlY2lmaWMgc3RyaW5nIGluIHRoZSByaWdodG1vc3QgY29t
cG91bmQgb2YgdGhlIHNlbGVjdG9yIGFsb25nIHdpdGgKKyAgICAgICAgOmhvdmVyIHBzZXVkbyBj
bGFzcywgaWYgYW55LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0
ZXI6OmFkZCk6CisKKyAgICAgICAgQWRkIGFuIEVsZW1lbnQgdG8gdGhlIGZpbHRlci4KKyAgICAg
ICAgVGhlIGZlYXR1cmVzIGNvbGxlY3RlZCBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSByZWd1bGFy
IHNlbGVjdG9yIGZpbHRlciwgcGx1cyBwZXJtdXRhdGlvbnMgd2l0aAorICAgICAgICA6aG92ZXIg
cHNldWRvLWNsYXNzIGlmIGl0IHdvdWxkIG1hdGNoLgorCisgICAgICAgICogc3R5bGUvSGFzU2Vs
ZWN0b3JGaWx0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JN
YXRjaGluZ1N0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0
ZXI6OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmls
dGVyOjpyZWplY3QgY29uc3QpOgorCisgICAgICAgIEFkZCBIYXNTZWxlY3RvckZpbHRlciB3aGlj
aCB1c2VzIG5vbi1jb3VudGluZyBCbG9vbUZpbHRlciBpbnRlcm5hbGx5LiBUaGUgc2l6ZSBvZiB0
aGUgZmlsdGVyIGlzIDJrYi4KKworICAgICAgICAqIHN0eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc1NlbGVjdG9y
RmlsdGVyS2V5KToKKwogMjAyMS0xMi0xNCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgd2ViIHB1c2ggbWVzc2FnZSBkZWNyeXB0aW9uIHJvdXRpbmVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDY0MDk3MjdlYTQ4MTNjYjJkYzhhZmVjNDAzNmE3OGZhYzM1YzE5NmYuLmZlYzE3
YWNmZjBlZDQ1NTdiZTYwYTE1ZTg1OGI4NmIzNThjNWI1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
NTQzLDYgKzI1NDMsNyBAQCBzdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBz
dHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKIHN0eWxlL0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcAogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCitzdHlsZS9IYXNTZWxl
Y3RvckZpbHRlci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvSW5s
aW5lVGV4dEJveFN0eWxlLmNwcAogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0NzNiNzg5YjQ0M2UyODA4ZmVlYzNiMTExYjJlNmIxZTQ2N2I0MzRlLi45MjA3YjM0NmZlZjI3
Yjk4MGY5MTg3ZjBiNGMxOWY2M2E2ZTQ1MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Mzg0LDYgKzUzODQsNyBAQAogCQlF
NEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RThCNEVBMjE2
Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICovOyB9OwogCQlF
NEU4QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOEI0RjIyMTZCOEI2
MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5NEQ2MTIyRkYxNThBMDBERDE5MUYg
LyogTGVnYWN5TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIExlZ2FjeUxpbmVMYXlvdXQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEVE
M0VDQzI3NjhBNTFEMDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RUQzRUNBMjc2OEE1MUMwMEYxN0FD
OCAvKiBIYXNTZWxlY3RvckZpbHRlci5oICovOyB9OwogCQlFNEYwQkUzMTI1NzEyRjZFMDA5RTc0
MzEgLyogQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0RjBCRTJFMjU3MTBBNzUwMDlFNzQzMSAvKiBDYXJldFJlY3RD
b21wdXRhdGlvbi5oICovOyB9OwogCQlFNEYzOEQxQjI2MjZGMTNCMDA3QjEwNjQgLyogRGVmYXVs
dFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEYzOEQxOTI2MjZGMTNCMDA3QjEwNjQgLyogRGVmYXVsdFJlc291cmNl
TG9hZFByaW9yaXR5LmggKi87IH07CiAJCUU0RjgxOUM2MjZGQjRFQkYwMDk0RTE2MiAvKiBJbmxp
bmVCb3hQYWludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEY4MTlDNTI2RkI0RUJGMDA5NEUxNjIgLyogSW5saW5lQm94UGFpbnRlci5oICovOyB9
OwpAQCAtMTc0NjQsNiArMTc0NjUsOCBAQAogCQlFNEU4QjRFRDIxNkI3OUY0MDBCODgzNEQgLyog
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNEU4QjRGMDIxNkI4QjVGMDBCODgzNEQgLyogRm9udENhc2NhZGVE
ZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250
Q2FzY2FkZURlc2NyaXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRF
OEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEVEM0VDQTI3NjhBNTFDMDBGMTdBQzggLyogSGFz
U2VsZWN0b3JGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzU2Vs
ZWN0b3JGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRFRDNFQ0QyNzY4
QTY4ODAwRjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhhc1NlbGVjdG9yRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRG
MEJFMkUyNTcxMEE3NTAwOUU3NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcmV0UmVjdENvbXB1dGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RjBCRTMwMjU3MTBBNzYwMDlFNzQzMSAvKiBDYXJldFJl
Y3RDb21wdXRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
YXJldFJlY3RDb21wdXRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
RjM4RDE5MjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmYXVsdFJlc291cmNlTG9hZFByaW9y
aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTA3Niw2ICszMTA3OSw4IEBA
CiAJCQkJRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
LmggKi8sCiAJCQkJRkJEQjYxOUExNkQ2MDMyQTAwQkIzMzk0IC8qIEVsZW1lbnRSdWxlQ29sbGVj
dG9yLmNwcCAqLywKIAkJCQlGQkRCNjE5RTE2RDYwMzY1MDBCQjMzOTQgLyogRWxlbWVudFJ1bGVD
b2xsZWN0b3IuaCAqLywKKwkJCQlFNEVEM0VDRDI3NjhBNjg4MDBGMTdBQzggLyogSGFzU2VsZWN0
b3JGaWx0ZXIuY3BwICovLAorCQkJCUU0RUQzRUNBMjc2OEE1MUMwMEYxN0FDOCAvKiBIYXNTZWxl
Y3RvckZpbHRlci5oICovLAogCQkJCUU0QTgxNEREMUM3MzM4RDEwMEJGODVBQyAvKiBJZENoYW5n
ZUludmFsaWRhdGlvbi5jcHAgKi8sCiAJCQkJRTRBODE0REYxQzczMzhFQjAwQkY4NUFDIC8qIElk
Q2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJMUMwMTA2RkUxOTI1OTRERjAwOEE0MjAxIC8q
IElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8sCkBAIC0zMzEyMSw3ICszMzEyNiw2IEBACiAJCQlp
c2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk3QjU4MkREODI3MTZGNTVCMDA0QjkyRDAgLyogKG51bGwp
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFib3J0Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZBNENFIC8q
IEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIwN0Q2MzM0MDBBN0Qy
REQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0NzAsNiArMzQ0
NzQsNyBAQAogCQkJCTI2RUE4OUE3MUI0RjJCNzUwMDhDNUZEMiAvKiBIYXNoYWJsZUFjdGlvbkxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODJCNzQ2MTE5OEMzNTQwMEJGQjAwNSAvKiBIYXNo
Q2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzQ4QkUwMTJDQkYyREMwMDFGQkE0
MSAvKiBIYXNoVG9vbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RUQzRUNDMjc2OEE1MUQwMEYx
N0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0Qy
NTc5OUZCNTAwNjU2M0JCIC8qIEhkck1ldGFkYXRhVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RBNTk1OTMyMTQ2REVDMzAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNEQTU5NTk4MjE0NkRGNzgwMEE4NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29jb2EuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCAz
YTIyMDU4NDhjMzk5YTI0OWYwMTYxOWE1MDUwYzcyODkzOTU2MDYwLi43OWQyMDI5MjRjZjliNmEz
ZWRjYjM5MGJlZmUyYzQyNTI0OTU2NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcApAQCAtMTI0OSwxMiArMTI0OSwzMSBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0
Y2hTZWxlY3Rvckxpc3QoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNvbnN0CiAK
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENoZWNraW5nQ29udGV4
dCYgY2hlY2tpbmdDb250ZXh0LCBjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBDU1NTZWxl
Y3RvciYgaGFzU2VsZWN0b3IpIGNvbnN0CiB7CisgICAgYXV0byBtYXRjaEVsZW1lbnQgPSBTdHls
ZTo6Y29tcHV0ZUhhc1BzZXVkb0NsYXNzTWF0Y2hFbGVtZW50KGhhc1NlbGVjdG9yKTsKKworICAg
IGF1dG8gY2FuTWF0Y2ggPSBbJl0geworICAgICAgICBzd2l0Y2ggKG1hdGNoRWxlbWVudCkgewor
ICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc0NoaWxkOgorICAgICAgICBjYXNl
IFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc0Rlc2NlbmRhbnQ6CisgICAgICAgICAgICByZXR1cm4g
ISFlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkKCk7CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNo
RWxlbWVudDo6SGFzU2libGluZzoKKyAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVtZW50OjpI
YXNTaWJsaW5nRGVzY2VuZGFudDoKKyAgICAgICAgICAgIHJldHVybiAhIWVsZW1lbnQubmV4dEVs
ZW1lbnRTaWJsaW5nKCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgLy8gU2VlIGlmIHRoZXJlIGFyZSBhbnkgZWxl
bWVudHMgdGhhdCB0aGlzIDpoYXMoKSBzZWxlY3RvciBjb3VsZCBtYXRjaC4KKyAgICBpZiAoIWNh
bk1hdGNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGF1dG8qIGNhY2hlID0gY2hl
Y2tpbmdDb250ZXh0LnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSA/ICZjaGVja2luZ0NvbnRleHQuc2Vs
ZWN0b3JNYXRjaGluZ1N0YXRlLT5oYXNQc2V1ZG9DbGFzc01hdGNoQ2FjaGUgOiBudWxscHRyOwog
Ci0gICAgU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2gqIGNhY2hlZE1hdGNoID0gbnVsbHB0cjsK
LSAgICBpZiAoY2FjaGUpIHsKLSAgICAgICAgY2FjaGVkTWF0Y2ggPSAmY2FjaGUtPmFkZChTdHls
ZTo6bWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkoaGFzU2VsZWN0b3IsIGVsZW1lbnQpLCBTdHls
ZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6Tm9uZSkuaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICBz
d2l0Y2ggKCpjYWNoZWRNYXRjaCkgeworICAgIGF1dG8gY2hlY2tGb3JDYWNoZWRNYXRjaCA9IFsm
XSgpIC0+IHN0ZDo6b3B0aW9uYWw8Ym9vbD4geworICAgICAgICBpZiAoIWNhY2hlKQorICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgc3dpdGNoIChjYWNoZS0+Z2V0KFN0eWxlOjptYWtl
SGFzUHNldWRvQ2xhc3NDYWNoZUtleShlbGVtZW50LCBoYXNTZWxlY3RvcikpKSB7CiAgICAgICAg
IGNhc2UgU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6Ok1hdGNoZXM6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFp
bHM6CkBAIC0xMjYzLDYgKzEyODIsMzQgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFz
UHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNvbnMKICAgICAg
ICAgY2FzZSBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6Tm9uZToKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsKKworICAgIC8vIFNl
ZSBpZiB3ZSBrbm93IHRoZSByZXN1bHQgYWxyZWFkeS4KKyAgICBpZiAoYXV0byBtYXRjaCA9IGNo
ZWNrRm9yQ2FjaGVkTWF0Y2goKSkKKyAgICAgICAgcmV0dXJuICptYXRjaDsKKworICAgIGF1dG8g
ZmlsdGVyRm9yRWxlbWVudCA9IFsmXSgpIC0+IFN0eWxlOjpIYXNTZWxlY3RvckZpbHRlciogewor
ICAgICAgICBpZiAoIWNoZWNraW5nQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3RhdGUpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYXV0byB0eXBlID0gU3R5bGU6Okhhc1Nl
bGVjdG9yRmlsdGVyOjp0eXBlRm9yTWF0Y2hFbGVtZW50KG1hdGNoRWxlbWVudCk7CisgICAgICAg
IGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBhdXRvJiBm
aWx0ZXJzTWFwID0gY2hlY2tpbmdDb250ZXh0LnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZS0+aGFzUHNl
dWRvQ2xhc3NTZWxlY3RvckZpbHRlcnM7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gZmlsdGVy
c01hcC5hZGQoU3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc0ZpbHRlcktleShlbGVtZW50LCAqdHlw
ZSksIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI+KCkpOworICAgICAg
ICAvLyBPbmx5IGJ1aWxkIGEgZmlsdGVyIGlmIHRoZSBzYW1lIGVsZW1lbnQgZ2V0cyBjaGVja2Vk
IHNlY29uZCB0aW1lIHdpdGggYSBkaWZmZXJlbnQgc2VsZWN0b3IgKG1pc3NlcyB0aGUgbWF0Y2gg
Y2FjaGUpLgorICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUp
CisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTdHls
ZTo6SGFzU2VsZWN0b3JGaWx0ZXI+KGVsZW1lbnQsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgfTsKKworICAgIC8vIENoZWNrIGlm
IHRoZSBibG9vbSBmaWx0ZXIgcmVqZWN0cyB0aGlzIHNlbGVjdG9yCisgICAgaWYgKGF1dG8qIGZp
bHRlciA9IGZpbHRlckZvckVsZW1lbnQoKSkgeworICAgICAgICBpZiAoZmlsdGVyLT5yZWplY3Qo
aGFzU2VsZWN0b3IpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIFNl
bGVjdG9yQ2hlY2tlciBoYXNDaGVja2VyKGVsZW1lbnQuZG9jdW1lbnQoKSk7CkBAIC0xMjgzLDgg
KzEzMzAsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIYXNQc2V1ZG9DbGFzcyhDaGVj
a2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29ucwogICAgIGF1dG8gY2hlY2tEZXNjZW5k
YW50cyA9IFsmXShjb25zdCBFbGVtZW50JiBkZXNjZW5kYW50Um9vdCkgewogICAgICAgICBmb3Ig
KGF1dG8gaXQgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihkZXNjZW5kYW50Um9vdCkuYmVn
aW4oKTsgaXQ7KSB7CiAgICAgICAgICAgICBhdXRvJiBkZXNjZW5kYW50ID0gKml0OwotICAgICAg
ICAgICAgaWYgKGNhY2hlKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHlsZTo6bWFr
ZUhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkoaGFzU2VsZWN0b3IsIGRlc2NlbmRhbnQpOworICAgICAg
ICAgICAgaWYgKGNhY2hlICYmIGRlc2NlbmRhbnQuZmlyc3RFbGVtZW50Q2hpbGQoKSkgeworICAg
ICAgICAgICAgICAgIGF1dG8ga2V5ID0gU3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5
KGRlc2NlbmRhbnQsIGhhc1NlbGVjdG9yKTsKICAgICAgICAgICAgICAgICBpZiAoY2FjaGUtPmdl
dChrZXkpID09IFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWlsc1N1YnRyZWUpIHsKICAg
ICAgICAgICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEzMDAsOCArMTM0Nyw2IEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENoZWNraW5nQ29udGV4dCYgY2hlY2tp
bmdDb250ZXh0LCBjb25zCiAgICAgfTsKIAogICAgIGF1dG8gbWF0Y2ggPSBbJl0gewotICAgICAg
ICBhdXRvIG1hdGNoRWxlbWVudCA9IFN0eWxlOjpjb21wdXRlSGFzUHNldWRvQ2xhc3NNYXRjaEVs
ZW1lbnQoaGFzU2VsZWN0b3IpOwotCiAgICAgICAgIHN3aXRjaCAobWF0Y2hFbGVtZW50KSB7CiAg
ICAgICAgIC8vIDpoYXMoPiAuY2hpbGQpCiAgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoRWxlbWVu
dDo6SGFzQ2hpbGQ6CkBAIC0xMzEyLDE4ICsxMzU3LDE3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2Vy
OjptYXRjaEhhc1BzZXVkb0NsYXNzKENoZWNraW5nQ29udGV4dCYgY2hlY2tpbmdDb250ZXh0LCBj
b25zCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgLy8gOmhhcyguZGVzY2VuZGFudCkKICAg
ICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVtZW50OjpIYXNEZXNjZW5kYW50OiB7Ci0gICAgICAg
ICAgICBpZiAoIWVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoY2FjaGUpIHsKICAgICAgICAgICAgICAgICAv
LyBTZWUgaWYgd2UgYWxyZWFkeSBrbm93IHRoaXMgZGVzY2VuZGFudCBzZWxlY3RvciBkb2Vzbid0
IG1hdGNoIGluIHRoaXMgc3VidHJlZS4KICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGFuY2Vz
dG9yID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBrZXkgPSBT
dHlsZTo6bWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkoaGFzU2VsZWN0b3IsICphbmNlc3Rvcik7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8ga2V5ID0gU3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFz
c0NhY2hlS2V5KCphbmNlc3RvciwgaGFzU2VsZWN0b3IpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FjaGUtPmdldChrZXkpID09IFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWlsc1N1
YnRyZWUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoZWNrRGVzY2VuZGFudHMo
ZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBzZXBhcmF0ZSBjYXNlIGZv
ciBhZGphY2VudCBjb21iaW5hdG9yLgpAQCAtMTM1NCwxNSArMTM5OCwxNiBAQCBib29sIFNlbGVj
dG9yQ2hlY2tlcjo6bWF0Y2hIYXNQc2V1ZG9DbGFzcyhDaGVja2luZ0NvbnRleHQmIGNoZWNraW5n
Q29udGV4dCwgY29ucwogCiAgICAgYXV0byByZXN1bHQgPSBtYXRjaCgpOwogCi0gICAgaWYgKGNh
Y2hlZE1hdGNoKSB7Ci0gICAgICAgICpjYWNoZWRNYXRjaCA9IFsmXSB7Ci0gICAgICAgICAgICBp
ZiAocmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRvQ2xhc3NN
YXRjaDo6TWF0Y2hlczsKLSAgICAgICAgICAgIGlmIChtYXRjaGVkSW5zaWRlU2NvcGUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWlsczsKLSAg
ICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHNTdWJ0cmVl
OwotICAgICAgICB9KCk7Ci0gICAgfQorICAgIGF1dG8gbWF0Y2hUeXBlRm9yQ2FjaGUgPSBbJl0g
eworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1
ZG9DbGFzc01hdGNoOjpNYXRjaGVzOworICAgICAgICBpZiAobWF0Y2hlZEluc2lkZVNjb3BlKQor
ICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWlsczsKKyAg
ICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWlsc1N1YnRyZWU7Cisg
ICAgfTsKKworICAgIGlmIChjYWNoZSkKKyAgICAgICAgY2FjaGUtPmFkZChTdHlsZTo6bWFrZUhh
c1BzZXVkb0NsYXNzQ2FjaGVLZXkoZWxlbWVudCwgaGFzU2VsZWN0b3IpLCBtYXRjaFR5cGVGb3JD
YWNoZSgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
RmlsdGVyLmNwcAppbmRleCAwMTkxMzI2NGYwM2MwMTk1ZDExNjUzNWFmNDcxYmU5NTUyNDRkZGE5
Li5mOGYyY2VjMWNkYzI5NDQ2MWQyZDA1Mzc3N2QzNGUyZDBhZWNhNzJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGJvb2wgaXNF
eGNsdWRlZEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBuYW1l
ID09IEhUTUxOYW1lczo6Y2xhc3NBdHRyLT5sb2NhbE5hbWUoKSB8fCBuYW1lID09IEhUTUxOYW1l
czo6aWRBdHRyLT5sb2NhbE5hbWUoKSB8fCBuYW1lID09IEhUTUxOYW1lczo6c3R5bGVBdHRyLT5s
b2NhbE5hbWUoKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RFbGVtZW50SWRlbnRp
Zmllckhhc2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8dW5zaWduZWQsIDQ+JiBp
ZGVudGlmaWVySGFzaGVzKQordm9pZCBTZWxlY3RvckZpbHRlcjo6Y29sbGVjdEVsZW1lbnRJZGVu
dGlmaWVySGFzaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFZlY3Rvcjx1bnNpZ25lZCwgND4m
IGlkZW50aWZpZXJIYXNoZXMpCiB7CiAgICAgQXRvbVN0cmluZyB0YWdMb3dlcmNhc2VMb2NhbE5h
bWUgPSBlbGVtZW50LmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAg
aWRlbnRpZmllckhhc2hlcy5hcHBlbmQodGFnTG93ZXJjYXNlTG9jYWxOYW1lLmltcGwoKS0+ZXhp
c3RpbmdIYXNoKCkgKiBUYWdOYW1lU2FsdCk7CkBAIC0xMzQsMTUgKzEzNCw3IEBAIHZvaWQgU2Vs
ZWN0b3JGaWx0ZXI6OnBvcFBhcmVudHNVbnRpbChFbGVtZW50KiBwYXJlbnQpCiAgICAgfQogfQog
Ci1zdHJ1Y3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMgewotICAgIHVzaW5nIEhhc2hWZWN0b3Ig
PSBWZWN0b3I8dW5zaWduZWQsIDg+OwotICAgIEhhc2hWZWN0b3IgaWRzOwotICAgIEhhc2hWZWN0
b3IgY2xhc3NlczsKLSAgICBIYXNoVmVjdG9yIHRhZ3M7Ci0gICAgSGFzaFZlY3RvciBhdHRyaWJ1
dGVzOwotfTsKLQotc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2go
Q29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmIGNvbGxlY3RlZEhhc2hlcywgY29uc3QgQ1NTU2VsZWN0
b3ImIHNlbGVjdG9yKQordm9pZCBTZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNpbXBsZVNlbGVjdG9y
SGFzaChDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVkSGFzaGVzLCBjb25zdCBDU1NT
ZWxlY3RvciYgc2VsZWN0b3IpCiB7CiAgICAgc3dpdGNoIChzZWxlY3Rvci5tYXRjaCgpKSB7CiAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6SWQ6CkBAIC0xNzYsNyArMTY4LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2goQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMm
IGNvbGxlY3RlZEgKICAgICB9CiB9CiAKLXN0YXRpYyBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyBj
b2xsZWN0U2VsZWN0b3JIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3ImIHJpZ2h0bW9zdFNlbGVjdG9y
KQorYXV0byBTZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNlbGVjdG9ySGFzaGVzKGNvbnN0IENTU1Nl
bGVjdG9yJiByaWdodG1vc3RTZWxlY3RvcikgLT4gQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMKIHsK
ICAgICBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyBjb2xsZWN0ZWRIYXNoZXM7CiAKQEAgLTIxMCw5
ICsyMDIsOSBAQCBzdGF0aWMgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMgY29sbGVjdFNlbGVjdG9y
SGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yJiByaWdodG1vcwogICAgIHJldHVybiBjb2xsZWN0ZWRI
YXNoZXM7CiB9CiAKLXN0YXRpYyBTZWxlY3RvckZpbHRlcjo6SGFzaGVzIGNob29zZVNlbGVjdG9y
SGFzaGVzRm9yRmlsdGVyKGNvbnN0IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBjb2xsZWN0ZWRT
ZWxlY3Rvckhhc2hlcykKK2F1dG8gU2VsZWN0b3JGaWx0ZXI6OmNob29zZVNlbGVjdG9ySGFzaGVz
Rm9yRmlsdGVyKGNvbnN0IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBjb2xsZWN0ZWRTZWxlY3Rv
ckhhc2hlcykgLT4gSGFzaGVzCiB7Ci0gICAgU2VsZWN0b3JGaWx0ZXI6Okhhc2hlcyByZXN1bHRI
YXNoZXM7CisgICAgSGFzaGVzIHJlc3VsdEhhc2hlczsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAKICAgICBhdXRvIGFkZElmTmV3ID0gWyZdICh1bnNpZ25lZCBoYXNoKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckZpbHRlci5oCmluZGV4IGE4NDc5NzQ2MDczNGNjZGIxNGNiNzc1ZTQyZGEyNmY4
ZDUwZDFlYzEuLjA0ZWM1MzcwMjMxNTcxMDJiZTA2MTJkNWIxOTk2NzdkMDFlNGY1NjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oCkBAIC01MCw4ICs1MCwyMSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBmYXN0UmVqZWN0U2VsZWN0b3IoY29uc3QgSGFzaGVzJikgY29uc3Q7CiAgICAgc3Rh
dGljIEhhc2hlcyBjb2xsZWN0SGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yJik7CiAKKyAgICBzdGF0
aWMgdm9pZCBjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMoY29uc3QgRWxlbWVudCYsIFZl
Y3Rvcjx1bnNpZ25lZCwgND4mKTsKKworICAgIHN0cnVjdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hl
cyB7CisgICAgICAgIHVzaW5nIEhhc2hWZWN0b3IgPSBWZWN0b3I8dW5zaWduZWQsIDg+OworICAg
ICAgICBIYXNoVmVjdG9yIGlkczsKKyAgICAgICAgSGFzaFZlY3RvciBjbGFzc2VzOworICAgICAg
ICBIYXNoVmVjdG9yIHRhZ3M7CisgICAgICAgIEhhc2hWZWN0b3IgYXR0cmlidXRlczsKKyAgICB9
OworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2goQ29sbGVjdGVkU2Vs
ZWN0b3JIYXNoZXMmLCBjb25zdCBDU1NTZWxlY3RvciYpOworCiBwcml2YXRlOgogICAgIHZvaWQg
aW5pdGlhbGl6ZVBhcmVudFN0YWNrKEVsZW1lbnQmIHBhcmVudCk7CisgICAgc3RhdGljIENvbGxl
Y3RlZFNlbGVjdG9ySGFzaGVzIGNvbGxlY3RTZWxlY3Rvckhhc2hlcyhjb25zdCBDU1NTZWxlY3Rv
ciYgcmlnaHRtb3N0U2VsZWN0b3IpOworICAgIHN0YXRpYyBIYXNoZXMgY2hvb3NlU2VsZWN0b3JI
YXNoZXNGb3JGaWx0ZXIoY29uc3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmKTsKIAogICAgIHN0
cnVjdCBQYXJlbnRTdGFja0ZyYW1lIHsKICAgICAgICAgUGFyZW50U3RhY2tGcmFtZSgpIDogZWxl
bWVudCgwKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1NlbGVjdG9y
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1NlbGVjdG9yRmlsdGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMjZmMjgwMTMxN2UwZjlkNTU0ZmJjYjQ2NWUwZGZhYzg2M2Y5NDNmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSGFzU2VsZWN0b3JGaWx0ZXIuY3Bw
CkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJIYXNTZWxlY3RvckZpbHRlci5oIgorCisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKKyNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZTo6U3R5bGUgeworCisvLyBGSVhNRTogU3VwcG9ydCBhZGRp
dGlvbmFsIHBzZXVkby1jbGFzc2VzLgorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBIb3ZlclNh
bHQgPSAxMDE7CisKK0hhc1NlbGVjdG9yRmlsdGVyOjpIYXNTZWxlY3RvckZpbHRlcihjb25zdCBF
bGVtZW50JiBlbGVtZW50LCBUeXBlIHR5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKK3sKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFR5cGU6OkRlc2NlbmRhbnRzOgorICAgICAgICBmb3Ig
KGF1dG8mIGRlc2NlbmRhbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihlbGVtZW50KSkK
KyAgICAgICAgICAgIGFkZChkZXNjZW5kYW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBU
eXBlOjpDaGlsZHJlbjoKKyAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZUeXBl
PEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgYWRkKGNoaWxkKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCithdXRvIEhhc1NlbGVjdG9yRmlsdGVyOjp0eXBlRm9yTWF0Y2hFbGVt
ZW50KE1hdGNoRWxlbWVudCBtYXRjaEVsZW1lbnQpIC0+IHN0ZDo6b3B0aW9uYWw8VHlwZT4KK3sK
KyAgICBzd2l0Y2ggKG1hdGNoRWxlbWVudCkgeworICAgIGNhc2UgTWF0Y2hFbGVtZW50OjpIYXND
aGlsZDoKKyAgICAgICAgcmV0dXJuIFR5cGU6OkNoaWxkcmVuOworICAgIGNhc2UgTWF0Y2hFbGVt
ZW50OjpIYXNEZXNjZW5kYW50OgorICAgICAgICByZXR1cm4gVHlwZTo6RGVzY2VuZGFudHM7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cit9CisKK2F1dG8gSGFzU2Vs
ZWN0b3JGaWx0ZXI6Om1ha2VLZXkoY29uc3QgQ1NTU2VsZWN0b3ImIGhhc1NlbGVjdG9yKSAtPiBL
ZXkKK3sKKyAgICBTZWxlY3RvckZpbHRlcjo6Q29sbGVjdGVkU2VsZWN0b3JIYXNoZXMgaGFzaGVz
OworICAgIGJvb2wgaGFzSG92ZXJJbkNvbXBvdW5kID0gZmFsc2U7CisgICAgZm9yIChhdXRvKiBz
aW1wbGVTZWxlY3RvciA9ICZoYXNTZWxlY3Rvcjsgc2ltcGxlU2VsZWN0b3I7IHNpbXBsZVNlbGVj
dG9yID0gc2ltcGxlU2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBpZiAoc2ltcGxl
U2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzICYmIHNpbXBsZVNl
bGVjdG9yLT5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIb3Zl
cikKKyAgICAgICAgICAgIGhhc0hvdmVySW5Db21wb3VuZCA9IHRydWU7CisgICAgICAgIFNlbGVj
dG9yRmlsdGVyOjpjb2xsZWN0U2ltcGxlU2VsZWN0b3JIYXNoKGhhc2hlcywgKnNpbXBsZVNlbGVj
dG9yKTsKKyAgICAgICAgaWYgKCFoYXNoZXMuaWRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBpZiAoc2ltcGxlU2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NTU2VsZWN0
b3I6OlN1YnNlbGVjdG9yKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgYXV0byBw
aWNrS2V5ID0gWyZdKGF1dG8mIGhhc2hWZWN0b3IpIC0+IEtleSB7CisgICAgICAgIGlmIChoYXNo
VmVjdG9yLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoaGFz
SG92ZXJJbkNvbXBvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGhhc2hWZWN0b3JbMF0gKiBIb3Zl
clNhbHQ7CisgICAgICAgIHJldHVybiBoYXNoVmVjdG9yWzBdOworICAgIH07CisKKyAgICBpZiAo
YXV0byBrZXkgPSBwaWNrS2V5KGhhc2hlcy5pZHMpKQorICAgICAgICByZXR1cm4ga2V5OworICAg
IGlmIChhdXRvIGtleSA9IHBpY2tLZXkoaGFzaGVzLmNsYXNzZXMpKQorICAgICAgICByZXR1cm4g
a2V5OworICAgIGlmIChhdXRvIGtleSA9IHBpY2tLZXkoaGFzaGVzLmF0dHJpYnV0ZXMpKQorICAg
ICAgICByZXR1cm4ga2V5OworICAgIHJldHVybiBwaWNrS2V5KGhhc2hlcy50YWdzKTsKK30KKwor
dm9pZCBIYXNTZWxlY3RvckZpbHRlcjo6YWRkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7Cisg
ICAgVmVjdG9yPHVuc2lnbmVkLCA0PiBlbGVtZW50SGFzaGVzOworICAgIFNlbGVjdG9yRmlsdGVy
Ojpjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMoZWxlbWVudCwgZWxlbWVudEhhc2hlcyk7
CisKKyAgICBmb3IgKGF1dG8gaGFzaCA6IGVsZW1lbnRIYXNoZXMpCisgICAgICAgIG1fZmlsdGVy
LmFkZChoYXNoKTsKKworICAgIGlmIChlbGVtZW50LmhvdmVyZWQoKSkgeworICAgICAgICBmb3Ig
KGF1dG8gaGFzaCA6IGVsZW1lbnRIYXNoZXMpCisgICAgICAgICAgICBtX2ZpbHRlci5hZGQoaGFz
aCAqIEhvdmVyU2FsdCk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9IYXNTZWxlY3RvckZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSGFzU2Vs
ZWN0b3JGaWx0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzg3NWUzMmM1MDk0ZDA3ODQwOWZlZjAwNjczNWRi
YzY3YjZlNjVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSGFzU2Vs
ZWN0b3JGaWx0ZXIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvQmxvb21GaWx0ZXIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFN0eWxlIHsKKworZW51bSBjbGFz
cyBNYXRjaEVsZW1lbnQgOiB1aW50OF90OworCitjbGFzcyBIYXNTZWxlY3RvckZpbHRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBUeXBl
IDogdWludDhfdCB7IENoaWxkcmVuLCBEZXNjZW5kYW50cyB9OworICAgIEhhc1NlbGVjdG9yRmls
dGVyKGNvbnN0IEVsZW1lbnQmLCBUeXBlKTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHR5cGVGb3JNYXRj
aEVsZW1lbnQoTWF0Y2hFbGVtZW50KTsKKworICAgIHVzaW5nIEtleSA9IHVuc2lnbmVkOworICAg
IHN0YXRpYyBLZXkgbWFrZUtleShjb25zdCBDU1NTZWxlY3RvciYgaGFzU2VsZWN0b3IpOworCisg
ICAgYm9vbCByZWplY3QoY29uc3QgQ1NTU2VsZWN0b3ImIGhhc1NlbGVjdG9yKSBjb25zdCB7IHJl
dHVybiByZWplY3QobWFrZUtleShoYXNTZWxlY3RvcikpOyB9CisgICAgYm9vbCByZWplY3QoS2V5
IGtleSkgY29uc3QgeyByZXR1cm4gIW1fZmlsdGVyLm1heUNvbnRhaW4oa2V5KTsgfQorCisKK3By
aXZhdGU6CisgICAgdm9pZCBhZGQoY29uc3QgRWxlbWVudCYpOworCisgICAgY29uc3QgVHlwZSBt
X3R5cGU7CisgICAgQmxvb21GaWx0ZXI8MTQ+IG1fZmlsdGVyOworfTsKKworfQorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JNYXRjaGluZ1N0YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TZWxlY3Rvck1hdGNoaW5nU3RhdGUuaAppbmRleCA0MjlhYjk2Y2Qw
ZTI3MTEyOTFhYjkzZmYyOTEzN2RkNmIxZDkwNzMzLi4yYjUzY2QzYmFiZjY0OGIzZTdlY2RhMjk2
ZTdiOWIyZjQyNTM4OTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TZWxlY3Rv
ck1hdGNoaW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TZWxlY3Rvck1hdGNo
aW5nU3RhdGUuaApAQCAtMjQsMjMgKzI0LDMyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiSGFzU2VsZWN0b3JGaWx0ZXIuaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlOjpTdHlsZSB7CiAKLXVz
aW5nIEhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkgPSBzdGQ6OnBhaXI8Y29uc3QgQ1NTU2VsZWN0b3Iq
LCBjb25zdCBFbGVtZW50Kj47Cit1c2luZyBIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5ID0gc3RkOjpw
YWlyPGNvbnN0IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxlY3Rvcio+OwordXNpbmcgSGFzUHNldWRv
Q2xhc3NGaWx0ZXJLZXkgPSBzdGQ6OnBhaXI8Y29uc3QgRWxlbWVudCosIHVpbnQ4X3Q+OwogCiBl
bnVtIGNsYXNzIEhhc1BzZXVkb0NsYXNzTWF0Y2ggOiB1aW50OF90IHsgTm9uZSwgTWF0Y2hlcywg
RmFpbHMsIEZhaWxzU3VidHJlZSB9OwogCiBzdHJ1Y3QgU2VsZWN0b3JNYXRjaGluZ1N0YXRlIHsK
ICAgICBTZWxlY3RvckZpbHRlciBzZWxlY3RvckZpbHRlcjsKKwogICAgIEhhc2hNYXA8SGFzUHNl
dWRvQ2xhc3NDYWNoZUtleSwgSGFzUHNldWRvQ2xhc3NNYXRjaD4gaGFzUHNldWRvQ2xhc3NNYXRj
aENhY2hlOworICAgIEhhc2hNYXA8SGFzUHNldWRvQ2xhc3NGaWx0ZXJLZXksIHN0ZDo6dW5pcXVl
X3B0cjxIYXNTZWxlY3RvckZpbHRlcj4+IGhhc1BzZXVkb0NsYXNzU2VsZWN0b3JGaWx0ZXJzOwog
fTsKIAotaW5saW5lIEhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkgbWFrZUhhc1BzZXVkb0NsYXNzQ2Fj
aGVLZXkoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50JiBlbGVtZW50
KQoraW5saW5lIEhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkgbWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVL
ZXkoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yKQor
eworICAgIHJldHVybiB7ICZlbGVtZW50LCAmc2VsZWN0b3IgfTsKK30KKworaW5saW5lIEhhc1Bz
ZXVkb0NsYXNzRmlsdGVyS2V5IG1ha2VIYXNQc2V1ZG9DbGFzc0ZpbHRlcktleShjb25zdCBFbGVt
ZW50JiBlbGVtZW50LCBIYXNTZWxlY3RvckZpbHRlcjo6VHlwZSB0eXBlKQogewotICAgIHJldHVy
biB7ICZzZWxlY3RvciwgJmVsZW1lbnQgfTsKKyAgICByZXR1cm4geyAmZWxlbWVudCwgc3RhdGlj
X2Nhc3Q8dWludDhfdD4odHlwZSkgfTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447247</attachid>
            <date>2021-12-15 09:51:49 -0800</date>
            <delta_ts>2021-12-15 10:00:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234341-20211215195148.patch</filename>
            <type>text/plain</type>
            <size>25916</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JmMDE5YzZlNDEzZTQ2
ZDYwMGFlOWM2OWNjNTkzZjcyMGQ5YmYzNi4uYjM1NTExY2EzNzEzZmQ2YWI0YWFkMWY0MDAwNGM5
ZGZhZjQwMzgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEyLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gVXNlIEJsb29tIGZpbHRlciB0byBxdWlja2x5IHJlamVjdCA6aGFzKCkgc2VsZWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzNDEK
KworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgV2UgY2FuIGRy
YW1hdGljYWxseSBzcGVlZCB1cCBjYXNlcyB3aGVyZSB0aGVyZSBhcmUgbWFueSA6aGFzIHJ1bGVz
LCBtb3N0IG9mIHdoaWNoIGRvbid0IG1hdGNoIHRoZWlyIGFyZ3VtZW50CisgICAgICAgIGJ5IGJ1
aWxkaW5nIGEgQmxvb20gZmlsdGVyIGRlc2NyaWJpbmcgdGhlIGZlYXR1cmVzIG9mIHRoZSBzdWJ0
cmVlLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzIGNv
bnN0KToKKworICAgICAgICBCdWlsZCBhbmQgY2FjaGUgSGFzU2VsZWN0b3JGaWx0ZXIgcGVyIGVs
ZW1lbnQvZmlsdGVyIHR5cGUuIEl0IHdpbGwgYmUgY29uc3RydWN0ZWQgb25seSBpZiBtdWx0aXBs
ZSA6aGFzKCkKKyAgICAgICAgc2VsZWN0b3JzIGFyZSB0ZXN0ZWQgZm9yIHRoZSBzYW1lIGVsZW1l
bnQgKG90aGVyd2lzZSB0aGUgcmVndWxhciBtYXRjaCBjYWNoZSBpcyBtb3JlIGVmZmljaWVudCku
CisgICAgICAgIFVzZSBpdCB0byBxdWlrbHkgcmVqZWN0IHNlbGVjdG9ycy4KKyAgICAgICAgQWxz
byBhZGQgYSBiYXNpYyBpbml0YWwgb3B0aW1pemF0aW9uIHRvIGJhaWwgb3V0IGlmIHRoZXJlIGFy
ZSBubyBjaGlsZC9zaWJsaW5nIGVsZW1lbnRzIHRoYXQgY291bGQgbWF0Y2guCisKKyAgICAgICAg
KiBjc3MvU2VsZWN0b3JGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JGaWx0
ZXI6OmNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaCk6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNlbGVjdG9ySGFzaGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjaG9vc2VTZWxlY3Rvckhhc2hlc0ZvckZpbHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2VsZWN0b3JIYXNoZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y2hvb3NlU2VsZWN0b3JIYXNoZXNGb3JGaWx0ZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5oOgorICAgICAgICAqIHN0eWxlL0hhc1NlbGVj
dG9yRmlsdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0
b3JGaWx0ZXI6Okhhc1NlbGVjdG9yRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpI
YXNTZWxlY3RvckZpbHRlcjo6dHlwZUZvck1hdGNoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI6Om1ha2VLZXkpOgorCisgICAgICAgIFRoZSBrZXkg
Y29uc2lzdHMgb2YgdGhlIG1vc3Qgc3BlY2lmaWMgc3RyaW5nIGluIHRoZSByaWdodG1vc3QgY29t
cG91bmQgb2YgdGhlIHNlbGVjdG9yIGFsb25nIHdpdGgKKyAgICAgICAgOmhvdmVyIHBzZXVkbyBj
bGFzcywgaWYgYW55LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0
ZXI6OmFkZCk6CisKKyAgICAgICAgQWRkIGFuIEVsZW1lbnQgdG8gdGhlIGZpbHRlci4KKyAgICAg
ICAgVGhlIGZlYXR1cmVzIGNvbGxlY3RlZCBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSByZWd1bGFy
IHNlbGVjdG9yIGZpbHRlciwgcGx1cyBwZXJtdXRhdGlvbnMgd2l0aAorICAgICAgICA6aG92ZXIg
cHNldWRvLWNsYXNzIGlmIGl0IHdvdWxkIG1hdGNoLgorCisgICAgICAgICogc3R5bGUvSGFzU2Vs
ZWN0b3JGaWx0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JN
YXRjaGluZ1N0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0
ZXI6OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmls
dGVyOjpyZWplY3QgY29uc3QpOgorCisgICAgICAgIEFkZCBIYXNTZWxlY3RvckZpbHRlciB3aGlj
aCB1c2VzIG5vbi1jb3VudGluZyBCbG9vbUZpbHRlciBpbnRlcm5hbGx5LiBUaGUgc2l6ZSBvZiB0
aGUgZmlsdGVyIGlzIDUxMiBieXRlcy4KKworICAgICAgICAqIHN0eWxlL1NlbGVjdG9yTWF0Y2hp
bmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc1Nl
bGVjdG9yRmlsdGVyS2V5KToKKwogMjAyMS0xMi0xNCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgd2ViIHB1c2ggbWVzc2FnZSBkZWNyeXB0aW9uIHJvdXRpbmVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDY0MDk3MjdlYTQ4MTNjYjJkYzhhZmVjNDAzNmE3OGZhYzM1YzE5NmYu
LmZlYzE3YWNmZjBlZDQ1NTdiZTYwYTE1ZTg1OGI4NmIzNThjNWI1MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC0yNTQzLDYgKzI1NDMsNyBAQCBzdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwCiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKIHN0eWxlL0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcAogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCitzdHlsZS9I
YXNTZWxlY3RvckZpbHRlci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5
bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAogc3R5bGUvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0NzNiNzg5YjQ0M2UyODA4ZmVlYzNiMTExYjJlNmIxZTQ2N2I0MzRlLi45MjA3YjM0
NmZlZjI3Yjk4MGY5MTg3ZjBiNGMxOWY2M2E2ZTQ1MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Mzg0LDYgKzUzODQsNyBA
QAogCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RThC
NEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICovOyB9
OwogCQlFNEU4QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOEI0RjIy
MTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5NEQ2MTIyRkYxNThBMDBE
RDE5MUYgLyogTGVnYWN5TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIExlZ2FjeUxpbmVM
YXlvdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFNEVEM0VDQzI3NjhBNTFEMDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RUQzRUNBMjc2OEE1MUMw
MEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oICovOyB9OwogCQlFNEYwQkUzMTI1NzEyRjZF
MDA5RTc0MzEgLyogQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RjBCRTJFMjU3MTBBNzUwMDlFNzQzMSAvKiBDYXJl
dFJlY3RDb21wdXRhdGlvbi5oICovOyB9OwogCQlFNEYzOEQxQjI2MjZGMTNCMDA3QjEwNjQgLyog
RGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEYzOEQxOTI2MjZGMTNCMDA3QjEwNjQgLyogRGVmYXVsdFJl
c291cmNlTG9hZFByaW9yaXR5LmggKi87IH07CiAJCUU0RjgxOUM2MjZGQjRFQkYwMDk0RTE2MiAv
KiBJbmxpbmVCb3hQYWludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEY4MTlDNTI2RkI0RUJGMDA5NEUxNjIgLyogSW5saW5lQm94UGFpbnRlci5o
ICovOyB9OwpAQCAtMTc0NjQsNiArMTc0NjUsOCBAQAogCQlFNEU4QjRFRDIxNkI3OUY0MDBCODgz
NEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4QjRGMDIxNkI4QjVGMDBCODgzNEQgLyogRm9udENh
c2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhc2NhZGVEZXNjcmlwdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEVEM0VDQTI3NjhBNTFDMDBGMTdBQzgg
LyogSGFzU2VsZWN0b3JGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGFzU2VsZWN0b3JGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRFRDNF
Q0QyNzY4QTY4ODAwRjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhhc1NlbGVjdG9yRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTRGMEJFMkUyNTcxMEE3NTAwOUU3NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcmV0UmVjdENvbXB1dGF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RjBCRTMwMjU3MTBBNzYwMDlFNzQzMSAvKiBD
YXJldFJlY3RDb21wdXRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYXJldFJlY3RDb21wdXRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0RjM4RDE5MjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3Jp
dHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmYXVsdFJlc291cmNlTG9h
ZFByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTA3Niw2ICszMTA3
OSw4IEBACiAJCQkJRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uLmggKi8sCiAJCQkJRkJEQjYxOUExNkQ2MDMyQTAwQkIzMzk0IC8qIEVsZW1lbnRSdWxl
Q29sbGVjdG9yLmNwcCAqLywKIAkJCQlGQkRCNjE5RTE2RDYwMzY1MDBCQjMzOTQgLyogRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaCAqLywKKwkJCQlFNEVEM0VDRDI3NjhBNjg4MDBGMTdBQzggLyogSGFz
U2VsZWN0b3JGaWx0ZXIuY3BwICovLAorCQkJCUU0RUQzRUNBMjc2OEE1MUMwMEYxN0FDOCAvKiBI
YXNTZWxlY3RvckZpbHRlci5oICovLAogCQkJCUU0QTgxNEREMUM3MzM4RDEwMEJGODVBQyAvKiBJ
ZENoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCiAJCQkJRTRBODE0REYxQzczMzhFQjAwQkY4NUFD
IC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJMUMwMTA2RkUxOTI1OTRERjAwOEE0
MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8sCkBAIC0zMzEyMSw3ICszMzEyNiw2IEBA
CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKLQkJCQk3QjU4MkREODI3MTZGNTVCMDA0QjkyRDAgLyog
KG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZBNENFIC8qIEFi
b3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgwQTU2RTAwMTZB
NENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5NTIwN0Q2MzM0
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0NzAs
NiArMzQ0NzQsNyBAQAogCQkJCTI2RUE4OUE3MUI0RjJCNzUwMDhDNUZEMiAvKiBIYXNoYWJsZUFj
dGlvbkxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0ODJCNzQ2MTE5OEMzNTQwMEJGQjAwNSAv
KiBIYXNoQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzQ4QkUwMTJDQkYyREMw
MDFGQkE0MSAvKiBIYXNoVG9vbHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0RUQzRUNDMjc2OEE1
MUQwMEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Qz
RUVGM0QyNTc5OUZCNTAwNjU2M0JCIC8qIEhkck1ldGFkYXRhVHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0RBNTk1OTMyMTQ2REVDMzAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEQTU5NTk4MjE0NkRGNzgwMEE4NDE4NSAvKiBIRVZDVXRpbGl0aWVzQ29j
b2EuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApp
bmRleCAzYTIyMDU4NDhjMzk5YTI0OWYwMTYxOWE1MDUwYzcyODkzOTU2MDYwLi43OWQyMDI5MjRj
ZjliNmEzZWRjYjM5MGJlZmUyYzQyNTI0OTU2NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmNwcApAQCAtMTI0OSwxMiArMTI0OSwzMSBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6bWF0Y2hTZWxlY3Rvckxpc3QoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNv
bnN0CiAKIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENoZWNraW5n
Q29udGV4dCYgY2hlY2tpbmdDb250ZXh0LCBjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBD
U1NTZWxlY3RvciYgaGFzU2VsZWN0b3IpIGNvbnN0CiB7CisgICAgYXV0byBtYXRjaEVsZW1lbnQg
PSBTdHlsZTo6Y29tcHV0ZUhhc1BzZXVkb0NsYXNzTWF0Y2hFbGVtZW50KGhhc1NlbGVjdG9yKTsK
KworICAgIGF1dG8gY2FuTWF0Y2ggPSBbJl0geworICAgICAgICBzd2l0Y2ggKG1hdGNoRWxlbWVu
dCkgeworICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc0NoaWxkOgorICAgICAg
ICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc0Rlc2NlbmRhbnQ6CisgICAgICAgICAgICBy
ZXR1cm4gISFlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkKCk7CisgICAgICAgIGNhc2UgU3R5bGU6
Ok1hdGNoRWxlbWVudDo6SGFzU2libGluZzoKKyAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVt
ZW50OjpIYXNTaWJsaW5nRGVzY2VuZGFudDoKKyAgICAgICAgICAgIHJldHVybiAhIWVsZW1lbnQu
bmV4dEVsZW1lbnRTaWJsaW5nKCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgLy8gU2VlIGlmIHRoZXJlIGFyZSBh
bnkgZWxlbWVudHMgdGhhdCB0aGlzIDpoYXMoKSBzZWxlY3RvciBjb3VsZCBtYXRjaC4KKyAgICBp
ZiAoIWNhbk1hdGNoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGF1dG8qIGNhY2hl
ID0gY2hlY2tpbmdDb250ZXh0LnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSA/ICZjaGVja2luZ0NvbnRl
eHQuc2VsZWN0b3JNYXRjaGluZ1N0YXRlLT5oYXNQc2V1ZG9DbGFzc01hdGNoQ2FjaGUgOiBudWxs
cHRyOwogCi0gICAgU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2gqIGNhY2hlZE1hdGNoID0gbnVs
bHB0cjsKLSAgICBpZiAoY2FjaGUpIHsKLSAgICAgICAgY2FjaGVkTWF0Y2ggPSAmY2FjaGUtPmFk
ZChTdHlsZTo6bWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkoaGFzU2VsZWN0b3IsIGVsZW1lbnQp
LCBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6Tm9uZSkuaXRlcmF0b3ItPnZhbHVlOwotICAg
ICAgICBzd2l0Y2ggKCpjYWNoZWRNYXRjaCkgeworICAgIGF1dG8gY2hlY2tGb3JDYWNoZWRNYXRj
aCA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8Ym9vbD4geworICAgICAgICBpZiAoIWNhY2hlKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgc3dpdGNoIChjYWNoZS0+Z2V0KFN0eWxl
OjptYWtlSGFzUHNldWRvQ2xhc3NDYWNoZUtleShlbGVtZW50LCBoYXNTZWxlY3RvcikpKSB7CiAg
ICAgICAgIGNhc2UgU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6Ok1hdGNoZXM6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRj
aDo6RmFpbHM6CkBAIC0xMjYzLDYgKzEyODIsMzQgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1h
dGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNvbnMK
ICAgICAgICAgY2FzZSBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6Tm9uZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsKKworICAg
IC8vIFNlZSBpZiB3ZSBrbm93IHRoZSByZXN1bHQgYWxyZWFkeS4KKyAgICBpZiAoYXV0byBtYXRj
aCA9IGNoZWNrRm9yQ2FjaGVkTWF0Y2goKSkKKyAgICAgICAgcmV0dXJuICptYXRjaDsKKworICAg
IGF1dG8gZmlsdGVyRm9yRWxlbWVudCA9IFsmXSgpIC0+IFN0eWxlOjpIYXNTZWxlY3RvckZpbHRl
ciogeworICAgICAgICBpZiAoIWNoZWNraW5nQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3RhdGUp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYXV0byB0eXBlID0gU3R5bGU6
Okhhc1NlbGVjdG9yRmlsdGVyOjp0eXBlRm9yTWF0Y2hFbGVtZW50KG1hdGNoRWxlbWVudCk7Cisg
ICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBh
dXRvJiBmaWx0ZXJzTWFwID0gY2hlY2tpbmdDb250ZXh0LnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZS0+
aGFzUHNldWRvQ2xhc3NTZWxlY3RvckZpbHRlcnM7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
ZmlsdGVyc01hcC5hZGQoU3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc0ZpbHRlcktleShlbGVtZW50
LCAqdHlwZSksIHN0ZDo6dW5pcXVlX3B0cjxTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI+KCkpOwor
ICAgICAgICAvLyBPbmx5IGJ1aWxkIGEgZmlsdGVyIGlmIHRoZSBzYW1lIGVsZW1lbnQgZ2V0cyBj
aGVja2VkIHNlY29uZCB0aW1lIHdpdGggYSBkaWZmZXJlbnQgc2VsZWN0b3IgKG1pc3NlcyB0aGUg
bWF0Y2ggY2FjaGUpLgorICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUpCisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI+KGVsZW1lbnQsICp0eXBlKTsKKyAgICAgICAgcmV0
dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgfTsKKworICAgIC8vIENo
ZWNrIGlmIHRoZSBibG9vbSBmaWx0ZXIgcmVqZWN0cyB0aGlzIHNlbGVjdG9yCisgICAgaWYgKGF1
dG8qIGZpbHRlciA9IGZpbHRlckZvckVsZW1lbnQoKSkgeworICAgICAgICBpZiAoZmlsdGVyLT5y
ZWplY3QoaGFzU2VsZWN0b3IpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIFNlbGVjdG9yQ2hlY2tlciBoYXNDaGVja2VyKGVsZW1lbnQuZG9jdW1lbnQoKSk7CkBAIC0x
MjgzLDggKzEzMzAsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIYXNQc2V1ZG9DbGFz
cyhDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29ucwogICAgIGF1dG8gY2hlY2tE
ZXNjZW5kYW50cyA9IFsmXShjb25zdCBFbGVtZW50JiBkZXNjZW5kYW50Um9vdCkgewogICAgICAg
ICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihkZXNjZW5kYW50Um9v
dCkuYmVnaW4oKTsgaXQ7KSB7CiAgICAgICAgICAgICBhdXRvJiBkZXNjZW5kYW50ID0gKml0Owot
ICAgICAgICAgICAgaWYgKGNhY2hlKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHls
ZTo6bWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkoaGFzU2VsZWN0b3IsIGRlc2NlbmRhbnQpOwor
ICAgICAgICAgICAgaWYgKGNhY2hlICYmIGRlc2NlbmRhbnQuZmlyc3RFbGVtZW50Q2hpbGQoKSkg
eworICAgICAgICAgICAgICAgIGF1dG8ga2V5ID0gU3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc0Nh
Y2hlS2V5KGRlc2NlbmRhbnQsIGhhc1NlbGVjdG9yKTsKICAgICAgICAgICAgICAgICBpZiAoY2Fj
aGUtPmdldChrZXkpID09IFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWlsc1N1YnRyZWUp
IHsKICAgICAgICAgICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigp
OwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEzMDAsOCArMTM0Nyw2IEBAIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENoZWNraW5nQ29udGV4dCYg
Y2hlY2tpbmdDb250ZXh0LCBjb25zCiAgICAgfTsKIAogICAgIGF1dG8gbWF0Y2ggPSBbJl0gewot
ICAgICAgICBhdXRvIG1hdGNoRWxlbWVudCA9IFN0eWxlOjpjb21wdXRlSGFzUHNldWRvQ2xhc3NN
YXRjaEVsZW1lbnQoaGFzU2VsZWN0b3IpOwotCiAgICAgICAgIHN3aXRjaCAobWF0Y2hFbGVtZW50
KSB7CiAgICAgICAgIC8vIDpoYXMoPiAuY2hpbGQpCiAgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNo
RWxlbWVudDo6SGFzQ2hpbGQ6CkBAIC0xMzEyLDE4ICsxMzU3LDE3IEBAIGJvb2wgU2VsZWN0b3JD
aGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENoZWNraW5nQ29udGV4dCYgY2hlY2tpbmdDb250
ZXh0LCBjb25zCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgLy8gOmhhcyguZGVzY2VuZGFu
dCkKICAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVtZW50OjpIYXNEZXNjZW5kYW50OiB7Ci0g
ICAgICAgICAgICBpZiAoIWVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoY2FjaGUpIHsKICAgICAgICAgICAg
ICAgICAvLyBTZWUgaWYgd2UgYWxyZWFkeSBrbm93IHRoaXMgZGVzY2VuZGFudCBzZWxlY3RvciBk
b2Vzbid0IG1hdGNoIGluIHRoaXMgc3VidHJlZS4KICAgICAgICAgICAgICAgICBmb3IgKGF1dG8q
IGFuY2VzdG9yID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9
IGFuY2VzdG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBr
ZXkgPSBTdHlsZTo6bWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkoaGFzU2VsZWN0b3IsICphbmNl
c3Rvcik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8ga2V5ID0gU3R5bGU6Om1ha2VIYXNQc2V1
ZG9DbGFzc0NhY2hlS2V5KCphbmNlc3RvciwgaGFzU2VsZWN0b3IpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoY2FjaGUtPmdldChrZXkpID09IFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpG
YWlsc1N1YnRyZWUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoZWNrRGVzY2Vu
ZGFudHMoZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBzZXBhcmF0ZSBj
YXNlIGZvciBhZGphY2VudCBjb21iaW5hdG9yLgpAQCAtMTM1NCwxNSArMTM5OCwxNiBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIYXNQc2V1ZG9DbGFzcyhDaGVja2luZ0NvbnRleHQmIGNo
ZWNraW5nQ29udGV4dCwgY29ucwogCiAgICAgYXV0byByZXN1bHQgPSBtYXRjaCgpOwogCi0gICAg
aWYgKGNhY2hlZE1hdGNoKSB7Ci0gICAgICAgICpjYWNoZWRNYXRjaCA9IFsmXSB7Ci0gICAgICAg
ICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRv
Q2xhc3NNYXRjaDo6TWF0Y2hlczsKLSAgICAgICAgICAgIGlmIChtYXRjaGVkSW5zaWRlU2NvcGUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWls
czsKLSAgICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHNT
dWJ0cmVlOwotICAgICAgICB9KCk7Ci0gICAgfQorICAgIGF1dG8gbWF0Y2hUeXBlRm9yQ2FjaGUg
PSBbJl0geworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpI
YXNQc2V1ZG9DbGFzc01hdGNoOjpNYXRjaGVzOworICAgICAgICBpZiAobWF0Y2hlZEluc2lkZVNj
b3BlKQorICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWls
czsKKyAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWlsc1N1YnRy
ZWU7CisgICAgfTsKKworICAgIGlmIChjYWNoZSkKKyAgICAgICAgY2FjaGUtPmFkZChTdHlsZTo6
bWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkoZWxlbWVudCwgaGFzU2VsZWN0b3IpLCBtYXRjaFR5
cGVGb3JDYWNoZSgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yRmlsdGVyLmNwcAppbmRleCAwMTkxMzI2NGYwM2MwMTk1ZDExNjUzNWFmNDcxYmU5NTUy
NDRkZGE5Li5mOGYyY2VjMWNkYzI5NDQ2MWQyZDA1Mzc3N2QzNGUyZDBhZWNhNzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGJv
b2wgaXNFeGNsdWRlZEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogICAgIHJldHVy
biBuYW1lID09IEhUTUxOYW1lczo6Y2xhc3NBdHRyLT5sb2NhbE5hbWUoKSB8fCBuYW1lID09IEhU
TUxOYW1lczo6aWRBdHRyLT5sb2NhbE5hbWUoKSB8fCBuYW1lID09IEhUTUxOYW1lczo6c3R5bGVB
dHRyLT5sb2NhbE5hbWUoKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RFbGVtZW50
SWRlbnRpZmllckhhc2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8dW5zaWduZWQs
IDQ+JiBpZGVudGlmaWVySGFzaGVzKQordm9pZCBTZWxlY3RvckZpbHRlcjo6Y29sbGVjdEVsZW1l
bnRJZGVudGlmaWVySGFzaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgND4mIGlkZW50aWZpZXJIYXNoZXMpCiB7CiAgICAgQXRvbVN0cmluZyB0YWdMb3dlcmNhc2VM
b2NhbE5hbWUgPSBlbGVtZW50LmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
CiAgICAgaWRlbnRpZmllckhhc2hlcy5hcHBlbmQodGFnTG93ZXJjYXNlTG9jYWxOYW1lLmltcGwo
KS0+ZXhpc3RpbmdIYXNoKCkgKiBUYWdOYW1lU2FsdCk7CkBAIC0xMzQsMTUgKzEzNCw3IEBAIHZv
aWQgU2VsZWN0b3JGaWx0ZXI6OnBvcFBhcmVudHNVbnRpbChFbGVtZW50KiBwYXJlbnQpCiAgICAg
fQogfQogCi1zdHJ1Y3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMgewotICAgIHVzaW5nIEhhc2hW
ZWN0b3IgPSBWZWN0b3I8dW5zaWduZWQsIDg+OwotICAgIEhhc2hWZWN0b3IgaWRzOwotICAgIEhh
c2hWZWN0b3IgY2xhc3NlczsKLSAgICBIYXNoVmVjdG9yIHRhZ3M7Ci0gICAgSGFzaFZlY3RvciBh
dHRyaWJ1dGVzOwotfTsKLQotc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RTaW1wbGVTZWxlY3Rv
ckhhc2goQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmIGNvbGxlY3RlZEhhc2hlcywgY29uc3QgQ1NT
U2VsZWN0b3ImIHNlbGVjdG9yKQordm9pZCBTZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNpbXBsZVNl
bGVjdG9ySGFzaChDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVkSGFzaGVzLCBjb25z
dCBDU1NTZWxlY3RvciYgc2VsZWN0b3IpCiB7CiAgICAgc3dpdGNoIChzZWxlY3Rvci5tYXRjaCgp
KSB7CiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SWQ6CkBAIC0xNzYsNyArMTY4LDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2goQ29sbGVjdGVkU2VsZWN0b3JI
YXNoZXMmIGNvbGxlY3RlZEgKICAgICB9CiB9CiAKLXN0YXRpYyBDb2xsZWN0ZWRTZWxlY3Rvckhh
c2hlcyBjb2xsZWN0U2VsZWN0b3JIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3ImIHJpZ2h0bW9zdFNl
bGVjdG9yKQorYXV0byBTZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNlbGVjdG9ySGFzaGVzKGNvbnN0
IENTU1NlbGVjdG9yJiByaWdodG1vc3RTZWxlY3RvcikgLT4gQ29sbGVjdGVkU2VsZWN0b3JIYXNo
ZXMKIHsKICAgICBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyBjb2xsZWN0ZWRIYXNoZXM7CiAKQEAg
LTIxMCw5ICsyMDIsOSBAQCBzdGF0aWMgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMgY29sbGVjdFNl
bGVjdG9ySGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yJiByaWdodG1vcwogICAgIHJldHVybiBjb2xs
ZWN0ZWRIYXNoZXM7CiB9CiAKLXN0YXRpYyBTZWxlY3RvckZpbHRlcjo6SGFzaGVzIGNob29zZVNl
bGVjdG9ySGFzaGVzRm9yRmlsdGVyKGNvbnN0IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBjb2xs
ZWN0ZWRTZWxlY3Rvckhhc2hlcykKK2F1dG8gU2VsZWN0b3JGaWx0ZXI6OmNob29zZVNlbGVjdG9y
SGFzaGVzRm9yRmlsdGVyKGNvbnN0IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBjb2xsZWN0ZWRT
ZWxlY3Rvckhhc2hlcykgLT4gSGFzaGVzCiB7Ci0gICAgU2VsZWN0b3JGaWx0ZXI6Okhhc2hlcyBy
ZXN1bHRIYXNoZXM7CisgICAgSGFzaGVzIHJlc3VsdEhhc2hlczsKICAgICB1bnNpZ25lZCBpbmRl
eCA9IDA7CiAKICAgICBhdXRvIGFkZElmTmV3ID0gWyZdICh1bnNpZ25lZCBoYXNoKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oCmluZGV4IGE4NDc5NzQ2MDczNGNjZGIxNGNiNzc1ZTQy
ZGEyNmY4ZDUwZDFlYzEuLjA0ZWM1MzcwMjMxNTcxMDJiZTA2MTJkNWIxOTk2NzdkMDFlNGY1Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oCkBAIC01MCw4ICs1MCwyMSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBmYXN0UmVqZWN0U2VsZWN0b3IoY29uc3QgSGFzaGVzJikgY29uc3Q7CiAg
ICAgc3RhdGljIEhhc2hlcyBjb2xsZWN0SGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yJik7CiAKKyAg
ICBzdGF0aWMgdm9pZCBjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMoY29uc3QgRWxlbWVu
dCYsIFZlY3Rvcjx1bnNpZ25lZCwgND4mKTsKKworICAgIHN0cnVjdCBDb2xsZWN0ZWRTZWxlY3Rv
ckhhc2hlcyB7CisgICAgICAgIHVzaW5nIEhhc2hWZWN0b3IgPSBWZWN0b3I8dW5zaWduZWQsIDg+
OworICAgICAgICBIYXNoVmVjdG9yIGlkczsKKyAgICAgICAgSGFzaFZlY3RvciBjbGFzc2VzOwor
ICAgICAgICBIYXNoVmVjdG9yIHRhZ3M7CisgICAgICAgIEhhc2hWZWN0b3IgYXR0cmlidXRlczsK
KyAgICB9OworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2goQ29sbGVj
dGVkU2VsZWN0b3JIYXNoZXMmLCBjb25zdCBDU1NTZWxlY3RvciYpOworCiBwcml2YXRlOgogICAg
IHZvaWQgaW5pdGlhbGl6ZVBhcmVudFN0YWNrKEVsZW1lbnQmIHBhcmVudCk7CisgICAgc3RhdGlj
IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIGNvbGxlY3RTZWxlY3Rvckhhc2hlcyhjb25zdCBDU1NT
ZWxlY3RvciYgcmlnaHRtb3N0U2VsZWN0b3IpOworICAgIHN0YXRpYyBIYXNoZXMgY2hvb3NlU2Vs
ZWN0b3JIYXNoZXNGb3JGaWx0ZXIoY29uc3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmKTsKIAog
ICAgIHN0cnVjdCBQYXJlbnRTdGFja0ZyYW1lIHsKICAgICAgICAgUGFyZW50U3RhY2tGcmFtZSgp
IDogZWxlbWVudCgwKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1Nl
bGVjdG9yRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1NlbGVjdG9yRmlsdGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMjZmMjgwMTMxN2UwZjlkNTU0ZmJjYjQ2NWUwZGZhYzg2M2Y5NDNm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSGFzU2VsZWN0b3JGaWx0
ZXIuY3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJIYXNTZWxlY3RvckZpbHRlci5oIgorCisjaW5jbHVkZSAiRWxlbWVudEl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKKyNpbmNsdWRlICJTZWxlY3RvckZp
bHRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZTo6U3R5bGUgeworCisvLyBGSVhNRTogU3VwcG9y
dCBhZGRpdGlvbmFsIHBzZXVkby1jbGFzc2VzLgorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBI
b3ZlclNhbHQgPSAxMDE7CisKK0hhc1NlbGVjdG9yRmlsdGVyOjpIYXNTZWxlY3RvckZpbHRlcihj
b25zdCBFbGVtZW50JiBlbGVtZW50LCBUeXBlIHR5cGUpCisgICAgOiBtX3R5cGUodHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFR5cGU6OkRlc2NlbmRhbnRzOgorICAgICAg
ICBmb3IgKGF1dG8mIGRlc2NlbmRhbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihlbGVt
ZW50KSkKKyAgICAgICAgICAgIGFkZChkZXNjZW5kYW50KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBUeXBlOjpDaGlsZHJlbjoKKyAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVu
T2ZUeXBlPEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgYWRkKGNoaWxkKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCithdXRvIEhhc1NlbGVjdG9yRmlsdGVyOjp0eXBlRm9yTWF0
Y2hFbGVtZW50KE1hdGNoRWxlbWVudCBtYXRjaEVsZW1lbnQpIC0+IHN0ZDo6b3B0aW9uYWw8VHlw
ZT4KK3sKKyAgICBzd2l0Y2ggKG1hdGNoRWxlbWVudCkgeworICAgIGNhc2UgTWF0Y2hFbGVtZW50
OjpIYXNDaGlsZDoKKyAgICAgICAgcmV0dXJuIFR5cGU6OkNoaWxkcmVuOworICAgIGNhc2UgTWF0
Y2hFbGVtZW50OjpIYXNEZXNjZW5kYW50OgorICAgICAgICByZXR1cm4gVHlwZTo6RGVzY2VuZGFu
dHM7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cit9CisKK2F1dG8g
SGFzU2VsZWN0b3JGaWx0ZXI6Om1ha2VLZXkoY29uc3QgQ1NTU2VsZWN0b3ImIGhhc1NlbGVjdG9y
KSAtPiBLZXkKK3sKKyAgICBTZWxlY3RvckZpbHRlcjo6Q29sbGVjdGVkU2VsZWN0b3JIYXNoZXMg
aGFzaGVzOworICAgIGJvb2wgaGFzSG92ZXJJbkNvbXBvdW5kID0gZmFsc2U7CisgICAgZm9yIChh
dXRvKiBzaW1wbGVTZWxlY3RvciA9ICZoYXNTZWxlY3Rvcjsgc2ltcGxlU2VsZWN0b3I7IHNpbXBs
ZVNlbGVjdG9yID0gc2ltcGxlU2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBpZiAo
c2ltcGxlU2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzICYmIHNp
bXBsZVNlbGVjdG9yLT5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NIb3ZlcikKKyAgICAgICAgICAgIGhhc0hvdmVySW5Db21wb3VuZCA9IHRydWU7CisgICAgICAg
IFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0U2ltcGxlU2VsZWN0b3JIYXNoKGhhc2hlcywgKnNpbXBs
ZVNlbGVjdG9yKTsKKyAgICAgICAgaWYgKCFoYXNoZXMuaWRzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBpZiAoc2ltcGxlU2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NT
U2VsZWN0b3I6OlN1YnNlbGVjdG9yKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
YXV0byBwaWNrS2V5ID0gWyZdKGF1dG8mIGhhc2hWZWN0b3IpIC0+IEtleSB7CisgICAgICAgIGlm
IChoYXNoVmVjdG9yLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBp
ZiAoaGFzSG92ZXJJbkNvbXBvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGhhc2hWZWN0b3JbMF0g
KiBIb3ZlclNhbHQ7CisgICAgICAgIHJldHVybiBoYXNoVmVjdG9yWzBdOworICAgIH07CisKKyAg
ICBpZiAoYXV0byBrZXkgPSBwaWNrS2V5KGhhc2hlcy5pZHMpKQorICAgICAgICByZXR1cm4ga2V5
OworICAgIGlmIChhdXRvIGtleSA9IHBpY2tLZXkoaGFzaGVzLmNsYXNzZXMpKQorICAgICAgICBy
ZXR1cm4ga2V5OworICAgIGlmIChhdXRvIGtleSA9IHBpY2tLZXkoaGFzaGVzLmF0dHJpYnV0ZXMp
KQorICAgICAgICByZXR1cm4ga2V5OworICAgIHJldHVybiBwaWNrS2V5KGhhc2hlcy50YWdzKTsK
K30KKwordm9pZCBIYXNTZWxlY3RvckZpbHRlcjo6YWRkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQp
Cit7CisgICAgVmVjdG9yPHVuc2lnbmVkLCA0PiBlbGVtZW50SGFzaGVzOworICAgIFNlbGVjdG9y
RmlsdGVyOjpjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMoZWxlbWVudCwgZWxlbWVudEhh
c2hlcyk7CisKKyAgICBmb3IgKGF1dG8gaGFzaCA6IGVsZW1lbnRIYXNoZXMpCisgICAgICAgIG1f
ZmlsdGVyLmFkZChoYXNoKTsKKworICAgIGlmIChlbGVtZW50LmhvdmVyZWQoKSkgeworICAgICAg
ICBmb3IgKGF1dG8gaGFzaCA6IGVsZW1lbnRIYXNoZXMpCisgICAgICAgICAgICBtX2ZpbHRlci5h
ZGQoaGFzaCAqIEhvdmVyU2FsdCk7CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9IYXNTZWxlY3RvckZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
SGFzU2VsZWN0b3JGaWx0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTllODJhOWU3NmIxYjBmMmM5OTQ1MTQ4
MTVmZDNmNWMwZTk5NWJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
SGFzU2VsZWN0b3JGaWx0ZXIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvQmxvb21G
aWx0ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFN0eWxlIHsKKworZW51
bSBjbGFzcyBNYXRjaEVsZW1lbnQgOiB1aW50OF90OworCitjbGFzcyBIYXNTZWxlY3RvckZpbHRl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBjbGFz
cyBUeXBlIDogdWludDhfdCB7IENoaWxkcmVuLCBEZXNjZW5kYW50cyB9OworICAgIEhhc1NlbGVj
dG9yRmlsdGVyKGNvbnN0IEVsZW1lbnQmLCBUeXBlKTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFR5cGU+IHR5cGVG
b3JNYXRjaEVsZW1lbnQoTWF0Y2hFbGVtZW50KTsKKworICAgIHVzaW5nIEtleSA9IHVuc2lnbmVk
OworICAgIHN0YXRpYyBLZXkgbWFrZUtleShjb25zdCBDU1NTZWxlY3RvciYgaGFzU2VsZWN0b3Ip
OworCisgICAgYm9vbCByZWplY3QoY29uc3QgQ1NTU2VsZWN0b3ImIGhhc1NlbGVjdG9yKSBjb25z
dCB7IHJldHVybiByZWplY3QobWFrZUtleShoYXNTZWxlY3RvcikpOyB9CisgICAgYm9vbCByZWpl
Y3QoS2V5IGtleSkgY29uc3QgeyByZXR1cm4gIW1fZmlsdGVyLm1heUNvbnRhaW4oa2V5KTsgfQor
CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGQoY29uc3QgRWxlbWVudCYpOworCisgICAgY29uc3Qg
VHlwZSBtX3R5cGU7CisgICAgQmxvb21GaWx0ZXI8MTI+IG1fZmlsdGVyOworfTsKKworfQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JNYXRjaGluZ1N0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TZWxlY3Rvck1hdGNoaW5nU3RhdGUuaAppbmRleCA0Mjlh
Yjk2Y2QwZTI3MTEyOTFhYjkzZmYyOTEzN2RkNmIxZDkwNzMzLi4yYjUzY2QzYmFiZjY0OGIzZTdl
Y2RhMjk2ZTdiOWIyZjQyNTM4OTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
ZWxlY3Rvck1hdGNoaW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TZWxlY3Rv
ck1hdGNoaW5nU3RhdGUuaApAQCAtMjQsMjMgKzI0LDMyIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiSGFzU2VsZWN0b3JGaWx0ZXIuaCIKICNpbmNsdWRlICJTZWxlY3RvckZpbHRlci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlOjpTdHlsZSB7
CiAKLXVzaW5nIEhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkgPSBzdGQ6OnBhaXI8Y29uc3QgQ1NTU2Vs
ZWN0b3IqLCBjb25zdCBFbGVtZW50Kj47Cit1c2luZyBIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5ID0g
c3RkOjpwYWlyPGNvbnN0IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxlY3Rvcio+OwordXNpbmcgSGFz
UHNldWRvQ2xhc3NGaWx0ZXJLZXkgPSBzdGQ6OnBhaXI8Y29uc3QgRWxlbWVudCosIHVpbnQ4X3Q+
OwogCiBlbnVtIGNsYXNzIEhhc1BzZXVkb0NsYXNzTWF0Y2ggOiB1aW50OF90IHsgTm9uZSwgTWF0
Y2hlcywgRmFpbHMsIEZhaWxzU3VidHJlZSB9OwogCiBzdHJ1Y3QgU2VsZWN0b3JNYXRjaGluZ1N0
YXRlIHsKICAgICBTZWxlY3RvckZpbHRlciBzZWxlY3RvckZpbHRlcjsKKwogICAgIEhhc2hNYXA8
SGFzUHNldWRvQ2xhc3NDYWNoZUtleSwgSGFzUHNldWRvQ2xhc3NNYXRjaD4gaGFzUHNldWRvQ2xh
c3NNYXRjaENhY2hlOworICAgIEhhc2hNYXA8SGFzUHNldWRvQ2xhc3NGaWx0ZXJLZXksIHN0ZDo6
dW5pcXVlX3B0cjxIYXNTZWxlY3RvckZpbHRlcj4+IGhhc1BzZXVkb0NsYXNzU2VsZWN0b3JGaWx0
ZXJzOwogfTsKIAotaW5saW5lIEhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkgbWFrZUhhc1BzZXVkb0Ns
YXNzQ2FjaGVLZXkoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50JiBl
bGVtZW50KQoraW5saW5lIEhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkgbWFrZUhhc1BzZXVkb0NsYXNz
Q2FjaGVLZXkoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVj
dG9yKQoreworICAgIHJldHVybiB7ICZlbGVtZW50LCAmc2VsZWN0b3IgfTsKK30KKworaW5saW5l
IEhhc1BzZXVkb0NsYXNzRmlsdGVyS2V5IG1ha2VIYXNQc2V1ZG9DbGFzc0ZpbHRlcktleShjb25z
dCBFbGVtZW50JiBlbGVtZW50LCBIYXNTZWxlY3RvckZpbHRlcjo6VHlwZSB0eXBlKQogewotICAg
IHJldHVybiB7ICZzZWxlY3RvciwgJmVsZW1lbnQgfTsKKyAgICByZXR1cm4geyAmZWxlbWVudCwg
c3RhdGljX2Nhc3Q8dWludDhfdD4odHlwZSkgfTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447249</attachid>
            <date>2021-12-15 10:00:15 -0800</date>
            <delta_ts>2021-12-15 10:48:43 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234341-20211215200014.patch</filename>
            <type>text/plain</type>
            <size>25626</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNjE0ZjI1Y2ZmZjkx
YTAzZmM3MjYxZWI4N2QzOTMxNTFhOGI0Zi4uOWU3NTcwZGU1MTczOWY3ZDA1MGMyOTA3MjVhZTY3
Mzg4OTU0NjFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEyLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gVXNlIEJsb29tIGZpbHRlciB0byBxdWlja2x5IHJlamVjdCA6aGFzKCkgc2VsZWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzNDEK
KworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgV2UgY2FuIGRy
YW1hdGljYWxseSBzcGVlZCB1cCBjYXNlcyB3aGVyZSB0aGVyZSBhcmUgbWFueSA6aGFzIHJ1bGVz
LCBtb3N0IG9mIHdoaWNoIGRvbid0IG1hdGNoIHRoZWlyIGFyZ3VtZW50CisgICAgICAgIGJ5IGJ1
aWxkaW5nIGEgQmxvb20gZmlsdGVyIGRlc2NyaWJpbmcgdGhlIGZlYXR1cmVzIG9mIHRoZSBzdWJ0
cmVlLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzIGNv
bnN0KToKKworICAgICAgICBCdWlsZCBhbmQgY2FjaGUgSGFzU2VsZWN0b3JGaWx0ZXIgcGVyIGVs
ZW1lbnQvZmlsdGVyIHR5cGUuIEl0IHdpbGwgYmUgY29uc3RydWN0ZWQgb25seSBpZiBtdWx0aXBs
ZSA6aGFzKCkKKyAgICAgICAgc2VsZWN0b3JzIGFyZSB0ZXN0ZWQgZm9yIHRoZSBzYW1lIGVsZW1l
bnQgKG90aGVyd2lzZSB0aGUgcmVndWxhciBtYXRjaCBjYWNoZSBpcyBtb3JlIGVmZmljaWVudCku
CisgICAgICAgIFVzZSBpdCB0byBxdWlrbHkgcmVqZWN0IHNlbGVjdG9ycy4KKyAgICAgICAgQWxz
byBhZGQgYSBiYXNpYyBpbml0YWwgb3B0aW1pemF0aW9uIHRvIGJhaWwgb3V0IGlmIHRoZXJlIGFy
ZSBubyBjaGlsZC9zaWJsaW5nIGVsZW1lbnRzIHRoYXQgY291bGQgbWF0Y2guCisKKyAgICAgICAg
KiBjc3MvU2VsZWN0b3JGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JGaWx0
ZXI6OmNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaCk6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckZpbHRlcjo6Y29sbGVjdFNlbGVjdG9ySGFzaGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yRmlsdGVyOjpjaG9vc2VTZWxlY3Rvckhhc2hlc0ZvckZpbHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2VsZWN0b3JIYXNoZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Y2hvb3NlU2VsZWN0b3JIYXNoZXNGb3JGaWx0ZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5oOgorICAgICAgICAqIHN0eWxlL0hhc1NlbGVj
dG9yRmlsdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0
b3JGaWx0ZXI6Okhhc1NlbGVjdG9yRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpI
YXNTZWxlY3RvckZpbHRlcjo6dHlwZUZvck1hdGNoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXI6Om1ha2VLZXkpOgorCisgICAgICAgIFRoZSBrZXkg
Y29uc2lzdHMgb2YgdGhlIG1vc3Qgc3BlY2lmaWMgc3RyaW5nIGluIHRoZSByaWdodG1vc3QgY29t
cG91bmQgb2YgdGhlIHNlbGVjdG9yIGFsb25nIHdpdGgKKyAgICAgICAgOmhvdmVyIHBzZXVkbyBj
bGFzcywgaWYgYW55LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0
ZXI6OmFkZCk6CisKKyAgICAgICAgQWRkIGFuIEVsZW1lbnQgdG8gdGhlIGZpbHRlci4KKyAgICAg
ICAgVGhlIGZlYXR1cmVzIGNvbGxlY3RlZCBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSByZWd1bGFy
IHNlbGVjdG9yIGZpbHRlciwgcGx1cyBwZXJtdXRhdGlvbnMgd2l0aAorICAgICAgICA6aG92ZXIg
cHNldWRvLWNsYXNzIGlmIGl0IHdvdWxkIG1hdGNoLgorCisgICAgICAgICogc3R5bGUvSGFzU2Vs
ZWN0b3JGaWx0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JN
YXRjaGluZ1N0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SGFzU2VsZWN0b3JGaWx0
ZXI6OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmls
dGVyOjpyZWplY3QgY29uc3QpOgorCisgICAgICAgIEFkZCBIYXNTZWxlY3RvckZpbHRlciB3aGlj
aCB1c2VzIG5vbi1jb3VudGluZyBCbG9vbUZpbHRlciBpbnRlcm5hbGx5LiBUaGUgc2l6ZSBvZiB0
aGUgZmlsdGVyIGlzIDUxMiBieXRlcy4KKworICAgICAgICAqIHN0eWxlL1NlbGVjdG9yTWF0Y2hp
bmdTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc1Nl
bGVjdG9yRmlsdGVyS2V5KToKKwogMjAyMS0xMi0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUd2l0dGVyIHNjcm9sbCBzdHV0dGVyOiBlbnN1cmUg
dGhhdCBDQSBiYWNraW5nIHN0b3JlIGlzIGFsd2F5cyBkZWFsbG9jYXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggNjQwOTcyN2VhNDgxM2NiMmRjOGFmZWM0MDM2YTc4ZmFj
MzVjMTk2Zi4uZmVjMTdhY2ZmMGVkNDU1N2JlNjBhMTVlODU4Yjg2YjM1OGM1YjUyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTI1NDMsNiArMjU0Myw3IEBAIHN0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFs
aWRhdGlvbi5jcHAKIHN0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAK
K3N0eWxlL0hhc1NlbGVjdG9yRmlsdGVyLmNwcAogc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwCiBzdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCiBzdHlsZS9JbnNwZWN0b3JDU1NPTVdy
YXBwZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGQ2NmE2ZDFjY2VkZjZlYTViMDE3NWVjNzRiNWZlNmVkMjA5NjEwYzMu
LjIxMjg1MjY0NTZhOTg0YjE3YzVmNjE4MTljMTE5YzUwMTI2N2RjOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzODQsNiAr
NTM4NCw3IEBACiAJCUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJh
c2VDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRFOEI0RUEyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmggKi87IH07CiAJCUU0RThCNEY1MjE2Qjk1NjUwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEU4QjRGMjIxNkI4QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTk0RDYxMjJG
RjE1OEEwMEREMTkxRiAvKiBMZWdhY3lMaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEExQUM3ODIyRkFGRDUwMDAxN0I3NUIgLyogTGVn
YWN5TGluZUxheW91dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUU0RUQzRUNDMjc2OEE1MUQwMEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFRDNFQ0Ey
NzY4QTUxQzAwRjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmggKi87IH07CiAJCUU0RjBCRTMx
MjU3MTJGNkUwMDlFNzQzMSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRGMEJFMkUyNTcxMEE3NTAwOUU3NDMx
IC8qIENhcmV0UmVjdENvbXB1dGF0aW9uLmggKi87IH07CiAJCUU0RjM4RDFCMjYyNkYxM0IwMDdC
MTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RjM4RDE5MjYyNkYxM0IwMDdCMTA2NCAvKiBE
ZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCAqLzsgfTsKIAkJRTRGODE5QzYyNkZCNEVCRjAw
OTRFMTYyIC8qIElubGluZUJveFBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0RjgxOUM1MjZGQjRFQkYwMDk0RTE2MiAvKiBJbmxpbmVCb3hQ
YWludGVyLmggKi87IH07CkBAIC0xNzQ2Niw2ICsxNzQ2Nyw4IEBACiAJCUU0RThCNEVEMjE2Qjc5
RjQwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RThCNEYwMjE2QjhCNUYwMEI4ODM0RCAv
KiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNEU4QjRGMjIxNkI4QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlw
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0RUQzRUNBMjc2OEE1MUMw
MEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIYXNTZWxlY3RvckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFNEVEM0VDRDI3NjhBNjg4MDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSGFzU2VsZWN0b3JGaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNEYwQkUyRTI1NzEwQTc1MDA5RTc0MzEgLyogQ2FyZXRSZWN0Q29tcHV0YXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FyZXRSZWN0Q29tcHV0YXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRGMEJFMzAyNTcxMEE3NjAwOUU3
NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhcmV0UmVjdENvbXB1dGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRGMzhEMTkyNjI2RjEzQjAwN0IxMDY0IC8qIERlZmF1bHRSZXNvdXJjZUxv
YWRQcmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZhdWx0UmVz
b3VyY2VMb2FkUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMDgw
LDYgKzMxMDgzLDggQEAKIAkJCQlFNEE4MTREMzFDNkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlGQkRCNjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxl
bWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLAogCQkJCUZCREI2MTlFMTZENjAzNjUwMEJCMzM5NCAv
KiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oICovLAorCQkJCUU0RUQzRUNEMjc2OEE2ODgwMEYxN0FD
OCAvKiBIYXNTZWxlY3RvckZpbHRlci5jcHAgKi8sCisJCQkJRTRFRDNFQ0EyNzY4QTUxQzAwRjE3
QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmggKi8sCiAJCQkJRTRBODE0REQxQzczMzhEMTAwQkY4
NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTRERjFDNzMzOEVC
MDBCRjg1QUMgLyogSWRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQkxQzAxMDZGRTE5MjU5
NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmNwcCAqLywKQEAgLTM0NDczLDYgKzM0
NDc4LDcgQEAKIAkJCQkyNkVBODlBNzFCNEYyQjc1MDA4QzVGRDIgLyogSGFzaGFibGVBY3Rpb25M
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDgyQjc0NjExOThDMzU0MDBCRkIwMDUgLyogSGFz
aENoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODc0OEJFMDEyQ0JGMkRDMDAxRkJB
NDEgLyogSGFzaFRvb2xzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEVEM0VDQzI3NjhBNTFEMDBG
MTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0VFRjNE
MjU3OTlGQjUwMDY1NjNCQiAvKiBIZHJNZXRhZGF0YVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEQTU5NTkzMjE0NkRFQzMwMEE4NDE4NSAvKiBIRVZDVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDREE1OTU5ODIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXgg
M2EyMjA1ODQ4YzM5OWEyNDlmMDE2MTlhNTA1MGM3Mjg5Mzk1NjA2MC4uNzlkMjAyOTI0Y2Y5YjZh
M2VkY2IzOTBiZWZlMmM0MjUyNDk1NjYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHAKQEAgLTEyNDksMTIgKzEyNDksMzEgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1h
dGNoU2VsZWN0b3JMaXN0KENoZWNraW5nQ29udGV4dCYgY2hlY2tpbmdDb250ZXh0LCBjb25zdAog
CiBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hIYXNQc2V1ZG9DbGFzcyhDaGVja2luZ0NvbnRl
eHQmIGNoZWNraW5nQ29udGV4dCwgY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQ1NTU2Vs
ZWN0b3ImIGhhc1NlbGVjdG9yKSBjb25zdAogeworICAgIGF1dG8gbWF0Y2hFbGVtZW50ID0gU3R5
bGU6OmNvbXB1dGVIYXNQc2V1ZG9DbGFzc01hdGNoRWxlbWVudChoYXNTZWxlY3Rvcik7CisKKyAg
ICBhdXRvIGNhbk1hdGNoID0gWyZdIHsKKyAgICAgICAgc3dpdGNoIChtYXRjaEVsZW1lbnQpIHsK
KyAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVtZW50OjpIYXNDaGlsZDoKKyAgICAgICAgY2Fz
ZSBTdHlsZTo6TWF0Y2hFbGVtZW50OjpIYXNEZXNjZW5kYW50OgorICAgICAgICAgICAgcmV0dXJu
ICEhZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCgpOworICAgICAgICBjYXNlIFN0eWxlOjpNYXRj
aEVsZW1lbnQ6Okhhc1NpYmxpbmc6CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoRWxlbWVudDo6
SGFzU2libGluZ0Rlc2NlbmRhbnQ6CisgICAgICAgICAgICByZXR1cm4gISFlbGVtZW50Lm5leHRF
bGVtZW50U2libGluZygpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH07CisgICAgfTsKKworICAgIC8vIFNlZSBpZiB0aGVyZSBhcmUgYW55IGVs
ZW1lbnRzIHRoYXQgdGhpcyA6aGFzKCkgc2VsZWN0b3IgY291bGQgbWF0Y2guCisgICAgaWYgKCFj
YW5NYXRjaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBhdXRvKiBjYWNoZSA9IGNo
ZWNraW5nQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3RhdGUgPyAmY2hlY2tpbmdDb250ZXh0LnNl
bGVjdG9yTWF0Y2hpbmdTdGF0ZS0+aGFzUHNldWRvQ2xhc3NNYXRjaENhY2hlIDogbnVsbHB0cjsK
IAotICAgIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoKiBjYWNoZWRNYXRjaCA9IG51bGxwdHI7
Ci0gICAgaWYgKGNhY2hlKSB7Ci0gICAgICAgIGNhY2hlZE1hdGNoID0gJmNhY2hlLT5hZGQoU3R5
bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5KGhhc1NlbGVjdG9yLCBlbGVtZW50KSwgU3R5
bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6Ok5vbmUpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAg
c3dpdGNoICgqY2FjaGVkTWF0Y2gpIHsKKyAgICBhdXRvIGNoZWNrRm9yQ2FjaGVkTWF0Y2ggPSBb
Jl0oKSAtPiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsKKyAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAg
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHN3aXRjaCAoY2FjaGUtPmdldChTdHlsZTo6bWFr
ZUhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkoZWxlbWVudCwgaGFzU2VsZWN0b3IpKSkgewogICAgICAg
ICBjYXNlIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpNYXRjaGVzOgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZh
aWxzOgpAQCAtMTI2Myw2ICsxMjgyLDM0IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhh
c1BzZXVkb0NsYXNzKENoZWNraW5nQ29udGV4dCYgY2hlY2tpbmdDb250ZXh0LCBjb25zCiAgICAg
ICAgIGNhc2UgU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6Ok5vbmU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICByZXR1cm4geyB9OworICAgIH07CisKKyAgICAvLyBT
ZWUgaWYgd2Uga25vdyB0aGUgcmVzdWx0IGFscmVhZHkuCisgICAgaWYgKGF1dG8gbWF0Y2ggPSBj
aGVja0ZvckNhY2hlZE1hdGNoKCkpCisgICAgICAgIHJldHVybiAqbWF0Y2g7CisKKyAgICBhdXRv
IGZpbHRlckZvckVsZW1lbnQgPSBbJl0oKSAtPiBTdHlsZTo6SGFzU2VsZWN0b3JGaWx0ZXIqIHsK
KyAgICAgICAgaWYgKCFjaGVja2luZ0NvbnRleHQuc2VsZWN0b3JNYXRjaGluZ1N0YXRlKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8gdHlwZSA9IFN0eWxlOjpIYXNT
ZWxlY3RvckZpbHRlcjo6dHlwZUZvck1hdGNoRWxlbWVudChtYXRjaEVsZW1lbnQpOworICAgICAg
ICBpZiAoIXR5cGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYXV0byYg
ZmlsdGVyc01hcCA9IGNoZWNraW5nQ29udGV4dC5zZWxlY3Rvck1hdGNoaW5nU3RhdGUtPmhhc1Bz
ZXVkb0NsYXNzU2VsZWN0b3JGaWx0ZXJzOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGZpbHRl
cnNNYXAuYWRkKFN0eWxlOjptYWtlSGFzUHNldWRvQ2xhc3NGaWx0ZXJLZXkoZWxlbWVudCwgKnR5
cGUpLCBzdGQ6OnVuaXF1ZV9wdHI8U3R5bGU6Okhhc1NlbGVjdG9yRmlsdGVyPigpKTsKKyAgICAg
ICAgLy8gT25seSBidWlsZCBhIGZpbHRlciBpZiB0aGUgc2FtZSBlbGVtZW50IGdldHMgY2hlY2tl
ZCBzZWNvbmQgdGltZSB3aXRoIGEgZGlmZmVyZW50IHNlbGVjdG9yIChtaXNzZXMgdGhlIG1hdGNo
IGNhY2hlKS4KKyAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
KQorICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U3R5
bGU6Okhhc1NlbGVjdG9yRmlsdGVyPihlbGVtZW50LCAqdHlwZSk7CisgICAgICAgIHJldHVybiBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIH07CisKKyAgICAvLyBDaGVjayBp
ZiB0aGUgYmxvb20gZmlsdGVyIHJlamVjdHMgdGhpcyBzZWxlY3RvcgorICAgIGlmIChhdXRvKiBm
aWx0ZXIgPSBmaWx0ZXJGb3JFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKGZpbHRlci0+cmVqZWN0
KGhhc1NlbGVjdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBT
ZWxlY3RvckNoZWNrZXIgaGFzQ2hlY2tlcihlbGVtZW50LmRvY3VtZW50KCkpOwpAQCAtMTI4Myw4
ICsxMzMwLDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hl
Y2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNvbnMKICAgICBhdXRvIGNoZWNrRGVzY2Vu
ZGFudHMgPSBbJl0oY29uc3QgRWxlbWVudCYgZGVzY2VuZGFudFJvb3QpIHsKICAgICAgICAgZm9y
IChhdXRvIGl0ID0gZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZGVzY2VuZGFudFJvb3QpLmJl
Z2luKCk7IGl0OykgewogICAgICAgICAgICAgYXV0byYgZGVzY2VuZGFudCA9ICppdDsKLSAgICAg
ICAgICAgIGlmIChjYWNoZSkgewotICAgICAgICAgICAgICAgIGF1dG8ga2V5ID0gU3R5bGU6Om1h
a2VIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5KGhhc1NlbGVjdG9yLCBkZXNjZW5kYW50KTsKKyAgICAg
ICAgICAgIGlmIChjYWNoZSAmJiBkZXNjZW5kYW50LmZpcnN0RWxlbWVudENoaWxkKCkpIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIGtleSA9IFN0eWxlOjptYWtlSGFzUHNldWRvQ2xhc3NDYWNoZUtl
eShkZXNjZW5kYW50LCBoYXNTZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgaWYgKGNhY2hlLT5n
ZXQoa2V5KSA9PSBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHNTdWJ0cmVlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGl0LnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4oKTsKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMzAwLDggKzEzNDcsNiBAQCBib29sIFNl
bGVjdG9yQ2hlY2tlcjo6bWF0Y2hIYXNQc2V1ZG9DbGFzcyhDaGVja2luZ0NvbnRleHQmIGNoZWNr
aW5nQ29udGV4dCwgY29ucwogICAgIH07CiAKICAgICBhdXRvIG1hdGNoID0gWyZdIHsKLSAgICAg
ICAgYXV0byBtYXRjaEVsZW1lbnQgPSBTdHlsZTo6Y29tcHV0ZUhhc1BzZXVkb0NsYXNzTWF0Y2hF
bGVtZW50KGhhc1NlbGVjdG9yKTsKLQogICAgICAgICBzd2l0Y2ggKG1hdGNoRWxlbWVudCkgewog
ICAgICAgICAvLyA6aGFzKD4gLmNoaWxkKQogICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1l
bnQ6Okhhc0NoaWxkOgpAQCAtMTMxMiwxOCArMTM1NywxNyBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6bWF0Y2hIYXNQc2V1ZG9DbGFzcyhDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwg
Y29ucwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIC8vIDpoYXMoLmRlc2NlbmRhbnQpCiAg
ICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoRWxlbWVudDo6SGFzRGVzY2VuZGFudDogewotICAgICAg
ICAgICAgaWYgKCFlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKGNhY2hlKSB7CiAgICAgICAgICAgICAgICAg
Ly8gU2VlIGlmIHdlIGFscmVhZHkga25vdyB0aGlzIGRlc2NlbmRhbnQgc2VsZWN0b3IgZG9lc24n
dCBtYXRjaCBpbiB0aGlzIHN1YnRyZWUuCiAgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBhbmNl
c3RvciA9IGVsZW1lbnQucGFyZW50RWxlbWVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNl
c3Rvci0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8ga2V5ID0g
U3R5bGU6Om1ha2VIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5KGhhc1NlbGVjdG9yLCAqYW5jZXN0b3Ip
OworICAgICAgICAgICAgICAgICAgICBhdXRvIGtleSA9IFN0eWxlOjptYWtlSGFzUHNldWRvQ2xh
c3NDYWNoZUtleSgqYW5jZXN0b3IsIGhhc1NlbGVjdG9yKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNhY2hlLT5nZXQoa2V5KSA9PSBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHNT
dWJ0cmVlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGVja0Rlc2NlbmRhbnRz
KGVsZW1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogQWRkIGEgc2VwYXJhdGUgY2FzZSBm
b3IgYWRqYWNlbnQgY29tYmluYXRvci4KQEAgLTEzNTQsMTUgKzEzOTgsMTYgQEAgYm9vbCBTZWxl
Y3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2lu
Z0NvbnRleHQsIGNvbnMKIAogICAgIGF1dG8gcmVzdWx0ID0gbWF0Y2goKTsKIAotICAgIGlmIChj
YWNoZWRNYXRjaCkgewotICAgICAgICAqY2FjaGVkTWF0Y2ggPSBbJl0gewotICAgICAgICAgICAg
aWYgKHJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNz
TWF0Y2g6Ok1hdGNoZXM7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlZEluc2lkZVNjb3BlKQotICAg
ICAgICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHM7Ci0g
ICAgICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzU3VidHJl
ZTsKLSAgICAgICAgfSgpOwotICAgIH0KKyAgICBhdXRvIG1hdGNoVHlwZUZvckNhY2hlID0gWyZd
IHsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNl
dWRvQ2xhc3NNYXRjaDo6TWF0Y2hlczsKKyAgICAgICAgaWYgKG1hdGNoZWRJbnNpZGVTY29wZSkK
KyAgICAgICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHM7Cisg
ICAgICAgIHJldHVybiBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6RmFpbHNTdWJ0cmVlOwor
ICAgIH07CisKKyAgICBpZiAoY2FjaGUpCisgICAgICAgIGNhY2hlLT5hZGQoU3R5bGU6Om1ha2VI
YXNQc2V1ZG9DbGFzc0NhY2hlS2V5KGVsZW1lbnQsIGhhc1NlbGVjdG9yKSwgbWF0Y2hUeXBlRm9y
Q2FjaGUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckZpbHRlci5jcHAKaW5kZXggMDE5MTMyNjRmMDNjMDE5NWQxMTY1MzVhZjQ3MWJlOTU1MjQ0ZGRh
OS4uZjhmMmNlYzFjZGMyOTQ0NjFkMmQwNTM3NzdkMzRlMmQwYWVjYTcyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JGaWx0ZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBib29sIGlz
RXhjbHVkZWRBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbmFt
ZSA9PSBIVE1MTmFtZXM6OmNsYXNzQXR0ci0+bG9jYWxOYW1lKCkgfHwgbmFtZSA9PSBIVE1MTmFt
ZXM6OmlkQXR0ci0+bG9jYWxOYW1lKCkgfHwgbmFtZSA9PSBIVE1MTmFtZXM6OnN0eWxlQXR0ci0+
bG9jYWxOYW1lKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0RWxlbWVudElkZW50
aWZpZXJIYXNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPHVuc2lnbmVkLCA0PiYg
aWRlbnRpZmllckhhc2hlcykKK3ZvaWQgU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RFbGVtZW50SWRl
bnRpZmllckhhc2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8dW5zaWduZWQsIDQ+
JiBpZGVudGlmaWVySGFzaGVzKQogewogICAgIEF0b21TdHJpbmcgdGFnTG93ZXJjYXNlTG9jYWxO
YW1lID0gZWxlbWVudC5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAg
IGlkZW50aWZpZXJIYXNoZXMuYXBwZW5kKHRhZ0xvd2VyY2FzZUxvY2FsTmFtZS5pbXBsKCktPmV4
aXN0aW5nSGFzaCgpICogVGFnTmFtZVNhbHQpOwpAQCAtMTM0LDE1ICsxMzQsNyBAQCB2b2lkIFNl
bGVjdG9yRmlsdGVyOjpwb3BQYXJlbnRzVW50aWwoRWxlbWVudCogcGFyZW50KQogICAgIH0KIH0K
IAotc3RydWN0IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIHsKLSAgICB1c2luZyBIYXNoVmVjdG9y
ID0gVmVjdG9yPHVuc2lnbmVkLCA4PjsKLSAgICBIYXNoVmVjdG9yIGlkczsKLSAgICBIYXNoVmVj
dG9yIGNsYXNzZXM7Ci0gICAgSGFzaFZlY3RvciB0YWdzOwotICAgIEhhc2hWZWN0b3IgYXR0cmli
dXRlczsKLX07Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0U2ltcGxlU2VsZWN0b3JIYXNo
KENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBjb2xsZWN0ZWRIYXNoZXMsIGNvbnN0IENTU1NlbGVj
dG9yJiBzZWxlY3RvcikKK3ZvaWQgU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTaW1wbGVTZWxlY3Rv
ckhhc2goQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmIGNvbGxlY3RlZEhhc2hlcywgY29uc3QgQ1NT
U2VsZWN0b3ImIHNlbGVjdG9yKQogewogICAgIHN3aXRjaCAoc2VsZWN0b3IubWF0Y2goKSkgewog
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OklkOgpAQCAtMTc2LDcgKzE2OCw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBjb2xsZWN0U2ltcGxlU2VsZWN0b3JIYXNoKENvbGxlY3RlZFNlbGVjdG9ySGFzaGVz
JiBjb2xsZWN0ZWRICiAgICAgfQogfQogCi1zdGF0aWMgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMg
Y29sbGVjdFNlbGVjdG9ySGFzaGVzKGNvbnN0IENTU1NlbGVjdG9yJiByaWdodG1vc3RTZWxlY3Rv
cikKK2F1dG8gU2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTZWxlY3Rvckhhc2hlcyhjb25zdCBDU1NT
ZWxlY3RvciYgcmlnaHRtb3N0U2VsZWN0b3IpIC0+IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzCiB7
CiAgICAgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMgY29sbGVjdGVkSGFzaGVzOwogCkBAIC0yMTAs
OSArMjAyLDkgQEAgc3RhdGljIENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIGNvbGxlY3RTZWxlY3Rv
ckhhc2hlcyhjb25zdCBDU1NTZWxlY3RvciYgcmlnaHRtb3MKICAgICByZXR1cm4gY29sbGVjdGVk
SGFzaGVzOwogfQogCi1zdGF0aWMgU2VsZWN0b3JGaWx0ZXI6Okhhc2hlcyBjaG9vc2VTZWxlY3Rv
ckhhc2hlc0ZvckZpbHRlcihjb25zdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVk
U2VsZWN0b3JIYXNoZXMpCithdXRvIFNlbGVjdG9yRmlsdGVyOjpjaG9vc2VTZWxlY3Rvckhhc2hl
c0ZvckZpbHRlcihjb25zdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVkU2VsZWN0
b3JIYXNoZXMpIC0+IEhhc2hlcwogewotICAgIFNlbGVjdG9yRmlsdGVyOjpIYXNoZXMgcmVzdWx0
SGFzaGVzOworICAgIEhhc2hlcyByZXN1bHRIYXNoZXM7CiAgICAgdW5zaWduZWQgaW5kZXggPSAw
OwogCiAgICAgYXV0byBhZGRJZk5ldyA9IFsmXSAodW5zaWduZWQgaGFzaCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JGaWx0ZXIuaAppbmRleCBhODQ3OTc0NjA3MzRjY2RiMTRjYjc3NWU0MmRhMjZm
OGQ1MGQxZWMxLi4wNGVjNTM3MDIzMTU3MTAyYmUwNjEyZDViMTk5Njc3ZDAxZTRmNTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuaApAQCAtNTAsOCArNTAsMjEgQEAgcHVibGljOgog
ICAgIGJvb2wgZmFzdFJlamVjdFNlbGVjdG9yKGNvbnN0IEhhc2hlcyYpIGNvbnN0OwogICAgIHN0
YXRpYyBIYXNoZXMgY29sbGVjdEhhc2hlcyhjb25zdCBDU1NTZWxlY3RvciYpOwogCisgICAgc3Rh
dGljIHZvaWQgY29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKGNvbnN0IEVsZW1lbnQmLCBW
ZWN0b3I8dW5zaWduZWQsIDQ+Jik7CisKKyAgICBzdHJ1Y3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNo
ZXMgeworICAgICAgICB1c2luZyBIYXNoVmVjdG9yID0gVmVjdG9yPHVuc2lnbmVkLCA4PjsKKyAg
ICAgICAgSGFzaFZlY3RvciBpZHM7CisgICAgICAgIEhhc2hWZWN0b3IgY2xhc3NlczsKKyAgICAg
ICAgSGFzaFZlY3RvciB0YWdzOworICAgICAgICBIYXNoVmVjdG9yIGF0dHJpYnV0ZXM7CisgICAg
fTsKKyAgICBzdGF0aWMgdm9pZCBjb2xsZWN0U2ltcGxlU2VsZWN0b3JIYXNoKENvbGxlY3RlZFNl
bGVjdG9ySGFzaGVzJiwgY29uc3QgQ1NTU2VsZWN0b3ImKTsKKwogcHJpdmF0ZToKICAgICB2b2lk
IGluaXRpYWxpemVQYXJlbnRTdGFjayhFbGVtZW50JiBwYXJlbnQpOworICAgIHN0YXRpYyBDb2xs
ZWN0ZWRTZWxlY3Rvckhhc2hlcyBjb2xsZWN0U2VsZWN0b3JIYXNoZXMoY29uc3QgQ1NTU2VsZWN0
b3ImIHJpZ2h0bW9zdFNlbGVjdG9yKTsKKyAgICBzdGF0aWMgSGFzaGVzIGNob29zZVNlbGVjdG9y
SGFzaGVzRm9yRmlsdGVyKGNvbnN0IENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJik7CiAKICAgICBz
dHJ1Y3QgUGFyZW50U3RhY2tGcmFtZSB7CiAgICAgICAgIFBhcmVudFN0YWNrRnJhbWUoKSA6IGVs
ZW1lbnQoMCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNTZWxlY3Rv
ckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNTZWxlY3RvckZpbHRlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDI2ZjI4MDEzMTdlMGY5ZDU1NGZiY2I0NjVlMGRmYWM4NjNmOTQzZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1NlbGVjdG9yRmlsdGVyLmNw
cApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSGFzU2VsZWN0b3JGaWx0ZXIuaCIKKworI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRv
ci5oIgorI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCisjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmU6OlN0eWxlIHsKKworLy8gRklYTUU6IFN1cHBvcnQgYWRk
aXRpb25hbCBwc2V1ZG8tY2xhc3Nlcy4KK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSG92ZXJT
YWx0ID0gMTAxOworCitIYXNTZWxlY3RvckZpbHRlcjo6SGFzU2VsZWN0b3JGaWx0ZXIoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCwgVHlwZSB0eXBlKQorICAgIDogbV90eXBlKHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUeXBlOjpEZXNjZW5kYW50czoKKyAgICAgICAgZm9y
IChhdXRvJiBkZXNjZW5kYW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4oZWxlbWVudCkp
CisgICAgICAgICAgICBhZGQoZGVzY2VuZGFudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VHlwZTo6Q2hpbGRyZW46CisgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlw
ZTxFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAgIGFkZChjaGlsZCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworYXV0byBIYXNTZWxlY3RvckZpbHRlcjo6dHlwZUZvck1hdGNoRWxl
bWVudChNYXRjaEVsZW1lbnQgbWF0Y2hFbGVtZW50KSAtPiBzdGQ6Om9wdGlvbmFsPFR5cGU+Cit7
CisgICAgc3dpdGNoIChtYXRjaEVsZW1lbnQpIHsKKyAgICBjYXNlIE1hdGNoRWxlbWVudDo6SGFz
Q2hpbGQ6CisgICAgICAgIHJldHVybiBUeXBlOjpDaGlsZHJlbjsKKyAgICBjYXNlIE1hdGNoRWxl
bWVudDo6SGFzRGVzY2VuZGFudDoKKyAgICAgICAgcmV0dXJuIFR5cGU6OkRlc2NlbmRhbnRzOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorfQorCithdXRvIEhhc1Nl
bGVjdG9yRmlsdGVyOjptYWtlS2V5KGNvbnN0IENTU1NlbGVjdG9yJiBoYXNTZWxlY3RvcikgLT4g
S2V5Cit7CisgICAgU2VsZWN0b3JGaWx0ZXI6OkNvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIGhhc2hl
czsKKyAgICBib29sIGhhc0hvdmVySW5Db21wb3VuZCA9IGZhbHNlOworICAgIGZvciAoYXV0byog
c2ltcGxlU2VsZWN0b3IgPSAmaGFzU2VsZWN0b3I7IHNpbXBsZVNlbGVjdG9yOyBzaW1wbGVTZWxl
Y3RvciA9IHNpbXBsZVNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAgaWYgKHNpbXBs
ZVNlbGVjdG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAmJiBzaW1wbGVT
ZWxlY3Rvci0+cHNldWRvQ2xhc3NUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92
ZXIpCisgICAgICAgICAgICBoYXNIb3ZlckluQ29tcG91bmQgPSB0cnVlOworICAgICAgICBTZWxl
Y3RvckZpbHRlcjo6Y29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaChoYXNoZXMsICpzaW1wbGVTZWxl
Y3Rvcik7CisgICAgICAgIGlmICghaGFzaGVzLmlkcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgaWYgKHNpbXBsZVNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVj
dG9yOjpTdWJzZWxlY3RvcikKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGF1dG8g
cGlja0tleSA9IFsmXShhdXRvJiBoYXNoVmVjdG9yKSAtPiBLZXkgeworICAgICAgICBpZiAoaGFz
aFZlY3Rvci5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKGhh
c0hvdmVySW5Db21wb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBoYXNoVmVjdG9yWzBdICogSG92
ZXJTYWx0OworICAgICAgICByZXR1cm4gaGFzaFZlY3RvclswXTsKKyAgICB9OworCisgICAgaWYg
KGF1dG8ga2V5ID0gcGlja0tleShoYXNoZXMuaWRzKSkKKyAgICAgICAgcmV0dXJuIGtleTsKKyAg
ICBpZiAoYXV0byBrZXkgPSBwaWNrS2V5KGhhc2hlcy5jbGFzc2VzKSkKKyAgICAgICAgcmV0dXJu
IGtleTsKKyAgICBpZiAoYXV0byBrZXkgPSBwaWNrS2V5KGhhc2hlcy5hdHRyaWJ1dGVzKSkKKyAg
ICAgICAgcmV0dXJuIGtleTsKKyAgICByZXR1cm4gcGlja0tleShoYXNoZXMudGFncyk7Cit9CisK
K3ZvaWQgSGFzU2VsZWN0b3JGaWx0ZXI6OmFkZChjb25zdCBFbGVtZW50JiBlbGVtZW50KQorewor
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgND4gZWxlbWVudEhhc2hlczsKKyAgICBTZWxlY3RvckZpbHRl
cjo6Y29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKGVsZW1lbnQsIGVsZW1lbnRIYXNoZXMp
OworCisgICAgZm9yIChhdXRvIGhhc2ggOiBlbGVtZW50SGFzaGVzKQorICAgICAgICBtX2ZpbHRl
ci5hZGQoaGFzaCk7CisKKyAgICBpZiAoZWxlbWVudC5ob3ZlcmVkKCkpIHsKKyAgICAgICAgZm9y
IChhdXRvIGhhc2ggOiBlbGVtZW50SGFzaGVzKQorICAgICAgICAgICAgbV9maWx0ZXIuYWRkKGhh
c2ggKiBIb3ZlclNhbHQpOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvSGFzU2VsZWN0b3JGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1Nl
bGVjdG9yRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk5ZTgyYTllNzZiMWIwZjJjOTk0NTE0ODE1ZmQz
ZjVjMGU5OTViYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0hhc1Nl
bGVjdG9yRmlsdGVyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL0Jsb29tRmlsdGVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CisKK2VudW0gY2xh
c3MgTWF0Y2hFbGVtZW50IDogdWludDhfdDsKKworY2xhc3MgSGFzU2VsZWN0b3JGaWx0ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGVudW0gY2xhc3MgVHlw
ZSA6IHVpbnQ4X3QgeyBDaGlsZHJlbiwgRGVzY2VuZGFudHMgfTsKKyAgICBIYXNTZWxlY3RvckZp
bHRlcihjb25zdCBFbGVtZW50JiwgVHlwZSk7CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUeXBlPiB0eXBlRm9yTWF0
Y2hFbGVtZW50KE1hdGNoRWxlbWVudCk7CisKKyAgICB1c2luZyBLZXkgPSB1bnNpZ25lZDsKKyAg
ICBzdGF0aWMgS2V5IG1ha2VLZXkoY29uc3QgQ1NTU2VsZWN0b3ImIGhhc1NlbGVjdG9yKTsKKwor
ICAgIGJvb2wgcmVqZWN0KGNvbnN0IENTU1NlbGVjdG9yJiBoYXNTZWxlY3RvcikgY29uc3QgeyBy
ZXR1cm4gcmVqZWN0KG1ha2VLZXkoaGFzU2VsZWN0b3IpKTsgfQorICAgIGJvb2wgcmVqZWN0KEtl
eSBrZXkpIGNvbnN0IHsgcmV0dXJuICFtX2ZpbHRlci5tYXlDb250YWluKGtleSk7IH0KKworCitw
cml2YXRlOgorICAgIHZvaWQgYWRkKGNvbnN0IEVsZW1lbnQmKTsKKworICAgIGNvbnN0IFR5cGUg
bV90eXBlOworICAgIEJsb29tRmlsdGVyPDEyPiBtX2ZpbHRlcjsKK307CisKK30KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JNYXRjaGluZ1N0YXRlLmgKaW5kZXggNDI5YWI5NmNk
MGUyNzExMjkxYWI5M2ZmMjkxMzdkZDZiMWQ5MDczMy4uMmI1M2NkM2JhYmY2NDhiM2U3ZWNkYTI5
NmU3YjliMmY0MjUzODk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0
b3JNYXRjaGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU2VsZWN0b3JNYXRj
aGluZ1N0YXRlLmgKQEAgLTI0LDIzICsyNCwzMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkhhc1NlbGVjdG9yRmlsdGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JGaWx0ZXIuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZTo6U3R5bGUgewogCi11
c2luZyBIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5ID0gc3RkOjpwYWlyPGNvbnN0IENTU1NlbGVjdG9y
KiwgY29uc3QgRWxlbWVudCo+OwordXNpbmcgSGFzUHNldWRvQ2xhc3NDYWNoZUtleSA9IHN0ZDo6
cGFpcjxjb25zdCBFbGVtZW50KiwgY29uc3QgQ1NTU2VsZWN0b3IqPjsKK3VzaW5nIEhhc1BzZXVk
b0NsYXNzRmlsdGVyS2V5ID0gc3RkOjpwYWlyPGNvbnN0IEVsZW1lbnQqLCB1aW50OF90PjsKIAog
ZW51bSBjbGFzcyBIYXNQc2V1ZG9DbGFzc01hdGNoIDogdWludDhfdCB7IE5vbmUsIE1hdGNoZXMs
IEZhaWxzLCBGYWlsc1N1YnRyZWUgfTsKIAogc3RydWN0IFNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSB7
CiAgICAgU2VsZWN0b3JGaWx0ZXIgc2VsZWN0b3JGaWx0ZXI7CisKICAgICBIYXNoTWFwPEhhc1Bz
ZXVkb0NsYXNzQ2FjaGVLZXksIEhhc1BzZXVkb0NsYXNzTWF0Y2g+IGhhc1BzZXVkb0NsYXNzTWF0
Y2hDYWNoZTsKKyAgICBIYXNoTWFwPEhhc1BzZXVkb0NsYXNzRmlsdGVyS2V5LCBzdGQ6OnVuaXF1
ZV9wdHI8SGFzU2VsZWN0b3JGaWx0ZXI+PiBoYXNQc2V1ZG9DbGFzc1NlbGVjdG9yRmlsdGVyczsK
IH07CiAKLWlubGluZSBIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5IG1ha2VIYXNQc2V1ZG9DbGFzc0Nh
Y2hlS2V5KGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvciwgY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKK2lubGluZSBIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5IG1ha2VIYXNQc2V1ZG9DbGFzc0NhY2hl
S2V5KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikK
K3sKKyAgICByZXR1cm4geyAmZWxlbWVudCwgJnNlbGVjdG9yIH07Cit9CisKK2lubGluZSBIYXNQ
c2V1ZG9DbGFzc0ZpbHRlcktleSBtYWtlSGFzUHNldWRvQ2xhc3NGaWx0ZXJLZXkoY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgSGFzU2VsZWN0b3JGaWx0ZXI6OlR5cGUgdHlwZSkKIHsKLSAgICByZXR1
cm4geyAmc2VsZWN0b3IsICZlbGVtZW50IH07CisgICAgcmV0dXJuIHsgJmVsZW1lbnQsIHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHR5cGUpIH07CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447258</attachid>
            <date>2021-12-15 10:48:48 -0800</date>
            <delta_ts>2021-12-15 10:50:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234341-20211215204847.patch</filename>
            <type>text/plain</type>
            <size>25627</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNjE0ZjI1Y2ZmZjkx
YTAzZmM3MjYxZWI4N2QzOTMxNTFhOGI0Zi4uYjI1YWQ3MmY5MzdmOTA0OTVjMjc3OGRjNDQ2ODcz
MDc0NThiZjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEyLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gVXNlIEJsb29tIGZpbHRlciB0byBxdWlja2x5IHJlamVjdCA6aGFzKCkgc2VsZWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzNDEK
KworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgV2UgY2FuIGRy
YW1hdGljYWxseSBzcGVlZCB1cCBjYXNlcyB3aGVyZSB0aGVyZSBhcmUgbWFueSA6aGFzIHJ1bGVz
LCBtb3N0IG9mIHdoaWNoIGRvbid0IG1hdGNoIHRoZWlyIGFyZ3VtZW50CisgICAgICAgIGJ5IGJ1
aWxkaW5nIGEgQmxvb20gZmlsdGVyIGRlc2NyaWJpbmcgdGhlIGZlYXR1cmVzIG9mIHRoZSBzdWJ0
cmVlLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzIGNv
bnN0KToKKworICAgICAgICBCdWlsZCBhbmQgY2FjaGUgSGFzU2VsZWN0b3JGaWx0ZXIgcGVyIGVs
ZW1lbnQvZmlsdGVyIHR5cGUuIEl0IHdpbGwgYmUgY29uc3RydWN0ZWQgb25seSBpZiBtdWx0aXBs
ZSA6aGFzKCkKKyAgICAgICAgc2VsZWN0b3JzIGFyZSB0ZXN0ZWQgZm9yIHRoZSBzYW1lIGVsZW1l
bnQgKG90aGVyd2lzZSB0aGUgcmVndWxhciBtYXRjaCBjYWNoZSBpcyBtb3JlIGVmZmljaWVudCku
CisgICAgICAgIFVzZSBpdCB0byBxdWlja2x5IHJlamVjdCBzZWxlY3RvcnMuCisgICAgICAgIEFs
c28gYWRkIGEgYmFzaWMgaW5pdGFsIG9wdGltaXphdGlvbiB0byBiYWlsIG91dCBpZiB0aGVyZSBh
cmUgbm8gY2hpbGQvc2libGluZyBlbGVtZW50cyB0aGF0IGNvdWxkIG1hdGNoLgorCisgICAgICAg
ICogY3NzL1NlbGVjdG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmls
dGVyOjpjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTZWxlY3Rvckhhc2hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckZpbHRlcjo6Y2hvb3NlU2VsZWN0b3JIYXNoZXNGb3JGaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2gpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFNlbGVjdG9ySGFzaGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNob29zZVNlbGVjdG9ySGFzaGVzRm9yRmlsdGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JGaWx0ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9IYXNTZWxl
Y3RvckZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVj
dG9yRmlsdGVyOjpIYXNTZWxlY3RvckZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
SGFzU2VsZWN0b3JGaWx0ZXI6OnR5cGVGb3JNYXRjaEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmlsdGVyOjptYWtlS2V5KToKKworICAgICAgICBUaGUga2V5
IGNvbnNpc3RzIG9mIHRoZSBtb3N0IHNwZWNpZmljIHN0cmluZyBpbiB0aGUgcmlnaHRtb3N0IGNv
bXBvdW5kIG9mIHRoZSBzZWxlY3RvciBhbG9uZyB3aXRoCisgICAgICAgIDpob3ZlciBwc2V1ZG8g
Y2xhc3MsIGlmIGFueS4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmls
dGVyOjphZGQpOgorCisgICAgICAgIEFkZCBhbiBFbGVtZW50IHRvIHRoZSBmaWx0ZXIuCisgICAg
ICAgIFRoZSBmZWF0dXJlcyBjb2xsZWN0ZWQgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgcmVndWxh
ciBzZWxlY3RvciBmaWx0ZXIsIHBsdXMgcGVybXV0YXRpb25zIHdpdGgKKyAgICAgICAgOmhvdmVy
IHBzZXVkby1jbGFzcyBpZiBpdCB3b3VsZCBtYXRjaC4KKworICAgICAgICAqIHN0eWxlL0hhc1Nl
bGVjdG9yRmlsdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVjdG9y
TWF0Y2hpbmdTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmls
dGVyOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpIYXNTZWxlY3RvckZp
bHRlcjo6cmVqZWN0IGNvbnN0KToKKworICAgICAgICBBZGQgSGFzU2VsZWN0b3JGaWx0ZXIgd2hp
Y2ggdXNlcyBub24tY291bnRpbmcgQmxvb21GaWx0ZXIgaW50ZXJuYWxseS4gVGhlIHNpemUgb2Yg
dGhlIGZpbHRlciBpcyA1MTIgYnl0ZXMuCisKKyAgICAgICAgKiBzdHlsZS9TZWxlY3Rvck1hdGNo
aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjptYWtlSGFzUHNldWRvQ2xhc3NT
ZWxlY3RvckZpbHRlcktleSk6CisKIDIwMjEtMTItMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVHdpdHRlciBzY3JvbGwgc3R1dHRlcjogZW5zdXJl
IHRoYXQgQ0EgYmFja2luZyBzdG9yZSBpcyBhbHdheXMgZGVhbGxvY2F0ZWQgb24gdGhlIG1haW4g
dGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDY0MDk3MjdlYTQ4MTNjYjJkYzhhZmVjNDAzNmE3OGZh
YzM1YzE5NmYuLmZlYzE3YWNmZjBlZDQ1NTdiZTYwYTE1ZTg1OGI4NmIzNThjNWI1MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yNTQzLDYgKzI1NDMsNyBAQCBzdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwCiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKIHN0eWxlL0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
CitzdHlsZS9IYXNTZWxlY3RvckZpbHRlci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcAogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAogc3R5bGUvSW5zcGVjdG9yQ1NTT01X
cmFwcGVycy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkNjZhNmQxY2NlZGY2ZWE1YjAxNzVlYzc0YjVmZTZlZDIwOTYxMGMz
Li4yMTI4NTI2NDU2YTk4NGIxN2M1ZjYxODE5YzExOWM1MDEyNjdkYzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Mzg0LDYg
KzUzODQsNyBAQAogCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dC5oICovOyB9OwogCQlFNEU4QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNj
cmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5NEQ2MTIy
RkYxNThBMDBERDE5MUYgLyogTGVnYWN5TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIExl
Z2FjeUxpbmVMYXlvdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFNEVEM0VDQzI3NjhBNTFEMDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RUQzRUNB
Mjc2OEE1MUMwMEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oICovOyB9OwogCQlFNEYwQkUz
MTI1NzEyRjZFMDA5RTc0MzEgLyogQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RjBCRTJFMjU3MTBBNzUwMDlFNzQz
MSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5oICovOyB9OwogCQlFNEYzOEQxQjI2MjZGMTNCMDA3
QjEwNjQgLyogRGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEYzOEQxOTI2MjZGMTNCMDA3QjEwNjQgLyog
RGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5LmggKi87IH07CiAJCUU0RjgxOUM2MjZGQjRFQkYw
MDk0RTE2MiAvKiBJbmxpbmVCb3hQYWludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEY4MTlDNTI2RkI0RUJGMDA5NEUxNjIgLyogSW5saW5lQm94
UGFpbnRlci5oICovOyB9OwpAQCAtMTc0NjYsNiArMTc0NjcsOCBAQAogCQlFNEU4QjRFRDIxNkI3
OUY0MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4QjRGMDIxNkI4QjVGMDBCODgzNEQg
LyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhc2NhZGVEZXNj
cmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEVEM0VDQTI3NjhBNTFD
MDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGFzU2VsZWN0b3JGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTRFRDNFQ0QyNzY4QTY4ODAwRjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhhc1NlbGVjdG9yRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRGMEJFMkUyNTcxMEE3NTAwOUU3NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcmV0UmVjdENvbXB1dGF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RjBCRTMwMjU3MTBBNzYwMDlF
NzQzMSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYXJldFJlY3RDb21wdXRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0RjM4RDE5MjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VM
b2FkUHJpb3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmYXVsdFJl
c291cmNlTG9hZFByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTA4
MCw2ICszMTA4Myw4IEBACiAJCQkJRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8qIENsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRkJEQjYxOUExNkQ2MDMyQTAwQkIzMzk0IC8qIEVs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCAqLywKIAkJCQlGQkRCNjE5RTE2RDYwMzY1MDBCQjMzOTQg
LyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCAqLywKKwkJCQlFNEVEM0VDRDI3NjhBNjg4MDBGMTdB
QzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuY3BwICovLAorCQkJCUU0RUQzRUNBMjc2OEE1MUMwMEYx
N0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oICovLAogCQkJCUU0QTgxNEREMUM3MzM4RDEwMEJG
ODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCiAJCQkJRTRBODE0REYxQzczMzhF
QjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJMUMwMTA2RkUxOTI1
OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8sCkBAIC0zNDQ3Myw2ICsz
NDQ3OCw3IEBACiAJCQkJMjZFQTg5QTcxQjRGMkI3NTAwOEM1RkQyIC8qIEhhc2hhYmxlQWN0aW9u
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ4MkI3NDYxMTk4QzM1NDAwQkZCMDA1IC8qIEhh
c2hDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3NDhCRTAxMkNCRjJEQzAwMUZC
QTQxIC8qIEhhc2hUb29scy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRFRDNFQ0MyNzY4QTUxRDAw
RjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFRUYz
RDI1Nzk5RkI1MDA2NTYzQkIgLyogSGRyTWV0YWRhdGFUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREE1OTU5MzIxNDZERUMzMDBBODQxODUgLyogSEVWQ1V0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RBNTk1OTgyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4
IDNhMjIwNTg0OGMzOTlhMjQ5ZjAxNjE5YTUwNTBjNzI4OTM5NTYwNjAuLjc5ZDIwMjkyNGNmOWI2
YTNlZGNiMzkwYmVmZTJjNDI1MjQ5NTY2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwCkBAIC0xMjQ5LDEyICsxMjQ5LDMxIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpt
YXRjaFNlbGVjdG9yTGlzdChDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29uc3QK
IAogYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250
ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IENTU1Nl
bGVjdG9yJiBoYXNTZWxlY3RvcikgY29uc3QKIHsKKyAgICBhdXRvIG1hdGNoRWxlbWVudCA9IFN0
eWxlOjpjb21wdXRlSGFzUHNldWRvQ2xhc3NNYXRjaEVsZW1lbnQoaGFzU2VsZWN0b3IpOworCisg
ICAgYXV0byBjYW5NYXRjaCA9IFsmXSB7CisgICAgICAgIHN3aXRjaCAobWF0Y2hFbGVtZW50KSB7
CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoRWxlbWVudDo6SGFzQ2hpbGQ6CisgICAgICAgIGNh
c2UgU3R5bGU6Ok1hdGNoRWxlbWVudDo6SGFzRGVzY2VuZGFudDoKKyAgICAgICAgICAgIHJldHVy
biAhIWVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQoKTsKKyAgICAgICAgY2FzZSBTdHlsZTo6TWF0
Y2hFbGVtZW50OjpIYXNTaWJsaW5nOgorICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6
Okhhc1NpYmxpbmdEZXNjZW5kYW50OgorICAgICAgICAgICAgcmV0dXJuICEhZWxlbWVudC5uZXh0
RWxlbWVudFNpYmxpbmcoKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9OworICAgIH07CisKKyAgICAvLyBTZWUgaWYgdGhlcmUgYXJlIGFueSBl
bGVtZW50cyB0aGF0IHRoaXMgOmhhcygpIHNlbGVjdG9yIGNvdWxkIG1hdGNoLgorICAgIGlmICgh
Y2FuTWF0Y2goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgYXV0byogY2FjaGUgPSBj
aGVja2luZ0NvbnRleHQuc2VsZWN0b3JNYXRjaGluZ1N0YXRlID8gJmNoZWNraW5nQ29udGV4dC5z
ZWxlY3Rvck1hdGNoaW5nU3RhdGUtPmhhc1BzZXVkb0NsYXNzTWF0Y2hDYWNoZSA6IG51bGxwdHI7
CiAKLSAgICBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaCogY2FjaGVkTWF0Y2ggPSBudWxscHRy
OwotICAgIGlmIChjYWNoZSkgewotICAgICAgICBjYWNoZWRNYXRjaCA9ICZjYWNoZS0+YWRkKFN0
eWxlOjptYWtlSGFzUHNldWRvQ2xhc3NDYWNoZUtleShoYXNTZWxlY3RvciwgZWxlbWVudCksIFN0
eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpOb25lKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAg
IHN3aXRjaCAoKmNhY2hlZE1hdGNoKSB7CisgICAgYXV0byBjaGVja0ZvckNhY2hlZE1hdGNoID0g
WyZdKCkgLT4gc3RkOjpvcHRpb25hbDxib29sPiB7CisgICAgICAgIGlmICghY2FjaGUpCisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICBzd2l0Y2ggKGNhY2hlLT5nZXQoU3R5bGU6Om1h
a2VIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5KGVsZW1lbnQsIGhhc1NlbGVjdG9yKSkpIHsKICAgICAg
ICAgY2FzZSBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6TWF0Y2hlczoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpG
YWlsczoKQEAgLTEyNjMsNiArMTI4MiwzNCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hI
YXNQc2V1ZG9DbGFzcyhDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29ucwogICAg
ICAgICBjYXNlIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpOb25lOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgLy8g
U2VlIGlmIHdlIGtub3cgdGhlIHJlc3VsdCBhbHJlYWR5LgorICAgIGlmIChhdXRvIG1hdGNoID0g
Y2hlY2tGb3JDYWNoZWRNYXRjaCgpKQorICAgICAgICByZXR1cm4gKm1hdGNoOworCisgICAgYXV0
byBmaWx0ZXJGb3JFbGVtZW50ID0gWyZdKCkgLT4gU3R5bGU6Okhhc1NlbGVjdG9yRmlsdGVyKiB7
CisgICAgICAgIGlmICghY2hlY2tpbmdDb250ZXh0LnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBhdXRvIHR5cGUgPSBTdHlsZTo6SGFz
U2VsZWN0b3JGaWx0ZXI6OnR5cGVGb3JNYXRjaEVsZW1lbnQobWF0Y2hFbGVtZW50KTsKKyAgICAg
ICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8m
IGZpbHRlcnNNYXAgPSBjaGVja2luZ0NvbnRleHQuc2VsZWN0b3JNYXRjaGluZ1N0YXRlLT5oYXNQ
c2V1ZG9DbGFzc1NlbGVjdG9yRmlsdGVyczsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBmaWx0
ZXJzTWFwLmFkZChTdHlsZTo6bWFrZUhhc1BzZXVkb0NsYXNzRmlsdGVyS2V5KGVsZW1lbnQsICp0
eXBlKSwgc3RkOjp1bmlxdWVfcHRyPFN0eWxlOjpIYXNTZWxlY3RvckZpbHRlcj4oKSk7CisgICAg
ICAgIC8vIE9ubHkgYnVpbGQgYSBmaWx0ZXIgaWYgdGhlIHNhbWUgZWxlbWVudCBnZXRzIGNoZWNr
ZWQgc2Vjb25kIHRpbWUgd2l0aCBhIGRpZmZlcmVudCBzZWxlY3RvciAobWlzc2VzIHRoZSBtYXRj
aCBjYWNoZSkuCisgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmICghYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSkKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFN0
eWxlOjpIYXNTZWxlY3RvckZpbHRlcj4oZWxlbWVudCwgKnR5cGUpOworICAgICAgICByZXR1cm4g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICB9OworCisgICAgLy8gQ2hlY2sg
aWYgdGhlIGJsb29tIGZpbHRlciByZWplY3RzIHRoaXMgc2VsZWN0b3IKKyAgICBpZiAoYXV0byog
ZmlsdGVyID0gZmlsdGVyRm9yRWxlbWVudCgpKSB7CisgICAgICAgIGlmIChmaWx0ZXItPnJlamVj
dChoYXNTZWxlY3RvcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
U2VsZWN0b3JDaGVja2VyIGhhc0NoZWNrZXIoZWxlbWVudC5kb2N1bWVudCgpKTsKQEAgLTEyODMs
OCArMTMzMCw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENo
ZWNraW5nQ29udGV4dCYgY2hlY2tpbmdDb250ZXh0LCBjb25zCiAgICAgYXV0byBjaGVja0Rlc2Nl
bmRhbnRzID0gWyZdKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnRSb290KSB7CiAgICAgICAgIGZv
ciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGRlc2NlbmRhbnRSb290KS5i
ZWdpbigpOyBpdDspIHsKICAgICAgICAgICAgIGF1dG8mIGRlc2NlbmRhbnQgPSAqaXQ7Ci0gICAg
ICAgICAgICBpZiAoY2FjaGUpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGtleSA9IFN0eWxlOjpt
YWtlSGFzUHNldWRvQ2xhc3NDYWNoZUtleShoYXNTZWxlY3RvciwgZGVzY2VuZGFudCk7CisgICAg
ICAgICAgICBpZiAoY2FjaGUgJiYgZGVzY2VuZGFudC5maXJzdEVsZW1lbnRDaGlsZCgpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHlsZTo6bWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVL
ZXkoZGVzY2VuZGFudCwgaGFzU2VsZWN0b3IpOwogICAgICAgICAgICAgICAgIGlmIChjYWNoZS0+
Z2V0KGtleSkgPT0gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzU3VidHJlZSkgewog
ICAgICAgICAgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTMwMCw4ICsxMzQ3LDYgQEAgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVj
a2luZ0NvbnRleHQsIGNvbnMKICAgICB9OwogCiAgICAgYXV0byBtYXRjaCA9IFsmXSB7Ci0gICAg
ICAgIGF1dG8gbWF0Y2hFbGVtZW50ID0gU3R5bGU6OmNvbXB1dGVIYXNQc2V1ZG9DbGFzc01hdGNo
RWxlbWVudChoYXNTZWxlY3Rvcik7Ci0KICAgICAgICAgc3dpdGNoIChtYXRjaEVsZW1lbnQpIHsK
ICAgICAgICAgLy8gOmhhcyg+IC5jaGlsZCkKICAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVt
ZW50OjpIYXNDaGlsZDoKQEAgLTEzMTIsMTggKzEzNTcsMTcgQEAgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQs
IGNvbnMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAvLyA6aGFzKC5kZXNjZW5kYW50KQog
ICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc0Rlc2NlbmRhbnQ6IHsKLSAgICAg
ICAgICAgIGlmICghZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChjYWNoZSkgewogICAgICAgICAgICAgICAg
IC8vIFNlZSBpZiB3ZSBhbHJlYWR5IGtub3cgdGhpcyBkZXNjZW5kYW50IHNlbGVjdG9yIGRvZXNu
J3QgbWF0Y2ggaW4gdGhpcyBzdWJ0cmVlLgogICAgICAgICAgICAgICAgIGZvciAoYXV0byogYW5j
ZXN0b3IgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5j
ZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGtleSA9
IFN0eWxlOjptYWtlSGFzUHNldWRvQ2xhc3NDYWNoZUtleShoYXNTZWxlY3RvciwgKmFuY2VzdG9y
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHlsZTo6bWFrZUhhc1BzZXVkb0Ns
YXNzQ2FjaGVLZXkoKmFuY2VzdG9yLCBoYXNTZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChjYWNoZS0+Z2V0KGtleSkgPT0gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxz
U3VidHJlZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hlY2tEZXNjZW5kYW50
cyhlbGVtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IEFkZCBhIHNlcGFyYXRlIGNhc2Ug
Zm9yIGFkamFjZW50IGNvbWJpbmF0b3IuCkBAIC0xMzU0LDE1ICsxMzk4LDE2IEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENoZWNraW5nQ29udGV4dCYgY2hlY2tp
bmdDb250ZXh0LCBjb25zCiAKICAgICBhdXRvIHJlc3VsdCA9IG1hdGNoKCk7CiAKLSAgICBpZiAo
Y2FjaGVkTWF0Y2gpIHsKLSAgICAgICAgKmNhY2hlZE1hdGNoID0gWyZdIHsKLSAgICAgICAgICAg
IGlmIChyZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFz
c01hdGNoOjpNYXRjaGVzOwotICAgICAgICAgICAgaWYgKG1hdGNoZWRJbnNpZGVTY29wZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzOwot
ICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWlsc1N1YnRy
ZWU7Ci0gICAgICAgIH0oKTsKLSAgICB9CisgICAgYXV0byBtYXRjaFR5cGVGb3JDYWNoZSA9IFsm
XSB7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1Bz
ZXVkb0NsYXNzTWF0Y2g6Ok1hdGNoZXM7CisgICAgICAgIGlmIChtYXRjaGVkSW5zaWRlU2NvcGUp
CisgICAgICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzOwor
ICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzU3VidHJlZTsK
KyAgICB9OworCisgICAgaWYgKGNhY2hlKQorICAgICAgICBjYWNoZS0+YWRkKFN0eWxlOjptYWtl
SGFzUHNldWRvQ2xhc3NDYWNoZUtleShlbGVtZW50LCBoYXNTZWxlY3RvciksIG1hdGNoVHlwZUZv
ckNhY2hlKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JGaWx0ZXIuY3BwCmluZGV4IDAxOTEzMjY0ZjAzYzAxOTVkMTE2NTM1YWY0NzFiZTk1NTI0NGRk
YTkuLmY4ZjJjZWMxY2RjMjk0NDYxZDJkMDUzNzc3ZDM0ZTJkMGFlY2E3MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgYm9vbCBp
c0V4Y2x1ZGVkQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG5h
bWUgPT0gSFRNTE5hbWVzOjpjbGFzc0F0dHItPmxvY2FsTmFtZSgpIHx8IG5hbWUgPT0gSFRNTE5h
bWVzOjppZEF0dHItPmxvY2FsTmFtZSgpIHx8IG5hbWUgPT0gSFRNTE5hbWVzOjpzdHlsZUF0dHIt
PmxvY2FsTmFtZSgpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdEVsZW1lbnRJZGVu
dGlmaWVySGFzaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFZlY3Rvcjx1bnNpZ25lZCwgND4m
IGlkZW50aWZpZXJIYXNoZXMpCit2b2lkIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0RWxlbWVudElk
ZW50aWZpZXJIYXNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPHVuc2lnbmVkLCA0
PiYgaWRlbnRpZmllckhhc2hlcykKIHsKICAgICBBdG9tU3RyaW5nIHRhZ0xvd2VyY2FzZUxvY2Fs
TmFtZSA9IGVsZW1lbnQubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAg
ICBpZGVudGlmaWVySGFzaGVzLmFwcGVuZCh0YWdMb3dlcmNhc2VMb2NhbE5hbWUuaW1wbCgpLT5l
eGlzdGluZ0hhc2goKSAqIFRhZ05hbWVTYWx0KTsKQEAgLTEzNCwxNSArMTM0LDcgQEAgdm9pZCBT
ZWxlY3RvckZpbHRlcjo6cG9wUGFyZW50c1VudGlsKEVsZW1lbnQqIHBhcmVudCkKICAgICB9CiB9
CiAKLXN0cnVjdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyB7Ci0gICAgdXNpbmcgSGFzaFZlY3Rv
ciA9IFZlY3Rvcjx1bnNpZ25lZCwgOD47Ci0gICAgSGFzaFZlY3RvciBpZHM7Ci0gICAgSGFzaFZl
Y3RvciBjbGFzc2VzOwotICAgIEhhc2hWZWN0b3IgdGFnczsKLSAgICBIYXNoVmVjdG9yIGF0dHJp
YnV0ZXM7Ci19OwotCi1zdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdFNpbXBsZVNlbGVjdG9ySGFz
aChDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVkSGFzaGVzLCBjb25zdCBDU1NTZWxl
Y3RvciYgc2VsZWN0b3IpCit2b2lkIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0U2ltcGxlU2VsZWN0
b3JIYXNoKENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBjb2xsZWN0ZWRIYXNoZXMsIGNvbnN0IENT
U1NlbGVjdG9yJiBzZWxlY3RvcikKIHsKICAgICBzd2l0Y2ggKHNlbGVjdG9yLm1hdGNoKCkpIHsK
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKQEAgLTE3Niw3ICsxNjgsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgY29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaChDb2xsZWN0ZWRTZWxlY3Rvckhhc2hl
cyYgY29sbGVjdGVkSAogICAgIH0KIH0KIAotc3RhdGljIENvbGxlY3RlZFNlbGVjdG9ySGFzaGVz
IGNvbGxlY3RTZWxlY3Rvckhhc2hlcyhjb25zdCBDU1NTZWxlY3RvciYgcmlnaHRtb3N0U2VsZWN0
b3IpCithdXRvIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0U2VsZWN0b3JIYXNoZXMoY29uc3QgQ1NT
U2VsZWN0b3ImIHJpZ2h0bW9zdFNlbGVjdG9yKSAtPiBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcwog
ewogICAgIENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIGNvbGxlY3RlZEhhc2hlczsKIApAQCAtMjEw
LDkgKzIwMiw5IEBAIHN0YXRpYyBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyBjb2xsZWN0U2VsZWN0
b3JIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3ImIHJpZ2h0bW9zCiAgICAgcmV0dXJuIGNvbGxlY3Rl
ZEhhc2hlczsKIH0KIAotc3RhdGljIFNlbGVjdG9yRmlsdGVyOjpIYXNoZXMgY2hvb3NlU2VsZWN0
b3JIYXNoZXNGb3JGaWx0ZXIoY29uc3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmIGNvbGxlY3Rl
ZFNlbGVjdG9ySGFzaGVzKQorYXV0byBTZWxlY3RvckZpbHRlcjo6Y2hvb3NlU2VsZWN0b3JIYXNo
ZXNGb3JGaWx0ZXIoY29uc3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmIGNvbGxlY3RlZFNlbGVj
dG9ySGFzaGVzKSAtPiBIYXNoZXMKIHsKLSAgICBTZWxlY3RvckZpbHRlcjo6SGFzaGVzIHJlc3Vs
dEhhc2hlczsKKyAgICBIYXNoZXMgcmVzdWx0SGFzaGVzOwogICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKIAogICAgIGF1dG8gYWRkSWZOZXcgPSBbJl0gKHVuc2lnbmVkIGhhc2gpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yRmlsdGVyLmgKaW5kZXggYTg0Nzk3NDYwNzM0Y2NkYjE0Y2I3NzVlNDJkYTI2
ZjhkNTBkMWVjMS4uMDRlYzUzNzAyMzE1NzEwMmJlMDYxMmQ1YjE5OTY3N2QwMWU0ZjU2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmgKQEAgLTUwLDggKzUwLDIxIEBAIHB1YmxpYzoK
ICAgICBib29sIGZhc3RSZWplY3RTZWxlY3Rvcihjb25zdCBIYXNoZXMmKSBjb25zdDsKICAgICBz
dGF0aWMgSGFzaGVzIGNvbGxlY3RIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3ImKTsKIAorICAgIHN0
YXRpYyB2b2lkIGNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyhjb25zdCBFbGVtZW50Jiwg
VmVjdG9yPHVuc2lnbmVkLCA0PiYpOworCisgICAgc3RydWN0IENvbGxlY3RlZFNlbGVjdG9ySGFz
aGVzIHsKKyAgICAgICAgdXNpbmcgSGFzaFZlY3RvciA9IFZlY3Rvcjx1bnNpZ25lZCwgOD47Cisg
ICAgICAgIEhhc2hWZWN0b3IgaWRzOworICAgICAgICBIYXNoVmVjdG9yIGNsYXNzZXM7CisgICAg
ICAgIEhhc2hWZWN0b3IgdGFnczsKKyAgICAgICAgSGFzaFZlY3RvciBhdHRyaWJ1dGVzOworICAg
IH07CisgICAgc3RhdGljIHZvaWQgY29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaChDb2xsZWN0ZWRT
ZWxlY3Rvckhhc2hlcyYsIGNvbnN0IENTU1NlbGVjdG9yJik7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBpbml0aWFsaXplUGFyZW50U3RhY2soRWxlbWVudCYgcGFyZW50KTsKKyAgICBzdGF0aWMgQ29s
bGVjdGVkU2VsZWN0b3JIYXNoZXMgY29sbGVjdFNlbGVjdG9ySGFzaGVzKGNvbnN0IENTU1NlbGVj
dG9yJiByaWdodG1vc3RTZWxlY3Rvcik7CisgICAgc3RhdGljIEhhc2hlcyBjaG9vc2VTZWxlY3Rv
ckhhc2hlc0ZvckZpbHRlcihjb25zdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYpOwogCiAgICAg
c3RydWN0IFBhcmVudFN0YWNrRnJhbWUgewogICAgICAgICBQYXJlbnRTdGFja0ZyYW1lKCkgOiBl
bGVtZW50KDApIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSGFzU2VsZWN0
b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSGFzU2VsZWN0b3JGaWx0ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQyNmYyODAxMzE3ZTBmOWQ1NTRmYmNiNDY1ZTBkZmFjODYzZjk0M2YKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNTZWxlY3RvckZpbHRlci5j
cHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkhhc1NlbGVjdG9yRmlsdGVyLmgiCisKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgorI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlOjpTdHlsZSB7CisKKy8vIEZJWE1FOiBTdXBwb3J0IGFk
ZGl0aW9uYWwgcHNldWRvLWNsYXNzZXMuCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEhvdmVy
U2FsdCA9IDEwMTsKKworSGFzU2VsZWN0b3JGaWx0ZXI6Okhhc1NlbGVjdG9yRmlsdGVyKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQsIFR5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQoreworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgVHlwZTo6RGVzY2VuZGFudHM6CisgICAgICAgIGZv
ciAoYXV0byYgZGVzY2VuZGFudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGVsZW1lbnQp
KQorICAgICAgICAgICAgYWRkKGRlc2NlbmRhbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFR5cGU6OkNoaWxkcmVuOgorICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5
cGU8RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICBhZGQoY2hpbGQpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK2F1dG8gSGFzU2VsZWN0b3JGaWx0ZXI6OnR5cGVGb3JNYXRjaEVs
ZW1lbnQoTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVudCkgLT4gc3RkOjpvcHRpb25hbDxUeXBlPgor
eworICAgIHN3aXRjaCAobWF0Y2hFbGVtZW50KSB7CisgICAgY2FzZSBNYXRjaEVsZW1lbnQ6Okhh
c0NoaWxkOgorICAgICAgICByZXR1cm4gVHlwZTo6Q2hpbGRyZW47CisgICAgY2FzZSBNYXRjaEVs
ZW1lbnQ6Okhhc0Rlc2NlbmRhbnQ6CisgICAgICAgIHJldHVybiBUeXBlOjpEZXNjZW5kYW50czsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4geyB9OworICAgIH0KK30KKworYXV0byBIYXNT
ZWxlY3RvckZpbHRlcjo6bWFrZUtleShjb25zdCBDU1NTZWxlY3RvciYgaGFzU2VsZWN0b3IpIC0+
IEtleQoreworICAgIFNlbGVjdG9yRmlsdGVyOjpDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyBoYXNo
ZXM7CisgICAgYm9vbCBoYXNIb3ZlckluQ29tcG91bmQgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8q
IHNpbXBsZVNlbGVjdG9yID0gJmhhc1NlbGVjdG9yOyBzaW1wbGVTZWxlY3Rvcjsgc2ltcGxlU2Vs
ZWN0b3IgPSBzaW1wbGVTZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CisgICAgICAgIGlmIChzaW1w
bGVTZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MgJiYgc2ltcGxl
U2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hv
dmVyKQorICAgICAgICAgICAgaGFzSG92ZXJJbkNvbXBvdW5kID0gdHJ1ZTsKKyAgICAgICAgU2Vs
ZWN0b3JGaWx0ZXI6OmNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2goaGFzaGVzLCAqc2ltcGxlU2Vs
ZWN0b3IpOworICAgICAgICBpZiAoIWhhc2hlcy5pZHMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChzaW1wbGVTZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxl
Y3Rvcjo6U3Vic2VsZWN0b3IpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBhdXRv
IHBpY2tLZXkgPSBbJl0oYXV0byYgaGFzaFZlY3RvcikgLT4gS2V5IHsKKyAgICAgICAgaWYgKGhh
c2hWZWN0b3IuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICho
YXNIb3ZlckluQ29tcG91bmQpCisgICAgICAgICAgICByZXR1cm4gaGFzaFZlY3RvclswXSAqIEhv
dmVyU2FsdDsKKyAgICAgICAgcmV0dXJuIGhhc2hWZWN0b3JbMF07CisgICAgfTsKKworICAgIGlm
IChhdXRvIGtleSA9IHBpY2tLZXkoaGFzaGVzLmlkcykpCisgICAgICAgIHJldHVybiBrZXk7Cisg
ICAgaWYgKGF1dG8ga2V5ID0gcGlja0tleShoYXNoZXMuY2xhc3NlcykpCisgICAgICAgIHJldHVy
biBrZXk7CisgICAgaWYgKGF1dG8ga2V5ID0gcGlja0tleShoYXNoZXMuYXR0cmlidXRlcykpCisg
ICAgICAgIHJldHVybiBrZXk7CisgICAgcmV0dXJuIHBpY2tLZXkoaGFzaGVzLnRhZ3MpOworfQor
Cit2b2lkIEhhc1NlbGVjdG9yRmlsdGVyOjphZGQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK3sK
KyAgICBWZWN0b3I8dW5zaWduZWQsIDQ+IGVsZW1lbnRIYXNoZXM7CisgICAgU2VsZWN0b3JGaWx0
ZXI6OmNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyhlbGVtZW50LCBlbGVtZW50SGFzaGVz
KTsKKworICAgIGZvciAoYXV0byBoYXNoIDogZWxlbWVudEhhc2hlcykKKyAgICAgICAgbV9maWx0
ZXIuYWRkKGhhc2gpOworCisgICAgaWYgKGVsZW1lbnQuaG92ZXJlZCgpKSB7CisgICAgICAgIGZv
ciAoYXV0byBoYXNoIDogZWxlbWVudEhhc2hlcykKKyAgICAgICAgICAgIG1fZmlsdGVyLmFkZCho
YXNoICogSG92ZXJTYWx0KTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0hhc1NlbGVjdG9yRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNT
ZWxlY3RvckZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5OWU4MmE5ZTc2YjFiMGYyYzk5NDUxNDgxNWZk
M2Y1YzBlOTk1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNT
ZWxlY3RvckZpbHRlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9CbG9vbUZpbHRl
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUgeworCitlbnVtIGNs
YXNzIE1hdGNoRWxlbWVudCA6IHVpbnQ4X3Q7CisKK2NsYXNzIEhhc1NlbGVjdG9yRmlsdGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5
cGUgOiB1aW50OF90IHsgQ2hpbGRyZW4sIERlc2NlbmRhbnRzIH07CisgICAgSGFzU2VsZWN0b3JG
aWx0ZXIoY29uc3QgRWxlbWVudCYsIFR5cGUpOworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdHlwZUZvck1h
dGNoRWxlbWVudChNYXRjaEVsZW1lbnQpOworCisgICAgdXNpbmcgS2V5ID0gdW5zaWduZWQ7Cisg
ICAgc3RhdGljIEtleSBtYWtlS2V5KGNvbnN0IENTU1NlbGVjdG9yJiBoYXNTZWxlY3Rvcik7CisK
KyAgICBib29sIHJlamVjdChjb25zdCBDU1NTZWxlY3RvciYgaGFzU2VsZWN0b3IpIGNvbnN0IHsg
cmV0dXJuIHJlamVjdChtYWtlS2V5KGhhc1NlbGVjdG9yKSk7IH0KKyAgICBib29sIHJlamVjdChL
ZXkga2V5KSBjb25zdCB7IHJldHVybiAhbV9maWx0ZXIubWF5Q29udGFpbihrZXkpOyB9CisKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGFkZChjb25zdCBFbGVtZW50Jik7CisKKyAgICBjb25zdCBUeXBl
IG1fdHlwZTsKKyAgICBCbG9vbUZpbHRlcjwxMj4gbV9maWx0ZXI7Cit9OworCit9Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TZWxlY3Rvck1hdGNoaW5nU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS5oCmluZGV4IDQyOWFiOTZj
ZDBlMjcxMTI5MWFiOTNmZjI5MTM3ZGQ2YjFkOTA3MzMuLjJiNTNjZDNiYWJmNjQ4YjNlN2VjZGEy
OTZlN2I5YjJmNDI1Mzg5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVj
dG9yTWF0Y2hpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVjdG9yTWF0
Y2hpbmdTdGF0ZS5oCkBAIC0yNCwyMyArMjQsMzIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJIYXNTZWxlY3RvckZpbHRlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmU6OlN0eWxlIHsKIAot
dXNpbmcgSGFzUHNldWRvQ2xhc3NDYWNoZUtleSA9IHN0ZDo6cGFpcjxjb25zdCBDU1NTZWxlY3Rv
ciosIGNvbnN0IEVsZW1lbnQqPjsKK3VzaW5nIEhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkgPSBzdGQ6
OnBhaXI8Y29uc3QgRWxlbWVudCosIGNvbnN0IENTU1NlbGVjdG9yKj47Cit1c2luZyBIYXNQc2V1
ZG9DbGFzc0ZpbHRlcktleSA9IHN0ZDo6cGFpcjxjb25zdCBFbGVtZW50KiwgdWludDhfdD47CiAK
IGVudW0gY2xhc3MgSGFzUHNldWRvQ2xhc3NNYXRjaCA6IHVpbnQ4X3QgeyBOb25lLCBNYXRjaGVz
LCBGYWlscywgRmFpbHNTdWJ0cmVlIH07CiAKIHN0cnVjdCBTZWxlY3Rvck1hdGNoaW5nU3RhdGUg
ewogICAgIFNlbGVjdG9yRmlsdGVyIHNlbGVjdG9yRmlsdGVyOworCiAgICAgSGFzaE1hcDxIYXNQ
c2V1ZG9DbGFzc0NhY2hlS2V5LCBIYXNQc2V1ZG9DbGFzc01hdGNoPiBoYXNQc2V1ZG9DbGFzc01h
dGNoQ2FjaGU7CisgICAgSGFzaE1hcDxIYXNQc2V1ZG9DbGFzc0ZpbHRlcktleSwgc3RkOjp1bmlx
dWVfcHRyPEhhc1NlbGVjdG9yRmlsdGVyPj4gaGFzUHNldWRvQ2xhc3NTZWxlY3RvckZpbHRlcnM7
CiB9OwogCi1pbmxpbmUgSGFzUHNldWRvQ2xhc3NDYWNoZUtleSBtYWtlSGFzUHNldWRvQ2xhc3ND
YWNoZUtleShjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCitpbmxpbmUgSGFzUHNldWRvQ2xhc3NDYWNoZUtleSBtYWtlSGFzUHNldWRvQ2xhc3NDYWNo
ZUtleShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3Ip
Cit7CisgICAgcmV0dXJuIHsgJmVsZW1lbnQsICZzZWxlY3RvciB9OworfQorCitpbmxpbmUgSGFz
UHNldWRvQ2xhc3NGaWx0ZXJLZXkgbWFrZUhhc1BzZXVkb0NsYXNzRmlsdGVyS2V5KGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQsIEhhc1NlbGVjdG9yRmlsdGVyOjpUeXBlIHR5cGUpCiB7Ci0gICAgcmV0
dXJuIHsgJnNlbGVjdG9yLCAmZWxlbWVudCB9OworICAgIHJldHVybiB7ICZlbGVtZW50LCBzdGF0
aWNfY2FzdDx1aW50OF90Pih0eXBlKSB9OwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447259</attachid>
            <date>2021-12-15 10:50:39 -0800</date>
            <delta_ts>2021-12-15 11:46:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234341-20211215205038.patch</filename>
            <type>text/plain</type>
            <size>25627</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNjE0ZjI1Y2ZmZjkx
YTAzZmM3MjYxZWI4N2QzOTMxNTFhOGI0Zi4uYjI1YWQ3MmY5MzdmOTA0OTVjMjc3OGRjNDQ2ODcz
MDc0NThiZjQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIxLTEyLTE1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gVXNlIEJsb29tIGZpbHRlciB0byBxdWlja2x5IHJlamVjdCA6aGFzKCkgc2VsZWN0b3Jz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzNDEK
KworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgV2UgY2FuIGRy
YW1hdGljYWxseSBzcGVlZCB1cCBjYXNlcyB3aGVyZSB0aGVyZSBhcmUgbWFueSA6aGFzIHJ1bGVz
LCBtb3N0IG9mIHdoaWNoIGRvbid0IG1hdGNoIHRoZWlyIGFyZ3VtZW50CisgICAgICAgIGJ5IGJ1
aWxkaW5nIGEgQmxvb20gZmlsdGVyIGRlc2NyaWJpbmcgdGhlIGZlYXR1cmVzIG9mIHRoZSBzdWJ0
cmVlLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzIGNv
bnN0KToKKworICAgICAgICBCdWlsZCBhbmQgY2FjaGUgSGFzU2VsZWN0b3JGaWx0ZXIgcGVyIGVs
ZW1lbnQvZmlsdGVyIHR5cGUuIEl0IHdpbGwgYmUgY29uc3RydWN0ZWQgb25seSBpZiBtdWx0aXBs
ZSA6aGFzKCkKKyAgICAgICAgc2VsZWN0b3JzIGFyZSB0ZXN0ZWQgZm9yIHRoZSBzYW1lIGVsZW1l
bnQgKG90aGVyd2lzZSB0aGUgcmVndWxhciBtYXRjaCBjYWNoZSBpcyBtb3JlIGVmZmljaWVudCku
CisgICAgICAgIFVzZSBpdCB0byBxdWlja2x5IHJlamVjdCBzZWxlY3RvcnMuCisgICAgICAgIEFs
c28gYWRkIGEgYmFzaWMgaW5pdGFsIG9wdGltaXphdGlvbiB0byBiYWlsIG91dCBpZiB0aGVyZSBh
cmUgbm8gY2hpbGQvc2libGluZyBlbGVtZW50cyB0aGF0IGNvdWxkIG1hdGNoLgorCisgICAgICAg
ICogY3NzL1NlbGVjdG9yRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yRmls
dGVyOjpjb2xsZWN0RWxlbWVudElkZW50aWZpZXJIYXNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JGaWx0ZXI6OmNvbGxlY3RTZWxlY3Rvckhhc2hlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckZpbHRlcjo6Y2hvb3NlU2VsZWN0b3JIYXNoZXNGb3JGaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdEVsZW1lbnRJZGVudGlmaWVySGFzaGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2gpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFNlbGVjdG9ySGFzaGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNob29zZVNlbGVjdG9ySGFzaGVzRm9yRmlsdGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JGaWx0ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9IYXNTZWxl
Y3RvckZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVj
dG9yRmlsdGVyOjpIYXNTZWxlY3RvckZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
SGFzU2VsZWN0b3JGaWx0ZXI6OnR5cGVGb3JNYXRjaEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmlsdGVyOjptYWtlS2V5KToKKworICAgICAgICBUaGUga2V5
IGNvbnNpc3RzIG9mIHRoZSBtb3N0IHNwZWNpZmljIHN0cmluZyBpbiB0aGUgcmlnaHRtb3N0IGNv
bXBvdW5kIG9mIHRoZSBzZWxlY3RvciBhbG9uZyB3aXRoCisgICAgICAgIDpob3ZlciBwc2V1ZG8g
Y2xhc3MsIGlmIGFueS4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmls
dGVyOjphZGQpOgorCisgICAgICAgIEFkZCBhbiBFbGVtZW50IHRvIHRoZSBmaWx0ZXIuCisgICAg
ICAgIFRoZSBmZWF0dXJlcyBjb2xsZWN0ZWQgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgcmVndWxh
ciBzZWxlY3RvciBmaWx0ZXIsIHBsdXMgcGVybXV0YXRpb25zIHdpdGgKKyAgICAgICAgOmhvdmVy
IHBzZXVkby1jbGFzcyBpZiBpdCB3b3VsZCBtYXRjaC4KKworICAgICAgICAqIHN0eWxlL0hhc1Nl
bGVjdG9yRmlsdGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVjdG9y
TWF0Y2hpbmdTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Okhhc1NlbGVjdG9yRmls
dGVyOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpIYXNTZWxlY3RvckZp
bHRlcjo6cmVqZWN0IGNvbnN0KToKKworICAgICAgICBBZGQgSGFzU2VsZWN0b3JGaWx0ZXIgd2hp
Y2ggdXNlcyBub24tY291bnRpbmcgQmxvb21GaWx0ZXIgaW50ZXJuYWxseS4gVGhlIHNpemUgb2Yg
dGhlIGZpbHRlciBpcyA1MTIgYnl0ZXMuCisKKyAgICAgICAgKiBzdHlsZS9TZWxlY3Rvck1hdGNo
aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjptYWtlSGFzUHNldWRvQ2xhc3NT
ZWxlY3RvckZpbHRlcktleSk6CisKIDIwMjEtMTItMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVHdpdHRlciBzY3JvbGwgc3R1dHRlcjogZW5zdXJl
IHRoYXQgQ0EgYmFja2luZyBzdG9yZSBpcyBhbHdheXMgZGVhbGxvY2F0ZWQgb24gdGhlIG1haW4g
dGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDY0MDk3MjdlYTQ4MTNjYjJkYzhhZmVjNDAzNmE3OGZh
YzM1YzE5NmYuLmZlYzE3YWNmZjBlZDQ1NTdiZTYwYTE1ZTg1OGI4NmIzNThjNWI1MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yNTQzLDYgKzI1NDMsNyBAQCBzdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwCiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKIHN0eWxlL0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3Bw
CitzdHlsZS9IYXNTZWxlY3RvckZpbHRlci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcAogc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAogc3R5bGUvSW5zcGVjdG9yQ1NTT01X
cmFwcGVycy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkNjZhNmQxY2NlZGY2ZWE1YjAxNzVlYzc0YjVmZTZlZDIwOTYxMGMz
Li4yMTI4NTI2NDU2YTk4NGIxN2M1ZjYxODE5YzExOWM1MDEyNjdkYzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Mzg0LDYg
KzUzODQsNyBAQAogCQlFNEU4QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0RThCNEVBMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dC5oICovOyB9OwogCQlFNEU4QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNj
cmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5NEQ2MTIy
RkYxNThBMDBERDE5MUYgLyogTGVnYWN5TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIExl
Z2FjeUxpbmVMYXlvdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFNEVEM0VDQzI3NjhBNTFEMDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RUQzRUNB
Mjc2OEE1MUMwMEYxN0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oICovOyB9OwogCQlFNEYwQkUz
MTI1NzEyRjZFMDA5RTc0MzEgLyogQ2FyZXRSZWN0Q29tcHV0YXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RjBCRTJFMjU3MTBBNzUwMDlFNzQz
MSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5oICovOyB9OwogCQlFNEYzOEQxQjI2MjZGMTNCMDA3
QjEwNjQgLyogRGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEYzOEQxOTI2MjZGMTNCMDA3QjEwNjQgLyog
RGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5LmggKi87IH07CiAJCUU0RjgxOUM2MjZGQjRFQkYw
MDk0RTE2MiAvKiBJbmxpbmVCb3hQYWludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEY4MTlDNTI2RkI0RUJGMDA5NEUxNjIgLyogSW5saW5lQm94
UGFpbnRlci5oICovOyB9OwpAQCAtMTc0NjYsNiArMTc0NjcsOCBAQAogCQlFNEU4QjRFRDIxNkI3
OUY0MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEU4QjRGMDIxNkI4QjVGMDBCODgzNEQg
LyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhc2NhZGVEZXNj
cmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEVEM0VDQTI3NjhBNTFD
MDBGMTdBQzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGFzU2VsZWN0b3JGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTRFRDNFQ0QyNzY4QTY4ODAwRjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhhc1NlbGVjdG9yRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRGMEJFMkUyNTcxMEE3NTAwOUU3NDMxIC8qIENhcmV0UmVjdENvbXB1dGF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcmV0UmVjdENvbXB1dGF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RjBCRTMwMjU3MTBBNzYwMDlF
NzQzMSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDYXJldFJlY3RDb21wdXRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0RjM4RDE5MjYyNkYxM0IwMDdCMTA2NCAvKiBEZWZhdWx0UmVzb3VyY2VM
b2FkUHJpb3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVmYXVsdFJl
c291cmNlTG9hZFByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTA4
MCw2ICszMTA4Myw4IEBACiAJCQkJRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8qIENsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRkJEQjYxOUExNkQ2MDMyQTAwQkIzMzk0IC8qIEVs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCAqLywKIAkJCQlGQkRCNjE5RTE2RDYwMzY1MDBCQjMzOTQg
LyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCAqLywKKwkJCQlFNEVEM0VDRDI3NjhBNjg4MDBGMTdB
QzggLyogSGFzU2VsZWN0b3JGaWx0ZXIuY3BwICovLAorCQkJCUU0RUQzRUNBMjc2OEE1MUMwMEYx
N0FDOCAvKiBIYXNTZWxlY3RvckZpbHRlci5oICovLAogCQkJCUU0QTgxNEREMUM3MzM4RDEwMEJG
ODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCiAJCQkJRTRBODE0REYxQzczMzhF
QjAwQkY4NUFDIC8qIElkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJMUMwMTA2RkUxOTI1
OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5jcHAgKi8sCkBAIC0zNDQ3Myw2ICsz
NDQ3OCw3IEBACiAJCQkJMjZFQTg5QTcxQjRGMkI3NTAwOEM1RkQyIC8qIEhhc2hhYmxlQWN0aW9u
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ4MkI3NDYxMTk4QzM1NDAwQkZCMDA1IC8qIEhh
c2hDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3NDhCRTAxMkNCRjJEQzAwMUZC
QTQxIC8qIEhhc2hUb29scy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTRFRDNFQ0MyNzY4QTUxRDAw
RjE3QUM4IC8qIEhhc1NlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFRUYz
RDI1Nzk5RkI1MDA2NTYzQkIgLyogSGRyTWV0YWRhdGFUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREE1OTU5MzIxNDZERUMzMDBBODQxODUgLyogSEVWQ1V0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RBNTk1OTgyMTQ2REY3ODAwQTg0MTg1IC8qIEhFVkNVdGlsaXRpZXNDb2NvYS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4
IDNhMjIwNTg0OGMzOTlhMjQ5ZjAxNjE5YTUwNTBjNzI4OTM5NTYwNjAuLjc5ZDIwMjkyNGNmOWI2
YTNlZGNiMzkwYmVmZTJjNDI1MjQ5NTY2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwCkBAIC0xMjQ5LDEyICsxMjQ5LDMxIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpt
YXRjaFNlbGVjdG9yTGlzdChDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29uc3QK
IAogYm9vbCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250
ZXh0JiBjaGVja2luZ0NvbnRleHQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IENTU1Nl
bGVjdG9yJiBoYXNTZWxlY3RvcikgY29uc3QKIHsKKyAgICBhdXRvIG1hdGNoRWxlbWVudCA9IFN0
eWxlOjpjb21wdXRlSGFzUHNldWRvQ2xhc3NNYXRjaEVsZW1lbnQoaGFzU2VsZWN0b3IpOworCisg
ICAgYXV0byBjYW5NYXRjaCA9IFsmXSB7CisgICAgICAgIHN3aXRjaCAobWF0Y2hFbGVtZW50KSB7
CisgICAgICAgIGNhc2UgU3R5bGU6Ok1hdGNoRWxlbWVudDo6SGFzQ2hpbGQ6CisgICAgICAgIGNh
c2UgU3R5bGU6Ok1hdGNoRWxlbWVudDo6SGFzRGVzY2VuZGFudDoKKyAgICAgICAgICAgIHJldHVy
biAhIWVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQoKTsKKyAgICAgICAgY2FzZSBTdHlsZTo6TWF0
Y2hFbGVtZW50OjpIYXNTaWJsaW5nOgorICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6
Okhhc1NpYmxpbmdEZXNjZW5kYW50OgorICAgICAgICAgICAgcmV0dXJuICEhZWxlbWVudC5uZXh0
RWxlbWVudFNpYmxpbmcoKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9OworICAgIH07CisKKyAgICAvLyBTZWUgaWYgdGhlcmUgYXJlIGFueSBl
bGVtZW50cyB0aGF0IHRoaXMgOmhhcygpIHNlbGVjdG9yIGNvdWxkIG1hdGNoLgorICAgIGlmICgh
Y2FuTWF0Y2goKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgYXV0byogY2FjaGUgPSBj
aGVja2luZ0NvbnRleHQuc2VsZWN0b3JNYXRjaGluZ1N0YXRlID8gJmNoZWNraW5nQ29udGV4dC5z
ZWxlY3Rvck1hdGNoaW5nU3RhdGUtPmhhc1BzZXVkb0NsYXNzTWF0Y2hDYWNoZSA6IG51bGxwdHI7
CiAKLSAgICBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaCogY2FjaGVkTWF0Y2ggPSBudWxscHRy
OwotICAgIGlmIChjYWNoZSkgewotICAgICAgICBjYWNoZWRNYXRjaCA9ICZjYWNoZS0+YWRkKFN0
eWxlOjptYWtlSGFzUHNldWRvQ2xhc3NDYWNoZUtleShoYXNTZWxlY3RvciwgZWxlbWVudCksIFN0
eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpOb25lKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgICAg
IHN3aXRjaCAoKmNhY2hlZE1hdGNoKSB7CisgICAgYXV0byBjaGVja0ZvckNhY2hlZE1hdGNoID0g
WyZdKCkgLT4gc3RkOjpvcHRpb25hbDxib29sPiB7CisgICAgICAgIGlmICghY2FjaGUpCisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICBzd2l0Y2ggKGNhY2hlLT5nZXQoU3R5bGU6Om1h
a2VIYXNQc2V1ZG9DbGFzc0NhY2hlS2V5KGVsZW1lbnQsIGhhc1NlbGVjdG9yKSkpIHsKICAgICAg
ICAgY2FzZSBTdHlsZTo6SGFzUHNldWRvQ2xhc3NNYXRjaDo6TWF0Y2hlczoKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpG
YWlsczoKQEAgLTEyNjMsNiArMTI4MiwzNCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hI
YXNQc2V1ZG9DbGFzcyhDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29ucwogICAg
ICAgICBjYXNlIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpOb25lOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9OworCisgICAgLy8g
U2VlIGlmIHdlIGtub3cgdGhlIHJlc3VsdCBhbHJlYWR5LgorICAgIGlmIChhdXRvIG1hdGNoID0g
Y2hlY2tGb3JDYWNoZWRNYXRjaCgpKQorICAgICAgICByZXR1cm4gKm1hdGNoOworCisgICAgYXV0
byBmaWx0ZXJGb3JFbGVtZW50ID0gWyZdKCkgLT4gU3R5bGU6Okhhc1NlbGVjdG9yRmlsdGVyKiB7
CisgICAgICAgIGlmICghY2hlY2tpbmdDb250ZXh0LnNlbGVjdG9yTWF0Y2hpbmdTdGF0ZSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBhdXRvIHR5cGUgPSBTdHlsZTo6SGFz
U2VsZWN0b3JGaWx0ZXI6OnR5cGVGb3JNYXRjaEVsZW1lbnQobWF0Y2hFbGVtZW50KTsKKyAgICAg
ICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGF1dG8m
IGZpbHRlcnNNYXAgPSBjaGVja2luZ0NvbnRleHQuc2VsZWN0b3JNYXRjaGluZ1N0YXRlLT5oYXNQ
c2V1ZG9DbGFzc1NlbGVjdG9yRmlsdGVyczsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBmaWx0
ZXJzTWFwLmFkZChTdHlsZTo6bWFrZUhhc1BzZXVkb0NsYXNzRmlsdGVyS2V5KGVsZW1lbnQsICp0
eXBlKSwgc3RkOjp1bmlxdWVfcHRyPFN0eWxlOjpIYXNTZWxlY3RvckZpbHRlcj4oKSk7CisgICAg
ICAgIC8vIE9ubHkgYnVpbGQgYSBmaWx0ZXIgaWYgdGhlIHNhbWUgZWxlbWVudCBnZXRzIGNoZWNr
ZWQgc2Vjb25kIHRpbWUgd2l0aCBhIGRpZmZlcmVudCBzZWxlY3RvciAobWlzc2VzIHRoZSBtYXRj
aCBjYWNoZSkuCisgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmICghYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSkKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFN0
eWxlOjpIYXNTZWxlY3RvckZpbHRlcj4oZWxlbWVudCwgKnR5cGUpOworICAgICAgICByZXR1cm4g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICB9OworCisgICAgLy8gQ2hlY2sg
aWYgdGhlIGJsb29tIGZpbHRlciByZWplY3RzIHRoaXMgc2VsZWN0b3IKKyAgICBpZiAoYXV0byog
ZmlsdGVyID0gZmlsdGVyRm9yRWxlbWVudCgpKSB7CisgICAgICAgIGlmIChmaWx0ZXItPnJlamVj
dChoYXNTZWxlY3RvcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
U2VsZWN0b3JDaGVja2VyIGhhc0NoZWNrZXIoZWxlbWVudC5kb2N1bWVudCgpKTsKQEAgLTEyODMs
OCArMTMzMCw4IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENo
ZWNraW5nQ29udGV4dCYgY2hlY2tpbmdDb250ZXh0LCBjb25zCiAgICAgYXV0byBjaGVja0Rlc2Nl
bmRhbnRzID0gWyZdKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnRSb290KSB7CiAgICAgICAgIGZv
ciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGRlc2NlbmRhbnRSb290KS5i
ZWdpbigpOyBpdDspIHsKICAgICAgICAgICAgIGF1dG8mIGRlc2NlbmRhbnQgPSAqaXQ7Ci0gICAg
ICAgICAgICBpZiAoY2FjaGUpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGtleSA9IFN0eWxlOjpt
YWtlSGFzUHNldWRvQ2xhc3NDYWNoZUtleShoYXNTZWxlY3RvciwgZGVzY2VuZGFudCk7CisgICAg
ICAgICAgICBpZiAoY2FjaGUgJiYgZGVzY2VuZGFudC5maXJzdEVsZW1lbnRDaGlsZCgpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHlsZTo6bWFrZUhhc1BzZXVkb0NsYXNzQ2FjaGVL
ZXkoZGVzY2VuZGFudCwgaGFzU2VsZWN0b3IpOwogICAgICAgICAgICAgICAgIGlmIChjYWNoZS0+
Z2V0KGtleSkgPT0gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzU3VidHJlZSkgewog
ICAgICAgICAgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTMwMCw4ICsxMzQ3LDYgQEAgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVj
a2luZ0NvbnRleHQsIGNvbnMKICAgICB9OwogCiAgICAgYXV0byBtYXRjaCA9IFsmXSB7Ci0gICAg
ICAgIGF1dG8gbWF0Y2hFbGVtZW50ID0gU3R5bGU6OmNvbXB1dGVIYXNQc2V1ZG9DbGFzc01hdGNo
RWxlbWVudChoYXNTZWxlY3Rvcik7Ci0KICAgICAgICAgc3dpdGNoIChtYXRjaEVsZW1lbnQpIHsK
ICAgICAgICAgLy8gOmhhcyg+IC5jaGlsZCkKICAgICAgICAgY2FzZSBTdHlsZTo6TWF0Y2hFbGVt
ZW50OjpIYXNDaGlsZDoKQEAgLTEzMTIsMTggKzEzNTcsMTcgQEAgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6Om1hdGNoSGFzUHNldWRvQ2xhc3MoQ2hlY2tpbmdDb250ZXh0JiBjaGVja2luZ0NvbnRleHQs
IGNvbnMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAvLyA6aGFzKC5kZXNjZW5kYW50KQog
ICAgICAgICBjYXNlIFN0eWxlOjpNYXRjaEVsZW1lbnQ6Okhhc0Rlc2NlbmRhbnQ6IHsKLSAgICAg
ICAgICAgIGlmICghZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChjYWNoZSkgewogICAgICAgICAgICAgICAg
IC8vIFNlZSBpZiB3ZSBhbHJlYWR5IGtub3cgdGhpcyBkZXNjZW5kYW50IHNlbGVjdG9yIGRvZXNu
J3QgbWF0Y2ggaW4gdGhpcyBzdWJ0cmVlLgogICAgICAgICAgICAgICAgIGZvciAoYXV0byogYW5j
ZXN0b3IgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5j
ZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGtleSA9
IFN0eWxlOjptYWtlSGFzUHNldWRvQ2xhc3NDYWNoZUtleShoYXNTZWxlY3RvciwgKmFuY2VzdG9y
KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHlsZTo6bWFrZUhhc1BzZXVkb0Ns
YXNzQ2FjaGVLZXkoKmFuY2VzdG9yLCBoYXNTZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChjYWNoZS0+Z2V0KGtleSkgPT0gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxz
U3VidHJlZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hlY2tEZXNjZW5kYW50
cyhlbGVtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IEFkZCBhIHNlcGFyYXRlIGNhc2Ug
Zm9yIGFkamFjZW50IGNvbWJpbmF0b3IuCkBAIC0xMzU0LDE1ICsxMzk4LDE2IEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjptYXRjaEhhc1BzZXVkb0NsYXNzKENoZWNraW5nQ29udGV4dCYgY2hlY2tp
bmdDb250ZXh0LCBjb25zCiAKICAgICBhdXRvIHJlc3VsdCA9IG1hdGNoKCk7CiAKLSAgICBpZiAo
Y2FjaGVkTWF0Y2gpIHsKLSAgICAgICAgKmNhY2hlZE1hdGNoID0gWyZdIHsKLSAgICAgICAgICAg
IGlmIChyZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFz
c01hdGNoOjpNYXRjaGVzOwotICAgICAgICAgICAgaWYgKG1hdGNoZWRJbnNpZGVTY29wZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzOwot
ICAgICAgICAgICAgcmV0dXJuIFN0eWxlOjpIYXNQc2V1ZG9DbGFzc01hdGNoOjpGYWlsc1N1YnRy
ZWU7Ci0gICAgICAgIH0oKTsKLSAgICB9CisgICAgYXV0byBtYXRjaFR5cGVGb3JDYWNoZSA9IFsm
XSB7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1Bz
ZXVkb0NsYXNzTWF0Y2g6Ok1hdGNoZXM7CisgICAgICAgIGlmIChtYXRjaGVkSW5zaWRlU2NvcGUp
CisgICAgICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzOwor
ICAgICAgICByZXR1cm4gU3R5bGU6Okhhc1BzZXVkb0NsYXNzTWF0Y2g6OkZhaWxzU3VidHJlZTsK
KyAgICB9OworCisgICAgaWYgKGNhY2hlKQorICAgICAgICBjYWNoZS0+YWRkKFN0eWxlOjptYWtl
SGFzUHNldWRvQ2xhc3NDYWNoZUtleShlbGVtZW50LCBoYXNTZWxlY3RvciksIG1hdGNoVHlwZUZv
ckNhY2hlKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JGaWx0ZXIuY3BwCmluZGV4IDAxOTEzMjY0ZjAzYzAxOTVkMTE2NTM1YWY0NzFiZTk1NTI0NGRk
YTkuLmY4ZjJjZWMxY2RjMjk0NDYxZDJkMDUzNzc3ZDM0ZTJkMGFlY2E3MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yRmlsdGVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgYm9vbCBp
c0V4Y2x1ZGVkQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG5h
bWUgPT0gSFRNTE5hbWVzOjpjbGFzc0F0dHItPmxvY2FsTmFtZSgpIHx8IG5hbWUgPT0gSFRNTE5h
bWVzOjppZEF0dHItPmxvY2FsTmFtZSgpIHx8IG5hbWUgPT0gSFRNTE5hbWVzOjpzdHlsZUF0dHIt
PmxvY2FsTmFtZSgpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdEVsZW1lbnRJZGVu
dGlmaWVySGFzaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIFZlY3Rvcjx1bnNpZ25lZCwgND4m
IGlkZW50aWZpZXJIYXNoZXMpCit2b2lkIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0RWxlbWVudElk
ZW50aWZpZXJIYXNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPHVuc2lnbmVkLCA0
PiYgaWRlbnRpZmllckhhc2hlcykKIHsKICAgICBBdG9tU3RyaW5nIHRhZ0xvd2VyY2FzZUxvY2Fs
TmFtZSA9IGVsZW1lbnQubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAg
ICBpZGVudGlmaWVySGFzaGVzLmFwcGVuZCh0YWdMb3dlcmNhc2VMb2NhbE5hbWUuaW1wbCgpLT5l
eGlzdGluZ0hhc2goKSAqIFRhZ05hbWVTYWx0KTsKQEAgLTEzNCwxNSArMTM0LDcgQEAgdm9pZCBT
ZWxlY3RvckZpbHRlcjo6cG9wUGFyZW50c1VudGlsKEVsZW1lbnQqIHBhcmVudCkKICAgICB9CiB9
CiAKLXN0cnVjdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyB7Ci0gICAgdXNpbmcgSGFzaFZlY3Rv
ciA9IFZlY3Rvcjx1bnNpZ25lZCwgOD47Ci0gICAgSGFzaFZlY3RvciBpZHM7Ci0gICAgSGFzaFZl
Y3RvciBjbGFzc2VzOwotICAgIEhhc2hWZWN0b3IgdGFnczsKLSAgICBIYXNoVmVjdG9yIGF0dHJp
YnV0ZXM7Ci19OwotCi1zdGF0aWMgaW5saW5lIHZvaWQgY29sbGVjdFNpbXBsZVNlbGVjdG9ySGFz
aChDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYgY29sbGVjdGVkSGFzaGVzLCBjb25zdCBDU1NTZWxl
Y3RvciYgc2VsZWN0b3IpCit2b2lkIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0U2ltcGxlU2VsZWN0
b3JIYXNoKENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzJiBjb2xsZWN0ZWRIYXNoZXMsIGNvbnN0IENT
U1NlbGVjdG9yJiBzZWxlY3RvcikKIHsKICAgICBzd2l0Y2ggKHNlbGVjdG9yLm1hdGNoKCkpIHsK
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKQEAgLTE3Niw3ICsxNjgsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgY29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaChDb2xsZWN0ZWRTZWxlY3Rvckhhc2hl
cyYgY29sbGVjdGVkSAogICAgIH0KIH0KIAotc3RhdGljIENvbGxlY3RlZFNlbGVjdG9ySGFzaGVz
IGNvbGxlY3RTZWxlY3Rvckhhc2hlcyhjb25zdCBDU1NTZWxlY3RvciYgcmlnaHRtb3N0U2VsZWN0
b3IpCithdXRvIFNlbGVjdG9yRmlsdGVyOjpjb2xsZWN0U2VsZWN0b3JIYXNoZXMoY29uc3QgQ1NT
U2VsZWN0b3ImIHJpZ2h0bW9zdFNlbGVjdG9yKSAtPiBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcwog
ewogICAgIENvbGxlY3RlZFNlbGVjdG9ySGFzaGVzIGNvbGxlY3RlZEhhc2hlczsKIApAQCAtMjEw
LDkgKzIwMiw5IEBAIHN0YXRpYyBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyBjb2xsZWN0U2VsZWN0
b3JIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3ImIHJpZ2h0bW9zCiAgICAgcmV0dXJuIGNvbGxlY3Rl
ZEhhc2hlczsKIH0KIAotc3RhdGljIFNlbGVjdG9yRmlsdGVyOjpIYXNoZXMgY2hvb3NlU2VsZWN0
b3JIYXNoZXNGb3JGaWx0ZXIoY29uc3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmIGNvbGxlY3Rl
ZFNlbGVjdG9ySGFzaGVzKQorYXV0byBTZWxlY3RvckZpbHRlcjo6Y2hvb3NlU2VsZWN0b3JIYXNo
ZXNGb3JGaWx0ZXIoY29uc3QgQ29sbGVjdGVkU2VsZWN0b3JIYXNoZXMmIGNvbGxlY3RlZFNlbGVj
dG9ySGFzaGVzKSAtPiBIYXNoZXMKIHsKLSAgICBTZWxlY3RvckZpbHRlcjo6SGFzaGVzIHJlc3Vs
dEhhc2hlczsKKyAgICBIYXNoZXMgcmVzdWx0SGFzaGVzOwogICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKIAogICAgIGF1dG8gYWRkSWZOZXcgPSBbJl0gKHVuc2lnbmVkIGhhc2gpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yRmlsdGVyLmgKaW5kZXggYTg0Nzk3NDYwNzM0Y2NkYjE0Y2I3NzVlNDJkYTI2
ZjhkNTBkMWVjMS4uMDRlYzUzNzAyMzE1NzEwMmJlMDYxMmQ1YjE5OTY3N2QwMWU0ZjU2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yRmlsdGVyLmgKQEAgLTUwLDggKzUwLDIxIEBAIHB1YmxpYzoK
ICAgICBib29sIGZhc3RSZWplY3RTZWxlY3Rvcihjb25zdCBIYXNoZXMmKSBjb25zdDsKICAgICBz
dGF0aWMgSGFzaGVzIGNvbGxlY3RIYXNoZXMoY29uc3QgQ1NTU2VsZWN0b3ImKTsKIAorICAgIHN0
YXRpYyB2b2lkIGNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyhjb25zdCBFbGVtZW50Jiwg
VmVjdG9yPHVuc2lnbmVkLCA0PiYpOworCisgICAgc3RydWN0IENvbGxlY3RlZFNlbGVjdG9ySGFz
aGVzIHsKKyAgICAgICAgdXNpbmcgSGFzaFZlY3RvciA9IFZlY3Rvcjx1bnNpZ25lZCwgOD47Cisg
ICAgICAgIEhhc2hWZWN0b3IgaWRzOworICAgICAgICBIYXNoVmVjdG9yIGNsYXNzZXM7CisgICAg
ICAgIEhhc2hWZWN0b3IgdGFnczsKKyAgICAgICAgSGFzaFZlY3RvciBhdHRyaWJ1dGVzOworICAg
IH07CisgICAgc3RhdGljIHZvaWQgY29sbGVjdFNpbXBsZVNlbGVjdG9ySGFzaChDb2xsZWN0ZWRT
ZWxlY3Rvckhhc2hlcyYsIGNvbnN0IENTU1NlbGVjdG9yJik7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBpbml0aWFsaXplUGFyZW50U3RhY2soRWxlbWVudCYgcGFyZW50KTsKKyAgICBzdGF0aWMgQ29s
bGVjdGVkU2VsZWN0b3JIYXNoZXMgY29sbGVjdFNlbGVjdG9ySGFzaGVzKGNvbnN0IENTU1NlbGVj
dG9yJiByaWdodG1vc3RTZWxlY3Rvcik7CisgICAgc3RhdGljIEhhc2hlcyBjaG9vc2VTZWxlY3Rv
ckhhc2hlc0ZvckZpbHRlcihjb25zdCBDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyYpOwogCiAgICAg
c3RydWN0IFBhcmVudFN0YWNrRnJhbWUgewogICAgICAgICBQYXJlbnRTdGFja0ZyYW1lKCkgOiBl
bGVtZW50KDApIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSGFzU2VsZWN0
b3JGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSGFzU2VsZWN0b3JGaWx0ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQyNmYyODAxMzE3ZTBmOWQ1NTRmYmNiNDY1ZTBkZmFjODYzZjk0M2YKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNTZWxlY3RvckZpbHRlci5j
cHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkhhc1NlbGVjdG9yRmlsdGVyLmgiCisKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJSdWxlRmVhdHVyZS5oIgorI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlOjpTdHlsZSB7CisKKy8vIEZJWE1FOiBTdXBwb3J0IGFk
ZGl0aW9uYWwgcHNldWRvLWNsYXNzZXMuCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEhvdmVy
U2FsdCA9IDEwMTsKKworSGFzU2VsZWN0b3JGaWx0ZXI6Okhhc1NlbGVjdG9yRmlsdGVyKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQsIFR5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQoreworICAg
IHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgVHlwZTo6RGVzY2VuZGFudHM6CisgICAgICAgIGZv
ciAoYXV0byYgZGVzY2VuZGFudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGVsZW1lbnQp
KQorICAgICAgICAgICAgYWRkKGRlc2NlbmRhbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFR5cGU6OkNoaWxkcmVuOgorICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5
cGU8RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICBhZGQoY2hpbGQpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK2F1dG8gSGFzU2VsZWN0b3JGaWx0ZXI6OnR5cGVGb3JNYXRjaEVs
ZW1lbnQoTWF0Y2hFbGVtZW50IG1hdGNoRWxlbWVudCkgLT4gc3RkOjpvcHRpb25hbDxUeXBlPgor
eworICAgIHN3aXRjaCAobWF0Y2hFbGVtZW50KSB7CisgICAgY2FzZSBNYXRjaEVsZW1lbnQ6Okhh
c0NoaWxkOgorICAgICAgICByZXR1cm4gVHlwZTo6Q2hpbGRyZW47CisgICAgY2FzZSBNYXRjaEVs
ZW1lbnQ6Okhhc0Rlc2NlbmRhbnQ6CisgICAgICAgIHJldHVybiBUeXBlOjpEZXNjZW5kYW50czsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4geyB9OworICAgIH0KK30KKworYXV0byBIYXNT
ZWxlY3RvckZpbHRlcjo6bWFrZUtleShjb25zdCBDU1NTZWxlY3RvciYgaGFzU2VsZWN0b3IpIC0+
IEtleQoreworICAgIFNlbGVjdG9yRmlsdGVyOjpDb2xsZWN0ZWRTZWxlY3Rvckhhc2hlcyBoYXNo
ZXM7CisgICAgYm9vbCBoYXNIb3ZlckluQ29tcG91bmQgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8q
IHNpbXBsZVNlbGVjdG9yID0gJmhhc1NlbGVjdG9yOyBzaW1wbGVTZWxlY3Rvcjsgc2ltcGxlU2Vs
ZWN0b3IgPSBzaW1wbGVTZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CisgICAgICAgIGlmIChzaW1w
bGVTZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MgJiYgc2ltcGxl
U2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hv
dmVyKQorICAgICAgICAgICAgaGFzSG92ZXJJbkNvbXBvdW5kID0gdHJ1ZTsKKyAgICAgICAgU2Vs
ZWN0b3JGaWx0ZXI6OmNvbGxlY3RTaW1wbGVTZWxlY3Rvckhhc2goaGFzaGVzLCAqc2ltcGxlU2Vs
ZWN0b3IpOworICAgICAgICBpZiAoIWhhc2hlcy5pZHMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChzaW1wbGVTZWxlY3Rvci0+cmVsYXRpb24oKSAhPSBDU1NTZWxl
Y3Rvcjo6U3Vic2VsZWN0b3IpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBhdXRv
IHBpY2tLZXkgPSBbJl0oYXV0byYgaGFzaFZlY3RvcikgLT4gS2V5IHsKKyAgICAgICAgaWYgKGhh
c2hWZWN0b3IuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICho
YXNIb3ZlckluQ29tcG91bmQpCisgICAgICAgICAgICByZXR1cm4gaGFzaFZlY3RvclswXSAqIEhv
dmVyU2FsdDsKKyAgICAgICAgcmV0dXJuIGhhc2hWZWN0b3JbMF07CisgICAgfTsKKworICAgIGlm
IChhdXRvIGtleSA9IHBpY2tLZXkoaGFzaGVzLmlkcykpCisgICAgICAgIHJldHVybiBrZXk7Cisg
ICAgaWYgKGF1dG8ga2V5ID0gcGlja0tleShoYXNoZXMuY2xhc3NlcykpCisgICAgICAgIHJldHVy
biBrZXk7CisgICAgaWYgKGF1dG8ga2V5ID0gcGlja0tleShoYXNoZXMuYXR0cmlidXRlcykpCisg
ICAgICAgIHJldHVybiBrZXk7CisgICAgcmV0dXJuIHBpY2tLZXkoaGFzaGVzLnRhZ3MpOworfQor
Cit2b2lkIEhhc1NlbGVjdG9yRmlsdGVyOjphZGQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK3sK
KyAgICBWZWN0b3I8dW5zaWduZWQsIDQ+IGVsZW1lbnRIYXNoZXM7CisgICAgU2VsZWN0b3JGaWx0
ZXI6OmNvbGxlY3RFbGVtZW50SWRlbnRpZmllckhhc2hlcyhlbGVtZW50LCBlbGVtZW50SGFzaGVz
KTsKKworICAgIGZvciAoYXV0byBoYXNoIDogZWxlbWVudEhhc2hlcykKKyAgICAgICAgbV9maWx0
ZXIuYWRkKGhhc2gpOworCisgICAgaWYgKGVsZW1lbnQuaG92ZXJlZCgpKSB7CisgICAgICAgIGZv
ciAoYXV0byBoYXNoIDogZWxlbWVudEhhc2hlcykKKyAgICAgICAgICAgIG1fZmlsdGVyLmFkZCho
YXNoICogSG92ZXJTYWx0KTsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0hhc1NlbGVjdG9yRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNT
ZWxlY3RvckZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5OWU4MmE5ZTc2YjFiMGYyYzk5NDUxNDgxNWZk
M2Y1YzBlOTk1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9IYXNT
ZWxlY3RvckZpbHRlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9CbG9vbUZpbHRl
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUgeworCitlbnVtIGNs
YXNzIE1hdGNoRWxlbWVudCA6IHVpbnQ4X3Q7CisKK2NsYXNzIEhhc1NlbGVjdG9yRmlsdGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFR5
cGUgOiB1aW50OF90IHsgQ2hpbGRyZW4sIERlc2NlbmRhbnRzIH07CisgICAgSGFzU2VsZWN0b3JG
aWx0ZXIoY29uc3QgRWxlbWVudCYsIFR5cGUpOworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gdHlwZUZvck1h
dGNoRWxlbWVudChNYXRjaEVsZW1lbnQpOworCisgICAgdXNpbmcgS2V5ID0gdW5zaWduZWQ7Cisg
ICAgc3RhdGljIEtleSBtYWtlS2V5KGNvbnN0IENTU1NlbGVjdG9yJiBoYXNTZWxlY3Rvcik7CisK
KyAgICBib29sIHJlamVjdChjb25zdCBDU1NTZWxlY3RvciYgaGFzU2VsZWN0b3IpIGNvbnN0IHsg
cmV0dXJuIHJlamVjdChtYWtlS2V5KGhhc1NlbGVjdG9yKSk7IH0KKyAgICBib29sIHJlamVjdChL
ZXkga2V5KSBjb25zdCB7IHJldHVybiAhbV9maWx0ZXIubWF5Q29udGFpbihrZXkpOyB9CisKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGFkZChjb25zdCBFbGVtZW50Jik7CisKKyAgICBjb25zdCBUeXBl
IG1fdHlwZTsKKyAgICBCbG9vbUZpbHRlcjwxMj4gbV9maWx0ZXI7Cit9OworCit9Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TZWxlY3Rvck1hdGNoaW5nU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVjdG9yTWF0Y2hpbmdTdGF0ZS5oCmluZGV4IDQyOWFiOTZj
ZDBlMjcxMTI5MWFiOTNmZjI5MTM3ZGQ2YjFkOTA3MzMuLjJiNTNjZDNiYWJmNjQ4YjNlN2VjZGEy
OTZlN2I5YjJmNDI1Mzg5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVj
dG9yTWF0Y2hpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1NlbGVjdG9yTWF0
Y2hpbmdTdGF0ZS5oCkBAIC0yNCwyMyArMjQsMzIgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJIYXNTZWxlY3RvckZpbHRlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yRmlsdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmU6OlN0eWxlIHsKIAot
dXNpbmcgSGFzUHNldWRvQ2xhc3NDYWNoZUtleSA9IHN0ZDo6cGFpcjxjb25zdCBDU1NTZWxlY3Rv
ciosIGNvbnN0IEVsZW1lbnQqPjsKK3VzaW5nIEhhc1BzZXVkb0NsYXNzQ2FjaGVLZXkgPSBzdGQ6
OnBhaXI8Y29uc3QgRWxlbWVudCosIGNvbnN0IENTU1NlbGVjdG9yKj47Cit1c2luZyBIYXNQc2V1
ZG9DbGFzc0ZpbHRlcktleSA9IHN0ZDo6cGFpcjxjb25zdCBFbGVtZW50KiwgdWludDhfdD47CiAK
IGVudW0gY2xhc3MgSGFzUHNldWRvQ2xhc3NNYXRjaCA6IHVpbnQ4X3QgeyBOb25lLCBNYXRjaGVz
LCBGYWlscywgRmFpbHNTdWJ0cmVlIH07CiAKIHN0cnVjdCBTZWxlY3Rvck1hdGNoaW5nU3RhdGUg
ewogICAgIFNlbGVjdG9yRmlsdGVyIHNlbGVjdG9yRmlsdGVyOworCiAgICAgSGFzaE1hcDxIYXNQ
c2V1ZG9DbGFzc0NhY2hlS2V5LCBIYXNQc2V1ZG9DbGFzc01hdGNoPiBoYXNQc2V1ZG9DbGFzc01h
dGNoQ2FjaGU7CisgICAgSGFzaE1hcDxIYXNQc2V1ZG9DbGFzc0ZpbHRlcktleSwgc3RkOjp1bmlx
dWVfcHRyPEhhc1NlbGVjdG9yRmlsdGVyPj4gaGFzUHNldWRvQ2xhc3NTZWxlY3RvckZpbHRlcnM7
CiB9OwogCi1pbmxpbmUgSGFzUHNldWRvQ2xhc3NDYWNoZUtleSBtYWtlSGFzUHNldWRvQ2xhc3ND
YWNoZUtleShjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQpCitpbmxpbmUgSGFzUHNldWRvQ2xhc3NDYWNoZUtleSBtYWtlSGFzUHNldWRvQ2xhc3NDYWNo
ZUtleShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3Ip
Cit7CisgICAgcmV0dXJuIHsgJmVsZW1lbnQsICZzZWxlY3RvciB9OworfQorCitpbmxpbmUgSGFz
UHNldWRvQ2xhc3NGaWx0ZXJLZXkgbWFrZUhhc1BzZXVkb0NsYXNzRmlsdGVyS2V5KGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQsIEhhc1NlbGVjdG9yRmlsdGVyOjpUeXBlIHR5cGUpCiB7Ci0gICAgcmV0
dXJuIHsgJnNlbGVjdG9yLCAmZWxlbWVudCB9OworICAgIHJldHVybiB7ICZlbGVtZW50LCBzdGF0
aWNfY2FzdDx1aW50OF90Pih0eXBlKSB9OwogfQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>