<?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>184756</bug_id>
          
          <creation_ts>2018-04-18 14:14:18 -0700</creation_ts>
          <short_desc>Rename WindowProxyController to WindowProxy</short_desc>
          <delta_ts>2018-04-19 05:47:38 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>184716</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1415706</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-18 14:14:18 -0700</bug_when>
    <thetext>Rename WindowProxyController to WindowProxy for clarity. When the IDL uses WindowProxy, the implementation should use WindowProxyController type, which is a bit confusing currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415766</commentid>
    <comment_count>1</comment_count>
      <attachid>338272</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-18 16:10:10 -0700</bug_when>
    <thetext>Created attachment 338272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415772</commentid>
    <comment_count>2</comment_count>
      <attachid>338275</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-18 16:25:43 -0700</bug_when>
    <thetext>Created attachment 338275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415838</commentid>
    <comment_count>3</comment_count>
      <attachid>338275</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-04-18 20:28:26 -0700</bug_when>
    <thetext>Comment on attachment 338275
Patch

I think its a bit odd that the class is called WindowProxy and its wrapper is JSDOMWindowProxy, but I think maybe we should address that by renaming JSDOMWindowProxy at some point. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415840</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-04-18 20:35:20 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #3)
&gt; Comment on attachment 338275 [details]
&gt; Patch
&gt; 
&gt; I think its a bit odd that the class is called WindowProxy and its wrapper
&gt; is JSDOMWindowProxy, but I think maybe we should address that by renaming
&gt; JSDOMWindowProxy at some point. r=me.

Agreed, I’d like to rename it to JSWindowProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415851</commentid>
    <comment_count>5</comment_count>
      <attachid>338275</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-18 21:02:36 -0700</bug_when>
    <thetext>Comment on attachment 338275
Patch

Clearing flags on attachment: 338275

Committed r230794: &lt;https://trac.webkit.org/changeset/230794&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415852</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-18 21:02:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415860</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-18 21:53:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/39553714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415899</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-19 05:47:38 -0700</bug_when>
    <thetext>Committed r230799: &lt;https://trac.webkit.org/changeset/230799&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338272</attachid>
            <date>2018-04-18 16:10:10 -0700</date>
            <delta_ts>2018-04-18 16:25:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184756-20180418161009.patch</filename>
            <type>text/plain</type>
            <size>60878</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMwYmM4N2NjM2I0YzUz
YWUxODllODM1NGU0YzQ5ZmQxYmZmMWM1Zi4uMmU1ODNiM2VmNjkwZDVmNmEzMDUxNjg2MGFmOGI3
ODYyYjhiMWE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE4LTA0LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFdpbmRvd1Byb3h5
Q29udHJvbGxlciB0byBXaW5kb3dQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdpbmRvd1Byb3h5Q29udHJvbGxlciB0byBXaW5kb3dQ
cm94eSBmb3IgY2xhcml0eS4gV2hlbiB0aGUgSURMIHVzZXMgV2luZG93UHJveHksIHRoZSBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICBuZWVkZWQgdXNlIFdpbmRvd1Byb3h5Q29udHJvbGxlciB0eXBl
LCB3aGljaCB3YXMgYSBiaXQgY29uZnVzaW5nLgorCisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFw
cGVyV29ybGQ6On5ET01XcmFwcGVyV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBl
cldvcmxkOjpjbGVhcldyYXBwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVy
V29ybGQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6ZGlkQ3JlYXRlV2lu
ZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpkaWREZXN0cm95
V2luZG93UHJveHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTRE9N
V2luZG93UHJveHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdpbmRv
d1Byb3h5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpTY3JpcHRDYWNoZWRG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0
b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVT
Y3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlTW9kdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9k
dWxlU2NyaXB0SGFuZGxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
d2luZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxl
RXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjplbmFibGVXZWJBc3Nl
bWJseSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlRG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2
YVNjcmlwdFVSTCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluV29ybGRFeGVj
U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6V2luZG93UHJveHkpOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93UHJveHk6On5XaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpX
aW5kb3dQcm94eTo6ZGVzdHJveUpTV2luZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6V2lu
ZG93UHJveHk6OmNyZWF0ZUpTV2luZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93
UHJveHk6OmpzV2luZG93UHJveGllc0FzVmVjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldpbmRvd1Byb3h5OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpjbGVhckpTV2luZG93UHJveGllc05vdE1h
dGNoaW5nRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpzZXRET01X
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHk6OmF0dGFjaERlYnVnZ2VyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmguCisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6anNXaW5kb3dQcm94aWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldpbmRvd1Byb3h5OjpyZWxlYXNlSlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OldpbmRvd1Byb3h5OjpzZXRKU1dpbmRvd1Byb3hpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2luZG93UHJveHk6OmpzV2luZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93
UHJveHk6OmV4aXN0aW5nSlNXaW5kb3dQcm94eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
aW5kb3dQcm94eTo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFi
c3RyYWN0RnJhbWU6OkFic3RyYWN0RnJhbWUpOgorICAgICAgICAqIHBhZ2UvQWJzdHJhY3RGcmFt
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RGcmFtZTo6d2luZG93UHJveHkpOgorICAg
ICAgICAoV2ViQ29yZTo6QWJzdHJhY3RGcmFtZTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXREZWJ1Z2dlcik6
CisgICAgICAgICogcGFnZS9SZW1vdGVET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlRE9NV2luZG93OjpzZWxmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURP
TVdpbmRvdzo6dG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6
b3BlbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6cGFyZW50
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5oOgorCiAyMDE4LTA0LTE4
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2V0IFJlbW90ZURP
TVdpbmRvdydzIGluaXRpYWwgb3BlbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNlNDA1Njk2ZTk2MDRiODM0YWZi
NzkwMGQ5YTIxYTZiMTRlZDBmNzcuLjZmMTcwNWFhZmQzMGVkMjI4ZGNlMDlkYWUzYjBlYjc4YjRh
ZDQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMDQtMTggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV2luZG93UHJveHlDb250cm9s
bGVyIHRvIFdpbmRvd1Byb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODQ3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW5hbWUgV2luZG93UHJveHlDb250cm9sbGVyIHRvIFdpbmRvd1Byb3h5IGZv
ciBjbGFyaXR5LiBXaGVuIHRoZSBJREwgdXNlcyBXaW5kb3dQcm94eSwgdGhlIGltcGxlbWVudGF0
aW9uCisgICAgICAgIG5lZWRlZCB1c2UgV2luZG93UHJveHlDb250cm9sbGVyIHR5cGUsIHdoaWNo
IHdhcyBhIGJpdCBjb25mdXNpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRvd1NjcmlwdE5Q
T2JqZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZyYW1lQmVjYW1lUmVtb3RlKToKKwogMjAxOC0wNC0xOCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCBSZW1vdGVET01X
aW5kb3cncyBpbml0aWFsIG9wZW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJh
OTI4MDQ2MGNlZjFmYTY1ODFlNDVlODM0MzAzMzJmZjAwYzM1ZWIuLmZmN2RjNzE4Njc1MDNmYjM2
Yzg4NzQxYzVlN2VkMmNjNWZlYWVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxOC0wNC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBXaW5kb3dQcm94eUNvbnRyb2xsZXIgdG8gV2luZG93UHJveHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDc1Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBX
aW5kb3dQcm94eUNvbnRyb2xsZXIgdG8gV2luZG93UHJveHkgZm9yIGNsYXJpdHkuIFdoZW4gdGhl
IElETCB1c2VzIFdpbmRvd1Byb3h5LCB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgbmVlZGVk
IHVzZSBXaW5kb3dQcm94eUNvbnRyb2xsZXIgdHlwZSwgd2hpY2ggd2FzIGEgYml0IGNvbmZ1c2lu
Zy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRX
aW5kb3dOUE9iamVjdCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAg
KC1bV2ViRnJhbWUgX2F0dGFjaFNjcmlwdERlYnVnZ2VyXSk6CisKIDIwMTgtMDQtMTcgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9s
bG91dCBvZiByMjMwNjMyLiBSZWdyZXNzaW9uIGluIG1lbW9yeSB1c2FnZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggMTI2NTBkNjIwZmYyYWNlNTk1OTljYTg0OThiNDA4NTMyNDFmOWY1Yy4uM2Y4Zjk5ODc3
MDNhYWQ1YzUyYmNiMDQxNzk5YjIzZmQwMGU5ZTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ3MCw3
ICs0NzAsNyBAQCBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRh
LmNwcAogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAotYmluZGlu
Z3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmNwcAorYmluZGluZ3MvanMvV2luZG93UHJveHku
Y3BwCiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAogCiBicmlkZ2UvSWRl
bnRpZmllclJlcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAwMWRjZDNlZWRmYWE3NTVlMDYzYzZlNzlmMzk4NTA0NzFjZjMz
YWI0Li42NjYyZTY3NzlhNWY4ZWQxZTgwMDI1N2FmMzcwMmVmNmJhYWY0NmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTkw
LDcgKzExOTAsNyBAQAogCQk0NjBCQjYxNjFEMEExQkYwMDAyMjE4MTIgLyogQmFzZTY0VXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBC
QjYxNDFEMEExQkVDMDAyMjE4MTIgLyogQmFzZTY0VXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJF
ODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwQ0JGMzQxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2lu
ZG93UHJvcGVydGllcy5oICovOyB9OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1NzRGQkUgLyogRE9N
SGlnaFJlc1RpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZFMDE2QUQxRjcyRDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0NjM1
MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM1MjFBQTIwODEwOTBCMDBD
Mjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYzNTIxQUQyMDgxMDkyQTAwQzI4OTIyIC8qIFdp
bmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5
NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24u
aCAqLzsgfTsKIAkJNDY1MzA3RDAxREI2RUU0ODAwRTQxMzdDIC8qIEpTVUlFdmVudEluaXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTA0NUVGMURB
QTEwNEYwMEIwRDhCOSAvKiBKU1VJRXZlbnRJbml0LmggKi87IH07CiAJCTQ2NjU4REM5MUZBMjRC
ODcwMEY3REQ1NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcyNDEzQjFGQTI0QjE0MDA4OEJENkQgLyogU1dDb250
ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03NDI5LDggKzc0MjksOCBAQAogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyog
SlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjM0NTkyQjFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRv
d1Byb3h5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5k
b3dQcm94eUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDYzNTIx
QUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyog
V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4
OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2
MjAxQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1QThFNzgxQzhBMjRDRTAwRTdEM0U0IC8qIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMzcyNyw4ICsyMzcyNyw4IEBACiAJCQkJQkM1M0Q5MTAxMTQz
MTBDQzAwMEQ4MTdFIC8qIFdlYkNvcmVKU0NsaWVudERhdGEuaCAqLywKIAkJCQkwRjA5OUQwNjE3
Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLywKIAkJ
CQkwRjA5OUQwNzE3Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVy
LmggKi8sCi0JCQkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29udHJv
bGxlci5jcHAgKi8sCi0JCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
Q29udHJvbGxlci5oICovLAorCQkJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5kb3dQ
cm94eS5jcHAgKi8sCisJCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
LmggKi8sCiAJCQkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwICovLAogCQkJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmggKi8sCiAJCQkpOwpAQCAtMzA2MzYsNyArMzA2MzYsNyBAQAogCQkJCTBG
MTVFRDVDMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxv
d2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5
MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjM1MjFB
RDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
RTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTAxQkFBQTkxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMTQ4MzJCRTE4N0Y2NENDMDBEQTYzQTYgLyogV0tDb250ZW50T2JzZXJ2
YXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVdyYXBwZXJXb3JsZC5jcHAKaW5kZXggYzAzZTMwOTcxNTZhYWMyZmUxNjEyNDgwZDZhYTlkNDVj
YzU0MTNiYi4uYWJiNTE5MTU2ODgwMzM2YzJkOTU1Yjg3ZTQ3NDI5NmRkMjI1NzlhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC0yNCw3
ICsyNCw3IEBACiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlICJXaW5kb3dQcm94
eUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAKIApAQCAtNDcsOCArNDcsOCBAQCBET01XcmFwcGVyV29ybGQ6On5ET01X
cmFwcGVyV29ybGQoKQogICAgIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4oY2xpZW50RGF0
YSktPmZvcmdldFdvcmxkKCp0aGlzKTsKIAogICAgIC8vIFRoZXNlIGl0ZW1zIGFyZSBjcmVhdGVk
IGxhemlseS4KLSAgICB3aGlsZSAoIW1fd2luZG93UHJveHlDb250cm9sbGVycy5pc0VtcHR5KCkp
Ci0gICAgICAgICgqbV93aW5kb3dQcm94eUNvbnRyb2xsZXJzLmJlZ2luKCkpLT5kZXN0cm95V2lu
ZG93UHJveHkoKnRoaXMpOworICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgp
KQorICAgICAgICAoKm1fanNXaW5kb3dQcm94aWVzLmJlZ2luKCkpLT5kZXN0cm95SlNXaW5kb3dQ
cm94eSgqdGhpcyk7CiB9CiAKIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVhcldyYXBwZXJzKCkK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBlcnMoKQog
ICAgIG1fd3JhcHBlcnMuY2xlYXIoKTsKIAogICAgIC8vIFRoZXNlIGl0ZW1zIGFyZSBjcmVhdGVk
IGxhemlseS4KLSAgICB3aGlsZSAoIW1fd2luZG93UHJveHlDb250cm9sbGVycy5pc0VtcHR5KCkp
Ci0gICAgICAgICgqbV93aW5kb3dQcm94eUNvbnRyb2xsZXJzLmJlZ2luKCkpLT5kZXN0cm95V2lu
ZG93UHJveHkoKnRoaXMpOworICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgp
KQorICAgICAgICAoKm1fanNXaW5kb3dQcm94aWVzLmJlZ2luKCkpLT5kZXN0cm95SlNXaW5kb3dQ
cm94eSgqdGhpcyk7CiB9CiAKIERPTVdyYXBwZXJXb3JsZCYgbm9ybWFsV29ybGQoSlNDOjpWTSYg
dm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29y
bGQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCmluZGV4
IDNjNjJhYTlkNGY1NDcwYTQwYTZlYmQ2YjYwYmNlYmM3YjhhMzg5MDAuLmNiZDdlNmU1MjBlNjE2
NGZkOWMxOTA2NGMzYjAyOTQ5ZWYyMDA2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTVdyYXBwZXJXb3JsZC5oCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVyOworY2xhc3MgV2luZG93UHJveHk7
CiAKIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+PiBET01P
YmplY3RXcmFwcGVyTWFwOwogCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICAvLyBGcmVl
IGFzIG11Y2ggbWVtb3J5IGhlbGQgb250byBieSB0aGlzIHdvcmxkIGFzIHBvc3NpYmxlLgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJXcmFwcGVycygpOwogCi0gICAgdm9pZCBkaWRDcmVh
dGVXaW5kb3dQcm94eShXaW5kb3dQcm94eUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgbV93aW5k
b3dQcm94eUNvbnRyb2xsZXJzLmFkZChjb250cm9sbGVyKTsgfQotICAgIHZvaWQgZGlkRGVzdHJv
eVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3dpbmRv
d1Byb3h5Q29udHJvbGxlcnMucmVtb3ZlKGNvbnRyb2xsZXIpOyB9CisgICAgdm9pZCBkaWRDcmVh
dGVXaW5kb3dQcm94eShXaW5kb3dQcm94eSogY29udHJvbGxlcikgeyBtX2pzV2luZG93UHJveGll
cy5hZGQoY29udHJvbGxlcik7IH0KKyAgICB2b2lkIGRpZERlc3Ryb3lXaW5kb3dQcm94eShXaW5k
b3dQcm94eSogY29udHJvbGxlcikgeyBtX2pzV2luZG93UHJveGllcy5yZW1vdmUoY29udHJvbGxl
cik7IH0KIAogICAgIHZvaWQgc2V0U2hhZG93Um9vdElzQWx3YXlzT3BlbigpIHsgbV9zaGFkb3dS
b290SXNBbHdheXNPcGVuID0gdHJ1ZTsgfQogICAgIGJvb2wgc2hhZG93Um9vdElzQWx3YXlzT3Bl
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93Um9vdElzQWx3YXlzT3BlbjsgfQpAQCAtNjEsNyAr
NjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgSlNDOjpWTSYgbV92bTsKLSAgICBI
YXNoU2V0PFdpbmRvd1Byb3h5Q29udHJvbGxlcio+IG1fd2luZG93UHJveHlDb250cm9sbGVyczsK
KyAgICBIYXNoU2V0PFdpbmRvd1Byb3h5Kj4gbV9qc1dpbmRvd1Byb3hpZXM7CiAgICAgRE9NT2Jq
ZWN0V3JhcHBlck1hcCBtX3dyYXBwZXJzOwogCiAgICAgYm9vbCBtX2lzTm9ybWFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXgg
YTg1Y2RlMTcwMGFhODJmZjAxZmJhYjg1NjZhNjI5ZmE1YmE3ZWQzZS4uMDgzMGJjZmI1YTU4NTdh
ZTYzZDVmY2Q2NzkzYTczM2FiYTk4NDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMTEsNSArMTExLDUgQEAKICNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5jcHAiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCIKICNpbmNsdWRlICJXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIgotI2luY2x1ZGUg
IldpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAiCisjaW5jbHVkZSAiV2luZG93UHJveHkuY3BwIgog
I2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggYmU0YmUxNTgwZWRkNjk0MmQx
M2RmMTk0N2NjMjI2MTYxZWFlNmNmMi4uNTg5Yzk0MDcxZjJiNmJkNzhlNmU1YjcyNDI5NDM4MzE2
NDg1ZTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUs
IERPTVdpbmRvdyYgZG9tV2luZG93KQogICAgIGF1dG8qIGZyYW1lID0gZG9tV2luZG93LmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVy
biB0b0pTKHN0YXRlLCBmcmFtZS0+d2luZG93UHJveHlDb250cm9sbGVyKCkpOworICAgIHJldHVy
biB0b0pTKHN0YXRlLCBmcmFtZS0+d2luZG93UHJveHkoKSk7CiB9CiAKIEpTRE9NV2luZG93KiB0
b0pTRE9NV2luZG93KEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHAKaW5kZXggOTM3
MmRjOTVjNmRiMWFjOWI0MDA1MGVjZWQzMjRiYWFjZjNiMzQwOC4uNTg5ODI3MzQ0YzE5NGE4YjBi
ZDA5MTk0NDNkYTJlNWVjMDZhZGVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dQcm94eS5jcHAKQEAgLTE0MCwxNCArMTQwLDE0IEBAIEFic3RyYWN0RE9N
V2luZG93KiBKU0RPTVdpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU09iamVjdCogdmFs
dWUpCiAgICAgcmV0dXJuIHdyYXBwZXIgPyAmd3JhcHBlci0+d3JhcHBlZCgpIDogbnVsbHB0cjsK
IH0KIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIFdpbmRvd1Byb3h5Q29udHJvbGxl
ciYgd2luZG93UHJveHlDb250cm9sbGVyKQorSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUs
IFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkKIHsKLSAgICByZXR1cm4gJndpbmRvd1Byb3h5Q29u
dHJvbGxlci53aW5kb3dQcm94eShjdXJyZW50V29ybGQoKnN0YXRlKSk7CisgICAgcmV0dXJuICZ3
aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKIH0KIAotSlNE
T01XaW5kb3dQcm94eSYgdG9KU0RPTVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Q29udHJvbGxlciYg
d2luZG93UHJveHlDb250cm9sbGVyLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorSlNET01XaW5k
b3dQcm94eSYgdG9KU0RPTVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICByZXR1cm4gd2luZG93UHJveHlDb250cm9sbGVy
LndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94
eSh3b3JsZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuaAppbmRleCAzZGRkMDViZmQ4ZTQyYWFlYzY1
ZDE0ODE4N2RkOTQ4MzhlMTIyZjQ2Li44MjljOTJlZTYxMjVjMTIxNmI4ODg2MzEyMzZiNmE5ZTli
ZTdlYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94
eS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJh
Y3RET01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHlDb250
cm9sbGVyOworY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTRE9NV2luZG93UHJveHkgZmlu
YWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU1Byb3h5
OwpAQCAtNjgsMTIgKzY4LDEyIEBAIHByaXZhdGU6CiB9OwogCiAvLyBKU0RPTVdpbmRvd1Byb3h5
IGlzIGEgbGl0dGxlIG9kZCBpbiB0aGF0IGl0J3Mgbm90IGEgdHJhZGl0aW9uYWwgd3JhcHBlciBh
bmQgaGFzIG5vIGJhY2sgcG9pbnRlci4KLS8vIEl0IGlzLCBob3dldmVyLCBzdHJvbmdseSBvd25l
ZCBieSBBYnN0cmFjdEZyYW1lIHZpYSBpdHMgV2luZG93UHJveHlDb250cm9sbGVyLCBzbyB3ZSBj
YW4gZ2V0IG9uZSBmcm9tIGEgV2luZG93UHJveHlDb250cm9sbGVyLgotSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQcm94eUNvbnRyb2xsZXImKTsKLWlubGluZSBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFdpbmRvd1Byb3h5Q29udHJvbGxl
ciogd2luZG93UHJveHlDb250cm9sbGVyKSB7IHJldHVybiB3aW5kb3dQcm94eUNvbnRyb2xsZXIg
PyB0b0pTKHN0YXRlLCAqd2luZG93UHJveHlDb250cm9sbGVyKSA6IEpTQzo6anNOdWxsKCk7IH0K
Ky8vIEl0IGlzLCBob3dldmVyLCBzdHJvbmdseSBvd25lZCBieSBBYnN0cmFjdEZyYW1lIHZpYSBp
dHMgV2luZG93UHJveHksIHNvIHdlIGNhbiBnZXQgb25lIGZyb20gYSBXaW5kb3dQcm94eS4KK0pT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgV2luZG93UHJveHkmKTsKK2lubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFdpbmRvd1Byb3h5KiB3aW5k
b3dQcm94eSkgeyByZXR1cm4gd2luZG93UHJveHkgPyB0b0pTKHN0YXRlLCAqd2luZG93UHJveHkp
IDogSlNDOjpqc051bGwoKTsgfQogCi1KU0RPTVdpbmRvd1Byb3h5JiB0b0pTRE9NV2luZG93UHJv
eHkoV2luZG93UHJveHlDb250cm9sbGVyJiwgRE9NV3JhcHBlcldvcmxkJik7Ci1pbmxpbmUgSlNE
T01XaW5kb3dQcm94eSogdG9KU0RPTVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Q29udHJvbGxlciog
d2luZG93UHJveHlDb250cm9sbGVyLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3
aW5kb3dQcm94eUNvbnRyb2xsZXIgPyAmdG9KU0RPTVdpbmRvd1Byb3h5KCp3aW5kb3dQcm94eUNv
bnRyb2xsZXIsIHdvcmxkKSA6IG51bGxwdHI7IH0KK0pTRE9NV2luZG93UHJveHkmIHRvSlNET01X
aW5kb3dQcm94eShXaW5kb3dQcm94eSYsIERPTVdyYXBwZXJXb3JsZCYpOworaW5saW5lIEpTRE9N
V2luZG93UHJveHkqIHRvSlNET01XaW5kb3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHks
IERPTVdyYXBwZXJXb3JsZCYgd29ybGQpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gJnRvSlNET01X
aW5kb3dQcm94eSgqd2luZG93UHJveHksIHdvcmxkKSA6IG51bGxwdHI7IH0KIAogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCA0YTdjOTg4YWRmMTM1MDQ1YmQ5M2I4MjE1ZDhj
NGViYWMzNmYyYTRhLi5lNGVhZGZkNzQ3ZGMyYWRlNTcwMjQwMTU4MzFlYWI1NDM2ZWMyMTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1l
RGF0YS5jcHAKQEAgLTUxLDEzICs1MSwxMyBAQCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OlNjcmlw
dENhY2hlZEZyYW1lRGF0YShGcmFtZSYgZnJhbWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
Y29tbW9uVk0oKSk7CiAKLSAgICBmb3IgKGF1dG8gd2luZG93UHJveHkgOiBmcmFtZS53aW5kb3dQ
cm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgeworICAgIGZvciAoYXV0
byB3aW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94aWVzQXNWZWN0
b3IoKSkgewogICAgICAgICBhdXRvKiB3aW5kb3cgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPih3aW5k
b3dQcm94eS0+d2luZG93KCkpOwogICAgICAgICBtX3dpbmRvd3MuYWRkKCZ3aW5kb3dQcm94eS0+
d29ybGQoKSwgU3Ryb25nPEpTRE9NV2luZG93Pih3aW5kb3ctPnZtKCksIHdpbmRvdykpOwogICAg
ICAgICB3aW5kb3ctPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgfQogCi0gICAgZnJh
bWUud2luZG93UHJveHlDb250cm9sbGVyKCkuYXR0YWNoRGVidWdnZXIobnVsbHB0cik7CisgICAg
ZnJhbWUud2luZG93UHJveHkoKS5hdHRhY2hEZWJ1Z2dlcihudWxscHRyKTsKIH0KIAogU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhOjp+U2NyaXB0Q2FjaGVkRnJhbWVEYXRhKCkKQEAgLTcxLDcgKzcxLDcg
QEAgdm9pZCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUoRnJhbWUmIGZyYW1lKQogCiAg
ICAgUGFnZSogcGFnZSA9IGZyYW1lLnBhZ2UoKTsKIAotICAgIGZvciAoYXV0byB3aW5kb3dQcm94
eSA6IGZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXNBc1ZlY3Rvcigp
KSB7CisgICAgZm9yIChhdXRvIHdpbmRvd1Byb3h5IDogZnJhbWUud2luZG93UHJveHkoKS5qc1dp
bmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CiAgICAgICAgIGF1dG8qIHdvcmxkID0gJndpbmRvd1By
b3h5LT53b3JsZCgpOwogCiAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0
KHdvcmxkKS5nZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKaW5kZXggZWY2NWM5ZGVmYzZjZWI2YjFjODcyMzAzNzVhZjFjZTRmY2M4NTc3
NS4uOTkxNjMzMzg3MGE3ZGQwN2NjODlmMjJhNjE4NGY5NjJjNGQyNjI1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBETwogICAgIC8vIGFuZCBmYWxzZSBmb3IgPHNj
cmlwdD5kb1NvbWV0aGluZygpPC9zY3JpcHQ+LiBDaGVjayBpZiBpdCBoYXMgdGhlCiAgICAgLy8g
ZXhwZWN0ZWQgdmFsdWUgaW4gYWxsIGNhc2VzLgogICAgIC8vIFNlZSBzbWFydCB3aW5kb3cub3Bl
biBwb2xpY3kgZm9yIHdoZXJlIHRoaXMgaXMgdXNlZC4KLSAgICBhdXRvJiBwcm94eSA9IHdpbmRv
d1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9
IHdpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgZXhlYyA9ICpw
cm94eS53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogICAgIGNvbnN0IFN0cmluZyogc2F2ZWRTb3Vy
Y2VVUkwgPSBtX3NvdXJjZVVSTDsKICAgICBtX3NvdXJjZVVSTCA9ICZzb3VyY2VVUkw7CkBAIC0x
NTAsNyArMTUwLDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5X
b3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXAKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh3b3JsZC52bSgpKTsKIAotICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJveHlDb250
cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJv
eHkoKS5qc1dpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpwcm94eS53aW5k
b3coKS0+Z2xvYmFsRXhlYygpOwogCiAgICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgbW9kdWxlTmFtZSwgSlNDOjpKU1NjcmlwdEZldGNo
UGFyYW1ldGVyczo6Y3JlYXRlKHN0YXRlLnZtKCksIFdURk1vdmUodG9wTGV2ZWxGZXRjaFBhcmFt
ZXRlcnMpKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZtb2R1
bGVTY3JpcHQgfSkpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlw
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBhdXRvJiBwcm94
eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRv
JiBwcm94eSA9IHdpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYg
c3RhdGUgPSAqcHJveHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAogICAgIGF1dG8mIHByb21p
c2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIHNvdXJjZUNvZGUu
anNTb3VyY2VDb2RlKCksIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUoc3RhdGUudm0oKSwg
eyAmbW9kdWxlU2NyaXB0IH0pKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBKU0M6OkpTVmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJs
ZU1vZHVsZQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCi0gICAgYXV0
byYgcHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3b3JsZCk7Cisg
ICAgYXV0byYgcHJveHkgPSB3aW5kb3dQcm94eSgpLmpzV2luZG93UHJveHkod29ybGQpOwogICAg
IGF1dG8mIHN0YXRlID0gKnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAKICAgICAvLyBG
SVhNRTogUHJldmVudGluZyBGcmFtZSBmcm9tIGJlaW5nIGRlc3Ryb3llZCBpcyBlc3NlbnRpYWxs
eSB1bm5lY2Vzc2FyeS4KQEAgLTIxMSw3ICsyMTEsNyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVj
bwogCiAgICAgY29uc3QgYXV0byYganNTb3VyY2VDb2RlID0gbW9kdWxlUmVjb3JkLnNvdXJjZUNv
ZGUoKTsKIAotICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93
UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJveHkoKS5qc1dpbmRvd1By
b3h5KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpwcm94eS53aW5kb3coKS0+Z2xvYmFsRXhl
YygpOwogICAgIFNldEZvclNjb3BlPGNvbnN0IFN0cmluZyo+IHNvdXJjZVVSTFNjb3BlKG1fc291
cmNlVVJMLCAmc291cmNlVVJMLnN0cmluZygpKTsKIApAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRp
YyBJZGVudGlmaWVyIGpzVmFsdWVUb01vZHVsZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVy
cyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0UmVmLCBKU0ludGVybmFsUHJvbWlz
ZSYgcHJvbWlzZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBhdXRvJiBwcm94eSA9
IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBw
cm94eSA9IHdpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3Rh
dGUgPSAqcHJveHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAogICAgIC8vIEl0IGlzIG5vdCBn
dWFyYW50ZWVkIHRoYXQgZWl0aGVyIGZ1bGZpbGxIYW5kbGVyIG9yIHJlamVjdEhhbmRsZXIgaXMg
ZXZlbnR1YWxseSBjYWxsZWQuCkBAIC0zMjAsOSArMzIwLDkgQEAgdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1
bGVTY3IKICAgICBwcm9taXNlLnRoZW4oJnN0YXRlLCAmZnVsZmlsbEhhbmRsZXIsICZyZWplY3RI
YW5kbGVyKTsKIH0KIAotV2luZG93UHJveHlDb250cm9sbGVyJiBTY3JpcHRDb250cm9sbGVyOjp3
aW5kb3dQcm94eUNvbnRyb2xsZXIoKQorV2luZG93UHJveHkmIFNjcmlwdENvbnRyb2xsZXI6Ondp
bmRvd1Byb3h5KCkKIHsKLSAgICByZXR1cm4gbV9mcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIo
KTsKKyAgICByZXR1cm4gbV9mcmFtZS53aW5kb3dQcm94eSgpOwogfQogCiBUZXh0UG9zaXRpb24g
U2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9zaXRpb24oKSBjb25zdApAQCAtMzQwLDcg
KzM0MCw3IEBAIFRleHRQb3NpdGlvbiBTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJQb3Np
dGlvbigpIGNvbnN0CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxlRXZhbCgpCiB7Ci0g
ICAgYXV0byogd2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5leGlzdGluZ1dp
bmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvKiB3aW5kb3dQcm94
eSA9IHdpbmRvd1Byb3h5KCkuZXhpc3RpbmdKU1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKICAgICBpZiAoIXdpbmRvd1Byb3h5KQogICAgICAgICByZXR1cm47CiAgICAgd2lu
ZG93UHJveHktPndpbmRvdygpLT5zZXRFdmFsRW5hYmxlZCh0cnVlKTsKQEAgLTM0OCw3ICszNDgs
NyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmVuYWJsZUV2YWwoKQogCiB2b2lkIFNjcmlwdENv
bnRyb2xsZXI6OmVuYWJsZVdlYkFzc2VtYmx5KCkKIHsKLSAgICBhdXRvKiB3aW5kb3dQcm94eSA9
IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2luZG93UHJveHkobWFpblRocmVhZE5v
cm1hbFdvcmxkKCkpOworICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gd2luZG93UHJveHkoKS5leGlz
dGluZ0pTV2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghd2lu
ZG93UHJveHkpCiAgICAgICAgIHJldHVybjsKICAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNl
dFdlYkFzc2VtYmx5RW5hYmxlZCh0cnVlKTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmVuYWJsZVdlYkFzc2VtYmx5KCkKIAogdm9pZCBTY3JpcHRDb250cm9sbGVy
OjpkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBhdXRvKiB3
aW5kb3dQcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2luZG93UHJveHko
bWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIGF1dG8qIHdpbmRvd1Byb3h5ID0gd2luZG93
UHJveHkoKS5leGlzdGluZ0pTV2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwog
ICAgIGlmICghd2luZG93UHJveHkpCiAgICAgICAgIHJldHVybjsKICAgICB3aW5kb3dQcm94eS0+
d2luZG93KCktPnNldEV2YWxFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwpAQCAtMzY0LDcg
KzM2NCw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZVdlYkFzc2Vt
Ymx5KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIGF1dG8qIHdpbmRvd1Byb3h5
ID0gd2luZG93UHJveHlDb250cm9sbGVyKCkuZXhpc3RpbmdXaW5kb3dQcm94eShtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSk7CisgICAgYXV0byogd2luZG93UHJveHkgPSB3aW5kb3dQcm94eSgpLmV4
aXN0aW5nSlNXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiAgICAgaWYgKCF3
aW5kb3dQcm94eSkKICAgICAgICAgcmV0dXJuOwogICAgIHdpbmRvd1Byb3h5LT53aW5kb3coKS0+
c2V0V2ViQXNzZW1ibHlFbmFibGVkKGZhbHNlLCBlcnJvck1lc3NhZ2UpOwpAQCAtMzgzLDcgKzM4
Myw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4o
RnJhbWUqIGZyYW1lKQogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnVwZGF0ZURvY3VtZW50KCkK
IHsKLSAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogd2luZG93UHJveHlDb250cm9sbGVyKCku
d2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5IDog
d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CiAgICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrKHdpbmRvd1Byb3h5LT53b3JsZCgpLnZtKCkpOwogICAgICAgICBqc0Nhc3Q8
SlNET01XaW5kb3cqPih3aW5kb3dQcm94eS0+d2luZG93KCkpLT51cGRhdGVEb2N1bWVudCgpOwog
ICAgIH0KQEAgLTQyNyw3ICs0MjcsNyBAQCBSZWY8QmluZGluZ3M6OlJvb3RPYmplY3Q+IFNjcmlw
dENvbnRyb2xsZXI6OmNyZWF0ZVJvb3RPYmplY3Qodm9pZCogbmF0aXZlSGFuZGxlKQogCiB2b2lk
IFNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBh
aXI8SlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+PiYgcmVzdWx0KQogewotICAgIGZv
ciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94
aWVzQXNWZWN0b3IoKSkgeworICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQcm94
eSgpLmpzV2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKICAgICAgICAgYXV0byogZXhlYyA9IHdp
bmRvd1Byb3h5LT53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogICAgICAgICBhdXRvKiBvcmlnaW4g
PSAmZG93bmNhc3Q8RE9NV2luZG93Pih3aW5kb3dQcm94eS0+d3JhcHBlZCgpKS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICByZXN1bHQuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KGV4ZWMsIG9yaWdpbikpOwpAQCAtNDQyLDcgKzQ0Miw3IEBAIE5QT2JqZWN0KiBTY3JpcHRDb250
cm9sbGVyOjp3aW5kb3dTY3JpcHROUE9iamVjdCgpCiAgICAgICAgIGlmIChjYW5FeGVjdXRlU2Ny
aXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKICAgICAgICAgICAgIC8vIEphdmFTY3Jp
cHQgaXMgZW5hYmxlZCwgc28gdGhlcmUgaXMgYSBKYXZhU2NyaXB0IHdpbmRvdyBvYmplY3QuCiAg
ICAgICAgICAgICAvLyBSZXR1cm4gYW4gTlBPYmplY3QgYm91bmQgdG8gdGhlIHdpbmRvdyBvYmpl
Y3QuCi0gICAgICAgICAgICBhdXRvKiB3aW5kb3cgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53
aW5kb3dQcm94eShwbHVnaW5Xb3JsZCgpKS53aW5kb3coKTsKKyAgICAgICAgICAgIGF1dG8qIHdp
bmRvdyA9IHdpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eShwbHVnaW5Xb3JsZCgpKS53aW5kb3co
KTsKICAgICAgICAgICAgIEFTU0VSVCh3aW5kb3cpOwogICAgICAgICAgICAgQmluZGluZ3M6OlJv
b3RPYmplY3QqIHJvb3QgPSBiaW5kaW5nUm9vdE9iamVjdCgpOwogICAgICAgICAgICAgbV93aW5k
b3dTY3JpcHROUE9iamVjdCA9IF9OUE5fQ3JlYXRlU2NyaXB0T2JqZWN0KDAsIHdpbmRvdywgcm9v
dCk7CkBAIC02MDMsNyArNjAzLDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZK
YXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9jdW0KICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBTdHJpbmcgc2NyaXB0UmVzdWx0OwotICAgIGlmICghcmVzdWx0
IHx8ICFyZXN1bHQuZ2V0U3RyaW5nKHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS53aW5kb3coKS0+Z2xvYmFsRXhlYygpLCBzY3JpcHRS
ZXN1bHQpKQorICAgIGlmICghcmVzdWx0IHx8ICFyZXN1bHQuZ2V0U3RyaW5nKHdpbmRvd1Byb3h5
KCkuanNXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkud2luZG93KCktPmdsb2Jh
bEV4ZWMoKSwgc2NyaXB0UmVzdWx0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGFsd2F5cyByZXBsYWNlIHRoZSBkb2N1bWVudCwgYnV0IGRvaW5nIHNv
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXgg
YWM5ZDJkMGExODJlZGZmMDZjZjIyZDA1MmFjMGJjOTRlNjE0NjUwMi4uMmJmYWQyYTU1MWI3ZDMw
YjY0N2MyYmYxMjg5ZGEzNDcwNmM3YmRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93UHJveHkuaCIKLSNpbmNsdWRl
ICJXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC04Myw3ICs4Myw3IEBAIHB1
YmxpYzoKIAogICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KHdp
bmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKSk7CisgICAg
ICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KHdpbmRvd1Byb3h5KCkuanNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGdldEFs
bFdvcmxkcyhWZWN0b3I8UmVmPERPTVdyYXBwZXJXb3JsZD4+Jik7CkBAIC0xNjUsNyArMTY1LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygp
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgV2luZG93UHJveHlDb250cm9sbGVyJiB3aW5kb3dQcm94
eUNvbnRyb2xsZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eSYgd2luZG93UHJv
eHkoKTsKIAogICAgIEZyYW1lJiBtX2ZyYW1lOwogICAgIGNvbnN0IFN0cmluZyogbV9zb3VyY2VV
Ukw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1h
Yy5tbQppbmRleCBiMjZlMTc3MGQ0MDQ5ZmQwNDI4NDdmMTVlYTU1ZjRjN2NmZjQyM2Q2Li4zZWM0
MTY1ODViYTAwODcxNmRlZGUyMjVlNTA5Nzc1NTM1OGRkZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTEwMyw3ICsxMDMs
NyBAQCBXZWJTY3JpcHRPYmplY3QgKlNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iamVj
dCgpCiAgICAgaWYgKCFtX3dpbmRvd1NjcmlwdE9iamVjdCkgewogICAgICAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrKGNvbW1vblZNKCkpOwogICAgICAgICBKU0M6OkJpbmRpbmdzOjpSb290T2Jq
ZWN0KiByb290ID0gYmluZGluZ1Jvb3RPYmplY3QoKTsKLSAgICAgICAgbV93aW5kb3dTY3JpcHRP
YmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpTT2JqZWN0OnRvUmVmKCZ3
aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eShwbHVnaW5Xb3JsZCgpKSkgb3JpZ2lu
Um9vdE9iamVjdDpyb290IHJvb3RPYmplY3Q6cm9vdF07CisgICAgICAgIG1fd2luZG93U2NyaXB0
T2JqZWN0ID0gW1dlYlNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3RGb3JKU09iamVjdDp0b1JlZigm
d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpKSBvcmlnaW5Sb290T2Jq
ZWN0OnJvb3Qgcm9vdE9iamVjdDpyb290XTsKICAgICB9CiAKICAgICByZXR1cm4gbV93aW5kb3dT
Y3JpcHRPYmplY3QuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAKaW5kZXggODY1YjFlMWVkMWY5OTA3OGQzNjE1ZjA2NDhhOTU5MGI1M2I4ZTI3Ny4uMzFi
NmU3ODQyMzRlZmY1YTRmMTVjOTU1NzQ3ZmIzNTllMzgzYjMyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBKU0M6OkV4ZWNT
dGF0ZSogbWFpbldvcmxkRXhlY1N0YXRlKEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZnJhbWUtPndpbmRvd1Byb3h5
Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS53aW5kb3co
KS0+Z2xvYmFsRXhlYygpOworICAgIHJldHVybiBmcmFtZS0+d2luZG93UHJveHkoKS5qc1dpbmRv
d1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwog
fQogCiBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlRnJvbU5vZGUoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dpbmRvd1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMDk5MjFiZTAzOWQ5MWQyYTU5NzVlYjViNmQ3ODNmZTU2MzU3ODc4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJv
eHkuY3BwCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAx
IEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBl
dGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCisKKyNp
bmNsdWRlICJDb21tb25WTS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiR0NDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50
LmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiUmVtb3RlRnJhbWUuaCIKKyNp
bmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAicnVudGltZV9yb290LmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIGNv
bGxlY3RHYXJiYWdlQWZ0ZXJXaW5kb3dQcm94eURlc3RydWN0aW9uKCkKK3sKKyAgICAvLyBNYWtl
IHN1cmUgdG8gR0MgRXh0cmEgU29vbih0bSkgZHVyaW5nIG1lbW9yeSBwcmVzc3VyZSBjb25kaXRp
b25zCisgICAgLy8gdG8gc29mdGVuIGhpZ2ggcGVha3Mgb2YgbWVtb3J5IHVzYWdlIGR1cmluZyBu
YXZpZ2F0aW9uLgorICAgIGlmIChNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlz
VW5kZXJNZW1vcnlQcmVzc3VyZSgpKSB7CisgICAgICAgIC8vIE5PVEU6IFdlIGRvIHRoZSBjb2xs
ZWN0aW9uIG9uIG5leHQgcnVubG9vcCB0byBlbnN1cmUgdGhhdCB0aGVyZSdzIG5vIHBvaW50ZXIK
KyAgICAgICAgLy8gICAgICAgdG8gdGhlIHdpbmRvdyBvYmplY3Qgb24gdGhlIHN0YWNrLgorICAg
ICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdhcmJhZ2VDb2xsZWN0T25OZXh0UnVuTG9v
cCgpOworICAgIH0gZWxzZQorICAgICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdhcmJh
Z2VDb2xsZWN0U29vbigpOworfQorCitXaW5kb3dQcm94eTo6V2luZG93UHJveHkoQWJzdHJhY3RG
cmFtZSYgZnJhbWUpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQoreworfQorCitXaW5kb3dQcm94eTo6
fldpbmRvd1Byb3h5KCkKK3sKKyAgICAvLyBJdCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2lu
ZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBvZiBnYXJiYWdlLgorICAgIGlmICghbV9qc1dp
bmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hp
ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIGl0ID0gbV9qc1dpbmRvd1Byb3hpZXMu
YmVnaW4oKTsKKyAgICAgICAgICAgIGl0LT52YWx1ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGll
bnQobnVsbHB0cik7CisgICAgICAgICAgICBkZXN0cm95SlNXaW5kb3dQcm94eSgqaXQtPmtleSk7
CisgICAgICAgIH0KKyAgICAgICAgY29sbGVjdEdhcmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1
Y3Rpb24oKTsKKyAgICB9Cit9CisKK3ZvaWQgV2luZG93UHJveHk6OmRlc3Ryb3lKU1dpbmRvd1By
b3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAgQVNTRVJUKG1fanNXaW5kb3dQcm94
aWVzLmNvbnRhaW5zKCZ3b3JsZCkpOworICAgIG1fanNXaW5kb3dQcm94aWVzLnJlbW92ZSgmd29y
bGQpOworICAgIHdvcmxkLmRpZERlc3Ryb3lXaW5kb3dQcm94eSh0aGlzKTsKK30KKworSlNET01X
aW5kb3dQcm94eSYgV2luZG93UHJveHk6OmNyZWF0ZUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQoIW1fanNXaW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3
b3JsZCkpOworICAgIEFTU0VSVChtX2ZyYW1lLndpbmRvdygpKTsKKworICAgIFZNJiB2bSA9IHdv
cmxkLnZtKCk7CisKKyAgICBTdHJvbmc8SlNET01XaW5kb3dQcm94eT4ganNXaW5kb3dQcm94eSh2
bSwgJkpTRE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKm1fZnJhbWUud2luZG93KCksIHdvcmxk
KSk7CisgICAgU3Ryb25nPEpTRE9NV2luZG93UHJveHk+IHdpbmRvd1Byb3h5Mih3aW5kb3dQcm94
eSk7CisgICAgbV9qc1dpbmRvd1Byb3hpZXMuYWRkKCZ3b3JsZCwgd2luZG93UHJveHkpOworICAg
IHdvcmxkLmRpZGNyZWF0ZUpTV2luZG93UHJveHkodGhpcyk7CisgICAgcmV0dXJuICp3aW5kb3dQ
cm94eS5nZXQoKTsKK30KKworVmVjdG9yPEpTQzo6U3Ryb25nPEpTRE9NV2luZG93UHJveHk+PiBX
aW5kb3dQcm94eTo6anNXaW5kb3dQcm94aWVzQXNWZWN0b3IoKSBjb25zdAoreworICAgIHJldHVy
biBjb3B5VG9WZWN0b3IobV9qc1dpbmRvd1Byb3hpZXMudmFsdWVzKCkpOworfQorCitKU0RPTVdp
bmRvd1Byb3h5JiBXaW5kb3dQcm94eTo6Y3JlYXRlSlNXaW5kb3dQcm94eVdpdGhJbml0aWFsaXpl
ZFNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHdvcmxkLnZtKCkpOworICAgIGF1dG8mIHdpbmRvd1Byb3h5ID0gY3JlYXRlSlNXaW5kb3dQcm94
eSh3b3JsZCk7CisgICAgaWYgKGlzPEZyYW1lPihtX2ZyYW1lKSkKKyAgICAgICAgZG93bmNhc3Q8
RnJhbWU+KG1fZnJhbWUpLnNjcmlwdCgpLmluaXRTY3JpcHRGb3JXaW5kb3dQcm94eSh3aW5kb3dQ
cm94eSk7CisgICAgcmV0dXJuIHdpbmRvd1Byb3h5OworfQorCit2b2lkIFdpbmRvd1Byb3h5Ojpj
bGVhckpTV2luZG93UHJveGllc05vdE1hdGNoaW5nRE9NV2luZG93KEFic3RyYWN0RE9NV2luZG93
KiBuZXdET01XaW5kb3csIGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hlKQoreworICAgIGlmIChtX2pz
V2luZG93UHJveGllcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTTG9ja0hv
bGRlciBsb2NrKGNvbW1vblZNKCkpOworCisgICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IGpz
V2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKKyAgICAgICAgaWYgKCZ3aW5kb3dQcm94eS0+d3Jh
cHBlZCgpID09IG5ld0RPTVdpbmRvdykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IC8vIENsZWFyIHRoZSBkZWJ1Z2dlciBhbmQgY29uc29sZSBmcm9tIHRoZSBjdXJyZW50IHdpbmRv
dyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4KKyAgICAgICAgd2luZG93UHJveHktPmF0
dGFjaERlYnVnZ2VyKG51bGxwdHIpOworICAgICAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNl
dENvbnNvbGVDbGllbnQobnVsbHB0cik7CisgICAgICAgIGlmIChhdXRvKiBqc0RPTVdpbmRvdyA9
IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oKndpbmRvd1Byb3h5LT52bSgpLCB3aW5k
b3dQcm94eS0+d2luZG93KCkpKQorICAgICAgICAgICAganNET01XaW5kb3ctPndpbGxSZW1vdmVG
cm9tV2luZG93UHJveHkoKTsKKyAgICB9CisKKyAgICAvLyBJdCdzIGxpa2VseSB0aGF0IHJlc2V0
dGluZyBvdXIgd2luZG93cyBjcmVhdGVkIGEgbG90IG9mIGdhcmJhZ2UsIHVubGVzcworICAgIC8v
IGl0IHdlbnQgaW4gYSBiYWNrL2ZvcndhcmQgY2FjaGUuCisgICAgaWYgKCFnb2luZ0ludG9QYWdl
Q2FjaGUpCisgICAgICAgIGNvbGxlY3RHYXJiYWdlQWZ0ZXJXaW5kb3dQcm94eURlc3RydWN0aW9u
KCk7Cit9CisKK3ZvaWQgV2luZG93UHJveHk6OnNldERPTVdpbmRvdyhBYnN0cmFjdERPTVdpbmRv
dyogbmV3RE9NV2luZG93KQoreworICAgIEFTU0VSVChuZXdET01XaW5kb3cpOworCisgICAgaWYg
KG1fanNXaW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNM
b2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CisKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5
IDoganNXaW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgeworICAgICAgICBpZiAoJndpbmRvd1Byb3h5
LT53cmFwcGVkKCkgPT0gbmV3RE9NV2luZG93KQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgd2luZG93UHJveHktPnNldFdpbmRvdygqbmV3RE9NV2luZG93KTsKKworICAgICAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gbnVsbHB0cjsKKyAgICAgICAgUGFn
ZSogcGFnZSA9IG51bGxwdHI7CisgICAgICAgIGlmIChpczxGcmFtZT4obV9mcmFtZSkpIHsKKyAg
ICAgICAgICAgIGF1dG8mIGZyYW1lID0gZG93bmNhc3Q8RnJhbWU+KG1fZnJhbWUpOworICAgICAg
ICAgICAgc2NyaXB0Q29udHJvbGxlciA9ICZmcmFtZS5zY3JpcHQoKTsKKyAgICAgICAgICAgIHBh
Z2UgPSBmcmFtZS5wYWdlKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBTY3JpcHRDb250cm9s
bGVyJ3MgbV9jYWNoZWFibGVCaW5kaW5nUm9vdE9iamVjdCBwZXJzaXN0cyBiZXR3ZWVuIHBhZ2Ug
bmF2aWdhdGlvbnMKKyAgICAgICAgLy8gc28gbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgbmV3IEpT
RE9NV2luZG93LgorICAgICAgICBpZiAoYXV0byogY2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3Qg
PSBzY3JpcHRDb250cm9sbGVyID8gc2NyaXB0Q29udHJvbGxlci0+ZXhpc3RpbmdDYWNoZWFibGVC
aW5kaW5nUm9vdE9iamVjdCgpIDogbnVsbHB0cikKKyAgICAgICAgICAgIGNhY2hlYWJsZUJpbmRp
bmdSb290T2JqZWN0LT51cGRhdGVHbG9iYWxPYmplY3Qod2luZG93UHJveHktPndpbmRvdygpKTsK
KworICAgICAgICB3aW5kb3dQcm94eS0+YXR0YWNoRGVidWdnZXIocGFnZSA/IHBhZ2UtPmRlYnVn
Z2VyKCkgOiBudWxscHRyKTsKKyAgICAgICAgaWYgKHBhZ2UpCisgICAgICAgICAgICB3aW5kb3dQ
cm94eS0+d2luZG93KCktPnNldFByb2ZpbGVHcm91cChwYWdlLT5ncm91cCgpLmlkZW50aWZpZXIo
KSk7CisgICAgICAgIHdpbmRvd1Byb3h5LT53aW5kb3coKS0+c2V0Q29uc29sZUNsaWVudChwYWdl
ID8gJnBhZ2UtPmNvbnNvbGUoKSA6IG51bGxwdHIpOworICAgIH0KK30KKwordm9pZCBXaW5kb3dQ
cm94eTo6YXR0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCit7CisgICAgZm9y
IChhdXRvJiB3aW5kb3dQcm94eSA6IG1fanNXaW5kb3dQcm94aWVzLnZhbHVlcygpKQorICAgICAg
ICB3aW5kb3dQcm94eS0+YXR0YWNoRGVidWdnZXIoZGVidWdnZXIpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5k
b3dQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NGUzNzI5YWQwNzBiODU0M2EyZTYzMTM1ZGFlOTU5NDgyZDE2M2QzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHkuaApAQCAt
MCwwICsxLDg2IEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTVdpbmRvd1Byb3h5LmgiCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU3Ryb25nLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNl
IEpTQyB7CitjbGFzcyBEZWJ1Z2dlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBYnN0cmFjdEZyYW1lOworCitjbGFzcyBXaW5kb3dQcm94eSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgUHJveHlNYXAgPSBIYXNoTWFwPFJlZlB0
cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj47CisKKyAg
ICBleHBsaWNpdCBXaW5kb3dQcm94eShBYnN0cmFjdEZyYW1lJik7CisgICAgfldpbmRvd1Byb3h5
KCk7CisKKyAgICB2b2lkIGRlc3Ryb3lKU1dpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYpOwor
CisgICAgUHJveHlNYXA6OlZhbHVlc0NvbnN0SXRlcmF0b3JSYW5nZSBqc1dpbmRvd1Byb3hpZXMo
KSBjb25zdCB7IHJldHVybiBtX2pzV2luZG93UHJveGllcy52YWx1ZXMoKTsgfQorICAgIFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5Pj4ganNXaW5kb3dQcm94aWVzQXNWZWN0b3Io
KSBjb25zdDsKKworICAgIFByb3h5TWFwIHJlbGVhc2VKU1dpbmRvd1Byb3hpZXMoKSB7IHJldHVy
biBzdGQ6OmV4Y2hhbmdlKG1fanNXaW5kb3dQcm94aWVzLCBQcm94eU1hcCgpKTsgfQorICAgIHZv
aWQgc2V0SlNXaW5kb3dQcm94aWVzKFByb3h5TWFwJiYgd2luZG93UHJveGllcykgeyBtX2pzV2lu
ZG93UHJveGllcyA9IFdURk1vdmUod2luZG93UHJveGllcyk7IH0KKworICAgIEpTRE9NV2luZG93
UHJveHkmIGpzV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKyAgICB7CisgICAg
ICAgIGF1dG8gaXQgPSBtX2pzV2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7CisgICAgICAgIGlm
IChpdCAhPSBtX2pzV2luZG93UHJveGllcy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiAqaXQt
PnZhbHVlLmdldCgpOworCisgICAgICAgIHJldHVybiBjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aElu
aXRpYWxpemVkU2NyaXB0KHdvcmxkKTsKKyAgICB9CisKKyAgICBKU0RPTVdpbmRvd1Byb3h5KiBl
eGlzdGluZ0pTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkgY29uc3QKKyAgICB7
CisgICAgICAgIGF1dG8gaXQgPSBtX2pzV2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7CisgICAg
ICAgIHJldHVybiAoaXQgIT0gbV9qc1dpbmRvd1Byb3hpZXMuZW5kKCkpID8gaXQtPnZhbHVlLmdl
dCgpIDogbnVsbHB0cjsKKyAgICB9CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCisgICAgeworICAgICAgICByZXR1cm4ganNXaW5k
b3dQcm94eSh3b3JsZCkud2luZG93KCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhckpTV2luZG93
UHJveGllc05vdE1hdGNoaW5nRE9NV2luZG93KEFic3RyYWN0RE9NV2luZG93KiwgYm9vbCBnb2lu
Z0ludG9QYWdlQ2FjaGUpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRET01XaW5kb3co
QWJzdHJhY3RET01XaW5kb3cqKTsKKworICAgIC8vIERlYnVnZ2VyIGNhbiBiZSBudWxscHRyIHRv
IGRldGFjaCBhbnkgZXhpc3RpbmcgRGVidWdnZXIuCisgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihK
U0M6OkRlYnVnZ2VyKik7IC8vIEF0dGFjaGVzL2RldGFjaGVzIGluIGFsbCB3b3JsZHMvd2luZG93
IHByb3hpZXMuCisKK3ByaXZhdGU6CisgICAgSlNET01XaW5kb3dQcm94eSYgY3JlYXRlSlNXaW5k
b3dQcm94eShET01XcmFwcGVyV29ybGQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBKU0RPTVdpbmRv
d1Byb3h5JiBjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBw
ZXJXb3JsZCYpOworCisgICAgQWJzdHJhY3RGcmFtZSYgbV9mcmFtZTsKKyAgICBQcm94eU1hcCBt
X2pzV2luZG93UHJveGllczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzJmZjI5ZWFjNmI2YWZiZjE1ODU4NTFmZTI4
YzQ5ZmU0ZGYxMTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykg
MjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwNi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
LSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXaW5kb3dQcm94eUNv
bnRyb2xsZXIuaCIKLQotI2luY2x1ZGUgIkNvbW1vblZNLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIK
LSNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAi
UGFnZUNvbnNvbGVDbGllbnQuaCIKLSNpbmNsdWRlICJQYWdlR3JvdXAuaCIKLSNpbmNsdWRlICJS
ZW1vdGVGcmFtZS5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJy
dW50aW1lX3Jvb3QuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KLSNpbmNs
dWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RhdGljIHZvaWQgY29sbGVjdEdhcmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24o
KQotewotICAgIC8vIE1ha2Ugc3VyZSB0byBHQyBFeHRyYSBTb29uKHRtKSBkdXJpbmcgbWVtb3J5
IHByZXNzdXJlIGNvbmRpdGlvbnMKLSAgICAvLyB0byBzb2Z0ZW4gaGlnaCBwZWFrcyBvZiBtZW1v
cnkgdXNhZ2UgZHVyaW5nIG5hdmlnYXRpb24uCi0gICAgaWYgKE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpIHsKLSAgICAgICAgLy8gTk9U
RTogV2UgZG8gdGhlIGNvbGxlY3Rpb24gb24gbmV4dCBydW5sb29wIHRvIGVuc3VyZSB0aGF0IHRo
ZXJlJ3Mgbm8gcG9pbnRlcgotICAgICAgICAvLyAgICAgICB0byB0aGUgd2luZG93IG9iamVjdCBv
biB0aGUgc3RhY2suCi0gICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2FyYmFnZUNv
bGxlY3RPbk5leHRSdW5Mb29wKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIEdDQ29udHJvbGxlcjo6
c2luZ2xldG9uKCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7Ci19Ci0KLVdpbmRvd1Byb3h5Q29udHJv
bGxlcjo6V2luZG93UHJveHlDb250cm9sbGVyKEFic3RyYWN0RnJhbWUmIGZyYW1lKQotICAgIDog
bV9mcmFtZShmcmFtZSkKLXsKLX0KLQotV2luZG93UHJveHlDb250cm9sbGVyOjp+V2luZG93UHJv
eHlDb250cm9sbGVyKCkKLXsKLSAgICAvLyBJdCdzIGxpa2VseSB0aGF0IGRlc3Ryb3lpbmcgd2lu
ZG93UHJveGllcyB3aWxsIGNyZWF0ZSBhIGxvdCBvZiBnYXJiYWdlLgotICAgIGlmICghbV93aW5k
b3dQcm94aWVzLmlzRW1wdHkoKSkgewotICAgICAgICB3aGlsZSAoIW1fd2luZG93UHJveGllcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGF1dG8gaXQgPSBtX3dpbmRvd1Byb3hpZXMuYmVnaW4o
KTsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVs
bHB0cik7Ci0gICAgICAgICAgICBkZXN0cm95V2luZG93UHJveHkoKml0LT5rZXkpOwotICAgICAg
ICB9Ci0gICAgICAgIGNvbGxlY3RHYXJiYWdlQWZ0ZXJXaW5kb3dQcm94eURlc3RydWN0aW9uKCk7
Ci0gICAgfQotfQotCi12b2lkIFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6ZGVzdHJveVdpbmRvd1By
b3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi17Ci0gICAgQVNTRVJUKG1fd2luZG93UHJveGll
cy5jb250YWlucygmd29ybGQpKTsKLSAgICBtX3dpbmRvd1Byb3hpZXMucmVtb3ZlKCZ3b3JsZCk7
Ci0gICAgd29ybGQuZGlkRGVzdHJveVdpbmRvd1Byb3h5KHRoaXMpOwotfQotCi1KU0RPTVdpbmRv
d1Byb3h5JiBXaW5kb3dQcm94eUNvbnRyb2xsZXI6OmNyZWF0ZVdpbmRvd1Byb3h5KERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCi17Ci0gICAgQVNTRVJUKCFtX3dpbmRvd1Byb3hpZXMuY29udGFpbnMo
JndvcmxkKSk7Ci0gICAgQVNTRVJUKG1fZnJhbWUud2luZG93KCkpOwotCi0gICAgVk0mIHZtID0g
d29ybGQudm0oKTsKLQotICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5PiB3aW5kb3dQcm94eSh2
bSwgJkpTRE9NV2luZG93UHJveHk6OmNyZWF0ZSh2bSwgKm1fZnJhbWUud2luZG93KCksIHdvcmxk
KSk7Ci0gICAgU3Ryb25nPEpTRE9NV2luZG93UHJveHk+IHdpbmRvd1Byb3h5Mih3aW5kb3dQcm94
eSk7Ci0gICAgbV93aW5kb3dQcm94aWVzLmFkZCgmd29ybGQsIHdpbmRvd1Byb3h5KTsKLSAgICB3
b3JsZC5kaWRDcmVhdGVXaW5kb3dQcm94eSh0aGlzKTsKLSAgICByZXR1cm4gKndpbmRvd1Byb3h5
LmdldCgpOwotfQotCi1WZWN0b3I8SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IFdpbmRv
d1Byb3h5Q29udHJvbGxlcjo6d2luZG93UHJveGllc0FzVmVjdG9yKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gY29weVRvVmVjdG9yKG1fd2luZG93UHJveGllcy52YWx1ZXMoKSk7Ci19Ci0KLUpTRE9N
V2luZG93UHJveHkmIFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93UHJveHlXaXRo
SW5pdGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLXsKLSAgICBKU0xvY2tI
b2xkZXIgbG9jayh3b3JsZC52bSgpKTsKLSAgICBhdXRvJiB3aW5kb3dQcm94eSA9IGNyZWF0ZVdp
bmRvd1Byb3h5KHdvcmxkKTsKLSAgICBpZiAoaXM8RnJhbWU+KG1fZnJhbWUpKQotICAgICAgICBk
b3duY2FzdDxGcmFtZT4obV9mcmFtZSkuc2NyaXB0KCkuaW5pdFNjcmlwdEZvcldpbmRvd1Byb3h5
KHdpbmRvd1Byb3h5KTsKLSAgICByZXR1cm4gd2luZG93UHJveHk7Ci19Ci0KLXZvaWQgV2luZG93
UHJveHlDb250cm9sbGVyOjpjbGVhcldpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhB
YnN0cmFjdERPTVdpbmRvdyogbmV3RE9NV2luZG93LCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSkK
LXsKLSAgICBpZiAobV93aW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0KLSAgICBmb3IgKGF1dG8mIHdp
bmRvd1Byb3h5IDogd2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKLSAgICAgICAgaWYgKCZ3aW5k
b3dQcm94eS0+d3JhcHBlZCgpID09IG5ld0RPTVdpbmRvdykKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIC8vIENsZWFyIHRoZSBkZWJ1Z2dlciBhbmQgY29uc29sZSBmcm9tIHRoZSBj
dXJyZW50IHdpbmRvdyBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IHdpbmRvdy4KLSAgICAgICAgd2lu
ZG93UHJveHktPmF0dGFjaERlYnVnZ2VyKG51bGxwdHIpOwotICAgICAgICB3aW5kb3dQcm94eS0+
d2luZG93KCktPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7Ci0gICAgICAgIGlmIChhdXRvKiBq
c0RPTVdpbmRvdyA9IGpzRHluYW1pY0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oKndpbmRvd1Byb3h5
LT52bSgpLCB3aW5kb3dQcm94eS0+d2luZG93KCkpKQotICAgICAgICAgICAganNET01XaW5kb3ct
PndpbGxSZW1vdmVGcm9tV2luZG93UHJveHkoKTsKLSAgICB9Ci0KLSAgICAvLyBJdCdzIGxpa2Vs
eSB0aGF0IHJlc2V0dGluZyBvdXIgd2luZG93cyBjcmVhdGVkIGEgbG90IG9mIGdhcmJhZ2UsIHVu
bGVzcwotICAgIC8vIGl0IHdlbnQgaW4gYSBiYWNrL2ZvcndhcmQgY2FjaGUuCi0gICAgaWYgKCFn
b2luZ0ludG9QYWdlQ2FjaGUpCi0gICAgICAgIGNvbGxlY3RHYXJiYWdlQWZ0ZXJXaW5kb3dQcm94
eURlc3RydWN0aW9uKCk7Ci19Ci0KLXZvaWQgV2luZG93UHJveHlDb250cm9sbGVyOjpzZXRET01X
aW5kb3dGb3JXaW5kb3dQcm94eShBYnN0cmFjdERPTVdpbmRvdyogbmV3RE9NV2luZG93KQotewot
ICAgIEFTU0VSVChuZXdET01XaW5kb3cpOwotCi0gICAgaWYgKG1fd2luZG93UHJveGllcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrKGNvbW1vblZN
KCkpOwotCi0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3hpZXNBc1ZlY3Rv
cigpKSB7Ci0gICAgICAgIGlmICgmd2luZG93UHJveHktPndyYXBwZWQoKSA9PSBuZXdET01XaW5k
b3cpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB3aW5kb3dQcm94eS0+c2V0V2lu
ZG93KCpuZXdET01XaW5kb3cpOwotCi0gICAgICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENv
bnRyb2xsZXIgPSBudWxscHRyOwotICAgICAgICBQYWdlKiBwYWdlID0gbnVsbHB0cjsKLSAgICAg
ICAgaWYgKGlzPEZyYW1lPihtX2ZyYW1lKSkgewotICAgICAgICAgICAgYXV0byYgZnJhbWUgPSBk
b3duY2FzdDxGcmFtZT4obV9mcmFtZSk7Ci0gICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyID0g
JmZyYW1lLnNjcmlwdCgpOwotICAgICAgICAgICAgcGFnZSA9IGZyYW1lLnBhZ2UoKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIFNjcmlwdENvbnRyb2xsZXIncyBtX2NhY2hlYWJsZUJpbmRpbmdS
b290T2JqZWN0IHBlcnNpc3RzIGJldHdlZW4gcGFnZSBuYXZpZ2F0aW9ucwotICAgICAgICAvLyBz
byBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBuZXcgSlNET01XaW5kb3cuCi0gICAgICAgIGlmIChh
dXRvKiBjYWNoZWFibGVCaW5kaW5nUm9vdE9iamVjdCA9IHNjcmlwdENvbnRyb2xsZXIgPyBzY3Jp
cHRDb250cm9sbGVyLT5leGlzdGluZ0NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0KCkgOiBudWxs
cHRyKQotICAgICAgICAgICAgY2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QtPnVwZGF0ZUdsb2Jh
bE9iamVjdCh3aW5kb3dQcm94eS0+d2luZG93KCkpOwotCi0gICAgICAgIHdpbmRvd1Byb3h5LT5h
dHRhY2hEZWJ1Z2dlcihwYWdlID8gcGFnZS0+ZGVidWdnZXIoKSA6IG51bGxwdHIpOwotICAgICAg
ICBpZiAocGFnZSkKLSAgICAgICAgICAgIHdpbmRvd1Byb3h5LT53aW5kb3coKS0+c2V0UHJvZmls
ZUdyb3VwKHBhZ2UtPmdyb3VwKCkuaWRlbnRpZmllcigpKTsKLSAgICAgICAgd2luZG93UHJveHkt
PndpbmRvdygpLT5zZXRDb25zb2xlQ2xpZW50KHBhZ2UgPyAmcGFnZS0+Y29uc29sZSgpIDogbnVs
bHB0cik7Ci0gICAgfQotfQotCi12b2lkIFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6YXR0YWNoRGVi
dWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCi17Ci0gICAgZm9yIChhdXRvJiB3aW5kb3dQ
cm94eSA6IG1fd2luZG93UHJveGllcy52YWx1ZXMoKSkKLSAgICAgICAgd2luZG93UHJveHktPmF0
dGFjaERlYnVnZ2VyKGRlYnVnZ2VyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eUNvbnRyb2xsZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA2ZjQ4MTM4OGY0Y2Q0YWE5MTRmZTNiMTE3
ZGI5YTUxZDg4YzA3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5kb3dQcm94eUNvbnRyb2xsZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NV2luZG93UHJveHkuaCIK
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIERlYnVnZ2VyOwotfQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEFic3RyYWN0RnJhbWU7Ci0KLWNsYXNzIFdpbmRvd1Byb3h5Q29u
dHJvbGxlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgdXNp
bmcgUHJveHlNYXAgPSBIYXNoTWFwPFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBKU0M6OlN0cm9u
ZzxKU0RPTVdpbmRvd1Byb3h5Pj47Ci0KLSAgICBleHBsaWNpdCBXaW5kb3dQcm94eUNvbnRyb2xs
ZXIoQWJzdHJhY3RGcmFtZSYpOwotICAgIH5XaW5kb3dQcm94eUNvbnRyb2xsZXIoKTsKLQotICAg
IHZvaWQgZGVzdHJveVdpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYpOwotCi0gICAgUHJveHlN
YXA6OlZhbHVlc0NvbnN0SXRlcmF0b3JSYW5nZSB3aW5kb3dQcm94aWVzKCkgY29uc3QgeyByZXR1
cm4gbV93aW5kb3dQcm94aWVzLnZhbHVlcygpOyB9Ci0gICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
RE9NV2luZG93UHJveHk+PiB3aW5kb3dQcm94aWVzQXNWZWN0b3IoKSBjb25zdDsKLQotICAgIFBy
b3h5TWFwIHJlbGVhc2VXaW5kb3dQcm94aWVzKCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX3dp
bmRvd1Byb3hpZXMsIFByb3h5TWFwKCkpOyB9Ci0gICAgdm9pZCBzZXRXaW5kb3dQcm94aWVzKFBy
b3h5TWFwJiYgd2luZG93UHJveGllcykgeyBtX3dpbmRvd1Byb3hpZXMgPSBXVEZNb3ZlKHdpbmRv
d1Byb3hpZXMpOyB9Ci0KLSAgICBKU0RPTVdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eShET01XcmFw
cGVyV29ybGQmIHdvcmxkKQotICAgIHsKLSAgICAgICAgYXV0byBpdCA9IG1fd2luZG93UHJveGll
cy5maW5kKCZ3b3JsZCk7Ci0gICAgICAgIGlmIChpdCAhPSBtX3dpbmRvd1Byb3hpZXMuZW5kKCkp
Ci0gICAgICAgICAgICByZXR1cm4gKml0LT52YWx1ZS5nZXQoKTsKLQotICAgICAgICByZXR1cm4g
Y3JlYXRlV2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQod29ybGQpOwotICAgIH0KLQot
ICAgIEpTRE9NV2luZG93UHJveHkqIGV4aXN0aW5nV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGF1dG8gaXQgPSBtX3dpbmRvd1Byb3hpZXMu
ZmluZCgmd29ybGQpOwotICAgICAgICByZXR1cm4gKGl0ICE9IG1fd2luZG93UHJveGllcy5lbmQo
KSkgPyBpdC0+dmFsdWUuZ2V0KCkgOiBudWxscHRyOwotICAgIH0KLQotICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB3aW5kb3dQcm94eSh3b3JsZCkud2luZG93KCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBjbGVhcldpbmRvd1Byb3hpZXNOb3RNYXRjaGluZ0RPTVdpbmRvdyhBYnN0cmFjdERPTVdpbmRv
dyosIGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hlKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RE9NV2luZG93Rm9yV2luZG93UHJveHkoQWJzdHJhY3RET01XaW5kb3cqKTsKLQotICAgIC8v
IERlYnVnZ2VyIGNhbiBiZSBudWxscHRyIHRvIGRldGFjaCBhbnkgZXhpc3RpbmcgRGVidWdnZXIu
Ci0gICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7IC8vIEF0dGFjaGVzL2Rl
dGFjaGVzIGluIGFsbCB3b3JsZHMvd2luZG93IHByb3hpZXMuCi0KLXByaXZhdGU6Ci0gICAgSlNE
T01XaW5kb3dQcm94eSYgY3JlYXRlV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgSlNET01XaW5kb3dQcm94eSYgY3JlYXRlV2luZG93UHJveHlXaXRoSW5p
dGlhbGl6ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJik7Ci0KLSAgICBBYnN0cmFjdEZyYW1lJiBt
X2ZyYW1lOwotICAgIFByb3h5TWFwIG1fd2luZG93UHJveGllczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGE0NTRk
ZDk2Yjk0YTU1YzAzMDljNGU2NDM2NzIzZWFiZjQ5NTNkNjUuLjg3OTlkYTZlMDBlMzFmNWNkZDBm
NjM1MGQ4MTZkODY4MTUxOWQ1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKERvY3VtZW50KiBu
ZXdEb2N1bWVudCwgYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMsIGJvb2wKICAgICBpZiAoY2xl
YXJXaW5kb3dQcm9wZXJ0aWVzKSB7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZnJhbWVXaW5kb3dEaXNjYXJkZWQobV9mcmFtZSwgbV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5k
b3coKSk7CiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnJlc2V0VW5s
ZXNzU3VzcGVuZGVkRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCk7Ci0gICAgICAgIG1fZnJhbWUud2lu
ZG93UHJveHlDb250cm9sbGVyKCkuY2xlYXJXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5k
b3cobmV3RG9jdW1lbnQtPmRvbVdpbmRvdygpLCBtX2ZyYW1lLmRvY3VtZW50KCktPnBhZ2VDYWNo
ZVN0YXRlKCkgPT0gRG9jdW1lbnQ6OkFib3V0VG9FbnRlclBhZ2VDYWNoZSk7CisgICAgICAgIG1f
ZnJhbWUud2luZG93UHJveHkoKS5jbGVhckpTV2luZG93UHJveGllc05vdE1hdGNoaW5nRE9NV2lu
ZG93KG5ld0RvY3VtZW50LT5kb21XaW5kb3coKSwgbV9mcmFtZS5kb2N1bWVudCgpLT5wYWdlQ2Fj
aGVTdGF0ZSgpID09IERvY3VtZW50OjpBYm91dFRvRW50ZXJQYWdlQ2FjaGUpOwogCiAgICAgICAg
IGlmIChzaG91bGRDbGVhcldpbmRvd05hbWUobV9mcmFtZSwgKm5ld0RvY3VtZW50KSkKICAgICAg
ICAgICAgIG1fZnJhbWUudHJlZSgpLnNldE5hbWUobnVsbEF0b20oKSk7CkBAIC02NDgsNyArNjQ4
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29s
IGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbAogICAgIHN1YmZyYW1lTG9hZGVyKCkuY2xlYXIo
KTsKIAogICAgIGlmIChjbGVhcldpbmRvd1Byb3BlcnRpZXMpCi0gICAgICAgIG1fZnJhbWUud2lu
ZG93UHJveHlDb250cm9sbGVyKCkuc2V0RE9NV2luZG93Rm9yV2luZG93UHJveHkobmV3RG9jdW1l
bnQtPmRvbVdpbmRvdygpKTsKKyAgICAgICAgbV9mcmFtZS53aW5kb3dQcm94eSgpLnNldERPTVdp
bmRvdyhuZXdEb2N1bWVudC0+ZG9tV2luZG93KCkpOwogCiAgICAgaWYgKGNsZWFyU2NyaXB0T2Jq
ZWN0cykKICAgICAgICAgbV9mcmFtZS5zY3JpcHQoKS5jbGVhclNjcmlwdE9iamVjdHMoKTsKQEAg
LTM2NDUsNyArMzY0NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RzSW5BbGxXb3JsZHMoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENs
ZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAgIGlm
ICghbV9mcmFtZS5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNj
cmlwdCkgfHwgIW1fZnJhbWUud2luZG93UHJveHlDb250cm9sbGVyKCkuZXhpc3RpbmdXaW5kb3dQ
cm94eSh3b3JsZCkpCisgICAgaWYgKCFtX2ZyYW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRz
KE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCAhbV9mcmFtZS53aW5kb3dQcm94eSgpLmV4aXN0
aW5nSlNXaW5kb3dQcm94eSh3b3JsZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50
LmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKHdvcmxkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Fic3RyYWN0RnJhbWUuY3BwCmluZGV4IDA3ZGI1MDY4NTUxMTEyZjE0OWVjYTcxNzgwMWIz
MTk4ODFlZTcwNzkuLjI2NjdmMzEwMjM3MGRmNTRiZTBjMDU5MzkyNGVmODM2YmRjNWQ5NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWJzdHJhY3RGcmFtZS5oIgogCi0jaW5jbHVk
ZSAiV2luZG93UHJveHlDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2luZG93UHJveHkuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBBYnN0cmFjdEZyYW1lOjpBYnN0cmFjdEZyYW1lKCkKLSAg
ICA6IG1fd2luZG93UHJveHlDb250cm9sbGVyKG1ha2VVbmlxdWVSZWY8V2luZG93UHJveHlDb250
cm9sbGVyPigqdGhpcykpCisgICAgOiBtX2pzV2luZG93UHJveHkobWFrZVVuaXF1ZVJlZjxXaW5k
b3dQcm94eT4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Fic3RyYWN0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oCmlu
ZGV4IDMzNGM5ZWNjYTQ1ODZkZjhiZDZmMmI1YTAzNGNjOTVlNWI4OGY2MTMuLmM2NWIzYWM0ODdi
ZjM1M2MwN2M1NjlhNWFiYmVmZGViOWM4ZTI0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWJzdHJhY3RGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RG
cmFtZS5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFi
c3RyYWN0RE9NV2luZG93OwotY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVyOworY2xhc3MgV2lu
ZG93UHJveHk7CiAKIC8vIEZJWE1FOiBSZW5hbWUgRnJhbWUgdG8gTG9jYWxGcmFtZSBhbmQgQWJz
dHJhY3RGcmFtZSB0byBGcmFtZS4KIGNsYXNzIEFic3RyYWN0RnJhbWUgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8QWJzdHJhY3RGcmFtZT4gewpAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzTG9jYWxGcmFtZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0ID0gMDsKIAotICAgIFdpbmRvd1Byb3h5Q29udHJv
bGxlciYgd2luZG93UHJveHlDb250cm9sbGVyKCkgeyByZXR1cm4gbV93aW5kb3dQcm94eUNvbnRy
b2xsZXI7IH0KLSAgICBjb25zdCBXaW5kb3dQcm94eUNvbnRyb2xsZXImIHdpbmRvd1Byb3h5Q29u
dHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93UHJveHlDb250cm9sbGVyOyB9CisgICAg
V2luZG93UHJveHkmIHdpbmRvd1Byb3h5KCkgeyByZXR1cm4gbV93aW5kb3dQcm94eTsgfQorICAg
IGNvbnN0IFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93
UHJveHk7IH0KIAogICAgIEFic3RyYWN0RE9NV2luZG93KiB3aW5kb3coKSBjb25zdCB7IHJldHVy
biB2aXJ0dWFsV2luZG93KCk7IH0KIApAQCAtNTIsNyArNTIsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2
YXRlOgogICAgIHZpcnR1YWwgQWJzdHJhY3RET01XaW5kb3cqIHZpcnR1YWxXaW5kb3coKSBjb25z
dCA9IDA7CiAKLSAgICBVbmlxdWVSZWY8V2luZG93UHJveHlDb250cm9sbGVyPiBtX3dpbmRvd1By
b3h5Q29udHJvbGxlcjsKKyAgICBVbmlxdWVSZWY8V2luZG93UHJveHk+IG1fd2luZG93UHJveHk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzNjI0
ODc2OTQ2YzJjMjBlN2RiOGY5OTA5MDI3ZDViYmYyNGYyNGFjLi5iMzQ1OGY1ZGJlN2FjOWZiNzIy
NWM2NWQ0MDdmZGNmZWZmYzA5MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTEyNTcsNyArMTI1
Nyw3IEBAIHZvaWQgUGFnZTo6c2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiAg
ICAgbV9kZWJ1Z2dlciA9IGRlYnVnZ2VyOwogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9t
YWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0
KCkpCi0gICAgICAgIGZyYW1lLT53aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5hdHRhY2hEZWJ1Z2dl
cihtX2RlYnVnZ2VyKTsKKyAgICAgICAgZnJhbWUtPndpbmRvd1Byb3h5KCkuYXR0YWNoRGVidWdn
ZXIobV9kZWJ1Z2dlcik7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2UqIFBhZ2U6OnNlc3Npb25TdG9y
YWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZURPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRv
dy5jcHAKaW5kZXggZDViNDZmM2UyZjVkNmM5ZGEzMTZmMTljZWJlYzk1MmYwYmNmMzliZi4uODI1
MzQ4ZDM1NDg5YWI1Y2EzZmNlZjYxYzgzNWQ0MDcxZmZkMWYyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVtb3RlRE9NV2luZG93LmNwcApAQCAtNDUsMTEgKzQ1LDExIEBAIFJlbW90ZURPTVdpbmRv
dzo6flJlbW90ZURPTVdpbmRvdygpCiAgICAgICAgIG1fZnJhbWUtPnNldFdpbmRvdyhudWxscHRy
KTsKIH0KIAotV2luZG93UHJveHlDb250cm9sbGVyKiBSZW1vdGVET01XaW5kb3c6OnNlbGYoKSBj
b25zdAorV2luZG93UHJveHkqIFJlbW90ZURPTVdpbmRvdzo6c2VsZigpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJm1fZnJh
bWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpOworICAgIHJldHVybiAmbV9mcmFtZS0+d2luZG93
UHJveHkoKTsKIH0KIAogTG9jYXRpb24qIFJlbW90ZURPTVdpbmRvdzo6bG9jYXRpb24oKSBjb25z
dApAQCAtODUsMTYgKzg1LDE2IEBAIHVuc2lnbmVkIFJlbW90ZURPTVdpbmRvdzo6bGVuZ3RoKCkg
Y29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotV2luZG93UHJveHlDb250cm9sbGVyKiBSZW1vdGVE
T01XaW5kb3c6OnRvcCgpIGNvbnN0CitXaW5kb3dQcm94eSogUmVtb3RlRE9NV2luZG93Ojp0b3Ao
KSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KLSAgICByZXR1cm4gJm1fZnJhbWUtPndp
bmRvd1Byb3h5Q29udHJvbGxlcigpOworICAgIHJldHVybiAmbV9mcmFtZS0+d2luZG93UHJveHko
KTsKIH0KIAotV2luZG93UHJveHlDb250cm9sbGVyKiBSZW1vdGVET01XaW5kb3c6Om9wZW5lcigp
IGNvbnN0CitXaW5kb3dQcm94eSogUmVtb3RlRE9NV2luZG93OjpvcGVuZXIoKSBjb25zdAogewog
ICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDMsMTYgKzEw
MywxNiBAQCBXaW5kb3dQcm94eUNvbnRyb2xsZXIqIFJlbW90ZURPTVdpbmRvdzo6b3BlbmVyKCkg
Y29uc3QKICAgICBpZiAoIW9wZW5lckZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiAmb3BlbmVyRnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpOworICAgIHJl
dHVybiAmb3BlbmVyRnJhbWUtPndpbmRvd1Byb3h5KCk7CiB9CiAKLVdpbmRvd1Byb3h5Q29udHJv
bGxlciogUmVtb3RlRE9NV2luZG93OjpwYXJlbnQoKSBjb25zdAorV2luZG93UHJveHkqIFJlbW90
ZURPTVdpbmRvdzo6cGFyZW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudGVkIHRoaXMuCi0gICAg
cmV0dXJuICZtX2ZyYW1lLT53aW5kb3dQcm94eUNvbnRyb2xsZXIoKTsKKyAgICByZXR1cm4gJm1f
ZnJhbWUtPndpbmRvd1Byb3h5KCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFJlbW90ZURPTVdp
bmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBET01XaW5kb3cmIGluY3VtYmVudFdp
bmRvdywgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdGFyZ2V0T3JpZ2luLCBW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1v
dGVET01XaW5kb3cuaAppbmRleCAzYTcxNTExYmVjZGMxYjdjOGU1YWE4NjhmN2EzM2Q3YTA0ZDM2
ODg5Li5iZDBjMDUyYmE0NzExMDFhNDVlZDUyZWM5Y2E5YWYzYzk2MTBjMDc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKQEAgLTU1LDE2ICs1NSwxNiBAQCBwdWJsaWM6CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIERPTSBBUEkgZXhwb3NlZCBjcm9z
cy1vcmlnaW4uCi0gICAgV2luZG93UHJveHlDb250cm9sbGVyKiBzZWxmKCkgY29uc3Q7CisgICAg
V2luZG93UHJveHkqIHNlbGYoKSBjb25zdDsKICAgICBMb2NhdGlvbiogbG9jYXRpb24oKSBjb25z
dDsKICAgICB2b2lkIGNsb3NlKERvY3VtZW50Jik7CiAgICAgYm9vbCBjbG9zZWQoKSBjb25zdDsK
ICAgICB2b2lkIGZvY3VzKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93KTsKICAgICB2b2lkIGJs
dXIoKTsKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBXaW5kb3dQcm94eUNvbnRy
b2xsZXIqIHRvcCgpIGNvbnN0OwotICAgIFdpbmRvd1Byb3h5Q29udHJvbGxlciogb3BlbmVyKCkg
Y29uc3Q7Ci0gICAgV2luZG93UHJveHlDb250cm9sbGVyKiBwYXJlbnQoKSBjb25zdDsKKyAgICBX
aW5kb3dQcm94eSogdG9wKCkgY29uc3Q7CisgICAgV2luZG93UHJveHkqIG9wZW5lcigpIGNvbnN0
OworICAgIFdpbmRvd1Byb3h5KiBwYXJlbnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93
LCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB0YXJnZXRPcmlnaW4sIFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDBlZDY2MjRj
MWM4OTA0NTNjM2Y1NmNhOWQwYTEzYjMxZDhjYWI5NTAuLmE3ZmNhY2VkYWExMTY3MDdjY2RmODM4
YzBhODJjYjFhYTliNDk5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCBOUE9iamVjdCogUGx1Z2lu
Vmlldzo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVj
dChwbHVnaW5Xb3JsZCgpLnZtKCksIGZyYW1lKCktPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndp
bmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpLndpbmRvdygpKTsKKyAgICByZXR1cm4gbV9ucFJ1bnRp
bWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdChwbHVnaW5Xb3JsZCgpLnZtKCksIGZyYW1l
KCktPndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eShwbHVnaW5Xb3JsZCgpKS53aW5kb3coKSk7
CiB9CiAKIE5QT2JqZWN0KiBQbHVnaW5WaWV3OjpwbHVnaW5FbGVtZW50TlBPYmplY3QoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5ZTkxYzNi
OGU1MjMzOGI2NDkyY2Q2NjljMjExZjEyNWJhZjY0Y2IxLi4wMGJjMTdkZGZmNTg2ZjMxOTk0YzVi
ZWEyNjk0YWNiZTVmMzhmOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNTg4OCw5ICs1ODg4LDkgQEAgdm9pZCBXZWJQYWdlOjpmcmFtZUJl
Y2FtZVJlbW90ZSh1aW50NjRfdCBmcmFtZUlELCBHbG9iYWxGcmFtZUlkZW50aWZpZXImJiByZW1v
dGUKIAogICAgIHJlbW90ZUZyYW1lLT5zZXRPcGVuZXIoZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2Fk
ZXIoKS5vcGVuZXIoKSk7CiAKLSAgICBhdXRvIHdpbmRvd1Byb3hpZXMgPSBmcmFtZS0+Y29yZUZy
YW1lKCktPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLnJlbGVhc2VXaW5kb3dQcm94aWVzKCk7Ci0g
ICAgcmVtb3RlRnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLnNldFdpbmRvd1Byb3hpZXMo
V1RGTW92ZSh3aW5kb3dQcm94aWVzKSk7Ci0gICAgcmVtb3RlRnJhbWUtPndpbmRvd1Byb3h5Q29u
dHJvbGxlcigpLnNldERPTVdpbmRvd0ZvcldpbmRvd1Byb3h5KHJlbW90ZVdpbmRvdy5wdHIoKSk7
CisgICAgYXV0byBqc1dpbmRvd1Byb3hpZXMgPSBmcmFtZS0+Y29yZUZyYW1lKCktPndpbmRvd1By
b3h5KCkucmVsZWFzZUpTV2luZG93UHJveGllcygpOworICAgIHJlbW90ZUZyYW1lLT53aW5kb3dQ
cm94eSgpLnNldEpTV2luZG93UHJveGllcyhXVEZNb3ZlKGpzV2luZG93UHJveGllcykpOworICAg
IHJlbW90ZUZyYW1lLT53aW5kb3dQcm94eSgpLnNldERPTVdpbmRvdyhyZW1vdGVXaW5kb3cucHRy
KCkpOwogCiAgICAgYXV0byogY29yZUZyYW1lID0gZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGNv
cmVGcmFtZS0+c2V0VmlldyhudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbQppbmRleCBiMzBlZDIyNDVlMTU3MzQ2NDdiM2U0MjY1NDkwZTE1ZDA5ZjQwYTFk
Li5iYjg5Y2JiOGI5NTlkNDE5ZWVmZWQ4NzM0OGRhZDI4OGZkMThhNDUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC04MzksNyArODM5LDcgQEAgYm9vbCBO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2JqZWN0KHVpbnQzMl90JiBv
YmplY3RJRCkKICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RB
Ym91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIG9iamVjdElEID0gMDsKICAgICBlbHNlCi0g
ICAgICAgIG9iamVjdElEID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmplY3QocGx1Z2luV29ybGQo
KS52bSgpLCBmcmFtZS0+d2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkocGx1Z2lu
V29ybGQoKSkud2luZG93KCkpOworICAgICAgICBvYmplY3RJRCA9IG1fbG9jYWxPYmplY3RzLmlk
Rm9yT2JqZWN0KHBsdWdpbldvcmxkKCkudm0oKSwgZnJhbWUtPndpbmRvd1Byb3h5KCkuanNXaW5k
b3dQcm94eShwbHVnaW5Xb3JsZCgpKS53aW5kb3coKSk7CiAgICAgICAgIAogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5k
ZXggYjZiNzk1NzkyZGZkYjc1NDRmOGY4ZTY3M2Y0Y2I3ZWIxNjc2MTcwNS4uMDMzODUxYzYyODRk
OWNiYThiYjk3ZTUwNGVmNzc0NDA1MmY4NDJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0zNjAsMTUgKzM2MCwxNSBAQCArICh2b2lkKV9jcmVh
dGVNYWluRnJhbWVXaXRoU2ltcGxlSFRNTERvY3VtZW50V2l0aFBhZ2U6KFBhZ2UqKXBhZ2UgZnJh
bWVWaWV3OihXZQogCiAtICh2b2lkKV9hdHRhY2hTY3JpcHREZWJ1Z2dlcgogewotICAgIGF1dG8m
IHdpbmRvd1Byb3h5Q29udHJvbGxlciA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPndpbmRvd1Byb3h5
Q29udHJvbGxlcigpOworICAgIGF1dG8mIHdpbmRvd1Byb3h5ID0gX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+d2luZG93UHJveHkoKTsKIAogICAgIC8vIENhbGxpbmcgU2NyaXB0Q29udHJvbGxlcjo6Z2xv
YmFsT2JqZWN0KCkgd291bGQgY3JlYXRlIGEgd2luZG93IHByb3h5LCBhbmQgZGlzcGF0Y2ggY29y
cmVzcG9uZGluZyBjYWxsYmFja3MsIHdoaWNoIG1heSBiZSBwcmVtYXR1cmUKICAgICAvLyBpZiB0
aGUgc2NyaXB0IGRlYnVnZ2VyIGlzIGF0dGFjaGVkIGJlZm9yZSBhIGRvY3VtZW50IGlzIGNyZWF0
ZWQuICBUaGVzZSBjYWxscyB1c2UgdGhlIGRlYnVnZ2VyV29ybGQoKSwgd2Ugd2lsbCBuZWVkIHRv
IHBhc3MgYSB3b3JsZAogICAgIC8vIHRvIGJlIGFibGUgdG8gZGVidWcgaXNvbGF0ZWQgd29ybGRz
LgotICAgIGlmICghd2luZG93UHJveHlDb250cm9sbGVyLmV4aXN0aW5nV2luZG93UHJveHkoZGVi
dWdnZXJXb3JsZCgpKSkKKyAgICBpZiAoIXdpbmRvd1Byb3h5LmV4aXN0aW5nSlNXaW5kb3dQcm94
eShkZWJ1Z2dlcldvcmxkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIuZ2xvYmFsT2JqZWN0KGRlYnVnZ2VyV29ybGQo
KSk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gd2luZG93UHJveHkuZ2xvYmFsT2JqZWN0KGRl
YnVnZ2VyV29ybGQoKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybjsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338275</attachid>
            <date>2018-04-18 16:25:43 -0700</date>
            <delta_ts>2018-04-18 21:02:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184756-20180418162542.patch</filename>
            <type>text/plain</type>
            <size>61121</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMwYmM4N2NjM2I0YzUz
YWUxODllODM1NGU0YzQ5ZmQxYmZmMWM1Zi4uMmU1ODNiM2VmNjkwZDVmNmEzMDUxNjg2MGFmOGI3
ODYyYjhiMWE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE4LTA0LTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFdpbmRvd1Byb3h5
Q29udHJvbGxlciB0byBXaW5kb3dQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdpbmRvd1Byb3h5Q29udHJvbGxlciB0byBXaW5kb3dQ
cm94eSBmb3IgY2xhcml0eS4gV2hlbiB0aGUgSURMIHVzZXMgV2luZG93UHJveHksIHRoZSBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICBuZWVkZWQgdXNlIFdpbmRvd1Byb3h5Q29udHJvbGxlciB0eXBl
LCB3aGljaCB3YXMgYSBiaXQgY29uZnVzaW5nLgorCisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFw
cGVyV29ybGQ6On5ET01XcmFwcGVyV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBl
cldvcmxkOjpjbGVhcldyYXBwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVy
V29ybGQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6ZGlkQ3JlYXRlV2lu
ZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpkaWREZXN0cm95
V2luZG93UHJveHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTRE9N
V2luZG93UHJveHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU0RPTVdpbmRv
d1Byb3h5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpTY3JpcHRDYWNoZWRG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0
b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVT
Y3JpcHRJbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1
YXRlTW9kdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9k
dWxlU2NyaXB0SGFuZGxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
d2luZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZW5hYmxl
RXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjplbmFibGVXZWJBc3Nl
bWJseSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlV2ViQXNzZW1ibHkp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6dXBkYXRlRG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0TlBP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2
YVNjcmlwdFVSTCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2NyaXB0T2JqZWN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluV29ybGRFeGVj
U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dQcm94eTo6V2luZG93UHJveHkpOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93UHJveHk6On5XaW5kb3dQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpX
aW5kb3dQcm94eTo6ZGVzdHJveUpTV2luZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6V2lu
ZG93UHJveHk6OmNyZWF0ZUpTV2luZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93
UHJveHk6OmpzV2luZG93UHJveGllc0FzVmVjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldpbmRvd1Byb3h5OjpjcmVhdGVKU1dpbmRvd1Byb3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KToK
KyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpjbGVhckpTV2luZG93UHJveGllc05vdE1h
dGNoaW5nRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OldpbmRvd1Byb3h5OjpzZXRET01X
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93UHJveHk6OmF0dGFjaERlYnVnZ2VyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9XaW5kb3dQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmguCisgICAgICAgIChX
ZWJDb3JlOjpXaW5kb3dQcm94eTo6anNXaW5kb3dQcm94aWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldpbmRvd1Byb3h5OjpyZWxlYXNlSlNXaW5kb3dQcm94aWVzKToKKyAgICAgICAgKFdl
YkNvcmU6OldpbmRvd1Byb3h5OjpzZXRKU1dpbmRvd1Byb3hpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2luZG93UHJveHk6OmpzV2luZG93UHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93
UHJveHk6OmV4aXN0aW5nSlNXaW5kb3dQcm94eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
aW5kb3dQcm94eTo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZCk6
CisgICAgICAgICogcGFnZS9BYnN0cmFjdEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFi
c3RyYWN0RnJhbWU6OkFic3RyYWN0RnJhbWUpOgorICAgICAgICAqIHBhZ2UvQWJzdHJhY3RGcmFt
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3RGcmFtZTo6d2luZG93UHJveHkpOgorICAg
ICAgICAoV2ViQ29yZTo6QWJzdHJhY3RGcmFtZTo6d2luZG93UHJveHkgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXREZWJ1Z2dlcik6
CisgICAgICAgICogcGFnZS9SZW1vdGVET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVtb3RlRE9NV2luZG93OjpzZWxmIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURP
TVdpbmRvdzo6dG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6
b3BlbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURPTVdpbmRvdzo6cGFyZW50
IGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1JlbW90ZURPTVdpbmRvdy5oOgorCiAyMDE4LTA0LTE4
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2V0IFJlbW90ZURP
TVdpbmRvdydzIGluaXRpYWwgb3BlbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNlNDA1Njk2ZTk2MDRiODM0YWZi
NzkwMGQ5YTIxYTZiMTRlZDBmNzcuLjZmMTcwNWFhZmQzMGVkMjI4ZGNlMDlkYWUzYjBlYjc4YjRh
ZDQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMDQtMTggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgV2luZG93UHJveHlDb250cm9s
bGVyIHRvIFdpbmRvd1Byb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODQ3NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW5hbWUgV2luZG93UHJveHlDb250cm9sbGVyIHRvIFdpbmRvd1Byb3h5IGZv
ciBjbGFyaXR5LiBXaGVuIHRoZSBJREwgdXNlcyBXaW5kb3dQcm94eSwgdGhlIGltcGxlbWVudGF0
aW9uCisgICAgICAgIG5lZWRlZCB1c2UgV2luZG93UHJveHlDb250cm9sbGVyIHR5cGUsIHdoaWNo
IHdhcyBhIGJpdCBjb25mdXNpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OndpbmRvd1NjcmlwdE5Q
T2JqZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZyYW1lQmVjYW1lUmVtb3RlKToKKwogMjAxOC0wNC0xOCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCBSZW1vdGVET01X
aW5kb3cncyBpbml0aWFsIG9wZW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJh
OTI4MDQ2MGNlZjFmYTY1ODFlNDVlODM0MzAzMzJmZjAwYzM1ZWIuLmZmN2RjNzE4Njc1MDNmYjM2
Yzg4NzQxYzVlN2VkMmNjNWZlYWVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxOC0wNC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBXaW5kb3dQcm94eUNvbnRyb2xsZXIgdG8gV2luZG93UHJveHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDc1Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBX
aW5kb3dQcm94eUNvbnRyb2xsZXIgdG8gV2luZG93UHJveHkgZm9yIGNsYXJpdHkuIFdoZW4gdGhl
IElETCB1c2VzIFdpbmRvd1Byb3h5LCB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgbmVlZGVk
IHVzZSBXaW5kb3dQcm94eUNvbnRyb2xsZXIgdHlwZSwgd2hpY2ggd2FzIGEgYml0IGNvbmZ1c2lu
Zy4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpnZXRX
aW5kb3dOUE9iamVjdCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAg
KC1bV2ViRnJhbWUgX2F0dGFjaFNjcmlwdERlYnVnZ2VyXSk6CisKIDIwMTgtMDQtMTcgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9s
bG91dCBvZiByMjMwNjMyLiBSZWdyZXNzaW9uIGluIG1lbW9yeSB1c2FnZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggMTI2NTBkNjIwZmYyYWNlNTk1OTljYTg0OThiNDA4NTMyNDFmOWY1Yy4uM2Y4Zjk5ODc3
MDNhYWQ1YzUyYmNiMDQxNzk5YjIzZmQwMGU5ZTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ3MCw3
ICs0NzAsNyBAQCBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRh
LmNwcAogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAotYmluZGlu
Z3MvanMvV2luZG93UHJveHlDb250cm9sbGVyLmNwcAorYmluZGluZ3MvanMvV2luZG93UHJveHku
Y3BwCiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAogCiBicmlkZ2UvSWRl
bnRpZmllclJlcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAwMWRjZDNlZWRmYWE3NTVlMDYzYzZlNzlmMzk4NTA0NzFjZjMz
YWI0Li42NjYyZTY3NzlhNWY4ZWQxZTgwMDI1N2FmMzcwMmVmNmJhYWY0NmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTkw
LDcgKzExOTAsNyBAQAogCQk0NjBCQjYxNjFEMEExQkYwMDAyMjE4MTIgLyogQmFzZTY0VXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBC
QjYxNDFEMEExQkVDMDAyMjE4MTIgLyogQmFzZTY0VXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYwQ0JGMzYxRDRCQ0QwRTAwOTJF
ODhFIC8qIEpTRE9NV2luZG93UHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwQ0JGMzQxRDRCQ0NGRTAwOTJFODhFIC8qIEpTRE9NV2lu
ZG93UHJvcGVydGllcy5oICovOyB9OwogCQk0NjIxOEFDQjFGNzJENjRFMDA1NzRGQkUgLyogRE9N
SGlnaFJlc1RpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZFMDE2QUQxRjcyRDYxRTAwMjgyQjJDIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0NjM1
MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjM1MjFBQTIwODEwOTBCMDBD
Mjg5MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYzNTIxQUQyMDgxMDkyQTAwQzI4OTIyIC8qIFdp
bmRvd1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5
NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24u
aCAqLzsgfTsKIAkJNDY1MzA3RDAxREI2RUU0ODAwRTQxMzdDIC8qIEpTVUlFdmVudEluaXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTA0NUVGMURB
QTEwNEYwMEIwRDhCOSAvKiBKU1VJRXZlbnRJbml0LmggKi87IH07CiAJCTQ2NjU4REM5MUZBMjRC
ODcwMEY3REQ1NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcyNDEzQjFGQTI0QjE0MDA4OEJENkQgLyogU1dDb250
ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03NDI5LDggKzc0MjksOCBAQAogCQk0NjBDQkYzNDFENEJDQ0ZFMDA5MkU4OEUgLyog
SlNET01XaW5kb3dQcm9wZXJ0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRE9NV2luZG93UHJvcGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjBEMTk0NDFGQ0UyMUREMDBDM0RCODUgLyogSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjM0NTkyQjFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRv
d1Byb3h5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5k
b3dQcm94eUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDYzNTIx
QUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5kb3dQcm94eUNvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyog
V2luZG93UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4
OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdpbmRvd1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2
MjAxQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY1QThFNzgxQzhBMjRDRTAwRTdEM0U0IC8qIFJ1bnRp
bWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMzcyNyw4ICsyMzcyNyw4IEBACiAJCQkJQkM1M0Q5MTAxMTQz
MTBDQzAwMEQ4MTdFIC8qIFdlYkNvcmVKU0NsaWVudERhdGEuaCAqLywKIAkJCQkwRjA5OUQwNjE3
Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLywKIAkJ
CQkwRjA5OUQwNzE3Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVy
LmggKi8sCi0JCQkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Q29udHJv
bGxlci5jcHAgKi8sCi0JCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
Q29udHJvbGxlci5oICovLAorCQkJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5kb3dQ
cm94eS5jcHAgKi8sCisJCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
LmggKi8sCiAJCQkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwICovLAogCQkJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmggKi8sCiAJCQkpOwpAQCAtMzA2MzYsNyArMzA2MzYsNyBAQAogCQkJCTBG
MTVFRDVDMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM4MjQzRTkwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3RTk5QUY1MzBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxv
d2VkSW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5
MjIgLyogV2luZG93UHJveHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjM1MjFB
RDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
RTFCRjAwMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTAxQkFBQTkxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMTQ4MzJCRTE4N0Y2NENDMDBEQTYzQTYgLyogV0tDb250ZW50T2JzZXJ2
YXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVdyYXBwZXJXb3JsZC5jcHAKaW5kZXggYzAzZTMwOTcxNTZhYWMyZmUxNjEyNDgwZDZhYTlkNDVj
YzU0MTNiYi4uYWJiNTE5MTU2ODgwMzM2YzJkOTU1Yjg3ZTQ3NDI5NmRkMjI1NzlhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC0yNCw3
ICsyNCw3IEBACiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlICJXaW5kb3dQcm94
eUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJXaW5kb3dQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAKIApAQCAtNDcsOCArNDcsOCBAQCBET01XcmFwcGVyV29ybGQ6On5ET01X
cmFwcGVyV29ybGQoKQogICAgIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4oY2xpZW50RGF0
YSktPmZvcmdldFdvcmxkKCp0aGlzKTsKIAogICAgIC8vIFRoZXNlIGl0ZW1zIGFyZSBjcmVhdGVk
IGxhemlseS4KLSAgICB3aGlsZSAoIW1fd2luZG93UHJveHlDb250cm9sbGVycy5pc0VtcHR5KCkp
Ci0gICAgICAgICgqbV93aW5kb3dQcm94eUNvbnRyb2xsZXJzLmJlZ2luKCkpLT5kZXN0cm95V2lu
ZG93UHJveHkoKnRoaXMpOworICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgp
KQorICAgICAgICAoKm1fanNXaW5kb3dQcm94aWVzLmJlZ2luKCkpLT5kZXN0cm95SlNXaW5kb3dQ
cm94eSgqdGhpcyk7CiB9CiAKIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVhcldyYXBwZXJzKCkK
QEAgLTU2LDggKzU2LDggQEAgdm9pZCBET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBlcnMoKQog
ICAgIG1fd3JhcHBlcnMuY2xlYXIoKTsKIAogICAgIC8vIFRoZXNlIGl0ZW1zIGFyZSBjcmVhdGVk
IGxhemlseS4KLSAgICB3aGlsZSAoIW1fd2luZG93UHJveHlDb250cm9sbGVycy5pc0VtcHR5KCkp
Ci0gICAgICAgICgqbV93aW5kb3dQcm94eUNvbnRyb2xsZXJzLmJlZ2luKCkpLT5kZXN0cm95V2lu
ZG93UHJveHkoKnRoaXMpOworICAgIHdoaWxlICghbV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgp
KQorICAgICAgICAoKm1fanNXaW5kb3dQcm94aWVzLmJlZ2luKCkpLT5kZXN0cm95SlNXaW5kb3dQ
cm94eSgqdGhpcyk7CiB9CiAKIERPTVdyYXBwZXJXb3JsZCYgbm9ybWFsV29ybGQoSlNDOjpWTSYg
dm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29y
bGQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCmluZGV4
IDNjNjJhYTlkNGY1NDcwYTQwYTZlYmQ2YjYwYmNlYmM3YjhhMzg5MDAuLmNiZDdlNmU1MjBlNjE2
NGZkOWMxOTA2NGMzYjAyOTQ5ZWYyMDA2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTVdyYXBwZXJXb3JsZC5oCkBAIC0yNiw3ICsyNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgV2luZG93UHJveHlDb250cm9sbGVyOworY2xhc3MgV2luZG93UHJveHk7
CiAKIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+PiBET01P
YmplY3RXcmFwcGVyTWFwOwogCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICAvLyBGcmVl
IGFzIG11Y2ggbWVtb3J5IGhlbGQgb250byBieSB0aGlzIHdvcmxkIGFzIHBvc3NpYmxlLgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJXcmFwcGVycygpOwogCi0gICAgdm9pZCBkaWRDcmVh
dGVXaW5kb3dQcm94eShXaW5kb3dQcm94eUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgbV93aW5k
b3dQcm94eUNvbnRyb2xsZXJzLmFkZChjb250cm9sbGVyKTsgfQotICAgIHZvaWQgZGlkRGVzdHJv
eVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Q29udHJvbGxlciogY29udHJvbGxlcikgeyBtX3dpbmRv
d1Byb3h5Q29udHJvbGxlcnMucmVtb3ZlKGNvbnRyb2xsZXIpOyB9CisgICAgdm9pZCBkaWRDcmVh
dGVXaW5kb3dQcm94eShXaW5kb3dQcm94eSogY29udHJvbGxlcikgeyBtX2pzV2luZG93UHJveGll
cy5hZGQoY29udHJvbGxlcik7IH0KKyAgICB2b2lkIGRpZERlc3Ryb3lXaW5kb3dQcm94eShXaW5k
b3dQcm94eSogY29udHJvbGxlcikgeyBtX2pzV2luZG93UHJveGllcy5yZW1vdmUoY29udHJvbGxl
cik7IH0KIAogICAgIHZvaWQgc2V0U2hhZG93Um9vdElzQWx3YXlzT3BlbigpIHsgbV9zaGFkb3dS
b290SXNBbHdheXNPcGVuID0gdHJ1ZTsgfQogICAgIGJvb2wgc2hhZG93Um9vdElzQWx3YXlzT3Bl
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93Um9vdElzQWx3YXlzT3BlbjsgfQpAQCAtNjEsNyAr
NjEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgSlNDOjpWTSYgbV92bTsKLSAgICBI
YXNoU2V0PFdpbmRvd1Byb3h5Q29udHJvbGxlcio+IG1fd2luZG93UHJveHlDb250cm9sbGVyczsK
KyAgICBIYXNoU2V0PFdpbmRvd1Byb3h5Kj4gbV9qc1dpbmRvd1Byb3hpZXM7CiAgICAgRE9NT2Jq
ZWN0V3JhcHBlck1hcCBtX3dyYXBwZXJzOwogCiAgICAgYm9vbCBtX2lzTm9ybWFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXgg
YTg1Y2RlMTcwMGFhODJmZjAxZmJhYjg1NjZhNjI5ZmE1YmE3ZWQzZS4uMDgzMGJjZmI1YTU4NTdh
ZTYzZDVmY2Q2NzkzYTczM2FiYTk4NDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMTEsNSArMTExLDUgQEAKICNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5jcHAiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCIKICNpbmNsdWRlICJXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIgotI2luY2x1ZGUg
IldpbmRvd1Byb3h5Q29udHJvbGxlci5jcHAiCisjaW5jbHVkZSAiV2luZG93UHJveHkuY3BwIgog
I2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggYmU0YmUxNTgwZWRkNjk0MmQx
M2RmMTk0N2NjMjI2MTYxZWFlNmNmMi4uNTg5Yzk0MDcxZjJiNmJkNzhlNmU1YjcyNDI5NDM4MzE2
NDg1ZTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUs
IERPTVdpbmRvdyYgZG9tV2luZG93KQogICAgIGF1dG8qIGZyYW1lID0gZG9tV2luZG93LmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVy
biB0b0pTKHN0YXRlLCBmcmFtZS0+d2luZG93UHJveHlDb250cm9sbGVyKCkpOworICAgIHJldHVy
biB0b0pTKHN0YXRlLCBmcmFtZS0+d2luZG93UHJveHkoKSk7CiB9CiAKIEpTRE9NV2luZG93KiB0
b0pTRE9NV2luZG93KEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94eS5jcHAKaW5kZXggOTM3
MmRjOTVjNmRiMWFjOWI0MDA1MGVjZWQzMjRiYWFjZjNiMzQwOC4uNTg5ODI3MzQ0YzE5NGE4YjBi
ZDA5MTk0NDNkYTJlNWVjMDZhZGVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dQcm94eS5jcHAKQEAgLTE0MCwxNCArMTQwLDE0IEBAIEFic3RyYWN0RE9N
V2luZG93KiBKU0RPTVdpbmRvd1Byb3h5Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU09iamVjdCogdmFs
dWUpCiAgICAgcmV0dXJuIHdyYXBwZXIgPyAmd3JhcHBlci0+d3JhcHBlZCgpIDogbnVsbHB0cjsK
IH0KIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIFdpbmRvd1Byb3h5Q29udHJvbGxl
ciYgd2luZG93UHJveHlDb250cm9sbGVyKQorSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUs
IFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSkKIHsKLSAgICByZXR1cm4gJndpbmRvd1Byb3h5Q29u
dHJvbGxlci53aW5kb3dQcm94eShjdXJyZW50V29ybGQoKnN0YXRlKSk7CisgICAgcmV0dXJuICZ3
aW5kb3dQcm94eS5qc1dpbmRvd1Byb3h5KGN1cnJlbnRXb3JsZCgqc3RhdGUpKTsKIH0KIAotSlNE
T01XaW5kb3dQcm94eSYgdG9KU0RPTVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Q29udHJvbGxlciYg
d2luZG93UHJveHlDb250cm9sbGVyLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorSlNET01XaW5k
b3dQcm94eSYgdG9KU0RPTVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSwgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICByZXR1cm4gd2luZG93UHJveHlDb250cm9sbGVy
LndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICByZXR1cm4gd2luZG93UHJveHkuanNXaW5kb3dQcm94
eSh3b3JsZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93UHJveHkuaAppbmRleCAzZGRkMDViZmQ4ZTQyYWFlYzY1
ZDE0ODE4N2RkOTQ4MzhlMTIyZjQ2Li44MjljOTJlZTYxMjVjMTIxNmI4ODg2MzEyMzZiNmE5ZTli
ZTdlYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dQcm94
eS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWJzdHJh
Y3RET01XaW5kb3c7CiBjbGFzcyBBYnN0cmFjdEZyYW1lOwotY2xhc3MgV2luZG93UHJveHlDb250
cm9sbGVyOworY2xhc3MgV2luZG93UHJveHk7CiAKIGNsYXNzIEpTRE9NV2luZG93UHJveHkgZmlu
YWwgOiBwdWJsaWMgSlNDOjpKU1Byb3h5IHsKICAgICB1c2luZyBCYXNlID0gSlNDOjpKU1Byb3h5
OwpAQCAtNjgsMTIgKzY4LDEyIEBAIHByaXZhdGU6CiB9OwogCiAvLyBKU0RPTVdpbmRvd1Byb3h5
IGlzIGEgbGl0dGxlIG9kZCBpbiB0aGF0IGl0J3Mgbm90IGEgdHJhZGl0aW9uYWwgd3JhcHBlciBh
bmQgaGFzIG5vIGJhY2sgcG9pbnRlci4KLS8vIEl0IGlzLCBob3dldmVyLCBzdHJvbmdseSBvd25l
ZCBieSBBYnN0cmFjdEZyYW1lIHZpYSBpdHMgV2luZG93UHJveHlDb250cm9sbGVyLCBzbyB3ZSBj
YW4gZ2V0IG9uZSBmcm9tIGEgV2luZG93UHJveHlDb250cm9sbGVyLgotSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqLCBXaW5kb3dQcm94eUNvbnRyb2xsZXImKTsKLWlubGluZSBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFdpbmRvd1Byb3h5Q29udHJvbGxl
ciogd2luZG93UHJveHlDb250cm9sbGVyKSB7IHJldHVybiB3aW5kb3dQcm94eUNvbnRyb2xsZXIg
PyB0b0pTKHN0YXRlLCAqd2luZG93UHJveHlDb250cm9sbGVyKSA6IEpTQzo6anNOdWxsKCk7IH0K
Ky8vIEl0IGlzLCBob3dldmVyLCBzdHJvbmdseSBvd25lZCBieSBBYnN0cmFjdEZyYW1lIHZpYSBp
dHMgV2luZG93UHJveHksIHNvIHdlIGNhbiBnZXQgb25lIGZyb20gYSBXaW5kb3dQcm94eS4KK0pT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgV2luZG93UHJveHkmKTsKK2lubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFdpbmRvd1Byb3h5KiB3aW5k
b3dQcm94eSkgeyByZXR1cm4gd2luZG93UHJveHkgPyB0b0pTKHN0YXRlLCAqd2luZG93UHJveHkp
IDogSlNDOjpqc051bGwoKTsgfQogCi1KU0RPTVdpbmRvd1Byb3h5JiB0b0pTRE9NV2luZG93UHJv
eHkoV2luZG93UHJveHlDb250cm9sbGVyJiwgRE9NV3JhcHBlcldvcmxkJik7Ci1pbmxpbmUgSlNE
T01XaW5kb3dQcm94eSogdG9KU0RPTVdpbmRvd1Byb3h5KFdpbmRvd1Byb3h5Q29udHJvbGxlciog
d2luZG93UHJveHlDb250cm9sbGVyLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKSB7IHJldHVybiB3
aW5kb3dQcm94eUNvbnRyb2xsZXIgPyAmdG9KU0RPTVdpbmRvd1Byb3h5KCp3aW5kb3dQcm94eUNv
bnRyb2xsZXIsIHdvcmxkKSA6IG51bGxwdHI7IH0KK0pTRE9NV2luZG93UHJveHkmIHRvSlNET01X
aW5kb3dQcm94eShXaW5kb3dQcm94eSYsIERPTVdyYXBwZXJXb3JsZCYpOworaW5saW5lIEpTRE9N
V2luZG93UHJveHkqIHRvSlNET01XaW5kb3dQcm94eShXaW5kb3dQcm94eSogd2luZG93UHJveHks
IERPTVdyYXBwZXJXb3JsZCYgd29ybGQpIHsgcmV0dXJuIHdpbmRvd1Byb3h5ID8gJnRvSlNET01X
aW5kb3dQcm94eSgqd2luZG93UHJveHksIHdvcmxkKSA6IG51bGxwdHI7IH0KIAogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAppbmRleCA0YTdjOTg4YWRmMTM1MDQ1YmQ5M2I4MjE1ZDhj
NGViYWMzNmYyYTRhLi5lNGVhZGZkNzQ3ZGMyYWRlNTcwMjQwMTU4MzFlYWI1NDM2ZWMyMTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1l
RGF0YS5jcHAKQEAgLTUxLDEzICs1MSwxMyBAQCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OlNjcmlw
dENhY2hlZEZyYW1lRGF0YShGcmFtZSYgZnJhbWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
Y29tbW9uVk0oKSk7CiAKLSAgICBmb3IgKGF1dG8gd2luZG93UHJveHkgOiBmcmFtZS53aW5kb3dQ
cm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgeworICAgIGZvciAoYXV0
byB3aW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94aWVzQXNWZWN0
b3IoKSkgewogICAgICAgICBhdXRvKiB3aW5kb3cgPSBqc0Nhc3Q8SlNET01XaW5kb3cqPih3aW5k
b3dQcm94eS0+d2luZG93KCkpOwogICAgICAgICBtX3dpbmRvd3MuYWRkKCZ3aW5kb3dQcm94eS0+
d29ybGQoKSwgU3Ryb25nPEpTRE9NV2luZG93Pih3aW5kb3ctPnZtKCksIHdpbmRvdykpOwogICAg
ICAgICB3aW5kb3ctPnNldENvbnNvbGVDbGllbnQobnVsbHB0cik7CiAgICAgfQogCi0gICAgZnJh
bWUud2luZG93UHJveHlDb250cm9sbGVyKCkuYXR0YWNoRGVidWdnZXIobnVsbHB0cik7CisgICAg
ZnJhbWUud2luZG93UHJveHkoKS5hdHRhY2hEZWJ1Z2dlcihudWxscHRyKTsKIH0KIAogU2NyaXB0
Q2FjaGVkRnJhbWVEYXRhOjp+U2NyaXB0Q2FjaGVkRnJhbWVEYXRhKCkKQEAgLTcxLDcgKzcxLDcg
QEAgdm9pZCBTY3JpcHRDYWNoZWRGcmFtZURhdGE6OnJlc3RvcmUoRnJhbWUmIGZyYW1lKQogCiAg
ICAgUGFnZSogcGFnZSA9IGZyYW1lLnBhZ2UoKTsKIAotICAgIGZvciAoYXV0byB3aW5kb3dQcm94
eSA6IGZyYW1lLndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3hpZXNBc1ZlY3Rvcigp
KSB7CisgICAgZm9yIChhdXRvIHdpbmRvd1Byb3h5IDogZnJhbWUud2luZG93UHJveHkoKS5qc1dp
bmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CiAgICAgICAgIGF1dG8qIHdvcmxkID0gJndpbmRvd1By
b3h5LT53b3JsZCgpOwogCiAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBtX3dpbmRvd3MuZ2V0
KHdvcmxkKS5nZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKaW5kZXggZWY2NWM5ZGVmYzZjZWI2YjFjODcyMzAzNzVhZjFjZTRmY2M4NTc3
NS4uNWYzNGNhZmZhZmJjNWVlOGQ2ZDdmYmRlNjVmZDcyY2ZiZWU0NDM3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCBKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBETwogICAgIC8vIGFuZCBmYWxzZSBmb3IgPHNj
cmlwdD5kb1NvbWV0aGluZygpPC9zY3JpcHQ+LiBDaGVjayBpZiBpdCBoYXMgdGhlCiAgICAgLy8g
ZXhwZWN0ZWQgdmFsdWUgaW4gYWxsIGNhc2VzLgogICAgIC8vIFNlZSBzbWFydCB3aW5kb3cub3Bl
biBwb2xpY3kgZm9yIHdoZXJlIHRoaXMgaXMgdXNlZC4KLSAgICBhdXRvJiBwcm94eSA9IHdpbmRv
d1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBwcm94eSA9
IHdpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgZXhlYyA9ICpw
cm94eS53aW5kb3coKS0+Z2xvYmFsRXhlYygpOwogICAgIGNvbnN0IFN0cmluZyogc2F2ZWRTb3Vy
Y2VVUkwgPSBtX3NvdXJjZVVSTDsKICAgICBtX3NvdXJjZVVSTCA9ICZzb3VyY2VVUkw7CkBAIC0x
NTAsNyArMTUwLDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU2NyaXB0SW5X
b3JsZChMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXAKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh3b3JsZC52bSgpKTsKIAotICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJveHlDb250
cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJv
eHkoKS5qc1dpbmRvd1Byb3h5KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpwcm94eS53aW5k
b3coKS0+Z2xvYmFsRXhlYygpOwogCiAgICAgYXV0byYgcHJvbWlzZSA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6bG9hZE1vZHVsZShzdGF0ZSwgbW9kdWxlTmFtZSwgSlNDOjpKU1NjcmlwdEZldGNo
UGFyYW1ldGVyczo6Y3JlYXRlKHN0YXRlLnZtKCksIFdURk1vdmUodG9wTGV2ZWxGZXRjaFBhcmFt
ZXRlcnMpKSwgSlNDOjpKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZShzdGF0ZS52bSgpLCB7ICZtb2R1
bGVTY3JpcHQgfSkpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
bG9hZE1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcmlw
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAgICBhdXRvJiBwcm94
eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRv
JiBwcm94eSA9IHdpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYg
c3RhdGUgPSAqcHJveHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAogICAgIGF1dG8mIHByb21p
c2UgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmxvYWRNb2R1bGUoc3RhdGUsIHNvdXJjZUNvZGUu
anNTb3VyY2VDb2RlKCksIEpTQzo6SlNTY3JpcHRGZXRjaGVyOjpjcmVhdGUoc3RhdGUudm0oKSwg
eyAmbW9kdWxlU2NyaXB0IH0pKTsKQEAgLTE4Miw3ICsxODIsNyBAQCBKU0M6OkpTVmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJs
ZU1vZHVsZQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwogCi0gICAgYXV0
byYgcHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS53aW5kb3dQcm94eSh3b3JsZCk7Cisg
ICAgYXV0byYgcHJveHkgPSB3aW5kb3dQcm94eSgpLmpzV2luZG93UHJveHkod29ybGQpOwogICAg
IGF1dG8mIHN0YXRlID0gKnByb3h5LndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAKICAgICAvLyBG
SVhNRTogUHJldmVudGluZyBGcmFtZSBmcm9tIGJlaW5nIGRlc3Ryb3llZCBpcyBlc3NlbnRpYWxs
eSB1bm5lY2Vzc2FyeS4KQEAgLTIxMSw3ICsyMTEsNyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVj
bwogCiAgICAgY29uc3QgYXV0byYganNTb3VyY2VDb2RlID0gbW9kdWxlUmVjb3JkLnNvdXJjZUNv
ZGUoKTsKIAotICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93
UHJveHkod29ybGQpOworICAgIGF1dG8mIHByb3h5ID0gd2luZG93UHJveHkoKS5qc1dpbmRvd1By
b3h5KHdvcmxkKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpwcm94eS53aW5kb3coKS0+Z2xvYmFsRXhl
YygpOwogICAgIFNldEZvclNjb3BlPGNvbnN0IFN0cmluZyo+IHNvdXJjZVVSTFNjb3BlKG1fc291
cmNlVVJMLCAmc291cmNlVVJMLnN0cmluZygpKTsKIApAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRp
YyBJZGVudGlmaWVyIGpzVmFsdWVUb01vZHVsZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVy
cyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0UmVmLCBKU0ludGVybmFsUHJvbWlz
ZSYgcHJvbWlzZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKLSAgICBhdXRvJiBwcm94eSA9
IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBw
cm94eSA9IHdpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eSh3b3JsZCk7CiAgICAgYXV0byYgc3Rh
dGUgPSAqcHJveHkud2luZG93KCktPmdsb2JhbEV4ZWMoKTsKIAogICAgIC8vIEl0IGlzIG5vdCBn
dWFyYW50ZWVkIHRoYXQgZWl0aGVyIGZ1bGZpbGxIYW5kbGVyIG9yIHJlamVjdEhhbmRsZXIgaXMg
ZXZlbnR1YWxseSBjYWxsZWQuCkBAIC0zMjAsOSArMzIwLDkgQEAgdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1
bGVTY3IKICAgICBwcm9taXNlLnRoZW4oJnN0YXRlLCAmZnVsZmlsbEhhbmRsZXIsICZyZWplY3RI
YW5kbGVyKTsKIH0KIAotV2luZG93UHJveHlDb250cm9sbGVyJiBTY3JpcHRDb250cm9sbGVyOjp3
aW5kb3dQcm94eUNvbnRyb2xsZXIoKQorV2luZG93UHJveHkmIFNjcmlwdENvbnRyb2xsZXI6Ondp
bmRvd1Byb3h5KCkKIHsKLSAgICByZXR1cm4gbV9mcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIo
KTsKKyAgICByZXR1cm4gbV9mcmFtZS53aW5kb3dQcm94eSgpOwogfQogCiBUZXh0UG9zaXRpb24g
U2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9zaXRpb24oKSBjb25zdApAQCAtMzQwLDM0
ICszNDAsMzQgQEAgVGV4dFBvc2l0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlclBv
c2l0aW9uKCkgY29uc3QKIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjplbmFibGVFdmFsKCkKIHsK
LSAgICBhdXRvKiB3aW5kb3dQcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5n
V2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwotICAgIGlmICghd2luZG93UHJv
eHkpCisgICAgYXV0byoganNXaW5kb3dQcm94eSA9IHdpbmRvd1Byb3h5KCkuZXhpc3RpbmdKU1dp
bmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBpZiAoIWpzV2luZG93UHJv
eHkpCiAgICAgICAgIHJldHVybjsKLSAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNldEV2YWxF
bmFibGVkKHRydWUpOworICAgIGpzV2luZG93UHJveHktPndpbmRvdygpLT5zZXRFdmFsRW5hYmxl
ZCh0cnVlKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjplbmFibGVXZWJBc3NlbWJseSgp
CiB7Ci0gICAgYXV0byogd2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5leGlz
dGluZ1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKLSAgICBpZiAoIXdpbmRv
d1Byb3h5KQorICAgIGF1dG8qIGpzV2luZG93UHJveHkgPSB3aW5kb3dQcm94eSgpLmV4aXN0aW5n
SlNXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgaWYgKCFqc1dpbmRv
d1Byb3h5KQogICAgICAgICByZXR1cm47Ci0gICAgd2luZG93UHJveHktPndpbmRvdygpLT5zZXRX
ZWJBc3NlbWJseUVuYWJsZWQodHJ1ZSk7CisgICAganNXaW5kb3dQcm94eS0+d2luZG93KCktPnNl
dFdlYkFzc2VtYmx5RW5hYmxlZCh0cnVlKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpk
aXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBhdXRvKiB3aW5k
b3dQcm94eSA9IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpLmV4aXN0aW5nV2luZG93UHJveHkobWFp
blRocmVhZE5vcm1hbFdvcmxkKCkpOwotICAgIGlmICghd2luZG93UHJveHkpCisgICAgYXV0byog
anNXaW5kb3dQcm94eSA9IHdpbmRvd1Byb3h5KCkuZXhpc3RpbmdKU1dpbmRvd1Byb3h5KG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICBpZiAoIWpzV2luZG93UHJveHkpCiAgICAgICAgIHJl
dHVybjsKLSAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNldEV2YWxFbmFibGVkKGZhbHNlLCBl
cnJvck1lc3NhZ2UpOworICAgIGpzV2luZG93UHJveHktPndpbmRvdygpLT5zZXRFdmFsRW5hYmxl
ZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpkaXNh
YmxlV2ViQXNzZW1ibHkoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgYXV0byog
d2luZG93UHJveHkgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5leGlzdGluZ1dpbmRvd1Byb3h5
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKLSAgICBpZiAoIXdpbmRvd1Byb3h5KQorICAgIGF1
dG8qIGpzV2luZG93UHJveHkgPSB3aW5kb3dQcm94eSgpLmV4aXN0aW5nSlNXaW5kb3dQcm94eSht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgaWYgKCFqc1dpbmRvd1Byb3h5KQogICAgICAg
ICByZXR1cm47Ci0gICAgd2luZG93UHJveHktPndpbmRvdygpLT5zZXRXZWJBc3NlbWJseUVuYWJs
ZWQoZmFsc2UsIGVycm9yTWVzc2FnZSk7CisgICAganNXaW5kb3dQcm94eS0+d2luZG93KCktPnNl
dFdlYkFzc2VtYmx5RW5hYmxlZChmYWxzZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogYm9vbCBTY3Jp
cHRDb250cm9sbGVyOjpjYW5BY2Nlc3NGcm9tQ3VycmVudE9yaWdpbihGcmFtZSogZnJhbWUpCkBA
IC0zODMsNyArMzgzLDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5BY2Nlc3NGcm9tQ3Vy
cmVudE9yaWdpbihGcmFtZSogZnJhbWUpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6dXBkYXRl
RG9jdW1lbnQoKQogewotICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQcm94eUNv
bnRyb2xsZXIoKS53aW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgeworICAgIGZvciAoYXV0byYgd2lu
ZG93UHJveHkgOiB3aW5kb3dQcm94eSgpLmpzV2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKICAg
ICAgICAgSlNMb2NrSG9sZGVyIGxvY2sod2luZG93UHJveHktPndvcmxkKCkudm0oKSk7CiAgICAg
ICAgIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KHdpbmRvd1Byb3h5LT53aW5kb3coKSktPnVwZGF0ZURv
Y3VtZW50KCk7CiAgICAgfQpAQCAtNDI3LDcgKzQyNyw3IEBAIFJlZjxCaW5kaW5nczo6Um9vdE9i
amVjdD4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlUm9vdE9iamVjdCh2b2lkKiBuYXRpdmVIYW5k
bGUpCiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMoVmVj
dG9yPHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4+JiByZXN1bHQp
CiB7Ci0gICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6IHdpbmRvd1Byb3h5Q29udHJvbGxlcigp
LndpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgZm9yIChhdXRvJiB3aW5kb3dQcm94eSA6
IHdpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgewogICAgICAgICBhdXRv
KiBleGVjID0gd2luZG93UHJveHktPndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIGF1
dG8qIG9yaWdpbiA9ICZkb3duY2FzdDxET01XaW5kb3c+KHdpbmRvd1Byb3h5LT53cmFwcGVkKCkp
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoZXhlYywgb3JpZ2luKSk7CkBAIC00NDIsNyArNDQyLDcgQEAgTlBPYmplY3Qq
IFNjcmlwdENvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE5QT2JqZWN0KCkKICAgICAgICAgaWYgKGNh
bkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkgewogICAgICAgICAgICAg
Ly8gSmF2YVNjcmlwdCBpcyBlbmFibGVkLCBzbyB0aGVyZSBpcyBhIEphdmFTY3JpcHQgd2luZG93
IG9iamVjdC4KICAgICAgICAgICAgIC8vIFJldHVybiBhbiBOUE9iamVjdCBib3VuZCB0byB0aGUg
d2luZG93IG9iamVjdC4KLSAgICAgICAgICAgIGF1dG8qIHdpbmRvdyA9IHdpbmRvd1Byb3h5Q29u
dHJvbGxlcigpLndpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpLndpbmRvdygpOworICAgICAgICAg
ICAgYXV0byogd2luZG93ID0gd2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KHBsdWdpbldvcmxk
KCkpLndpbmRvdygpOwogICAgICAgICAgICAgQVNTRVJUKHdpbmRvdyk7CiAgICAgICAgICAgICBC
aW5kaW5nczo6Um9vdE9iamVjdCogcm9vdCA9IGJpbmRpbmdSb290T2JqZWN0KCk7CiAgICAgICAg
ICAgICBtX3dpbmRvd1NjcmlwdE5QT2JqZWN0ID0gX05QTl9DcmVhdGVTY3JpcHRPYmplY3QoMCwg
d2luZG93LCByb290KTsKQEAgLTYwMyw3ICs2MDMsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1
bQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFN0cmluZyBzY3JpcHRSZXN1bHQ7Ci0gICAg
aWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5nZXRTdHJpbmcod2luZG93UHJveHlDb250cm9sbGVyKCku
d2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLndpbmRvdygpLT5nbG9iYWxFeGVj
KCksIHNjcmlwdFJlc3VsdCkpCisgICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5nZXRTdHJpbmco
d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS53aW5k
b3coKS0+Z2xvYmFsRXhlYygpLCBzY3JpcHRSZXN1bHQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWx3YXlzIHJlcGxhY2UgdGhlIGRvY3VtZW50LCBi
dXQgZG9pbmcgc28KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuaAppbmRleCBhYzlkMmQwYTE4MmVkZmYwNmNmMjJkMDUyYWMwYmM5NGU2MTQ2NTAyLi4yYmZh
ZDJhNTUxYjdkMzBiNjQ3YzJiZjEyODlkYTM0NzA2YzdiZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yMyw3ICsyMyw3IEBACiAKICNp
bmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dQcm94eS5o
IgotI2luY2x1ZGUgIldpbmRvd1Byb3h5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIldpbmRvd1By
b3h5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTgzLDcg
KzgzLDcgQEAgcHVibGljOgogCiAgICAgSlNET01XaW5kb3cqIGdsb2JhbE9iamVjdChET01XcmFw
cGVyV29ybGQmIHdvcmxkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9N
V2luZG93Kj4od2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkod29ybGQpLndpbmRv
dygpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NV2luZG93Kj4od2luZG93UHJv
eHkoKS5qc1dpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IHZvaWQgZ2V0QWxsV29ybGRzKFZlY3RvcjxSZWY8RE9NV3JhcHBlcldvcmxkPj4mKTsKQEAgLTE2
NSw3ICsxNjUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNjb25uZWN0UGxhdGZvcm1TY3Jp
cHRPYmplY3RzKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBXaW5kb3dQcm94eUNvbnRyb2xsZXIm
IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFdpbmRvd1Byb3h5
JiB3aW5kb3dQcm94eSgpOwogCiAgICAgRnJhbWUmIG1fZnJhbWU7CiAgICAgY29uc3QgU3RyaW5n
KiBtX3NvdXJjZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyTWFjLm1tCmluZGV4IGIyNmUxNzcwZDQwNDlmZDA0Mjg0N2YxNWVhNTVmNGM3Y2Zm
NDIzZDYuLjNlYzQxNjU4NWJhMDA4NzE2ZGVkZTIyNWU1MDk3NzU1MzU4ZGRmNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAt
MTAzLDcgKzEwMyw3IEBAIFdlYlNjcmlwdE9iamVjdCAqU2NyaXB0Q29udHJvbGxlcjo6d2luZG93
U2NyaXB0T2JqZWN0KCkKICAgICBpZiAoIW1fd2luZG93U2NyaXB0T2JqZWN0KSB7CiAgICAgICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CiAgICAgICAgIEpTQzo6QmluZGlu
Z3M6OlJvb3RPYmplY3QqIHJvb3QgPSBiaW5kaW5nUm9vdE9iamVjdCgpOwotICAgICAgICBtX3dp
bmRvd1NjcmlwdE9iamVjdCA9IFtXZWJTY3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0Rm9ySlNPYmpl
Y3Q6dG9SZWYoJndpbmRvd1Byb3h5Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHBsdWdpbldvcmxk
KCkpKSBvcmlnaW5Sb290T2JqZWN0OnJvb3Qgcm9vdE9iamVjdDpyb290XTsKKyAgICAgICAgbV93
aW5kb3dTY3JpcHRPYmplY3QgPSBbV2ViU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdEZvckpTT2Jq
ZWN0OnRvUmVmKCZ3aW5kb3dQcm94eSgpLmpzV2luZG93UHJveHkocGx1Z2luV29ybGQoKSkpIG9y
aWdpblJvb3RPYmplY3Q6cm9vdCByb290T2JqZWN0OnJvb3RdOwogICAgIH0KIAogICAgIHJldHVy
biBtX3dpbmRvd1NjcmlwdE9iamVjdC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmNwcAppbmRleCA4NjViMWUxZWQxZjk5MDc4ZDM2MTVmMDY0OGE5NTkwYjUz
YjhlMjc3Li4zMWI2ZTc4NDIzNGVmZjVhNGYxNWM5NTU3NDdmYjM1OWUzODNiMzJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCkBAIC03NSw3ICs3NSw3IEBA
IEpTQzo6RXhlY1N0YXRlKiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqIGZyYW1lKQogewogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBmcmFtZS0+
d2luZG93UHJveHlDb250cm9sbGVyKCkud2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpLndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CisgICAgcmV0dXJuIGZyYW1lLT53aW5kb3dQcm94
eSgpLmpzV2luZG93UHJveHkobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLndpbmRvdygpLT5nbG9i
YWxFeGVjKCk7CiB9CiAKIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGVGcm9tTm9kZShET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2luZG93UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkN2E2MzRiY2QyZWVjNWRkMWRlYzFmYmMzYTI4
YWEwMjU2YmUzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XaW5kb3dQcm94eS5jcHAKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2luZG93UHJv
eHkuaCIKKworI2luY2x1ZGUgIkNvbW1vblZNLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJHQ0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZUNv
bnNvbGVDbGllbnQuaCIKKyNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJSZW1vdGVG
cmFtZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJydW50aW1l
X3Jvb3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KKyNpbmNsdWRlIDx3
dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIHZvaWQgY29sbGVjdEdhcmJhZ2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKQorewor
ICAgIC8vIE1ha2Ugc3VyZSB0byBHQyBFeHRyYSBTb29uKHRtKSBkdXJpbmcgbWVtb3J5IHByZXNz
dXJlIGNvbmRpdGlvbnMKKyAgICAvLyB0byBzb2Z0ZW4gaGlnaCBwZWFrcyBvZiBtZW1vcnkgdXNh
Z2UgZHVyaW5nIG5hdmlnYXRpb24uCisgICAgaWYgKE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2lu
Z2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpIHsKKyAgICAgICAgLy8gTk9URTogV2Ug
ZG8gdGhlIGNvbGxlY3Rpb24gb24gbmV4dCBydW5sb29wIHRvIGVuc3VyZSB0aGF0IHRoZXJlJ3Mg
bm8gcG9pbnRlcgorICAgICAgICAvLyAgICAgICB0byB0aGUgd2luZG93IG9iamVjdCBvbiB0aGUg
c3RhY2suCisgICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2FyYmFnZUNvbGxlY3RP
bk5leHRSdW5Mb29wKCk7CisgICAgfSBlbHNlCisgICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7Cit9CisKK1dpbmRvd1Byb3h5OjpXaW5kb3dQcm94
eShBYnN0cmFjdEZyYW1lJiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK1dp
bmRvd1Byb3h5Ojp+V2luZG93UHJveHkoKQoreworICAgIC8vIEl0J3MgbGlrZWx5IHRoYXQgZGVz
dHJveWluZyB3aW5kb3dQcm94aWVzIHdpbGwgY3JlYXRlIGEgbG90IG9mIGdhcmJhZ2UuCisgICAg
aWYgKCFtX2pzV2luZG93UHJveGllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgd2hpbGUgKCFtX2pz
V2luZG93UHJveGllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGF1dG8gaXQgPSBtX2pzV2lu
ZG93UHJveGllcy5iZWdpbigpOworICAgICAgICAgICAgaXQtPnZhbHVlLT53aW5kb3coKS0+c2V0
Q29uc29sZUNsaWVudChudWxscHRyKTsKKyAgICAgICAgICAgIGRlc3Ryb3lKU1dpbmRvd1Byb3h5
KCppdC0+a2V5KTsKKyAgICAgICAgfQorICAgICAgICBjb2xsZWN0R2FyYmFnZUFmdGVyV2luZG93
UHJveHlEZXN0cnVjdGlvbigpOworICAgIH0KK30KKwordm9pZCBXaW5kb3dQcm94eTo6ZGVzdHJv
eUpTV2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQobV9q
c1dpbmRvd1Byb3hpZXMuY29udGFpbnMoJndvcmxkKSk7CisgICAgbV9qc1dpbmRvd1Byb3hpZXMu
cmVtb3ZlKCZ3b3JsZCk7CisgICAgd29ybGQuZGlkRGVzdHJveVdpbmRvd1Byb3h5KHRoaXMpOwor
fQorCitKU0RPTVdpbmRvd1Byb3h5JiBXaW5kb3dQcm94eTo6Y3JlYXRlSlNXaW5kb3dQcm94eShE
T01XcmFwcGVyV29ybGQmIHdvcmxkKQoreworICAgIEFTU0VSVCghbV9qc1dpbmRvd1Byb3hpZXMu
Y29udGFpbnMoJndvcmxkKSk7CisgICAgQVNTRVJUKG1fZnJhbWUud2luZG93KCkpOworCisgICAg
Vk0mIHZtID0gd29ybGQudm0oKTsKKworICAgIFN0cm9uZzxKU0RPTVdpbmRvd1Byb3h5PiBqc1dp
bmRvd1Byb3h5KHZtLCAmSlNET01XaW5kb3dQcm94eTo6Y3JlYXRlKHZtLCAqbV9mcmFtZS53aW5k
b3coKSwgd29ybGQpKTsKKyAgICBTdHJvbmc8SlNET01XaW5kb3dQcm94eT4ganNXaW5kb3dQcm94
eTIoanNXaW5kb3dQcm94eSk7CisgICAgbV9qc1dpbmRvd1Byb3hpZXMuYWRkKCZ3b3JsZCwganNX
aW5kb3dQcm94eSk7CisgICAgd29ybGQuZGlkQ3JlYXRlV2luZG93UHJveHkodGhpcyk7CisgICAg
cmV0dXJuICpqc1dpbmRvd1Byb3h5LmdldCgpOworfQorCitWZWN0b3I8SlNDOjpTdHJvbmc8SlNE
T01XaW5kb3dQcm94eT4+IFdpbmRvd1Byb3h5Ojpqc1dpbmRvd1Byb3hpZXNBc1ZlY3RvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX2pzV2luZG93UHJveGllcy52YWx1ZXMo
KSk7Cit9CisKK0pTRE9NV2luZG93UHJveHkmIFdpbmRvd1Byb3h5OjpjcmVhdGVKU1dpbmRvd1By
b3h5V2l0aEluaXRpYWxpemVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCit7CisgICAg
SlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CisgICAgYXV0byYgd2luZG93UHJveHkgPSBj
cmVhdGVKU1dpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBpZiAoaXM8RnJhbWU+KG1fZnJhbWUpKQor
ICAgICAgICBkb3duY2FzdDxGcmFtZT4obV9mcmFtZSkuc2NyaXB0KCkuaW5pdFNjcmlwdEZvcldp
bmRvd1Byb3h5KHdpbmRvd1Byb3h5KTsKKyAgICByZXR1cm4gd2luZG93UHJveHk7Cit9CisKK3Zv
aWQgV2luZG93UHJveHk6OmNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3co
QWJzdHJhY3RET01XaW5kb3cqIG5ld0RPTVdpbmRvdywgYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUp
Cit7CisgICAgaWYgKG1fanNXaW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgSlNMb2NrSG9sZGVyIGxvY2soY29tbW9uVk0oKSk7CisKKyAgICBmb3IgKGF1dG8m
IHdpbmRvd1Byb3h5IDoganNXaW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgeworICAgICAgICBpZiAo
JndpbmRvd1Byb3h5LT53cmFwcGVkKCkgPT0gbmV3RE9NV2luZG93KQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgLy8gQ2xlYXIgdGhlIGRlYnVnZ2VyIGFuZCBjb25zb2xlIGZyb20g
dGhlIGN1cnJlbnQgd2luZG93IGJlZm9yZSBzZXR0aW5nIHRoZSBuZXcgd2luZG93LgorICAgICAg
ICB3aW5kb3dQcm94eS0+YXR0YWNoRGVidWdnZXIobnVsbHB0cik7CisgICAgICAgIHdpbmRvd1By
b3h5LT53aW5kb3coKS0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKKyAgICAgICAgaWYgKGF1
dG8qIGpzRE9NV2luZG93ID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPigqd2luZG93
UHJveHktPnZtKCksIHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCisgICAgICAgICAgICBqc0RPTVdp
bmRvdy0+d2lsbFJlbW92ZUZyb21XaW5kb3dQcm94eSgpOworICAgIH0KKworICAgIC8vIEl0J3Mg
bGlrZWx5IHRoYXQgcmVzZXR0aW5nIG91ciB3aW5kb3dzIGNyZWF0ZWQgYSBsb3Qgb2YgZ2FyYmFn
ZSwgdW5sZXNzCisgICAgLy8gaXQgd2VudCBpbiBhIGJhY2svZm9yd2FyZCBjYWNoZS4KKyAgICBp
ZiAoIWdvaW5nSW50b1BhZ2VDYWNoZSkKKyAgICAgICAgY29sbGVjdEdhcmJhZ2VBZnRlcldpbmRv
d1Byb3h5RGVzdHJ1Y3Rpb24oKTsKK30KKwordm9pZCBXaW5kb3dQcm94eTo6c2V0RE9NV2luZG93
KEFic3RyYWN0RE9NV2luZG93KiBuZXdET01XaW5kb3cpCit7CisgICAgQVNTRVJUKG5ld0RPTVdp
bmRvdyk7CisKKyAgICBpZiAobV9qc1dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKKworICAgIGZvciAo
YXV0byYgd2luZG93UHJveHkgOiBqc1dpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgICAg
IGlmICgmd2luZG93UHJveHktPndyYXBwZWQoKSA9PSBuZXdET01XaW5kb3cpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICB3aW5kb3dQcm94eS0+c2V0V2luZG93KCpuZXdET01XaW5k
b3cpOworCisgICAgICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBudWxs
cHRyOworICAgICAgICBQYWdlKiBwYWdlID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGlzPEZyYW1l
PihtX2ZyYW1lKSkgeworICAgICAgICAgICAgYXV0byYgZnJhbWUgPSBkb3duY2FzdDxGcmFtZT4o
bV9mcmFtZSk7CisgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyID0gJmZyYW1lLnNjcmlwdCgp
OworICAgICAgICAgICAgcGFnZSA9IGZyYW1lLnBhZ2UoKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFNjcmlwdENvbnRyb2xsZXIncyBtX2NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0IHBlcnNp
c3RzIGJldHdlZW4gcGFnZSBuYXZpZ2F0aW9ucworICAgICAgICAvLyBzbyBuZWVkcyB0byBrbm93
IGFib3V0IHRoZSBuZXcgSlNET01XaW5kb3cuCisgICAgICAgIGlmIChhdXRvKiBjYWNoZWFibGVC
aW5kaW5nUm9vdE9iamVjdCA9IHNjcmlwdENvbnRyb2xsZXIgPyBzY3JpcHRDb250cm9sbGVyLT5l
eGlzdGluZ0NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0KCkgOiBudWxscHRyKQorICAgICAgICAg
ICAgY2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QtPnVwZGF0ZUdsb2JhbE9iamVjdCh3aW5kb3dQ
cm94eS0+d2luZG93KCkpOworCisgICAgICAgIHdpbmRvd1Byb3h5LT5hdHRhY2hEZWJ1Z2dlcihw
YWdlID8gcGFnZS0+ZGVidWdnZXIoKSA6IG51bGxwdHIpOworICAgICAgICBpZiAocGFnZSkKKyAg
ICAgICAgICAgIHdpbmRvd1Byb3h5LT53aW5kb3coKS0+c2V0UHJvZmlsZUdyb3VwKHBhZ2UtPmdy
b3VwKCkuaWRlbnRpZmllcigpKTsKKyAgICAgICAgd2luZG93UHJveHktPndpbmRvdygpLT5zZXRD
b25zb2xlQ2xpZW50KHBhZ2UgPyAmcGFnZS0+Y29uc29sZSgpIDogbnVsbHB0cik7CisgICAgfQor
fQorCit2b2lkIFdpbmRvd1Byb3h5OjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1
Z2dlcikKK3sKKyAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogbV9qc1dpbmRvd1Byb3hpZXMu
dmFsdWVzKCkpCisgICAgICAgIHdpbmRvd1Byb3h5LT5hdHRhY2hEZWJ1Z2dlcihkZWJ1Z2dlcik7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
aW5kb3dQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZTM3MjlhZDA3MGI4NTQzYTJlNjMxMzVkYWU5NTk0
ODJkMTYzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
aW5kb3dQcm94eS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV2luZG93UHJveHkuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIERlYnVnZ2VyOworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEFic3RyYWN0RnJhbWU7CisKK2NsYXNzIFdpbmRvd1Byb3h5IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2luZyBQcm94eU1h
cCA9IEhhc2hNYXA8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIEpTQzo6U3Ryb25nPEpTRE9NV2lu
ZG93UHJveHk+PjsKKworICAgIGV4cGxpY2l0IFdpbmRvd1Byb3h5KEFic3RyYWN0RnJhbWUmKTsK
KyAgICB+V2luZG93UHJveHkoKTsKKworICAgIHZvaWQgZGVzdHJveUpTV2luZG93UHJveHkoRE9N
V3JhcHBlcldvcmxkJik7CisKKyAgICBQcm94eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdl
IGpzV2luZG93UHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fanNXaW5kb3dQcm94aWVzLnZhbHVl
cygpOyB9CisgICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTRE9NV2luZG93UHJveHk+PiBqc1dpbmRv
d1Byb3hpZXNBc1ZlY3RvcigpIGNvbnN0OworCisgICAgUHJveHlNYXAgcmVsZWFzZUpTV2luZG93
UHJveGllcygpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9qc1dpbmRvd1Byb3hpZXMsIFByb3h5
TWFwKCkpOyB9CisgICAgdm9pZCBzZXRKU1dpbmRvd1Byb3hpZXMoUHJveHlNYXAmJiB3aW5kb3dQ
cm94aWVzKSB7IG1fanNXaW5kb3dQcm94aWVzID0gV1RGTW92ZSh3aW5kb3dQcm94aWVzKTsgfQor
CisgICAgSlNET01XaW5kb3dQcm94eSYganNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmIHdv
cmxkKQorICAgIHsKKyAgICAgICAgYXV0byBpdCA9IG1fanNXaW5kb3dQcm94aWVzLmZpbmQoJndv
cmxkKTsKKyAgICAgICAgaWYgKGl0ICE9IG1fanNXaW5kb3dQcm94aWVzLmVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuICppdC0+dmFsdWUuZ2V0KCk7CisKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUpT
V2luZG93UHJveHlXaXRoSW5pdGlhbGl6ZWRTY3JpcHQod29ybGQpOworICAgIH0KKworICAgIEpT
RE9NV2luZG93UHJveHkqIGV4aXN0aW5nSlNXaW5kb3dQcm94eShET01XcmFwcGVyV29ybGQmIHdv
cmxkKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byBpdCA9IG1fanNXaW5kb3dQcm94aWVzLmZp
bmQoJndvcmxkKTsKKyAgICAgICAgcmV0dXJuIChpdCAhPSBtX2pzV2luZG93UHJveGllcy5lbmQo
KSkgPyBpdC0+dmFsdWUuZ2V0KCkgOiBudWxscHRyOworICAgIH0KKworICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBqc1dpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKTsKKyAgICB9CisKKyAgICB2
b2lkIGNsZWFySlNXaW5kb3dQcm94aWVzTm90TWF0Y2hpbmdET01XaW5kb3coQWJzdHJhY3RET01X
aW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldERPTVdpbmRvdyhBYnN0cmFjdERPTVdpbmRvdyopOworCisgICAgLy8gRGVidWdnZXIg
Y2FuIGJlIG51bGxwdHIgdG8gZGV0YWNoIGFueSBleGlzdGluZyBEZWJ1Z2dlci4KKyAgICB2b2lk
IGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqKTsgLy8gQXR0YWNoZXMvZGV0YWNoZXMgaW4g
YWxsIHdvcmxkcy93aW5kb3cgcHJveGllcy4KKworcHJpdmF0ZToKKyAgICBKU0RPTVdpbmRvd1By
b3h5JiBjcmVhdGVKU1dpbmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYpOworICAgIFdFQkNPUkVf
RVhQT1JUIEpTRE9NV2luZG93UHJveHkmIGNyZWF0ZUpTV2luZG93UHJveHlXaXRoSW5pdGlhbGl6
ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJik7CisKKyAgICBBYnN0cmFjdEZyYW1lJiBtX2ZyYW1l
OworICAgIFByb3h5TWFwIG1fanNXaW5kb3dQcm94aWVzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJv
eHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1Byb3h5
Q29udHJvbGxlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MmZmMjllYWM2
YjZhZmJmMTU4NTg1MWZlMjhjNDlmZTRkZjExMWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2luZG93UHJv
eHlDb250cm9sbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi0vKgotICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldpbmRvd1Byb3h5Q29udHJvbGxlci5oIgotCi0jaW5jbHVkZSAiQ29tbW9uVk0uaCIKLSNp
bmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlBh
Z2UuaCIKLSNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgotI2luY2x1ZGUgIlBhZ2VHcm91
cC5oIgotI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgiCi0jaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgotI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgdm9pZCBjb2xsZWN0R2FyYmFnZUFmdGVyV2luZG93
UHJveHlEZXN0cnVjdGlvbigpCi17Ci0gICAgLy8gTWFrZSBzdXJlIHRvIEdDIEV4dHJhIFNvb24o
dG0pIGR1cmluZyBtZW1vcnkgcHJlc3N1cmUgY29uZGl0aW9ucwotICAgIC8vIHRvIHNvZnRlbiBo
aWdoIHBlYWtzIG9mIG1lbW9yeSB1c2FnZSBkdXJpbmcgbmF2aWdhdGlvbi4KLSAgICBpZiAoTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkg
ewotICAgICAgICAvLyBOT1RFOiBXZSBkbyB0aGUgY29sbGVjdGlvbiBvbiBuZXh0IHJ1bmxvb3Ag
dG8gZW5zdXJlIHRoYXQgdGhlcmUncyBubyBwb2ludGVyCi0gICAgICAgIC8vICAgICAgIHRvIHRo
ZSB3aW5kb3cgb2JqZWN0IG9uIHRoZSBzdGFjay4KLSAgICAgICAgR0NDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5nYXJiYWdlQ29sbGVjdE9uTmV4dFJ1bkxvb3AoKTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgR0NDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nYXJiYWdlQ29sbGVjdFNvb24oKTsKLX0KLQot
V2luZG93UHJveHlDb250cm9sbGVyOjpXaW5kb3dQcm94eUNvbnRyb2xsZXIoQWJzdHJhY3RGcmFt
ZSYgZnJhbWUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQotewotfQotCi1XaW5kb3dQcm94eUNvbnRy
b2xsZXI6On5XaW5kb3dQcm94eUNvbnRyb2xsZXIoKQotewotICAgIC8vIEl0J3MgbGlrZWx5IHRo
YXQgZGVzdHJveWluZyB3aW5kb3dQcm94aWVzIHdpbGwgY3JlYXRlIGEgbG90IG9mIGdhcmJhZ2Uu
Ci0gICAgaWYgKCFtX3dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHdoaWxlICgh
bV93aW5kb3dQcm94aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYXV0byBpdCA9IG1fd2lu
ZG93UHJveGllcy5iZWdpbigpOwotICAgICAgICAgICAgaXQtPnZhbHVlLT53aW5kb3coKS0+c2V0
Q29uc29sZUNsaWVudChudWxscHRyKTsKLSAgICAgICAgICAgIGRlc3Ryb3lXaW5kb3dQcm94eSgq
aXQtPmtleSk7Ci0gICAgICAgIH0KLSAgICAgICAgY29sbGVjdEdhcmJhZ2VBZnRlcldpbmRvd1By
b3h5RGVzdHJ1Y3Rpb24oKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2luZG93UHJveHlDb250cm9sbGVy
OjpkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLXsKLSAgICBBU1NF
UlQobV93aW5kb3dQcm94aWVzLmNvbnRhaW5zKCZ3b3JsZCkpOwotICAgIG1fd2luZG93UHJveGll
cy5yZW1vdmUoJndvcmxkKTsKLSAgICB3b3JsZC5kaWREZXN0cm95V2luZG93UHJveHkodGhpcyk7
Ci19Ci0KLUpTRE9NV2luZG93UHJveHkmIFdpbmRvd1Byb3h5Q29udHJvbGxlcjo6Y3JlYXRlV2lu
ZG93UHJveHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKLXsKLSAgICBBU1NFUlQoIW1fd2luZG93
UHJveGllcy5jb250YWlucygmd29ybGQpKTsKLSAgICBBU1NFUlQobV9mcmFtZS53aW5kb3coKSk7
Ci0KLSAgICBWTSYgdm0gPSB3b3JsZC52bSgpOwotCi0gICAgU3Ryb25nPEpTRE9NV2luZG93UHJv
eHk+IHdpbmRvd1Byb3h5KHZtLCAmSlNET01XaW5kb3dQcm94eTo6Y3JlYXRlKHZtLCAqbV9mcmFt
ZS53aW5kb3coKSwgd29ybGQpKTsKLSAgICBTdHJvbmc8SlNET01XaW5kb3dQcm94eT4gd2luZG93
UHJveHkyKHdpbmRvd1Byb3h5KTsKLSAgICBtX3dpbmRvd1Byb3hpZXMuYWRkKCZ3b3JsZCwgd2lu
ZG93UHJveHkpOwotICAgIHdvcmxkLmRpZENyZWF0ZVdpbmRvd1Byb3h5KHRoaXMpOwotICAgIHJl
dHVybiAqd2luZG93UHJveHkuZ2V0KCk7Ci19Ci0KLVZlY3RvcjxKU0M6OlN0cm9uZzxKU0RPTVdp
bmRvd1Byb3h5Pj4gV2luZG93UHJveHlDb250cm9sbGVyOjp3aW5kb3dQcm94aWVzQXNWZWN0b3Io
KSBjb25zdAotewotICAgIHJldHVybiBjb3B5VG9WZWN0b3IobV93aW5kb3dQcm94aWVzLnZhbHVl
cygpKTsKLX0KLQotSlNET01XaW5kb3dQcm94eSYgV2luZG93UHJveHlDb250cm9sbGVyOjpjcmVh
dGVXaW5kb3dQcm94eVdpdGhJbml0aWFsaXplZFNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxk
KQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkpOwotICAgIGF1dG8mIHdpbmRv
d1Byb3h5ID0gY3JlYXRlV2luZG93UHJveHkod29ybGQpOwotICAgIGlmIChpczxGcmFtZT4obV9m
cmFtZSkpCi0gICAgICAgIGRvd25jYXN0PEZyYW1lPihtX2ZyYW1lKS5zY3JpcHQoKS5pbml0U2Ny
aXB0Rm9yV2luZG93UHJveHkod2luZG93UHJveHkpOwotICAgIHJldHVybiB3aW5kb3dQcm94eTsK
LX0KLQotdm9pZCBXaW5kb3dQcm94eUNvbnRyb2xsZXI6OmNsZWFyV2luZG93UHJveGllc05vdE1h
dGNoaW5nRE9NV2luZG93KEFic3RyYWN0RE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wgZ29p
bmdJbnRvUGFnZUNhY2hlKQotewotICAgIGlmIChtX3dpbmRvd1Byb3hpZXMuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9jayhjb21tb25WTSgpKTsKLQot
ICAgIGZvciAoYXV0byYgd2luZG93UHJveHkgOiB3aW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgewot
ICAgICAgICBpZiAoJndpbmRvd1Byb3h5LT53cmFwcGVkKCkgPT0gbmV3RE9NV2luZG93KQotICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gQ2xlYXIgdGhlIGRlYnVnZ2VyIGFuZCBj
b25zb2xlIGZyb20gdGhlIGN1cnJlbnQgd2luZG93IGJlZm9yZSBzZXR0aW5nIHRoZSBuZXcgd2lu
ZG93LgotICAgICAgICB3aW5kb3dQcm94eS0+YXR0YWNoRGVidWdnZXIobnVsbHB0cik7Ci0gICAg
ICAgIHdpbmRvd1Byb3h5LT53aW5kb3coKS0+c2V0Q29uc29sZUNsaWVudChudWxscHRyKTsKLSAg
ICAgICAgaWYgKGF1dG8qIGpzRE9NV2luZG93ID0ganNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvd0Jh
c2UqPigqd2luZG93UHJveHktPnZtKCksIHdpbmRvd1Byb3h5LT53aW5kb3coKSkpCi0gICAgICAg
ICAgICBqc0RPTVdpbmRvdy0+d2lsbFJlbW92ZUZyb21XaW5kb3dQcm94eSgpOwotICAgIH0KLQot
ICAgIC8vIEl0J3MgbGlrZWx5IHRoYXQgcmVzZXR0aW5nIG91ciB3aW5kb3dzIGNyZWF0ZWQgYSBs
b3Qgb2YgZ2FyYmFnZSwgdW5sZXNzCi0gICAgLy8gaXQgd2VudCBpbiBhIGJhY2svZm9yd2FyZCBj
YWNoZS4KLSAgICBpZiAoIWdvaW5nSW50b1BhZ2VDYWNoZSkKLSAgICAgICAgY29sbGVjdEdhcmJh
Z2VBZnRlcldpbmRvd1Byb3h5RGVzdHJ1Y3Rpb24oKTsKLX0KLQotdm9pZCBXaW5kb3dQcm94eUNv
bnRyb2xsZXI6OnNldERPTVdpbmRvd0ZvcldpbmRvd1Byb3h5KEFic3RyYWN0RE9NV2luZG93KiBu
ZXdET01XaW5kb3cpCi17Ci0gICAgQVNTRVJUKG5ld0RPTVdpbmRvdyk7Ci0KLSAgICBpZiAobV93
aW5kb3dQcm94aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSlNMb2NrSG9s
ZGVyIGxvY2soY29tbW9uVk0oKSk7Ci0KLSAgICBmb3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogd2lu
ZG93UHJveGllc0FzVmVjdG9yKCkpIHsKLSAgICAgICAgaWYgKCZ3aW5kb3dQcm94eS0+d3JhcHBl
ZCgpID09IG5ld0RPTVdpbmRvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHdp
bmRvd1Byb3h5LT5zZXRXaW5kb3coKm5ld0RPTVdpbmRvdyk7Ci0KLSAgICAgICAgU2NyaXB0Q29u
dHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IG51bGxwdHI7Ci0gICAgICAgIFBhZ2UqIHBhZ2Ug
PSBudWxscHRyOwotICAgICAgICBpZiAoaXM8RnJhbWU+KG1fZnJhbWUpKSB7Ci0gICAgICAgICAg
ICBhdXRvJiBmcmFtZSA9IGRvd25jYXN0PEZyYW1lPihtX2ZyYW1lKTsKLSAgICAgICAgICAgIHNj
cmlwdENvbnRyb2xsZXIgPSAmZnJhbWUuc2NyaXB0KCk7Ci0gICAgICAgICAgICBwYWdlID0gZnJh
bWUucGFnZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2NyaXB0Q29udHJvbGxlcidzIG1f
Y2FjaGVhYmxlQmluZGluZ1Jvb3RPYmplY3QgcGVyc2lzdHMgYmV0d2VlbiBwYWdlIG5hdmlnYXRp
b25zCi0gICAgICAgIC8vIHNvIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIG5ldyBKU0RPTVdpbmRv
dy4KLSAgICAgICAgaWYgKGF1dG8qIGNhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0ID0gc2NyaXB0
Q29udHJvbGxlciA/IHNjcmlwdENvbnRyb2xsZXItPmV4aXN0aW5nQ2FjaGVhYmxlQmluZGluZ1Jv
b3RPYmplY3QoKSA6IG51bGxwdHIpCi0gICAgICAgICAgICBjYWNoZWFibGVCaW5kaW5nUm9vdE9i
amVjdC0+dXBkYXRlR2xvYmFsT2JqZWN0KHdpbmRvd1Byb3h5LT53aW5kb3coKSk7Ci0KLSAgICAg
ICAgd2luZG93UHJveHktPmF0dGFjaERlYnVnZ2VyKHBhZ2UgPyBwYWdlLT5kZWJ1Z2dlcigpIDog
bnVsbHB0cik7Ci0gICAgICAgIGlmIChwYWdlKQotICAgICAgICAgICAgd2luZG93UHJveHktPndp
bmRvdygpLT5zZXRQcm9maWxlR3JvdXAocGFnZS0+Z3JvdXAoKS5pZGVudGlmaWVyKCkpOwotICAg
ICAgICB3aW5kb3dQcm94eS0+d2luZG93KCktPnNldENvbnNvbGVDbGllbnQocGFnZSA/ICZwYWdl
LT5jb25zb2xlKCkgOiBudWxscHRyKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2luZG93UHJveHlDb250
cm9sbGVyOjphdHRhY2hEZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcikKLXsKLSAgICBm
b3IgKGF1dG8mIHdpbmRvd1Byb3h5IDogbV93aW5kb3dQcm94aWVzLnZhbHVlcygpKQotICAgICAg
ICB3aW5kb3dQcm94eS0+YXR0YWNoRGVidWdnZXIoZGVidWdnZXIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XaW5k
b3dQcm94eUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1By
b3h5Q29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDZmNDgxMzg4
ZjRjZDRhYTkxNGZlM2IxMTdkYjlhNTFkODhjMDc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dpbmRvd1By
b3h5Q29udHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHly
aWdodCAoQykgMjAwNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNE
T01XaW5kb3dQcm94eS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgRGVidWdnZXI7
Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQWJzdHJhY3RGcmFtZTsKLQotY2xh
c3MgV2luZG93UHJveHlDb250cm9sbGVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICB1c2luZyBQcm94eU1hcCA9IEhhc2hNYXA8UmVmUHRyPERPTVdyYXBwZXJX
b3JsZD4sIEpTQzo6U3Ryb25nPEpTRE9NV2luZG93UHJveHk+PjsKLQotICAgIGV4cGxpY2l0IFdp
bmRvd1Byb3h5Q29udHJvbGxlcihBYnN0cmFjdEZyYW1lJik7Ci0gICAgfldpbmRvd1Byb3h5Q29u
dHJvbGxlcigpOwotCi0gICAgdm9pZCBkZXN0cm95V2luZG93UHJveHkoRE9NV3JhcHBlcldvcmxk
Jik7Ci0KLSAgICBQcm94eU1hcDo6VmFsdWVzQ29uc3RJdGVyYXRvclJhbmdlIHdpbmRvd1Byb3hp
ZXMoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvd1Byb3hpZXMudmFsdWVzKCk7IH0KLSAgICBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNET01XaW5kb3dQcm94eT4+IHdpbmRvd1Byb3hpZXNBc1ZlY3Rvcigp
IGNvbnN0OwotCi0gICAgUHJveHlNYXAgcmVsZWFzZVdpbmRvd1Byb3hpZXMoKSB7IHJldHVybiBz
dGQ6OmV4Y2hhbmdlKG1fd2luZG93UHJveGllcywgUHJveHlNYXAoKSk7IH0KLSAgICB2b2lkIHNl
dFdpbmRvd1Byb3hpZXMoUHJveHlNYXAmJiB3aW5kb3dQcm94aWVzKSB7IG1fd2luZG93UHJveGll
cyA9IFdURk1vdmUod2luZG93UHJveGllcyk7IH0KLQotICAgIEpTRE9NV2luZG93UHJveHkmIHdp
bmRvd1Byb3h5KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCi0gICAgewotICAgICAgICBhdXRvIGl0
ID0gbV93aW5kb3dQcm94aWVzLmZpbmQoJndvcmxkKTsKLSAgICAgICAgaWYgKGl0ICE9IG1fd2lu
ZG93UHJveGllcy5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiAqaXQtPnZhbHVlLmdldCgpOwot
Ci0gICAgICAgIHJldHVybiBjcmVhdGVXaW5kb3dQcm94eVdpdGhJbml0aWFsaXplZFNjcmlwdCh3
b3JsZCk7Ci0gICAgfQotCi0gICAgSlNET01XaW5kb3dQcm94eSogZXhpc3RpbmdXaW5kb3dQcm94
eShET01XcmFwcGVyV29ybGQmIHdvcmxkKSBjb25zdAotICAgIHsKLSAgICAgICAgYXV0byBpdCA9
IG1fd2luZG93UHJveGllcy5maW5kKCZ3b3JsZCk7Ci0gICAgICAgIHJldHVybiAoaXQgIT0gbV93
aW5kb3dQcm94aWVzLmVuZCgpKSA/IGl0LT52YWx1ZS5nZXQoKSA6IG51bGxwdHI7Ci0gICAgfQot
Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdv
cmxkKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHdpbmRvd1Byb3h5KHdvcmxkKS53aW5kb3coKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGNsZWFyV2luZG93UHJveGllc05vdE1hdGNoaW5nRE9NV2luZG93
KEFic3RyYWN0RE9NV2luZG93KiwgYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpOwotCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRET01XaW5kb3dGb3JXaW5kb3dQcm94eShBYnN0cmFjdERPTVdp
bmRvdyopOwotCi0gICAgLy8gRGVidWdnZXIgY2FuIGJlIG51bGxwdHIgdG8gZGV0YWNoIGFueSBl
eGlzdGluZyBEZWJ1Z2dlci4KLSAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKEpTQzo6RGVidWdnZXIq
KTsgLy8gQXR0YWNoZXMvZGV0YWNoZXMgaW4gYWxsIHdvcmxkcy93aW5kb3cgcHJveGllcy4KLQot
cHJpdmF0ZToKLSAgICBKU0RPTVdpbmRvd1Byb3h5JiBjcmVhdGVXaW5kb3dQcm94eShET01XcmFw
cGVyV29ybGQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBKU0RPTVdpbmRvd1Byb3h5JiBjcmVhdGVX
aW5kb3dQcm94eVdpdGhJbml0aWFsaXplZFNjcmlwdChET01XcmFwcGVyV29ybGQmKTsKLQotICAg
IEFic3RyYWN0RnJhbWUmIG1fZnJhbWU7Ci0gICAgUHJveHlNYXAgbV93aW5kb3dQcm94aWVzOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggYTQ1NGRkOTZiOTRhNTVjMDMwOWM0ZTY0MzY3MjNlYWJmNDk1M2Q2NS4uODc5
OWRhNmUwMGUzMWY1Y2RkMGY2MzUwZDgxNmQ4NjgxNTE5ZDUwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNsZWFyV2luZG93UHJvcGVydGllcywg
Ym9vbAogICAgIGlmIChjbGVhcldpbmRvd1Byb3BlcnRpZXMpIHsKICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChtX2ZyYW1lLCBtX2ZyYW1lLmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpKTsKICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5kb21X
aW5kb3coKS0+cmVzZXRVbmxlc3NTdXNwZW5kZWRGb3JEb2N1bWVudFN1c3BlbnNpb24oKTsKLSAg
ICAgICAgbV9mcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5jbGVhcldpbmRvd1Byb3hpZXNO
b3RNYXRjaGluZ0RPTVdpbmRvdyhuZXdEb2N1bWVudC0+ZG9tV2luZG93KCksIG1fZnJhbWUuZG9j
dW1lbnQoKS0+cGFnZUNhY2hlU3RhdGUoKSA9PSBEb2N1bWVudDo6QWJvdXRUb0VudGVyUGFnZUNh
Y2hlKTsKKyAgICAgICAgbV9mcmFtZS53aW5kb3dQcm94eSgpLmNsZWFySlNXaW5kb3dQcm94aWVz
Tm90TWF0Y2hpbmdET01XaW5kb3cobmV3RG9jdW1lbnQtPmRvbVdpbmRvdygpLCBtX2ZyYW1lLmRv
Y3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6OkFib3V0VG9FbnRlclBhZ2VD
YWNoZSk7CiAKICAgICAgICAgaWYgKHNob3VsZENsZWFyV2luZG93TmFtZShtX2ZyYW1lLCAqbmV3
RG9jdW1lbnQpKQogICAgICAgICAgICAgbV9mcmFtZS50cmVlKCkuc2V0TmFtZShudWxsQXRvbSgp
KTsKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCog
bmV3RG9jdW1lbnQsIGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sCiAgICAgc3ViZnJh
bWVMb2FkZXIoKS5jbGVhcigpOwogCiAgICAgaWYgKGNsZWFyV2luZG93UHJvcGVydGllcykKLSAg
ICAgICAgbV9mcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIoKS5zZXRET01XaW5kb3dGb3JXaW5k
b3dQcm94eShuZXdEb2N1bWVudC0+ZG9tV2luZG93KCkpOworICAgICAgICBtX2ZyYW1lLndpbmRv
d1Byb3h5KCkuc2V0RE9NV2luZG93KG5ld0RvY3VtZW50LT5kb21XaW5kb3coKSk7CiAKICAgICBp
ZiAoY2xlYXJTY3JpcHRPYmplY3RzKQogICAgICAgICBtX2ZyYW1lLnNjcmlwdCgpLmNsZWFyU2Ny
aXB0T2JqZWN0cygpOwpAQCAtMzY0NSw3ICszNjQ1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlz
cGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpCiAKIHZvaWQgRnJhbWVMb2Fk
ZXI6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQpCiB7Ci0gICAgaWYgKCFtX2ZyYW1lLnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5v
dEFib3V0VG9FeGVjdXRlU2NyaXB0KSB8fCAhbV9mcmFtZS53aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS5leGlzdGluZ1dpbmRvd1Byb3h5KHdvcmxkKSkKKyAgICBpZiAoIW1fZnJhbWUuc2NyaXB0KCku
Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8ICFtX2ZyYW1lLndp
bmRvd1Byb3h5KCkuZXhpc3RpbmdKU1dpbmRvd1Byb3h5KHdvcmxkKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQod29y
bGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5jcHAKaW5kZXggMDdkYjUwNjg1NTEx
MTJmMTQ5ZWNhNzE3ODAxYjMxOTg4MWVlNzA3OS4uMWZkZWQ0MGVhMDQ3Zjc1ZGM2MGY5YzgxZmU3
NTVlZTMxMjBkZmQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9BYnN0cmFjdEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuY3BwCkBAIC0y
NiwxMiArMjYsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBYnN0cmFjdEZy
YW1lLmgiCiAKLSNpbmNsdWRlICJXaW5kb3dQcm94eUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJX
aW5kb3dQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFic3RyYWN0RnJhbWU6OkFi
c3RyYWN0RnJhbWUoKQotICAgIDogbV93aW5kb3dQcm94eUNvbnRyb2xsZXIobWFrZVVuaXF1ZVJl
ZjxXaW5kb3dQcm94eUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICA6IG1fd2luZG93UHJveHkobWFr
ZVVuaXF1ZVJlZjxXaW5kb3dQcm94eT4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Fic3RyYWN0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJz
dHJhY3RGcmFtZS5oCmluZGV4IDMzNGM5ZWNjYTQ1ODZkZjhiZDZmMmI1YTAzNGNjOTVlNWI4OGY2
MTMuLmM2NWIzYWM0ODdiZjM1M2MwN2M1NjlhNWFiYmVmZGViOWM4ZTI0NGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQWJzdHJhY3RGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQWJzdHJhY3RGcmFtZS5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFic3RyYWN0RE9NV2luZG93OwotY2xhc3MgV2luZG93UHJveHlDb250cm9s
bGVyOworY2xhc3MgV2luZG93UHJveHk7CiAKIC8vIEZJWE1FOiBSZW5hbWUgRnJhbWUgdG8gTG9j
YWxGcmFtZSBhbmQgQWJzdHJhY3RGcmFtZSB0byBGcmFtZS4KIGNsYXNzIEFic3RyYWN0RnJhbWUg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWJzdHJhY3RGcmFtZT4gewpAQCAtNDEsOCAr
NDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzTG9jYWxGcmFtZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVGcmFtZSgpIGNvbnN0ID0gMDsKIAotICAgIFdp
bmRvd1Byb3h5Q29udHJvbGxlciYgd2luZG93UHJveHlDb250cm9sbGVyKCkgeyByZXR1cm4gbV93
aW5kb3dQcm94eUNvbnRyb2xsZXI7IH0KLSAgICBjb25zdCBXaW5kb3dQcm94eUNvbnRyb2xsZXIm
IHdpbmRvd1Byb3h5Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93UHJveHlDb250
cm9sbGVyOyB9CisgICAgV2luZG93UHJveHkmIHdpbmRvd1Byb3h5KCkgeyByZXR1cm4gbV93aW5k
b3dQcm94eTsgfQorICAgIGNvbnN0IFdpbmRvd1Byb3h5JiB3aW5kb3dQcm94eSgpIGNvbnN0IHsg
cmV0dXJuIG1fd2luZG93UHJveHk7IH0KIAogICAgIEFic3RyYWN0RE9NV2luZG93KiB3aW5kb3co
KSBjb25zdCB7IHJldHVybiB2aXJ0dWFsV2luZG93KCk7IH0KIApAQCAtNTIsNyArNTIsNyBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgQWJzdHJhY3RET01XaW5kb3cqIHZpcnR1
YWxXaW5kb3coKSBjb25zdCA9IDA7CiAKLSAgICBVbmlxdWVSZWY8V2luZG93UHJveHlDb250cm9s
bGVyPiBtX3dpbmRvd1Byb3h5Q29udHJvbGxlcjsKKyAgICBVbmlxdWVSZWY8V2luZG93UHJveHk+
IG1fd2luZG93UHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAzNjI0ODc2OTQ2YzJjMjBlN2RiOGY5OTA5MDI3ZDViYmYyNGYyNGFjLi5iMzQ1
OGY1ZGJlN2FjOWZiNzIyNWM2NWQ0MDdmZGNmZWZmYzA5MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTEyNTcsNyArMTI1Nyw3IEBAIHZvaWQgUGFnZTo6c2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dl
ciogZGVidWdnZXIpCiAgICAgbV9kZWJ1Z2dlciA9IGRlYnVnZ2VyOwogCiAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT53aW5kb3dQcm94eUNvbnRyb2xsZXIo
KS5hdHRhY2hEZWJ1Z2dlcihtX2RlYnVnZ2VyKTsKKyAgICAgICAgZnJhbWUtPndpbmRvd1Byb3h5
KCkuYXR0YWNoRGVidWdnZXIobV9kZWJ1Z2dlcik7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2UqIFBh
Z2U6OnNlc3Npb25TdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbW90ZURPTVdpbmRvdy5jcHAKaW5kZXggZDViNDZmM2UyZjVkNmM5ZGEzMTZmMTljZWJlYzk1
MmYwYmNmMzliZi4uODI1MzQ4ZDM1NDg5YWI1Y2EzZmNlZjYxYzgzNWQ0MDcxZmZkMWYyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmNwcApAQCAtNDUsMTEgKzQ1LDExIEBA
IFJlbW90ZURPTVdpbmRvdzo6flJlbW90ZURPTVdpbmRvdygpCiAgICAgICAgIG1fZnJhbWUtPnNl
dFdpbmRvdyhudWxscHRyKTsKIH0KIAotV2luZG93UHJveHlDb250cm9sbGVyKiBSZW1vdGVET01X
aW5kb3c6OnNlbGYoKSBjb25zdAorV2luZG93UHJveHkqIFJlbW90ZURPTVdpbmRvdzo6c2VsZigp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gJm1fZnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpOworICAgIHJldHVybiAm
bV9mcmFtZS0+d2luZG93UHJveHkoKTsKIH0KIAogTG9jYXRpb24qIFJlbW90ZURPTVdpbmRvdzo6
bG9jYXRpb24oKSBjb25zdApAQCAtODUsMTYgKzg1LDE2IEBAIHVuc2lnbmVkIFJlbW90ZURPTVdp
bmRvdzo6bGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotV2luZG93UHJveHlDb250
cm9sbGVyKiBSZW1vdGVET01XaW5kb3c6OnRvcCgpIGNvbnN0CitXaW5kb3dQcm94eSogUmVtb3Rl
RE9NV2luZG93Ojp0b3AoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50ZWQgdGhpcy4KLSAgICByZXR1
cm4gJm1fZnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpOworICAgIHJldHVybiAmbV9mcmFt
ZS0+d2luZG93UHJveHkoKTsKIH0KIAotV2luZG93UHJveHlDb250cm9sbGVyKiBSZW1vdGVET01X
aW5kb3c6Om9wZW5lcigpIGNvbnN0CitXaW5kb3dQcm94eSogUmVtb3RlRE9NV2luZG93OjpvcGVu
ZXIoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMDMsMTYgKzEwMywxNiBAQCBXaW5kb3dQcm94eUNvbnRyb2xsZXIqIFJlbW90ZURPTVdp
bmRvdzo6b3BlbmVyKCkgY29uc3QKICAgICBpZiAoIW9wZW5lckZyYW1lKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiAmb3BlbmVyRnJhbWUtPndpbmRvd1Byb3h5Q29udHJv
bGxlcigpOworICAgIHJldHVybiAmb3BlbmVyRnJhbWUtPndpbmRvd1Byb3h5KCk7CiB9CiAKLVdp
bmRvd1Byb3h5Q29udHJvbGxlciogUmVtb3RlRE9NV2luZG93OjpwYXJlbnQoKSBjb25zdAorV2lu
ZG93UHJveHkqIFJlbW90ZURPTVdpbmRvdzo6cGFyZW50KCkgY29uc3QKIHsKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dGVkIHRoaXMuCi0gICAgcmV0dXJuICZtX2ZyYW1lLT53aW5kb3dQcm94eUNvbnRyb2xsZXIoKTsK
KyAgICByZXR1cm4gJm1fZnJhbWUtPndpbmRvd1Byb3h5KCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IFJlbW90ZURPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBET01XaW5k
b3cmIGluY3VtYmVudFdpbmRvdywgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
dGFyZ2V0T3JpZ2luLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaAppbmRleCAzYTcxNTExYmVjZGMxYjdjOGU1YWE4
NjhmN2EzM2Q3YTA0ZDM2ODg5Li5iZDBjMDUyYmE0NzExMDFhNDVlZDUyZWM5Y2E5YWYzYzk2MTBj
MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKQEAgLTU1LDE2ICs1NSwx
NiBAQCBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIC8vIERPTSBB
UEkgZXhwb3NlZCBjcm9zcy1vcmlnaW4uCi0gICAgV2luZG93UHJveHlDb250cm9sbGVyKiBzZWxm
KCkgY29uc3Q7CisgICAgV2luZG93UHJveHkqIHNlbGYoKSBjb25zdDsKICAgICBMb2NhdGlvbiog
bG9jYXRpb24oKSBjb25zdDsKICAgICB2b2lkIGNsb3NlKERvY3VtZW50Jik7CiAgICAgYm9vbCBj
bG9zZWQoKSBjb25zdDsKICAgICB2b2lkIGZvY3VzKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93
KTsKICAgICB2b2lkIGJsdXIoKTsKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBX
aW5kb3dQcm94eUNvbnRyb2xsZXIqIHRvcCgpIGNvbnN0OwotICAgIFdpbmRvd1Byb3h5Q29udHJv
bGxlciogb3BlbmVyKCkgY29uc3Q7Ci0gICAgV2luZG93UHJveHlDb250cm9sbGVyKiBwYXJlbnQo
KSBjb25zdDsKKyAgICBXaW5kb3dQcm94eSogdG9wKCkgY29uc3Q7CisgICAgV2luZG93UHJveHkq
IG9wZW5lcigpIGNvbnN0OworICAgIFdpbmRvd1Byb3h5KiBwYXJlbnQoKSBjb25zdDsKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIERPTVdpbmRvdyYg
aW5jdW1iZW50V2luZG93LCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB0YXJn
ZXRPcmlnaW4sIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJik7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IDBlZDY2MjRjMWM4OTA0NTNjM2Y1NmNhOWQwYTEzYjMxZDhjYWI5NTAuLmE3ZmNhY2Vk
YWExMTY3MDdjY2RmODM4YzBhODJjYjFhYTliNDk5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCBO
UE9iamVjdCogUGx1Z2luVmlldzo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0
T3JDcmVhdGVOUE9iamVjdChwbHVnaW5Xb3JsZCgpLnZtKCksIGZyYW1lKCktPndpbmRvd1Byb3h5
Q29udHJvbGxlcigpLndpbmRvd1Byb3h5KHBsdWdpbldvcmxkKCkpLndpbmRvdygpKTsKKyAgICBy
ZXR1cm4gbV9ucFJ1bnRpbWVPYmplY3RNYXAuZ2V0T3JDcmVhdGVOUE9iamVjdChwbHVnaW5Xb3Js
ZCgpLnZtKCksIGZyYW1lKCktPndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eShwbHVnaW5Xb3Js
ZCgpKS53aW5kb3coKSk7CiB9CiAKIE5QT2JqZWN0KiBQbHVnaW5WaWV3OjpwbHVnaW5FbGVtZW50
TlBPYmplY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA5ZTkxYzNiOGU1MjMzOGI2NDkyY2Q2NjljMjExZjEyNWJhZjY0Y2IxLi4wMGJjMTdk
ZGZmNTg2ZjMxOTk0YzViZWEyNjk0YWNiZTVmMzhmOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTg4OCw5ICs1ODg4LDkgQEAgdm9pZCBX
ZWJQYWdlOjpmcmFtZUJlY2FtZVJlbW90ZSh1aW50NjRfdCBmcmFtZUlELCBHbG9iYWxGcmFtZUlk
ZW50aWZpZXImJiByZW1vdGUKIAogICAgIHJlbW90ZUZyYW1lLT5zZXRPcGVuZXIoZnJhbWUtPmNv
cmVGcmFtZSgpLT5sb2FkZXIoKS5vcGVuZXIoKSk7CiAKLSAgICBhdXRvIHdpbmRvd1Byb3hpZXMg
PSBmcmFtZS0+Y29yZUZyYW1lKCktPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLnJlbGVhc2VXaW5k
b3dQcm94aWVzKCk7Ci0gICAgcmVtb3RlRnJhbWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpLnNl
dFdpbmRvd1Byb3hpZXMoV1RGTW92ZSh3aW5kb3dQcm94aWVzKSk7Ci0gICAgcmVtb3RlRnJhbWUt
PndpbmRvd1Byb3h5Q29udHJvbGxlcigpLnNldERPTVdpbmRvd0ZvcldpbmRvd1Byb3h5KHJlbW90
ZVdpbmRvdy5wdHIoKSk7CisgICAgYXV0byBqc1dpbmRvd1Byb3hpZXMgPSBmcmFtZS0+Y29yZUZy
YW1lKCktPndpbmRvd1Byb3h5KCkucmVsZWFzZUpTV2luZG93UHJveGllcygpOworICAgIHJlbW90
ZUZyYW1lLT53aW5kb3dQcm94eSgpLnNldEpTV2luZG93UHJveGllcyhXVEZNb3ZlKGpzV2luZG93
UHJveGllcykpOworICAgIHJlbW90ZUZyYW1lLT53aW5kb3dQcm94eSgpLnNldERPTVdpbmRvdyhy
ZW1vdGVXaW5kb3cucHRyKCkpOwogCiAgICAgYXV0byogY29yZUZyYW1lID0gZnJhbWUtPmNvcmVG
cmFtZSgpOwogICAgIGNvcmVGcmFtZS0+c2V0VmlldyhudWxscHRyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCBiMzBlZDIyNDVlMTU3MzQ2NDdiM2U0MjY1
NDkwZTE1ZDA5ZjQwYTFkLi5iYjg5Y2JiOGI5NTlkNDE5ZWVmZWQ4NzM0OGRhZDI4OGZkMThhNDUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC04MzksNyAr
ODM5LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmdldFdpbmRvd05QT2Jq
ZWN0KHVpbnQzMl90JiBvYmplY3RJRCkKICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVj
dXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIG9iamVjdElEID0g
MDsKICAgICBlbHNlCi0gICAgICAgIG9iamVjdElEID0gbV9sb2NhbE9iamVjdHMuaWRGb3JPYmpl
Y3QocGx1Z2luV29ybGQoKS52bSgpLCBmcmFtZS0+d2luZG93UHJveHlDb250cm9sbGVyKCkud2lu
ZG93UHJveHkocGx1Z2luV29ybGQoKSkud2luZG93KCkpOworICAgICAgICBvYmplY3RJRCA9IG1f
bG9jYWxPYmplY3RzLmlkRm9yT2JqZWN0KHBsdWdpbldvcmxkKCkudm0oKSwgZnJhbWUtPndpbmRv
d1Byb3h5KCkuanNXaW5kb3dQcm94eShwbHVnaW5Xb3JsZCgpKS53aW5kb3coKSk7CiAgICAgICAg
IAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KaW5kZXggYjZiNzk1NzkyZGZkYjc1NDRmOGY4ZTY3M2Y0Y2I3ZWIxNjc2MTcw
NS4uMDMzODUxYzYyODRkOWNiYThiYjk3ZTUwNGVmNzc0NDA1MmY4NDJlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0zNjAsMTUgKzM2MCwxNSBA
QCArICh2b2lkKV9jcmVhdGVNYWluRnJhbWVXaXRoU2ltcGxlSFRNTERvY3VtZW50V2l0aFBhZ2U6
KFBhZ2UqKXBhZ2UgZnJhbWVWaWV3OihXZQogCiAtICh2b2lkKV9hdHRhY2hTY3JpcHREZWJ1Z2dl
cgogewotICAgIGF1dG8mIHdpbmRvd1Byb3h5Q29udHJvbGxlciA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPndpbmRvd1Byb3h5Q29udHJvbGxlcigpOworICAgIGF1dG8mIHdpbmRvd1Byb3h5ID0gX3By
aXZhdGUtPmNvcmVGcmFtZS0+d2luZG93UHJveHkoKTsKIAogICAgIC8vIENhbGxpbmcgU2NyaXB0
Q29udHJvbGxlcjo6Z2xvYmFsT2JqZWN0KCkgd291bGQgY3JlYXRlIGEgd2luZG93IHByb3h5LCBh
bmQgZGlzcGF0Y2ggY29ycmVzcG9uZGluZyBjYWxsYmFja3MsIHdoaWNoIG1heSBiZSBwcmVtYXR1
cmUKICAgICAvLyBpZiB0aGUgc2NyaXB0IGRlYnVnZ2VyIGlzIGF0dGFjaGVkIGJlZm9yZSBhIGRv
Y3VtZW50IGlzIGNyZWF0ZWQuICBUaGVzZSBjYWxscyB1c2UgdGhlIGRlYnVnZ2VyV29ybGQoKSwg
d2Ugd2lsbCBuZWVkIHRvIHBhc3MgYSB3b3JsZAogICAgIC8vIHRvIGJlIGFibGUgdG8gZGVidWcg
aXNvbGF0ZWQgd29ybGRzLgotICAgIGlmICghd2luZG93UHJveHlDb250cm9sbGVyLmV4aXN0aW5n
V2luZG93UHJveHkoZGVidWdnZXJXb3JsZCgpKSkKKyAgICBpZiAoIXdpbmRvd1Byb3h5LmV4aXN0
aW5nSlNXaW5kb3dQcm94eShkZWJ1Z2dlcldvcmxkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSB3aW5kb3dQcm94eUNvbnRyb2xsZXIuZ2xvYmFsT2JqZWN0
KGRlYnVnZ2VyV29ybGQoKSk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gd2luZG93UHJveHku
Z2xvYmFsT2JqZWN0KGRlYnVnZ2VyV29ybGQoKSk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QpCiAg
ICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>