<?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>221872</bug_id>
          
          <creation_ts>2021-02-13 18:24:25 -0800</creation_ts>
          <short_desc>[JSC] PropertySlot should allow passing custom setters</short_desc>
          <delta_ts>2022-03-21 18:16:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/28031</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238180</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>annulen</cc>
    
    <cc>clopez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1728964</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-13 18:24:25 -0800</bug_when>
    <thetext>[JSC] PropertySlot should allow passing custom setters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728965</commentid>
    <comment_count>1</comment_count>
      <attachid>420230</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-13 18:33:47 -0800</bug_when>
    <thetext>Created attachment 420230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728966</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-02-13 18:34:45 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728970</commentid>
    <comment_count>3</comment_count>
      <attachid>420231</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-13 19:09:50 -0800</bug_when>
    <thetext>Created attachment 420231
Patch

Adjust JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728974</commentid>
    <comment_count>4</comment_count>
      <attachid>420233</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-13 19:58:20 -0800</bug_when>
    <thetext>Created attachment 420233
Patch

Set PropertyAttribute::Accessor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728985</commentid>
    <comment_count>5</comment_count>
      <attachid>420233</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-14 02:04:04 -0800</bug_when>
    <thetext>Comment on attachment 420233
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/VM.cpp:-391
&gt; -    , customGetterSetterFunctionMap(*this)

Nice

&gt; Source/JavaScriptCore/runtime/VM.cpp:1485
&gt; +DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(customGetterFunctionSpace, cellHeapCellType.get(), JSCustomGetterFunction) // Hash:0x18091000

This hash (// Hash:0x18091000) should be changed. So let&apos;s drop it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729417</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-15 15:11:07 -0800</bug_when>
    <thetext>Committed r272885 (234118@main): &lt;https://commits.webkit.org/234118@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729418</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-15 15:12:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74367721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729420</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-02-15 15:13:29 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #5)
&gt; r=me

Much obliged!

&gt; This hash (// Hash:0x18091000) should be changed. So let&apos;s drop it.

Dropped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729530</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-02-15 19:46:37 -0800</bug_when>
    <thetext>Awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738480</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-03-11 09:16:40 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt; Awesome.

Thanks!

---

Oops, I forgot to export WPT before landing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420230</attachid>
            <date>2021-02-13 18:33:47 -0800</date>
            <delta_ts>2021-02-13 19:42:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221872-20210214043345.patch</filename>
            <type>text/plain</type>
            <size>85440</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDIxLTAyLTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbSlNDXSBQcm9wZXJ0eVNsb3Qgc2hvdWxkIGFsbG93IHBhc3NpbmcgY3VzdG9tIHNl
dHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2g6CisKKyAgICAgICAgMS4gTWVyZ2VzIFByb3BlcnR5U2xvdDo6VHlwZUN1c3RvbUFj
Y2Vzc29yIGludG8gVHlwZUN1c3RvbSwgYWxsb3dpbmcgdG8gcGFzcyBhIHNldHRlciBmb3IKKyAg
ICAgICAgICAgQ3VzdG9tQWNjZXNzb3IgLyBDdXN0b21WYWx1ZS4gUmF3IEMrKyBmdW5jdGlvbiBw
b2ludGVycyBhcmUgdXNlZCB0byBhdm9pZCBjcmVhdGluZworICAgICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXIgaW5zdGFuY2VzIGZvciBub24tcmVpZmllZCBzdGF0aWMgcHJvcGVydGllcy4KKyAg
ICAgICAgMi4gUmV3b3JrcyBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgZm9y
IGN1c3RvbSBhY2Nlc3NvcnMsIG1ha2luZyBpdCBzaW1wbGVyLAorICAgICAgICAgICBtb3JlIHJv
YnVzdCwgYW5kIG5vIGxvbmdlciByZXF1aXJlZCB0byByZWlmeSBhbGwgc3RhdGljIHByb3BlcnRp
ZXMuCisgICAgICAgIDMuIEhvaXN0cyBHZXRWYWx1ZUZ1bmMgLyBQdXRWYWx1ZUZ1bmMgZGVjbGFy
YXRpb25zIHRvIEpTQyBuYW1lc3BhY2Ugc28gdGhleSBjYW4gYmUgdXNlZAorICAgICAgICAgICBp
biBoZWFkZXIgZmlsZXMuCisgICAgICAgIDQuIE1vdmVzIEN1c3RvbUFjY2Vzc29yJ3Mgd3JhcHBl
ciBtYXBzIHRvIEpTR2xvYmFsT2JqZWN0IChiZWNhdXNlIFZNIG91dGxpdmVzIGl0KSBhbmQKKyAg
ICAgICAgICAgc2ltcGxpZmllcyB0aGVpciBrZXlzIHRvIEMrKyBmdW5jdGlvbiBwb2ludGVycy4K
KyAgICAgICAgNS4gU3BsaXRzIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gaW50byBKU0N1
c3RvbUdldHRlckZ1bmN0aW9uIC8gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbgorICAgICAgICAgICBz
aW5jZSB0aGVpciBzaWduYXR1cmVzIGFuZCBbW0NhbGxdXSBsb2dpYyBhcmUgcXVpdGUgZGlmZmVy
ZW50LiBUaGlzIGlzIGEgbmljZSByZWZhY3RvcgorICAgICAgICAgICB0aGF0IGFsc28gc2ltcGxp
ZmllcyBnYXJiYWdlIGNvbGxlY3Rpb24gYW5kIHJlZHVjZXMgbWVtb3J5IG5lZWRlZCBmb3Igc2V0
dGVyIHdyYXBwZXJzLgorICAgICAgICA2LiBSZW1vdmVzIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0
Q3VzdG9tRGVzY3JpcHRvcigpLCBtYWtpbmcgUHJvcGVydHlEZXNjcmlwdG9yIHVuYXdhcmUgb2YK
KyAgICAgICAgICAgY3VzdG9tIGFjY2Vzc29ycy4gQWxzbywgZHJvcHMgQ3VzdG9tQWNjZXNzb3Ig
Y2hlY2sgZnJvbSB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKCkKKyAgICAgICAg
ICAgdGhhdCB3YXMgaW5jb3JyZWN0IChubyBlcnJvciBzaG91bGQgYmUgdGhyb3duIGlmIGFjY2Vz
c29ycyBhcmUgdW5jaGFuZ2VkKSB5ZXQgdW5yZWFjaGFibGUKKyAgICAgICAgICAgYmVjYXVzZSBQ
cm9wZXJ0eURlc2NyaXB0b3I6OmVxdWFsVG8oKSBpZ25vcmVzIEN1c3RvbUFjY2Vzc29yLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGZpeGVzIGEpIGFjY2Vzc29yIGZ1bmN0aW9ucyBvZiB1bmZvcmdl
YWJsZSBwcm9wZXJ0aWVzIFsxXSB0byBiZSBwZXJzaXN0ZW50CisgICAgICAgIChpbiB0ZXJtcyBv
ZiByZWZlcmVudGlhbCBlcXVhbGl0eSkgYW5kIGIpIGNyb3NzLXJlYWxtIGFjY2Vzc29yIGZ1bmN0
aW9ucyB0byBiZSBvZiBjb3JyZWN0CisgICAgICAgIGdsb2JhbCBvYmplY3QgKGluc3RlYWQgb2Yg
bGV4aWNhbCkuCisKKyAgICAgICAgWzFdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRs
LyNkZm4tdW5mb3JnZWFibGUtb24tYW4taW50ZXJmYWNlCisKKyAgICAgICAgKiBBUEkvSlNDYWxs
YmFja09iamVjdC5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogcnVudGltZS9KU0N1
c3RvbUdldHRlckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpT
Q3VzdG9tR2V0dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0N1c3RvbUdldHRlckZ1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAoSlNDOjpKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmN1c3RvbUdldHRlckZ1bmN0aW9uTWFwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmN1c3RvbVNldHRlckZ1bmN0aW9uTWFwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmN1c3RvbUdldHRlckZ1bmN0aW9uU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmN1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3Ry
dWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0Q3VzdG9tR2V0dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpn
ZXRDdXN0b21TZXR0ZXJGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjp2YWxpZGF0ZUFuZEFwcGx5UHJvcGVy
dHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6Z2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b25Gb3JHZXR0ZXJTZXR0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1By
b3BlcnR5U2xvdEZyb21UYWJsZSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3I6OnNldEFjY2Vzc29yRGVz
Y3JpcHRvcik6CisgICAgICAgIChKU0M6OlByb3BlcnR5RGVzY3JpcHRvcjo6c2V0Q3VzdG9tRGVz
Y3JpcHRvcik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5U2xvdDo6Y3VzdG9tQWNjZXNzb3JHZXR0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6
aXNDdXN0b20gY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6Y3VzdG9tU2V0dGVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDdXN0b20pOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVNsb3Q6OnNldENhY2hlYWJsZUN1c3RvbSk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5U2xvdDo6Z2V0VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6Omlz
Q3VzdG9tQWNjZXNzb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNs
b3Q6OmN1c3RvbUdldHRlclNldHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBy
b3BlcnR5U2xvdDo6c2V0Q3VzdG9tR2V0dGVyU2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1B1dFByb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wMi0x
MSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gV0VCS0lUX0VYRUNVVEFCTEUgY2FuIGluY29ycmVjdGx5IGxpbmsgZnJhbWV3b3JrCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg2NSw3ICs4NjUs
OCBAQCBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiBydW50aW1lL0pTQ1B0clRhZy5jcHAKIHJ1bnRp
bWUvSlNDYWxsZWUuY3BwCiBydW50aW1lL0pTQ2VsbC5jcHAKLXJ1bnRpbWUvSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5jcHAKK3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAK
K3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNEYXRhVmlldy5j
cHAKIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSlNEYXRlTWF0aC5j
cHAgQG5vLXVuaWZ5IC8vIENvbmZpbmUgVV9TSE9XX0NQTFVTUExVU19BUEkncyBlZmZlY3QgdG8g
dGhpcyBmaWxlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0LmgJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsOCArMjM0LDYgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgUmF3TmF0aXZlRnVuY3Rpb24gZ2V0Q2FsbEZ1bmN0aW9uKCk7CiAg
ICAgc3RhdGljIFJhd05hdGl2ZUZ1bmN0aW9uIGdldENvbnN0cnVjdEZ1bmN0aW9uKCk7CiAKLSAg
ICB1c2luZyBHZXRWYWx1ZUZ1bmMgPSBFbmNvZGVkSlNWYWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJ
QlVURVMqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwot
CiAgICAgc3RhdGljIEdldFZhbHVlRnVuYyBnZXRTdGF0aWNGdW5jdGlvbkdldHRlcigpOwogICAg
IHN0YXRpYyBHZXRWYWx1ZUZ1bmMgZ2V0Q2FsbGJhY2tHZXR0ZXIoKTsKICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTE4Miw3ICsxMTgyLDYgQEAKIAkJNzBFQzBFQzcxQUEwRDdEQTAwQjZBQUZB
IC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVDMTFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwRUNBNjAxMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNB
NjA5MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUNBNjA0MUFGREJFQTIw
MDQ0OTczOSAvKiBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUg
LyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLzsgfTsKIAkJNzMxMUZBMzIyNDBEQjFEMzAwM0Q0
OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZh
cmlhbnQuaCAqLzsgfTsKIAkJNzM0QjY1NTUyM0Y1QzEwNDAwQTA2OUQxIC8qIERlbGV0ZVByb3Bl
cnR5U2xvdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzM0QjY1NTQyM0Y0QTMzMTAwQTA2OUQxIC8qIERlbGV0ZVByb3BlcnR5U2xvdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTczQUQwNjI5MjNGRjY2
MjYwMEY1MzU5MyAvKiBEZWxldGVCeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzNBRDA2MjgyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0ZUJ5
U3RhdHVzLmggKi87IH07CkBAIC0xMjMzLDYgKzEyMzIsMTEgQEAKIAkJN0MxODRFMjMxN0JFRTI0
MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE4NEUyMTE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQ
cm9taXNlQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNEVFNzA4
MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAv
KiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMwODk0RDYwRkFGQkEyRDAwMDAxODY1IC8qIEpTQVBJVmFsdWVXcmFwcGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODQz
MjNFNzgyNUQ1RUMxOTAwRjk3Nzc2IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU0NkY1MjAxQTMyQTU5QzAwNkYw
N0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTg0MzIzRTc5MjVENUVDMjgwMEY5Nzc3NiAvKiBOdWxsU2V0
dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1NTI1RkM0MUE2REQzQjMwMDdCNTQ5NSAvKiBOdWxsU2V0dGVyRnVuY3Rpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NDMyM0U3QTI1
RDVFQzNCMDBGOTc3NzYgLyogR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMzN0JERTBFMUFGMEI4MDA3NjkxOEEgLyogR2V0dGVy
U2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODQzMjNFN0YyNUQ1RUM2QTAwRjk3Nzc2IC8qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzIzRTdCMjVE
NUVDNjkwMEY5Nzc3NiAvKiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODQzMjNFODAyNUQ1RUM2QTAwRjk3
Nzc2IC8qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MzIzRTdDMjVENUVDNjkwMEY5Nzc3NiAvKiBKU0N1c3Rv
bUdldHRlckZ1bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYwMTYxRTQwRjNB
ODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFj
cm9Bc3NlbWJsZXJYODYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MDE2
MUUxMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MDM1LDggKzQwMzksNiBA
QAogCQk3MEVDQTYwMDFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEVDQTYw
MTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8q
IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcy
QUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzMxMUZBMzEyNDBEQjFEMzAw
M0Q0OERCIC8qIERlbGV0ZUJ5SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGV0ZUJ5SWRW
YXJpYW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczMTFGQTMzMjQwREIyNDkw
MDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWxl
dGVCeUlkVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTczMTkwRDk2
MjQwMDkzNDkwMEY4OTFDOSAvKiBEZWxldGVCeVN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEZWxldGVCeVN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTMy
LDYgKzQxMzQsMTAgQEAKIAkJN0Q1RkIxOTIyMDc0NEJGMjAwNURERjY0IC8qIEludGxQbHVyYWxS
dWxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUGx1cmFsUnVsZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFB
IC8qIFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cnVjdHVyZUNoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFNEVFNzBFMEVC
QjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg0MzIzRTdCMjVENUVDNjkwMEY5Nzc3NiAvKiBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tU2V0dGVyRnVu
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODQzMjNFN0MyNUQ1RUM2OTAw
Rjk3Nzc2IC8qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NDMyM0U3RDI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0b21HZXR0ZXJGdW5j
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdl
dHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODQzMjNFN0Uy
NUQ1RUM2QTAwRjk3Nzc2IC8qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0OTI1QTlBMjJCMzBDQkEwMEQxREZGRiAvKiBS
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0OTI1QTlCMjJCMzBDQkEwMEQxREZGRiAvKiBSZWdFeHBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4NDkyNUE5QzIyQjMwQ0M4MDBEMURGRkYgLyogUmVnRXhwU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWdF
eHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc0NzksOCArNzQ4NSwxMCBAQAogCQkJCTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBK
U0NKU1ZhbHVlSW5saW5lcy5oICovLAogCQkJCUZFMUUyQzNDMjI0MEMxRUYwMEY2QjcyOSAvKiBK
U0NQdHJUYWcuY3BwICovLAogCQkJCUZFNzQ5N0U1MjA5MDAxQjAwMDAzNTY1QiAvKiBKU0NQdHJU
YWcuaCAqLywKLQkJCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHAgKi8sCi0JCQkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLywKKwkJCQk4NDMyM0U3RDI1RDVFQzZBMDBG
OTc3NzYgLyogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAgKi8sCisJCQkJODQzMjNFN0MyNUQ1
RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCAqLywKKwkJCQk4NDMyM0U3
RTI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAgKi8sCisJCQkJ
ODQzMjNFN0IyNUQ1RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCAqLywK
IAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5jcHAgKi8sCiAJCQkJ
MEYyQjY2QkUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuaCAqLywKIAkJCQkwRjJCNjZC
RjE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgKi8sCkBAIC05ODA4
LDYgKzk4MTYsNyBAQAogCQkJCTBGOTMzMkEwMTRDQTdEQ0QwMDg1RjNDNiAvKiBHZXRCeVN0YXR1
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTIwRDk5RjEyMzg4Q0M4MTAwMDUwOUEzIC8qIEdldEJ5
VmFsSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk2NDY1NkExQjk1MkZGMDAwMzA1OUVF
IC8qIEdldFB1dEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTg0MzIzRTdBMjVENUVDM0IwMEY5
Nzc3NiAvKiBHZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNEUwMzU4MUU1M0JG
MkYwMDIxM0Y2NCAvKiBHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRTFENkQ2RjIzNjI1OEZFMDA3QTVDMjYgLyogR2V0Vk0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUMzQzVCMUYzM0E0ODkwMEY1OUI2QyAvKiBHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMTAwMzUsNyArMTAwNDQsOCBAQAogCQkJCTE0OENEMUQ4
MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTc0OTdFNjIwOTAwMUIxMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODQzMjNFODAyNUQ1RUM2
QTAwRjk3Nzc2IC8qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg0MzIzRTdGMjVENUVDNkEwMEY5Nzc3NiAvKiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZFQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlldy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZp
ZXdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3MzFDMUJEQTA4REQwMDMzMUI4
NCAvKiBKU0RhdGFWaWV3UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI2Nyw2
ICsxMDI3Nyw4IEBACiAJCQkJRkUxNDA5MDcyMDU2RjNGRjAwQ0ZFMzE4IC8qIE5hdGl2ZUZ1bmN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIyMDE2RDAzM0I3MDA1NUE1REIgLyogTm9k
ZUNvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0M0YwRTE2RjVDRDAwQjM0
NDYwIC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NDMyM0U3ODI1RDVFQzE5MDBGOTc3
NzYgLyogTnVsbEdldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NDMyM0U3OTI1
RDVFQzI4MDBGOTc3NzYgLyogTnVsbFNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzQ0MTBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDNDQyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rv
ci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBO
dW1iZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24uaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6c19pbmZvID0geyAi
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24pIH07CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihjdXN0b21HZXR0ZXJGdW5jdGlvbkNhbGwpOworCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oY3VzdG9tR2V0dGVyRnVuY3Rpb25DYWxsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBjdXN0b21HZXR0ZXJGdW5jdGlvbiA9IGpzQ2Fz
dDxKU0N1c3RvbUdldHRlckZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisKKyAgICBHZXRWYWx1
ZUZ1bmMgZ2V0dGVyID0gY3VzdG9tR2V0dGVyRnVuY3Rpb24tPmdldHRlcigpOworICAgIEFTU0VS
VChnZXR0ZXIpOworCisgICAgaWYgKGF1dG8gZG9tQXR0cmlidXRlID0gY3VzdG9tR2V0dGVyRnVu
Y3Rpb24tPmRvbUF0dHJpYnV0ZSgpKSB7CisgICAgICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KHZtLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbykpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TURPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBkb21BdHRy
aWJ1dGUtPmNsYXNzSW5mbywgY3VzdG9tR2V0dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKTsK
KyAgICB9CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGdldHRlcihnbG9iYWxPYmpl
Y3QsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBjdXN0b21HZXR0ZXJGdW5jdGlvbi0+cHJv
cGVydHlOYW1lKCkpKTsKK30KKworSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6SlNDdXN0b21HZXR0
ZXJGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBQcm9wZXJ0
eU5hbWUmIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldHRlciwgT3B0aW9uYWw8RE9NQXR0
cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJs
ZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCisgICAgLCBtX3Byb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUpCisgICAgLCBtX2dldHRlcihnZXR0ZXIpCisgICAgLCBtX2RvbUF0dHJpYnV0ZShkb21B
dHRyaWJ1dGUpCit7Cit9CisKK0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tR2V0dGVy
RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBHZXRWYWx1ZUZ1bmMgZ2V0dGVyLCBPcHRp
b25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBkb21BdHRyaWJ1dGUpCit7CisgICAgTmF0aXZl
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjdXN0b21HZXR0ZXJG
dW5jdGlvbkNhbGwsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBTdHJpbmcocHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOworICAgIEpTQ3VzdG9tR2V0
dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDdXN0
b21HZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24odm0sIGV4
ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGdldHRlciwg
ZG9tQXR0cmlidXRlKTsKKworICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0
aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KKyAg
ICBTdHJpbmcgbmFtZSA9IG1ha2VTdHJpbmcoImdldCAiLCBTdHJpbmcocHJvcGVydHlOYW1lLnB1
YmxpY05hbWUoKSkpOworICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJs
ZSwgMCwgbmFtZSk7CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1
c3RvbUdldHRlckZ1bmN0aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEpTRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5jdXN0b21HZXR0ZXJG
dW5jdGlvblNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9
CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBHZXRWYWx1
ZUZ1bmMsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+ID0gV1RGOjpudWxsb3B0KTsK
KworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBjb25zdCBQcm9wZXJ0eU5hbWUmIHBy
b3BlcnR5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlOYW1lOyB9CisgICAgR2V0VmFs
dWVGdW5jIGdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZ2V0dGVyOyB9OworICAgIE9wdGlvbmFs
PERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRvbUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9tQXR0cmlidXRlOyB9OworCitwcml2YXRlOgorICAgIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24o
Vk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25z
dCBQcm9wZXJ0eU5hbWUmLCBHZXRWYWx1ZUZ1bmMsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90
YXRpb24+KTsKKworICAgIFByb3BlcnR5TmFtZSBtX3Byb3BlcnR5TmFtZTsKKyAgICBHZXRWYWx1
ZUZ1bmMgbV9nZXR0ZXI7CisgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gbV9k
b21BdHRyaWJ1dGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIKLQotI2luY2x1ZGUg
IkN1c3RvbUdldHRlclNldHRlci5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24p
IH07Ci0KLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGN1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uQ2FsbCk7Ci0KLUpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24qIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uID0ganNDYXN0PEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwotICAg
IEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0dGVyID0gY3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24tPmN1c3RvbUdldHRlclNldHRlcigpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKLQotICAgIGlmIChjdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi0+aXNTZXR0ZXIoKSkgewotICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3Rv
bVNldHRlciBzZXR0ZXIgPSBjdXN0b21HZXR0ZXJTZXR0ZXItPnNldHRlcigpOwotICAgICAgICBB
U1NFUlQoc2V0dGVyKTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBzZXR0ZXIo
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgSlNWYWx1ZTo6ZW5jb2Rl
KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9Ci0KLSAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5p
bmhlcml0czxET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI+KHZtKSkgewotICAgICAgICBhdXRvIGRv
bUF0dHJpYnV0ZSA9IGpzQ2FzdDxET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqPihjdXN0b21HZXR0
ZXJTZXR0ZXIpLT5kb21BdHRyaWJ1dGUoKTsKLSAgICAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJp
dHModm0sIGRvbUF0dHJpYnV0ZS5jbGFzc0luZm8pKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZG9tQXR0
cmlidXRlLmNsYXNzSW5mbywgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFt
ZSgpKTsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGN1c3RvbUdldHRl
clNldHRlci0+Z2V0dGVyKCkoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVl
KSwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24tPnByb3BlcnR5TmFtZSgpKSk7Ci19Ci0KLUpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24o
Vk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVHlwZSB0eXBlLCBjb25zdCBQ
cm9wZXJ0eU5hbWUmIHByb3BlcnR5TmFtZSkKLSAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlKQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX3Byb3Bl
cnR5TmFtZShwcm9wZXJ0eU5hbWUpCi17Ci19Ci0KLUpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEN1c3RvbUdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyLCBj
b25zdCBUeXBlIHR5cGUsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lKQotewotICAg
IEFTU0VSVCh0eXBlID09IFR5cGU6OkdldHRlciA/ICEhZ2V0dGVyU2V0dGVyLT5nZXR0ZXIoKSA6
ICEhZ2V0dGVyU2V0dGVyLT5zZXR0ZXIoKSk7Ci0KLSAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAo
dHlwZSA9PSBUeXBlOjpHZXR0ZXIpID8gImdldCAiIDogInNldCAiOwotICAgIFN0cmluZyBuYW1l
ID0gbWFrZVN0cmluZyhwcmVmaXgsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7
Ci0KLSAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9u
KGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uQ2FsbCwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7Ci0KLSAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKLSAgICBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24+
KHZtLmhlYXApKSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdHlwZSwgcHJvcGVydHlOYW1lKTsKLQotICAgIC8vIENh
bid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0SG9zdEZ1bmN0aW9u
IG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KLSAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24o
dm0sIGV4ZWN1dGFibGUsIGdldHRlclNldHRlciwgbmFtZSk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9u
OwotfQotCi12b2lkIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBKU0N1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb24qPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKLQotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2V0dGVyU2V0dGVyKTsKLX0K
LQotdm9pZCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEN1c3RvbUdldHRlclNldHRlciogZ2V0
dGVyU2V0dGVyLCBjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0sIGV4ZWN1dGFibGUsIGlzU2V0dGVyKCksIG5hbWUpOwotICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7Ci0gICAgQVNTRVJUKGdldHRlclNldHRlcik7Ci0gICAgbV9nZXR0ZXJT
ZXR0ZXIuc2V0KHZtLCB0aGlzLCBnZXR0ZXJTZXR0ZXIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24u
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
Y2xhc3MgQ3VzdG9tR2V0dGVyU2V0dGVyOwotCi1jbGFzcyBKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24gewotcHVibGljOgotICAgIHR5cGVkZWYg
SlNGdW5jdGlvbiBCYXNlOwotCi0gICAgLy8gVGhlIFR5cGUgaXMgc2V0IHRvIHRoZSBudW1iZXIg
b2YgYXJndW1lbnRzIHRoZSByZXN1bHRhbnQgZnVuY3Rpb24gd2lsbCBoYXZlLgotICAgIGVudW0g
Y2xhc3MgVHlwZSB7IEdldHRlciA9IDAsIFNldHRlciA9IDEgfTsKLQotICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgotICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHZtLmN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2U8bW9kZT4oKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChnbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0N1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEN1c3RvbUdldHRl
clNldHRlciosIGNvbnN0IFR5cGUsIGNvbnN0IFByb3BlcnR5TmFtZSYpOwotCi0gICAgREVDTEFS
RV9FWFBPUlRfSU5GTzsKLQotICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9nZXR0ZXJTZXR0ZXIuZ2V0KCk7IH0KLSAgICBib29sIGlz
U2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlNldHRlcjsgfQotICAgIGNv
bnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0
eU5hbWU7IH0KLQotcHJpdmF0ZToKLSAgICBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKFZN
JiwgTmF0aXZlRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgVHlwZSwg
Y29uc3QgUHJvcGVydHlOYW1lJik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2
ZUV4ZWN1dGFibGUqLCBDdXN0b21HZXR0ZXJTZXR0ZXIqLCBjb25zdCBTdHJpbmcmKTsKLSAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci0KLSAgICBX
cml0ZUJhcnJpZXI8Q3VzdG9tR2V0dGVyU2V0dGVyPiBtX2dldHRlclNldHRlcjsKLSAgICBUeXBl
IG1fdHlwZTsKLSAgICBQcm9wZXJ0eU5hbWUgbV9wcm9wZXJ0eU5hbWU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9t
U2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0N1c3RvbVNl
dHRlckZ1bmN0aW9uKSB9Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY3VzdG9t
U2V0dGVyRnVuY3Rpb25DYWxsKTsKKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGN1c3RvbVNl
dHRlckZ1bmN0aW9uQ2FsbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK3sKKyAgICBQdXRWYWx1ZUZ1bmMgc2V0dGVyID0ganNDYXN0PEpTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5zZXR0ZXIoKTsKKyAg
ICBBU1NFUlQoc2V0dGVyKTsKKyAgICBzZXR0ZXIoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNv
ZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSksIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
K30KKworSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbihWTSYg
dm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQdXRWYWx1ZUZ1bmMgc2V0dGVyKQorICAgIDog
QmFzZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCisgICAgLCBtX3Nl
dHRlcihzZXR0ZXIpCit7Cit9CisKK0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIEpTQ3VzdG9tU2V0
dGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lLCBQdXRWYWx1ZUZ1bmMgc2V0dGVyKQor
eworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24o
Y3VzdG9tU2V0dGVyRnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvciwg
U3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAg
ICBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24+KHZtLmhlYXApKSBKU0N1c3RvbVNldHRlckZ1
bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc2V0dGVyKTsK
KworICAgIC8vIENhbid0IGRvIHRoaXMgZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlY2F1c2UgZ2V0
SG9zdEZ1bmN0aW9uIG1pZ2h0IGRvIGEgR0MgYWxsb2NhdGlvbi4KKyAgICBTdHJpbmcgbmFtZSA9
IG1ha2VTdHJpbmcoInNldCAiLCBTdHJpbmcocHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSkpOwor
ICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgMSwgbmFtZSk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0
aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
dXN0b21TZXR0ZXJGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiBmaW5hbCA6
IHB1YmxpYyBKU0Z1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFz
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5jdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlPG1v
ZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5j
dGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBQdXRWYWx1ZUZ1bmMpOworCisgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIFB1dFZhbHVlRnVuYyBzZXR0ZXIoKSBjb25zdCB7
IHJldHVybiBtX3NldHRlcjsgfTsKKworcHJpdmF0ZToKKyAgICBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
UHV0VmFsdWVGdW5jKTsKKworICAgIFB1dFZhbHVlRnVuYyBtX3NldHRlcjsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
NyArMTA5LDggQEAKICNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCi0j
aW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3Vz
dG9tR2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgogI2luY2x1ZGUgIkpTRGF0YVZpZXdQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJKU0RvbGxhclZNLmgiCkBAIC01MDQsNiArNTA1LDggQEAgSlNHbG9iYWxP
YmplY3Q6OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgUwogICAgICwgbV9udW1iZXJUb1N0cmluZ1dh
dGNocG9pbnRTZXQoSXNXYXRjaGVkKQogICAgICwgbV9ydW50aW1lRmxhZ3MoKQogICAgICwgbV9z
dGFja1RyYWNlTGltaXQoT3B0aW9uczo6ZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0KCkpCisg
ICAgLCBtX2N1c3RvbUdldHRlckZ1bmN0aW9uTWFwKHZtKQorICAgICwgbV9jdXN0b21TZXR0ZXJG
dW5jdGlvbk1hcCh2bSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPyBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA6ICZzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlKQogewogfQpAQCAtNjE1LDkgKzYxOCwxMyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojppbml0KFZNJiB2bSkKICAgICBpbml0RnVuY3Rpb25TdHJ1Y3R1cmVzKG1fYnVpbHRpbkZ1
bmN0aW9ucyk7CiAgICAgaW5pdEZ1bmN0aW9uU3RydWN0dXJlcyhtX29yZGluYXJ5RnVuY3Rpb25z
KTsKIAotICAgIG1fY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUuaW5pdExhdGVy
KAorICAgIG1fY3VzdG9tR2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAg
ICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewotICAgICAgICAgICAg
aW5pdC5zZXQoSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGluaXQub3duZXIsIGluaXQub3duZXItPm1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
KTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBpbml0Lm93bmVyLCBpbml0Lm93bmVyLT5tX2Z1bmN0aW9uUHJvdG90
eXBlLmdldCgpKSk7CisgICAgICAgIH0pOworICAgIG1fY3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1
Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJl
PiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQub3duZXIsIGluaXQub3duZXItPm1fZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpKTsKICAgICAgICAgfSk7CiAgICAgbV9ib3VuZEZ1bmN0aW9uU3Ry
dWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVy
ZT4mIGluaXQpIHsKQEAgLTIwMDEsNyArMjAwOCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdEZ1bmN0aW9uU3RydWN0dXJlcyh0aGlzT2JqZWN0
LT5tX2J1aWx0aW5GdW5jdGlvbnMpOwogICAgIHZpc2l0RnVuY3Rpb25TdHJ1Y3R1cmVzKHRoaXNP
YmplY3QtPm1fb3JkaW5hcnlGdW5jdGlvbnMpOwogCi0gICAgdGhpc09iamVjdC0+bV9jdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2Jq
ZWN0LT5tX2N1c3RvbUdldHRlckZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAg
IHRoaXNPYmplY3QtPm1fY3VzdG9tU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1
cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIGNsYXNz
IEludGxDb2xsYXRvcjsKIGNsYXNzIEpTQXJyYXlCdWZmZXI7CiBjbGFzcyBKU0FycmF5QnVmZmVy
UHJvdG90eXBlOwogY2xhc3MgSlNDYWxsZWU7CitjbGFzcyBKU0N1c3RvbUdldHRlckZ1bmN0aW9u
OworY2xhc3MgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0RGVi
dWdnYWJsZTsKIGNsYXNzIEpTSW50ZXJuYWxQcm9taXNlOwogY2xhc3MgSlNNb2R1bGVMb2FkZXI7
CkBAIC0zOTYsNyArMzk4LDggQEAgcHVibGljOgogICAgIEZ1bmN0aW9uU3RydWN0dXJlcyBtX29y
ZGluYXJ5RnVuY3Rpb25zOwogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsKLSAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblN0cnVjdHVy
ZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jdXN0b21H
ZXR0ZXJGdW5jdGlvblN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9uYXRpdmVTdGRGdW5jdGlvblN0cnVj
dHVyZTsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKQEAgLTU0MCw2ICs1NDMsOSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc01hcFByb3RvdHlwZVNldEZhc3RBbmROb25PYnNlcnZhYmxl
KCk7CiAgICAgYm9vbCBpc1NldFByb3RvdHlwZUFkZEZhc3RBbmROb25PYnNlcnZhYmxlKCk7CiAK
KyAgICBXZWFrR0NNYXA8R2V0VmFsdWVGdW5jLCBKU0N1c3RvbUdldHRlckZ1bmN0aW9uPiYgY3Vz
dG9tR2V0dGVyRnVuY3Rpb25NYXAoKSB7IHJldHVybiBtX2N1c3RvbUdldHRlckZ1bmN0aW9uTWFw
OyB9CisgICAgV2Vha0dDTWFwPFB1dFZhbHVlRnVuYywgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbj4m
IGN1c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkgeyByZXR1cm4gbV9jdXN0b21TZXR0ZXJGdW5jdGlv
bk1hcDsgfQorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgdXNpbmcgUmVmZXJlbmNlZEdsb2Jh
bFByb3BlcnR5V2F0Y2hwb2ludFNldHMgPSBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIFJlZjxXYXRjaHBvaW50U2V0PiwgSWRlbnRpZmllclJlcEhhc2g+OwogICAgIFJlZmVyZW5j
ZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5
V2F0Y2hwb2ludFNldHM7CkBAIC01NTQsNiArNTYwLDggQEAgcHVibGljOgogICAgIFJ1bnRpbWVG
bGFncyBtX3J1bnRpbWVGbGFnczsKICAgICBDb25zb2xlQ2xpZW50KiBtX2NvbnNvbGVDbGllbnQg
eyBudWxscHRyIH07CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhY2tUcmFjZUxpbWl0Owor
ICAgIFdlYWtHQ01hcDxHZXRWYWx1ZUZ1bmMsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+IG1fY3Vz
dG9tR2V0dGVyRnVuY3Rpb25NYXA7CisgICAgV2Vha0dDTWFwPFB1dFZhbHVlRnVuYywgSlNDdXN0
b21TZXR0ZXJGdW5jdGlvbj4gbV9jdXN0b21TZXR0ZXJGdW5jdGlvbk1hcDsKIAogI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgY29uc3QgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0QXREZWJ1
Z2dlckVudHJ5IHsgbnVsbHB0ciB9OwpAQCAtNzk5LDcgKzgwNyw4IEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICBTdHJ1Y3R1cmUqIGJvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Ci0gICAgU3RydWN0dXJlKiBj
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0
dXJlKiBjdXN0b21HZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vz
dG9tR2V0dGVyRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBj
dXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tU2V0
dGVyRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBuYXRpdmVT
dGRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlU3RkRnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgUHJvcGVydHlPZmZzZXQgZnVuY3Rpb25OYW1lT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWVPZmZzZXQ7IH0KICAgICBTdHJ1Y3R1
cmUqIG51bWJlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0
U3RydWN0dXJlLmdldCh0aGlzKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw4IEBA
CiAjaW5jbHVkZSAiSGVhcEFuYWx5emVyLmgiCiAjaW5jbHVkZSAiSW5kZXhpbmdIZWFkZXJJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkxvb2t1cC5o
IgpAQCAtMzUyNSwxNiArMzUyNiwyNCBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0OjphbGxvY2F0ZU1v
cmVPdXRPZkxpCiAgICAgcmV0dXJuIEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93UHJvcGVydHlTdG9y
YWdlKGJ1dHRlcmZseSgpLCB2bSwgdGhpcywgc3RydWN0dXJlKHZtKSwgb2xkU2l6ZSwgbmV3U2l6
ZSk7CiB9CiAKLXN0YXRpYyBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKiBnZXRDdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBDdXN0b21HZXR0ZXJTZXR0ZXIqIGdl
dHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZSB0eXBlKQorc3Rh
dGljIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGdldEN1c3RvbUdldHRlckZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEdldFZh
bHVlRnVuYyBnZXRWYWx1ZUZ1bmMsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+IGRv
bUF0dHJpYnV0ZSkKIHsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0
byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihnZXR0ZXJTZXR0ZXIsIChpbnQpdHlwZSk7Ci0gICAgSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiogY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gPSB2
bS5jdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbk1hcC5nZXQoa2V5KTsKLSAgICBpZiAoIWN1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uKSB7Ci0gICAgICAgIGN1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIGdldHRlclNldHRlciwgdHlwZSwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSk7Ci0gICAg
ICAgIHZtLmN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uTWFwLnNldChrZXksIGN1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uKTsKKyAgICBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBjdXN0b21HZXR0
ZXJGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tR2V0dGVyRnVuY3Rpb25NYXAoKS5nZXQo
Z2V0VmFsdWVGdW5jKTsKKyAgICBpZiAoIWN1c3RvbUdldHRlckZ1bmN0aW9uKSB7CisgICAgICAg
IGN1c3RvbUdldHRlckZ1bmN0aW9uID0gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKGds
b2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldFZhbHVlRnVu
YywgZG9tQXR0cmlidXRlKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5j
dGlvbk1hcCgpLnNldChnZXRWYWx1ZUZ1bmMsIGN1c3RvbUdldHRlckZ1bmN0aW9uKTsKICAgICB9
Ci0gICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOworICAgIHJldHVybiBjdXN0
b21HZXR0ZXJGdW5jdGlvbjsKK30KKworc3RhdGljIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIGdl
dEN1c3RvbVNldHRlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBwdXRWYWx1ZUZ1bmMpCit7CisgICAg
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogY3VzdG9tU2V0dGVyRnVuY3Rpb24gPSBnbG9iYWxPYmpl
Y3QtPmN1c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkuZ2V0KHB1dFZhbHVlRnVuYyk7CisgICAgaWYg
KCFjdXN0b21TZXR0ZXJGdW5jdGlvbikgeworICAgICAgICBjdXN0b21TZXR0ZXJGdW5jdGlvbiA9
IEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb246OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lLCBwdXRWYWx1ZUZ1bmMpOworICAgICAgICBnbG9iYWxPYmpl
Y3QtPmN1c3RvbVNldHRlckZ1bmN0aW9uTWFwKCkuc2V0KHB1dFZhbHVlRnVuYywgY3VzdG9tU2V0
dGVyRnVuY3Rpb24pOworICAgIH0KKyAgICByZXR1cm4gY3VzdG9tU2V0dGVyRnVuY3Rpb247CiB9
CiAKIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCkBAIC0zNTUxLDMxICszNTYwLDEzIEBAIGJvb2wgSlNPYmplY3Q6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcigKICAgICBpZiAoc2xvdC5pc0FjY2Vzc29yKCkpCiAg
ICAgICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNzb3JEZXNjcmlwdG9yKHNsb3QuZ2V0dGVyU2V0dGVy
KCksIHNsb3QuYXR0cmlidXRlcygpKTsKICAgICBlbHNlIGlmIChzbG90LmF0dHJpYnV0ZXMoKSAm
IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikgewotICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXIqIGdldHRlclNldHRlcjsKLSAgICAgICAgaWYgKHNsb3QuaXNDdXN0b21BY2Nlc3Nv
cigpKQotICAgICAgICAgICAgZ2V0dGVyU2V0dGVyID0gc2xvdC5jdXN0b21HZXR0ZXJTZXR0ZXIo
KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFzZSgpKTsK
LSAgICAgICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gc2xvdC5zbG90QmFzZSgpOwotCi0g
ICAgICAgICAgICBKU1ZhbHVlIG1heWJlR2V0dGVyU2V0dGVyID0gdGhpc09iamVjdC0+Z2V0RGly
ZWN0KHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgaWYgKCFtYXliZUdldHRlclNldHRl
cikgewotICAgICAgICAgICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5QWxsU3RhdGljUHJvcGVydGll
cyhnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgICAgIG1heWJlR2V0dGVyU2V0dGVyID0gdGhp
c09iamVjdC0+Z2V0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBBU1NFUlQobWF5YmVHZXR0ZXJTZXR0ZXIpOwotICAgICAgICAgICAgZ2V0dGVy
U2V0dGVyID0ganNEeW5hbWljQ2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPih2bSwgbWF5YmVHZXR0
ZXJTZXR0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChnZXR0ZXJTZXR0ZXIpOwotICAg
ICAgICBpZiAoIWdldHRlclNldHRlcikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICBkZXNjcmlwdG9yLnNldEN1c3RvbURlc2NyaXB0b3Ioc2xvdC5hdHRyaWJ1dGVzKCkpOwot
ICAgICAgICBpZiAoZ2V0dGVyU2V0dGVyLT5nZXR0ZXIoKSkKLSAgICAgICAgICAgIGRlc2NyaXB0
b3Iuc2V0R2V0dGVyKGdldEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uRm9yR2V0dGVyU2V0dGVy
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb246OlR5cGU6OkdldHRlcikpOwotICAgICAgICBpZiAoZ2V0dGVyU2V0dGVy
LT5zZXR0ZXIoKSkKLSAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKGdldEN1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uRm9yR2V0dGVyU2V0dGVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5cGU6OlNl
dHRlcikpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHNsb3QuaXNDdXN0b20oKSwgIlBy
b3BlcnR5U2xvdDo6VHlwZUN1c3RvbSBpcyByZXF1aXJlZCBpbiBjYXNlIG9mIFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciIpOworICAgICAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29y
RGVzY3JpcHRvcihzbG90LmF0dHJpYnV0ZXMoKSAmIH5Qcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9t
QWNjZXNzb3IpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogc2xvdEJhc2VHbG9iYWxPYmplY3Qg
PSBzbG90LnNsb3RCYXNlKCktPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgIGlmIChzbG90LmN1
c3RvbUdldHRlcigpKQorICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZ2V0Q3VzdG9t
R2V0dGVyRnVuY3Rpb24oc2xvdEJhc2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdC5j
dXN0b21HZXR0ZXIoKSwgc2xvdC5kb21BdHRyaWJ1dGUoKSkpOworICAgICAgICBpZiAoc2xvdC5j
dXN0b21TZXR0ZXIoKSkKKyAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKGdldEN1c3Rv
bVNldHRlckZ1bmN0aW9uKHNsb3RCYXNlR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3Qu
Y3VzdG9tU2V0dGVyKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
c2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKQEAgLTM2NjksOCArMzY2MCw2IEBAIGJvb2wg
dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigKICAgICAgICAgICAgICAgICByZXR1
cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgdGhlIHNldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4i
X3MpOwogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpICYmIGRlc2Ny
aXB0b3IuZ2V0dGVyKCkgIT0gY3VycmVudC5nZXR0ZXIoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4i
X3MpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yKQotICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sIFVuY29uZmlndXJhYmxlUHJvcGVy
dHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJvcik7CiAKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MTUsMTYgKzE0MTUsMTYgQEAgQUxXQVlTX0lO
TElORSB2b2lkIEpTT2JqZWN0OjpmaWxsQ3VzdG9tRwogICAgIGlmIChjdXN0b21HZXR0ZXJTZXR0
ZXItPmluaGVyaXRzPERPTUF0dHJpYnV0ZUdldHRlclNldHRlcj4odm0pKSB7CiAgICAgICAgIGF1
dG8qIGRvbUF0dHJpYnV0ZSA9IGpzQ2FzdDxET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXIqPihjdXN0
b21HZXR0ZXJTZXR0ZXIpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSgpKQotICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgYXR0cmlidXRlcywg
ZG9tQXR0cmlidXRlLT5nZXR0ZXIoKSwgZG9tQXR0cmlidXRlLT5kb21BdHRyaWJ1dGUoKSk7Cisg
ICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBkb21BdHRyaWJ1dGUt
PmdldHRlcigpLCBkb21BdHRyaWJ1dGUtPnNldHRlcigpLCBkb21BdHRyaWJ1dGUtPmRvbUF0dHJp
YnV0ZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0
b20odGhpcywgYXR0cmlidXRlcywgZG9tQXR0cmlidXRlLT5nZXR0ZXIoKSwgZG9tQXR0cmlidXRl
LT5kb21BdHRyaWJ1dGUoKSk7CisgICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0
aGlzLCBhdHRyaWJ1dGVzLCBkb21BdHRyaWJ1dGUtPmdldHRlcigpLCBkb21BdHRyaWJ1dGUtPnNl
dHRlcigpLCBkb21BdHRyaWJ1dGUtPmRvbUF0dHJpYnV0ZSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCi0g
ICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGN1c3RvbUdldHRlclNldHRl
ci0+Z2V0dGVyKCkpOworICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBj
dXN0b21HZXR0ZXJTZXR0ZXItPmdldHRlcigpLCBjdXN0b21HZXR0ZXJTZXR0ZXItPnNldHRlcigp
KTsKICAgICBlbHNlCi0gICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGF0dHJp
YnV0ZXMsIGN1c3RvbUdldHRlclNldHRlci0+Z2V0dGVyKCkpOworICAgICAgICBzbG90LnNldENh
Y2hlYWJsZUN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBjdXN0b21HZXR0ZXJTZXR0ZXItPmdldHRl
cigpLCBjdXN0b21HZXR0ZXJTZXR0ZXItPnNldHRlcigpKTsKIH0KIAogLy8gSXQgbWF5IHNlZW0g
Y3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhpcyBsYXJnZSwgZXNwZWNpYWxseSBhIHZpcnR1
YWwgZnVuY3Rpb24sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAko
cmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxNyArMjM4LDE4IEBAIGlubGluZSBib29sIGdldFN0
YXRpY1Byb3BlcnR5U2xvdEZyb21UYWIKICAgICB9CiAKICAgICBpZiAoZW50cnktPmF0dHJpYnV0
ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRlOjpET01KSVRBdHRyaWJ1dGUpIHsKKyAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5LCAiRE9NSklUQXR0cmlidXRlIHN1cHBvcnRzIHJlYWRvbmx5IGF0dHJpYnV0ZXMg
Y3VycmVudGx5LiIpOwogICAgICAgICBjb25zdCBET01KSVQ6OkdldHRlclNldHRlciogZG9tSklU
ID0gZW50cnktPmRvbUpJVCgpOwotICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlz
T2JqZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGVudHJ5LT5hdHRyaWJ1dGVzKCkpLCBkb21K
SVQtPmdldHRlcigpLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgY2xhc3NJbmZvLCBkb21KSVQg
fSk7CisgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJpYnV0ZXMoKSksIGRvbUpJVC0+Z2V0dGVyKCksIG51
bGxwdHIsIERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBjbGFzc0luZm8sIGRvbUpJVCB9KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzKCkg
JiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSB7Ci0gICAgICAgIHNsb3Quc2V0Q2Fj
aGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPmF0
dHJpYnV0ZXMoKSksIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpLCBET01BdHRyaWJ1dGVBbm5vdGF0
aW9uIHsgY2xhc3NJbmZvLCBudWxscHRyIH0pOworICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1
c3RvbSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGVudHJ5LT5hdHRyaWJ1dGVz
KCkpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCksIERP
TUF0dHJpYnV0ZUFubm90YXRpb24geyBjbGFzc0luZm8sIG51bGxwdHIgfSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmpl
Y3QsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJpYnV0ZXMoKSksIGVudHJ5LT5w
cm9wZXJ0eUdldHRlcigpKTsKKyAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0
LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGVudHJ5LT5hdHRyaWJ1dGVzKCkpLCBlbnRyeS0+cHJv
cGVydHlHZXR0ZXIoKSwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2Ny
aXB0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5RGVzY3JpcHRvci5jcHAJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNSwxNSArMTI1LDE2IEBAIHZvaWQgUHJvcGVydHlEZXNjcmlwdG9yOjpzZXREZXNjcmlwdG9y
KEoKICAgICB9CiB9CiAKLXZvaWQgUHJvcGVydHlEZXNjcmlwdG9yOjpzZXRDdXN0b21EZXNjcmlw
dG9yKHVuc2lnbmVkIGF0dHJpYnV0ZXMpCit2b2lkIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0QWNj
ZXNzb3JEZXNjcmlwdG9yKHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7Ci0gICAgQVNTRVJUKCEoYXR0
cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21WYWx1ZSkpOwotICAgIG1fYXR0cmli
dXRlcyA9IGF0dHJpYnV0ZXMgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3I7Ci0gICAgbV9hdHRyaWJ1dGVzICY9IH5Qcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHk7CisgICAgQVNTRVJUKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6QWNjZXNzb3IpOworICAgIEFTU0VSVCghKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3JPclZhbHVlKSk7CisgICAgYXR0cmlidXRlcyAmPSB+UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5OyAvLyBGSVhNRTogd2Ugc2hvdWxkIGJlIGFibGUgdG8g
QVNTRVJUIHRoaXMhCisKKyAgICBtX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOworICAgIG1fZ2V0
dGVyID0ganNVbmRlZmluZWQoKTsKKyAgICBtX3NldHRlciA9IGpzVW5kZWZpbmVkKCk7CiAgICAg
bV9zZWVuQXR0cmlidXRlcyA9IEVudW1lcmFibGVQcmVzZW50IHwgQ29uZmlndXJhYmxlUHJlc2Vu
dDsKLSAgICBzZXRHZXR0ZXIoanNVbmRlZmluZWQoKSk7Ci0gICAgc2V0U2V0dGVyKGpzVW5kZWZp
bmVkKCkpOwotICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiB9CiAKIHZvaWQgUHJvcGVydHlEZXNj
cmlwdG9yOjpzZXRBY2Nlc3NvckRlc2NyaXB0b3IoR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciwgdW5z
aWduZWQgYXR0cmlidXRlcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5RGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIHNldHRlck9iamVjdCgp
IGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0VW5kZWZpbmVkKCk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXREZXNjcmlwdG9yKEpTVmFsdWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0Q3VzdG9tRGVzY3JpcHRv
cih1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEFj
Y2Vzc29yRGVzY3JpcHRvcih1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHNldEFjY2Vzc29yRGVzY3JpcHRvcihHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFdyaXRh
YmxlKGJvb2wpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RW51bWVyYWJsZShib29s
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmNwcAkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMjEgKzQ2LDYgQEAgSlNWYWx1
ZSBQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRlcihKU0dsbwogICAgIHJldHVybiBKU1ZhbHVlOjpk
ZWNvZGUobV9kYXRhLmN1c3RvbS5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29k
ZSh0aGlzVmFsdWUpLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6
OmN1c3RvbUFjY2Vzc29yR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2RhdGEuY3VzdG9tQWNj
ZXNzb3IuZ2V0dGVyU2V0dGVyLT5nZXR0ZXIoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0KLSAgICBpZiAoYXV0byBkb21BdHRyaWJ1dGUgPSB0aGlzLT5kb21BdHRyaWJ1dGUoKSkg
ewotICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAgIGlmICghbV90
aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvKSkgewotICAgICAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICAgICAg
cmV0dXJuIHRocm93RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLmN1c3RvbUFjY2Vzc29yLmdl
dHRlclNldHRlci0+Z2V0dGVyKCkoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjplbmNvZGUobV90aGlz
VmFsdWUpLCBwcm9wZXJ0eU5hbWUpKTsKLX0KLQogSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmdldFB1
cmVSZXN1bHQoKSBjb25zdAogewogICAgIEpTVmFsdWUgcmVzdWx0OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDI3Mjc0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NCwxMSArODQsMTcgQEAgaW5saW5lIHVuc2lnbmVkIGF0dHJpYnV0ZXNGb3JT
dHJ1Y3R1cmUodQogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PihhdHRyaWJ1dGVzKTsK
IH0KIAordXNpbmcgR2V0VmFsdWVGdW5jID0gRW5jb2RlZEpTVmFsdWUoSklUX09QRVJBVElPTl9B
VFRSSUJVVEVTKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSk7Cit1c2luZyBHZXRWYWx1ZUZ1bmNXaXRoUHRyID0gRW5jb2RlZEpTVmFsdWUo
SklUX09QRVJBVElPTl9BVFRSSUJVVEVTKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSwgdm9pZCopOworCit1c2luZyBQdXRWYWx1ZUZ1bmMg
PSBib29sICgqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2VPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHZhbHVlKTsKK3VzaW5nIFB1dFZhbHVlRnVuY1dpdGhQdHIgPSBib29sICgq
KShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGJhc2VPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHZhbHVlLCB2b2lkKik7CisKIGNsYXNzIFByb3BlcnR5U2xvdCB7CiAKICAgICAvLyBXZSBy
ZWx5IG9uIFByb3BlcnR5U2xvdCBiZWluZyBzdGFjayBhbGxvY2F0ZWQgd2hlbiB1c2VkLiBUaGlz
IGlzIG5lZWRlZAogICAgIC8vIGJlY2F1c2Ugd2UgcmVseSBvbiBzb21lIG9mIGl0cyBmaWVsZHMg
YmVpbmcgYSBHQyByb290LiBGb3IgZXhhbXBsZSwgaXQKLSAgICAvLyBtYXkgYmUgdGhlIG9ubHkg
dGhpbmcgdGhhdCBwb2ludHMgdG8gdGhlIEN1c3RvbUdldHRlclNldHRlciBwcm9wZXJ0eSBpdCBo
YXMuCisgICAgLy8gbWF5IGJlIHRoZSBvbmx5IHRoaW5nIHRoYXQgcG9pbnRzIHRvIHRoZSBHZXR0
ZXJTZXR0ZXIgcHJvcGVydHkgaXQgaGFzLgogICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FUSU9O
OwogCiAgICAgZW51bSBQcm9wZXJ0eVR5cGUgOiB1aW50OF90IHsKQEAgLTk2LDcgKzEwMiw2IEBA
IGNsYXNzIFByb3BlcnR5U2xvdCB7CiAgICAgICAgIFR5cGVWYWx1ZSwKICAgICAgICAgVHlwZUdl
dHRlciwKICAgICAgICAgVHlwZUN1c3RvbSwKLSAgICAgICAgVHlwZUN1c3RvbUFjY2Vzc29yLAog
ICAgIH07CiAKIHB1YmxpYzoKQEAgLTEyMSw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBkaXNhbGxvd1ZNRW50cnkuZW1wbGFjZSgqdm1Gb3JJbnF1aXJ5KTsKICAgICB9CiAKLSAgICB1
c2luZyBHZXRWYWx1ZUZ1bmMgPSBFbmNvZGVkSlNWYWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVU
RVMqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKTsKLSAgICB1c2luZyBHZXRWYWx1ZUZ1bmNXaXRoUHRyID0gRW5jb2RlZEpTVmFsdWUoSklU
X09QRVJBVElPTl9BVFRSSUJVVEVTKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSwgdm9pZCopOworICAgIHVzaW5nIEdldFZhbHVlRnVuYyA9
IEpTQzo6R2V0VmFsdWVGdW5jOworICAgIHVzaW5nIEdldFZhbHVlRnVuY1dpdGhQdHIgPSBKU0M6
OkdldFZhbHVlRnVuY1dpdGhQdHI7CiAKICAgICBKU1ZhbHVlIGdldFZhbHVlKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lKSBjb25zdDsKICAgICBKU1ZhbHVlIGdldFZhbHVlKEpTR2xvYmFs
T2JqZWN0KiwgdWludDY0X3QgcHJvcGVydHlOYW1lKSBjb25zdDsKQEAgLTEzMyw3ICsxMzgsNiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5
cGUgPT0gVHlwZVZhbHVlOyB9CiAgICAgYm9vbCBpc0FjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUdldHRlcjsgfQogICAgIGJvb2wgaXNDdXN0b20oKSBjb25z
dCB7IHJldHVybiBtX3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tOyB9Ci0gICAgYm9vbCBpc0N1
c3RvbUFjY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUN1c3Rv
bUFjY2Vzc29yOyB9CiAgICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4g
aXNDYWNoZWFibGUoKSAmJiBpc1ZhbHVlKCk7IH0KICAgICBib29sIGlzQ2FjaGVhYmxlR2V0dGVy
KCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBpc0FjY2Vzc29yKCk7IH0KICAgICBi
b29sIGlzQ2FjaGVhYmxlQ3VzdG9tKCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBp
c0N1c3RvbSgpOyB9CkBAIC0xNjQsMTQgKzE2OCwxNCBAQCBwdWJsaWM6CiAKICAgICBHZXRWYWx1
ZUZ1bmMgY3VzdG9tR2V0dGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChpc0NhY2hl
YWJsZUN1c3RvbSgpKTsKKyAgICAgICAgQVNTRVJUKGlzQ3VzdG9tKCkpOwogICAgICAgICByZXR1
cm4gbV9kYXRhLmN1c3RvbS5nZXRWYWx1ZTsKICAgICB9CiAKLSAgICBDdXN0b21HZXR0ZXJTZXR0
ZXIqIGN1c3RvbUdldHRlclNldHRlcigpIGNvbnN0CisgICAgUHV0VmFsdWVGdW5jIGN1c3RvbVNl
dHRlcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoaXNDdXN0b21BY2Nlc3NvcigpKTsK
LSAgICAgICAgcmV0dXJuIG1fZGF0YS5jdXN0b21BY2Nlc3Nvci5nZXR0ZXJTZXR0ZXI7CisgICAg
ICAgIEFTU0VSVChpc0N1c3RvbSgpKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5jdXN0b20ucHV0
VmFsdWU7CiAgICAgfQogCiAgICAgSlNPYmplY3QqIHNsb3RCYXNlKCkgY29uc3QKQEAgLTI1NSwx
MyArMjU5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9hZGRpdGlvbmFsRGF0YS5tb2R1bGVOYW1l
c3BhY2VTbG90LnNjb3BlT2Zmc2V0ID0gc2NvcGVPZmZzZXQub2Zmc2V0KCk7CiAgICAgfQogCi0g
ICAgdm9pZCBzZXRDdXN0b20oSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUpCisgICAgdm9pZCBzZXRDdXN0b20oSlNPYmplY3QqIHNs
b3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUsIFB1dFZh
bHVlRnVuYyBwdXRWYWx1ZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQoYXR0cmli
dXRlcyA9PSBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGF0dHJpYnV0ZXMpKTsKICAgICAgICAgCiAg
ICAgICAgIEFTU0VSVChnZXRWYWx1ZSk7CiAgICAgICAgIGFzc2VydElzQ0Z1bmN0aW9uUHRyKGdl
dFZhbHVlKTsKICAgICAgICAgbV9kYXRhLmN1c3RvbS5nZXRWYWx1ZSA9IGdldFZhbHVlOworICAg
ICAgICBhc3NlcnRJc051bGxPckNGdW5jdGlvblB0cihwdXRWYWx1ZSk7CisgICAgICAgIG1fZGF0
YS5jdXN0b20ucHV0VmFsdWUgPSBwdXRWYWx1ZTsKICAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0
cmlidXRlczsKIAogICAgICAgICBBU1NFUlQoc2xvdEJhc2UpOwpAQCAtMjcwLDIwICsyNzYsMjIg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9jYWNoZWFiaWxpdHkgPT0gQ2FjaGluZ0Rpc2Fs
bG93ZWQpOwogICAgIH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tKEpTT2JqZWN0KiBzbG90QmFzZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgR2V0VmFsdWVGdW5jIGdldFZhbHVlLCBET01BdHRyaWJ1dGVB
bm5vdGF0aW9uIGRvbUF0dHJpYnV0ZSkKKyAgICB2b2lkIHNldEN1c3RvbShKU09iamVjdCogc2xv
dEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEdldFZhbHVlRnVuYyBnZXRWYWx1ZSwgUHV0VmFs
dWVGdW5jIHB1dFZhbHVlLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIGRvbUF0dHJpYnV0ZSkKICAg
ICB7Ci0gICAgICAgIHNldEN1c3RvbShzbG90QmFzZSwgYXR0cmlidXRlcywgZ2V0VmFsdWUpOwor
ICAgICAgICBzZXRDdXN0b20oc2xvdEJhc2UsIGF0dHJpYnV0ZXMsIGdldFZhbHVlLCBwdXRWYWx1
ZSk7CiAgICAgICAgIG1fYWRkaXRpb25hbERhdGFUeXBlID0gQWRkaXRpb25hbERhdGFUeXBlOjpE
T01BdHRyaWJ1dGU7CiAgICAgICAgIG1fYWRkaXRpb25hbERhdGEuZG9tQXR0cmlidXRlID0gZG9t
QXR0cmlidXRlOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNldENhY2hlYWJsZUN1c3RvbShKU09i
amVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEdldFZhbHVlRnVuYyBnZXRWYWx1
ZSkKKyAgICB2b2lkIHNldENhY2hlYWJsZUN1c3RvbShKU09iamVjdCogc2xvdEJhc2UsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEdldFZhbHVlRnVuYyBnZXRWYWx1ZSwgUHV0VmFsdWVGdW5jIHB1dFZh
bHVlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVzID09IGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoYXR0cmlidXRlcykpOwogICAgICAgICAKICAgICAgICAgQVNTRVJU
KGdldFZhbHVlKTsKICAgICAgICAgYXNzZXJ0SXNDRnVuY3Rpb25QdHIoZ2V0VmFsdWUpOwogICAg
ICAgICBtX2RhdGEuY3VzdG9tLmdldFZhbHVlID0gZ2V0VmFsdWU7CisgICAgICAgIGFzc2VydElz
TnVsbE9yQ0Z1bmN0aW9uUHRyKHB1dFZhbHVlKTsKKyAgICAgICAgbV9kYXRhLmN1c3RvbS5wdXRW
YWx1ZSA9IHB1dFZhbHVlOwogICAgICAgICBtX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwogCiAg
ICAgICAgIEFTU0VSVChzbG90QmFzZSk7CkBAIC0yOTMsMzEgKzMwMSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fY2FjaGVhYmlsaXR5ID0gQ2FjaGluZ0FsbG93ZWQ7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXRDYWNoZWFibGVDdXN0b20oSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0
cmlidXRlKQorICAgIHZvaWQgc2V0Q2FjaGVhYmxlQ3VzdG9tKEpTT2JqZWN0KiBzbG90QmFzZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgR2V0VmFsdWVGdW5jIGdldFZhbHVlLCBQdXRWYWx1ZUZ1bmMg
cHV0VmFsdWUsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKQogICAgIHsKLSAg
ICAgICAgc2V0Q2FjaGVhYmxlQ3VzdG9tKHNsb3RCYXNlLCBhdHRyaWJ1dGVzLCBnZXRWYWx1ZSk7
CisgICAgICAgIHNldENhY2hlYWJsZUN1c3RvbShzbG90QmFzZSwgYXR0cmlidXRlcywgZ2V0VmFs
dWUsIHB1dFZhbHVlKTsKICAgICAgICAgbV9hZGRpdGlvbmFsRGF0YVR5cGUgPSBBZGRpdGlvbmFs
RGF0YVR5cGU6OkRPTUF0dHJpYnV0ZTsKICAgICAgICAgbV9hZGRpdGlvbmFsRGF0YS5kb21BdHRy
aWJ1dGUgPSBkb21BdHRyaWJ1dGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXRDdXN0b21HZXR0ZXJT
ZXR0ZXIoSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBDdXN0b21HZXR0
ZXJTZXR0ZXIqIGdldHRlclNldHRlcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhdHRyaWJ1dGVz
ID09IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoYXR0cmlidXRlcykpOwotICAgICAgICBBU1NFUlQo
YXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7Ci0KLSAgICAg
ICAgZGlzYWJsZUNhY2hpbmcoKTsKLQotICAgICAgICBBU1NFUlQoZ2V0dGVyU2V0dGVyKTsKLSAg
ICAgICAgbV9kYXRhLmN1c3RvbUFjY2Vzc29yLmdldHRlclNldHRlciA9IGdldHRlclNldHRlcjsK
LSAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKLQotICAgICAgICBBU1NFUlQoc2xv
dEJhc2UpOwotICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7Ci0gICAgICAgIG1fcHJvcGVy
dHlUeXBlID0gVHlwZUN1c3RvbUFjY2Vzc29yOwotCi0gICAgICAgIEFTU0VSVChtX2NhY2hlYWJp
bGl0eSA9PSBDYWNoaW5nRGlzYWxsb3dlZCk7Ci0gICAgfQotCiAgICAgdm9pZCBzZXRHZXR0ZXJT
bG90KEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0cmlidXRlcywgR2V0dGVyU2V0dGVy
KiBnZXR0ZXJTZXR0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQoYXR0cmlidXRlcyA9PSBhdHRy
aWJ1dGVzRm9yU3RydWN0dXJlKGF0dHJpYnV0ZXMpKTsKQEAgLTM3Nyw3ICszNjcsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZnVuY3Rpb25HZXR0
ZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVl
IGN1c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjdXN0b21BY2Nlc3NvckdldHRlcihKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAKICAgICB1bmlvbiB7CiAgICAgICAgIEVuY29k
ZWRKU1ZhbHVlIHZhbHVlOwpAQCAtMzg2LDEwICszNzUsOCBAQCBwcml2YXRlOgogICAgICAgICB9
IGdldHRlcjsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIEdldFZhbHVlRnVuYyBnZXRW
YWx1ZTsKKyAgICAgICAgICAgIFB1dFZhbHVlRnVuYyBwdXRWYWx1ZTsKICAgICAgICAgfSBjdXN0
b207Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGdl
dHRlclNldHRlcjsKLSAgICAgICAgfSBjdXN0b21BY2Nlc3NvcjsKICAgICB9IG1fZGF0YTsKIAog
ICAgIHVuc2lnbmVkIG1fYXR0cmlidXRlcyB7IDAgfTsKQEAgLTQxNyw4ICs0MDQsNiBAQCBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUgUHJvcGVydHlTbG90OjpnZXRWCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKICAgICBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gVHlw
ZUdldHRlcikKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uR2V0dGVyKGdsb2JhbE9iamVjdCk7Ci0g
ICAgaWYgKG1fcHJvcGVydHlUeXBlID09IFR5cGVDdXN0b21BY2Nlc3NvcikKLSAgICAgICAgcmV0
dXJuIGN1c3RvbUFjY2Vzc29yR2V0dGVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAg
ICByZXR1cm4gY3VzdG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKTsKIH0KIApA
QCAtNDI5LDggKzQxNCw2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6Omdl
dFYKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX2RhdGEudmFsdWUpOwogICAgIGlm
IChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlR2V0dGVyKQogICAgICAgICByZXR1cm4gZnVuY3Rpb25H
ZXR0ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUN1c3Rv
bUFjY2Vzc29yKQotICAgICAgICByZXR1cm4gY3VzdG9tQWNjZXNzb3JHZXR0ZXIoZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKICAgICByZXR1cm4gY3Vz
dG9tR2V0dGVyKGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1l
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5
U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFBy
b3BlcnR5U2xvdC5oCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCArMzgsOCBA
QCBjbGFzcyBQdXRQcm9wZXJ0eVNsb3QgewogcHVibGljOgogICAgIGVudW0gVHlwZSA6IHVpbnQ4
X3QgeyBVbmNhY2hhYmxlLCBFeGlzdGluZ1Byb3BlcnR5LCBOZXdQcm9wZXJ0eSwgU2V0dGVyUHJv
cGVydHksIEN1c3RvbVZhbHVlLCBDdXN0b21BY2Nlc3NvciB9OwogICAgIGVudW0gQ29udGV4dCB7
IFVua25vd25Db250ZXh0LCBQdXRCeUlkLCBQdXRCeUlkRXZhbCB9OwotICAgIHVzaW5nIFB1dFZh
bHVlRnVuYyA9IGJvb2wgKCopKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc09i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpOwotICAgIHVzaW5nIFB1dFZhbHVlRnVuY1dpdGhQ
dHIgPSBib29sICgqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHZhbHVlLCB2b2lkKik7CisgICAgdXNpbmcgUHV0VmFsdWVGdW5jID0g
SlNDOjpQdXRWYWx1ZUZ1bmM7CisgICAgdXNpbmcgUHV0VmFsdWVGdW5jV2l0aFB0ciA9IEpTQzo6
UHV0VmFsdWVGdW5jV2l0aFB0cjsKIAogICAgIFB1dFByb3BlcnR5U2xvdChKU1ZhbHVlIHRoaXNW
YWx1ZSwgYm9vbCBpc1N0cmljdE1vZGUgPSBmYWxzZSwgQ29udGV4dCBjb250ZXh0ID0gVW5rbm93
bkNvbnRleHQsIGJvb2wgaXNJbml0aWFsaXphdGlvbiA9IGZhbHNlKQogICAgICAgICA6IG1fYmFz
ZShudWxscHRyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNp
b24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Niw3ICs5Niw4IEBACiAjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ2FsbGVlLmgi
Ci0jaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpT
Q3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0N1c3RvbVNldHRlckZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaCIKICNpbmNs
dWRlICJKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpA
QCAtMzg4LDcgKzM4OSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSwKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJn
TGlzdCkKICAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJ
VChtYWtlVW5pcXVlPFNpbXBsZVN0YXRzPigpKQotICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVu
Y3Rpb25NYXAoKnRoaXMpCiAgICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKICAgICAsIHN5bWJvbElt
cGxUb1N5bWJvbE1hcCgqdGhpcykKICAgICAsIHN0cnVjdHVyZUNhY2hlKCp0aGlzKQpAQCAtMTQ4
Miw3ICsxNDgyLDggQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKAog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrR2xvYmFsT2Jq
ZWN0U3BhY2UsIGNhbGxiYWNrR2xvYmFsT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxi
YWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0PikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhjYWxsYmFja0Z1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCks
IEpTQ2FsbGJhY2tGdW5jdGlvbikgLy8gSGFzaDoweGU3NjQ4ZWJjCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tPYmplY3RTcGFjZSwgY2FsbGJhY2tPYmpl
Y3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4p
Ci1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbikgLy8gSGFzaDoweDE4MDkxMDAwCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbikgLy8gSGFzaDoweDE4MDkxMDAwCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY3VzdG9tU2V0dGVyRnVuY3Rp
b25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbikK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkYXRhVmlld1NwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0RhdGFWaWV3KQogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGRlYnVnZ2VyU2NvcGVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgRGVidWdnZXJTY29wZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhlcnJvckluc3RhbmNlU3BhY2UsIGVycm9ySW5zdGFuY2VIZWFwQ2VsbFR5cGUuZ2V0KCks
IEVycm9ySW5zdGFuY2UpIC8vIEhhc2g6MHgzZjQwZDRhCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNiBAQCBjbGFzcyBKU0FQ
SVdyYXBwZXJHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU0FQSVdyYXBwZXJPYmplY3Q7CiBjbGFzcyBK
U0NDYWxsYmFja0Z1bmN0aW9uOwogY2xhc3MgSlNDYWxsYmFja0NvbnN0cnVjdG9yOwotY2xhc3Mg
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjsKIGNsYXNzIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudDsKQEAgLTUwMyw3ICs1MDIsOCBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja0dsb2JhbE9iamVjdFNwYWNlKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tGdW5jdGlvblNwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tPYmplY3RT
cGFjZSkKLSAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihjdXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoY3VzdG9tU2V0dGVyRnVuY3Rpb25TcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGRhdGFWaWV3U3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihkZWJ1Z2dlclNjb3BlU3BhY2UpCiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihlcnJvckluc3RhbmNlU3BhY2UpCkBAIC03MjMsNyAr
NzIzLDYgQEAgcHVibGljOgogICAgIFNtYWxsU3RyaW5ncyBzbWFsbFN0cmluZ3M7CiAgICAgTnVt
ZXJpY1N0cmluZ3MgbnVtZXJpY1N0cmluZ3M7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNpbXBsZVN0
YXRzPiBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQ7Ci0gICAg
V2Vha0dDTWFwPHN0ZDo6cGFpcjxDdXN0b21HZXR0ZXJTZXR0ZXIqLCBpbnQ+LCBKU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uPiBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbk1hcDsKICAgICBX
ZWFrR0NNYXA8U3RyaW5nSW1wbCosIEpTU3RyaW5nLCBQdHJIYXNoPFN0cmluZ0ltcGwqPj4gc3Ry
aW5nQ2FjaGU7CiAgICAgU3Ryb25nPEpTU3RyaW5nPiBsYXN0Q2FjaGVkU3RyaW5nOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wMi0xMyAgQWxleGV5IFNodmF5
a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gUHJvcGVydHlTbG90
IHNob3VsZCBhbGxvdyBwYXNzaW5nIGN1c3RvbSBzZXR0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4NzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IGNyb3NzLW9yaWdpbiBhY2Nl
c3NvciBmdW5jdGlvbnMgZnJvbSBkaWZmZXJlbnQgcmVhbG1zIHRvIGhhdmUgdGhlIHNhbWUgd3Jh
cHBlciwKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5U2xvdDo6VHlwZUdldHRlciBpbnN0ZWFkLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9XaW5kb3cvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
LW90aGVyLXdpbmRvdy5odG1sCisgICAgICAgICAgICAgICBqcy9pbnN0YW5jZS1wcm9wZXJ0eS1n
ZXR0ZXItb3RoZXItaW5zdGFuY2UuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL0V2ZW50LWlzVHJ1c3RlZC5hbnkuanMKKyAgICAg
ICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9o
aXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvZG9jdW1lbnRfbG9jYXRpb24uaHRtbAorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldE93blByb3BlcnR5U2xvdENvbW1vbik6CisKIDIwMjEtMDItMTEgIEFkaXR5YSBLZWVy
dGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdW0ZDUl0gUmFuZ2UgaW5w
dXRzIGhhdmUgYW4gaW5jb3JyZWN0IFJUTCBhcHBlYXJhbmNlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyNzI3
NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDEyIEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQnVpbHRpbk5hbWVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2V0dGVyU2V0dGVy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW50ZXJuYWxGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1c3RvbUdldHRl
ckZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDdXN0b21TZXR0ZXJGdW5j
dGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU01pY3JvdGFzay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0xvb2t1cC5oPgpAQCAtMTg0LDkgKzE4NywxMCBAQCBib29sIGpzRE9NV2luZG93R2V0T3duUHJv
cGVydHlTbG90UmVzdHJpCiAgICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLm9wZW5lclB1YmxpY05hbWUoKQogICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1
aWx0aW5OYW1lcy5wYXJlbnRQdWJsaWNOYW1lKCkKICAgICAgICAgICAgIHx8IHByb3BlcnR5TmFt
ZSA9PSBidWlsdGluTmFtZXMudG9wUHVibGljTmFtZSgpKSB7Ci0gICAgICAgICAgICBib29sIHNo
b3VsZEV4cG9zZVNldHRlciA9IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMubG9jYXRpb25Q
dWJsaWNOYW1lKCk7Ci0gICAgICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRl
clNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBlbnRyeS0+cHJvcGVydHlH
ZXR0ZXIoKSwgc2hvdWxkRXhwb3NlU2V0dGVyID8gZW50cnktPnByb3BlcnR5UHV0dGVyKCkgOiBu
dWxscHRyKTsKLSAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tR2V0dGVyU2V0dGVyKHRoaXNPYmpl
Y3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgY3VzdG9tR2V0dGVy
U2V0dGVyKTsKKyAgICAgICAgICAgIGF1dG8qIGdldHRlciA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b246OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnkt
PnByb3BlcnR5R2V0dGVyKCkpOworICAgICAgICAgICAgYXV0byogc2V0dGVyID0gcHJvcGVydHlO
YW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1YmxpY05hbWUoKSA/IEpTQ3VzdG9tU2V0dGVy
RnVuY3Rpb246OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZW50cnktPnByb3BlcnR5UHV0dGVyKCkpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIGF1dG8qIGdl
dHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2V0dGVyLCBzZXR0ZXIpOworICAgICAgICAgICAgc2xvdC5zZXRHZXR0ZXJTbG90KHRoaXNP
YmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSwgZ2V0dGVyU2V0dGVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4
IEBACiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvR2V0dGVyU2V0dGVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Mb29rdXAuaD4KIApAQCAt
NzAsOCArNzIsOSBAQCBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oSlNMCiAg
ICAgLy8gYSBkZXNjcmlwdG9yIHRoYXQgaGFzIGEgc2V0dGVyIGJ1dCBubyBnZXR0ZXIuCiAgICAg
aWYgKHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5ICYmIHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5ocmVmUHVibGlj
TmFtZSgpKSB7CiAgICAgICAgIGF1dG8qIGVudHJ5ID0gSlNMb2NhdGlvbjo6aW5mbygpLT5zdGF0
aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpOwotICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCBudWxscHRyLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7Ci0gICAgICAgIHNsb3Quc2V0
Q3VzdG9tR2V0dGVyU2V0dGVyKCZ0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBjdXN0b21HZXR0ZXJTZXR0ZXIpOworICAgICAgICBhdXRvKiBzZXR0ZXIgPSBK
U0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKKyAgICAgICAgYXV0byogZ2V0
dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBudWxscHRyLCBzZXR0ZXIpOworICAgICAgICBzbG90LnNldEdldHRlclNsb3QoJnRoaXNPYmpl
Y3QsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSwgZ2V0dGVyU2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNzI3NDEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0xMyAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gUHJvcGVydHlTbG90IHNob3VsZCBh
bGxvdyBwYXNzaW5nIGN1c3RvbSBzZXR0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Itb3RoZXItd2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5k
b3cvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLW90aGVyLXdpbmRvdy5odG1sOgorICAgICAgICAq
IGpzL2luc3RhbmNlLXByb3BlcnR5LWdldHRlci1vdGhlci1pbnN0YW5jZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICoganMvaW5zdGFuY2UtcHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLmh0
bWw6CisKIDIwMjEtMDItMTEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdW0ZDUl0gUmFuZ2UgaW5wdXRzIGhhdmUgYW4gaW5jb3JyZWN0IFJUTCBh
cHBlYXJhbmNlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yLW90aGVyLXdpbmRvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE93blByb3BlcnR5RGVzY3JpcHRvci1vdGhlci13
aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzI3NDEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLW90aGVyLXdpbmRvdy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMTIgKzUsMTIgQEAgT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihvdGhlcldpbmRvdywgJ2xvY2F0aW9uJykKIFBBU1MgZGVzY3JpcHRvciBp
cyBub3QgdW5kZWZpbmVkCi1QQVNTIGRlc2NyaXB0b3IuZ2V0IGlzIGFuIGluc3RhbmNlIG9mIEZ1
bmN0aW9uCi1QQVNTIGRlc2NyaXB0b3Iuc2V0IGlzIGFuIGluc3RhbmNlIG9mIEZ1bmN0aW9uCitQ
QVNTIGRlc2NyaXB0b3IuZ2V0IGluc3RhbmNlb2Ygb3RoZXJXaW5kb3cuRnVuY3Rpb24gaXMgdHJ1
ZQorUEFTUyBkZXNjcmlwdG9yLnNldCBpbnN0YW5jZW9mIG90aGVyV2luZG93LkZ1bmN0aW9uIGlz
IHRydWUKIFBBU1MgZGVzY3JpcHRvci5lbnVtZXJhYmxlIGlzIHRydWUKIFBBU1MgZGVzY3JpcHRv
ci5jb25maWd1cmFibGUgaXMgZmFsc2UKIFBBU1MgZGVzY3JpcHRvci5nZXQuY2FsbChvdGhlcldp
bmRvdykudG9TdHJpbmcoKSBpcyAiYWJvdXQ6YmxhbmsiCi1QQVNTIGRlc2NyaXB0b3IuZ2V0LmNh
bGwoKSBpcyBkZXNjcmlwdG9yLmdldC5jYWxsKHdpbmRvdykKK1BBU1MgZGVzY3JpcHRvci5nZXQu
Y2FsbCgpIGlzIGRlc2NyaXB0b3IuZ2V0LmNhbGwob3RoZXJXaW5kb3cpCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Itb3RoZXItd2luZG93Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE93blByb3BlcnR5
RGVzY3JpcHRvci1vdGhlci13aW5kb3cuaHRtbAkocmV2aXNpb24gMjcyNzQxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE93blByb3BlcnR5RGVzY3JpcHRvci1vdGhlci13aW5k
b3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTIgKzEwLDEyIEBAIG90aGVyV2luZG93ID0g
ZnJhbWVzWzBdOwogCiBldmFsQW5kTG9nKCJkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihvdGhlcldpbmRvdywgJ2xvY2F0aW9uJykiKTsKIHNob3VsZE5vdEJlKCJk
ZXNjcmlwdG9yIiwgInVuZGVmaW5lZCIpOwotc2hvdWxkQmVUeXBlKCJkZXNjcmlwdG9yLmdldCIs
ICJGdW5jdGlvbiIpOwotc2hvdWxkQmVUeXBlKCJkZXNjcmlwdG9yLnNldCIsICJGdW5jdGlvbiIp
Oworc2hvdWxkQmVUcnVlKCJkZXNjcmlwdG9yLmdldCBpbnN0YW5jZW9mIG90aGVyV2luZG93LkZ1
bmN0aW9uIik7CitzaG91bGRCZVRydWUoImRlc2NyaXB0b3Iuc2V0IGluc3RhbmNlb2Ygb3RoZXJX
aW5kb3cuRnVuY3Rpb24iKTsKIHNob3VsZEJlVHJ1ZSgiZGVzY3JpcHRvci5lbnVtZXJhYmxlIik7
CiBzaG91bGRCZUZhbHNlKCJkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSIpOwogc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkZXNjcmlwdG9yLmdldC5jYWxsKG90aGVyV2luZG93KS50b1N0cmluZygpIiwg
ImFib3V0OmJsYW5rIik7Ci1zaG91bGRCZSgiZGVzY3JpcHRvci5nZXQuY2FsbCgpIiwgImRlc2Ny
aXB0b3IuZ2V0LmNhbGwod2luZG93KSIpOworc2hvdWxkQmUoImRlc2NyaXB0b3IuZ2V0LmNhbGwo
KSIsICJkZXNjcmlwdG9yLmdldC5jYWxsKG90aGVyV2luZG93KSIpOwogPC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Mjgz
NykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0xMyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gUHJvcGVydHlTbG90IHNob3VsZCBhbGxvdyBw
YXNzaW5nIGN1c3RvbSBzZXR0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjE4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5k
aW5nL2F0dHJpYnV0ZXMtYWNjZXNzb3JzLXVuaXF1ZS1mdW5jdGlvbi1vYmplY3RzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2Ny
aXB0LWJpbmRpbmcvYXR0cmlidXRlcy1hY2Nlc3NvcnMtdW5pcXVlLWZ1bmN0aW9uLW9iamVjdHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZl
bnQtaXNUcnVzdGVkLmFueS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2RvbS9ldmVudHMvRXZlbnQtaXNUcnVzdGVkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxv
Y2F0aW9uLWludGVyZmFjZS9kb2N1bWVudF9sb2NhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9hdXhpbGlhcnktYnJv
d3NpbmctY29udGV4dHMvb3BlbmVyLXNldHRlci53aW5kb3ctZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRkZWQtb3Bl
bmVyLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wMi0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2
aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIEFub3RoZXIgV1BUIHRl
c3QgaW1wb3J0CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvYXR0cmlidXRlcy1hY2Nlc3NvcnMtdW5pcXVl
LWZ1bmN0aW9uLW9iamVjdHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9hdHRyaWJ1dGVzLWFjY2Vzc29ycy11bmlxdWUtZnVuY3Rpb24tb2JqZWN0cy1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2F0dHJpYnV0ZXMtYWNjZXNzb3JzLXVu
aXF1ZS1mdW5jdGlvbi1vYmplY3RzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDMgQEAKKworUEFTUyBGb3IgYXR0cmlidXRlcywgZWFjaCBjb3B5IG9mIHRoZSBhY2Nlc3Nv
ciBwcm9wZXJ0eSBoYXMgZGlzdGluY3QgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0cyBmb3IgaXRz
IGdldHRlcnMgYW5kIHNldHRlcnMuCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9hdHRyaWJ1dGVzLWFj
Y2Vzc29ycy11bmlxdWUtZnVuY3Rpb24tb2JqZWN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQt
YmluZGluZy9hdHRyaWJ1dGVzLWFjY2Vzc29ycy11bmlxdWUtZnVuY3Rpb24tb2JqZWN0cy5odG1s
CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9hdHRyaWJ1dGVzLWFjY2Vzc29ycy11bmlx
dWUtZnVuY3Rpb24tb2JqZWN0cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPkFsbCBhdHRy
aWJ1dGVzIGFjY2Vzc29ycyBhcmUgdW5pcXVlIGZ1bmN0aW9uIG9iamVjdHM8L3RpdGxlPgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwt
aW50ZXJmYWNlLW1peGlucyI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorInVzZSBzdHJpY3QiOworCit0ZXN0KCgpID0+IHsKKyAg
Y29uc3Qgc2VlblByb3RvdHlwZXMgPSBuZXcgV2Vha1NldChbRnVuY3Rpb24ucHJvdG90eXBlXSk7
CisgIGNvbnN0IHNlZW5GdW5jdGlvbnMgPSBuZXcgV2Vha01hcCgpOworCisgIGZvciAoY29uc3Qg
d2luZG93S2V5IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykpIHsKKyAgICBj
b25zdCB3aW5kb3dWYWx1ZSA9IHdpbmRvd1t3aW5kb3dLZXldOworICAgIGlmICh0eXBlb2Ygd2lu
ZG93VmFsdWUgIT09ICJmdW5jdGlvbiIpIGNvbnRpbnVlOworCisgICAgY29uc3Qge3Byb3RvdHlw
ZX0gPSB3aW5kb3dWYWx1ZTsKKyAgICBpZiAoIXByb3RvdHlwZSB8fCBzZWVuUHJvdG90eXBlcy5o
YXMocHJvdG90eXBlKSkgY29udGludWU7CisgICAgc2VlblByb3RvdHlwZXMuYWRkKHByb3RvdHlw
ZSk7CisKKyAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhw
cm90b3R5cGUpKSB7CisgICAgICBjb25zdCBhc3NlcnRfbm90X3NlZW4gPSAoZm4sIGZpZWxkKSA9
PiB7CisgICAgICAgIGNvbnN0IGZuSW5mbyA9IGAke3dpbmRvd0tleX0uJHtrZXl9LiR7ZmllbGR9
YDsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWVuRnVuY3Rpb25zLmdldChmbiksIHVuZGVmaW5l
ZCwgZm5JbmZvKTsKKyAgICAgICAgc2VlbkZ1bmN0aW9ucy5zZXQoZm4sIGZuSW5mbyk7CisgICAg
ICB9OworCisgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihwcm90b3R5cGUsIGtleSk7CisgICAgICBpZiAoZGVzYy5nZXQpIGFzc2VydF9ub3Rfc2Vlbihk
ZXNjLmdldCwgIltbR2V0XV0iKTsKKyAgICAgIGlmIChkZXNjLnNldCkgYXNzZXJ0X25vdF9zZWVu
KGRlc2Muc2V0LCAiW1tTZXRdXSIpOworICAgIH0KKyAgfQorfSwgIkZvciBhdHRyaWJ1dGVzLCBl
YWNoIGNvcHkgb2YgdGhlIGFjY2Vzc29yIHByb3BlcnR5IGhhcyBkaXN0aW5jdCBidWlsdC1pbiBm
dW5jdGlvbiBvYmplY3RzIGZvciBpdHMgZ2V0dGVycyBhbmQgc2V0dGVycy4iKTsKKzwvc2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
ZXZlbnRzL0V2ZW50LWlzVHJ1c3RlZC5hbnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVu
dC1pc1RydXN0ZWQuYW55LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjcyNzQxKQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL0V2ZW50LWlz
VHJ1c3RlZC5hbnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsMyBAQAog
Ci1GQUlMIEV2ZW50LWlzVHJ1c3RlZCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmdW5jdGlvbiAi
ZnVuY3Rpb24gaXNUcnVzdGVkKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iIGJ1dCBnb3QgZnVu
Y3Rpb24gImZ1bmN0aW9uIGlzVHJ1c3RlZCgpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IgorUEFT
UyBFdmVudC1pc1RydXN0ZWQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL0V2ZW50LWlzVHJ1c3RlZC5hbnkud29ya2VyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnQtaXNUcnVzdGVkLmFueS53b3JrZXItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzI3NDEpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnQtaXNUcnVzdGVkLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsMyBAQAogCi1GQUlMIEV2ZW50LWlzVHJ1
c3RlZCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gaXNUcnVzdGVk
KCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iIGJ1dCBnb3QgZnVuY3Rpb24gImZ1bmN0aW9uIGlz
VHJ1c3RlZCgpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IgorUEFTUyBFdmVudC1pc1RydXN0ZWQK
IApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9kb2N1bWVudF9sb2NhdGlv
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVy
ZmFjZS9kb2N1bWVudF9sb2NhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3Mjc0MSkKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvZG9jdW1lbnRfbG9jYXRpb24tZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDYgQEAKIAogUEFTUyBkb2N1bWVudCBu
b3QgaW4gYSBicm93c2luZyBjb250ZXh0CiBQQVNTIGRvY3VtZW50LmxvY2F0aW9uIGVxdWFscyB3
aW5kb3cubG9jYXRpb24KLUZBSUwgQXR0cmlidXRlIGdldHRlciBkZWR1cGxpY2F0aW9uIGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiBsb2NhdGlvbigpIHsKLSAgICBb
bmF0aXZlIGNvZGVdCi19IiBidXQgZ290IGZ1bmN0aW9uICJmdW5jdGlvbiBsb2NhdGlvbigpIHsK
LSAgICBbbmF0aXZlIGNvZGVdCi19IgotRkFJTCBBdHRyaWJ1dGUgc2V0dGVyIGRlZHVwbGljYXRp
b24gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0aW9uIGxvY2F0aW9uKCkg
ewotICAgIFtuYXRpdmUgY29kZV0KLX0iIGJ1dCBnb3QgZnVuY3Rpb24gImZ1bmN0aW9uIGxvY2F0
aW9uKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iCitQQVNTIEF0dHJpYnV0ZSBnZXR0ZXIgZGVk
dXBsaWNhdGlvbgorUEFTUyBBdHRyaWJ1dGUgc2V0dGVyIGRlZHVwbGljYXRpb24KIApJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L3dpbmRvd3MvZW1iZWRkZWQtb3BlbmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2lu
ZG93cy9lbWJlZGRlZC1vcGVuZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzI3NDEpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
d2luZG93cy9lbWJlZGRlZC1vcGVuZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMyBAQAogCi1GQUlMIG9wZW5lciBhbmQgZW1iZWRkZWQgZG9jdW1lbnRzOyB1c2luZyB3
aW5kb3cub3BlbigpIGFzc2VydF9lcXVhbHM6IG9wZW5lciBiZWZvcmUgc2V0dGluZyBpdCB0byBu
dWxsIHZpYSBkaXJlY3RseSBpbnZva2luZyB0aGUgZ2V0dGVyIGV4cGVjdGVkIG9iamVjdCAiW29i
amVjdCBXaW5kb3ddIiBidXQgZ290IG51bGwKK1BBU1Mgb3BlbmVyIGFuZCBlbWJlZGRlZCBkb2N1
bWVudHM7IHVzaW5nIHdpbmRvdy5vcGVuKCkKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvYXV4aWxpYXJ5LWJy
b3dzaW5nLWNvbnRleHRzL29wZW5lci1zZXR0ZXIud2luZG93LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvd2luZG93cy9hdXhpbGlhcnktYnJvd3NpbmctY29udGV4dHMvb3BlbmVyLXNldHRl
ci53aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzI3NDEpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9hdXhp
bGlhcnktYnJvd3NpbmctY29udGV4dHMvb3BlbmVyLXNldHRlci53aW5kb3ctZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogCi1GQUlMIFNldHRpbmcgd2luZG93Lm9w
ZW5lciB0byB1bmRlZmluZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgIngiIGJ1
dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCi1GQUlMIFNldHRpbmcgd2luZG93Lm9wZW5lciB0
byA0MiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAieCIgYnV0IGdvdCAobnVtYmVy
KSA0MgotRkFJTCBTZXR0aW5nIHdpbmRvdy5vcGVuZXIgdG8gZnVuY3Rpb24gKCkgeyByZXR1cm4g
ImhpIiB9IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJ4IiBidXQgZ290IChmdW5j
dGlvbikgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgcmV0dXJuICJoaSIgfSIKLUZBSUwgU2V0dGlu
ZyB3aW5kb3cub3BlbmVyIHRvIGhpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ4IiBidXQgZ290
ICJoaSIKLUZBSUwgU2V0dGluZyB3aW5kb3cub3BlbmVyIHRvIFtvYmplY3QgT2JqZWN0XSBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAieCIgYnV0IGdvdCAob2JqZWN0KSBvYmplY3Qg
IltvYmplY3QgT2JqZWN0XSIKLUZBSUwgU2V0dGluZyB3aW5kb3cub3BlbmVyIHRvICBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAieCIgYnV0IGdvdCAob2JqZWN0KSBbXQotRkFJTCBT
ZXR0aW5nIHdpbmRvdy5vcGVuZXIgdG8gU3ltYm9sKCkgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
KHN0cmluZykgIngiIGJ1dCBnb3QgKHN5bWJvbCkgc3ltYm9sICJTeW1ib2woKSIKK1BBU1MgU2V0
dGluZyB3aW5kb3cub3BlbmVyIHRvIHVuZGVmaW5lZAorUEFTUyBTZXR0aW5nIHdpbmRvdy5vcGVu
ZXIgdG8gNDIKK1BBU1MgU2V0dGluZyB3aW5kb3cub3BlbmVyIHRvIGZ1bmN0aW9uICgpIHsgcmV0
dXJuICJoaSIgfQorUEFTUyBTZXR0aW5nIHdpbmRvdy5vcGVuZXIgdG8gaGkKK1BBU1MgU2V0dGlu
ZyB3aW5kb3cub3BlbmVyIHRvIFtvYmplY3QgT2JqZWN0XQorUEFTUyBTZXR0aW5nIHdpbmRvdy5v
cGVuZXIgdG8KK1BBU1MgU2V0dGluZyB3aW5kb3cub3BlbmVyIHRvIFN5bWJvbCgpCiAKSW5kZXg6
IExheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LWdldHRlci1vdGhlci1pbnN0YW5jZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvaW5zdGFuY2UtcHJvcGVy
dHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjcyNzQxKQor
KysgTGF5b3V0VGVzdHMvanMvaW5zdGFuY2UtcHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDcgQEAgVGVzdHMgdGhhdCBj
YWxsaW5nIGFuIGluc3RhbmNlIHByb3BlcnR5IAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgog
CiAKLVBBU1MgbG9jYXRpb25HZXR0ZXIgaXMgYW4gaW5zdGFuY2Ugb2YgZnVuY3Rpb24gRnVuY3Rp
b24oKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfQorUEFTUyBsb2NhdGlvbkdldHRlciBpbnN0YW5j
ZW9mIG90aGVyV2luZG93LkZ1bmN0aW9uIGlzIHRydWUKIFBBU1MgbG9jYXRpb25HZXR0ZXIuY2Fs
bChvdGhlcldpbmRvdy5kb2N1bWVudCkudG9TdHJpbmcoKSBpcyAiYWJvdXQ6YmxhbmsiCiBQQVNT
IGxvY2F0aW9uR2V0dGVyLmNhbGwod2luZG93LmRvY3VtZW50KSA9PT0gd2luZG93LmRvY3VtZW50
LmxvY2F0aW9uIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6
IExheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LWdldHRlci1vdGhlci1pbnN0YW5jZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LWdldHRl
ci1vdGhlci1pbnN0YW5jZS5odG1sCShyZXZpc2lvbiAyNzI3NDEpCisrKyBMYXlvdXRUZXN0cy9q
cy9pbnN0YW5jZS1wcm9wZXJ0eS1nZXR0ZXItb3RoZXItaW5zdGFuY2UuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTIsNyArMTIsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkKIHsKICAgICBvdGhlcldp
bmRvdyA9IHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIpOwogICAgICAgICBsb2NhdGlvbkdldHRl
ciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXJXaW5kb3cuZG9jdW1lbnQs
ICJsb2NhdGlvbiIpLmdldDsKLSAgICAgICAgc2hvdWxkQmVUeXBlKCJsb2NhdGlvbkdldHRlciIs
IEZ1bmN0aW9uKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJsb2NhdGlvbkdldHRlciBpbnN0YW5j
ZW9mIG90aGVyV2luZG93LkZ1bmN0aW9uIik7CiAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygibG9jYXRpb25HZXR0ZXIuY2FsbChvdGhlcldpbmRvdy5kb2N1bWVudCkudG9TdHJpbmcoKSIs
ICJhYm91dDpibGFuayIpOwogICAgICAgICAvLyBTaG91bGQgcmV0dXJuIHRoZSBjdXJyZW50IGRv
Y3VtZW50J3MgbG9jYXRpb24uCiAgICAgICAgIHNob3VsZEJlVHJ1ZSgibG9jYXRpb25HZXR0ZXIu
Y2FsbCh3aW5kb3cuZG9jdW1lbnQpID09PSB3aW5kb3cuZG9jdW1lbnQubG9jYXRpb24iKTsK
</data>
<flag name="commit-queue"
          id="438684"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420231</attachid>
            <date>2021-02-13 19:09:50 -0800</date>
            <delta_ts>2021-02-13 19:58:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221872-20210214050948.patch</filename>
            <type>text/plain</type>
            <size>86561</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDIxLTAyLTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbSlNDXSBQcm9wZXJ0eVNsb3Qgc2hvdWxkIGFsbG93IHBhc3NpbmcgY3VzdG9tIHNl
dHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2g6CisKKyAgICAgICAgMS4gTWVyZ2VzIFByb3BlcnR5U2xvdDo6VHlwZUN1c3RvbUFj
Y2Vzc29yIGludG8gVHlwZUN1c3RvbSwgYWxsb3dpbmcgdG8gcGFzcyBhIHNldHRlciBmb3IKKyAg
ICAgICAgICAgQ3VzdG9tQWNjZXNzb3IgLyBDdXN0b21WYWx1ZS4gUmF3IEMrKyBmdW5jdGlvbiBw
b2ludGVycyBhcmUgdXNlZCB0byBhdm9pZCBjcmVhdGluZworICAgICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXIgaW5zdGFuY2VzIGZvciBub24tcmVpZmllZCBzdGF0aWMgcHJvcGVydGllcy4KKyAg
ICAgICAgMi4gUmV3b3JrcyBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgZm9y
IGN1c3RvbSBhY2Nlc3NvcnMsIG1ha2luZyBpdCBzaW1wbGVyLAorICAgICAgICAgICBtb3JlIHJv
YnVzdCwgYW5kIG5vIGxvbmdlciByZXF1aXJlZCB0byByZWlmeSBhbGwgc3RhdGljIHByb3BlcnRp
ZXMuCisgICAgICAgIDMuIEhvaXN0cyBHZXRWYWx1ZUZ1bmMgLyBQdXRWYWx1ZUZ1bmMgZGVjbGFy
YXRpb25zIHRvIEpTQyBuYW1lc3BhY2Ugc28gdGhleSBjYW4gYmUgdXNlZAorICAgICAgICAgICBp
biBoZWFkZXIgZmlsZXMuCisgICAgICAgIDQuIE1vdmVzIEN1c3RvbUFjY2Vzc29yJ3Mgd3JhcHBl
ciBtYXBzIHRvIEpTR2xvYmFsT2JqZWN0IChiZWNhdXNlIFZNIG91dGxpdmVzIGl0KSBhbmQKKyAg
ICAgICAgICAgc2ltcGxpZmllcyB0aGVpciBrZXlzIHRvIEMrKyBmdW5jdGlvbiBwb2ludGVycy4K
KyAgICAgICAgNS4gU3BsaXRzIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gaW50byBKU0N1
c3RvbUdldHRlckZ1bmN0aW9uIC8gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbgorICAgICAgICAgICBz
aW5jZSB0aGVpciBzaWduYXR1cmVzIGFuZCBbW0NhbGxdXSBsb2dpYyBhcmUgcXVpdGUgZGlmZmVy
ZW50LiBUaGlzIGlzIGEgbmljZSByZWZhY3RvcgorICAgICAgICAgICB0aGF0IGFsc28gc2ltcGxp
ZmllcyBnYXJiYWdlIGNvbGxlY3Rpb24gYW5kIHJlZHVjZXMgbWVtb3J5IG5lZWRlZCBmb3Igc2V0
dGVyIHdyYXBwZXJzLgorICAgICAgICA2LiBSZW1vdmVzIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0
Q3VzdG9tRGVzY3JpcHRvcigpLCBtYWtpbmcgUHJvcGVydHlEZXNjcmlwdG9yIHVuYXdhcmUgb2YK
KyAgICAgICAgICAgY3VzdG9tIGFjY2Vzc29ycy4gQWxzbywgZHJvcHMgQ3VzdG9tQWNjZXNzb3Ig
Y2hlY2sgZnJvbSB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKCkKKyAgICAgICAg
ICAgdGhhdCB3YXMgaW5jb3JyZWN0IChubyBlcnJvciBzaG91bGQgYmUgdGhyb3duIGlmIGFjY2Vz
c29ycyBhcmUgdW5jaGFuZ2VkKSB5ZXQgdW5yZWFjaGFibGUKKyAgICAgICAgICAgYmVjYXVzZSBQ
cm9wZXJ0eURlc2NyaXB0b3I6OmVxdWFsVG8oKSBpZ25vcmVzIEN1c3RvbUFjY2Vzc29yLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGZpeGVzIGEpIGFjY2Vzc29yIGZ1bmN0aW9ucyBvZiB1bmZvcmdl
YWJsZSBwcm9wZXJ0aWVzIFsxXSB0byBiZSBwZXJzaXN0ZW50CisgICAgICAgIChpbiB0ZXJtcyBv
ZiByZWZlcmVudGlhbCBlcXVhbGl0eSkgYW5kIGIpIGNyb3NzLXJlYWxtIGFjY2Vzc29yIGZ1bmN0
aW9ucyB0byBiZSBvZiBjb3JyZWN0CisgICAgICAgIGdsb2JhbCBvYmplY3QgKGluc3RlYWQgb2Yg
bGV4aWNhbCkuCisKKyAgICAgICAgWzFdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRs
LyNkZm4tdW5mb3JnZWFibGUtb24tYW4taW50ZXJmYWNlCisKKyAgICAgICAgKiBBUEkvSlNDYWxs
YmFja09iamVjdC5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogcnVudGltZS9KU0N1
c3RvbUdldHRlckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpT
Q3VzdG9tR2V0dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0N1c3RvbUdldHRlckZ1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAoSlNDOjpKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmN1c3RvbUdldHRlckZ1bmN0aW9uTWFwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmN1c3RvbVNldHRlckZ1bmN0aW9uTWFwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmN1c3RvbUdldHRlckZ1bmN0aW9uU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmN1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3Ry
dWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0Q3VzdG9tR2V0dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpn
ZXRDdXN0b21TZXR0ZXJGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjp2YWxpZGF0ZUFuZEFwcGx5UHJvcGVy
dHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6Z2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b25Gb3JHZXR0ZXJTZXR0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1By
b3BlcnR5U2xvdEZyb21UYWJsZSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3I6OnNldEFjY2Vzc29yRGVz
Y3JpcHRvcik6CisgICAgICAgIChKU0M6OlByb3BlcnR5RGVzY3JpcHRvcjo6c2V0Q3VzdG9tRGVz
Y3JpcHRvcik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5U2xvdDo6Y3VzdG9tQWNjZXNzb3JHZXR0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6
aXNDdXN0b20gY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6Y3VzdG9tU2V0dGVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDdXN0b20pOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVNsb3Q6OnNldENhY2hlYWJsZUN1c3RvbSk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5U2xvdDo6Z2V0VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6Omlz
Q3VzdG9tQWNjZXNzb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNs
b3Q6OmN1c3RvbUdldHRlclNldHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBy
b3BlcnR5U2xvdDo6c2V0Q3VzdG9tR2V0dGVyU2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1B1dFByb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wMi0x
MSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gV0VCS0lUX0VYRUNVVEFCTEUgY2FuIGluY29ycmVjdGx5IGxpbmsgZnJhbWV3b3JrCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzI3NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkw
NCw2ICs5MDQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAg
ICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCiAgICAgcnVudGltZS9HZXRQdXRJbmZvLmgKKyAgICBydW50
aW1lL0dldHRlclNldHRlci5oCiAgICAgcnVudGltZS9HZXRWTS5oCiAgICAgcnVudGltZS9HbG9i
YWxFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL0hhc2hNYXBJbXBsLmgKQEAgLTkzOSw2ICs5NDAs
OCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGlt
ZS9KU0Nhc3QuaAogICAgIHJ1bnRpbWUvSlNDZWxsLmgKICAgICBydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAorICAgIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oCisgICAgcnVudGltZS9K
U0N1c3RvbVNldHRlckZ1bmN0aW9uLmgKICAgICBydW50aW1lL0pTRGF0YVZpZXcuaAogICAgIHJ1
bnRpbWUvSlNEYXRlTWF0aC5oCiAgICAgcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCkBA
IC05OTgsNiArMTAwMSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKICAgICBydW50aW1lL05h
dGl2ZUV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaAorICAgIHJ1bnRp
bWUvTnVsbEdldHRlckZ1bmN0aW9uLmgKKyAgICBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5o
CiAgICAgcnVudGltZS9OdW1iZXJPYmplY3QuaAogICAgIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmgKICAgICBydW50aW1lL051bWVyaWNTdHJpbmdzLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODY1LDcgKzg2NSw4IEBAIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKIHJ1bnRpbWUvSlNDUHRyVGFnLmNwcAogcnVudGltZS9KU0NhbGxlZS5jcHAKIHJ1
bnRpbWUvSlNDZWxsLmNwcAotcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNw
cAorcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAorcnVudGltZS9KU0N1c3RvbVNl
dHRlckZ1bmN0aW9uLmNwcAogcnVudGltZS9KU0RhdGFWaWV3LmNwcAogcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcAogcnVudGltZS9KU0RhdGVNYXRoLmNwcCBAbm8tdW5pZnkgLy8gQ29u
ZmluZSBVX1NIT1dfQ1BMVVNQTFVTX0FQSSdzIGVmZmVjdCB0byB0aGlzIGZpbGUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24g
MjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNCw4ICsyMzQsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBS
YXdOYXRpdmVGdW5jdGlvbiBnZXRDYWxsRnVuY3Rpb24oKTsKICAgICBzdGF0aWMgUmF3TmF0aXZl
RnVuY3Rpb24gZ2V0Q29uc3RydWN0RnVuY3Rpb24oKTsKIAotICAgIHVzaW5nIEdldFZhbHVlRnVu
YyA9IEVuY29kZWRKU1ZhbHVlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Ci0KICAgICBzdGF0aWMgR2V0VmFs
dWVGdW5jIGdldFN0YXRpY0Z1bmN0aW9uR2V0dGVyKCk7CiAgICAgc3RhdGljIEdldFZhbHVlRnVu
YyBnZXRDYWxsYmFja0dldHRlcigpOwogIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgyLDcg
KzExODIsNiBAQAogCQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwRUMwRUMxMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA2
MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5
IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oICovOyB9OwogCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZh
cmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcz
MTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oICovOyB9OwogCQk3
MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBB
MDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0
ZUJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLzsgfTsKQEAg
LTEyMzMsNiArMTIzMiwxMSBAQAogCQk3QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9t
aXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTg0RTIxMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFNEVF
NzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8q
IFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFwcGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA4OTRE
NjBGQUZCQTJEMDAwMDE4NjUgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NDMyM0U3ODI1RDVFQzE5MDBGOTc3
NzYgLyogTnVsbEdldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTQ2RjUyMDFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1
bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODQzMjNFNzkyNUQ1RUMyODAwRjk3Nzc2IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MjVGQzQxQTZERDNC
MzAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg0MzIzRTdBMjVENUVDM0IwMEY5Nzc3NiAvKiBH
ZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NDMyM0U3RjI1RDVFQzZB
MDBGOTc3NzYgLyogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQzMjNFN0IyNUQ1RUM2OTAwRjk3Nzc2IC8qIEpT
Q3VzdG9tU2V0dGVyRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NDMyM0U4MDI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0b21HZXR0
ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQzMjNFN0MyNUQ1RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjAxNjFF
MzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFj
cm9Bc3NlbWJsZXJYODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDE2MUU1
MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQwMzUsOCArNDAzOSw2IEBACiAJCTcwRUNBNjAwMUFGREJF
QTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwRUNBNjAxMUFGREJFQTIwMDQ0OTczOSAv
KiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MkFBRjdDQjFEMEQz
MThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2
MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJ
ZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5
SWRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8q
IERlbGV0ZUJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5U3RhdHVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMzIsNiArNDEzNCwxMCBAQAogCQk3
RDVGQjE5MjIwNzQ0QkYyMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxQbHVyYWxSdWxlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0
cnVjdHVyZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODQzMjNFN0Iy
NUQ1RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NDMyM0U3QzI1RDVFQzY5MDBGOTc3NzYgLyogSlNDdXN0b21H
ZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3Rv
bUdldHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0MzIzRTdE
MjVENUVDNkEwMEY5Nzc3NiAvKiBKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NDMyM0U3RTI1RDVFQzZBMDBGOTc3NzYgLyog
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODQ5MjVBOUEyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODQ5MjVBOUIyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0OTI1QTlDMjJC
MzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ3OSw4ICs3NDg1LDEw
IEBACiAJCQkJODY1QTMwRjAxMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmgg
Ki8sCiAJCQkJRkUxRTJDM0MyMjQwQzFFRjAwRjZCNzI5IC8qIEpTQ1B0clRhZy5jcHAgKi8sCiAJ
CQkJRkU3NDk3RTUyMDkwMDFCMDAwMDM1NjVCIC8qIEpTQ1B0clRhZy5oICovLAotCQkJCTcyQUFG
N0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAq
LywKLQkJCQk3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5oICovLAorCQkJCTg0MzIzRTdEMjVENUVDNkEwMEY5Nzc3NiAvKiBKU0N1c3RvbUdl
dHRlckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk4NDMyM0U3QzI1RDVFQzY5MDBGOTc3NzYgLyogSlND
dXN0b21HZXR0ZXJGdW5jdGlvbi5oICovLAorCQkJCTg0MzIzRTdFMjVENUVDNkEwMEY5Nzc3NiAv
KiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk4NDMyM0U3QjI1RDVFQzY5MDBG
OTc3NzYgLyogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oICovLAogCQkJCTBGMkI2NkJEMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCAqLywKIAkJCQkwRjJCNjZCRTE3QjZCNUFCMDBB
N0FFM0YgLyogSlNEYXRhVmlldy5oICovLAogCQkJCTBGMkI2NkJGMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCAqLywKQEAgLTk4MDgsNiArOTgxNiw3IEBACiAJCQkJ
MEY5MzMyQTAxNENBN0RDRDAwODVGM0M2IC8qIEdldEJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MjBEOTlGMTIzODhDQzgxMDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0b3J5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODQzMjNFN0EyNUQ1RUMzQjAwRjk3Nzc2IC8qIEdldHRlclNldHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0RTAzNTgxRTUzQkYyRjAwMjEzRjY0IC8qIEdldHRl
clNldHRlckFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMUQ2RDZGMjM2MjU4RkUw
MDdBNUMyNiAvKiBHZXRWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNUIxRjMzQTQ4OTAw
RjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDAzNSw3ICsxMDA0NCw4IEBACiAJCQkJMTQ4Q0QxRDgxMDhDRjkwMjAwODE2M0M2IC8q
IEpTQ29udGV4dFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNzQ5N0U2MjA5MDAx
QjEwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEI4MTc5
NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NDMyM0U4MDI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODQzMjNFN0YyNUQ1RUM2QTAw
Rjk3Nzc2IC8qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkI2NkVDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZFRTE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTk2QjczMUMxQkRBMDhERDAwMzMxQjg0IC8qIEpTRGF0YVZpZXdQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjY3LDYgKzEwMjc3LDggQEAKIAkJCQlG
RTE0MDkwNzIwNTZGM0ZGMDBDRkUzMTggLyogTmF0aXZlRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRkI5MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBOb2RlQ29uc3RydWN0b3JzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzQzRjBFMTZGNUNEMDBCMzQ0NjAgLyogTm9kZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg0MzIzRTc4MjVENUVDMTkwMEY5Nzc3NiAvKiBOdWxsR2V0dGVyRnVu
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTg0MzIzRTc5MjVENUVDMjgwMEY5Nzc3NiAvKiBO
dWxsU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQxMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
NDIwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NDMwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlck9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdl
dHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5m
byBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDdXN0b21HZXR0
ZXJGdW5jdGlvbikgfTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGN1c3RvbUdl
dHRlckZ1bmN0aW9uQ2FsbCk7CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjdXN0b21HZXR0
ZXJGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTQ3VzdG9tR2V0dGVy
RnVuY3Rpb24qIGN1c3RvbUdldHRlckZ1bmN0aW9uID0ganNDYXN0PEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKworICAgIEdldFZhbHVlRnVuYyBnZXR0ZXIgPSBjdXN0
b21HZXR0ZXJGdW5jdGlvbi0+Z2V0dGVyKCk7CisgICAgQVNTRVJUKGdldHRlcik7CisKKyAgICBp
ZiAoYXV0byBkb21BdHRyaWJ1dGUgPSBjdXN0b21HZXR0ZXJGdW5jdGlvbi0+ZG9tQXR0cmlidXRl
KCkpIHsKKyAgICAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0ZS0+
Y2xhc3NJbmZvKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRE9NQXR0cmlidXRlR2V0dGVy
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvLCBj
dXN0b21HZXR0ZXJGdW5jdGlvbi0+cHJvcGVydHlOYW1lKCkpOworICAgIH0KKworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNWYWx1ZSksIGN1c3RvbUdldHRlckZ1bmN0aW9uLT5wcm9wZXJ0eU5hbWUoKSkpOworfQor
CitKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpKU0N1c3RvbUdldHRlckZ1bmN0aW9uKFZNJiB2bSwg
TmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1l
LCBHZXRWYWx1ZUZ1bmMgZ2V0dGVyLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBk
b21BdHRyaWJ1dGUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSkKKyAgICAsIG1fcHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkKKyAgICAsIG1fZ2V0
dGVyKGdldHRlcikKKyAgICAsIG1fZG9tQXR0cmlidXRlKGRvbUF0dHJpYnV0ZSkKK3sKK30KKwor
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBw
cm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXR0ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFu
bm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKK3sKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGN1c3RvbUdldHRlckZ1bmN0aW9uQ2FsbCwgY2FsbEhv
c3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmN1c3RvbUdldHRl
ckZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPih2
bS5oZWFwKSkgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBkb21BdHRyaWJ1dGUpOworCisg
ICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0
RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgorICAgIFN0cmluZyBuYW1lID0gbWFr
ZVN0cmluZygiZ2V0ICIsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7CisgICAg
ZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCAwLCBuYW1lKTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb247Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24u
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3Rv
bUdldHRlckZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0N1c3RvbUdldHRlckZ1bmN0aW9uIGZpbmFsIDogcHVi
bGljIEpTRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2U8bW9kZT4o
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9u
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEdldFZhbHVlRnVuYywgT3B0aW9uYWw8RE9N
QXR0cmlidXRlQW5ub3RhdGlvbj4gPSBXVEY6Om51bGxvcHQpOworCisgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKKworICAgIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9wZXJ0eU5hbWU7IH0KKyAgICBHZXRWYWx1ZUZ1bmMgZ2V0dGVyKCkgY29u
c3QgeyByZXR1cm4gbV9nZXR0ZXI7IH07CisgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3Rh
dGlvbj4gZG9tQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb21BdHRyaWJ1dGU7IH07CisK
K3ByaXZhdGU6CisgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFi
bGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEdl
dFZhbHVlRnVuYywgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4pOworCisgICAgUHJv
cGVydHlOYW1lIG1fcHJvcGVydHlOYW1lOworICAgIEdldFZhbHVlRnVuYyBtX2dldHRlcjsKKyAg
ICBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBtX2RvbUF0dHJpYnV0ZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsMTA1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgotCi0jaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVy
LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWNvbnN0IENsYXNzSW5mbyBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbikgfTsKLQotc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsKTsKLQot
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uQ2FsbCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsK
LSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiog
Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgQ3VzdG9tR2V0dGVyU2V0dGVy
KiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+Y3VzdG9t
R2V0dGVyU2V0dGVyKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwotCi0gICAgaWYgKGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5pc1NldHRlcigp
KSB7Ci0gICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlciA9IGN1
c3RvbUdldHRlclNldHRlci0+c2V0dGVyKCk7Ci0gICAgICAgIEFTU0VSVChzZXR0ZXIpOwotICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmVuY29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIH0KLQotICAgIGlmIChjdXN0b21HZXR0ZXJTZXR0ZXItPmluaGVyaXRzPERPTUF0dHJpYnV0
ZUdldHRlclNldHRlcj4odm0pKSB7Ci0gICAgICAgIGF1dG8gZG9tQXR0cmlidXRlID0ganNDYXN0
PERPTUF0dHJpYnV0ZUdldHRlclNldHRlcio+KGN1c3RvbUdldHRlclNldHRlciktPmRvbUF0dHJp
YnV0ZSgpOwotICAgICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRl
LmNsYXNzSW5mbykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTURPTUF0dHJpYnV0ZUdldHRl
clR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBkb21BdHRyaWJ1dGUuY2xhc3NJbmZvLCBj
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+cHJvcGVydHlOYW1lKCkpOwotICAgIH0KLQotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKShn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBjdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbi0+cHJvcGVydHlOYW1lKCkpKTsKLX0KLQotSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbjo6SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBUeXBlIHR5cGUsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVy
dHlOYW1lKQotICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpCi0gICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fcHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSkKLXsKLX0KLQotSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ3VzdG9tR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIsIGNvbnN0IFR5cGUgdHlwZSwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgQVNTRVJUKHR5cGUgPT0gVHlw
ZTo6R2V0dGVyID8gISFnZXR0ZXJTZXR0ZXItPmdldHRlcigpIDogISFnZXR0ZXJTZXR0ZXItPnNl
dHRlcigpKTsKLQotICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICh0eXBlID09IFR5cGU6OkdldHRl
cikgPyAiZ2V0ICIgOiAic2V0ICI7Ci0gICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKHByZWZp
eCwgU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKLQotICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3RyaW5nKHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKLQotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xv
YmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOwotICAgIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCB0eXBlLCBwcm9wZXJ0eU5hbWUpOwotCi0gICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcg
aW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxv
Y2F0aW9uLgotICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2V0
dGVyU2V0dGVyLCBuYW1lKTsKLSAgICByZXR1cm4gZnVuY3Rpb247Ci19Ci0KLXZvaWQgSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQotewotICAgIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbio+KGNlbGwpOwot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotCi0gICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9nZXR0ZXJTZXR0ZXIpOwotfQotCi12b2lkIEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIsIGNvbnN0IFN0
cmluZyYgbmFtZSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwg
aXNTZXR0ZXIoKSwgbmFtZSk7Ci0gICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKLSAg
ICBBU1NFUlQoZ2V0dGVyU2V0dGVyKTsKLSAgICBtX2dldHRlclNldHRlci5zZXQodm0sIHRoaXMs
IGdldHRlclNldHRlcik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uaAkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oCShub25leGlzdGVudCkKQEAg
LTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBDdXN0b21HZXR0ZXJT
ZXR0ZXI7Ci0KLWNsYXNzIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gZmluYWwgOiBwdWJs
aWMgSlNGdW5jdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7Ci0K
LSAgICAvLyBUaGUgVHlwZSBpcyBzZXQgdG8gdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdGhlIHJl
c3VsdGFudCBmdW5jdGlvbiB3aWxsIGhhdmUuCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgR2V0dGVy
ID0gMCwgU2V0dGVyID0gMSB9OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+Ci0gICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCi0gICAgewotICAgICAgICByZXR1cm4gdm0uY3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb25TcGFjZTxtb2RlPigpOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQ3VzdG9tR2V0dGVyU2V0dGVyKiwgY29uc3QgVHlw
ZSwgY29uc3QgUHJvcGVydHlOYW1lJik7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0g
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2dldHRlclNldHRlci5nZXQoKTsgfQotICAgIGJvb2wgaXNTZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6U2V0dGVyOyB9Ci0gICAgY29uc3QgUHJvcGVydHlOYW1lJiBw
cm9wZXJ0eU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5TmFtZTsgfQotCi1wcml2YXRl
OgotICAgIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBUeXBlLCBjb25zdCBQcm9wZXJ0eU5hbWUm
KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIEN1c3Rv
bUdldHRlclNldHRlciosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLQotICAgIFdyaXRlQmFycmllcjxDdXN0b21H
ZXR0ZXJTZXR0ZXI+IG1fZ2V0dGVyU2V0dGVyOwotICAgIFR5cGUgbV90eXBlOwotICAgIFByb3Bl
cnR5TmFtZSBtX3Byb3BlcnR5TmFtZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0
ZXJGdW5jdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24pIH07Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjdXN0b21TZXR0ZXJGdW5jdGlvbkNhbGwp
OworCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3VzdG9tU2V0dGVyRnVuY3Rpb25DYWxsLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIFB1dFZhbHVlRnVuYyBzZXR0ZXIgPSBqc0Nhc3Q8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbio+
KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnNldHRlcigpOworICAgIEFTU0VSVChzZXR0ZXIpOwor
ICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uOjpKU0N1c3RvbVNldHRlckZ1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFB1dFZhbHVlRnVuYyBzZXR0ZXIpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxl
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKKyAgICAsIG1fc2V0dGVyKHNldHRlcikKK3sKK30K
KworSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1l
JiBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBzZXR0ZXIpCit7CisgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjdXN0b21TZXR0ZXJGdW5jdGlv
bkNhbGwsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBTdHJpbmcocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0
LT5jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOworICAgIEpTQ3VzdG9tU2V0dGVyRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDdXN0b21TZXR0
ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzZXR0ZXIpOworCisgICAgLy8gQ2FuJ3QgZG8g
dGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQg
ZG8gYSBHQyBhbGxvY2F0aW9uLgorICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZygic2V0ICIs
IFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7CisgICAgZnVuY3Rpb24tPmZpbmlz
aENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCAxLCBuYW1lKTsKKyAgICByZXR1cm4gZnVuY3Rpb247
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBKU0N1c3RvbVNldHRlckZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24g
eworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHZtLmN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBK
U0N1c3RvbVNldHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFByb3BlcnR5TmFtZSYsIFB1dFZhbHVlRnVuYyk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OworCisgICAgUHV0VmFsdWVGdW5jIHNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9
OworCitwcml2YXRlOgorICAgIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24oVk0mLCBOYXRpdmVFeGVj
dXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBQdXRWYWx1ZUZ1bmMpOworCisg
ICAgUHV0VmFsdWVGdW5jIG1fc2V0dGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksOCBAQAogI2luY2x1
ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0RhdGFW
aWV3LmgiCiAjaW5jbHVkZSAiSlNEYXRhVmlld1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTRG9s
bGFyVk0uaCIKQEAgLTUwNCw2ICs1MDUsOCBAQCBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmpl
Y3QoVk0mIHZtLCBTCiAgICAgLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldChJc1dhdGNo
ZWQpCiAgICAgLCBtX3J1bnRpbWVGbGFncygpCiAgICAgLCBtX3N0YWNrVHJhY2VMaW1pdChPcHRp
b25zOjpkZWZhdWx0RXJyb3JTdGFja1RyYWNlTGltaXQoKSkKKyAgICAsIG1fY3VzdG9tR2V0dGVy
RnVuY3Rpb25NYXAodm0pCisgICAgLCBtX2N1c3RvbVNldHRlckZ1bmN0aW9uTWFwKHZtKQogICAg
ICwgbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZShnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA/IGds
b2JhbE9iamVjdE1ldGhvZFRhYmxlIDogJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCiB7CiB9
CkBAIC02MTUsOSArNjE4LDEzIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgIGluaXRGdW5jdGlvblN0cnVjdHVyZXMobV9idWlsdGluRnVuY3Rpb25zKTsKICAgICBpbml0
RnVuY3Rpb25TdHJ1Y3R1cmVzKG1fb3JkaW5hcnlGdW5jdGlvbnMpOwogCi0gICAgbV9jdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgbV9jdXN0b21HZXR0
ZXJGdW5jdGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwg
aW5pdC5vd25lci0+bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworICAgICAgICAgICAgaW5p
dC5zZXQoSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGlu
aXQub3duZXIsIGluaXQub3duZXItPm1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICAg
ICAgfSk7CisgICAgbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCisg
ICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5p
dC52bSwgaW5pdC5vd25lciwgaW5pdC5vd25lci0+bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkp
OwogICAgICAgICB9KTsKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuaW5pdExhdGVyKAog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewpAQCAtMjAw
MSw3ICsyMDA4LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAog
ICAgIHZpc2l0RnVuY3Rpb25TdHJ1Y3R1cmVzKHRoaXNPYmplY3QtPm1fYnVpbHRpbkZ1bmN0aW9u
cyk7CiAgICAgdmlzaXRGdW5jdGlvblN0cnVjdHVyZXModGhpc09iamVjdC0+bV9vcmRpbmFyeUZ1
bmN0aW9ucyk7CiAKLSAgICB0aGlzT2JqZWN0LT5tX2N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fY3VzdG9tR2V0dGVy
RnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9jdXN0
b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0
LT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9uYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3
Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgY2xhc3MgSW50bENvbGxhdG9yOwogY2xh
c3MgSlNBcnJheUJ1ZmZlcjsKIGNsYXNzIEpTQXJyYXlCdWZmZXJQcm90b3R5cGU7CiBjbGFzcyBK
U0NhbGxlZTsKK2NsYXNzIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb247CitjbGFzcyBKU0N1c3RvbVNl
dHRlckZ1bmN0aW9uOwogY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOwogY2xhc3MgSlNJ
bnRlcm5hbFByb21pc2U7CiBjbGFzcyBKU01vZHVsZUxvYWRlcjsKQEAgLTM5Niw3ICszOTgsOCBA
QCBwdWJsaWM6CiAgICAgRnVuY3Rpb25TdHJ1Y3R1cmVzIG1fb3JkaW5hcnlGdW5jdGlvbnM7CiAK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0
aW9uU3RydWN0dXJlOwotICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJl
PiBtX2N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2N1c3RvbUdldHRlckZ1bmN0aW9uU3RydWN0
dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2N1c3Rv
bVNldHRlckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX25hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFByb3BlcnR5
T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fcmVnRXhwU3RydWN0dXJlOwpAQCAtNTQwLDYgKzU0Myw5IEBAIHB1YmxpYzoKICAgICBib29s
IGlzTWFwUHJvdG90eXBlU2V0RmFzdEFuZE5vbk9ic2VydmFibGUoKTsKICAgICBib29sIGlzU2V0
UHJvdG90eXBlQWRkRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKIAorICAgIFdlYWtHQ01hcDxHZXRW
YWx1ZUZ1bmMsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+JiBjdXN0b21HZXR0ZXJGdW5jdGlvbk1h
cCgpIHsgcmV0dXJuIG1fY3VzdG9tR2V0dGVyRnVuY3Rpb25NYXA7IH0KKyAgICBXZWFrR0NNYXA8
UHV0VmFsdWVGdW5jLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uPiYgY3VzdG9tU2V0dGVyRnVuY3Rp
b25NYXAoKSB7IHJldHVybiBtX2N1c3RvbVNldHRlckZ1bmN0aW9uTWFwOyB9CisKICNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICB1c2luZyBSZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50
U2V0cyA9IEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmPFdhdGNocG9pbnRT
ZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD47CiAgICAgUmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0
Y2hwb2ludFNldHMgbV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0czsKQEAg
LTU1NCw2ICs1NjAsOCBAQCBwdWJsaWM6CiAgICAgUnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdz
OwogICAgIENvbnNvbGVDbGllbnQqIG1fY29uc29sZUNsaWVudCB7IG51bGxwdHIgfTsKICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbV9zdGFja1RyYWNlTGltaXQ7CisgICAgV2Vha0dDTWFwPEdldFZh
bHVlRnVuYywgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4gbV9jdXN0b21HZXR0ZXJGdW5jdGlvbk1h
cDsKKyAgICBXZWFrR0NNYXA8UHV0VmFsdWVGdW5jLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uPiBt
X2N1c3RvbVNldHRlckZ1bmN0aW9uTWFwOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBjb25z
dCBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3RBdERlYnVnZ2VyRW50cnkgeyBudWxscHRy
IH07CkBAIC03OTksNyArODA3LDggQEAgcHVibGljOgogICAgIH0KIAogICAgIFN0cnVjdHVyZSog
Ym91bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZS5nZXQodGhpcyk7IH0KLSAgICBTdHJ1Y3R1cmUqIGN1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGN1c3RvbUdldHRlckZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21HZXR0ZXJGdW5jdGlvblN0
cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGN1c3RvbVNldHRlckZ1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7
IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShy
ZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDggQEAKICNpbmNsdWRlICJIZWFwQW5h
bHl6ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0N1c3RvbVNl
dHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW1t
dXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC0zNTI1LDE2ICszNTI2
LDI0IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6OmFsbG9jYXRlTW9yZU91dE9mTGkKICAgICByZXR1
cm4gQnV0dGVyZmx5OjpjcmVhdGVPckdyb3dQcm9wZXJ0eVN0b3JhZ2UoYnV0dGVyZmx5KCksIHZt
LCB0aGlzLCBzdHJ1Y3R1cmUodm0pLCBvbGRTaXplLCBuZXdTaXplKTsKIH0KIAotc3RhdGljIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qIGdldEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
Rm9yR2V0dGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEN1c3RvbUdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyLCBKU0N1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uOjpUeXBlIHR5cGUpCitzdGF0aWMgSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbiogZ2V0Q3VzdG9tR2V0dGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldFZhbHVlRnVu
YywgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQogewotICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9w
YWlyKGdldHRlclNldHRlciwgKGludCl0eXBlKTsKLSAgICBKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uKiBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiA9IHZtLmN1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uTWFwLmdldChrZXkpOwotICAgIGlmICghY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24pIHsKLSAgICAgICAgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gPSBKU0N1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyU2V0dGVyLCB0
eXBlLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICAgICAgdm0uY3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb25NYXAuc2V0KGtleSwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24pOwor
ICAgIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGN1c3RvbUdldHRlckZ1bmN0aW9uID0gZ2xvYmFs
T2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5jdGlvbk1hcCgpLmdldChnZXRWYWx1ZUZ1bmMpOworICAg
IGlmICghY3VzdG9tR2V0dGVyRnVuY3Rpb24pIHsKKyAgICAgICAgY3VzdG9tR2V0dGVyRnVuY3Rp
b24gPSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0VmFsdWVGdW5jLCBkb21BdHRyaWJ1dGUpOwor
ICAgICAgICBnbG9iYWxPYmplY3QtPmN1c3RvbUdldHRlckZ1bmN0aW9uTWFwKCkuc2V0KGdldFZh
bHVlRnVuYywgY3VzdG9tR2V0dGVyRnVuY3Rpb24pOwogICAgIH0KLSAgICByZXR1cm4gY3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb247CisgICAgcmV0dXJuIGN1c3RvbUdldHRlckZ1bmN0aW9uOwor
fQorCitzdGF0aWMgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogZ2V0Q3VzdG9tU2V0dGVyRnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHV0VmFsdWVGdW5jIHB1dFZhbHVlRnVuYykKK3sKKyAgICBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKiBjdXN0b21TZXR0ZXJGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVu
Y3Rpb25NYXAoKS5nZXQocHV0VmFsdWVGdW5jKTsKKyAgICBpZiAoIWN1c3RvbVNldHRlckZ1bmN0
aW9uKSB7CisgICAgICAgIGN1c3RvbVNldHRlckZ1bmN0aW9uID0gSlNDdXN0b21TZXR0ZXJGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHB1dFZhbHVlRnVuYyk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVu
Y3Rpb25NYXAoKS5zZXQocHV0VmFsdWVGdW5jLCBjdXN0b21TZXR0ZXJGdW5jdGlvbik7CisgICAg
fQorICAgIHJldHVybiBjdXN0b21TZXR0ZXJGdW5jdGlvbjsKIH0KIAogYm9vbCBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
QEAgLTM1NTEsMzEgKzM1NjAsMTMgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKAogICAgIGlmIChzbG90LmlzQWNjZXNzb3IoKSkKICAgICAgICAgZGVzY3JpcHRvci5z
ZXRBY2Nlc3NvckRlc2NyaXB0b3Ioc2xvdC5nZXR0ZXJTZXR0ZXIoKSwgc2xvdC5hdHRyaWJ1dGVz
KCkpOwogICAgIGVsc2UgaWYgKHNsb3QuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yKSB7Ci0gICAgICAgIEN1c3RvbUdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyOwotICAgICAgICBpZiAoc2xvdC5pc0N1c3RvbUFjY2Vzc29yKCkpCi0gICAgICAgICAgICBn
ZXR0ZXJTZXR0ZXIgPSBzbG90LmN1c3RvbUdldHRlclNldHRlcigpOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBzbG90LnNsb3RCYXNlKCk7Ci0KLSAgICAgICAgICAgIEpTVmFsdWUg
bWF5YmVHZXR0ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3Qodm0sIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgICAgICBpZiAoIW1heWJlR2V0dGVyU2V0dGVyKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpc09iamVjdC0+cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgICAgICAgICAgbWF5YmVHZXR0ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEFTU0VSVCht
YXliZUdldHRlclNldHRlcik7Ci0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBqc0R5bmFtaWND
YXN0PEN1c3RvbUdldHRlclNldHRlcio+KHZtLCBtYXliZUdldHRlclNldHRlcik7Ci0gICAgICAg
IH0KLSAgICAgICAgQVNTRVJUKGdldHRlclNldHRlcik7Ci0gICAgICAgIGlmICghZ2V0dGVyU2V0
dGVyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGRlc2NyaXB0b3Iuc2V0
Q3VzdG9tRGVzY3JpcHRvcihzbG90LmF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGlmIChnZXR0ZXJT
ZXR0ZXItPmdldHRlcigpKQotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZ2V0Q3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlw
ZTo6R2V0dGVyKSk7Ci0gICAgICAgIGlmIChnZXR0ZXJTZXR0ZXItPnNldHRlcigpKQotICAgICAg
ICAgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25G
b3JHZXR0ZXJTZXR0ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwg
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVyKSk7CisgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0Uoc2xvdC5pc0N1c3RvbSgpLCAiUHJvcGVydHlTbG90OjpUeXBlQ3Vz
dG9tIGlzIHJlcXVpcmVkIGluIGNhc2Ugb2YgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIik7CisgICAgICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNzb3JEZXNjcmlwdG9yKHNsb3QuYXR0
cmlidXRlcygpICYgflByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3Nvcik7CisgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBzbG90QmFzZUdsb2JhbE9iamVjdCA9IHNsb3Quc2xvdEJhc2UoKS0+
Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgaWYgKHNsb3QuY3VzdG9tR2V0dGVyKCkpCisgICAg
ICAgICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihnZXRDdXN0b21HZXR0ZXJGdW5jdGlvbihzbG90
QmFzZUdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90LmN1c3RvbUdldHRlcigpLCBzbG90
LmRvbUF0dHJpYnV0ZSgpKSk7CisgICAgICAgIGlmIChzbG90LmN1c3RvbVNldHRlcigpKQorICAg
ICAgICAgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoZ2V0Q3VzdG9tU2V0dGVyRnVuY3Rpb24oc2xv
dEJhc2VHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdC5jdXN0b21TZXR0ZXIoKSkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzbG90LmdldFZhbHVlKGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOwpAQCAtMzY2OSw4ICszNjYwLDYgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKAogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUg
c2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyk7CiAgICAgICAgICAgICBp
ZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5nZXR0ZXIoKSAhPSBj
dXJyZW50LmdldHRlcigpKQogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUg
Z2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyk7Ci0gICAgICAgICAgICBp
ZiAoY3VycmVudC5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCB0aHJvd0V4Y2VwdGlvbiwgVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hh
bmlzbUVycm9yKTsKIAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjcyNzQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQxNSwxNiArMTQxNSwxNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6
OmZpbGxDdXN0b21HCiAgICAgaWYgKGN1c3RvbUdldHRlclNldHRlci0+aW5oZXJpdHM8RE9NQXR0
cmlidXRlR2V0dGVyU2V0dGVyPih2bSkpIHsKICAgICAgICAgYXV0byogZG9tQXR0cmlidXRlID0g
anNDYXN0PERPTUF0dHJpYnV0ZUdldHRlclNldHRlcio+KGN1c3RvbUdldHRlclNldHRlcik7CiAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCi0gICAgICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBkb21BdHRyaWJ1dGUtPmdldHRl
cigpLCBkb21BdHRyaWJ1dGUtPmRvbUF0dHJpYnV0ZSgpKTsKKyAgICAgICAgICAgIHNsb3Quc2V0
Q3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGRvbUF0dHJpYnV0ZS0+Z2V0dGVyKCksIGRvbUF0dHJp
YnV0ZS0+c2V0dGVyKCksIGRvbUF0dHJpYnV0ZS0+ZG9tQXR0cmlidXRlKCkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVz
LCBkb21BdHRyaWJ1dGUtPmdldHRlcigpLCBkb21BdHRyaWJ1dGUtPmRvbUF0dHJpYnV0ZSgpKTsK
KyAgICAgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGRv
bUF0dHJpYnV0ZS0+Z2V0dGVyKCksIGRvbUF0dHJpYnV0ZS0+c2V0dGVyKCksIGRvbUF0dHJpYnV0
ZS0+ZG9tQXR0cmlidXRlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHN0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKLSAgICAgICAgc2xvdC5zZXRDdXN0
b20odGhpcywgYXR0cmlidXRlcywgY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKSk7CisgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGN1c3RvbUdldHRlclNldHRlci0+
Z2V0dGVyKCksIGN1c3RvbUdldHRlclNldHRlci0+c2V0dGVyKCkpOwogICAgIGVsc2UKLSAgICAg
ICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpcywgYXR0cmlidXRlcywgY3VzdG9tR2V0dGVy
U2V0dGVyLT5nZXR0ZXIoKSk7CisgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMs
IGF0dHJpYnV0ZXMsIGN1c3RvbUdldHRlclNldHRlci0+Z2V0dGVyKCksIGN1c3RvbUdldHRlclNl
dHRlci0+c2V0dGVyKCkpOwogfQogCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBm
dW5jdGlvbiB0aGlzIGxhcmdlLCBlc3BlY2lhbGx5IGEgdmlydHVhbCBmdW5jdGlvbiwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCShyZXZpc2lvbiAyNzI3NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2luZyBjb3B5KQpA
QCAtMjM4LDE3ICsyMzgsMTggQEAgaW5saW5lIGJvb2wgZ2V0U3RhdGljUHJvcGVydHlTbG90RnJv
bVRhYgogICAgIH0KIAogICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkRPTUpJVEF0dHJpYnV0ZSkgeworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHksICJET01KSVRB
dHRyaWJ1dGUgc3VwcG9ydHMgcmVhZG9ubHkgYXR0cmlidXRlcyBjdXJyZW50bHkuIik7CiAgICAg
ICAgIGNvbnN0IERPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVQgPSBlbnRyeS0+ZG9tSklUKCk7
Ci0gICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJpYnV0ZXMoKSksIGRvbUpJVC0+Z2V0dGVyKCksIERPTUF0
dHJpYnV0ZUFubm90YXRpb24geyBjbGFzc0luZm8sIGRvbUpJVCB9KTsKKyAgICAgICAgc2xvdC5z
ZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShlbnRy
eS0+YXR0cmlidXRlcygpKSwgZG9tSklULT5nZXR0ZXIoKSwgbnVsbHB0ciwgRE9NQXR0cmlidXRl
QW5ub3RhdGlvbiB7IGNsYXNzSW5mbywgZG9tSklUIH0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3BlcnR5QXR0cmlidXRl
OjpET01BdHRyaWJ1dGUpIHsKLSAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09i
amVjdCwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShlbnRyeS0+YXR0cmlidXRlcygpKSwgZW50cnkt
PnByb3BlcnR5R2V0dGVyKCksIERPTUF0dHJpYnV0ZUFubm90YXRpb24geyBjbGFzc0luZm8sIG51
bGxwdHIgfSk7CisgICAgICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIGF0
dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoZW50cnktPmF0dHJpYnV0ZXMoKSksIGVudHJ5LT5wcm9wZXJ0
eUdldHRlcigpLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSwgRE9NQXR0cmlidXRlQW5ub3RhdGlv
biB7IGNsYXNzSW5mbywgbnVsbHB0ciB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgYXR0cmlidXRlc0ZvclN0
cnVjdHVyZShlbnRyeS0+YXR0cmlidXRlcygpKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCkpOwor
ICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXNGb3JTdHJ1
Y3R1cmUoZW50cnktPmF0dHJpYnV0ZXMoKSksIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpLCBlbnRy
eS0+cHJvcGVydHlQdXR0ZXIoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNw
cAkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlEZXNjcmlwdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDE1ICsxMjUsMTYgQEAg
dm9pZCBQcm9wZXJ0eURlc2NyaXB0b3I6OnNldERlc2NyaXB0b3IoSgogICAgIH0KIH0KIAotdm9p
ZCBQcm9wZXJ0eURlc2NyaXB0b3I6OnNldEN1c3RvbURlc2NyaXB0b3IodW5zaWduZWQgYXR0cmli
dXRlcykKK3ZvaWQgUHJvcGVydHlEZXNjcmlwdG9yOjpzZXRBY2Nlc3NvckRlc2NyaXB0b3IodW5z
aWduZWQgYXR0cmlidXRlcykKIHsKLSAgICBBU1NFUlQoIShhdHRyaWJ1dGVzICYgUHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbVZhbHVlKSk7Ci0gICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlcyB8
IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvcjsKLSAgICBtX2F0dHJpYnV0ZXMgJj0gflByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eTsKKyAgICBBU1NFUlQoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7
CisgICAgQVNTRVJUKCEoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3Nvck9yVmFsdWUpKTsKKyAgICBhdHRyaWJ1dGVzICY9IH5Qcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHk7IC8vIEZJWE1FOiB3ZSBzaG91bGQgYmUgYWJsZSB0byBBU1NFUlQgdGhpcyEKKworICAg
IG1fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CisgICAgbV9nZXR0ZXIgPSBqc1VuZGVmaW5lZCgp
OworICAgIG1fc2V0dGVyID0ganNVbmRlZmluZWQoKTsKICAgICBtX3NlZW5BdHRyaWJ1dGVzID0g
RW51bWVyYWJsZVByZXNlbnQgfCBDb25maWd1cmFibGVQcmVzZW50OwotICAgIHNldEdldHRlcihq
c1VuZGVmaW5lZCgpKTsKLSAgICBzZXRTZXR0ZXIoanNVbmRlZmluZWQoKSk7Ci0gICAgbV92YWx1
ZSA9IEpTVmFsdWUoKTsKIH0KIAogdm9pZCBQcm9wZXJ0eURlc2NyaXB0b3I6OnNldEFjY2Vzc29y
RGVzY3JpcHRvcihHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNj
cmlwdG9yLmgJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBA
IHB1YmxpYzoKICAgICBKU09iamVjdCogc2V0dGVyT2JqZWN0KCkgY29uc3Q7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXRVbmRlZmluZWQoKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIHNldERlc2NyaXB0b3IoSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRDdXN0b21EZXNjcmlwdG9yKHVuc2lnbmVkIGF0dHJpYnV0
ZXMpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0QWNjZXNzb3JEZXNjcmlwdG9yKHVu
c2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0QWNjZXNz
b3JEZXNjcmlwdG9yKEdldHRlclNldHRlciogYWNjZXNzb3IsIHVuc2lnbmVkIGF0dHJpYnV0ZXMp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0V3JpdGFibGUoYm9vbCk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRFbnVtZXJhYmxlKGJvb2wpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCShyZXZpc2lvbiAyNzI3
NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NiwyMSArNDYsNiBAQCBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Y3Vz
dG9tR2V0dGVyKEpTR2xvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX2RhdGEuY3VzdG9t
LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSksIHByb3Bl
cnR5TmFtZSkpOwogfQogCi1KU1ZhbHVlIFByb3BlcnR5U2xvdDo6Y3VzdG9tQWNjZXNzb3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkgY29uc3QKLXsKLSAgICBpZiAoIW1fZGF0YS5jdXN0b21BY2Nlc3Nvci5nZXR0ZXJTZXR0ZXIt
PmdldHRlcigpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIGlmIChhdXRv
IGRvbUF0dHJpYnV0ZSA9IHRoaXMtPmRvbUF0dHJpYnV0ZSgpKSB7Ci0gICAgICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICAgICAgaWYgKCFtX3RoaXNWYWx1ZS5pbmhlcml0cyh2
bSwgZG9tQXR0cmlidXRlLT5jbGFzc0luZm8pKSB7Ci0gICAgICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dET01BdHRy
aWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZG9tQXR0cmlidXRlLT5j
bGFzc0luZm8sIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZShtX2RhdGEuY3VzdG9tQWNjZXNzb3IuZ2V0dGVyU2V0dGVyLT5nZXR0ZXIo
KShnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShtX3RoaXNWYWx1ZSksIHByb3BlcnR5TmFt
ZSkpOwotfQotCiBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0UHVyZVJlc3VsdCgpIGNvbnN0CiB7
CiAgICAgSlNWYWx1ZSByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDExICs4
NCwxNyBAQCBpbmxpbmUgdW5zaWduZWQgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSh1CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGF0dHJpYnV0ZXMpOwogfQogCit1c2luZyBHZXRWYWx1
ZUZ1bmMgPSBFbmNvZGVkSlNWYWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVURVMqKShKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3VzaW5n
IEdldFZhbHVlRnVuY1dpdGhQdHIgPSBFbmNvZGVkSlNWYWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJ
QlVURVMqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lLCB2b2lkKik7CisKK3VzaW5nIFB1dFZhbHVlRnVuYyA9IGJvb2wgKCopKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUp
OwordXNpbmcgUHV0VmFsdWVGdW5jV2l0aFB0ciA9IGJvb2wgKCopKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUsIHZvaWQqKTsK
KwogY2xhc3MgUHJvcGVydHlTbG90IHsKIAogICAgIC8vIFdlIHJlbHkgb24gUHJvcGVydHlTbG90
IGJlaW5nIHN0YWNrIGFsbG9jYXRlZCB3aGVuIHVzZWQuIFRoaXMgaXMgbmVlZGVkCiAgICAgLy8g
YmVjYXVzZSB3ZSByZWx5IG9uIHNvbWUgb2YgaXRzIGZpZWxkcyBiZWluZyBhIEdDIHJvb3QuIEZv
ciBleGFtcGxlLCBpdAotICAgIC8vIG1heSBiZSB0aGUgb25seSB0aGluZyB0aGF0IHBvaW50cyB0
byB0aGUgQ3VzdG9tR2V0dGVyU2V0dGVyIHByb3BlcnR5IGl0IGhhcy4KKyAgICAvLyBtYXkgYmUg
dGhlIG9ubHkgdGhpbmcgdGhhdCBwb2ludHMgdG8gdGhlIEdldHRlclNldHRlciBwcm9wZXJ0eSBp
dCBoYXMuCiAgICAgV1RGX0ZPUkJJRF9IRUFQX0FMTE9DQVRJT047CiAKICAgICBlbnVtIFByb3Bl
cnR5VHlwZSA6IHVpbnQ4X3QgewpAQCAtOTYsNyArMTAyLDYgQEAgY2xhc3MgUHJvcGVydHlTbG90
IHsKICAgICAgICAgVHlwZVZhbHVlLAogICAgICAgICBUeXBlR2V0dGVyLAogICAgICAgICBUeXBl
Q3VzdG9tLAotICAgICAgICBUeXBlQ3VzdG9tQWNjZXNzb3IsCiAgICAgfTsKIAogcHVibGljOgpA
QCAtMTIxLDggKzEyNiw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRpc2FsbG93Vk1FbnRyeS5l
bXBsYWNlKCp2bUZvcklucXVpcnkpOwogICAgIH0KIAotICAgIHVzaW5nIEdldFZhbHVlRnVuYyA9
IEVuY29kZWRKU1ZhbHVlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwotICAgIHVzaW5nIEdl
dFZhbHVlRnVuY1dpdGhQdHIgPSBFbmNvZGVkSlNWYWx1ZShKSVRfT1BFUkFUSU9OX0FUVFJJQlVU
RVMqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lLCB2b2lkKik7CisgICAgdXNpbmcgR2V0VmFsdWVGdW5jID0gSlNDOjpHZXRWYWx1ZUZ1bmM7
CisgICAgdXNpbmcgR2V0VmFsdWVGdW5jV2l0aFB0ciA9IEpTQzo6R2V0VmFsdWVGdW5jV2l0aFB0
cjsKIAogICAgIEpTVmFsdWUgZ2V0VmFsdWUoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUp
IGNvbnN0OwogICAgIEpTVmFsdWUgZ2V0VmFsdWUoSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCBw
cm9wZXJ0eU5hbWUpIGNvbnN0OwpAQCAtMTMzLDcgKzEzOCw2IEBAIHB1YmxpYzoKICAgICBib29s
IGlzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VHlwZSA9PSBUeXBlVmFsdWU7IH0K
ICAgICBib29sIGlzQWNjZXNzb3IoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VHlwZSA9PSBU
eXBlR2V0dGVyOyB9CiAgICAgYm9vbCBpc0N1c3RvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVy
dHlUeXBlID09IFR5cGVDdXN0b207IH0KLSAgICBib29sIGlzQ3VzdG9tQWNjZXNzb3IoKSBjb25z
dCB7IHJldHVybiBtX3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tQWNjZXNzb3I7IH0KICAgICBi
b29sIGlzQ2FjaGVhYmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIGlz
VmFsdWUoKTsgfQogICAgIGJvb2wgaXNDYWNoZWFibGVHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBp
c0NhY2hlYWJsZSgpICYmIGlzQWNjZXNzb3IoKTsgfQogICAgIGJvb2wgaXNDYWNoZWFibGVDdXN0
b20oKSBjb25zdCB7IHJldHVybiBpc0NhY2hlYWJsZSgpICYmIGlzQ3VzdG9tKCk7IH0KQEAgLTE2
NCwxNCArMTY4LDE0IEBAIHB1YmxpYzoKIAogICAgIEdldFZhbHVlRnVuYyBjdXN0b21HZXR0ZXIo
KSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzQ2FjaGVhYmxlQ3VzdG9tKCkpOworICAg
ICAgICBBU1NFUlQoaXNDdXN0b20oKSk7CiAgICAgICAgIHJldHVybiBtX2RhdGEuY3VzdG9tLmdl
dFZhbHVlOwogICAgIH0KIAotICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0
dGVyKCkgY29uc3QKKyAgICBQdXRWYWx1ZUZ1bmMgY3VzdG9tU2V0dGVyKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIEFTU0VSVChpc0N1c3RvbUFjY2Vzc29yKCkpOwotICAgICAgICByZXR1cm4gbV9k
YXRhLmN1c3RvbUFjY2Vzc29yLmdldHRlclNldHRlcjsKKyAgICAgICAgQVNTRVJUKGlzQ3VzdG9t
KCkpOworICAgICAgICByZXR1cm4gbV9kYXRhLmN1c3RvbS5wdXRWYWx1ZTsKICAgICB9CiAKICAg
ICBKU09iamVjdCogc2xvdEJhc2UoKSBjb25zdApAQCAtMjU1LDEzICsyNTksMTUgQEAgcHVibGlj
OgogICAgICAgICBtX2FkZGl0aW9uYWxEYXRhLm1vZHVsZU5hbWVzcGFjZVNsb3Quc2NvcGVPZmZz
ZXQgPSBzY29wZU9mZnNldC5vZmZzZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldEN1c3RvbShK
U09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEdldFZhbHVlRnVuYyBnZXRW
YWx1ZSkKKyAgICB2b2lkIHNldEN1c3RvbShKU09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEdldFZhbHVlRnVuYyBnZXRWYWx1ZSwgUHV0VmFsdWVGdW5jIHB1dFZhbHVlID0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVzID09IGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUoYXR0cmlidXRlcykpOwogICAgICAgICAKICAgICAgICAgQVNTRVJUKGdldFZh
bHVlKTsKICAgICAgICAgYXNzZXJ0SXNDRnVuY3Rpb25QdHIoZ2V0VmFsdWUpOwogICAgICAgICBt
X2RhdGEuY3VzdG9tLmdldFZhbHVlID0gZ2V0VmFsdWU7CisgICAgICAgIGFzc2VydElzTnVsbE9y
Q0Z1bmN0aW9uUHRyKHB1dFZhbHVlKTsKKyAgICAgICAgbV9kYXRhLmN1c3RvbS5wdXRWYWx1ZSA9
IHB1dFZhbHVlOwogICAgICAgICBtX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwogCiAgICAgICAg
IEFTU0VSVChzbG90QmFzZSk7CkBAIC0yNzAsMjAgKzI3NiwyMiBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVChtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nRGlzYWxsb3dlZCk7CiAgICAgfQogCi0g
ICAgdm9pZCBzZXRDdXN0b20oSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUsIERPTUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmli
dXRlKQorICAgIHZvaWQgc2V0Q3VzdG9tKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgR2V0VmFsdWVGdW5jIGdldFZhbHVlLCBQdXRWYWx1ZUZ1bmMgcHV0VmFsdWUsIERP
TUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlKQogICAgIHsKLSAgICAgICAgc2V0Q3Vz
dG9tKHNsb3RCYXNlLCBhdHRyaWJ1dGVzLCBnZXRWYWx1ZSk7CisgICAgICAgIHNldEN1c3RvbShz
bG90QmFzZSwgYXR0cmlidXRlcywgZ2V0VmFsdWUsIHB1dFZhbHVlKTsKICAgICAgICAgbV9hZGRp
dGlvbmFsRGF0YVR5cGUgPSBBZGRpdGlvbmFsRGF0YVR5cGU6OkRPTUF0dHJpYnV0ZTsKICAgICAg
ICAgbV9hZGRpdGlvbmFsRGF0YS5kb21BdHRyaWJ1dGUgPSBkb21BdHRyaWJ1dGU7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgc2V0Q2FjaGVhYmxlQ3VzdG9tKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgR2V0VmFsdWVGdW5jIGdldFZhbHVlKQorICAgIHZvaWQgc2V0Q2Fj
aGVhYmxlQ3VzdG9tKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0cmlidXRlcywgR2V0
VmFsdWVGdW5jIGdldFZhbHVlLCBQdXRWYWx1ZUZ1bmMgcHV0VmFsdWUgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZXMgPT0gYXR0cmlidXRlc0ZvclN0cnVjdHVyZShh
dHRyaWJ1dGVzKSk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoZ2V0VmFsdWUpOwogICAgICAg
ICBhc3NlcnRJc0NGdW5jdGlvblB0cihnZXRWYWx1ZSk7CiAgICAgICAgIG1fZGF0YS5jdXN0b20u
Z2V0VmFsdWUgPSBnZXRWYWx1ZTsKKyAgICAgICAgYXNzZXJ0SXNOdWxsT3JDRnVuY3Rpb25QdHIo
cHV0VmFsdWUpOworICAgICAgICBtX2RhdGEuY3VzdG9tLnB1dFZhbHVlID0gcHV0VmFsdWU7CiAg
ICAgICAgIG1fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CiAKICAgICAgICAgQVNTRVJUKHNsb3RC
YXNlKTsKQEAgLTI5MywzMSArMzAxLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9jYWNoZWFiaWxp
dHkgPSBDYWNoaW5nQWxsb3dlZDsKICAgICB9CiAKLSAgICB2b2lkIHNldENhY2hlYWJsZUN1c3Rv
bShKU09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEdldFZhbHVlRnVuYyBn
ZXRWYWx1ZSwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiBkb21BdHRyaWJ1dGUpCisgICAgdm9pZCBz
ZXRDYWNoZWFibGVDdXN0b20oSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUsIFB1dFZhbHVlRnVuYyBwdXRWYWx1ZSwgRE9NQXR0cmli
dXRlQW5ub3RhdGlvbiBkb21BdHRyaWJ1dGUpCiAgICAgewotICAgICAgICBzZXRDYWNoZWFibGVD
dXN0b20oc2xvdEJhc2UsIGF0dHJpYnV0ZXMsIGdldFZhbHVlKTsKKyAgICAgICAgc2V0Q2FjaGVh
YmxlQ3VzdG9tKHNsb3RCYXNlLCBhdHRyaWJ1dGVzLCBnZXRWYWx1ZSwgcHV0VmFsdWUpOwogICAg
ICAgICBtX2FkZGl0aW9uYWxEYXRhVHlwZSA9IEFkZGl0aW9uYWxEYXRhVHlwZTo6RE9NQXR0cmli
dXRlOwogICAgICAgICBtX2FkZGl0aW9uYWxEYXRhLmRvbUF0dHJpYnV0ZSA9IGRvbUF0dHJpYnV0
ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldEN1c3RvbUdldHRlclNldHRlcihKU09iamVjdCogc2xv
dEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEN1c3RvbUdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZXMgPT0gYXR0cmlidXRlc0ZvclN0
cnVjdHVyZShhdHRyaWJ1dGVzKSk7Ci0gICAgICAgIEFTU0VSVChhdHRyaWJ1dGVzICYgUHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKLQotICAgICAgICBkaXNhYmxlQ2FjaGluZygp
OwotCi0gICAgICAgIEFTU0VSVChnZXR0ZXJTZXR0ZXIpOwotICAgICAgICBtX2RhdGEuY3VzdG9t
QWNjZXNzb3IuZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyOwotICAgICAgICBtX2F0dHJpYnV0
ZXMgPSBhdHRyaWJ1dGVzOwotCi0gICAgICAgIEFTU0VSVChzbG90QmFzZSk7Ci0gICAgICAgIG1f
c2xvdEJhc2UgPSBzbG90QmFzZTsKLSAgICAgICAgbV9wcm9wZXJ0eVR5cGUgPSBUeXBlQ3VzdG9t
QWNjZXNzb3I7Ci0KLSAgICAgICAgQVNTRVJUKG1fY2FjaGVhYmlsaXR5ID09IENhY2hpbmdEaXNh
bGxvd2VkKTsKLSAgICB9Ci0KICAgICB2b2lkIHNldEdldHRlclNsb3QoSlNPYmplY3QqIHNsb3RC
YXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlcikKICAg
ICB7CiAgICAgICAgIEFTU0VSVChhdHRyaWJ1dGVzID09IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUo
YXR0cmlidXRlcykpOwpAQCAtMzc3LDcgKzM2Nyw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBmdW5jdGlvbkdldHRlcihKU0dsb2JhbE9iamVjdCop
IGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY3VzdG9tR2V0dGVyKEpTR2xv
YmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKSBjb25zdDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBK
U1ZhbHVlIGN1c3RvbUFjY2Vzc29yR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
KSBjb25zdDsKIAogICAgIHVuaW9uIHsKICAgICAgICAgRW5jb2RlZEpTVmFsdWUgdmFsdWU7CkBA
IC0zODYsMTAgKzM3NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIH0gZ2V0dGVyOwogICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgR2V0VmFsdWVGdW5jIGdldFZhbHVlOworICAgICAgICAgICAg
UHV0VmFsdWVGdW5jIHB1dFZhbHVlOwogICAgICAgICB9IGN1c3RvbTsKLSAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIEN1c3RvbUdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyOwotICAgICAg
ICB9IGN1c3RvbUFjY2Vzc29yOwogICAgIH0gbV9kYXRhOwogCiAgICAgdW5zaWduZWQgbV9hdHRy
aWJ1dGVzIHsgMCB9OwpAQCAtNDE3LDggKzQwNCw2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBQ
cm9wZXJ0eVNsb3Q6OmdldFYKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShtX2RhdGEu
dmFsdWUpOwogICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlR2V0dGVyKQogICAgICAgICBy
ZXR1cm4gZnVuY3Rpb25HZXR0ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICBpZiAobV9wcm9wZXJ0eVR5
cGUgPT0gVHlwZUN1c3RvbUFjY2Vzc29yKQotICAgICAgICByZXR1cm4gY3VzdG9tQWNjZXNzb3JH
ZXR0ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgIHJldHVybiBjdXN0b21HZXR0
ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogfQogCkBAIC00MjksOCArNDE0LDYgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VgogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CiAgICAgaWYgKG1fcHJvcGVydHlUeXBlID09
IFR5cGVHZXR0ZXIpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbkdldHRlcihnbG9iYWxPYmplY3Qp
OwotICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tQWNjZXNzb3IpCi0gICAgICAg
IHJldHVybiBjdXN0b21BY2Nlc3NvckdldHRlcihnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZy
b20odm0sIHByb3BlcnR5TmFtZSkpOwogICAgIHJldHVybiBjdXN0b21HZXR0ZXIoZ2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHJldmlz
aW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5
U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4IEBAIGNsYXNzIFB1dFByb3BlcnR5
U2xvdCB7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IFVuY2FjaGFibGUsIEV4
aXN0aW5nUHJvcGVydHksIE5ld1Byb3BlcnR5LCBTZXR0ZXJQcm9wZXJ0eSwgQ3VzdG9tVmFsdWUs
IEN1c3RvbUFjY2Vzc29yIH07CiAgICAgZW51bSBDb250ZXh0IHsgVW5rbm93bkNvbnRleHQsIFB1
dEJ5SWQsIFB1dEJ5SWRFdmFsIH07Ci0gICAgdXNpbmcgUHV0VmFsdWVGdW5jID0gYm9vbCAoKiko
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB2YWx1ZSk7Ci0gICAgdXNpbmcgUHV0VmFsdWVGdW5jV2l0aFB0ciA9IGJvb2wgKCopKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdGhpc09iamVjdCwgRW5jb2RlZEpTVmFsdWUgdmFs
dWUsIHZvaWQqKTsKKyAgICB1c2luZyBQdXRWYWx1ZUZ1bmMgPSBKU0M6OlB1dFZhbHVlRnVuYzsK
KyAgICB1c2luZyBQdXRWYWx1ZUZ1bmNXaXRoUHRyID0gSlNDOjpQdXRWYWx1ZUZ1bmNXaXRoUHRy
OwogCiAgICAgUHV0UHJvcGVydHlTbG90KEpTVmFsdWUgdGhpc1ZhbHVlLCBib29sIGlzU3RyaWN0
TW9kZSA9IGZhbHNlLCBDb250ZXh0IGNvbnRleHQgPSBVbmtub3duQ29udGV4dCwgYm9vbCBpc0lu
aXRpYWxpemF0aW9uID0gZmFsc2UpCiAgICAgICAgIDogbV9iYXNlKG51bGxwdHIpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcg
Kzk2LDggQEAKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Nh
bGxiYWNrT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDYWxsZWUuaCIKLSNpbmNsdWRlICJKU0N1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpTRmluYWxpemF0aW9u
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0zODgsNyArMzg5LDYgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAogICAgICwgcHJvcGVydHlO
YW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQogICAgICwgbWFjaGlu
ZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKG1ha2VVbmlxdWU8U2ltcGxl
U3RhdHM+KCkpCi0gICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykKICAg
ICAsIHN0cmluZ0NhY2hlKCp0aGlzKQogICAgICwgc3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0aGlz
KQogICAgICwgc3RydWN0dXJlQ2FjaGUoKnRoaXMpCkBAIC0xNDgyLDcgKzE0ODIsOCBAQCBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tHbG9iYWxPYmplY3RTcGFjZSwgY2FsbGJhY2tH
bG9iYWxPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNr
RnVuY3Rpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNDYWxsYmFja0Z1bmN0aW9u
KSAvLyBIYXNoOjB4ZTc2NDhlYmMKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhjYWxsYmFja09iamVjdFNwYWNlLCBjYWxsYmFja09iamVjdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0PikKLURZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uKSAvLyBI
YXNoOjB4MTgwOTEwMDAKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhj
dXN0b21HZXR0ZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU0N1c3Rv
bUdldHRlckZ1bmN0aW9uKSAvLyBIYXNoOjB4MTgwOTEwMDAKK0RZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhjdXN0b21TZXR0ZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uKQogRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKGRhdGFWaWV3U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTRGF0YVZpZXcpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
ZGVidWdnZXJTY29wZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBEZWJ1Z2dlclNjb3Bl
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGVycm9ySW5zdGFuY2VT
cGFjZSwgZXJyb3JJbnN0YW5jZUhlYXBDZWxsVHlwZS5nZXQoKSwgRXJyb3JJbnN0YW5jZSkgLy8g
SGFzaDoweDNmNDBkNGEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNp
b24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw2IEBAIGNsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVj
dDsKIGNsYXNzIEpTQVBJV3JhcHBlck9iamVjdDsKIGNsYXNzIEpTQ0NhbGxiYWNrRnVuY3Rpb247
CiBjbGFzcyBKU0NhbGxiYWNrQ29uc3RydWN0b3I7Ci1jbGFzcyBKU0N1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uOwogY2xhc3MgSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU7CiBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OwpAQCAt
NTAzLDcgKzUwMiw4IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGNhbGxiYWNrR2xvYmFsT2JqZWN0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUihjYWxsYmFja0Z1bmN0aW9uU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUihjYWxsYmFja09iamVjdFNwYWNlKQotICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25TcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbUdldHRlckZ1
bmN0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihjdXN0
b21TZXR0ZXJGdW5jdGlvblNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoZGF0YVZpZXdTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGRlYnVnZ2VyU2NvcGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKGVycm9ySW5zdGFuY2VTcGFjZSkKQEAgLTcyMyw3ICs3MjMsNiBAQCBwdWJsaWM6CiAg
ICAgU21hbGxTdHJpbmdzIHNtYWxsU3RyaW5nczsKICAgICBOdW1lcmljU3RyaW5ncyBudW1lcmlj
U3RyaW5nczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2ltcGxlU3RhdHM+IG1hY2hpbmVDb2RlQnl0
ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVDsKLSAgICBXZWFrR0NNYXA8c3RkOjpwYWly
PEN1c3RvbUdldHRlclNldHRlciosIGludD4sIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24+
IGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uTWFwOwogICAgIFdlYWtHQ01hcDxTdHJpbmdJbXBs
KiwgSlNTdHJpbmcsIFB0ckhhc2g8U3RyaW5nSW1wbCo+PiBzdHJpbmdDYWNoZTsKICAgICBTdHJv
bmc8SlNTdHJpbmc+IGxhc3RDYWNoZWRTdHJpbmc7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI3Mjc0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIzIEBACisyMDIxLTAyLTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdt
YWlsLmNvbT4KKworICAgICAgICBbSlNDXSBQcm9wZXJ0eVNsb3Qgc2hvdWxkIGFsbG93IHBhc3Np
bmcgY3VzdG9tIHNldHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRvIHByZXZlbnQgY3Jvc3Mtb3JpZ2luIGFjY2Vzc29yIGZ1bmN0aW9ucyBmcm9t
IGRpZmZlcmVudCByZWFsbXMgdG8gaGF2ZSB0aGUgc2FtZSB3cmFwcGVyLAorICAgICAgICByZXR1
cm4gUHJvcGVydHlTbG90OjpUeXBlR2V0dGVyIGluc3RlYWQuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvZG9tL1dpbmRvdy9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Itb3RoZXItd2luZG93Lmh0bWwK
KyAgICAgICAgICAgICAgIGpzL2luc3RhbmNlLXByb3BlcnR5LWdldHRlci1vdGhlci1pbnN0YW5j
ZS5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Rv
bS9ldmVudHMvRXZlbnQtaXNUcnVzdGVkLmFueS5qcworICAgICAgICAgICAgICAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9u
LWludGVyZmFjZS9kb2N1bWVudF9sb2NhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0dl
dE93blByb3BlcnR5U2xvdFJlc3RyaWN0ZWRBY2Nlc3MpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T3duUHJvcGVydHlT
bG90Q29tbW9uKToKKwogMjAyMS0wMi0xMSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU11bRkNSXSBSYW5nZSBpbnB1dHMgaGF2ZSBhbiBpbmNvcnJl
Y3QgUlRMIGFwcGVhcmFuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsOSArNDgsMTIgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZXR0ZXJTZXR0ZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnRl
cm5hbEZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
TWljcm90YXNrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9va3VwLmg+CkBAIC0xODQs
OSArMTg3LDEwIEBAIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmkKICAg
ICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMub3BlbmVyUHVibGljTmFt
ZSgpCiAgICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBhcmVudFB1
YmxpY05hbWUoKQogICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy50
b3BQdWJsaWNOYW1lKCkpIHsKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkRXhwb3NlU2V0dGVyID0g
cHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1YmxpY05hbWUoKTsKLSAgICAg
ICAgICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0
dGVyU2V0dGVyOjpjcmVhdGUodm0sIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpLCBzaG91bGRFeHBv
c2VTZXR0ZXIgPyBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSA6IG51bGxwdHIpOwotICAgICAgICAg
ICAgc2xvdC5zZXRDdXN0b21HZXR0ZXJTZXR0ZXIodGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBjdXN0b21HZXR0ZXJTZXR0ZXIpOworICAgICAgICAg
ICAgYXV0byogZ2V0dGVyID0gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmbGV4
aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7
CisgICAgICAgICAgICBhdXRvKiBzZXR0ZXIgPSBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVz
LmxvY2F0aW9uUHVibGljTmFtZSgpID8gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZt
LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlQdXR0
ZXIoKSkgOiBudWxscHRyOworICAgICAgICAgICAgYXV0byogZ2V0dGVyU2V0dGVyID0gR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBnZXR0ZXIsIHNldHRlcik7
CisgICAgICAgICAgICBzbG90LnNldEdldHRlclNsb3QodGhpc09iamVjdCwgUHJvcGVydHlBdHRy
aWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0
ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjcyNzQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJKU0RP
TVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgog
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9HZXR0ZXJTZXR0ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0N1c3RvbVNldHRl
ckZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0xvb2t1cC5oPgogCkBAIC03MCw4ICs3Miw5IEBAIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5U2xvdENvbW1vbihKU0wKICAgICAvLyBhIGRlc2NyaXB0b3Ig
dGhhdCBoYXMgYSBzZXR0ZXIgYnV0IG5vIGdldHRlci4KICAgICBpZiAoc2xvdC5pbnRlcm5hbE1l
dGhvZFR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJv
cGVydHkgJiYgcHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0u
Y2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmhyZWZQdWJsaWNOYW1lKCkpIHsKICAgICAgICAg
YXV0byogZW50cnkgPSBKU0xvY2F0aW9uOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVu
dHJ5KHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIEN1c3RvbUdldHRlclNldHRlciogY3VzdG9tR2V0
dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIG51bGxwdHIsIGVudHJ5
LT5wcm9wZXJ0eVB1dHRlcigpKTsKLSAgICAgICAgc2xvdC5zZXRDdXN0b21HZXR0ZXJTZXR0ZXIo
JnRoaXNPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpDdXN0b21BY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIGN1c3RvbUdl
dHRlclNldHRlcik7CisgICAgICAgIGF1dG8qIHNldHRlciA9IEpTQ3VzdG9tU2V0dGVyRnVuY3Rp
b246OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZW50cnkt
PnByb3BlcnR5UHV0dGVyKCkpOworICAgICAgICBhdXRvKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgJmxleGljYWxHbG9iYWxPYmplY3QsIG51bGxwdHIsIHNldHRlcik7
CisgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCgmdGhpc09iamVjdCwgUHJvcGVydHlBdHRyaWJ1
dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtLCBnZXR0ZXJTZXR0ZXIp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Mjc0
MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTAyLTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4K
KworICAgICAgICBbSlNDXSBQcm9wZXJ0eVNsb3Qgc2hvdWxkIGFsbG93IHBhc3NpbmcgY3VzdG9t
IHNldHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMTg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9kb20vV2luZG93L2dldE93blByb3BlcnR5RGVzY3JpcHRvci1vdGhlci13aW5kb3ct
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3Itb3RoZXItd2luZG93Lmh0bWw6CisgICAgICAgICoganMvaW5zdGFuY2UtcHJvcGVy
dHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9pbnN0
YW5jZS1wcm9wZXJ0eS1nZXR0ZXItb3RoZXItaW5zdGFuY2UuaHRtbDoKKwogMjAyMS0wMi0xMSAg
QWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bRkNS
XSBSYW5nZSBpbnB1dHMgaGF2ZSBhbiBpbmNvcnJlY3QgUlRMIGFwcGVhcmFuY2UKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Itb3RoZXIt
d2luZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLW90aGVyLXdpbmRvdy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDI3Mjc0MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3Itb3RoZXItd2luZG93LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNSwxMiArNSwxMiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBCiAKIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVy
V2luZG93LCAnbG9jYXRpb24nKQogUEFTUyBkZXNjcmlwdG9yIGlzIG5vdCB1bmRlZmluZWQKLVBB
U1MgZGVzY3JpcHRvci5nZXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KLVBBU1MgZGVzY3Jp
cHRvci5zZXQgaXMgYW4gaW5zdGFuY2Ugb2YgRnVuY3Rpb24KK1BBU1MgZGVzY3JpcHRvci5nZXQg
aW5zdGFuY2VvZiBvdGhlcldpbmRvdy5GdW5jdGlvbiBpcyB0cnVlCitQQVNTIGRlc2NyaXB0b3Iu
c2V0IGluc3RhbmNlb2Ygb3RoZXJXaW5kb3cuRnVuY3Rpb24gaXMgdHJ1ZQogUEFTUyBkZXNjcmlw
dG9yLmVudW1lcmFibGUgaXMgdHJ1ZQogUEFTUyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBpcyBm
YWxzZQogUEFTUyBkZXNjcmlwdG9yLmdldC5jYWxsKG90aGVyV2luZG93KS50b1N0cmluZygpIGlz
ICJhYm91dDpibGFuayIKLVBBU1MgZGVzY3JpcHRvci5nZXQuY2FsbCgpIGlzIGRlc2NyaXB0b3Iu
Z2V0LmNhbGwod2luZG93KQorUEFTUyBkZXNjcmlwdG9yLmdldC5jYWxsKCkgaXMgZGVzY3JpcHRv
ci5nZXQuY2FsbChvdGhlcldpbmRvdykKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE93
blByb3BlcnR5RGVzY3JpcHRvci1vdGhlci13aW5kb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLW90aGVyLXdp
bmRvdy5odG1sCShyZXZpc2lvbiAyNzI3NDEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLW90aGVyLXdpbmRvdy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xMCwxMiArMTAsMTIgQEAgb3RoZXJXaW5kb3cgPSBmcmFtZXNbMF07CiAKIGV2YWxB
bmRMb2coImRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVy
V2luZG93LCAnbG9jYXRpb24nKSIpOwogc2hvdWxkTm90QmUoImRlc2NyaXB0b3IiLCAidW5kZWZp
bmVkIik7Ci1zaG91bGRCZVR5cGUoImRlc2NyaXB0b3IuZ2V0IiwgIkZ1bmN0aW9uIik7Ci1zaG91
bGRCZVR5cGUoImRlc2NyaXB0b3Iuc2V0IiwgIkZ1bmN0aW9uIik7CitzaG91bGRCZVRydWUoImRl
c2NyaXB0b3IuZ2V0IGluc3RhbmNlb2Ygb3RoZXJXaW5kb3cuRnVuY3Rpb24iKTsKK3Nob3VsZEJl
VHJ1ZSgiZGVzY3JpcHRvci5zZXQgaW5zdGFuY2VvZiBvdGhlcldpbmRvdy5GdW5jdGlvbiIpOwog
c2hvdWxkQmVUcnVlKCJkZXNjcmlwdG9yLmVudW1lcmFibGUiKTsKIHNob3VsZEJlRmFsc2UoImRl
c2NyaXB0b3IuY29uZmlndXJhYmxlIik7CiBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRlc2NyaXB0
b3IuZ2V0LmNhbGwob3RoZXJXaW5kb3cpLnRvU3RyaW5nKCkiLCAiYWJvdXQ6YmxhbmsiKTsKLXNo
b3VsZEJlKCJkZXNjcmlwdG9yLmdldC5jYWxsKCkiLCAiZGVzY3JpcHRvci5nZXQuY2FsbCh3aW5k
b3cpIik7CitzaG91bGRCZSgiZGVzY3JpcHRvci5nZXQuY2FsbCgpIiwgImRlc2NyaXB0b3IuZ2V0
LmNhbGwob3RoZXJXaW5kb3cpIik7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjcyODM3KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisy
MDIxLTAyLTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAg
ICAgICBbSlNDXSBQcm9wZXJ0eVNsb3Qgc2hvdWxkIGFsbG93IHBhc3NpbmcgY3VzdG9tIHNldHRl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTg3
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvYXR0cmlidXRlcy1hY2Nl
c3NvcnMtdW5pcXVlLWZ1bmN0aW9uLW9iamVjdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9hdHRyaWJ1
dGVzLWFjY2Vzc29ycy11bmlxdWUtZnVuY3Rpb24tb2JqZWN0cy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVudC1pc1RydXN0ZWQuYW55LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVu
dC1pc1RydXN0ZWQuYW55Lndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2Rv
Y3VtZW50X2xvY2F0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2F1eGlsaWFyeS1icm93c2luZy1jb250ZXh0cy9vcGVu
ZXItc2V0dGVyLndpbmRvdy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRlZC1vcGVuZXItZXhwZWN0ZWQudHh0Ogor
CiAyMDIxLTAyLTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtjc3MtZmxleGJveF0gQW5vdGhlciBXUFQgdGVzdCBpbXBvcnQKSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9hdHRyaWJ1dGVzLWFjY2Vzc29ycy11bmlxdWUtZnVuY3Rpb24tb2JqZWN0cy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2F0dHJpYnV0ZXMtYWNjZXNz
b3JzLXVuaXF1ZS1mdW5jdGlvbi1vYmplY3RzLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvYXR0cmlidXRlcy1hY2Nlc3NvcnMtdW5pcXVlLWZ1bmN0aW9uLW9iamVj
dHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIEZv
ciBhdHRyaWJ1dGVzLCBlYWNoIGNvcHkgb2YgdGhlIGFjY2Vzc29yIHByb3BlcnR5IGhhcyBkaXN0
aW5jdCBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3RzIGZvciBpdHMgZ2V0dGVycyBhbmQgc2V0dGVy
cy4KKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2F0dHJpYnV0ZXMtYWNjZXNzb3JzLXVuaXF1ZS1mdW5j
dGlvbi1vYmplY3RzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2F0dHJpYnV0ZXMt
YWNjZXNzb3JzLXVuaXF1ZS1mdW5jdGlvbi1vYmplY3RzLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL2F0dHJpYnV0ZXMtYWNjZXNzb3JzLXVuaXF1ZS1mdW5jdGlvbi1vYmplY3Rz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+QWxsIGF0dHJpYnV0ZXMgYWNjZXNzb3JzIGFy
ZSB1bmlxdWUgZnVuY3Rpb24gb2JqZWN0czwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9
Imh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1pbnRlcmZhY2UtbWl4aW5zIj4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CisKK3Rlc3QoKCkgPT4geworICBjb25zdCBzZWVuUHJvdG90eXBl
cyA9IG5ldyBXZWFrU2V0KFtGdW5jdGlvbi5wcm90b3R5cGVdKTsKKyAgY29uc3Qgc2VlbkZ1bmN0
aW9ucyA9IG5ldyBXZWFrTWFwKCk7CisKKyAgZm9yIChjb25zdCB3aW5kb3dLZXkgb2YgT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSkgeworICAgIGNvbnN0IHdpbmRvd1ZhbHVlID0g
d2luZG93W3dpbmRvd0tleV07CisgICAgaWYgKHR5cGVvZiB3aW5kb3dWYWx1ZSAhPT0gImZ1bmN0
aW9uIikgY29udGludWU7CisKKyAgICBjb25zdCB7cHJvdG90eXBlfSA9IHdpbmRvd1ZhbHVlOwor
ICAgIGlmICghcHJvdG90eXBlIHx8IHNlZW5Qcm90b3R5cGVzLmhhcyhwcm90b3R5cGUpKSBjb250
aW51ZTsKKyAgICBzZWVuUHJvdG90eXBlcy5hZGQocHJvdG90eXBlKTsKKworICAgIGZvciAoY29u
c3Qga2V5IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSkpIHsKKyAgICAg
IGNvbnN0IGFzc2VydF9ub3Rfc2VlbiA9IChmbiwgZmllbGQpID0+IHsKKyAgICAgICAgY29uc3Qg
Zm5JbmZvID0gYCR7d2luZG93S2V5fS4ke2tleX0uJHtmaWVsZH1gOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKHNlZW5GdW5jdGlvbnMuZ2V0KGZuKSwgdW5kZWZpbmVkLCBmbkluZm8pOworICAgICAg
ICBzZWVuRnVuY3Rpb25zLnNldChmbiwgZm5JbmZvKTsKKyAgICAgIH07CisKKyAgICAgIGNvbnN0
IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvdHlwZSwga2V5KTsK
KyAgICAgIGlmIChkZXNjLmdldCkgYXNzZXJ0X25vdF9zZWVuKGRlc2MuZ2V0LCAiW1tHZXRdXSIp
OworICAgICAgaWYgKGRlc2Muc2V0KSBhc3NlcnRfbm90X3NlZW4oZGVzYy5zZXQsICJbW1NldF1d
Iik7CisgICAgfQorICB9Cit9LCAiRm9yIGF0dHJpYnV0ZXMsIGVhY2ggY29weSBvZiB0aGUgYWNj
ZXNzb3IgcHJvcGVydHkgaGFzIGRpc3RpbmN0IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdHMgZm9y
IGl0cyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLiIpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnQtaXNUcnVz
dGVkLmFueS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL0V2ZW50LWlzVHJ1c3RlZC5hbnktZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzI3NDEpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnQtaXNUcnVzdGVkLmFueS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSwzIEBACiAKLUZBSUwgRXZlbnQtaXNUcnVz
dGVkIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiBpc1RydXN0ZWQo
KSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24gaXNU
cnVzdGVkKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iCitQQVNTIEV2ZW50LWlzVHJ1c3RlZAog
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9l
dmVudHMvRXZlbnQtaXNUcnVzdGVkLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50
cy9FdmVudC1pc1RydXN0ZWQuYW55Lndvcmtlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3Mjc0
MSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2
ZW50cy9FdmVudC1pc1RydXN0ZWQuYW55Lndvcmtlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNyArMSwzIEBACiAKLUZBSUwgRXZlbnQtaXNUcnVzdGVkIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiBpc1RydXN0ZWQoKSB7Ci0gICAgW25hdGl2ZSBj
b2RlXQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24gaXNUcnVzdGVkKCkgewotICAgIFtu
YXRpdmUgY29kZV0KLX0iCitQQVNTIEV2ZW50LWlzVHJ1c3RlZAogCkluZGV4OiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90
aGUtbG9jYXRpb24taW50ZXJmYWNlL2RvY3VtZW50X2xvY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2RvY3VtZW50X2xvY2F0
aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjcyNzQxKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0
aW9uLWludGVyZmFjZS9kb2N1bWVudF9sb2NhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTQgKzEsNiBAQAogCiBQQVNTIGRvY3VtZW50IG5vdCBpbiBhIGJyb3dzaW5nIGNv
bnRleHQKIFBBU1MgZG9jdW1lbnQubG9jYXRpb24gZXF1YWxzIHdpbmRvdy5sb2NhdGlvbgotRkFJ
TCBBdHRyaWJ1dGUgZ2V0dGVyIGRlZHVwbGljYXRpb24gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
ZnVuY3Rpb24gImZ1bmN0aW9uIGxvY2F0aW9uKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iIGJ1
dCBnb3QgZnVuY3Rpb24gImZ1bmN0aW9uIGxvY2F0aW9uKCkgewotICAgIFtuYXRpdmUgY29kZV0K
LX0iCi1GQUlMIEF0dHJpYnV0ZSBzZXR0ZXIgZGVkdXBsaWNhdGlvbiBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gbG9jYXRpb24oKSB7Ci0gICAgW25hdGl2ZSBjb2Rl
XQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24gbG9jYXRpb24oKSB7Ci0gICAgW25hdGl2
ZSBjb2RlXQotfSIKK1BBU1MgQXR0cmlidXRlIGdldHRlciBkZWR1cGxpY2F0aW9uCitQQVNTIEF0
dHJpYnV0ZSBzZXR0ZXIgZGVkdXBsaWNhdGlvbgogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRlZC1v
cGVuZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9wZW5l
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3Mjc0MSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9w
ZW5lci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwg
b3BlbmVyIGFuZCBlbWJlZGRlZCBkb2N1bWVudHM7IHVzaW5nIHdpbmRvdy5vcGVuKCkgYXNzZXJ0
X2VxdWFsczogb3BlbmVyIGJlZm9yZSBzZXR0aW5nIGl0IHRvIG51bGwgdmlhIGRpcmVjdGx5IGlu
dm9raW5nIHRoZSBnZXR0ZXIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IFdpbmRvd10iIGJ1dCBn
b3QgbnVsbAorUEFTUyBvcGVuZXIgYW5kIGVtYmVkZGVkIGRvY3VtZW50czsgdXNpbmcgd2luZG93
Lm9wZW4oKQogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9hdXhpbGlhcnktYnJvd3NpbmctY29udGV4dHMvb3Bl
bmVyLXNldHRlci53aW5kb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2F1
eGlsaWFyeS1icm93c2luZy1jb250ZXh0cy9vcGVuZXItc2V0dGVyLndpbmRvdy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI3Mjc0MSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2F1eGlsaWFyeS1icm93c2luZy1jb250
ZXh0cy9vcGVuZXItc2V0dGVyLndpbmRvdy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsOSArMSw5IEBACiAKLUZBSUwgU2V0dGluZyB3aW5kb3cub3BlbmVyIHRvIHVuZGVmaW5lZCBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAieCIgYnV0IGdvdCAodW5kZWZpbmVkKSB1
bmRlZmluZWQKLUZBSUwgU2V0dGluZyB3aW5kb3cub3BlbmVyIHRvIDQyIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkIChzdHJpbmcpICJ4IiBidXQgZ290IChudW1iZXIpIDQyCi1GQUlMIFNldHRpbmcg
d2luZG93Lm9wZW5lciB0byBmdW5jdGlvbiAoKSB7IHJldHVybiAiaGkiIH0gYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgKHN0cmluZykgIngiIGJ1dCBnb3QgKGZ1bmN0aW9uKSBmdW5jdGlvbiAiZnVu
Y3Rpb24gKCkgeyByZXR1cm4gImhpIiB9IgotRkFJTCBTZXR0aW5nIHdpbmRvdy5vcGVuZXIgdG8g
aGkgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIngiIGJ1dCBnb3QgImhpIgotRkFJTCBTZXR0aW5n
IHdpbmRvdy5vcGVuZXIgdG8gW29iamVjdCBPYmplY3RdIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IChzdHJpbmcpICJ4IiBidXQgZ290IChvYmplY3QpIG9iamVjdCAiW29iamVjdCBPYmplY3RdIgot
RkFJTCBTZXR0aW5nIHdpbmRvdy5vcGVuZXIgdG8gIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChz
dHJpbmcpICJ4IiBidXQgZ290IChvYmplY3QpIFtdCi1GQUlMIFNldHRpbmcgd2luZG93Lm9wZW5l
ciB0byBTeW1ib2woKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAieCIgYnV0IGdv
dCAoc3ltYm9sKSBzeW1ib2wgIlN5bWJvbCgpIgorUEFTUyBTZXR0aW5nIHdpbmRvdy5vcGVuZXIg
dG8gdW5kZWZpbmVkCitQQVNTIFNldHRpbmcgd2luZG93Lm9wZW5lciB0byA0MgorUEFTUyBTZXR0
aW5nIHdpbmRvdy5vcGVuZXIgdG8gZnVuY3Rpb24gKCkgeyByZXR1cm4gImhpIiB9CitQQVNTIFNl
dHRpbmcgd2luZG93Lm9wZW5lciB0byBoaQorUEFTUyBTZXR0aW5nIHdpbmRvdy5vcGVuZXIgdG8g
W29iamVjdCBPYmplY3RdCitQQVNTIFNldHRpbmcgd2luZG93Lm9wZW5lciB0bworUEFTUyBTZXR0
aW5nIHdpbmRvdy5vcGVuZXIgdG8gU3ltYm9sKCkKIApJbmRleDogTGF5b3V0VGVzdHMvanMvaW5z
dGFuY2UtcHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9pbnN0YW5jZS1wcm9wZXJ0eS1nZXR0ZXItb3RoZXItaW5z
dGFuY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzI3NDEpCisrKyBMYXlvdXRUZXN0cy9qcy9p
bnN0YW5jZS1wcm9wZXJ0eS1nZXR0ZXItb3RoZXItaW5zdGFuY2UtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDkgKzMsNyBAQCBUZXN0cyB0aGF0IGNhbGxpbmcgYW4gaW5zdGFuY2Ug
cHJvcGVydHkgCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBsb2NhdGlvbkdl
dHRlciBpcyBhbiBpbnN0YW5jZSBvZiBmdW5jdGlvbiBGdW5jdGlvbigpIHsKLSAgICBbbmF0aXZl
IGNvZGVdCi19CitQQVNTIGxvY2F0aW9uR2V0dGVyIGluc3RhbmNlb2Ygb3RoZXJXaW5kb3cuRnVu
Y3Rpb24gaXMgdHJ1ZQogUEFTUyBsb2NhdGlvbkdldHRlci5jYWxsKG90aGVyV2luZG93LmRvY3Vt
ZW50KS50b1N0cmluZygpIGlzICJhYm91dDpibGFuayIKIFBBU1MgbG9jYXRpb25HZXR0ZXIuY2Fs
bCh3aW5kb3cuZG9jdW1lbnQpID09PSB3aW5kb3cuZG9jdW1lbnQubG9jYXRpb24gaXMgdHJ1ZQog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvanMvaW5z
dGFuY2UtcHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvaW5zdGFuY2UtcHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLmh0
bWwJKHJldmlzaW9uIDI3Mjc0MSkKKysrIExheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5
LWdldHRlci1vdGhlci1pbnN0YW5jZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3
IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogewogICAgIG90aGVyV2luZG93ID0gd2luZG93Lm9wZW4o
ImFib3V0OmJsYW5rIik7CiAgICAgICAgIGxvY2F0aW9uR2V0dGVyID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihvdGhlcldpbmRvdy5kb2N1bWVudCwgImxvY2F0aW9uIikuZ2V0Owot
ICAgICAgICBzaG91bGRCZVR5cGUoImxvY2F0aW9uR2V0dGVyIiwgRnVuY3Rpb24pOworICAgICAg
ICBzaG91bGRCZVRydWUoImxvY2F0aW9uR2V0dGVyIGluc3RhbmNlb2Ygb3RoZXJXaW5kb3cuRnVu
Y3Rpb24iKTsKICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsb2NhdGlvbkdldHRlci5j
YWxsKG90aGVyV2luZG93LmRvY3VtZW50KS50b1N0cmluZygpIiwgImFib3V0OmJsYW5rIik7CiAg
ICAgICAgIC8vIFNob3VsZCByZXR1cm4gdGhlIGN1cnJlbnQgZG9jdW1lbnQncyBsb2NhdGlvbi4K
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJsb2NhdGlvbkdldHRlci5jYWxsKHdpbmRvdy5kb2N1bWVu
dCkgPT09IHdpbmRvdy5kb2N1bWVudC5sb2NhdGlvbiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420233</attachid>
            <date>2021-02-13 19:58:20 -0800</date>
            <delta_ts>2021-02-14 02:04:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221872-20210214055818.patch</filename>
            <type>text/plain</type>
            <size>86593</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDIxLTAyLTEzICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbSlNDXSBQcm9wZXJ0eVNsb3Qgc2hvdWxkIGFsbG93IHBhc3NpbmcgY3VzdG9tIHNl
dHRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MTg3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2g6CisKKyAgICAgICAgMS4gTWVyZ2VzIFByb3BlcnR5U2xvdDo6VHlwZUN1c3RvbUFj
Y2Vzc29yIGludG8gVHlwZUN1c3RvbSwgYWxsb3dpbmcgdG8gcGFzcyBhIHNldHRlciBmb3IKKyAg
ICAgICAgICAgQ3VzdG9tQWNjZXNzb3IgLyBDdXN0b21WYWx1ZS4gUmF3IEMrKyBmdW5jdGlvbiBw
b2ludGVycyBhcmUgdXNlZCB0byBhdm9pZCBjcmVhdGluZworICAgICAgICAgICBDdXN0b21HZXR0
ZXJTZXR0ZXIgaW5zdGFuY2VzIGZvciBub24tcmVpZmllZCBzdGF0aWMgcHJvcGVydGllcy4KKyAg
ICAgICAgMi4gUmV3b3JrcyBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkgZm9y
IGN1c3RvbSBhY2Nlc3NvcnMsIG1ha2luZyBpdCBzaW1wbGVyLAorICAgICAgICAgICBtb3JlIHJv
YnVzdCwgYW5kIG5vIGxvbmdlciByZXF1aXJlZCB0byByZWlmeSBhbGwgc3RhdGljIHByb3BlcnRp
ZXMuCisgICAgICAgIDMuIEhvaXN0cyBHZXRWYWx1ZUZ1bmMgLyBQdXRWYWx1ZUZ1bmMgZGVjbGFy
YXRpb25zIHRvIEpTQyBuYW1lc3BhY2Ugc28gdGhleSBjYW4gYmUgdXNlZAorICAgICAgICAgICBp
biBoZWFkZXIgZmlsZXMuCisgICAgICAgIDQuIE1vdmVzIEN1c3RvbUFjY2Vzc29yJ3Mgd3JhcHBl
ciBtYXBzIHRvIEpTR2xvYmFsT2JqZWN0IChiZWNhdXNlIFZNIG91dGxpdmVzIGl0KSBhbmQKKyAg
ICAgICAgICAgc2ltcGxpZmllcyB0aGVpciBrZXlzIHRvIEMrKyBmdW5jdGlvbiBwb2ludGVycy4K
KyAgICAgICAgNS4gU3BsaXRzIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gaW50byBKU0N1
c3RvbUdldHRlckZ1bmN0aW9uIC8gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbgorICAgICAgICAgICBz
aW5jZSB0aGVpciBzaWduYXR1cmVzIGFuZCBbW0NhbGxdXSBsb2dpYyBhcmUgcXVpdGUgZGlmZmVy
ZW50LiBUaGlzIGlzIGEgbmljZSByZWZhY3RvcgorICAgICAgICAgICB0aGF0IGFsc28gc2ltcGxp
ZmllcyBnYXJiYWdlIGNvbGxlY3Rpb24gYW5kIHJlZHVjZXMgbWVtb3J5IG5lZWRlZCBmb3Igc2V0
dGVyIHdyYXBwZXJzLgorICAgICAgICA2LiBSZW1vdmVzIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0
Q3VzdG9tRGVzY3JpcHRvcigpLCBtYWtpbmcgUHJvcGVydHlEZXNjcmlwdG9yIHVuYXdhcmUgb2YK
KyAgICAgICAgICAgY3VzdG9tIGFjY2Vzc29ycy4gQWxzbywgZHJvcHMgQ3VzdG9tQWNjZXNzb3Ig
Y2hlY2sgZnJvbSB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKCkKKyAgICAgICAg
ICAgdGhhdCB3YXMgaW5jb3JyZWN0IChubyBlcnJvciBzaG91bGQgYmUgdGhyb3duIGlmIGFjY2Vz
c29ycyBhcmUgdW5jaGFuZ2VkKSB5ZXQgdW5yZWFjaGFibGUKKyAgICAgICAgICAgYmVjYXVzZSBQ
cm9wZXJ0eURlc2NyaXB0b3I6OmVxdWFsVG8oKSBpZ25vcmVzIEN1c3RvbUFjY2Vzc29yLgorCisg
ICAgICAgIFRoaXMgY2hhbmdlIGZpeGVzIGEpIGFjY2Vzc29yIGZ1bmN0aW9ucyBvZiB1bmZvcmdl
YWJsZSBwcm9wZXJ0aWVzIFsxXSB0byBiZSBwZXJzaXN0ZW50CisgICAgICAgIChpbiB0ZXJtcyBv
ZiByZWZlcmVudGlhbCBlcXVhbGl0eSkgYW5kIGIpIGNyb3NzLXJlYWxtIGFjY2Vzc29yIGZ1bmN0
aW9ucyB0byBiZSBvZiBjb3JyZWN0CisgICAgICAgIGdsb2JhbCBvYmplY3QgKGluc3RlYWQgb2Yg
bGV4aWNhbCkuCisKKyAgICAgICAgWzFdOiBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRs
LyNkZm4tdW5mb3JnZWFibGUtb24tYW4taW50ZXJmYWNlCisKKyAgICAgICAgKiBBUEkvSlNDYWxs
YmFja09iamVjdC5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogcnVudGltZS9KU0N1
c3RvbUdldHRlckZ1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb246OkpT
Q3VzdG9tR2V0dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0N1c3RvbUdldHRlckZ1bmN0
aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24u
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlv
bi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAoSlNDOjpKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6SlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpKU0dsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmN1c3RvbUdldHRlckZ1bmN0aW9uTWFwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmN1c3RvbVNldHRlckZ1bmN0aW9uTWFwKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmN1c3RvbUdldHRlckZ1bmN0aW9uU3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmN1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3Ry
dWN0dXJlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0Q3VzdG9tR2V0dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpn
ZXRDdXN0b21TZXR0ZXJGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjp2YWxpZGF0ZUFuZEFwcGx5UHJvcGVy
dHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6Z2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b25Gb3JHZXR0ZXJTZXR0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1By
b3BlcnR5U2xvdEZyb21UYWJsZSk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3I6OnNldEFjY2Vzc29yRGVz
Y3JpcHRvcik6CisgICAgICAgIChKU0M6OlByb3BlcnR5RGVzY3JpcHRvcjo6c2V0Q3VzdG9tRGVz
Y3JpcHRvcik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5U2xvdDo6Y3VzdG9tQWNjZXNzb3JHZXR0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6
aXNDdXN0b20gY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmN1c3RvbUdldHRl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6Y3VzdG9tU2V0dGVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRDdXN0b20pOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eVNsb3Q6OnNldENhY2hlYWJsZUN1c3RvbSk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5U2xvdDo6Z2V0VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6Omlz
Q3VzdG9tQWNjZXNzb3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNs
b3Q6OmN1c3RvbUdldHRlclNldHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBy
b3BlcnR5U2xvdDo6c2V0Q3VzdG9tR2V0dGVyU2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1B1dFByb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0wMi0x
MSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gV0VCS0lUX0VYRUNVVEFCTEUgY2FuIGluY29ycmVjdGx5IGxpbmsgZnJhbWV3b3JrCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzI3NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTkw
NCw2ICs5MDQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAg
ICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCiAgICAgcnVudGltZS9HZXRQdXRJbmZvLmgKKyAgICBydW50
aW1lL0dldHRlclNldHRlci5oCiAgICAgcnVudGltZS9HZXRWTS5oCiAgICAgcnVudGltZS9HbG9i
YWxFeGVjdXRhYmxlLmgKICAgICBydW50aW1lL0hhc2hNYXBJbXBsLmgKQEAgLTkzOSw2ICs5NDAs
OCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGlt
ZS9KU0Nhc3QuaAogICAgIHJ1bnRpbWUvSlNDZWxsLmgKICAgICBydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAorICAgIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oCisgICAgcnVudGltZS9K
U0N1c3RvbVNldHRlckZ1bmN0aW9uLmgKICAgICBydW50aW1lL0pTRGF0YVZpZXcuaAogICAgIHJ1
bnRpbWUvSlNEYXRlTWF0aC5oCiAgICAgcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCkBA
IC05OTgsNiArMTAwMSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKICAgICBydW50aW1lL05h
dGl2ZUV4ZWN1dGFibGUuaAogICAgIHJ1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaAorICAgIHJ1bnRp
bWUvTnVsbEdldHRlckZ1bmN0aW9uLmgKKyAgICBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5o
CiAgICAgcnVudGltZS9OdW1iZXJPYmplY3QuaAogICAgIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmgKICAgICBydW50aW1lL051bWVyaWNTdHJpbmdzLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODY1LDcgKzg2NSw4IEBAIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKIHJ1bnRpbWUvSlNDUHRyVGFnLmNwcAogcnVudGltZS9KU0NhbGxlZS5jcHAKIHJ1
bnRpbWUvSlNDZWxsLmNwcAotcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNw
cAorcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAorcnVudGltZS9KU0N1c3RvbVNl
dHRlckZ1bmN0aW9uLmNwcAogcnVudGltZS9KU0RhdGFWaWV3LmNwcAogcnVudGltZS9KU0RhdGFW
aWV3UHJvdG90eXBlLmNwcAogcnVudGltZS9KU0RhdGVNYXRoLmNwcCBAbm8tdW5pZnkgLy8gQ29u
ZmluZSBVX1NIT1dfQ1BMVVNQTFVTX0FQSSdzIGVmZmVjdCB0byB0aGlzIGZpbGUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24g
MjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNCw4ICsyMzQsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBS
YXdOYXRpdmVGdW5jdGlvbiBnZXRDYWxsRnVuY3Rpb24oKTsKICAgICBzdGF0aWMgUmF3TmF0aXZl
RnVuY3Rpb24gZ2V0Q29uc3RydWN0RnVuY3Rpb24oKTsKIAotICAgIHVzaW5nIEdldFZhbHVlRnVu
YyA9IEVuY29kZWRKU1ZhbHVlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Ci0KICAgICBzdGF0aWMgR2V0VmFs
dWVGdW5jIGdldFN0YXRpY0Z1bmN0aW9uR2V0dGVyKCk7CiAgICAgc3RhdGljIEdldFZhbHVlRnVu
YyBnZXRDYWxsYmFja0dldHRlcigpOwogIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgyLDcg
KzExODIsNiBAQAogCQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwRUMwRUMxMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUNBNjA2
MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5
IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oICovOyB9OwogCQk3MzExRkEzMjI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJZFZh
cmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcz
MTFGQTMxMjQwREIxRDMwMDNENDhEQiAvKiBEZWxldGVCeUlkVmFyaWFudC5oICovOyB9OwogCQk3
MzRCNjU1NTIzRjVDMTA0MDBBMDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MzRCNjU1NDIzRjRBMzMxMDBB
MDY5RDEgLyogRGVsZXRlUHJvcGVydHlTbG90LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzNBRDA2MjkyM0ZGNjYyNjAwRjUzNTkzIC8qIERlbGV0
ZUJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3M0FEMDYyODIzRkY2NjI2MDBGNTM1OTMgLyogRGVsZXRlQnlTdGF0dXMuaCAqLzsgfTsKQEAg
LTEyMzMsNiArMTIzMiwxMSBAQAogCQk3QzE4NEUyMzE3QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9t
aXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTg0RTIxMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFNEVF
NzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MDgwRUJCNzk2MzAwNTkzNEFBIC8q
IFN0cnVjdHVyZUNoYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODQwNDgwMTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFwcGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA4OTRE
NjBGQUZCQTJEMDAwMDE4NjUgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NDMyM0U3ODI1RDVFQzE5MDBGOTc3
NzYgLyogTnVsbEdldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTQ2RjUyMDFBMzJBNTlDMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1
bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODQzMjNFNzkyNUQ1RUMyODAwRjk3Nzc2IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU1MjVGQzQxQTZERDNC
MzAwN0I1NDk1IC8qIE51bGxTZXR0ZXJGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg0MzIzRTdBMjVENUVDM0IwMEY5Nzc3NiAvKiBH
ZXR0ZXJTZXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMzM3QkRFMEUxQUYwQjgwMDc2OTE4QSAvKiBHZXR0ZXJTZXR0ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NDMyM0U3RjI1RDVFQzZB
MDBGOTc3NzYgLyogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQzMjNFN0IyNUQ1RUM2OTAwRjk3Nzc2IC8qIEpT
Q3VzdG9tU2V0dGVyRnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NDMyM0U4MDI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0b21HZXR0
ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODQzMjNFN0MyNUQ1RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjAxNjFF
MzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxREYwRjNBODNDMTAwRjg0
NzEwIC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjAxNjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFj
cm9Bc3NlbWJsZXJYODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDE2MUU1
MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEw
IC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQwMzUsOCArNDAzOSw2IEBACiAJCTcwRUNBNjAwMUFGREJF
QTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwRUNBNjAxMUFGREJFQTIwMDQ0OTczOSAv
KiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MkFBRjdDQjFEMEQz
MThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2
MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MzExRkEzMTI0MERCMUQzMDAzRDQ4REIgLyogRGVsZXRlQnlJ
ZFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVsZXRlQnlJZFZhcmlhbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzMxMUZBMzMyNDBEQjI0OTAwM0Q0OERCIC8qIERlbGV0ZUJ5
SWRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5SWRWYXJpYW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzMxOTBEOTYyNDAwOTM0OTAwRjg5MUM5IC8q
IERlbGV0ZUJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlbGV0ZUJ5U3RhdHVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxMzIsNiArNDEzNCwxMCBAQAogCQk3
RDVGQjE5MjIwNzQ0QkYyMDA1RERGNjQgLyogSW50bFBsdXJhbFJ1bGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxQbHVyYWxSdWxlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlQ2hhaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0U0RUU3MEUwRUJCN0E1QjAwNTkzNEFBIC8qIFN0
cnVjdHVyZUNoYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cnVjdHVyZUNoYWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODQzMjNFN0Iy
NUQ1RUM2OTAwRjk3Nzc2IC8qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4NDMyM0U3QzI1RDVFQzY5MDBGOTc3NzYgLyogSlNDdXN0b21H
ZXR0ZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3Rv
bUdldHRlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0MzIzRTdE
MjVENUVDNkEwMEY5Nzc3NiAvKiBKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NDMyM0U3RTI1RDVFQzZBMDBGOTc3NzYgLyog
SlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODQ5MjVBOUEyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4
cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODQ5MjVBOUIyMkIzMENCQTAwRDFERkZGIC8qIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0OTI1QTlDMjJC
MzBDQzgwMEQxREZGRiAvKiBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ3OSw4ICs3NDg1LDEw
IEBACiAJCQkJODY1QTMwRjAxMzUwMDdFMTAwQ0RCNDlFIC8qIEpTQ0pTVmFsdWVJbmxpbmVzLmgg
Ki8sCiAJCQkJRkUxRTJDM0MyMjQwQzFFRjAwRjZCNzI5IC8qIEpTQ1B0clRhZy5jcHAgKi8sCiAJ
CQkJRkU3NDk3RTUyMDkwMDFCMDAwMDM1NjVCIC8qIEpTQ1B0clRhZy5oICovLAotCQkJCTcyQUFG
N0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAq
LywKLQkJCQk3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5oICovLAorCQkJCTg0MzIzRTdEMjVENUVDNkEwMEY5Nzc3NiAvKiBKU0N1c3RvbUdl
dHRlckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk4NDMyM0U3QzI1RDVFQzY5MDBGOTc3NzYgLyogSlND
dXN0b21HZXR0ZXJGdW5jdGlvbi5oICovLAorCQkJCTg0MzIzRTdFMjVENUVDNkEwMEY5Nzc3NiAv
KiBKU0N1c3RvbVNldHRlckZ1bmN0aW9uLmNwcCAqLywKKwkJCQk4NDMyM0U3QjI1RDVFQzY5MDBG
OTc3NzYgLyogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oICovLAogCQkJCTBGMkI2NkJEMTdCNkI1
QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCAqLywKIAkJCQkwRjJCNjZCRTE3QjZCNUFCMDBB
N0FFM0YgLyogSlNEYXRhVmlldy5oICovLAogCQkJCTBGMkI2NkJGMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0RhdGFWaWV3UHJvdG90eXBlLmNwcCAqLywKQEAgLTk4MDgsNiArOTgxNiw3IEBACiAJCQkJ
MEY5MzMyQTAxNENBN0RDRDAwODVGM0M2IC8qIEdldEJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MjBEOTlGMTIzODhDQzgxMDAwNTA5QTMgLyogR2V0QnlWYWxIaXN0b3J5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODQzMjNFN0EyNUQ1RUMzQjAwRjk3Nzc2IC8qIEdldHRlclNldHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0RTAzNTgxRTUzQkYyRjAwMjEzRjY0IC8qIEdldHRl
clNldHRlckFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMUQ2RDZGMjM2MjU4RkUw
MDdBNUMyNiAvKiBHZXRWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNUIxRjMzQTQ4OTAw
RjU5QjZDIC8qIEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDAzNSw3ICsxMDA0NCw4IEBACiAJCQkJMTQ4Q0QxRDgxMDhDRjkwMjAwODE2M0M2IC8q
IEpTQ29udGV4dFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNzQ5N0U2MjA5MDAx
QjEwMDAzNTY1QiAvKiBKU0NQdHJUYWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjAyOEI4MTc5
NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4NDMyM0U4MDI1RDVFQzZBMDBGOTc3NzYgLyogSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODQzMjNFN0YyNUQ1RUM2QTAw
Rjk3Nzc2IC8qIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkI2NkVDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjJCNjZFRTE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTk2QjczMUMxQkRBMDhERDAwMzMxQjg0IC8qIEpTRGF0YVZpZXdQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjY3LDYgKzEwMjc3LDggQEAKIAkJCQlG
RTE0MDkwNzIwNTZGM0ZGMDBDRkUzMTggLyogTmF0aXZlRnVuY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRkI5MjIwMTZEMDMzQjcwMDU1QTVEQiAvKiBOb2RlQ29uc3RydWN0b3JzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzQzRjBFMTZGNUNEMDBCMzQ0NjAgLyogTm9kZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg0MzIzRTc4MjVENUVDMTkwMEY5Nzc3NiAvKiBOdWxsR2V0dGVyRnVu
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTg0MzIzRTc5MjVENUVDMjgwMEY5Nzc3NiAvKiBO
dWxsU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQxMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
NDIwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NDMwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlck9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdl
dHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5m
byBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDdXN0b21HZXR0
ZXJGdW5jdGlvbikgfTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGN1c3RvbUdl
dHRlckZ1bmN0aW9uQ2FsbCk7CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjdXN0b21HZXR0
ZXJGdW5jdGlvbkNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTQ3VzdG9tR2V0dGVy
RnVuY3Rpb24qIGN1c3RvbUdldHRlckZ1bmN0aW9uID0ganNDYXN0PEpTQ3VzdG9tR2V0dGVyRnVu
Y3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKworICAgIEdldFZhbHVlRnVuYyBnZXR0ZXIgPSBjdXN0
b21HZXR0ZXJGdW5jdGlvbi0+Z2V0dGVyKCk7CisgICAgQVNTRVJUKGdldHRlcik7CisKKyAgICBp
ZiAoYXV0byBkb21BdHRyaWJ1dGUgPSBjdXN0b21HZXR0ZXJGdW5jdGlvbi0+ZG9tQXR0cmlidXRl
KCkpIHsKKyAgICAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHModm0sIGRvbUF0dHJpYnV0ZS0+
Y2xhc3NJbmZvKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRE9NQXR0cmlidXRlR2V0dGVy
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGRvbUF0dHJpYnV0ZS0+Y2xhc3NJbmZvLCBj
dXN0b21HZXR0ZXJGdW5jdGlvbi0+cHJvcGVydHlOYW1lKCkpOworICAgIH0KKworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgZ2V0dGVyKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNWYWx1ZSksIGN1c3RvbUdldHRlckZ1bmN0aW9uLT5wcm9wZXJ0eU5hbWUoKSkpOworfQor
CitKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpKU0N1c3RvbUdldHRlckZ1bmN0aW9uKFZNJiB2bSwg
TmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1l
LCBHZXRWYWx1ZUZ1bmMgZ2V0dGVyLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBk
b21BdHRyaWJ1dGUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSkKKyAgICAsIG1fcHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkKKyAgICAsIG1fZ2V0
dGVyKGdldHRlcikKKyAgICAsIG1fZG9tQXR0cmlidXRlKGRvbUF0dHJpYnV0ZSkKK3sKK30KKwor
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1lJiBw
cm9wZXJ0eU5hbWUsIEdldFZhbHVlRnVuYyBnZXR0ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFu
bm90YXRpb24+IGRvbUF0dHJpYnV0ZSkKK3sKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGN1c3RvbUdldHRlckZ1bmN0aW9uQ2FsbCwgY2FsbEhv
c3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgp
KSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmN1c3RvbUdldHRl
ckZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0N1c3RvbUdldHRlckZ1bmN0aW9uPih2
bS5oZWFwKSkgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgZ2V0dGVyLCBkb21BdHRyaWJ1dGUpOworCisg
ICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0
RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgorICAgIFN0cmluZyBuYW1lID0gbWFr
ZVN0cmluZygiZ2V0ICIsIFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7CisgICAg
ZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCAwLCBuYW1lKTsKKyAgICBy
ZXR1cm4gZnVuY3Rpb247Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24u
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3Rv
bUdldHRlckZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0N1c3RvbUdldHRlckZ1bmN0aW9uIGZpbmFsIDogcHVi
bGljIEpTRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLmN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2U8bW9kZT4o
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9u
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBKU0N1c3RvbUdldHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEdldFZhbHVlRnVuYywgT3B0aW9uYWw8RE9N
QXR0cmlidXRlQW5ub3RhdGlvbj4gPSBXVEY6Om51bGxvcHQpOworCisgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKKworICAgIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVydHlOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9wZXJ0eU5hbWU7IH0KKyAgICBHZXRWYWx1ZUZ1bmMgZ2V0dGVyKCkgY29u
c3QgeyByZXR1cm4gbV9nZXR0ZXI7IH07CisgICAgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3Rh
dGlvbj4gZG9tQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb21BdHRyaWJ1dGU7IH07CisK
K3ByaXZhdGU6CisgICAgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFi
bGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEdl
dFZhbHVlRnVuYywgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4pOworCisgICAgUHJv
cGVydHlOYW1lIG1fcHJvcGVydHlOYW1lOworICAgIEdldFZhbHVlRnVuYyBtX2dldHRlcjsKKyAg
ICBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiBtX2RvbUF0dHJpYnV0ZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCShub25leGlzdGVudCkKQEAgLTEsMTA1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgotCi0jaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVy
LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWNvbnN0IENsYXNzSW5mbyBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpzX2luZm8gPSB7
ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbikgfTsKLQotc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsKTsKLQot
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uQ2FsbCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKLXsK
LSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiog
Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgQ3VzdG9tR2V0dGVyU2V0dGVy
KiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+Y3VzdG9t
R2V0dGVyU2V0dGVyKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpOwotCi0gICAgaWYgKGN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLT5pc1NldHRlcigp
KSB7Ci0gICAgICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRlciA9IGN1
c3RvbUdldHRlclNldHRlci0+c2V0dGVyKCk7Ci0gICAgICAgIEFTU0VSVChzZXR0ZXIpOwotICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFs
dWU6OmVuY29kZSh0aGlzVmFsdWUpLCBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIH0KLQotICAgIGlmIChjdXN0b21HZXR0ZXJTZXR0ZXItPmluaGVyaXRzPERPTUF0dHJpYnV0
ZUdldHRlclNldHRlcj4odm0pKSB7Ci0gICAgICAgIGF1dG8gZG9tQXR0cmlidXRlID0ganNDYXN0
PERPTUF0dHJpYnV0ZUdldHRlclNldHRlcio+KGN1c3RvbUdldHRlclNldHRlciktPmRvbUF0dHJp
YnV0ZSgpOwotICAgICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyh2bSwgZG9tQXR0cmlidXRl
LmNsYXNzSW5mbykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTURPTUF0dHJpYnV0ZUdldHRl
clR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBkb21BdHRyaWJ1dGUuY2xhc3NJbmZvLCBj
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi0+cHJvcGVydHlOYW1lKCkpOwotICAgIH0KLQotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKShn
bG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBjdXN0b21HZXR0ZXJTZXR0
ZXJGdW5jdGlvbi0+cHJvcGVydHlOYW1lKCkpKTsKLX0KLQotSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbjo6SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBUeXBlIHR5cGUsIGNvbnN0IFByb3BlcnR5TmFtZSYgcHJvcGVy
dHlOYW1lKQotICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpCi0gICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fcHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSkKLXsKLX0KLQotSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ3VzdG9tR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIsIGNvbnN0IFR5cGUgdHlwZSwgY29u
c3QgUHJvcGVydHlOYW1lJiBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgQVNTRVJUKHR5cGUgPT0gVHlw
ZTo6R2V0dGVyID8gISFnZXR0ZXJTZXR0ZXItPmdldHRlcigpIDogISFnZXR0ZXJTZXR0ZXItPnNl
dHRlcigpKTsKLQotICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICh0eXBlID09IFR5cGU6OkdldHRl
cikgPyAiZ2V0ICIgOiAic2V0ICI7Ci0gICAgU3RyaW5nIG5hbWUgPSBtYWtlU3RyaW5nKHByZWZp
eCwgU3RyaW5nKHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKLQotICAgIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb25DYWxsLCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvciwgU3RyaW5nKHByb3Bl
cnR5TmFtZS5wdWJsaWNOYW1lKCkpKTsKLQotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xv
YmFsT2JqZWN0LT5jdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOwotICAgIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCB0eXBlLCBwcm9wZXJ0eU5hbWUpOwotCi0gICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcg
aW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxv
Y2F0aW9uLgotICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgZ2V0
dGVyU2V0dGVyLCBuYW1lKTsKLSAgICByZXR1cm4gZnVuY3Rpb247Ci19Ci0KLXZvaWQgSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQotewotICAgIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbio+KGNlbGwpOwot
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotCi0gICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9nZXR0ZXJTZXR0ZXIpOwotfQotCi12b2lkIEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIsIGNvbnN0IFN0
cmluZyYgbmFtZSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwg
aXNTZXR0ZXIoKSwgbmFtZSk7Ci0gICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKLSAg
ICBBU1NFUlQoZ2V0dGVyU2V0dGVyKTsKLSAgICBtX2dldHRlclNldHRlci5zZXQodm0sIHRoaXMs
IGdldHRlclNldHRlcik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uaAkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oCShub25leGlzdGVudCkKQEAg
LTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBDdXN0b21HZXR0ZXJT
ZXR0ZXI7Ci0KLWNsYXNzIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gZmluYWwgOiBwdWJs
aWMgSlNGdW5jdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7Ci0K
LSAgICAvLyBUaGUgVHlwZSBpcyBzZXQgdG8gdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdGhlIHJl
c3VsdGFudCBmdW5jdGlvbiB3aWxsIGhhdmUuCi0gICAgZW51bSBjbGFzcyBUeXBlIHsgR2V0dGVy
ID0gMCwgU2V0dGVyID0gMSB9OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+Ci0gICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCi0gICAgewotICAgICAgICByZXR1cm4gdm0uY3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb25TcGFjZTxtb2RlPigpOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQ3VzdG9tR2V0dGVyU2V0dGVyKiwgY29uc3QgVHlw
ZSwgY29uc3QgUHJvcGVydHlOYW1lJik7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0g
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2dldHRlclNldHRlci5nZXQoKTsgfQotICAgIGJvb2wgaXNTZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6U2V0dGVyOyB9Ci0gICAgY29uc3QgUHJvcGVydHlOYW1lJiBw
cm9wZXJ0eU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5TmFtZTsgfQotCi1wcml2YXRl
OgotICAgIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBUeXBlLCBjb25zdCBQcm9wZXJ0eU5hbWUm
KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIEN1c3Rv
bUdldHRlclNldHRlciosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLQotICAgIFdyaXRlQmFycmllcjxDdXN0b21H
ZXR0ZXJTZXR0ZXI+IG1fZ2V0dGVyU2V0dGVyOwotICAgIFR5cGUgbV90eXBlOwotICAgIFByb3Bl
cnR5TmFtZSBtX3Byb3BlcnR5TmFtZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21TZXR0
ZXJGdW5jdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNDdXN0b21TZXR0ZXJG
dW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24pIH07Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjdXN0b21TZXR0ZXJGdW5jdGlvbkNhbGwp
OworCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY3VzdG9tU2V0dGVyRnVuY3Rpb25DYWxsLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIFB1dFZhbHVlRnVuYyBzZXR0ZXIgPSBqc0Nhc3Q8SlNDdXN0b21TZXR0ZXJGdW5jdGlvbio+
KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnNldHRlcigpOworICAgIEFTU0VSVChzZXR0ZXIpOwor
ICAgIHNldHRlcihnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0N1c3RvbVNldHRl
ckZ1bmN0aW9uOjpKU0N1c3RvbVNldHRlckZ1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFB1dFZhbHVlRnVuYyBzZXR0ZXIpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxl
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKKyAgICAsIG1fc2V0dGVyKHNldHRlcikKK3sKK30K
KworSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgUHJvcGVydHlOYW1l
JiBwcm9wZXJ0eU5hbWUsIFB1dFZhbHVlRnVuYyBzZXR0ZXIpCit7CisgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihjdXN0b21TZXR0ZXJGdW5jdGlv
bkNhbGwsIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBTdHJpbmcocHJvcGVydHlOYW1l
LnB1YmxpY05hbWUoKSkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0
LT5jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZSgpOworICAgIEpTQ3VzdG9tU2V0dGVyRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNDdXN0b21TZXR0
ZXJGdW5jdGlvbj4odm0uaGVhcCkpIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24odm0sIGV4ZWN1dGFi
bGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBzZXR0ZXIpOworCisgICAgLy8gQ2FuJ3QgZG8g
dGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQg
ZG8gYSBHQyBhbGxvY2F0aW9uLgorICAgIFN0cmluZyBuYW1lID0gbWFrZVN0cmluZygic2V0ICIs
IFN0cmluZyhwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKSk7CisgICAgZnVuY3Rpb24tPmZpbmlz
aENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCAxLCBuYW1lKTsKKyAgICByZXR1cm4gZnVuY3Rpb247
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDdXN0b21TZXR0ZXJGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbVNldHRlckZ1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBKU0N1c3RvbVNldHRlckZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRnVuY3Rpb24g
eworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHZtLmN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBK
U0N1c3RvbVNldHRlckZ1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFByb3BlcnR5TmFtZSYsIFB1dFZhbHVlRnVuYyk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OworCisgICAgUHV0VmFsdWVGdW5jIHNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9
OworCitwcml2YXRlOgorICAgIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24oVk0mLCBOYXRpdmVFeGVj
dXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBQdXRWYWx1ZUZ1bmMpOworCisg
ICAgUHV0VmFsdWVGdW5jIG1fc2V0dGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksOCBAQAogI2luY2x1
ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKLSNpbmNsdWRlICJKU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0RhdGFW
aWV3LmgiCiAjaW5jbHVkZSAiSlNEYXRhVmlld1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTRG9s
bGFyVk0uaCIKQEAgLTUwNCw2ICs1MDUsOCBAQCBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmpl
Y3QoVk0mIHZtLCBTCiAgICAgLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldChJc1dhdGNo
ZWQpCiAgICAgLCBtX3J1bnRpbWVGbGFncygpCiAgICAgLCBtX3N0YWNrVHJhY2VMaW1pdChPcHRp
b25zOjpkZWZhdWx0RXJyb3JTdGFja1RyYWNlTGltaXQoKSkKKyAgICAsIG1fY3VzdG9tR2V0dGVy
RnVuY3Rpb25NYXAodm0pCisgICAgLCBtX2N1c3RvbVNldHRlckZ1bmN0aW9uTWFwKHZtKQogICAg
ICwgbV9nbG9iYWxPYmplY3RNZXRob2RUYWJsZShnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA/IGds
b2JhbE9iamVjdE1ldGhvZFRhYmxlIDogJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCiB7CiB9
CkBAIC02MTUsOSArNjE4LDEzIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgIGluaXRGdW5jdGlvblN0cnVjdHVyZXMobV9idWlsdGluRnVuY3Rpb25zKTsKICAgICBpbml0
RnVuY3Rpb25TdHJ1Y3R1cmVzKG1fb3JkaW5hcnlGdW5jdGlvbnMpOwogCi0gICAgbV9jdXN0b21H
ZXR0ZXJTZXR0ZXJGdW5jdGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgbV9jdXN0b21HZXR0
ZXJGdW5jdGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5vd25lciwg
aW5pdC5vd25lci0+bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworICAgICAgICAgICAgaW5p
dC5zZXQoSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGlu
aXQub3duZXIsIGluaXQub3duZXItPm1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICAg
ICAgfSk7CisgICAgbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCisg
ICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5p
dC52bSwgaW5pdC5vd25lciwgaW5pdC5vd25lci0+bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkp
OwogICAgICAgICB9KTsKICAgICBtX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUuaW5pdExhdGVyKAog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewpAQCAtMjAw
MSw3ICsyMDA4LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAog
ICAgIHZpc2l0RnVuY3Rpb25TdHJ1Y3R1cmVzKHRoaXNPYmplY3QtPm1fYnVpbHRpbkZ1bmN0aW9u
cyk7CiAgICAgdmlzaXRGdW5jdGlvblN0cnVjdHVyZXModGhpc09iamVjdC0+bV9vcmRpbmFyeUZ1
bmN0aW9ucyk7CiAKLSAgICB0aGlzT2JqZWN0LT5tX2N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fY3VzdG9tR2V0dGVy
RnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9jdXN0
b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0
LT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9uYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3
Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgY2xhc3MgSW50bENvbGxhdG9yOwogY2xh
c3MgSlNBcnJheUJ1ZmZlcjsKIGNsYXNzIEpTQXJyYXlCdWZmZXJQcm90b3R5cGU7CiBjbGFzcyBK
U0NhbGxlZTsKK2NsYXNzIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb247CitjbGFzcyBKU0N1c3RvbVNl
dHRlckZ1bmN0aW9uOwogY2xhc3MgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOwogY2xhc3MgSlNJ
bnRlcm5hbFByb21pc2U7CiBjbGFzcyBKU01vZHVsZUxvYWRlcjsKQEAgLTM5Niw3ICszOTgsOCBA
QCBwdWJsaWM6CiAgICAgRnVuY3Rpb25TdHJ1Y3R1cmVzIG1fb3JkaW5hcnlGdW5jdGlvbnM7CiAK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0
aW9uU3RydWN0dXJlOwotICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJl
PiBtX2N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2N1c3RvbUdldHRlckZ1bmN0aW9uU3RydWN0
dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2N1c3Rv
bVNldHRlckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX25hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFByb3BlcnR5
T2Zmc2V0IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fcmVnRXhwU3RydWN0dXJlOwpAQCAtNTQwLDYgKzU0Myw5IEBAIHB1YmxpYzoKICAgICBib29s
IGlzTWFwUHJvdG90eXBlU2V0RmFzdEFuZE5vbk9ic2VydmFibGUoKTsKICAgICBib29sIGlzU2V0
UHJvdG90eXBlQWRkRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKIAorICAgIFdlYWtHQ01hcDxHZXRW
YWx1ZUZ1bmMsIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24+JiBjdXN0b21HZXR0ZXJGdW5jdGlvbk1h
cCgpIHsgcmV0dXJuIG1fY3VzdG9tR2V0dGVyRnVuY3Rpb25NYXA7IH0KKyAgICBXZWFrR0NNYXA8
UHV0VmFsdWVGdW5jLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uPiYgY3VzdG9tU2V0dGVyRnVuY3Rp
b25NYXAoKSB7IHJldHVybiBtX2N1c3RvbVNldHRlckZ1bmN0aW9uTWFwOyB9CisKICNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICB1c2luZyBSZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50
U2V0cyA9IEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmPFdhdGNocG9pbnRT
ZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD47CiAgICAgUmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0
Y2hwb2ludFNldHMgbV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0czsKQEAg
LTU1NCw2ICs1NjAsOCBAQCBwdWJsaWM6CiAgICAgUnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdz
OwogICAgIENvbnNvbGVDbGllbnQqIG1fY29uc29sZUNsaWVudCB7IG51bGxwdHIgfTsKICAgICBP
cHRpb25hbDx1bnNpZ25lZD4gbV9zdGFja1RyYWNlTGltaXQ7CisgICAgV2Vha0dDTWFwPEdldFZh
bHVlRnVuYywgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbj4gbV9jdXN0b21HZXR0ZXJGdW5jdGlvbk1h
cDsKKyAgICBXZWFrR0NNYXA8UHV0VmFsdWVGdW5jLCBKU0N1c3RvbVNldHRlckZ1bmN0aW9uPiBt
X2N1c3RvbVNldHRlckZ1bmN0aW9uTWFwOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBjb25z
dCBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3RBdERlYnVnZ2VyRW50cnkgeyBudWxscHRy
IH07CkBAIC03OTksNyArODA3LDggQEAgcHVibGljOgogICAgIH0KIAogICAgIFN0cnVjdHVyZSog
Ym91bmRGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGdW5jdGlvblN0
cnVjdHVyZS5nZXQodGhpcyk7IH0KLSAgICBTdHJ1Y3R1cmUqIGN1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGN1c3RvbUdldHRlckZ1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21HZXR0ZXJGdW5jdGlvblN0
cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGN1c3RvbVNldHRlckZ1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21TZXR0ZXJGdW5jdGlvblN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIG5hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7
IH0KICAgICBQcm9wZXJ0eU9mZnNldCBmdW5jdGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQogICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShy
ZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDggQEAKICNpbmNsdWRlICJIZWFwQW5h
bHl6ZXIuaCIKICNpbmNsdWRlICJJbmRleGluZ0hlYWRlcklubGluZXMuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0N1c3RvbVNl
dHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW1t
dXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBAIC0zNTI1LDE2ICszNTI2
LDI0IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6OmFsbG9jYXRlTW9yZU91dE9mTGkKICAgICByZXR1
cm4gQnV0dGVyZmx5OjpjcmVhdGVPckdyb3dQcm9wZXJ0eVN0b3JhZ2UoYnV0dGVyZmx5KCksIHZt
LCB0aGlzLCBzdHJ1Y3R1cmUodm0pLCBvbGRTaXplLCBuZXdTaXplKTsKIH0KIAotc3RhdGljIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24qIGdldEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
Rm9yR2V0dGVyU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEN1c3RvbUdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyLCBKU0N1c3Rv
bUdldHRlclNldHRlckZ1bmN0aW9uOjpUeXBlIHR5cGUpCitzdGF0aWMgSlNDdXN0b21HZXR0ZXJG
dW5jdGlvbiogZ2V0Q3VzdG9tR2V0dGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgR2V0VmFsdWVGdW5jIGdldFZhbHVlRnVu
YywgT3B0aW9uYWw8RE9NQXR0cmlidXRlQW5ub3RhdGlvbj4gZG9tQXR0cmlidXRlKQogewotICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9w
YWlyKGdldHRlclNldHRlciwgKGludCl0eXBlKTsKLSAgICBKU0N1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uKiBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiA9IHZtLmN1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uTWFwLmdldChrZXkpOwotICAgIGlmICghY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b24pIHsKLSAgICAgICAgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24gPSBKU0N1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgZ2V0dGVyU2V0dGVyLCB0
eXBlLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKLSAgICAgICAgdm0uY3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb25NYXAuc2V0KGtleSwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24pOwor
ICAgIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGN1c3RvbUdldHRlckZ1bmN0aW9uID0gZ2xvYmFs
T2JqZWN0LT5jdXN0b21HZXR0ZXJGdW5jdGlvbk1hcCgpLmdldChnZXRWYWx1ZUZ1bmMpOworICAg
IGlmICghY3VzdG9tR2V0dGVyRnVuY3Rpb24pIHsKKyAgICAgICAgY3VzdG9tR2V0dGVyRnVuY3Rp
b24gPSBKU0N1c3RvbUdldHRlckZ1bmN0aW9uOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZ2V0VmFsdWVGdW5jLCBkb21BdHRyaWJ1dGUpOwor
ICAgICAgICBnbG9iYWxPYmplY3QtPmN1c3RvbUdldHRlckZ1bmN0aW9uTWFwKCkuc2V0KGdldFZh
bHVlRnVuYywgY3VzdG9tR2V0dGVyRnVuY3Rpb24pOwogICAgIH0KLSAgICByZXR1cm4gY3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb247CisgICAgcmV0dXJuIGN1c3RvbUdldHRlckZ1bmN0aW9uOwor
fQorCitzdGF0aWMgSlNDdXN0b21TZXR0ZXJGdW5jdGlvbiogZ2V0Q3VzdG9tU2V0dGVyRnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHV0VmFsdWVGdW5jIHB1dFZhbHVlRnVuYykKK3sKKyAgICBKU0N1c3RvbVNldHRlckZ1bmN0
aW9uKiBjdXN0b21TZXR0ZXJGdW5jdGlvbiA9IGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVu
Y3Rpb25NYXAoKS5nZXQocHV0VmFsdWVGdW5jKTsKKyAgICBpZiAoIWN1c3RvbVNldHRlckZ1bmN0
aW9uKSB7CisgICAgICAgIGN1c3RvbVNldHRlckZ1bmN0aW9uID0gSlNDdXN0b21TZXR0ZXJGdW5j
dGlvbjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHB1dFZhbHVlRnVuYyk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Y3VzdG9tU2V0dGVyRnVu
Y3Rpb25NYXAoKS5zZXQocHV0VmFsdWVGdW5jLCBjdXN0b21TZXR0ZXJGdW5jdGlvbik7CisgICAg
fQorICAgIHJldHVybiBjdXN0b21TZXR0ZXJGdW5jdGlvbjsKIH0KIAogYm9vbCBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
QEAgLTM1NTEsMzEgKzM1NjAsMTMgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKAogICAgIGlmIChzbG90LmlzQWNjZXNzb3IoKSkKICAgICAgICAgZGVzY3JpcHRvci5z
ZXRBY2Nlc3NvckRlc2NyaXB0b3Ioc2xvdC5nZXR0ZXJTZXR0ZXIoKSwgc2xvdC5hdHRyaWJ1dGVz
KCkpOwogICAgIGVsc2UgaWYgKHNsb3QuYXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yKSB7Ci0gICAgICAgIEN1c3RvbUdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyOwotICAgICAgICBpZiAoc2xvdC5pc0N1c3RvbUFjY2Vzc29yKCkpCi0gICAgICAgICAgICBn
ZXR0ZXJTZXR0ZXIgPSBzbG90LmN1c3RvbUdldHRlclNldHRlcigpOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkpOwotICAgICAgICAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBzbG90LnNsb3RCYXNlKCk7Ci0KLSAgICAgICAgICAgIEpTVmFsdWUg
bWF5YmVHZXR0ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3Qodm0sIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgICAgICBpZiAoIW1heWJlR2V0dGVyU2V0dGVyKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpc09iamVjdC0+cmVpZnlBbGxTdGF0aWNQcm9wZXJ0aWVzKGdsb2JhbE9iamVjdCk7Ci0g
ICAgICAgICAgICAgICAgbWF5YmVHZXR0ZXJTZXR0ZXIgPSB0aGlzT2JqZWN0LT5nZXREaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEFTU0VSVCht
YXliZUdldHRlclNldHRlcik7Ci0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBqc0R5bmFtaWND
YXN0PEN1c3RvbUdldHRlclNldHRlcio+KHZtLCBtYXliZUdldHRlclNldHRlcik7Ci0gICAgICAg
IH0KLSAgICAgICAgQVNTRVJUKGdldHRlclNldHRlcik7Ci0gICAgICAgIGlmICghZ2V0dGVyU2V0
dGVyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGRlc2NyaXB0b3Iuc2V0
Q3VzdG9tRGVzY3JpcHRvcihzbG90LmF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGlmIChnZXR0ZXJT
ZXR0ZXItPmdldHRlcigpKQotICAgICAgICAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZ2V0Q3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIGdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlw
ZTo6R2V0dGVyKSk7Ci0gICAgICAgIGlmIChnZXR0ZXJTZXR0ZXItPnNldHRlcigpKQotICAgICAg
ICAgICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25G
b3JHZXR0ZXJTZXR0ZXIoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwg
SlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVyKSk7CisgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0Uoc2xvdC5pc0N1c3RvbSgpLCAiUHJvcGVydHlTbG90OjpUeXBlQ3Vz
dG9tIGlzIHJlcXVpcmVkIGluIGNhc2Ugb2YgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vz
c29yIik7CisgICAgICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNzb3JEZXNjcmlwdG9yKChzbG90LmF0
dHJpYnV0ZXMoKSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvcikgJiB+UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIHNsb3RCYXNl
R2xvYmFsT2JqZWN0ID0gc2xvdC5zbG90QmFzZSgpLT5nbG9iYWxPYmplY3Qodm0pOworICAgICAg
ICBpZiAoc2xvdC5jdXN0b21HZXR0ZXIoKSkKKyAgICAgICAgICAgIGRlc2NyaXB0b3Iuc2V0R2V0
dGVyKGdldEN1c3RvbUdldHRlckZ1bmN0aW9uKHNsb3RCYXNlR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHNsb3QuY3VzdG9tR2V0dGVyKCksIHNsb3QuZG9tQXR0cmlidXRlKCkpKTsKKyAgICAg
ICAgaWYgKHNsb3QuY3VzdG9tU2V0dGVyKCkpCisgICAgICAgICAgICBkZXNjcmlwdG9yLnNldFNl
dHRlcihnZXRDdXN0b21TZXR0ZXJGdW5jdGlvbihzbG90QmFzZUdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90LmN1c3RvbVNldHRlcigpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CkBAIC0zNjY5LDggKzM2
NjAsNiBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2Vw
dGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFi
bGUgcHJvcGVydHkuIl9zKTsKICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNl
bnQoKSAmJiBkZXNjcmlwdG9yLmdldHRlcigpICE9IGN1cnJlbnQuZ2V0dGVyKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2Vw
dGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFi
bGUgcHJvcGVydHkuIl9zKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXMoKSAm
IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvcikKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRocm93RXhjZXB0aW9uLCBVbmNvbmZp
Z3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpOwogCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDE1LDE2ICsxNDE1LDE2
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEN1c3RvbUcKICAgICBpZiAoY3Vz
dG9tR2V0dGVyU2V0dGVyLT5pbmhlcml0czxET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI+KHZtKSkg
ewogICAgICAgICBhdXRvKiBkb21BdHRyaWJ1dGUgPSBqc0Nhc3Q8RE9NQXR0cmlidXRlR2V0dGVy
U2V0dGVyKj4oY3VzdG9tR2V0dGVyU2V0dGVyKTsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNV
bmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMs
IGF0dHJpYnV0ZXMsIGRvbUF0dHJpYnV0ZS0+Z2V0dGVyKCksIGRvbUF0dHJpYnV0ZS0+ZG9tQXR0
cmlidXRlKCkpOworICAgICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgYXR0cmlidXRlcywg
ZG9tQXR0cmlidXRlLT5nZXR0ZXIoKSwgZG9tQXR0cmlidXRlLT5zZXR0ZXIoKSwgZG9tQXR0cmli
dXRlLT5kb21BdHRyaWJ1dGUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNsb3Quc2V0
Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGRvbUF0dHJpYnV0ZS0+Z2V0dGVyKCks
IGRvbUF0dHJpYnV0ZS0+ZG9tQXR0cmlidXRlKCkpOworICAgICAgICAgICAgc2xvdC5zZXRDYWNo
ZWFibGVDdXN0b20odGhpcywgYXR0cmlidXRlcywgZG9tQXR0cmlidXRlLT5nZXR0ZXIoKSwgZG9t
QXR0cmlidXRlLT5zZXR0ZXIoKSwgZG9tQXR0cmlidXRlLT5kb21BdHRyaWJ1dGUoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSgpKQotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBjdXN0
b21HZXR0ZXJTZXR0ZXItPmdldHRlcigpKTsKKyAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywg
YXR0cmlidXRlcywgY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKSwgY3VzdG9tR2V0dGVyU2V0
dGVyLT5zZXR0ZXIoKSk7CiAgICAgZWxzZQotICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3Rv
bSh0aGlzLCBhdHRyaWJ1dGVzLCBjdXN0b21HZXR0ZXJTZXR0ZXItPmdldHRlcigpKTsKKyAgICAg
ICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpcywgYXR0cmlidXRlcywgY3VzdG9tR2V0dGVy
U2V0dGVyLT5nZXR0ZXIoKSwgY3VzdG9tR2V0dGVyU2V0dGVyLT5zZXR0ZXIoKSk7CiB9CiAKIC8v
IEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UsIGVzcGVj
aWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmgJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTcgKzIzOCwxOCBAQCBpbmxp
bmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3RGcm9tVGFiCiAgICAgfQogCiAgICAgaWYgKGVu
dHJ5LT5hdHRyaWJ1dGVzKCkgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NSklUQXR0cmlidXRlKSB7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZW50cnktPmF0dHJpYnV0ZXMoKSAmIFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSwgIkRPTUpJVEF0dHJpYnV0ZSBzdXBwb3J0cyByZWFkb25s
eSBhdHRyaWJ1dGVzIGN1cnJlbnRseS4iKTsKICAgICAgICAgY29uc3QgRE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqIGRvbUpJVCA9IGVudHJ5LT5kb21KSVQoKTsKLSAgICAgICAgc2xvdC5zZXRDYWNoZWFi
bGVDdXN0b20odGhpc09iamVjdCwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShlbnRyeS0+YXR0cmli
dXRlcygpKSwgZG9tSklULT5nZXR0ZXIoKSwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7IGNsYXNz
SW5mbywgZG9tSklUIH0pOworICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2Jq
ZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGVudHJ5LT5hdHRyaWJ1dGVzKCkpLCBkb21KSVQt
PmdldHRlcigpLCBudWxscHRyLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgY2xhc3NJbmZvLCBk
b21KSVQgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChlbnRyeS0+
YXR0cmlidXRlcygpICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSkgewotICAgICAg
ICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKGVudHJ5LT5hdHRyaWJ1dGVzKCkpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSwgRE9NQXR0
cmlidXRlQW5ub3RhdGlvbiB7IGNsYXNzSW5mbywgbnVsbHB0ciB9KTsKKyAgICAgICAgc2xvdC5z
ZXRDYWNoZWFibGVDdXN0b20odGhpc09iamVjdCwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShlbnRy
eS0+YXR0cmlidXRlcygpKSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCksIGVudHJ5LT5wcm9wZXJ0
eVB1dHRlcigpLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIHsgY2xhc3NJbmZvLCBudWxscHRyIH0p
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzbG90LnNldENhY2hlYWJsZUN1
c3RvbSh0aGlzT2JqZWN0LCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGVudHJ5LT5hdHRyaWJ1dGVz
KCkpLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSk7CisgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0
b20odGhpc09iamVjdCwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShlbnRyeS0+YXR0cmlidXRlcygp
KSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCksIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlEZXNjcmlwdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCShyZXZpc2lvbiAyNzI3NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjUsMTUgKzEyNSwxNiBAQCB2b2lkIFByb3BlcnR5RGVzY3JpcHRvcjo6
c2V0RGVzY3JpcHRvcihKCiAgICAgfQogfQogCi12b2lkIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0
Q3VzdG9tRGVzY3JpcHRvcih1bnNpZ25lZCBhdHRyaWJ1dGVzKQordm9pZCBQcm9wZXJ0eURlc2Ny
aXB0b3I6OnNldEFjY2Vzc29yRGVzY3JpcHRvcih1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewotICAg
IEFTU0VSVCghKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUpKTsK
LSAgICBtX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vz
c29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yOwotICAgIG1fYXR0cmlidXRl
cyAmPSB+UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5OworICAgIEFTU0VSVChhdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKKyAgICBBU1NFUlQoIShhdHRyaWJ1dGVz
ICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkpOworICAgIGF0dHJp
YnV0ZXMgJj0gflByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seTsgLy8gRklYTUU6IHdlIHNob3Vs
ZCBiZSBhYmxlIHRvIEFTU0VSVCB0aGlzIQorCisgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRl
czsKKyAgICBtX2dldHRlciA9IGpzVW5kZWZpbmVkKCk7CisgICAgbV9zZXR0ZXIgPSBqc1VuZGVm
aW5lZCgpOwogICAgIG1fc2VlbkF0dHJpYnV0ZXMgPSBFbnVtZXJhYmxlUHJlc2VudCB8IENvbmZp
Z3VyYWJsZVByZXNlbnQ7Ci0gICAgc2V0R2V0dGVyKGpzVW5kZWZpbmVkKCkpOwotICAgIHNldFNl
dHRlcihqc1VuZGVmaW5lZCgpKTsKLSAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogfQogCiB2b2lk
IFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0QWNjZXNzb3JEZXNjcmlwdG9yKEdldHRlclNldHRlciog
YWNjZXNzb3IsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAkocmV2aXNpb24gMjcyNzQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBz
ZXR0ZXJPYmplY3QoKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFVuZGVm
aW5lZCgpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RGVzY3JpcHRvcihKU1ZhbHVl
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEN1
c3RvbURlc2NyaXB0b3IodW5zaWduZWQgYXR0cmlidXRlcyk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRBY2Nlc3NvckRlc2NyaXB0b3IodW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRBY2Nlc3NvckRlc2NyaXB0b3IoR2V0dGVyU2V0dGVy
KiBhY2Nlc3NvciwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRXcml0YWJsZShib29sKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEVu
dW1lcmFibGUoYm9vbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5U2xvdC5jcHAJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDIxICs0
Niw2IEBAIEpTVmFsdWUgUHJvcGVydHlTbG90OjpjdXN0b21HZXR0ZXIoSlNHbG8KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS5jdXN0b20uZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKSwgcHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTVmFsdWUg
UHJvcGVydHlTbG90OjpjdXN0b21BY2Nlc3NvckdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAotewotICAgIGlmICghbV9k
YXRhLmN1c3RvbUFjY2Vzc29yLmdldHRlclNldHRlci0+Z2V0dGVyKCkpCi0gICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotCi0gICAgaWYgKGF1dG8gZG9tQXR0cmlidXRlID0gdGhpcy0+ZG9t
QXR0cmlidXRlKCkpIHsKLSAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAg
ICAgICBpZiAoIW1fdGhpc1ZhbHVlLmluaGVyaXRzKHZtLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5m
bykpIHsKLSAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICAgICAgICAgIHJldHVybiB0aHJvd0RPTUF0dHJpYnV0ZUdldHRlclR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBkb21BdHRyaWJ1dGUtPmNsYXNzSW5mbywgcHJvcGVydHlOYW1lKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS5jdXN0
b21BY2Nlc3Nvci5nZXR0ZXJTZXR0ZXItPmdldHRlcigpKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6
ZW5jb2RlKG1fdGhpc1ZhbHVlKSwgcHJvcGVydHlOYW1lKSk7Ci19Ci0KIEpTVmFsdWUgUHJvcGVy
dHlTbG90OjpnZXRQdXJlUmVzdWx0KCkgY29uc3QKIHsKICAgICBKU1ZhbHVlIHJlc3VsdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZp
c2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaAkod29ya2luZyBjb3B5KQpAQCAtODQsMTEgKzg0LDE3IEBAIGlubGluZSB1bnNpZ25lZCBh
dHRyaWJ1dGVzRm9yU3RydWN0dXJlKHUKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4o
YXR0cmlidXRlcyk7CiB9CiAKK3VzaW5nIEdldFZhbHVlRnVuYyA9IEVuY29kZWRKU1ZhbHVlKEpJ
VF9PUEVSQVRJT05fQVRUUklCVVRFUyopKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwordXNpbmcgR2V0VmFsdWVGdW5jV2l0aFB0ciA9IEVu
Y29kZWRKU1ZhbHVlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUsIHZvaWQqKTsKKwordXNpbmcg
UHV0VmFsdWVGdW5jID0gYm9vbCAoKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBi
YXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSk7Cit1c2luZyBQdXRWYWx1ZUZ1bmNXaXRo
UHRyID0gYm9vbCAoKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgdm9pZCopOworCiBjbGFzcyBQcm9wZXJ0eVNsb3Qgewog
CiAgICAgLy8gV2UgcmVseSBvbiBQcm9wZXJ0eVNsb3QgYmVpbmcgc3RhY2sgYWxsb2NhdGVkIHdo
ZW4gdXNlZC4gVGhpcyBpcyBuZWVkZWQKICAgICAvLyBiZWNhdXNlIHdlIHJlbHkgb24gc29tZSBv
ZiBpdHMgZmllbGRzIGJlaW5nIGEgR0Mgcm9vdC4gRm9yIGV4YW1wbGUsIGl0Ci0gICAgLy8gbWF5
IGJlIHRoZSBvbmx5IHRoaW5nIHRoYXQgcG9pbnRzIHRvIHRoZSBDdXN0b21HZXR0ZXJTZXR0ZXIg
cHJvcGVydHkgaXQgaGFzLgorICAgIC8vIG1heSBiZSB0aGUgb25seSB0aGluZyB0aGF0IHBvaW50
cyB0byB0aGUgR2V0dGVyU2V0dGVyIHByb3BlcnR5IGl0IGhhcy4KICAgICBXVEZfRk9SQklEX0hF
QVBfQUxMT0NBVElPTjsKIAogICAgIGVudW0gUHJvcGVydHlUeXBlIDogdWludDhfdCB7CkBAIC05
Niw3ICsxMDIsNiBAQCBjbGFzcyBQcm9wZXJ0eVNsb3QgewogICAgICAgICBUeXBlVmFsdWUsCiAg
ICAgICAgIFR5cGVHZXR0ZXIsCiAgICAgICAgIFR5cGVDdXN0b20sCi0gICAgICAgIFR5cGVDdXN0
b21BY2Nlc3NvciwKICAgICB9OwogCiBwdWJsaWM6CkBAIC0xMjEsOCArMTI2LDggQEAgcHVibGlj
OgogICAgICAgICAgICAgZGlzYWxsb3dWTUVudHJ5LmVtcGxhY2UoKnZtRm9ySW5xdWlyeSk7CiAg
ICAgfQogCi0gICAgdXNpbmcgR2V0VmFsdWVGdW5jID0gRW5jb2RlZEpTVmFsdWUoSklUX09QRVJB
VElPTl9BVFRSSUJVVEVTKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSk7Ci0gICAgdXNpbmcgR2V0VmFsdWVGdW5jV2l0aFB0ciA9IEVuY29k
ZWRKU1ZhbHVlKEpJVF9PUEVSQVRJT05fQVRUUklCVVRFUyopKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUsIHZvaWQqKTsKKyAgICB1c2luZyBH
ZXRWYWx1ZUZ1bmMgPSBKU0M6OkdldFZhbHVlRnVuYzsKKyAgICB1c2luZyBHZXRWYWx1ZUZ1bmNX
aXRoUHRyID0gSlNDOjpHZXRWYWx1ZUZ1bmNXaXRoUHRyOwogCiAgICAgSlNWYWx1ZSBnZXRWYWx1
ZShKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgSlNWYWx1ZSBnZXRW
YWx1ZShKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90IHByb3BlcnR5TmFtZSkgY29uc3Q7CkBAIC0x
MzMsNyArMTM4LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHlUeXBlID09IFR5cGVWYWx1ZTsgfQogICAgIGJvb2wgaXNBY2Nlc3NvcigpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUeXBlID09IFR5cGVHZXR0ZXI7IH0KICAgICBib29sIGlz
Q3VzdG9tKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUN1c3RvbTsgfQot
ICAgIGJvb2wgaXNDdXN0b21BY2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUeXBl
ID09IFR5cGVDdXN0b21BY2Nlc3NvcjsgfQogICAgIGJvb2wgaXNDYWNoZWFibGVWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgaXNWYWx1ZSgpOyB9CiAgICAgYm9vbCBpc0Nh
Y2hlYWJsZUdldHRlcigpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgaXNBY2Nlc3Nv
cigpOyB9CiAgICAgYm9vbCBpc0NhY2hlYWJsZUN1c3RvbSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2Fj
aGVhYmxlKCkgJiYgaXNDdXN0b20oKTsgfQpAQCAtMTY0LDE0ICsxNjgsMTQgQEAgcHVibGljOgog
CiAgICAgR2V0VmFsdWVGdW5jIGN1c3RvbUdldHRlcigpIGNvbnN0CiAgICAgewotICAgICAgICBB
U1NFUlQoaXNDYWNoZWFibGVDdXN0b20oKSk7CisgICAgICAgIEFTU0VSVChpc0N1c3RvbSgpKTsK
ICAgICAgICAgcmV0dXJuIG1fZGF0YS5jdXN0b20uZ2V0VmFsdWU7CiAgICAgfQogCi0gICAgQ3Vz
dG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIoKSBjb25zdAorICAgIFB1dFZhbHVl
RnVuYyBjdXN0b21TZXR0ZXIoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzQ3VzdG9t
QWNjZXNzb3IoKSk7Ci0gICAgICAgIHJldHVybiBtX2RhdGEuY3VzdG9tQWNjZXNzb3IuZ2V0dGVy
U2V0dGVyOworICAgICAgICBBU1NFUlQoaXNDdXN0b20oKSk7CisgICAgICAgIHJldHVybiBtX2Rh
dGEuY3VzdG9tLnB1dFZhbHVlOwogICAgIH0KIAogICAgIEpTT2JqZWN0KiBzbG90QmFzZSgpIGNv
bnN0CkBAIC0yNTUsMTMgKzI1OSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYWRkaXRpb25hbERh
dGEubW9kdWxlTmFtZXNwYWNlU2xvdC5zY29wZU9mZnNldCA9IHNjb3BlT2Zmc2V0Lm9mZnNldCgp
OwogICAgIH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgR2V0VmFsdWVGdW5jIGdldFZhbHVlKQorICAgIHZvaWQgc2V0Q3VzdG9t
KEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0cmlidXRlcywgR2V0VmFsdWVGdW5jIGdl
dFZhbHVlLCBQdXRWYWx1ZUZ1bmMgcHV0VmFsdWUgPSBudWxscHRyKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGF0dHJpYnV0ZXMgPT0gYXR0cmlidXRlc0ZvclN0cnVjdHVyZShhdHRyaWJ1dGVzKSk7
CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoZ2V0VmFsdWUpOwogICAgICAgICBhc3NlcnRJc0NG
dW5jdGlvblB0cihnZXRWYWx1ZSk7CiAgICAgICAgIG1fZGF0YS5jdXN0b20uZ2V0VmFsdWUgPSBn
ZXRWYWx1ZTsKKyAgICAgICAgYXNzZXJ0SXNOdWxsT3JDRnVuY3Rpb25QdHIocHV0VmFsdWUpOwor
ICAgICAgICBtX2RhdGEuY3VzdG9tLnB1dFZhbHVlID0gcHV0VmFsdWU7CiAgICAgICAgIG1fYXR0
cmlidXRlcyA9IGF0dHJpYnV0ZXM7CiAKICAgICAgICAgQVNTRVJUKHNsb3RCYXNlKTsKQEAgLTI3
MCwyMCArMjc2LDIyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fY2FjaGVhYmlsaXR5ID09
IENhY2hpbmdEaXNhbGxvd2VkKTsKICAgICB9CiAKLSAgICB2b2lkIHNldEN1c3RvbShKU09iamVj
dCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEdldFZhbHVlRnVuYyBnZXRWYWx1ZSwg
RE9NQXR0cmlidXRlQW5ub3RhdGlvbiBkb21BdHRyaWJ1dGUpCisgICAgdm9pZCBzZXRDdXN0b20o
SlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBHZXRWYWx1ZUZ1bmMgZ2V0
VmFsdWUsIFB1dFZhbHVlRnVuYyBwdXRWYWx1ZSwgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiBkb21B
dHRyaWJ1dGUpCiAgICAgewotICAgICAgICBzZXRDdXN0b20oc2xvdEJhc2UsIGF0dHJpYnV0ZXMs
IGdldFZhbHVlKTsKKyAgICAgICAgc2V0Q3VzdG9tKHNsb3RCYXNlLCBhdHRyaWJ1dGVzLCBnZXRW
YWx1ZSwgcHV0VmFsdWUpOwogICAgICAgICBtX2FkZGl0aW9uYWxEYXRhVHlwZSA9IEFkZGl0aW9u
YWxEYXRhVHlwZTo6RE9NQXR0cmlidXRlOwogICAgICAgICBtX2FkZGl0aW9uYWxEYXRhLmRvbUF0
dHJpYnV0ZSA9IGRvbUF0dHJpYnV0ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRDYWNoZWFi
bGVDdXN0b20oSlNPYmplY3QqIHNsb3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBHZXRWYWx1
ZUZ1bmMgZ2V0VmFsdWUpCisgICAgdm9pZCBzZXRDYWNoZWFibGVDdXN0b20oSlNPYmplY3QqIHNs
b3RCYXNlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBHZXRWYWx1ZUZ1bmMgZ2V0VmFsdWUsIFB1dFZh
bHVlRnVuYyBwdXRWYWx1ZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQoYXR0cmli
dXRlcyA9PSBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGF0dHJpYnV0ZXMpKTsKICAgICAgICAgCiAg
ICAgICAgIEFTU0VSVChnZXRWYWx1ZSk7CiAgICAgICAgIGFzc2VydElzQ0Z1bmN0aW9uUHRyKGdl
dFZhbHVlKTsKICAgICAgICAgbV9kYXRhLmN1c3RvbS5nZXRWYWx1ZSA9IGdldFZhbHVlOworICAg
ICAgICBhc3NlcnRJc051bGxPckNGdW5jdGlvblB0cihwdXRWYWx1ZSk7CisgICAgICAgIG1fZGF0
YS5jdXN0b20ucHV0VmFsdWUgPSBwdXRWYWx1ZTsKICAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0
cmlidXRlczsKIAogICAgICAgICBBU1NFUlQoc2xvdEJhc2UpOwpAQCAtMjkzLDMxICszMDEsMTMg
QEAgcHVibGljOgogICAgICAgICBtX2NhY2hlYWJpbGl0eSA9IENhY2hpbmdBbGxvd2VkOwogICAg
IH0KIAotICAgIHZvaWQgc2V0Q2FjaGVhYmxlQ3VzdG9tKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgR2V0VmFsdWVGdW5jIGdldFZhbHVlLCBET01BdHRyaWJ1dGVBbm5v
dGF0aW9uIGRvbUF0dHJpYnV0ZSkKKyAgICB2b2lkIHNldENhY2hlYWJsZUN1c3RvbShKU09iamVj
dCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEdldFZhbHVlRnVuYyBnZXRWYWx1ZSwg
UHV0VmFsdWVGdW5jIHB1dFZhbHVlLCBET01BdHRyaWJ1dGVBbm5vdGF0aW9uIGRvbUF0dHJpYnV0
ZSkKICAgICB7Ci0gICAgICAgIHNldENhY2hlYWJsZUN1c3RvbShzbG90QmFzZSwgYXR0cmlidXRl
cywgZ2V0VmFsdWUpOworICAgICAgICBzZXRDYWNoZWFibGVDdXN0b20oc2xvdEJhc2UsIGF0dHJp
YnV0ZXMsIGdldFZhbHVlLCBwdXRWYWx1ZSk7CiAgICAgICAgIG1fYWRkaXRpb25hbERhdGFUeXBl
ID0gQWRkaXRpb25hbERhdGFUeXBlOjpET01BdHRyaWJ1dGU7CiAgICAgICAgIG1fYWRkaXRpb25h
bERhdGEuZG9tQXR0cmlidXRlID0gZG9tQXR0cmlidXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0
Q3VzdG9tR2V0dGVyU2V0dGVyKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQgYXR0cmlidXRl
cywgQ3VzdG9tR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIpCi0gICAgewotICAgICAgICBBU1NF
UlQoYXR0cmlidXRlcyA9PSBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKGF0dHJpYnV0ZXMpKTsKLSAg
ICAgICAgQVNTRVJUKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IpOwotCi0gICAgICAgIGRpc2FibGVDYWNoaW5nKCk7Ci0KLSAgICAgICAgQVNTRVJUKGdldHRl
clNldHRlcik7Ci0gICAgICAgIG1fZGF0YS5jdXN0b21BY2Nlc3Nvci5nZXR0ZXJTZXR0ZXIgPSBn
ZXR0ZXJTZXR0ZXI7Ci0gICAgICAgIG1fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7Ci0KLSAgICAg
ICAgQVNTRVJUKHNsb3RCYXNlKTsKLSAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwotICAg
ICAgICBtX3Byb3BlcnR5VHlwZSA9IFR5cGVDdXN0b21BY2Nlc3NvcjsKLQotICAgICAgICBBU1NF
UlQobV9jYWNoZWFiaWxpdHkgPT0gQ2FjaGluZ0Rpc2FsbG93ZWQpOwotICAgIH0KLQogICAgIHZv
aWQgc2V0R2V0dGVyU2xvdChKU09iamVjdCogc2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyKQogICAgIHsKICAgICAgICAgQVNTRVJUKGF0dHJp
YnV0ZXMgPT0gYXR0cmlidXRlc0ZvclN0cnVjdHVyZShhdHRyaWJ1dGVzKSk7CkBAIC0zNzcsNyAr
MzY3LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVl
IGZ1bmN0aW9uR2V0dGVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSBjdXN0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUp
IGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgY3VzdG9tQWNjZXNzb3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0OwogCiAgICAgdW5pb24gewog
ICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKQEAgLTM4NiwxMCArMzc1LDggQEAgcHJpdmF0
ZToKICAgICAgICAgfSBnZXR0ZXI7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBHZXRW
YWx1ZUZ1bmMgZ2V0VmFsdWU7CisgICAgICAgICAgICBQdXRWYWx1ZUZ1bmMgcHV0VmFsdWU7CiAg
ICAgICAgIH0gY3VzdG9tOwotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgQ3VzdG9tR2V0
dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXI7Ci0gICAgICAgIH0gY3VzdG9tQWNjZXNzb3I7CiAgICAg
fSBtX2RhdGE7CiAKICAgICB1bnNpZ25lZCBtX2F0dHJpYnV0ZXMgeyAwIH07CkBAIC00MTcsOCAr
NDA0LDYgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VgogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKG1fZGF0YS52YWx1ZSk7CiAgICAgaWYgKG1fcHJvcGVy
dHlUeXBlID09IFR5cGVHZXR0ZXIpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbkdldHRlcihnbG9i
YWxPYmplY3QpOwotICAgIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBUeXBlQ3VzdG9tQWNjZXNzb3Ip
Ci0gICAgICAgIHJldHVybiBjdXN0b21BY2Nlc3NvckdldHRlcihnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CiAgICAgcmV0dXJuIGN1c3RvbUdldHRlcihnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSk7CiB9CiAKQEAgLTQyOSw4ICs0MTQsNiBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgUHJv
cGVydHlTbG90OjpnZXRWCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUobV9kYXRhLnZh
bHVlKTsKICAgICBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gVHlwZUdldHRlcikKICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uR2V0dGVyKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKG1fcHJvcGVydHlUeXBl
ID09IFR5cGVDdXN0b21BY2Nlc3NvcikKLSAgICAgICAgcmV0dXJuIGN1c3RvbUFjY2Vzc29yR2V0
dGVyKGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbSh2bSwgcHJvcGVydHlOYW1lKSk7CiAg
ICAgcmV0dXJuIGN1c3RvbUdldHRlcihnbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb20odm0s
IHByb3BlcnR5TmFtZSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9QdXRQcm9wZXJ0eVNsb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDggKzM4LDggQEAgY2xhc3MgUHV0UHJvcGVydHlTbG90IHsKIHB1YmxpYzoKICAgICBlbnVt
IFR5cGUgOiB1aW50OF90IHsgVW5jYWNoYWJsZSwgRXhpc3RpbmdQcm9wZXJ0eSwgTmV3UHJvcGVy
dHksIFNldHRlclByb3BlcnR5LCBDdXN0b21WYWx1ZSwgQ3VzdG9tQWNjZXNzb3IgfTsKICAgICBl
bnVtIENvbnRleHQgeyBVbmtub3duQ29udGV4dCwgUHV0QnlJZCwgUHV0QnlJZEV2YWwgfTsKLSAg
ICB1c2luZyBQdXRWYWx1ZUZ1bmMgPSBib29sICgqKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIHRoaXNPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsKLSAgICB1c2luZyBQdXRW
YWx1ZUZ1bmNXaXRoUHRyID0gYm9vbCAoKikoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgdm9pZCopOworICAgIHVzaW5nIFB1
dFZhbHVlRnVuYyA9IEpTQzo6UHV0VmFsdWVGdW5jOworICAgIHVzaW5nIFB1dFZhbHVlRnVuY1dp
dGhQdHIgPSBKU0M6OlB1dFZhbHVlRnVuY1dpdGhQdHI7CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qo
SlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNTdHJpY3RNb2RlID0gZmFsc2UsIENvbnRleHQgY29u
dGV4dCA9IFVua25vd25Db250ZXh0LCBib29sIGlzSW5pdGlhbGl6YXRpb24gPSBmYWxzZSkKICAg
ICAgICAgOiBtX2Jhc2UobnVsbHB0cikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDI3Mjc0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsOCBAQAogI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0NhbGxlZS5oIgotI2luY2x1ZGUgIkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNDdXN0b21T
ZXR0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmgiCiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKQEAgLTM4OCw3ICszODksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUsCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0
eUxpc3QobmV3IEFyZ0xpc3QpCiAgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3Jk
Rm9yQmFzZWxpbmVKSVQobWFrZVVuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKLSAgICAsIGN1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uTWFwKCp0aGlzKQogICAgICwgc3RyaW5nQ2FjaGUoKnRoaXMpCiAg
ICAgLCBzeW1ib2xJbXBsVG9TeW1ib2xNYXAoKnRoaXMpCiAgICAgLCBzdHJ1Y3R1cmVDYWNoZSgq
dGhpcykKQEAgLTE0ODIsNyArMTQ4Miw4IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVygKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxs
YmFja0dsb2JhbE9iamVjdFNwYWNlLCBjYWxsYmFja0dsb2JhbE9iamVjdEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tGdW5jdGlvblNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrRnVuY3Rpb24pIC8vIEhhc2g6MHhlNzY0OGViYwogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrT2JqZWN0U3BhY2Us
IGNhbGxiYWNrT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU0NhbGxiYWNrT2JqZWN0PEpTTm9u
RmluYWxPYmplY3Q+KQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24pIC8vIEhhc2g6MHgxODA5MTAwMAorRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3RvbUdldHRlckZ1bmN0aW9uU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24pIC8vIEhhc2g6
MHgxODA5MTAwMAorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGN1c3Rv
bVNldHRlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTQ3VzdG9tU2V0
dGVyRnVuY3Rpb24pCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coZGF0
YVZpZXdTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNEYXRhVmlldykKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhkZWJ1Z2dlclNjb3BlU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIERlYnVnZ2VyU2NvcGUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coZXJyb3JJbnN0YW5jZVNwYWNlLCBlcnJvckluc3RhbmNlSGVhcENl
bGxUeXBlLmdldCgpLCBFcnJvckluc3RhbmNlKSAvLyBIYXNoOjB4M2Y0MGQ0YQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDYg
QEAgY2xhc3MgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNBUElXcmFwcGVyT2Jq
ZWN0OwogY2xhc3MgSlNDQ2FsbGJhY2tGdW5jdGlvbjsKIGNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1
Y3RvcjsKLWNsYXNzIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb247CiBjbGFzcyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZTsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3Mg
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ7CkBAIC01MDMsNyArNTAyLDggQEAgcHVibGljOgog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoY2FsbGJhY2tHbG9iYWxPYmpl
Y3RTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNhbGxiYWNr
RnVuY3Rpb25TcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGNh
bGxiYWNrT2JqZWN0U3BhY2UpCi0gICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoY3VzdG9tR2V0dGVyRnVuY3Rpb25TcGFjZSkKKyAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGN1c3RvbVNldHRlckZ1bmN0aW9uU3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihkYXRhVmlld1NwYWNlKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZGVidWdnZXJTY29wZVNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoZXJyb3JJbnN0YW5jZVNwYWNl
KQpAQCAtNzIzLDcgKzcyMyw2IEBAIHB1YmxpYzoKICAgICBTbWFsbFN0cmluZ3Mgc21hbGxTdHJp
bmdzOwogICAgIE51bWVyaWNTdHJpbmdzIG51bWVyaWNTdHJpbmdzOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTaW1wbGVTdGF0cz4gbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2Vs
aW5lSklUOwotICAgIFdlYWtHQ01hcDxzdGQ6OnBhaXI8Q3VzdG9tR2V0dGVyU2V0dGVyKiwgaW50
PiwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbj4gY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rp
b25NYXA7CiAgICAgV2Vha0dDTWFwPFN0cmluZ0ltcGwqLCBKU1N0cmluZywgUHRySGFzaDxTdHJp
bmdJbXBsKj4+IHN0cmluZ0NhY2hlOwogICAgIFN0cm9uZzxKU1N0cmluZz4gbGFzdENhY2hlZFN0
cmluZzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDItMTMg
IEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0Nd
IFByb3BlcnR5U2xvdCBzaG91bGQgYWxsb3cgcGFzc2luZyBjdXN0b20gc2V0dGVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODcyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gcHJldmVudCBjcm9z
cy1vcmlnaW4gYWNjZXNzb3IgZnVuY3Rpb25zIGZyb20gZGlmZmVyZW50IHJlYWxtcyB0byBoYXZl
IHRoZSBzYW1lIHdyYXBwZXIsCisgICAgICAgIHJldHVybiBQcm9wZXJ0eVNsb3Q6OlR5cGVHZXR0
ZXIgaW5zdGVhZC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vV2luZG93L2dldE93blByb3Bl
cnR5RGVzY3JpcHRvci1vdGhlci13aW5kb3cuaHRtbAorICAgICAgICAgICAgICAganMvaW5zdGFu
Y2UtcHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLmh0bWwKKyAgICAgICAgICAgICAgIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVudC1pc1RydXN0ZWQu
YW55LmpzCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2RvY3VtZW50X2xvY2F0
aW9uLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpY3Rl
ZEFjY2Vzcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24pOgorCiAyMDIxLTAyLTEx
ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtG
Q1JdIFJhbmdlIGlucHV0cyBoYXZlIGFuIGluY29ycmVjdCBSVEwgYXBwZWFyYW5jZQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMjcyNzQxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw5ICs0OCwxMiBAQAogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0J1aWx0aW5OYW1lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0dldHRlclNldHRlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludGVybmFsRnVuY3Rpb24uaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3Vz
dG9tU2V0dGVyRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNNaWNyb3Rhc2suaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Mb29rdXAuaD4KQEAgLTE4NCw5ICsxODcsMTAgQEAgYm9vbCBqc0RPTVdp
bmRvd0dldE93blByb3BlcnR5U2xvdFJlc3RyaQogICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1l
ID09IGJ1aWx0aW5OYW1lcy5vcGVuZXJQdWJsaWNOYW1lKCkKICAgICAgICAgICAgIHx8IHByb3Bl
cnR5TmFtZSA9PSBidWlsdGluTmFtZXMucGFyZW50UHVibGljTmFtZSgpCiAgICAgICAgICAgICB8
fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnRvcFB1YmxpY05hbWUoKSkgewotICAgICAg
ICAgICAgYm9vbCBzaG91bGRFeHBvc2VTZXR0ZXIgPSBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLmxvY2F0aW9uUHVibGljTmFtZSgpOwotICAgICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVy
KiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZW50
cnktPnByb3BlcnR5R2V0dGVyKCksIHNob3VsZEV4cG9zZVNldHRlciA/IGVudHJ5LT5wcm9wZXJ0
eVB1dHRlcigpIDogbnVsbHB0cik7Ci0gICAgICAgICAgICBzbG90LnNldEN1c3RvbUdldHRlclNl
dHRlcih0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IGN1c3RvbUdldHRlclNldHRlcik7CisgICAgICAgICAgICBhdXRvKiBnZXR0ZXIgPSBKU0N1c3Rv
bUdldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpKTsKKyAgICAgICAgICAgIGF1dG8qIHNldHRl
ciA9IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMubG9jYXRpb25QdWJsaWNOYW1lKCkgPyBK
U0N1c3RvbVNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKSA6IG51bGxwdHI7CisgICAgICAg
ICAgICBhdXRvKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJmxleGlj
YWxHbG9iYWxPYmplY3QsIGdldHRlciwgc2V0dGVyKTsKKyAgICAgICAgICAgIHNsb3Quc2V0R2V0
dGVyU2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0sIGdldHRlclNldHRlcik7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyNzI3NDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVk
ZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50
RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dldHRlclNldHRlci5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ3VzdG9tU2V0dGVyRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTG9v
a3VwLmg+CiAKQEAgLTcwLDggKzcyLDkgQEAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
Q29tbW9uKEpTTAogICAgIC8vIGEgZGVzY3JpcHRvciB0aGF0IGhhcyBhIHNldHRlciBidXQgbm8g
Z2V0dGVyLgogICAgIGlmIChzbG90LmludGVybmFsTWV0aG9kVHlwZSgpID09IFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSAmJiBwcm9wZXJ0eU5hbWUgPT0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkuaHJlZlB1YmxpY05hbWUoKSkgewogICAgICAgICBhdXRvKiBlbnRyeSA9IEpTTG9jYXRpb246
OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZS0+ZW50cnkocHJvcGVydHlOYW1lKTsKLSAgICAg
ICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBDdXN0b21HZXR0ZXJT
ZXR0ZXI6OmNyZWF0ZSh2bSwgbnVsbHB0ciwgZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOwotICAg
ICAgICBzbG90LnNldEN1c3RvbUdldHRlclNldHRlcigmdGhpc09iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgY3VzdG9tR2V0dGVyU2V0dGVyKTsKKyAgICAgICAgYXV0
byogc2V0dGVyID0gSlNDdXN0b21TZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCAmbGV4aWNhbEds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBlbnRyeS0+cHJvcGVydHlQdXR0ZXIoKSk7CisgICAg
ICAgIGF1dG8qIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCAmbGV4aWNh
bEdsb2JhbE9iamVjdCwgbnVsbHB0ciwgc2V0dGVyKTsKKyAgICAgICAgc2xvdC5zZXRHZXR0ZXJT
bG90KCZ0aGlzT2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0sIGdldHRlclNldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjcyNzQxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDItMTMgIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIFByb3BlcnR5
U2xvdCBzaG91bGQgYWxsb3cgcGFzc2luZyBjdXN0b20gc2V0dGVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODcyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yLW90aGVyLXdpbmRvdy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vV2luZG93L2dldE93blByb3BlcnR5RGVzY3JpcHRvci1vdGhlci13aW5kb3cuaHRt
bDoKKyAgICAgICAgKiBqcy9pbnN0YW5jZS1wcm9wZXJ0eS1nZXR0ZXItb3RoZXItaW5zdGFuY2Ut
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2luc3RhbmNlLXByb3BlcnR5LWdldHRlci1vdGhl
ci1pbnN0YW5jZS5odG1sOgorCiAyMDIxLTAyLTExICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIFJhbmdlIGlucHV0cyBoYXZlIGFuIGlu
Y29ycmVjdCBSVEwgYXBwZWFyYW5jZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L2dldE93blByb3BlcnR5RGVzY3JpcHRvci1vdGhlci13aW5kb3ctZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3Itb3RoZXItd2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjcyNzQxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE93blByb3BlcnR5RGVzY3JpcHRvci1vdGhlci13
aW5kb3ctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDEyICs1LDEyIEBAIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogZGVzY3JpcHRvciA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXJXaW5kb3csICdsb2NhdGlvbicpCiBQQVNT
IGRlc2NyaXB0b3IgaXMgbm90IHVuZGVmaW5lZAotUEFTUyBkZXNjcmlwdG9yLmdldCBpcyBhbiBp
bnN0YW5jZSBvZiBGdW5jdGlvbgotUEFTUyBkZXNjcmlwdG9yLnNldCBpcyBhbiBpbnN0YW5jZSBv
ZiBGdW5jdGlvbgorUEFTUyBkZXNjcmlwdG9yLmdldCBpbnN0YW5jZW9mIG90aGVyV2luZG93LkZ1
bmN0aW9uIGlzIHRydWUKK1BBU1MgZGVzY3JpcHRvci5zZXQgaW5zdGFuY2VvZiBvdGhlcldpbmRv
dy5GdW5jdGlvbiBpcyB0cnVlCiBQQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyB0cnVlCiBQ
QVNTIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIGZhbHNlCiBQQVNTIGRlc2NyaXB0b3IuZ2V0
LmNhbGwob3RoZXJXaW5kb3cpLnRvU3RyaW5nKCkgaXMgImFib3V0OmJsYW5rIgotUEFTUyBkZXNj
cmlwdG9yLmdldC5jYWxsKCkgaXMgZGVzY3JpcHRvci5nZXQuY2FsbCh3aW5kb3cpCitQQVNTIGRl
c2NyaXB0b3IuZ2V0LmNhbGwoKSBpcyBkZXNjcmlwdG9yLmdldC5jYWxsKG90aGVyV2luZG93KQog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLW90aGVy
LXdpbmRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Itb3RoZXItd2luZG93Lmh0bWwJKHJldmlzaW9uIDI3Mjc0
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3Itb3RoZXItd2luZG93Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDEyICsxMCwxMiBAQCBv
dGhlcldpbmRvdyA9IGZyYW1lc1swXTsKIAogZXZhbEFuZExvZygiZGVzY3JpcHRvciA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3RoZXJXaW5kb3csICdsb2NhdGlvbicpIik7CiBz
aG91bGROb3RCZSgiZGVzY3JpcHRvciIsICJ1bmRlZmluZWQiKTsKLXNob3VsZEJlVHlwZSgiZGVz
Y3JpcHRvci5nZXQiLCAiRnVuY3Rpb24iKTsKLXNob3VsZEJlVHlwZSgiZGVzY3JpcHRvci5zZXQi
LCAiRnVuY3Rpb24iKTsKK3Nob3VsZEJlVHJ1ZSgiZGVzY3JpcHRvci5nZXQgaW5zdGFuY2VvZiBv
dGhlcldpbmRvdy5GdW5jdGlvbiIpOworc2hvdWxkQmVUcnVlKCJkZXNjcmlwdG9yLnNldCBpbnN0
YW5jZW9mIG90aGVyV2luZG93LkZ1bmN0aW9uIik7CiBzaG91bGRCZVRydWUoImRlc2NyaXB0b3Iu
ZW51bWVyYWJsZSIpOwogc2hvdWxkQmVGYWxzZSgiZGVzY3JpcHRvci5jb25maWd1cmFibGUiKTsK
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGVzY3JpcHRvci5nZXQuY2FsbChvdGhlcldpbmRvdyku
dG9TdHJpbmcoKSIsICJhYm91dDpibGFuayIpOwotc2hvdWxkQmUoImRlc2NyaXB0b3IuZ2V0LmNh
bGwoKSIsICJkZXNjcmlwdG9yLmdldC5jYWxsKHdpbmRvdykiKTsKK3Nob3VsZEJlKCJkZXNjcmlw
dG9yLmdldC5jYWxsKCkiLCAiZGVzY3JpcHRvci5nZXQuY2FsbChvdGhlcldpbmRvdykiKTsKIDwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNzI4MzcpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMTMgIEFsZXhleSBTaHZheWth
ICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIFByb3BlcnR5U2xvdCBz
aG91bGQgYWxsb3cgcGFzc2luZyBjdXN0b20gc2V0dGVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxODcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9hdHRyaWJ1dGVzLWFjY2Vzc29ycy11bmlxdWUtZnVuY3Rpb24tb2Jq
ZWN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2F0dHJpYnV0ZXMtYWNjZXNzb3JzLXVuaXF1ZS1mdW5j
dGlvbi1vYmplY3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vZXZlbnRzL0V2ZW50LWlzVHJ1c3RlZC5hbnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL0V2ZW50LWlzVHJ1c3RlZC5hbnkud29ya2VyLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9o
aXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvZG9jdW1lbnRfbG9jYXRpb24tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3Mv
YXV4aWxpYXJ5LWJyb3dzaW5nLWNvbnRleHRzL29wZW5lci1zZXR0ZXIud2luZG93LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dz
L2VtYmVkZGVkLW9wZW5lci1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDItMTIgIFNlcmdpbyBWaWxs
YXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1mbGV4Ym94XSBB
bm90aGVyIFdQVCB0ZXN0IGltcG9ydApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2F0dHJpYnV0ZXMtYWNj
ZXNzb3JzLXVuaXF1ZS1mdW5jdGlvbi1vYmplY3RzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21h
c2NyaXB0LWJpbmRpbmcvYXR0cmlidXRlcy1hY2Nlc3NvcnMtdW5pcXVlLWZ1bmN0aW9uLW9iamVj
dHMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9hdHRyaWJ1dGVz
LWFjY2Vzc29ycy11bmlxdWUtZnVuY3Rpb24tb2JqZWN0cy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgRm9yIGF0dHJpYnV0ZXMsIGVhY2ggY29weSBv
ZiB0aGUgYWNjZXNzb3IgcHJvcGVydHkgaGFzIGRpc3RpbmN0IGJ1aWx0LWluIGZ1bmN0aW9uIG9i
amVjdHMgZm9yIGl0cyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLgorCkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
YXR0cmlidXRlcy1hY2Nlc3NvcnMtdW5pcXVlLWZ1bmN0aW9uLW9iamVjdHMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvYXR0cmlidXRlcy1hY2Nlc3NvcnMtdW5pcXVlLWZ1bmN0aW9u
LW9iamVjdHMuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvYXR0cmlidXRlcy1h
Y2Nlc3NvcnMtdW5pcXVlLWZ1bmN0aW9uLW9iamVjdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5BbGwgYXR0cmlidXRlcyBhY2Nlc3NvcnMgYXJlIHVuaXF1ZSBmdW5jdGlvbiBvYmplY3Rz
PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jaWRsLWludGVyZmFjZS1taXhpbnMiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKKwordGVz
dCgoKSA9PiB7CisgIGNvbnN0IHNlZW5Qcm90b3R5cGVzID0gbmV3IFdlYWtTZXQoW0Z1bmN0aW9u
LnByb3RvdHlwZV0pOworICBjb25zdCBzZWVuRnVuY3Rpb25zID0gbmV3IFdlYWtNYXAoKTsKKwor
ICBmb3IgKGNvbnN0IHdpbmRvd0tleSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5k
b3cpKSB7CisgICAgY29uc3Qgd2luZG93VmFsdWUgPSB3aW5kb3dbd2luZG93S2V5XTsKKyAgICBp
ZiAodHlwZW9mIHdpbmRvd1ZhbHVlICE9PSAiZnVuY3Rpb24iKSBjb250aW51ZTsKKworICAgIGNv
bnN0IHtwcm90b3R5cGV9ID0gd2luZG93VmFsdWU7CisgICAgaWYgKCFwcm90b3R5cGUgfHwgc2Vl
blByb3RvdHlwZXMuaGFzKHByb3RvdHlwZSkpIGNvbnRpbnVlOworICAgIHNlZW5Qcm90b3R5cGVz
LmFkZChwcm90b3R5cGUpOworCisgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXMocHJvdG90eXBlKSkgeworICAgICAgY29uc3QgYXNzZXJ0X25vdF9zZWVuID0g
KGZuLCBmaWVsZCkgPT4geworICAgICAgICBjb25zdCBmbkluZm8gPSBgJHt3aW5kb3dLZXl9LiR7
a2V5fS4ke2ZpZWxkfWA7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2VlbkZ1bmN0aW9ucy5nZXQo
Zm4pLCB1bmRlZmluZWQsIGZuSW5mbyk7CisgICAgICAgIHNlZW5GdW5jdGlvbnMuc2V0KGZuLCBm
bkluZm8pOworICAgICAgfTsKKworICAgICAgY29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IocHJvdG90eXBlLCBrZXkpOworICAgICAgaWYgKGRlc2MuZ2V0KSBhc3Nl
cnRfbm90X3NlZW4oZGVzYy5nZXQsICJbW0dldF1dIik7CisgICAgICBpZiAoZGVzYy5zZXQpIGFz
c2VydF9ub3Rfc2VlbihkZXNjLnNldCwgIltbU2V0XV0iKTsKKyAgICB9CisgIH0KK30sICJGb3Ig
YXR0cmlidXRlcywgZWFjaCBjb3B5IG9mIHRoZSBhY2Nlc3NvciBwcm9wZXJ0eSBoYXMgZGlzdGlu
Y3QgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0cyBmb3IgaXRzIGdldHRlcnMgYW5kIHNldHRlcnMu
Iik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVudC1pc1RydXN0ZWQuYW55LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Rv
bS9ldmVudHMvRXZlbnQtaXNUcnVzdGVkLmFueS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3Mjc0
MSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2
ZW50cy9FdmVudC1pc1RydXN0ZWQuYW55LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw3ICsxLDMgQEAKIAotRkFJTCBFdmVudC1pc1RydXN0ZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgZnVuY3Rpb24gImZ1bmN0aW9uIGlzVHJ1c3RlZCgpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19
IiBidXQgZ290IGZ1bmN0aW9uICJmdW5jdGlvbiBpc1RydXN0ZWQoKSB7Ci0gICAgW25hdGl2ZSBj
b2RlXQotfSIKK1BBU1MgRXZlbnQtaXNUcnVzdGVkCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVudC1pc1RydXN0ZWQuYW55
Lndvcmtlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL0V2ZW50LWlzVHJ1c3RlZC5hbnkud29y
a2VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjcyNzQxKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL0V2ZW50LWlzVHJ1c3RlZC5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDMgQEAKIAotRkFJ
TCBFdmVudC1pc1RydXN0ZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0
aW9uIGlzVHJ1c3RlZCgpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiBidXQgZ290IGZ1bmN0aW9u
ICJmdW5jdGlvbiBpc1RydXN0ZWQoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIKK1BBU1MgRXZl
bnQtaXNUcnVzdGVkCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvZG9j
dW1lbnRfbG9jYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1s
b2NhdGlvbi1pbnRlcmZhY2UvZG9jdW1lbnRfbG9jYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNzI3NDEpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2RvY3VtZW50X2xv
Y2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSw2IEBACiAKIFBB
U1MgZG9jdW1lbnQgbm90IGluIGEgYnJvd3NpbmcgY29udGV4dAogUEFTUyBkb2N1bWVudC5sb2Nh
dGlvbiBlcXVhbHMgd2luZG93LmxvY2F0aW9uCi1GQUlMIEF0dHJpYnV0ZSBnZXR0ZXIgZGVkdXBs
aWNhdGlvbiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gbG9jYXRp
b24oKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24g
bG9jYXRpb24oKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIKLUZBSUwgQXR0cmlidXRlIHNldHRl
ciBkZWR1cGxpY2F0aW9uIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlv
biBsb2NhdGlvbigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiBidXQgZ290IGZ1bmN0aW9uICJm
dW5jdGlvbiBsb2NhdGlvbigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IgorUEFTUyBBdHRyaWJ1
dGUgZ2V0dGVyIGRlZHVwbGljYXRpb24KK1BBU1MgQXR0cmlidXRlIHNldHRlciBkZWR1cGxpY2F0
aW9uCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9wZW5lci1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRkZWQtb3BlbmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MjcyNzQxKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRkZWQtb3BlbmVyLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBvcGVuZXIgYW5kIGVtYmVkZGVkIGRvY3Vt
ZW50czsgdXNpbmcgd2luZG93Lm9wZW4oKSBhc3NlcnRfZXF1YWxzOiBvcGVuZXIgYmVmb3JlIHNl
dHRpbmcgaXQgdG8gbnVsbCB2aWEgZGlyZWN0bHkgaW52b2tpbmcgdGhlIGdldHRlciBleHBlY3Rl
ZCBvYmplY3QgIltvYmplY3QgV2luZG93XSIgYnV0IGdvdCBudWxsCitQQVNTIG9wZW5lciBhbmQg
ZW1iZWRkZWQgZG9jdW1lbnRzOyB1c2luZyB3aW5kb3cub3BlbigpCiAKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dz
L2F1eGlsaWFyeS1icm93c2luZy1jb250ZXh0cy9vcGVuZXItc2V0dGVyLndpbmRvdy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvYXV4aWxpYXJ5LWJyb3dzaW5nLWNvbnRleHRz
L29wZW5lci1zZXR0ZXIud2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjcyNzQxKQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L3dpbmRvd3MvYXV4aWxpYXJ5LWJyb3dzaW5nLWNvbnRleHRzL29wZW5lci1zZXR0ZXIud2luZG93
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDkgQEAKIAotRkFJTCBTZXR0
aW5nIHdpbmRvdy5vcGVuZXIgdG8gdW5kZWZpbmVkIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChz
dHJpbmcpICJ4IiBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAotRkFJTCBTZXR0aW5nIHdp
bmRvdy5vcGVuZXIgdG8gNDIgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgIngiIGJ1
dCBnb3QgKG51bWJlcikgNDIKLUZBSUwgU2V0dGluZyB3aW5kb3cub3BlbmVyIHRvIGZ1bmN0aW9u
ICgpIHsgcmV0dXJuICJoaSIgfSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAieCIg
YnV0IGdvdCAoZnVuY3Rpb24pIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHJldHVybiAiaGkiIH0i
Ci1GQUlMIFNldHRpbmcgd2luZG93Lm9wZW5lciB0byBoaSBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAieCIgYnV0IGdvdCAiaGkiCi1GQUlMIFNldHRpbmcgd2luZG93Lm9wZW5lciB0byBbb2JqZWN0
IE9iamVjdF0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgIngiIGJ1dCBnb3QgKG9i
amVjdCkgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCi1GQUlMIFNldHRpbmcgd2luZG93Lm9wZW5l
ciB0byAgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgIngiIGJ1dCBnb3QgKG9iamVj
dCkgW10KLUZBSUwgU2V0dGluZyB3aW5kb3cub3BlbmVyIHRvIFN5bWJvbCgpIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIChzdHJpbmcpICJ4IiBidXQgZ290IChzeW1ib2wpIHN5bWJvbCAiU3ltYm9s
KCkiCitQQVNTIFNldHRpbmcgd2luZG93Lm9wZW5lciB0byB1bmRlZmluZWQKK1BBU1MgU2V0dGlu
ZyB3aW5kb3cub3BlbmVyIHRvIDQyCitQQVNTIFNldHRpbmcgd2luZG93Lm9wZW5lciB0byBmdW5j
dGlvbiAoKSB7IHJldHVybiAiaGkiIH0KK1BBU1MgU2V0dGluZyB3aW5kb3cub3BlbmVyIHRvIGhp
CitQQVNTIFNldHRpbmcgd2luZG93Lm9wZW5lciB0byBbb2JqZWN0IE9iamVjdF0KK1BBU1MgU2V0
dGluZyB3aW5kb3cub3BlbmVyIHRvCitQQVNTIFNldHRpbmcgd2luZG93Lm9wZW5lciB0byBTeW1i
b2woKQogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9pbnN0YW5jZS1wcm9wZXJ0eS1nZXR0ZXItb3Ro
ZXItaW5zdGFuY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2lu
c3RhbmNlLXByb3BlcnR5LWdldHRlci1vdGhlci1pbnN0YW5jZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI3Mjc0MSkKKysrIExheW91dFRlc3RzL2pzL2luc3RhbmNlLXByb3BlcnR5LWdldHRlci1v
dGhlci1pbnN0YW5jZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMyw3IEBA
IFRlc3RzIHRoYXQgY2FsbGluZyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSAKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCi1QQVNTIGxvY2F0aW9uR2V0dGVyIGlzIGFuIGluc3RhbmNlIG9mIGZ1
bmN0aW9uIEZ1bmN0aW9uKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0KK1BBU1MgbG9jYXRpb25H
ZXR0ZXIgaW5zdGFuY2VvZiBvdGhlcldpbmRvdy5GdW5jdGlvbiBpcyB0cnVlCiBQQVNTIGxvY2F0
aW9uR2V0dGVyLmNhbGwob3RoZXJXaW5kb3cuZG9jdW1lbnQpLnRvU3RyaW5nKCkgaXMgImFib3V0
OmJsYW5rIgogUEFTUyBsb2NhdGlvbkdldHRlci5jYWxsKHdpbmRvdy5kb2N1bWVudCkgPT09IHdp
bmRvdy5kb2N1bWVudC5sb2NhdGlvbiBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9pbnN0YW5jZS1wcm9wZXJ0eS1nZXR0ZXItb3Ro
ZXItaW5zdGFuY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9pbnN0YW5jZS1w
cm9wZXJ0eS1nZXR0ZXItb3RoZXItaW5zdGFuY2UuaHRtbAkocmV2aXNpb24gMjcyNzQxKQorKysg
TGF5b3V0VGVzdHMvanMvaW5zdGFuY2UtcHJvcGVydHktZ2V0dGVyLW90aGVyLWluc3RhbmNlLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDcgKzEyLDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiB7
CiAgICAgb3RoZXJXaW5kb3cgPSB3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiKTsKICAgICAgICAg
bG9jYXRpb25HZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG90aGVyV2lu
ZG93LmRvY3VtZW50LCAibG9jYXRpb24iKS5nZXQ7Ci0gICAgICAgIHNob3VsZEJlVHlwZSgibG9j
YXRpb25HZXR0ZXIiLCBGdW5jdGlvbik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgibG9jYXRpb25H
ZXR0ZXIgaW5zdGFuY2VvZiBvdGhlcldpbmRvdy5GdW5jdGlvbiIpOwogICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImxvY2F0aW9uR2V0dGVyLmNhbGwob3RoZXJXaW5kb3cuZG9jdW1lbnQp
LnRvU3RyaW5nKCkiLCAiYWJvdXQ6YmxhbmsiKTsKICAgICAgICAgLy8gU2hvdWxkIHJldHVybiB0
aGUgY3VycmVudCBkb2N1bWVudCdzIGxvY2F0aW9uLgogICAgICAgICBzaG91bGRCZVRydWUoImxv
Y2F0aW9uR2V0dGVyLmNhbGwod2luZG93LmRvY3VtZW50KSA9PT0gd2luZG93LmRvY3VtZW50Lmxv
Y2F0aW9uIik7Cg==
</data>
<flag name="review"
          id="438687"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>