<?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>170809</bug_id>
          
          <creation_ts>2017-04-13 09:45:57 -0700</creation_ts>
          <short_desc>[WK2] Support Icon creation from file URLs on iOS</short_desc>
          <delta_ts>2019-04-03 10:46:18 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=195537</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>170803</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1297013</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-13 09:45:57 -0700</bug_when>
    <thetext>Work towards &lt;rdar://problem/31286130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297204</commentid>
    <comment_count>1</comment_count>
      <attachid>307046</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-13 16:46:28 -0700</bug_when>
    <thetext>Created attachment 307046
Part one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297337</commentid>
    <comment_count>2</comment_count>
      <attachid>307095</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-13 22:48:39 -0700</bug_when>
    <thetext>Created attachment 307095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297338</commentid>
    <comment_count>3</comment_count>
      <attachid>307095</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-13 22:49:06 -0700</bug_when>
    <thetext>Comment on attachment 307095
Patch

Fix 32-bit iOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297607</commentid>
    <comment_count>4</comment_count>
      <attachid>307095</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-14 18:14:19 -0700</bug_when>
    <thetext>Comment on attachment 307095
Patch

Clearing flags on attachment: 307095

Committed r215385: &lt;http://trac.webkit.org/changeset/215385&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297661</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-15 02:26:02 -0700</bug_when>
    <thetext>Windows build fix in &lt;http://trac.webkit.org/changeset/215391&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307046</attachid>
            <date>2017-04-13 16:46:28 -0700</date>
            <delta_ts>2017-04-13 16:58:53 -0700</delta_ts>
            <desc>Part one</desc>
            <filename>bug-170809-20170413164627.patch</filename>
            <type>text/plain</type>
            <size>42849</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzlmM2ZiYjJkOTIzYzg5
YTBiOWE4YmQ3NTk2YmQzOTdhZGE5MmU2MC4uMDdhYWVhZjhmYzMyYjI2N2YzMjFhMGNkZmRhOTE2
NzgwNjhhNjhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA0LTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFN1cHBv
cnQgSWNvbiBjcmVhdGlvbiBmcm9tIGZpbGUgVVJMcyBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDgwOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzEyODYxMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWlub3IgdHdlYWtzIGFuZCByZWZhY3RvcmluZyB0byBzdXBwb3J0IGRpc3BsYXlp
bmcgYSBXZWJDb3JlOjpJY29uIGZyb20gYSBsaXN0IG9mIGZpbGVwYXRocyBvbiBpT1MuIFBsZWFz
ZSBzZWUKKyAgICAgICAgYmVsb3cgYW5ub3RhdGlvbnMgZm9yIG1vcmUgZGV0YWlscy4gTm8gbmV3
IHRlc3RzIHlldCwgYXMgYmVoYXZpb3Igb24gTWFjIHNob3VsZCBub3QgaGF2ZSBjaGFuZ2VkLCBh
bmQgYmVoYXZpb3IKKyAgICAgICAgb24gaU9TIHdpbGwgbm90IGNoYW5nZSB1bnRpbCBsYXRlciBw
YXRjaGVzIGxhbmQuIFRlc3RzIHdpbGwgYmUgYWRkZWQgaW4gYSBsYXRlciBwYXRjaC4KKworICAg
ICAgICBNb3N0IG9mIHRoZSBjaGFuZ2VzIGhlcmUgcmVtb3ZlIHBsYXRmb3JtIHNwZWNpYWwtY2Fz
aW5nIGluIEZpbGVJbnB1dFR5cGUgZm9yIGlPUyBhbmQgTWFjLCByZWZhY3RvcmluZyB0aGUgY29k
ZQorICAgICAgICBzdWNoIHRoYXQgaXQgd29ya3MgZm9yIGJvdGggcGxhdGZvcm1zIHdoaWxlIHBy
ZXNlcnZpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6fkZpbGVJbnB1dFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6c2V0RmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4pOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlw
ZS5oOgorCisgICAgICAgIFVuLWd1YXJkIG1fZmlsZUljb25Mb2FkZXIgb24gaU9TLCBhbmQgdW4t
Z3VhcmQgbV9kaXNwbGF5U3RyaW5nIGZvciBNYWMuIENvbnNvbGlkYXRlIGxvZ2ljIGluIGJvdGgg
dmVyc2lvbiBvZgorICAgICAgICBmaWxlc0Nob3NlbiBhbmQgcmVtb3ZlIHRoZSBpT1Mtc3BlY2lm
aWMgdmVyc2lvbi4gQmVoYXZpb3Igd2hlbiBwYXNzaW5nIGluIGFuIGVtcHR5IGRpc3BsYXkgc3Ry
aW5nIGFuZCBudWxsIEljb24KKyAgICAgICAgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGF0IG9mIHRo
ZSBleGlzdGluZyBmaWxlc0Nob3NlbiBtZXRob2Qgb24gTWFjLiBBbHNvLCBpbnRyb2R1Y2UgYSB2
ZXJzaW9uIG9mIHNldEZpbGVzIHRoYXQKKyAgICAgICAgdGFrZXMgYW4gYWRkaXRpb25hbCBSZXF1
ZXN0SWNvbiBlbnVtIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRvIGFkZGl0aW9uYWxs
eSB1c2UgdGhlIG5ldyBmaWxlcGF0aHMgdG8KKyAgICAgICAgcmVxdWVzdCBhbiBJY29uIHVwZGF0
ZS4gZmlsZXNDaG9zZW4gaW52b2tlcyB0aGlzIHdpdGggUmVxdWVzdEljb246Ok5vIGlmIGEgbm9u
LW51bGwgSWNvbiB3YXMgc3BlY2lmaWVkLCBhcyBpcworICAgICAgICB0aGUgY2FzZSB3aGVuIHVw
bG9hZGluZyBhIGZpbGUgdmlhIHRoZSBpbWFnZSBwaWNrZXIgb24gaU9TLgorCisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmRpc3BsYXlTdHJpbmcpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlw
ZS5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorCisgICAgICAgIEludHJvZHVjZSBDaHJvbWVDbGllbnQ6OmNyZWF0ZUlj
b25Gb3JGaWxlcywgd2hpY2ggZ2VuZXJhdGVzIGFuIGljb24gcmVwcmVzZW50aW5nIHRoZSBjb250
ZW50IGF0IGEgbGlzdCBvZiBmaWxlCisgICAgICAgIHBhdGhzLiBTZWUgV2ViS2l0IGFuZCBXZWJL
aXQyIENoYW5nZUxvZ3MgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIHBsYXRmb3JtL0Zp
bGVDaG9vc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlQ2hvb3NlckNsaWVudDo6ZmlsZXND
aG9zZW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6ZmlsZVRleHRWYWx1
ZSk6CisKKyAgICAgICAgUmVtb3ZlIHBsYXRmb3JtIHNwZWNpYWwtY2FzaW5nIHdoZW4gZ2VuZXJh
dGluZyB0aGUgdGV4dCB0byBkaXNwbGF5IHdoZW4gdXBsb2FkaW5nIGEgZmlsZS4gSWYgYSBkaXNw
bGF5U3RyaW5nCisgICAgICAgIGlzIHNwZWNpZmllZCwgdGhlbiB3ZSB1c2UgdGhlIGNvbnRlbnRz
IG9mIHRoZSBkaXNwbGF5U3RyaW5nOyBvdGhlcndpc2UsIGZhbGwgYmFjayB0byB1c2luZyB0aGUg
aW5wdXQgZWxlbWVudCdzCisgICAgICAgIEZpbGVMaXN0IHRvIGNvbXB1dGUgdGhlIGRpc3BsYXkg
c3RyaW5nLgorCiAyMDE3LTA0LTEwICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRl
eCA5MDEwNTc4MjhkNGJkNDEwNjdkYTk1NWYyNDY3NGJjNDI3YzlmNmEyLi5jYWE1NTE2N2E1YzMz
ZWFlNzBmNDg1NTk1NTg1ZjFmZTFhNDQxYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lv
cy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTctMDQtMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dLMl0gU3VwcG9ydCBJY29uIGNyZWF0aW9uIGZyb20gZmlsZSBVUkxzIG9u
IGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcw
ODA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTI4NjEzMD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3QgZm9yIGNoYW5nZXMgaW4gdGhl
IENocm9tZUNsaWVudCBpbiBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50SU9TLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50SU9TLm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50SU9TOjpjcmVhdGVJY29uRm9yRmls
ZXMpOgorCiAyMDE3LTAzLTAyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVuYW1lIGh0bWxlZGl0aW5nLmgvY3BwIHRvIEVkaXRpbmcuaC9jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCA5Y2NkOGEwNzQ2ODY3OWQ1ZDU2N2RkYmY1MjczZTcwMjEwYzZkZWQ1Li45MmI0ZTg2
MGQ3ZTRmNzUxYTQyYjdhNjY2ZGQxZTEwMDhlODliZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTctMDQtMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dLMl0gU3VwcG9ydCBJY29uIGNyZWF0aW9uIGZyb20gZmlsZSBV
UkxzIG9uIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcwODA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTI4NjEzMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3QgZm9yIGNoYW5nZXMg
aW4gdGhlIENocm9tZUNsaWVudCBpbiBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojpsb2FkSWNvbkZvckZpbGVzKToK
KyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKwogMjAxNy0w
NC0xMCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIENv
cmVBdWRpb0NhcHR1cmVTb3VyY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTkwZDYzMzc5YTg5MTgyZWNhN2Vl
ZDQ1YjE5N2Y0N2E0ZjVmODM4Ni4uMjIyMTQyYTEyMDBhZGM4MDJhNWE1MjJmM2Q3ZDEzZWYwMjBm
ODgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA0LTEzICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFN1cHBvcnQgSWNv
biBjcmVhdGlvbiBmcm9tIGZpbGUgVVJMcyBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDgwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzEyODYxMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVmYWN0b3JzIGZpbGUgaWNvbiBnZW5lcmF0aW9uIGxvZ2ljIHRvIHN1cHBvcnQgc2hvd2lu
ZyBhbiBJY29uIHJlcHJlc2VudGluZyB0aGUgY29udGVudCBhdCBhIGxpc3Qgb2YgZmlsZSBwYXRo
cworICAgICAgICBvbiBpT1MuIFB1bGxzIG91dCBsb2dpYyBpbiBXS0ZpbGVVcGxvYWRQYW5lbCBy
ZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgdGh1bWJuYWlsIGltYWdlIGZvciBhIGZpbGUg
aW5wdXQgaW50bworICAgICAgICBzZXBhcmF0ZSBoZWxwZXJzIGluIFdlYkljb25VdGlsaXRpZXMs
IGFuZCB0aGVuIHVzZXMgdGhlc2UgdXRpbGl0aWVzIGluIGJvdGggV0tGaWxlVXBsb2FkUGFuZWwg
YW5kCisgICAgICAgIFdlYkNocm9tZUNsaWVudElPUy4KKworICAgICAgICAqIFNoYXJlZC9pb3Mv
V2ViSWNvblV0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvaW9zL1dlYkljb25V
dGlsaXRpZXMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpzcXVhcmVDcm9wUmVjdEZvclNp
emUpOgorICAgICAgICAoV2ViS2l0OjpzcXVhcmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OnRo
dW1ibmFpbFNpemVkSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OmZhbGxiYWNrSWNv
bkZvckZpbGUpOgorICAgICAgICAoV2ViS2l0OjppY29uRm9ySW1hZ2VGaWxlKToKKyAgICAgICAg
KFdlYktpdDo6aWNvbkZvclZpZGVvRmlsZSk6CisgICAgICAgIChXZWJLaXQ6Omljb25Gb3JGaWxl
KToKKworICAgICAgICBBZGQgbG9naWMgZm9yIGdlbmVyYXRpbmcgdGh1bWJuYWlsIGljb25zLCBt
b3ZlZCBmcm9tIFdLRmlsZVVwbG9hZFBhbmVsLm1tLgorCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKHNxdWFyZUNyb3BSZWN0Rm9y
U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChzcXVhcmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
ICh0aHVtYm5haWxTaXplZEltYWdlRm9ySW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoZmFsbGJh
Y2tJY29uRm9yRmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChpY29uRm9ySW1hZ2VGaWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKGljb25Gb3JWaWRlb0ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoaWNv
bkZvckZpbGUpOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92ZSBsb2dpYyBmb3IgZ2VuZXJhdGlu
ZyB0aHVtYm5haWwgaWNvbnMuCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmxvYWRJY29uRm9y
RmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUljb25Gb3JG
aWxlcyk6CisKKyAgICAgICAgUmF0aGVyIHRoYW4gY2FsbCBJY29uOjpjcmVhdGVJY29uRm9yRmls
ZXMgZGlyZWN0bHksIGxvYWRJY29uRm9yRmlsZXMgbm93IGNvbnN1bHRzIENocm9tZUNsaWVudDo6
Y3JlYXRlSWNvbkZvckZpbGVzCisgICAgICAgIGluc3RlYWQuIE9uIG90aGVyIHBsYXRmb3Jtcywg
dGhpcyBqdXN0IHR1cm5zIGFyb3VuZCBhbmQgY2FsbHMgSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVz
LCBidXQgb24gaU9TLCB3ZSB1c2UgdGhlCisgICAgICAgIHV0aWxpdGllcyBpbnRyb2R1Y2VkIGlu
IFdlYkljb25VdGlsaXRpZXMgdG8gZ2VuZXJhdGUgYSBmaWxlIGljb24uCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJY29uRm9yRmlsZXMpOgorCiAyMDE3
LTA0LTEwICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
CmluZGV4IDI4YjZjMDY2MWY0ZDMxMjliMTY3OTNlYWU0MTRiN2JhMmY3Y2ViNmIuLmZiNjljM2Mz
YmJmMDNhYjdiNGQ2ZTYyYWFkMTM4NThhY2M1OGI3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcApAQCAtMTAwLDExICsxMDAsOCBAQCBGaWxlSW5wdXRUeXBlOjp+RmlsZUlu
cHV0VHlwZSgpCiAgICAgaWYgKG1fZmlsZUNob29zZXIpCiAgICAgICAgIG1fZmlsZUNob29zZXIt
PmludmFsaWRhdGUoKTsKIAotI2lmICFQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IElzIHRo
aXMgY29ycmVjdD8gV2h5IGRvbid0IHdlIGRvIHRoaXMgb24gaU9TPwogICAgIGlmIChtX2ZpbGVJ
Y29uTG9hZGVyKQogICAgICAgICBtX2ZpbGVJY29uTG9hZGVyLT5pbnZhbGlkYXRlKCk7Ci0jZW5k
aWYKIH0KIAogVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IEZpbGVJbnB1dFR5cGU6OmZpbGVz
RnJvbUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCkBAIC0z
MDEsOCArMjk4LDYgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjptdWx0aXBsZUF0dHJpYnV0ZUNoYW5n
ZWQoKQogICAgICAgICBidXR0b24tPnNldFZhbHVlKGVsZW1lbnQoKS5tdWx0aXBsZSgpID8gZmls
ZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCgpIDogZmlsZUJ1dHRvbkNob29zZUZpbGVM
YWJlbCgpKTsKIH0KIAotI2lmICFQTEFURk9STShJT1MpCi0KIHZvaWQgRmlsZUlucHV0VHlwZTo6
cmVxdWVzdEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogewogICAgIGlmICghcGF0
aHMuc2l6ZSgpKSB7CkBAIC0zMjUsOCArMzIwLDYgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpyZXF1
ZXN0SWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgY2hyb21lLT5sb2FkSWNv
bkZvckZpbGVzKHBhdGhzLCAqbV9maWxlSWNvbkxvYWRlcik7CiB9CiAKLSNlbmRpZgotCiB2b2lk
IEZpbGVJbnB1dFR5cGU6OmFwcGx5RmlsZUNob29zZXJTZXR0aW5ncyhjb25zdCBGaWxlQ2hvb3Nl
clNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBpZiAobV9maWxlQ2hvb3NlcikKQEAgLTMzNyw2
ICszMzAsMTEgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjphcHBseUZpbGVDaG9vc2VyU2V0dGluZ3Mo
Y29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MKIAogdm9pZCBGaWxlSW5wdXRUeXBl
OjpzZXRGaWxlcyhSZWZQdHI8RmlsZUxpc3Q+JiYgZmlsZXMpCiB7CisgICAgc2V0RmlsZXMoV1RG
TW92ZShmaWxlcyksIFJlcXVlc3RJY29uOjpZZXMpOworfQorCit2b2lkIEZpbGVJbnB1dFR5cGU6
OnNldEZpbGVzKFJlZlB0cjxGaWxlTGlzdD4mJiBmaWxlcywgUmVxdWVzdEljb24gc2hvdWxkUmVx
dWVzdEljb24pCit7CiAgICAgaWYgKCFmaWxlcykKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjEs
MTMgKzM1OSwxMyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZpbGVzKFJlZlB0cjxGaWxlTGlz
dD4mJiBmaWxlcykKICAgICBpbnB1dC0+c2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJl
cih0cnVlKTsKICAgICBpbnB1dC0+dXBkYXRlVmFsaWRpdHkoKTsKIAotI2lmICFQTEFURk9STShJ
T1MpCi0gICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7Ci0gICAgcGF0aHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkKLSAgICAgICAgcGF0aHMudW5jaGVja2VkQXBwZW5kKG1fZmlsZUxpc3QtPml0ZW0oaSktPnBh
dGgoKSk7Ci0gICAgcmVxdWVzdEljb24ocGF0aHMpOwotI2VuZGlmCisgICAgaWYgKHNob3VsZFJl
cXVlc3RJY29uID09IFJlcXVlc3RJY29uOjpZZXMpIHsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
cGF0aHM7CisgICAgICAgIHBhdGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAg
cGF0aHMudW5jaGVja2VkQXBwZW5kKG1fZmlsZUxpc3QtPml0ZW0oaSktPnBhdGgoKSk7CisgICAg
ICAgIHJlcXVlc3RJY29uKHBhdGhzKTsKKyAgICB9CiAKICAgICBpZiAoaW5wdXQtPnJlbmRlcmVy
KCkpCiAgICAgICAgIGlucHV0LT5yZW5kZXJlcigpLT5yZXBhaW50KCk7CkBAIC0zODAsMTMgKzM3
OCwxNSBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZpbGVzKFJlZlB0cjxGaWxlTGlzdD4mJiBm
aWxlcykKICAgICBpbnB1dC0+c2V0Q2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZl
bnQoZmFsc2UpOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKQotCiB2b2lkIEZpbGVJbnB1dFR5cGU6
OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNv
bnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgSWNvbiogaWNvbikKIHsKLSAgICBtX2Rpc3BsYXlT
dHJpbmcgPSBkaXNwbGF5U3RyaW5nOwotICAgIGZpbGVzQ2hvc2VuKHBhdGhzKTsKLSAgICBpY29u
TG9hZGVkKGljb24pOworICAgIGlmICghZGlzcGxheVN0cmluZy5pc0VtcHR5KCkpCisgICAgICAg
IG1fZGlzcGxheVN0cmluZyA9IGRpc3BsYXlTdHJpbmc7CisKKyAgICBzZXRGaWxlcyhjcmVhdGVG
aWxlTGlzdChwYXRocyksIGljb24gPyBSZXF1ZXN0SWNvbjo6Tm8gOiBSZXF1ZXN0SWNvbjo6WWVz
KTsKKworICAgIGlmIChpY29uKQorICAgICAgICBpY29uTG9hZGVkKGljb24pOwogfQogCiBTdHJp
bmcgRmlsZUlucHV0VHlwZTo6ZGlzcGxheVN0cmluZygpIGNvbnN0CkBAIC0zOTQsMTMgKzM5NCw2
IEBAIFN0cmluZyBGaWxlSW5wdXRUeXBlOjpkaXNwbGF5U3RyaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kaXNwbGF5U3RyaW5nOwogfQogCi0jZW5kaWYKLQotdm9pZCBGaWxlSW5wdXRUeXBlOjpm
aWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIGZpbGVzKQotewot
ICAgIHNldEZpbGVzKGNyZWF0ZUZpbGVMaXN0KGZpbGVzKSk7Ci19Ci0KIHZvaWQgRmlsZUlucHV0
VHlwZTo6aWNvbkxvYWRlZChSZWZQdHI8SWNvbj4mJiBpY29uKQogewogICAgIGlmIChtX2ljb24g
PT0gaWNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggZWU0MDY0OGQ2OTUx
ZGE2YWQyOTM5YTAyZjUzNmU3Nzg4NjljMmY2Yy4uMmViYWE1ZDk3YjAxMjQ2MzE4ZmMwYTE4ODQ2
NzdiNzYzYWM0YzIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKQEAgLTYxLDkg
KzYxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblNldFN0cmluZ1ZhbHVlKCkgY29uc3QgZmlu
YWw7CiAgICAgRmlsZUxpc3QqIGZpbGVzKCkgZmluYWw7CiAgICAgdm9pZCBzZXRGaWxlcyhSZWZQ
dHI8RmlsZUxpc3Q+JiYpIGZpbmFsOwotI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbnVtIGNsYXNz
IFJlcXVlc3RJY29uIHsgWWVzLCBObyB9OworICAgIHZvaWQgc2V0RmlsZXMoUmVmUHRyPEZpbGVM
aXN0PiYmLCBSZXF1ZXN0SWNvbik7CiAgICAgU3RyaW5nIGRpc3BsYXlTdHJpbmcoKSBjb25zdCBm
aW5hbDsKLSNlbmRpZgogICAgIGJvb2wgY2FuU2V0VmFsdWUoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgYm9vbCBnZXRUeXBlU3BlY2lmaWNWYWx1ZShTdHJpbmcmKSBmaW5hbDsgLy8gQ2hlY2tl
ZCBmaXJzdCwgYmVmb3JlIGludGVybmFsIHN0b3JhZ2Ugb3IgdGhlIHZhbHVlIGF0dHJpYnV0ZS4K
ICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0
RmllbGRFdmVudEJlaGF2aW9yKSBmaW5hbDsKQEAgLTc5LDExICs3OSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBtdWx0aXBsZUF0dHJpYnV0ZUNoYW5nZWQoKSBmaW5hbDsKICAgICBTdHJpbmcgZGVm
YXVsdFRvb2xUaXAoKSBjb25zdCBmaW5hbDsKIAotICAgIC8vIEZpbGVDaG9vc2VyQ2xpZW50IGlt
cGxlbWVudGF0aW9uLgotICAgIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9v
c2VyRmlsZUluZm8+JikgZmluYWw7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgZmlsZXND
aG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5U3RyaW5nLCBJY29uKikgZmluYWw7Ci0jZW5kaWYKKyAgICB2b2lkIGZpbGVzQ2hvc2Vu
KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eVN0cmluZyA9IHsgfSwgSWNvbiogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIC8vIEZpbGVJY29u
TG9hZGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgaWNvbkxvYWRlZChSZWZQdHI8
SWNvbj4mJikgZmluYWw7CkBAIC05NCwxNSArOTAsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFw
cGx5RmlsZUNob29zZXJTZXR0aW5ncyhjb25zdCBGaWxlQ2hvb3NlclNldHRpbmdzJik7CiAKICAg
ICBSZWZQdHI8RmlsZUNob29zZXI+IG1fZmlsZUNob29zZXI7Ci0jaWYgIVBMQVRGT1JNKElPUykK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZUljb25Mb2FkZXI+IG1fZmlsZUljb25Mb2FkZXI7Ci0j
ZW5kaWYKIAogICAgIFJlZjxGaWxlTGlzdD4gbV9maWxlTGlzdDsKICAgICBSZWZQdHI8SWNvbj4g
bV9pY29uOwotI2lmIFBMQVRGT1JNKElPUykKICAgICBTdHJpbmcgbV9kaXNwbGF5U3RyaW5nOwot
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBlYzU1N2QwYjE4ZWRmZmZlN2I0NDVjYzQzOGFlZWJk
NWYyZWI5MzViLi5lMGE3ZWMzYThlNjdiYWU1MjFhN2NmMWY1NGYzZGVjMzcwN2ZjODYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEzNTgsMTIgKzEzNTgs
MTAgQEAgSWNvbiogSFRNTElucHV0RWxlbWVudDo6aWNvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aW5wdXRUeXBlLT5pY29uKCk7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCiBTdHJpbmcgSFRNTElu
cHV0RWxlbWVudDo6ZGlzcGxheVN0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5wdXRU
eXBlLT5kaXNwbGF5U3RyaW5nKCk7CiB9Ci0jZW5kaWYKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50
OjpjYW5SZWNlaXZlRHJvcHBlZEZpbGVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmgKaW5kZXggMDUzOTMzNTVlY2YyOGE1ZmU0ZTdjNzExZTBhNWQyZjJiOTM1
OWFmMi4uYjQ5Y2NjMmQyYzY5YWU2YzUyMDkzMTg1MWY4ZmI5ZTgzZTJlZjhiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI0Niw5ICsyNDYsOCBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIEljb24qIGljb24oKSBjb25zdDsKLSNpZiBQTEFURk9STShJT1MpCiAg
ICAgU3RyaW5nIGRpc3BsYXlTdHJpbmcoKSBjb25zdDsKLSNlbmRpZgorCiAgICAgLy8gVGhlc2Ug
ZnVuY3Rpb25zIGFyZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIGlucHV0IGFjdGl2ZSBkdXJpbmcg
YQogICAgIC8vIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9uLgogICAgIGJvb2wgY2FuUmVjZWl2ZURy
b3BwZWRGaWxlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDNhODYx
YWQ2NjA0OTU0MWQ2N2ExNGMyY2VmZGQ0ZDFlNTY1MTEzMzQuLmJjZDk2MzhlM2JjMDRjMjRkNjNm
NTUxNTg0Y2JjMmRmZjUxMTBhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTc0
MSwxNiArNzQxLDEyIEBAIEljb24qIElucHV0VHlwZTo6aWNvbigpIGNvbnN0CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLSNpZiBQTEFURk9STShJT1MpCi0KIFN0cmluZyBJbnB1dFR5cGU6OmRp
c3BsYXlTdHJpbmcoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KIAotI2VuZGlmCi0KIGJvb2wgSW5wdXRUeXBlOjpzaG91bGRSZXNl
dE9uRG9jdW1lbnRBY3RpdmF0aW9uKCkKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuaAppbmRleCA5OGNmZjg5YWFiOGI1OWFiOTU2ZTQzNjAyODUxYzBhODRjNDliY2E2
Li5jMmQwYjMxY2M4YjdjZjBhOGRmY2YyMjY5ZDY4OWI2YjM5NjhhODFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmgKQEAgLTMwMyw4ICszMDMsOCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgdmlydHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlTdHJpbmcoKSBjb25zdDsKICNlbmRpZgorICAgIHZp
cnR1YWwgU3RyaW5nIGRpc3BsYXlTdHJpbmcoKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IG1fZWxlbWVudChl
bGVtZW50KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBlMmFhNjBl
ZDc0ODkzNzQ4Njk2ZTg5MTcwMzNiMWNlMDFmMWQ1MzJkLi5kYzRkYzk1YjViNTY1NzFjYWM4OTA5
NmY4OWFiZmIyZTEzN2QwMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBA
IC0yMDQsNiArMjA0LDggQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21l
Q2xpZW50IHsKIAogICAgIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8RWxlbWVudD4+JikgZmluYWwgeyB9CiAgICAgYm9vbCBzaG91bGROb3RpZnlPbkZv
cm1DaGFuZ2VzKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIFJlZlB0cjxJY29uPiBj
cmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQogfTsKIAogdm9pZCBmaWxsV2l0aEVtcHR5Q2xpZW50
cyhQYWdlQ29uZmlndXJhdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXgg
YjA4MGE5NTg5NTllNDU2NWNmMDJjN2Y0MDgwN2Y4YzQ0MDJmMDFmNy4uODQ4MGQ5MTNlNTUwNTA5
MTE2YmQxYzRhNmI4Y2JiY2UzZDRhN2ZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSFRNTE1lZGlhRWxlbWVudEVudW1zLmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2lu
Y2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oIgogI2lu
Y2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKQEAgLTQ2NSw2
ICs0NjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVu
dE1hcmtlclJlY3RzKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vzc0NQVVRp
bWUoaW50NjRfdCwgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KKyAgICB2aXJ0dWFs
IFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8q
IGZpbGVuYW1lcyAqLykgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xp
ZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaAppbmRleCA3ZDMxYzU2
MmUzYjlhMDBiM2RlMWQ4NzgzNGU5NDkzMzcyNzc5MTUzLi43ZTMyOTBmMTgxODFhMjEwYWNjODJi
NzY0ZjBlODgwM2YxZjI1ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlQ2hvb3Nlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgK
QEAgLTczLDEyICs3Myw3IEBAIGNsYXNzIEZpbGVDaG9vc2VyQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5GaWxlQ2hvb3NlckNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGZp
bGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYpID0gMDsKLSNpZiBQ
TEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgYWxtb3N0IGlkZW50
aWNhbCB0byBGaWxlQ2hvb3Nlcjo6ZmlsZXNDaG9zZW4oKS4gV2Ugc2hvdWxkIG1lcmdlIHRoaXMK
LSAgICAvLyBmdW5jdGlvbiB3aXRoIEZpbGVDaG9vc2VyOjpmaWxlc0Nob3NlbigpIGFuZCBoZW5j
ZSByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCi0gICAgdmlydHVhbCB2b2lkIGZpbGVz
Q2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IFN0cmluZyYg
ZGlzcGxheVN0cmluZywgSWNvbiopID0gMDsKLSNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBmaWxl
c0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlTdHJpbmcgPSB7IH0sIEljb24qID0gbnVsbHB0cikgPSAwOwogfTsKIAogY2xhc3Mg
RmlsZUNob29zZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlQ2hvb3Nlcj4gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5k
ZXggNTVlNDk5YzgzYjYxMDc1ZmFjYTA4Mjg1MDM4NDkwY2I3MjFlNTI0NC4uYWUyNTBmNGU4Yzk2
OGY0YzM0ZWViYTA0YWExODQ5YmYyYTgwMmIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0zMywxNCArMzMsMTEg
QEAKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW5j
bHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUg
PG1hdGguaD4KIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3Iu
aCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CkBAIC0yNjYsMTIgKzI2MywxMSBAQCBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2w6OmJ1dHRvblZhbHVlKCkKIAogU3RyaW5nIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpmaWxl
VGV4dFZhbHVlKCkgY29uc3QKIHsKKyAgICBhdXRvJiBpbnB1dCA9IGlucHV0RWxlbWVudCgpOwog
ICAgIEFTU0VSVChpbnB1dEVsZW1lbnQoKS5maWxlcygpKTsKLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgaWYgKGlucHV0RWxlbWVudCgpLmZpbGVzKCktPmxlbmd0aCgpKQotICAgICAgICByZXR1cm4g
U3RyaW5nVHJ1bmNhdG9yOjpyaWdodFRydW5jYXRlKGlucHV0RWxlbWVudCgpLmRpc3BsYXlTdHJp
bmcoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBzdHlsZSgpLmZvbnRDYXNjYWRlKCkpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIHRoZW1lKCkuZmlsZUxpc3ROYW1lRm9yV2lkdGgoaW5wdXRFbGVtZW50KCku
ZmlsZXMoKSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpLCBtYXhGaWxlbmFtZVdpZHRoKCksIGlucHV0
RWxlbWVudCgpLm11bHRpcGxlKCkpOworICAgIGlmIChpbnB1dC5maWxlcygpLT5sZW5ndGgoKSAm
JiAhaW5wdXQuZGlzcGxheVN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmlu
Z1RydW5jYXRvcjo6cmlnaHRUcnVuY2F0ZShpbnB1dC5kaXNwbGF5U3RyaW5nKCksIG1heEZpbGVu
YW1lV2lkdGgoKSwgc3R5bGUoKS5mb250Q2FzY2FkZSgpKTsKKyAgICByZXR1cm4gdGhlbWUoKS5m
aWxlTGlzdE5hbWVGb3JXaWR0aChpbnB1dC5maWxlcygpLCBzdHlsZSgpLmZvbnRDYXNjYWRlKCks
IG1heEZpbGVuYW1lV2lkdGgoKSwgaW5wdXQubXVsdGlwbGUoKSk7CiB9CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudElPUy5oCmluZGV4IDE0NjQ0OGI3NTI1ZTU1NjE3MWNlZGI2ZDk0
NWQwYWRjMGZmNjU3MjYuLmIxNzJhYTAwMTU2M2ExMTA2YTg1NGFkNTg3ZTNiNTU0NTZmODIwMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudElPUy5oCkBAIC04OSw2ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3ZWJBcHBP
cmllbnRhdGlvbnNVcGRhdGVkKCkgZmluYWw7CiAgICAgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5n
ZWQoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKGJvb2wgaGFzVmlkZW8pIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJY29uPiBj
cmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykgZmluYWw7
CiAKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogICAgIGludCBkZXZpY2VPcmllbnRh
dGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4IDY4OTcxZDI2NmYzNWY0MGE3OTlh
NmMwNDViNzk1MmExMTBhMjAwOTkuLmEwNGZkYjI5ZmUyYWJkYTg1ZjU0MmY1NjA5MGI1ZjI3YmFl
OWQwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnRJT1MubW0KQEAgLTM1NSw2ICszNTUsMTEgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnRJT1M6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvKQogICAgIFtb
d2ViVmlldygpIF9VSUtpdERlbGVnYXRlRm9yd2FyZGVyXSBzaG93UGxheWJhY2tUYXJnZXRQaWNr
ZXI6aGFzVmlkZW8gZnJvbVJlY3Q6ZWxlbWVudFJlY3RdOwogfQogCitSZWZQdHI8SWNvbj4gV2Vi
Q2hyb21lQ2xpZW50SU9TOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVuYW1lcykKK3sKKyAgICByZXR1cm4gSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVu
YW1lcyk7Cit9CisKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQogCiBpbnQgV2ViQ2hy
b21lQ2xpZW50SU9TOjpkZXZpY2VPcmllbnRhdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGNhODAwOTE3
NWE1ZDkxMzQ1MWMwMGZjNTE2YTA0M2U3YTE2ZjAwNjIuLjg3MjNmYzJmMTQzY2M1Njk3NWI0MzU4
N2UzODk4NGEzMjVhMDViNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xMjgsNiArMTI4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6RmlsZUNob29z
ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBXZWJDb3JlOjpGaWxlSWNvbkxvYWRlciYpIGZpbmFsOworICAgIFJlZlB0cjxXZWJD
b3JlOjpJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVu
YW1lcykgb3ZlcnJpZGU7CiAKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZvaWQgc2V0Q3Vyc29y
KGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IGFhOTFlZDViZTViNmE0
OTI0NmZmNDJhOWVmNDMyMjY2OTZmNWU4MWYuLjQzOTk4YmViMTNlNTBiYWUzNWY1YmYwODVhMjhm
ZTA2N2Y5Yzc3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTc2Miw3ICs3NjIsMTIgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJiBjaG9vc2VyKQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6bG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZW5hbWVzLCBGaWxlSWNvbkxvYWRlciYgaWNvbkxvYWRlcikKIHsKLSAgICBpY29uTG9hZGVy
Lmljb25Mb2FkZWQoSWNvbjo6Y3JlYXRlSWNvbkZvckZpbGVzKGZpbGVuYW1lcykpOworICAgIGlj
b25Mb2FkZXIuaWNvbkxvYWRlZChjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7Cit9CisK
K1JlZlB0cjxJY29uPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQoreworICAgIHJldHVybiBJY29uOjpjcmVhdGVJY29u
Rm9yRmlsZXMoZmlsZW5hbWVzKTsKIH0KIAogI2lmICFQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1dlYkljb25VdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9pb3MvV2ViSWNvblV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxZTZhMmQw
NjQ5M2RkMTljZGM4M2Q3NTc1MDZlOWUwNDJjYTU3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1dlYkljb25VdGlsaXRpZXMuaApAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShJT1MpCisKK0BjbGFz
cyBVSUltYWdlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworVUlJbWFnZSAqZmFsbGJhY2tJY29u
Rm9yRmlsZShOU1VSTCAqZmlsZSk7CitVSUltYWdlICppY29uRm9ySW1hZ2VGaWxlKE5TVVJMICpm
aWxlKTsKK1VJSW1hZ2UgKmljb25Gb3JWaWRlb0ZpbGUoTlNVUkwgKmZpbGUpOworVUlJbWFnZSAq
aWNvbkZvckZpbGUoTlNVUkwgKmZpbGUpOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9XZWJJY29uVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2lvcy9XZWJJY29uVXRpbGl0aWVzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMDU4ZjY3YTIy
ZWY3ZmUyZDM3Y2Q1YmMzZGE2ODVjZDM1ZjRhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvaW9zL1dlYkljb25VdGlsaXRpZXMubW0KQEAgLTAsMCArMSwxNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSWNvblV0aWxp
dGllcy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8Q29yZUdyYXBoaWNz
L0NvcmVHcmFwaGljcy5oPgorI2ltcG9ydCA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgorI2ltcG9y
dCA8SW1hZ2VJTy9JbWFnZUlPLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+Cisj
aW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitT
T0ZUX0xJTktfRlJBTUVXT1JLKEFWRm91bmRhdGlvbik7CitTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IpOworU09GVF9MSU5LX0NMQVNTKEFWRm91bmRh
dGlvbiwgQVZVUkxBc3NldCk7CisKK1NPRlRfTElOS19GUkFNRVdPUksoQ29yZU1lZGlhKTsKK1NP
RlRfTElOS19DT05TVEFOVChDb3JlTWVkaWEsIGtDTVRpbWVaZXJvLCBDTVRpbWUpOworCisjZGVm
aW5lIGtDTVRpbWVaZXJvIGdldGtDTVRpbWVaZXJvKCkKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0YXRpYyBjb25zdCBDR0Zsb2F0IGljb25TaWRlTGVuZ3RoID0gMTAwOworCitzdGF0aWMgQ0dS
ZWN0IHNxdWFyZUNyb3BSZWN0Rm9yU2l6ZShDR1NpemUgc2l6ZSkKK3sKKyAgICBDR0Zsb2F0IHNt
YWxsZXJTaWRlID0gc3RkOjptaW4oc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOworICAgIENHUmVj
dCBjcm9wUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgc21hbGxlclNpZGUsIHNtYWxsZXJTaWRlKTsK
KworICAgIGlmIChzaXplLndpZHRoIDwgc2l6ZS5oZWlnaHQpCisgICAgICAgIGNyb3BSZWN0Lm9y
aWdpbi55ID0gc3RkOjpyb3VuZCgoc2l6ZS5oZWlnaHQgLSBzbWFsbGVyU2lkZSkgLyAyKTsKKyAg
ICBlbHNlCisgICAgICAgIGNyb3BSZWN0Lm9yaWdpbi54ID0gc3RkOjpyb3VuZCgoc2l6ZS53aWR0
aCAtIHNtYWxsZXJTaWRlKSAvIDIpOworCisgICAgcmV0dXJuIGNyb3BSZWN0OworfQorCitzdGF0
aWMgVUlJbWFnZSAqc3F1YXJlSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKK3sKKyAgICBpZiAoIWlt
YWdlKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQ0dTaXplIGltYWdlU2l6ZSA9IENHU2l6
ZU1ha2UoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkpOwor
ICAgIGlmIChpbWFnZVNpemUud2lkdGggPT0gaW1hZ2VTaXplLmhlaWdodCkKKyAgICAgICAgcmV0
dXJuIFtVSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2VdOworCisgICAgQ0dSZWN0IHNxdWFy
ZUNyb3BSZWN0ID0gc3F1YXJlQ3JvcFJlY3RGb3JTaXplKGltYWdlU2l6ZSk7CisgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IHNxdWFyZUltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aElt
YWdlSW5SZWN0KGltYWdlLCBzcXVhcmVDcm9wUmVjdCkpOworICAgIHJldHVybiBbVUlJbWFnZSBp
bWFnZVdpdGhDR0ltYWdlOnNxdWFyZUltYWdlLmdldCgpXTsKK30KKworc3RhdGljIFVJSW1hZ2Ug
KnRodW1ibmFpbFNpemVkSW1hZ2VGb3JJbWFnZShDR0ltYWdlUmVmIGltYWdlKQoreworICAgIFVJ
SW1hZ2UgKnNxdWFyZWRJbWFnZSA9IHNxdWFyZUltYWdlKGltYWdlKTsKKyAgICBpZiAoIXNxdWFy
ZWRJbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIENHUmVjdCBkZXN0UmVjdCA9IENH
UmVjdE1ha2UoMCwgMCwgaWNvblNpZGVMZW5ndGgsIGljb25TaWRlTGVuZ3RoKTsKKyAgICBVSUdy
YXBoaWNzQmVnaW5JbWFnZUNvbnRleHQoZGVzdFJlY3Quc2l6ZSk7CisgICAgQ0dDb250ZXh0U2V0
SW50ZXJwb2xhdGlvblF1YWxpdHkoVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0KCksIGtDR0lu
dGVycG9sYXRpb25IaWdoKTsKKyAgICBbc3F1YXJlZEltYWdlIGRyYXdJblJlY3Q6ZGVzdFJlY3Rd
OworICAgIFVJSW1hZ2UgKnJlc3VsdEltYWdlID0gVUlHcmFwaGljc0dldEltYWdlRnJvbUN1cnJl
bnRJbWFnZUNvbnRleHQoKTsKKyAgICBVSUdyYXBoaWNzRW5kSW1hZ2VDb250ZXh0KCk7CisgICAg
cmV0dXJuIHJlc3VsdEltYWdlOworfQorCitVSUltYWdlKiBmYWxsYmFja0ljb25Gb3JGaWxlKE5T
VVJMICpmaWxlKQoreworICAgIEFTU0VSVF9BUkcoZmlsZSwgW2ZpbGUgaXNGaWxlVVJMXSk7CisK
KyAgICBVSURvY3VtZW50SW50ZXJhY3Rpb25Db250cm9sbGVyICppbnRlcmFjdGlvbkNvbnRyb2xs
ZXIgPSBbVUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciBpbnRlcmFjdGlvbkNvbnRyb2xs
ZXJXaXRoVVJMOmZpbGVdOworICAgIHJldHVybiB0aHVtYm5haWxTaXplZEltYWdlRm9ySW1hZ2Uo
aW50ZXJhY3Rpb25Db250cm9sbGVyLmljb25zWzBdLkNHSW1hZ2UpOworfQorCitVSUltYWdlKiBp
Y29uRm9ySW1hZ2VGaWxlKE5TVVJMICpmaWxlKQoreworICAgIEFTU0VSVF9BUkcoZmlsZSwgW2Zp
bGUgaXNGaWxlVVJMXSk7CisKKyAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAeworICAgICAg
ICAoaWQpa0NHSW1hZ2VTb3VyY2VDcmVhdGVUaHVtYm5haWxGcm9tSW1hZ2VJZkFic2VudDogQFlF
UywKKyAgICAgICAgKGlkKWtDR0ltYWdlU291cmNlVGh1bWJuYWlsTWF4UGl4ZWxTaXplOiBAKGlj
b25TaWRlTGVuZ3RoKSwKKyAgICAgICAgKGlkKWtDR0ltYWdlU291cmNlQ3JlYXRlVGh1bWJuYWls
V2l0aFRyYW5zZm9ybTogQFlFUywKKyAgICB9OworICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNl
PiBpbWFnZVNvdXJjZSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhVUkwoKENGVVJM
UmVmKWZpbGUsIDApKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gdGh1bWJuYWlsID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ3JlYXRlVGh1bWJuYWlsQXRJbmRleChpbWFnZVNvdXJjZS5nZXQo
KSwgMCwgKENGRGljdGlvbmFyeVJlZilvcHRpb25zKSk7CisgICAgaWYgKCF0aHVtYm5haWwpIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBjcmVhdGluZyB0aHVtYm5haWwgaW1hZ2UgZm9yIGlt
YWdlOiAlQCIsIGZpbGUpOworICAgICAgICByZXR1cm4gZmFsbGJhY2tJY29uRm9yRmlsZShmaWxl
KTsKKyAgICB9CisKKyAgICByZXR1cm4gdGh1bWJuYWlsU2l6ZWRJbWFnZUZvckltYWdlKHRodW1i
bmFpbC5nZXQoKSk7Cit9CisKK1VJSW1hZ2UqIGljb25Gb3JWaWRlb0ZpbGUoTlNVUkwgKmZpbGUp
Cit7CisgICAgQVNTRVJUX0FSRyhmaWxlLCBbZmlsZSBpc0ZpbGVVUkxdKTsKKworICAgIFJldGFp
blB0cjxBVlVSTEFzc2V0PiBhc3NldCA9IGFkb3B0TlMoW2FsbG9jQVZVUkxBc3NldEluc3RhbmNl
KCkgaW5pdFdpdGhVUkw6ZmlsZSBvcHRpb25zOm5pbF0pOworICAgIFJldGFpblB0cjxBVkFzc2V0
SW1hZ2VHZW5lcmF0b3I+IGdlbmVyYXRvciA9IGFkb3B0TlMoW2FsbG9jQVZBc3NldEltYWdlR2Vu
ZXJhdG9ySW5zdGFuY2UoKSBpbml0V2l0aEFzc2V0OmFzc2V0LmdldCgpXSk7CisgICAgW2dlbmVy
YXRvciBzZXRBcHBsaWVzUHJlZmVycmVkVHJhY2tUcmFuc2Zvcm06WUVTXTsKKworICAgIE5TRXJy
b3IgKmVycm9yID0gbmlsOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZVJlZiA9IGFk
b3B0Q0YoW2dlbmVyYXRvciBjb3B5Q0dJbWFnZUF0VGltZTprQ01UaW1lWmVybyBhY3R1YWxUaW1l
Om5pbCBlcnJvcjomZXJyb3JdKTsKKyAgICBpZiAoIWltYWdlUmVmKSB7CisgICAgICAgIExPR19F
UlJPUigiRXJyb3IgY3JlYXRpbmcgaW1hZ2UgZm9yIHZpZGVvICclQCc6ICVAIiwgZmlsZSwgZXJy
b3IpOworICAgICAgICByZXR1cm4gZmFsbGJhY2tJY29uRm9yRmlsZShmaWxlKTsKKyAgICB9CisK
KyAgICByZXR1cm4gdGh1bWJuYWlsU2l6ZWRJbWFnZUZvckltYWdlKGltYWdlUmVmLmdldCgpKTsK
K30KKworVUlJbWFnZSogaWNvbkZvckZpbGUoTlNVUkwgKmZpbGUpCit7CisgICAgQVNTRVJUX0FS
RyhmaWxlLCBbZmlsZSBpc0ZpbGVVUkxdKTsKKworICAgIE5TU3RyaW5nICpmaWxlRXh0ZW5zaW9u
ID0gZmlsZS5wYXRoRXh0ZW5zaW9uOworICAgIGlmICghZmlsZUV4dGVuc2lvbi5sZW5ndGgpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpbGVVVEkg
PSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NGaWxlbmFtZUV4dGVuc2lvbiwgKENGU3RyaW5nUmVmKWZpbGVFeHRlbnNpb24sIDApKTsKKwor
ICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKGZpbGVVVEkuZ2V0KCksIGtVVFR5cGVJbWFnZSkpCisg
ICAgICAgIHJldHVybiBpY29uRm9ySW1hZ2VGaWxlKGZpbGUpOworCisgICAgaWYgKFVUVHlwZUNv
bmZvcm1zVG8oZmlsZVVUSS5nZXQoKSwga1VUVHlwZU1vdmllKSkKKyAgICAgICAgcmV0dXJuIGlj
b25Gb3JWaWRlb0ZpbGUoZmlsZSk7CisKKyAgICByZXR1cm4gZmFsbGJhY2tJY29uRm9yRmlsZShm
aWxlKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDA1OWVhZDRhNGMyZjky
MTUwYTljMTJhNTVjMTE3ZWJjMzRlM2QyMWEuLjMxNjc3ZjA5MmFhYjRlNzEyMjAwNDA2ODgyYzBk
ZTg2NWNiOGVkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAi
V0tEYXRhLmgiCiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0ICJXS1VSTENGLmgiCisj
aW1wb3J0ICJXZWJJY29uVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KQEAgLTUwLDEzICs1MSw2IEBACiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKLVNPRlRfTElOS19GUkFNRVdPUksoQVZGb3VuZGF0aW9uKTsKLVNPRlRf
TElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRJbWFnZUdlbmVyYXRvcik7Ci1TT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KTsKLQotU09GVF9MSU5LX0ZSQU1FV09S
SyhDb3JlTWVkaWEpOwotU09GVF9MSU5LX0NPTlNUQU5UKENvcmVNZWRpYSwga0NNVGltZVplcm8s
IENNVGltZSk7Ci0KIFNPRlRfTElOS19GUkFNRVdPUksoUGhvdG9zKTsKIFNPRlRfTElOS19DTEFT
UyhQaG90b3MsIFBIQXNzZXQpOwogU09GVF9MSU5LX0NMQVNTKFBob3RvcywgUEhJbWFnZU1hbmFn
ZXIpOwpAQCAtNjQsOCArNTgsNiBAQCBTT0ZUX0xJTktfQ0xBU1MoUGhvdG9zLCBQSEltYWdlUmVx
dWVzdE9wdGlvbnMpOwogU09GVF9MSU5LX0NPTlNUQU5UKFBob3RvcywgUEhJbWFnZVJlcXVlc3RP
cHRpb25zUmVzaXplTW9kZU5vbmUsIE5TU3RyaW5nICopOwogU09GVF9MSU5LX0NPTlNUQU5UKFBo
b3RvcywgUEhJbWFnZVJlcXVlc3RPcHRpb25zVmVyc2lvbkN1cnJlbnQsIE5TU3RyaW5nICopOwog
Ci0jZGVmaW5lIGtDTVRpbWVaZXJvIGdldGtDTVRpbWVaZXJvKCkKLQogI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJl
Y2F0ZWQtZGVjbGFyYXRpb25zIgogCkBAIC04NiwxMTcgKzc4LDYgQEAgc3RhdGljIGlubGluZSBV
SUltYWdlICpjYW1lcmFJY29uKCkKICAgICByZXR1cm4gX1VJSW1hZ2VHZXRXZWJLaXRUYWtlUGhv
dG9PclZpZGVvSWNvbigpOwogfQogCi0jcHJhZ21hIG1hcmsgLSBJY29uIGdlbmVyYXRpb24KLQot
c3RhdGljIGNvbnN0IENHRmxvYXQgaWNvblNpZGVMZW5ndGggPSAxMDA7Ci0KLXN0YXRpYyBDR1Jl
Y3Qgc3F1YXJlQ3JvcFJlY3RGb3JTaXplKENHU2l6ZSBzaXplKQotewotICAgIENHRmxvYXQgc21h
bGxlclNpZGUgPSBNSU4oc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwotICAgIENHUmVjdCBjcm9w
UmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgc21hbGxlclNpZGUsIHNtYWxsZXJTaWRlKTsKLQotICAg
IGlmIChzaXplLndpZHRoIDwgc2l6ZS5oZWlnaHQpCi0gICAgICAgIGNyb3BSZWN0Lm9yaWdpbi55
ID0gc3RkOjpyb3VuZCgoc2l6ZS5oZWlnaHQgLSBzbWFsbGVyU2lkZSkgLyAyKTsKLSAgICBlbHNl
Ci0gICAgICAgIGNyb3BSZWN0Lm9yaWdpbi54ID0gc3RkOjpyb3VuZCgoc2l6ZS53aWR0aCAtIHNt
YWxsZXJTaWRlKSAvIDIpOwotCi0gICAgcmV0dXJuIGNyb3BSZWN0OwotfQotCi1zdGF0aWMgVUlJ
bWFnZSAqc3F1YXJlSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKLXsKLSAgICBpZiAoIWltYWdlKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgQ0dTaXplIGltYWdlU2l6ZSA9IENHU2l6ZU1ha2Uo
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkpOwotICAgIGlm
IChpbWFnZVNpemUud2lkdGggPT0gaW1hZ2VTaXplLmhlaWdodCkKLSAgICAgICAgcmV0dXJuIFtV
SUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2VdOwotCi0gICAgQ0dSZWN0IHNxdWFyZUNyb3BS
ZWN0ID0gc3F1YXJlQ3JvcFJlY3RGb3JTaXplKGltYWdlU2l6ZSk7Ci0gICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHNxdWFyZUltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5S
ZWN0KGltYWdlLCBzcXVhcmVDcm9wUmVjdCkpOwotICAgIHJldHVybiBbVUlJbWFnZSBpbWFnZVdp
dGhDR0ltYWdlOnNxdWFyZUltYWdlLmdldCgpXTsKLX0KLQotc3RhdGljIFVJSW1hZ2UgKnRodW1i
bmFpbFNpemVkSW1hZ2VGb3JJbWFnZShDR0ltYWdlUmVmIGltYWdlKQotewotICAgIFVJSW1hZ2Ug
KnNxdWFyZWRJbWFnZSA9IHNxdWFyZUltYWdlKGltYWdlKTsKLSAgICBpZiAoIXNxdWFyZWRJbWFn
ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIENHUmVjdCBkZXN0UmVjdCA9IENHUmVjdE1h
a2UoMCwgMCwgaWNvblNpZGVMZW5ndGgsIGljb25TaWRlTGVuZ3RoKTsKLSAgICBVSUdyYXBoaWNz
QmVnaW5JbWFnZUNvbnRleHQoZGVzdFJlY3Quc2l6ZSk7Ci0gICAgQ0dDb250ZXh0U2V0SW50ZXJw
b2xhdGlvblF1YWxpdHkoVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0KCksIGtDR0ludGVycG9s
YXRpb25IaWdoKTsKLSAgICBbc3F1YXJlZEltYWdlIGRyYXdJblJlY3Q6ZGVzdFJlY3RdOwotICAg
IFVJSW1hZ2UgKnJlc3VsdEltYWdlID0gVUlHcmFwaGljc0dldEltYWdlRnJvbUN1cnJlbnRJbWFn
ZUNvbnRleHQoKTsKLSAgICBVSUdyYXBoaWNzRW5kSW1hZ2VDb250ZXh0KCk7Ci0gICAgcmV0dXJu
IHJlc3VsdEltYWdlOwotfQotCi1zdGF0aWMgVUlJbWFnZSogZmFsbGJhY2tJY29uRm9yRmlsZShO
U1VSTCAqZmlsZSkKLXsKLSAgICBBU1NFUlRfQVJHKGZpbGUsIFtmaWxlIGlzRmlsZVVSTF0pOwot
Ci0gICAgVUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciAqaW50ZXJhY3Rpb25Db250cm9s
bGVyID0gW1VJRG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgaW50ZXJhY3Rpb25Db250cm9s
bGVyV2l0aFVSTDpmaWxlXTsKLSAgICByZXR1cm4gdGh1bWJuYWlsU2l6ZWRJbWFnZUZvckltYWdl
KGludGVyYWN0aW9uQ29udHJvbGxlci5pY29uc1swXS5DR0ltYWdlKTsKLX0KLQotc3RhdGljIFVJ
SW1hZ2UqIGljb25Gb3JJbWFnZUZpbGUoTlNVUkwgKmZpbGUpCi17Ci0gICAgQVNTRVJUX0FSRyhm
aWxlLCBbZmlsZSBpc0ZpbGVVUkxdKTsKLQotICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7
Ci0gICAgICAgIChpZClrQ0dJbWFnZVNvdXJjZUNyZWF0ZVRodW1ibmFpbEZyb21JbWFnZUlmQWJz
ZW50OiBAWUVTLAotICAgICAgICAoaWQpa0NHSW1hZ2VTb3VyY2VUaHVtYm5haWxNYXhQaXhlbFNp
emU6IEAoaWNvblNpZGVMZW5ndGgpLAotICAgICAgICAoaWQpa0NHSW1hZ2VTb3VyY2VDcmVhdGVU
aHVtYm5haWxXaXRoVHJhbnNmb3JtOiBAWUVTLAotICAgIH07Ci0gICAgUmV0YWluUHRyPENHSW1h
Z2VTb3VyY2U+IGltYWdlU291cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVS
TCgoQ0ZVUkxSZWYpZmlsZSwgMCkpOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiB0aHVtYm5h
aWwgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVUaHVtYm5haWxBdEluZGV4KGltYWdlU291
cmNlLmdldCgpLCAwLCAoQ0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMpKTsKLSAgICBpZiAoIXRodW1i
bmFpbCkgewotICAgICAgICBMT0dfRVJST1IoIldLRmlsZVVwbG9hZFBhbmVsOiBFcnJvciBjcmVh
dGluZyB0aHVtYm5haWwgaW1hZ2UgZm9yIGltYWdlOiAlQCIsIGZpbGUpOwotICAgICAgICByZXR1
cm4gZmFsbGJhY2tJY29uRm9yRmlsZShmaWxlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdGh1bWJu
YWlsU2l6ZWRJbWFnZUZvckltYWdlKHRodW1ibmFpbC5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBVSUlt
YWdlKiBpY29uRm9yVmlkZW9GaWxlKE5TVVJMICpmaWxlKQotewotICAgIEFTU0VSVF9BUkcoZmls
ZSwgW2ZpbGUgaXNGaWxlVVJMXSk7Ci0KLSAgICBSZXRhaW5QdHI8QVZVUkxBc3NldD4gYXNzZXQg
PSBhZG9wdE5TKFthbGxvY0FWVVJMQXNzZXRJbnN0YW5jZSgpIGluaXRXaXRoVVJMOmZpbGUgb3B0
aW9uczpuaWxdKTsKLSAgICBSZXRhaW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBnZW5lcmF0
b3IgPSBhZG9wdE5TKFthbGxvY0FWQXNzZXRJbWFnZUdlbmVyYXRvckluc3RhbmNlKCkgaW5pdFdp
dGhBc3NldDphc3NldC5nZXQoKV0pOwotICAgIFtnZW5lcmF0b3Igc2V0QXBwbGllc1ByZWZlcnJl
ZFRyYWNrVHJhbnNmb3JtOllFU107Ci0KLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2VSZWYgPSBhZG9wdENGKFtnZW5lcmF0b3IgY29weUNH
SW1hZ2VBdFRpbWU6a0NNVGltZVplcm8gYWN0dWFsVGltZTpuaWwgZXJyb3I6JmVycm9yXSk7Ci0g
ICAgaWYgKCFpbWFnZVJlZikgewotICAgICAgICBMT0dfRVJST1IoIldLRmlsZVVwbG9hZFBhbmVs
OiBFcnJvciBjcmVhdGluZyBpbWFnZSBmb3IgdmlkZW8gJyVAJzogJUAiLCBmaWxlLCBlcnJvcik7
Ci0gICAgICAgIHJldHVybiBmYWxsYmFja0ljb25Gb3JGaWxlKGZpbGUpOwotICAgIH0KLQotICAg
IHJldHVybiB0aHVtYm5haWxTaXplZEltYWdlRm9ySW1hZ2UoaW1hZ2VSZWYuZ2V0KCkpOwotfQot
Ci1zdGF0aWMgVUlJbWFnZSogaWNvbkZvckZpbGUoTlNVUkwgKmZpbGUpCi17Ci0gICAgQVNTRVJU
X0FSRyhmaWxlLCBbZmlsZSBpc0ZpbGVVUkxdKTsKLQotICAgIE5TU3RyaW5nICpmaWxlRXh0ZW5z
aW9uID0gZmlsZS5wYXRoRXh0ZW5zaW9uOwotICAgIGlmICghZmlsZUV4dGVuc2lvbi5sZW5ndGgp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpbGVV
VEkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFn
Q2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgKENGU3RyaW5nUmVmKWZpbGVFeHRlbnNpb24sIDApKTsK
LQotICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKGZpbGVVVEkuZ2V0KCksIGtVVFR5cGVJbWFnZSkp
Ci0gICAgICAgIHJldHVybiBpY29uRm9ySW1hZ2VGaWxlKGZpbGUpOwotCi0gICAgaWYgKFVUVHlw
ZUNvbmZvcm1zVG8oZmlsZVVUSS5nZXQoKSwga1VUVHlwZU1vdmllKSkKLSAgICAgICAgcmV0dXJu
IGljb25Gb3JWaWRlb0ZpbGUoZmlsZSk7Ci0KLSAgICByZXR1cm4gZmFsbGJhY2tJY29uRm9yRmls
ZShmaWxlKTsKLX0KLQotCiAjcHJhZ21hIG1hcmsgLSBfV0tGaWxlVXBsb2FkSXRlbQogCiBAaW50
ZXJmYWNlIF9XS0ZpbGVVcGxvYWRJdGVtIDogTlNPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZjMxZjgwYmJlOTk4Zjg3
ZjYyMTU3MGFmZDY5YTMyMzRlNDBkNGUzLi45MzVkZmRmN2ZhMzgxZTFjOWVjMjc0MWVjZGNkODZi
ZWU4ZjY2NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMDAzLDYgKzIwMDMsOCBAQAogCQlGMDM2OTc4ODE1RjRCRjA1MDBD
M0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlj
a2VyLmNwcCAqLzsgfTsKIAkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDMz
NzA5NzFFNEQ3MkVEMDAwNTJCMEUgLyogX1dLVGVzdGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDMzNzA5NjFFNEQ2QTQ0MDAwNTJC
MEUgLyogX1dLVGVzdGluZ0RlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0REZFQjIxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25V
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggKi87IH07CisJ
CUY0NERGRUIzMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0REZFQjExRTlFNzUyRjAw
MzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gKi87IH07CiAJCUY2MTEzRTI1MTI2Q0UxODIw
MDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBB
UElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgfTsKIAkJRjYxMTNFMjgxMjZDRTE5QjAwNTdE
MEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1Vz
ZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi87IH07CiAJCUY2MTEzRTI5MTI2Q0UxOUIwMDU3RDBB
NyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjYxMTNFMjcxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTQzMzEsNiArNDMzMyw4IEBACiAJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgw
RSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJDb2xvclBpY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMzNzA5NjFFNEQ2QTQ0MDAwNTJCMEUgLyog
X1dLVGVzdGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S1Rlc3RpbmdEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDRERkVC
MDFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJJY29uVXRpbGl0aWVzLmg7IHBhdGggPSBpb3MvV2ViSWNvblV0
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDRERkVCMTFFOUU3NTJG
MDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFdlYkljb25VdGlsaXRpZXMubW07IHBhdGggPSBpb3MvV2ViSWNvblV0
aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjYxMTNFMjQxMjZDRTE4
MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjYxMTNFMjYxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjYxMTNFMjcxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzI5LDYgKzUzMzMsOCBAQAogCQkJCTJE
QTk0NDk4MTg4NEU0RjAwMEVEODZEQiAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tICovLAog
CQkJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3Bw
ICovLAogCQkJCUExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERh
dGEuaCAqLywKKwkJCQlGNDRERkVCMDFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGll
cy5oICovLAorCQkJCUY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVz
Lm1tICovLAogCQkJCTJEQTk0NDk5MTg4NEU0RjAwMEVEODZEQiAvKiBXZWJJT1NFdmVudEZhY3Rv
cnkuaCAqLywKIAkJCQkyREE5NDQ5QTE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0
b3J5Lm1tICovLAogCQkJCTJEQTk0NDlCMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRv
dWNoUG9pbnRJT1MuY3BwICovLApAQCAtODI0NCw2ICs4MjUwLDcgQEAKIAkJCQkxQUI3RDRDQTEy
ODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFE
MjVFOTYxNjdBQjA4MTAwRUE5QkNEIC8qIERvd25sb2FkUHJveHlNYXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQjdENjFBMTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUY0NERGRUIyMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29u
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcg
LyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODQ1MkE4MTE2
MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCNjU5
MjMxMjA4QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDI4MCw2ICsxMDI4Nyw3IEBACiAJCQkJQkNENTk4QUQxMTJCN0ZERjAwRUM4QzIzIC8qIFdl
YlByZWZlcmVuY2VzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBRTQxMTJGNUMy
NjAwMzM3QkFCIC8qIFdlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M2RTcwRkIx
OEIyREM3QTAwRjI0RTJFIC8qIFdlYlByb2Nlc3NDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUY0NERGRUIzMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEwNDNBMEExMjREMTFBOTAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMDQzRjY5MTI1MTREOEIwMEZGQkZCNSAvKiBX
ZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzMwNjgyNTEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAxNGMxZTQ2
NjEyNjNiMWQxZGUwOTIwNjhhZGM5ZDBkYjZkMDlkMGJjLi45OGE1Zjg4NDIwMDc5NTllN2Y2ZWU3
NTE0YjVmMDA4Mzc3NzUwOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03ODIsNyAr
NzgyLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSYgZnJhbWUs
IEZpbGVDaG9vc2VyJiBmaWxlQ2hvb3NlcikKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmxvYWRJ
Y29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcywgRmlsZUljb25Mb2Fk
ZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuaWNvbkxvYWRlZChJY29uOjpjcmVhdGVJY29uRm9y
RmlsZXMoZmlsZW5hbWVzKSk7CisgICAgbG9hZGVyLmljb25Mb2FkZWQoY3JlYXRlSWNvbkZvckZp
bGVzKGZpbGVuYW1lcykpOwogfQogCiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTc5Nyw2ICs3OTcs
MTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zl
cyhib29sIGhpZGRlblVudGlsTW91c2VNb3ZlcykKICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoaGlkZGVuVW50aWxN
b3VzZU1vdmVzKSk7CiB9CiAKK1JlZlB0cjxJY29uPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUlj
b25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQoreworICAgIHJldHVy
biBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKTsKK30KKwogI2VuZGlmCiAKICNp
ZiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
aW5kZXggYTUxNGIyOTk0ODg4NDJiY2Y5MjQ1ODkxM2IwMzc5YjNlYWY5ZWJhZS4uNzNmOWNjMmJj
ZGRmMDFkNjQ2MTIwMGY3NjdlYWVjNmM5ZDgxYmViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBA
IC0zMzQsNiArMzM0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW1hZ2VPck1lZGlhRG9jdW1l
bnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgZmluYWw7CiAKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBmaWxlbmFtZXMpIGZpbmFsOworCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVS
KQogICAgIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKGNvbnN0IFN0cmlu
ZyYgLypkZXRhaWxzKi8sIGNvbnN0IFN0cmluZyYgLypkZXNjcmlwdGlvbiovLCBXZWJDb3JlOjpN
ZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYpIGZpbmFsOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5kZXggZDFlMGVkYTVl
NWMwOGVkYWQ3OTdhZDkwMDNkN2YxNjJhNjU5YzVmOC4uZjMxYzM2MzdiNzhlYWY0MDUwZTllOTA1
Y2RhNTNlMDFhNDQyNjhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbQpA
QCAtMjksMTEgKzI5LDE3IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJEcmF3aW5n
QXJlYS5oIgorI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2ltcG9ydCAiV2ViRnJhbWUuaCIKKyNpbXBvcnQgIldlYkljb25VdGlsaXRpZXMu
aCIKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CisjaW1wb3J0IDxXZWJDb3JlL0ljb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xNDMsNiArMTQ5LDE2IEBAIGludCBXZWJDaHJv
bWVDbGllbnQ6OmRldmljZU9yaWVudGF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9wYWdlLmRl
dmljZU9yaWVudGF0aW9uKCk7CiB9CiAKK1JlZlB0cjxJY29uPiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQoreworICAg
IGlmICghZmlsZW5hbWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGdlbmVyYXRlIGFuIGljb24gc2hvd2luZyBtdWx0aXBsZSBmaWxl
cyBoZXJlLCBpZiBhcHBsaWNhYmxlLiBDdXJyZW50bHksIGlmIHRoZXJlIGFyZSBtdWx0aXBsZQor
ICAgIC8vIGZpbGVzLCB3ZSBvbmx5IHVzZSB0aGUgZmlyc3QgVVJMIHRvIGdlbmVyYXRlIGFuIGlj
b24uCisgICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JJbWFnZShpY29uRm9yRmlsZShbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVuYW1lc1swXV0pLkNHSW1hZ2UpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
</data>
<flag name="review"
          id="328343"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307095</attachid>
            <date>2017-04-13 22:48:39 -0700</date>
            <delta_ts>2017-04-14 18:14:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170809-20170413224838.patch</filename>
            <type>text/plain</type>
            <size>42884</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzlmM2ZiYjJkOTIzYzg5
YTBiOWE4YmQ3NTk2YmQzOTdhZGE5MmU2MC4uMmZkMjBjNjExZTRkNTAxYTczMTllOTViZDc3ZTU1
OTE0YWIyNjhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTA0LTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFN1cHBv
cnQgSWNvbiBjcmVhdGlvbiBmcm9tIGZpbGUgVVJMcyBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDgwOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzEyODYxMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAg
ICAgICBNaW5vciB0d2Vha3MgYW5kIHJlZmFjdG9yaW5nIHRvIHN1cHBvcnQgZGlzcGxheWluZyBh
IFdlYkNvcmU6Okljb24gZnJvbSBhIGxpc3Qgb2YgZmlsZXBhdGhzIG9uIGlPUy4gUGxlYXNlIHNl
ZQorICAgICAgICBiZWxvdyBhbm5vdGF0aW9ucyBmb3IgbW9yZSBkZXRhaWxzLiBObyBuZXcgdGVz
dHMgeWV0LCBhcyBiZWhhdmlvciBvbiBNYWMgc2hvdWxkIG5vdCBoYXZlIGNoYW5nZWQsIGFuZCBi
ZWhhdmlvcgorICAgICAgICBvbiBpT1Mgd2lsbCBub3QgY2hhbmdlIHVudGlsIGxhdGVyIHBhdGNo
ZXMgbGFuZC4gVGVzdHMgd2lsbCBiZSBhZGRlZCBpbiBhIGxhdGVyIHBhdGNoLgorCisgICAgICAg
IE1vc3Qgb2YgdGhlIGNoYW5nZXMgaGVyZSByZW1vdmUgcGxhdGZvcm0gc3BlY2lhbC1jYXNpbmcg
aW4gRmlsZUlucHV0VHlwZSBmb3IgaU9TIGFuZCBNYWMsIHJlZmFjdG9yaW5nIHRoZSBjb2RlCisg
ICAgICAgIHN1Y2ggdGhhdCBpdCB3b3JrcyBmb3IgYm90aCBwbGF0Zm9ybXMgd2hpbGUgcHJlc2Vy
dmluZyBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjp+RmlsZUlucHV0VHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpzZXRGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxl
SW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmg6
CisKKyAgICAgICAgVW4tZ3VhcmQgbV9maWxlSWNvbkxvYWRlciBvbiBpT1MsIGFuZCB1bi1ndWFy
ZCBtX2Rpc3BsYXlTdHJpbmcgZm9yIE1hYy4gQ29uc29saWRhdGUgbG9naWMgaW4gYm90aCB2ZXJz
aW9uIG9mCisgICAgICAgIGZpbGVzQ2hvc2VuIGFuZCByZW1vdmUgdGhlIGlPUy1zcGVjaWZpYyB2
ZXJzaW9uLiBCZWhhdmlvciB3aGVuIHBhc3NpbmcgaW4gYW4gZW1wdHkgZGlzcGxheSBzdHJpbmcg
YW5kIG51bGwgSWNvbgorICAgICAgICB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIGV4
aXN0aW5nIGZpbGVzQ2hvc2VuIG1ldGhvZCBvbiBNYWMuIEFsc28sIGludHJvZHVjZSBhIHZlcnNp
b24gb2Ygc2V0RmlsZXMgdGhhdAorICAgICAgICB0YWtlcyBhbiBhZGRpdGlvbmFsIFJlcXVlc3RJ
Y29uIGVudW0gdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdG8gYWRkaXRpb25hbGx5IHVz
ZSB0aGUgbmV3IGZpbGVwYXRocyB0bworICAgICAgICByZXF1ZXN0IGFuIEljb24gdXBkYXRlLiBm
aWxlc0Nob3NlbiBpbnZva2VzIHRoaXMgd2l0aCBSZXF1ZXN0SWNvbjo6Tm8gaWYgYSBub24tbnVs
bCBJY29uIHdhcyBzcGVjaWZpZWQsIGFzIGlzCisgICAgICAgIHRoZSBjYXNlIHdoZW4gdXBsb2Fk
aW5nIGEgZmlsZSB2aWEgdGhlIGltYWdlIHBpY2tlciBvbiBpT1MuCisKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6ZGlzcGxheVN0cmluZyk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6
CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21l
Q2xpZW50Lmg6CisKKyAgICAgICAgSW50cm9kdWNlIENocm9tZUNsaWVudDo6Y3JlYXRlSWNvbkZv
ckZpbGVzLCB3aGljaCBnZW5lcmF0ZXMgYW4gaWNvbiByZXByZXNlbnRpbmcgdGhlIGNvbnRlbnQg
YXQgYSBsaXN0IG9mIGZpbGUKKyAgICAgICAgcGF0aHMuIFNlZSBXZWJLaXQgYW5kIFdlYktpdDIg
Q2hhbmdlTG9ncyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZUNo
b29zZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVDaG9vc2VyQ2xpZW50OjpmaWxlc0Nob3Nl
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpmaWxlVGV4dFZhbHVlKToK
KworICAgICAgICBSZW1vdmUgcGxhdGZvcm0gc3BlY2lhbC1jYXNpbmcgd2hlbiBnZW5lcmF0aW5n
IHRoZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiB1cGxvYWRpbmcgYSBmaWxlLiBJZiBhIGRpc3BsYXlT
dHJpbmcKKyAgICAgICAgaXMgc3BlY2lmaWVkLCB0aGVuIHdlIHVzZSB0aGUgY29udGVudHMgb2Yg
dGhlIGRpc3BsYXlTdHJpbmc7IG90aGVyd2lzZSwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBpbnB1
dCBlbGVtZW50J3MKKyAgICAgICAgRmlsZUxpc3QgdG8gY29tcHV0ZSB0aGUgZGlzcGxheSBzdHJp
bmcuCisKIDIwMTctMDQtMTAgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IDkw
MTA1NzgyOGQ0YmQ0MTA2N2RhOTU1ZjI0Njc0YmM0MjdjOWY2YTIuLmQxMmZkNjdiYTI3YWJlODBh
MmJiOTkxNTU2ZWM5Zjg0YzUwNzY4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxNy0wNC0xMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV0syXSBTdXBwb3J0IEljb24gY3JlYXRpb24gZnJvbSBmaWxlIFVSTHMgb24gaU9T
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA4MDkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxMjg2MTMwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRqdXN0IGZvciBjaGFuZ2VzIGluIHRoZSBDaHJvbWVD
bGllbnQgaW4gV2ViQ29yZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudElPUy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5t
bToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudElPUzo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKwog
MjAxNy0wMy0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbmFt
ZSBodG1sZWRpdGluZy5oL2NwcCB0byBFZGl0aW5nLmgvY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
OWNjZDhhMDc0Njg2NzlkNWQ1NjdkZGJmNTI3M2U3MDIxMGM2ZGVkNS4uNzAwNjEwOWZiYzg4NzEy
OTYxYzE2YmVmZGQ5NTUyYWM1NGQ0ZDA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE3LTA0LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtXSzJdIFN1cHBvcnQgSWNvbiBjcmVhdGlvbiBmcm9tIGZpbGUgVVJMcyBvbiBp
T1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDgw
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEyODYxMzA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGp1c3QgZm9yIGNoYW5nZXMgaW4gdGhlIENocm9t
ZUNsaWVudCBpbiBXZWJDb3JlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojpsb2FkSWNvbkZvckZpbGVzKToKKyAgICAgICAgKFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKwogMjAxNy0wNC0xMCAgSmVyZW15
IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIENvcmVBdWRpb0NhcHR1
cmVTb3VyY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTkwZDYzMzc5YTg5MTgyZWNhN2VlZDQ1YjE5N2Y0N2E0
ZjVmODM4Ni4uNjM0ZTMyYzVmZjg1MTk2OWUyODhlYTkxYmI4YzlhN2YyYjU0MDI3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA0LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFN1cHBvcnQgSWNvbiBjcmVhdGlvbiBm
cm9tIGZpbGUgVVJMcyBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MDgwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEyODYxMzA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBSZWZhY3RvcnMgZmls
ZSBpY29uIGdlbmVyYXRpb24gbG9naWMgdG8gc3VwcG9ydCBzaG93aW5nIGFuIEljb24gcmVwcmVz
ZW50aW5nIHRoZSBjb250ZW50IGF0IGEgbGlzdCBvZiBmaWxlIHBhdGhzCisgICAgICAgIG9uIGlP
Uy4gUHVsbHMgb3V0IGxvZ2ljIGluIFdLRmlsZVVwbG9hZFBhbmVsIHJlc3BvbnNpYmxlIGZvciBn
ZW5lcmF0aW5nIHRoZSB0aHVtYm5haWwgaW1hZ2UgZm9yIGEgZmlsZSBpbnB1dCBpbnRvCisgICAg
ICAgIHNlcGFyYXRlIGhlbHBlcnMgaW4gV2ViSWNvblV0aWxpdGllcywgYW5kIHRoZW4gdXNlcyB0
aGVzZSB1dGlsaXRpZXMgaW4gYm90aCBXS0ZpbGVVcGxvYWRQYW5lbCBhbmQKKyAgICAgICAgV2Vi
Q2hyb21lQ2xpZW50SU9TLgorCisgICAgICAgICogU2hhcmVkL2lvcy9XZWJJY29uVXRpbGl0aWVz
Lmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9pb3MvV2ViSWNvblV0aWxpdGllcy5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OnNxdWFyZUNyb3BSZWN0Rm9yU2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OnNxdWFyZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6dGh1bWJuYWlsU2l6ZWRJbWFn
ZUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6ZmFsbGJhY2tJY29uRm9yRmlsZSk6CisgICAg
ICAgIChXZWJLaXQ6Omljb25Gb3JJbWFnZUZpbGUpOgorICAgICAgICAoV2ViS2l0OjppY29uRm9y
VmlkZW9GaWxlKToKKyAgICAgICAgKFdlYktpdDo6aWNvbkZvckZpbGUpOgorCisgICAgICAgIEFk
ZCBsb2dpYyBmb3IgZ2VuZXJhdGluZyB0aHVtYm5haWwgaWNvbnMsIG1vdmVkIGZyb20gV0tGaWxl
VXBsb2FkUGFuZWwubW0uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVw
bG9hZFBhbmVsLm1tOgorICAgICAgICAoc3F1YXJlQ3JvcFJlY3RGb3JTaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKHNxdWFyZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKHRodW1ibmFpbFNpemVk
SW1hZ2VGb3JJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChmYWxsYmFja0ljb25Gb3JGaWxlKTog
RGVsZXRlZC4KKyAgICAgICAgKGljb25Gb3JJbWFnZUZpbGUpOiBEZWxldGVkLgorICAgICAgICAo
aWNvbkZvclZpZGVvRmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChpY29uRm9yRmlsZSk6IERlbGV0
ZWQuCisKKyAgICAgICAgUmVtb3ZlIGxvZ2ljIGZvciBnZW5lcmF0aW5nIHRodW1ibmFpbCBpY29u
cy4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6bG9hZEljb25Gb3JGaWxlcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlSWNvbkZvckZpbGVzKToKKworICAgICAg
ICBSYXRoZXIgdGhhbiBjYWxsIEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyBkaXJlY3RseSwgbG9h
ZEljb25Gb3JGaWxlcyBub3cgY29uc3VsdHMgQ2hyb21lQ2xpZW50OjpjcmVhdGVJY29uRm9yRmls
ZXMKKyAgICAgICAgaW5zdGVhZC4gT24gb3RoZXIgcGxhdGZvcm1zLCB0aGlzIGp1c3QgdHVybnMg
YXJvdW5kIGFuZCBjYWxscyBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMsIGJ1dCBvbiBpT1MsIHdl
IHVzZSB0aGUKKyAgICAgICAgdXRpbGl0aWVzIGludHJvZHVjZWQgaW4gV2ViSWNvblV0aWxpdGll
cyB0byBnZW5lcmF0ZSBhIGZpbGUgaWNvbi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZUljb25Gb3JGaWxlcyk6CisKIDIwMTctMDQtMTAgIEplcmVteSBK
b25lcyAgPGplcmVteWpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBDb3JlQXVkaW9DYXB0dXJl
U291cmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggMjhiNmMwNjYx
ZjRkMzEyOWIxNjc5M2VhZTQxNGI3YmEyZjdjZWI2Yi4uZmI2OWMzYzNiYmYwM2FiN2I0ZDZlNjJh
YWQxMzg1OGFjYzU4YjdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBA
IC0xMDAsMTEgKzEwMCw4IEBAIEZpbGVJbnB1dFR5cGU6On5GaWxlSW5wdXRUeXBlKCkKICAgICBp
ZiAobV9maWxlQ2hvb3NlcikKICAgICAgICAgbV9maWxlQ2hvb3Nlci0+aW52YWxpZGF0ZSgpOwog
Ci0jaWYgIVBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PyBXaHkg
ZG9uJ3Qgd2UgZG8gdGhpcyBvbiBpT1M/CiAgICAgaWYgKG1fZmlsZUljb25Mb2FkZXIpCiAgICAg
ICAgIG1fZmlsZUljb25Mb2FkZXItPmludmFsaWRhdGUoKTsKLSNlbmRpZgogfQogCiBWZWN0b3I8
RmlsZUNob29zZXJGaWxlSW5mbz4gRmlsZUlucHV0VHlwZTo6ZmlsZXNGcm9tRm9ybUNvbnRyb2xT
dGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKQEAgLTMwMSw4ICsyOTgsNiBAQCB2
b2lkIEZpbGVJbnB1dFR5cGU6Om11bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgICAgIGJ1
dHRvbi0+c2V0VmFsdWUoZWxlbWVudCgpLm11bHRpcGxlKCkgPyBmaWxlQnV0dG9uQ2hvb3NlTXVs
dGlwbGVGaWxlc0xhYmVsKCkgOiBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkpOwogfQogCi0j
aWYgIVBMQVRGT1JNKElPUykKLQogdm9pZCBGaWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbihjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiB7CiAgICAgaWYgKCFwYXRocy5zaXplKCkpIHsKQEAg
LTMyNSw4ICszMjAsNiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXRocykKICAgICBjaHJvbWUtPmxvYWRJY29uRm9yRmlsZXMocGF0aHMs
ICptX2ZpbGVJY29uTG9hZGVyKTsKIH0KIAotI2VuZGlmCi0KIHZvaWQgRmlsZUlucHV0VHlwZTo6
YXBwbHlGaWxlQ2hvb3NlclNldHRpbmdzKGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmIHNldHRp
bmdzKQogewogICAgIGlmIChtX2ZpbGVDaG9vc2VyKQpAQCAtMzM3LDYgKzMzMCwxMSBAQCB2b2lk
IEZpbGVJbnB1dFR5cGU6OmFwcGx5RmlsZUNob29zZXJTZXR0aW5ncyhjb25zdCBGaWxlQ2hvb3Nl
clNldHRpbmdzJiBzZXR0aW5ncwogCiB2b2lkIEZpbGVJbnB1dFR5cGU6OnNldEZpbGVzKFJlZlB0
cjxGaWxlTGlzdD4mJiBmaWxlcykKIHsKKyAgICBzZXRGaWxlcyhXVEZNb3ZlKGZpbGVzKSwgUmVx
dWVzdEljb246Olllcyk7Cit9CisKK3ZvaWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZXMoUmVmUHRy
PEZpbGVMaXN0PiYmIGZpbGVzLCBSZXF1ZXN0SWNvbiBzaG91bGRSZXF1ZXN0SWNvbikKK3sKICAg
ICBpZiAoIWZpbGVzKQogICAgICAgICByZXR1cm47CiAKQEAgLTM2MSwxMyArMzU5LDEzIEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZXMoUmVmUHRyPEZpbGVMaXN0PiYmIGZpbGVzKQogICAg
IGlucHV0LT5zZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOwogICAgIGlu
cHV0LT51cGRhdGVWYWxpZGl0eSgpOwogCi0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBWZWN0b3I8
U3RyaW5nPiBwYXRoczsKLSAgICBwYXRocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBwYXRo
cy51bmNoZWNrZWRBcHBlbmQobV9maWxlTGlzdC0+aXRlbShpKS0+cGF0aCgpKTsKLSAgICByZXF1
ZXN0SWNvbihwYXRocyk7Ci0jZW5kaWYKKyAgICBpZiAoc2hvdWxkUmVxdWVzdEljb24gPT0gUmVx
dWVzdEljb246OlllcykgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKKyAgICAgICAg
cGF0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBwYXRocy51bmNoZWNrZWRB
cHBlbmQobV9maWxlTGlzdC0+aXRlbShpKS0+cGF0aCgpKTsKKyAgICAgICAgcmVxdWVzdEljb24o
cGF0aHMpOworICAgIH0KIAogICAgIGlmIChpbnB1dC0+cmVuZGVyZXIoKSkKICAgICAgICAgaW5w
dXQtPnJlbmRlcmVyKCktPnJlcGFpbnQoKTsKQEAgLTM4MCwxMyArMzc4LDE1IEBAIHZvaWQgRmls
ZUlucHV0VHlwZTo6c2V0RmlsZXMoUmVmUHRyPEZpbGVMaXN0PiYmIGZpbGVzKQogICAgIGlucHV0
LT5zZXRDaGFuZ2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChmYWxzZSk7CiB9CiAK
LSNpZiBQTEFURk9STShJT1MpCi0KIHZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29u
c3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QgU3RyaW5nJiBkaXNw
bGF5U3RyaW5nLCBJY29uKiBpY29uKQogewotICAgIG1fZGlzcGxheVN0cmluZyA9IGRpc3BsYXlT
dHJpbmc7Ci0gICAgZmlsZXNDaG9zZW4ocGF0aHMpOwotICAgIGljb25Mb2FkZWQoaWNvbik7Cisg
ICAgaWYgKCFkaXNwbGF5U3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgbV9kaXNwbGF5U3RyaW5n
ID0gZGlzcGxheVN0cmluZzsKKworICAgIHNldEZpbGVzKGNyZWF0ZUZpbGVMaXN0KHBhdGhzKSwg
aWNvbiA/IFJlcXVlc3RJY29uOjpObyA6IFJlcXVlc3RJY29uOjpZZXMpOworCisgICAgaWYgKGlj
b24pCisgICAgICAgIGljb25Mb2FkZWQoaWNvbik7CiB9CiAKIFN0cmluZyBGaWxlSW5wdXRUeXBl
OjpkaXNwbGF5U3RyaW5nKCkgY29uc3QKQEAgLTM5NCwxMyArMzk0LDYgQEAgU3RyaW5nIEZpbGVJ
bnB1dFR5cGU6OmRpc3BsYXlTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2Rpc3BsYXlTdHJp
bmc7CiB9CiAKLSNlbmRpZgotCi12b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0
IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgZmlsZXMpCi17Ci0gICAgc2V0RmlsZXMoY3Jl
YXRlRmlsZUxpc3QoZmlsZXMpKTsKLX0KLQogdm9pZCBGaWxlSW5wdXRUeXBlOjppY29uTG9hZGVk
KFJlZlB0cjxJY29uPiYmIGljb24pCiB7CiAgICAgaWYgKG1faWNvbiA9PSBpY29uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAppbmRleCBlZTQwNjQ4ZDY5NTFkYTZhZDI5MzlhMDJmNTM2
ZTc3ODg2OWMyZjZjLi4yZWJhYTVkOTdiMDEyNDYzMThmYzBhMTg4NDY3N2I3NjNhYzRjMjE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAtNjEsOSArNjEsOSBAQCBwcml2YXRl
OgogICAgIGJvb2wgY2FuU2V0U3RyaW5nVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBGaWxlTGlz
dCogZmlsZXMoKSBmaW5hbDsKICAgICB2b2lkIHNldEZpbGVzKFJlZlB0cjxGaWxlTGlzdD4mJikg
ZmluYWw7Ci0jaWYgUExBVEZPUk0oSU9TKQorICAgIGVudW0gY2xhc3MgUmVxdWVzdEljb24geyBZ
ZXMsIE5vIH07CisgICAgdm9pZCBzZXRGaWxlcyhSZWZQdHI8RmlsZUxpc3Q+JiYsIFJlcXVlc3RJ
Y29uKTsKICAgICBTdHJpbmcgZGlzcGxheVN0cmluZygpIGNvbnN0IGZpbmFsOwotI2VuZGlmCiAg
ICAgYm9vbCBjYW5TZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBib29sIGdldFR5
cGVTcGVjaWZpY1ZhbHVlKFN0cmluZyYpIGZpbmFsOyAvLyBDaGVja2VkIGZpcnN0LCBiZWZvcmUg
aW50ZXJuYWwgc3RvcmFnZSBvciB0aGUgdmFsdWUgYXR0cmlidXRlLgogICAgIHZvaWQgc2V0VmFs
dWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZp
b3IpIGZpbmFsOwpAQCAtNzksMTEgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG11bHRpcGxl
QXR0cmlidXRlQ2hhbmdlZCgpIGZpbmFsOwogICAgIFN0cmluZyBkZWZhdWx0VG9vbFRpcCgpIGNv
bnN0IGZpbmFsOwogCi0gICAgLy8gRmlsZUNob29zZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCi0g
ICAgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mKSBm
aW5hbDsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0
b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIElj
b24qKSBmaW5hbDsKLSNlbmRpZgorICAgIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZp
bGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nID0geyB9LCBJ
Y29uKiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgLy8gRmlsZUljb25Mb2FkZXJDbGllbnQgaW1w
bGVtZW50YXRpb24uCiAgICAgdm9pZCBpY29uTG9hZGVkKFJlZlB0cjxJY29uPiYmKSBmaW5hbDsK
QEAgLTk0LDE1ICs5MCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlGaWxlQ2hvb3NlclNl
dHRpbmdzKGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKIAogICAgIFJlZlB0cjxGaWxlQ2hv
b3Nlcj4gbV9maWxlQ2hvb3NlcjsKLSNpZiAhUExBVEZPUk0oSU9TKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGaWxlSWNvbkxvYWRlcj4gbV9maWxlSWNvbkxvYWRlcjsKLSNlbmRpZgogCiAgICAgUmVm
PEZpbGVMaXN0PiBtX2ZpbGVMaXN0OwogICAgIFJlZlB0cjxJY29uPiBtX2ljb247Ci0jaWYgUExB
VEZPUk0oSU9TKQogICAgIFN0cmluZyBtX2Rpc3BsYXlTdHJpbmc7Ci0jZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCmluZGV4IGVjNTU3ZDBiMThlZGZmZmU3YjQ0NWNjNDM4YWVlYmQ1ZjJlYjkzNWIuLmUwYTdl
YzNhOGU2N2JhZTUyMWE3Y2YxZjU0ZjNkZWMzNzA3ZmM4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTM1OCwxMiArMTM1OCwxMCBAQCBJY29uKiBIVE1M
SW5wdXRFbGVtZW50OjppY29uKCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmljb24o
KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKIFN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjpkaXNw
bGF5U3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmRpc3BsYXlTdHJp
bmcoKTsKIH0KLSNlbmRpZgogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmNhblJlY2VpdmVEcm9w
cGVkRmlsZXMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApp
bmRleCAwNTM5MzM1NWVjZjI4YTVmZTRlN2M3MTFlMGE1ZDJmMmI5MzU5YWYyLi5iNDljY2MyZDJj
NjlhZTZjNTIwOTMxODUxZjhmYjllODNlMmVmOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaApAQCAtMjQ2LDkgKzI0Niw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
SWNvbiogaWNvbigpIGNvbnN0OwotI2lmIFBMQVRGT1JNKElPUykKICAgICBTdHJpbmcgZGlzcGxh
eVN0cmluZygpIGNvbnN0OwotI2VuZGlmCisKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVz
ZWQgZm9yIHJlbmRlcmluZyB0aGUgaW5wdXQgYWN0aXZlIGR1cmluZyBhCiAgICAgLy8gZHJhZy1h
bmQtZHJvcCBvcGVyYXRpb24uCiAgICAgYm9vbCBjYW5SZWNlaXZlRHJvcHBlZEZpbGVzKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggM2E4NjFhZDY2MDQ5NTQxZDY3YTE0
YzJjZWZkZDRkMWU1NjUxMTMzNC4uYmNkOTYzOGUzYmMwNGMyNGQ2M2Y1NTE1ODRjYmMyZGZmNTEx
MGFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNzQxLDE2ICs3NDEsMTIgQEAg
SWNvbiogSW5wdXRUeXBlOjppY29uKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
I2lmIFBMQVRGT1JNKElPUykKLQogU3RyaW5nIElucHV0VHlwZTo6ZGlzcGxheVN0cmluZygpIGNv
bnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi0jZW5kaWYKLQogYm9vbCBJbnB1dFR5cGU6OnNob3VsZFJlc2V0T25Eb2N1bWVudEFjdGl2
YXRpb24oKQogewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4
IDk4Y2ZmODlhYWI4YjU5YWI5NTZlNDM2MDI4NTFjMGE4NGM0OWJjYTYuLmMyZDBiMzFjYzhiN2Nm
MGE4ZGZjZjIyNjlkNjg5YjZiMzk2OGE4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAt
MzAzLDggKzMwMyw4IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFs
IERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJp
bmcgZGlzcGxheVN0cmluZygpIGNvbnN0OwogI2VuZGlmCisgICAgdmlydHVhbCBTdHJpbmcgZGlz
cGxheVN0cmluZygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSW5wdXRUeXBl
KEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogbV9lbGVtZW50KGVsZW1lbnQpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGUyYWE2MGVkNzQ4OTM3NDg2OTZlODkx
NzAzM2IxY2UwMWYxZDUzMmQuLmRjNGRjOTViNWI1NjU3MWNhYzg5MDk2Zjg5YWJmYjJlMTM3ZDAz
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTIwNCw2ICsyMDQsOCBA
QCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewogCiAgICAg
dm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoY29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50
Pj4mKSBmaW5hbCB7IH0KICAgICBib29sIHNob3VsZE5vdGlmeU9uRm9ybUNoYW5nZXMoKSBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSBmaW5hbCB7IHJldHVybiBu
dWxscHRyOyB9CiB9OwogCiB2b2lkIGZpbGxXaXRoRW1wdHlDbGllbnRzKFBhZ2VDb25maWd1cmF0
aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBiMDgwYTk1ODk1OWU0NTY1
Y2YwMmM3ZjQwODA3ZjhjNDQwMmYwMWY3Li44NDgwZDkxM2U1NTA1MDkxMTZiZDFjNGE2YjhjYmJj
ZTNkNGE3ZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50RW51bXMuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCisjaW5jbHVkZSAiSWNvbi5oIgog
I2luY2x1ZGUgIkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFQcm9k
dWNlci5oIgogI2luY2x1ZGUgIlBvcHVwTWVudS5oIgpAQCAtNDY1LDYgKzQ2Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQcm9jZXNzQ1BVVGltZShpbnQ2NF90LCBBY3Rp
dml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIHsgfQorICAgIHZpcnR1YWwgUmVmUHRyPEljb24+IGNy
ZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oCmluZGV4IDdkMzFjNTYyZTNiOWEwMGIzZGUxZDg3
ODM0ZTk0OTMzNzI3NzkxNTMuLjdlMzI5MGYxODE4MWEyMTBhY2M4MmI3NjRmMGU4ODAzZjFmMjVk
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaApAQCAtNzMsMTIgKzczLDcg
QEAgY2xhc3MgRmlsZUNob29zZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbGVD
aG9vc2VyQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3Qg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JikgPSAwOwotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBhbG1vc3QgaWRlbnRpY2FsIHRvIEZpbGVDaG9v
c2VyOjpmaWxlc0Nob3NlbigpLiBXZSBzaG91bGQgbWVyZ2UgdGhpcwotICAgIC8vIGZ1bmN0aW9u
IHdpdGggRmlsZUNob29zZXI6OmZpbGVzQ2hvc2VuKCkgYW5kIGhlbmNlIHJlbW92ZSB0aGUgUExB
VEZPUk0oSU9TKS1ndWFyZC4KLSAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVj
dG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBJ
Y29uKikgPSAwOwotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZl
Y3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZyA9
IHsgfSwgSWNvbiogPSBudWxscHRyKSA9IDA7CiB9OwogCiBjbGFzcyBGaWxlQ2hvb3NlciA6IHB1
YmxpYyBSZWZDb3VudGVkPEZpbGVDaG9vc2VyPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRleCA1NWU0OTljODNiNjEw
NzVmYWNhMDgyODUwMzg0OTBjYjcyMWU1MjQ0Li5hZTI1MGY0ZThjOTY4ZjRjMzRlZWJhMDRhYTE4
NDliZjJhODAyYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTMzLDE0ICszMywxMSBAQAogI2luY2x1ZGUgIlJl
bmRlclRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgi
CiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogCi0jaWYg
UExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRvci5oIgotI2VuZGlmCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI2Niwx
MiArMjYzLDExIEBAIFN0cmluZyBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6YnV0dG9uVmFsdWUo
KQogCiBTdHJpbmcgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmZpbGVUZXh0VmFsdWUoKSBjb25z
dAogeworICAgIGF1dG8mIGlucHV0ID0gaW5wdXRFbGVtZW50KCk7CiAgICAgQVNTRVJUKGlucHV0
RWxlbWVudCgpLmZpbGVzKCkpOwotI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAoaW5wdXRFbGVt
ZW50KCkuZmlsZXMoKS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmdUcnVuY2F0b3I6
OnJpZ2h0VHJ1bmNhdGUoaW5wdXRFbGVtZW50KCkuZGlzcGxheVN0cmluZygpLCBtYXhGaWxlbmFt
ZVdpZHRoKCksIHN0eWxlKCkuZm9udENhc2NhZGUoKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gdGhl
bWUoKS5maWxlTGlzdE5hbWVGb3JXaWR0aChpbnB1dEVsZW1lbnQoKS5maWxlcygpLCBzdHlsZSgp
LmZvbnRDYXNjYWRlKCksIG1heEZpbGVuYW1lV2lkdGgoKSwgaW5wdXRFbGVtZW50KCkubXVsdGlw
bGUoKSk7CisgICAgaWYgKGlucHV0LmZpbGVzKCktPmxlbmd0aCgpICYmICFpbnB1dC5kaXNwbGF5
U3RyaW5nKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpyaWdo
dFRydW5jYXRlKGlucHV0LmRpc3BsYXlTdHJpbmcoKSwgbWF4RmlsZW5hbWVXaWR0aCgpLCBzdHls
ZSgpLmZvbnRDYXNjYWRlKCkpOworICAgIHJldHVybiB0aGVtZSgpLmZpbGVMaXN0TmFtZUZvcldp
ZHRoKGlucHV0LmZpbGVzKCksIHN0eWxlKCkuZm9udENhc2NhZGUoKSwgbWF4RmlsZW5hbWVXaWR0
aCgpLCBpbnB1dC5tdWx0aXBsZSgpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudElPUy5oIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50SU9TLmgKaW5kZXggMTQ2NDQ4Yjc1MjVlNTU2MTcxY2VkYjZkOTQ1ZDBhZGMwZmY2NTcyNi4u
YjE3MmFhMDAxNTYzYTExMDZhODU0YWQ1ODdlM2I1NTQ1NmY4MjAxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKKysrIGIv
U291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKQEAg
LTg5LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdlYkFwcE9yaWVudGF0aW9uc1VwZGF0
ZWQoKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzZWRFbGVtZW50Q2hhbmdlZChXZWJDb3JlOjpFbGVt
ZW50KikgZmluYWw7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNW
aWRlbykgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6Okljb24+IGNyZWF0ZUljb25Gb3JGaWxl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKSBmaW5hbDsKIAogI2lmIEVOQUJMRShP
UklFTlRBVElPTl9FVkVOVFMpCiAgICAgaW50IGRldmljZU9yaWVudGF0aW9uKCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MubW0KaW5kZXggNjg5NzFkMjY2ZjM1ZjQwYTc5OWE2YzA0NWI3OTUyYTExMGEy
MDA5OS4uYTA0ZmRiMjlmZTJhYmRhODVmNTQyZjU2MDkwYjVmMjdiYWU5ZDA0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElP
Uy5tbQpAQCAtMzU1LDYgKzM1NSwxMSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudElPUzo6c2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8pCiAgICAgW1t3ZWJWaWV3KCkgX1VJS2l0
RGVsZWdhdGVGb3J3YXJkZXJdIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcjpoYXNWaWRlbyBmcm9t
UmVjdDplbGVtZW50UmVjdF07CiB9CiAKK1JlZlB0cjxJY29uPiBXZWJDaHJvbWVDbGllbnRJT1M6
OmNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQorewor
ICAgIHJldHVybiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKTsKK30KKwogI2lm
IEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCiAKIGludCBXZWJDaHJvbWVDbGllbnRJT1M6OmRl
dmljZU9yaWVudGF0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggY2E4MDA5MTc1YTVkOTEzNDUxYzAwZmM1
MTZhMDQzZTdhMTZmMDA2Mi4uODcyM2ZjMmYxNDNjYzU2OTc1YjQzNTg3ZTM4OTg0YTMyNWEwNWI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKQEAgLTEyOCw2ICsxMjgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBydW5PcGVu
UGFuZWwoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpGaWxlQ2hvb3NlciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNvcmU6
OkZpbGVJY29uTG9hZGVyJikgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6Okljb24+IGNyZWF0
ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKSBvdmVycmlkZTsK
IAogI2lmICFQTEFURk9STShJT1MpCiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6
Q3Vyc29yJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KaW5kZXggYWE5MWVkNWJlNWI2YTQ5MjQ2ZmY0MmE5ZWY0MzIy
NjY5NmY1ZTgxZi4uNDM5OThiZWIxM2U1MGJhZTM1ZjViZjA4NWEyOGZlMDY3ZjljNzdiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbQpAQCAtNzYyLDcgKzc2MiwxMiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuT3BlblBh
bmVsKEZyYW1lJiwgRmlsZUNob29zZXImIGNob29zZXIpCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50
Ojpsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMsIEZpbGVJ
Y29uTG9hZGVyJiBpY29uTG9hZGVyKQogewotICAgIGljb25Mb2FkZXIuaWNvbkxvYWRlZChJY29u
OjpjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CisgICAgaWNvbkxvYWRlci5pY29uTG9h
ZGVkKGNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKK30KKworUmVmUHRyPEljb24+IFdl
YkNocm9tZUNsaWVudDo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlbmFtZXMpCit7CisgICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFt
ZXMpOwogfQogCiAjaWYgIVBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9pb3MvV2ViSWNvblV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2lv
cy9XZWJJY29uVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzFlNmEyZDA2NDkzZGQxOWNkYzgzZDc1
NzUwNmU5ZTA0MmNhNTdjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9pb3MvV2ViSWNvblV0aWxpdGllcy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKElPUykKKworQGNsYXNzIFVJSW1hZ2U7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitVSUltYWdlICpmYWxsYmFja0ljb25Gb3JGaWxlKE5TVVJMICpm
aWxlKTsKK1VJSW1hZ2UgKmljb25Gb3JJbWFnZUZpbGUoTlNVUkwgKmZpbGUpOworVUlJbWFnZSAq
aWNvbkZvclZpZGVvRmlsZShOU1VSTCAqZmlsZSk7CitVSUltYWdlICppY29uRm9yRmlsZShOU1VS
TCAqZmlsZSk7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvaW9zL1dlYkljb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1dl
Ykljb25VdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFiNjFjYjRjMWFlYjJkYjVlNTQ4NDM1ZDgx
YzZlZDE3OTcxM2I5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9p
b3MvV2ViSWNvblV0aWxpdGllcy5tbQpAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJY29uVXRpbGl0aWVzLmgiCisKKyNpZiBQ
TEFURk9STShJT1MpCisKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCisjaW1wb3J0IDxBVkZvdW5kYXRp
b24vQVZGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+
CisjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisjaW1wb3J0IDxJbWFnZUlPL0ltYWdl
SU8uaD4KKyNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFz
Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoQVZG
b3VuZGF0aW9uKTsKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRJbWFnZUdl
bmVyYXRvcik7CitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KTsKKwor
U09GVF9MSU5LX0ZSQU1FV09SSyhDb3JlTWVkaWEpOworU09GVF9MSU5LX0NPTlNUQU5UKENvcmVN
ZWRpYSwga0NNVGltZVplcm8sIENNVGltZSk7CisKKyNkZWZpbmUga0NNVGltZVplcm8gZ2V0a0NN
VGltZVplcm8oKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGNvbnN0IENHRmxvYXQg
aWNvblNpZGVMZW5ndGggPSAxMDA7CisKK3N0YXRpYyBDR1JlY3Qgc3F1YXJlQ3JvcFJlY3RGb3JT
aXplKENHU2l6ZSBzaXplKQoreworICAgIENHRmxvYXQgc21hbGxlclNpZGUgPSBzdGQ6Om1pbihz
aXplLndpZHRoLCBzaXplLmhlaWdodCk7CisgICAgQ0dSZWN0IGNyb3BSZWN0ID0gQ0dSZWN0TWFr
ZSgwLCAwLCBzbWFsbGVyU2lkZSwgc21hbGxlclNpZGUpOworCisgICAgaWYgKHNpemUud2lkdGgg
PCBzaXplLmhlaWdodCkKKyAgICAgICAgY3JvcFJlY3Qub3JpZ2luLnkgPSBzdGQ6OnJvdW5kKChz
aXplLmhlaWdodCAtIHNtYWxsZXJTaWRlKSAvIDIpOworICAgIGVsc2UKKyAgICAgICAgY3JvcFJl
Y3Qub3JpZ2luLnggPSBzdGQ6OnJvdW5kKChzaXplLndpZHRoIC0gc21hbGxlclNpZGUpIC8gMik7
CisKKyAgICByZXR1cm4gY3JvcFJlY3Q7Cit9CisKK3N0YXRpYyBVSUltYWdlICpzcXVhcmVJbWFn
ZShDR0ltYWdlUmVmIGltYWdlKQoreworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICBDR1NpemUgaW1hZ2VTaXplID0gQ0dTaXplTWFrZShDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSk7CisgICAgaWYgKGltYWdlU2l6ZS53aWR0
aCA9PSBpbWFnZVNpemUuaGVpZ2h0KQorICAgICAgICByZXR1cm4gW1VJSW1hZ2UgaW1hZ2VXaXRo
Q0dJbWFnZTppbWFnZV07CisKKyAgICBDR1JlY3Qgc3F1YXJlQ3JvcFJlY3QgPSBzcXVhcmVDcm9w
UmVjdEZvclNpemUoaW1hZ2VTaXplKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3F1YXJl
SW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UsIHNxdWFy
ZUNyb3BSZWN0KSk7CisgICAgcmV0dXJuIFtVSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c3F1YXJl
SW1hZ2UuZ2V0KCldOworfQorCitzdGF0aWMgVUlJbWFnZSAqdGh1bWJuYWlsU2l6ZWRJbWFnZUZv
ckltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCit7CisgICAgVUlJbWFnZSAqc3F1YXJlZEltYWdlID0g
c3F1YXJlSW1hZ2UoaW1hZ2UpOworICAgIGlmICghc3F1YXJlZEltYWdlKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgQ0dSZWN0IGRlc3RSZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBpY29uU2lk
ZUxlbmd0aCwgaWNvblNpZGVMZW5ndGgpOworICAgIFVJR3JhcGhpY3NCZWdpbkltYWdlQ29udGV4
dChkZXN0UmVjdC5zaXplKTsKKyAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShV
SUdyYXBoaWNzR2V0Q3VycmVudENvbnRleHQoKSwga0NHSW50ZXJwb2xhdGlvbkhpZ2gpOworICAg
IFtzcXVhcmVkSW1hZ2UgZHJhd0luUmVjdDpkZXN0UmVjdF07CisgICAgVUlJbWFnZSAqcmVzdWx0
SW1hZ2UgPSBVSUdyYXBoaWNzR2V0SW1hZ2VGcm9tQ3VycmVudEltYWdlQ29udGV4dCgpOworICAg
IFVJR3JhcGhpY3NFbmRJbWFnZUNvbnRleHQoKTsKKyAgICByZXR1cm4gcmVzdWx0SW1hZ2U7Cit9
CisKK1VJSW1hZ2UqIGZhbGxiYWNrSWNvbkZvckZpbGUoTlNVUkwgKmZpbGUpCit7CisgICAgQVNT
RVJUX0FSRyhmaWxlLCBbZmlsZSBpc0ZpbGVVUkxdKTsKKworICAgIFVJRG9jdW1lbnRJbnRlcmFj
dGlvbkNvbnRyb2xsZXIgKmludGVyYWN0aW9uQ29udHJvbGxlciA9IFtVSURvY3VtZW50SW50ZXJh
Y3Rpb25Db250cm9sbGVyIGludGVyYWN0aW9uQ29udHJvbGxlcldpdGhVUkw6ZmlsZV07CisgICAg
cmV0dXJuIHRodW1ibmFpbFNpemVkSW1hZ2VGb3JJbWFnZShpbnRlcmFjdGlvbkNvbnRyb2xsZXIu
aWNvbnNbMF0uQ0dJbWFnZSk7Cit9CisKK1VJSW1hZ2UqIGljb25Gb3JJbWFnZUZpbGUoTlNVUkwg
KmZpbGUpCit7CisgICAgQVNTRVJUX0FSRyhmaWxlLCBbZmlsZSBpc0ZpbGVVUkxdKTsKKworICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7CisgICAgICAgIChpZClrQ0dJbWFnZVNvdXJjZUNy
ZWF0ZVRodW1ibmFpbEZyb21JbWFnZUlmQWJzZW50OiBAWUVTLAorICAgICAgICAoaWQpa0NHSW1h
Z2VTb3VyY2VUaHVtYm5haWxNYXhQaXhlbFNpemU6IEAoaWNvblNpZGVMZW5ndGgpLAorICAgICAg
ICAoaWQpa0NHSW1hZ2VTb3VyY2VDcmVhdGVUaHVtYm5haWxXaXRoVHJhbnNmb3JtOiBAWUVTLAor
ICAgIH07CisgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2U+IGltYWdlU291cmNlID0gYWRvcHRD
RihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTCgoQ0ZVUkxSZWYpZmlsZSwgMCkpOworICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiB0aHVtYm5haWwgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVh
dGVUaHVtYm5haWxBdEluZGV4KGltYWdlU291cmNlLmdldCgpLCAwLCAoQ0ZEaWN0aW9uYXJ5UmVm
KW9wdGlvbnMpKTsKKyAgICBpZiAoIXRodW1ibmFpbCkgeworICAgICAgICBMT0dfRVJST1IoIkVy
cm9yIGNyZWF0aW5nIHRodW1ibmFpbCBpbWFnZSBmb3IgaW1hZ2U6ICVAIiwgZmlsZSk7CisgICAg
ICAgIHJldHVybiBmYWxsYmFja0ljb25Gb3JGaWxlKGZpbGUpOworICAgIH0KKworICAgIHJldHVy
biB0aHVtYm5haWxTaXplZEltYWdlRm9ySW1hZ2UodGh1bWJuYWlsLmdldCgpKTsKK30KKworVUlJ
bWFnZSogaWNvbkZvclZpZGVvRmlsZShOU1VSTCAqZmlsZSkKK3sKKyAgICBBU1NFUlRfQVJHKGZp
bGUsIFtmaWxlIGlzRmlsZVVSTF0pOworCisgICAgUmV0YWluUHRyPEFWVVJMQXNzZXQ+IGFzc2V0
ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5zdGFuY2UoKSBpbml0V2l0aFVSTDpmaWxlIG9w
dGlvbnM6bmlsXSk7CisgICAgUmV0YWluUHRyPEFWQXNzZXRJbWFnZUdlbmVyYXRvcj4gZ2VuZXJh
dG9yID0gYWRvcHROUyhbYWxsb2NBVkFzc2V0SW1hZ2VHZW5lcmF0b3JJbnN0YW5jZSgpIGluaXRX
aXRoQXNzZXQ6YXNzZXQuZ2V0KCldKTsKKyAgICBbZ2VuZXJhdG9yIHNldEFwcGxpZXNQcmVmZXJy
ZWRUcmFja1RyYW5zZm9ybTpZRVNdOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlUmVmID0gYWRvcHRDRihbZ2VuZXJhdG9yIGNvcHlD
R0ltYWdlQXRUaW1lOmtDTVRpbWVaZXJvIGFjdHVhbFRpbWU6bmlsIGVycm9yOiZlcnJvcl0pOwor
ICAgIGlmICghaW1hZ2VSZWYpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJFcnJvciBjcmVhdGluZyBp
bWFnZSBmb3IgdmlkZW8gJyVAJzogJUAiLCBmaWxlLCBlcnJvcik7CisgICAgICAgIHJldHVybiBm
YWxsYmFja0ljb25Gb3JGaWxlKGZpbGUpOworICAgIH0KKworICAgIHJldHVybiB0aHVtYm5haWxT
aXplZEltYWdlRm9ySW1hZ2UoaW1hZ2VSZWYuZ2V0KCkpOworfQorCitVSUltYWdlKiBpY29uRm9y
RmlsZShOU1VSTCAqZmlsZSkKK3sKKyAgICBBU1NFUlRfQVJHKGZpbGUsIFtmaWxlIGlzRmlsZVVS
TF0pOworCisgICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBmaWxlLnBhdGhFeHRlbnNpb247
CisgICAgaWYgKCFmaWxlRXh0ZW5zaW9uLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZVVUSSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCAo
Q0ZTdHJpbmdSZWYpZmlsZUV4dGVuc2lvbiwgMCkpOworCisgICAgaWYgKFVUVHlwZUNvbmZvcm1z
VG8oZmlsZVVUSS5nZXQoKSwga1VUVHlwZUltYWdlKSkKKyAgICAgICAgcmV0dXJuIGljb25Gb3JJ
bWFnZUZpbGUoZmlsZSk7CisKKyAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhmaWxlVVRJLmdldCgp
LCBrVVRUeXBlTW92aWUpKQorICAgICAgICByZXR1cm4gaWNvbkZvclZpZGVvRmlsZShmaWxlKTsK
KworICAgIHJldHVybiBmYWxsYmFja0ljb25Gb3JGaWxlKGZpbGUpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVV
cGxvYWRQYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxl
VXBsb2FkUGFuZWwubW0KaW5kZXggMDU5ZWFkNGE0YzJmOTIxNTBhOWMxMmE1NWMxMTdlYmMzNGUz
ZDIxYS4uMzE2NzdmMDkyYWFiNGU3MTIyMDA0MDY4ODJjMGRlODY1Y2I4ZWQ3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBh
bmVsLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJXS0RhdGEuaCIKICNpbXBvcnQgIldL
U3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVVJMQ0YuaCIKKyNpbXBvcnQgIldlYkljb25VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKICNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5o
PgpAQCAtNTAsMTMgKzUxLDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotU09GVF9M
SU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pOwotU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlv
biwgQVZBc3NldEltYWdlR2VuZXJhdG9yKTsKLVNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24s
IEFWVVJMQXNzZXQpOwotCi1TT0ZUX0xJTktfRlJBTUVXT1JLKENvcmVNZWRpYSk7Ci1TT0ZUX0xJ
TktfQ09OU1RBTlQoQ29yZU1lZGlhLCBrQ01UaW1lWmVybywgQ01UaW1lKTsKLQogU09GVF9MSU5L
X0ZSQU1FV09SSyhQaG90b3MpOwogU09GVF9MSU5LX0NMQVNTKFBob3RvcywgUEhBc3NldCk7CiBT
T0ZUX0xJTktfQ0xBU1MoUGhvdG9zLCBQSEltYWdlTWFuYWdlcik7CkBAIC02NCw4ICs1OCw2IEBA
IFNPRlRfTElOS19DTEFTUyhQaG90b3MsIFBISW1hZ2VSZXF1ZXN0T3B0aW9ucyk7CiBTT0ZUX0xJ
TktfQ09OU1RBTlQoUGhvdG9zLCBQSEltYWdlUmVxdWVzdE9wdGlvbnNSZXNpemVNb2RlTm9uZSwg
TlNTdHJpbmcgKik7CiBTT0ZUX0xJTktfQ09OU1RBTlQoUGhvdG9zLCBQSEltYWdlUmVxdWVzdE9w
dGlvbnNWZXJzaW9uQ3VycmVudCwgTlNTdHJpbmcgKik7CiAKLSNkZWZpbmUga0NNVGltZVplcm8g
Z2V0a0NNVGltZVplcm8oKQotCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAK
QEAgLTg2LDExNyArNzgsNiBAQCBzdGF0aWMgaW5saW5lIFVJSW1hZ2UgKmNhbWVyYUljb24oKQog
ICAgIHJldHVybiBfVUlJbWFnZUdldFdlYktpdFRha2VQaG90b09yVmlkZW9JY29uKCk7CiB9CiAK
LSNwcmFnbWEgbWFyayAtIEljb24gZ2VuZXJhdGlvbgotCi1zdGF0aWMgY29uc3QgQ0dGbG9hdCBp
Y29uU2lkZUxlbmd0aCA9IDEwMDsKLQotc3RhdGljIENHUmVjdCBzcXVhcmVDcm9wUmVjdEZvclNp
emUoQ0dTaXplIHNpemUpCi17Ci0gICAgQ0dGbG9hdCBzbWFsbGVyU2lkZSA9IE1JTihzaXplLndp
ZHRoLCBzaXplLmhlaWdodCk7Ci0gICAgQ0dSZWN0IGNyb3BSZWN0ID0gQ0dSZWN0TWFrZSgwLCAw
LCBzbWFsbGVyU2lkZSwgc21hbGxlclNpZGUpOwotCi0gICAgaWYgKHNpemUud2lkdGggPCBzaXpl
LmhlaWdodCkKLSAgICAgICAgY3JvcFJlY3Qub3JpZ2luLnkgPSBzdGQ6OnJvdW5kKChzaXplLmhl
aWdodCAtIHNtYWxsZXJTaWRlKSAvIDIpOwotICAgIGVsc2UKLSAgICAgICAgY3JvcFJlY3Qub3Jp
Z2luLnggPSBzdGQ6OnJvdW5kKChzaXplLndpZHRoIC0gc21hbGxlclNpZGUpIC8gMik7Ci0KLSAg
ICByZXR1cm4gY3JvcFJlY3Q7Ci19Ci0KLXN0YXRpYyBVSUltYWdlICpzcXVhcmVJbWFnZShDR0lt
YWdlUmVmIGltYWdlKQotewotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBDR1NpemUgaW1hZ2VTaXplID0gQ0dTaXplTWFrZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2Up
LCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSk7Ci0gICAgaWYgKGltYWdlU2l6ZS53aWR0aCA9PSBp
bWFnZVNpemUuaGVpZ2h0KQotICAgICAgICByZXR1cm4gW1VJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFn
ZTppbWFnZV07Ci0KLSAgICBDR1JlY3Qgc3F1YXJlQ3JvcFJlY3QgPSBzcXVhcmVDcm9wUmVjdEZv
clNpemUoaW1hZ2VTaXplKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3F1YXJlSW1hZ2Ug
PSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QoaW1hZ2UsIHNxdWFyZUNyb3BS
ZWN0KSk7Ci0gICAgcmV0dXJuIFtVSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6c3F1YXJlSW1hZ2Uu
Z2V0KCldOwotfQotCi1zdGF0aWMgVUlJbWFnZSAqdGh1bWJuYWlsU2l6ZWRJbWFnZUZvckltYWdl
KENHSW1hZ2VSZWYgaW1hZ2UpCi17Ci0gICAgVUlJbWFnZSAqc3F1YXJlZEltYWdlID0gc3F1YXJl
SW1hZ2UoaW1hZ2UpOwotICAgIGlmICghc3F1YXJlZEltYWdlKQotICAgICAgICByZXR1cm4gbmls
OwotCi0gICAgQ0dSZWN0IGRlc3RSZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBpY29uU2lkZUxlbmd0
aCwgaWNvblNpZGVMZW5ndGgpOwotICAgIFVJR3JhcGhpY3NCZWdpbkltYWdlQ29udGV4dChkZXN0
UmVjdC5zaXplKTsKLSAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShVSUdyYXBo
aWNzR2V0Q3VycmVudENvbnRleHQoKSwga0NHSW50ZXJwb2xhdGlvbkhpZ2gpOwotICAgIFtzcXVh
cmVkSW1hZ2UgZHJhd0luUmVjdDpkZXN0UmVjdF07Ci0gICAgVUlJbWFnZSAqcmVzdWx0SW1hZ2Ug
PSBVSUdyYXBoaWNzR2V0SW1hZ2VGcm9tQ3VycmVudEltYWdlQ29udGV4dCgpOwotICAgIFVJR3Jh
cGhpY3NFbmRJbWFnZUNvbnRleHQoKTsKLSAgICByZXR1cm4gcmVzdWx0SW1hZ2U7Ci19Ci0KLXN0
YXRpYyBVSUltYWdlKiBmYWxsYmFja0ljb25Gb3JGaWxlKE5TVVJMICpmaWxlKQotewotICAgIEFT
U0VSVF9BUkcoZmlsZSwgW2ZpbGUgaXNGaWxlVVJMXSk7Ci0KLSAgICBVSURvY3VtZW50SW50ZXJh
Y3Rpb25Db250cm9sbGVyICppbnRlcmFjdGlvbkNvbnRyb2xsZXIgPSBbVUlEb2N1bWVudEludGVy
YWN0aW9uQ29udHJvbGxlciBpbnRlcmFjdGlvbkNvbnRyb2xsZXJXaXRoVVJMOmZpbGVdOwotICAg
IHJldHVybiB0aHVtYm5haWxTaXplZEltYWdlRm9ySW1hZ2UoaW50ZXJhY3Rpb25Db250cm9sbGVy
Lmljb25zWzBdLkNHSW1hZ2UpOwotfQotCi1zdGF0aWMgVUlJbWFnZSogaWNvbkZvckltYWdlRmls
ZShOU1VSTCAqZmlsZSkKLXsKLSAgICBBU1NFUlRfQVJHKGZpbGUsIFtmaWxlIGlzRmlsZVVSTF0p
OwotCi0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKLSAgICAgICAgKGlkKWtDR0ltYWdl
U291cmNlQ3JlYXRlVGh1bWJuYWlsRnJvbUltYWdlSWZBYnNlbnQ6IEBZRVMsCi0gICAgICAgIChp
ZClrQ0dJbWFnZVNvdXJjZVRodW1ibmFpbE1heFBpeGVsU2l6ZTogQChpY29uU2lkZUxlbmd0aCks
Ci0gICAgICAgIChpZClrQ0dJbWFnZVNvdXJjZUNyZWF0ZVRodW1ibmFpbFdpdGhUcmFuc2Zvcm06
IEBZRVMsCi0gICAgfTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZT4gaW1hZ2VTb3VyY2Ug
PSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVXaXRoVVJMKChDRlVSTFJlZilmaWxlLCAwKSk7
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRodW1ibmFpbCA9IGFkb3B0Q0YoQ0dJbWFnZVNv
dXJjZUNyZWF0ZVRodW1ibmFpbEF0SW5kZXgoaW1hZ2VTb3VyY2UuZ2V0KCksIDAsIChDRkRpY3Rp
b25hcnlSZWYpb3B0aW9ucykpOwotICAgIGlmICghdGh1bWJuYWlsKSB7Ci0gICAgICAgIExPR19F
UlJPUigiV0tGaWxlVXBsb2FkUGFuZWw6IEVycm9yIGNyZWF0aW5nIHRodW1ibmFpbCBpbWFnZSBm
b3IgaW1hZ2U6ICVAIiwgZmlsZSk7Ci0gICAgICAgIHJldHVybiBmYWxsYmFja0ljb25Gb3JGaWxl
KGZpbGUpOwotICAgIH0KLQotICAgIHJldHVybiB0aHVtYm5haWxTaXplZEltYWdlRm9ySW1hZ2Uo
dGh1bWJuYWlsLmdldCgpKTsKLX0KLQotc3RhdGljIFVJSW1hZ2UqIGljb25Gb3JWaWRlb0ZpbGUo
TlNVUkwgKmZpbGUpCi17Ci0gICAgQVNTRVJUX0FSRyhmaWxlLCBbZmlsZSBpc0ZpbGVVUkxdKTsK
LQotICAgIFJldGFpblB0cjxBVlVSTEFzc2V0PiBhc3NldCA9IGFkb3B0TlMoW2FsbG9jQVZVUkxB
c3NldEluc3RhbmNlKCkgaW5pdFdpdGhVUkw6ZmlsZSBvcHRpb25zOm5pbF0pOwotICAgIFJldGFp
blB0cjxBVkFzc2V0SW1hZ2VHZW5lcmF0b3I+IGdlbmVyYXRvciA9IGFkb3B0TlMoW2FsbG9jQVZB
c3NldEltYWdlR2VuZXJhdG9ySW5zdGFuY2UoKSBpbml0V2l0aEFzc2V0OmFzc2V0LmdldCgpXSk7
Ci0gICAgW2dlbmVyYXRvciBzZXRBcHBsaWVzUHJlZmVycmVkVHJhY2tUcmFuc2Zvcm06WUVTXTsK
LQotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBp
bWFnZVJlZiA9IGFkb3B0Q0YoW2dlbmVyYXRvciBjb3B5Q0dJbWFnZUF0VGltZTprQ01UaW1lWmVy
byBhY3R1YWxUaW1lOm5pbCBlcnJvcjomZXJyb3JdKTsKLSAgICBpZiAoIWltYWdlUmVmKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiV0tGaWxlVXBsb2FkUGFuZWw6IEVycm9yIGNyZWF0aW5nIGltYWdl
IGZvciB2aWRlbyAnJUAnOiAlQCIsIGZpbGUsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbGxi
YWNrSWNvbkZvckZpbGUoZmlsZSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRodW1ibmFpbFNpemVk
SW1hZ2VGb3JJbWFnZShpbWFnZVJlZi5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBVSUltYWdlKiBpY29u
Rm9yRmlsZShOU1VSTCAqZmlsZSkKLXsKLSAgICBBU1NFUlRfQVJHKGZpbGUsIFtmaWxlIGlzRmls
ZVVSTF0pOwotCi0gICAgTlNTdHJpbmcgKmZpbGVFeHRlbnNpb24gPSBmaWxlLnBhdGhFeHRlbnNp
b247Ci0gICAgaWYgKCFmaWxlRXh0ZW5zaW9uLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZVVUSSA9IGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9u
LCAoQ0ZTdHJpbmdSZWYpZmlsZUV4dGVuc2lvbiwgMCkpOwotCi0gICAgaWYgKFVUVHlwZUNvbmZv
cm1zVG8oZmlsZVVUSS5nZXQoKSwga1VUVHlwZUltYWdlKSkKLSAgICAgICAgcmV0dXJuIGljb25G
b3JJbWFnZUZpbGUoZmlsZSk7Ci0KLSAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhmaWxlVVRJLmdl
dCgpLCBrVVRUeXBlTW92aWUpKQotICAgICAgICByZXR1cm4gaWNvbkZvclZpZGVvRmlsZShmaWxl
KTsKLQotICAgIHJldHVybiBmYWxsYmFja0ljb25Gb3JGaWxlKGZpbGUpOwotfQotCi0KICNwcmFn
bWEgbWFyayAtIF9XS0ZpbGVVcGxvYWRJdGVtCiAKIEBpbnRlcmZhY2UgX1dLRmlsZVVwbG9hZEl0
ZW0gOiBOU09iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDdmMzFmODBiYmU5OThmODdmNjIxNTcwYWZkNjlhMzIzNGU0MGQ0
ZTMuLjkzNWRmZGY3ZmEzODFlMWM5ZWMyNzQxZWNkY2Q4NmJlZThmNjY3MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwMDMs
NiArMjAwMyw4IEBACiAJCUYwMzY5Nzg4MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMDM2
OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovOyB9OwogCQlGNDA5
QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDlCQTE3MUU2RTY0QjMw
MDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0MzM3MDk3MUU0RDcyRUQwMDA1MkIwRSAv
KiBfV0tUZXN0aW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MzM3MDk2MUU0RDZBNDQwMDA1MkIwRSAvKiBfV0tUZXN0aW5nRGVsZWdh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlG
NDRERkVCMjFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0REZFQjAxRTlFNzUyRjAwMzhE
MTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCAqLzsgfTsKKwkJRjQ0REZFQjMxRTlFNzUyRjAwMzhE
MTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxp
dGllcy5tbSAqLzsgfTsKIAkJRjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250
ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0dGVy
bi5oICovOyB9OwogCQlGNjExM0UyODEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjYxMTNFMjYxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cCAqLzsgfTsKIAkJRjYxMTNFMjkxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NjExM0UyNzEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDMzMSw2ICs0
MzMzLDggQEAKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhF
IC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0MzM3MDk2MUU0RDZBNDQwMDA1MkIwRSAvKiBfV0tUZXN0aW5nRGVsZWdhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVGVzdGluZ0RlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBX
ZWJJY29uVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklj
b25VdGlsaXRpZXMuaDsgcGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSWNv
blV0aWxpdGllcy5tbTsgcGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogQVBJVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVz
ZXJDb250ZW50VVJMUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjEx
M0UyNjEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNzEyNkNFMTlCMDA1N0Qw
QTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTUzMjksNiArNTMzMyw4IEBACiAJCQkJMkRBOTQ0OTgxODg0RTRGMDAwRUQ4NkRC
IC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0gKi8sCiAJCQkJQTExOEE5RUMxOTA3QUQ2RjAw
RjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi8sCiAJCQkJQTExOEE5RUQxOTA3
QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oICovLAorCQkJCUY0NERGRUIw
MUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggKi8sCisJCQkJRjQ0REZFQjEx
RTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gKi8sCiAJCQkJMkRBOTQ0OTkx
ODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5oICovLAogCQkJCTJEQTk0NDlB
MTg4NEU0RjAwMEVEODZEQiAvKiBXZWJJT1NFdmVudEZhY3RvcnkubW0gKi8sCiAJCQkJMkRBOTQ0
OUIxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAgKi8sCkBA
IC04MjQ0LDYgKzgyNTAsNyBAQAogCQkJCTFBQjdENENBMTI4OEFBQTcwMENGRDA4QyAvKiBEb3du
bG9hZFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQyNUU5NjE2N0FCMDgxMDBFQTlCQ0Qg
LyogRG93bmxvYWRQcm94eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCN0Q2MUExMjg4QjlE
OTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RjQ0REZFQjIxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUM1MTczODgxMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4NDUyQTgxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdp
bmdBcmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI2NTkyMzEyMDhCNERCMDA0NDgxNkMgLyog
RHJhd2luZ0FyZWFJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjgwLDYgKzEwMjg3LDcgQEAK
IAkJCQlCQ0Q1OThBRDExMkI3RkRGMDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzExMUFFNDExMkY1QzI2MDAzMzdCQUIgLyogV2ViUHJvY2Vz
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzZFNzBGQjE4QjJEQzdBMDBGMjRFMkUgLyogV2Vi
UHJvY2Vzc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0REZFQjMxRTlFNzUyRjAwMzhE
MTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTA0M0EwQTEy
NEQxMUE5MDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUEwNDNGNjkxMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMzA2ODI1MTI1QTZCOTQwMEU3
MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDE0YzFlNDY2MTI2M2IxZDFkZTA5MjA2OGFkYzlk
MGRiNmQwOWQwYmMuLjk4YTVmODg0MjAwNzk1OWU3ZjZlZTc1MTRiNWYwMDgzNzc3NTA4YjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc4Miw3ICs3ODIsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lJiBmcmFtZSwgRmlsZUNob29zZXImIGZpbGVDaG9v
c2VyKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6bG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGaWxlSWNvbkxvYWRlciYgbG9hZGVyKQogewotICAgIGxv
YWRlci5pY29uTG9hZGVkKEljb246OmNyZWF0ZUljb25Gb3JGaWxlcyhmaWxlbmFtZXMpKTsKKyAg
ICBsb2FkZXIuaWNvbkxvYWRlZChjcmVhdGVJY29uRm9yRmlsZXMoZmlsZW5hbWVzKSk7CiB9CiAK
ICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtNzk3LDYgKzc5NywxMSBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wgaGlkZGVuVW50aWxNb3Vz
ZU1vdmVzKQogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEN1cnNv
ckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRpbE1vdXNlTW92ZXMpKTsKIH0KIAorUmVm
UHRyPEljb24+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBmaWxlbmFtZXMpCit7CisgICAgcmV0dXJuIEljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyhmaWxlbmFtZXMpOworfQorCiAjZW5kaWYKIAogI2lmICFVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfVElNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBhNTE0YjI5OTQ4ODg0MmJj
ZjkyNDU4OTEzYjAzNzliM2VhZjllYmFlLi43M2Y5Y2MyYmNkZGYwMWQ2NDYxMjAwZjc2N2VhZWM2
YzlkODFiZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTMzNCw2ICszMzQsOCBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKSBmaW5hbDsKIAorICAgIFJlZlB0cjxXZWJDb3JlOjpJY29uPiBjcmVh
dGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykgZmluYWw7CisK
ICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAgICAgdm9pZCByZXF1ZXN0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoY29uc3QgU3RyaW5nJiAvKmRldGFpbHMqLywgY29uc3Qg
U3RyaW5nJiAvKmRlc2NyaXB0aW9uKi8sIFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVxdWVzdEluc3Rh
bGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVu
dElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YkNocm9tZUNsaWVudElPUy5tbQppbmRleCBkMWUwZWRhNWU1YzA4ZWRhZDc5N2FkOTAwM2Q3ZjE2
MmE2NTljNWY4Li5mMzFjMzYzN2I3OGVhZjQwNTBlOWU5MDVjZGE1M2UwMWE0NDI2OGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJD
aHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC0yOSwxMSArMjksMTcgQEAKICNp
ZiBQTEFURk9STShJT1MpCiAKICNpbXBvcnQgIkRyYXdpbmdBcmVhLmgiCisjaW1wb3J0ICJVSUtp
dFNQSS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJG
cmFtZS5oIgorI2ltcG9ydCAiV2ViSWNvblV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViUGFnZS5o
IgogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvSWNv
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2ltcG9ydCA8d3RmL1Jl
ZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTE0Myw2ICsxNDksMTYgQEAgaW50IFdlYkNocm9tZUNsaWVudDo6ZGV2aWNlT3JpZW50
YXRpb24oKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UuZGV2aWNlT3JpZW50YXRpb24oKTsKIH0K
IAorUmVmUHRyPEljb24+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCit7CisgICAgaWYgKCFmaWxlbmFtZXMuc2l6ZSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ2Vu
ZXJhdGUgYW4gaWNvbiBzaG93aW5nIG11bHRpcGxlIGZpbGVzIGhlcmUsIGlmIGFwcGxpY2FibGUu
IEN1cnJlbnRseSwgaWYgdGhlcmUgYXJlIG11bHRpcGxlCisgICAgLy8gZmlsZXMsIHdlIG9ubHkg
dXNlIHRoZSBmaXJzdCBVUkwgdG8gZ2VuZXJhdGUgYW4gaWNvbi4KKyAgICByZXR1cm4gSWNvbjo6
Y3JlYXRlSWNvbkZvckltYWdlKGljb25Gb3JGaWxlKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6Zmls
ZW5hbWVzWzBdXSkuQ0dJbWFnZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>