<?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>233889</bug_id>
          
          <creation_ts>2021-12-06 11:45:27 -0800</creation_ts>
          <short_desc>Allow WKContentRuleList to run regexes on current frame&apos;s URL, not just top frame&apos;s URL</short_desc>
          <delta_ts>2021-12-13 20:27:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820697</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-06 11:45:27 -0800</bug_when>
    <thetext>Allow WKContentRuleList to run regexes on current frame&apos;s URL, not just top frame&apos;s URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820700</commentid>
    <comment_count>1</comment_count>
      <attachid>446063</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-06 11:46:21 -0800</bug_when>
    <thetext>Created attachment 446063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820701</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-06 11:46:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/72203352&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822339</commentid>
    <comment_count>3</comment_count>
      <attachid>446607</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-09 14:31:09 -0800</bug_when>
    <thetext>Created attachment 446607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822507</commentid>
    <comment_count>4</comment_count>
      <attachid>446607</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-09 21:17:03 -0800</bug_when>
    <thetext>Comment on attachment 446607
Patch

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

&gt; Source/WebCore/contentextensions/ContentExtensionsBackend.cpp:134
&gt; +        // FIXME: Do something with this. I might need another bit to indicate whether the conditions are top URL conditions or frameURL conditions, like IfConditionFlag but another bit.

No, I think instead the action needs to include whether it had a condition with if-top-url or if-frame-url.  Right now we use separate state machines with/without conditions and we either need even more state machines and passes or this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823140</commentid>
    <comment_count>5</comment_count>
      <attachid>446854</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-10 18:30:24 -0800</bug_when>
    <thetext>Created attachment 446854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823141</commentid>
    <comment_count>6</comment_count>
      <attachid>446854</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-10 18:30:42 -0800</bug_when>
    <thetext>Comment on attachment 446854
Patch

Also not quite there, but getting quite close.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823802</commentid>
    <comment_count>7</comment_count>
      <attachid>447075</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-13 15:29:07 -0800</bug_when>
    <thetext>Created attachment 447075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823894</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-13 20:27:46 -0800</bug_when>
    <thetext>Committed r287010 (245215@main): &lt;https://commits.webkit.org/245215@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447075.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446063</attachid>
            <date>2021-12-06 11:46:21 -0800</date>
            <delta_ts>2021-12-09 14:31:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233889-20211206114620.patch</filename>
            <type>text/plain</type>
            <size>10486</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk2ZDhiOTQxMGZlYjY4
NTQ1NzA1YWJmYzk3ZjUyYmM1ZmI1ZTJkZi4uMjRmYmIzZDIzN2I1YTY2MWNiOWI3YjU1ZDk5ZTBi
ZDE5NmYxNjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWxsb3cg
V0tDb250ZW50UnVsZUxpc3QgdG8gcnVuIHJlZ2V4ZXMgb24gY3VycmVudCBmcmFtZSdzIFVSTCwg
bm90IGp1c3QgdG9wIGZyYW1lJ3MgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM4ODkKKyAgICAgICAgPHJkYXI6Ly83MjIwMzM1Mj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6c2VyaWFsaXplQWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dlcik6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OlRyaWdnZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjp+VHJpZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisKIDIw
MjEtMTItMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBBZGQgcm9vbSBmb3IgbW9yZSBieXRlY29kZSBpbiBXS0NvbnRlbnRSdWxlTGlzdCBm
aWxlIGZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKaW5kZXggNDkzNzIyMWE3NTA3Yjdm
ODE2ZDQzYjk5NDIwMzdiODlkNmQzYjEyYS4uNGRhMGQ3ZTU1MzRlYTBiOTFiZGM2MmRhYzgyMmZk
ZGIxYjhjMWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsOCArNDQsNyBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBDb250ZW50RXh0
ZW5zaW9ucyB7CituYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiAvLyBj
c3MtZGlzcGxheS1ub25lIGNvbWJpbmluZyBpcyBzcGVjaWFsIGJlY2F1c2Ugd2UgY29tYmluZSB0
aGUgc3RyaW5nIGFyZ3VtZW50cyB3aXRoIGNvbW1hcyBiZWNhdXNlIHdlIGtub3cgdGhleSBhcmUg
Y3NzIHNlbGVjdG9ycy4KIHN0cnVjdCBQZW5kaW5nRGlzcGxheU5vbmVBY3Rpb25zIHsKQEAgLTg3
LDkgKzg2LDcgQEAgc3RhdGljIFZlY3Rvcjx1bnNpZ25lZD4gc2VyaWFsaXplQWN0aW9ucyhjb25z
dCBWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+JiBydWwKICAgICBSZWRpcmVjdEFjdGlvbk1h
cCByZWRpcmVjdEFjdGlvbk1hcDsKICAgICBNb2RpZnlIZWFkZXJzQWN0aW9uTWFwIG1vZGlmeUhl
YWRlcnNBY3Rpb25NYXA7CiAKLSAgICBmb3IgKHVuc2lnbmVkIHJ1bGVJbmRleCA9IDA7IHJ1bGVJ
bmRleCA8IHJ1bGVMaXN0LnNpemUoKTsgKytydWxlSW5kZXgpIHsKLSAgICAgICAgY29uc3QgQ29u
dGVudEV4dGVuc2lvblJ1bGUmIHJ1bGUgPSBydWxlTGlzdFtydWxlSW5kZXhdOwotCisgICAgZm9y
IChjb25zdCBhdXRvJiBydWxlIDogcnVsZUxpc3QpIHsKICAgICAgICAgYXV0byYgYWN0aW9uRGF0
YSA9IHJ1bGUuYWN0aW9uKCkuZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxJZ25vcmVQcmV2aW91c1J1bGVzQWN0aW9uPihhY3Rpb25EYXRhKSkgewogICAgICAgICAg
ICAgcmVzb2x2ZVBlbmRpbmdEaXNwbGF5Tm9uZUFjdGlvbnMoYWN0aW9ucywgYWN0aW9uTG9jYXRp
b25zLCBjc3NEaXNwbGF5Tm9uZUFjdGlvbnNNYXApOwpAQCAtMTczLDcgKzE3MCw3IEBAIHN0YXRp
YyBWZWN0b3I8dW5zaWduZWQ+IHNlcmlhbGl6ZUFjdGlvbnMoY29uc3QgVmVjdG9yPENvbnRlbnRF
eHRlbnNpb25SdWxlPiYgcnVsCiAgICAgcmV0dXJuIGFjdGlvbkxvY2F0aW9uczsKIH0KIAotdHlw
ZWRlZiBIYXNoU2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBVbml2ZXJzYWxBY3Rpb25TZXQ7Cit1
c2luZyBVbml2ZXJzYWxBY3Rpb25TZXQgPSBIYXNoU2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PjsK
IAogc3RhdGljIHZvaWQgYWRkVW5pdmVyc2FsQWN0aW9uc1RvREZBKERGQSYgZGZhLCBVbml2ZXJz
YWxBY3Rpb25TZXQmJiB1bml2ZXJzYWxBY3Rpb25zKQogewpAQCAtMjgxLDYgKzI3OCw3IEBAIHN0
ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9u
Q2xpZW50JiBjbGllbnQsIFN0cmluCiAKICAgICBib29sIGRvbWFpbkNvbmRpdGlvblNlZW4gPSBm
YWxzZTsKICAgICBib29sIHRvcFVSTENvbmRpdGlvblNlZW4gPSBmYWxzZTsKKyAgICBib29sIGZy
YW1lVVJMQ29uZGl0aW9uU2VlbiA9IGZhbHNlOwogICAgIGZvciAoY29uc3QgYXV0byYgcnVsZSA6
IHBhcnNlZFJ1bGVMaXN0KSB7CiAgICAgICAgIHN3aXRjaCAocnVsZS50cmlnZ2VyKCkuY29uZGl0
aW9uVHlwZSkgewogICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmU6CkBA
IC0yOTMsNiArMjkxLDkgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50
RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwgU3RyaW4KICAgICAgICAgY2FzZSBU
cmlnZ2VyOjpDb25kaXRpb25UeXBlOjpVbmxlc3NUb3BVUkw6CiAgICAgICAgICAgICB0b3BVUkxD
b25kaXRpb25TZWVuID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRy
aWdnZXI6OkNvbmRpdGlvblR5cGU6OklmRnJhbWVVUkw6CisgICAgICAgICAgICBmcmFtZVVSTENv
bmRpdGlvblNlZW4gPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CiAgICAgaWYgKHRvcFVSTENvbmRpdGlvblNlZW4gJiYgZG9tYWluQ29uZGl0aW9uU2VlbikKQEAg
LTMxNyw5ICszMTgsMTEgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50
RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwgU3RyaW4KICAgICBDb21iaW5lZFVS
TEZpbHRlcnMgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zOwogICAgIENvbWJpbmVkVVJMRmlsdGVy
cyBmaWx0ZXJzV2l0aENvbmRpdGlvbnM7CiAgICAgQ29tYmluZWRVUkxGaWx0ZXJzIHRvcFVSTEZp
bHRlcnM7CisgICAgQ29tYmluZWRVUkxGaWx0ZXJzIGZyYW1lVVJMRmlsdGVyczsKICAgICBVUkxG
aWx0ZXJQYXJzZXIgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25QYXJzZXIoZmlsdGVyc1dpdGhvdXRD
b25kaXRpb25zKTsKICAgICBVUkxGaWx0ZXJQYXJzZXIgZmlsdGVyc1dpdGhDb25kaXRpb25QYXJz
ZXIoZmlsdGVyc1dpdGhDb25kaXRpb25zKTsKICAgICBVUkxGaWx0ZXJQYXJzZXIgdG9wVVJMRmls
dGVyUGFyc2VyKHRvcFVSTEZpbHRlcnMpOworICAgIFVSTEZpbHRlclBhcnNlciBmcmFtZVVSTEZp
bHRlclBhcnNlcihmcmFtZVVSTEZpbHRlcnMpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgcnVs
ZUluZGV4ID0gMDsgcnVsZUluZGV4IDwgcGFyc2VkUnVsZUxpc3Quc2l6ZSgpOyArK3J1bGVJbmRl
eCkgewogICAgICAgICBjb25zdCBDb250ZW50RXh0ZW5zaW9uUnVsZSYgY29udGVudEV4dGVuc2lv
blJ1bGUgPSBwYXJzZWRSdWxlTGlzdFtydWxlSW5kZXhdOwpAQCAtMzQ2LDYgKzM0OSw3IEBAIHN0
ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9u
Q2xpZW50JiBjbGllbnQsIFN0cmluCiAgICAgICAgICAgICBzd2l0Y2ggKHRyaWdnZXIuY29uZGl0
aW9uVHlwZSkgewogICAgICAgICAgICAgY2FzZSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpJZkRv
bWFpbjoKICAgICAgICAgICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6SWZUb3BVUkw6
CisgICAgICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6OklmRnJhbWVVUkw6CiAg
ICAgICAgICAgICAgICAgYWN0aW9uTG9jYXRpb25BbmRGbGFncyB8PSBJZkNvbmRpdGlvbkZsYWc7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRp
dGlvblR5cGU6Ok5vbmU6CkBAIC0zNjgsNiArMzcyLDggQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBp
bGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwgU3Ry
aW4KICAgICAgICAgICAgICAgICBpZiAoZG9tYWluQ29uZGl0aW9uU2VlbikgewogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIXRvcFVSTENvbmRpdGlvblNlZW4pOwogICAgICAgICAgICAgICAg
ICAgICB0b3BVUkxGaWx0ZXJzLmFkZERvbWFpbihhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzLCBjb25k
aXRpb24pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZnJhbWVVUkxDb25kaXRpb25TZWVu
KSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IGZyYW1lVVJMRmlsdGVyUGFyc2VyLmFk
ZFBhdHRlcm4oY29uZGl0aW9uLCB0cmlnZ2VyLmZyYW1lVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0
aXZlLCBhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQodG9wVVJMQ29uZGl0aW9uU2Vlbik7CiAgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cyA9IHRvcFVSTEZpbHRlclBhcnNlci5hZGRQYXR0ZXJuKGNvbmRp
dGlvbiwgdHJpZ2dlci50b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUsIGFjdGlvbkxvY2F0
aW9uQW5kRmxhZ3MpOwpAQCAtNDI4LDcgKzQzNCw2IEBAIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxl
UnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmlu
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMK
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUGFyc2VyLmNwcAppbmRleCBiZDVjZDJmZGM0YzJjZDI3MWZmY2YwMWUzZjRmYjAxNjI3ZGE5
OWU5Li5jMmMxNTdlMjVlNWQxOGZkZWFiOTI0YTUwZjJhOTZlNjBlZWQyNDM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUGFyc2VyLmNwcApAQCAtMTExLDYgKzExMSw5IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2Vy
LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKGNvbnN0IEpTT046Ok9iamVjdCYgcnVsZU9i
CiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdG9wVVJMRmlsdGVyQ2FzZVNlbnNpdGl2ZVZh
bHVlID0gdHJpZ2dlck9iamVjdC0+Z2V0Qm9vbGVhbigidG9wLXVybC1maWx0ZXItaXMtY2FzZS1z
ZW5zaXRpdmUiKSkKICAgICAgICAgdHJpZ2dlci50b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRp
dmUgPSAqdG9wVVJMRmlsdGVyQ2FzZVNlbnNpdGl2ZVZhbHVlOwogCisgICAgaWYgKHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gZnJhbWVVUkxGaWx0ZXJDYXNlU2Vuc2l0aXZlVmFsdWUgPSB0cmlnZ2VyT2Jq
ZWN0LT5nZXRCb29sZWFuKCJmcmFtZS11cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0aXZlIikpCisg
ICAgICAgIHRyaWdnZXIuZnJhbWVVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUgPSAqZnJhbWVV
UkxGaWx0ZXJDYXNlU2Vuc2l0aXZlVmFsdWU7CisKICAgICBpZiAoYXV0byByZXNvdXJjZVR5cGVW
YWx1ZSA9IHRyaWdnZXJPYmplY3QtPmdldFZhbHVlKCJyZXNvdXJjZS10eXBlIikpIHsKICAgICAg
ICAgYXV0byByZXNvdXJjZVR5cGVBcnJheSA9IHJlc291cmNlVHlwZVZhbHVlLT5hc0FycmF5KCk7
CiAgICAgICAgIGlmICghcmVzb3VyY2VUeXBlQXJyYXkpCkBAIC0xNjYsNiArMTY5LDkgQEAgc3Rh
dGljIEV4cGVjdGVkPFRyaWdnZXIsIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFRyaWdnZXIoY29uc3Qg
SlNPTjo6T2JqZWN0JiBydWxlT2IKICAgICBpZiAoYXV0byBlcnJvciA9IGNoZWNrQ29uZGl0aW9u
KCJ1bmxlc3MtdG9wLXVybCJfcywgZ2V0U3RyaW5nTGlzdCwgVHJpZ2dlcjo6Q29uZGl0aW9uVHlw
ZTo6VW5sZXNzVG9wVVJMKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yKTsK
IAorICAgIGlmIChhdXRvIGVycm9yID0gY2hlY2tDb25kaXRpb24oImlmLWZyYW1lLXVybCJfcywg
Z2V0U3RyaW5nTGlzdCwgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6SWZGcmFtZVVSTCkpCisgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvcik7CisKICAgICByZXR1cm4gdHJpZ2dlcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblJ1bGUuY3BwCmluZGV4IDU1M2Q2NTlkN2NjMDIyNDk5OTU1OWM2YzI0ZTQ0
NzBlZmVlNDZhZWYuLjUxNzA2MjFlYjM4NTQzYjc1MzMxMGMyMzhhMzViMjM4Zjc2MTE0YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25SdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUnVsZS5jcHAKQEAgLTEwMSw2ICsxMDEsNyBAQCBUcmlnZ2VyIFRyaWdnZXI6Omlz
b2xhdGVkQ29weSgpIGNvbnN0CiAgICAgICAgIHVybEZpbHRlci5pc29sYXRlZENvcHkoKSwKICAg
ICAgICAgdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICB0b3BVUkxDb25kaXRpb25J
c0Nhc2VTZW5zaXRpdmUsCisgICAgICAgIGZyYW1lVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZl
LAogICAgICAgICBmbGFncywKICAgICAgICAgY29uZGl0aW9ucy5pc29sYXRlZENvcHkoKSwKICAg
ICAgICAgY29uZGl0aW9uVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKaW5kZXggZTJlMzk2ZDRmZTFhY2U2ZDE0
ZjMxNDhkMjdiOWU2MjU1N2UwODIyZS4uYmQxNjg4MzA3M2M0MzQ2NjAwMTQ0YzM5YmUzZDUyNGQ0
ZDZiOTdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCkBAIC00NSw2ICs0NSw3IEBAIHN0cnVjdCBUcmlnZ2Vy
IHsKICAgICBTdHJpbmcgdXJsRmlsdGVyOwogICAgIGJvb2wgdXJsRmlsdGVySXNDYXNlU2Vuc2l0
aXZlIHsgZmFsc2UgfTsKICAgICBib29sIHRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSB7
IGZhbHNlIH07CisgICAgYm9vbCBmcmFtZVVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSB7IGZh
bHNlIH07CiAgICAgUmVzb3VyY2VGbGFncyBmbGFncyB7IDAgfTsKICAgICBWZWN0b3I8U3RyaW5n
PiBjb25kaXRpb25zOwogICAgIGVudW0gY2xhc3MgQ29uZGl0aW9uVHlwZSB7CkBAIC01Myw2ICs1
NCw3IEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAgICAgICAgVW5sZXNzRG9tYWluLAogICAgICAgICBJ
ZlRvcFVSTCwKICAgICAgICAgVW5sZXNzVG9wVVJMLAorICAgICAgICBJZkZyYW1lVVJMLAogICAg
IH0gY29uZGl0aW9uVHlwZSB7IENvbmRpdGlvblR5cGU6Ok5vbmUgfTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFRyaWdnZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CkBAIC02Miw2ICs2NCw4IEBAIHN0
cnVjdCBUcmlnZ2VyIHsKICAgICAgICAgQVNTRVJUKGNvbmRpdGlvbnMuaXNFbXB0eSgpID09IChj
b25kaXRpb25UeXBlID09IENvbmRpdGlvblR5cGU6Ok5vbmUpKTsKICAgICAgICAgaWYgKHRvcFVS
TENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSkKICAgICAgICAgICAgIEFTU0VSVChjb25kaXRpb25U
eXBlID09IENvbmRpdGlvblR5cGU6OklmVG9wVVJMIHx8IGNvbmRpdGlvblR5cGUgPT0gQ29uZGl0
aW9uVHlwZTo6VW5sZXNzVG9wVVJMKTsKKyAgICAgICAgaWYgKGZyYW1lVVJMQ29uZGl0aW9uSXND
YXNlU2Vuc2l0aXZlKQorICAgICAgICAgICAgQVNTRVJUKGNvbmRpdGlvblR5cGUgPT0gQ29uZGl0
aW9uVHlwZTo6SWZGcmFtZVVSTCk7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QK
QEAgLTY5LDYgKzczLDcgQEAgc3RydWN0IFRyaWdnZXIgewogICAgICAgICByZXR1cm4gdXJsRmls
dGVyLmlzRW1wdHkoKQogICAgICAgICAgICAgJiYgIXVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZQog
ICAgICAgICAgICAgJiYgIXRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZQorICAgICAgICAg
ICAgJiYgIWZyYW1lVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlCiAgICAgICAgICAgICAmJiAh
ZmxhZ3MKICAgICAgICAgICAgICYmIGNvbmRpdGlvbnMuaXNFbXB0eSgpCiAgICAgICAgICAgICAm
JiBjb25kaXRpb25UeXBlID09IENvbmRpdGlvblR5cGU6Ok5vbmU7CkBAIC03OSw2ICs4NCw3IEBA
IHN0cnVjdCBUcmlnZ2VyIHsKICAgICAgICAgcmV0dXJuIHVybEZpbHRlciA9PSBvdGhlci51cmxG
aWx0ZXIKICAgICAgICAgICAgICYmIHVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhlci51
cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKICAgICAgICAgICAgICYmIHRvcFVSTENvbmRpdGlvbklz
Q2FzZVNlbnNpdGl2ZSA9PSBvdGhlci50b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUKKyAg
ICAgICAgICAgICYmIGZyYW1lVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlID09IG90aGVyLmZy
YW1lVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlCiAgICAgICAgICAgICAmJiBmbGFncyA9PSBv
dGhlci5mbGFncwogICAgICAgICAgICAgJiYgY29uZGl0aW9ucyA9PSBvdGhlci5jb25kaXRpb25z
CiAgICAgICAgICAgICAmJiBjb25kaXRpb25UeXBlID09IG90aGVyLmNvbmRpdGlvblR5cGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446607</attachid>
            <date>2021-12-09 14:31:09 -0800</date>
            <delta_ts>2021-12-10 18:30:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233889-20211209143108.patch</filename>
            <type>text/plain</type>
            <size>37216</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVkZmQ0NGEwYjhmOTZj
MzZmNTI1YTc3NDIyM2Q5ODg3MDY4OTkwYi4uNDczOWU0YzkzZWMyNzY0ODkyYjQ2YzNiYmJlMDVi
NWE2OTAxNWQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTA4ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWxsb3cg
V0tDb250ZW50UnVsZUxpc3QgdG8gcnVuIHJlZ2V4ZXMgb24gY3VycmVudCBmcmFtZSdzIFVSTCwg
bm90IGp1c3QgdG9wIGZyYW1lJ3MgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM4ODkKKyAgICAgICAgPHJkYXI6Ly83MjIwMzM1Mj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6c2VyaWFsaXplQWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dlcik6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OlRyaWdnZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjp+VHJpZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisKIDIw
MjEtMTItMDggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gQWx3YXlzIHNldCBhdWRpbyBzZXNzaW9uIHByZWZlcnJlZCBpbnB1dCBhZnRlciBj
aGFuZ2luZyB0aGUgY2F0ZWdvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCmluZGV4IDQ5Mzcy
MjFhNzUwN2I3ZjgxNmQ0M2I5OTQyMDM3Yjg5ZDZkM2IxMmEuLjU4ZDI0MjBiZmY3ZmQwYzBmMmVi
ZjU3NzlmZjMwZDA2YzdjMDMyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0
LDggKzQ0LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2Ug
Q29udGVudEV4dGVuc2lvbnMgeworbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
IHsKIAogLy8gY3NzLWRpc3BsYXktbm9uZSBjb21iaW5pbmcgaXMgc3BlY2lhbCBiZWNhdXNlIHdl
IGNvbWJpbmUgdGhlIHN0cmluZyBhcmd1bWVudHMgd2l0aCBjb21tYXMgYmVjYXVzZSB3ZSBrbm93
IHRoZXkgYXJlIGNzcyBzZWxlY3RvcnMuCiBzdHJ1Y3QgUGVuZGluZ0Rpc3BsYXlOb25lQWN0aW9u
cyB7CkBAIC04Nyw5ICs4Niw3IEBAIHN0YXRpYyBWZWN0b3I8dW5zaWduZWQ+IHNlcmlhbGl6ZUFj
dGlvbnMoY29uc3QgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVsCiAgICAgUmVkaXJl
Y3RBY3Rpb25NYXAgcmVkaXJlY3RBY3Rpb25NYXA7CiAgICAgTW9kaWZ5SGVhZGVyc0FjdGlvbk1h
cCBtb2RpZnlIZWFkZXJzQWN0aW9uTWFwOwogCi0gICAgZm9yICh1bnNpZ25lZCBydWxlSW5kZXgg
PSAwOyBydWxlSW5kZXggPCBydWxlTGlzdC5zaXplKCk7ICsrcnVsZUluZGV4KSB7Ci0gICAgICAg
IGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBydWxlID0gcnVsZUxpc3RbcnVsZUluZGV4XTsK
LQorICAgIGZvciAoY29uc3QgYXV0byYgcnVsZSA6IHJ1bGVMaXN0KSB7CiAgICAgICAgIGF1dG8m
IGFjdGlvbkRhdGEgPSBydWxlLmFjdGlvbigpLmRhdGEoKTsKICAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SWdub3JlUHJldmlvdXNSdWxlc0FjdGlvbj4oYWN0aW9uRGF0YSkpIHsK
ICAgICAgICAgICAgIHJlc29sdmVQZW5kaW5nRGlzcGxheU5vbmVBY3Rpb25zKGFjdGlvbnMsIGFj
dGlvbkxvY2F0aW9ucywgY3NzRGlzcGxheU5vbmVBY3Rpb25zTWFwKTsKQEAgLTE3Myw3ICsxNzAs
NyBAQCBzdGF0aWMgVmVjdG9yPHVuc2lnbmVkPiBzZXJpYWxpemVBY3Rpb25zKGNvbnN0IFZlY3Rv
cjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mIHJ1bAogICAgIHJldHVybiBhY3Rpb25Mb2NhdGlvbnM7
CiB9CiAKLXR5cGVkZWYgSGFzaFNldDx1aW50NjRfdCwgRGVmYXVsdEhhc2g8dWludDY0X3Q+LCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gVW5pdmVyc2FsQWN0
aW9uU2V0OwordXNpbmcgVW5pdmVyc2FsQWN0aW9uU2V0ID0gSGFzaFNldDx1aW50NjRfdCwgRGVm
YXVsdEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj47CiAKIHN0YXRpYyB2b2lkIGFkZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShERkEmIGRm
YSwgVW5pdmVyc2FsQWN0aW9uU2V0JiYgdW5pdmVyc2FsQWN0aW9ucykKIHsKQEAgLTI4MSw2ICsy
NzgsNyBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25D
b21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbgogCiAgICAgYm9vbCBkb21haW5Db25kaXRp
b25TZWVuID0gZmFsc2U7CiAgICAgYm9vbCB0b3BVUkxDb25kaXRpb25TZWVuID0gZmFsc2U7Cisg
ICAgYm9vbCBmcmFtZVVSTENvbmRpdGlvblNlZW4gPSBmYWxzZTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHJ1bGUgOiBwYXJzZWRSdWxlTGlzdCkgewogICAgICAgICBzd2l0Y2ggKHJ1bGUudHJpZ2dl
cigpLmNvbmRpdGlvblR5cGUpIHsKICAgICAgICAgY2FzZSBUcmlnZ2VyOjpDb25kaXRpb25UeXBl
OjpOb25lOgpAQCAtMjkzLDYgKzI5MSwxMCBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVM
aXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbgogICAg
ICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6OlVubGVzc1RvcFVSTDoKICAgICAgICAg
ICAgIHRvcFVSTENvbmRpdGlvblNlZW4gPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6SWZGcmFtZVVSTDoKKyAgICAgICAgY2Fz
ZSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpVbmxlc3NGcmFtZVVSTDoKKyAgICAgICAgICAgIGZy
YW1lVVJMQ29uZGl0aW9uU2VlbiA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KICAgICBpZiAodG9wVVJMQ29uZGl0aW9uU2VlbiAmJiBkb21haW5Db25kaXRpb25T
ZWVuKQpAQCAtMzE3LDkgKzMxOSwxMSBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0
KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbgogICAgIENv
bWJpbmVkVVJMRmlsdGVycyBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnM7CiAgICAgQ29tYmluZWRV
UkxGaWx0ZXJzIGZpbHRlcnNXaXRoQ29uZGl0aW9uczsKICAgICBDb21iaW5lZFVSTEZpbHRlcnMg
dG9wVVJMRmlsdGVyczsKKyAgICBDb21iaW5lZFVSTEZpbHRlcnMgZnJhbWVVUkxGaWx0ZXJzOwog
ICAgIFVSTEZpbHRlclBhcnNlciBmaWx0ZXJzV2l0aG91dENvbmRpdGlvblBhcnNlcihmaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnMpOwogICAgIFVSTEZpbHRlclBhcnNlciBmaWx0ZXJzV2l0aENvbmRp
dGlvblBhcnNlcihmaWx0ZXJzV2l0aENvbmRpdGlvbnMpOwogICAgIFVSTEZpbHRlclBhcnNlciB0
b3BVUkxGaWx0ZXJQYXJzZXIodG9wVVJMRmlsdGVycyk7CisgICAgVVJMRmlsdGVyUGFyc2VyIGZy
YW1lVVJMRmlsdGVyUGFyc2VyKGZyYW1lVVJMRmlsdGVycyk7CiAgICAgCiAgICAgZm9yICh1bnNp
Z25lZCBydWxlSW5kZXggPSAwOyBydWxlSW5kZXggPCBwYXJzZWRSdWxlTGlzdC5zaXplKCk7ICsr
cnVsZUluZGV4KSB7CiAgICAgICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBjb250ZW50
RXh0ZW5zaW9uUnVsZSA9IHBhcnNlZFJ1bGVMaXN0W3J1bGVJbmRleF07CkBAIC0zNDYsMTEgKzM1
MCwxMyBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25D
b21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbgogICAgICAgICAgICAgc3dpdGNoICh0cmln
Z2VyLmNvbmRpdGlvblR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9u
VHlwZTo6SWZEb21haW46CiAgICAgICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6
OklmVG9wVVJMOgorICAgICAgICAgICAgY2FzZSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpJZkZy
YW1lVVJMOgogICAgICAgICAgICAgICAgIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MgfD0gSWZDb25k
aXRpb25GbGFnOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBUcmln
Z2VyOjpDb25kaXRpb25UeXBlOjpOb25lOgogICAgICAgICAgICAgY2FzZSBUcmlnZ2VyOjpDb25k
aXRpb25UeXBlOjpVbmxlc3NEb21haW46CiAgICAgICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRp
dGlvblR5cGU6OlVubGVzc1RvcFVSTDoKKyAgICAgICAgICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0
aW9uVHlwZTo6VW5sZXNzRnJhbWVVUkw6CiAgICAgICAgICAgICAgICAgQVNTRVJUKCEoYWN0aW9u
TG9jYXRpb25BbmRGbGFncyAmIElmQ29uZGl0aW9uRmxhZykpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMzY4LDYgKzM3NCw4IEBAIHN0ZDo6ZXJyb3JfY29kZSBj
b21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQs
IFN0cmluCiAgICAgICAgICAgICAgICAgaWYgKGRvbWFpbkNvbmRpdGlvblNlZW4pIHsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCF0b3BVUkxDb25kaXRpb25TZWVuKTsKICAgICAgICAgICAg
ICAgICAgICAgdG9wVVJMRmlsdGVycy5hZGREb21haW4oYWN0aW9uTG9jYXRpb25BbmRGbGFncywg
Y29uZGl0aW9uKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZyYW1lVVJMQ29uZGl0aW9u
U2VlbikgeworICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBmcmFtZVVSTEZpbHRlclBhcnNl
ci5hZGRQYXR0ZXJuKGNvbmRpdGlvbiwgdHJpZ2dlci5mcmFtZVVSTENvbmRpdGlvbklzQ2FzZVNl
bnNpdGl2ZSwgYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRvcFVSTENvbmRpdGlvblNlZW4pOwogICAg
ICAgICAgICAgICAgICAgICBzdGF0dXMgPSB0b3BVUkxGaWx0ZXJQYXJzZXIuYWRkUGF0dGVybihj
b25kaXRpb24sIHRyaWdnZXIudG9wVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlLCBhY3Rpb25M
b2NhdGlvbkFuZEZsYWdzKTsKQEAgLTQxNyw2ICs0MjUsMTEgQEAgc3RkOjplcnJvcl9jb2RlIGNv
bXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwg
U3RyaW4KICAgICB9KTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBDb250ZW50
RXh0ZW5zaW9uRXJyb3I6OkVycm9yV3JpdGluZ1NlcmlhbGl6ZWRORkE7CisgICAgc3VjY2VzcyA9
IGNvbXBpbGVUb0J5dGVjb2RlKFdURk1vdmUoZnJhbWVVUkxGaWx0ZXJzKSwgeyB9LCBbJl0oVmVj
dG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSB7CisgICAgICAgIGNsaWVudC53cml0ZUZyYW1l
VVJMRmlsdGVyc0J5dGVjb2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKKyAgICB9KTsKKyAgICBpZiAo
IXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkVycm9yV3Jp
dGluZ1NlcmlhbGl6ZWRORkE7CiAKICNpZiBDT05URU5UX0VYVEVOU0lPTlNfUEVSRk9STUFOQ0Vf
UkVQT1JUSU5HCiAgICAgTW9ub3RvbmljVGltZSB0b3RhbE5GQVRvQnl0ZUNvZGVCdWlsZFRpbWVF
bmQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTQyOCw3ICs0NDEsNiBAQCBzdGQ6OmVycm9y
X2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYg
Y2xpZW50LCBTdHJpbgogICAgIHJldHVybiB7IH07CiB9CiAKLX0gLy8gbmFtZXNwYWNlIENvbnRl
bnRFeHRlbnNpb25zCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9ucwogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25Db21waWxlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgKaW5kZXggZWIzMjk2YTA5Nzk0NzE0MjhjODkwMmRm
ZDYzN2IwNGMwZWRmMTlhYi4uNTMwMjY1MTY3ODY1NWQ3ZWYwYTlkOTUzM2ZlYmRkOTMwNjlmMTc0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbkNvbXBpbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgKQEAgLTMyLDggKzMyLDcgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUg
ewotbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK25hbWVzcGFjZSBXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9ucyB7CiAKIGNsYXNzIENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVu
dCB7CiBwdWJsaWM6CkBAIC00NSwxMiArNDQsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3cml0ZUZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29k
ZT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5
dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0
ZVRvcFVSTEZpbHRlcnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVGcmFtZVVSTEZpbHRlcnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNv
ZGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoKSA9IDA7CiB9OwogCiBXRUJD
T1JFX0VYUE9SVCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNp
b25Db21waWxhdGlvbkNsaWVudCYsIFN0cmluZyYmIHJ1bGVKU09OLCBWZWN0b3I8Q29udGVudEV4
dGVuc2lvblJ1bGU+JiYpOwogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnMKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Q
YXJzZXIuY3BwCmluZGV4IGJkNWNkMmZkYzRjMmNkMjcxZmZjZjAxZTNmNGZiMDE2MjdkYTk5ZTku
LmJiODZiZjA3NzAwMDJhMTUxMzc3MTY3M2UwNDAxNmE5MGJlZTVjZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Q
YXJzZXIuY3BwCkBAIC0xMTEsNiArMTExLDkgQEAgc3RhdGljIEV4cGVjdGVkPFRyaWdnZXIsIHN0
ZDo6ZXJyb3JfY29kZT4gbG9hZFRyaWdnZXIoY29uc3QgSlNPTjo6T2JqZWN0JiBydWxlT2IKICAg
ICBpZiAoc3RkOjpvcHRpb25hbDxib29sPiB0b3BVUkxGaWx0ZXJDYXNlU2Vuc2l0aXZlVmFsdWUg
PSB0cmlnZ2VyT2JqZWN0LT5nZXRCb29sZWFuKCJ0b3AtdXJsLWZpbHRlci1pcy1jYXNlLXNlbnNp
dGl2ZSIpKQogICAgICAgICB0cmlnZ2VyLnRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSA9
ICp0b3BVUkxGaWx0ZXJDYXNlU2Vuc2l0aXZlVmFsdWU7CiAKKyAgICBpZiAoc3RkOjpvcHRpb25h
bDxib29sPiBmcmFtZVVSTEZpbHRlckNhc2VTZW5zaXRpdmVWYWx1ZSA9IHRyaWdnZXJPYmplY3Qt
PmdldEJvb2xlYW4oImZyYW1lLXVybC1maWx0ZXItaXMtY2FzZS1zZW5zaXRpdmUiKSkKKyAgICAg
ICAgdHJpZ2dlci5mcmFtZVVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSA9ICpmcmFtZVVSTEZp
bHRlckNhc2VTZW5zaXRpdmVWYWx1ZTsKKwogICAgIGlmIChhdXRvIHJlc291cmNlVHlwZVZhbHVl
ID0gdHJpZ2dlck9iamVjdC0+Z2V0VmFsdWUoInJlc291cmNlLXR5cGUiKSkgewogICAgICAgICBh
dXRvIHJlc291cmNlVHlwZUFycmF5ID0gcmVzb3VyY2VUeXBlVmFsdWUtPmFzQXJyYXkoKTsKICAg
ICAgICAgaWYgKCFyZXNvdXJjZVR5cGVBcnJheSkKQEAgLTE2Niw2ICsxNjksMTIgQEAgc3RhdGlj
IEV4cGVjdGVkPFRyaWdnZXIsIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFRyaWdnZXIoY29uc3QgSlNP
Tjo6T2JqZWN0JiBydWxlT2IKICAgICBpZiAoYXV0byBlcnJvciA9IGNoZWNrQ29uZGl0aW9uKCJ1
bmxlc3MtdG9wLXVybCJfcywgZ2V0U3RyaW5nTGlzdCwgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6
VW5sZXNzVG9wVVJMKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKIAor
ICAgIGlmIChhdXRvIGVycm9yID0gY2hlY2tDb25kaXRpb24oImlmLWZyYW1lLXVybCJfcywgZ2V0
U3RyaW5nTGlzdCwgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6SWZGcmFtZVVSTCkpCisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvcik7CisKKyAgICBpZiAoYXV0byBlcnJvciA9IGNo
ZWNrQ29uZGl0aW9uKCJ1bmxlc3MtZnJhbWUtdXJsIl9zLCBnZXRTdHJpbmdMaXN0LCBUcmlnZ2Vy
OjpDb25kaXRpb25UeXBlOjpVbmxlc3NGcmFtZVVSTCkpCisgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChlcnJvcik7CisKICAgICByZXR1cm4gdHJpZ2dlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUu
Y3BwCmluZGV4IDU1M2Q2NTlkN2NjMDIyNDk5OTU1OWM2YzI0ZTQ0NzBlZmVlNDZhZWYuLjUxNzA2
MjFlYjM4NTQzYjc1MzMxMGMyMzhhMzViMjM4Zjc2MTE0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAK
QEAgLTEwMSw2ICsxMDEsNyBAQCBUcmlnZ2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CiAgICAgICAgIHVybEZpbHRlci5pc29sYXRlZENvcHkoKSwKICAgICAgICAgdXJsRmlsdGVySXND
YXNlU2Vuc2l0aXZlLAogICAgICAgICB0b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUsCisg
ICAgICAgIGZyYW1lVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICBmbGFncywK
ICAgICAgICAgY29uZGl0aW9ucy5pc29sYXRlZENvcHkoKSwKICAgICAgICAgY29uZGl0aW9uVHlw
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25SdWxlLmgKaW5kZXggZTJlMzk2ZDRmZTFhY2U2ZDE0ZjMxNDhkMjdiOWU2MjU1N2Uw
ODIyZS4uNDQxZTI5OTIxNTY4MjQyZDNjN2Y1MTZmY2Y1ZmI3ZGI0Y2E5YmJlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
UnVsZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTMyLDkgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK25hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9ucyB7CiAKIC8vIEEgQ29udGVudEV4dGVuc2lvblJ1bGUgaXMgdGhlIHNtYWxsZXN0IHVu
aXQgaW4gYSBDb250ZW50RXh0ZW5zaW9uLgogLy8KQEAgLTQ1LDE0ICs0MywxNyBAQCBzdHJ1Y3Qg
VHJpZ2dlciB7CiAgICAgU3RyaW5nIHVybEZpbHRlcjsKICAgICBib29sIHVybEZpbHRlcklzQ2Fz
ZVNlbnNpdGl2ZSB7IGZhbHNlIH07CiAgICAgYm9vbCB0b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5z
aXRpdmUgeyBmYWxzZSB9OworICAgIGJvb2wgZnJhbWVVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRp
dmUgeyBmYWxzZSB9OwogICAgIFJlc291cmNlRmxhZ3MgZmxhZ3MgeyAwIH07CiAgICAgVmVjdG9y
PFN0cmluZz4gY29uZGl0aW9uczsKLSAgICBlbnVtIGNsYXNzIENvbmRpdGlvblR5cGUgeworICAg
IGVudW0gY2xhc3MgQ29uZGl0aW9uVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLAogICAg
ICAgICBJZkRvbWFpbiwKICAgICAgICAgVW5sZXNzRG9tYWluLAogICAgICAgICBJZlRvcFVSTCwK
ICAgICAgICAgVW5sZXNzVG9wVVJMLAorICAgICAgICBJZkZyYW1lVVJMLAorICAgICAgICBVbmxl
c3NGcmFtZVVSTCwKICAgICB9IGNvbmRpdGlvblR5cGUgeyBDb25kaXRpb25UeXBlOjpOb25lIH07
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBUcmlnZ2VyIGlzb2xhdGVkQ29weSgpIGNvbnN0OwpAQCAt
NjIsNiArNjMsOCBAQCBzdHJ1Y3QgVHJpZ2dlciB7CiAgICAgICAgIEFTU0VSVChjb25kaXRpb25z
LmlzRW1wdHkoKSA9PSAoY29uZGl0aW9uVHlwZSA9PSBDb25kaXRpb25UeXBlOjpOb25lKSk7CiAg
ICAgICAgIGlmICh0b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUpCiAgICAgICAgICAgICBB
U1NFUlQoY29uZGl0aW9uVHlwZSA9PSBDb25kaXRpb25UeXBlOjpJZlRvcFVSTCB8fCBjb25kaXRp
b25UeXBlID09IENvbmRpdGlvblR5cGU6OlVubGVzc1RvcFVSTCk7CisgICAgICAgIGlmIChmcmFt
ZVVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSkKKyAgICAgICAgICAgIEFTU0VSVChjb25kaXRp
b25UeXBlID09IENvbmRpdGlvblR5cGU6OklmRnJhbWVVUkwgfHwgY29uZGl0aW9uVHlwZSA9PSBD
b25kaXRpb25UeXBlOjpVbmxlc3NGcmFtZVVSTCk7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QKQEAgLTY5LDYgKzcyLDcgQEAgc3RydWN0IFRyaWdnZXIgewogICAgICAgICByZXR1
cm4gdXJsRmlsdGVyLmlzRW1wdHkoKQogICAgICAgICAgICAgJiYgIXVybEZpbHRlcklzQ2FzZVNl
bnNpdGl2ZQogICAgICAgICAgICAgJiYgIXRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZQor
ICAgICAgICAgICAgJiYgIWZyYW1lVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlCiAgICAgICAg
ICAgICAmJiAhZmxhZ3MKICAgICAgICAgICAgICYmIGNvbmRpdGlvbnMuaXNFbXB0eSgpCiAgICAg
ICAgICAgICAmJiBjb25kaXRpb25UeXBlID09IENvbmRpdGlvblR5cGU6Ok5vbmU7CkBAIC03OSw2
ICs4Myw3IEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAgICAgICAgcmV0dXJuIHVybEZpbHRlciA9PSBv
dGhlci51cmxGaWx0ZXIKICAgICAgICAgICAgICYmIHVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9
PSBvdGhlci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKICAgICAgICAgICAgICYmIHRvcFVSTENv
bmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhlci50b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5z
aXRpdmUKKyAgICAgICAgICAgICYmIGZyYW1lVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlID09
IG90aGVyLmZyYW1lVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlCiAgICAgICAgICAgICAmJiBm
bGFncyA9PSBvdGhlci5mbGFncwogICAgICAgICAgICAgJiYgY29uZGl0aW9ucyA9PSBvdGhlci5j
b25kaXRpb25zCiAgICAgICAgICAgICAmJiBjb25kaXRpb25UeXBlID09IG90aGVyLmNvbmRpdGlv
blR5cGU7CkBAIC0xNzIsNyArMTc3LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBBY3Rpb24gbV9h
Y3Rpb247CiB9OwogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMK
IAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmNwcAppbmRleCBlNzljOWEwYTM2NzY0ZTU4MTQ0OTBkMDg1MDA1NWYyOGVhN2EyYjRjLi42
ODU1M2EwYzAwMjc1ODJiYTVhMzBiY2UwYmIyMjc3ZjE4OTVmM2YzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25z
QmFja2VuZC5jcHAKQEAgLTUwLDkgKzUwLDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK25hbWVzcGFjZSBXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9ucyB7CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9y
dCA8V2ViS2l0QWRkaXRpb25zL0NvbnRlbnRSdWxlTGlzdEFkZGl0aW9ucy5tbT4KQEAgLTExMCw2
ICsxMDgsOCBAQCBhdXRvIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291
cmNlTG9hZChjb25zdCBSZXNvdXJjZUxvYWRJbmZvJiByZQogCiAgICAgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcgPSByZXNvdXJjZUxvYWRJbmZvLnJlc291cmNlVVJMLnN0cmluZygpOwogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UodXJsU3RyaW5nLmlzQWxsQVNDSUkoKSwgIkEgZGVjb2RlZCBVUkwg
c2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzLiBUaGUgbWF0Y2hpbmcgYWxnb3Jp
dGhtIGFzc3VtZXMgdGhlIGlucHV0IGlzIEFTQ0lJLiIpOworICAgIC8vIEZJWE1FOiBVVEYtOCBj
b252ZXJzaW9uIHNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSB3aXRoIFVURi0xNiBTdHJpbmcgYmFz
ZWQgVVJMcywgd2hpY2ggYXJlIHJhcmUuCisgICAgLy8gREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6
aW50ZXJwcmV0IHNob3VsZCB0YWtlIGEgU3BhbjxjaGFyPiBpbnN0ZWFkIG9mIGEgQ1N0cmluZyBh
bmQgd2UgY2FuIGF2b2lkIHRoaXMgYWxsb2NhdGlvbiBtb3N0IG9mIHRoZSB0aW1lLgogICAgIGNv
bnN0IGF1dG8gdXJsQ1N0cmluZyA9IHVybFN0cmluZy51dGY4KCk7CiAKICAgICBWZWN0b3I8QWN0
aW9uc0Zyb21Db250ZW50UnVsZUxpc3Q+IGFjdGlvbnNWZWN0b3I7CkBAIC0xMTksMTQgKzExOSwx
OSBAQCBhdXRvIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNlTG9h
ZChjb25zdCBSZXNvdXJjZUxvYWRJbmZvJiByZQogICAgICAgICBBY3Rpb25zRnJvbUNvbnRlbnRS
dWxlTGlzdCBhY3Rpb25zU3RydWN0OwogICAgICAgICBhY3Rpb25zU3RydWN0LmNvbnRlbnRSdWxl
TGlzdElkZW50aWZpZXIgPSBjb250ZW50RXh0ZW5zaW9uLT5pZGVudGlmaWVyKCk7CiAKLSAgICAg
ICAgY29uc3QgQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uJiBjb21waWxlZEV4dGVuc2lvbiA9IGNv
bnRlbnRFeHRlbnNpb24tPmNvbXBpbGVkRXh0ZW5zaW9uKCk7CisgICAgICAgIGNvbnN0IGF1dG8m
IGNvbXBpbGVkRXh0ZW5zaW9uID0gY29udGVudEV4dGVuc2lvbi0+Y29tcGlsZWRFeHRlbnNpb24o
KTsKICAgICAgICAgCiAgICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aG91dENvbmRp
dGlvbnNJbnRlcnByZXRlcihjb21waWxlZEV4dGVuc2lvbi5maWx0ZXJzV2l0aG91dENvbmRpdGlv
bnNCeXRlY29kZSgpKTsKLSAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyB3
aXRob3V0Q29uZGl0aW9uc0FjdGlvbnMgPSB3aXRob3V0Q29uZGl0aW9uc0ludGVycHJldGVyLmlu
dGVycHJldCh1cmxDU3RyaW5nLCBmbGFncyk7CisgICAgICAgIGF1dG8gd2l0aG91dENvbmRpdGlv
bnNBY3Rpb25zID0gd2l0aG91dENvbmRpdGlvbnNJbnRlcnByZXRlci5pbnRlcnByZXQodXJsQ1N0
cmluZywgZmxhZ3MpOwogICAgICAgICAKICAgICAgICAgVVJMIHRvcFVSTCA9IHJlc291cmNlTG9h
ZEluZm8ubWFpbkRvY3VtZW50VVJMOwogICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdp
dGhDb25kaXRpb25zSW50ZXJwcmV0ZXIoY29tcGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhDb25k
aXRpb25zQnl0ZWNvZGUoKSk7Ci0gICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlv
bnMgd2l0aENvbmRpdGlvbnNBY3Rpb25zID0gd2l0aENvbmRpdGlvbnNJbnRlcnByZXRlci5pbnRl
cnByZXRXaXRoQ29uZGl0aW9ucyh1cmxDU3RyaW5nLCBmbGFncywgY29udGVudEV4dGVuc2lvbi0+
dG9wVVJMQWN0aW9ucyh0b3BVUkwpKTsKKyAgICAgICAgYXV0byB3aXRoQ29uZGl0aW9uc0FjdGlv
bnMgPSB3aXRoQ29uZGl0aW9uc0ludGVycHJldGVyLmludGVycHJldFdpdGhDb25kaXRpb25zKHVy
bENTdHJpbmcsIGZsYWdzLCBjb250ZW50RXh0ZW5zaW9uLT50b3BVUkxBY3Rpb25zKHRvcFVSTCkp
OworCisgICAgICAgIFVSTCBmcmFtZVVSTCA9IHJlc291cmNlTG9hZEluZm8uZnJhbWVVUkw7Cisg
ICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgZnJhbWVVUkxJbnRlcnByZXRlcihjb21waWxl
ZEV4dGVuc2lvbi5mcmFtZVVSTEZpbHRlcnNCeXRlY29kZSgpKTsKKyAgICAgICAgYXV0byBmcmFt
ZVVSTEFjdGlvbnMgPSBmcmFtZVVSTEludGVycHJldGVyLmludGVycHJldChmcmFtZVVSTC5zdHJp
bmcoKS51dGY4KCksIGZsYWdzKTsKKyAgICAgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyB3aXRo
IHRoaXMuIEkgbWlnaHQgbmVlZCBhbm90aGVyIGJpdCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBj
b25kaXRpb25zIGFyZSB0b3AgVVJMIGNvbmRpdGlvbnMgb3IgZnJhbWVVUkwgY29uZGl0aW9ucywg
bGlrZSBJZkNvbmRpdGlvbkZsYWcgYnV0IGFub3RoZXIgYml0LgogICAgICAgICAKICAgICAgICAg
YXV0byBzZXJpYWxpemVkQWN0aW9ucyA9IGNvbXBpbGVkRXh0ZW5zaW9uLnNlcmlhbGl6ZWRBY3Rp
b25zKCk7CiAgICAgICAgIApAQCAtMTgwLDYgKzE4NSw3IEBAIENvbnRlbnRSdWxlTGlzdFJlc3Vs
dHMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1bGVMaXN0c0Zvckxv
YWQoCiB7CiAgICAgRG9jdW1lbnQqIGN1cnJlbnREb2N1bWVudCA9IG51bGxwdHI7CiAgICAgVVJM
IG1haW5Eb2N1bWVudFVSTDsKKyAgICBVUkwgZnJhbWVVUkw7CiAgICAgYm9vbCBtYWluRnJhbWVD
b250ZXh0ID0gZmFsc2U7CiAKICAgICBpZiAoYXV0byogZnJhbWUgPSBpbml0aWF0aW5nRG9jdW1l
bnRMb2FkZXIuZnJhbWUoKSkgewpAQCAtMTkzLDggKzE5OSwxMyBAQCBDb250ZW50UnVsZUxpc3RS
ZXN1bHRzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNG
b3JMb2FkKAogICAgICAgICBlbHNlIGlmIChhdXRvKiBtYWluRG9jdW1lbnQgPSBmcmFtZS0+bWFp
bkZyYW1lKCkuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIG1haW5Eb2N1bWVudFVSTCA9IG1haW5E
b2N1bWVudC0+dXJsKCk7CiAgICAgfQorICAgIAorICAgIGlmIChjdXJyZW50RG9jdW1lbnQpCisg
ICAgICAgIGZyYW1lVVJMID0gY3VycmVudERvY3VtZW50LT51cmwoKTsKKyAgICBlbHNlCisgICAg
ICAgIGZyYW1lVVJMID0gdXJsOwogCi0gICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJ
bmZvID0geyB1cmwsIG1haW5Eb2N1bWVudFVSTCwgcmVzb3VyY2VUeXBlLCBtYWluRnJhbWVDb250
ZXh0IH07CisgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvIHsgdXJsLCBtYWlu
RG9jdW1lbnRVUkwsIGZyYW1lVVJMLCByZXNvdXJjZVR5cGUsIG1haW5GcmFtZUNvbnRleHQgfTsK
ICAgICBhdXRvIGFjdGlvbnMgPSBhY3Rpb25zRm9yUmVzb3VyY2VMb2FkKHJlc291cmNlTG9hZElu
Zm8pOwogCiAgICAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyByZXN1bHRzOwpAQCAtMjcxLDkgKzI4
Miw5IEBAIENvbnRlbnRSdWxlTGlzdFJlc3VsdHMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpw
cm9jZXNzQ29udGVudFJ1bGVMaXN0c0ZvckxvYWQoCiAgICAgcmV0dXJuIHJlc3VsdHM7CiB9CiAK
LUNvbnRlbnRSdWxlTGlzdFJlc3VsdHMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNz
Q29udGVudFJ1bGVMaXN0c0ZvclBpbmdMb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1h
aW5Eb2N1bWVudFVSTCkKK0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMgQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kOjpwcm9jZXNzQ29udGVudFJ1bGVMaXN0c0ZvclBpbmdMb2FkKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgY29uc3QgVVJMJiBmcmFtZVVSTCkKIHsKLSAg
ICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8gPSB7IHVybCwgbWFpbkRvY3VtZW50
VVJMLCBSZXNvdXJjZVR5cGU6OlBpbmcgfTsKKyAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNl
TG9hZEluZm8gPSB7IHVybCwgbWFpbkRvY3VtZW50VVJMLCBmcmFtZVVSTCwgUmVzb3VyY2VUeXBl
OjpQaW5nIH07CiAgICAgYXV0byBhY3Rpb25zID0gYWN0aW9uc0ZvclJlc291cmNlTG9hZChyZXNv
dXJjZUxvYWRJbmZvKTsKIAogICAgIENvbnRlbnRSdWxlTGlzdFJlc3VsdHMgcmVzdWx0czsKQEAg
LTM0MCw4ICszNTEsNiBAQCB2b2lkIGFwcGx5UmVzdWx0c1RvUmVxdWVzdChDb250ZW50UnVsZUxp
c3RSZXN1bHRzJiYgcmVzdWx0cywgUGFnZSogcGFnZSwgUmVzb3VyYwogICAgIH0KIH0KICAgICAK
LX0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRleCBm
ODU5YWVjOGJjNGQ2Nzk1YzI3NmEzYmYzMWNiMTBjYzIyNmQ4ZWRiLi5iM2ZkZjI2NjdlZTM1N2Ux
YThiYWQ5NmZiOWIwNzI0NDJhMTJhOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAtNzEs
NyArNzEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3R5bGVTaGVldENvbnRlbnRz
KiBnbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBj
b25zdDsKIAogICAgIENvbnRlbnRSdWxlTGlzdFJlc3VsdHMgcHJvY2Vzc0NvbnRlbnRSdWxlTGlz
dHNGb3JMb2FkKFBhZ2UmLCBjb25zdCBVUkwmLCBPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPiwgRG9j
dW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlciwgY29uc3QgVVJMJiByZWRpcmVj
dEZyb20pOwotICAgIFdFQkNPUkVfRVhQT1JUIENvbnRlbnRSdWxlTGlzdFJlc3VsdHMgcHJvY2Vz
c0NvbnRlbnRSdWxlTGlzdHNGb3JQaW5nTG9hZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5E
b2N1bWVudFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBw
cm9jZXNzQ29udGVudFJ1bGVMaXN0c0ZvclBpbmdMb2FkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
bWFpbkRvY3VtZW50VVJMLCBjb25zdCBVUkwmIGZyYW1lVVJMKTsKIAogICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcmIGRpc3BsYXlOb25lQ1NTUnVsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZEluZm8uaAppbmRleCBhOWFjMDdiZTliYjI5YTNiYmI5ZjdhZDVhZmM2YmUzNzg4
YTcxZDc1Li4xNjM5ZWEzZDQxNzEwYmY4YTdlNDNhMDUxYTRmMGJlYmMwNWM3YjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTg2LDYgKzg2LDcgQEAgc3Rk
OjpvcHRpb25hbDxPcHRpb25TZXQ8TG9hZENvbnRleHQ+PiByZWFkTG9hZENvbnRleHQoU3RyaW5n
Vmlldyk7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbyB7CiAgICAgVVJMIHJlc291cmNlVVJMOwog
ICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CisgICAgVVJMIGZyYW1lVVJMOwogICAgIE9wdGlvblNl
dDxSZXNvdXJjZVR5cGU+IHR5cGU7CiAgICAgYm9vbCBtYWluRnJhbWVDb250ZXh0IHsgZmFsc2Ug
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENo
ZWNrZXIuY3BwCmluZGV4IGIwYTQ4Y2Y1YzIyN2EyMDUxYWZjOWFhYzU3YzczNzBhOTFkZWJjYTgu
LmQ4NGNmY2YwYWJkMTFlNzUxOTE4ODA2ZGI2NGExNDkxYmM1NjdmN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQ3
NCw3ICs0NzQsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6cHJvY2Vzc0NvbnRlbnRSdWxl
TGlzdHNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlcwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byByZXN1bHRzID0gYmFja2VuZC5wcm9jZXNzQ29u
dGVudFJ1bGVMaXN0c0ZvclBpbmdMb2FkKHJlcXVlc3QudXJsKCksIG1fbWFpbkRvY3VtZW50VVJM
KTsKKyAgICAgICAgYXV0byByZXN1bHRzID0gYmFja2VuZC5wcm9jZXNzQ29udGVudFJ1bGVMaXN0
c0ZvclBpbmdMb2FkKHJlcXVlc3QudXJsKCksIG1fbWFpbkRvY3VtZW50VVJMLCBtX2ZyYW1lVVJM
KTsKICAgICAgICAgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmFwcGx5UmVzdWx0c1RvUmVx
dWVzdChDb250ZW50UnVsZUxpc3RSZXN1bHRzIHsgcmVzdWx0cyB9LCBudWxscHRyLCByZXF1ZXN0
KTsKICAgICAgICAgY2FsbGJhY2soQ29udGVudEV4dGVuc2lvblJlc3VsdCB7IFdURk1vdmUocmVx
dWVzdCksIHJlc3VsdHMgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCBiOWJjNWFjZTU0YTBhOTQ4MTM2YjMz
MmNiYjg3ZjA0YmMwMzNhNjMzLi4wNjNlNWY2YWI3ODFiM2ZjNWVmM2RlMTFjNDJkMDU4ZDA5N2Y1
NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmgKQEAgLTg1LDkgKzg1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudENy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3koY29uc3QgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSYgcGFyZW50Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSkgeyBtX3BhcmVudENyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kgPSBwYXJlbnRDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5OyB9
CiAgICAgdm9pZCBzZXRDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KGNvbnN0IFdlYkNvcmU6OkNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kmIGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpIHsgbV9j
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5ID0gY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTsgfQog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgdm9pZCBzZXRDb250ZW50RXh0ZW5z
aW9uQ29udHJvbGxlcihVUkwmJiBtYWluRG9jdW1lbnRVUkwsIHN0ZDo6b3B0aW9uYWw8VXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gaWRlbnRpZmllcikKKyAgICB2b2lkIHNldENvbnRl
bnRFeHRlbnNpb25Db250cm9sbGVyKFVSTCYmIG1haW5Eb2N1bWVudFVSTCwgVVJMJiYgZnJhbWVV
UkwsIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gaWRlbnRp
ZmllcikKICAgICB7CiAgICAgICAgIG1fbWFpbkRvY3VtZW50VVJMID0gV1RGTW92ZShtYWluRG9j
dW1lbnRVUkwpOworICAgICAgICBtX2ZyYW1lVVJMID0gV1RGTW92ZShmcmFtZVVSTCk7CiAgICAg
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAg
fQogI2VuZGlmCkBAIC0xNDgsNiArMTQ5LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpDcm9z
c09yaWdpbkVtYmVkZGVyUG9saWN5IG1fY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTsKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFVSTCBtX21haW5Eb2N1bWVudFVSTDsKKyAg
ICBVUkwgbV9mcmFtZVVSTDsKICAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXI+IG1fdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKaW5kZXggYzFlNDU1ODRlNDdmY2Y3YTNjNDk5NmIxZjRl
YzZmN2RhYWYzODkyOS4uN2YxZmU4NmY2NWJiOTQwNjgxNTE0YWVhN2U2ZDNlNTgwOGUxYzNmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtODcsNiArODcsNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7Cisg
ICAgVVJMIGZyYW1lVVJMOwogICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlk
NzIuLmViNTc0OTVmZWM5NzQ0MTA2OWNhNmY5YjI3ZWI0NWY1NmM2MDQ2NTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogICAgICAgICBt
X25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0UGFyZW50Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSht
X3BhcmFtZXRlcnMucGFyZW50Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk7CiAgICAgICAgIG1f
bmV0d29ya0xvYWRDaGVja2VyLT5zZXRDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KG1fcGFyYW1l
dGVycy5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lv
bkNvbnRyb2xsZXIoVVJMIHsgbV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCB9LCBtX3BhcmFt
ZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisgICAgICAgIG1fbmV0d29y
a0xvYWRDaGVja2VyLT5zZXRDb250ZW50RXh0ZW5zaW9uQ29udHJvbGxlcihVUkwgeyBtX3BhcmFt
ZXRlcnMubWFpbkRvY3VtZW50VVJMIH0sIFVSTCB7IHBhcmFtZXRlcnMuZnJhbWVVUkwgfSwgbV9w
YXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOwogI2VuZGlmCiAgICAg
fQogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcAppbmRleCAxMTQ4NTNlNDViNzI1MzM2NGM3NDdhNzFjYjJiNWFiOGNjMzhl
ZmQ1Li5lZmRiM2IwZDQxN2IyZjE2YTI3MzllMjg4NzBlNTYxYWYyOTY1Mjk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lk
IFBpbmdMb2FkOjppbml0aWFsaXplKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcykKICAg
ICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0UGFyZW50Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGlj
eShtX3BhcmFtZXRlcnMucGFyZW50Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk7CiAgICAgbV9u
ZXR3b3JrTG9hZENoZWNrZXItPnNldENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kobV9wYXJhbWV0
ZXJzLmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCi0gICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENvbnRlbnRFeHRlbnNpb25Db250
cm9sbGVyKFdURk1vdmUobV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCksIG1fcGFyYW1ldGVy
cy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtMb2FkQ2hl
Y2tlci0+c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShtX3BhcmFtZXRlcnMu
bWFpbkRvY3VtZW50VVJMKSwgV1RGTW92ZShtX3BhcmFtZXRlcnMuZnJhbWVVUkwpLCBtX3BhcmFt
ZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIC8v
IElmIHRoZSBzZXJ2ZXIgbmV2ZXIgcmVzcG9uZHMsIHRoaXMgb2JqZWN0IHdpbGwgaGFuZyBhcm91
bmQgZm9yZXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDM2YTZmNGZiMDdmMGFiOWRkYzdhNDYxOGZl
ZDQyMmVjMzg5NzQwMzUuLmU3NjFiOGMwN2E3NWZlNDIyZWYzNjIxNTUwMDg3NTZjODM1OGJlMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcApAQCAtMjc2LDcgKzI3Niw4IEBAIHN0YXRpYyBFeHBlY3RlZDxNYXBw
ZWREYXRhLCBzdGQ6OmVycm9yX2NvZGU+IGNvbXBpbGVkVG9GaWxlKFdURjo6U3RyaW5nJiYganNv
biwKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNXaXRob3V0Q29uZGl0
aW9uc0J5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZmlsdGVyc1dpdGhD
b25kaXRpb25CeXRlY29kZVdyaXR0ZW4pOwotICAgICAgICAgICAgQVNTRVJUKCFtX2NvbmRpdGlv
bkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX3RvcFVSTEZp
bHRlcnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX2ZyYW1lVVJMRmls
dGVyc0J5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBBU1NFUlQoIW1fYWN0aW9uc1dyaXR0
ZW4pOwogICAgICAgICAgICAgQVNTRVJUKCFtX3NvdXJjZVdyaXR0ZW4pOwogICAgICAgICAgICAg
d3JpdGVUb0ZpbGUoc291cmNlSlNPTi5pczhCaXQoKSk7CkBAIC0yOTUsMjEgKzI5NiwzMCBAQCBz
dGF0aWMgRXhwZWN0ZWQ8TWFwcGVkRGF0YSwgc3RkOjplcnJvcl9jb2RlPiBjb21waWxlZFRvRmls
ZShXVEY6OlN0cmluZyYmIGpzb24sCiAgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVj
b2RlV3JpdHRlbik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0aW9uRmlsdGVyc0J5dGVj
b2RlV3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fdG9wVVJMRmlsdGVyc0J5dGVjb2Rl
V3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVX
cml0dGVuKTsKICAgICAgICAgICAgIG1fZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVX
cml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKICAgICAgICAgICAgIHdyaXRlVG9GaWxlKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRp
dGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9jb25kaXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0
dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV90b3BVUkxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVu
KTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9mcmFtZVVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4p
OwogICAgICAgICAgICAgbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbiArPSBi
eXRlY29kZS5zaXplKCk7CiAgICAgICAgICAgICB3cml0ZVRvRmlsZShXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6RGF0YShieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICB2b2lkIHdyaXRlVG9wVVJMRmlsdGVyc0J5dGVjb2RlKFZlY3Rv
cjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgZmluYWwKICAgICAgICAgewotICAgICAgICAgICAg
bV9jb25kaXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghbV9mcmFtZVVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOworICAg
ICAgICAgICAgbV90b3BVUkxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNpemUo
KTsKKyAgICAgICAgICAgIHdyaXRlVG9GaWxlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhKGJ5
dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIHdyaXRlRnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5
dGVjb2RlKSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAgICBtX2ZyYW1lVVJMRmlsdGVyc0J5
dGVjb2RlV3JpdHRlbiArPSBieXRlY29kZS5zaXplKCk7CiAgICAgICAgICAgICB3cml0ZVRvRmls
ZShXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YShieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNp
emUoKSkpOwogICAgICAgICB9CiAKQEAgLTMxNyw3ICszMjcsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8
TWFwcGVkRGF0YSwgc3RkOjplcnJvcl9jb2RlPiBjb21waWxlZFRvRmlsZShXVEY6OlN0cmluZyYm
IGpzb24sCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZVdyaXR0ZW4pOwogICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNX
aXRoQ29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9jb25k
aXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV90b3BV
UkxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9hY3Rpb25z
V3JpdHRlbik7CiAgICAgICAgICAgICBtX2FjdGlvbnNXcml0dGVuICs9IGFjdGlvbnMuc2l6ZSgp
OwogICAgICAgICAgICAgbV9jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4gPSBjb25kaXRpb25z
QXBwbHlPbmx5VG9Eb21haW47CkBAIC0zMzAsNyArMzQwLDcgQEAgc3RhdGljIEV4cGVjdGVkPE1h
cHBlZERhdGEsIHN0ZDo6ZXJyb3JfY29kZT4gY29tcGlsZWRUb0ZpbGUoV1RGOjpTdHJpbmcmJiBq
c29uLAogICAgICAgICAgICAgbV9tZXRhRGF0YS5hY3Rpb25zU2l6ZSA9IG1fYWN0aW9uc1dyaXR0
ZW47CiAgICAgICAgICAgICBtX21ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVj
b2RlU2l6ZSA9IG1fZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVXcml0dGVuOwogICAg
ICAgICAgICAgbV9tZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUgPSBt
X2ZpbHRlcnNXaXRoQ29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuOwotICAgICAgICAgICAgbV9tZXRh
RGF0YS5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUgPSBtX2NvbmRpdGlvbkZpbHRlcnNC
eXRlY29kZVdyaXR0ZW47CisgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRpdGlvbmVkRmlsdGVy
c0J5dGVjb2RlU2l6ZSA9IG1fdG9wVVJMRmlsdGVyc0J5dGVjb2RlV3JpdHRlbjsKICAgICAgICAg
ICAgIG1fbWV0YURhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluID0gbV9jb25kaXRpb25z
QXBwbHlPbmx5VG9Eb21haW47CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFdlYktpdDo6TmV0
d29ya0NhY2hlOjpEYXRhIGhlYWRlciA9IGVuY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKG1f
bWV0YURhdGEpOwpAQCAtMzYwLDcgKzM3MCw4IEBAIHN0YXRpYyBFeHBlY3RlZDxNYXBwZWREYXRh
LCBzdGQ6OmVycm9yX2NvZGU+IGNvbXBpbGVkVG9GaWxlKFdURjo6U3RyaW5nJiYganNvbiwKICAg
ICAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1fbWV0YURhdGE7CiAgICAgICAgIHNpemVf
dCBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsKICAgICAg
ICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4geyAwIH07Ci0g
ICAgICAgIHNpemVfdCBtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4geyAwIH07Cisg
ICAgICAgIHNpemVfdCBtX3RvcFVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4geyAwIH07CisgICAg
ICAgIHNpemVfdCBtX2ZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsKICAgICAg
ICAgc2l6ZV90IG1fYWN0aW9uc1dyaXR0ZW4geyAwIH07CiAgICAgICAgIHNpemVfdCBtX3NvdXJj
ZVdyaXR0ZW4geyAwIH07CiAgICAgICAgIGJvb2wgbV9jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21h
aW4geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGVjMDZhNTJkMDgyZmI1NGMzYTEyOGMyMDJj
ZjlmYTRiYzFmNWIzOTMuLmMzZGYxNTNlMGU2YTI3ZmI2NzA0MTcwMDNhMzRkMzBiODFjNTVjMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKQEAgLTM2MSw2ICszNjEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNl
TAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGRvY3VtZW50KSB7CiAg
ICAgICAgIGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1
bWVudCgpLnVybCgpOworICAgICAgICBsb2FkUGFyYW1ldGVycy5mcmFtZVVSTCA9IGRvY3VtZW50
LT51cmwoKTsKICAgICAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcGFzc2luZyB1c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyLCB0aGUgTmV0d29ya1Byb2Nlc3Mgc2hvdWxkIGJlIGFibGUg
dG8gZ2V0IGl0IHVzaW5nIHdlYlBhZ2VJZC4KICAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSB3
ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyKQogICAgICAgICAgICAgbG9hZFBh
cmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciA9IHdlYlBhZ2UtPnVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIoKTsKQEAgLTc1Miw2ICs3NTMsNyBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjbwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBs
b2FkUGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwgPSBkb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51
cmwoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5mcmFtZVVSTCA9IGRvY3VtZW50LT51cmwoKTsKICAg
ICAvLyBGSVhNRTogSW5zdGVhZCBvZiBwYXNzaW5nIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIsIHdlIHNob3VsZCBqdXN0IHBhc3Mgd2ViUGFnZUlkIHRvIE5ldHdvcmtQcm9jZXNzLgog
ICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSB3ZWJQ
YWdlLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMu
Y3BwCmluZGV4IGM4M2U4NzgyMDM2MTMwMmRlZmFhNWY0ZTEzYjNlZTkwZjczMGY4MjQuLjJkZTg2
ZGFmNmU5OTFjNjkyZWI2MzJkN2M5OGEyMDFlYTdmYzE1ODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAt
NzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLmZpbHRlcnNXaXRo
b3V0Q29uZGl0aW9ucy5zaXplKCksIDB1bGwpOwogICAgICAgICBFWFBFQ1RfRVEoZGF0YS5maWx0
ZXJzV2l0aENvbmRpdGlvbnMuc2l6ZSgpLCAwdWxsKTsKICAgICAgICAgRVhQRUNUX0VRKGRhdGEu
dG9wVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOworICAgICAgICBFWFBFQ1RfRVEoZGF0YS5mcmFt
ZVVSTEZpbHRlcnMuc2l6ZSgpLCAwdWxsKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEVYUEVDVF9FUShtX2RhdGEuZmlsdGVyc1dpdGhvdXRD
b25kaXRpb25zLnNpemUoKSwgMHVsbCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2RhdGEuZmlsdGVy
c1dpdGhDb25kaXRpb25zLnNpemUoKSwgMHVsbCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2RhdGEu
dG9wVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOworICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmZy
YW1lVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmFj
dGlvbnMuc2l6ZSgpLCAwdWxsKTsKICAgICAgICAgbV9kYXRhLmFjdGlvbnMuYXBwZW5kVmVjdG9y
KGFjdGlvbnMpOwogICAgICAgICBtX2RhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluID0g
Y29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwpAQCAtMTAxLDYgKzEwMyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6ZWQpOwogICAgICAgICBFWFBFQ1RfRVEobV9k
YXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5zaXplKCksIDB1bGwpOwogICAgICAgICBFWFBFQ1Rf
RVEobV9kYXRhLnRvcFVSTEZpbHRlcnMuc2l6ZSgpLCAwdWxsKTsKKyAgICAgICAgRVhQRUNUX0VR
KG1fZGF0YS5mcmFtZVVSTEZpbHRlcnMuc2l6ZSgpLCAwdWxsKTsKICAgICAgICAgbV9kYXRhLmZp
bHRlcnNXaXRob3V0Q29uZGl0aW9ucy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwogICAgIH0KICAg
ICAKQEAgLTEwOCwxNSArMTExLDIzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBFWFBFQ1Rf
RkFMU0UoZmluYWxpemVkKTsKICAgICAgICAgRVhQRUNUX0VRKG1fZGF0YS50b3BVUkxGaWx0ZXJz
LnNpemUoKSwgMHVsbCk7CisgICAgICAgIEVYUEVDVF9FUShtX2RhdGEuZnJhbWVVUkxGaWx0ZXJz
LnNpemUoKSwgMHVsbCk7CiAgICAgICAgIG1fZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMuYXBw
ZW5kVmVjdG9yKGJ5dGVjb2RlKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB3cml0ZVRvcFVSTEZp
bHRlcnNCeXRlY29kZShWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlPiYmIGJ5
dGVjb2RlKSBmaW5hbAogICAgIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbmFsaXplZCk7Cisg
ICAgICAgIEVYUEVDVF9FUShtX2RhdGEuZnJhbWVVUkxGaWx0ZXJzLnNpemUoKSwgMHVsbCk7CiAg
ICAgICAgIG1fZGF0YS50b3BVUkxGaWx0ZXJzLmFwcGVuZFZlY3RvcihieXRlY29kZSk7CiAgICAg
fQotICAgIAorCisgICAgdm9pZCB3cml0ZUZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxD
b250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCisgICAgewor
ICAgICAgICBFWFBFQ1RfRkFMU0UoZmluYWxpemVkKTsKKyAgICAgICAgbV9kYXRhLmZyYW1lVVJM
RmlsdGVycy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOworICAgIH0KKwogICAgIHZvaWQgZmluYWxp
emUoKSBmaW5hbAogICAgIHsKICAgICAgICAgZmluYWxpemVkID0gdHJ1ZTsKQEAgLTE4NCwxNCAr
MTk1LDE2IEBAIHZvaWQgc3RhdGljIHRlc3RSZXF1ZXN0KGNvbnN0IENvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIGNvbnRlCiAgICAgRVhQRUNUX0VRKGFjdGlvbnMu
c2Vjb25kLnNpemUoKSwgc3R5bGVzaGVldHMpOwogfQogCi1zdGF0aWMgUmVzb3VyY2VMb2FkSW5m
byBtYWluRG9jdW1lbnRSZXF1ZXN0KGNvbnN0IGNoYXIqIHVybCwgUmVzb3VyY2VUeXBlIHJlc291
cmNlVHlwZSA9IFJlc291cmNlVHlwZTo6RG9jdW1lbnQpCitzdGF0aWMgUmVzb3VyY2VMb2FkSW5m
byBtYWluRG9jdW1lbnRSZXF1ZXN0KGNvbnN0IGNoYXIqIHVybFN0cmluZywgUmVzb3VyY2VUeXBl
IHJlc291cmNlVHlwZSA9IFJlc291cmNlVHlwZTo6RG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIHsg
VVJMKFVSTCgpLCB1cmwpLCBVUkwoVVJMKCksIHVybCksIHJlc291cmNlVHlwZSB9OworICAgIFVS
TCB1cmwoVVJMKCksIHVybFN0cmluZyk7CisgICAgcmV0dXJuIHsgdXJsLCB1cmwsIHVybCwgcmVz
b3VyY2VUeXBlIH07CiB9CiAKLXN0YXRpYyBSZXNvdXJjZUxvYWRJbmZvIHN1YlJlc291cmNlUmVx
dWVzdChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG1haW5Eb2N1bWVudFVSTCwgUmVzb3Vy
Y2VUeXBlIHJlc291cmNlVHlwZSA9IFJlc291cmNlVHlwZTo6RG9jdW1lbnQpCitzdGF0aWMgUmVz
b3VyY2VMb2FkSW5mbyBzdWJSZXNvdXJjZVJlcXVlc3QoY29uc3QgY2hhciogdXJsLCBjb25zdCBj
aGFyKiBtYWluRG9jdW1lbnRVUkxTdHJpbmcsIFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUgPSBS
ZXNvdXJjZVR5cGU6OkRvY3VtZW50KQogewotICAgIHJldHVybiB7IFVSTChVUkwoKSwgdXJsKSwg
VVJMKFVSTCgpLCBtYWluRG9jdW1lbnRVUkwpLCByZXNvdXJjZVR5cGUgfTsKKyAgICBVUkwgbWFp
bkRvY3VtZW50VVJMKFVSTCgpLCBtYWluRG9jdW1lbnRVUkxTdHJpbmcpOworICAgIHJldHVybiB7
IFVSTChVUkwoKSwgdXJsKSwgbWFpbkRvY3VtZW50VVJMLCBtYWluRG9jdW1lbnRVUkwsIHJlc291
cmNlVHlwZSB9OwogfQogCiBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kIG1ha2VCYWNrZW5kKGNvbnN0IGNoYXIqIGpzb24pCkBAIC0xMTIzLDEzICsxMTM2LDEzIEBA
IFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgTG9hZFR5cGUpCiAgICAgICAgICJ7XCJhY3Rp
b25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJh
bHdheXNibG9jay5wZGZcIn19XSIpOwogICAgIAogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1h
aW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnIiksIHsgfSk7Ci0gICAgdGVzdFJl
cXVlc3QoYmFja2VuZCwgeyBVUkwoVVJMKCksICJodHRwOi8vd2Via2l0Lm9yZyIpLCBVUkwoVVJM
KCksICJodHRwOi8vbm90X3dlYmtpdC5vcmciKSwgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCB9LCB7
IHZhcmlhbnRJbmRleDxDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tMb2FkQWN0aW9uPiB9KTsKKyAg
ICB0ZXN0UmVxdWVzdChiYWNrZW5kLCB7IFVSTChVUkwoKSwgImh0dHA6Ly93ZWJraXQub3JnIiks
IFVSTChVUkwoKSwgImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8v
bm90X3dlYmtpdC5vcmciKSwgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCB9LCB7IHZhcmlhbnRJbmRl
eDxDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tMb2FkQWN0aW9uPiB9KTsKICAgICAgICAgCiAgICAg
dGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3doYXR3Zy5v
cmciKSwgeyB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrTG9hZEFjdGlvbj4g
fSk7Ci0gICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgeyBVUkwoVVJMKCksICJodHRwOi8vd2hhdHdn
Lm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90X3doYXR3Zy5vcmciKSwgUmVzb3VyY2VUeXBl
OjpEb2N1bWVudCB9LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIHsgVVJMKFVSTCgp
LCAiaHR0cDovL3doYXR3Zy5vcmciKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF93aGF0d2cub3Jn
IiksIFVSTChVUkwoKSwgImh0dHA6Ly9ub3Rfd2hhdHdnLm9yZyIpLCBSZXNvdXJjZVR5cGU6OkRv
Y3VtZW50IH0sIHsgfSk7CiAgICAgCiAgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3Vt
ZW50UmVxdWVzdCgiaHR0cDovL2Zvb2Jhci5vcmcvYWx3YXlzYmxvY2sucGRmIiksIHsgdmFyaWFu
dEluZGV4PENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja0xvYWRBY3Rpb24+IH0pOwotICAgIHRlc3RS
ZXF1ZXN0KGJhY2tlbmQsIHsgVVJMKFVSTCgpLCAiaHR0cDovL2Zvb2Jhci5vcmcvYWx3YXlzYmxv
Y2sucGRmIiksIFVSTChVUkwoKSwgImh0dHA6Ly9ub3RfZm9vYmFyLm9yZy9hbHdheXNibG9jay5w
ZGYiKSwgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCB9LCB7IHZhcmlhbnRJbmRleDxDb250ZW50RXh0
ZW5zaW9uczo6QmxvY2tMb2FkQWN0aW9uPiB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCB7
IFVSTChVUkwoKSwgImh0dHA6Ly9mb29iYXIub3JnL2Fsd2F5c2Jsb2NrLnBkZiIpLCBVUkwoVVJM
KCksICJodHRwOi8vbm90X2Zvb2Jhci5vcmcvYWx3YXlzYmxvY2sucGRmIiksIFVSTChVUkwoKSwg
Imh0dHA6Ly9ub3RfZm9vYmFyLm9yZy9hbHdheXNibG9jay5wZGYiKSwgUmVzb3VyY2VUeXBlOjpE
b2N1bWVudCB9LCB7IHZhcmlhbnRJbmRleDxDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tMb2FkQWN0
aW9uPiB9KTsKIH0KIAogVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBSZXNvdXJjZVR5cGUp
CkBAIC0xMTY2LDggKzExNzksOCBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFJlc291
cmNlT3JMb2FkVHlwZU1hdGNoaW5nRXZlcnl0aGluZykKICAgICAgICAgIntcImFjdGlvblwiOntc
InR5cGVcIjpcImlnbm9yZS1wcmV2aW91cy1ydWxlc1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmls
dGVyXCI6XCIuKlwiLFwibG9hZC10eXBlXCI6W1wiZmlyc3QtcGFydHlcIl19fV0iKTsKICAgICAK
ICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Vi
a2l0Lm9yZyIpLCB7IH0sIDApOwotICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIHsgVVJMKFVSTCgp
LCAiaHR0cDovL3dlYmtpdC5vcmciKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF93ZWJraXQub3Jn
IiksIFJlc291cmNlVHlwZTo6RG9jdW1lbnQgfSwgeyB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVu
c2lvbnM6OkJsb2NrQ29va2llc0FjdGlvbj4gfSk7Ci0gICAgdGVzdFJlcXVlc3QoYmFja2VuZCwg
eyBVUkwoVVJMKCksICJodHRwOi8vd2Via2l0Lm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90
X3dlYmtpdC5vcmciKSwgUmVzb3VyY2VUeXBlOjpJbWFnZSB9LCB7IHZhcmlhbnRJbmRleDxDb250
ZW50RXh0ZW5zaW9uczo6QmxvY2tDb29raWVzQWN0aW9uPiwgdmFyaWFudEluZGV4PENvbnRlbnRF
eHRlbnNpb25zOjpCbG9ja0xvYWRBY3Rpb24+IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQs
IHsgVVJMKFVSTCgpLCAiaHR0cDovL3dlYmtpdC5vcmciKSwgVVJMKFVSTCgpLCAiaHR0cDovL25v
dF93ZWJraXQub3JnIiksIFVSTChVUkwoKSwgImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZyIpLCBSZXNv
dXJjZVR5cGU6OkRvY3VtZW50IH0sIHsgdmFyaWFudEluZGV4PENvbnRlbnRFeHRlbnNpb25zOjpC
bG9ja0Nvb2tpZXNBY3Rpb24+IH0pOworICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIHsgVVJMKFVS
TCgpLCAiaHR0cDovL3dlYmtpdC5vcmciKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF93ZWJraXQu
b3JnIiksIFVSTChVUkwoKSwgImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZyIpLCBSZXNvdXJjZVR5cGU6
OkltYWdlIH0sIHsgdmFyaWFudEluZGV4PENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja0Nvb2tpZXNB
Y3Rpb24+LCB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrTG9hZEFjdGlvbj4g
fSk7CiB9CiAgICAgCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFdpZGVORkEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446854</attachid>
            <date>2021-12-10 18:30:24 -0800</date>
            <delta_ts>2021-12-13 15:29:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233889-20211210183024.patch</filename>
            <type>text/plain</type>
            <size>102509</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ZmUxZjhmNDNjODdk
MWYwMDdlNzkyY2I0NjIxN2YzMDlmOTgxNy4uMTA1OWE1MDA3NTNkZDUwZjhmZDM3MzhhNWU0MTAx
YmRmNGQ3MjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTEwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWxsb3cg
V0tDb250ZW50UnVsZUxpc3QgdG8gcnVuIHJlZ2V4ZXMgb24gY3VycmVudCBmcmFtZSdzIFVSTCwg
bm90IGp1c3QgdG9wIGZyYW1lJ3MgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM4ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4dGVu
c2lvbi5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246
OkNvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb246OmNvbXBpbGVHbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnBv
cHVsYXRlVG9wVVJMQWN0aW9uQ2FjaGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbjo6cG9wdWxhdGVGcmFtZVVSTEFj
dGlvbkNhY2hlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnRvcFVSTEFjdGlvbnMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OmZyYW1lVVJMQWN0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVu
dEV4dGVuc2lvbjo6cG9wdWxhdGVDb25kaXRpb25DYWNoZUlmTmVlZGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjp0b3BV
UkxBY3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uOjp1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjp1bml2
ZXJzYWxBY3Rpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uOjp1bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMpOiBE
ZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21w
aWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c2VyaWFsaXpl
QWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1
bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29t
cGlsZXIuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dl
cik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRyaWdnZXI6Omlzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
blJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjp+
VHJpZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6
aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJp
Z2dlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGcm9tQ29udGVudFJ1bGVM
aXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6
cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVs
ZUxpc3RzRm9yUGluZ0xvYWQpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVj
b2RlLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21w
aWxlcjo6ZW1pdEFwcGVuZEFjdGlvbik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZB
Qnl0ZWNvZGVJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6Z2V0Qml0cyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aGFz
RmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omhhc0FjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnBy
ZXRlcjo6aW50ZXJwcmV0QXBwZW5kQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRUZXN0RmxhZ3NBbmRB
cHBlbmRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXI6OmFjdGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVy
cHJldCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6bWF0Y2hlc0NvbmRp
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZB
Qnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0V2l0aENvbmRpdGlvbnMpOiBEZWxldGVkLgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3Bw
OgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmg6CisKIDIwMjEtMTItMTAgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3Zl
IGlmLWRvbWFpbiBhbmQgdW5sZXNzLWRvbWFpbiBjb252ZXJzaW9uIHRvIFdLQ29udGVudFJ1bGVM
aXN0IHBhcnNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTAzY2E1NzE4YWQ4YTE3ZmIzOTU0NDJiNTFlZTQyYmY2
YmNhYTQ5MC4uOWI1YmU1MzkyZmQ0OTY0Zjc4NDE0YTk3MDU2YmQwNzU0ZTM0N2NkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0xMi0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFsbG93IFdLQ29udGVudFJ1bGVMaXN0IHRv
IHJ1biByZWdleGVzIG9uIGN1cnJlbnQgZnJhbWUncyBVUkwsIG5vdCBqdXN0IHRvcCBmcmFtZSdz
IFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
ODg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmg6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBp
bmdMb2FkOjppbml0aWFsaXplKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlz
dDo6dXJsRmlsdGVyc0J5dGVjb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3Q6OmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6
OmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE6OldlYkNvbXBpbGVkQ29udGVudFJ1bGVM
aXN0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhOjpmaWxlU2l6ZSBj
b25zdCk6CisgICAgICAgIChBUEk6OmVuY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKToKKyAg
ICAgICAgKEFQSTo6ZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEpOgorICAgICAgICAoQVBJ
Ojpjb21waWxlZFRvRmlsZSk6CisgICAgICAgIChBUEk6OmNyZWF0ZUV4dGVuc2lvbik6CisgICAg
ICAgIChBUEk6OmdldENvbnRlbnRSdWxlTGlzdFNvdXJjZUZyb21NYXBwZWRGaWxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKToKKwogMjAy
MS0xMi0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIE1vdmUgaWYtZG9tYWluIGFuZCB1bmxlc3MtZG9tYWluIGNvbnZlcnNpb24gdG8gV0tD
b250ZW50UnVsZUxpc3QgcGFyc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNpb24uaAppbmRleCBlNjYxMTZh
ZjlkMTgzYWY2NDg3YjFkNGFlYzk0YjI0ZWRkY2UzYmQ5Li4wZmIwZjEzOTkxZDNjMjYyNmYwNWU5
ZDA2YjkyYmQzYzkwM2U5ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRlbnNpb24uaApAQCAtMzgsOCArMzgs
NyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBDb21waWxlZENvbnRlbnRFeHRlbnNpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29tcAogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbigpOwogCi0gICAgdmlydHVhbCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgU3Bhbjxjb25zdCB1aW50OF90PiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNwYW48Y29uc3QgdWludDhfdD4gdXJsRmlsdGVyc0J5dGVj
b2RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3Bhbjxjb25zdCB1aW50OF90PiB0b3BVUkxG
aWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+IGZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3Bh
bjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVkQWN0aW9ucygpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAK
aW5kZXggZTg3YzQyMWI2NzdjM2E0OGE0MGE5OWU2NGIzOGRlYjFkYjM1YzgzYi4uZWY2NjM5YjQ4
NjQ2MmQ4MDY3ZTE0NDViYzVmNDJlOTM3ZDE4Mjk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKQEAgLTQ1LDIxICs0
NSwxMyBAQCBDb250ZW50RXh0ZW5zaW9uOjpDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgUmVmPENvbXBpbGVkQ29udGVudAogICAgICwgbV9jb21waWxlZEV4dGVuc2lv
bihXVEZNb3ZlKGNvbXBpbGVkRXh0ZW5zaW9uKSkKICAgICAsIG1fZXh0ZW5zaW9uQmFzZVVSTChX
VEZNb3ZlKGV4dGVuc2lvbkJhc2VVUkwpKQogewotICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIg
d2l0aG91dENvbmRpdGlvbnMobV9jb21waWxlZEV4dGVuc2lvbi0+ZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGUoKSk7Ci0gICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciB3aXRoQ29uZGl0
aW9ucyhtX2NvbXBpbGVkRXh0ZW5zaW9uLT5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgp
KTsKLSAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IHdpdGhvdXRDb25kaXRpb25zLmFjdGlvbnNN
YXRjaGluZ0V2ZXJ5dGhpbmcoKSkgewotICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGFjdGlvbikgPT0gYWN0aW9uKTsKLSAgICAgICAgbV91bml2ZXJzYWxBY3Rpb25zV2l0aG91
dENvbmRpdGlvbnMuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb24pKTsKLSAgICB9
Ci0gICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiB3aXRoQ29uZGl0aW9ucy5hY3Rpb25zTWF0Y2hp
bmdFdmVyeXRoaW5nKCkpIHsKLSAgICAgICAgQVNTRVJUKChhY3Rpb24gJiB+SWZDb25kaXRpb25G
bGFnKSA9PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0aW9uKSk7Ci0gICAgICAgIG1fdW5pdmVy
c2FsQWN0aW9uc1dpdGhDb25kaXRpb25zLmFwcGVuZChhY3Rpb24pOwotICAgIH0KKyAgICBERkFC
eXRlY29kZUludGVycHJldGVyIGludGVycHJldGVyKG1fY29tcGlsZWRFeHRlbnNpb24tPnVybEZp
bHRlcnNCeXRlY29kZSgpKTsKKyAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IGludGVycHJldGVy
LmFjdGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcoKSkKKyAgICAgICAgbV91bml2ZXJzYWxBY3Rpb25z
LmFwcGVuZChhY3Rpb24pOwogCiAgICAgaWYgKHNob3VsZENvbXBpbGVDU1MgPT0gU2hvdWxkQ29t
cGlsZUNTUzo6WWVzKQogICAgICAgICBjb21waWxlR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0
KCk7Ci0gICAgbV91bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMuc2hyaW5rVG9GaXQo
KTsKLSAgICBtX3VuaXZlcnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9ucy5zaHJpbmtUb0ZpdCgpOwor
ICAgIG1fdW5pdmVyc2FsQWN0aW9ucy5zaHJpbmtUb0ZpdCgpOwogfQogCiB1aW50MzJfdCBDb250
ZW50RXh0ZW5zaW9uOjpmaW5kRmlyc3RJZ25vcmVQcmV2aW91c1J1bGVzKCkgY29uc3QKQEAgLTkx
LDcgKzgzLDcgQEAgdm9pZCBDb250ZW50RXh0ZW5zaW9uOjpjb21waWxlR2xvYmFsRGlzcGxheU5v
bmVTdHlsZVNoZWV0KCkKICAgICB9OwogICAgIAogICAgIFN0cmluZ0J1aWxkZXIgY3NzOwotICAg
IGZvciAodWludDMyX3QgdW5pdmVyc2FsQWN0aW9uTG9jYXRpb24gOiBtX3VuaXZlcnNhbEFjdGlv
bnNXaXRob3V0Q29uZGl0aW9ucykgeworICAgIGZvciAodWludDY0X3QgdW5pdmVyc2FsQWN0aW9u
TG9jYXRpb24gOiBtX3VuaXZlcnNhbEFjdGlvbnMpIHsKICAgICAgICAgaWYgKGluR2xvYmFsRGlz
cGxheU5vbmVTdHlsZVNoZWV0KHVuaXZlcnNhbEFjdGlvbkxvY2F0aW9uKSkgewogICAgICAgICAg
ICAgaWYgKCFjc3MuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNzcy5hcHBlbmQoJywnKTsK
QEAgLTExMyw0NCArMTA1LDUzIEBAIHZvaWQgQ29udGVudEV4dGVuc2lvbjo6Y29tcGlsZUdsb2Jh
bERpc3BsYXlOb25lU3R5bGVTaGVldCgpCiAgICAgICAgIG1fZ2xvYmFsRGlzcGxheU5vbmVTdHls
ZVNoZWV0ID0gbnVsbHB0cjsKIAogICAgIC8vIFRoZXNlIGFjdGlvbnMgZG9uJ3QgbmVlZCB0byBi
ZSBhcHBsaWVkIGluZGl2aWR1YWxseSBhbnkgbW9yZS4gVGhleSB3aWxsIGFsbCBiZSBhcHBsaWVk
IHRvIGV2ZXJ5IHBhZ2UgYXMgYSBwcmVjb21waWxlZCBzdHlsZSBzaGVldC4KLSAgICBtX3VuaXZl
cnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9ucy5yZW1vdmVBbGxNYXRjaGluZyhpbkdsb2JhbERp
c3BsYXlOb25lU3R5bGVTaGVldCk7CisgICAgbV91bml2ZXJzYWxBY3Rpb25zLnJlbW92ZUFsbE1h
dGNoaW5nKGluR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KTsKIH0KIAotdm9pZCBDb250ZW50
RXh0ZW5zaW9uOjpwb3B1bGF0ZUNvbmRpdGlvbkNhY2hlSWZOZWVkZWQoY29uc3QgVVJMJiB0b3BV
UkwpCit2b2lkIENvbnRlbnRFeHRlbnNpb246OnBvcHVsYXRlVG9wVVJMQWN0aW9uQ2FjaGVJZk5l
ZWRlZChjb25zdCBVUkwmIHRvcFVSTCkgY29uc3QKIHsKLSAgICBpZiAobV9jYWNoZWRUb3BVUkwg
IT0gdG9wVVJMKSB7Ci0gICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIo
bV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkpOwotICAgICAgICBj
b25zdGV4cHIgUmVzb3VyY2VGbGFncyBhbGxMb2FkVHlwZXNBbmRSZXNvdXJjZVR5cGVzID0gTG9h
ZFR5cGVNYXNrIHwgUmVzb3VyY2VUeXBlTWFzayB8IExvYWRDb250ZXh0TWFzazsKLSAgICAgICAg
U3RyaW5nIHN0cmluZyA9IHRvcFVSTC5zdHJpbmcoKTsKLSAgICAgICAgYXV0byB0b3BVUkxBY3Rp
b25zID0gaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KHN0cmluZy51dGY4KCksIGFsbExvYWRUeXBlc0Fu
ZFJlc291cmNlVHlwZXMpOwotICAgICAgICAKLSAgICAgICAgbV9jYWNoZWRUb3BVUkxBY3Rpb25z
LmNsZWFyKCk7Ci0gICAgICAgIGZvciAodWludDY0X3QgYWN0aW9uIDogdG9wVVJMQWN0aW9ucykK
LSAgICAgICAgICAgIG1fY2FjaGVkVG9wVVJMQWN0aW9ucy5hZGQoYWN0aW9uKTsKLSAgICAgICAg
Zm9yICh1aW50NjRfdCBhY3Rpb24gOiBpbnRlcnByZXRlci5hY3Rpb25zTWF0Y2hpbmdFdmVyeXRo
aW5nKCkpCi0gICAgICAgICAgICBtX2NhY2hlZFRvcFVSTEFjdGlvbnMuYWRkKGFjdGlvbik7Ci0g
ICAgICAgIAotICAgICAgICBtX2NhY2hlZFVuaXZlcnNhbENvbmRpdGlvbmVkQWN0aW9ucy5jbGVh
cigpOwotICAgICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IG1fdW5pdmVyc2FsQWN0aW9uc1dp
dGhDb25kaXRpb25zKSB7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoKGFjdGlvbiAmIH5J
ZkNvbmRpdGlvbkZsYWcpID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb24pLCAiVW5pdmVy
c2FsIGFjdGlvbnMgd2l0aCBjb25kaXRpb25zIHNob3VsZCBub3QgaGF2ZSBmbGFncy4iKTsKLSAg
ICAgICAgICAgIGlmICghIShhY3Rpb24gJiBJZkNvbmRpdGlvbkZsYWcpID09IG1fY2FjaGVkVG9w
VVJMQWN0aW9ucy5jb250YWlucyhhY3Rpb24pKQotICAgICAgICAgICAgICAgIG1fY2FjaGVkVW5p
dmVyc2FsQ29uZGl0aW9uZWRBY3Rpb25zLmFwcGVuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0
aW9uKSk7Ci0gICAgICAgIH0KLSAgICAgICAgbV9jYWNoZWRVbml2ZXJzYWxDb25kaXRpb25lZEFj
dGlvbnMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgbV9jYWNoZWRUb3BVUkwgPSB0b3BVUkw7Ci0g
ICAgfQorICAgIGlmIChtX2NhY2hlZFRvcFVSTCA9PSB0b3BVUkwpCisgICAgICAgIHJldHVybjsK
KworICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIobV9jb21waWxlZEV4dGVu
c2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkpOworICAgIGF1dG8gdG9wVVJMQWN0aW9ucyA9
IGludGVycHJldGVyLmludGVycHJldCh0b3BVUkwuc3RyaW5nKCkudXRmOCgpLCBBbGxSZXNvdXJj
ZUZsYWdzKTsKKworICAgIG1fY2FjaGVkVG9wVVJMQWN0aW9ucy5jbGVhcigpOworICAgIGZvciAo
dWludDY0X3QgYWN0aW9uIDogdG9wVVJMQWN0aW9ucykKKyAgICAgICAgbV9jYWNoZWRUb3BVUkxB
Y3Rpb25zLmFkZChhY3Rpb24pOworICAgIGZvciAodWludDY0X3QgYWN0aW9uIDogaW50ZXJwcmV0
ZXIuYWN0aW9uc01hdGNoaW5nRXZlcnl0aGluZygpKQorICAgICAgICBtX2NhY2hlZFRvcFVSTEFj
dGlvbnMuYWRkKGFjdGlvbik7CisKKyAgICBtX2NhY2hlZFRvcFVSTCA9IHRvcFVSTDsKK30KKwor
dm9pZCBDb250ZW50RXh0ZW5zaW9uOjpwb3B1bGF0ZUZyYW1lVVJMQWN0aW9uQ2FjaGVJZk5lZWRl
ZChjb25zdCBVUkwmIGZyYW1lVVJMKSBjb25zdAoreworICAgIGlmIChtX2NhY2hlZEZyYW1lVVJM
ID09IGZyYW1lVVJMKQorICAgICAgICByZXR1cm47CisKKyAgICBERkFCeXRlY29kZUludGVycHJl
dGVyIGludGVycHJldGVyKG1fY29tcGlsZWRFeHRlbnNpb24tPmZyYW1lVVJMRmlsdGVyc0J5dGVj
b2RlKCkpOworICAgIGF1dG8gZnJhbWVVUkxBY3Rpb25zID0gaW50ZXJwcmV0ZXIuaW50ZXJwcmV0
KGZyYW1lVVJMLnN0cmluZygpLnV0ZjgoKSwgQWxsUmVzb3VyY2VGbGFncyk7CisKKyAgICBtX2Nh
Y2hlZEZyYW1lVVJMQWN0aW9ucy5jbGVhcigpOworICAgIGZvciAodWludDY0X3QgYWN0aW9uIDog
ZnJhbWVVUkxBY3Rpb25zKQorICAgICAgICBtX2NhY2hlZEZyYW1lVVJMQWN0aW9ucy5hZGQoYWN0
aW9uKTsKKyAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbiA6IGludGVycHJldGVyLmFjdGlvbnNNYXRj
aGluZ0V2ZXJ5dGhpbmcoKSkKKyAgICAgICAgbV9jYWNoZWRGcmFtZVVSTEFjdGlvbnMuYWRkKGFj
dGlvbik7CisKKyAgICBtX2NhY2hlZEZyYW1lVVJMID0gZnJhbWVVUkw7CiB9CiAKLWNvbnN0IERG
QUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIENvbnRlbnRFeHRlbnNpb246OnRvcFVSTEFj
dGlvbnMoY29uc3QgVVJMJiB0b3BVUkwpCitjb25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpB
Y3Rpb25zJiBDb250ZW50RXh0ZW5zaW9uOjp0b3BVUkxBY3Rpb25zKGNvbnN0IFVSTCYgdG9wVVJM
KSBjb25zdAogewotICAgIHBvcHVsYXRlQ29uZGl0aW9uQ2FjaGVJZk5lZWRlZCh0b3BVUkwpOwor
ICAgIHBvcHVsYXRlVG9wVVJMQWN0aW9uQ2FjaGVJZk5lZWRlZCh0b3BVUkwpOwogICAgIHJldHVy
biBtX2NhY2hlZFRvcFVSTEFjdGlvbnM7CiB9CiAKLWNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIENv
bnRlbnRFeHRlbnNpb246OnVuaXZlcnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9ucyhjb25zdCBVUkwm
IHRvcFVSTCkKK2NvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIENvbnRlbnRF
eHRlbnNpb246OmZyYW1lVVJMQWN0aW9ucyhjb25zdCBVUkwmIGZyYW1lVVJMKSBjb25zdAogewot
ICAgIHBvcHVsYXRlQ29uZGl0aW9uQ2FjaGVJZk5lZWRlZCh0b3BVUkwpOwotICAgIHJldHVybiBt
X2NhY2hlZFVuaXZlcnNhbENvbmRpdGlvbmVkQWN0aW9uczsKKyAgICBwb3B1bGF0ZUZyYW1lVVJM
QWN0aW9uQ2FjaGVJZk5lZWRlZChmcmFtZVVSTCk7CisgICAgcmV0dXJuIG1fY2FjaGVkRnJhbWVV
UkxBY3Rpb25zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbi5oCmluZGV4IGE1YjMxZWUzZDFmZjUwZTU0NTFiNzM1YjMzN2YzM2I5NDJhNmI3YjAuLjA3
MTUzYzg5MGJmMzg2MzA2YThlYzBkZWQxMjBhMzE4ZWY0OWI0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uLmgKQEAgLTQxLDE2
ICs0MSwxNiBAQCBjbGFzcyBDb21waWxlZENvbnRlbnRFeHRlbnNpb247CiAKIGNsYXNzIENvbnRl
bnRFeHRlbnNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxDb250ZW50RXh0ZW5zaW9uPiB7CiBwdWJs
aWM6Ci0gICAgZW51bSBjbGFzcyBTaG91bGRDb21waWxlQ1NTIHsgTm8sIFllcyB9OworICAgIGVu
dW0gY2xhc3MgU2hvdWxkQ29tcGlsZUNTUyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgc3RhdGlj
IFJlZjxDb250ZW50RXh0ZW5zaW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBS
ZWY8Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uPiYmLCBVUkwmJiwgU2hvdWxkQ29tcGlsZUNTUyk7
CiAKICAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIGV4dGVuc2lvbkJhc2VVUkwoKSBjb25zdCB7IHJldHVy
biBtX2V4dGVuc2lvbkJhc2VVUkw7IH0KICAgICBjb25zdCBDb21waWxlZENvbnRlbnRFeHRlbnNp
b24mIGNvbXBpbGVkRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb21waWxlZEV4dGVuc2lv
bi5nZXQoKTsgfQogICAgIFN0eWxlU2hlZXRDb250ZW50cyogZ2xvYmFsRGlzcGxheU5vbmVTdHls
ZVNoZWV0KCk7Ci0gICAgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgdG9w
VVJMQWN0aW9ucyhjb25zdCBVUkwmIHRvcFVSTCk7Ci0gICAgY29uc3QgVmVjdG9yPHVpbnQzMl90
PiYgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zKCkgeyByZXR1cm4gbV91bml2ZXJz
YWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8dWludDMyX3Q+
JiB1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMoY29uc3QgVVJMJiB0b3BVUkwpOworICAg
IGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIHRvcFVSTEFjdGlvbnMoY29u
c3QgVVJMJiB0b3BVUkwpIGNvbnN0OworICAgIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6
OkFjdGlvbnMmIGZyYW1lVVJMQWN0aW9ucyhjb25zdCBVUkwmIGZyYW1lVVJMKSBjb25zdDsKKyAg
ICBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiB1bml2ZXJzYWxBY3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gbV91bml2ZXJzYWxBY3Rpb25zOyB9CiAKIHByaXZhdGU6CiAgICAgQ29udGVudEV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFJlZjxDb21waWxlZENvbnRlbnRFeHRlbnNpb24+
JiYsIFVSTCYmLCBTaG91bGRDb21waWxlQ1NTKTsKQEAgLTYzLDEzICs2MywxNSBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IG1fZ2xvYmFsRGlzcGxheU5vbmVTdHls
ZVNoZWV0OwogICAgIHZvaWQgY29tcGlsZUdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldCgpOwog
Ci0gICAgVVJMIG1fY2FjaGVkVG9wVVJMOwotICAgIHZvaWQgcG9wdWxhdGVDb25kaXRpb25DYWNo
ZUlmTmVlZGVkKGNvbnN0IFVSTCYgdG9wVVJMKTsKLSAgICBERkFCeXRlY29kZUludGVycHJldGVy
OjpBY3Rpb25zIG1fY2FjaGVkVG9wVVJMQWN0aW9uczsKLSAgICBWZWN0b3I8dWludDMyX3Q+IG1f
Y2FjaGVkVW5pdmVyc2FsQ29uZGl0aW9uZWRBY3Rpb25zOworICAgIHZvaWQgcG9wdWxhdGVUb3BV
UkxBY3Rpb25DYWNoZUlmTmVlZGVkKGNvbnN0IFVSTCYgdG9wVVJMKSBjb25zdDsKKyAgICBtdXRh
YmxlIFVSTCBtX2NhY2hlZFRvcFVSTDsKKyAgICBtdXRhYmxlIERGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXI6OkFjdGlvbnMgbV9jYWNoZWRUb3BVUkxBY3Rpb25zOwogCi0gICAgVmVjdG9yPHVpbnQzMl90
PiBtX3VuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9uczsKLSAgICBWZWN0b3I8dWludDY0
X3Q+IG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zOworICAgIHZvaWQgcG9wdWxhdGVG
cmFtZVVSTEFjdGlvbkNhY2hlSWZOZWVkZWQoY29uc3QgVVJMJiBmcmFtZVVSTCkgY29uc3Q7Cisg
ICAgbXV0YWJsZSBVUkwgbV9jYWNoZWRGcmFtZVVSTDsKKyAgICBtdXRhYmxlIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OkFjdGlvbnMgbV9jYWNoZWRGcmFtZVVSTEFjdGlvbnM7CisKKyAgICBWZWN0
b3I8dWludDY0X3Q+IG1fdW5pdmVyc2FsQWN0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAppbmRleCA4OTIwZTRiZDg2
OGFkMDEwZGQ5YjJiZjYwYjY5MTJiNzdkYmQ0NjVjLi4yZjc5NGQ3MjI1NWNjM2UxMWQ1Yjk3ZDg3
ZjRlNDEwZjVjMmUwNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAKQEAgLTQ0LDggKzQ0
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgQ29udGVu
dEV4dGVuc2lvbnMgeworbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zIHsKIAog
Ly8gY3NzLWRpc3BsYXktbm9uZSBjb21iaW5pbmcgaXMgc3BlY2lhbCBiZWNhdXNlIHdlIGNvbWJp
bmUgdGhlIHN0cmluZyBhcmd1bWVudHMgd2l0aCBjb21tYXMgYmVjYXVzZSB3ZSBrbm93IHRoZXkg
YXJlIGNzcyBzZWxlY3RvcnMuCiBzdHJ1Y3QgUGVuZGluZ0Rpc3BsYXlOb25lQWN0aW9ucyB7CkBA
IC04Nyw5ICs4Niw3IEBAIHN0YXRpYyBWZWN0b3I8dW5zaWduZWQ+IHNlcmlhbGl6ZUFjdGlvbnMo
Y29uc3QgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYgcnVsCiAgICAgUmVkaXJlY3RBY3Rp
b25NYXAgcmVkaXJlY3RBY3Rpb25NYXA7CiAgICAgTW9kaWZ5SGVhZGVyc0FjdGlvbk1hcCBtb2Rp
ZnlIZWFkZXJzQWN0aW9uTWFwOwogCi0gICAgZm9yICh1bnNpZ25lZCBydWxlSW5kZXggPSAwOyBy
dWxlSW5kZXggPCBydWxlTGlzdC5zaXplKCk7ICsrcnVsZUluZGV4KSB7Ci0gICAgICAgIGNvbnN0
IENvbnRlbnRFeHRlbnNpb25SdWxlJiBydWxlID0gcnVsZUxpc3RbcnVsZUluZGV4XTsKLQorICAg
IGZvciAoYXV0byYgcnVsZSA6IHJ1bGVMaXN0KSB7CiAgICAgICAgIGF1dG8mIGFjdGlvbkRhdGEg
PSBydWxlLmFjdGlvbigpLmRhdGEoKTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8SWdub3JlUHJldmlvdXNSdWxlc0FjdGlvbj4oYWN0aW9uRGF0YSkpIHsKICAgICAgICAgICAg
IHJlc29sdmVQZW5kaW5nRGlzcGxheU5vbmVBY3Rpb25zKGFjdGlvbnMsIGFjdGlvbkxvY2F0aW9u
cywgY3NzRGlzcGxheU5vbmVBY3Rpb25zTWFwKTsKQEAgLTE3Myw3ICsxNzAsNyBAQCBzdGF0aWMg
VmVjdG9yPHVuc2lnbmVkPiBzZXJpYWxpemVBY3Rpb25zKGNvbnN0IFZlY3RvcjxDb250ZW50RXh0
ZW5zaW9uUnVsZT4mIHJ1bAogICAgIHJldHVybiBhY3Rpb25Mb2NhdGlvbnM7CiB9CiAKLXR5cGVk
ZWYgSGFzaFNldDx1aW50NjRfdCwgRGVmYXVsdEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gVW5pdmVyc2FsQWN0aW9uU2V0OwordXNp
bmcgVW5pdmVyc2FsQWN0aW9uU2V0ID0gSGFzaFNldDx1aW50NjRfdCwgRGVmYXVsdEhhc2g8dWlu
dDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47CiAK
IHN0YXRpYyB2b2lkIGFkZFVuaXZlcnNhbEFjdGlvbnNUb0RGQShERkEmIGRmYSwgVW5pdmVyc2Fs
QWN0aW9uU2V0JiYgdW5pdmVyc2FsQWN0aW9ucykKIHsKQEAgLTI5MCwxOCArMjg3LDE5IEBAIHN0
ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9u
Q2xpZW50JiBjbGllbnQsIFN0cmluCiAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoYWN0aW9ucywg
YWN0aW9ucy5jYXBhY2l0eSgpICogc2l6ZW9mKFNlcmlhbGl6ZWRBY3Rpb25CeXRlKSk7CiAgICAg
Y2xpZW50LndyaXRlQWN0aW9ucyhXVEZNb3ZlKGFjdGlvbnMpKTsKIAotICAgIFVuaXZlcnNhbEFj
dGlvblNldCB1bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnM7Ci0gICAgVW5pdmVyc2Fs
QWN0aW9uU2V0IHVuaXZlcnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9uczsKLSAgICBVbml2ZXJzYWxB
Y3Rpb25TZXQgdW5pdmVyc2FsVG9wVVJMQWN0aW9uczsKLQogICAgIC8vIEZJWE1FOiBUaGVzZSBk
b24ndCBhbGwgbmVlZCB0byBiZSBpbiBtZW1vcnkgYXQgdGhlIHNhbWUgdGltZS4KLSAgICBDb21i
aW5lZFVSTEZpbHRlcnMgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zOwotICAgIENvbWJpbmVkVVJM
RmlsdGVycyBmaWx0ZXJzV2l0aENvbmRpdGlvbnM7CisgICAgQ29tYmluZWRVUkxGaWx0ZXJzIHVy
bEZpbHRlcnM7CisgICAgVW5pdmVyc2FsQWN0aW9uU2V0IHVuaXZlcnNhbEFjdGlvbnM7CisgICAg
VVJMRmlsdGVyUGFyc2VyIHVybEZpbHRlclBhcnNlcih1cmxGaWx0ZXJzKTsKKwogICAgIENvbWJp
bmVkVVJMRmlsdGVycyB0b3BVUkxGaWx0ZXJzOwotICAgIFVSTEZpbHRlclBhcnNlciBmaWx0ZXJz
V2l0aG91dENvbmRpdGlvblBhcnNlcihmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnMpOwotICAgIFVS
TEZpbHRlclBhcnNlciBmaWx0ZXJzV2l0aENvbmRpdGlvblBhcnNlcihmaWx0ZXJzV2l0aENvbmRp
dGlvbnMpOworICAgIFVuaXZlcnNhbEFjdGlvblNldCB0b3BVUkxVbml2ZXJzYWxBY3Rpb25zOwog
ICAgIFVSTEZpbHRlclBhcnNlciB0b3BVUkxGaWx0ZXJQYXJzZXIodG9wVVJMRmlsdGVycyk7Ci0g
ICAgCisKKyAgICBDb21iaW5lZFVSTEZpbHRlcnMgZnJhbWVVUkxGaWx0ZXJzOworICAgIFVuaXZl
cnNhbEFjdGlvblNldCBmcmFtZVVSTFVuaXZlcnNhbEFjdGlvbnM7CisgICAgVVJMRmlsdGVyUGFy
c2VyIGZyYW1lVVJMRmlsdGVyUGFyc2VyKHRvcFVSTEZpbHRlcnMpOworCiAgICAgZm9yICh1bnNp
Z25lZCBydWxlSW5kZXggPSAwOyBydWxlSW5kZXggPCBwYXJzZWRSdWxlTGlzdC5zaXplKCk7ICsr
cnVsZUluZGV4KSB7CiAgICAgICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBjb250ZW50
RXh0ZW5zaW9uUnVsZSA9IHBhcnNlZFJ1bGVMaXN0W3J1bGVJbmRleF07CiAgICAgICAgIGNvbnN0
IFRyaWdnZXImIHRyaWdnZXIgPSBjb250ZW50RXh0ZW5zaW9uUnVsZS50cmlnZ2VyKCk7CkBAIC0z
MTIsNDcgKzMxMCw0NCBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRF
eHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbgogICAgICAgICBBU1NFUlQo
ISh+QWN0aW9uRmxhZ01hc2sgJiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRyaWdnZXIuZmxhZ3Mp
IDw8IDMyKSkpOwogICAgICAgICB1aW50NjRfdCBhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzID0gKHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih0cmlnZ2VyLmZsYWdzKSA8PCAzMikgfCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oYWN0aW9uTG9jYXRpb25zW3J1bGVJbmRleF0pOwogICAgICAgICBVUkxGaWx0ZXJQ
YXJzZXI6OlBhcnNlU3RhdHVzIHN0YXR1cyA9IFVSTEZpbHRlclBhcnNlcjo6T2s7Ci0gICAgICAg
IGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQo
dHJpZ2dlci5jb25kaXRpb25UeXBlID09IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmUpOwot
ICAgICAgICAgICAgc3RhdHVzID0gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25QYXJzZXIuYWRkUGF0
dGVybih0cmlnZ2VyLnVybEZpbHRlciwgdHJpZ2dlci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUs
IGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOwotICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBVUkxG
aWx0ZXJQYXJzZXI6Ok1hdGNoZXNFdmVyeXRoaW5nKSB7Ci0gICAgICAgICAgICAgICAgdW5pdmVy
c2FsQWN0aW9uc1dpdGhvdXRDb25kaXRpb25zLmFkZChhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzKTsK
LSAgICAgICAgICAgICAgICBzdGF0dXMgPSBVUkxGaWx0ZXJQYXJzZXI6Ok9rOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBVUkxGaWx0ZXJQYXJzZXI6Ok9rKSB7Ci0g
ICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkVycm9yIHdoaWxlIHBhcnNpbmcgJXM6ICVzXG4iLCB0
cmlnZ2VyLnVybEZpbHRlci51dGY4KCkuZGF0YSgpLCBVUkxGaWx0ZXJQYXJzZXI6OnN0YXR1c1N0
cmluZyhzdGF0dXMpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBDb250
ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkUmVnZXg7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSB7CisgICAgICAgIHN0YXR1cyA9IHVybEZpbHRlclBhcnNlci5hZGRQYXR0ZXJu
KHRyaWdnZXIudXJsRmlsdGVyLCB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwgYWN0
aW9uTG9jYXRpb25BbmRGbGFncyk7CisgICAgICAgIGlmIChzdGF0dXMgPT0gVVJMRmlsdGVyUGFy
c2VyOjpNYXRjaGVzRXZlcnl0aGluZykgeworICAgICAgICAgICAgdW5pdmVyc2FsQWN0aW9ucy5h
ZGQoYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CisgICAgICAgICAgICBzdGF0dXMgPSBVUkxGaWx0
ZXJQYXJzZXI6Ok9rOworICAgICAgICB9CisgICAgICAgIGlmIChzdGF0dXMgIT0gVVJMRmlsdGVy
UGFyc2VyOjpPaykgeworICAgICAgICAgICAgZGF0YUxvZ0YoIkVycm9yIHdoaWxlIHBhcnNpbmcg
JXM6ICVzXG4iLCB0cmlnZ2VyLnVybEZpbHRlci51dGY4KCkuZGF0YSgpLCBVUkxGaWx0ZXJQYXJz
ZXI6OnN0YXR1c1N0cmluZyhzdGF0dXMpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0
dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRSZWdleDsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24gOiB0cmlnZ2VyLmNvbmRpdGlv
bnMpIHsKICAgICAgICAgICAgIHN3aXRjaCAodHJpZ2dlci5jb25kaXRpb25UeXBlKSB7Ci0gICAg
ICAgICAgICBjYXNlIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6OklmVG9wVVJMOgotICAgICAgICAg
ICAgICAgIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MgfD0gSWZDb25kaXRpb25GbGFnOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBUcmlnZ2VyOjpDb25kaXRpb25UeXBl
OjpOb25lOgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpJ
ZlRvcFVSTDoKICAgICAgICAgICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6VW5sZXNz
VG9wVVJMOgotICAgICAgICAgICAgICAgIEFTU0VSVCghKGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3Mg
JiBJZkNvbmRpdGlvbkZsYWcpKTsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSB0b3BVUkxGaWx0
ZXJQYXJzZXIuYWRkUGF0dGVybihjb25kaXRpb24sIHRyaWdnZXIudG9wVVJMRmlsdGVySXNDYXNl
U2Vuc2l0aXZlLCBhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzKTsKKyAgICAgICAgICAgICAgICBpZiAo
c3RhdHVzID09IFVSTEZpbHRlclBhcnNlcjo6TWF0Y2hlc0V2ZXJ5dGhpbmcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdG9wVVJMVW5pdmVyc2FsQWN0aW9ucy5hZGQoYWN0aW9uTG9jYXRpb25BbmRG
bGFncyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFVSTEZpbHRlclBhcnNlcjo6T2s7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gVVJMRmls
dGVyUGFyc2VyOjpPaykgeworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiRXJyb3Igd2hp
bGUgcGFyc2luZyAlczogJXNcbiIsIGNvbmRpdGlvbi51dGY4KCkuZGF0YSgpLCBVUkxGaWx0ZXJQ
YXJzZXI6OnN0YXR1c1N0cmluZyhzdGF0dXMpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFJlZ2V4Owor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICAgICAgc3RhdHVzID0gZmlsdGVyc1dpdGhDb25kaXRpb25Q
YXJzZXIuYWRkUGF0dGVybih0cmlnZ2VyLnVybEZpbHRlciwgdHJpZ2dlci51cmxGaWx0ZXJJc0Nh
c2VTZW5zaXRpdmUsIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOwotICAgICAgICAgICAgaWYgKHN0
YXR1cyA9PSBVUkxGaWx0ZXJQYXJzZXI6Ok1hdGNoZXNFdmVyeXRoaW5nKSB7Ci0gICAgICAgICAg
ICAgICAgdW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zLmFkZChhY3Rpb25Mb2NhdGlvbkFu
ZEZsYWdzKTsKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBVUkxGaWx0ZXJQYXJzZXI6Ok9rOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBVUkxGaWx0ZXJQYXJzZXI6
Ok9rKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkVycm9yIHdoaWxlIHBhcnNpbmcgJXM6
ICVzXG4iLCB0cmlnZ2VyLnVybEZpbHRlci51dGY4KCkuZGF0YSgpLCBVUkxGaWx0ZXJQYXJzZXI6
OnN0YXR1c1N0cmluZyhzdGF0dXMpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkUmVnZXg7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uIDogdHJpZ2dlci5j
b25kaXRpb25zKSB7Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gdG9wVVJMRmlsdGVyUGFyc2Vy
LmFkZFBhdHRlcm4oY29uZGl0aW9uLCB0cmlnZ2VyLnRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNp
dGl2ZSwgYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CisgICAgICAgICAgICBjYXNlIFRyaWdnZXI6
OkNvbmRpdGlvblR5cGU6OklmRnJhbWVVUkw6CisgICAgICAgICAgICAgICAgc3RhdHVzID0gZnJh
bWVVUkxGaWx0ZXJQYXJzZXIuYWRkUGF0dGVybihjb25kaXRpb24sIHRyaWdnZXIuZnJhbWVVUkxG
aWx0ZXJJc0Nhc2VTZW5zaXRpdmUsIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOwogICAgICAgICAg
ICAgICAgIGlmIChzdGF0dXMgPT0gVVJMRmlsdGVyUGFyc2VyOjpNYXRjaGVzRXZlcnl0aGluZykg
ewotICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxUb3BVUkxBY3Rpb25zLmFkZChhY3Rpb25M
b2NhdGlvbkFuZEZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVVUkxVbml2ZXJzYWxB
Y3Rpb25zLmFkZChhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzKTsKICAgICAgICAgICAgICAgICAgICAg
c3RhdHVzID0gVVJMRmlsdGVyUGFyc2VyOjpPazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgaWYgKHN0YXR1cyAhPSBVUkxGaWx0ZXJQYXJzZXI6Ok9rKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2dGKCJFcnJvciB3aGlsZSBwYXJzaW5nICVzOiAlc1xuIiwgY29uZGl0
aW9uLnV0ZjgoKS5kYXRhKCksIFVSTEZpbHRlclBhcnNlcjo6c3RhdHVzU3RyaW5nKHN0YXR1cyku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb250ZW50RXh0ZW5z
aW9uRXJyb3I6OkpTT05JbnZhbGlkUmVnZXg7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChz
dGF0dXMgPT0gVVJMRmlsdGVyUGFyc2VyOjpPayk7CkBAIC0zNzUsMTggKzM3MCwxOCBAQCBzdGQ6
OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNs
aWVudCYgY2xpZW50LCBTdHJpbgogICAgIE1vbm90b25pY1RpbWUgdG90YWxORkFUb0J5dGVDb2Rl
QnVpbGRUaW1lU3RhcnQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICNlbmRpZgogCi0gICAgYm9v
bCBzdWNjZXNzID0gY29tcGlsZVRvQnl0ZWNvZGUoV1RGTW92ZShmaWx0ZXJzV2l0aG91dENvbmRp
dGlvbnMpLCBXVEZNb3ZlKHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9ucyksIFsmXShW
ZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIHsKLSAgICAgICAgY2xpZW50LndyaXRlRmls
dGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOworICAgIGJv
b2wgc3VjY2VzcyA9IGNvbXBpbGVUb0J5dGVjb2RlKFdURk1vdmUodXJsRmlsdGVycyksIFdURk1v
dmUodW5pdmVyc2FsQWN0aW9ucyksIFsmXShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUp
IHsKKyAgICAgICAgY2xpZW50LndyaXRlVVJMRmlsdGVyc0J5dGVjb2RlKFdURk1vdmUoYnl0ZWNv
ZGUpKTsKICAgICB9KTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBDb250ZW50
RXh0ZW5zaW9uRXJyb3I6OkVycm9yV3JpdGluZ1NlcmlhbGl6ZWRORkE7Ci0gICAgc3VjY2VzcyA9
IGNvbXBpbGVUb0J5dGVjb2RlKFdURk1vdmUoZmlsdGVyc1dpdGhDb25kaXRpb25zKSwgV1RGTW92
ZSh1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnMpLCBbJl0oVmVjdG9yPERGQUJ5dGVjb2Rl
PiYmIGJ5dGVjb2RlKSB7Ci0gICAgICAgIGNsaWVudC53cml0ZUZpbHRlcnNXaXRoQ29uZGl0aW9u
c0J5dGVjb2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKKyAgICBzdWNjZXNzID0gY29tcGlsZVRvQnl0
ZWNvZGUoV1RGTW92ZSh0b3BVUkxGaWx0ZXJzKSwgV1RGTW92ZSh0b3BVUkxVbml2ZXJzYWxBY3Rp
b25zKSwgWyZdKFZlY3RvcjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgeworICAgICAgICBjbGll
bnQud3JpdGVUb3BVUkxGaWx0ZXJzQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOwogICAgIH0p
OwogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJv
cjo6RXJyb3JXcml0aW5nU2VyaWFsaXplZE5GQTsKLSAgICBzdWNjZXNzID0gY29tcGlsZVRvQnl0
ZWNvZGUoV1RGTW92ZSh0b3BVUkxGaWx0ZXJzKSwgV1RGTW92ZSh1bml2ZXJzYWxUb3BVUkxBY3Rp
b25zKSwgWyZdKFZlY3RvcjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgewotICAgICAgICBjbGll
bnQud3JpdGVUb3BVUkxGaWx0ZXJzQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOworICAgIHN1
Y2Nlc3MgPSBjb21waWxlVG9CeXRlY29kZShXVEZNb3ZlKGZyYW1lVVJMRmlsdGVycyksIFdURk1v
dmUoZnJhbWVVUkxVbml2ZXJzYWxBY3Rpb25zKSwgWyZdKFZlY3RvcjxERkFCeXRlY29kZT4mJiBi
eXRlY29kZSkgeworICAgICAgICBjbGllbnQud3JpdGVGcmFtZVVSTEZpbHRlcnNCeXRlY29kZShX
VEZNb3ZlKGJ5dGVjb2RlKSk7CiAgICAgfSk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICBy
ZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpFcnJvcldyaXRpbmdTZXJpYWxpemVkTkZBOwpA
QCAtNDAxLDcgKzM5Niw2IEBAIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVu
dEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmluCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zCiAKICNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaApp
bmRleCA1YmVkZDNlYzEzNDQ0YTIxOTUwYTkzMTczNzJmODFhMGZjYmNhOTMzLi5kNzcwYzMzZWNh
YzIwZmE3YTgxYzRjMThmOTc3YzFiYjg0Njg0OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaApA
QCAtNDEsOSArNDEsOSBAQCBwdWJsaWM6CiAgICAgLy8gRnVuY3Rpb25zIHNob3VsZCBiZSBjYWxs
ZWQgaW4gdGhpcyBvcmRlci4gQWxsIGV4Y2VwdCB3cml0ZUFjdGlvbnMgYW5kIGZpbmFsaXplIGNh
biBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRob3VnaC4KICAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVTb3VyY2UoU3RyaW5nJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVBY3Rpb25zKFZl
Y3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3cml0
ZUZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
KFZlY3RvcjxERkFCeXRlY29kZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZVVSTEZp
bHRlcnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgd3JpdGVUb3BVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHdyaXRlRnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERG
QUJ5dGVjb2RlPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKCkgPSAwOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCAxNjFiYmQzYzk3MDM5NzAxNzA2ODg3ZTAwZjY2
MjNhOGY2M2ZiNWE5Li40MDI2Njc2MWM3ZDdmZDBhZGEwNmY3NDY5MDk2MTYwZDdlNWI3N2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMTM0LDcgKzEzNCwxMCBAQCBzdGF0aWMgRXhwZWN0
ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBsb2FkVHJpZ2dlcihjb25zdCBKU09OOjpPYmpl
Y3QmIHJ1bGVPYgogICAgICAgICB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9ICp1
cmxGaWx0ZXJDYXNlU2Vuc2l0aXZlVmFsdWU7CiAKICAgICBpZiAoc3RkOjpvcHRpb25hbDxib29s
PiB0b3BVUkxGaWx0ZXJDYXNlU2Vuc2l0aXZlVmFsdWUgPSB0cmlnZ2VyT2JqZWN0LT5nZXRCb29s
ZWFuKCJ0b3AtdXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZSIpKQotICAgICAgICB0cmlnZ2Vy
LnRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSA9ICp0b3BVUkxGaWx0ZXJDYXNlU2Vuc2l0
aXZlVmFsdWU7CisgICAgICAgIHRyaWdnZXIudG9wVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlID0g
KnRvcFVSTEZpbHRlckNhc2VTZW5zaXRpdmVWYWx1ZTsKKworICAgIGlmIChzdGQ6Om9wdGlvbmFs
PGJvb2w+IGZyYW1lVVJMRmlsdGVyQ2FzZVNlbnNpdGl2ZVZhbHVlID0gdHJpZ2dlck9iamVjdC0+
Z2V0Qm9vbGVhbigiZnJhbWUtdXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZSIpKQorICAgICAg
ICB0cmlnZ2VyLmZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlID0gKmZyYW1lVVJMRmlsdGVy
Q2FzZVNlbnNpdGl2ZVZhbHVlOwogCiAgICAgaWYgKGF1dG8gcmVzb3VyY2VUeXBlVmFsdWUgPSB0
cmlnZ2VyT2JqZWN0LT5nZXRWYWx1ZSgicmVzb3VyY2UtdHlwZSIpKSB7CiAgICAgICAgIGF1dG8g
cmVzb3VyY2VUeXBlQXJyYXkgPSByZXNvdXJjZVR5cGVWYWx1ZS0+YXNBcnJheSgpOwpAQCAtMTkx
LDYgKzE5NCw5IEBAIHN0YXRpYyBFeHBlY3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxv
YWRUcmlnZ2VyKGNvbnN0IEpTT046Ok9iamVjdCYgcnVsZU9iCiAgICAgaWYgKGF1dG8gZXJyb3Ig
PSBjaGVja0NvbmRpdGlvbigidW5sZXNzLXRvcC11cmwiX3MsIGdldFN0cmluZ0xpc3QsIFRyaWdn
ZXI6OkNvbmRpdGlvblR5cGU6OlVubGVzc1RvcFVSTCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChlcnJvcik7CiAKKyAgICBpZiAoYXV0byBlcnJvciA9IGNoZWNrQ29uZGl0aW9uKCJp
Zi1mcmFtZS11cmwiX3MsIGdldFN0cmluZ0xpc3QsIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Oklm
RnJhbWVVUkwpKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3IpOworCiAgICAg
cmV0dXJuIHRyaWdnZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcAppbmRleCA1NTNkNjU5ZDdjYzAy
MjQ5OTk1NTljNmMyNGU0NDcwZWZlZTQ2YWVmLi5kMTU2OTkwMjRlYWEyZTU1YWZiMTI2NDUzMjVj
MWE4ZTU5M2M1ODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCkBAIC0xMDAsMTAgKzEwMCwxMSBAQCBU
cmlnZ2VyIFRyaWdnZXI6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHsKICAgICAg
ICAgdXJsRmlsdGVyLmlzb2xhdGVkQ29weSgpLAogICAgICAgICB1cmxGaWx0ZXJJc0Nhc2VTZW5z
aXRpdmUsCi0gICAgICAgIHRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSwKKyAgICAgICAg
dG9wVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLAorICAgICAgICBmcmFtZVVSTEZpbHRlcklzQ2Fz
ZVNlbnNpdGl2ZSwKKyAgICAgICAgY29uZGl0aW9uVHlwZSwKICAgICAgICAgZmxhZ3MsCi0gICAg
ICAgIGNvbmRpdGlvbnMuaXNvbGF0ZWRDb3B5KCksCi0gICAgICAgIGNvbmRpdGlvblR5cGUKKyAg
ICAgICAgY29uZGl0aW9ucy5pc29sYXRlZENvcHkoKQogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5o
CmluZGV4IDkzMGY1ZmZlNmNiZGJkNzY4MzAyZWQyMjIwNWE2YzExN2U3NzcwMmIuLmIwMzhkNTVh
OWNkM2EyN2VjMzY2MmQ0ZDQ1MWMxN2EzMjFiOWNkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaApAQCAtMzIs
OSArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgQ29udGVudEV4
dGVuc2lvbnMgeworbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zIHsKIAogLy8g
QSBDb250ZW50RXh0ZW5zaW9uUnVsZSBpcyB0aGUgc21hbGxlc3QgdW5pdCBpbiBhIENvbnRlbnRF
eHRlbnNpb24uCiAvLwpAQCAtNDQsMjkgKzQyLDM0IEBAIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5z
aW9ucyB7CiBzdHJ1Y3QgVHJpZ2dlciB7CiAgICAgU3RyaW5nIHVybEZpbHRlcjsKICAgICBib29s
IHVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCB0b3BVUkxDb25k
aXRpb25Jc0Nhc2VTZW5zaXRpdmUgeyBmYWxzZSB9OwotICAgIFJlc291cmNlRmxhZ3MgZmxhZ3Mg
eyAwIH07Ci0gICAgVmVjdG9yPFN0cmluZz4gY29uZGl0aW9uczsKKyAgICBib29sIHRvcFVSTEZp
bHRlcklzQ2FzZVNlbnNpdGl2ZSB7IGZhbHNlIH07CisgICAgYm9vbCBmcmFtZVVSTEZpbHRlcklz
Q2FzZVNlbnNpdGl2ZSB7IGZhbHNlIH07CiAgICAgZW51bSBjbGFzcyBDb25kaXRpb25UeXBlIDog
dWludDhfdCB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIElmVG9wVVJMLAogICAgICAgICBVbmxl
c3NUb3BVUkwsCisgICAgICAgIElmRnJhbWVVUkwsCiAgICAgfSBjb25kaXRpb25UeXBlIHsgQ29u
ZGl0aW9uVHlwZTo6Tm9uZSB9OworICAgIFJlc291cmNlRmxhZ3MgZmxhZ3MgeyAwIH07CisgICAg
VmVjdG9yPFN0cmluZz4gY29uZGl0aW9uczsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFRyaWdnZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgCiAgICAgflRyaWdnZXIoKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGNvbmRpdGlvbnMuaXNFbXB0eSgpID09IChjb25kaXRpb25UeXBlID09IENvbmRp
dGlvblR5cGU6Ok5vbmUpKTsKLSAgICAgICAgaWYgKHRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNp
dGl2ZSkKKyAgICAgICAgaWYgKHRvcFVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSkKICAgICAgICAg
ICAgIEFTU0VSVChjb25kaXRpb25UeXBlID09IENvbmRpdGlvblR5cGU6OklmVG9wVVJMIHx8IGNv
bmRpdGlvblR5cGUgPT0gQ29uZGl0aW9uVHlwZTo6VW5sZXNzVG9wVVJMKTsKKyAgICAgICAgaWYg
KGZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlKQorICAgICAgICAgICAgQVNTRVJUKGNvbmRp
dGlvblR5cGUgPT0gQ29uZGl0aW9uVHlwZTo6SWZGcmFtZVVSTCk7CiAgICAgfQogCiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB1cmxGaWx0ZXIuaXNFbXB0
eSgpCiAgICAgICAgICAgICAmJiAhdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlCi0gICAgICAgICAg
ICAmJiAhdG9wVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlCisgICAgICAgICAgICAmJiAhdG9w
VVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlCisgICAgICAgICAgICAmJiAhZnJhbWVVUkxGaWx0ZXJJ
c0Nhc2VTZW5zaXRpdmUKICAgICAgICAgICAgICYmICFmbGFncwogICAgICAgICAgICAgJiYgY29u
ZGl0aW9ucy5pc0VtcHR5KCkKICAgICAgICAgICAgICYmIGNvbmRpdGlvblR5cGUgPT0gQ29uZGl0
aW9uVHlwZTo6Tm9uZTsKQEAgLTc2LDcgKzc5LDggQEAgc3RydWN0IFRyaWdnZXIgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIHVybEZpbHRlciA9PSBvdGhlci51cmxGaWx0ZXIKICAgICAgICAgICAg
ICYmIHVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhlci51cmxGaWx0ZXJJc0Nhc2VTZW5z
aXRpdmUKLSAgICAgICAgICAgICYmIHRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSA9PSBv
dGhlci50b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUKKyAgICAgICAgICAgICYmIHRvcFVS
TEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhlci50b3BVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRp
dmUKKyAgICAgICAgICAgICYmIGZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlID09IG90aGVy
LmZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlCiAgICAgICAgICAgICAmJiBmbGFncyA9PSBv
dGhlci5mbGFncwogICAgICAgICAgICAgJiYgY29uZGl0aW9ucyA9PSBvdGhlci5jb25kaXRpb25z
CiAgICAgICAgICAgICAmJiBjb25kaXRpb25UeXBlID09IG90aGVyLmNvbmRpdGlvblR5cGU7CkBA
IC0xNzAsNyArMTc0LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBBY3Rpb24gbV9hY3Rpb247CiB9
OwogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMKIAogI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcApp
bmRleCBlNzljOWEwYTM2NzY0ZTU4MTQ0OTBkMDg1MDA1NWYyOGVhN2EyYjRjLi41ZTNkNGFlZDlk
ZWI5OGMxMDU0N2I4MWE3MjQyMzJlMjRkZDczZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5j
cHAKQEAgLTUwLDkgKzUwLDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK25hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9ucyB7CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogI2ltcG9ydCA8V2ViS2l0
QWRkaXRpb25zL0NvbnRlbnRSdWxlTGlzdEFkZGl0aW9ucy5tbT4KQEAgLTk4LDYgKzk2LDY3IEBA
IHZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpyZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9u
cygpCiAgICAgbV9jb250ZW50RXh0ZW5zaW9ucy5jbGVhcigpOwogfQogCithdXRvIENvbnRlbnRF
eHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0Zyb21Db250ZW50UnVsZUxpc3QoY29uc3QgQ29udGVu
dEV4dGVuc2lvbiYgY29udGVudEV4dGVuc2lvbiwgY29uc3QgQ1N0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBSZXNvdXJjZUxvYWRJbmZvJiByZXNvdXJjZUxvYWRJbmZvLCBSZXNvdXJjZUZsYWdzIGZs
YWdzKSBjb25zdCAtPiBBY3Rpb25zRnJvbUNvbnRlbnRSdWxlTGlzdAoreworICAgIEFjdGlvbnNG
cm9tQ29udGVudFJ1bGVMaXN0IGFjdGlvbnNTdHJ1Y3Q7CisgICAgYWN0aW9uc1N0cnVjdC5jb250
ZW50UnVsZUxpc3RJZGVudGlmaWVyID0gY29udGVudEV4dGVuc2lvbi5pZGVudGlmaWVyKCk7CisK
KyAgICBjb25zdCBhdXRvJiBjb21waWxlZEV4dGVuc2lvbiA9IGNvbnRlbnRFeHRlbnNpb24uY29t
cGlsZWRFeHRlbnNpb24oKTsKKworICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0
ZXIoY29tcGlsZWRFeHRlbnNpb24udXJsRmlsdGVyc0J5dGVjb2RlKCkpOworICAgIGF1dG8gYWN0
aW9uTG9jYXRpb25zID0gaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KHVybFN0cmluZywgZmxhZ3MpOwor
ICAgIC8vIFRoZXJlIGFyZSB0d28gaXNzdWVzIHNob3duIGhlcmUgaW4gdGhlIENvbnRlbnRFeHRl
bnNpb25UZXN0LlRvcFVSTCBBUEkgdGVzdDoKKyAgICAvLyAxOiB0aGUgYWN0aW9uIGRvZXNuJ3Qg
aGF2ZSB0aGUgZmxhZyBhcHBlbmRlZCB0byBpdC4KKyAgICAvLyAyOiB0aGUgdG9wVVJMQWN0aW9u
cyBpcyBlbXB0eS4KKyAgICBXVEZMb2dBbHdheXMoIklOVEVSUFJFVEVEIEFDVElPTiBMT0NBVElP
TlMgY291bnQgJXUgdmFsdWUgJWxsdSIsIGFjdGlvbkxvY2F0aW9ucy5zaXplKCksICphY3Rpb25M
b2NhdGlvbnMuYmVnaW4oKSk7CisgICAgYXV0byYgdG9wVVJMQWN0aW9ucyA9IGNvbnRlbnRFeHRl
bnNpb24udG9wVVJMQWN0aW9ucyhyZXNvdXJjZUxvYWRJbmZvLm1haW5Eb2N1bWVudFVSTCk7Cisg
ICAgV1RGTG9nQWx3YXlzKCJUT1AgVVJMIEFDVElPTlMgJXUiLCB0b3BVUkxBY3Rpb25zLnNpemUo
KSk7CisgICAgYXV0byYgZnJhbWVVUkxBY3Rpb25zID0gY29udGVudEV4dGVuc2lvbi5mcmFtZVVS
TEFjdGlvbnMocmVzb3VyY2VMb2FkSW5mby5mcmFtZVVSTCk7CisgICAgV1RGTG9nQWx3YXlzKCJG
UkFNRSBVUkwgQUNUSU9OUyAldSIsIGZyYW1lVVJMQWN0aW9ucy5zaXplKCkpOworCisgICAgYWN0
aW9uTG9jYXRpb25zLnJlbW92ZUlmKFsmXSh1aW50NjRfdCBhY3Rpb25BbmRGbGFncykgeworICAg
ICAgICBSZXNvdXJjZUZsYWdzIGZsYWdzID0gYWN0aW9uQW5kRmxhZ3MgPj4gMzI7CisgICAgICAg
IGF1dG8gYWN0aW9uQ29uZGl0aW9uID0gc3RhdGljX2Nhc3Q8QWN0aW9uQ29uZGl0aW9uPihmbGFn
cyAmIEFjdGlvbkNvbmRpdGlvbk1hc2spOworICAgICAgICBzd2l0Y2ggKGFjdGlvbkNvbmRpdGlv
bikgeworICAgICAgICBjYXNlIEFjdGlvbkNvbmRpdGlvbjo6Tm9uZToKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBBY3Rpb25Db25kaXRpb246OklmVG9wVVJMOgorICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJJRiBUT1AgVVJMIEZPVU5ELCBSRU1PVklORz8gJWQiLCAh
dG9wVVJMQWN0aW9ucy5jb250YWlucyhhY3Rpb25BbmRGbGFncykpOworICAgICAgICAgICAgcmV0
dXJuICF0b3BVUkxBY3Rpb25zLmNvbnRhaW5zKGFjdGlvbkFuZEZsYWdzKTsKKyAgICAgICAgY2Fz
ZSBBY3Rpb25Db25kaXRpb246OlVubGVzc1RvcFVSTDoKKyAgICAgICAgICAgIHJldHVybiB0b3BV
UkxBY3Rpb25zLmNvbnRhaW5zKGFjdGlvbkFuZEZsYWdzKTsKKyAgICAgICAgY2FzZSBBY3Rpb25D
b25kaXRpb246OklmRnJhbWVVUkw6CisgICAgICAgICAgICByZXR1cm4gIWZyYW1lVVJMQWN0aW9u
cy5jb250YWlucyhhY3Rpb25BbmRGbGFncyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9KTsKKworICAgIGF1dG8g
c2VyaWFsaXplZEFjdGlvbnMgPSBjb21waWxlZEV4dGVuc2lvbi5zZXJpYWxpemVkQWN0aW9ucygp
OworCisgICAgY29uc3QgYXV0byYgdW5pdmVyc2FsQWN0aW9ucyA9IGNvbnRlbnRFeHRlbnNpb24u
dW5pdmVyc2FsQWN0aW9ucygpOworICAgIGlmIChhdXRvIHRvdGFsQWN0aW9uQ291bnQgPSBhY3Rp
b25Mb2NhdGlvbnMuc2l6ZSgpICsgdW5pdmVyc2FsQWN0aW9ucy5zaXplKCkpIHsKKyAgICAgICAg
VmVjdG9yPHVpbnQzMl90PiB2ZWN0b3I7CisgICAgICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHRvdGFsQWN0aW9uQ291bnQpOworICAgICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbkxv
Y2F0aW9uIDogYWN0aW9uTG9jYXRpb25zKQorICAgICAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFw
cGVuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0aW9uTG9jYXRpb24pKTsKKyAgICAgICAgZm9y
ICh1aW50NjRfdCBhY3Rpb25Mb2NhdGlvbiA6IHVuaXZlcnNhbEFjdGlvbnMpCisgICAgICAgICAg
ICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb25Mb2Nh
dGlvbikpOworICAgICAgICBzdGQ6OnNvcnQodmVjdG9yLmJlZ2luKCksIHZlY3Rvci5lbmQoKSk7
CisKKyAgICAgICAgLy8gQWRkIGFjdGlvbnMgaW4gcmV2ZXJzZSBvcmRlciB0byBwcm9wZXJseSBk
ZWFsIHdpdGggSWdub3JlUHJldmlvdXNSdWxlcy4KKyAgICAgICAgZm9yIChhdXRvIGkgPSB2ZWN0
b3Iuc2l6ZSgpOyBpOyBpLS0pIHsKKyAgICAgICAgICAgIGF1dG8gYWN0aW9uID0gRGVzZXJpYWxp
emVkQWN0aW9uOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkQWN0aW9ucywgdmVjdG9yW2kgLSAxXSk7
CisgICAgICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJZ25vcmVQcmV2aW91c1J1
bGVzQWN0aW9uPihhY3Rpb24uZGF0YSgpKSkgeworICAgICAgICAgICAgICAgIGFjdGlvbnNTdHJ1
Y3Quc2F3SWdub3JlUHJldmlvdXNSdWxlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhY3Rpb25zU3RydWN0LmFjdGlvbnMuYXBwZW5k
KFdURk1vdmUoYWN0aW9uKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGFjdGlvbnNT
dHJ1Y3Q7Cit9CisKIGF1dG8gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rpb25zRm9yUmVz
b3VyY2VMb2FkKGNvbnN0IFJlc291cmNlTG9hZEluZm8mIHJlc291cmNlTG9hZEluZm8pIGNvbnN0
IC0+IFZlY3RvcjxBY3Rpb25zRnJvbUNvbnRlbnRSdWxlTGlzdD4KIHsKICNpZiBDT05URU5UX0VY
VEVOU0lPTlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HCkBAIC0xMTAsNTMgKzE2OSwxNiBAQCBhdXRv
IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNlTG9hZChjb25zdCBS
ZXNvdXJjZUxvYWRJbmZvJiByZQogCiAgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcgPSByZXNv
dXJjZUxvYWRJbmZvLnJlc291cmNlVVJMLnN0cmluZygpOwogICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UodXJsU3RyaW5nLmlzQWxsQVNDSUkoKSwgIkEgZGVjb2RlZCBVUkwgc2hvdWxkIG9ubHkgY29u
dGFpbiBBU0NJSSBjaGFyYWN0ZXJzLiBUaGUgbWF0Y2hpbmcgYWxnb3JpdGhtIGFzc3VtZXMgdGhl
IGlucHV0IGlzIEFTQ0lJLiIpOworICAgIC8vIEZJWE1FOiBVVEYtOCBjb252ZXJzaW9uIHNob3Vs
ZCBvbmx5IGJlIG5lY2Vzc2FyeSB3aXRoIFVURi0xNiBTdHJpbmcgYmFzZWQgVVJMcywgd2hpY2gg
YXJlIHJhcmUuCisgICAgLy8gREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0IHNob3Vs
ZCB0YWtlIGEgU3BhbjxjaGFyPiBpbnN0ZWFkIG9mIGEgQ1N0cmluZyBhbmQgd2UgY2FuIGF2b2lk
IHRoaXMgYWxsb2NhdGlvbiBhbG1vc3QgYWxsIG9mIHRoZSB0aW1lLgogICAgIGNvbnN0IGF1dG8g
dXJsQ1N0cmluZyA9IHVybFN0cmluZy51dGY4KCk7CiAKICAgICBWZWN0b3I8QWN0aW9uc0Zyb21D
b250ZW50UnVsZUxpc3Q+IGFjdGlvbnNWZWN0b3I7CiAgICAgYWN0aW9uc1ZlY3Rvci5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fY29udGVudEV4dGVuc2lvbnMuc2l6ZSgpKTsKLSAgICBjb25zdCBS
ZXNvdXJjZUZsYWdzIGZsYWdzID0gcmVzb3VyY2VMb2FkSW5mby5nZXRSZXNvdXJjZUZsYWdzKCk7
Ci0gICAgZm9yIChhdXRvJiBjb250ZW50RXh0ZW5zaW9uIDogbV9jb250ZW50RXh0ZW5zaW9ucy52
YWx1ZXMoKSkgewotICAgICAgICBBY3Rpb25zRnJvbUNvbnRlbnRSdWxlTGlzdCBhY3Rpb25zU3Ry
dWN0OwotICAgICAgICBhY3Rpb25zU3RydWN0LmNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXIgPSBj
b250ZW50RXh0ZW5zaW9uLT5pZGVudGlmaWVyKCk7Ci0KLSAgICAgICAgY29uc3QgQ29tcGlsZWRD
b250ZW50RXh0ZW5zaW9uJiBjb21waWxlZEV4dGVuc2lvbiA9IGNvbnRlbnRFeHRlbnNpb24tPmNv
bXBpbGVkRXh0ZW5zaW9uKCk7Ci0gICAgICAgIAotICAgICAgICBERkFCeXRlY29kZUludGVycHJl
dGVyIHdpdGhvdXRDb25kaXRpb25zSW50ZXJwcmV0ZXIoY29tcGlsZWRFeHRlbnNpb24uZmlsdGVy
c1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoKSk7Ci0gICAgICAgIERGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXI6OkFjdGlvbnMgd2l0aG91dENvbmRpdGlvbnNBY3Rpb25zID0gd2l0aG91dENvbmRpdGlv
bnNJbnRlcnByZXRlci5pbnRlcnByZXQodXJsQ1N0cmluZywgZmxhZ3MpOwotICAgICAgICAKLSAg
ICAgICAgVVJMIHRvcFVSTCA9IHJlc291cmNlTG9hZEluZm8ubWFpbkRvY3VtZW50VVJMOwotICAg
ICAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdpdGhDb25kaXRpb25zSW50ZXJwcmV0ZXIoY29t
cGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSk7Ci0gICAgICAg
IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgd2l0aENvbmRpdGlvbnNBY3Rpb25zID0g
d2l0aENvbmRpdGlvbnNJbnRlcnByZXRlci5pbnRlcnByZXRXaXRoQ29uZGl0aW9ucyh1cmxDU3Ry
aW5nLCBmbGFncywgY29udGVudEV4dGVuc2lvbi0+dG9wVVJMQWN0aW9ucyh0b3BVUkwpKTsKLSAg
ICAgICAgCi0gICAgICAgIGF1dG8gc2VyaWFsaXplZEFjdGlvbnMgPSBjb21waWxlZEV4dGVuc2lv
bi5zZXJpYWxpemVkQWN0aW9ucygpOwotICAgICAgICAKLSAgICAgICAgY29uc3QgVmVjdG9yPHVp
bnQzMl90PiYgdW5pdmVyc2FsV2l0aENvbmRpdGlvbnMgPSBjb250ZW50RXh0ZW5zaW9uLT51bml2
ZXJzYWxBY3Rpb25zV2l0aENvbmRpdGlvbnModG9wVVJMKTsKLSAgICAgICAgY29uc3QgVmVjdG9y
PHVpbnQzMl90PiYgdW5pdmVyc2FsV2l0aG91dENvbmRpdGlvbnMgPSBjb250ZW50RXh0ZW5zaW9u
LT51bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMoKTsKLSAgICAgICAgaWYgKCF3aXRo
b3V0Q29uZGl0aW9uc0FjdGlvbnMuaXNFbXB0eSgpIHx8ICF3aXRoQ29uZGl0aW9uc0FjdGlvbnMu
aXNFbXB0eSgpIHx8ICF1bml2ZXJzYWxXaXRoQ29uZGl0aW9ucy5pc0VtcHR5KCkgfHwgIXVuaXZl
cnNhbFdpdGhvdXRDb25kaXRpb25zLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgVmVjdG9yPHVp
bnQzMl90PiBhY3Rpb25Mb2NhdGlvbnM7Ci0gICAgICAgICAgICBhY3Rpb25Mb2NhdGlvbnMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSh3aXRob3V0Q29uZGl0aW9uc0FjdGlvbnMuc2l6ZSgpICsgd2l0
aENvbmRpdGlvbnNBY3Rpb25zLnNpemUoKSArIHVuaXZlcnNhbFdpdGhvdXRDb25kaXRpb25zLnNp
emUoKSArIHVuaXZlcnNhbFdpdGhDb25kaXRpb25zLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3Ig
KHVpbnQ2NF90IGFjdGlvbkxvY2F0aW9uIDogd2l0aG91dENvbmRpdGlvbnNBY3Rpb25zKQotICAg
ICAgICAgICAgICAgIGFjdGlvbkxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGFjdGlvbkxvY2F0aW9uKSk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQ2NF90IGFj
dGlvbkxvY2F0aW9uIDogd2l0aENvbmRpdGlvbnNBY3Rpb25zKQotICAgICAgICAgICAgICAgIGFj
dGlvbkxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjdGlv
bkxvY2F0aW9uKSk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQzMl90IGFjdGlvbkxvY2F0aW9uIDog
dW5pdmVyc2FsV2l0aG91dENvbmRpdGlvbnMpCi0gICAgICAgICAgICAgICAgYWN0aW9uTG9jYXRp
b25zLnVuY2hlY2tlZEFwcGVuZChhY3Rpb25Mb2NhdGlvbik7Ci0gICAgICAgICAgICBmb3IgKHVp
bnQzMl90IGFjdGlvbkxvY2F0aW9uIDogdW5pdmVyc2FsV2l0aENvbmRpdGlvbnMpCi0gICAgICAg
ICAgICAgICAgYWN0aW9uTG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChhY3Rpb25Mb2NhdGlvbik7
Ci0gICAgICAgICAgICBzdGQ6OnNvcnQoYWN0aW9uTG9jYXRpb25zLmJlZ2luKCksIGFjdGlvbkxv
Y2F0aW9ucy5lbmQoKSk7Ci0KLSAgICAgICAgICAgIC8vIEFkZCBhY3Rpb25zIGluIHJldmVyc2Ug
b3JkZXIgdG8gcHJvcGVybHkgZGVhbCB3aXRoIElnbm9yZVByZXZpb3VzUnVsZXMuCi0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhY3Rpb25Mb2NhdGlvbnMuc2l6ZSgpOyBpOyBpLS0pIHsK
LSAgICAgICAgICAgICAgICBhdXRvIGFjdGlvbiA9IERlc2VyaWFsaXplZEFjdGlvbjo6ZGVzZXJp
YWxpemUoc2VyaWFsaXplZEFjdGlvbnMsIGFjdGlvbkxvY2F0aW9uc1tpIC0gMV0pOwotICAgICAg
ICAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElnbm9yZVByZXZpb3VzUnVsZXNB
Y3Rpb24+KGFjdGlvbi5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbnNTdHJ1
Y3Quc2F3SWdub3JlUHJldmlvdXNSdWxlcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhY3Rpb25zU3RydWN0LmFj
dGlvbnMuYXBwZW5kKFdURk1vdmUoYWN0aW9uKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgYWN0aW9uc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShhY3Rpb25zU3Ry
dWN0KSk7Ci0gICAgfQorICAgIEFTU0VSVCghKHJlc291cmNlTG9hZEluZm8uZ2V0UmVzb3VyY2VG
bGFncygpICYgQWN0aW9uQ29uZGl0aW9uTWFzaykpOworICAgIGNvbnN0IFJlc291cmNlRmxhZ3Mg
ZmxhZ3MgPSByZXNvdXJjZUxvYWRJbmZvLmdldFJlc291cmNlRmxhZ3MoKSB8IEFjdGlvbkNvbmRp
dGlvbk1hc2s7CisgICAgZm9yIChhdXRvJiBjb250ZW50RXh0ZW5zaW9uIDogbV9jb250ZW50RXh0
ZW5zaW9ucy52YWx1ZXMoKSkKKyAgICAgICAgYWN0aW9uc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQo
YWN0aW9uc0Zyb21Db250ZW50UnVsZUxpc3QoY29udGVudEV4dGVuc2lvbi5nZXQoKSwgdXJsQ1N0
cmluZywgcmVzb3VyY2VMb2FkSW5mbywgZmxhZ3MpKTsKICNpZiBDT05URU5UX0VYVEVOU0lPTlNf
UEVSRk9STUFOQ0VfUkVQT1JUSU5HCiAgICAgTW9ub3RvbmljVGltZSBhZGRlZFRpbWVFbmQgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKICAgICBkYXRhTG9nRigiVGltZSBhZGRlZDogJWYgbWljcm9z
ZWNvbmRzICVzIFxuIiwgKGFkZGVkVGltZUVuZCAtIGFkZGVkVGltZVN0YXJ0KS5taWNyb3NlY29u
ZHMoKSwgcmVzb3VyY2VMb2FkSW5mby5yZXNvdXJjZVVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKQEAgLTE4MCw2ICsyMDIsNyBAQCBDb250ZW50UnVsZUxpc3RSZXN1bHRzIENvbnRlbnRFeHRl
bnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKAogewogICAgIERv
Y3VtZW50KiBjdXJyZW50RG9jdW1lbnQgPSBudWxscHRyOwogICAgIFVSTCBtYWluRG9jdW1lbnRV
Ukw7CisgICAgVVJMIGZyYW1lVVJMOwogICAgIGJvb2wgbWFpbkZyYW1lQ29udGV4dCA9IGZhbHNl
OwogCiAgICAgaWYgKGF1dG8qIGZyYW1lID0gaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyLmZyYW1l
KCkpIHsKQEAgLTE5Myw4ICsyMTYsMTIgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgKICAgICAg
ICAgZWxzZSBpZiAoYXV0byogbWFpbkRvY3VtZW50ID0gZnJhbWUtPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCkpCiAgICAgICAgICAgICBtYWluRG9jdW1lbnRVUkwgPSBtYWluRG9jdW1lbnQtPnVybCgp
OwogICAgIH0KKyAgICBpZiAoY3VycmVudERvY3VtZW50KQorICAgICAgICBmcmFtZVVSTCA9IGN1
cnJlbnREb2N1bWVudC0+dXJsKCk7CisgICAgZWxzZQorICAgICAgICBmcmFtZVVSTCA9IHVybDsK
IAotICAgIFJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbyA9IHsgdXJsLCBtYWluRG9j
dW1lbnRVUkwsIHJlc291cmNlVHlwZSwgbWFpbkZyYW1lQ29udGV4dCB9OworICAgIFJlc291cmNl
TG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbyB7IHVybCwgbWFpbkRvY3VtZW50VVJMLCBmcmFtZVVS
TCwgcmVzb3VyY2VUeXBlLCBtYWluRnJhbWVDb250ZXh0IH07CiAgICAgYXV0byBhY3Rpb25zID0g
YWN0aW9uc0ZvclJlc291cmNlTG9hZChyZXNvdXJjZUxvYWRJbmZvKTsKIAogICAgIENvbnRlbnRS
dWxlTGlzdFJlc3VsdHMgcmVzdWx0czsKQEAgLTI3MSw5ICsyOTgsOSBAQCBDb250ZW50UnVsZUxp
c3RSZXN1bHRzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlz
dHNGb3JMb2FkKAogICAgIHJldHVybiByZXN1bHRzOwogfQogCi1Db250ZW50UnVsZUxpc3RSZXN1
bHRzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JQ
aW5nTG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCitDb250
ZW50UnVsZUxpc3RSZXN1bHRzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRl
bnRSdWxlTGlzdHNGb3JQaW5nTG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9j
dW1lbnRVUkwsIGNvbnN0IFVSTCYgZnJhbWVVUkwpCiB7Ci0gICAgUmVzb3VyY2VMb2FkSW5mbyBy
ZXNvdXJjZUxvYWRJbmZvID0geyB1cmwsIG1haW5Eb2N1bWVudFVSTCwgUmVzb3VyY2VUeXBlOjpQ
aW5nIH07CisgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvIHsgdXJsLCBtYWlu
RG9jdW1lbnRVUkwsIGZyYW1lVVJMLCBSZXNvdXJjZVR5cGU6OlBpbmcgfTsKICAgICBhdXRvIGFj
dGlvbnMgPSBhY3Rpb25zRm9yUmVzb3VyY2VMb2FkKHJlc291cmNlTG9hZEluZm8pOwogCiAgICAg
Q29udGVudFJ1bGVMaXN0UmVzdWx0cyByZXN1bHRzOwpAQCAtMzQwLDggKzM2Nyw2IEBAIHZvaWQg
YXBwbHlSZXN1bHRzVG9SZXF1ZXN0KENvbnRlbnRSdWxlTGlzdFJlc3VsdHMmJiByZXN1bHRzLCBQ
YWdlKiBwYWdlLCBSZXNvdXJjCiAgICAgfQogfQogICAgIAotfSAvLyBuYW1lc3BhY2UgQ29udGVu
dEV4dGVuc2lvbnMKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnMKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCmluZGV4IGY4NTlhZWM4YmM0ZDY3OTVjMjc2YTNi
ZjMxY2IxMGNjMjI2ZDhlZGIuLjdhNTg2YzYzNDhkMzU4NGJmN2UyYjI4MDRjMjQ2NDM0N2FjYmM5
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHlsZVNoZWV0Q29udGVudHMqIGdsb2JhbERpc3BsYXlOb25lU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCiAgICAgQ29udGVudFJ1
bGVMaXN0UmVzdWx0cyBwcm9jZXNzQ29udGVudFJ1bGVMaXN0c0ZvckxvYWQoUGFnZSYsIGNvbnN0
IFVSTCYsIE9wdGlvblNldDxSZXNvdXJjZVR5cGU+LCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGlu
Z0RvY3VtZW50TG9hZGVyLCBjb25zdCBVUkwmIHJlZGlyZWN0RnJvbSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBwcm9jZXNzQ29udGVudFJ1bGVMaXN0c0ZvclBp
bmdMb2FkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBDb250ZW50UnVsZUxpc3RSZXN1bHRzIHByb2Nlc3NDb250ZW50UnVsZUxpc3Rz
Rm9yUGluZ0xvYWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIGNvbnN0
IFVSTCYgZnJhbWVVUkwpOwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGlzcGxheU5vbmVD
U1NSdWxlKCk7CiAKQEAgLTgwLDEyICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgc2hvdWxkQmVNYWRlU2VjdXJlKGNvbnN0IFVSTCYpOwogCiBwcml2YXRl
OgorICAgIEFjdGlvbnNGcm9tQ29udGVudFJ1bGVMaXN0IGFjdGlvbnNGcm9tQ29udGVudFJ1bGVM
aXN0KGNvbnN0IENvbnRlbnRFeHRlbnNpb24mLCBjb25zdCBDU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFJlc291cmNlTG9hZEluZm8mLCBSZXNvdXJjZUZsYWdzKSBjb25zdDsKKwogICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWY8Q29udGVudEV4dGVuc2lvbj4+IG1fY29udGVudEV4dGVuc2lvbnM7CiB9
OwogCiBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5UmVzdWx0c1RvUmVxdWVzdChDb250ZW50UnVs
ZUxpc3RSZXN1bHRzJiYsIFBhZ2UqLCBSZXNvdXJjZVJlcXVlc3QmKTsKIAotfSAvLyBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlLmgKaW5kZXggM2MwNjQ0OGZiY2E5ZjVlOWYyNGJmOTc4YTJhOWQ1MTM2N2ViMmEyNS4u
MmM4MmQ1NGM4YTVhNjAyMzY3OTQzOTczNmVjNDQyOWIyZTEyMzVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCkBAIC02MCwxMyArNjAsMTEg
QEAgZW51bSBjbGFzcyBERkFCeXRlY29kZUluc3RydWN0aW9uIDogdWludDhfdCB7CiAgICAgLy8g
QXBwZW5kQWN0aW9uIGhhcyBvbmUgYXJndW1lbnQ6CiAgICAgLy8gVGhlIGFjdGlvbiB0byBhcHBl
bmQgKDEtNCBieXRlcykuCiAgICAgQXBwZW5kQWN0aW9uID0gMHg2LAotICAgIEFwcGVuZEFjdGlv
bldpdGhJZkNvbmRpdGlvbiA9IDB4NywKICAgICAKICAgICAvLyBUZXN0RmxhZ3NBbmRBcHBlbmRB
Y3Rpb24gaGFzIHR3byBhcmd1bWVudHM6CiAgICAgLy8gVGhlIGZsYWdzIHRvIGNoZWNrIGJlZm9y
ZSBhcHBlbmRpbmcgKDEtMyBieXRlcykuCiAgICAgLy8gVGhlIGFjdGlvbiB0byBhcHBlbmQgKDEt
NCBieXRlcykuCiAgICAgVGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uID0gMHg4LAotICAgIFRlc3RG
bGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbiA9IDB4OSwKIAogICAgIC8vIFRlcm1p
bmF0ZSBoYXMgbm8gYXJndW1lbnRzLgogICAgIFRlcm1pbmF0ZSA9IDB4QSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5j
cHAKaW5kZXggZjY2M2VmZjVjMGUyMGJlNjlkNDIwODgyZWYxYjcxMTg4NDE5NTY2NS4uMzMwOWRh
NTE1OTBhMDgzMWE1OGJlNjA3NDYwM2UzMGRiOTZlYjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKQEAg
LTEyMSw3ICsxMjEsNyBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmVtaXRBcHBlbmRBY3Rp
b24odWludDY0X3QgYWN0aW9uKQogICAgIC8vIEhpZ2ggYml0cyBhcmUgdXNlZCB0byBzdG9yZSBm
bGFncy4gU2VlIGNvbXBpbGVSdWxlTGlzdC4KICAgICBpZiAoUmVzb3VyY2VGbGFncyBmbGFncyA9
IChhY3Rpb24gJiBBY3Rpb25GbGFnTWFzaykgPj4gMzIpIHsKICAgICAgICAgYXV0byBmbGFnc1Np
emUgPSBieXRlY29kZUZsYWdzU2l6ZShmbGFncyk7Ci0gICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSAoYWN0aW9uICYgSWZDb25kaXRpb25GbGFnKSA/IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRl
c3RGbGFnc0FuZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbiA6IERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbjsKKyAgICAgICAgYXV0byBpbnN0cnVjdGlv
biA9IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbjsKICAg
ICAgICAgQVNTRVJUKCEoc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5zdHJ1Y3Rpb24pICYgc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmxhZ3NTaXplKSAmIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGFjdGlvblNp
emUpKSk7CiAgICAgICAgIGFwcGVuZDx1aW50OF90PihtX2J5dGVjb2RlLCBzdGF0aWNfY2FzdDx1
aW50OF90PihpbnN0cnVjdGlvbikgfCBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFnc1NpemUpIHwg
c3RhdGljX2Nhc3Q8dWludDhfdD4oYWN0aW9uU2l6ZSkpOwogICAgICAgICBhcHBlbmRWYXJpYWJs
ZUxlbmd0aFVuc2lnbmVkSW50ZWdlcihtX2J5dGVjb2RlLCBmbGFncyk7CkBAIC0xMjksNyArMTI5
LDcgQEAgdm9pZCBERkFCeXRlY29kZUNvbXBpbGVyOjplbWl0QXBwZW5kQWN0aW9uKHVpbnQ2NF90
IGFjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSAoYWN0aW9uICYgSWZDb25kaXRpb25GbGFnKSA/IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFw
cGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbiA6IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVu
ZEFjdGlvbjsKKyAgICBhdXRvIGluc3RydWN0aW9uID0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6
QXBwZW5kQWN0aW9uOwogICAgIEFTU0VSVCghKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0
aW9uKSAmIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGFjdGlvblNpemUpKSk7CiAgICAgYXBwZW5kPHVp
bnQ4X3Q+KG1fYnl0ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9uKSB8IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGFjdGlvblNpemUpKTsKICAgICBhcHBlbmRWYXJpYWJsZUxlbmd0
aFVuc2lnbmVkSW50ZWdlcihtX2J5dGVjb2RlLCBhY3Rpb25XaXRob3V0RmxhZ3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUlu
dGVycHJldGVyLmNwcAppbmRleCAzM2U5Zjc0Zjc3YWUxNzI0MTBkN2U4Nzg5YTBiZGQzODRmZWU4
ZmM1Li41N2U0ZTUxMWQ4NjVjODI5YjI2OGQyZWE4MjhiN2M2OWRlY2NjMWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUlu
dGVycHJldGVyLmNwcApAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnMgewogdGVtcGxhdGUgPHR5cGVuYW1lIEludFR5cGU+CiBzdGF0aWMgSW50VHlw
ZSBnZXRCaXRzKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90IGluZGV4KQog
eworICAgIGlmIChpbmRleCArIHNpemVvZihJbnRUeXBlKSA+IGJ5dGVjb2RlLnNpemUoKSkKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJCWVRFQ09ERSBTSVpFICV6dSwgSU5ERVggJXUsIElOVCBTSVpF
ICV6dSIsIGJ5dGVjb2RlLnNpemUoKSwgaW5kZXgsIHNpemVvZihJbnRUeXBlKSk7CiAgICAgQVNT
RVJUKGluZGV4ICsgc2l6ZW9mKEludFR5cGUpIDw9IGJ5dGVjb2RlLnNpemUoKSk7CiAgICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEludFR5cGUqPihieXRlY29kZS5kYXRhKCkgKyBp
bmRleCk7CiB9CkBAIC04Myw3ICs4NSw2IEBAIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNGbGFn
cyhERkFCeXRlY29kZUluc3RydWN0aW9uIGluc3RydWN0aW9uKQogewogICAgIHN3aXRjaCAoaW5z
dHJ1Y3Rpb24pIHsKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0Fu
ZEFwcGVuZEFjdGlvbjoKLSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFn
c0FuZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlQ2FzZVNlbnNpdGl2ZToK
ICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFsdWVDYXNlSW5zZW5zaXRp
dmU6CkBAIC05Myw3ICs5NCw2IEBAIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNGbGFncyhERkFC
eXRlY29kZUluc3RydWN0aW9uIGluc3RydWN0aW9uKQogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbjo6Q2hlY2tWYWx1ZVJhbmdlQ2FzZUluc2Vuc2l0aXZlOgogICAgIGNhc2UgREZBQnl0
ZWNvZGVJbnN0cnVjdGlvbjo6SnVtcDoKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OkFwcGVuZEFjdGlvbjoKLSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFj
dGlvbldpdGhJZkNvbmRpdGlvbjoKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRl
cm1pbmF0ZToKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA0LDkgKzEwNCw3IEBAIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBoYXNBY3Rpb24oREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVj
dGlvbikKIHsKICAgICBzd2l0Y2ggKGluc3RydWN0aW9uKSB7CiAgICAgY2FzZSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb246Ci0gICAgY2FzZSBERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246
CiAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb246Ci0gICAgY2Fz
ZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hl
Y2tWYWx1ZUNhc2VTZW5zaXRpdmU6CiAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpD
aGVja1ZhbHVlQ2FzZUluc2Vuc2l0aXZlOgpAQCAtMTc5LDI1ICsxNzcsMTYgQEAgc3RhdGljIGlu
dDMyX3QgZ2V0SnVtcERpc3RhbmNlKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQz
Ml90IGluZGV4LCBERkEKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1z
dGF0aWMgYm9vbCBtYXRjaGVzQ29uZGl0aW9uKHVpbnQ2NF90IGFjdGlvbkFuZEZsYWdzLCBjb25z
dCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zJiBjb25kaXRpb25BY3Rpb25zKQordm9p
ZCBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRBcHBlbmRBY3Rpb24odWludDMyX3Qm
IHByb2dyYW1Db3VudGVyLCBBY3Rpb25zJiBhY3Rpb25zKQogewotICAgIGJvb2wgaWZDb25kaXRp
b24gPSBhY3Rpb25BbmRGbGFncyAmIElmQ29uZGl0aW9uRmxhZzsKLSAgICBib29sIGNvbmRpdGlv
biA9IGNvbmRpdGlvbkFjdGlvbnMuY29udGFpbnMoYWN0aW9uQW5kRmxhZ3MpOwotICAgIHJldHVy
biBpZkNvbmRpdGlvbiA9PSBjb25kaXRpb247Ci19Ci0KLXZvaWQgREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlcjo6aW50ZXJwcmV0QXBwZW5kQWN0aW9uKHVpbnQzMl90JiBwcm9ncmFtQ291bnRlciwgQWN0
aW9ucyYgYWN0aW9ucywgYm9vbCBpZkNvbmRpdGlvbikKLXsKLSAgICBBU1NFUlQoZ2V0SW5zdHJ1
Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rp
b246OkFwcGVuZEFjdGlvbgotICAgICAgICB8fCBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBw
cm9ncmFtQ291bnRlcikgPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0
aElmQ29uZGl0aW9uKTsKKyAgICBBU1NFUlQoZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJv
Z3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7CiAg
ICAgYXV0byBpbnN0cnVjdGlvbkxvY2F0aW9uID0gcHJvZ3JhbUNvdW50ZXIrKzsKICAgICB1aW50
NjRfdCBhY3Rpb25XaXRob3V0RmxhZ3MgPSBjb25zdW1lQWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dy
YW1Db3VudGVyLCBpbnN0cnVjdGlvbkxvY2F0aW9uKTsKLSAgICB1aW50NjRfdCBhY3Rpb24gPSAo
aWZDb25kaXRpb24gPyBJZkNvbmRpdGlvbkZsYWcgOiAwKSB8IGFjdGlvbldpdGhvdXRGbGFnczsK
LSAgICBpZiAoIW1fdG9wVVJMQWN0aW9ucyB8fCBtYXRjaGVzQ29uZGl0aW9uKGFjdGlvbiwgKm1f
dG9wVVJMQWN0aW9ucykpCi0gICAgICAgIGFjdGlvbnMuYWRkKGFjdGlvbik7CisgICAgdWludDY0
X3QgYWN0aW9uID0gYWN0aW9uV2l0aG91dEZsYWdzOworICAgIGFjdGlvbnMuYWRkKGFjdGlvbik7
CiB9CiAKLXZvaWQgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0VGVzdEZsYWdzQW5k
QXBwZW5kQWN0aW9uKHVpbnQzMl90JiBwcm9ncmFtQ291bnRlciwgUmVzb3VyY2VGbGFncyBmbGFn
cywgQWN0aW9ucyYgYWN0aW9ucywgYm9vbCBpZkNvbmRpdGlvbikKK3ZvaWQgREZBQnl0ZWNvZGVJ
bnRlcnByZXRlcjo6aW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHVpbnQzMl90JiBw
cm9ncmFtQ291bnRlciwgUmVzb3VyY2VGbGFncyBmbGFncywgQWN0aW9ucyYgYWN0aW9ucykKIHsK
ICAgICBhdXRvIGluc3RydWN0aW9uTG9jYXRpb24gPSBwcm9ncmFtQ291bnRlcjsKICAgICBhdXRv
IGZsYWdzVG9DaGVjayA9IGNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rpb24obV9ieXRl
Y29kZSwgcHJvZ3JhbUNvdW50ZXIpOwpAQCAtMjEyLDkgKzIwMSw4IEBAIHZvaWQgREZBQnl0ZWNv
ZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHVpbnQzMl90
JiBwcm9ncmFtCiAgICAgCiAgICAgYXV0byBhY3Rpb25XaXRob3V0RmxhZ3MgPSBjb25zdW1lQWN0
aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyLCBpbnN0cnVjdGlvbkxvY2F0aW9uKTsKICAg
ICBpZiAobG9hZFR5cGVNYXRjaGVzICYmIGxvYWRDb250ZXh0TWF0Y2hlcyAmJiByZXNvdXJjZVR5
cGVNYXRjaGVzKSB7Ci0gICAgICAgIHVpbnQ2NF90IGFjdGlvbkFuZEZsYWdzID0gKGlmQ29uZGl0
aW9uID8gSWZDb25kaXRpb25GbGFnIDogMCkgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZsYWdz
VG9DaGVjaykgPDwgMzIpIHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFjdGlvbldpdGhvdXRGbGFn
cyk7Ci0gICAgICAgIGlmICghbV90b3BVUkxBY3Rpb25zIHx8IG1hdGNoZXNDb25kaXRpb24oYWN0
aW9uQW5kRmxhZ3MsICptX3RvcFVSTEFjdGlvbnMpKQotICAgICAgICAgICAgYWN0aW9ucy5hZGQo
YWN0aW9uQW5kRmxhZ3MpOworICAgICAgICB1aW50NjRfdCBhY3Rpb25BbmRGbGFncyA9IChzdGF0
aWNfY2FzdDx1aW50NjRfdD4oZmxhZ3NUb0NoZWNrKSA8PCAzMikgfCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYWN0aW9uV2l0aG91dEZsYWdzKTsKKyAgICAgICAgYWN0aW9ucy5hZGQoYWN0aW9uQW5k
RmxhZ3MpOwogICAgIH0KIH0KIApAQCAtMjQ4LDExICsyMzYsOCBAQCBhdXRvIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OmFjdGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcoKSAtPiBBY3Rpb25zCiAgICAg
d2hpbGUgKHByb2dyYW1Db3VudGVyIDwgZGZhQnl0ZWNvZGVMZW5ndGgpIHsKICAgICAgICAgREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiA9IGdldEluc3RydWN0aW9uKG1fYnl0ZWNv
ZGUsIHByb2dyYW1Db3VudGVyKTsKICAgICAgICAgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVj
b2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbikKLSAgICAgICAgICAgIGludGVycHJldEFwcGVu
ZEFjdGlvbihwcm9ncmFtQ291bnRlciwgYWN0aW9ucywgZmFsc2UpOwotICAgICAgICBlbHNlIGlm
IChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRo
SWZDb25kaXRpb24pCi0gICAgICAgICAgICBpbnRlcnByZXRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNv
dW50ZXIsIGFjdGlvbnMsIHRydWUpOwotICAgICAgICBlbHNlIGlmIChpbnN0cnVjdGlvbiA9PSBE
RkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24KLSAgICAgICAg
ICAgIHx8IGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0Fu
ZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbikgeworICAgICAgICAgICAgaW50ZXJwcmV0QXBw
ZW5kQWN0aW9uKHByb2dyYW1Db3VudGVyLCBhY3Rpb25zKTsKKyAgICAgICAgZWxzZSBpZiAoaW5z
dHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uKSB7CiAgICAgICAgICAgICBhdXRvIHByb2dyYW1Db3VudGVyQXRJbnN0cnVjdGlvbiA9IHBy
b2dyYW1Db3VudGVyOwogICAgICAgICAgICAgY29uc3VtZVJlc291cmNlRmxhZ3NBbmRJbnN0cnVj
dGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7CiAgICAgICAgICAgICBjb25zdW1lQWN0
aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyLCBwcm9ncmFtQ291bnRlckF0SW5zdHJ1Y3Rp
b24pOwpAQCAtMjYxLDE1ICsyNDYsNiBAQCBhdXRvIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmFj
dGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcoKSAtPiBBY3Rpb25zCiAgICAgfQogICAgIHJldHVybiBh
Y3Rpb25zOwogfQotICAgIAotYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXRX
aXRoQ29uZGl0aW9ucyhjb25zdCBDU3RyaW5nJiB1cmxDU3RyaW5nLCBSZXNvdXJjZUZsYWdzIGZs
YWdzLCBjb25zdCBBY3Rpb25zJiB0b3BVUkxBY3Rpb25zKSAtPiBBY3Rpb25zCi17Ci0gICAgQVNT
RVJUKCFtX3RvcFVSTEFjdGlvbnMpOwotICAgIG1fdG9wVVJMQWN0aW9ucyA9ICZ0b3BVUkxBY3Rp
b25zOwotICAgIGF1dG8gYWN0aW9ucyA9IGludGVycHJldCh1cmxDU3RyaW5nLCBmbGFncyk7Ci0g
ICAgbV90b3BVUkxBY3Rpb25zID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYWN0aW9uczsKLX0KIAog
YXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0cmluZyYgdXJs
Q1N0cmluZywgUmVzb3VyY2VGbGFncyBmbGFncykgLT4gQWN0aW9ucwogewpAQCAtMjkwLDEzICsy
NjYsMTEgQEAgYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0
cmluZyYgdXJsQ1N0cmluZywgUmVzb3VyY2VGbGFncwogICAgICAgICBpZiAoIWRmYVN0YXJ0KSB7
CiAgICAgICAgICAgICB3aGlsZSAocHJvZ3JhbUNvdW50ZXIgPCBkZmFCeXRlY29kZUxlbmd0aCkg
ewogICAgICAgICAgICAgICAgIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24gPSBn
ZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcik7Ci0gICAgICAgICAgICAg
ICAgaWYgKGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlv
biB8fCBpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb25X
aXRoSWZDb25kaXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8gaW5zdHJ1Y3Rpb25Mb2NhdGlvbiA9IHByb2dyYW1Db3VudGVyKys7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN1bWVBY3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIsIGluc3Ry
dWN0aW9uTG9jYXRpb24pOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5zdHJ1Y3Rpb24g
PT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKQotICAg
ICAgICAgICAgICAgICAgICBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24ocHJvZ3Jh
bUNvdW50ZXIsIGZsYWdzLCBhY3Rpb25zLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBw
ZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKQotICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRU
ZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGZsYWdzLCBhY3Rpb25zLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uKHByb2dyYW1Db3VudGVyLCBmbGFncywgYWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTMwNCw5ICsy
NzgsNyBAQCBhdXRvIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3Ry
aW5nJiB1cmxDU3RyaW5nLCBSZXNvdXJjZUZsYWdzCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFj
dGlvbnM7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24KLSAgICAgICAgICAgICAgICAmJiBnZXRJbnN0cnVj
dGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcikgIT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uCi0gICAgICAgICAgICAgICAgJiYgZ2V0SW5z
dHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpICE9IERGQUJ5dGVjb2RlSW5zdHJ1
Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbgotICAgICAgICAgICAgICAgICYmIGdldElu
c3RydWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRlY29kZUluc3Ry
dWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24sCisgICAgICAg
ICAgICAgICAgJiYgZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpICE9
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbiwKICAgICAg
ICAgICAgICAgICAiVHJpZ2dlcnMgdGhhdCBtYXRjaCBldmVyeXRoaW5nIHNob3VsZCBvbmx5IGJl
IGluIHRoZSBmaXJzdCBERkEuIik7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00MTgsMTkgKzM5
MCwxMSBAQCBhdXRvIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldChjb25zdCBDU3Ry
aW5nJiB1cmxDU3RyaW5nLCBSZXNvdXJjZUZsYWdzCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBl
bmRBY3Rpb246Ci0gICAgICAgICAgICAgICAgaW50ZXJwcmV0QXBwZW5kQWN0aW9uKHByb2dyYW1D
b3VudGVyLCBhY3Rpb25zLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpB
cHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246Ci0gICAgICAgICAgICAgICAgaW50ZXJwcmV0QXBw
ZW5kQWN0aW9uKHByb2dyYW1Db3VudGVyLCBhY3Rpb25zLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICBpbnRlcnByZXRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGFjdGlvbnMpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2Ug
REZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uOgotICAgICAg
ICAgICAgICAgIGludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbihwcm9ncmFtQ291bnRl
ciwgZmxhZ3MsIGFjdGlvbnMsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0Rmxh
Z3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246Ci0gICAgICAgICAgICAgICAgaW50ZXJw
cmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHByb2dyYW1Db3VudGVyLCBmbGFncywgYWN0aW9u
cywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uKHByb2dyYW1Db3VudGVyLCBmbGFncywgYWN0aW9ucyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJw
cmV0ZXIuaAppbmRleCA2YjJhMWNmMmQxYmNhNDRiMTFmYzc2NjM5NGZlNGM3MDY0YTFjMDczLi4w
MGE5ODNhMzZkMmU1Mjk1N2Q4ZGUzYWU1Y2RmMjE0ODUyNGRiMDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRl
ci5oCkBAIC00MywxOCArNDMsMTYgQEAgcHVibGljOgogICAgIHVzaW5nIEFjdGlvbnMgPSBIYXNo
U2V0PHVpbnQ2NF90LCBEZWZhdWx0SGFzaDx1aW50NjRfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PjsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEFjdGlvbnMg
aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmLCBSZXNvdXJjZUZsYWdzKTsKLSAgICBBY3Rpb25zIGlu
dGVycHJldFdpdGhDb25kaXRpb25zKGNvbnN0IENTdHJpbmcmLCBSZXNvdXJjZUZsYWdzLCBjb25z
dCBBY3Rpb25zJiBjb25kaXRpb25BY3Rpb25zKTsKICAgICBBY3Rpb25zIGFjdGlvbnNNYXRjaGlu
Z0V2ZXJ5dGhpbmcoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGludGVycHJldEFwcGVuZEFjdGlv
bih1bnNpZ25lZCYgcHJvZ3JhbUNvdW50ZXIsIEFjdGlvbnMmLCBib29sIGlmQ29uZGl0aW9uKTsK
LSAgICB2b2lkIGludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbih1bnNpZ25lZCYgcHJv
Z3JhbUNvdW50ZXIsIFJlc291cmNlRmxhZ3MsIEFjdGlvbnMmLCBib29sIGlmQ29uZGl0aW9uKTsK
KyAgICB2b2lkIGludGVycHJldEFwcGVuZEFjdGlvbih1bnNpZ25lZCYgcHJvZ3JhbUNvdW50ZXIs
IEFjdGlvbnMmKTsKKyAgICB2b2lkIGludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbih1
bnNpZ25lZCYgcHJvZ3JhbUNvdW50ZXIsIFJlc291cmNlRmxhZ3MsIEFjdGlvbnMmKTsKIAogICAg
IHRlbXBsYXRlPGJvb2wgY2FzZVNlbnNpdGl2ZT4KICAgICB2b2lkIGludGVycGV0SnVtcFRhYmxl
KGNvbnN0IGNoYXIqIHVybCwgdWludDMyX3QmIHVybEluZGV4LCB1aW50MzJfdCYgcHJvZ3JhbUNv
dW50ZXIsIGJvb2wmIHVybEluZGV4SXNBZnRlckVuZE9mU3RyaW5nKTsKIAogICAgIGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4gbV9ieXRlY29kZTsKLSAgICBjb25zdCBERkFCeXRlY29kZUludGVy
cHJldGVyOjpBY3Rpb25zKiBtX3RvcFVSTEFjdGlvbnMgeyBudWxscHRyIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCmluZGV4IDJlZGVlYmQ0OTAxMzExM2I4ZDM2YjMwMWU2
YzQ5ODJlNGQxYmM2NDIuLjE5MmNhNDAyNDVhZTdlYjdlODQzMzJlMzY2MGJmZjk2ZGZjZThmYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKQEAgLTM0LDYg
KzM0LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucyB7CiAKK3N0
YXRpY19hc3NlcnQoIShSZXNvdXJjZVR5cGVNYXNrICYgTG9hZFR5cGVNYXNrKSwgIlJlc291cmNl
VHlwZU1hc2sgYW5kIExvYWRUeXBlTWFzayBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJl
Y2F1c2UgdGhleSBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIHVpbnQzMl90Iik7CitzdGF0aWNfYXNz
ZXJ0KCEoUmVzb3VyY2VUeXBlTWFzayAmIExvYWRDb250ZXh0TWFzayksICJSZXNvdXJjZVR5cGVN
YXNrIGFuZCBMb2FkQ29udGV4dE1hc2sgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNh
dXNlIHRoZXkgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSB1aW50MzJfdCIpOworc3RhdGljX2Fzc2Vy
dCghKFJlc291cmNlVHlwZU1hc2sgJiBBY3Rpb25Db25kaXRpb25NYXNrKSwgIlJlc291cmNlVHlw
ZU1hc2sgYW5kIEFjdGlvbkNvbmRpdGlvbk1hc2sgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2
ZSBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSB1aW50MzJfdCIpOworc3RhdGlj
X2Fzc2VydCghKExvYWRDb250ZXh0TWFzayAmIExvYWRUeXBlTWFzayksICJMb2FkQ29udGV4dE1h
c2sgYW5kIExvYWRUeXBlTWFzayBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2Ug
dGhleSBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIHVpbnQzMl90Iik7CitzdGF0aWNfYXNzZXJ0KCEo
TG9hZENvbnRleHRNYXNrICYgQWN0aW9uQ29uZGl0aW9uTWFzayksICJMb2FkQ29udGV4dE1hc2sg
YW5kIEFjdGlvbkNvbmRpdGlvbk1hc2sgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNh
dXNlIHRoZXkgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSB1aW50MzJfdCIpOworc3RhdGljX2Fzc2Vy
dCghKExvYWRUeXBlTWFzayAmIEFjdGlvbkNvbmRpdGlvbk1hc2spLCAiTG9hZFR5cGVNYXNrIGFu
ZCBBY3Rpb25Db25kaXRpb25NYXNrIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVz
ZSB0aGV5IGFyZSBzdG9yZWQgaW4gdGhlIHNhbWUgdWludDMyX3QiKTsKK3N0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KEFsbFJlc291cmNlRmxhZ3MpIDw8IDMyID09IEFjdGlvbkZs
YWdNYXNrLCAiQWN0aW9uRmxhZ01hc2sgc2hvdWxkIGNvdmVyIGFsbCB0aGUgYWN0aW9uIGZsYWdz
Iik7CisKIE9wdGlvblNldDxSZXNvdXJjZVR5cGU+IHRvUmVzb3VyY2VUeXBlKENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIFJlc291cmNlUmVxdWVzdEJhc2U6OlJlcXVlc3RlciByZXF1ZXN0ZXIp
CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZEluZm8uaAppbmRleCBhOWFjMDdiZTliYjI5YTNiYmI5ZjdhZDVhZmM2YmUzNzg4YTcxZDc1Li5l
NzU1NmQzMzI4ZTI2Nzg4ZmM0NGJlY2EyZmRiYTI4YTk0YzgwZTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTMzLDYgKzMzLDE0IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucyB7CiAKK2VudW0gY2xhc3MgQWN0aW9uQ29uZGl0
aW9uIDogdWludDMyX3QgeworICAgIE5vbmUgPSAweDAwMDAwLAorICAgIElmVG9wVVJMID0gMHgy
MDAwMCwKKyAgICBVbmxlc3NUb3BVUkwgPSAweDQwMDAwLAorICAgIElmRnJhbWVVUkwgPSAweDYw
MDAwLAorfTsKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgQWN0aW9uQ29uZGl0aW9uTWFzayA9
IDB4NjAwMDA7CisKIGVudW0gY2xhc3MgUmVzb3VyY2VUeXBlIDogdWludDMyX3QgewogICAgIERv
Y3VtZW50ID0gMHgwMDAxLAogICAgIEltYWdlID0gMHgwMDAyLApAQCAtNjIsMjEgKzcwLDE0IEBA
IGVudW0gY2xhc3MgTG9hZENvbnRleHQgOiB1aW50MzJfdCB7CiB9Owogc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBMb2FkQ29udGV4dE1hc2sgPSAweEMwMDA7CiAKLXN0YXRpY19hc3NlcnQoIShS
ZXNvdXJjZVR5cGVNYXNrICYgTG9hZFR5cGVNYXNrKSwgIlJlc291cmNlVHlwZU1hc2sgYW5kIExv
YWRUeXBlTWFzayBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUg
c3RvcmVkIGluIHRoZSBzYW1lIHVpbnQzMl90Iik7Ci1zdGF0aWNfYXNzZXJ0KCEoUmVzb3VyY2VU
eXBlTWFzayAmIExvYWRDb250ZXh0TWFzayksICJSZXNvdXJjZVR5cGVNYXNrIGFuZCBMb2FkQ29u
dGV4dE1hc2sgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNhdXNlIHRoZXkgYXJlIHN0
b3JlZCBpbiB0aGUgc2FtZSB1aW50MzJfdCIpOwotc3RhdGljX2Fzc2VydCghKExvYWRDb250ZXh0
TWFzayAmIExvYWRUeXBlTWFzayksICJMb2FkQ29udGV4dE1hc2sgYW5kIExvYWRUeXBlTWFzayBz
aG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2UgdGhleSBhcmUgc3RvcmVkIGluIHRo
ZSBzYW1lIHVpbnQzMl90Iik7Ci0KIHVzaW5nIFJlc291cmNlRmxhZ3MgPSB1aW50MzJfdDsKIAor
Y29uc3RleHByIFJlc291cmNlRmxhZ3MgQWxsUmVzb3VyY2VGbGFncyA9IExvYWRUeXBlTWFzayB8
IFJlc291cmNlVHlwZU1hc2sgfCBMb2FkQ29udGV4dE1hc2sgfCBBY3Rpb25Db25kaXRpb25NYXNr
OworCiAvLyBUaGUgZmlyc3QgMzIgYml0cyBvZiBhIHVpbnQ2NF90IGFjdGlvbiBhcmUgdXNlZCBm
b3IgdGhlIGFjdGlvbiBsb2NhdGlvbi4KLS8vIFRoZSBuZXh0IDI0IGJpdHMgYXJlIHVzZWQgZm9y
IHRoZSBmbGFncyAoUmVzb3VyY2VUeXBlIGFuZCBMb2FkVHlwZSkuCi0vLyBUaGUgbmV4dCBiaXQg
aXMgdXNlZCB0byBtYXJrIGFjdGlvbnMgdGhhdCBhcmUgZnJvbSBhIHJ1bGUgd2l0aCBhbiBpZi1k
b21haW4uCi0vLyAgICAgQWN0aW9ucyBmcm9tIHJ1bGVzIHdpdGggdW5sZXNzLWRvbWFpbiBjb25k
aXRpb25zIGFyZSBkaXN0aW5ndWlzaGVkIGZyb20KLS8vICAgICBydWxlcyB3aXRoIGlmLWRvbWFp
biBjb25kaXRpb25zIGJ5IG5vdCBoYXZpbmcgdGhpcyBiaXQgc2V0LgotLy8gICAgIEFjdGlvbnMg
ZnJvbSBydWxlcyB3aXRoIG5vIGNvbmRpdGlvbnMgYXJlIHB1dCBpbiB0aGUgREZBIHdpdGhvdXQg
Y29uZGl0aW9ucy4KKy8vIFRoZSBuZXh0IDE5IGJpdHMgYXJlIHVzZWQgZm9yIHRoZSBmbGFncyAo
UmVzb3VyY2VUeXBlLCBMb2FkVHlwZSwgTG9hZENvbnRleHQsIEFjdGlvbkNvbmRpdGlvbikuCiAv
LyBUaGUgdmFsdWVzIC0xIGFuZCAtMiBhcmUgdXNlZCBmb3IgcmVtb3ZlZCBhbmQgZW1wdHkgdmFs
dWVzIGluIEhhc2hUYWJsZXMuCi1zdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IEFjdGlvbkZsYWdN
YXNrID0gMHgwMEZGRkZGRjAwMDAwMDAwOwotc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBJZkNv
bmRpdGlvbkZsYWcgPSAweDAxMDAwMDAwMDAwMDAwMDA7CitzdGF0aWMgY29uc3RleHByIHVpbnQ2
NF90IEFjdGlvbkZsYWdNYXNrID0gMHgwMDA3RkZGRjAwMDAwMDAwOwogCiBPcHRpb25TZXQ8UmVz
b3VyY2VUeXBlPiB0b1Jlc291cmNlVHlwZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6UmVxdWVzdGVyKTsKIHN0ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PFJlc291cmNl
VHlwZT4+IHJlYWRSZXNvdXJjZVR5cGUoU3RyaW5nVmlldyk7CkBAIC04Niw2ICs4Nyw3IEBAIHN0
ZDo6b3B0aW9uYWw8T3B0aW9uU2V0PExvYWRDb250ZXh0Pj4gcmVhZExvYWRDb250ZXh0KFN0cmlu
Z1ZpZXcpOwogc3RydWN0IFJlc291cmNlTG9hZEluZm8gewogICAgIFVSTCByZXNvdXJjZVVSTDsK
ICAgICBVUkwgbWFpbkRvY3VtZW50VVJMOworICAgIFVSTCBmcmFtZVVSTDsKICAgICBPcHRpb25T
ZXQ8UmVzb3VyY2VUeXBlPiB0eXBlOwogICAgIGJvb2wgbWFpbkZyYW1lQ29udGV4dCB7IGZhbHNl
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcAppbmRleCBiMGE0OGNmNWMyMjdhMjA1MWFmYzlhYWM1N2M3MzcwYTkxZGViY2E4
Li5kODRjZmNmMGFiZDExZTc1MTkxODgwNmRiNjRhMTQ5MWJjNTY3ZjdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC00
NzQsNyArNDc0LDcgQEAgdm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3NDb250ZW50UnVs
ZUxpc3RzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXMKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gcmVzdWx0cyA9IGJhY2tlbmQucHJvY2Vzc0Nv
bnRlbnRSdWxlTGlzdHNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX21haW5Eb2N1bWVudFVS
TCk7CisgICAgICAgIGF1dG8gcmVzdWx0cyA9IGJhY2tlbmQucHJvY2Vzc0NvbnRlbnRSdWxlTGlz
dHNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX21haW5Eb2N1bWVudFVSTCwgbV9mcmFtZVVS
TCk7CiAgICAgICAgIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjphcHBseVJlc3VsdHNUb1Jl
cXVlc3QoQ29udGVudFJ1bGVMaXN0UmVzdWx0cyB7IHJlc3VsdHMgfSwgbnVsbHB0ciwgcmVxdWVz
dCk7CiAgICAgICAgIGNhbGxiYWNrKENvbnRlbnRFeHRlbnNpb25SZXN1bHQgeyBXVEZNb3ZlKHJl
cXVlc3QpLCByZXN1bHRzIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggYjliYzVhY2U1NGEwYTk0ODEzNmIz
MzJjYmI4N2YwNGJjMDMzYTYzMy4uMDYzZTVmNmFiNzgxYjNmYzVlZjNkZTExYzQyZDA1OGQwOTdm
NTUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5oCkBAIC04NSw5ICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnRD
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KGNvbnN0IFdlYkNvcmU6OkNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3kmIHBhcmVudENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpIHsgbV9wYXJlbnRDcm9z
c09yaWdpbkVtYmVkZGVyUG9saWN5ID0gcGFyZW50Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTsg
fQogICAgIHZvaWQgc2V0Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeShjb25zdCBXZWJDb3JlOjpD
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KSB7IG1f
Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSA9IGNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3k7IH0K
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIHZvaWQgc2V0Q29udGVudEV4dGVu
c2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXIpCisgICAgdm9pZCBzZXRDb250
ZW50RXh0ZW5zaW9uQ29udHJvbGxlcihVUkwmJiBtYWluRG9jdW1lbnRVUkwsIFVSTCYmIGZyYW1l
VVJMLCBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50
aWZpZXIpCiAgICAgewogICAgICAgICBtX21haW5Eb2N1bWVudFVSTCA9IFdURk1vdmUobWFpbkRv
Y3VtZW50VVJMKTsKKyAgICAgICAgbV9mcmFtZVVSTCA9IFdURk1vdmUoZnJhbWVVUkwpOwogICAg
ICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAg
IH0KICNlbmRpZgpAQCAtMTQ4LDYgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6Q3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSBtX2Nyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3k7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBVUkwgbV9tYWluRG9jdW1lbnRVUkw7Cisg
ICAgVVJMIG1fZnJhbWVVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyPiBtX3VzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IGMxZTQ1NTg0ZTQ3ZmNmN2EzYzQ5OTZiMWY0
ZWM2ZjdkYWFmMzg5MjkuLjdmMWZlODZmNjViYjk0MDY4MTUxNGFlYTdlNmQzZTU4MDhlMWMzZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTg3LDYgKzg3LDcgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBVUkwgbWFpbkRvY3VtZW50VVJMOwor
ICAgIFVSTCBmcmFtZVVSTDsKICAgICBzdGQ6Om9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5
ZDcyLi5jYzY1MjU5YzZkODJhYzg1NmFlZmIxYTMwOGRjYzE0NWRjODhhYTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXIKICAgICAgICAg
bV9uZXR3b3JrTG9hZENoZWNrZXItPnNldFBhcmVudENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ko
bV9wYXJhbWV0ZXJzLnBhcmVudENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpOwogICAgICAgICBt
X25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeShtX3BhcmFt
ZXRlcnMuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKFVSTCB7IG1fcGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwgfSwgbV9wYXJh
bWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworICAgICAgICBtX25ldHdv
cmtMb2FkQ2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJMIHsgbV9wYXJh
bWV0ZXJzLm1haW5Eb2N1bWVudFVSTCB9LCBVUkwgeyBtX3BhcmFtZXRlcnMuZnJhbWVVUkwgfSwg
bV9wYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOwogI2VuZGlmCiAg
ICAgfQogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcAppbmRleCAxMTQ4NTNlNDViNzI1MzM2NGM3NDdhNzFjYjJiNWFiOGNj
MzhlZmQ1Li5lZmRiM2IwZDQxN2IyZjE2YTI3MzllMjg4NzBlNTYxYWYyOTY1Mjk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2
b2lkIFBpbmdMb2FkOjppbml0aWFsaXplKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcykK
ICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0UGFyZW50Q3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeShtX3BhcmFtZXRlcnMucGFyZW50Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk7CiAgICAg
bV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kobV9wYXJh
bWV0ZXJzLmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpOwogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCi0gICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENvbnRlbnRFeHRlbnNpb25D
b250cm9sbGVyKFdURk1vdmUobV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCksIG1fcGFyYW1l
dGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBtX25ldHdvcmtMb2Fk
Q2hlY2tlci0+c2V0Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShtX3BhcmFtZXRl
cnMubWFpbkRvY3VtZW50VVJMKSwgV1RGTW92ZShtX3BhcmFtZXRlcnMuZnJhbWVVUkwpLCBtX3Bh
cmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAg
IC8vIElmIHRoZSBzZXJ2ZXIgbmV2ZXIgcmVzcG9uZHMsIHRoaXMgb2JqZWN0IHdpbGwgaGFuZyBh
cm91bmQgZm9yZXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0LmNwcAppbmRleCA5YzlmOGMwZDUzNmEwNjc2MGMwMjcxY2EzODEzNjZm
Y2I4YjE2YzUxLi5hNmRkZjMyYWMzOWFmZTllNmRmODkxZDBlMGYxMjAzNjc5YmIxODE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Qu
Y3BwCkBAIC00NCwxNCArNDQsOSBAQCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6fldlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0KCkKIHsKIH0KIAotU3Bhbjxjb25zdCB1aW50OF90PiBXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdDo6ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUo
KSBjb25zdAorU3Bhbjxjb25zdCB1aW50OF90PiBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6
dXJsRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3BhbldpdGhPZmZzZXRB
bmRMZW5ndGgobV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0LCBt
X2RhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKTsKLX0KLQotU3Bhbjxj
b25zdCB1aW50OF90PiBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6ZmlsdGVyc1dpdGhDb25k
aXRpb25zQnl0ZWNvZGUoKSBjb25zdAotewotICAgIHJldHVybiBzcGFuV2l0aE9mZnNldEFuZExl
bmd0aChtX2RhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQsIG1fZGF0YS5m
aWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUpOworICAgIHJldHVybiBzcGFuV2l0aE9m
ZnNldEFuZExlbmd0aChtX2RhdGEudXJsRmlsdGVyc0J5dGVjb2RlT2Zmc2V0LCBtX2RhdGEudXJs
RmlsdGVyc0J5dGVjb2RlU2l6ZSk7CiB9CiAKIFNwYW48Y29uc3QgdWludDhfdD4gV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3Q6OnRvcFVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaAppbmRleCBi
MDIxMWIyYWYzY2UzMGI4MThjZDhhM2U4OTdlYjY0ZDFiYWY4NTg1Li40ZGNlMDY4Y2VkOTE3NjQ5
ZTRhMTI0YTU3Zjc3NDk2NDJkM2ExZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgKQEAgLTQzLDggKzQzLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdChXZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdERhdGEmJik7CiAKLSAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGZpbHRlcnNXaXRo
b3V0Q29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QgZmluYWw7Ci0gICAgU3Bhbjxjb25zdCB1aW50
OF90PiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0IGZpbmFsOworICAgIFNw
YW48Y29uc3QgdWludDhfdD4gdXJsRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWw7CiAgICAg
U3Bhbjxjb25zdCB1aW50OF90PiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBmaW5hbDsK
ICAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3Qg
ZmluYWw7CiAgICAgU3Bhbjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVkQWN0aW9ucygpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0RGF0YS5jcHAKaW5kZXggZWZkYzUzNDYwZmQzY2Y1ODRjYzIyMjkwYWM1MGU5
MTdhNzBiZDIwNC4uNjhjZWM2NjIyYjYwOGI2N2U5OWJiOWMyOTliYTFmMTY4ZjVkYmYxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3RE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGEuY3BwCkBAIC01MSwxMCArNTEsOCBAQCB2b2lkIFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGVu
Y29kZXIgPDwgYWN0aW9uc09mZnNldDsKICAgICBlbmNvZGVyIDw8IGFjdGlvbnNTaXplOwotICAg
IGVuY29kZXIgPDwgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7Ci0gICAg
ZW5jb2RlciA8PCBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7Ci0gICAgZW5j
b2RlciA8PCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldDsKLSAgICBlbmNvZGVy
IDw8IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKKyAgICBlbmNvZGVyIDw8IHVy
bEZpbHRlcnNCeXRlY29kZU9mZnNldDsKKyAgICBlbmNvZGVyIDw8IHVybEZpbHRlcnNCeXRlY29k
ZVNpemU7CiAgICAgZW5jb2RlciA8PCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQ7CiAgICAg
ZW5jb2RlciA8PCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwogICAgIGVuY29kZXIgPDwgZnJh
bWVVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQ7CkBAIC04NSwyNCArODMsMTQgQEAgc3RkOjpvcHRp
b25hbDxXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+IFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YTo6ZGUKICAgICBpZiAoIWFjdGlvbnNTaXplKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbHRlcnNXaXRob3V0Q29u
ZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OwotICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGVPZmZzZXQ7Ci0gICAgaWYgKCFmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZU9mZnNldCkKKyAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gdXJsRmlsdGVyc0J5dGVj
b2RlT2Zmc2V0OworICAgIGRlY29kZXIgPj4gdXJsRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OworICAg
IGlmICghdXJsRmlsdGVyc0J5dGVjb2RlT2Zmc2V0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9u
c0J5dGVjb2RlU2l6ZTsKLSAgICBkZWNvZGVyID4+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlU2l6ZTsKLSAgICBpZiAoIWZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6
ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldDsKLSAgICBkZWNvZGVyID4+
IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OwotICAgIGlmICghZmlsdGVyc1dp
dGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNv
ZGVTaXplOwotICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXpl
OwotICAgIGlmICghZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKQorICAgIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiB1cmxGaWx0ZXJzQnl0ZWNvZGVTaXplOworICAgIGRlY29kZXIgPj4g
dXJsRmlsdGVyc0J5dGVjb2RlU2l6ZTsKKyAgICBpZiAoIXVybEZpbHRlcnNCeXRlY29kZVNpemUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OwpAQCAtMTMwLDEwICsxMTgsOCBAQCBzdGQ6
Om9wdGlvbmFsPFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4gV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhOjpkZQogICAgICAgICBkYXRhLnJlbGVhc2VOb25OdWxsKCksCiAgICAg
ICAgIFdURk1vdmUoKmFjdGlvbnNPZmZzZXQpLAogICAgICAgICBXVEZNb3ZlKCphY3Rpb25zU2l6
ZSksCi0gICAgICAgIFdURk1vdmUoKmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zm
c2V0KSwKLSAgICAgICAgV1RGTW92ZSgqZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVT
aXplKSwKLSAgICAgICAgV1RGTW92ZSgqZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZz
ZXQpLAotICAgICAgICBXVEZNb3ZlKCpmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUp
LAorICAgICAgICBXVEZNb3ZlKCp1cmxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQpLAorICAgICAgICBX
VEZNb3ZlKCp1cmxGaWx0ZXJzQnl0ZWNvZGVTaXplKSwKICAgICAgICAgV1RGTW92ZSgqdG9wVVJM
RmlsdGVyc0J5dGVjb2RlT2Zmc2V0KSwKICAgICAgICAgV1RGTW92ZSgqdG9wVVJMRmlsdGVyc0J5
dGVjb2RlU2l6ZSksCiAgICAgICAgIFdURk1vdmUoKmZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlT2Zm
c2V0KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0RGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3REYXRhLmgKaW5kZXggY2IwNTYyODI1OWQ2OTVkMzU0ZGFkMTgzYzhiNmRiYzM4ZTg4
NGE3OC4uMTZjZGI2NGQ1ODFkNDFkODkzNGY5ZTE1NWRiODA3OTg5MGJmODdhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
LmgKQEAgLTQxLDE1ICs0MSwxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29t
cGlsZWRDb250ZW50UnVsZUxpc3REYXRhIHsKIHB1YmxpYzoKLSAgICBXZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdERhdGEoU3RyaW5nJiYgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBk
YXRhLCBzaXplX3QgYWN0aW9uc09mZnNldCwgc2l6ZV90IGFjdGlvbnNTaXplLCBzaXplX3QgZmls
dGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQsIHNpemVfdCBmaWx0ZXJzV2l0aG91
dENvbmRpdGlvbnNCeXRlY29kZVNpemUsIHNpemVfdCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRl
Y29kZU9mZnNldCwgc2l6ZV90IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSwgc2l6
ZV90IHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCwgc2l6ZV90IHRvcFVSTEZpbHRlcnNCeXRl
Y29kZVNpemUsIHNpemVfdCBmcmFtZVVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCwgc2l6ZV90IGZy
YW1lVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSkKKyAgICBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlz
dERhdGEoU3RyaW5nJiYgaWRlbnRpZmllciwgUmVmPFNoYXJlZE1lbW9yeT4mJiBkYXRhLCBzaXpl
X3QgYWN0aW9uc09mZnNldCwgc2l6ZV90IGFjdGlvbnNTaXplLCBzaXplX3QgdXJsRmlsdGVyc0J5
dGVjb2RlT2Zmc2V0LCBzaXplX3QgdXJsRmlsdGVyc0J5dGVjb2RlU2l6ZSwgc2l6ZV90IHRvcFVS
TEZpbHRlcnNCeXRlY29kZU9mZnNldCwgc2l6ZV90IHRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemUs
IHNpemVfdCBmcmFtZVVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCwgc2l6ZV90IGZyYW1lVVJMRmls
dGVyc0J5dGVjb2RlU2l6ZSkKICAgICAgICAgOiBpZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmll
cikpCiAgICAgICAgICwgZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICAgICAsIGFjdGlvbnNPZmZz
ZXQoYWN0aW9uc09mZnNldCkKICAgICAgICAgLCBhY3Rpb25zU2l6ZShhY3Rpb25zU2l6ZSkKLSAg
ICAgICAgLCBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldChmaWx0ZXJzV2l0
aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCkKLSAgICAgICAgLCBmaWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZVNpemUoZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXpl
KQotICAgICAgICAsIGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0KGZpbHRlcnNX
aXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIGZpbHRlcnNXaXRoQ29uZGl0
aW9uc0J5dGVjb2RlU2l6ZShmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUpCisgICAg
ICAgICwgdXJsRmlsdGVyc0J5dGVjb2RlT2Zmc2V0KHVybEZpbHRlcnNCeXRlY29kZU9mZnNldCkK
KyAgICAgICAgLCB1cmxGaWx0ZXJzQnl0ZWNvZGVTaXplKHVybEZpbHRlcnNCeXRlY29kZVNpemUp
CiAgICAgICAgICwgdG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0KHRvcFVSTEZpbHRlcnNCeXRl
Y29kZU9mZnNldCkKICAgICAgICAgLCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplKHRvcFVSTEZp
bHRlcnNCeXRlY29kZVNpemUpCiAgICAgICAgICwgZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZz
ZXQoZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQpCkBAIC02NCwxMCArNjIsOCBAQCBwdWJs
aWM6CiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gZGF0YTsKICAgICBzaXplX3QgYWN0aW9uc09mZnNl
dCB7IDAgfTsKICAgICBzaXplX3QgYWN0aW9uc1NpemUgeyAwIH07Ci0gICAgc2l6ZV90IGZpbHRl
cnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0IHsgMCB9OwotICAgIHNpemVfdCBmaWx0
ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUgeyAwIH07Ci0gICAgc2l6ZV90IGZpbHRl
cnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0IHsgMCB9OwotICAgIHNpemVfdCBmaWx0ZXJz
V2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUgeyAwIH07CisgICAgc2l6ZV90IHVybEZpbHRlcnNC
eXRlY29kZU9mZnNldCB7IDAgfTsKKyAgICBzaXplX3QgdXJsRmlsdGVyc0J5dGVjb2RlU2l6ZSB7
IDAgfTsKICAgICBzaXplX3QgdG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0IHsgMCB9OwogICAg
IHNpemVfdCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplIHsgMCB9OwogICAgIHNpemVfdCBmcmFt
ZVVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDY0NDkx
ZTE2MmVjNmM1YmNmYTNmYzRjYjI0OWY4ZDljY2I2MzliMjEuLmFlMWUyOGJiMjAyYjE4NDAzMTE1
ZmI1NTJjMGVjYWQzMmNjOWU4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTA5LDIxICsxMDksMjAg
QEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIHsKICAgICB1aW50MzJfdCB2ZXJzaW9u
IHsgQ29udGVudFJ1bGVMaXN0U3RvcmU6OkN1cnJlbnRDb250ZW50UnVsZUxpc3RGaWxlVmVyc2lv
biB9OwogICAgIHVpbnQ2NF90IHNvdXJjZVNpemUgeyAwIH07CiAgICAgdWludDY0X3QgYWN0aW9u
c1NpemUgeyAwIH07Ci0gICAgdWludDY0X3QgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNv
ZGVTaXplIHsgMCB9OwotICAgIHVpbnQ2NF90IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
U2l6ZSB7IDAgfTsKLSAgICB1aW50NjRfdCBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUg
eyAwIH07Ci0gICAgdWludDMyX3QgdW51c2VkMzJiaXRzIHsgZmFsc2UgfTsKKyAgICB1aW50NjRf
dCB1cmxGaWx0ZXJzQnl0ZWNvZGVTaXplIHsgMCB9OworICAgIHVpbnQ2NF90IHRvcFVSTEZpbHRl
cnNCeXRlY29kZVNpemUgeyAwIH07CiAgICAgdWludDY0X3QgZnJhbWVVUkxGaWx0ZXJzQnl0ZWNv
ZGVTaXplIHsgMCB9OwotICAgIHVpbnQ2NF90IHVudXNlZDY0Yml0cyB7IDAgfTsgLy8gQWRkaXRp
b25hbCBzcGFjZSBvbiBkaXNrIHJlc2VydmVkIHNvIHdlIGNhbiBhZGQgc29tZXRoaW5nIHdpdGhv
dXQgaW5jcmVtZW50aW5nIHRoZSB2ZXJzaW9uIG51bWJlci4KKyAgICB1aW50MzJfdCB1bnVzZWQz
MmJpdHMgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IHVudXNlZDY0Yml0czEgeyAwIH07CisgICAg
dWludDY0X3QgdW51c2VkNjRiaXRzMiB7IDAgfTsgLy8gQWRkaXRpb25hbCBzcGFjZSBvbiBkaXNr
IHJlc2VydmVkIHNvIHdlIGNhbiBhZGQgc29tZXRoaW5nIHdpdGhvdXQgaW5jcmVtZW50aW5nIHRo
ZSB2ZXJzaW9uIG51bWJlci4KICAgICAKICAgICBzaXplX3QgZmlsZVNpemUoKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIGhlYWRlclNpemUodmVyc2lvbikKICAgICAgICAgICAgICsgc291
cmNlU2l6ZQogICAgICAgICAgICAgKyBhY3Rpb25zU2l6ZQotICAgICAgICAgICAgKyBmaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUKLSAgICAgICAgICAgICsgZmlsdGVyc1dpdGhD
b25kaXRpb25zQnl0ZWNvZGVTaXplCi0gICAgICAgICAgICArIGNvbmRpdGlvbmVkRmlsdGVyc0J5
dGVjb2RlU2l6ZQorICAgICAgICAgICAgKyB1cmxGaWx0ZXJzQnl0ZWNvZGVTaXplCisgICAgICAg
ICAgICArIHRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemUKICAgICAgICAgICAgICsgZnJhbWVVUkxG
aWx0ZXJzQnl0ZWNvZGVTaXplOwogICAgIH0KIH07CkBAIC0xMzUsMTIgKzEzNCwxMiBAQCBzdGF0
aWMgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZW5jb2RlQ29udGVudFJ1bGVMaXN0TWV0YURh
dGEoY29uc3QgQ29udGVudFJ1bAogICAgIGVuY29kZXIgPDwgbWV0YURhdGEudmVyc2lvbjsKICAg
ICBlbmNvZGVyIDw8IG1ldGFEYXRhLnNvdXJjZVNpemU7CiAgICAgZW5jb2RlciA8PCBtZXRhRGF0
YS5hY3Rpb25zU2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29u
ZGl0aW9uc0J5dGVjb2RlU2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmZpbHRlcnNXaXRo
Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmNvbmRpdGlv
bmVkRmlsdGVyc0J5dGVjb2RlU2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnVudXNlZDMy
Yml0czsKKyAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnVybEZpbHRlcnNCeXRlY29kZVNpemU7Cisg
ICAgZW5jb2RlciA8PCBtZXRhRGF0YS50b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwogICAgIGVu
Y29kZXIgPDwgbWV0YURhdGEuZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwotICAgIGVuY29k
ZXIgPDwgbWV0YURhdGEudW51c2VkNjRiaXRzOworICAgIGVuY29kZXIgPDwgbWV0YURhdGEudW51
c2VkMzJiaXRzOworICAgIGVuY29kZXIgPDwgbWV0YURhdGEudW51c2VkNjRiaXRzMTsKKyAgICBl
bmNvZGVyIDw8IG1ldGFEYXRhLnVudXNlZDY0Yml0czI7CiAKICAgICBBU1NFUlQoZW5jb2Rlci5i
dWZmZXJTaXplKCkgPT0gQ3VycmVudFZlcnNpb25GaWxlSGVhZGVyU2l6ZSk7CiAgICAgcmV0dXJu
IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKQEAgLTE4MSwyMyArMTgwLDIzIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENv
bnRlbnRSdWxlTGlzdE1ldGFEYXRhPiBkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShjb25z
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgbWV0YURhdGEuYWN0aW9uc1NpemUg
PSBXVEZNb3ZlKCphY3Rpb25zU2l6ZSk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
aWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7Ci0gICAgZGVjb2RlciA+PiBmaWx0
ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7Ci0gICAgaWYgKCFmaWx0ZXJzV2l0aG91
dENvbmRpdGlvbnNCeXRlY29kZVNpemUpCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdXJs
RmlsdGVyc0J5dGVjb2RlU2l6ZTsKKyAgICBkZWNvZGVyID4+IHVybEZpbHRlcnNCeXRlY29kZVNp
emU7CisgICAgaWYgKCF1cmxGaWx0ZXJzQnl0ZWNvZGVTaXplKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIG1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2Rl
U2l6ZSA9IFdURk1vdmUoKmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSk7Cisg
ICAgbWV0YURhdGEudXJsRmlsdGVyc0J5dGVjb2RlU2l6ZSA9IFdURk1vdmUoKnVybEZpbHRlcnNC
eXRlY29kZVNpemUpOwogCi0gICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsdGVyc1dpdGhD
b25kaXRpb25zQnl0ZWNvZGVTaXplOwotICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRp
b25zQnl0ZWNvZGVTaXplOwotICAgIGlmICghZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVT
aXplKQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRvcFVSTEZpbHRlcnNCeXRlY29kZVNp
emU7CisgICAgZGVjb2RlciA+PiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOworICAgIGlmICgh
dG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICBtZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUgPSBXVEZNb3Zl
KCpmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUpOworICAgIG1ldGFEYXRhLnRvcFVS
TEZpbHRlcnNCeXRlY29kZVNpemUgPSBXVEZNb3ZlKCp0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXpl
KTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVj
b2RlU2l6ZTsKLSAgICBkZWNvZGVyID4+IGNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZTsK
LSAgICBpZiAoIWNvbmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZSkKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZVVSTEZpbHRlcnNCeXRlY29kZVNpemU7CisgICAgZGVjb2RlciA+
PiBmcmFtZVVSTEZpbHRlcnNCeXRlY29kZVNpemU7CisgICAgaWYgKCFmcmFtZVVSTEZpbHRlcnNC
eXRlY29kZVNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgbWV0YURhdGEu
Y29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplID0gV1RGTW92ZSgqY29uZGl0aW9uZWRGaWx0
ZXJzQnl0ZWNvZGVTaXplKTsKKyAgICBtZXRhRGF0YS5mcmFtZVVSTEZpbHRlcnNCeXRlY29kZVNp
emUgPSBXVEZNb3ZlKCpmcmFtZVVSTEZpbHRlcnNCeXRlY29kZVNpemUpOwogCiAgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gdW51c2VkMzJiaXRzOwogICAgIGRlY29kZXIgPj4gdW51c2VkMzJi
aXRzOwpAQCAtMjA4LDE3ICsyMDcsMTcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29udGVudFJ1
bGVMaXN0TWV0YURhdGE+IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKGNvbnMKICAgICBp
ZiAobWV0YURhdGEudmVyc2lvbiA8IDEyKQogICAgICAgICByZXR1cm4gbWV0YURhdGE7CiAKLSAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZVVSTEZpbHRlcnNCeXRlY29kZVNpemU7Ci0g
ICAgZGVjb2RlciA+PiBmcmFtZVVSTEZpbHRlcnNCeXRlY29kZVNpemU7Ci0gICAgaWYgKCFmcmFt
ZVVSTEZpbHRlcnNCeXRlY29kZVNpemUpCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdW51
c2VkMTsKKyAgICBkZWNvZGVyID4+IHVudXNlZDE7CisgICAgaWYgKCF1bnVzZWQxKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIG1ldGFEYXRhLmZyYW1lVVJMRmlsdGVyc0J5dGVj
b2RlU2l6ZSA9IFdURk1vdmUoKmZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSk7Ci0gICAgCi0g
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdW51c2VkOwotICAgIGRlY29kZXIgPj4gdW51c2Vk
OwotICAgIGlmICghdW51c2VkKQorICAgIG1ldGFEYXRhLnVudXNlZDY0Yml0czEgPSAwOworCisg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdW51c2VkMjsKKyAgICBkZWNvZGVyID4+IHVudXNl
ZDI7CisgICAgaWYgKCF1bnVzZWQyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IG1ldGFEYXRhLnVudXNlZDY0Yml0cyA9IDA7CisgICAgbWV0YURhdGEudW51c2VkNjRiaXRzMiA9
IDA7CiAKICAgICByZXR1cm4gbWV0YURhdGE7CiB9CkBAIC0yNjYsMTggKzI2NSwxOSBAQCBzdGF0
aWMgRXhwZWN0ZWQ8TWFwcGVkRGF0YSwgc3RkOjplcnJvcl9jb2RlPiBjb21waWxlZFRvRmlsZShX
VEY6OlN0cmluZyYmIGpzb24sCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbWV0YURh
dGEuc291cmNlU2l6ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmFjdGlvbnNTaXpl
KTsKLSAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25z
Qnl0ZWNvZGVTaXplKTsKLSAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEuZmlsdGVyc1dpdGhD
b25kaXRpb25zQnl0ZWNvZGVTaXplKTsKLSAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEuY29u
ZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplKTsKKyAgICAgICAgICAgIEFTU0VSVCghbWV0YURh
dGEudXJsRmlsdGVyc0J5dGVjb2RlU2l6ZSk7CisgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRh
LnRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemUpOworICAgICAgICAgICAgQVNTRVJUKCFtZXRhRGF0
YS5mcmFtZVVSTEZpbHRlcnNCeXRlY29kZVNpemUpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICB2b2lkIHdyaXRlU291cmNlKFdURjo6U3RyaW5nJiYgc291cmNlSlNPTikgZmluYWwKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlV3JpdHRlbik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZmlsdGVyc1dpdGhDb25kaXRp
b25CeXRlY29kZVdyaXR0ZW4pOwotICAgICAgICAgICAgQVNTRVJUKCFtX2NvbmRpdGlvbkZpbHRl
cnNCeXRlY29kZVdyaXR0ZW4pOwotICAgICAgICAgICAgQVNTRVJUKCFtX2FjdGlvbnNXcml0dGVu
KTsKICAgICAgICAgICAgIEFTU0VSVCghbV9zb3VyY2VXcml0dGVuKTsKKyAgICAgICAgICAgIEFT
U0VSVCghbV9hY3Rpb25zV3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fdXJsRmlsdGVy
c0J5dGVjb2RlV3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fdG9wVVJMRmlsdGVyc0J5
dGVjb2RlV3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fZnJhbWVVUkxGaWx0ZXJzQnl0
ZWNvZGVXcml0dGVuKTsKKwogICAgICAgICAgICAgd3JpdGVUb0ZpbGUoc291cmNlSlNPTi5pczhC
aXQoKSk7CiAgICAgICAgICAgICBtX3NvdXJjZVdyaXR0ZW4gKz0gc2l6ZW9mKGJvb2wpOwogICAg
ICAgICAgICAgaWYgKHNvdXJjZUpTT04uaXM4Qml0KCkpIHsKQEAgLTI5MCw0NiArMjkwLDQ2IEBA
IHN0YXRpYyBFeHBlY3RlZDxNYXBwZWREYXRhLCBzdGQ6OmVycm9yX2NvZGU+IGNvbXBpbGVkVG9G
aWxlKFdURjo6U3RyaW5nJiYganNvbiwKICAgICAgICAgICAgICAgICBtX3NvdXJjZVdyaXR0ZW4g
Kz0gc2VyaWFsaXplZExlbmd0aDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgdm9pZCB3cml0ZUZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKFZlY3Rv
cjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgZmluYWwKKworICAgICAgICB2b2lkIHdyaXRlQWN0
aW9ucyhWZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiYgYWN0aW9ucykgZmluYWwKICAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNXaXRoQ29uZGl0aW9uQnl0ZWNvZGVX
cml0dGVuKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9jb25kaXRpb25GaWx0ZXJzQnl0ZWNvZGVX
cml0dGVuKTsKLSAgICAgICAgICAgIG1fZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVX
cml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKLSAgICAgICAgICAgIHdyaXRlVG9GaWxlKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7
CisgICAgICAgICAgICBBU1NFUlQoIW1fYWN0aW9uc1dyaXR0ZW4pOworICAgICAgICAgICAgQVNT
RVJUKCFtX3VybEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFt
X3RvcFVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX2Zy
YW1lVVJMRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CisgICAgICAgICAgICBtX2FjdGlvbnNXcml0
dGVuICs9IGFjdGlvbnMuc2l6ZSgpOworICAgICAgICAgICAgd3JpdGVUb0ZpbGUoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkRhdGEoYWN0aW9ucy5kYXRhKCksIGFjdGlvbnMuc2l6ZSgpKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNC
eXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCisKKyAgICAgICAg
dm9pZCB3cml0ZVVSTEZpbHRlcnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNv
ZGUpIGZpbmFsCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9jb25kaXRpb25GaWx0
ZXJzQnl0ZWNvZGVXcml0dGVuKTsKLSAgICAgICAgICAgIG1fZmlsdGVyc1dpdGhDb25kaXRpb25C
eXRlY29kZVdyaXR0ZW4gKz0gYnl0ZWNvZGUuc2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKCFt
X3RvcFVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX2Zy
YW1lVVJMRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CisgICAgICAgICAgICBtX3VybEZpbHRlcnNC
eXRlY29kZVdyaXR0ZW4gKz0gYnl0ZWNvZGUuc2l6ZSgpOwogICAgICAgICAgICAgd3JpdGVUb0Zp
bGUoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRlY29kZS5z
aXplKCkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCB3cml0ZVRvcFVSTEZp
bHRlcnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIG1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbiArPSBi
eXRlY29kZS5zaXplKCk7CisgICAgICAgICAgICBBU1NFUlQoIW1fZnJhbWVVUkxGaWx0ZXJzQnl0
ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIG1fdG9wVVJMRmlsdGVyc0J5dGVjb2RlV3JpdHRl
biArPSBieXRlY29kZS5zaXplKCk7CiAgICAgICAgICAgICB3cml0ZVRvRmlsZShXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6RGF0YShieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkpOwogICAg
ICAgICB9Ci0KLSAgICAgICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPFNlcmlhbGl6ZWRBY3Rp
b25CeXRlPiYmIGFjdGlvbnMpIGZpbmFsCisgICAgICAgIAorICAgICAgICB2b2lkIHdyaXRlRnJh
bWVVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5h
bAogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zQnl0ZWNvZGVXcml0dGVuKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENv
bmRpdGlvbkJ5dGVjb2RlV3JpdHRlbik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0aW9u
RmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fYWN0aW9uc1dy
aXR0ZW4pOwotICAgICAgICAgICAgbV9hY3Rpb25zV3JpdHRlbiArPSBhY3Rpb25zLnNpemUoKTsK
LSAgICAgICAgICAgIHdyaXRlVG9GaWxlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhKGFjdGlv
bnMuZGF0YSgpLCBhY3Rpb25zLnNpemUoKSkpOworICAgICAgICAgICAgbV9mcmFtZVVSTEZpbHRl
cnNCeXRlY29kZVdyaXR0ZW4gKz0gYnl0ZWNvZGUuc2l6ZSgpOworICAgICAgICAgICAgd3JpdGVU
b0ZpbGUoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRlY29k
ZS5zaXplKCkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBmaW5hbGl6ZSgp
IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fbWV0YURhdGEuc291cmNlU2l6ZSA9IG1f
c291cmNlV3JpdHRlbjsKICAgICAgICAgICAgIG1fbWV0YURhdGEuYWN0aW9uc1NpemUgPSBtX2Fj
dGlvbnNXcml0dGVuOwotICAgICAgICAgICAgbV9tZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZVNpemUgPSBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3Jp
dHRlbjsKLSAgICAgICAgICAgIG1fbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNv
ZGVTaXplID0gbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbjsKLSAgICAgICAg
ICAgIG1fbWV0YURhdGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplID0gbV9jb25kaXRp
b25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuOwotICAgICAgICAgICAgCisgICAgICAgICAgICBtX21l
dGFEYXRhLnVybEZpbHRlcnNCeXRlY29kZVNpemUgPSBtX3VybEZpbHRlcnNCeXRlY29kZVdyaXR0
ZW47CisgICAgICAgICAgICBtX21ldGFEYXRhLnRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemUgPSBt
X3RvcFVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW47CisgICAgICAgICAgICBtX21ldGFEYXRhLmZy
YW1lVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSA9IG1fZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVXcml0
dGVuOworCiAgICAgICAgICAgICBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSBoZWFkZXIgPSBl
bmNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShtX21ldGFEYXRhKTsKICAgICAgICAgICAgIGlm
ICghbV9maWxlRXJyb3IgJiYgc2Vla0ZpbGUobV9maWxlSGFuZGxlLCAwbGwsIEZpbGVTZWVrT3Jp
Z2luOjpCZWdpbm5pbmcpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgY2xvc2VGaWxlKG1fZmls
ZUhhbmRsZSk7CkBAIC0zNTUsMTEgKzM1NSwxMSBAQCBzdGF0aWMgRXhwZWN0ZWQ8TWFwcGVkRGF0
YSwgc3RkOjplcnJvcl9jb2RlPiBjb21waWxlZFRvRmlsZShXVEY6OlN0cmluZyYmIGpzb24sCiAg
ICAgICAgIAogICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOwogICAgICAg
ICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbV9tZXRhRGF0YTsKLSAgICAgICAgc2l6ZV90IG1f
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVXcml0dGVuIHsgMCB9OwotICAgICAgICBz
aXplX3QgbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbiB7IDAgfTsKLSAgICAg
ICAgc2l6ZV90IG1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsKLSAgICAg
ICAgc2l6ZV90IG1fYWN0aW9uc1dyaXR0ZW4geyAwIH07CiAgICAgICAgIHNpemVfdCBtX3NvdXJj
ZVdyaXR0ZW4geyAwIH07CisgICAgICAgIHNpemVfdCBtX2FjdGlvbnNXcml0dGVuIHsgMCB9Owor
ICAgICAgICBzaXplX3QgbV91cmxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuIHsgMCB9OworICAgICAg
ICBzaXplX3QgbV90b3BVUkxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuIHsgMCB9OworICAgICAgICBz
aXplX3QgbV9mcmFtZVVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4geyAwIH07CiAgICAgICAgIGJv
b2wgbV9maWxlRXJyb3IgeyBmYWxzZSB9OwogICAgIH07CiAKQEAgLTQyMiwyOCArNDIyLDIxIEBA
IHN0YXRpYyBSZWY8QVBJOjpDb250ZW50UnVsZUxpc3Q+IGNyZWF0ZUV4dGVuc2lvbihjb25zdCBX
VEY6OlN0cmluZyYgaWRlbnRpZmllciwKICAgICBSRUxFQVNFX0FTU0VSVChzaGFyZWRNZW1vcnkp
OwogCiAgICAgY29uc3Qgc2l6ZV90IGhlYWRlckFuZFNvdXJjZVNpemUgPSBoZWFkZXJTaXplKGRh
dGEubWV0YURhdGEudmVyc2lvbikgKyBkYXRhLm1ldGFEYXRhLnNvdXJjZVNpemU7CisgICAgY29u
c3Qgc2l6ZV90IGFjdGlvbnNPZmZzZXQgPSBoZWFkZXJBbmRTb3VyY2VTaXplOworICAgIGNvbnN0
IHNpemVfdCB1cmxGaWx0ZXJzT2Zmc2V0ID0gYWN0aW9uc09mZnNldCArIGRhdGEubWV0YURhdGEu
YWN0aW9uc1NpemU7CisgICAgY29uc3Qgc2l6ZV90IHRvcFVSTEZpbHRlcnNPZmZzZXQgPSB1cmxG
aWx0ZXJzT2Zmc2V0ICsgZGF0YS5tZXRhRGF0YS51cmxGaWx0ZXJzQnl0ZWNvZGVTaXplOworICAg
IGNvbnN0IHNpemVfdCBmcmFtZVVSTEZpbHRlcnNPZmZzZXQgPSB0b3BVUkxGaWx0ZXJzT2Zmc2V0
ICsgZGF0YS5tZXRhRGF0YS50b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOworCiAgICAgYXV0byBj
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEgPSBXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YSgKICAgICAgICAgV1RGOjpTdHJpbmcoaWRlbnRpZmllciksCiAgICAgICAgIHNo
YXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLAotICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXpl
LAorICAgICAgICBhY3Rpb25zT2Zmc2V0LAogICAgICAgICBkYXRhLm1ldGFEYXRhLmFjdGlvbnNT
aXplLAotICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplCi0gICAgICAgICAgICArIGRhdGEubWV0
YURhdGEuYWN0aW9uc1NpemUsCi0gICAgICAgIGRhdGEubWV0YURhdGEuZmlsdGVyc1dpdGhvdXRD
b25kaXRpb25zQnl0ZWNvZGVTaXplLAotICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplCi0gICAg
ICAgICAgICArIGRhdGEubWV0YURhdGEuYWN0aW9uc1NpemUKLSAgICAgICAgICAgICsgZGF0YS5t
ZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUsCi0gICAgICAgIGRh
dGEubWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplLAotICAgICAgICBo
ZWFkZXJBbmRTb3VyY2VTaXplCi0gICAgICAgICAgICArIGRhdGEubWV0YURhdGEuYWN0aW9uc1Np
emUKLSAgICAgICAgICAgICsgZGF0YS5tZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZVNpemUKLSAgICAgICAgICAgICsgZGF0YS5tZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRp
dGlvbnNCeXRlY29kZVNpemUsCi0gICAgICAgIGRhdGEubWV0YURhdGEuY29uZGl0aW9uZWRGaWx0
ZXJzQnl0ZWNvZGVTaXplLAotICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplCi0gICAgICAgICAg
ICArIGRhdGEubWV0YURhdGEuYWN0aW9uc1NpemUKLSAgICAgICAgICAgICsgZGF0YS5tZXRhRGF0
YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUKLSAgICAgICAgICAgICsgZGF0
YS5tZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUKLSAgICAgICAgICAg
ICsgZGF0YS5tZXRhRGF0YS5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUsCisgICAgICAg
IHVybEZpbHRlcnNPZmZzZXQsCisgICAgICAgIGRhdGEubWV0YURhdGEudXJsRmlsdGVyc0J5dGVj
b2RlU2l6ZSwKKyAgICAgICAgdG9wVVJMRmlsdGVyc09mZnNldCwKKyAgICAgICAgZGF0YS5tZXRh
RGF0YS50b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplLAorICAgICAgICBmcmFtZVVSTEZpbHRlcnNP
ZmZzZXQsCiAgICAgICAgIGRhdGEubWV0YURhdGEuZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXpl
CiAgICAgKTsKICAgICBhdXRvIGNvbXBpbGVkQ29udGVudFJ1bGVMaXN0ID0gV2ViS2l0OjpXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoY29tcGlsZWRDb250ZW50UnVs
ZUxpc3REYXRhKSk7CkBAIC00NTQsMzAgKzQ0NywyNSBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZ2V0
Q29udGVudFJ1bGVMaXN0U291cmNlRnJvbU1hcHBlZEZpbGUoY29uc3QgTWFwcGVkRGF0YSYgbWFw
cAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgc3dpdGNoIChtYXBw
ZWREYXRhLm1ldGFEYXRhLnZlcnNpb24pIHsKLSAgICBjYXNlIDk6Ci0gICAgY2FzZSAxMDoKLSAg
ICBjYXNlIDExOgotICAgIGNhc2UgMTI6Ci0gICAgY2FzZSAxMzoKLSAgICAgICAgaWYgKCFtYXBw
ZWREYXRhLm1ldGFEYXRhLnNvdXJjZVNpemUpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICAgICAgCi0gICAgICAgIGF1dG8gaGVhZGVyU2l6ZUJ5dGVzID0gaGVhZGVyU2l6ZShtYXBw
ZWREYXRhLm1ldGFEYXRhLnZlcnNpb24pOwotICAgICAgICBib29sIGlzOEJpdCA9IG1hcHBlZERh
dGEuZGF0YS5kYXRhKClbaGVhZGVyU2l6ZUJ5dGVzXTsKLSAgICAgICAgc2l6ZV90IHN0YXJ0ID0g
aGVhZGVyU2l6ZUJ5dGVzICsgc2l6ZW9mKGJvb2wpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0g
bWFwcGVkRGF0YS5tZXRhRGF0YS5zb3VyY2VTaXplIC0gc2l6ZW9mKGJvb2wpOwotICAgICAgICBp
ZiAoaXM4Qml0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6U3RyaW5nKG1hcHBlZERhdGEuZGF0
YS5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsKLSAgICAgICAgaWYgKGxlbmd0aCAlIHNpemVvZihV
Q2hhcikpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpTdHJpbmcocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KG1hcHBlZERhdGEuZGF0YS5kYXRhKCkgKyBzdGFydCks
IGxlbmd0aCAvIHNpemVvZihVQ2hhcikpOworICAgIGlmIChtYXBwZWREYXRhLm1ldGFEYXRhLnZl
cnNpb24gPCA5KSB7CisgICAgICAgIC8vIE9sZGVyIHZlcnNpb25zIGNhbm5vdCByZWNvdmVyIHRo
ZSBvcmlnaW5hbCBKU09OIHNvdXJjZSBmcm9tIGRpc2suCisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCi0gICAgLy8gT2xkZXIgdmVyc2lvbnMgY2Fubm90IHJlY292ZXIgdGhlIG9yaWdpbmFs
IEpTT04gc291cmNlIGZyb20gZGlzay4KLSAgICByZXR1cm4geyB9OworICAgIGlmICghbWFwcGVk
RGF0YS5tZXRhRGF0YS5zb3VyY2VTaXplKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0
byBoZWFkZXJTaXplQnl0ZXMgPSBoZWFkZXJTaXplKG1hcHBlZERhdGEubWV0YURhdGEudmVyc2lv
bik7CisgICAgYm9vbCBpczhCaXQgPSBtYXBwZWREYXRhLmRhdGEuZGF0YSgpW2hlYWRlclNpemVC
eXRlc107CisgICAgc2l6ZV90IHN0YXJ0ID0gaGVhZGVyU2l6ZUJ5dGVzICsgc2l6ZW9mKGJvb2wp
OworICAgIHNpemVfdCBsZW5ndGggPSBtYXBwZWREYXRhLm1ldGFEYXRhLnNvdXJjZVNpemUgLSBz
aXplb2YoYm9vbCk7CisgICAgaWYgKGlzOEJpdCkKKyAgICAgICAgcmV0dXJuIFdURjo6U3RyaW5n
KG1hcHBlZERhdGEuZGF0YS5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsKKyAgICBpZiAobGVuZ3Ro
ICUgc2l6ZW9mKFVDaGFyKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6U3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUNoYXIqPihtYXBwZWREYXRhLmRhdGEuZGF0YSgpICsgc3RhcnQpLCBsZW5n
dGggLyBzaXplb2YoVUNoYXIpKTsKIH0KIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6bG9v
a3VwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3Jf
Y29kZSk+IGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAppbmRleCAyMDgzNGQ3ODhlNDAzNjE0
MWNmOTJiZTU0ZjQzMWJjYjhhNjBlZjY0Li5iNjQ4NThlMmQyN2UwODI0ZDg1ZmNjOWM1ZGIxNjc1
MTUzZTBkM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtNTQsOSArNTQsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICAvLyBUaGlzIHNob3VsZCBiZSBpbmNyZW1lbnRl
ZCBldmVyeSB0aW1lIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgbWFkZSB0byB0aGUgYnl0ZWNvZGUs
IGZpbGUgZm9ybWF0LCBldGMuCiAgICAgLy8gdG8gcHJldmVudCBjcmFzaGluZyB3aGlsZSBsb2Fk
aW5nIG9sZCBkYXRhLgotICAgIC8vIEFsc28gdXBkYXRlIGdldENvbnRlbnRSdWxlTGlzdFNvdXJj
ZUZyb21NYXBwZWRGaWxlIHRvIGJlIGFibGUgdG8gZmluZCB0aGUgb3JpZ2luYWwgSlNPTgotICAg
IC8vIHNvdXJjZSBmcm9tIG9sZCB2ZXJzaW9ucy4KLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IEN1cnJlbnRDb250ZW50UnVsZUxpc3RGaWxlVmVyc2lvbiA9IDEzOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDMyX3QgQ3VycmVudENvbnRlbnRSdWxlTGlzdEZpbGVWZXJzaW9uID0gMTQ7
CiAKICAgICBzdGF0aWMgQ29udGVudFJ1bGVMaXN0U3RvcmUmIGRlZmF1bHRTdG9yZSgpOwogICAg
IHN0YXRpYyBSZWY8Q29udGVudFJ1bGVMaXN0U3RvcmU+IHN0b3JlV2l0aFBhdGgoY29uc3QgV1RG
OjpTdHJpbmcmIHN0b3JlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggZWMwNmE1MmQwODJmYjU0YzNh
MTI4YzIwMmNmOWZhNGJjMWY1YjM5My4uYzNkZjE1M2UwZTZhMjdmYjY3MDQxNzAwM2EzNGQzMGI4
MWM1NWMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMzYxLDYgKzM2MSw3IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAoZG9jdW1l
bnQpIHsKICAgICAgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMID0gZG9jdW1lbnQt
PnRvcERvY3VtZW50KCkudXJsKCk7CisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmZyYW1lVVJMID0g
ZG9jdW1lbnQtPnVybCgpOwogICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBwYXNzaW5nIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIHRoZSBOZXR3b3JrUHJvY2VzcyBzaG91bGQg
YmUgYWJsZSB0byBnZXQgaXQgdXNpbmcgd2ViUGFnZUlkLgogICAgICAgICBpZiAoYXV0byogd2Vi
UGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHIpCiAgICAgICAgICAg
ICBsb2FkUGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gd2ViUGFn
ZS0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcigpOwpAQCAtNzUyLDYgKzc1Myw3IEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQogICAgIGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1
bWVudCgpLnVybCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmZyYW1lVVJMID0gZG9jdW1lbnQtPnVy
bCgpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciwgd2Ugc2hvdWxkIGp1c3QgcGFzcyB3ZWJQYWdlSWQgdG8gTmV0d29ya1By
b2Nlc3MuCiAgICAgbG9hZFBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciA9IHdlYlBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJmY2Nm
ZGQzOTFlOGQwYzg0MjU5OThkMjQwZDdiNGM4NzZhMDBmZmUuLjM0YzlkZDE4MjExNzk3Zjk0NWM2
NjE3MzY0OGRkMzUzZDZlYzQ3YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFsbG93IFdLQ29udGVu
dFJ1bGVMaXN0IHRvIHJ1biByZWdleGVzIG9uIGN1cnJlbnQgZnJhbWUncyBVUkwsIG5vdCBqdXN0
IHRvcCBmcmFtZSdzIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzODg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bWFpbkRvY3VtZW50UmVxdWVzdCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpzdWJSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgaWYtZG9tYWluIGFuZCB1bmxlc3Mt
ZG9tYWluIGNvbnZlcnNpb24gdG8gV0tDb250ZW50UnVsZUxpc3QgcGFyc2luZwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAKaW5kZXggZjAyMzVjMmMzM2U2OGI3M2Y3YzE5MjQzZTdlOWMwOTg0YmQ5MzI0Ny4uZWM3ZTRj
NzY2NDUwOGMwYjNmNGUzMGJkZjYxODVhNWJkNzRjM2Y5NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC02
Myw4ICs2Myw3IEBAIHB1YmxpYzoKIAogc3RydWN0IENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRh
dGEgewogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZEFjdGlvbkJ5dGU+
IGFjdGlvbnM7Ci0gICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4gZmls
dGVyc1dpdGhvdXRDb25kaXRpb25zOwotICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZB
Qnl0ZWNvZGU+IGZpbHRlcnNXaXRoQ29uZGl0aW9uczsKKyAgICBWZWN0b3I8Q29udGVudEV4dGVu
c2lvbnM6OkRGQUJ5dGVjb2RlPiB1cmxGaWx0ZXJzOwogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5z
aW9uczo6REZBQnl0ZWNvZGU+IHRvcFVSTEZpbHRlcnM7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRl
bnNpb25zOjpERkFCeXRlY29kZT4gZnJhbWVVUkxGaWx0ZXJzOwogfTsKQEAgLTc1LDUyICs3NCw2
MiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAgewogICAgICAgICBFWFBF
Q1RfRVEoZGF0YS5hY3Rpb25zLnNpemUoKSwgMHVsbCk7Ci0gICAgICAgIEVYUEVDVF9FUShkYXRh
LmZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5zaXplKCksIDB1bGwpOwotICAgICAgICBFWFBFQ1Rf
RVEoZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMuc2l6ZSgpLCAwdWxsKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGRhdGEudXJsRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAgICAgICBFWFBFQ1RfRVEo
ZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSwgMHVsbCk7CisgICAgICAgIEVYUEVDVF9FUShkYXRh
LmZyYW1lVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2
b2lkIHdyaXRlU291cmNlKFN0cmluZyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHdyaXRlU291cmNl
KFN0cmluZyYmKSBmaW5hbAorICAgIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHNvdXJjZVdyaXR0
ZW4pOworICAgICAgICBzb3VyY2VXcml0dGVuID0gdHJ1ZTsKKyAgICB9CiAKLSAgICB2b2lkIHdy
aXRlQWN0aW9ucyhWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRl
PiYmIGFjdGlvbnMpIGZpbmFsCisgICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPFNlcmlhbGl6
ZWRBY3Rpb25CeXRlPiYmIGFjdGlvbnMpIGZpbmFsCiAgICAgeworICAgICAgICBFWFBFQ1RfVFJV
RShzb3VyY2VXcml0dGVuKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbmFsaXplZCk7CiAgICAg
ICAgIEVYUEVDVF9FUShtX2RhdGEuYWN0aW9ucy5zaXplKCksIDB1bGwpOwotICAgICAgICBFWFBF
Q1RfRVEobV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5zaXplKCksIDB1bGwpOwotICAg
ICAgICBFWFBFQ1RfRVEobV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5zaXplKCksIDB1bGwp
OworICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLnVybEZpbHRlcnMuc2l6ZSgpLCAwdWxsKTsKICAg
ICAgICAgRVhQRUNUX0VRKG1fZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSwgMHVsbCk7Ci0gICAg
ICAgIEVYUEVDVF9FUShtX2RhdGEuYWN0aW9ucy5zaXplKCksIDB1bGwpOworICAgICAgICBFWFBF
Q1RfRVEobV9kYXRhLmZyYW1lVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAgICAgICBtX2Rh
dGEuYWN0aW9ucy5hcHBlbmRWZWN0b3IoYWN0aW9ucyk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
d3JpdGVGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8Q29udGVudEV4dGVu
c2lvbnM6OkRGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAorICAgIHZvaWQgd3JpdGVVUkxG
aWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAogICAg
IHsKKyAgICAgICAgRVhQRUNUX1RSVUUoc291cmNlV3JpdHRlbik7CiAgICAgICAgIEVYUEVDVF9G
QUxTRShmaW5hbGl6ZWQpOwotICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmZpbHRlcnNXaXRoQ29u
ZGl0aW9ucy5zaXplKCksIDB1bGwpOwogICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLnRvcFVSTEZp
bHRlcnMuc2l6ZSgpLCAwdWxsKTsKLSAgICAgICAgbV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0
aW9ucy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOworICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmZy
YW1lVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOworICAgICAgICBtX2RhdGEudXJsRmlsdGVycy5h
cHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwogICAgIH0KLSAgICAKLSAgICB2b2lkIHdyaXRlRmlsdGVy
c1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRl
Y29kZT4mJiBieXRlY29kZSkgZmluYWwKKworICAgIHZvaWQgd3JpdGVUb3BVUkxGaWx0ZXJzQnl0
ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAogICAgIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoc291cmNlV3JpdHRlbik7CiAgICAgICAgIEVYUEVDVF9GQUxTRShmaW5h
bGl6ZWQpOwotICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLnRvcFVSTEZpbHRlcnMuc2l6ZSgpLCAw
dWxsKTsKLSAgICAgICAgbV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5hcHBlbmRWZWN0b3Io
Ynl0ZWNvZGUpOworICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmZyYW1lVVJMRmlsdGVycy5zaXpl
KCksIDB1bGwpOworICAgICAgICBtX2RhdGEudG9wVVJMRmlsdGVycy5hcHBlbmRWZWN0b3IoYnl0
ZWNvZGUpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHdyaXRlVG9wVVJMRmlsdGVyc0J5dGVjb2Rl
KFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFs
CisgICAgdm9pZCB3cml0ZUZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29k
ZT4mJiBieXRlY29kZSkgZmluYWwKICAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKHNvdXJjZVdy
aXR0ZW4pOwogICAgICAgICBFWFBFQ1RfRkFMU0UoZmluYWxpemVkKTsKLSAgICAgICAgbV9kYXRh
LnRvcFVSTEZpbHRlcnMuYXBwZW5kVmVjdG9yKGJ5dGVjb2RlKTsKKyAgICAgICAgbV9kYXRhLmZy
YW1lVVJMRmlsdGVycy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwogICAgIH0KICAgICAKICAgICB2
b2lkIGZpbmFsaXplKCkgZmluYWwKICAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKHNvdXJjZVdy
aXR0ZW4pOworICAgICAgICBFWFBFQ1RfRkFMU0UoZmluYWxpemVkKTsKICAgICAgICAgZmluYWxp
emVkID0gdHJ1ZTsKICAgICB9CiAKICAgICBDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhJiBt
X2RhdGE7CisgICAgYm9vbCBzb3VyY2VXcml0dGVuIHsgZmFsc2UgfTsKICAgICBib29sIGZpbmFs
aXplZCB7IGZhbHNlIH07CiB9OwogCkBAIC0xNDMsOCArMTUyLDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFNwYW48Y29uc3QgdWludDhfdD4gc2VyaWFsaXplZEFjdGlvbnMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB7IG1fZGF0YS5hY3Rpb25zLmRhdGEoKSwgbV9kYXRhLmFjdGlvbnMuc2l6
ZSgpIH07IH0KLSAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9u
c0J5dGVjb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4geyBtX2RhdGEuZmlsdGVyc1dpdGhvdXRD
b25kaXRpb25zLmRhdGEoKSwgbV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5zaXplKCkg
fTsgfQotICAgIFNwYW48Y29uc3QgdWludDhfdD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNv
ZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IG1fZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMu
ZGF0YSgpLCBtX2RhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLnNpemUoKSB9OyB9CisgICAgU3Bh
bjxjb25zdCB1aW50OF90PiB1cmxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB7IG1fZGF0YS51cmxGaWx0ZXJzLmRhdGEoKSwgbV9kYXRhLnVybEZpbHRlcnMuc2l6ZSgpIH07
IH0KICAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHRvcFVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHsgbV9kYXRhLnRvcFVSTEZpbHRlcnMuZGF0YSgpLCBtX2RhdGEudG9w
VVJMRmlsdGVycy5zaXplKCkgfTsgfQogICAgIFNwYW48Y29uc3QgdWludDhfdD4gZnJhbWVVUkxG
aWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IG1fZGF0YS5mcmFtZVVSTEZp
bHRlcnMuZGF0YSgpLCBtX2RhdGEuZnJhbWVVUkxGaWx0ZXJzLnNpemUoKSB9OyB9CiAKQEAgLTE4
NSwxNCArMTkzLDE2IEBAIHZvaWQgc3RhdGljIHRlc3RSZXF1ZXN0SW1wbChpbnQgbGluZSwgY29u
c3QgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zCiAgICAgRVhQRUNUX0VRKGFj
dGlvbnMuc2Vjb25kLnNpemUoKSwgc3R5bGVzaGVldHMpOwogfQogCi1zdGF0aWMgUmVzb3VyY2VM
b2FkSW5mbyBtYWluRG9jdW1lbnRSZXF1ZXN0KGNvbnN0IGNoYXIqIHVybCwgUmVzb3VyY2VUeXBl
IHJlc291cmNlVHlwZSA9IFJlc291cmNlVHlwZTo6RG9jdW1lbnQpCitzdGF0aWMgUmVzb3VyY2VM
b2FkSW5mbyBtYWluRG9jdW1lbnRSZXF1ZXN0KGNvbnN0IGNoYXIqIHVybFN0cmluZywgUmVzb3Vy
Y2VUeXBlIHJlc291cmNlVHlwZSA9IFJlc291cmNlVHlwZTo6RG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIHsgVVJMKFVSTCgpLCB1cmwpLCBVUkwoVVJMKCksIHVybCksIHJlc291cmNlVHlwZSB9Owor
ICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CisgICAgcmV0dXJuIHsgdXJsLCB1cmwsIHVy
bCwgcmVzb3VyY2VUeXBlIH07CiB9CiAKLXN0YXRpYyBSZXNvdXJjZUxvYWRJbmZvIHN1YlJlc291
cmNlUmVxdWVzdChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG1haW5Eb2N1bWVudFVSTCwg
UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSA9IFJlc291cmNlVHlwZTo6RG9jdW1lbnQpCitzdGF0
aWMgUmVzb3VyY2VMb2FkSW5mbyBzdWJSZXNvdXJjZVJlcXVlc3QoY29uc3QgY2hhciogdXJsLCBj
b25zdCBjaGFyKiBtYWluRG9jdW1lbnRVUkxTdHJpbmcsIFJlc291cmNlVHlwZSByZXNvdXJjZVR5
cGUgPSBSZXNvdXJjZVR5cGU6OkRvY3VtZW50KQogewotICAgIHJldHVybiB7IFVSTChVUkwoKSwg
dXJsKSwgVVJMKFVSTCgpLCBtYWluRG9jdW1lbnRVUkwpLCByZXNvdXJjZVR5cGUgfTsKKyAgICBV
UkwgbWFpbkRvY3VtZW50VVJMKFVSTCgpLCBtYWluRG9jdW1lbnRVUkxTdHJpbmcpOworICAgIHJl
dHVybiB7IFVSTChVUkwoKSwgdXJsKSwgbWFpbkRvY3VtZW50VVJMLCBtYWluRG9jdW1lbnRVUkws
IHJlc291cmNlVHlwZSB9OwogfQogCiBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lv
bnNCYWNrZW5kIG1ha2VCYWNrZW5kKGNvbnN0IGNoYXIqIGpzb24pCkBAIC03NzgsMTYgKzc4OCwy
MCBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIERvbWFpblRyaWdnZXJzQWxvbmdNZXJn
ZWRBY3Rpb25zKQogCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFRvcFVSTCkKIHsKKyAg
ICAvKgogICAgIGNvbnN0IFZlY3RvcjxzaXplX3Q+IGJsb2NrTG9hZCA9IHsgdmFyaWFudEluZGV4
PENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja0xvYWRBY3Rpb24+IH07CiAgICAgY29uc3QgVmVjdG9y
PHNpemVfdD4gYmxvY2tDb29raWVzID0geyB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6
OkJsb2NrQ29va2llc0FjdGlvbj4gfTsKLQorKi8KICAgICBhdXRvIGlmVG9wVVJMID0gbWFrZUJh
Y2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1
cmwtZmlsdGVyXCI6XCJ0ZXN0XFxcXC5odG1sXCIsIFwiaWYtdG9wLXVybFwiOltcIl5odHRwOi8v
d2ViLipraXQub3JnXCJdfX1dIik7CisgICAgLyoKICAgICB0ZXN0UmVxdWVzdChpZlRvcFVSTCwg
bWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmcvdGVzdC5odG1sIiksIGJsb2Nr
TG9hZCk7CiAgICAgdGVzdFJlcXVlc3QoaWZUb3BVUkwsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0
dHA6Ly93ZWJraXQub3JnL3Rlc3Qubm90X2h0bWwiKSwgeyB9KTsKICAgICB0ZXN0UmVxdWVzdChp
ZlRvcFVSTCwgbWFpbkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL1dFQktJVC5vcmcvdGVzdC5odG1s
IiksIGJsb2NrTG9hZCk7CiAgICAgdGVzdFJlcXVlc3QoaWZUb3BVUkwsIG1haW5Eb2N1bWVudFJl
cXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL1RFU1QuaHRtbCIpLCBibG9ja0xvYWQpOwogICAgIHRl
c3RSZXF1ZXN0KGlmVG9wVVJMLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2ViX19raXQu
b3JnL3Rlc3QuaHRtbCIpLCBibG9ja0xvYWQpOworICAgICovCiAgICAgdGVzdFJlcXVlc3QoaWZU
b3BVUkwsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJrX19pdC5vcmcvdGVzdC5odG1s
IiksIHsgfSk7CisgICAgLyoKICAgICB0ZXN0UmVxdWVzdChpZlRvcFVSTCwgbWFpbkRvY3VtZW50
UmVxdWVzdCgiaHR0cDovL3dlYl9fa2l0Lm9yZy90ZXN0Lm5vdF9odG1sIiksIHsgfSk7CiAgICAg
dGVzdFJlcXVlc3QoaWZUb3BVUkwsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9ub3Rfd2Vi
a2l0Lm9yZy90ZXN0Lmh0bWwiKSwgeyB9KTsKICAgICB0ZXN0UmVxdWVzdChpZlRvcFVSTCwgc3Vi
UmVzb3VyY2VSZXF1ZXN0KCJodHRwOi8vbm90X3dlYmtpdC5vcmcvdGVzdC5odG1sIiwgImh0dHA6
Ly93ZWJraXQub3JnL25vdF90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsKQEAgLTg0MCw2ICs4NTQs
NyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFRvcFVSTCkKICAgICBhdXRvIGNhc2VJ
bnNlbnNpdGl2ZSA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwidGVzdFxcXFwuaHRtbFwiLCBcImlmLXRv
cC11cmxcIjpbXCJeaHR0cDovL3dlYi4qa2l0Lm9yZy90ZXN0XCJdfX1dIik7CiAgICAgdGVzdFJl
cXVlc3QoY2FzZUluc2Vuc2l0aXZlLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0
Lm9yZy90ZXN0Lmh0bWwiKSwgYmxvY2tMb2FkKTsKICAgICB0ZXN0UmVxdWVzdChjYXNlSW5zZW5z
aXRpdmUsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly93ZWJraXQub3JnL1RFU1QuaHRtbCIp
LCBibG9ja0xvYWQpOworICAgICAqLwogfQogCiBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3Qs
IE11bHRpcGxlRXh0ZW5zaW9ucykKQEAgLTk3MCw5ICs5ODUsOSBAQCBURVNUX0YoQ29udGVudEV4
dGVuc2lvblRlc3QsIFN0cmluZ0NvbWJpbmluZykKICAgICBBU1NFUlRfRVEoc2VxdWVuY2VJbnN0
YW5jZXMoZGF0YS5hY3Rpb25zLCAiR0dHIiksIDEpOwogCiAgICAgQVNTRVJUX0VRKGRhdGEuYWN0
aW9ucy5zaXplKCksIDcydSk7Ci0gICAgQVNTRVJUX0VRKGRhdGEuZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zLnNpemUoKSwgMjg4dSk7Ci0gICAgQVNTRVJUX0VRKGRhdGEuZmlsdGVyc1dpdGhDb25k
aXRpb25zLnNpemUoKSwgNXUpOworICAgIEFTU0VSVF9FUShkYXRhLnVybEZpbHRlcnMuc2l6ZSgp
LCAyODh1KTsKICAgICBBU1NFUlRfRVEoZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSwgNXUpOwor
ICAgIEFTU0VSVF9FUShkYXRhLmZyYW1lVVJMRmlsdGVycy5zaXplKCksIDV1KTsKIAogICAgIGF1
dG8gZXh0ZW5zaW9uV2l0aEZsYWdzID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246
OmNyZWF0ZSgiWyIKICAgICAgICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcIm5vdGlmeVwiLFwi
bm90aWZpY2F0aW9uXCI6XCJBQUFcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiQVwi
fX0sIgpAQCAtMTEyMywxMyArMTEzOCwxMyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3Qs
IExvYWRUeXBlKQogICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0
cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiYWx3YXlzYmxvY2sucGRmXCJ9fV0iKTsKICAgICAK
ICAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Vi
a2l0Lm9yZyIpLCB7IH0pOwotICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIHsgVVJMKFVSTCgpLCAi
aHR0cDovL3dlYmtpdC5vcmciKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF93ZWJraXQub3JnIiks
IFJlc291cmNlVHlwZTo6RG9jdW1lbnQgfSwgeyB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lv
bnM6OkJsb2NrTG9hZEFjdGlvbj4gfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgeyBVUkwo
VVJMKCksICJodHRwOi8vd2Via2l0Lm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90X3dlYmtp
dC5vcmciKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF93ZWJraXQub3JnIiksIFJlc291cmNlVHlw
ZTo6RG9jdW1lbnQgfSwgeyB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrTG9h
ZEFjdGlvbj4gfSk7CiAgICAgICAgIAogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1
bWVudFJlcXVlc3QoImh0dHA6Ly93aGF0d2cub3JnIiksIHsgdmFyaWFudEluZGV4PENvbnRlbnRF
eHRlbnNpb25zOjpCbG9ja0xvYWRBY3Rpb24+IH0pOwotICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQs
IHsgVVJMKFVSTCgpLCAiaHR0cDovL3doYXR3Zy5vcmciKSwgVVJMKFVSTCgpLCAiaHR0cDovL25v
dF93aGF0d2cub3JnIiksIFJlc291cmNlVHlwZTo6RG9jdW1lbnQgfSwgeyB9KTsKKyAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCB7IFVSTChVUkwoKSwgImh0dHA6Ly93aGF0d2cub3JnIiksIFVSTChV
UkwoKSwgImh0dHA6Ly9ub3Rfd2hhdHdnLm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90X3do
YXR3Zy5vcmciKSwgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCB9LCB7IH0pOwogICAgIAogICAgIHRl
c3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9mb29iYXIub3Jn
L2Fsd2F5c2Jsb2NrLnBkZiIpLCB7IHZhcmlhbnRJbmRleDxDb250ZW50RXh0ZW5zaW9uczo6Qmxv
Y2tMb2FkQWN0aW9uPiB9KTsKLSAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCB7IFVSTChVUkwoKSwg
Imh0dHA6Ly9mb29iYXIub3JnL2Fsd2F5c2Jsb2NrLnBkZiIpLCBVUkwoVVJMKCksICJodHRwOi8v
bm90X2Zvb2Jhci5vcmcvYWx3YXlzYmxvY2sucGRmIiksIFJlc291cmNlVHlwZTo6RG9jdW1lbnQg
fSwgeyB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrTG9hZEFjdGlvbj4gfSk7
CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgeyBVUkwoVVJMKCksICJodHRwOi8vZm9vYmFyLm9y
Zy9hbHdheXNibG9jay5wZGYiKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF9mb29iYXIub3JnL2Fs
d2F5c2Jsb2NrLnBkZiIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90X2Zvb2Jhci5vcmcvYWx3YXlz
YmxvY2sucGRmIiksIFJlc291cmNlVHlwZTo6RG9jdW1lbnQgfSwgeyB2YXJpYW50SW5kZXg8Q29u
dGVudEV4dGVuc2lvbnM6OkJsb2NrTG9hZEFjdGlvbj4gfSk7CiB9CiAKIFRFU1RfRihDb250ZW50
RXh0ZW5zaW9uVGVzdCwgUmVzb3VyY2VUeXBlKQpAQCAtMTE2Niw4ICsxMTgxLDggQEAgVEVTVF9G
KENvbnRlbnRFeHRlbnNpb25UZXN0LCBSZXNvdXJjZU9yTG9hZFR5cGVNYXRjaGluZ0V2ZXJ5dGhp
bmcpCiAgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJpZ25vcmUtcHJldmlvdXMtcnVs
ZXNcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLipcIixcImxvYWQtdHlwZVwiOltc
ImZpcnN0LXBhcnR5XCJdfX1dIik7CiAgICAgCiAgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFp
bkRvY3VtZW50UmVxdWVzdCgiaHR0cDovL3dlYmtpdC5vcmciKSwgeyB9LCAwKTsKLSAgICB0ZXN0
UmVxdWVzdChiYWNrZW5kLCB7IFVSTChVUkwoKSwgImh0dHA6Ly93ZWJraXQub3JnIiksIFVSTChV
UkwoKSwgImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZyIpLCBSZXNvdXJjZVR5cGU6OkRvY3VtZW50IH0s
IHsgdmFyaWFudEluZGV4PENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja0Nvb2tpZXNBY3Rpb24+IH0p
OwotICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIHsgVVJMKFVSTCgpLCAiaHR0cDovL3dlYmtpdC5v
cmciKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF93ZWJraXQub3JnIiksIFJlc291cmNlVHlwZTo6
SW1hZ2UgfSwgeyB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrQ29va2llc0Fj
dGlvbj4sIHZhcmlhbnRJbmRleDxDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tMb2FkQWN0aW9uPiB9
KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCB7IFVSTChVUkwoKSwgImh0dHA6Ly93ZWJraXQu
b3JnIiksIFVSTChVUkwoKSwgImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZyIpLCBVUkwoVVJMKCksICJo
dHRwOi8vbm90X3dlYmtpdC5vcmciKSwgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCB9LCB7IHZhcmlh
bnRJbmRleDxDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tDb29raWVzQWN0aW9uPiB9KTsKKyAgICB0
ZXN0UmVxdWVzdChiYWNrZW5kLCB7IFVSTChVUkwoKSwgImh0dHA6Ly93ZWJraXQub3JnIiksIFVS
TChVUkwoKSwgImh0dHA6Ly9ub3Rfd2Via2l0Lm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90
X3dlYmtpdC5vcmciKSwgUmVzb3VyY2VUeXBlOjpJbWFnZSB9LCB7IHZhcmlhbnRJbmRleDxDb250
ZW50RXh0ZW5zaW9uczo6QmxvY2tDb29raWVzQWN0aW9uPiwgdmFyaWFudEluZGV4PENvbnRlbnRF
eHRlbnNpb25zOjpCbG9ja0xvYWRBY3Rpb24+IH0pOwogfQogICAgIAogVEVTVF9GKENvbnRlbnRF
eHRlbnNpb25UZXN0LCBXaWRlTkZBKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447075</attachid>
            <date>2021-12-13 15:29:07 -0800</date>
            <delta_ts>2021-12-13 20:27:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233889-20211213152906.patch</filename>
            <type>text/plain</type>
            <size>113494</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1ZmUxZjhmNDNjODdk
MWYwMDdlNzkyY2I0NjIxN2YzMDlmOTgxNy4uN2E2Nzc1ZGEwOGNhYjQ1MTUxMTE1MGMwMTRmZDM2
MTY4NWFlZmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTEyLTEwICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWxsb3cg
V0tDb250ZW50UnVsZUxpc3QgdG8gcnVuIHJlZ2V4ZXMgb24gY3VycmVudCBmcmFtZSdzIFVSTCwg
bm90IGp1c3QgdG9wIGZyYW1lJ3MgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM4ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbiAyMDE1LCBteSB5b3VuZ2VyIHNlbGYgaW1wbGVtZW50ZWQgaWYt
dG9wLXVybCBhbmQgdW5sZXNzLXRvcC11cmwgYnkgcnVubmluZyB0aGUgY3VycmVudCBVUkwKKyAg
ICAgICAgdGhyb3VnaCBtdWx0aXBsZSBzZXRzIG9mIHJlZ2V4ZXMsIHRob3NlIHdpdGggYW5kIHRo
b3NlIHdpdGhvdXQgc3VjaCBjb25kaXRpb25zLiAgVGhpcyB3YXNuJ3QKKyAgICAgICAgcmVhbGx5
IGFibGUgdG8gYmUgZXhwYW5kZWQuICBJbiBvcmRlciB0byBpbXBsZW1lbnQgaWYtZnJhbWUtdXJs
LCBJIG1vdmVkIHRoZSBjb25kaXRpb24gdHlwZSB0bworICAgICAgICB0aGUgc2V0IG9mIGZsYWdz
IHN0b3JlZCBpbiB0aGUgYnl0ZWNvZGUgaXRzZWxmLiAgTm93LCB3ZSBvbmx5IGludGVycHJldCB0
aGUgYnl0ZWNvZGUgb25jZSBvbiB0aGUKKyAgICAgICAgY3VycmVudGx5LXJlcXVlc3RlZCBVUkws
IHVwIHRvIG9uY2Ugb24gdGhlIGZyYW1lIFVSTCwgYW5kIHVwIHRvIG9uY2Ugb24gdGhlIHRvcCBV
UkwsIGFuZCB0aGUgbGF0dGVyCisgICAgICAgIHR3byBjYW4gYmUgY2FjaGVkIGJlY2F1c2UgdGhl
eSBkb24ndCBjaGFuZ2UgYXMgb2Z0ZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBh
bmQgYWRkaXRpb25hbCBBUEkgYW5kIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5oOgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OkNvbnRlbnRFeHRlbnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OmNvbXBpbGVH
bG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnBvcHVsYXRlVG9wVVJMQWN0aW9uQ2FjaGVJZk5l
ZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVu
dEV4dGVuc2lvbjo6cG9wdWxhdGVGcmFtZVVSTEFjdGlvbkNhY2hlSWZOZWVkZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246OnRv
cFVSTEFjdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkNvbnRlbnRFeHRlbnNpb246OmZyYW1lVVJMQWN0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbjo6cG9wdWxhdGVDb25kaXRp
b25DYWNoZUlmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjp0b3BVUkxBY3Rpb25zKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjp1bml2ZXJz
YWxBY3Rpb25zV2l0aENvbmRpdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjp1bml2ZXJzYWxBY3Rpb25zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uOjp1bml2ZXJz
YWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6c2VyaWFsaXplQWN0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KToKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaDoKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dlcik6CisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OlRyaWdnZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpUcmlnZ2VyOjp+VHJpZ2dlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VHJpZ2dlcjo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ6OmFjdGlvbnNGcm9tQ29udGVudFJ1bGVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNG
b3JSZXNvdXJjZUxvYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JM
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yUGluZ0xvYWQpOgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAg
ICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlLmg6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxlcjo6ZW1pdEFwcGVuZEFjdGlvbik6Cisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0Qml0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6aGFzRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6Omhhc0FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0QXBwZW5kQWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZUludGVy
cHJldGVyOjppbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmFjdGlvbnNN
YXRjaGluZ0V2ZXJ5dGhpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkRGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6bWF0Y2hlc0NvbmRpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJw
cmV0V2l0aENvbmRpdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRJbmZvLmg6CisKIDIwMjEtMTItMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIGlmLWRvbWFpbiBhbmQgdW5sZXNzLWRvbWFp
biBjb252ZXJzaW9uIHRvIFdLQ29udGVudFJ1bGVMaXN0IHBhcnNpbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTAz
Y2E1NzE4YWQ4YTE3ZmIzOTU0NDJiNTFlZTQyYmY2YmNhYTQ5MC4uOWI1YmU1MzkyZmQ0OTY0Zjc4
NDE0YTk3MDU2YmQwNzU0ZTM0N2NkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0x
Mi0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFsbG93IFdLQ29udGVudFJ1bGVMaXN0IHRvIHJ1biByZWdleGVzIG9uIGN1cnJlbnQgZnJh
bWUncyBVUkwsIG5vdCBqdXN0IHRvcCBmcmFtZSdzIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OnByb2Nlc3ND
b250ZW50UnVsZUxpc3RzRm9yTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDaGVja2VyLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6c2V0
Q29udGVudEV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBpbmdMb2FkOjppbml0aWFsaXplKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6dXJsRmlsdGVyc0J5dGVjb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmZpbHRlcnNX
aXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVj
b2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3QuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3RE
YXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRh
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlz
dERhdGE6OldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OkNvbnRl
bnRSdWxlTGlzdE1ldGFEYXRhOjpmaWxlU2l6ZSBjb25zdCk6CisgICAgICAgIChBUEk6OmVuY29k
ZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKToKKyAgICAgICAgKEFQSTo6ZGVjb2RlQ29udGVudFJ1
bGVMaXN0TWV0YURhdGEpOgorICAgICAgICAoQVBJOjpjb21waWxlZFRvRmlsZSk6CisgICAgICAg
IChBUEk6OmNyZWF0ZUV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OmdldENvbnRlbnRSdWxlTGlz
dFNvdXJjZUZyb21NYXBwZWRGaWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5OjpzdGFydFBpbmdMb2FkKToKKwogMjAyMS0xMi0xMCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgaWYtZG9tYWluIGFuZCB1
bmxlc3MtZG9tYWluIGNvbnZlcnNpb24gdG8gV0tDb250ZW50UnVsZUxpc3QgcGFyc2luZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tcGlsZWRDb250ZW50
RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENv
bnRlbnRFeHRlbnNpb24uaAppbmRleCBlNjYxMTZhZjlkMTgzYWY2NDg3YjFkNGFlYzk0YjI0ZWRk
Y2UzYmQ5Li4wZmIwZjEzOTkxZDNjMjYyNmYwNWU5ZDA2YjkyYmQzYzkwM2U5ZjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENvbnRlbnRFeHRl
bnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21waWxlZENv
bnRlbnRFeHRlbnNpb24uaApAQCAtMzgsOCArMzgsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBD
b21waWxlZENvbnRlbnRFeHRlbnNpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29t
cAogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbigpOwogCi0g
ICAgdmlydHVhbCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3Bhbjxjb25zdCB1aW50OF90PiBmaWx0
ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNwYW48
Y29uc3QgdWludDhfdD4gdXJsRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgU3Bhbjxjb25zdCB1aW50OF90PiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGZyYW1lVVJMRmlsdGVyc0J5dGVjb2Rl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3Bhbjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVk
QWN0aW9ucygpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKaW5kZXggZTg3YzQyMWI2NzdjM2E0OGE0MGE5
OWU2NGIzOGRlYjFkYjM1YzgzYi4uZWY2NjM5YjQ4NjQ2MmQ4MDY3ZTE0NDViYzVmNDJlOTM3ZDE4
Mjk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbi5jcHAKQEAgLTQ1LDIxICs0NSwxMyBAQCBDb250ZW50RXh0ZW5zaW9uOjpD
b250ZW50RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUmVmPENvbXBpbGVkQ29u
dGVudAogICAgICwgbV9jb21waWxlZEV4dGVuc2lvbihXVEZNb3ZlKGNvbXBpbGVkRXh0ZW5zaW9u
KSkKICAgICAsIG1fZXh0ZW5zaW9uQmFzZVVSTChXVEZNb3ZlKGV4dGVuc2lvbkJhc2VVUkwpKQog
ewotICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIgd2l0aG91dENvbmRpdGlvbnMobV9jb21waWxl
ZEV4dGVuc2lvbi0+ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoKSk7Ci0gICAgREZB
Qnl0ZWNvZGVJbnRlcnByZXRlciB3aXRoQ29uZGl0aW9ucyhtX2NvbXBpbGVkRXh0ZW5zaW9uLT5m
aWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgpKTsKLSAgICBmb3IgKHVpbnQ2NF90IGFjdGlv
biA6IHdpdGhvdXRDb25kaXRpb25zLmFjdGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcoKSkgewotICAg
ICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjdGlvbikgPT0gYWN0aW9uKTsKLSAg
ICAgICAgbV91bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMuYXBwZW5kKHN0YXRpY19j
YXN0PHVpbnQzMl90PihhY3Rpb24pKTsKLSAgICB9Ci0gICAgZm9yICh1aW50NjRfdCBhY3Rpb24g
OiB3aXRoQ29uZGl0aW9ucy5hY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkpIHsKLSAgICAgICAg
QVNTRVJUKChhY3Rpb24gJiB+SWZDb25kaXRpb25GbGFnKSA9PSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYWN0aW9uKSk7Ci0gICAgICAgIG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zLmFw
cGVuZChhY3Rpb24pOwotICAgIH0KKyAgICBERkFCeXRlY29kZUludGVycHJldGVyIGludGVycHJl
dGVyKG1fY29tcGlsZWRFeHRlbnNpb24tPnVybEZpbHRlcnNCeXRlY29kZSgpKTsKKyAgICBmb3Ig
KHVpbnQ2NF90IGFjdGlvbiA6IGludGVycHJldGVyLmFjdGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmco
KSkKKyAgICAgICAgbV91bml2ZXJzYWxBY3Rpb25zLmFwcGVuZChhY3Rpb24pOwogCiAgICAgaWYg
KHNob3VsZENvbXBpbGVDU1MgPT0gU2hvdWxkQ29tcGlsZUNTUzo6WWVzKQogICAgICAgICBjb21w
aWxlR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KCk7Ci0gICAgbV91bml2ZXJzYWxBY3Rpb25z
V2l0aG91dENvbmRpdGlvbnMuc2hyaW5rVG9GaXQoKTsKLSAgICBtX3VuaXZlcnNhbEFjdGlvbnNX
aXRoQ29uZGl0aW9ucy5zaHJpbmtUb0ZpdCgpOworICAgIG1fdW5pdmVyc2FsQWN0aW9ucy5zaHJp
bmtUb0ZpdCgpOwogfQogCiB1aW50MzJfdCBDb250ZW50RXh0ZW5zaW9uOjpmaW5kRmlyc3RJZ25v
cmVQcmV2aW91c1J1bGVzKCkgY29uc3QKQEAgLTkxLDcgKzgzLDcgQEAgdm9pZCBDb250ZW50RXh0
ZW5zaW9uOjpjb21waWxlR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KCkKICAgICB9OwogICAg
IAogICAgIFN0cmluZ0J1aWxkZXIgY3NzOwotICAgIGZvciAodWludDMyX3QgdW5pdmVyc2FsQWN0
aW9uTG9jYXRpb24gOiBtX3VuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9ucykgeworICAg
IGZvciAodWludDY0X3QgdW5pdmVyc2FsQWN0aW9uTG9jYXRpb24gOiBtX3VuaXZlcnNhbEFjdGlv
bnMpIHsKICAgICAgICAgaWYgKGluR2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KHVuaXZlcnNh
bEFjdGlvbkxvY2F0aW9uKSkgewogICAgICAgICAgICAgaWYgKCFjc3MuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGNzcy5hcHBlbmQoJywnKTsKQEAgLTExMyw0NCArMTA1LDUzIEBAIHZvaWQg
Q29udGVudEV4dGVuc2lvbjo6Y29tcGlsZUdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldCgpCiAg
ICAgICAgIG1fZ2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0ID0gbnVsbHB0cjsKIAogICAgIC8v
IFRoZXNlIGFjdGlvbnMgZG9uJ3QgbmVlZCB0byBiZSBhcHBsaWVkIGluZGl2aWR1YWxseSBhbnkg
bW9yZS4gVGhleSB3aWxsIGFsbCBiZSBhcHBsaWVkIHRvIGV2ZXJ5IHBhZ2UgYXMgYSBwcmVjb21w
aWxlZCBzdHlsZSBzaGVldC4KLSAgICBtX3VuaXZlcnNhbEFjdGlvbnNXaXRob3V0Q29uZGl0aW9u
cy5yZW1vdmVBbGxNYXRjaGluZyhpbkdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldCk7CisgICAg
bV91bml2ZXJzYWxBY3Rpb25zLnJlbW92ZUFsbE1hdGNoaW5nKGluR2xvYmFsRGlzcGxheU5vbmVT
dHlsZVNoZWV0KTsKIH0KIAotdm9pZCBDb250ZW50RXh0ZW5zaW9uOjpwb3B1bGF0ZUNvbmRpdGlv
bkNhY2hlSWZOZWVkZWQoY29uc3QgVVJMJiB0b3BVUkwpCit2b2lkIENvbnRlbnRFeHRlbnNpb246
OnBvcHVsYXRlVG9wVVJMQWN0aW9uQ2FjaGVJZk5lZWRlZChjb25zdCBVUkwmIHRvcFVSTCkgY29u
c3QKIHsKLSAgICBpZiAobV9jYWNoZWRUb3BVUkwgIT0gdG9wVVJMKSB7Ci0gICAgICAgIERGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIobV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJM
RmlsdGVyc0J5dGVjb2RlKCkpOwotICAgICAgICBjb25zdGV4cHIgUmVzb3VyY2VGbGFncyBhbGxM
b2FkVHlwZXNBbmRSZXNvdXJjZVR5cGVzID0gTG9hZFR5cGVNYXNrIHwgUmVzb3VyY2VUeXBlTWFz
ayB8IExvYWRDb250ZXh0TWFzazsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IHRvcFVSTC5zdHJp
bmcoKTsKLSAgICAgICAgYXV0byB0b3BVUkxBY3Rpb25zID0gaW50ZXJwcmV0ZXIuaW50ZXJwcmV0
KHN0cmluZy51dGY4KCksIGFsbExvYWRUeXBlc0FuZFJlc291cmNlVHlwZXMpOwotICAgICAgICAK
LSAgICAgICAgbV9jYWNoZWRUb3BVUkxBY3Rpb25zLmNsZWFyKCk7Ci0gICAgICAgIGZvciAodWlu
dDY0X3QgYWN0aW9uIDogdG9wVVJMQWN0aW9ucykKLSAgICAgICAgICAgIG1fY2FjaGVkVG9wVVJM
QWN0aW9ucy5hZGQoYWN0aW9uKTsKLSAgICAgICAgZm9yICh1aW50NjRfdCBhY3Rpb24gOiBpbnRl
cnByZXRlci5hY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkpCi0gICAgICAgICAgICBtX2NhY2hl
ZFRvcFVSTEFjdGlvbnMuYWRkKGFjdGlvbik7Ci0gICAgICAgIAotICAgICAgICBtX2NhY2hlZFVu
aXZlcnNhbENvbmRpdGlvbmVkQWN0aW9ucy5jbGVhcigpOwotICAgICAgICBmb3IgKHVpbnQ2NF90
IGFjdGlvbiA6IG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhDb25kaXRpb25zKSB7Ci0gICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoKGFjdGlvbiAmIH5JZkNvbmRpdGlvbkZsYWcpID09IHN0YXRpY19j
YXN0PHVpbnQzMl90PihhY3Rpb24pLCAiVW5pdmVyc2FsIGFjdGlvbnMgd2l0aCBjb25kaXRpb25z
IHNob3VsZCBub3QgaGF2ZSBmbGFncy4iKTsKLSAgICAgICAgICAgIGlmICghIShhY3Rpb24gJiBJ
ZkNvbmRpdGlvbkZsYWcpID09IG1fY2FjaGVkVG9wVVJMQWN0aW9ucy5jb250YWlucyhhY3Rpb24p
KQotICAgICAgICAgICAgICAgIG1fY2FjaGVkVW5pdmVyc2FsQ29uZGl0aW9uZWRBY3Rpb25zLmFw
cGVuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0aW9uKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
bV9jYWNoZWRVbml2ZXJzYWxDb25kaXRpb25lZEFjdGlvbnMuc2hyaW5rVG9GaXQoKTsKLSAgICAg
ICAgbV9jYWNoZWRUb3BVUkwgPSB0b3BVUkw7Ci0gICAgfQorICAgIGlmIChtX2NhY2hlZFRvcFVS
TCA9PSB0b3BVUkwpCisgICAgICAgIHJldHVybjsKKworICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXIgaW50ZXJwcmV0ZXIobV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVjb2Rl
KCkpOworICAgIGF1dG8gdG9wVVJMQWN0aW9ucyA9IGludGVycHJldGVyLmludGVycHJldCh0b3BV
Ukwuc3RyaW5nKCkudXRmOCgpLCBBbGxSZXNvdXJjZUZsYWdzKTsKKworICAgIG1fY2FjaGVkVG9w
VVJMQWN0aW9ucy5jbGVhcigpOworICAgIGZvciAodWludDY0X3QgYWN0aW9uIDogdG9wVVJMQWN0
aW9ucykKKyAgICAgICAgbV9jYWNoZWRUb3BVUkxBY3Rpb25zLmFkZChhY3Rpb24pOworICAgIGZv
ciAodWludDY0X3QgYWN0aW9uIDogaW50ZXJwcmV0ZXIuYWN0aW9uc01hdGNoaW5nRXZlcnl0aGlu
ZygpKQorICAgICAgICBtX2NhY2hlZFRvcFVSTEFjdGlvbnMuYWRkKGFjdGlvbik7CisKKyAgICBt
X2NhY2hlZFRvcFVSTCA9IHRvcFVSTDsKK30KKwordm9pZCBDb250ZW50RXh0ZW5zaW9uOjpwb3B1
bGF0ZUZyYW1lVVJMQWN0aW9uQ2FjaGVJZk5lZWRlZChjb25zdCBVUkwmIGZyYW1lVVJMKSBjb25z
dAoreworICAgIGlmIChtX2NhY2hlZEZyYW1lVVJMID09IGZyYW1lVVJMKQorICAgICAgICByZXR1
cm47CisKKyAgICBERkFCeXRlY29kZUludGVycHJldGVyIGludGVycHJldGVyKG1fY29tcGlsZWRF
eHRlbnNpb24tPmZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlKCkpOworICAgIGF1dG8gZnJhbWVVUkxB
Y3Rpb25zID0gaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KGZyYW1lVVJMLnN0cmluZygpLnV0ZjgoKSwg
QWxsUmVzb3VyY2VGbGFncyk7CisKKyAgICBtX2NhY2hlZEZyYW1lVVJMQWN0aW9ucy5jbGVhcigp
OworICAgIGZvciAodWludDY0X3QgYWN0aW9uIDogZnJhbWVVUkxBY3Rpb25zKQorICAgICAgICBt
X2NhY2hlZEZyYW1lVVJMQWN0aW9ucy5hZGQoYWN0aW9uKTsKKyAgICBmb3IgKHVpbnQ2NF90IGFj
dGlvbiA6IGludGVycHJldGVyLmFjdGlvbnNNYXRjaGluZ0V2ZXJ5dGhpbmcoKSkKKyAgICAgICAg
bV9jYWNoZWRGcmFtZVVSTEFjdGlvbnMuYWRkKGFjdGlvbik7CisKKyAgICBtX2NhY2hlZEZyYW1l
VVJMID0gZnJhbWVVUkw7CiB9CiAKLWNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlv
bnMmIENvbnRlbnRFeHRlbnNpb246OnRvcFVSTEFjdGlvbnMoY29uc3QgVVJMJiB0b3BVUkwpCitj
b25zdCBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zJiBDb250ZW50RXh0ZW5zaW9uOjp0
b3BVUkxBY3Rpb25zKGNvbnN0IFVSTCYgdG9wVVJMKSBjb25zdAogewotICAgIHBvcHVsYXRlQ29u
ZGl0aW9uQ2FjaGVJZk5lZWRlZCh0b3BVUkwpOworICAgIHBvcHVsYXRlVG9wVVJMQWN0aW9uQ2Fj
aGVJZk5lZWRlZCh0b3BVUkwpOwogICAgIHJldHVybiBtX2NhY2hlZFRvcFVSTEFjdGlvbnM7CiB9
CiAKLWNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIENvbnRlbnRFeHRlbnNpb246OnVuaXZlcnNhbEFj
dGlvbnNXaXRoQ29uZGl0aW9ucyhjb25zdCBVUkwmIHRvcFVSTCkKK2NvbnN0IERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OkFjdGlvbnMmIENvbnRlbnRFeHRlbnNpb246OmZyYW1lVVJMQWN0aW9ucyhj
b25zdCBVUkwmIGZyYW1lVVJMKSBjb25zdAogewotICAgIHBvcHVsYXRlQ29uZGl0aW9uQ2FjaGVJ
Zk5lZWRlZCh0b3BVUkwpOwotICAgIHJldHVybiBtX2NhY2hlZFVuaXZlcnNhbENvbmRpdGlvbmVk
QWN0aW9uczsKKyAgICBwb3B1bGF0ZUZyYW1lVVJMQWN0aW9uQ2FjaGVJZk5lZWRlZChmcmFtZVVS
TCk7CisgICAgcmV0dXJuIG1fY2FjaGVkRnJhbWVVUkxBY3Rpb25zOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5oCmluZGV4IGE1YjMxZWUzZDFmZjUw
ZTU0NTFiNzM1YjMzN2YzM2I5NDJhNmI3YjAuLjA3MTUzYzg5MGJmMzg2MzA2YThlYzBkZWQxMjBh
MzE4ZWY0OWI0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uLmgKQEAgLTQxLDE2ICs0MSwxNiBAQCBjbGFzcyBDb21waWxlZENv
bnRlbnRFeHRlbnNpb247CiAKIGNsYXNzIENvbnRlbnRFeHRlbnNpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxDb250ZW50RXh0ZW5zaW9uPiB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBTaG91bGRD
b21waWxlQ1NTIHsgTm8sIFllcyB9OworICAgIGVudW0gY2xhc3MgU2hvdWxkQ29tcGlsZUNTUyA6
IGJvb2wgeyBObywgWWVzIH07CiAgICAgc3RhdGljIFJlZjxDb250ZW50RXh0ZW5zaW9uPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBSZWY8Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
PiYmLCBVUkwmJiwgU2hvdWxkQ29tcGlsZUNTUyk7CiAKICAgICBjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBjb25zdCBVUkwmIGV4
dGVuc2lvbkJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2V4dGVuc2lvbkJhc2VVUkw7IH0KICAg
ICBjb25zdCBDb21waWxlZENvbnRlbnRFeHRlbnNpb24mIGNvbXBpbGVkRXh0ZW5zaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9jb21waWxlZEV4dGVuc2lvbi5nZXQoKTsgfQogICAgIFN0eWxlU2hlZXRD
b250ZW50cyogZ2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KCk7Ci0gICAgY29uc3QgREZBQnl0
ZWNvZGVJbnRlcnByZXRlcjo6QWN0aW9ucyYgdG9wVVJMQWN0aW9ucyhjb25zdCBVUkwmIHRvcFVS
TCk7Ci0gICAgY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXRD
b25kaXRpb25zKCkgeyByZXR1cm4gbV91bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnM7
IH0KLSAgICBjb25zdCBWZWN0b3I8dWludDMyX3Q+JiB1bml2ZXJzYWxBY3Rpb25zV2l0aENvbmRp
dGlvbnMoY29uc3QgVVJMJiB0b3BVUkwpOworICAgIGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0
ZXI6OkFjdGlvbnMmIHRvcFVSTEFjdGlvbnMoY29uc3QgVVJMJiB0b3BVUkwpIGNvbnN0OworICAg
IGNvbnN0IERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMmIGZyYW1lVVJMQWN0aW9ucyhj
b25zdCBVUkwmIGZyYW1lVVJMKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiB1
bml2ZXJzYWxBY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV91bml2ZXJzYWxBY3Rpb25zOyB9CiAK
IHByaXZhdGU6CiAgICAgQ29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IFJlZjxDb21waWxlZENvbnRlbnRFeHRlbnNpb24+JiYsIFVSTCYmLCBTaG91bGRDb21waWxlQ1NT
KTsKQEAgLTYzLDEzICs2MywxNSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29u
dGVudHM+IG1fZ2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0OwogICAgIHZvaWQgY29tcGlsZUds
b2JhbERpc3BsYXlOb25lU3R5bGVTaGVldCgpOwogCi0gICAgVVJMIG1fY2FjaGVkVG9wVVJMOwot
ICAgIHZvaWQgcG9wdWxhdGVDb25kaXRpb25DYWNoZUlmTmVlZGVkKGNvbnN0IFVSTCYgdG9wVVJM
KTsKLSAgICBERkFCeXRlY29kZUludGVycHJldGVyOjpBY3Rpb25zIG1fY2FjaGVkVG9wVVJMQWN0
aW9uczsKLSAgICBWZWN0b3I8dWludDMyX3Q+IG1fY2FjaGVkVW5pdmVyc2FsQ29uZGl0aW9uZWRB
Y3Rpb25zOworICAgIHZvaWQgcG9wdWxhdGVUb3BVUkxBY3Rpb25DYWNoZUlmTmVlZGVkKGNvbnN0
IFVSTCYgdG9wVVJMKSBjb25zdDsKKyAgICBtdXRhYmxlIFVSTCBtX2NhY2hlZFRvcFVSTDsKKyAg
ICBtdXRhYmxlIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgbV9jYWNoZWRUb3BVUkxB
Y3Rpb25zOwogCi0gICAgVmVjdG9yPHVpbnQzMl90PiBtX3VuaXZlcnNhbEFjdGlvbnNXaXRob3V0
Q29uZGl0aW9uczsKLSAgICBWZWN0b3I8dWludDY0X3Q+IG1fdW5pdmVyc2FsQWN0aW9uc1dpdGhD
b25kaXRpb25zOworICAgIHZvaWQgcG9wdWxhdGVGcmFtZVVSTEFjdGlvbkNhY2hlSWZOZWVkZWQo
Y29uc3QgVVJMJiBmcmFtZVVSTCkgY29uc3Q7CisgICAgbXV0YWJsZSBVUkwgbV9jYWNoZWRGcmFt
ZVVSTDsKKyAgICBtdXRhYmxlIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgbV9jYWNo
ZWRGcmFtZVVSTEFjdGlvbnM7CisKKyAgICBWZWN0b3I8dWludDY0X3Q+IG1fdW5pdmVyc2FsQWN0
aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGls
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bkNvbXBpbGVyLmNwcAppbmRleCA4OTIwZTRiZDg2OGFkMDEwZGQ5YjJiZjYwYjY5MTJiNzdkYmQ0
NjVjLi5kNzEyNjk3N2Y2MTBkZmIxMWU0NGJlZTcyNDhmN2MzYjhjMDQ5MDMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25Db21waWxlci5jcHAKQEAgLTQ0LDggKzQ0LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgeworbmFtZXNwYWNlIFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zIHsKIAogLy8gY3NzLWRpc3BsYXktbm9uZSBjb21iaW5p
bmcgaXMgc3BlY2lhbCBiZWNhdXNlIHdlIGNvbWJpbmUgdGhlIHN0cmluZyBhcmd1bWVudHMgd2l0
aCBjb21tYXMgYmVjYXVzZSB3ZSBrbm93IHRoZXkgYXJlIGNzcyBzZWxlY3RvcnMuCiBzdHJ1Y3Qg
UGVuZGluZ0Rpc3BsYXlOb25lQWN0aW9ucyB7CkBAIC04Nyw5ICs4Niw3IEBAIHN0YXRpYyBWZWN0
b3I8dW5zaWduZWQ+IHNlcmlhbGl6ZUFjdGlvbnMoY29uc3QgVmVjdG9yPENvbnRlbnRFeHRlbnNp
b25SdWxlPiYgcnVsCiAgICAgUmVkaXJlY3RBY3Rpb25NYXAgcmVkaXJlY3RBY3Rpb25NYXA7CiAg
ICAgTW9kaWZ5SGVhZGVyc0FjdGlvbk1hcCBtb2RpZnlIZWFkZXJzQWN0aW9uTWFwOwogCi0gICAg
Zm9yICh1bnNpZ25lZCBydWxlSW5kZXggPSAwOyBydWxlSW5kZXggPCBydWxlTGlzdC5zaXplKCk7
ICsrcnVsZUluZGV4KSB7Ci0gICAgICAgIGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJiBydWxl
ID0gcnVsZUxpc3RbcnVsZUluZGV4XTsKLQorICAgIGZvciAoYXV0byYgcnVsZSA6IHJ1bGVMaXN0
KSB7CiAgICAgICAgIGF1dG8mIGFjdGlvbkRhdGEgPSBydWxlLmFjdGlvbigpLmRhdGEoKTsKICAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8SWdub3JlUHJldmlvdXNSdWxlc0FjdGlv
bj4oYWN0aW9uRGF0YSkpIHsKICAgICAgICAgICAgIHJlc29sdmVQZW5kaW5nRGlzcGxheU5vbmVB
Y3Rpb25zKGFjdGlvbnMsIGFjdGlvbkxvY2F0aW9ucywgY3NzRGlzcGxheU5vbmVBY3Rpb25zTWFw
KTsKQEAgLTE3Myw3ICsxNzAsNyBAQCBzdGF0aWMgVmVjdG9yPHVuc2lnbmVkPiBzZXJpYWxpemVB
Y3Rpb25zKGNvbnN0IFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4mIHJ1bAogICAgIHJldHVy
biBhY3Rpb25Mb2NhdGlvbnM7CiB9CiAKLXR5cGVkZWYgSGFzaFNldDx1aW50NjRfdCwgRGVmYXVs
dEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2
NF90Pj4gVW5pdmVyc2FsQWN0aW9uU2V0OwordXNpbmcgVW5pdmVyc2FsQWN0aW9uU2V0ID0gSGFz
aFNldDx1aW50NjRfdCwgRGVmYXVsdEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47CiAKIHN0YXRpYyB2b2lkIGFkZFVuaXZlcnNhbEFj
dGlvbnNUb0RGQShERkEmIGRmYSwgVW5pdmVyc2FsQWN0aW9uU2V0JiYgdW5pdmVyc2FsQWN0aW9u
cykKIHsKQEAgLTI5MCwxOCArMjg3LDE5IEBAIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxp
c3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmluCiAgICAg
TE9HX0xBUkdFX1NUUlVDVFVSRVMoYWN0aW9ucywgYWN0aW9ucy5jYXBhY2l0eSgpICogc2l6ZW9m
KFNlcmlhbGl6ZWRBY3Rpb25CeXRlKSk7CiAgICAgY2xpZW50LndyaXRlQWN0aW9ucyhXVEZNb3Zl
KGFjdGlvbnMpKTsKIAotICAgIFVuaXZlcnNhbEFjdGlvblNldCB1bml2ZXJzYWxBY3Rpb25zV2l0
aG91dENvbmRpdGlvbnM7Ci0gICAgVW5pdmVyc2FsQWN0aW9uU2V0IHVuaXZlcnNhbEFjdGlvbnNX
aXRoQ29uZGl0aW9uczsKLSAgICBVbml2ZXJzYWxBY3Rpb25TZXQgdW5pdmVyc2FsVG9wVVJMQWN0
aW9uczsKLQogICAgIC8vIEZJWE1FOiBUaGVzZSBkb24ndCBhbGwgbmVlZCB0byBiZSBpbiBtZW1v
cnkgYXQgdGhlIHNhbWUgdGltZS4KLSAgICBDb21iaW5lZFVSTEZpbHRlcnMgZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zOwotICAgIENvbWJpbmVkVVJMRmlsdGVycyBmaWx0ZXJzV2l0aENvbmRpdGlv
bnM7CisgICAgQ29tYmluZWRVUkxGaWx0ZXJzIHVybEZpbHRlcnM7CisgICAgVW5pdmVyc2FsQWN0
aW9uU2V0IHVuaXZlcnNhbEFjdGlvbnM7CisgICAgVVJMRmlsdGVyUGFyc2VyIHVybEZpbHRlclBh
cnNlcih1cmxGaWx0ZXJzKTsKKwogICAgIENvbWJpbmVkVVJMRmlsdGVycyB0b3BVUkxGaWx0ZXJz
OwotICAgIFVSTEZpbHRlclBhcnNlciBmaWx0ZXJzV2l0aG91dENvbmRpdGlvblBhcnNlcihmaWx0
ZXJzV2l0aG91dENvbmRpdGlvbnMpOwotICAgIFVSTEZpbHRlclBhcnNlciBmaWx0ZXJzV2l0aENv
bmRpdGlvblBhcnNlcihmaWx0ZXJzV2l0aENvbmRpdGlvbnMpOworICAgIFVuaXZlcnNhbEFjdGlv
blNldCB0b3BVUkxVbml2ZXJzYWxBY3Rpb25zOwogICAgIFVSTEZpbHRlclBhcnNlciB0b3BVUkxG
aWx0ZXJQYXJzZXIodG9wVVJMRmlsdGVycyk7Ci0gICAgCisKKyAgICBDb21iaW5lZFVSTEZpbHRl
cnMgZnJhbWVVUkxGaWx0ZXJzOworICAgIFVuaXZlcnNhbEFjdGlvblNldCBmcmFtZVVSTFVuaXZl
cnNhbEFjdGlvbnM7CisgICAgVVJMRmlsdGVyUGFyc2VyIGZyYW1lVVJMRmlsdGVyUGFyc2VyKGZy
YW1lVVJMRmlsdGVycyk7CisKICAgICBmb3IgKHVuc2lnbmVkIHJ1bGVJbmRleCA9IDA7IHJ1bGVJ
bmRleCA8IHBhcnNlZFJ1bGVMaXN0LnNpemUoKTsgKytydWxlSW5kZXgpIHsKICAgICAgICAgY29u
c3QgQ29udGVudEV4dGVuc2lvblJ1bGUmIGNvbnRlbnRFeHRlbnNpb25SdWxlID0gcGFyc2VkUnVs
ZUxpc3RbcnVsZUluZGV4XTsKICAgICAgICAgY29uc3QgVHJpZ2dlciYgdHJpZ2dlciA9IGNvbnRl
bnRFeHRlbnNpb25SdWxlLnRyaWdnZXIoKTsKQEAgLTMxMiw0NyArMzEwLDQ0IEBAIHN0ZDo6ZXJy
b3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50
JiBjbGllbnQsIFN0cmluCiAgICAgICAgIEFTU0VSVCghKH5BY3Rpb25GbGFnTWFzayAmIChzdGF0
aWNfY2FzdDx1aW50NjRfdD4odHJpZ2dlci5mbGFncykgPDwgMzIpKSk7CiAgICAgICAgIHVpbnQ2
NF90IGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MgPSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRyaWdn
ZXIuZmxhZ3MpIDw8IDMyKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhY3Rpb25Mb2NhdGlvbnNb
cnVsZUluZGV4XSk7CiAgICAgICAgIFVSTEZpbHRlclBhcnNlcjo6UGFyc2VTdGF0dXMgc3RhdHVz
ID0gVVJMRmlsdGVyUGFyc2VyOjpPazsKLSAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9ucy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCh0cmlnZ2VyLmNvbmRpdGlvblR5cGUgPT0g
VHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZSk7Ci0gICAgICAgICAgICBzdGF0dXMgPSBmaWx0
ZXJzV2l0aG91dENvbmRpdGlvblBhcnNlci5hZGRQYXR0ZXJuKHRyaWdnZXIudXJsRmlsdGVyLCB0
cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwgYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7
Ci0gICAgICAgICAgICBpZiAoc3RhdHVzID09IFVSTEZpbHRlclBhcnNlcjo6TWF0Y2hlc0V2ZXJ5
dGhpbmcpIHsKLSAgICAgICAgICAgICAgICB1bml2ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlv
bnMuYWRkKGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOwotICAgICAgICAgICAgICAgIHN0YXR1cyA9
IFVSTEZpbHRlclBhcnNlcjo6T2s7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoc3Rh
dHVzICE9IFVSTEZpbHRlclBhcnNlcjo6T2spIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigi
RXJyb3Igd2hpbGUgcGFyc2luZyAlczogJXNcbiIsIHRyaWdnZXIudXJsRmlsdGVyLnV0ZjgoKS5k
YXRhKCksIFVSTEZpbHRlclBhcnNlcjo6c3RhdHVzU3RyaW5nKHN0YXR1cykudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTklu
dmFsaWRSZWdleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHN3aXRjaCAodHJpZ2dlci5jb25kaXRpb25UeXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFRyaWdn
ZXI6OkNvbmRpdGlvblR5cGU6OklmVG9wVVJMOgotICAgICAgICAgICAgICAgIGFjdGlvbkxvY2F0
aW9uQW5kRmxhZ3MgfD0gSWZDb25kaXRpb25GbGFnOworICAgICAgICBzdGF0dXMgPSB1cmxGaWx0
ZXJQYXJzZXIuYWRkUGF0dGVybih0cmlnZ2VyLnVybEZpbHRlciwgdHJpZ2dlci51cmxGaWx0ZXJJ
c0Nhc2VTZW5zaXRpdmUsIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOworICAgICAgICBpZiAoc3Rh
dHVzID09IFVSTEZpbHRlclBhcnNlcjo6TWF0Y2hlc0V2ZXJ5dGhpbmcpIHsKKyAgICAgICAgICAg
IHVuaXZlcnNhbEFjdGlvbnMuYWRkKGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOworICAgICAgICAg
ICAgc3RhdHVzID0gVVJMRmlsdGVyUGFyc2VyOjpPazsKKyAgICAgICAgfQorICAgICAgICBpZiAo
c3RhdHVzICE9IFVSTEZpbHRlclBhcnNlcjo6T2spIHsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJF
cnJvciB3aGlsZSBwYXJzaW5nICVzOiAlc1xuIiwgdHJpZ2dlci51cmxGaWx0ZXIudXRmOCgpLmRh
dGEoKSwgVVJMRmlsdGVyUGFyc2VyOjpzdGF0dXNTdHJpbmcoc3RhdHVzKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlk
UmVnZXg7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
IDogdHJpZ2dlci5jb25kaXRpb25zKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0
PEFjdGlvbkNvbmRpdGlvbj4odHJpZ2dlci5mbGFncyAmIEFjdGlvbkNvbmRpdGlvbk1hc2spKSB7
CisgICAgICAgICAgICBjYXNlIEFjdGlvbkNvbmRpdGlvbjo6Tm9uZToKKyAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZToKLSAgICAgICAgICAgIGNhc2Ug
VHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6VW5sZXNzVG9wVVJMOgotICAgICAgICAgICAgICAgIEFT
U0VSVCghKGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MgJiBJZkNvbmRpdGlvbkZsYWcpKTsKKyAgICAg
ICAgICAgIGNhc2UgQWN0aW9uQ29uZGl0aW9uOjpJZlRvcFVSTDoKKyAgICAgICAgICAgIGNhc2Ug
QWN0aW9uQ29uZGl0aW9uOjpVbmxlc3NUb3BVUkw6CisgICAgICAgICAgICAgICAgc3RhdHVzID0g
dG9wVVJMRmlsdGVyUGFyc2VyLmFkZFBhdHRlcm4oY29uZGl0aW9uLCB0cmlnZ2VyLnRvcFVSTEZp
bHRlcklzQ2FzZVNlbnNpdGl2ZSwgYWN0aW9uTG9jYXRpb25BbmRGbGFncyk7CisgICAgICAgICAg
ICAgICAgaWYgKHN0YXR1cyA9PSBVUkxGaWx0ZXJQYXJzZXI6Ok1hdGNoZXNFdmVyeXRoaW5nKSB7
CisgICAgICAgICAgICAgICAgICAgIHRvcFVSTFVuaXZlcnNhbEFjdGlvbnMuYWRkKGFjdGlvbkxv
Y2F0aW9uQW5kRmxhZ3MpOworICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBVUkxGaWx0ZXJQ
YXJzZXI6Ok9rOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVz
ICE9IFVSTEZpbHRlclBhcnNlcjo6T2spIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
IkVycm9yIHdoaWxlIHBhcnNpbmcgJXM6ICVzXG4iLCBjb25kaXRpb24udXRmOCgpLmRhdGEoKSwg
VVJMRmlsdGVyUGFyc2VyOjpzdGF0dXNTdHJpbmcoc3RhdHVzKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFs
aWRSZWdleDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHN0YXR1cyA9IGZpbHRlcnNXaXRo
Q29uZGl0aW9uUGFyc2VyLmFkZFBhdHRlcm4odHJpZ2dlci51cmxGaWx0ZXIsIHRyaWdnZXIudXJs
RmlsdGVySXNDYXNlU2Vuc2l0aXZlLCBhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzKTsKLSAgICAgICAg
ICAgIGlmIChzdGF0dXMgPT0gVVJMRmlsdGVyUGFyc2VyOjpNYXRjaGVzRXZlcnl0aGluZykgewot
ICAgICAgICAgICAgICAgIHVuaXZlcnNhbEFjdGlvbnNXaXRoQ29uZGl0aW9ucy5hZGQoYWN0aW9u
TG9jYXRpb25BbmRGbGFncyk7Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gVVJMRmlsdGVyUGFy
c2VyOjpPazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gVVJMRmls
dGVyUGFyc2VyOjpPaykgewotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJFcnJvciB3aGlsZSBw
YXJzaW5nICVzOiAlc1xuIiwgdHJpZ2dlci51cmxGaWx0ZXIudXRmOCgpLmRhdGEoKSwgVVJMRmls
dGVyUGFyc2VyOjpzdGF0dXNTdHJpbmcoc3RhdHVzKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFJlZ2V4Owot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA6
IHRyaWdnZXIuY29uZGl0aW9ucykgewotICAgICAgICAgICAgICAgIHN0YXR1cyA9IHRvcFVSTEZp
bHRlclBhcnNlci5hZGRQYXR0ZXJuKGNvbmRpdGlvbiwgdHJpZ2dlci50b3BVUkxDb25kaXRpb25J
c0Nhc2VTZW5zaXRpdmUsIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOworICAgICAgICAgICAgY2Fz
ZSBBY3Rpb25Db25kaXRpb246OklmRnJhbWVVUkw6CisgICAgICAgICAgICAgICAgc3RhdHVzID0g
ZnJhbWVVUkxGaWx0ZXJQYXJzZXIuYWRkUGF0dGVybihjb25kaXRpb24sIHRyaWdnZXIuZnJhbWVV
UkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsIGFjdGlvbkxvY2F0aW9uQW5kRmxhZ3MpOwogICAgICAg
ICAgICAgICAgIGlmIChzdGF0dXMgPT0gVVJMRmlsdGVyUGFyc2VyOjpNYXRjaGVzRXZlcnl0aGlu
ZykgewotICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxUb3BVUkxBY3Rpb25zLmFkZChhY3Rp
b25Mb2NhdGlvbkFuZEZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWVVUkxVbml2ZXJz
YWxBY3Rpb25zLmFkZChhY3Rpb25Mb2NhdGlvbkFuZEZsYWdzKTsKICAgICAgICAgICAgICAgICAg
ICAgc3RhdHVzID0gVVJMRmlsdGVyUGFyc2VyOjpPazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBVUkxGaWx0ZXJQYXJzZXI6Ok9rKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCJFcnJvciB3aGlsZSBwYXJzaW5nICVzOiAlc1xuIiwgY29u
ZGl0aW9uLnV0ZjgoKS5kYXRhKCksIFVSTEZpbHRlclBhcnNlcjo6c3RhdHVzU3RyaW5nKHN0YXR1
cykudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb250ZW50RXh0
ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkUmVnZXg7CiAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIEFTU0VS
VChzdGF0dXMgPT0gVVJMRmlsdGVyUGFyc2VyOjpPayk7CkBAIC0zNzAsMjMgKzM2NSwyNCBAQCBz
dGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlv
bkNsaWVudCYgY2xpZW50LCBTdHJpbgogICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGZpbHRlcnNX
aXRob3V0Q29uZGl0aW9ucywgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zLm1lbW9yeVVzZWQoKSk7
CiAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoZmlsdGVyc1dpdGhDb25kaXRpb25zLCBmaWx0ZXJz
V2l0aENvbmRpdGlvbnMubWVtb3J5VXNlZCgpKTsKICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyh0
b3BVUkxGaWx0ZXJzLCB0b3BVUkxGaWx0ZXJzLm1lbW9yeVVzZWQoKSk7CisgICAgTE9HX0xBUkdF
X1NUUlVDVFVSRVMoZnJhbWVVUkxGaWx0ZXJzLCBmcmFtZVVSTEZpbHRlcnMubWVtb3J5VXNlZCgp
KTsKIAogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9SRVBPUlRJTkcKICAgICBN
b25vdG9uaWNUaW1lIHRvdGFsTkZBVG9CeXRlQ29kZUJ1aWxkVGltZVN0YXJ0ID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiAjZW5kaWYKIAotICAgIGJvb2wgc3VjY2VzcyA9IGNvbXBpbGVUb0J5dGVj
b2RlKFdURk1vdmUoZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zKSwgV1RGTW92ZSh1bml2ZXJzYWxB
Y3Rpb25zV2l0aG91dENvbmRpdGlvbnMpLCBbJl0oVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVj
b2RlKSB7Ci0gICAgICAgIGNsaWVudC53cml0ZUZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVj
b2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBjb21waWxlVG9CeXRl
Y29kZShXVEZNb3ZlKHVybEZpbHRlcnMpLCBXVEZNb3ZlKHVuaXZlcnNhbEFjdGlvbnMpLCBbJl0o
VmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSB7CisgICAgICAgIGNsaWVudC53cml0ZVVS
TEZpbHRlcnNCeXRlY29kZShXVEZNb3ZlKGJ5dGVjb2RlKSk7CiAgICAgfSk7CiAgICAgaWYgKCFz
dWNjZXNzKQogICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpFcnJvcldyaXRp
bmdTZXJpYWxpemVkTkZBOwotICAgIHN1Y2Nlc3MgPSBjb21waWxlVG9CeXRlY29kZShXVEZNb3Zl
KGZpbHRlcnNXaXRoQ29uZGl0aW9ucyksIFdURk1vdmUodW5pdmVyc2FsQWN0aW9uc1dpdGhDb25k
aXRpb25zKSwgWyZdKFZlY3RvcjxERkFCeXRlY29kZT4mJiBieXRlY29kZSkgewotICAgICAgICBj
bGllbnQud3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShXVEZNb3ZlKGJ5dGVjb2Rl
KSk7CisgICAgc3VjY2VzcyA9IGNvbXBpbGVUb0J5dGVjb2RlKFdURk1vdmUodG9wVVJMRmlsdGVy
cyksIFdURk1vdmUodG9wVVJMVW5pdmVyc2FsQWN0aW9ucyksIFsmXShWZWN0b3I8REZBQnl0ZWNv
ZGU+JiYgYnl0ZWNvZGUpIHsKKyAgICAgICAgY2xpZW50LndyaXRlVG9wVVJMRmlsdGVyc0J5dGVj
b2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKICAgICB9KTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAg
ICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkVycm9yV3JpdGluZ1NlcmlhbGl6ZWRO
RkE7Ci0gICAgc3VjY2VzcyA9IGNvbXBpbGVUb0J5dGVjb2RlKFdURk1vdmUodG9wVVJMRmlsdGVy
cyksIFdURk1vdmUodW5pdmVyc2FsVG9wVVJMQWN0aW9ucyksIFsmXShWZWN0b3I8REZBQnl0ZWNv
ZGU+JiYgYnl0ZWNvZGUpIHsKLSAgICAgICAgY2xpZW50LndyaXRlVG9wVVJMRmlsdGVyc0J5dGVj
b2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKKyAgICBzdWNjZXNzID0gY29tcGlsZVRvQnl0ZWNvZGUo
V1RGTW92ZShmcmFtZVVSTEZpbHRlcnMpLCBXVEZNb3ZlKGZyYW1lVVJMVW5pdmVyc2FsQWN0aW9u
cyksIFsmXShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIHsKKyAgICAgICAgY2xpZW50
LndyaXRlRnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGUoV1RGTW92ZShieXRlY29kZSkpOwogICAgIH0p
OwogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJv
cjo6RXJyb3JXcml0aW5nU2VyaWFsaXplZE5GQTsKQEAgLTQwMSw3ICszOTcsNiBAQCBzdGQ6OmVy
cm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVu
dCYgY2xpZW50LCBTdHJpbgogICAgIHJldHVybiB7IH07CiB9CiAKLX0gLy8gbmFtZXNwYWNlIENv
bnRlbnRFeHRlbnNpb25zCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucwogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25Db21waWxlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgKaW5kZXggNWJlZGQzZWMxMzQ0NGEyMTk1MGE5
MzE3MzcyZjgxYTBmY2JjYTkzMy4uZDc3MGMzM2VjYWMyMGZhN2E4MWM0YzE4Zjk3N2MxYmI4NDY4
NDk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkNvbXBpbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmgKQEAgLTQxLDkgKzQxLDkgQEAgcHVibGljOgog
ICAgIC8vIEZ1bmN0aW9ucyBzaG91bGQgYmUgY2FsbGVkIGluIHRoaXMgb3JkZXIuIEFsbCBleGNl
cHQgd3JpdGVBY3Rpb25zIGFuZCBmaW5hbGl6ZSBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVz
LCB0aG91Z2guCiAgICAgdmlydHVhbCB2b2lkIHdyaXRlU291cmNlKFN0cmluZyYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdyaXRlQWN0aW9ucyhWZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+
JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5
dGVjb2RlPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9wVVJMRmlsdGVyc0J5dGVj
b2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZUZy
YW1lVVJMRmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBmaW5hbGl6ZSgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5k
ZXggMTYxYmJkM2M5NzAzOTcwMTcwNjg4N2UwMGY2NjIzYThmNjNmYjVhOS4uYjMzMzlmZjY0NzRj
NTdhZmU0ZDEzY2JmMDM0ZDRiNTgyZjQ0OGIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAg
LTEzNCw3ICsxMzQsMTAgQEAgc3RhdGljIEV4cGVjdGVkPFRyaWdnZXIsIHN0ZDo6ZXJyb3JfY29k
ZT4gbG9hZFRyaWdnZXIoY29uc3QgSlNPTjo6T2JqZWN0JiBydWxlT2IKICAgICAgICAgdHJpZ2dl
ci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUgPSAqdXJsRmlsdGVyQ2FzZVNlbnNpdGl2ZVZhbHVl
OwogCiAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdG9wVVJMRmlsdGVyQ2FzZVNlbnNpdGl2
ZVZhbHVlID0gdHJpZ2dlck9iamVjdC0+Z2V0Qm9vbGVhbigidG9wLXVybC1maWx0ZXItaXMtY2Fz
ZS1zZW5zaXRpdmUiKSkKLSAgICAgICAgdHJpZ2dlci50b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5z
aXRpdmUgPSAqdG9wVVJMRmlsdGVyQ2FzZVNlbnNpdGl2ZVZhbHVlOworICAgICAgICB0cmlnZ2Vy
LnRvcFVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9ICp0b3BVUkxGaWx0ZXJDYXNlU2Vuc2l0aXZl
VmFsdWU7CisKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxib29sPiBmcmFtZVVSTEZpbHRlckNhc2VT
ZW5zaXRpdmVWYWx1ZSA9IHRyaWdnZXJPYmplY3QtPmdldEJvb2xlYW4oImZyYW1lLXVybC1maWx0
ZXItaXMtY2FzZS1zZW5zaXRpdmUiKSkKKyAgICAgICAgdHJpZ2dlci5mcmFtZVVSTEZpbHRlcklz
Q2FzZVNlbnNpdGl2ZSA9ICpmcmFtZVVSTEZpbHRlckNhc2VTZW5zaXRpdmVWYWx1ZTsKIAogICAg
IGlmIChhdXRvIHJlc291cmNlVHlwZVZhbHVlID0gdHJpZ2dlck9iamVjdC0+Z2V0VmFsdWUoInJl
c291cmNlLXR5cGUiKSkgewogICAgICAgICBhdXRvIHJlc291cmNlVHlwZUFycmF5ID0gcmVzb3Vy
Y2VUeXBlVmFsdWUtPmFzQXJyYXkoKTsKQEAgLTE2MCw5ICsxNjMsOSBAQCBzdGF0aWMgRXhwZWN0
ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBsb2FkVHJpZ2dlcihjb25zdCBKU09OOjpPYmpl
Y3QmIHJ1bGVPYgogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKICAg
ICB9CiAKLSAgICBhdXRvIGNoZWNrQ29uZGl0aW9uID0gWyZdIChBU0NJSUxpdGVyYWwga2V5LCBF
eHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjplcnJvcl9jb2RlPiAoKmxpc3RSZWFkZXIpKGNv
bnN0IEpTT046OkFycmF5JiksIFRyaWdnZXI6OkNvbmRpdGlvblR5cGUgY29uZGl0aW9uVHlwZSkg
LT4gc3RkOjplcnJvcl9jb2RlIHsKKyAgICBhdXRvIGNoZWNrQ29uZGl0aW9uID0gWyZdIChBU0NJ
SUxpdGVyYWwga2V5LCBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjplcnJvcl9jb2RlPiAo
Kmxpc3RSZWFkZXIpKGNvbnN0IEpTT046OkFycmF5JiksIEFjdGlvbkNvbmRpdGlvbiBhY3Rpb25D
b25kaXRpb24pIC0+IHN0ZDo6ZXJyb3JfY29kZSB7CiAgICAgICAgIGlmIChhdXRvIHZhbHVlID0g
dHJpZ2dlck9iamVjdC0+Z2V0VmFsdWUoa2V5KSkgewotICAgICAgICAgICAgaWYgKHRyaWdnZXIu
Y29uZGl0aW9uVHlwZSAhPSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpOb25lKQorICAgICAgICAg
ICAgaWYgKHRyaWdnZXIuZmxhZ3MgJiBBY3Rpb25Db25kaXRpb25NYXNrKQogICAgICAgICAgICAg
ICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnM7
CiAgICAgICAgICAgICBhdXRvIGFycmF5ID0gdmFsdWUtPmFzQXJyYXkoKTsKICAgICAgICAgICAg
IGlmICghYXJyYXkpCkBAIC0xNzMsMjIgKzE3NiwyNCBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dl
ciwgc3RkOjplcnJvcl9jb2RlPiBsb2FkVHJpZ2dlcihjb25zdCBKU09OOjpPYmplY3QmIHJ1bGVP
YgogICAgICAgICAgICAgdHJpZ2dlci5jb25kaXRpb25zID0gV1RGTW92ZShsaXN0LnZhbHVlKCkp
OwogICAgICAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRp
b25MaXN0OwotICAgICAgICAgICAgQVNTRVJUKHRyaWdnZXIuY29uZGl0aW9uVHlwZSA9PSBUcmln
Z2VyOjpDb25kaXRpb25UeXBlOjpOb25lKTsKLSAgICAgICAgICAgIHRyaWdnZXIuY29uZGl0aW9u
VHlwZSA9IGNvbmRpdGlvblR5cGU7CisgICAgICAgICAgICB0cmlnZ2VyLmZsYWdzIHw9IHN0YXRp
Y19jYXN0PFJlc291cmNlRmxhZ3M+KGFjdGlvbkNvbmRpdGlvbik7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9OwogCi0gICAgaWYgKGF1dG8gZXJyb3IgPSBjaGVja0NvbmRp
dGlvbigiaWYtZG9tYWluIl9zLCBnZXREb21haW5MaXN0LCBUcmlnZ2VyOjpDb25kaXRpb25UeXBl
OjpJZlRvcFVSTCkpCisgICAgaWYgKGF1dG8gZXJyb3IgPSBjaGVja0NvbmRpdGlvbigiaWYtZG9t
YWluIl9zLCBnZXREb21haW5MaXN0LCBBY3Rpb25Db25kaXRpb246OklmVG9wVVJMKSkKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKKworICAgIGlmIChhdXRvIGVycm9yID0g
Y2hlY2tDb25kaXRpb24oInVubGVzcy1kb21haW4iX3MsIGdldERvbWFpbkxpc3QsIEFjdGlvbkNv
bmRpdGlvbjo6VW5sZXNzVG9wVVJMKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVy
cm9yKTsKIAotICAgIGlmIChhdXRvIGVycm9yID0gY2hlY2tDb25kaXRpb24oInVubGVzcy1kb21h
aW4iX3MsIGdldERvbWFpbkxpc3QsIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6OlVubGVzc1RvcFVS
TCkpCisgICAgaWYgKGF1dG8gZXJyb3IgPSBjaGVja0NvbmRpdGlvbigiaWYtdG9wLXVybCJfcywg
Z2V0U3RyaW5nTGlzdCwgQWN0aW9uQ29uZGl0aW9uOjpJZlRvcFVSTCkpCiAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChlcnJvcik7CiAKLSAgICBpZiAoYXV0byBlcnJvciA9IGNoZWNrQ29u
ZGl0aW9uKCJpZi10b3AtdXJsIl9zLCBnZXRTdHJpbmdMaXN0LCBUcmlnZ2VyOjpDb25kaXRpb25U
eXBlOjpJZlRvcFVSTCkpCisgICAgaWYgKGF1dG8gZXJyb3IgPSBjaGVja0NvbmRpdGlvbigidW5s
ZXNzLXRvcC11cmwiX3MsIGdldFN0cmluZ0xpc3QsIEFjdGlvbkNvbmRpdGlvbjo6VW5sZXNzVG9w
VVJMKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKIAotICAgIGlmIChh
dXRvIGVycm9yID0gY2hlY2tDb25kaXRpb24oInVubGVzcy10b3AtdXJsIl9zLCBnZXRTdHJpbmdM
aXN0LCBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpVbmxlc3NUb3BVUkwpKQorICAgIGlmIChhdXRv
IGVycm9yID0gY2hlY2tDb25kaXRpb24oImlmLWZyYW1lLXVybCJfcywgZ2V0U3RyaW5nTGlzdCwg
QWN0aW9uQ29uZGl0aW9uOjpJZkZyYW1lVVJMKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGVycm9yKTsKIAogICAgIHJldHVybiB0cmlnZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuY3BwCmluZGV4
IDU1M2Q2NTlkN2NjMDIyNDk5OTU1OWM2YzI0ZTQ0NzBlZmVlNDZhZWYuLjNiNGZhMzM5MDEzMDA3
ZjM1NDI3ODhhMjQ1OTUyODUxNzBiMzUzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5jcHAKQEAgLTEwMCwx
MCArMTAwLDEwIEBAIFRyaWdnZXIgVHJpZ2dlcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBy
ZXR1cm4gewogICAgICAgICB1cmxGaWx0ZXIuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHVybEZp
bHRlcklzQ2FzZVNlbnNpdGl2ZSwKLSAgICAgICAgdG9wVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0
aXZlLAorICAgICAgICB0b3BVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUsCisgICAgICAgIGZyYW1l
VVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlLAogICAgICAgICBmbGFncywKLSAgICAgICAgY29uZGl0
aW9ucy5pc29sYXRlZENvcHkoKSwKLSAgICAgICAgY29uZGl0aW9uVHlwZQorICAgICAgICBjb25k
aXRpb25zLmlzb2xhdGVkQ29weSgpCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKaW5kZXggOTMw
ZjVmZmU2Y2JkYmQ3NjgzMDJlZDIyMjA1YTZjMTE3ZTc3NzAyYi4uYzRiYzFmMDA4ODUwODVmY2Iy
MTA1MDM5ODNhZjYxOGMzNDBiNjA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCkBAIC0zMiw5ICszMiw3IEBA
CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7
CituYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCiAvLyBBIENvbnRlbnRF
eHRlbnNpb25SdWxlIGlzIHRoZSBzbWFsbGVzdCB1bml0IGluIGEgQ29udGVudEV4dGVuc2lvbi4K
IC8vCkBAIC00NCw0OSArNDIsNDggQEAgbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIHN0
cnVjdCBUcmlnZ2VyIHsKICAgICBTdHJpbmcgdXJsRmlsdGVyOwogICAgIGJvb2wgdXJsRmlsdGVy
SXNDYXNlU2Vuc2l0aXZlIHsgZmFsc2UgfTsKLSAgICBib29sIHRvcFVSTENvbmRpdGlvbklzQ2Fz
ZVNlbnNpdGl2ZSB7IGZhbHNlIH07CisgICAgYm9vbCB0b3BVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRp
dmUgeyBmYWxzZSB9OworICAgIGJvb2wgZnJhbWVVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUgeyBm
YWxzZSB9OwogICAgIFJlc291cmNlRmxhZ3MgZmxhZ3MgeyAwIH07CiAgICAgVmVjdG9yPFN0cmlu
Zz4gY29uZGl0aW9uczsKLSAgICBlbnVtIGNsYXNzIENvbmRpdGlvblR5cGUgOiB1aW50OF90IHsK
LSAgICAgICAgTm9uZSwKLSAgICAgICAgSWZUb3BVUkwsCi0gICAgICAgIFVubGVzc1RvcFVSTCwK
LSAgICB9IGNvbmRpdGlvblR5cGUgeyBDb25kaXRpb25UeXBlOjpOb25lIH07CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBUcmlnZ2VyIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogICAgIAogICAgIH5Ucmln
Z2VyKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjb25kaXRpb25zLmlzRW1wdHkoKSA9PSAoY29u
ZGl0aW9uVHlwZSA9PSBDb25kaXRpb25UeXBlOjpOb25lKSk7Ci0gICAgICAgIGlmICh0b3BVUkxD
b25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUpCi0gICAgICAgICAgICBBU1NFUlQoY29uZGl0aW9uVHlw
ZSA9PSBDb25kaXRpb25UeXBlOjpJZlRvcFVSTCB8fCBjb25kaXRpb25UeXBlID09IENvbmRpdGlv
blR5cGU6OlVubGVzc1RvcFVSTCk7CisgICAgICAgIGF1dG8gYWN0aW9uQ29uZGl0aW9uID0gc3Rh
dGljX2Nhc3Q8QWN0aW9uQ29uZGl0aW9uPihmbGFncyAmIEFjdGlvbkNvbmRpdGlvbk1hc2spOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFjdGlvbkNvbmRpdGlvbiwgY29uZGl0aW9ucy5pc0VtcHR5
KCkgPT0gKGFjdGlvbkNvbmRpdGlvbiA9PSBBY3Rpb25Db25kaXRpb246Ok5vbmUpKTsKKyAgICAg
ICAgaWYgKHRvcFVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSkKKyAgICAgICAgICAgIEFTU0VSVChh
Y3Rpb25Db25kaXRpb24gPT0gQWN0aW9uQ29uZGl0aW9uOjpJZlRvcFVSTCB8fCBhY3Rpb25Db25k
aXRpb24gPT0gQWN0aW9uQ29uZGl0aW9uOjpVbmxlc3NUb3BVUkwpOworICAgICAgICBpZiAoZnJh
bWVVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUpCisgICAgICAgICAgICBBU1NFUlQoYWN0aW9uQ29u
ZGl0aW9uID09IEFjdGlvbkNvbmRpdGlvbjo6SWZGcmFtZVVSTCk7CiAgICAgfQogCiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB1cmxGaWx0ZXIuaXNFbXB0
eSgpCiAgICAgICAgICAgICAmJiAhdXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlCi0gICAgICAgICAg
ICAmJiAhdG9wVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlCisgICAgICAgICAgICAmJiAhdG9w
VVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlCisgICAgICAgICAgICAmJiAhZnJhbWVVUkxGaWx0ZXJJ
c0Nhc2VTZW5zaXRpdmUKICAgICAgICAgICAgICYmICFmbGFncwotICAgICAgICAgICAgJiYgY29u
ZGl0aW9ucy5pc0VtcHR5KCkKLSAgICAgICAgICAgICYmIGNvbmRpdGlvblR5cGUgPT0gQ29uZGl0
aW9uVHlwZTo6Tm9uZTsKKyAgICAgICAgICAgICYmIGNvbmRpdGlvbnMuaXNFbXB0eSgpOwogICAg
IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmlnZ2VyJiBvdGhlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiB1cmxGaWx0ZXIgPT0gb3RoZXIudXJsRmlsdGVyCiAgICAgICAg
ICAgICAmJiB1cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUgPT0gb3RoZXIudXJsRmlsdGVySXNDYXNl
U2Vuc2l0aXZlCi0gICAgICAgICAgICAmJiB0b3BVUkxDb25kaXRpb25Jc0Nhc2VTZW5zaXRpdmUg
PT0gb3RoZXIudG9wVVJMQ29uZGl0aW9uSXNDYXNlU2Vuc2l0aXZlCisgICAgICAgICAgICAmJiB0
b3BVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUgPT0gb3RoZXIudG9wVVJMRmlsdGVySXNDYXNlU2Vu
c2l0aXZlCisgICAgICAgICAgICAmJiBmcmFtZVVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9PSBv
dGhlci5mcmFtZVVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZQogICAgICAgICAgICAgJiYgZmxhZ3Mg
PT0gb3RoZXIuZmxhZ3MKLSAgICAgICAgICAgICYmIGNvbmRpdGlvbnMgPT0gb3RoZXIuY29uZGl0
aW9ucwotICAgICAgICAgICAgJiYgY29uZGl0aW9uVHlwZSA9PSBvdGhlci5jb25kaXRpb25UeXBl
OworICAgICAgICAgICAgJiYgY29uZGl0aW9ucyA9PSBvdGhlci5jb25kaXRpb25zOwogICAgIH0K
IH07CiAKIHN0cnVjdCBUcmlnZ2VySGFzaCB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgVHJpZ2dlciYgdHJpZ2dlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBjb21wdXRlSGFzaCh0
cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSwgdHJpZ2dlci51cmxGaWx0ZXIsIHRyaWdn
ZXIuZmxhZ3MsIHRyaWdnZXIuY29uZGl0aW9ucywgdHJpZ2dlci5jb25kaXRpb25UeXBlKTsKKyAg
ICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoKHRyaWdnZXIudXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZl
LCB0cmlnZ2VyLnVybEZpbHRlciwgdHJpZ2dlci5mbGFncywgdHJpZ2dlci5jb25kaXRpb25zKTsK
ICAgICB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVHJpZ2dlciYgYSwgY29uc3QgVHJp
Z2dlciYgYikKICAgICB7CkBAIC0xNzAsNyArMTY3LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBB
Y3Rpb24gbV9hY3Rpb247CiB9OwogCi19IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnMKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmNwcAppbmRleCBlNzljOWEwYTM2NzY0ZTU4MTQ0OTBkMDg1MDA1NWYyOGVh
N2EyYjRjLi4xYWI3ZDZlYmYzMTYwYjVjMTNjYTcxNjdmYTIzZmZlOGE3YzFkMDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTUwLDkgKzUwLDcgQEAKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKK25hbWVzcGFjZSBX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9ucyB7CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL0NvbnRlbnRSdWxlTGlzdEFkZGl0aW9ucy5tbT4K
QEAgLTk4LDYgKzk2LDYwIEBAIHZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpyZW1vdmVB
bGxDb250ZW50RXh0ZW5zaW9ucygpCiAgICAgbV9jb250ZW50RXh0ZW5zaW9ucy5jbGVhcigpOwog
fQogCithdXRvIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0Zyb21Db250ZW50UnVs
ZUxpc3QoY29uc3QgQ29udGVudEV4dGVuc2lvbiYgY29udGVudEV4dGVuc2lvbiwgY29uc3QgQ1N0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBSZXNvdXJjZUxvYWRJbmZvJiByZXNvdXJjZUxvYWRJbmZv
LCBSZXNvdXJjZUZsYWdzIGZsYWdzKSBjb25zdCAtPiBBY3Rpb25zRnJvbUNvbnRlbnRSdWxlTGlz
dAoreworICAgIEFjdGlvbnNGcm9tQ29udGVudFJ1bGVMaXN0IGFjdGlvbnNTdHJ1Y3Q7CisgICAg
YWN0aW9uc1N0cnVjdC5jb250ZW50UnVsZUxpc3RJZGVudGlmaWVyID0gY29udGVudEV4dGVuc2lv
bi5pZGVudGlmaWVyKCk7CisKKyAgICBjb25zdCBhdXRvJiBjb21waWxlZEV4dGVuc2lvbiA9IGNv
bnRlbnRFeHRlbnNpb24uY29tcGlsZWRFeHRlbnNpb24oKTsKKworICAgIERGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXIgaW50ZXJwcmV0ZXIoY29tcGlsZWRFeHRlbnNpb24udXJsRmlsdGVyc0J5dGVjb2Rl
KCkpOworICAgIGF1dG8gYWN0aW9uTG9jYXRpb25zID0gaW50ZXJwcmV0ZXIuaW50ZXJwcmV0KHVy
bFN0cmluZywgZmxhZ3MpOworICAgIGF1dG8mIHRvcFVSTEFjdGlvbnMgPSBjb250ZW50RXh0ZW5z
aW9uLnRvcFVSTEFjdGlvbnMocmVzb3VyY2VMb2FkSW5mby5tYWluRG9jdW1lbnRVUkwpOworICAg
IGF1dG8mIGZyYW1lVVJMQWN0aW9ucyA9IGNvbnRlbnRFeHRlbnNpb24uZnJhbWVVUkxBY3Rpb25z
KHJlc291cmNlTG9hZEluZm8uZnJhbWVVUkwpOworCisgICAgYWN0aW9uTG9jYXRpb25zLnJlbW92
ZUlmKFsmXSh1aW50NjRfdCBhY3Rpb25BbmRGbGFncykgeworICAgICAgICBSZXNvdXJjZUZsYWdz
IGZsYWdzID0gYWN0aW9uQW5kRmxhZ3MgPj4gMzI7CisgICAgICAgIGF1dG8gYWN0aW9uQ29uZGl0
aW9uID0gc3RhdGljX2Nhc3Q8QWN0aW9uQ29uZGl0aW9uPihmbGFncyAmIEFjdGlvbkNvbmRpdGlv
bk1hc2spOworICAgICAgICBzd2l0Y2ggKGFjdGlvbkNvbmRpdGlvbikgeworICAgICAgICBjYXNl
IEFjdGlvbkNvbmRpdGlvbjo6Tm9uZToKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgY2FzZSBBY3Rpb25Db25kaXRpb246OklmVG9wVVJMOgorICAgICAgICAgICAgcmV0dXJuICF0
b3BVUkxBY3Rpb25zLmNvbnRhaW5zKGFjdGlvbkFuZEZsYWdzKTsKKyAgICAgICAgY2FzZSBBY3Rp
b25Db25kaXRpb246OlVubGVzc1RvcFVSTDoKKyAgICAgICAgICAgIHJldHVybiB0b3BVUkxBY3Rp
b25zLmNvbnRhaW5zKGFjdGlvbkFuZEZsYWdzKTsKKyAgICAgICAgY2FzZSBBY3Rpb25Db25kaXRp
b246OklmRnJhbWVVUkw6CisgICAgICAgICAgICByZXR1cm4gIWZyYW1lVVJMQWN0aW9ucy5jb250
YWlucyhhY3Rpb25BbmRGbGFncyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9KTsKKworICAgIGF1dG8gc2VyaWFs
aXplZEFjdGlvbnMgPSBjb21waWxlZEV4dGVuc2lvbi5zZXJpYWxpemVkQWN0aW9ucygpOworCisg
ICAgY29uc3QgYXV0byYgdW5pdmVyc2FsQWN0aW9ucyA9IGNvbnRlbnRFeHRlbnNpb24udW5pdmVy
c2FsQWN0aW9ucygpOworICAgIGlmIChhdXRvIHRvdGFsQWN0aW9uQ291bnQgPSBhY3Rpb25Mb2Nh
dGlvbnMuc2l6ZSgpICsgdW5pdmVyc2FsQWN0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgVmVjdG9y
PHVpbnQzMl90PiB2ZWN0b3I7CisgICAgICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHRvdGFsQWN0aW9uQ291bnQpOworICAgICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbkxvY2F0aW9u
IDogYWN0aW9uTG9jYXRpb25zKQorICAgICAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYWN0aW9uTG9jYXRpb24pKTsKKyAgICAgICAgZm9yICh1aW50
NjRfdCBhY3Rpb25Mb2NhdGlvbiA6IHVuaXZlcnNhbEFjdGlvbnMpCisgICAgICAgICAgICB2ZWN0
b3IudW5jaGVja2VkQXBwZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihhY3Rpb25Mb2NhdGlvbikp
OworICAgICAgICBzdGQ6OnNvcnQodmVjdG9yLmJlZ2luKCksIHZlY3Rvci5lbmQoKSk7CisKKyAg
ICAgICAgLy8gQWRkIGFjdGlvbnMgaW4gcmV2ZXJzZSBvcmRlciB0byBwcm9wZXJseSBkZWFsIHdp
dGggSWdub3JlUHJldmlvdXNSdWxlcy4KKyAgICAgICAgZm9yIChhdXRvIGkgPSB2ZWN0b3Iuc2l6
ZSgpOyBpOyBpLS0pIHsKKyAgICAgICAgICAgIGF1dG8gYWN0aW9uID0gRGVzZXJpYWxpemVkQWN0
aW9uOjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkQWN0aW9ucywgdmVjdG9yW2kgLSAxXSk7CisgICAg
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxJZ25vcmVQcmV2aW91c1J1bGVzQWN0
aW9uPihhY3Rpb24uZGF0YSgpKSkgeworICAgICAgICAgICAgICAgIGFjdGlvbnNTdHJ1Y3Quc2F3
SWdub3JlUHJldmlvdXNSdWxlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBhY3Rpb25zU3RydWN0LmFjdGlvbnMuYXBwZW5kKFdURk1v
dmUoYWN0aW9uKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGFjdGlvbnNTdHJ1Y3Q7
Cit9CisKIGF1dG8gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rpb25zRm9yUmVzb3VyY2VM
b2FkKGNvbnN0IFJlc291cmNlTG9hZEluZm8mIHJlc291cmNlTG9hZEluZm8pIGNvbnN0IC0+IFZl
Y3RvcjxBY3Rpb25zRnJvbUNvbnRlbnRSdWxlTGlzdD4KIHsKICNpZiBDT05URU5UX0VYVEVOU0lP
TlNfUEVSRk9STUFOQ0VfUkVQT1JUSU5HCkBAIC0xMTAsNTMgKzE2MiwxNiBAQCBhdXRvIENvbnRl
bnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNlTG9hZChjb25zdCBSZXNvdXJj
ZUxvYWRJbmZvJiByZQogCiAgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcgPSByZXNvdXJjZUxv
YWRJbmZvLnJlc291cmNlVVJMLnN0cmluZygpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UodXJs
U3RyaW5nLmlzQWxsQVNDSUkoKSwgIkEgZGVjb2RlZCBVUkwgc2hvdWxkIG9ubHkgY29udGFpbiBB
U0NJSSBjaGFyYWN0ZXJzLiBUaGUgbWF0Y2hpbmcgYWxnb3JpdGhtIGFzc3VtZXMgdGhlIGlucHV0
IGlzIEFTQ0lJLiIpOworICAgIC8vIEZJWE1FOiBVVEYtOCBjb252ZXJzaW9uIHNob3VsZCBvbmx5
IGJlIG5lY2Vzc2FyeSB3aXRoIFVURi0xNiBTdHJpbmcgYmFzZWQgVVJMcywgd2hpY2ggYXJlIHJh
cmUuCisgICAgLy8gREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0IHNob3VsZCB0YWtl
IGEgU3BhbjxjaGFyPiBpbnN0ZWFkIG9mIGEgQ1N0cmluZyBhbmQgd2UgY2FuIGF2b2lkIHRoaXMg
YWxsb2NhdGlvbiBhbG1vc3QgYWxsIG9mIHRoZSB0aW1lLgogICAgIGNvbnN0IGF1dG8gdXJsQ1N0
cmluZyA9IHVybFN0cmluZy51dGY4KCk7CiAKICAgICBWZWN0b3I8QWN0aW9uc0Zyb21Db250ZW50
UnVsZUxpc3Q+IGFjdGlvbnNWZWN0b3I7CiAgICAgYWN0aW9uc1ZlY3Rvci5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG1fY29udGVudEV4dGVuc2lvbnMuc2l6ZSgpKTsKLSAgICBjb25zdCBSZXNvdXJj
ZUZsYWdzIGZsYWdzID0gcmVzb3VyY2VMb2FkSW5mby5nZXRSZXNvdXJjZUZsYWdzKCk7Ci0gICAg
Zm9yIChhdXRvJiBjb250ZW50RXh0ZW5zaW9uIDogbV9jb250ZW50RXh0ZW5zaW9ucy52YWx1ZXMo
KSkgewotICAgICAgICBBY3Rpb25zRnJvbUNvbnRlbnRSdWxlTGlzdCBhY3Rpb25zU3RydWN0Owot
ICAgICAgICBhY3Rpb25zU3RydWN0LmNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXIgPSBjb250ZW50
RXh0ZW5zaW9uLT5pZGVudGlmaWVyKCk7Ci0KLSAgICAgICAgY29uc3QgQ29tcGlsZWRDb250ZW50
RXh0ZW5zaW9uJiBjb21waWxlZEV4dGVuc2lvbiA9IGNvbnRlbnRFeHRlbnNpb24tPmNvbXBpbGVk
RXh0ZW5zaW9uKCk7Ci0gICAgICAgIAotICAgICAgICBERkFCeXRlY29kZUludGVycHJldGVyIHdp
dGhvdXRDb25kaXRpb25zSW50ZXJwcmV0ZXIoY29tcGlsZWRFeHRlbnNpb24uZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGUoKSk7Ci0gICAgICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6
OkFjdGlvbnMgd2l0aG91dENvbmRpdGlvbnNBY3Rpb25zID0gd2l0aG91dENvbmRpdGlvbnNJbnRl
cnByZXRlci5pbnRlcnByZXQodXJsQ1N0cmluZywgZmxhZ3MpOwotICAgICAgICAKLSAgICAgICAg
VVJMIHRvcFVSTCA9IHJlc291cmNlTG9hZEluZm8ubWFpbkRvY3VtZW50VVJMOwotICAgICAgICBE
RkFCeXRlY29kZUludGVycHJldGVyIHdpdGhDb25kaXRpb25zSW50ZXJwcmV0ZXIoY29tcGlsZWRF
eHRlbnNpb24uZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSk7Ci0gICAgICAgIERGQUJ5
dGVjb2RlSW50ZXJwcmV0ZXI6OkFjdGlvbnMgd2l0aENvbmRpdGlvbnNBY3Rpb25zID0gd2l0aENv
bmRpdGlvbnNJbnRlcnByZXRlci5pbnRlcnByZXRXaXRoQ29uZGl0aW9ucyh1cmxDU3RyaW5nLCBm
bGFncywgY29udGVudEV4dGVuc2lvbi0+dG9wVVJMQWN0aW9ucyh0b3BVUkwpKTsKLSAgICAgICAg
Ci0gICAgICAgIGF1dG8gc2VyaWFsaXplZEFjdGlvbnMgPSBjb21waWxlZEV4dGVuc2lvbi5zZXJp
YWxpemVkQWN0aW9ucygpOwotICAgICAgICAKLSAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQzMl90
PiYgdW5pdmVyc2FsV2l0aENvbmRpdGlvbnMgPSBjb250ZW50RXh0ZW5zaW9uLT51bml2ZXJzYWxB
Y3Rpb25zV2l0aENvbmRpdGlvbnModG9wVVJMKTsKLSAgICAgICAgY29uc3QgVmVjdG9yPHVpbnQz
Ml90PiYgdW5pdmVyc2FsV2l0aG91dENvbmRpdGlvbnMgPSBjb250ZW50RXh0ZW5zaW9uLT51bml2
ZXJzYWxBY3Rpb25zV2l0aG91dENvbmRpdGlvbnMoKTsKLSAgICAgICAgaWYgKCF3aXRob3V0Q29u
ZGl0aW9uc0FjdGlvbnMuaXNFbXB0eSgpIHx8ICF3aXRoQ29uZGl0aW9uc0FjdGlvbnMuaXNFbXB0
eSgpIHx8ICF1bml2ZXJzYWxXaXRoQ29uZGl0aW9ucy5pc0VtcHR5KCkgfHwgIXVuaXZlcnNhbFdp
dGhvdXRDb25kaXRpb25zLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgVmVjdG9yPHVpbnQzMl90
PiBhY3Rpb25Mb2NhdGlvbnM7Ci0gICAgICAgICAgICBhY3Rpb25Mb2NhdGlvbnMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSh3aXRob3V0Q29uZGl0aW9uc0FjdGlvbnMuc2l6ZSgpICsgd2l0aENvbmRp
dGlvbnNBY3Rpb25zLnNpemUoKSArIHVuaXZlcnNhbFdpdGhvdXRDb25kaXRpb25zLnNpemUoKSAr
IHVuaXZlcnNhbFdpdGhDb25kaXRpb25zLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQ2
NF90IGFjdGlvbkxvY2F0aW9uIDogd2l0aG91dENvbmRpdGlvbnNBY3Rpb25zKQotICAgICAgICAg
ICAgICAgIGFjdGlvbkxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGFjdGlvbkxvY2F0aW9uKSk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQ2NF90IGFjdGlvbkxv
Y2F0aW9uIDogd2l0aENvbmRpdGlvbnNBY3Rpb25zKQotICAgICAgICAgICAgICAgIGFjdGlvbkxv
Y2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjdGlvbkxvY2F0
aW9uKSk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQzMl90IGFjdGlvbkxvY2F0aW9uIDogdW5pdmVy
c2FsV2l0aG91dENvbmRpdGlvbnMpCi0gICAgICAgICAgICAgICAgYWN0aW9uTG9jYXRpb25zLnVu
Y2hlY2tlZEFwcGVuZChhY3Rpb25Mb2NhdGlvbik7Ci0gICAgICAgICAgICBmb3IgKHVpbnQzMl90
IGFjdGlvbkxvY2F0aW9uIDogdW5pdmVyc2FsV2l0aENvbmRpdGlvbnMpCi0gICAgICAgICAgICAg
ICAgYWN0aW9uTG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChhY3Rpb25Mb2NhdGlvbik7Ci0gICAg
ICAgICAgICBzdGQ6OnNvcnQoYWN0aW9uTG9jYXRpb25zLmJlZ2luKCksIGFjdGlvbkxvY2F0aW9u
cy5lbmQoKSk7Ci0KLSAgICAgICAgICAgIC8vIEFkZCBhY3Rpb25zIGluIHJldmVyc2Ugb3JkZXIg
dG8gcHJvcGVybHkgZGVhbCB3aXRoIElnbm9yZVByZXZpb3VzUnVsZXMuCi0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBhY3Rpb25Mb2NhdGlvbnMuc2l6ZSgpOyBpOyBpLS0pIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIGFjdGlvbiA9IERlc2VyaWFsaXplZEFjdGlvbjo6ZGVzZXJpYWxpemUo
c2VyaWFsaXplZEFjdGlvbnMsIGFjdGlvbkxvY2F0aW9uc1tpIC0gMV0pOwotICAgICAgICAgICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPElnbm9yZVByZXZpb3VzUnVsZXNBY3Rpb24+
KGFjdGlvbi5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbnNTdHJ1Y3Quc2F3
SWdub3JlUHJldmlvdXNSdWxlcyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhY3Rpb25zU3RydWN0LmFjdGlvbnMu
YXBwZW5kKFdURk1vdmUoYWN0aW9uKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgYWN0aW9uc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShhY3Rpb25zU3RydWN0KSk7
Ci0gICAgfQorICAgIEFTU0VSVCghKHJlc291cmNlTG9hZEluZm8uZ2V0UmVzb3VyY2VGbGFncygp
ICYgQWN0aW9uQ29uZGl0aW9uTWFzaykpOworICAgIGNvbnN0IFJlc291cmNlRmxhZ3MgZmxhZ3Mg
PSByZXNvdXJjZUxvYWRJbmZvLmdldFJlc291cmNlRmxhZ3MoKSB8IEFjdGlvbkNvbmRpdGlvbk1h
c2s7CisgICAgZm9yIChhdXRvJiBjb250ZW50RXh0ZW5zaW9uIDogbV9jb250ZW50RXh0ZW5zaW9u
cy52YWx1ZXMoKSkKKyAgICAgICAgYWN0aW9uc1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoYWN0aW9u
c0Zyb21Db250ZW50UnVsZUxpc3QoY29udGVudEV4dGVuc2lvbi5nZXQoKSwgdXJsQ1N0cmluZywg
cmVzb3VyY2VMb2FkSW5mbywgZmxhZ3MpKTsKICNpZiBDT05URU5UX0VYVEVOU0lPTlNfUEVSRk9S
TUFOQ0VfUkVQT1JUSU5HCiAgICAgTW9ub3RvbmljVGltZSBhZGRlZFRpbWVFbmQgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKICAgICBkYXRhTG9nRigiVGltZSBhZGRlZDogJWYgbWljcm9zZWNvbmRz
ICVzIFxuIiwgKGFkZGVkVGltZUVuZCAtIGFkZGVkVGltZVN0YXJ0KS5taWNyb3NlY29uZHMoKSwg
cmVzb3VyY2VMb2FkSW5mby5yZXNvdXJjZVVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAg
LTE4MCw2ICsxOTUsNyBAQCBDb250ZW50UnVsZUxpc3RSZXN1bHRzIENvbnRlbnRFeHRlbnNpb25z
QmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JMb2FkKAogewogICAgIERvY3VtZW50
KiBjdXJyZW50RG9jdW1lbnQgPSBudWxscHRyOwogICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7Cisg
ICAgVVJMIGZyYW1lVVJMOwogICAgIGJvb2wgbWFpbkZyYW1lQ29udGV4dCA9IGZhbHNlOwogCiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyLmZyYW1lKCkpIHsK
QEAgLTE5Myw4ICsyMDksMTIgQEAgQ29udGVudFJ1bGVMaXN0UmVzdWx0cyBDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yTG9hZCgKICAgICAgICAgZWxz
ZSBpZiAoYXV0byogbWFpbkRvY3VtZW50ID0gZnJhbWUtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkp
CiAgICAgICAgICAgICBtYWluRG9jdW1lbnRVUkwgPSBtYWluRG9jdW1lbnQtPnVybCgpOwogICAg
IH0KKyAgICBpZiAoY3VycmVudERvY3VtZW50KQorICAgICAgICBmcmFtZVVSTCA9IGN1cnJlbnRE
b2N1bWVudC0+dXJsKCk7CisgICAgZWxzZQorICAgICAgICBmcmFtZVVSTCA9IHVybDsKIAotICAg
IFJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbyA9IHsgdXJsLCBtYWluRG9jdW1lbnRV
UkwsIHJlc291cmNlVHlwZSwgbWFpbkZyYW1lQ29udGV4dCB9OworICAgIFJlc291cmNlTG9hZElu
Zm8gcmVzb3VyY2VMb2FkSW5mbyB7IHVybCwgbWFpbkRvY3VtZW50VVJMLCBmcmFtZVVSTCwgcmVz
b3VyY2VUeXBlLCBtYWluRnJhbWVDb250ZXh0IH07CiAgICAgYXV0byBhY3Rpb25zID0gYWN0aW9u
c0ZvclJlc291cmNlTG9hZChyZXNvdXJjZUxvYWRJbmZvKTsKIAogICAgIENvbnRlbnRSdWxlTGlz
dFJlc3VsdHMgcmVzdWx0czsKQEAgLTI3MSw5ICsyOTEsOSBAQCBDb250ZW50UnVsZUxpc3RSZXN1
bHRzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JM
b2FkKAogICAgIHJldHVybiByZXN1bHRzOwogfQogCi1Db250ZW50UnVsZUxpc3RSZXN1bHRzIENv
bnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxlTGlzdHNGb3JQaW5nTG9h
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCitDb250ZW50UnVs
ZUxpc3RSZXN1bHRzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRSdWxl
TGlzdHNGb3JQaW5nTG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRV
UkwsIGNvbnN0IFVSTCYgZnJhbWVVUkwpCiB7Ci0gICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJj
ZUxvYWRJbmZvID0geyB1cmwsIG1haW5Eb2N1bWVudFVSTCwgUmVzb3VyY2VUeXBlOjpQaW5nIH07
CisgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvIHsgdXJsLCBtYWluRG9jdW1l
bnRVUkwsIGZyYW1lVVJMLCBSZXNvdXJjZVR5cGU6OlBpbmcgfTsKICAgICBhdXRvIGFjdGlvbnMg
PSBhY3Rpb25zRm9yUmVzb3VyY2VMb2FkKHJlc291cmNlTG9hZEluZm8pOwogCiAgICAgQ29udGVu
dFJ1bGVMaXN0UmVzdWx0cyByZXN1bHRzOwpAQCAtMzQwLDggKzM2MCw2IEBAIHZvaWQgYXBwbHlS
ZXN1bHRzVG9SZXF1ZXN0KENvbnRlbnRSdWxlTGlzdFJlc3VsdHMmJiByZXN1bHRzLCBQYWdlKiBw
YWdlLCBSZXNvdXJjCiAgICAgfQogfQogICAgIAotfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVu
c2lvbnMKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnMKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5oCmluZGV4IGY4NTlhZWM4YmM0ZDY3OTVjMjc2YTNiZjMxY2Ix
MGNjMjI2ZDhlZGIuLjdhNTg2YzYzNDhkMzU4NGJmN2UyYjI4MDRjMjQ2NDM0N2FjYmM5MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHlsZVNoZWV0Q29udGVudHMqIGdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCiAgICAgQ29udGVudFJ1bGVMaXN0
UmVzdWx0cyBwcm9jZXNzQ29udGVudFJ1bGVMaXN0c0ZvckxvYWQoUGFnZSYsIGNvbnN0IFVSTCYs
IE9wdGlvblNldDxSZXNvdXJjZVR5cGU+LCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3Vt
ZW50TG9hZGVyLCBjb25zdCBVUkwmIHJlZGlyZWN0RnJvbSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Q29udGVudFJ1bGVMaXN0UmVzdWx0cyBwcm9jZXNzQ29udGVudFJ1bGVMaXN0c0ZvclBpbmdMb2Fk
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBDb250ZW50UnVsZUxpc3RSZXN1bHRzIHByb2Nlc3NDb250ZW50UnVsZUxpc3RzRm9yUGlu
Z0xvYWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIGNvbnN0IFVSTCYg
ZnJhbWVVUkwpOwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGlzcGxheU5vbmVDU1NSdWxl
KCk7CiAKQEAgLTgwLDEyICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgc2hvdWxkQmVNYWRlU2VjdXJlKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgorICAg
IEFjdGlvbnNGcm9tQ29udGVudFJ1bGVMaXN0IGFjdGlvbnNGcm9tQ29udGVudFJ1bGVMaXN0KGNv
bnN0IENvbnRlbnRFeHRlbnNpb24mLCBjb25zdCBDU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFJl
c291cmNlTG9hZEluZm8mLCBSZXNvdXJjZUZsYWdzKSBjb25zdDsKKwogICAgIEhhc2hNYXA8U3Ry
aW5nLCBSZWY8Q29udGVudEV4dGVuc2lvbj4+IG1fY29udGVudEV4dGVuc2lvbnM7CiB9OwogCiBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5UmVzdWx0c1RvUmVxdWVzdChDb250ZW50UnVsZUxpc3RS
ZXN1bHRzJiYsIFBhZ2UqLCBSZXNvdXJjZVJlcXVlc3QmKTsKIAotfSAvLyBuYW1lc3BhY2UgQ29u
dGVudEV4dGVuc2lvbnMKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZB
Qnl0ZWNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
LmgKaW5kZXggM2MwNjQ0OGZiY2E5ZjVlOWYyNGJmOTc4YTJhOWQ1MTM2N2ViMmEyNS4uMmM4MmQ1
NGM4YTVhNjAyMzY3OTQzOTczNmVjNDQyOWIyZTEyMzVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCkBAIC02MCwxMyArNjAsMTEgQEAgZW51
bSBjbGFzcyBERkFCeXRlY29kZUluc3RydWN0aW9uIDogdWludDhfdCB7CiAgICAgLy8gQXBwZW5k
QWN0aW9uIGhhcyBvbmUgYXJndW1lbnQ6CiAgICAgLy8gVGhlIGFjdGlvbiB0byBhcHBlbmQgKDEt
NCBieXRlcykuCiAgICAgQXBwZW5kQWN0aW9uID0gMHg2LAotICAgIEFwcGVuZEFjdGlvbldpdGhJ
ZkNvbmRpdGlvbiA9IDB4NywKICAgICAKICAgICAvLyBUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24g
aGFzIHR3byBhcmd1bWVudHM6CiAgICAgLy8gVGhlIGZsYWdzIHRvIGNoZWNrIGJlZm9yZSBhcHBl
bmRpbmcgKDEtMyBieXRlcykuCiAgICAgLy8gVGhlIGFjdGlvbiB0byBhcHBlbmQgKDEtNCBieXRl
cykuCiAgICAgVGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uID0gMHg4LAotICAgIFRlc3RGbGFnc0Fu
ZEFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbiA9IDB4OSwKIAogICAgIC8vIFRlcm1pbmF0ZSBo
YXMgbm8gYXJndW1lbnRzLgogICAgIFRlcm1pbmF0ZSA9IDB4QSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKaW5k
ZXggZjY2M2VmZjVjMGUyMGJlNjlkNDIwODgyZWYxYjcxMTg4NDE5NTY2NS4uNmEyMTI3ZTU4NDg5
ZWE5ZDRhM2I3MzcyYzA0YzcwYTRjMTc4OTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAKQEAgLTc0LDEz
ICs3NCw2IEBAIHZvaWQgc2V0Qml0cyhWZWN0b3I8REZBQnl0ZWNvZGU+JiBieXRlY29kZSwgdWlu
dDMyX3QgaW5kZXgsIEludFR5cGUgdmFsdWUpCiAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8SW50VHlw
ZSo+KCZieXRlY29kZVtpbmRleF0pID0gdmFsdWU7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBhcHBl
bmRBY3Rpb25CeXRlY29kZVNpemUodWludDY0X3QgYWN0aW9uKQotewotICAgIGlmIChhY3Rpb24g
JiBBY3Rpb25GbGFnTWFzaykKLSAgICAgICAgcmV0dXJuIHNpemVvZihERkFCeXRlY29kZUluc3Ry
dWN0aW9uKSArIHNpemVvZih1aW50MTZfdCkgKyBzaXplb2YodWludDMyX3QpOwotICAgIHJldHVy
biBzaXplb2YoREZBQnl0ZWNvZGVJbnN0cnVjdGlvbikgKyBzaXplb2YodWludDMyX3QpOwotfQot
CiBzdGF0aWMgREZBQnl0ZWNvZGVGbGFnc1NpemUgYnl0ZWNvZGVGbGFnc1NpemUoUmVzb3VyY2VG
bGFncyBmbGFncykKIHsKICAgICBpZiAoZmxhZ3MgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50
OF90Pjo6bWF4KCkpCkBAIC0xMDIsNiArOTUsNDAgQEAgc3RhdGljIERGQUJ5dGVjb2RlQWN0aW9u
U2l6ZSBieXRlY29kZUFjdGlvblNpemUodWludDMyX3QgYWN0aW9uV2l0aG91dEZsYWdzKQogICAg
IHJldHVybiBERkFCeXRlY29kZUFjdGlvblNpemU6OlVJbnQzMjsKIH0KIAorc3RhdGljIHNpemVf
dCB0b1NpemVUKERGQUJ5dGVjb2RlRmxhZ3NTaXplIHNpemUpCit7CisgICAgc3dpdGNoIChzaXpl
KSB7CisgICAgY2FzZSBERkFCeXRlY29kZUZsYWdzU2l6ZTo6VUludDg6CisgICAgICAgIHJldHVy
biBzaXplb2YodWludDhfdCk7CisgICAgY2FzZSBERkFCeXRlY29kZUZsYWdzU2l6ZTo6VUludDE2
OgorICAgICAgICByZXR1cm4gc2l6ZW9mKHVpbnQxNl90KTsKKyAgICBjYXNlIERGQUJ5dGVjb2Rl
RmxhZ3NTaXplOjpVSW50MjQ6CisgICAgICAgIHJldHVybiBVSW50MjRTaXplOworICAgIH0KK30K
Kworc3RhdGljIHNpemVfdCB0b1NpemVUKERGQUJ5dGVjb2RlQWN0aW9uU2l6ZSBzaXplKQorewor
ICAgIHN3aXRjaCAoc2l6ZSkgeworICAgIGNhc2UgREZBQnl0ZWNvZGVBY3Rpb25TaXplOjpVSW50
ODoKKyAgICAgICAgcmV0dXJuIHNpemVvZih1aW50OF90KTsKKyAgICBjYXNlIERGQUJ5dGVjb2Rl
QWN0aW9uU2l6ZTo6VUludDE2OgorICAgICAgICByZXR1cm4gc2l6ZW9mKHVpbnQxNl90KTsKKyAg
ICBjYXNlIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZTo6VUludDI0OgorICAgICAgICByZXR1cm4gVUlu
dDI0U2l6ZTsKKyAgICBjYXNlIERGQUJ5dGVjb2RlQWN0aW9uU2l6ZTo6VUludDMyOgorICAgICAg
ICByZXR1cm4gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICB9Cit9CisKK3N0YXRpYyBzaXplX3QgYXBw
ZW5kQWN0aW9uQnl0ZWNvZGVTaXplKHVpbnQ2NF90IGFjdGlvbikKK3sKKyAgICBhdXRvIGZsYWdz
ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VGbGFncz4oKGFjdGlvbiAmIEFjdGlvbkZsYWdNYXNrKSA+
PiAzMik7CisgICAgcmV0dXJuIHNpemVvZihERkFCeXRlY29kZUluc3RydWN0aW9uKQorICAgICAg
ICArIChmbGFncyA/IHRvU2l6ZVQoYnl0ZWNvZGVGbGFnc1NpemUoZmxhZ3MpKSA6IDApCisgICAg
ICAgICsgdG9TaXplVChieXRlY29kZUFjdGlvblNpemUoYWN0aW9uKSk7Cit9CisKIHN0YXRpYyB2
b2lkIGFwcGVuZFZhcmlhYmxlTGVuZ3RoVW5zaWduZWRJbnRlZ2VyKFZlY3RvcjxERkFCeXRlY29k
ZT4mIGJ5dGVjb2RlLCB1aW50MzJfdCBpbnRlZ2VyKQogewogICAgIGlmIChpbnRlZ2VyIDw9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgpKQpAQCAtMTIxLDcgKzE0OCw3IEBAIHZv
aWQgREZBQnl0ZWNvZGVDb21waWxlcjo6ZW1pdEFwcGVuZEFjdGlvbih1aW50NjRfdCBhY3Rpb24p
CiAgICAgLy8gSGlnaCBiaXRzIGFyZSB1c2VkIHRvIHN0b3JlIGZsYWdzLiBTZWUgY29tcGlsZVJ1
bGVMaXN0LgogICAgIGlmIChSZXNvdXJjZUZsYWdzIGZsYWdzID0gKGFjdGlvbiAmIEFjdGlvbkZs
YWdNYXNrKSA+PiAzMikgewogICAgICAgICBhdXRvIGZsYWdzU2l6ZSA9IGJ5dGVjb2RlRmxhZ3NT
aXplKGZsYWdzKTsKLSAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IChhY3Rpb24gJiBJZkNvbmRp
dGlvbkZsYWcpID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0
aW9uV2l0aElmQ29uZGl0aW9uIDogREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5k
QXBwZW5kQWN0aW9uOworICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gREZBQnl0ZWNvZGVJbnN0
cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uOwogICAgICAgICBBU1NFUlQoIShzdGF0
aWNfY2FzdDx1aW50OF90PihpbnN0cnVjdGlvbikgJiBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFn
c1NpemUpICYgc3RhdGljX2Nhc3Q8dWludDhfdD4oYWN0aW9uU2l6ZSkpKTsKICAgICAgICAgYXBw
ZW5kPHVpbnQ4X3Q+KG1fYnl0ZWNvZGUsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGluc3RydWN0aW9u
KSB8IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzU2l6ZSkgfCBzdGF0aWNfY2FzdDx1aW50OF90
PihhY3Rpb25TaXplKSk7CiAgICAgICAgIGFwcGVuZFZhcmlhYmxlTGVuZ3RoVW5zaWduZWRJbnRl
Z2VyKG1fYnl0ZWNvZGUsIGZsYWdzKTsKQEAgLTEyOSw3ICsxNTYsNyBAQCB2b2lkIERGQUJ5dGVj
b2RlQ29tcGlsZXI6OmVtaXRBcHBlbmRBY3Rpb24odWludDY0X3QgYWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpbnN0cnVjdGlvbiA9IChhY3Rpb24gJiBJZkNvbmRp
dGlvbkZsYWcpID8gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29u
ZGl0aW9uIDogREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uOworICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb247CiAgICAg
QVNTRVJUKCEoc3RhdGljX2Nhc3Q8dWludDhfdD4oaW5zdHJ1Y3Rpb24pICYgc3RhdGljX2Nhc3Q8
dWludDhfdD4oYWN0aW9uU2l6ZSkpKTsKICAgICBhcHBlbmQ8dWludDhfdD4obV9ieXRlY29kZSwg
c3RhdGljX2Nhc3Q8dWludDhfdD4oaW5zdHJ1Y3Rpb24pIHwgc3RhdGljX2Nhc3Q8dWludDhfdD4o
YWN0aW9uU2l6ZSkpOwogICAgIGFwcGVuZFZhcmlhYmxlTGVuZ3RoVW5zaWduZWRJbnRlZ2VyKG1f
Ynl0ZWNvZGUsIGFjdGlvbldpdGhvdXRGbGFncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDMzZTlmNzRmNzdhZTE3MjQxMGQ3ZTg3ODlhMGJkZDM4NGZlZThmYzUuLjEwNjI5N2MxZDdjNDc2
NTRlNjZhZjc5MTIwODRmNDAxOTQwYzJlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCkBAIC04
Myw3ICs4Myw2IEBAIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNGbGFncyhERkFCeXRlY29kZUlu
c3RydWN0aW9uIGluc3RydWN0aW9uKQogewogICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24pIHsKICAg
ICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbjoK
LSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlv
bldpdGhJZkNvbmRpdGlvbjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBERkFCeXRl
Y29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlQ2FzZVNlbnNpdGl2ZToKICAgICBjYXNlIERGQUJ5
dGVjb2RlSW5zdHJ1Y3Rpb246OkNoZWNrVmFsdWVDYXNlSW5zZW5zaXRpdmU6CkBAIC05Myw3ICs5
Miw2IEBAIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNGbGFncyhERkFCeXRlY29kZUluc3RydWN0
aW9uIGluc3RydWN0aW9uKQogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tW
YWx1ZVJhbmdlQ2FzZUluc2Vuc2l0aXZlOgogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlv
bjo6SnVtcDoKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbjoK
LSAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRp
dGlvbjoKICAgICBjYXNlIERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlcm1pbmF0ZToKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtMTA0LDkgKzEwMiw3IEBAIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBoYXNBY3Rpb24oREZBQnl0ZWNvZGVJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbikKIHsKICAgICBz
d2l0Y2ggKGluc3RydWN0aW9uKSB7CiAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpU
ZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb246Ci0gICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9u
OjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246CiAgICAgY2FzZSBERkFC
eXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb246Ci0gICAgY2FzZSBERkFCeXRlY29kZUlu
c3RydWN0aW9uOjpBcHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb246CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6Q2hlY2tWYWx1ZUNhc2VTZW5z
aXRpdmU6CiAgICAgY2FzZSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpDaGVja1ZhbHVlQ2FzZUlu
c2Vuc2l0aXZlOgpAQCAtMTc5LDI1ICsxNzUsMTQgQEAgc3RhdGljIGludDMyX3QgZ2V0SnVtcERp
c3RhbmNlKFNwYW48Y29uc3QgdWludDhfdD4gYnl0ZWNvZGUsIHVpbnQzMl90IGluZGV4LCBERkEK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgYm9vbCBtYXRj
aGVzQ29uZGl0aW9uKHVpbnQ2NF90IGFjdGlvbkFuZEZsYWdzLCBjb25zdCBERkFCeXRlY29kZUlu
dGVycHJldGVyOjpBY3Rpb25zJiBjb25kaXRpb25BY3Rpb25zKQordm9pZCBERkFCeXRlY29kZUlu
dGVycHJldGVyOjppbnRlcnByZXRBcHBlbmRBY3Rpb24odWludDMyX3QmIHByb2dyYW1Db3VudGVy
LCBBY3Rpb25zJiBhY3Rpb25zKQogewotICAgIGJvb2wgaWZDb25kaXRpb24gPSBhY3Rpb25BbmRG
bGFncyAmIElmQ29uZGl0aW9uRmxhZzsKLSAgICBib29sIGNvbmRpdGlvbiA9IGNvbmRpdGlvbkFj
dGlvbnMuY29udGFpbnMoYWN0aW9uQW5kRmxhZ3MpOwotICAgIHJldHVybiBpZkNvbmRpdGlvbiA9
PSBjb25kaXRpb247Ci19Ci0KLXZvaWQgREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0
QXBwZW5kQWN0aW9uKHVpbnQzMl90JiBwcm9ncmFtQ291bnRlciwgQWN0aW9ucyYgYWN0aW9ucywg
Ym9vbCBpZkNvbmRpdGlvbikKLXsKLSAgICBBU1NFUlQoZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29k
ZSwgcHJvZ3JhbUNvdW50ZXIpID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlv
bgotICAgICAgICB8fCBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcikg
PT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uKTsK
KyAgICBBU1NFUlQoZ2V0SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpID09
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbik7CiAgICAgYXV0byBpbnN0cnVj
dGlvbkxvY2F0aW9uID0gcHJvZ3JhbUNvdW50ZXIrKzsKLSAgICB1aW50NjRfdCBhY3Rpb25XaXRo
b3V0RmxhZ3MgPSBjb25zdW1lQWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyLCBpbnN0
cnVjdGlvbkxvY2F0aW9uKTsKLSAgICB1aW50NjRfdCBhY3Rpb24gPSAoaWZDb25kaXRpb24gPyBJ
ZkNvbmRpdGlvbkZsYWcgOiAwKSB8IGFjdGlvbldpdGhvdXRGbGFnczsKLSAgICBpZiAoIW1fdG9w
VVJMQWN0aW9ucyB8fCBtYXRjaGVzQ29uZGl0aW9uKGFjdGlvbiwgKm1fdG9wVVJMQWN0aW9ucykp
Ci0gICAgICAgIGFjdGlvbnMuYWRkKGFjdGlvbik7CisgICAgYWN0aW9ucy5hZGQoY29uc3VtZUFj
dGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlciwgaW5zdHJ1Y3Rpb25Mb2NhdGlvbikpOwog
fQogCi12b2lkIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXI6OmludGVycHJldFRlc3RGbGFnc0FuZEFw
cGVuZEFjdGlvbih1aW50MzJfdCYgcHJvZ3JhbUNvdW50ZXIsIFJlc291cmNlRmxhZ3MgZmxhZ3Ms
IEFjdGlvbnMmIGFjdGlvbnMsIGJvb2wgaWZDb25kaXRpb24pCit2b2lkIERGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXI6OmludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbih1aW50MzJfdCYgcHJv
Z3JhbUNvdW50ZXIsIFJlc291cmNlRmxhZ3MgZmxhZ3MsIEFjdGlvbnMmIGFjdGlvbnMpCiB7CiAg
ICAgYXV0byBpbnN0cnVjdGlvbkxvY2F0aW9uID0gcHJvZ3JhbUNvdW50ZXI7CiAgICAgYXV0byBm
bGFnc1RvQ2hlY2sgPSBjb25zdW1lUmVzb3VyY2VGbGFnc0FuZEluc3RydWN0aW9uKG1fYnl0ZWNv
ZGUsIHByb2dyYW1Db3VudGVyKTsKQEAgLTIxMiw5ICsxOTcsOCBAQCB2b2lkIERGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXI6OmludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbih1aW50MzJfdCYg
cHJvZ3JhbQogICAgIAogICAgIGF1dG8gYWN0aW9uV2l0aG91dEZsYWdzID0gY29uc3VtZUFjdGlv
bihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlciwgaW5zdHJ1Y3Rpb25Mb2NhdGlvbik7CiAgICAg
aWYgKGxvYWRUeXBlTWF0Y2hlcyAmJiBsb2FkQ29udGV4dE1hdGNoZXMgJiYgcmVzb3VyY2VUeXBl
TWF0Y2hlcykgewotICAgICAgICB1aW50NjRfdCBhY3Rpb25BbmRGbGFncyA9IChpZkNvbmRpdGlv
biA/IElmQ29uZGl0aW9uRmxhZyA6IDApIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihmbGFnc1Rv
Q2hlY2spIDw8IDMyKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhY3Rpb25XaXRob3V0RmxhZ3Mp
OwotICAgICAgICBpZiAoIW1fdG9wVVJMQWN0aW9ucyB8fCBtYXRjaGVzQ29uZGl0aW9uKGFjdGlv
bkFuZEZsYWdzLCAqbV90b3BVUkxBY3Rpb25zKSkKLSAgICAgICAgICAgIGFjdGlvbnMuYWRkKGFj
dGlvbkFuZEZsYWdzKTsKKyAgICAgICAgdWludDY0X3QgYWN0aW9uQW5kRmxhZ3MgPSAoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGZsYWdzVG9DaGVjaykgPDwgMzIpIHwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGFjdGlvbldpdGhvdXRGbGFncyk7CisgICAgICAgIGFjdGlvbnMuYWRkKGFjdGlvbkFuZEZs
YWdzKTsKICAgICB9CiB9CiAKQEAgLTI0OCwxMSArMjMyLDggQEAgYXV0byBERkFCeXRlY29kZUlu
dGVycHJldGVyOjphY3Rpb25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkgLT4gQWN0aW9ucwogICAgIHdo
aWxlIChwcm9ncmFtQ291bnRlciA8IGRmYUJ5dGVjb2RlTGVuZ3RoKSB7CiAgICAgICAgIERGQUJ5
dGVjb2RlSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb24gPSBnZXRJbnN0cnVjdGlvbihtX2J5dGVjb2Rl
LCBwcm9ncmFtQ291bnRlcik7CiAgICAgICAgIGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29k
ZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24pCi0gICAgICAgICAgICBpbnRlcnByZXRBcHBlbmRB
Y3Rpb24ocHJvZ3JhbUNvdW50ZXIsIGFjdGlvbnMsIGZhbHNlKTsKLSAgICAgICAgZWxzZSBpZiAo
aW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0aElm
Q29uZGl0aW9uKQotICAgICAgICAgICAgaW50ZXJwcmV0QXBwZW5kQWN0aW9uKHByb2dyYW1Db3Vu
dGVyLCBhY3Rpb25zLCB0cnVlKTsKLSAgICAgICAgZWxzZSBpZiAoaW5zdHJ1Y3Rpb24gPT0gREZB
Qnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uCi0gICAgICAgICAg
ICB8fCBpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRB
cHBlbmRBY3Rpb25XaXRoSWZDb25kaXRpb24pIHsKKyAgICAgICAgICAgIGludGVycHJldEFwcGVu
ZEFjdGlvbihwcm9ncmFtQ291bnRlciwgYWN0aW9ucyk7CisgICAgICAgIGVsc2UgaWYgKGluc3Ry
dWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlv
bikgewogICAgICAgICAgICAgYXV0byBwcm9ncmFtQ291bnRlckF0SW5zdHJ1Y3Rpb24gPSBwcm9n
cmFtQ291bnRlcjsKICAgICAgICAgICAgIGNvbnN1bWVSZXNvdXJjZUZsYWdzQW5kSW5zdHJ1Y3Rp
b24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOwogICAgICAgICAgICAgY29uc3VtZUFjdGlv
bihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlciwgcHJvZ3JhbUNvdW50ZXJBdEluc3RydWN0aW9u
KTsKQEAgLTI2MSwxNSArMjQyLDYgQEAgYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjphY3Rp
b25zTWF0Y2hpbmdFdmVyeXRoaW5nKCkgLT4gQWN0aW9ucwogICAgIH0KICAgICByZXR1cm4gYWN0
aW9uczsKIH0KLSAgICAKLWF1dG8gREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0V2l0
aENvbmRpdGlvbnMoY29uc3QgQ1N0cmluZyYgdXJsQ1N0cmluZywgUmVzb3VyY2VGbGFncyBmbGFn
cywgY29uc3QgQWN0aW9ucyYgdG9wVVJMQWN0aW9ucykgLT4gQWN0aW9ucwotewotICAgIEFTU0VS
VCghbV90b3BVUkxBY3Rpb25zKTsKLSAgICBtX3RvcFVSTEFjdGlvbnMgPSAmdG9wVVJMQWN0aW9u
czsKLSAgICBhdXRvIGFjdGlvbnMgPSBpbnRlcnByZXQodXJsQ1N0cmluZywgZmxhZ3MpOwotICAg
IG1fdG9wVVJMQWN0aW9ucyA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFjdGlvbnM7Ci19CiAKIGF1
dG8gREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJpbmcmIHVybENT
dHJpbmcsIFJlc291cmNlRmxhZ3MgZmxhZ3MpIC0+IEFjdGlvbnMKIHsKQEAgLTI5MCwxMyArMjYy
LDExIEBAIGF1dG8gREZBQnl0ZWNvZGVJbnRlcnByZXRlcjo6aW50ZXJwcmV0KGNvbnN0IENTdHJp
bmcmIHVybENTdHJpbmcsIFJlc291cmNlRmxhZ3MKICAgICAgICAgaWYgKCFkZmFTdGFydCkgewog
ICAgICAgICAgICAgd2hpbGUgKHByb2dyYW1Db3VudGVyIDwgZGZhQnl0ZWNvZGVMZW5ndGgpIHsK
ICAgICAgICAgICAgICAgICBERkFCeXRlY29kZUluc3RydWN0aW9uIGluc3RydWN0aW9uID0gZ2V0
SW5zdHJ1Y3Rpb24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpOwotICAgICAgICAgICAgICAg
IGlmIChpbnN0cnVjdGlvbiA9PSBERkFCeXRlY29kZUluc3RydWN0aW9uOjpBcHBlbmRBY3Rpb24g
fHwgaW5zdHJ1Y3Rpb24gPT0gREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uV2l0
aElmQ29uZGl0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKGluc3RydWN0aW9uID09IERGQUJ5
dGVjb2RlSW5zdHJ1Y3Rpb246OkFwcGVuZEFjdGlvbikgewogICAgICAgICAgICAgICAgICAgICBh
dXRvIGluc3RydWN0aW9uTG9jYXRpb24gPSBwcm9ncmFtQ291bnRlcisrOwogICAgICAgICAgICAg
ICAgICAgICBjb25zdW1lQWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyLCBpbnN0cnVj
dGlvbkxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluc3RydWN0aW9uID09
IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgaW50ZXJwcmV0VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uKHByb2dyYW1D
b3VudGVyLCBmbGFncywgYWN0aW9ucywgZmFsc2UpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGluc3RydWN0aW9uID09IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVu
ZEFjdGlvbldpdGhJZkNvbmRpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJwcmV0VGVz
dEZsYWdzQW5kQXBwZW5kQWN0aW9uKHByb2dyYW1Db3VudGVyLCBmbGFncywgYWN0aW9ucywgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgICAgIGludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlv
bihwcm9ncmFtQ291bnRlciwgZmxhZ3MsIGFjdGlvbnMpOwogICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMDQsOSArMjc0
LDcgQEAgYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0cmlu
ZyYgdXJsQ1N0cmluZywgUmVzb3VyY2VGbGFncwogICAgICAgICAgICAgICAgIHJldHVybiBhY3Rp
b25zOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShn
ZXRJbnN0cnVjdGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcikgIT0gREZBQnl0ZWNvZGVJ
bnN0cnVjdGlvbjo6QXBwZW5kQWN0aW9uCi0gICAgICAgICAgICAgICAgJiYgZ2V0SW5zdHJ1Y3Rp
b24obV9ieXRlY29kZSwgcHJvZ3JhbUNvdW50ZXIpICE9IERGQUJ5dGVjb2RlSW5zdHJ1Y3Rpb246
OkFwcGVuZEFjdGlvbldpdGhJZkNvbmRpdGlvbgotICAgICAgICAgICAgICAgICYmIGdldEluc3Ry
dWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKSAhPSBERkFCeXRlY29kZUluc3RydWN0
aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24KLSAgICAgICAgICAgICAgICAmJiBnZXRJbnN0
cnVjdGlvbihtX2J5dGVjb2RlLCBwcm9ncmFtQ291bnRlcikgIT0gREZBQnl0ZWNvZGVJbnN0cnVj
dGlvbjo6VGVzdEZsYWdzQW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uLAorICAgICAgICAg
ICAgICAgICYmIGdldEluc3RydWN0aW9uKG1fYnl0ZWNvZGUsIHByb2dyYW1Db3VudGVyKSAhPSBE
RkFCeXRlY29kZUluc3RydWN0aW9uOjpUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24sCiAgICAgICAg
ICAgICAgICAgIlRyaWdnZXJzIHRoYXQgbWF0Y2ggZXZlcnl0aGluZyBzaG91bGQgb25seSBiZSBp
biB0aGUgZmlyc3QgREZBLiIpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDE4LDE5ICszODYs
MTEgQEAgYXV0byBERkFCeXRlY29kZUludGVycHJldGVyOjppbnRlcnByZXQoY29uc3QgQ1N0cmlu
ZyYgdXJsQ1N0cmluZywgUmVzb3VyY2VGbGFncwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBwZW5k
QWN0aW9uOgotICAgICAgICAgICAgICAgIGludGVycHJldEFwcGVuZEFjdGlvbihwcm9ncmFtQ291
bnRlciwgYWN0aW9ucywgZmFsc2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6QXBw
ZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uOgotICAgICAgICAgICAgICAgIGludGVycHJldEFwcGVu
ZEFjdGlvbihwcm9ncmFtQ291bnRlciwgYWN0aW9ucywgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
aW50ZXJwcmV0QXBwZW5kQWN0aW9uKHByb2dyYW1Db3VudGVyLCBhY3Rpb25zKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIERG
QUJ5dGVjb2RlSW5zdHJ1Y3Rpb246OlRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbjoKLSAgICAgICAg
ICAgICAgICBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24ocHJvZ3JhbUNvdW50ZXIs
IGZsYWdzLCBhY3Rpb25zLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNhc2UgREZBQnl0ZWNvZGVJbnN0cnVjdGlvbjo6VGVzdEZsYWdz
QW5kQXBwZW5kQWN0aW9uV2l0aElmQ29uZGl0aW9uOgotICAgICAgICAgICAgICAgIGludGVycHJl
dFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlvbihwcm9ncmFtQ291bnRlciwgZmxhZ3MsIGFjdGlvbnMs
IHRydWUpOworICAgICAgICAgICAgICAgIGludGVycHJldFRlc3RGbGFnc0FuZEFwcGVuZEFjdGlv
bihwcm9ncmFtQ291bnRlciwgZmxhZ3MsIGFjdGlvbnMpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJl
dGVyLmgKaW5kZXggNmIyYTFjZjJkMWJjYTQ0YjExZmM3NjYzOTRmZTRjNzA2NGExYzA3My4uMDBh
OTgzYTM2ZDJlNTI5NTdkOGRlM2FlNWNkZjIxNDg1MjRkYjA2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIu
aApAQCAtNDMsMTggKzQzLDE2IEBAIHB1YmxpYzoKICAgICB1c2luZyBBY3Rpb25zID0gSGFzaFNl
dDx1aW50NjRfdCwgRGVmYXVsdEhhc2g8dWludDY0X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj47CiAKICAgICBXRUJDT1JFX0VYUE9SVCBBY3Rpb25zIGlu
dGVycHJldChjb25zdCBDU3RyaW5nJiwgUmVzb3VyY2VGbGFncyk7Ci0gICAgQWN0aW9ucyBpbnRl
cnByZXRXaXRoQ29uZGl0aW9ucyhjb25zdCBDU3RyaW5nJiwgUmVzb3VyY2VGbGFncywgY29uc3Qg
QWN0aW9ucyYgY29uZGl0aW9uQWN0aW9ucyk7CiAgICAgQWN0aW9ucyBhY3Rpb25zTWF0Y2hpbmdF
dmVyeXRoaW5nKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBpbnRlcnByZXRBcHBlbmRBY3Rpb24o
dW5zaWduZWQmIHByb2dyYW1Db3VudGVyLCBBY3Rpb25zJiwgYm9vbCBpZkNvbmRpdGlvbik7Ci0g
ICAgdm9pZCBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24odW5zaWduZWQmIHByb2dy
YW1Db3VudGVyLCBSZXNvdXJjZUZsYWdzLCBBY3Rpb25zJiwgYm9vbCBpZkNvbmRpdGlvbik7Cisg
ICAgdm9pZCBpbnRlcnByZXRBcHBlbmRBY3Rpb24odW5zaWduZWQmIHByb2dyYW1Db3VudGVyLCBB
Y3Rpb25zJik7CisgICAgdm9pZCBpbnRlcnByZXRUZXN0RmxhZ3NBbmRBcHBlbmRBY3Rpb24odW5z
aWduZWQmIHByb2dyYW1Db3VudGVyLCBSZXNvdXJjZUZsYWdzLCBBY3Rpb25zJik7CiAKICAgICB0
ZW1wbGF0ZTxib29sIGNhc2VTZW5zaXRpdmU+CiAgICAgdm9pZCBpbnRlcnBldEp1bXBUYWJsZShj
b25zdCBjaGFyKiB1cmwsIHVpbnQzMl90JiB1cmxJbmRleCwgdWludDMyX3QmIHByb2dyYW1Db3Vu
dGVyLCBib29sJiB1cmxJbmRleElzQWZ0ZXJFbmRPZlN0cmluZyk7CiAKICAgICBjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+IG1fYnl0ZWNvZGU7Ci0gICAgY29uc3QgREZBQnl0ZWNvZGVJbnRlcnBy
ZXRlcjo6QWN0aW9ucyogbV90b3BVUkxBY3Rpb25zIHsgbnVsbHB0ciB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRJbmZvLmNwcAppbmRleCAyZWRlZWJkNDkwMTMxMTNiOGQzNmIzMDFlNmM0
OTgyZTRkMWJjNjQyLi4xOTJjYTQwMjQ1YWU3ZWI3ZTg0MzMyZTM2NjBiZmY5NmRmY2U4ZmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCkBAIC0zNCw2ICsz
NCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCitzdGF0
aWNfYXNzZXJ0KCEoUmVzb3VyY2VUeXBlTWFzayAmIExvYWRUeXBlTWFzayksICJSZXNvdXJjZVR5
cGVNYXNrIGFuZCBMb2FkVHlwZU1hc2sgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNh
dXNlIHRoZXkgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSB1aW50MzJfdCIpOworc3RhdGljX2Fzc2Vy
dCghKFJlc291cmNlVHlwZU1hc2sgJiBMb2FkQ29udGV4dE1hc2spLCAiUmVzb3VyY2VUeXBlTWFz
ayBhbmQgTG9hZENvbnRleHRNYXNrIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVz
ZSB0aGV5IGFyZSBzdG9yZWQgaW4gdGhlIHNhbWUgdWludDMyX3QiKTsKK3N0YXRpY19hc3NlcnQo
IShSZXNvdXJjZVR5cGVNYXNrICYgQWN0aW9uQ29uZGl0aW9uTWFzayksICJSZXNvdXJjZVR5cGVN
YXNrIGFuZCBBY3Rpb25Db25kaXRpb25NYXNrIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUg
YmVjYXVzZSB0aGV5IGFyZSBzdG9yZWQgaW4gdGhlIHNhbWUgdWludDMyX3QiKTsKK3N0YXRpY19h
c3NlcnQoIShMb2FkQ29udGV4dE1hc2sgJiBMb2FkVHlwZU1hc2spLCAiTG9hZENvbnRleHRNYXNr
IGFuZCBMb2FkVHlwZU1hc2sgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNhdXNlIHRo
ZXkgYXJlIHN0b3JlZCBpbiB0aGUgc2FtZSB1aW50MzJfdCIpOworc3RhdGljX2Fzc2VydCghKExv
YWRDb250ZXh0TWFzayAmIEFjdGlvbkNvbmRpdGlvbk1hc2spLCAiTG9hZENvbnRleHRNYXNrIGFu
ZCBBY3Rpb25Db25kaXRpb25NYXNrIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVz
ZSB0aGV5IGFyZSBzdG9yZWQgaW4gdGhlIHNhbWUgdWludDMyX3QiKTsKK3N0YXRpY19hc3NlcnQo
IShMb2FkVHlwZU1hc2sgJiBBY3Rpb25Db25kaXRpb25NYXNrKSwgIkxvYWRUeXBlTWFzayBhbmQg
QWN0aW9uQ29uZGl0aW9uTWFzayBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlIGJlY2F1c2Ug
dGhleSBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIHVpbnQzMl90Iik7CitzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PHVpbnQ2NF90PihBbGxSZXNvdXJjZUZsYWdzKSA8PCAzMiA9PSBBY3Rpb25GbGFn
TWFzaywgIkFjdGlvbkZsYWdNYXNrIHNob3VsZCBjb3ZlciBhbGwgdGhlIGFjdGlvbiBmbGFncyIp
OworCiBPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPiB0b1Jlc291cmNlVHlwZShDYWNoZWRSZXNvdXJj
ZTo6VHlwZSB0eXBlLCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0ZXIgcmVxdWVzdGVyKQog
ewogICAgIHN3aXRjaCAodHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJ
bmZvLmgKaW5kZXggYTlhYzA3YmU5YmIyOWEzYmJiOWY3YWQ1YWZjNmJlMzc4OGE3MWQ3NS4uZTc1
NTZkMzMyOGUyNjc4OGZjNDRiZWNhMmZkYmEyOGE5NGM4MGUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkSW5mby5oCkBAIC0zMyw2ICszMywxNCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnMgewogCitlbnVtIGNsYXNzIEFjdGlvbkNvbmRpdGlv
biA6IHVpbnQzMl90IHsKKyAgICBOb25lID0gMHgwMDAwMCwKKyAgICBJZlRvcFVSTCA9IDB4MjAw
MDAsCisgICAgVW5sZXNzVG9wVVJMID0gMHg0MDAwMCwKKyAgICBJZkZyYW1lVVJMID0gMHg2MDAw
MCwKK307CitzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IEFjdGlvbkNvbmRpdGlvbk1hc2sgPSAw
eDYwMDAwOworCiBlbnVtIGNsYXNzIFJlc291cmNlVHlwZSA6IHVpbnQzMl90IHsKICAgICBEb2N1
bWVudCA9IDB4MDAwMSwKICAgICBJbWFnZSA9IDB4MDAwMiwKQEAgLTYyLDIxICs3MCwxNCBAQCBl
bnVtIGNsYXNzIExvYWRDb250ZXh0IDogdWludDMyX3QgewogfTsKIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgTG9hZENvbnRleHRNYXNrID0gMHhDMDAwOwogCi1zdGF0aWNfYXNzZXJ0KCEoUmVz
b3VyY2VUeXBlTWFzayAmIExvYWRUeXBlTWFzayksICJSZXNvdXJjZVR5cGVNYXNrIGFuZCBMb2Fk
VHlwZU1hc2sgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNhdXNlIHRoZXkgYXJlIHN0
b3JlZCBpbiB0aGUgc2FtZSB1aW50MzJfdCIpOwotc3RhdGljX2Fzc2VydCghKFJlc291cmNlVHlw
ZU1hc2sgJiBMb2FkQ29udGV4dE1hc2spLCAiUmVzb3VyY2VUeXBlTWFzayBhbmQgTG9hZENvbnRl
eHRNYXNrIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVzZSB0aGV5IGFyZSBzdG9y
ZWQgaW4gdGhlIHNhbWUgdWludDMyX3QiKTsKLXN0YXRpY19hc3NlcnQoIShMb2FkQ29udGV4dE1h
c2sgJiBMb2FkVHlwZU1hc2spLCAiTG9hZENvbnRleHRNYXNrIGFuZCBMb2FkVHlwZU1hc2sgc2hv
dWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBpbiB0aGUg
c2FtZSB1aW50MzJfdCIpOwotCiB1c2luZyBSZXNvdXJjZUZsYWdzID0gdWludDMyX3Q7CiAKK2Nv
bnN0ZXhwciBSZXNvdXJjZUZsYWdzIEFsbFJlc291cmNlRmxhZ3MgPSBMb2FkVHlwZU1hc2sgfCBS
ZXNvdXJjZVR5cGVNYXNrIHwgTG9hZENvbnRleHRNYXNrIHwgQWN0aW9uQ29uZGl0aW9uTWFzazsK
KwogLy8gVGhlIGZpcnN0IDMyIGJpdHMgb2YgYSB1aW50NjRfdCBhY3Rpb24gYXJlIHVzZWQgZm9y
IHRoZSBhY3Rpb24gbG9jYXRpb24uCi0vLyBUaGUgbmV4dCAyNCBiaXRzIGFyZSB1c2VkIGZvciB0
aGUgZmxhZ3MgKFJlc291cmNlVHlwZSBhbmQgTG9hZFR5cGUpLgotLy8gVGhlIG5leHQgYml0IGlz
IHVzZWQgdG8gbWFyayBhY3Rpb25zIHRoYXQgYXJlIGZyb20gYSBydWxlIHdpdGggYW4gaWYtZG9t
YWluLgotLy8gICAgIEFjdGlvbnMgZnJvbSBydWxlcyB3aXRoIHVubGVzcy1kb21haW4gY29uZGl0
aW9ucyBhcmUgZGlzdGluZ3Vpc2hlZCBmcm9tCi0vLyAgICAgcnVsZXMgd2l0aCBpZi1kb21haW4g
Y29uZGl0aW9ucyBieSBub3QgaGF2aW5nIHRoaXMgYml0IHNldC4KLS8vICAgICBBY3Rpb25zIGZy
b20gcnVsZXMgd2l0aCBubyBjb25kaXRpb25zIGFyZSBwdXQgaW4gdGhlIERGQSB3aXRob3V0IGNv
bmRpdGlvbnMuCisvLyBUaGUgbmV4dCAxOSBiaXRzIGFyZSB1c2VkIGZvciB0aGUgZmxhZ3MgKFJl
c291cmNlVHlwZSwgTG9hZFR5cGUsIExvYWRDb250ZXh0LCBBY3Rpb25Db25kaXRpb24pLgogLy8g
VGhlIHZhbHVlcyAtMSBhbmQgLTIgYXJlIHVzZWQgZm9yIHJlbW92ZWQgYW5kIGVtcHR5IHZhbHVl
cyBpbiBIYXNoVGFibGVzLgotc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBBY3Rpb25GbGFnTWFz
ayA9IDB4MDBGRkZGRkYwMDAwMDAwMDsKLXN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgSWZDb25k
aXRpb25GbGFnID0gMHgwMTAwMDAwMDAwMDAwMDAwOworc3RhdGljIGNvbnN0ZXhwciB1aW50NjRf
dCBBY3Rpb25GbGFnTWFzayA9IDB4MDAwN0ZGRkYwMDAwMDAwMDsKIAogT3B0aW9uU2V0PFJlc291
cmNlVHlwZT4gdG9SZXNvdXJjZVR5cGUoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVx
dWVzdEJhc2U6OlJlcXVlc3Rlcik7CiBzdGQ6Om9wdGlvbmFsPE9wdGlvblNldDxSZXNvdXJjZVR5
cGU+PiByZWFkUmVzb3VyY2VUeXBlKFN0cmluZ1ZpZXcpOwpAQCAtODYsNiArODcsNyBAQCBzdGQ6
Om9wdGlvbmFsPE9wdGlvblNldDxMb2FkQ29udGV4dD4+IHJlYWRMb2FkQ29udGV4dChTdHJpbmdW
aWV3KTsKIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvIHsKICAgICBVUkwgcmVzb3VyY2VVUkw7CiAg
ICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKKyAgICBVUkwgZnJhbWVVUkw7CiAgICAgT3B0aW9uU2V0
PFJlc291cmNlVHlwZT4gdHlwZTsKICAgICBib29sIG1haW5GcmFtZUNvbnRleHQgeyBmYWxzZSB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5jcHAKaW5kZXggYjBhNDhjZjVjMjI3YTIwNTFhZmM5YWFjNTdjNzM3MGE5MWRlYmNhOC4u
ZDg0Y2ZjZjBhYmQxMWU3NTE5MTg4MDZkYjY0YTE0OTFiYzU2N2Y3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtNDc0
LDcgKzQ3NCw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpwcm9jZXNzQ29udGVudFJ1bGVM
aXN0c0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHJlc3VsdHMgPSBiYWNrZW5kLnByb2Nlc3NDb250
ZW50UnVsZUxpc3RzRm9yUGluZ0xvYWQocmVxdWVzdC51cmwoKSwgbV9tYWluRG9jdW1lbnRVUkwp
OworICAgICAgICBhdXRvIHJlc3VsdHMgPSBiYWNrZW5kLnByb2Nlc3NDb250ZW50UnVsZUxpc3Rz
Rm9yUGluZ0xvYWQocmVxdWVzdC51cmwoKSwgbV9tYWluRG9jdW1lbnRVUkwsIG1fZnJhbWVVUkwp
OwogICAgICAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6YXBwbHlSZXN1bHRzVG9SZXF1
ZXN0KENvbnRlbnRSdWxlTGlzdFJlc3VsdHMgeyByZXN1bHRzIH0sIG51bGxwdHIsIHJlcXVlc3Qp
OwogICAgICAgICBjYWxsYmFjayhDb250ZW50RXh0ZW5zaW9uUmVzdWx0IHsgV1RGTW92ZShyZXF1
ZXN0KSwgcmVzdWx0cyB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCmluZGV4IGI5YmM1YWNlNTRhMGE5NDgxMzZiMzMy
Y2JiODdmMDRiYzAzM2E2MzMuLjA2M2U1ZjZhYjc4MWIzZmM1ZWYzZGUxMWM0MmQwNThkMDk3ZjU1
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENo
ZWNrZXIuaApAQCAtODUsOSArODUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFyZW50Q3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeShjb25zdCBXZWJDb3JlOjpDcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5JiBwYXJlbnRDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KSB7IG1fcGFyZW50Q3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeSA9IHBhcmVudENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3k7IH0K
ICAgICB2b2lkIHNldENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3koY29uc3QgV2ViQ29yZTo6Q3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSYgY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSkgeyBtX2Ny
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kgPSBjcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5OyB9CiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICB2b2lkIHNldENvbnRlbnRFeHRlbnNp
b25Db250cm9sbGVyKFVSTCYmIG1haW5Eb2N1bWVudFVSTCwgc3RkOjpvcHRpb25hbDxVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlmaWVyKQorICAgIHZvaWQgc2V0Q29udGVu
dEV4dGVuc2lvbkNvbnRyb2xsZXIoVVJMJiYgbWFpbkRvY3VtZW50VVJMLCBVUkwmJiBmcmFtZVVS
TCwgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBpZGVudGlm
aWVyKQogICAgIHsKICAgICAgICAgbV9tYWluRG9jdW1lbnRVUkwgPSBXVEZNb3ZlKG1haW5Eb2N1
bWVudFVSTCk7CisgICAgICAgIG1fZnJhbWVVUkwgPSBXVEZNb3ZlKGZyYW1lVVJMKTsKICAgICAg
ICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9
CiAjZW5kaWYKQEAgLTE0OCw2ICsxNDksNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kgbV9jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5OwogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgVVJMIG1fbWFpbkRvY3VtZW50VVJMOworICAg
IFVSTCBtX2ZyYW1lVVJMOwogICAgIHN0ZDo6b3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcj4gbV91c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCBjMWU0NTU4NGU0N2ZjZjdhM2M0OTk2YjFmNGVj
NmY3ZGFhZjM4OTI5Li43ZjFmZTg2ZjY1YmI5NDA2ODE1MTRhZWE3ZTZkM2U1ODA4ZTFjM2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC04Nyw2ICs4Nyw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKKyAg
ICBVUkwgZnJhbWVVUkw7CiAgICAgc3RkOjpvcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3
Mi4uY2M2NTI1OWM2ZDgyYWM4NTZhZWZiMWEzMDhkY2MxNDVkYzg4YWE1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtMTI4LDcgKzEyOCw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291
cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAgICAgICAgIG1f
bmV0d29ya0xvYWRDaGVja2VyLT5zZXRQYXJlbnRDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KG1f
cGFyYW1ldGVycy5wYXJlbnRDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KTsKICAgICAgICAgbV9u
ZXR3b3JrTG9hZENoZWNrZXItPnNldENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kobV9wYXJhbWV0
ZXJzLmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVO
U0lPTlMpCi0gICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDb250ZW50RXh0ZW5zaW9u
Q29udHJvbGxlcihVUkwgeyBtX3BhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMIH0sIG1fcGFyYW1l
dGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICAgICAgbV9uZXR3b3Jr
TG9hZENoZWNrZXItPnNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFVSTCB7IG1fcGFyYW1l
dGVycy5tYWluRG9jdW1lbnRVUkwgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLmZyYW1lVVJMIH0sIG1f
cGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKICNlbmRpZgogICAg
IH0KICAgICBpZiAoc3luY2hyb25vdXNSZXBseSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5jcHAKaW5kZXggMTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2IyYjVhYjhjYzM4
ZWZkNS4uZWZkYjNiMGQ0MTdiMmYxNmEyNzM5ZTI4ODcwZTU2MWFmMjk2NTI5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBQaW5nTG9hZDo6aW5pdGlhbGl6ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MpCiAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldFBhcmVudENyb3NzT3JpZ2luRW1iZWRkZXJQb2xp
Y3kobV9wYXJhbWV0ZXJzLnBhcmVudENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpOwogICAgIG1f
bmV0d29ya0xvYWRDaGVja2VyLT5zZXRDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KG1fcGFyYW1l
dGVycy5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQotICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDb250ZW50RXh0ZW5zaW9uQ29u
dHJvbGxlcihXVEZNb3ZlKG1fcGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwpLCBtX3BhcmFtZXRl
cnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisgICAgbV9uZXR3b3JrTG9hZENo
ZWNrZXItPnNldENvbnRlbnRFeHRlbnNpb25Db250cm9sbGVyKFdURk1vdmUobV9wYXJhbWV0ZXJz
Lm1haW5Eb2N1bWVudFVSTCksIFdURk1vdmUobV9wYXJhbWV0ZXJzLmZyYW1lVVJMKSwgbV9wYXJh
bWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICAv
LyBJZiB0aGUgc2VydmVyIG5ldmVyIHJlc3BvbmRzLCB0aGlzIG9iamVjdCB3aWxsIGhhbmcgYXJv
dW5kIGZvcmV2ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENv
bnRlbnRSdWxlTGlzdC5jcHAKaW5kZXggOWM5ZjhjMGQ1MzZhMDY3NjBjMDI3MWNhMzgxMzY2ZmNi
OGIxNmM1MS4uYTZkZGYzMmFjMzlhZmU5ZTZkZjg5MWQwZTBmMTIwMzY3OWJiMTgxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNw
cApAQCAtNDQsMTQgKzQ0LDkgQEAgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6On5XZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdCgpCiB7CiB9CiAKLVNwYW48Y29uc3QgdWludDhfdD4gV2ViQ29t
cGlsZWRDb250ZW50UnVsZUxpc3Q6OmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCkg
Y29uc3QKK1NwYW48Y29uc3QgdWludDhfdD4gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OnVy
bEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNwYW5XaXRoT2Zmc2V0QW5k
TGVuZ3RoKG1fZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCwgbV9k
YXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSk7Ci19Ci0KLVNwYW48Y29u
c3QgdWludDhfdD4gV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmZpbHRlcnNXaXRoQ29uZGl0
aW9uc0J5dGVjb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3BhbldpdGhPZmZzZXRBbmRMZW5n
dGgobV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0LCBtX2RhdGEuZmls
dGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKTsKKyAgICByZXR1cm4gc3BhbldpdGhPZmZz
ZXRBbmRMZW5ndGgobV9kYXRhLnVybEZpbHRlcnNCeXRlY29kZU9mZnNldCwgbV9kYXRhLnVybEZp
bHRlcnNCeXRlY29kZVNpemUpOwogfQogCiBTcGFuPGNvbnN0IHVpbnQ4X3Q+IFdlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0Ojp0b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgKaW5kZXggYjAy
MTFiMmFmM2NlMzBiODE4Y2Q4YTNlODk3ZWI2NGQxYmFmODU4NS4uNGRjZTA2OGNlZDkxNzY0OWU0
YTEyNGE1N2Y3NzQ5NjQyZDNhMWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oCkBAIC00Myw4ICs0Myw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QoV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3REYXRhJiYpOwogCi0gICAgU3Bhbjxjb25zdCB1aW50OF90PiBmaWx0ZXJzV2l0aG91
dENvbmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0IGZpbmFsOwotICAgIFNwYW48Y29uc3QgdWludDhf
dD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUoKSBjb25zdCBmaW5hbDsKKyAgICBTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHVybEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0IGZpbmFsOwogICAgIFNw
YW48Y29uc3QgdWludDhfdD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWw7CiAg
ICAgU3Bhbjxjb25zdCB1aW50OF90PiBmcmFtZVVSTEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0IGZp
bmFsOwogICAgIFNwYW48Y29uc3QgdWludDhfdD4gc2VyaWFsaXplZEFjdGlvbnMoKSBjb25zdCBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdERhdGEuY3BwCmluZGV4IGVmZGM1MzQ2MGZkM2NmNTg0Y2MyMjI5MGFjNTBlOTE3
YTcwYmQyMDQuLjY4Y2VjNjYyMmI2MDhiNjdlOTliYjljMjk5YmExZjE2OGY1ZGJmMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3REYXRhLmNwcApAQCAtNTEsMTAgKzUxLDggQEAgdm9pZCBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBlbmNv
ZGVyIDw8IGFjdGlvbnNPZmZzZXQ7CiAgICAgZW5jb2RlciA8PCBhY3Rpb25zU2l6ZTsKLSAgICBl
bmNvZGVyIDw8IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OwotICAgIGVu
Y29kZXIgPDwgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwotICAgIGVuY29k
ZXIgPDwgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7Ci0gICAgZW5jb2RlciA8
PCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemU7CisgICAgZW5jb2RlciA8PCB1cmxG
aWx0ZXJzQnl0ZWNvZGVPZmZzZXQ7CisgICAgZW5jb2RlciA8PCB1cmxGaWx0ZXJzQnl0ZWNvZGVT
aXplOwogICAgIGVuY29kZXIgPDwgdG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OwogICAgIGVu
Y29kZXIgPDwgdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKICAgICBlbmNvZGVyIDw8IGZyYW1l
VVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OwpAQCAtODUsMjQgKzgzLDE0IEBAIHN0ZDo6b3B0aW9u
YWw8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPiBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE6OmRlCiAgICAgaWYgKCFhY3Rpb25zU2l6ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZU9mZnNldDsKLSAgICBkZWNvZGVyID4+IGZpbHRlcnNXaXRob3V0Q29uZGl0
aW9uc0J5dGVjb2RlT2Zmc2V0OwotICAgIGlmICghZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0
ZWNvZGVPZmZzZXQpCisgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHVybEZpbHRlcnNCeXRlY29k
ZU9mZnNldDsKKyAgICBkZWNvZGVyID4+IHVybEZpbHRlcnNCeXRlY29kZU9mZnNldDsKKyAgICBp
ZiAoIXVybEZpbHRlcnNCeXRlY29kZU9mZnNldCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZVNpemU7Ci0gICAgZGVjb2RlciA+PiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRl
Y29kZVNpemU7Ci0gICAgaWYgKCFmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBm
aWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldDsKLSAgICBpZiAoIWZpbHRlcnNXaXRo
Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
U2l6ZTsKLSAgICBkZWNvZGVyID4+IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsK
LSAgICBpZiAoIWZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSkKKyAgICBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gdXJsRmlsdGVyc0J5dGVjb2RlU2l6ZTsKKyAgICBkZWNvZGVyID4+IHVy
bEZpbHRlcnNCeXRlY29kZVNpemU7CisgICAgaWYgKCF1cmxGaWx0ZXJzQnl0ZWNvZGVTaXplKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldDsKQEAgLTEzMCwxMCArMTE4LDggQEAgc3RkOjpv
cHRpb25hbDxXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+IFdlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0RGF0YTo6ZGUKICAgICAgICAgZGF0YS5yZWxlYXNlTm9uTnVsbCgpLAogICAgICAg
ICBXVEZNb3ZlKCphY3Rpb25zT2Zmc2V0KSwKICAgICAgICAgV1RGTW92ZSgqYWN0aW9uc1NpemUp
LAotICAgICAgICBXVEZNb3ZlKCpmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNl
dCksCi0gICAgICAgIFdURk1vdmUoKmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6
ZSksCi0gICAgICAgIFdURk1vdmUoKmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0
KSwKLSAgICAgICAgV1RGTW92ZSgqZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKSwK
KyAgICAgICAgV1RGTW92ZSgqdXJsRmlsdGVyc0J5dGVjb2RlT2Zmc2V0KSwKKyAgICAgICAgV1RG
TW92ZSgqdXJsRmlsdGVyc0J5dGVjb2RlU2l6ZSksCiAgICAgICAgIFdURk1vdmUoKnRvcFVSTEZp
bHRlcnNCeXRlY29kZU9mZnNldCksCiAgICAgICAgIFdURk1vdmUoKnRvcFVSTEZpbHRlcnNCeXRl
Y29kZVNpemUpLAogICAgICAgICBXVEZNb3ZlKCpmcmFtZVVSTEZpbHRlcnNCeXRlY29kZU9mZnNl
dCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRS
dWxlTGlzdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YS5oCmluZGV4IGNiMDU2MjgyNTlkNjk1ZDM1NGRhZDE4M2M4YjZkYmMzOGU4ODRh
NzguLjE2Y2RiNjRkNTgxZDQxZDg5MzRmOWUxNTVkYjgwNzk4OTBiZjg3YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5o
CkBAIC00MSwxNSArNDEsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0RGF0YSB7CiBwdWJsaWM6Ci0gICAgV2ViQ29tcGlsZWRDb250ZW50
UnVsZUxpc3REYXRhKFN0cmluZyYmIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgZGF0
YSwgc2l6ZV90IGFjdGlvbnNPZmZzZXQsIHNpemVfdCBhY3Rpb25zU2l6ZSwgc2l6ZV90IGZpbHRl
cnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0LCBzaXplX3QgZmlsdGVyc1dpdGhvdXRD
b25kaXRpb25zQnl0ZWNvZGVTaXplLCBzaXplX3QgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNv
ZGVPZmZzZXQsIHNpemVfdCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUsIHNpemVf
dCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQsIHNpemVfdCB0b3BVUkxGaWx0ZXJzQnl0ZWNv
ZGVTaXplLCBzaXplX3QgZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQsIHNpemVfdCBmcmFt
ZVVSTEZpbHRlcnNCeXRlY29kZVNpemUpCisgICAgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3RE
YXRhKFN0cmluZyYmIGlkZW50aWZpZXIsIFJlZjxTaGFyZWRNZW1vcnk+JiYgZGF0YSwgc2l6ZV90
IGFjdGlvbnNPZmZzZXQsIHNpemVfdCBhY3Rpb25zU2l6ZSwgc2l6ZV90IHVybEZpbHRlcnNCeXRl
Y29kZU9mZnNldCwgc2l6ZV90IHVybEZpbHRlcnNCeXRlY29kZVNpemUsIHNpemVfdCB0b3BVUkxG
aWx0ZXJzQnl0ZWNvZGVPZmZzZXQsIHNpemVfdCB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplLCBz
aXplX3QgZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQsIHNpemVfdCBmcmFtZVVSTEZpbHRl
cnNCeXRlY29kZVNpemUpCiAgICAgICAgIDogaWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIp
KQogICAgICAgICAsIGRhdGEoV1RGTW92ZShkYXRhKSkKICAgICAgICAgLCBhY3Rpb25zT2Zmc2V0
KGFjdGlvbnNPZmZzZXQpCiAgICAgICAgICwgYWN0aW9uc1NpemUoYWN0aW9uc1NpemUpCi0gICAg
ICAgICwgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQoZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICwgZmlsdGVyc1dpdGhvdXRDb25k
aXRpb25zQnl0ZWNvZGVTaXplKGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSkK
LSAgICAgICAgLCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldChmaWx0ZXJzV2l0
aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCkKLSAgICAgICAgLCBmaWx0ZXJzV2l0aENvbmRpdGlv
bnNCeXRlY29kZVNpemUoZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKQorICAgICAg
ICAsIHVybEZpbHRlcnNCeXRlY29kZU9mZnNldCh1cmxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQpCisg
ICAgICAgICwgdXJsRmlsdGVyc0J5dGVjb2RlU2l6ZSh1cmxGaWx0ZXJzQnl0ZWNvZGVTaXplKQog
ICAgICAgICAsIHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCh0b3BVUkxGaWx0ZXJzQnl0ZWNv
ZGVPZmZzZXQpCiAgICAgICAgICwgdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSh0b3BVUkxGaWx0
ZXJzQnl0ZWNvZGVTaXplKQogICAgICAgICAsIGZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0
KGZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0KQpAQCAtNjQsMTAgKzYyLDggQEAgcHVibGlj
OgogICAgIFJlZjxTaGFyZWRNZW1vcnk+IGRhdGE7CiAgICAgc2l6ZV90IGFjdGlvbnNPZmZzZXQg
eyAwIH07CiAgICAgc2l6ZV90IGFjdGlvbnNTaXplIHsgMCB9OwotICAgIHNpemVfdCBmaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCB7IDAgfTsKLSAgICBzaXplX3QgZmlsdGVy
c1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplIHsgMCB9OwotICAgIHNpemVfdCBmaWx0ZXJz
V2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCB7IDAgfTsKLSAgICBzaXplX3QgZmlsdGVyc1dp
dGhDb25kaXRpb25zQnl0ZWNvZGVTaXplIHsgMCB9OworICAgIHNpemVfdCB1cmxGaWx0ZXJzQnl0
ZWNvZGVPZmZzZXQgeyAwIH07CisgICAgc2l6ZV90IHVybEZpbHRlcnNCeXRlY29kZVNpemUgeyAw
IH07CiAgICAgc2l6ZV90IHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldCB7IDAgfTsKICAgICBz
aXplX3QgdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSB7IDAgfTsKICAgICBzaXplX3QgZnJhbWVV
UkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA2NDQ5MWUx
NjJlYzZjNWJjZmEzZmM0Y2IyNDlmOGQ5Y2NiNjM5YjIxLi4zOTY1YWFlZTVhNzEwNjFmNDljYTU4
ODQxNTY1MjUxZjNkMDk5ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTEwOSwyMSArMTA5LDIwIEBA
IHN0cnVjdCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSB7CiAgICAgdWludDMyX3QgdmVyc2lvbiB7
IENvbnRlbnRSdWxlTGlzdFN0b3JlOjpDdXJyZW50Q29udGVudFJ1bGVMaXN0RmlsZVZlcnNpb24g
fTsKICAgICB1aW50NjRfdCBzb3VyY2VTaXplIHsgMCB9OwogICAgIHVpbnQ2NF90IGFjdGlvbnNT
aXplIHsgMCB9OwotICAgIHVpbnQ2NF90IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2Rl
U2l6ZSB7IDAgfTsKLSAgICB1aW50NjRfdCBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNp
emUgeyAwIH07Ci0gICAgdWludDY0X3QgY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplIHsg
MCB9OwotICAgIHVpbnQzMl90IHVudXNlZDMyYml0cyB7IGZhbHNlIH07CisgICAgdWludDY0X3Qg
dXJsRmlsdGVyc0J5dGVjb2RlU2l6ZSB7IDAgfTsKKyAgICB1aW50NjRfdCB0b3BVUkxGaWx0ZXJz
Qnl0ZWNvZGVTaXplIHsgMCB9OwogICAgIHVpbnQ2NF90IGZyYW1lVVJMRmlsdGVyc0J5dGVjb2Rl
U2l6ZSB7IDAgfTsKLSAgICB1aW50NjRfdCB1bnVzZWQ2NGJpdHMgeyAwIH07IC8vIEFkZGl0aW9u
YWwgc3BhY2Ugb24gZGlzayByZXNlcnZlZCBzbyB3ZSBjYW4gYWRkIHNvbWV0aGluZyB3aXRob3V0
IGluY3JlbWVudGluZyB0aGUgdmVyc2lvbiBudW1iZXIuCisgICAgdWludDMyX3QgdW51c2VkMzJi
aXRzIHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCB1bnVzZWQ2NGJpdHMxIHsgMCB9OworICAgIHVp
bnQ2NF90IHVudXNlZDY0Yml0czIgeyAwIH07IC8vIEFkZGl0aW9uYWwgc3BhY2Ugb24gZGlzayBy
ZXNlcnZlZCBzbyB3ZSBjYW4gYWRkIHNvbWV0aGluZyB3aXRob3V0IGluY3JlbWVudGluZyB0aGUg
dmVyc2lvbiBudW1iZXIuCiAgICAgCiAgICAgc2l6ZV90IGZpbGVTaXplKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBoZWFkZXJTaXplKHZlcnNpb24pCiAgICAgICAgICAgICArIHNvdXJj
ZVNpemUKICAgICAgICAgICAgICsgYWN0aW9uc1NpemUKLSAgICAgICAgICAgICsgZmlsdGVyc1dp
dGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplCi0gICAgICAgICAgICArIGZpbHRlcnNXaXRoQ29u
ZGl0aW9uc0J5dGVjb2RlU2l6ZQotICAgICAgICAgICAgKyBjb25kaXRpb25lZEZpbHRlcnNCeXRl
Y29kZVNpemUKKyAgICAgICAgICAgICsgdXJsRmlsdGVyc0J5dGVjb2RlU2l6ZQorICAgICAgICAg
ICAgKyB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplCiAgICAgICAgICAgICArIGZyYW1lVVJMRmls
dGVyc0J5dGVjb2RlU2l6ZTsKICAgICB9CiB9OwpAQCAtMTM1LDEyICsxMzQsMTIgQEAgc3RhdGlj
IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhIGVuY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRh
KGNvbnN0IENvbnRlbnRSdWwKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnZlcnNpb247CiAgICAg
ZW5jb2RlciA8PCBtZXRhRGF0YS5zb3VyY2VTaXplOwogICAgIGVuY29kZXIgPDwgbWV0YURhdGEu
YWN0aW9uc1NpemU7Ci0gICAgZW5jb2RlciA8PCBtZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZVNpemU7Ci0gICAgZW5jb2RlciA8PCBtZXRhRGF0YS5maWx0ZXJzV2l0aENv
bmRpdGlvbnNCeXRlY29kZVNpemU7Ci0gICAgZW5jb2RlciA8PCBtZXRhRGF0YS5jb25kaXRpb25l
ZEZpbHRlcnNCeXRlY29kZVNpemU7Ci0gICAgZW5jb2RlciA8PCBtZXRhRGF0YS51bnVzZWQzMmJp
dHM7CisgICAgZW5jb2RlciA8PCBtZXRhRGF0YS51cmxGaWx0ZXJzQnl0ZWNvZGVTaXplOworICAg
IGVuY29kZXIgPDwgbWV0YURhdGEudG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKICAgICBlbmNv
ZGVyIDw8IG1ldGFEYXRhLmZyYW1lVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKLSAgICBlbmNvZGVy
IDw8IG1ldGFEYXRhLnVudXNlZDY0Yml0czsKKyAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnVudXNl
ZDMyYml0czsKKyAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnVudXNlZDY0Yml0czE7CisgICAgZW5j
b2RlciA8PCBtZXRhRGF0YS51bnVzZWQ2NGJpdHMyOwogCiAgICAgQVNTRVJUKGVuY29kZXIuYnVm
ZmVyU2l6ZSgpID09IEN1cnJlbnRWZXJzaW9uRmlsZUhlYWRlclNpemUpOwogICAgIHJldHVybiBX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZl
clNpemUoKSk7CkBAIC0xODEsMjMgKzE4MCwyMyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb250
ZW50UnVsZUxpc3RNZXRhRGF0YT4gZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEoY29ucwog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIG1ldGFEYXRhLmFjdGlvbnNTaXplID0g
V1RGTW92ZSgqYWN0aW9uc1NpemUpOwogCi0gICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmls
dGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwotICAgIGRlY29kZXIgPj4gZmlsdGVy
c1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplOwotICAgIGlmICghZmlsdGVyc1dpdGhvdXRD
b25kaXRpb25zQnl0ZWNvZGVTaXplKQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHVybEZp
bHRlcnNCeXRlY29kZVNpemU7CisgICAgZGVjb2RlciA+PiB1cmxGaWx0ZXJzQnl0ZWNvZGVTaXpl
OworICAgIGlmICghdXJsRmlsdGVyc0J5dGVjb2RlU2l6ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICBtZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNp
emUgPSBXVEZNb3ZlKCpmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUpOworICAg
IG1ldGFEYXRhLnVybEZpbHRlcnNCeXRlY29kZVNpemUgPSBXVEZNb3ZlKCp1cmxGaWx0ZXJzQnl0
ZWNvZGVTaXplKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbHRlcnNXaXRoQ29u
ZGl0aW9uc0J5dGVjb2RlU2l6ZTsKLSAgICBkZWNvZGVyID4+IGZpbHRlcnNXaXRoQ29uZGl0aW9u
c0J5dGVjb2RlU2l6ZTsKLSAgICBpZiAoIWZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6
ZSkKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXpl
OworICAgIGRlY29kZXIgPj4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKKyAgICBpZiAoIXRv
cFVSTEZpbHRlcnNCeXRlY29kZVNpemUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplID0gV1RGTW92ZSgq
ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKTsKKyAgICBtZXRhRGF0YS50b3BVUkxG
aWx0ZXJzQnl0ZWNvZGVTaXplID0gV1RGTW92ZSgqdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSk7
CiAKLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29k
ZVNpemU7Ci0gICAgZGVjb2RlciA+PiBjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemU7Ci0g
ICAgaWYgKCFjb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUpCisgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOworICAgIGRlY29kZXIgPj4g
ZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOworICAgIGlmICghZnJhbWVVUkxGaWx0ZXJzQnl0
ZWNvZGVTaXplKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIG1ldGFEYXRhLmNv
bmRpdGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZSA9IFdURk1vdmUoKmNvbmRpdGlvbmVkRmlsdGVy
c0J5dGVjb2RlU2l6ZSk7CisgICAgbWV0YURhdGEuZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXpl
ID0gV1RGTW92ZSgqZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplKTsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8dWludDMyX3Q+IHVudXNlZDMyYml0czsKICAgICBkZWNvZGVyID4+IHVudXNlZDMyYml0
czsKQEAgLTIwOCwxNyArMjA3LDE3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbnRlbnRSdWxl
TGlzdE1ldGFEYXRhPiBkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShjb25zCiAgICAgaWYg
KG1ldGFEYXRhLnZlcnNpb24gPCAxMikKICAgICAgICAgcmV0dXJuIG1ldGFEYXRhOwogCi0gICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwotICAg
IGRlY29kZXIgPj4gZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwotICAgIGlmICghZnJhbWVV
UkxGaWx0ZXJzQnl0ZWNvZGVTaXplKQorICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHVudXNl
ZDE7CisgICAgZGVjb2RlciA+PiB1bnVzZWQxOworICAgIGlmICghdW51c2VkMSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBtZXRhRGF0YS5mcmFtZVVSTEZpbHRlcnNCeXRlY29k
ZVNpemUgPSBXVEZNb3ZlKCpmcmFtZVVSTEZpbHRlcnNCeXRlY29kZVNpemUpOwotICAgIAotICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHVudXNlZDsKLSAgICBkZWNvZGVyID4+IHVudXNlZDsK
LSAgICBpZiAoIXVudXNlZCkKKyAgICBtZXRhRGF0YS51bnVzZWQ2NGJpdHMxID0gMDsKKworICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHVudXNlZDI7CisgICAgZGVjb2RlciA+PiB1bnVzZWQy
OworICAgIGlmICghdW51c2VkMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBt
ZXRhRGF0YS51bnVzZWQ2NGJpdHMgPSAwOworICAgIG1ldGFEYXRhLnVudXNlZDY0Yml0czIgPSAw
OwogCiAgICAgcmV0dXJuIG1ldGFEYXRhOwogfQpAQCAtMjY2LDE4ICsyNjUsMTkgQEAgc3RhdGlj
IEV4cGVjdGVkPE1hcHBlZERhdGEsIHN0ZDo6ZXJyb3JfY29kZT4gY29tcGlsZWRUb0ZpbGUoV1RG
OjpTdHJpbmcmJiBqc29uLAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRh
LnNvdXJjZVNpemUpOwogICAgICAgICAgICAgQVNTRVJUKCFtZXRhRGF0YS5hY3Rpb25zU2l6ZSk7
Ci0gICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlU2l6ZSk7Ci0gICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmZpbHRlcnNXaXRoQ29u
ZGl0aW9uc0J5dGVjb2RlU2l6ZSk7Ci0gICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmNvbmRp
dGlvbmVkRmlsdGVyc0J5dGVjb2RlU2l6ZSk7CisgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRh
LnVybEZpbHRlcnNCeXRlY29kZVNpemUpOworICAgICAgICAgICAgQVNTRVJUKCFtZXRhRGF0YS50
b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplKTsKKyAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEu
ZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgdm9pZCB3cml0ZVNvdXJjZShXVEY6OlN0cmluZyYmIHNvdXJjZUpTT04pIGZpbmFsCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRl
Y29kZVdyaXR0ZW4pOwotICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNXaXRoQ29uZGl0aW9u
Qnl0ZWNvZGVXcml0dGVuKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9jb25kaXRpb25GaWx0ZXJz
Qnl0ZWNvZGVXcml0dGVuKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9hY3Rpb25zV3JpdHRlbik7
CiAgICAgICAgICAgICBBU1NFUlQoIW1fc291cmNlV3JpdHRlbik7CisgICAgICAgICAgICBBU1NF
UlQoIW1fYWN0aW9uc1dyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX3VybEZpbHRlcnNC
eXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX3RvcFVSTEZpbHRlcnNCeXRl
Y29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX2ZyYW1lVVJMRmlsdGVyc0J5dGVj
b2RlV3JpdHRlbik7CisKICAgICAgICAgICAgIHdyaXRlVG9GaWxlKHNvdXJjZUpTT04uaXM4Qml0
KCkpOwogICAgICAgICAgICAgbV9zb3VyY2VXcml0dGVuICs9IHNpemVvZihib29sKTsKICAgICAg
ICAgICAgIGlmIChzb3VyY2VKU09OLmlzOEJpdCgpKSB7CkBAIC0yOTAsNDYgKzI5MCw0NiBAQCBz
dGF0aWMgRXhwZWN0ZWQ8TWFwcGVkRGF0YSwgc3RkOjplcnJvcl9jb2RlPiBjb21waWxlZFRvRmls
ZShXVEY6OlN0cmluZyYmIGpzb24sCiAgICAgICAgICAgICAgICAgbV9zb3VyY2VXcml0dGVuICs9
IHNlcmlhbGl6ZWRMZW5ndGg7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8
REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCisKKyAgICAgICAgdm9pZCB3cml0ZUFjdGlv
bnMoVmVjdG9yPFNlcmlhbGl6ZWRBY3Rpb25CeXRlPiYmIGFjdGlvbnMpIGZpbmFsCiAgICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3Jp
dHRlbik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3Jp
dHRlbik7Ci0gICAgICAgICAgICBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3Jp
dHRlbiArPSBieXRlY29kZS5zaXplKCk7Ci0gICAgICAgICAgICB3cml0ZVRvRmlsZShXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6RGF0YShieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkpOwor
ICAgICAgICAgICAgQVNTRVJUKCFtX2FjdGlvbnNXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VS
VCghbV91cmxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV90
b3BVUkxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9mcmFt
ZVVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgbV9hY3Rpb25zV3JpdHRl
biArPSBhY3Rpb25zLnNpemUoKTsKKyAgICAgICAgICAgIHdyaXRlVG9GaWxlKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpEYXRhKGFjdGlvbnMuZGF0YSgpLCBhY3Rpb25zLnNpemUoKSkpOwogICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhDb25kaXRpb25zQnl0
ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAorCisgICAgICAgIHZv
aWQgd3JpdGVVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2Rl
KSBmaW5hbAogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0aW9uRmlsdGVy
c0J5dGVjb2RlV3JpdHRlbik7Ci0gICAgICAgICAgICBtX2ZpbHRlcnNXaXRoQ29uZGl0aW9uQnl0
ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV90
b3BVUkxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9mcmFt
ZVVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgbV91cmxGaWx0ZXJzQnl0
ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKICAgICAgICAgICAgIHdyaXRlVG9GaWxl
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6
ZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVUb3BVUkxGaWx0
ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAogICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4gKz0gYnl0
ZWNvZGUuc2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKCFtX2ZyYW1lVVJMRmlsdGVyc0J5dGVj
b2RlV3JpdHRlbik7CisgICAgICAgICAgICBtX3RvcFVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4g
Kz0gYnl0ZWNvZGUuc2l6ZSgpOwogICAgICAgICAgICAgd3JpdGVUb0ZpbGUoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkRhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRlY29kZS5zaXplKCkpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZvaWQgd3JpdGVBY3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9u
Qnl0ZT4mJiBhY3Rpb25zKSBmaW5hbAorICAgICAgICB2b2lkIHdyaXRlRnJhbWVVUkxGaWx0ZXJz
Qnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAogICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoIW1fZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVX
cml0dGVuKTsKLSAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVj
b2RlV3JpdHRlbik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0aW9uRmlsdGVyc0J5dGVj
b2RlV3JpdHRlbik7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fYWN0aW9uc1dyaXR0ZW4pOwotICAg
ICAgICAgICAgbV9hY3Rpb25zV3JpdHRlbiArPSBhY3Rpb25zLnNpemUoKTsKLSAgICAgICAgICAg
IHdyaXRlVG9GaWxlKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhKGFjdGlvbnMuZGF0YSgpLCBh
Y3Rpb25zLnNpemUoKSkpOworICAgICAgICAgICAgbV9mcmFtZVVSTEZpbHRlcnNCeXRlY29kZVdy
aXR0ZW4gKz0gYnl0ZWNvZGUuc2l6ZSgpOworICAgICAgICAgICAgd3JpdGVUb0ZpbGUoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkRhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRlY29kZS5zaXplKCkpKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBmaW5hbGl6ZSgpIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1fbWV0YURhdGEuc291cmNlU2l6ZSA9IG1fc291cmNlV3JpdHRl
bjsKICAgICAgICAgICAgIG1fbWV0YURhdGEuYWN0aW9uc1NpemUgPSBtX2FjdGlvbnNXcml0dGVu
OwotICAgICAgICAgICAgbV9tZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29k
ZVNpemUgPSBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbjsKLSAgICAg
ICAgICAgIG1fbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplID0gbV9m
aWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbjsKLSAgICAgICAgICAgIG1fbWV0YURh
dGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVTaXplID0gbV9jb25kaXRpb25GaWx0ZXJzQnl0
ZWNvZGVXcml0dGVuOwotICAgICAgICAgICAgCisgICAgICAgICAgICBtX21ldGFEYXRhLnVybEZp
bHRlcnNCeXRlY29kZVNpemUgPSBtX3VybEZpbHRlcnNCeXRlY29kZVdyaXR0ZW47CisgICAgICAg
ICAgICBtX21ldGFEYXRhLnRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemUgPSBtX3RvcFVSTEZpbHRl
cnNCeXRlY29kZVdyaXR0ZW47CisgICAgICAgICAgICBtX21ldGFEYXRhLmZyYW1lVVJMRmlsdGVy
c0J5dGVjb2RlU2l6ZSA9IG1fZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuOworCiAgICAg
ICAgICAgICBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSBoZWFkZXIgPSBlbmNvZGVDb250ZW50
UnVsZUxpc3RNZXRhRGF0YShtX21ldGFEYXRhKTsKICAgICAgICAgICAgIGlmICghbV9maWxlRXJy
b3IgJiYgc2Vla0ZpbGUobV9maWxlSGFuZGxlLCAwbGwsIEZpbGVTZWVrT3JpZ2luOjpCZWdpbm5p
bmcpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CkBA
IC0zNTUsMTEgKzM1NSwxMSBAQCBzdGF0aWMgRXhwZWN0ZWQ8TWFwcGVkRGF0YSwgc3RkOjplcnJv
cl9jb2RlPiBjb21waWxlZFRvRmlsZShXVEY6OlN0cmluZyYmIGpzb24sCiAgICAgICAgIAogICAg
ICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOwogICAgICAgICBDb250ZW50UnVs
ZUxpc3RNZXRhRGF0YSYgbV9tZXRhRGF0YTsKLSAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGVXcml0dGVuIHsgMCB9OwotICAgICAgICBzaXplX3QgbV9maWx0
ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbiB7IDAgfTsKLSAgICAgICAgc2l6ZV90IG1f
Y29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsKLSAgICAgICAgc2l6ZV90IG1f
YWN0aW9uc1dyaXR0ZW4geyAwIH07CiAgICAgICAgIHNpemVfdCBtX3NvdXJjZVdyaXR0ZW4geyAw
IH07CisgICAgICAgIHNpemVfdCBtX2FjdGlvbnNXcml0dGVuIHsgMCB9OworICAgICAgICBzaXpl
X3QgbV91cmxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuIHsgMCB9OworICAgICAgICBzaXplX3QgbV90
b3BVUkxGaWx0ZXJzQnl0ZWNvZGVXcml0dGVuIHsgMCB9OworICAgICAgICBzaXplX3QgbV9mcmFt
ZVVSTEZpbHRlcnNCeXRlY29kZVdyaXR0ZW4geyAwIH07CiAgICAgICAgIGJvb2wgbV9maWxlRXJy
b3IgeyBmYWxzZSB9OwogICAgIH07CiAKQEAgLTQyMiwyOCArNDIyLDIxIEBAIHN0YXRpYyBSZWY8
QVBJOjpDb250ZW50UnVsZUxpc3Q+IGNyZWF0ZUV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllciwKICAgICBSRUxFQVNFX0FTU0VSVChzaGFyZWRNZW1vcnkpOwogCiAgICAgY29u
c3Qgc2l6ZV90IGhlYWRlckFuZFNvdXJjZVNpemUgPSBoZWFkZXJTaXplKGRhdGEubWV0YURhdGEu
dmVyc2lvbikgKyBkYXRhLm1ldGFEYXRhLnNvdXJjZVNpemU7CisgICAgY29uc3Qgc2l6ZV90IGFj
dGlvbnNPZmZzZXQgPSBoZWFkZXJBbmRTb3VyY2VTaXplOworICAgIGNvbnN0IHNpemVfdCB1cmxG
aWx0ZXJzT2Zmc2V0ID0gYWN0aW9uc09mZnNldCArIGRhdGEubWV0YURhdGEuYWN0aW9uc1NpemU7
CisgICAgY29uc3Qgc2l6ZV90IHRvcFVSTEZpbHRlcnNPZmZzZXQgPSB1cmxGaWx0ZXJzT2Zmc2V0
ICsgZGF0YS5tZXRhRGF0YS51cmxGaWx0ZXJzQnl0ZWNvZGVTaXplOworICAgIGNvbnN0IHNpemVf
dCBmcmFtZVVSTEZpbHRlcnNPZmZzZXQgPSB0b3BVUkxGaWx0ZXJzT2Zmc2V0ICsgZGF0YS5tZXRh
RGF0YS50b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOworCiAgICAgYXV0byBjb21waWxlZENvbnRl
bnRSdWxlTGlzdERhdGEgPSBXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSgK
ICAgICAgICAgV1RGOjpTdHJpbmcoaWRlbnRpZmllciksCiAgICAgICAgIHNoYXJlZE1lbW9yeS5y
ZWxlYXNlTm9uTnVsbCgpLAotICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplLAorICAgICAgICBh
Y3Rpb25zT2Zmc2V0LAogICAgICAgICBkYXRhLm1ldGFEYXRhLmFjdGlvbnNTaXplLAotICAgICAg
ICBoZWFkZXJBbmRTb3VyY2VTaXplCi0gICAgICAgICAgICArIGRhdGEubWV0YURhdGEuYWN0aW9u
c1NpemUsCi0gICAgICAgIGRhdGEubWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0
ZWNvZGVTaXplLAotICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplCi0gICAgICAgICAgICArIGRh
dGEubWV0YURhdGEuYWN0aW9uc1NpemUKLSAgICAgICAgICAgICsgZGF0YS5tZXRhRGF0YS5maWx0
ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUsCi0gICAgICAgIGRhdGEubWV0YURhdGEu
ZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplLAotICAgICAgICBoZWFkZXJBbmRTb3Vy
Y2VTaXplCi0gICAgICAgICAgICArIGRhdGEubWV0YURhdGEuYWN0aW9uc1NpemUKLSAgICAgICAg
ICAgICsgZGF0YS5tZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUK
LSAgICAgICAgICAgICsgZGF0YS5tZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29k
ZVNpemUsCi0gICAgICAgIGRhdGEubWV0YURhdGEuY29uZGl0aW9uZWRGaWx0ZXJzQnl0ZWNvZGVT
aXplLAotICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplCi0gICAgICAgICAgICArIGRhdGEubWV0
YURhdGEuYWN0aW9uc1NpemUKLSAgICAgICAgICAgICsgZGF0YS5tZXRhRGF0YS5maWx0ZXJzV2l0
aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUKLSAgICAgICAgICAgICsgZGF0YS5tZXRhRGF0YS5m
aWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUKLSAgICAgICAgICAgICsgZGF0YS5tZXRh
RGF0YS5jb25kaXRpb25lZEZpbHRlcnNCeXRlY29kZVNpemUsCisgICAgICAgIHVybEZpbHRlcnNP
ZmZzZXQsCisgICAgICAgIGRhdGEubWV0YURhdGEudXJsRmlsdGVyc0J5dGVjb2RlU2l6ZSwKKyAg
ICAgICAgdG9wVVJMRmlsdGVyc09mZnNldCwKKyAgICAgICAgZGF0YS5tZXRhRGF0YS50b3BVUkxG
aWx0ZXJzQnl0ZWNvZGVTaXplLAorICAgICAgICBmcmFtZVVSTEZpbHRlcnNPZmZzZXQsCiAgICAg
ICAgIGRhdGEubWV0YURhdGEuZnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplCiAgICAgKTsKICAg
ICBhdXRvIGNvbXBpbGVkQ29udGVudFJ1bGVMaXN0ID0gV2ViS2l0OjpXZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoY29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhKSk7
CkBAIC00NTQsMzAgKzQ0NywyNSBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZ2V0Q29udGVudFJ1bGVM
aXN0U291cmNlRnJvbU1hcHBlZEZpbGUoY29uc3QgTWFwcGVkRGF0YSYgbWFwcAogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgc3dpdGNoIChtYXBwZWREYXRhLm1ldGFE
YXRhLnZlcnNpb24pIHsKLSAgICBjYXNlIDk6Ci0gICAgY2FzZSAxMDoKLSAgICBjYXNlIDExOgot
ICAgIGNhc2UgMTI6Ci0gICAgY2FzZSAxMzoKLSAgICAgICAgaWYgKCFtYXBwZWREYXRhLm1ldGFE
YXRhLnNvdXJjZVNpemUpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgCi0g
ICAgICAgIGF1dG8gaGVhZGVyU2l6ZUJ5dGVzID0gaGVhZGVyU2l6ZShtYXBwZWREYXRhLm1ldGFE
YXRhLnZlcnNpb24pOwotICAgICAgICBib29sIGlzOEJpdCA9IG1hcHBlZERhdGEuZGF0YS5kYXRh
KClbaGVhZGVyU2l6ZUJ5dGVzXTsKLSAgICAgICAgc2l6ZV90IHN0YXJ0ID0gaGVhZGVyU2l6ZUJ5
dGVzICsgc2l6ZW9mKGJvb2wpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gbWFwcGVkRGF0YS5t
ZXRhRGF0YS5zb3VyY2VTaXplIC0gc2l6ZW9mKGJvb2wpOwotICAgICAgICBpZiAoaXM4Qml0KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6U3RyaW5nKG1hcHBlZERhdGEuZGF0YS5kYXRhKCkgKyBz
dGFydCwgbGVuZ3RoKTsKLSAgICAgICAgaWYgKGxlbmd0aCAlIHNpemVvZihVQ2hhcikpIHsKLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVQ2hhcio+KG1hcHBlZERhdGEuZGF0YS5kYXRhKCkgKyBzdGFydCksIGxlbmd0aCAvIHNp
emVvZihVQ2hhcikpOworICAgIGlmIChtYXBwZWREYXRhLm1ldGFEYXRhLnZlcnNpb24gPCA5KSB7
CisgICAgICAgIC8vIE9sZGVyIHZlcnNpb25zIGNhbm5vdCByZWNvdmVyIHRoZSBvcmlnaW5hbCBK
U09OIHNvdXJjZSBmcm9tIGRpc2suCisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAg
Ly8gT2xkZXIgdmVyc2lvbnMgY2Fubm90IHJlY292ZXIgdGhlIG9yaWdpbmFsIEpTT04gc291cmNl
IGZyb20gZGlzay4KLSAgICByZXR1cm4geyB9OworICAgIGlmICghbWFwcGVkRGF0YS5tZXRhRGF0
YS5zb3VyY2VTaXplKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBoZWFkZXJTaXpl
Qnl0ZXMgPSBoZWFkZXJTaXplKG1hcHBlZERhdGEubWV0YURhdGEudmVyc2lvbik7CisgICAgYm9v
bCBpczhCaXQgPSBtYXBwZWREYXRhLmRhdGEuZGF0YSgpW2hlYWRlclNpemVCeXRlc107CisgICAg
c2l6ZV90IHN0YXJ0ID0gaGVhZGVyU2l6ZUJ5dGVzICsgc2l6ZW9mKGJvb2wpOworICAgIHNpemVf
dCBsZW5ndGggPSBtYXBwZWREYXRhLm1ldGFEYXRhLnNvdXJjZVNpemUgLSBzaXplb2YoYm9vbCk7
CisgICAgaWYgKGlzOEJpdCkKKyAgICAgICAgcmV0dXJuIFdURjo6U3RyaW5nKG1hcHBlZERhdGEu
ZGF0YS5kYXRhKCkgKyBzdGFydCwgbGVuZ3RoKTsKKyAgICBpZiAobGVuZ3RoICUgc2l6ZW9mKFVD
aGFyKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUNoYXIqPihtYXBwZWREYXRhLmRhdGEuZGF0YSgpICsgc3RhcnQpLCBsZW5ndGggLyBzaXplb2Yo
VUNoYXIpKTsKIH0KIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6bG9va3VwQ29udGVudFJ1
bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxBUEk6OkNvbnRlbnRSdWxlTGlzdD4sIHN0ZDo6ZXJyb3JfY29kZSk+IGNvbXBs
ZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuaAppbmRleCAyMDgzNGQ3ODhlNDAzNjE0MWNmOTJiZTU0ZjQz
MWJjYjhhNjBlZjY0Li5iNjQ4NThlMmQyN2UwODI0ZDg1ZmNjOWM1ZGIxNjc1MTUzZTBkM2I3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuaApAQCAtNTQsOSArNTQsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKICAgICAvLyBUaGlzIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBldmVyeSB0aW1l
IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgbWFkZSB0byB0aGUgYnl0ZWNvZGUsIGZpbGUgZm9ybWF0
LCBldGMuCiAgICAgLy8gdG8gcHJldmVudCBjcmFzaGluZyB3aGlsZSBsb2FkaW5nIG9sZCBkYXRh
LgotICAgIC8vIEFsc28gdXBkYXRlIGdldENvbnRlbnRSdWxlTGlzdFNvdXJjZUZyb21NYXBwZWRG
aWxlIHRvIGJlIGFibGUgdG8gZmluZCB0aGUgb3JpZ2luYWwgSlNPTgotICAgIC8vIHNvdXJjZSBm
cm9tIG9sZCB2ZXJzaW9ucy4KLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IEN1cnJlbnRD
b250ZW50UnVsZUxpc3RGaWxlVmVyc2lvbiA9IDEzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgQ3VycmVudENvbnRlbnRSdWxlTGlzdEZpbGVWZXJzaW9uID0gMTQ7CiAKICAgICBzdGF0
aWMgQ29udGVudFJ1bGVMaXN0U3RvcmUmIGRlZmF1bHRTdG9yZSgpOwogICAgIHN0YXRpYyBSZWY8
Q29udGVudFJ1bGVMaXN0U3RvcmU+IHN0b3JlV2l0aFBhdGgoY29uc3QgV1RGOjpTdHJpbmcmIHN0
b3JlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggZWMwNmE1MmQwODJmYjU0YzNhMTI4YzIwMmNmOWZh
NGJjMWY1YjM5My4uYzNkZjE1M2UwZTZhMjdmYjY3MDQxNzAwM2EzNGQzMGI4MWM1NWMyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcApAQCAtMzYxLDYgKzM2MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAoZG9jdW1lbnQpIHsKICAgICAg
ICAgbG9hZFBhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50
KCkudXJsKCk7CisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmZyYW1lVVJMID0gZG9jdW1lbnQtPnVy
bCgpOwogICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBwYXNzaW5nIHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIsIHRoZSBOZXR3b3JrUHJvY2VzcyBzaG91bGQgYmUgYWJsZSB0byBn
ZXQgaXQgdXNpbmcgd2ViUGFnZUlkLgogICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IHdlYkZy
YW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHIpCiAgICAgICAgICAgICBsb2FkUGFyYW1l
dGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gd2ViUGFnZS0+dXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcigpOwpAQCAtNzUyLDYgKzc1Myw3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGxvYWRQ
YXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgp
OworICAgIGxvYWRQYXJhbWV0ZXJzLmZyYW1lVVJMID0gZG9jdW1lbnQtPnVybCgpOwogICAgIC8v
IEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciwgd2Ugc2hvdWxkIGp1c3QgcGFzcyB3ZWJQYWdlSWQgdG8gTmV0d29ya1Byb2Nlc3MuCiAgICAg
bG9hZFBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciA9IHdlYlBhZ2Ut
PnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJmY2NmZGQzOTFlOGQwYzg0
MjU5OThkMjQwZDdiNGM4NzZhMDBmZmUuLjM0YzlkZDE4MjExNzk3Zjk0NWM2NjE3MzY0OGRkMzUz
ZDZlYzQ3YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFsbG93IFdLQ29udGVudFJ1bGVMaXN0IHRv
IHJ1biByZWdleGVzIG9uIGN1cnJlbnQgZnJhbWUncyBVUkwsIG5vdCBqdXN0IHRvcCBmcmFtZSdz
IFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
ODg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6bWFpbkRvY3VtZW50UmVxdWVzdCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpzdWJSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKwogMjAyMS0xMi0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIE1vdmUgaWYtZG9tYWluIGFuZCB1bmxlc3MtZG9tYWluIGNvbnZl
cnNpb24gdG8gV0tDb250ZW50UnVsZUxpc3QgcGFyc2luZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggZjAy
MzVjMmMzM2U2OGI3M2Y3YzE5MjQzZTdlOWMwOTg0YmQ5MzI0Ny4uNmZiYWFkZWEwNDFiM2E3YWZi
NGQwNjQ1OTg3NzZhNjNlYzZjOWQyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC02Myw4ICs2Myw3IEBA
IHB1YmxpYzoKIAogc3RydWN0IENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEgewogICAgIFZl
Y3RvcjxDb250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZEFjdGlvbkJ5dGU+IGFjdGlvbnM7Ci0g
ICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4gZmlsdGVyc1dpdGhvdXRD
b25kaXRpb25zOwotICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+IGZp
bHRlcnNXaXRoQ29uZGl0aW9uczsKKyAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5
dGVjb2RlPiB1cmxGaWx0ZXJzOwogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0
ZWNvZGU+IHRvcFVSTEZpbHRlcnM7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFC
eXRlY29kZT4gZnJhbWVVUkxGaWx0ZXJzOwogfTsKQEAgLTc1LDUyICs3NCw2MiBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9kYXRhKGRhdGEpCiAgICAgewogICAgICAgICBFWFBFQ1RfRVEoZGF0YS5h
Y3Rpb25zLnNpemUoKSwgMHVsbCk7Ci0gICAgICAgIEVYUEVDVF9FUShkYXRhLmZpbHRlcnNXaXRo
b3V0Q29uZGl0aW9ucy5zaXplKCksIDB1bGwpOwotICAgICAgICBFWFBFQ1RfRVEoZGF0YS5maWx0
ZXJzV2l0aENvbmRpdGlvbnMuc2l6ZSgpLCAwdWxsKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEu
dXJsRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAgICAgICBFWFBFQ1RfRVEoZGF0YS50b3BVUkxG
aWx0ZXJzLnNpemUoKSwgMHVsbCk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmZyYW1lVVJMRmls
dGVycy5zaXplKCksIDB1bGwpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHdyaXRlU291
cmNlKFN0cmluZyYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHdyaXRlU291cmNlKFN0cmluZyYmKSBm
aW5hbAorICAgIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHNvdXJjZVdyaXR0ZW4pOworICAgICAg
ICBzb3VyY2VXcml0dGVuID0gdHJ1ZTsKKyAgICB9CiAKLSAgICB2b2lkIHdyaXRlQWN0aW9ucyhW
ZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRlPiYmIGFjdGlvbnMp
IGZpbmFsCisgICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPFNlcmlhbGl6ZWRBY3Rpb25CeXRl
PiYmIGFjdGlvbnMpIGZpbmFsCiAgICAgeworICAgICAgICBFWFBFQ1RfVFJVRShzb3VyY2VXcml0
dGVuKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbmFsaXplZCk7CiAgICAgICAgIEVYUEVDVF9F
UShtX2RhdGEuYWN0aW9ucy5zaXplKCksIDB1bGwpOwotICAgICAgICBFWFBFQ1RfRVEobV9kYXRh
LmZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5zaXplKCksIDB1bGwpOwotICAgICAgICBFWFBFQ1Rf
RVEobV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5zaXplKCksIDB1bGwpOworICAgICAgICBF
WFBFQ1RfRVEobV9kYXRhLnVybEZpbHRlcnMuc2l6ZSgpLCAwdWxsKTsKICAgICAgICAgRVhQRUNU
X0VRKG1fZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSwgMHVsbCk7Ci0gICAgICAgIEVYUEVDVF9F
UShtX2RhdGEuYWN0aW9ucy5zaXplKCksIDB1bGwpOworICAgICAgICBFWFBFQ1RfRVEobV9kYXRh
LmZyYW1lVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAgICAgICBtX2RhdGEuYWN0aW9ucy5h
cHBlbmRWZWN0b3IoYWN0aW9ucyk7CiAgICAgfQogICAgIAotICAgIHZvaWQgd3JpdGVGaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5
dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAorICAgIHZvaWQgd3JpdGVVUkxGaWx0ZXJzQnl0ZWNv
ZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAogICAgIHsKKyAgICAgICAg
RVhQRUNUX1RSVUUoc291cmNlV3JpdHRlbik7CiAgICAgICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6
ZWQpOwotICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5zaXpl
KCksIDB1bGwpOwogICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLnRvcFVSTEZpbHRlcnMuc2l6ZSgp
LCAwdWxsKTsKLSAgICAgICAgbV9kYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9ucy5hcHBlbmRW
ZWN0b3IoYnl0ZWNvZGUpOworICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmZyYW1lVVJMRmlsdGVy
cy5zaXplKCksIDB1bGwpOworICAgICAgICBtX2RhdGEudXJsRmlsdGVycy5hcHBlbmRWZWN0b3Io
Ynl0ZWNvZGUpOwogICAgIH0KLSAgICAKLSAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhDb25kaXRp
b25zQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4mJiBieXRl
Y29kZSkgZmluYWwKKworICAgIHZvaWQgd3JpdGVUb3BVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9y
PERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAogICAgIHsKKyAgICAgICAgRVhQRUNUX1RS
VUUoc291cmNlV3JpdHRlbik7CiAgICAgICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6ZWQpOwotICAg
ICAgICBFWFBFQ1RfRVEobV9kYXRhLnRvcFVSTEZpbHRlcnMuc2l6ZSgpLCAwdWxsKTsKLSAgICAg
ICAgbV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwor
ICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmZyYW1lVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOwor
ICAgICAgICBtX2RhdGEudG9wVVJMRmlsdGVycy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwogICAg
IH0KLSAgICAKLSAgICB2b2lkIHdyaXRlVG9wVVJMRmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxDb250
ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCisKKyAgICB2b2lk
IHdyaXRlRnJhbWVVUkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVj
b2RlKSBmaW5hbAogICAgIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoc291cmNlV3JpdHRlbik7CiAg
ICAgICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6ZWQpOwotICAgICAgICBtX2RhdGEudG9wVVJMRmls
dGVycy5hcHBlbmRWZWN0b3IoYnl0ZWNvZGUpOworICAgICAgICBtX2RhdGEuZnJhbWVVUkxGaWx0
ZXJzLmFwcGVuZFZlY3RvcihieXRlY29kZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgZmluYWxp
emUoKSBmaW5hbAogICAgIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoc291cmNlV3JpdHRlbik7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6ZWQpOwogICAgICAgICBmaW5hbGl6ZWQgPSB0cnVl
OwogICAgIH0KIAogICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEmIG1fZGF0YTsKKyAg
ICBib29sIHNvdXJjZVdyaXR0ZW4geyBmYWxzZSB9OwogICAgIGJvb2wgZmluYWxpemVkIHsgZmFs
c2UgfTsKIH07CiAKQEAgLTE0Myw4ICsxNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
U3Bhbjxjb25zdCB1aW50OF90PiBzZXJpYWxpemVkQWN0aW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHsgbV9kYXRhLmFjdGlvbnMuZGF0YSgpLCBtX2RhdGEuYWN0aW9ucy5zaXplKCkgfTsgfQot
ICAgIFNwYW48Y29uc3QgdWludDhfdD4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB7IG1fZGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnMu
ZGF0YSgpLCBtX2RhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zLnNpemUoKSB9OyB9Ci0gICAg
U3Bhbjxjb25zdCB1aW50OF90PiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHsgbV9kYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9ucy5kYXRhKCksIG1f
ZGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnMuc2l6ZSgpIH07IH0KKyAgICBTcGFuPGNvbnN0IHVp
bnQ4X3Q+IHVybEZpbHRlcnNCeXRlY29kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgbV9kYXRh
LnVybEZpbHRlcnMuZGF0YSgpLCBtX2RhdGEudXJsRmlsdGVycy5zaXplKCkgfTsgfQogICAgIFNw
YW48Y29uc3QgdWludDhfdD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4geyBtX2RhdGEudG9wVVJMRmlsdGVycy5kYXRhKCksIG1fZGF0YS50b3BVUkxGaWx0ZXJz
LnNpemUoKSB9OyB9CiAgICAgU3Bhbjxjb25zdCB1aW50OF90PiBmcmFtZVVSTEZpbHRlcnNCeXRl
Y29kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgbV9kYXRhLmZyYW1lVVJMRmlsdGVycy5kYXRh
KCksIG1fZGF0YS5mcmFtZVVSTEZpbHRlcnMuc2l6ZSgpIH07IH0KIApAQCAtMTg1LDE0ICsxOTMs
MjEgQEAgdm9pZCBzdGF0aWMgdGVzdFJlcXVlc3RJbXBsKGludCBsaW5lLCBjb25zdCBDb250ZW50
RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnMKICAgICBFWFBFQ1RfRVEoYWN0aW9ucy5zZWNv
bmQuc2l6ZSgpLCBzdHlsZXNoZWV0cyk7CiB9CiAKLXN0YXRpYyBSZXNvdXJjZUxvYWRJbmZvIG1h
aW5Eb2N1bWVudFJlcXVlc3QoY29uc3QgY2hhciogdXJsLCBSZXNvdXJjZVR5cGUgcmVzb3VyY2VU
eXBlID0gUmVzb3VyY2VUeXBlOjpEb2N1bWVudCkKK3N0YXRpYyBSZXNvdXJjZUxvYWRJbmZvIG1h
aW5Eb2N1bWVudFJlcXVlc3QoY29uc3QgY2hhciogdXJsU3RyaW5nLCBSZXNvdXJjZVR5cGUgcmVz
b3VyY2VUeXBlID0gUmVzb3VyY2VUeXBlOjpEb2N1bWVudCkKIHsKLSAgICByZXR1cm4geyBVUkwo
VVJMKCksIHVybCksIFVSTChVUkwoKSwgdXJsKSwgcmVzb3VyY2VUeXBlIH07CisgICAgVVJMIHVy
bChVUkwoKSwgdXJsU3RyaW5nKTsKKyAgICByZXR1cm4geyB1cmwsIHVybCwgdXJsLCByZXNvdXJj
ZVR5cGUgfTsKIH0KIAotc3RhdGljIFJlc291cmNlTG9hZEluZm8gc3ViUmVzb3VyY2VSZXF1ZXN0
KGNvbnN0IGNoYXIqIHVybCwgY29uc3QgY2hhciogbWFpbkRvY3VtZW50VVJMLCBSZXNvdXJjZVR5
cGUgcmVzb3VyY2VUeXBlID0gUmVzb3VyY2VUeXBlOjpEb2N1bWVudCkKK3N0YXRpYyBSZXNvdXJj
ZUxvYWRJbmZvIHN1YlJlc291cmNlUmVxdWVzdChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIq
IG1haW5Eb2N1bWVudFVSTFN0cmluZywgUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSA9IFJlc291
cmNlVHlwZTo6RG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIHsgVVJMKFVSTCgpLCB1cmwpLCBVUkwo
VVJMKCksIG1haW5Eb2N1bWVudFVSTCksIHJlc291cmNlVHlwZSB9OworICAgIFVSTCBtYWluRG9j
dW1lbnRVUkwoVVJMKCksIG1haW5Eb2N1bWVudFVSTFN0cmluZyk7CisgICAgcmV0dXJuIHsgVVJM
KFVSTCgpLCB1cmwpLCBtYWluRG9jdW1lbnRVUkwsIG1haW5Eb2N1bWVudFVSTCwgcmVzb3VyY2VU
eXBlIH07Cit9CisKK3N0YXRpYyBSZXNvdXJjZUxvYWRJbmZvIHJlcXVlc3RJblRvcEFuZEZyYW1l
VVJMcyhjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRvcFVSTCwgY29uc3QgY2hhciogZnJh
bWVVUkwsIFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUgPSBSZXNvdXJjZVR5cGU6OkRvY3VtZW50
KQoreworICAgIHJldHVybiB7IFVSTChVUkwoKSwgdXJsKSwgVVJMKFVSTCgpLCB0b3BVUkwpLCBV
UkwoVVJMKCksIGZyYW1lVVJMKSwgcmVzb3VyY2VUeXBlIH07CiB9CiAKIENvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgbWFrZUJhY2tlbmQoY29uc3QgY2hhcioganNv
bikKQEAgLTk3MCw5ICs5ODUsOSBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIFN0cmlu
Z0NvbWJpbmluZykKICAgICBBU1NFUlRfRVEoc2VxdWVuY2VJbnN0YW5jZXMoZGF0YS5hY3Rpb25z
LCAiR0dHIiksIDEpOwogCiAgICAgQVNTRVJUX0VRKGRhdGEuYWN0aW9ucy5zaXplKCksIDcydSk7
Ci0gICAgQVNTRVJUX0VRKGRhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zLnNpemUoKSwgMjg4
dSk7Ci0gICAgQVNTRVJUX0VRKGRhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zLnNpemUoKSwgNXUp
OworICAgIEFTU0VSVF9FUShkYXRhLnVybEZpbHRlcnMuc2l6ZSgpLCAyODh1KTsKICAgICBBU1NF
UlRfRVEoZGF0YS50b3BVUkxGaWx0ZXJzLnNpemUoKSwgNXUpOworICAgIEFTU0VSVF9FUShkYXRh
LmZyYW1lVVJMRmlsdGVycy5zaXplKCksIDV1KTsKIAogICAgIGF1dG8gZXh0ZW5zaW9uV2l0aEZs
YWdzID0gSW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZSgiWyIKICAgICAg
ICAgIntcImFjdGlvblwiOntcInR5cGVcIjpcIm5vdGlmeVwiLFwibm90aWZpY2F0aW9uXCI6XCJB
QUFcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiQVwifX0sIgpAQCAtMTEyMywxMyAr
MTEzOCwxMyBAQCBURVNUX0YoQ29udGVudEV4dGVuc2lvblRlc3QsIExvYWRUeXBlKQogICAgICAg
ICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZp
bHRlclwiOlwiYWx3YXlzYmxvY2sucGRmXCJ9fV0iKTsKICAgICAKICAgICB0ZXN0UmVxdWVzdChi
YWNrZW5kLCBtYWluRG9jdW1lbnRSZXF1ZXN0KCJodHRwOi8vd2Via2l0Lm9yZyIpLCB7IH0pOwot
ICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIHsgVVJMKFVSTCgpLCAiaHR0cDovL3dlYmtpdC5vcmci
KSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF93ZWJraXQub3JnIiksIFJlc291cmNlVHlwZTo6RG9j
dW1lbnQgfSwgeyB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrTG9hZEFjdGlv
bj4gfSk7CisgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgeyBVUkwoVVJMKCksICJodHRwOi8vd2Vi
a2l0Lm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90X3dlYmtpdC5vcmciKSwgVVJMKFVSTCgp
LCAiaHR0cDovL25vdF93ZWJraXQub3JnIiksIFJlc291cmNlVHlwZTo6RG9jdW1lbnQgfSwgeyB2
YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrTG9hZEFjdGlvbj4gfSk7CiAgICAg
ICAgIAogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6
Ly93aGF0d2cub3JnIiksIHsgdmFyaWFudEluZGV4PENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja0xv
YWRBY3Rpb24+IH0pOwotICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQsIHsgVVJMKFVSTCgpLCAiaHR0
cDovL3doYXR3Zy5vcmciKSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF93aGF0d2cub3JnIiksIFJl
c291cmNlVHlwZTo6RG9jdW1lbnQgfSwgeyB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCB7
IFVSTChVUkwoKSwgImh0dHA6Ly93aGF0d2cub3JnIiksIFVSTChVUkwoKSwgImh0dHA6Ly9ub3Rf
d2hhdHdnLm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90X3doYXR3Zy5vcmciKSwgUmVzb3Vy
Y2VUeXBlOjpEb2N1bWVudCB9LCB7IH0pOwogICAgIAogICAgIHRlc3RSZXF1ZXN0KGJhY2tlbmQs
IG1haW5Eb2N1bWVudFJlcXVlc3QoImh0dHA6Ly9mb29iYXIub3JnL2Fsd2F5c2Jsb2NrLnBkZiIp
LCB7IHZhcmlhbnRJbmRleDxDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tMb2FkQWN0aW9uPiB9KTsK
LSAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCB7IFVSTChVUkwoKSwgImh0dHA6Ly9mb29iYXIub3Jn
L2Fsd2F5c2Jsb2NrLnBkZiIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90X2Zvb2Jhci5vcmcvYWx3
YXlzYmxvY2sucGRmIiksIFJlc291cmNlVHlwZTo6RG9jdW1lbnQgfSwgeyB2YXJpYW50SW5kZXg8
Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrTG9hZEFjdGlvbj4gfSk7CisgICAgdGVzdFJlcXVlc3Qo
YmFja2VuZCwgeyBVUkwoVVJMKCksICJodHRwOi8vZm9vYmFyLm9yZy9hbHdheXNibG9jay5wZGYi
KSwgVVJMKFVSTCgpLCAiaHR0cDovL25vdF9mb29iYXIub3JnL2Fsd2F5c2Jsb2NrLnBkZiIpLCBV
UkwoVVJMKCksICJodHRwOi8vbm90X2Zvb2Jhci5vcmcvYWx3YXlzYmxvY2sucGRmIiksIFJlc291
cmNlVHlwZTo6RG9jdW1lbnQgfSwgeyB2YXJpYW50SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6OkJs
b2NrTG9hZEFjdGlvbj4gfSk7CiB9CiAKIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgUmVz
b3VyY2VUeXBlKQpAQCAtMTE2Niw4ICsxMTgxLDggQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25U
ZXN0LCBSZXNvdXJjZU9yTG9hZFR5cGVNYXRjaGluZ0V2ZXJ5dGhpbmcpCiAgICAgICAgICJ7XCJh
Y3Rpb25cIjp7XCJ0eXBlXCI6XCJpZ25vcmUtcHJldmlvdXMtcnVsZXNcIn0sXCJ0cmlnZ2VyXCI6
e1widXJsLWZpbHRlclwiOlwiLipcIixcImxvYWQtdHlwZVwiOltcImZpcnN0LXBhcnR5XCJdfX1d
Iik7CiAgICAgCiAgICAgdGVzdFJlcXVlc3QoYmFja2VuZCwgbWFpbkRvY3VtZW50UmVxdWVzdCgi
aHR0cDovL3dlYmtpdC5vcmciKSwgeyB9LCAwKTsKLSAgICB0ZXN0UmVxdWVzdChiYWNrZW5kLCB7
IFVSTChVUkwoKSwgImh0dHA6Ly93ZWJraXQub3JnIiksIFVSTChVUkwoKSwgImh0dHA6Ly9ub3Rf
d2Via2l0Lm9yZyIpLCBSZXNvdXJjZVR5cGU6OkRvY3VtZW50IH0sIHsgdmFyaWFudEluZGV4PENv
bnRlbnRFeHRlbnNpb25zOjpCbG9ja0Nvb2tpZXNBY3Rpb24+IH0pOwotICAgIHRlc3RSZXF1ZXN0
KGJhY2tlbmQsIHsgVVJMKFVSTCgpLCAiaHR0cDovL3dlYmtpdC5vcmciKSwgVVJMKFVSTCgpLCAi
aHR0cDovL25vdF93ZWJraXQub3JnIiksIFJlc291cmNlVHlwZTo6SW1hZ2UgfSwgeyB2YXJpYW50
SW5kZXg8Q29udGVudEV4dGVuc2lvbnM6OkJsb2NrQ29va2llc0FjdGlvbj4sIHZhcmlhbnRJbmRl
eDxDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tMb2FkQWN0aW9uPiB9KTsKKyAgICB0ZXN0UmVxdWVz
dChiYWNrZW5kLCB7IFVSTChVUkwoKSwgImh0dHA6Ly93ZWJraXQub3JnIiksIFVSTChVUkwoKSwg
Imh0dHA6Ly9ub3Rfd2Via2l0Lm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90X3dlYmtpdC5v
cmciKSwgUmVzb3VyY2VUeXBlOjpEb2N1bWVudCB9LCB7IHZhcmlhbnRJbmRleDxDb250ZW50RXh0
ZW5zaW9uczo6QmxvY2tDb29raWVzQWN0aW9uPiB9KTsKKyAgICB0ZXN0UmVxdWVzdChiYWNrZW5k
LCB7IFVSTChVUkwoKSwgImh0dHA6Ly93ZWJraXQub3JnIiksIFVSTChVUkwoKSwgImh0dHA6Ly9u
b3Rfd2Via2l0Lm9yZyIpLCBVUkwoVVJMKCksICJodHRwOi8vbm90X3dlYmtpdC5vcmciKSwgUmVz
b3VyY2VUeXBlOjpJbWFnZSB9LCB7IHZhcmlhbnRJbmRleDxDb250ZW50RXh0ZW5zaW9uczo6Qmxv
Y2tDb29raWVzQWN0aW9uPiwgdmFyaWFudEluZGV4PENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja0xv
YWRBY3Rpb24+IH0pOwogfQogICAgIAogVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBXaWRl
TkZBKQpAQCAtMTU0MCw2ICsxNTU1LDcgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBJ
bnZhbGlkSlNPTikKIAogICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiW3tcImFjdGlvblwiOntcInR5
cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIndlYmtpdC5vcmdc
IixcImlmLWRvbWFpblwiOltcImFcIl0sXCJ1bmxlc3MtZG9tYWluXCI6W1wiYVwiXX19XSIsIENv
bnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11bHRpcGxlQ29uZGl0aW9ucyk7CiAgICAgY2hlY2tD
b21waWxlckVycm9yKCJbe1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2Vy
XCI6e1widXJsLWZpbHRlclwiOlwid2Via2l0Lm9yZ1wiLFwiaWYtdG9wLXVybFwiOltcImFcIl0s
XCJ1bmxlc3MtdG9wLXVybFwiOltdfX1dIiwgQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVs
dGlwbGVDb25kaXRpb25zKTsKKyAgICBjaGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7
XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQu
b3JnXCIsXCJpZi10b3AtdXJsXCI6W1wiYVwiXSxcImlmLWZyYW1lLXVybFwiOltdfX1dIiwgQ29u
dGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zKTsKICAgICBjaGVja0Nv
bXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRyaWdnZXJc
Ijp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi10b3AtdXJsXCI6W1wiYVwiXSxc
InVubGVzcy10b3AtdXJsXCI6W1wiYVwiXX19XSIsIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNP
Tk11bHRpcGxlQ29uZGl0aW9ucyk7CiAgICAgY2hlY2tDb21waWxlckVycm9yKCJbe1wiYWN0aW9u
XCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwid2Vi
a2l0Lm9yZ1wiLFwiaWYtZG9tYWluXCI6W1wiYVwiXSxcImlmLXRvcC11cmxcIjpbXCJhXCJdfX1d
IiwgQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zKTsKICAgICBj
aGVja0NvbXBpbGVyRXJyb3IoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wifSxcInRy
aWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJ3ZWJraXQub3JnXCIsXCJpZi10b3AtdXJsXCI6W10s
XCJ1bmxlc3MtZG9tYWluXCI6W1wiYVwiXX19XSIsIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNP
Tk11bHRpcGxlQ29uZGl0aW9ucyk7CkBAIC0zMDUzLDYgKzMwNjksMzQgQEAgVEVTVF9GKENvbnRl
bnRFeHRlbnNpb25UZXN0LCBTZXJpYWxpemF0aW9uKQogICAgIEVYUEVDVF9FUShtb2RpZnlIZWFk
ZXJzLCBkZXNlcmlhbGl6ZWRNb2RpZnlIZWFkZXJzKTsKIH0KIAorVEVTVF9GKENvbnRlbnRFeHRl
bnNpb25UZXN0LCBJZkZyYW1lVVJMKQoreworICAgIGF1dG8gYmFzaWMgPSBtYWtlQmFja2VuZCgi
W3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0
ZXJcIjpcImh0dHBzXCIsIFwiaWYtZnJhbWUtdXJsXCI6W1wid2hhdHdnXCJdfX1dIik7CisgICAg
dGVzdFJlcXVlc3QoYmFzaWMsIHJlcXVlc3RJblRvcEFuZEZyYW1lVVJMcygiaHR0cHM6Ly9leGFt
cGxlLmNvbS8iLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIsICJodHRwczovL3doYXR3Zy5vcmcvIiks
IHsgdmFyaWFudEluZGV4PEJsb2NrTG9hZEFjdGlvbj4gfSk7CisgICAgdGVzdFJlcXVlc3QoYmFz
aWMsIHJlcXVlc3RJblRvcEFuZEZyYW1lVVJMcygiaHR0cHM6Ly9leGFtcGxlLmNvbS8iLCAiaHR0
cHM6Ly93ZWJraXQub3JnLyIsICJodHRwczovL3dlYmtpdC5vcmcvIiksIHsgfSk7CisKKyAgICBh
dXRvIGNhc2VTZW5zaXRpdml0eSA9IG1ha2VCYWNrZW5kKCJbe1wiYWN0aW9uXCI6e1widHlwZVwi
OlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiaHR0cHNcIiwgXCJpZi1m
cmFtZS11cmxcIjpbXCJ3aGF0d2dcIl0sXCJmcmFtZS11cmwtZmlsdGVyLWlzLWNhc2Utc2Vuc2l0
aXZlXCI6dHJ1ZX19XSIpOworICAgIGF1dG8gY2FzZVNlbnNpdGl2aXR5UmVxdWVzdCA9IHJlcXVl
c3RJblRvcEFuZEZyYW1lVVJMcygiaHR0cHM6Ly9leGFtcGxlLmNvbS8iLCAiaHR0cHM6Ly93ZWJr
aXQub3JnLyIsICJodHRwczovL2V4YW1wbGUuY29tL3dIYVR3RyIpOworICAgIHRlc3RSZXF1ZXN0
KGJhc2ljLCBjYXNlU2Vuc2l0aXZpdHlSZXF1ZXN0LCB7IHZhcmlhbnRJbmRleDxCbG9ja0xvYWRB
Y3Rpb24+IH0pOworICAgIHRlc3RSZXF1ZXN0KGNhc2VTZW5zaXRpdml0eSwgY2FzZVNlbnNpdGl2
aXR5UmVxdWVzdCwgeyB9KTsKKworICAgIGF1dG8gb3RoZXJGbGFncyA9IG1ha2VCYWNrZW5kKCJb
e1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRl
clwiOlwiaHR0cHNcIiwgXCJpZi1mcmFtZS11cmxcIjpbXCJ3aGF0d2dcIl0sXCJyZXNvdXJjZS10
eXBlXCI6W1wiaW1hZ2VcIl19fV0iKTsKKyAgICB0ZXN0UmVxdWVzdChvdGhlckZsYWdzLCByZXF1
ZXN0SW5Ub3BBbmRGcmFtZVVSTHMoImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgImh0dHBzOi8vd2Vi
a2l0Lm9yZy8iLCAiaHR0cHM6Ly93aGF0d2cub3JnLyIsIFJlc291cmNlVHlwZTo6RG9jdW1lbnQp
LCB7IH0pOworICAgIHRlc3RSZXF1ZXN0KG90aGVyRmxhZ3MsIHJlcXVlc3RJblRvcEFuZEZyYW1l
VVJMcygiaHR0cHM6Ly9leGFtcGxlLmNvbS8iLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIsICJodHRw
czovL3doYXR3Zy5vcmcvIiwgUmVzb3VyY2VUeXBlOjpJbWFnZSksIHsgdmFyaWFudEluZGV4PEJs
b2NrTG9hZEFjdGlvbj4gfSk7CisKKyAgICBhdXRvIG90aGVyUnVsZXNXaXRoQ29uZGl0aW9ucyA9
IG1ha2VCYWNrZW5kKCJbIgorICAgICAgICAie1wiYWN0aW9uXCI6e1widHlwZVwiOlwiYmxvY2tc
In0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiaHR0cHNcIiwgXCJpZi1mcmFtZS11cmxc
IjpbXCJ3aGF0d2dcIl19fSwiCisgICAgICAgICJ7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9j
ay1jb29raWVzXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcImh0dHBzXCIsIFwiaWYt
dG9wLXVybFwiOltcImV4YW1wbGVcIl19fSIKKyAgICAiXSIpOworICAgIHRlc3RSZXF1ZXN0KG90
aGVyUnVsZXNXaXRoQ29uZGl0aW9ucywgcmVxdWVzdEluVG9wQW5kRnJhbWVVUkxzKCJodHRwczov
L2V4YW1wbGUuY29tLyIsICJodHRwczovL3dlYmtpdC5vcmcvIiwgImh0dHBzOi8vd2hhdHdnLm9y
Zy8iKSwgeyB2YXJpYW50SW5kZXg8QmxvY2tMb2FkQWN0aW9uPiB9KTsKKyAgICB0ZXN0UmVxdWVz
dChvdGhlclJ1bGVzV2l0aENvbmRpdGlvbnMsIHJlcXVlc3RJblRvcEFuZEZyYW1lVVJMcygiaHR0
cHM6Ly9leGFtcGxlLmNvbS8iLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iLCAiaHR0cHM6Ly93ZWJr
aXQub3JnLyIpLCB7IHZhcmlhbnRJbmRleDxCbG9ja0Nvb2tpZXNBY3Rpb24+IH0pOworICAgIHRl
c3RSZXF1ZXN0KG90aGVyUnVsZXNXaXRoQ29uZGl0aW9ucywgcmVxdWVzdEluVG9wQW5kRnJhbWVV
UkxzKCJodHRwczovL2V4YW1wbGUuY29tLyIsICJodHRwczovL2V4YW1wbGUuY29tLyIsICJodHRw
czovL3doYXR3Zy5vcmcvIiksIHsgdmFyaWFudEluZGV4PEJsb2NrQ29va2llc0FjdGlvbj4sIHZh
cmlhbnRJbmRleDxCbG9ja0xvYWRBY3Rpb24+IH0pOworICAgIAorICAgIGF1dG8gbWF0Y2hpbmdF
dmVyeXRoaW5nID0gbWFrZUJhY2tlbmQoIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJibG9ja1wi
fSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCJodHRwc1wiLCBcImlmLWZyYW1lLXVybFwi
OltcIi4qXCJdfX1dIik7CisgICAgdGVzdFJlcXVlc3QobWF0Y2hpbmdFdmVyeXRoaW5nLCByZXF1
ZXN0SW5Ub3BBbmRGcmFtZVVSTHMoImh0dHBzOi8vZXhhbXBsZS5jb20vIiwgImh0dHBzOi8vd2Vi
a2l0Lm9yZy8iLCAiaHR0cHM6Ly93aGF0d2cub3JnLyIpLCB7IHZhcmlhbnRJbmRleDxCbG9ja0xv
YWRBY3Rpb24+IH0pOworICAgIHRlc3RSZXF1ZXN0KG1hdGNoaW5nRXZlcnl0aGluZywgcmVxdWVz
dEluVG9wQW5kRnJhbWVVUkxzKCJodHRwOi8vZXhhbXBsZS5jb20vIiwgImh0dHBzOi8vd2Via2l0
Lm9yZy8iLCAiaHR0cHM6Ly93ZWJraXQub3JnLyIpLCB7IH0pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGY4NWI1MzQxNzMxYzBkZTk4MWE3YWEzNGE5NTc4MWZlOGY0MGU3MzkuLjMyOTg2NDk2
NTQyYmVmNmViZGY5MGUwMjliZjNiZWYzMzAwZjkwYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMS0xMi0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIEFsbG93IFdLQ29udGVudFJ1bGVMaXN0IHRvIHJ1biByZWdleGVzIG9uIGN1cnJl
bnQgZnJhbWUncyBVUkwsIG5vdCBqdXN0IHRvcCBmcmFtZSdzIFVSTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODg5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRl
bnNpb25zL2ZyYW1lLXVybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvY29udGVudGV4dGVuc2lvbnMvZnJhbWUtdXJsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZnJhbWUtdXJsLmh0bWwuanNvbjogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvaWZyYW1lLmh0
bWw6IEFkZGVkLgorCiAyMDIxLTEyLTEwICBHYWJyaWVsIE5hdmEgTWFyaW5vICA8Z25hdmFtYXJp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIG51bGxwdHIgZGVyZWYgaW4gQ29tcHV0ZUZsb2F0T2Zm
c2V0Rm9yTGluZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46OnVwZGF0
ZU9mZnNldElmTmVlZGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRl
bnRleHRlbnNpb25zL2ZyYW1lLXVybC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NvbnRlbnRleHRlbnNpb25zL2ZyYW1lLXVybC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGQ0ZDA2MWE2Mjg1MmQ5MDBiNzFjMGY1ODFiYTc0Mzk3M2JjZjU5ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvZnJhbWUtdXJsLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogQ29udGVudCBibG9j
a2VyIHByZXZlbnRlZCBmcmFtZSBkaXNwbGF5aW5nIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250
ZW50ZXh0ZW5zaW9ucy9mcmFtZS11cmwuaHRtbCBmcm9tIGxvYWRpbmcgYSByZXNvdXJjZSBmcm9t
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvaWZyYW1l
Lmh0bWwKK0NPTlNPTEUgTUVTU0FHRTogUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2Nr
ZXIKK0NPTlNPTEUgTUVTU0FHRTogRmV0Y2ggQVBJIGNhbm5vdCBsb2FkIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvaWZyYW1lLmh0bWwgZHVlIHRvIGFj
Y2VzcyBjb250cm9sIGNoZWNrcy4KK0FMRVJUOiBmZXRjaCB3YXMgYmxvY2tlZAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL2ZyYW1lLXVybC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9mcmFtZS11cmwu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45NmMwZDkzOGM5YWMwYWM0YjllMWVhMzRkMTU0NzAzODMzNGFjMjA0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5z
aW9ucy9mcmFtZS11cmwuaHRtbApAQCAtMCwwICsxLDEzIEBACis8c2NyaXB0PgorICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CisgICAgICAgIGFsZXJ0KGV2ZW50
LmRhdGEpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfSk7Cis8L3NjcmlwdD4KKzxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvaWZyYW1lLmh0bWwiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9mcmFtZS11cmwuaHRtbC5q
c29uIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9mcmFtZS11cmwu
aHRtbC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhOGU5NWU3NzdiMmU2YjA5Y2VhZTdiMDk2YWZjZTdiODE1
NTY5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRl
eHRlbnNpb25zL2ZyYW1lLXVybC5odG1sLmpzb24KQEAgLTAsMCArMSwxMSBAQAorWworICAgIHsK
KyAgICAgICAgImFjdGlvbiI6IHsKKyAgICAgICAgICAgICJ0eXBlIjogImJsb2NrIgorICAgICAg
ICB9LAorICAgICAgICAidHJpZ2dlciI6IHsKKyAgICAgICAgICAgICJ1cmwtZmlsdGVyIjogIi4q
IiwKKyAgICAgICAgICAgICJpZi1mcmFtZS11cmwiOiBbImlmcmFtZS5odG1sIl0KKyAgICAgICAg
fQorICAgIH0KK10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4
dGVuc2lvbnMvcmVzb3VyY2VzL2lmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
b250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI2MDZl
OTJiZTc5YWY2ZGY4MmIwOWIwOGZhOTNiMzY3YWE1MGI0MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL2lmcmFtZS5o
dG1sCkBAIC0wLDAgKzEsNyBAQAorPHNjcmlwdD4KKyAgICBmZXRjaCgiaWZyYW1lLmh0bWwiKS50
aGVuKCgpPT57CisgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoImZldGNoIHdhcyBu
b3QgYmxvY2tlZCIsICIqIik7CisgICAgfSkuY2F0Y2goKCk9PnsKKyAgICAgICAgd2luZG93LnBh
cmVudC5wb3N0TWVzc2FnZSgiZmV0Y2ggd2FzIGJsb2NrZWQiLCAiKiIpOworICAgIH0pOworPC9z
Y3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>