<?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>217399</bug_id>
          
          <creation_ts>2020-10-06 11:55:11 -0700</creation_ts>
          <short_desc>Move ownership of DownloadClient from WebProcessPool to DownloadProxy</short_desc>
          <delta_ts>2020-10-06 12:40:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1695248</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 11:55:11 -0700</bug_when>
    <thetext>Move ownership of DownloadClient from WebProcessPool to DownloadProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695250</commentid>
    <comment_count>1</comment_count>
      <attachid>410674</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 11:56:41 -0700</bug_when>
    <thetext>Created attachment 410674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695251</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-10-06 11:57:29 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695257</commentid>
    <comment_count>3</comment_count>
      <attachid>410676</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 12:05:00 -0700</bug_when>
    <thetext>Created attachment 410676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695268</commentid>
    <comment_count>4</comment_count>
      <attachid>410676</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-10-06 12:34:33 -0700</bug_when>
    <thetext>Comment on attachment 410676
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        This will allow us to get a DownloadClient from elswehere.

Probably should mention or link to or vaguely whisper about the reason/long term plan (even a related bugzilla bug)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695273</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 12:39:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/r268065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695274</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-06 12:40:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/70011957&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410674</attachid>
            <date>2020-10-06 11:56:41 -0700</date>
            <delta_ts>2020-10-06 12:07:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217399-20201006115640.patch</filename>
            <type>text/plain</type>
            <size>66159</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlNWY2ZjIwZWEyZDRiOWI5
ODAzNTRmYzg5ZDA5Y2ViY2Y1NWQ1Y2EuLmVkN2I0ZTk1NmU3M2NiYWVlMTkwNGJjMmJkMzJkYTZj
ODkzYWQxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjAtMTAtMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIG93bmVy
c2hpcCBvZiBEb3dubG9hZENsaWVudCBmcm9tIFdlYlByb2Nlc3NQb29sIHRvIERvd25sb2FkUHJv
eHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM5
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGtl
ZXAgYmluYXJ5IGNvbXBhdGliaWxpdHksIHRoZSBXZWJQcm9jZXNzUG9vbCBoYXMgYSBudWxsYWJs
ZSBEb3dubG9hZENsaWVudCB0aGF0IGlzIHVzZWQgaWYgaXQgaGFzIGJlZW4gc2V0LgorICAgICAg
ICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gZ2V0IGEgRG93bmxvYWRDbGllbnQgZnJvbSBlbHN3ZWhl
cmUuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJv
Y2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaERvd25sb2Fk
Q2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbTogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tLgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6TGVnYWN5RG93bmxvYWRDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRD
cmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50
Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVu
dDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxv
YWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50Ojp0YWtlQWN0aXZpdHlUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURv
d25sb2FkQ2xpZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6aW52YWxp
ZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
UHJveHk6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6On5Eb3du
bG9hZFByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlN
YXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9h
ZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5RG93bmxvYWRDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTEwLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgogCiAgICAgICAgIEJyZWFrIHJlZmVyZW5jZSBjeWNsZSB3aXRoIE5TVVJM
U2Vzc2lvbkRhdGFUYXNrIGluIE5ldHdvcmtEYXRhVGFza0NvY29hCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggNjhjNDRiNDkzNTZkNTMyOWE4NjVlYTgyNmYyN2I2ZTNhMDMwNmJlZi4uZWU3ZTRk
Y2Q1NGNkMTdmN2E4MDY1YzkzYWUyNDIyMWVmNDViZjAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dApAQCAtMzY0LDcgKzM2NCw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vV0tT
T0F1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGll
bnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQogVUlQcm9j
ZXNzL0NvY29hL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tCi1VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQubW0KK1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQog
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkUHJveHlNYXBDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29h
L0ZpbmRDbGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9GdWxsc2NyZWVuQ2xpZW50Lm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDQ0
OGI3YWIxN2FjNTBjNjdlZGUwYzU3ZWRiMGIzZjYwY2ExZDIyOWYuLmYxNjIwYjYwYzNlYzEyOTkw
MmVhMTcwNTdlMmQ0OTYwYjAwMDk5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIGVudW0gY2xhc3MgQWxs
b3dPdmVyd3JpdGUgOiBib29sOwogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgRG93bmxvYWRD
bGllbnQgeworY2xhc3MgRG93bmxvYWRDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxEb3dubG9h
ZENsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmNwcAppbmRleCA1NjVhZDFiY2I3NDExOTNmZTFhNGM0NDkyYzYyZGI4MmJi
OTZhOGUwLi4zYmRmYWY3ZDBhM2NjNjkxYjk0M2Y0OGQzNWI0NTVkNjE3MDA2NDdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTE3MCw5ICsxNzAs
OSBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogCiB2b2lkIFdLQ29udGV4dFNldERvd25sb2Fk
Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewotICAgIGNsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVi
bGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6
OkRvd25sb2FkQ2xpZW50IHsKKyAgICBjbGFzcyBMZWdhY3lEb3dubG9hZENsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2U+LCBwdWJsaWMg
QVBJOjpEb3dubG9hZENsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBEb3du
bG9hZENsaWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCwgV0tD
b250ZXh0UmVmIGNvbnRleHQpCisgICAgICAgIGV4cGxpY2l0IExlZ2FjeURvd25sb2FkQ2xpZW50
KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50LCBXS0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdL
Q29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0Nv
bnRleHREb3dubG9hZENsaQogICAgICAgICB9CiAgICAgICAgIFdLQ29udGV4dFJlZiBtX2NvbnRl
eHQ7CiAgICAgfTsKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+c2V0RG93bmxvYWRDbGll
bnQobWFrZVVuaXF1ZVJlZjxEb3dubG9hZENsaWVudD4od2tDbGllbnQsIGNvbnRleHQpKTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+c2V0TGVnYWN5RG93bmxvYWRDbGllbnQoYWRvcHRS
ZWYoKm5ldyBMZWdhY3lEb3dubG9hZENsaWVudCh3a0NsaWVudCwgY29udGV4dCkpKTsKIH0KIAog
dm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4
IGRhZjRiZmFkYTJiOTUyNzRiMjE2MzNiZGFlNDJmMWEzNzE3MjQwYTMuLmU3OTViMzMyNmM3NmRm
OWQ5ZDg0MDM0MmY4ZGQxNGJiYmZhMTA3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNp
bXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKLSNpbXBv
cnQgIkRvd25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJMZWdhY3lEb3dubG9hZENsaWVudC5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgTlNE
aWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhhc2hNYXA8UwogLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25s
b2FkRGVsZWdhdGU+KWRvd25sb2FkRGVsZWdhdGUKIHsKICAgICBfZG93bmxvYWREZWxlZ2F0ZSA9
IGRvd25sb2FkRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudCht
YWtlVW5pcXVlUmVmPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsK
KyAgICBfcHJvY2Vzc1Bvb2wtPnNldExlZ2FjeURvd25sb2FkQ2xpZW50KGFkb3B0UmVmKCpuZXcg
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudChkb3dubG9hZERlbGVnYXRlKSkpOwogfQogCiAt
IChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENs
aWVudC5jcHAKaW5kZXggZThlODcwMjIwZDA1MmZlNmViYjJjZDg1MGQ5ZWVlOTg4ZWM2Yzk5Yy4u
MDA1OWEwYzA0ZWU1ZDExMTc5OWVhYzI0NWNmOTMyYjc1MmFhMTkxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcApAQCAtMzMsOSArMzMsOSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCi1jbGFzcyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBB
UEk6OkRvd25sb2FkQ2xpZW50IHsKK2NsYXNzIExlZ2FjeURvd25sb2FkQ2xpZW50IGZpbmFsIDog
cHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgewogcHVibGljOgotICAgIGV4cGxpY2l0IERvd25s
b2FkQ2xpZW50KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCisgICAgZXhwbGljaXQgTGVn
YWN5RG93bmxvYWRDbGllbnQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKICAgICAgICAg
OiBtX3dlYkNvbnRleHQod2ViQ29udGV4dCkKICAgICB7CiAgICAgfQpAQCAtMTMwLDUgKzEzMCw1
IEBAIHByaXZhdGU6CiAKIHZvaWQgYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vz
c1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZVJlZjxEb3dubG9h
ZENsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lEb3dubG9hZENsaWVudChtYWtlVW5pcXVlUmVmPExlZ2Fj
eURvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDM2ZDAwMDhi
YTIxN2FjMTA1Zjk4NDJkOTEyMmJkNmIzMTVjNWJlNDMuLjczNTkxNTNkNDczYjgxNjRkNTNjMTY2
MzdiYzI1NWM4YzZmYWVjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViQ29udGV4dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAgIGlmICgh
cHJpdi0+Y2xpZW50c0RldGFjaGVkKSB7CiAgICAgICAgIHByaXYtPmNsaWVudHNEZXRhY2hlZCA9
IHRydWU7CiAgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVu
dChudWxscHRyKTsKLSAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50
KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4oKSk7CisgICAgICAgIHByaXYtPnBy
b2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChudWxscHRyKTsKICAgICB9CiAKICAgICBpZiAo
cHJpdi0+ZmF2aWNvbkRhdGFiYXNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvRG93bmxvYWRDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFlYWUw
YTlmMmI1MDY3NWQ4NzUyOTdjZDgxZDQ0NDIzNGJhZjk5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9E
b3dubG9hZENsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKLQotI2ltcG9ydCAi
QVBJRG93bmxvYWRDbGllbnQuaCIKLSNpbXBvcnQgIlByb2Nlc3NUaHJvdHRsZXIuaCIKLSNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgotCi1AcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBEb3dubG9hZENs
aWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBEb3dubG9hZENsaWVudChpZCA8
X1dLRG93bmxvYWREZWxlZ2F0ZT4pOwotICAgIAotcHJpdmF0ZToKLSAgICAvLyBGcm9tIEFQSTo6
RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoRG93
bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsOwotICAgIHZv
aWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVy
d3JpdGUsIFN0cmluZyk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmluaXNoKERvd25sb2FkUHJv
eHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIGRpZENhbmNlbChEb3dubG9hZFBy
b3h5JikgZmluYWw7Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25s
b2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJikgZmlu
YWw7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYpIGZpbmFsOwotCi0j
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIHZvaWQgdGFrZUFjdGl2aXR5VG9rZW4oRG93bmxv
YWRQcm94eSYpOwotICAgIHZvaWQgcmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShEb3du
bG9hZFByb3h5Jik7Ci0jZW5kaWYKLQotICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tEb3dubG9hZERl
bGVnYXRlPj4gbV9kZWxlZ2F0ZTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFVTRShT
WVNURU1fUFJFVklFVykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5PiBtX2FjdGl2aXR5OwotI2VuZGlmCi0KLSAgICBzdHJ1Y3QgewotICAg
ICAgICBib29sIGRvd25sb2FkRGlkU3RhcnQgOiAxOyAgICAgICAgICAgIAotICAgICAgICBib29s
IGRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERp
ZFJlY2VpdmVEYXRhIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERpZFdyaXRlRGF0YVRvdGFs
Qnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSA6IDE7Ci0gICAgICAgIGJvb2wg
ZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3Zlcndy
aXRlIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwotICAgICAgICBib29sIGRvd25sb2Fk
RGlkRmluaXNoIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERpZEZhaWwgOiAxOwotICAgICAg
ICBib29sIGRvd25sb2FkRGlkQ2FuY2VsIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKLSAgICAg
ICAgYm9vbCBkb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlIDogMTsKLSAg
ICAgICAgYm9vbCBkb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uIDogMTsKLSAgICAgICAgYm9v
bCBkb3dubG9hZFByb2Nlc3NEaWRDcmFzaCA6IDE7Ci0gICAgfSBtX2RlbGVnYXRlTWV0aG9kczsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzZiOWUzZWFmYWRmMjk4ZmI4NzQ2NmJjN2IzZGI0NzkwYWZlZWQyNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Eb3dubG9hZENsaWVudC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDMwMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRvd25sb2FkQ2xp
ZW50LmgiCi0KLSNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIK
LSNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKLSNpbXBvcnQgIkF1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgotI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlci5oIgotI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgotI2ltcG9ydCAiTG9nZ2lu
Zy5oIgotI2ltcG9ydCAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKLSNpbXBvcnQgIldLTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2ltcG9ydCAiV0tOU1VSTEV4dHJhcy5oIgot
I2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgotI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1w
b3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbXBvcnQgIl9XS0Rvd25sb2FkRGVsZWdhdGUuaCIK
LSNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0jaW1wb3J0
IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1Eb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25s
b2FkRGVsZWdhdGU+IGRlbGVnYXRlKQotICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKLXsKLSAg
ICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFN0YXJ0ID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkRGlkU3RhcnQ6KV07Ci0gICAgbV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOildOwotICAg
IG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZURhdGEgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZURhdGE6KV07Ci0g
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRXcml0ZURhdGFUb3RhbEJ5dGVzV3JpdHRl
blRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGU6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRE
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRlID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmFsbG93T3ZlcndyaXRlOildOwotICAgIG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21w
bGV0aW9uSGFuZGxlcjopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZpbmlz
aCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZERpZEZp
bmlzaDopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZhaWwgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJv
cjopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZERpZENhbmNlbDopXTsKLSAg
ICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOildOwotICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOildOwotICAgIG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6c2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGU6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxv
YWREaWRDcmVhdGVEZXN0aW5hdGlvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF9kb3dubG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlvbjopXTsKLSAgICBtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZFByb2Nlc3NEaWRDcmFzaCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDopXTsKLX0KLQotI2lmIFVT
RShTWVNURU1fUFJFVklFVykKLXN0YXRpYyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciogc3lzdGVt
UHJldmlld0NvbnRyb2xsZXIoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKLXsKLSAgICBh
dXRvKiBwYWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKTsKLSAgICBpZiAoIXBh
Z2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBwYWdlLT5zeXN0ZW1QcmV2
aWV3Q29udHJvbGxlcigpOwotfQotI2VuZGlmCi0KLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0
YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCi17Ci0jaWYgVVNFKFNZU1RFTV9QUkVW
SUVXKQotICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFn
ZSgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXBkYXRlIHRoZSBNSU1FLXR5cGUgb25jZSBp
dCBpcyBrbm93biBpbiB0aGUgUmVzb3VyY2VSZXNwb25zZS4KLSAgICAgICAgICAgIHdlYlBhZ2Ut
PnN5c3RlbVByZXZpZXdDb250cm9sbGVyKCktPnN0YXJ0KFVSTChVUkwoKSwgd2ViUGFnZS0+Y3Vy
cmVudFVSTCgpKSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJfcywgZG93bmxvYWRQcm94eS5z
eXN0ZW1QcmV2aWV3RG93bmxvYWRJbmZvKCkpOwotICAgICAgICB9Ci0gICAgICAgIHRha2VBY3Rp
dml0eVRva2VuKGRvd25sb2FkUHJveHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAg
W21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV07Ci19
Ci0KLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKLXsKLSNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJveHkuaXNT
eXN0ZW1QcmV2aWV3RG93bmxvYWQoKSAmJiByZXNwb25zZS5pc1N1Y2Nlc3NmdWwoKSkgewotICAg
ICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5c3RlbVByZXZpZXdDb250cm9sbGVyKGRvd25s
b2FkUHJveHkpKQotICAgICAgICAgICAgY29udHJvbGxlci0+dXBkYXRlUHJvZ3Jlc3MoMCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKV07Ci19Ci0KLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWlu
dDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUpCi17Ci0jaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIGlmIChkb3dubG9hZFByb3h5Lmlz
U3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIg
PSBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihkb3dubG9hZFByb3h5KSkKLSAgICAgICAgICAgIGNv
bnRyb2xsZXItPnVwZGF0ZVByb2dyZXNzKHN0YXRpY19jYXN0PGZsb2F0Pih0b3RhbEJ5dGVzV3Jp
dHRlbikgLyB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNlbmRpZgotCi0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVE
YXRhVG90YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQotICAgICAgICBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0ZURhdGE6
Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07Ci0gICAgZWxzZSBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6
Ynl0ZXNXcml0dGVuXTsKLX0KLQotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewotICAgIC8v
IEZJWE1FOiBTeXN0ZW0gUHJldmlldyBuZWVkcyBjb2RlIGhlcmUuCi0gICAgaWYgKCFtX2RlbGVn
YXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmxpc3RlbmVy
KCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNl
bGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxl
dGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewotICAgICAgICBpZiAoY2hl
Y2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAg
ICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7Ci0gICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZVVzZUNyZWRlbnRpYWw6Ci0gICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsID8gV2ViQ29yZTo6Q3JlZGVudGlh
bChjcmVkZW50aWFsKSA6IFdlYkNvcmU6OkNyZWRlbnRpYWwoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRI
YW5kbGluZzoKLSAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigp
LmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBl
cmZvcm1EZWZhdWx0SGFuZGxpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAK
LSAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6Ci0gICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpDYW5jZWwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlOgotICAgICAg
ICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVu
Z2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNw
YWNlQW5kQ29udGludWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiAoJWxkKSIsIChsb25nKWRpc3Bvc2l0aW9uXTsKLSAgICAgICAgfQotICAgIH0p
LmdldCgpXTsKLX0KLQotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24o
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikK
LXsKLSNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgewotICAgICAgICBkb3dubG9hZFByb3h5LnNldERlc3RpbmF0
aW9uRmlsZW5hbWUoZGVzdGluYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlv
bikKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkg
ZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOwotfQotCi12b2lkIERvd25sb2FkQ2xp
ZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKLXsKLSNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2
aWV3RG93bmxvYWQoKSkgewotICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyKGRvd25sb2FkUHJveHkpKQotICAgICAgICAgICAgY29udHJvbGxlci0+
Y2FuY2VsKCk7Ci0gICAgICAgIHJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoZG93bmxv
YWRQcm94eSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmIChtX2Rl
bGVnYXRlTWV0aG9kcy5kb3dubG9hZFByb2Nlc3NEaWRDcmFzaCkKLSAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOwotfQot
Ci12b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotI2lmIFVTRShTWVNURU1fUFJFVklFVykKLSAgICBpZiAoZG93bmxvYWRQcm94eS5p
c1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7Ci0gICAgICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlE
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJTeXN0ZW1Q
cmV2aWV3cyIpOwotICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbdGVtcG9yYXJ5RGly
ZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlbmFtZV07Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKEFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVy
d3JpdGUgJiYgIW1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWVDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKEFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKLQotICAgIGlmIChtX2RlbGVn
YXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
QWxsb3dPdmVyd3JpdGUpIHsKLSAgICAgICAgQk9PTCBhbGxvd092ZXJ3cml0ZSA9IE5POwotICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBOU1N0cmlu
ZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxv
d092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOwotICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUg
PyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5h
bWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rv
cihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxl
dGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIHsKLSAg
ICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3Zl
cndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGlu
YXRpb24pOwotICAgICAgICB9KS5nZXQoKV07Ci0gICAgfQotfQotCi12b2lkIERvd25sb2FkQ2xp
ZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKLXsKLSNpZiBVU0Uo
U1lTVEVNX1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93
bmxvYWQoKSkgewotICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5c3RlbVByZXZpZXdD
b250cm9sbGVyKGRvd25sb2FkUHJveHkpKSB7Ci0gICAgICAgICAgICBhdXRvIGRlc3RpbmF0aW9u
VVJMID0gV1RGOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoZG93bmxvYWRQcm94eS5k
ZXN0aW5hdGlvbkZpbGVuYW1lKCkpOwotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvblVSTC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblVSTC5z
ZXRGcmFnbWVudElkZW50aWZpZXIoZG93bmxvYWRQcm94eS5yZXF1ZXN0KCkudXJsKCkuZnJhZ21l
bnRJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgY29udHJvbGxlci0+ZmluaXNoKGRlc3RpbmF0
aW9uVVJMKTsKLSAgICAgICAgfQotICAgICAgICByZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNz
YXJ5KGRvd25sb2FkUHJveHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAg
ICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2gpCi0gICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKLX0KLQot
dm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSNpZiBVU0UoU1lTVEVN
X1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQo
KSkgewotICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5c3RlbVByZXZpZXdDb250cm9s
bGVyKGRvd25sb2FkUHJveHkpKQotICAgICAgICAgICAgY29udHJvbGxlci0+ZmFpbChlcnJvcik7
Ci0gICAgICAgIHJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoZG93bmxvYWRQcm94eSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZEZhaWwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkUHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKLX0K
LQotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHkpCi17Ci0jaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIGlmIChkb3dubG9hZFByb3h5
LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xs
ZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihkb3dubG9hZFByb3h5KSkKLSAgICAgICAgICAg
IGNvbnRyb2xsZXItPmNhbmNlbCgpOwotICAgICAgICByZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVj
ZXNzYXJ5KGRvd25sb2FkUHJveHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0K
LSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDYW5jZWwpCi0gICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKLX0K
LQotdm9pZCBEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAobV9k
ZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1
ZXN0LnVybCgpLnN0cmluZygpXV07Ci0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKLX0KLQotI2lmIFVTRShTWVNURU1fUFJFVklFVykKLXZvaWQgRG93bmxvYWRDbGll
bnQ6OnRha2VBY3Rpdml0eVRva2VuKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCi17Ci0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRvd25sb2Fk
UHJveHkub3JpZ2luYXRpbmdQYWdlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUYod2ViUGFn
ZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBV
SVByb2Nlc3MgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcyBk
b3dubG9hZGluZyBhIHN5c3RlbSBwcmV2aWV3IiwgdGhpcyk7Ci0gICAgICAgIEFTU0VSVCghbV9h
Y3Rpdml0eSk7Ci0gICAgICAgIG1fYWN0aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCkudGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJfcykubW92
ZVRvVW5pcXVlUHRyKCk7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZG93bmxvYWRQ
cm94eSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBEb3dubG9hZENsaWVudDo6cmVsZWFzZUFjdGl2aXR5
VG9rZW5JZk5lY2Vzc2FyeShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQotewotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKG1fYWN0aXZpdHkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUYoZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKS0+aXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgVUlQcm9jZXNzIGlzIHJlbGVhc2lu
ZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSBzeXN0ZW0gcHJldmlldyBkb3dubG9h
ZCBjb21wbGV0ZWQiLCB0aGlzKTsKLSAgICAgICAgbV9hY3Rpdml0eSA9IG51bGxwdHI7Ci0gICAg
fQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZG93bmxvYWRQcm94eSk7Ci0jZW5kaWYKLX0KLSNl
bmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiM2U3YTg2
OTZiNDVhMzAyMmY5MWY5NzgwZTBmNjMzNGY2NzUyYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCkBAIC0wLDAg
KzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJRG93bmxv
YWRDbGllbnQuaCIKKyNpbXBvcnQgIlByb2Nlc3NUaHJvdHRsZXIuaCIKKyNpbXBvcnQgIldLRm91
bmRhdGlvbi5oIgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0Bwcm90b2NvbCBfV0tE
b3dubG9hZERlbGVnYXRlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVy
cm9yOworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIExlZ2FjeURvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxp
Y2l0IExlZ2FjeURvd25sb2FkQ2xpZW50KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPik7CisgICAg
Citwcml2YXRlOgorICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAorICAgIHZvaWQgZGlk
U3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2
NF90LCB1aW50NjRfdCkgZmluYWw7CisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
bmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRGaW5pc2goRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFp
bChEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25s
b2FkUHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHByb2Nlc3NEaWRDcmFz
aChEb3dubG9hZFByb3h5JikgZmluYWw7CisKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAg
dm9pZCB0YWtlQWN0aXZpdHlUb2tlbihEb3dubG9hZFByb3h5Jik7CisgICAgdm9pZCByZWxlYXNl
QWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KERvd25sb2FkUHJveHkmKTsKKyNlbmRpZgorCisgICAg
V2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBtX2RlbGVnYXRlOworCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYWN0aXZpdHk7
CisjZW5kaWYKKworICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgZG93bmxvYWREaWRTdGFydCA6
IDE7ICAgICAgICAgICAgCisgICAgICAgIGJvb2wgZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2Ug
OiAxOworICAgICAgICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZURhdGEgOiAxOworICAgICAgICBi
b29sIGRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlIDogMTsKKyAgICAgICAgYm9vbCBkb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUgOiAxOworICAgICAgICBib29sIGRvd25s
b2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21wbGV0aW9uSGFuZGxl
ciA6IDE7CisgICAgICAgIGJvb2wgZG93bmxvYWREaWRGaW5pc2ggOiAxOworICAgICAgICBib29s
IGRvd25sb2FkRGlkRmFpbCA6IDE7CisgICAgICAgIGJvb2wgZG93bmxvYWREaWRDYW5jZWwgOiAx
OworICAgICAgICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwgOiAx
OworICAgICAgICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIGRvd25sb2FkU2hvdWxkRGVjb2Rl
U291cmNlRGF0YU9mTUlNRVR5cGUgOiAxOworICAgICAgICBib29sIGRvd25sb2FkRGlkQ3JlYXRl
RGVzdGluYXRpb24gOiAxOworICAgICAgICBib29sIGRvd25sb2FkUHJvY2Vzc0RpZENyYXNoIDog
MTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9h
ZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2Fk
Q2xpZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMTJkODQ3YjY2OWI3M2NjNjNhMzYwZTVhMWFiOWMwZjNk
N2UxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9M
ZWdhY3lEb3dubG9hZENsaWVudC5tbQpAQCAtMCwwICsxLDMwMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMZWdhY3lEb3dubG9hZENsaWVudC5oIgor
CisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCisjaW1wb3J0
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW1wb3J0ICJBdXRoZW50aWNhdGlv
bkRlY2lzaW9uTGlzdGVuZXIuaCIKKyNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXIuaCIKKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNp
bXBvcnQgIlN5c3RlbVByZXZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQg
IldlYkNyZWRlbnRpYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgiCisjaW1wb3J0
ICJfV0tEb3dubG9hZEludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworTGVnYWN5RG93bmxvYWRDbGllbnQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50KGlkIDxfV0tE
b3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCit7
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZERpZFN0YXJ0OildOworICAgIG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25zZTopXTsK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVEYXRhOild
OworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dy
aXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTphbGxvd092ZXJ3cml0ZTopXTsKKyAgICBt
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRG
aW5pc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWRE
aWRGaW5pc2g6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGYWlsID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZEZhaWxXaXRo
RXJyb3I6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDYW5jZWwgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWREaWRDYW5jZWw6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5k
b3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKKyAgICBt
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBl
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOnNob3Vs
ZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRv
d25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246KV07CisgICAgbV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6KV07Cit9CisKKyNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCitzdGF0aWMgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIqIHN5
c3RlbVByZXZpZXdDb250cm9sbGVyKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit7Cisg
ICAgYXV0byogcGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcGFnZS0+c3lzdGVt
UHJldmlld0NvbnRyb2xsZXIoKTsKK30KKyNlbmRpZgorCit2b2lkIExlZ2FjeURvd25sb2FkQ2xp
ZW50OjpkaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQoreworI2lmIFVTRShT
WVNURU1fUFJFVklFVykKKyAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3du
bG9hZCgpKSB7CisgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQcm94eS5vcmln
aW5hdGluZ1BhZ2UoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFVwZGF0ZSB0aGUgTUlNRS10
eXBlIG9uY2UgaXQgaXMga25vd24gaW4gdGhlIFJlc291cmNlUmVzcG9uc2UuCisgICAgICAgICAg
ICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5zdGFydChVUkwoVVJMKCksIHdl
YlBhZ2UtPmN1cnJlbnRVUkwoKSksICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iX3MsIGRvd25s
b2FkUHJveHkuc3lzdGVtUHJldmlld0Rvd25sb2FkSW5mbygpKTsKKyAgICAgICAgfQorICAgICAg
ICB0YWtlQWN0aXZpdHlUb2tlbihkb3dubG9hZFByb3h5KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCisgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkU3RhcnQp
CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIoZG93bmxvYWRQ
cm94eSldOworfQorCit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCit7CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIGlmIChk
b3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkgJiYgcmVzcG9uc2UuaXNTdWNj
ZXNzZnVsKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcihkb3dubG9hZFByb3h5KSkKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPnVwZGF0
ZVByb2dyZXNzKDApOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAo
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UpCisgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVSZXNw
b25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOworfQorCit2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50
NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQoreworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAg
ICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CisgICAgICAg
IGlmIChhdXRvKiBjb250cm9sbGVyID0gc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoZG93bmxvYWRQ
cm94eSkpCisgICAgICAgICAgICBjb250cm9sbGVyLT51cGRhdGVQcm9ncmVzcyhzdGF0aWNfY2Fz
dDxmbG9hdD4odG90YWxCeXRlc1dyaXR0ZW4pIC8gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZFdyaXRlRGF0YVRvdGFsQnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSkKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3Rh
bEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGVdOworICAgIGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVj
ZWl2ZURhdGEpCisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpIGRpZFJlY2VpdmVEYXRhOmJ5dGVzV3JpdHRlbl07Cit9CisKK3ZvaWQgTGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSkKK3sKKyAgICAvLyBGSVhNRTogU3lzdGVtIFByZXZpZXcgbmVlZHMg
Y29kZSBoZXJlLgorICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGlu
Zyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNy
ZWRlbnRpYWwpIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgeworICAg
ICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsOgorICAgICAg
ICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVu
Z2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY3Jl
ZGVudGlhbCA/IFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBXZWJDb3JlOjpDcmVk
ZW50aWFsKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAgICAgICBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgorICAgICAgICAgICAgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJl
amVjdFByb3RlY3Rpb25TcGFjZToKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxp
ZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gKCVsZCkiLCAobG9uZylkaXNw
b3NpdGlvbl07CisgICAgICAgIH0KKyAgICB9KS5nZXQoKV07Cit9CisKK3ZvaWQgTGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisjaWYgVVNFKFNZU1RFTV9QUkVW
SUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsK
KyAgICAgICAgZG93bmxvYWRQcm94eS5zZXREZXN0aW5hdGlvbkZpbGVuYW1lKGRlc3RpbmF0aW9u
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKG1fZGVsZWdhdGVN
ZXRob2RzLmRvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24pCisgICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRl
c3RpbmF0aW9uXTsKK30KKwordm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENy
YXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit7CisjaWYgVVNFKFNZU1RFTV9QUkVW
SUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihk
b3dubG9hZFByb3h5KSkKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPmNhbmNlbCgpOworICAgICAg
ICByZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KGRvd25sb2FkUHJveHkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93
bmxvYWRQcm9jZXNzRGlkQ3Jhc2gpCisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nl
c3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKK30KKwordm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248
dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2
aWV3RG93bmxvYWQoKSkgeworICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmlld3MiKTsK
KyAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW3RlbXBvcmFyeURpcmVjdG9yeSBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZW5hbWVdOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6WWVzLCBkZXN0aW5hdGlvbik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKworICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRE
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRlICYmICFt
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisKKyAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3Zlcndy
aXRlKSB7CisgICAgICAgIEJPT0wgYWxsb3dPdmVyd3JpdGUgPSBOTzsKKyAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0
aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6
JmFsbG93T3ZlcndyaXRlXTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVy
d3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOworICAgIH0gZWxz
ZSB7CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2Fk
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVy
OikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9P
TCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7CisgICAgICAgICAgICBp
ZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IEFs
bG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uKTsKKyAg
ICAgICAgfSkuZ2V0KCldOworICAgIH0KK30KKwordm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
ZGlkRmluaXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit7CisjaWYgVVNFKFNZU1RF
TV9QUkVWSUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2Fk
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcihkb3dubG9hZFByb3h5KSkgeworICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvblVSTCA9
IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGRvd25sb2FkUHJveHkuZGVzdGlu
YXRpb25GaWxlbmFtZSgpKTsKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25VUkwuaGFzRnJh
Z21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25VUkwuc2V0RnJh
Z21lbnRJZGVudGlmaWVyKGRvd25sb2FkUHJveHkucmVxdWVzdCgpLnVybCgpLmZyYWdtZW50SWRl
bnRpZmllcigpKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPmZpbmlzaChkZXN0aW5hdGlvblVS
TCk7CisgICAgICAgIH0KKyAgICAgICAgcmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShk
b3dubG9hZFByb3h5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaWYg
KG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNoKQorICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07Cit9CisKK3ZvaWQg
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisjaWYgVVNFKFNZU1RF
TV9QUkVWSUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2Fk
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcihkb3dubG9hZFByb3h5KSkKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPmZhaWwoZXJyb3Ip
OworICAgICAgICByZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KGRvd25sb2FkUHJveHkp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAobV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREaWRGYWlsKQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07Cit9
CisKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5KQoreworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICBpZiAoZG93bmxv
YWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBj
b250cm9sbGVyID0gc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoZG93bmxvYWRQcm94eSkpCisgICAg
ICAgICAgICBjb250cm9sbGVyLT5jYW5jZWwoKTsKKyAgICAgICAgcmVsZWFzZUFjdGl2aXR5VG9r
ZW5JZk5lY2Vzc2FyeShkb3dubG9hZFByb3h5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorCisgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ2FuY2VsKQorICAg
ICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6d3JhcHBlcihkb3dubG9hZFByb3h5
KV07Cit9CisKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkwpCisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhX
VEZTdHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOworCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7Cit9CisKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCit2b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50Ojp0YWtlQWN0aXZpdHlUb2tlbihEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5KQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKGF1dG8q
IHdlYlBhZ2UgPSBkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGKHdlYlBhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNz
U3VzcGVuc2lvbiwgIiVwIC0gVUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0
aW9uIGJlY2F1c2UgaXQgaXMgZG93bmxvYWRpbmcgYSBzeXN0ZW0gcHJldmlldyIsIHRoaXMpOwor
ICAgICAgICBBU1NFUlQoIW1fYWN0aXZpdHkpOworICAgICAgICBtX2FjdGl2aXR5ID0gd2ViUGFn
ZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiU3lzdGVtIHByZXZp
ZXcgZG93bmxvYWQiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOworICAgIH0KKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGRvd25sb2FkUHJveHkpOworI2VuZGlmCit9CisKK3ZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChtX2Fj
dGl2aXR5KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGKGRvd25sb2FkUHJveHkub3JpZ2luYXRp
bmdQYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNl
IGEgc3lzdGVtIHByZXZpZXcgZG93bmxvYWQgY29tcGxldGVkIiwgdGhpcyk7CisgICAgICAgIG1f
YWN0aXZpdHkgPSBudWxscHRyOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRvd25s
b2FkUHJveHkpOworI2VuZGlmCit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5j
cHAKaW5kZXggYjkyNmE3ZmI4ZTY3MmZhZTA1ZWVlNTI4Mzg2MmUxOGE4ODgxN2M4NC4uOWQzYmMz
ODYwOTMxYTlmOGU3NDRlODE1NWU3MjdhNmJjYTM4N2I1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtNDgsMTAgKzQ4
LDEwIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1E
b3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJv
eHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgRnJh
bWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2Up
CitEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25sb2Fk
UHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgQVBJOjpEb3dubG9hZENsaWVu
dCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3Qg
RnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1Bh
Z2UpCiAgICAgOiBtX2Rvd25sb2FkUHJveHlNYXAoZG93bmxvYWRQcm94eU1hcCkKICAgICAsIG1f
ZGF0YVN0b3JlKCZkYXRhU3RvcmUpCi0gICAgLCBtX3Byb2Nlc3NQb29sKCZwcm9jZXNzUG9vbCkK
KyAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZG93bmxvYWRJRChEb3dubG9hZElEOjpn
ZW5lcmF0ZSgpKQogICAgICwgbV9yZXF1ZXN0KHJlc291cmNlUmVxdWVzdCkKICAgICAsIG1fb3Jp
Z2luYXRpbmdQYWdlKG1ha2VXZWFrUHRyKG9yaWdpbmF0aW5nUGFnZSkpCkBAIC01OSwzNCArNTks
MjMgQEAgRG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiBkb3du
bG9hZFByb3h5TWFwLCBXZWJzaXRlRGF0YVN0b3IKIHsKIH0KIAotRG93bmxvYWRQcm94eTo6fkRv
d25sb2FkUHJveHkoKQotewotICAgIEFTU0VSVCghbV9wcm9jZXNzUG9vbCk7Ci19CitEb3dubG9h
ZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpID0gZGVmYXVsdDsKIAogdm9pZCBEb3dubG9hZFByb3h5
OjpjYW5jZWwoKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgaWYgKG1fZGF0YVN0b3JlKQogICAgICAgICBtX2RhdGFTdG9yZS0+bmV0d29ya1Byb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2FuY2VsRG93bmxvYWQobV9kb3du
bG9hZElEKSwgMCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSgpCiB7Ci0g
ICAgQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwotICAgIG1fcHJvY2Vzc1Bvb2wgPSBudWxscHRyOwog
ICAgIEFTU0VSVChtX2RhdGFTdG9yZSk7CiAgICAgbV9kYXRhU3RvcmUgPSBudWxscHRyOwogfQog
CiB2b2lkIERvd25sb2FkUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCiB7Ci0gICAgaWYgKCFtX3By
b2Nlc3NQb29sKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9h
ZENsaWVudCgpLnByb2Nlc3NEaWRDcmFzaCgqdGhpcyk7CisgICAgbV9jbGllbnQtPnByb2Nlc3NE
aWRDcmFzaCgqdGhpcyk7CiB9CiAKIFdlYlBhZ2VQcm94eSogRG93bmxvYWRQcm94eTo6b3JpZ2lu
YXRpbmdQYWdlKCkgY29uc3QKQEAgLTExNSwyNyArMTA0LDIxIEBAIHZvaWQgRG93bmxvYWRQcm94
eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHN1Z2dlCiAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENo
YWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBw
ZW5kKHJlcXVlc3QudXJsKCkpOwogCi0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFN0YXJ0KCp0
aGlzKTsKKyAgICBtX2NsaWVudC0+ZGlkU3RhcnQoKnRoaXMpOwogfQogCiB2b2lkIERvd25sb2Fk
UHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkK
IHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wgfHwgIW1fZGF0YVN0b3JlKQorICAgIGlmICghbV9k
YXRhU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShXVEZNb3Zl
KGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hhbGxlbmdlSUQsIG1ha2VSZWYoKm1fZGF0YVN0
b3JlLT5uZXR3b3JrUHJvY2VzcygpLmNvbm5lY3Rpb24oKSksIG51bGxwdHIpOwotICAgIG1fcHJv
Y2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmdldCgpKTsKKyAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5LmdldCgpKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIGlmICghbV9wcm9jZXNzUG9v
bCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS53aWxsU2VuZFJlcXVlc3QoKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJl
Y3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3Vy
Y2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgeworICAgIG1fY2xpZW50LT53aWxsU2VuZFJlcXVlc3Qo
KnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVx
dWVzdCkgewogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKG5ld1JlcXVlc3QudXJsKCkp
OwogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fZGF0YVN0b3JlKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTQ2LDI2ICsxMjksMTcgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXMKIAog
dm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVSZXNw
b25zZSgqdGhpcywgcmVzcG9uc2UpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
KnRoaXMsIHJlc3BvbnNlKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0
YSh1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQogewotICAgIGlmICghbV9wcm9jZXNzUG9v
bCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5kaWRSZWNlaXZlRGF0YSgqdGhpcywgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwg
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KCp0aGlzLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxv
d092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQ
b29sKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0sIHsgfSk7Ci0g
ICAgCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0
aXplU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3Zl
cndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIG11dGFibGUgeworICAgIG1fY2xpZW50LT5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEFsbG93T3Zlcndy
aXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIG11dGFibGUgewogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTE3NiwxOCArMTUwLDEyIEBAIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJiBzdWdnZXN0CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRlRGVz
dGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5k
aWRDcmVhdGVEZXN0aW5hdGlvbigqdGhpcywgcGF0aCk7CisgICAgbV9jbGllbnQtPmRpZENyZWF0
ZURlc3RpbmF0aW9uKCp0aGlzLCBwYXRoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRG
aW5pc2goKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRGaW5pc2goKnRoaXMpOworICAg
IG1fY2xpZW50LT5kaWRGaW5pc2goKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhl
IERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5
TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpAQCAtMjAzLDEyICsxNzEsOSBAQCBzdGF0aWMg
UmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEpCiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKQogewotICAgIGlmICgh
bV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9yZXN1bWVEYXRhID0gY3Jl
YXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50
KCkuZGlkRmFpbCgqdGhpcywgZXJyb3IpOworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBl
cnJvcik7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3Qg
dG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgq
dGhpcyk7CkBAIC0yMTgsNyArMTgzLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRDYW5jZWwo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKQogewogICAgIG1fcmVzdW1lRGF0
YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9h
ZENsaWVudCgpLmRpZENhbmNlbCgqdGhpcyk7CisgICAgbV9jbGllbnQtPmRpZENhbmNlbCgqdGhp
cyk7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8g
YmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgqdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuaAppbmRleCAxNThjNTZmMjQ5N2EwNDQ3MzU2OWZmN2E0NzIyOTg0NTAzYmY2ODAwLi4zZTc0
MDhjMWViZWRlYTRlN2FmMmQ5YjliYjFkOTIwOTVmZmMzNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTM2LDYgKzM2LDcg
QEAKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEYXRhOworY2xhc3MgRG93bmxvYWRDbGllbnQ7
CiBjbGFzcyBGcmFtZUluZm87CiB9CiAKQEAgLTUxLDcgKzUyLDYgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIERvd25sb2FkUHJveHlNYXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7Ci1jbGFz
cyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIGVudW0gY2xhc3Mg
QWxsb3dPdmVyd3JpdGUgOiBib29sOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBB
UEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0K
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAm
LCBXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7CisgICAg
ZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9y
ZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7CiAKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToK
IAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBSZWZQdHI8
V2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRhU3RvcmU7Ci0gICAgUmVmUHRyPFdlYlByb2Nlc3NQb29s
PiBtX3Byb2Nlc3NQb29sOworICAgIFJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2NsaWVudDsK
ICAgICBEb3dubG9hZElEIG1fZG93bmxvYWRJRDsKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IG1f
cmVzdW1lRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5TWFwLmNwcAppbmRleCBjYjM2ODExZTVjMDgwODA0NjA0N2YzODYwMDE2
Y2U4MDBjYWZlOGEzLi5lNjBhYjMxNzgzYzczZWE2ZWQ1MTFjNjc0Nzc0NzgzNjZkMzE1Yzk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHlNYXAuY3BwCkBAIC04MCw3ICs4MCw5IEBAIHZvaWQgRG93bmxvYWRQcm94eU1hcDo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkKIAogRG93bmxvYWRQcm94eSYgRG93bmxvYWRQ
cm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUs
IFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mbywgV2Vi
UGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UpCiB7Ci0gICAgYXV0byBkb3dubG9hZFByb3h5ID0g
RG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBkYXRhU3RvcmUsIHByb2Nlc3NQb29sLCByZXNv
dXJjZVJlcXVlc3QsIGZyYW1lSW5mbywgb3JpZ2luYXRpbmdQYWdlKTsKKyAgICBhdXRvKiBsZWdh
Y3lEb3dubG9hZENsaWVudCA9IHByb2Nlc3NQb29sLmxlZ2FjeURvd25sb2FkQ2xpZW50KCk7Cisg
ICAgUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+IGNsaWVudCA9IGxlZ2FjeURvd25sb2FkQ2xpZW50
ID8gUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+KCpsZWdhY3lEb3dubG9hZENsaWVudCkgOiBhZG9w
dFJlZigqbmV3IEFQSTo6RG93bmxvYWRDbGllbnQpOworICAgIGF1dG8gZG93bmxvYWRQcm94eSA9
IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgZGF0YVN0b3JlLCBXVEZNb3ZlKGNsaWVudCks
IHJlc291cmNlUmVxdWVzdCwgZnJhbWVJbmZvLCBvcmlnaW5hdGluZ1BhZ2UpOwogICAgIG1fZG93
bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2FkUHJveHkuY29w
eVJlZigpKTsKIAogICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJBZGRpbmcgZG93bmxvYWQgJSIg
UFJJdTY0ICIgdG8gVUlQcm9jZXNzIERvd25sb2FkUHJveHlNYXAiLCBkb3dubG9hZFByb3h5LT5k
b3dubG9hZElEKCkudG9VSW50NjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggYzNjYjg5NzZkOGRhMjVhNDllZjlhZTJkNWMxODlmOGRhZTgxYTBh
Yy4uOGQ5ODdiYjY2ZDE0MzQwODk2MTI4ZDczOTMwZjJhMWNhZGQ2OTlhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjQzLDcgKzI0Myw2IEBAIFdl
YlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbikKICAgICAsIG1fZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6
OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCiAgICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1h
a2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVu
dChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCiAgICAgLCBt
X3Zpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtMzg0LDkgKzM4Myw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3Rv
cnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDCiAgICAg
ICAgIG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KFVuaXF1ZVJlZjxBUEk6OkRvd25sb2Fk
Q2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5
RG93bmxvYWRDbGllbnQoUmVmUHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50KQogewot
ICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEZNb3ZlKGRvd25sb2FkQ2xpZW50KTsKKyAgICBtX2xl
Z2FjeURvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRp
b25DbGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCmluZGV4IDUxNWI5ODM5OGRjYzUwNmUxOTM3OTE5YzIzZTUyZTYxZWU5NjJl
MGMuLjE4MjY3NTI1ZWQ3MGQxZjZmOGUxNjI5NDM0YThkMmFjMjdiNjkxZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzcsNiArNzcsNyBAQCBjbGFzcyBE
b3dubG9hZENsaWVudDsKIGNsYXNzIEhUVFBDb29raWVTdG9yZTsKIGNsYXNzIEluamVjdGVkQnVu
ZGxlQ2xpZW50OwogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CitjbGFzcyBMZWdh
Y3lEb3dubG9hZENsaWVudDsKIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBQYWdlQ29uZmlndXJh
dGlvbjsKIH0KQEAgLTE2OSw3ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4m
Jik7CiAgICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRD
b25uZWN0aW9uQ2xpZW50QmFzZSopOwogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4mJik7Ci0gICAgdm9pZCBz
ZXREb3dubG9hZENsaWVudChVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJik7CisgICAg
dm9pZCBzZXRMZWdhY3lEb3dubG9hZENsaWVudChSZWZQdHI8QVBJOjpEb3dubG9hZENsaWVudD4m
Jik7CiAgICAgdm9pZCBzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1
dG9tYXRpb25DbGllbnQ+JiYpOwogCiAgICAgdm9pZCBzZXRDdXN0b21XZWJDb250ZW50U2Vydmlj
ZUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CkBAIC0yNzgsNyArMjc5LDcgQEAgcHVi
bGljOgogICAgIAogICAgIC8vIERvd25sb2Fkcy4KICAgICBEb3dubG9hZFByb3h5JiBjcmVhdGVE
b3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSwgY29uc3QgRnJhbWVJbmZvRGF0
YSYpOwotICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyByZXR1cm4g
bV9kb3dubG9hZENsaWVudC5nZXQoKTsgfQorICAgIEFQSTo6RG93bmxvYWRDbGllbnQqIGxlZ2Fj
eURvd25sb2FkQ2xpZW50KCkgeyByZXR1cm4gbV9sZWdhY3lEb3dubG9hZENsaWVudC5nZXQoKTsg
fQogCiAgICAgQVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCYgaGlzdG9yeUNsaWVudCgp
IHsgcmV0dXJuICptX2hpc3RvcnlDbGllbnQ7IH0KICAgICBXZWJDb250ZXh0Q2xpZW50JiBjbGll
bnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQpAQCAtNTk3LDcgKzU5OCw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29udGV4dENsaWVudCBtX2NsaWVudDsKICAgICBXZWJDb250ZXh0Q29ubmVjdGlvbkNs
aWVudCBtX2Nvbm5lY3Rpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21h
dGlvbkNsaWVudD4gbV9hdXRvbWF0aW9uQ2xpZW50OwotICAgIFVuaXF1ZVJlZjxBUEk6OkRvd25s
b2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OworICAgIFJlZlB0cjxBUEk6OkRvd25sb2FkQ2xp
ZW50PiBtX2xlZ2FjeURvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okxl
Z2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7CiAKICAgICBSZWZQdHI8
V2ViQXV0b21hdGlvblNlc3Npb24+IG1fYXV0b21hdGlvblNlc3Npb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NzIxMzU2MmFiYzFi
ZTM4NDJiZTMxZTg2MTczNzBkZTI4NzhjZDBhLi43NWE2ZDM4YTVmYTMxNzlmM2YzMTBiODMzOGI0
MDM0MDQxN2ViY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE0NDQsNyArMTQ0NCw3IEBACiAJCUExQTRGRTYxMThERDU0QTQwMEI1
RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxv
YWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExQURBRkI2MjM2OEU2QTgwMDlDQjc3NiAvKiBTaGFyZWRNZW1vcnkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBREFGQjUyMzY4RTRC
ODAwOUNCNzc2IC8qIFNoYXJlZE1lbW9yeS5jcHAgKi87IH07CiAJCUExQzUxMkM5MTkwNjU2RTUw
MDQ0ODkxNCAvKiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM1MTJDNzE5MDY1NkU1MDA0NDg5MTQgLyogV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oICovOyB9OwotCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEg
LyogRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICov
OyB9OworCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY2MzEx
MThFMEI3QzgwMDNBM0UyQSAvKiBMZWdhY3lEb3dubG9hZENsaWVudC5oICovOyB9OwogCQlBMUU2
ODg3MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFNjg4NkYxRjZFMkJBQjAwNzAwNkE2IC8q
IFF1YXJhbnRpbmVTUEkuaCAqLzsgfTsKIAkJQTFFQTAyMzgxREFCRkY3RTAwOTYwMjFGIC8qIFdL
Q29udGV4dE1lbnVMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFFQTAyMzYxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVMaXN0
ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUExRUEwMjQwMURBQzMxREIwMDk2MDIxRiAvKiBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUEwMjNF
MURBQzMxREIwMDk2MDIxRiAvKiBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuaCAqLzsgfTsK
QEAgLTQ1NDAsOCArNDU0MCw4IEBACiAJCUExQjlDQTM4MjI0NkU1NEEwMDNENkRDQSAvKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBheW1l
bnRDb29yZGluYXRvckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUM1
MTJDNjE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cDsgcGF0aCA9IGlvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTFDNTEyQzcxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUHJldmlld0xv
YWRlckNsaWVudC5oOyBwYXRoID0gaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8qIERvd25s
b2FkQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRG93
bmxvYWRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExREY2MzExMThF
MEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMZWdhY3lEb3dubG9hZENsaWVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFERjYzMTExOEUwQjdDODAwM0Ez
RTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExlZ2FjeURvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExRTY4ODZGMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFF1YXJhbnRpbmVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFF
QTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUVBMDIzNjFEQUJGRjdFMDA5NjAyMUYg
LyogV0tDb250ZXh0TWVudUxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQ29udGV4dE1lbnVMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjMwMyw4ICs2MzAzLDYgQEAKIAkJCQk5OTBEMjhCODFDNjUzOUEwMDA5ODY5NzcgLyogQXV0
b21hdGlvblNlc3Npb25DbGllbnQubW0gKi8sCiAJCQkJODM4OTFCNkExQTY4QzMwQjAwMzBGMzg2
IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJODM4OTFCNkIxQTY4QzMwQjAw
MzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tICovLAotCQkJCUExREY2MzExMThF
MEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovLAotCQkJCUExREY2MzEwMThFMEI3
QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSAqLywKIAkJCQk1QzJCMUFGNTIyM0MxRkQy
MDBCOTFDRjcgLyogRG93bmxvYWRQcm94eU1hcENvY29hLm1tICovLAogCQkJCTAwQjk2NjE4MThF
MjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8sCiAJCQkJMDBCOTY2MTcxOEUyNUFFMTAw
Q0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi8sCkBAIC02MzE2LDYgKzYzMTQsOCBAQAogCQkJCTUx
QzBDOTczMURERDc0RjAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tICovLAogCQkJ
CTdBODIxRjRCMUUyRjY2NDgwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQuaCAqLywKIAkJCQk3QTgyMUY0RDFFMkY2NzlFMDA2MDQ1NzcgLyogTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tICovLAorCQkJCUExREY2MzExMThFMEI3QzgwMDNBM0Uy
QSAvKiBMZWdhY3lEb3dubG9hZENsaWVudC5oICovLAorCQkJCUExREY2MzEwMThFMEI3QzgwMDNB
M0UyQSAvKiBMZWdhY3lEb3dubG9hZENsaWVudC5tbSAqLywKIAkJCQk0MTEyODZFRjIxQzhBOTBD
MDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMuaCAqLywKIAkJCQk0MTEyODZGMDIxQzhBOTBEMDAz
QTg1NTAgLyogTWVkaWFVdGlsaXRpZXMubW0gKi8sCiAJCQkJMUFCQzNERjQxODk5RTQzNzAwNEYw
NjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5oICovLApAQCAtMTA3ODMsNyArMTA3ODMsNiBAQAogCQkJ
CUMxODE3MzYxMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYxODlDQUMyNDc0OUYyRjAwRTU4RDgxIC8qIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERvd25sb2Fk
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxv
YWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMTQyNzA1MUMyM0Y4NEMwMEQ0MTE4MyAv
KiBEb3dubG9hZElELmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwNzFDMjNGODRDMDBENDEx
ODMgLyogRG93bmxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTI0MEVCQTIyMEEw
OEQyMDA1Q0ZDNjMgLyogRG93bmxvYWRNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMTA4NjgsNiAr
MTA4NjcsNyBAQAogCQkJCTI5ODRGNTg5MTY0QkEwOTUwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBRDMwOTMxNjRC
NEM1RDAwNzJERUE5IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOTg0RjU3RDE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFERjYzMTMx
OEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTFEQzM0MDE5NjM0NkQ3MDBGRjcwNTkgLyogTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyogTGliV2Vi
UlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMDc1QjQxREU4NUY1ODAwMzlFQzY5
IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
</data>
<flag name="commit-queue"
          id="426679"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410676</attachid>
            <date>2020-10-06 12:05:00 -0700</date>
            <delta_ts>2020-10-06 12:34:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217399-20201006120459.patch</filename>
            <type>text/plain</type>
            <size>66165</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlNWY2ZjIwZWEyZDRiOWI5
ODAzNTRmYzg5ZDA5Y2ViY2Y1NWQ1Y2EuLmVkN2I0ZTk1NmU3M2NiYWVlMTkwNGJjMmJkMzJkYTZj
ODkzYWQxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjAtMTAtMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIG93bmVy
c2hpcCBvZiBEb3dubG9hZENsaWVudCBmcm9tIFdlYlByb2Nlc3NQb29sIHRvIERvd25sb2FkUHJv
eHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzM5
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGtl
ZXAgYmluYXJ5IGNvbXBhdGliaWxpdHksIHRoZSBXZWJQcm9jZXNzUG9vbCBoYXMgYSBudWxsYWJs
ZSBEb3dubG9hZENsaWVudCB0aGF0IGlzIHVzZWQgaWYgaXQgaGFzIGJlZW4gc2V0LgorICAgICAg
ICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gZ2V0IGEgRG93bmxvYWRDbGllbnQgZnJvbSBlbHN3ZWhl
cmUuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJv
Y2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaERvd25sb2Fk
Q2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbTogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tLgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6TGVnYWN5RG93bmxvYWRDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRD
cmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50
Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVu
dDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxv
YWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50Ojp0YWtlQWN0aXZpdHlUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURv
d25sb2FkQ2xpZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6aW52YWxp
ZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
UHJveHk6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6On5Eb3du
bG9hZFByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlN
YXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9h
ZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5RG93bmxvYWRDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTEwLTA1ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgogCiAgICAgICAgIEJyZWFrIHJlZmVyZW5jZSBjeWNsZSB3aXRoIE5TVVJM
U2Vzc2lvbkRhdGFUYXNrIGluIE5ldHdvcmtEYXRhVGFza0NvY29hCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggNjhjNDRiNDkzNTZkNTMyOWE4NjVlYTgyNmYyN2I2ZTNhMDMwNmJlZi4uZWU3ZTRk
Y2Q1NGNkMTdmN2E4MDY1YzkzYWUyNDIyMWVmNDViZjAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dApAQCAtMzY0LDcgKzM2NCw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vV0tT
T0F1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGll
bnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQogVUlQcm9j
ZXNzL0NvY29hL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tCi1VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQubW0KK1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQog
VUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkUHJveHlNYXBDb2NvYS5tbQogVUlQcm9jZXNzL0NvY29h
L0ZpbmRDbGllbnQubW0KIFVJUHJvY2Vzcy9Db2NvYS9GdWxsc2NyZWVuQ2xpZW50Lm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDQ0
OGI3YWIxN2FjNTBjNjdlZGUwYzU3ZWRiMGIzZjYwY2ExZDIyOWYuLmYxNjIwYjYwYzNlYzEyOTkw
MmVhMTcwNTdlMmQ0OTYwYjAwMDk5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIGVudW0gY2xhc3MgQWxs
b3dPdmVyd3JpdGUgOiBib29sOwogCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgRG93bmxvYWRD
bGllbnQgeworY2xhc3MgRG93bmxvYWRDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxEb3dubG9h
ZENsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmNwcAppbmRleCA1NjVhZDFiY2I3NDExOTNmZTFhNGM0NDkyYzYyZGI4MmJi
OTZhOGUwLi4zYmRmYWY3ZDBhM2NjNjkxYjk0M2Y0OGQzNWI0NTVkNjE3MDA2NDdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTE3MCw5ICsxNzAs
OSBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogCiB2b2lkIFdLQ29udGV4dFNldERvd25sb2Fk
Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewotICAgIGNsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVi
bGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6
OkRvd25sb2FkQ2xpZW50IHsKKyAgICBjbGFzcyBMZWdhY3lEb3dubG9hZENsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2U+LCBwdWJsaWMg
QVBJOjpEb3dubG9hZENsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBEb3du
bG9hZENsaWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCwgV0tD
b250ZXh0UmVmIGNvbnRleHQpCisgICAgICAgIGV4cGxpY2l0IExlZ2FjeURvd25sb2FkQ2xpZW50
KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50LCBXS0NvbnRleHRSZWYg
Y29udGV4dCkKICAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdL
Q29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0Nv
bnRleHREb3dubG9hZENsaQogICAgICAgICB9CiAgICAgICAgIFdLQ29udGV4dFJlZiBtX2NvbnRl
eHQ7CiAgICAgfTsKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+c2V0RG93bmxvYWRDbGll
bnQobWFrZVVuaXF1ZVJlZjxEb3dubG9hZENsaWVudD4od2tDbGllbnQsIGNvbnRleHQpKTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+c2V0TGVnYWN5RG93bmxvYWRDbGllbnQoYWRvcHRS
ZWYoKm5ldyBMZWdhY3lEb3dubG9hZENsaWVudCh3a0NsaWVudCwgY29udGV4dCkpKTsKIH0KIAog
dm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4
IGRhZjRiZmFkYTJiOTUyNzRiMjE2MzNiZGFlNDJmMWEzNzE3MjQwYTMuLmU3OTViMzMyNmM3NmRm
OWQ5ZDg0MDM0MmY4ZGQxNGJiYmZhMTA3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0yOCw3ICsyOCw3IEBACiAKICNp
bXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKLSNpbXBv
cnQgIkRvd25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJMZWdhY3lEb3dubG9hZENsaWVudC5oIgog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgTlNE
aWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhhc2hNYXA8UwogLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25s
b2FkRGVsZWdhdGU+KWRvd25sb2FkRGVsZWdhdGUKIHsKICAgICBfZG93bmxvYWREZWxlZ2F0ZSA9
IGRvd25sb2FkRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudCht
YWtlVW5pcXVlUmVmPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsK
KyAgICBfcHJvY2Vzc1Bvb2wtPnNldExlZ2FjeURvd25sb2FkQ2xpZW50KGFkb3B0UmVmKCpuZXcg
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudChkb3dubG9hZERlbGVnYXRlKSkpOwogfQogCiAt
IChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENs
aWVudC5jcHAKaW5kZXggZThlODcwMjIwZDA1MmZlNmViYjJjZDg1MGQ5ZWVlOTg4ZWM2Yzk5Yy4u
NTM2YzBmNGI4MmYyOGI2MTc2MjNmNGIwN2RiNmU3NmIzMDg2MDRjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50
LmNwcApAQCAtMzMsOSArMzMsOSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCi1jbGFzcyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBB
UEk6OkRvd25sb2FkQ2xpZW50IHsKK2NsYXNzIExlZ2FjeURvd25sb2FkQ2xpZW50IGZpbmFsIDog
cHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgewogcHVibGljOgotICAgIGV4cGxpY2l0IERvd25s
b2FkQ2xpZW50KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCisgICAgZXhwbGljaXQgTGVn
YWN5RG93bmxvYWRDbGllbnQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKICAgICAgICAg
OiBtX3dlYkNvbnRleHQod2ViQ29udGV4dCkKICAgICB7CiAgICAgfQpAQCAtMTMwLDUgKzEzMCw1
IEBAIHByaXZhdGU6CiAKIHZvaWQgYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vz
c1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZVJlZjxEb3dubG9h
ZENsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lEb3dubG9hZENsaWVudChhZG9wdFJlZigqbmV3IExlZ2Fj
eURvd25sb2FkQ2xpZW50KHdlYkNvbnRleHQpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDM2ZDAwMDhi
YTIxN2FjMTA1Zjk4NDJkOTEyMmJkNmIzMTVjNWJlNDMuLmY3ZmFhNTg4MGJmMDJiMjgxNTcyNzZi
NjBjYTEwMGVkMzhmYmY5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViQ29udGV4dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAgIGlmICgh
cHJpdi0+Y2xpZW50c0RldGFjaGVkKSB7CiAgICAgICAgIHByaXYtPmNsaWVudHNEZXRhY2hlZCA9
IHRydWU7CiAgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVu
dChudWxscHRyKTsKLSAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50
KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4oKSk7CisgICAgICAgIHByaXYtPnBy
b2Nlc3NQb29sLT5zZXRMZWdhY3lEb3dubG9hZENsaWVudChudWxscHRyKTsKICAgICB9CiAKICAg
ICBpZiAocHJpdi0+ZmF2aWNvbkRhdGFiYXNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTFlYWUwYTlmMmI1MDY3NWQ4NzUyOTdjZDgxZDQ0NDIzNGJhZjk5Yy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Eb3dubG9hZENsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKLQotI2lt
cG9ydCAiQVBJRG93bmxvYWRDbGllbnQuaCIKLSNpbXBvcnQgIlByb2Nlc3NUaHJvdHRsZXIuaCIK
LSNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgotCi1AcHJvdG9jb2wgX1dLRG93bmxvYWREZWxl
Z2F0ZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBEb3du
bG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBEb3dubG9hZENsaWVu
dChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pOwotICAgIAotcHJpdmF0ZToKLSAgICAvLyBGcm9t
IEFQSTo6RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsOwot
ICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQ
cm94eSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxs
b3dPdmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmluaXNoKERvd25s
b2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIGRpZENhbmNlbChEb3du
bG9hZFByb3h5JikgZmluYWw7Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94
eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5n
JikgZmluYWw7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYpIGZpbmFs
OwotCi0jaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIHZvaWQgdGFrZUFjdGl2aXR5VG9rZW4o
RG93bmxvYWRQcm94eSYpOwotICAgIHZvaWQgcmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2Fy
eShEb3dubG9hZFByb3h5Jik7Ci0jZW5kaWYKLQotICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tEb3du
bG9hZERlbGVnYXRlPj4gbV9kZWxlZ2F0ZTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IFVTRShTWVNURU1fUFJFVklFVykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc1Rocm90dGxl
cjo6QmFja2dyb3VuZEFjdGl2aXR5PiBtX2FjdGl2aXR5OwotI2VuZGlmCi0KLSAgICBzdHJ1Y3Qg
ewotICAgICAgICBib29sIGRvd25sb2FkRGlkU3RhcnQgOiAxOyAgICAgICAgICAgIAotICAgICAg
ICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlIDogMTsKLSAgICAgICAgYm9vbCBkb3du
bG9hZERpZFJlY2VpdmVEYXRhIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERpZFdyaXRlRGF0
YVRvdGFsQnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSA6IDE7Ci0gICAgICAg
IGJvb2wgZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93
T3ZlcndyaXRlIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwotICAgICAgICBib29sIGRv
d25sb2FkRGlkRmluaXNoIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERpZEZhaWwgOiAxOwot
ICAgICAgICBib29sIGRvd25sb2FkRGlkQ2FuY2VsIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMIDogMTsKLSAgICAgICAgYm9vbCBkb3dubG9h
ZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIDogMTsK
LSAgICAgICAgYm9vbCBkb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlIDog
MTsKLSAgICAgICAgYm9vbCBkb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uIDogMTsKLSAgICAg
ICAgYm9vbCBkb3dubG9hZFByb2Nlc3NEaWRDcmFzaCA6IDE7Ci0gICAgfSBtX2RlbGVnYXRlTWV0
aG9kczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNzZiOWUzZWFmYWRmMjk4ZmI4NzQ2NmJjN2IzZGI0NzkwYWZlZWQyNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDMwMiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkRvd25s
b2FkQ2xpZW50LmgiCi0KLSNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24uaCIKLSNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKLSNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgotI2ltcG9ydCAiQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5oIgotI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgotI2ltcG9ydCAi
TG9nZ2luZy5oIgotI2ltcG9ydCAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKLSNpbXBvcnQg
IldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2ltcG9ydCAiV0tOU1VSTEV4dHJh
cy5oIgotI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgotI2ltcG9ydCAiV2ViUGFnZVByb3h5Lmgi
Ci0jaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbXBvcnQgIl9XS0Rvd25sb2FkRGVsZWdh
dGUuaCIKLSNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKLSNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Ci0j
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1Eb3dubG9hZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9X
S0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQotICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkK
LXsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFN0YXJ0ID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkRGlkU3RhcnQ6KV07Ci0gICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOild
OwotICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZURhdGEgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZURhdGE6
KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRXcml0ZURhdGFUb3RhbEJ5dGVz
V3JpdHRlblRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVu
OnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRl
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmFsbG93T3ZlcndyaXRlOildOwotICAg
IG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERp
ZEZpbmlzaCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9h
ZERpZEZpbmlzaDopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZhaWwgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkRmFpbFdp
dGhFcnJvcjopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZERpZENhbmNlbDop
XTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2Fk
OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOildOwotICAgIG1fZGVsZWdhdGVNZXRob2Rz
LmRvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOildOwotICAg
IG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5
cGUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6c2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlvbjopXTsKLSAgICBtX2Rl
bGVnYXRlTWV0aG9kcy5kb3dubG9hZFByb2Nlc3NEaWRDcmFzaCA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDopXTsKLX0KLQot
I2lmIFVTRShTWVNURU1fUFJFVklFVykKLXN0YXRpYyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciog
c3lzdGVtUHJldmlld0NvbnRyb2xsZXIoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKLXsK
LSAgICBhdXRvKiBwYWdlID0gZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKTsKLSAgICBp
ZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBwYWdlLT5zeXN0
ZW1QcmV2aWV3Q29udHJvbGxlcigpOwotfQotI2VuZGlmCi0KLXZvaWQgRG93bmxvYWRDbGllbnQ6
OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCi17Ci0jaWYgVVNFKFNZU1RF
TV9QUkVWSUVXKQotICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2Fk
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBkb3dubG9hZFByb3h5Lm9yaWdpbmF0
aW5nUGFnZSgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXBkYXRlIHRoZSBNSU1FLXR5cGUg
b25jZSBpdCBpcyBrbm93biBpbiB0aGUgUmVzb3VyY2VSZXNwb25zZS4KLSAgICAgICAgICAgIHdl
YlBhZ2UtPnN5c3RlbVByZXZpZXdDb250cm9sbGVyKCktPnN0YXJ0KFVSTChVUkwoKSwgd2ViUGFn
ZS0+Y3VycmVudFVSTCgpKSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJfcywgZG93bmxvYWRQ
cm94eS5zeXN0ZW1QcmV2aWV3RG93bmxvYWRJbmZvKCkpOwotICAgICAgICB9Ci0gICAgICAgIHRh
a2VBY3Rpdml0eVRva2VuKGRvd25sb2FkUHJveHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0KLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KV07Ci19Ci0KLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKLXsKLSNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJv
eHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSAmJiByZXNwb25zZS5pc1N1Y2Nlc3NmdWwoKSkg
ewotICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5c3RlbVByZXZpZXdDb250cm9sbGVy
KGRvd25sb2FkUHJveHkpKQotICAgICAgICAgICAgY29udHJvbGxlci0+dXBkYXRlUHJvZ3Jlc3Mo
MCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmIChtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgW21fZGVsZWdhdGUg
X2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3Bv
bnNlLm5zVVJMUmVzcG9uc2UoKV07Ci19Ci0KLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGJ5dGVzV3JpdHRl
biwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGUpCi17Ci0jaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIGlmIChkb3dubG9hZFBy
b3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRy
b2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihkb3dubG9hZFByb3h5KSkKLSAgICAgICAg
ICAgIGNvbnRyb2xsZXItPnVwZGF0ZVByb2dyZXNzKHN0YXRpY19jYXN0PGZsb2F0Pih0b3RhbEJ5
dGVzV3JpdHRlbikgLyB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlk
V3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQotICAg
ICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0
ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07Ci0gICAg
ZWxzZSBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKLSAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2
ZURhdGE6Ynl0ZXNXcml0dGVuXTsKLX0KLQotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotewot
ICAgIC8vIEZJWE1FOiBTeXN0ZW0gUHJldmlldyBuZWVkcyBjb2RlIGhlcmUuCi0gICAgaWYgKCFt
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmxp
c3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQo
KSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewotICAgICAgICBp
ZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwot
ICAgICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7Ci0gICAgICAgIGNhc2UgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWw6Ci0gICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsID8gV2ViQ29yZTo6Q3Jl
ZGVudGlhbChjcmVkZW50aWFsKSA6IFdlYkNvcmU6OkNyZWRlbnRpYWwoKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURl
ZmF1bHRIYW5kbGluZzoKLSAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0
ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6Ci0gICAgICAgICAgICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+
bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uOjpDYW5jZWwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlOgot
ICAgICAgICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVD
aGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVj
dGlvblNwYWNlQW5kQ29udGludWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFs
aWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiAoJWxkKSIsIChsb25nKWRpc3Bvc2l0aW9uXTsKLSAgICAgICAgfQot
ICAgIH0pLmdldCgpXTsKLX0KLQotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGlu
YXRpb24oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvbikKLXsKLSNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJveHku
aXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewotICAgICAgICBkb3dubG9hZFByb3h5LnNldERl
c3RpbmF0aW9uRmlsZW5hbWUoZGVzdGluYXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
I2VuZGlmCi0KLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDcmVhdGVEZXN0
aW5hdGlvbikKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQ
cm94eSkgZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOwotfQotCi12b2lkIERvd25s
b2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkK
LXsKLSNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgewotICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5
c3RlbVByZXZpZXdDb250cm9sbGVyKGRvd25sb2FkUHJveHkpKQotICAgICAgICAgICAgY29udHJv
bGxlci0+Y2FuY2VsKCk7Ci0gICAgICAgIHJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3Nhcnko
ZG93bmxvYWRQcm94eSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlm
IChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZFByb2Nlc3NEaWRDcmFzaCkKLSAgICAgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSld
OwotfQotCi12b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotI2lmIFVTRShTWVNURU1fUFJFVklFVykKLSAgICBpZiAoZG93bmxvYWRQ
cm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7Ci0gICAgICAgIE5TU3RyaW5nICp0ZW1w
b3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJT
eXN0ZW1QcmV2aWV3cyIpOwotICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbdGVtcG9y
YXJ5RGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlbmFtZV07Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9u
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKCFtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxs
b3dPdmVyd3JpdGUgJiYgIW1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKEFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKLQotICAgIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsKLSAgICAgICAgQk9PTCBhbGxvd092ZXJ3cml0ZSA9IE5P
OwotICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBO
U1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFt
ZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOwotICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVy
d3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5h
dGlvbik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBz
ZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24p
IHsKLSAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFs
bG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywg
ZGVzdGluYXRpb24pOwotICAgICAgICB9KS5nZXQoKV07Ci0gICAgfQotfQotCi12b2lkIERvd25s
b2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKLXsKLSNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2
aWV3RG93bmxvYWQoKSkgewotICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyKGRvd25sb2FkUHJveHkpKSB7Ci0gICAgICAgICAgICBhdXRvIGRlc3Rp
bmF0aW9uVVJMID0gV1RGOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoZG93bmxvYWRQ
cm94eS5kZXN0aW5hdGlvbkZpbGVuYW1lKCkpOwotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlv
blVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgICAgICAgICBkZXN0aW5hdGlv
blVSTC5zZXRGcmFnbWVudElkZW50aWZpZXIoZG93bmxvYWRQcm94eS5yZXF1ZXN0KCkudXJsKCku
ZnJhZ21lbnRJZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgY29udHJvbGxlci0+ZmluaXNoKGRl
c3RpbmF0aW9uVVJMKTsKLSAgICAgICAgfQotICAgICAgICByZWxlYXNlQWN0aXZpdHlUb2tlbklm
TmVjZXNzYXJ5KGRvd25sb2FkUHJveHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlm
Ci0KLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2gpCi0gICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsK
LX0KLQotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKLXsKLSNpZiBVU0Uo
U1lTVEVNX1BSRVZJRVcpCi0gICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93
bmxvYWQoKSkgewotICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHN5c3RlbVByZXZpZXdD
b250cm9sbGVyKGRvd25sb2FkUHJveHkpKQotICAgICAgICAgICAgY29udHJvbGxlci0+ZmFpbChl
cnJvcik7Ci0gICAgICAgIHJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoZG93bmxvYWRQ
cm94eSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmIChtX2RlbGVn
YXRlTWV0aG9kcy5kb3dubG9hZERpZEZhaWwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigp
XTsKLX0KLQotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpCi17Ci0jaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIGlmIChkb3dubG9h
ZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGNv
bnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihkb3dubG9hZFByb3h5KSkKLSAgICAg
ICAgICAgIGNvbnRyb2xsZXItPmNhbmNlbCgpOwotICAgICAgICByZWxlYXNlQWN0aXZpdHlUb2tl
bklmTmVjZXNzYXJ5KGRvd25sb2FkUHJveHkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCi0KLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDYW5jZWwpCi0gICAg
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
XTsKLX0KLQotdm9pZCBEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkg
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmlu
ZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07Ci0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsKLX0KLQotI2lmIFVTRShTWVNURU1fUFJFVklFVykKLXZvaWQgRG93bmxv
YWRDbGllbnQ6OnRha2VBY3Rpdml0eVRva2VuKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkp
Ci17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoYXV0byogd2ViUGFnZSA9IGRv
d25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUYo
d2ViUGFnZS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAi
JXAgLSBVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBp
dCBpcyBkb3dubG9hZGluZyBhIHN5c3RlbSBwcmV2aWV3IiwgdGhpcyk7Ci0gICAgICAgIEFTU0VS
VCghbV9hY3Rpdml0eSk7Ci0gICAgICAgIG1fYWN0aXZpdHkgPSB3ZWJQYWdlLT5wcm9jZXNzKCku
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJTeXN0ZW0gcHJldmlldyBkb3dubG9hZCJf
cykubW92ZVRvVW5pcXVlUHRyKCk7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZG93
bmxvYWRQcm94eSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBEb3dubG9hZENsaWVudDo6cmVsZWFzZUFj
dGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQotewot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKG1fYWN0aXZpdHkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUYoZG93bmxvYWRQcm94eS5vcmlnaW5hdGluZ1BhZ2UoKS0+aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgVUlQcm9jZXNzIGlzIHJl
bGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSBzeXN0ZW0gcHJldmlldyBk
b3dubG9hZCBjb21wbGV0ZWQiLCB0aGlzKTsKLSAgICAgICAgbV9hY3Rpdml0eSA9IG51bGxwdHI7
Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZG93bmxvYWRQcm94eSk7Ci0jZW5kaWYK
LX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdi
M2U3YTg2OTZiNDVhMzAyMmY5MWY5NzgwZTBmNjMzNGY2NzUyYTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCkBA
IC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKKyNpbXBvcnQgIlByb2Nlc3NUaHJvdHRsZXIuaCIKKyNpbXBvcnQg
IldLRm91bmRhdGlvbi5oIgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK0Bwcm90b2Nv
bCBfV0tEb3dubG9hZERlbGVnYXRlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNv
dXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIExlZ2FjeURvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93
bmxvYWRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IGV4cGxpY2l0IExlZ2FjeURvd25sb2FkQ2xpZW50KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPik7
CisgICAgCitwcml2YXRlOgorICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAorICAgIHZv
aWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3Qs
IHVpbnQ2NF90LCB1aW50NjRfdCkgZmluYWw7CisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmlu
YWw7CisgICAgdm9pZCBkaWRGaW5pc2goRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkRmFpbChEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOworICAgIHZvaWQgZGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYsIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9u
KERvd25sb2FkUHJveHkmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHByb2Nlc3NE
aWRDcmFzaChEb3dubG9hZFByb3h5JikgZmluYWw7CisKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcp
CisgICAgdm9pZCB0YWtlQWN0aXZpdHlUb2tlbihEb3dubG9hZFByb3h5Jik7CisgICAgdm9pZCBy
ZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KERvd25sb2FkUHJveHkmKTsKKyNlbmRpZgor
CisgICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwor
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+IG1fYWN0
aXZpdHk7CisjZW5kaWYKKworICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgZG93bmxvYWREaWRT
dGFydCA6IDE7ICAgICAgICAgICAgCisgICAgICAgIGJvb2wgZG93bmxvYWREaWRSZWNlaXZlUmVz
cG9uc2UgOiAxOworICAgICAgICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZURhdGEgOiAxOworICAg
ICAgICBib29sIGRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVz
RXhwZWN0ZWRUb1dyaXRlIDogMTsKKyAgICAgICAgYm9vbCBkb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUgOiAxOworICAgICAgICBib29s
IGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb21wbGV0aW9u
SGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgZG93bmxvYWREaWRGaW5pc2ggOiAxOworICAgICAg
ICBib29sIGRvd25sb2FkRGlkRmFpbCA6IDE7CisgICAgICAgIGJvb2wgZG93bmxvYWREaWRDYW5j
ZWwgOiAxOworICAgICAgICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwgOiAxOworICAgICAgICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIGRvd25sb2FkU2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUgOiAxOworICAgICAgICBib29sIGRvd25sb2FkRGlk
Q3JlYXRlRGVzdGluYXRpb24gOiAxOworICAgICAgICBib29sIGRvd25sb2FkUHJvY2Vzc0RpZENy
YXNoIDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lE
b3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURv
d25sb2FkQ2xpZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyMTJkODQ3YjY2OWI3M2NjNjNhMzYwZTVhMWFi
OWMwZjNkN2UxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQpAQCAtMCwwICsxLDMwMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMZWdhY3lEb3dubG9hZENsaWVu
dC5oIgorCisjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCisj
aW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCisjaW1wb3J0ICJBdXRoZW50
aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKKyNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXIuaCIKKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIkxvZ2dpbmcu
aCIKKyNpbXBvcnQgIlN5c3RlbVByZXZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKKyNp
bXBvcnQgIldlYkNyZWRlbnRpYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgiCisj
aW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2ltcG9ydCA8
d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworTGVnYWN5RG93bmxvYWRDbGllbnQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50KGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICA6IG1fZGVsZWdhdGUoZGVsZWdh
dGUpCit7CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZERpZFN0YXJ0OildOworICAg
IG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25z
ZTopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVE
YXRhOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxC
eXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3Jp
dHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOildOworICAgIG1fZGVsZWdhdGVNZXRob2Rz
LmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3
cml0ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTphbGxvd092ZXJ3cml0ZTopXTsK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxv
YWREaWRGaW5pc2ggPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93
bmxvYWREaWRGaW5pc2g6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGYWls
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZEZh
aWxXaXRoRXJyb3I6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDYW5jZWwg
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWREaWRDYW5j
ZWw6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3du
bG9hZDpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDopXTsKKyAgICBtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2Fk
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopXTsK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1J
TUVUeXBlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2Fk
OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOildOworICAgIG1fZGVsZWdhdGVNZXRo
b2RzLmRvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246KV07CisgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2ggPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6KV07Cit9
CisKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCitzdGF0aWMgU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIqIHN5c3RlbVByZXZpZXdDb250cm9sbGVyKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkp
Cit7CisgICAgYXV0byogcGFnZSA9IGRvd25sb2FkUHJveHkub3JpZ2luYXRpbmdQYWdlKCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcGFnZS0+
c3lzdGVtUHJldmlld0NvbnRyb2xsZXIoKTsKK30KKyNlbmRpZgorCit2b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpkaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQoreworI2lm
IFVTRShTWVNURU1fUFJFVklFVykKKyAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZp
ZXdEb3dubG9hZCgpKSB7CisgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gZG93bmxvYWRQcm94
eS5vcmlnaW5hdGluZ1BhZ2UoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFVwZGF0ZSB0aGUg
TUlNRS10eXBlIG9uY2UgaXQgaXMga25vd24gaW4gdGhlIFJlc291cmNlUmVzcG9uc2UuCisgICAg
ICAgICAgICB3ZWJQYWdlLT5zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcigpLT5zdGFydChVUkwoVVJM
KCksIHdlYlBhZ2UtPmN1cnJlbnRVUkwoKSksICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iX3Ms
IGRvd25sb2FkUHJveHkuc3lzdGVtUHJldmlld0Rvd25sb2FkSW5mbygpKTsKKyAgICAgICAgfQor
ICAgICAgICB0YWtlQWN0aXZpdHlUb2tlbihkb3dubG9hZFByb3h5KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlk
U3RhcnQpCisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIoZG93
bmxvYWRQcm94eSldOworfQorCit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAg
IGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkgJiYgcmVzcG9uc2Uu
aXNTdWNjZXNzZnVsKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlcihkb3dubG9hZFByb3h5KSkKKyAgICAgICAgICAgIGNvbnRyb2xsZXIt
PnVwZGF0ZVByb2dyZXNzKDApOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAg
ICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UpCisgICAg
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2Vp
dmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOworfQorCit2b2lkIExlZ2FjeURv
d25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQoreworI2lmIFVTRShTWVNURU1fUFJFVklF
VykKKyAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoZG93
bmxvYWRQcm94eSkpCisgICAgICAgICAgICBjb250cm9sbGVyLT51cGRhdGVQcm9ncmVzcyhzdGF0
aWNfY2FzdDxmbG9hdD4odG90YWxCeXRlc1dyaXR0ZW4pIC8gdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChtX2RlbGVn
YXRlTWV0aG9kcy5kb3dubG9hZERpZFdyaXRlRGF0YVRvdGFsQnl0ZXNXcml0dGVuVG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSkKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRl
bjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGVdOworICAgIGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
RGlkUmVjZWl2ZURhdGEpCisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmJ5dGVzV3JpdHRlbl07Cit9CisKK3ZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3sKKyAgICAvLyBGSVhNRTogU3lzdGVtIFByZXZpZXcg
bmVlZHMgY29kZSBoZXJlLgorICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikgeworICAgICAg
ICBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRI
YW5kbGluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6
Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwgKmNyZWRlbnRpYWwpIHsKKyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVy
SGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikg
eworICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsOgor
ICAgICAgICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVD
aGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlh
bCwgY3JlZGVudGlhbCA/IFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBXZWJDb3Jl
OjpDcmVkZW50aWFsKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAgICAgICBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgorICAgICAgICAg
ICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2Uo
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZToKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAi
SW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gKCVsZCkiLCAobG9u
ZylkaXNwb3NpdGlvbl07CisgICAgICAgIH0KKyAgICB9KS5nZXQoKV07Cit9CisKK3ZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCit7CisjaWYgVVNFKFNZU1RF
TV9QUkVWSUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2Fk
KCkpIHsKKyAgICAgICAgZG93bmxvYWRQcm94eS5zZXREZXN0aW5hdGlvbkZpbGVuYW1lKGRlc3Rp
bmF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24pCisgICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZENyZWF0ZURlc3RpbmF0
aW9uOmRlc3RpbmF0aW9uXTsKK30KKwordm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vz
c0RpZENyYXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit7CisjaWYgVVNFKFNZU1RF
TV9QUkVWSUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2Fk
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcihkb3dubG9hZFByb3h5KSkKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPmNhbmNlbCgpOwor
ICAgICAgICByZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KGRvd25sb2FkUHJveHkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAobV9kZWxlZ2F0ZU1ldGhv
ZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2gpCisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9h
ZFByb2Nlc3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKK30KKwordm9pZCBMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVu
Y3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0
ZW1QcmV2aWV3RG93bmxvYWQoKSkgeworICAgICAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0
b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiU3lzdGVtUHJldmll
d3MiKTsKKyAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW3RlbXBvcmFyeURpcmVjdG9y
eSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZW5hbWVdOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6WWVzLCBkZXN0aW5hdGlvbik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRl
ICYmICFtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisKKyAgICBpZiAobV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93
T3ZlcndyaXRlKSB7CisgICAgICAgIEJPT0wgYWxsb3dPdmVyd3JpdGUgPSBOTzsKKyAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICAgICAgTlNTdHJpbmcgKmRl
c3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVy
d3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxs
b3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOworICAg
IH0gZWxzZSB7CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNv
bXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rv
d25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25I
YW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7CisgICAgICAg
ICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0
ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9u
KTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KK30KKwordm9pZCBMZWdhY3lEb3dubG9hZENs
aWVudDo6ZGlkRmluaXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit7CisjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rv
d25sb2FkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcihkb3dubG9hZFByb3h5KSkgeworICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlv
blVSTCA9IFdURjo6VVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGRvd25sb2FkUHJveHku
ZGVzdGluYXRpb25GaWxlbmFtZSgpKTsKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb25VUkwu
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgICAgICAgICAgZGVzdGluYXRpb25VUkwu
c2V0RnJhZ21lbnRJZGVudGlmaWVyKGRvd25sb2FkUHJveHkucmVxdWVzdCgpLnVybCgpLmZyYWdt
ZW50SWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPmZpbmlzaChkZXN0aW5h
dGlvblVSTCk7CisgICAgICAgIH0KKyAgICAgICAgcmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vz
c2FyeShkb3dubG9hZFByb3h5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisg
ICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNoKQorICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07Cit9CisK
K3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQorICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rv
d25sb2FkKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBzeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcihkb3dubG9hZFByb3h5KSkKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPmZhaWwo
ZXJyb3IpOworICAgICAgICByZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KGRvd25sb2Fk
UHJveHkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGYWlsKQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3Io
KV07Cit9CisKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KQoreworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICBpZiAo
ZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CisgICAgICAgIGlmIChh
dXRvKiBjb250cm9sbGVyID0gc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoZG93bmxvYWRQcm94eSkp
CisgICAgICAgICAgICBjb250cm9sbGVyLT5jYW5jZWwoKTsKKyAgICAgICAgcmVsZWFzZUFjdGl2
aXR5VG9rZW5JZk5lY2Vzc2FyeShkb3dubG9hZFByb3h5KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCisgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ2FuY2Vs
KQorICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6d3JhcHBlcihkb3dubG9h
ZFByb3h5KV07Cit9CisKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVz
dChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkwpCisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VS
TFdpdGhXVEZTdHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOworCisgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7Cit9CisKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcp
Cit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojp0YWtlQWN0aXZpdHlUb2tlbihEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYg
KGF1dG8qIHdlYlBhZ2UgPSBkb3dubG9hZFByb3h5Lm9yaWdpbmF0aW5nUGFnZSgpKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGKHdlYlBhZ2UtPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gVUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQg
YXNzZXJ0aW9uIGJlY2F1c2UgaXQgaXMgZG93bmxvYWRpbmcgYSBzeXN0ZW0gcHJldmlldyIsIHRo
aXMpOworICAgICAgICBBU1NFUlQoIW1fYWN0aXZpdHkpOworICAgICAgICBtX2FjdGl2aXR5ID0g
d2ViUGFnZS0+cHJvY2VzcygpLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiU3lzdGVt
IHByZXZpZXcgZG93bmxvYWQiX3MpLm1vdmVUb1VuaXF1ZVB0cigpOworICAgIH0KKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGRvd25sb2FkUHJveHkpOworI2VuZGlmCit9CisKK3ZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlm
IChtX2FjdGl2aXR5KSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGKGRvd25sb2FkUHJveHkub3Jp
Z2luYXRpbmdQYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIFVJUHJvY2VzcyBpcyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBi
ZWNhdXNlIGEgc3lzdGVtIHByZXZpZXcgZG93bmxvYWQgY29tcGxldGVkIiwgdGhpcyk7CisgICAg
ICAgIG1fYWN0aXZpdHkgPSBudWxscHRyOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KGRvd25sb2FkUHJveHkpOworI2VuZGlmCit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5jcHAKaW5kZXggYjkyNmE3ZmI4ZTY3MmZhZTA1ZWVlNTI4Mzg2MmUxOGE4ODgxN2M4NC4u
OWQzYmMzODYwOTMxYTlmOGU3NDRlODE1NWU3MjdhNmJjYTM4N2I1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtNDgs
MTAgKzQ4LDEwIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1Eb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25s
b2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29u
c3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGlu
Z1BhZ2UpCitEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRv
d25sb2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgQVBJOjpEb3dubG9h
ZENsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwg
Y29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgV2ViUGFnZVByb3h5KiBvcmlnaW5h
dGluZ1BhZ2UpCiAgICAgOiBtX2Rvd25sb2FkUHJveHlNYXAoZG93bmxvYWRQcm94eU1hcCkKICAg
ICAsIG1fZGF0YVN0b3JlKCZkYXRhU3RvcmUpCi0gICAgLCBtX3Byb2Nlc3NQb29sKCZwcm9jZXNz
UG9vbCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZG93bmxvYWRJRChEb3dubG9h
ZElEOjpnZW5lcmF0ZSgpKQogICAgICwgbV9yZXF1ZXN0KHJlc291cmNlUmVxdWVzdCkKICAgICAs
IG1fb3JpZ2luYXRpbmdQYWdlKG1ha2VXZWFrUHRyKG9yaWdpbmF0aW5nUGFnZSkpCkBAIC01OSwz
NCArNTksMjMgQEAgRG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFw
JiBkb3dubG9hZFByb3h5TWFwLCBXZWJzaXRlRGF0YVN0b3IKIHsKIH0KIAotRG93bmxvYWRQcm94
eTo6fkRvd25sb2FkUHJveHkoKQotewotICAgIEFTU0VSVCghbV9wcm9jZXNzUG9vbCk7Ci19CitE
b3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpID0gZGVmYXVsdDsKIAogdm9pZCBEb3dubG9h
ZFByb3h5OjpjYW5jZWwoKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgaWYgKG1fZGF0YVN0b3JlKQogICAgICAgICBtX2RhdGFTdG9yZS0+bmV0d29y
a1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q2FuY2VsRG93bmxvYWQo
bV9kb3dubG9hZElEKSwgMCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6aW52YWxpZGF0ZSgp
CiB7Ci0gICAgQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwotICAgIG1fcHJvY2Vzc1Bvb2wgPSBudWxs
cHRyOwogICAgIEFTU0VSVChtX2RhdGFTdG9yZSk7CiAgICAgbV9kYXRhU3RvcmUgPSBudWxscHRy
OwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCiB7Ci0gICAgaWYg
KCFtX3Byb2Nlc3NQb29sKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3Byb2Nlc3NQb29sLT5k
b3dubG9hZENsaWVudCgpLnByb2Nlc3NEaWRDcmFzaCgqdGhpcyk7CisgICAgbV9jbGllbnQtPnBy
b2Nlc3NEaWRDcmFzaCgqdGhpcyk7CiB9CiAKIFdlYlBhZ2VQcm94eSogRG93bmxvYWRQcm94eTo6
b3JpZ2luYXRpbmdQYWdlKCkgY29uc3QKQEAgLTExNSwyNyArMTA0LDIxIEBAIHZvaWQgRG93bmxv
YWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIHN1Z2dlCiAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRp
cmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hh
aW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwogCi0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFN0
YXJ0KCp0aGlzKTsKKyAgICBtX2NsaWVudC0+ZGlkU3RhcnQoKnRoaXMpOwogfQogCiB2b2lkIERv
d25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVu
Z2VJRCkKIHsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wgfHwgIW1fZGF0YVN0b3JlKQorICAgIGlm
ICghbV9kYXRhU3RvcmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShX
VEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hhbGxlbmdlSUQsIG1ha2VSZWYoKm1f
ZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLmNvbm5lY3Rpb24oKSksIG51bGxwdHIpOwotICAg
IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmdldCgpKTsKKyAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmdldCgpKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIGlmICghbV9wcm9j
ZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRD
bGllbnQoKS53aWxsU2VuZFJlcXVlc3QoKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwg
cmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0o
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgeworICAgIG1fY2xpZW50LT53aWxsU2VuZFJl
cXVlc3QoKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VSZXF1ZXN0JiYg
bmV3UmVxdWVzdCkgewogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKG5ld1JlcXVlc3Qu
dXJsKCkpOwogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPm1fZGF0YVN0b3JlKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ2LDI2ICsxMjksMTcgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBS
ZXMKIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKCFtX3Byb2Nlc3NQb29sKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2Vp
dmVSZXNwb25zZSgqdGhpcywgcmVzcG9uc2UpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoKnRoaXMsIHJlc3BvbnNlKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQogewotICAgIGlmICghbV9wcm9j
ZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRD
bGllbnQoKS5kaWRSZWNlaXZlRGF0YSgqdGhpcywgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CisgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKCp0aGlzLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1dyaXRlKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
LCBBbGxvd092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX3By
b2Nlc3NQb29sKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0sIHsg
fSk7Ci0gICAgCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEFsbG93T3ZlcndyaXRlIGFs
bG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIG11dGFibGUgeworICAgIG1fY2xpZW50
LT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUp
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEFsbG93
T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIG11dGFibGUgewog
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsK
ICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKQEAgLTE3NiwxOCArMTUwLDEy
IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGlmICghbV9wcm9jZXNz
UG9vbCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGll
bnQoKS5kaWRDcmVhdGVEZXN0aW5hdGlvbigqdGhpcywgcGF0aCk7CisgICAgbV9jbGllbnQtPmRp
ZENyZWF0ZURlc3RpbmF0aW9uKCp0aGlzLCBwYXRoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5
OjpkaWRGaW5pc2goKQogewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRGaW5pc2goKnRoaXMp
OworICAgIG1fY2xpZW50LT5kaWRGaW5pc2goKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1
c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9h
ZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwpAQCAtMjAzLDEyICsxNzEsOSBAQCBz
dGF0aWMgUmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKQogewotICAg
IGlmICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9yZXN1bWVEYXRh
ID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2Fk
Q2xpZW50KCkuZGlkRmFpbCgqdGhpcywgZXJyb3IpOworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0
aGlzLCBlcnJvcik7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBv
YmplY3QgdG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5p
c2hlZCgqdGhpcyk7CkBAIC0yMTgsNyArMTgzLDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRD
YW5jZWwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKQogewogICAgIG1fcmVz
dW1lRGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5k
b3dubG9hZENsaWVudCgpLmRpZENhbmNlbCgqdGhpcyk7CisgICAgbV9jbGllbnQtPmRpZENhbmNl
bCgqdGhpcyk7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmpl
Y3QgdG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hl
ZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaAppbmRleCAxNThjNTZmMjQ5N2EwNDQ3MzU2OWZmN2E0NzIyOTg0NTAzYmY2ODAw
Li4zZTc0MDhjMWViZWRlYTRlN2FmMmQ5YjliYjFkOTIwOTVmZmMzNjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTM2LDYg
KzM2LDcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEYXRhOworY2xhc3MgRG93bmxvYWRD
bGllbnQ7CiBjbGFzcyBGcmFtZUluZm87CiB9CiAKQEAgLTUxLDcgKzUyLDYgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2FkUHJveHlNYXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7
Ci1jbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIGVudW0g
Y2xhc3MgQWxsb3dPdmVyd3JpdGUgOiBib29sOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoK
ICAgICBBUEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJv
eHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7
CisgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURh
dGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJp
dmF0ZToKIAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBS
ZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRhU3RvcmU7Ci0gICAgUmVmUHRyPFdlYlByb2Nl
c3NQb29sPiBtX3Byb2Nlc3NQb29sOworICAgIFJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2Ns
aWVudDsKICAgICBEb3dubG9hZElEIG1fZG93bmxvYWRJRDsKIAogICAgIFJlZlB0cjxBUEk6OkRh
dGE+IG1fcmVzdW1lRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAppbmRleCBjYjM2ODExZTVjMDgwODA0NjA0N2Yz
ODYwMDE2Y2U4MDBjYWZlOGEzLi5lNjBhYjMxNzgzYzczZWE2ZWQ1MTFjNjc0Nzc0NzgzNjZkMzE1
Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwCkBAIC04MCw3ICs4MCw5IEBAIHZvaWQgRG93bmxvYWRQcm94eU1h
cDo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkKIAogRG93bmxvYWRQcm94eSYgRG93
bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRh
U3RvcmUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5m
bywgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UpCiB7Ci0gICAgYXV0byBkb3dubG9hZFBy
b3h5ID0gRG93bmxvYWRQcm94eTo6Y3JlYXRlKCp0aGlzLCBkYXRhU3RvcmUsIHByb2Nlc3NQb29s
LCByZXNvdXJjZVJlcXVlc3QsIGZyYW1lSW5mbywgb3JpZ2luYXRpbmdQYWdlKTsKKyAgICBhdXRv
KiBsZWdhY3lEb3dubG9hZENsaWVudCA9IHByb2Nlc3NQb29sLmxlZ2FjeURvd25sb2FkQ2xpZW50
KCk7CisgICAgUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+IGNsaWVudCA9IGxlZ2FjeURvd25sb2Fk
Q2xpZW50ID8gUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+KCpsZWdhY3lEb3dubG9hZENsaWVudCkg
OiBhZG9wdFJlZigqbmV3IEFQSTo6RG93bmxvYWRDbGllbnQpOworICAgIGF1dG8gZG93bmxvYWRQ
cm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgZGF0YVN0b3JlLCBXVEZNb3ZlKGNs
aWVudCksIHJlc291cmNlUmVxdWVzdCwgZnJhbWVJbmZvLCBvcmlnaW5hdGluZ1BhZ2UpOwogICAg
IG1fZG93bmxvYWRzLnNldChkb3dubG9hZFByb3h5LT5kb3dubG9hZElEKCksIGRvd25sb2FkUHJv
eHkuY29weVJlZigpKTsKIAogICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJBZGRpbmcgZG93bmxv
YWQgJSIgUFJJdTY0ICIgdG8gVUlQcm9jZXNzIERvd25sb2FkUHJveHlNYXAiLCBkb3dubG9hZFBy
b3h5LT5kb3dubG9hZElEKCkudG9VSW50NjQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYzNjYjg5NzZkOGRhMjVhNDllZjlhZTJkNWMxODlmOGRh
ZTgxYTBhYy4uOGQ5ODdiYjY2ZDE0MzQwODk2MTI4ZDczOTMwZjJhMWNhZGQ2OTlhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjQzLDcgKzI0Myw2
IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdl
R3JvdXA6OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCiAgICAgLCBtX2F1dG9tYXRpb25DbGllbnQo
bWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xp
ZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4oKSkKICAgICAsIG1faGlzdG9y
eUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCiAg
ICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMzg0LDkgKzM4Myw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
CiAgICAgICAgIG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CiAK
LXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KFVuaXF1ZVJlZjxBUEk6OkRv
d25sb2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0
TGVnYWN5RG93bmxvYWRDbGllbnQoUmVmUHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50
KQogewotICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEZNb3ZlKGRvd25sb2FkQ2xpZW50KTsKKyAg
ICBtX2xlZ2FjeURvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1
dG9tYXRpb25DbGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDUxNWI5ODM5OGRjYzUwNmUxOTM3OTE5YzIzZTUyZTYx
ZWU5NjJlMGMuLjE4MjY3NTI1ZWQ3MGQxZjZmOGUxNjI5NDM0YThkMmFjMjdiNjkxZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzcsNiArNzcsNyBAQCBj
bGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNzIEhUVFBDb29raWVTdG9yZTsKIGNsYXNzIEluamVj
dGVkQnVuZGxlQ2xpZW50OwogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CitjbGFz
cyBMZWdhY3lEb3dubG9hZENsaWVudDsKIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBQYWdlQ29u
ZmlndXJhdGlvbjsKIH0KQEAgLTE2OSw3ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJ
bmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZUNs
aWVudD4mJik7CiAgICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0Nv
bnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSopOwogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4mJik7Ci0gICAg
dm9pZCBzZXREb3dubG9hZENsaWVudChVbmlxdWVSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJik7
CisgICAgdm9pZCBzZXRMZWdhY3lEb3dubG9hZENsaWVudChSZWZQdHI8QVBJOjpEb3dubG9hZENs
aWVudD4mJik7CiAgICAgdm9pZCBzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkF1dG9tYXRpb25DbGllbnQ+JiYpOwogCiAgICAgdm9pZCBzZXRDdXN0b21XZWJDb250ZW50
U2VydmljZUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CkBAIC0yNzgsNyArMjc5LDcg
QEAgcHVibGljOgogICAgIAogICAgIC8vIERvd25sb2Fkcy4KICAgICBEb3dubG9hZFByb3h5JiBj
cmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYpOwotICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGRvd25sb2FkQ2xpZW50KCkgeyBy
ZXR1cm4gbV9kb3dubG9hZENsaWVudC5nZXQoKTsgfQorICAgIEFQSTo6RG93bmxvYWRDbGllbnQq
IGxlZ2FjeURvd25sb2FkQ2xpZW50KCkgeyByZXR1cm4gbV9sZWdhY3lEb3dubG9hZENsaWVudC5n
ZXQoKTsgfQogCiAgICAgQVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCYgaGlzdG9yeUNs
aWVudCgpIHsgcmV0dXJuICptX2hpc3RvcnlDbGllbnQ7IH0KICAgICBXZWJDb250ZXh0Q2xpZW50
JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQpAQCAtNTk3LDcgKzU5OCw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29udGV4dENsaWVudCBtX2NsaWVudDsKICAgICBXZWJDb250ZXh0Q29ubmVj
dGlvbkNsaWVudCBtX2Nvbm5lY3Rpb25DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
QXV0b21hdGlvbkNsaWVudD4gbV9hdXRvbWF0aW9uQ2xpZW50OwotICAgIFVuaXF1ZVJlZjxBUEk6
OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OworICAgIFJlZlB0cjxBUEk6OkRvd25s
b2FkQ2xpZW50PiBtX2xlZ2FjeURvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7CiAKICAgICBS
ZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IG1fYXV0b21hdGlvblNlc3Npb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NzIxMzU2
MmFiYzFiZTM4NDJiZTMxZTg2MTczNzBkZTI4NzhjZDBhLi43NWE2ZDM4YTVmYTMxNzlmM2YzMTBi
ODMzOGI0MDM0MDQxN2ViY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NDQsNyArMTQ0NCw3IEBACiAJCUExQTRGRTYxMThERDU0
QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUE0RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dL
RG93bmxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUExQURBRkI2MjM2OEU2QTgwMDlDQjc3NiAvKiBTaGFyZWRNZW1vcnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBREFGQjUy
MzY4RTRCODAwOUNCNzc2IC8qIFNoYXJlZE1lbW9yeS5jcHAgKi87IH07CiAJCUExQzUxMkM5MTkw
NjU2RTUwMDQ0ODkxNCAvKiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM1MTJDNzE5MDY1NkU1MDA0NDg5MTQg
LyogV2ViUHJldmlld0xvYWRlckNsaWVudC5oICovOyB9OwotCQlBMURGNjMxMzE4RTBCN0M4MDAz
QTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVu
dC5oICovOyB9OworCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEgLyogTGVnYWN5RG93bmxvYWRD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
REY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBMZWdhY3lEb3dubG9hZENsaWVudC5oICovOyB9Owog
CQlBMUU2ODg3MDFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFNjg4NkYxRjZFMkJBQjAwNzAw
NkE2IC8qIFF1YXJhbnRpbmVTUEkuaCAqLzsgfTsKIAkJQTFFQTAyMzgxREFCRkY3RTAwOTYwMjFG
IC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFFQTAyMzYxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1l
bnVMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExRUEwMjQwMURBQzMxREIwMDk2MDIxRiAvKiBXZWJDb250ZXh0TWVudUxpc3RlbmVy
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
RUEwMjNFMURBQzMxREIwMDk2MDIxRiAvKiBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuaCAq
LzsgfTsKQEAgLTQ1NDAsOCArNDU0MCw4IEBACiAJCUExQjlDQTM4MjI0NkU1NEEwMDNENkRDQSAv
KiBXZWJQYXltZW50Q29vcmRpbmF0b3JDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlBheW1lbnRDb29yZGluYXRvckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMUM1MTJDNjE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcDsgcGF0aCA9IGlvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFDNTEyQzcxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oOyBwYXRoID0gaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTFERjYzMTAxOEUwQjdDODAwM0EzRTJBIC8q
IERvd25sb2FkQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRG93bmxvYWRDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUExREY2
MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogTGVnYWN5RG93bmxvYWRDbGllbnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMZWdhY3lEb3dubG9h
ZENsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFERjYzMTExOEUwQjdD
ODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExlZ2FjeURvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExRTY4ODZGMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFF1YXJhbnRpbmVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTFFQTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0NvbnRleHRNZW51TGlzdGVu
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUVBMDIzNjFEQUJGRjdFMDA5
NjAyMUYgLyogV0tDb250ZXh0TWVudUxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQ29udGV4dE1lbnVMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjMwMyw4ICs2MzAzLDYgQEAKIAkJCQk5OTBEMjhCODFDNjUzOUEwMDA5ODY5Nzcg
LyogQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gKi8sCiAJCQkJODM4OTFCNkExQTY4QzMwQjAw
MzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggKi8sCiAJCQkJODM4OTFCNkIxQTY4
QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lm1tICovLAotCQkJCUExREY2
MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5oICovLAotCQkJCUExREY2MzEw
MThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSAqLywKIAkJCQk1QzJCMUFGNTIy
M0MxRkQyMDBCOTFDRjcgLyogRG93bmxvYWRQcm94eU1hcENvY29hLm1tICovLAogCQkJCTAwQjk2
NjE4MThFMjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi8sCiAJCQkJMDBCOTY2MTcxOEUy
NUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gKi8sCkBAIC02MzE2LDYgKzYzMTQsOCBAQAog
CQkJCTUxQzBDOTczMURERDc0RjAwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tICov
LAogCQkJCTdBODIxRjRCMUUyRjY2NDgwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaCAqLywKIAkJCQk3QTgyMUY0RDFFMkY2NzlFMDA2MDQ1NzcgLyogTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lm1tICovLAorCQkJCUExREY2MzExMThFMEI3Qzgw
MDNBM0UyQSAvKiBMZWdhY3lEb3dubG9hZENsaWVudC5oICovLAorCQkJCUExREY2MzEwMThFMEI3
QzgwMDNBM0UyQSAvKiBMZWdhY3lEb3dubG9hZENsaWVudC5tbSAqLywKIAkJCQk0MTEyODZFRjIx
QzhBOTBDMDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMuaCAqLywKIAkJCQk0MTEyODZGMDIxQzhB
OTBEMDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMubW0gKi8sCiAJCQkJMUFCQzNERjQxODk5RTQz
NzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5oICovLApAQCAtMTA3ODMsNyArMTA3ODMsNiBA
QAogCQkJCUMxODE3MzYxMjA1ODQyNDcwMERGREE2NSAvKiBEaXNwbGF5TGluay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxODlDQUMyNDc0OUYyRjAwRTU4RDgxIC8qIERpc3BsYXlMaW5rT2JzZXJ2
ZXJJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxNDI3MDIxQzIzRjg0QzAwRDQxMTgzIC8qIERv
d25sb2FkLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMURGNjMxMzE4RTBCN0M4MDAzQTNFMkEgLyog
RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMTQyNzA1MUMyM0Y4NEMwMEQ0
MTE4MyAvKiBEb3dubG9hZElELmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjcwNzFDMjNGODRD
MDBENDExODMgLyogRG93bmxvYWRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTI0MEVC
QTIyMEEwOEQyMDA1Q0ZDNjMgLyogRG93bmxvYWRNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMTA4
NjgsNiArMTA4NjcsNyBAQAogCQkJCTI5ODRGNTg5MTY0QkEwOTUwMDRCQzBDNiAvKiBMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBRDMw
OTMxNjRCNEM1RDAwNzJERUE5IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyOTg0RjU3RDE2NEI5MTVGMDA0QkMwQzYgLyogTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFE
RjYzMTMxOEUwQjdDODAwM0EzRTJBIC8qIExlZ2FjeURvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTFEQzM0MDE5NjM0NkQ3MDBGRjcwNTkgLyogTGVnYWN5U2Vzc2lvblN0YXRl
Q29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTFCMjI2NDFFMzcxQkE2MDA0RjczNjMgLyog
TGliV2ViUlRDTmV0d29yay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzMDc1QjQxREU4NUY1ODAw
MzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
</data>
<flag name="review"
          id="426678"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>