<?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>232975</bug_id>
          
          <creation_ts>2021-11-10 17:18:06 -0800</creation_ts>
          <short_desc>Move m_doesGC from Heap to VM.</short_desc>
          <delta_ts>2021-11-11 09:32:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          
          <blocked>232849</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813851</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-10 17:18:06 -0800</bug_when>
    <thetext>m_doesGC is only needed for ENABLE(DFG_DOES_GC_VALIDATION), and is used for checking if the VM thread&apos;s execution is in a state that can allow GC to run.  Hence, it is more related to VM thread execution as opposed to the state of the Heap.  This patch moves m_doesGC from Heap to VM to get it out of the way of upcoming Global GC work.

Also change DeferGC and DeferGCForAWhile to take a VM&amp; instead of a Heap&amp;.  DeferGC needs to access VM&amp; in order to call VM::verifyCanGC().  DeferGCForAWhile does not need VM&amp;, but we&apos;re changing it to be consistent with DeferGC.  There should be no perf impact for this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813852</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-10 17:18:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/85277492&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813864</commentid>
    <comment_count>2</comment_count>
      <attachid>443885</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-10 17:46:28 -0800</bug_when>
    <thetext>Created attachment 443885
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814067</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-11-11 09:32:21 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r285636: &lt;http://trac.webkit.org/r285636&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443885</attachid>
            <date>2021-11-10 17:46:28 -0800</date>
            <delta_ts>2021-11-11 08:56:21 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-232975.patch</filename>
            <type>text/plain</type>
            <size>95483</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NjE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5NiBA
QAorMjAyMS0xMS0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBtX2RvZXNHQyBmcm9tIEhlYXAgdG8gVk0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI5NzUKKyAgICAgICAgcmRhcjovLzg1Mjc3NDkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbV9kb2VzR0Mg
aXMgb25seSBuZWVkZWQgZm9yIEVOQUJMRShERkdfRE9FU19HQ19WQUxJREFUSU9OKSwgYW5kIGlz
IHVzZWQgZm9yIGNoZWNraW5nCisgICAgICAgIGlmIHRoZSBWTSB0aHJlYWQncyBleGVjdXRpb24g
aXMgaW4gYSBzdGF0ZSB0aGF0IGNhbiBhbGxvdyBHQyB0byBydW4uICBIZW5jZSwgaXQgaXMKKyAg
ICAgICAgbW9yZSByZWxhdGVkIHRvIFZNIHRocmVhZCBleGVjdXRpb24gYXMgb3Bwb3NlZCB0byB0
aGUgc3RhdGUgb2YgdGhlIEhlYXAuICBUaGlzIHBhdGNoCisgICAgICAgIG1vdmVzIG1fZG9lc0dD
IGZyb20gSGVhcCB0byBWTSB0byBnZXQgaXQgb3V0IG9mIHRoZSB3YXkgb2YgdXBjb21pbmcgR2xv
YmFsIEdDIHdvcmsuCisKKyAgICAgICAgQWxzbyBjaGFuZ2UgRGVmZXJHQywgRGVmZXJHQ0ZvckFX
aGlsZSwgYW5kIEdDRGVmZXJyYWxDb250ZXh0IHRvIHRha2UgYSBWTSYgaW5zdGVhZAorICAgICAg
ICBvZiBhIEhlYXAmLiAgRGVmZXJHQyBhbmQgR0NEZWZlcnJhbENvbnRleHQgbmVlZCB0byBhY2Nl
c3MgVk0mIGluIG9yZGVyIHRvIGNhbGwKKyAgICAgICAgVk06OnZlcmlmeUNhbkdDKCkuICBEZWZl
ckdDRm9yQVdoaWxlIGRvZXMgbm90IG5lZWQgVk0mLCBidXQgd2UncmUgY2hhbmdpbmcgaXQgdG8g
YmUKKyAgICAgICAgY29uc2lzdGVudCB3aXRoIERlZmVyR0MuICBUaGVyZSBzaG91bGQgYmUgbm8g
cGVyZiBpbXBhY3QgZm9yIHRoaXMgY2hhbmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmpldHRpc29uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVD
YWNoZWRDb2RlQmxvY2tzKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50LmNwcDoKKyAg
ICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6ZmlyZUFsbFdhdGNocG9pbnRzKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDQ2hlY2suY3Bw
OgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBp
bGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
TG9vcEhpbnQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAg
ICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
b21waWxlU3R1Yik6CisgICAgICAgIChKU0M6OkZUTDo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3Bh
Y2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3cp
OgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9j
YXRpb25Ob25WaXJ0dWFsKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6
CisgICAgICAgICogaGVhcC9EZWZlckdDLmg6CisgICAgICAgIChKU0M6OkRlZmVyR0M6OkRlZmVy
R0MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWZlckdDOjp+RGVmZXJHQyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkRlZmVyR0NGb3JBV2hpbGU6OkRlZmVyR0NGb3JBV2hpbGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpEZWZlckdDRm9yQVdoaWxlOjp+RGVmZXJHQ0ZvckFXaGlsZSk6
IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9EZWZlckdDSW5saW5lcy5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6RGVmZXJHQzo6RGVmZXJHQyk6CisgICAgICAgIChKU0M6OkRlZmVyR0M6On5EZWZl
ckdDKToKKyAgICAgICAgKEpTQzo6RGVmZXJHQ0ZvckFXaGlsZTo6RGVmZXJHQ0ZvckFXaGlsZSk6
CisgICAgICAgIChKU0M6OkRlZmVyR0NGb3JBV2hpbGU6On5EZWZlckdDRm9yQVdoaWxlKToKKyAg
ICAgICAgKiBoZWFwL0dDRGVmZXJyYWxDb250ZXh0Lmg6CisgICAgICAgICogaGVhcC9HQ0RlZmVy
cmFsQ29udGV4dElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6R0NEZWZlcnJhbENvbnRleHQ6OkdD
RGVmZXJyYWxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6R0NEZWZlcnJhbENvbnRleHQ6On5HQ0Rl
ZmVycmFsQ29udGV4dCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdE5vdyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RBc3luYyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RTeW5jKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c3Rv
cElmTmVjZXNzYXJ5U2xvdyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJZk5lY2Vzc2Fy
eU9yRGVmZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRyZXNzT2ZEb2VzR0MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpIZWFwOjpzZXREb2VzR0NF
eHBlY3RhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OnZlcmlmeUNhbkdDKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0hlYXBJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Okhl
YXA6OmFjcXVpcmVBY2Nlc3MpOgorICAgICAgICAoSlNDOjpIZWFwOjpzdG9wSWZOZWNlc3Nhcnkp
OgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAgICAgIChKU0M6
OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxT
d2VlcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVyOjpzd2VlcE5leHRC
bG9jayk6CisgICAgICAgICogaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6TG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKiBoZWFwL1ByZWNpc2VB
bGxvY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6UHJlY2lzZUFsbG9jYXRpb246OnRyeUNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlByZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIp
OgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUhvbGRlcnMpOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50OjpnZXRQcmV2aWV3KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9ySGVhcEFnZW50OjpnZXRSZW1vdGVPYmplY3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnRyYWNraW5nQ29tcGxl
dGUpOgorICAgICAgICAqIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW5JbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OlNoYWRvd0NoaWNrZW46Oml0ZXJhdGUpOgorICAgICAgICAqIGppdC9KSVRPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAg
ICAgICAgKiBqaXQvSklUV29ya2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6
Y29tcGxldGVBbGxSZWFkeVBsYW5zRm9yVk0pOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6
d2FpdFVudGlsQWxsUGxhbnNGb3JWTUFyZVJlYWR5KToKKyAgICAgICAgKEpTQzo6SklUV29ya2xp
c3Q6OmNvbXBsZXRlQWxsUGxhbnNGb3JWTSk6CisgICAgICAgIChKU0M6OkpJVFdvcmtsaXN0Ojpy
ZW1vdmVBbGxSZWFkeVBsYW5zRm9yVk0pOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAg
ICAgICAgKEpTQzo6ZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQpOgorICAgICAg
ICAoSlNDOjp0cnlDYWNoZUdldEJ5KToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVBcnJheUdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeSk6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlRGVsZXRlQnkpOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZUluQnkpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUhhc1ByaXZh
dGVCcmFuZCk6CisgICAgICAgIChKU0M6OnRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQpOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZVNldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAg
ICAgICAqIGpzYy5jcHA6CisgICAgICAgIChKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAg
ICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Ompp
dENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZGVjb2RlQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db25jdXJy
ZW50SlNMb2NrLmg6CisgICAgICAgIChKU0M6OkdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlcjo6R0NT
YWZlQ29uY3VycmVudEpTTG9ja2VyKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkZ1enou
Y3BwOgorICAgICAgICAoSlNDOjpkb0V4Y2VwdGlvbkZ1enppbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhB
cnJheVN0b3JhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgor
ICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSk6
CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmhhdmVBQmFkVGlt
ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjplbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGVXaGVuQXJyYXlTdG9yYWdlQWxyZWFkeUV4
aXN0cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0aWFsVW5kZWNpZGVkKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbnQzMik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0aWFsRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmNyZWF0ZUluaXRpYWxDb250aWd1b3VzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNy
ZWF0ZUFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNp
ZGVkVG9BcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydEludDMy
VG9BcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydERvdWJsZVRv
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3Vz
VG9BcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpyZWFsbG9jYXRlQW5kU2hyaW5rQnV0dGVyZmx5KToKKyAgICAg
ICAgKEpTQzo6Y3JlYXRlQ3VzdG9tR2V0dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjcmVh
dGVDdXN0b21TZXR0ZXJGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgor
ICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6CisgICAgICAgIChKU0M6OkpT
U3RyaW5nOjp0b0F0b21TdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9F
eGlzdGluZ0F0b21TdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dmFsdWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dHJ5R2V0VmFsdWUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnVuc2FmZVZpZXcgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1JvcGVTdHJpbmc6OnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyBjb25zdCk6CisgICAgICAg
IChKU0M6OkpTU3RyaW5nOjp1bnNhZmVWaWV3IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pT
U3ltYm9sVGFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvUmVnRXhwS2V5Lmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVFbXB0eVJlZ0V4cE1hdGNoZXNBcnJh
eSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpzdGFja1RyYWNl
c0FzSlNPTik6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEZ1bmN0
aW9ucyk6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2Rl
cyk6CisgICAgICAgICogcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjptYXRlcmlh
bGl6ZVByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZE5ld1Byb3Bl
cnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVy
dHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFu
c2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb25TbG93KToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6YWRkKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpyZW1vdmUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICAoSlNDOjpWTTo6YWRkcmVzc09mRG9lc0dDKToKKyAgICAgICAgKEpTQzo6Vk06
OnNldERvZXNHQ0V4cGVjdGF0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OnZlcmlmeUNhbkdDKToK
KwogMjAyMS0xMS0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBpbl9ieV92YWwgc2hvdWxkIG5vdCBjb25zdGFudCBmb2xkIHRvIGluX2J5X2lkIHdoZW4gdGhl
IHByb3BlcnR5IGlzIGEgcHJvcGVydHkgaW5kZXgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzMwLDYgKzczMCw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBoZWFwL0NvbnN0cmFpbnRQYXJh
bGxlbGlzbS5oCiAgICAgaGVhcC9Db25zdHJhaW50Vm9sYXRpbGl0eS5oCiAgICAgaGVhcC9EZWZl
ckdDLmgKKyAgICBoZWFwL0RlZmVyR0NJbmxpbmVzLmgKICAgICBoZWFwL0RlbGV0ZUFsbENvZGVF
ZmZvcnQuaAogICAgIGhlYXAvRGVzdHJ1Y3Rpb25Nb2RlLmgKICAgICBoZWFwL0Zhc3RNYWxsb2NB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcwOCw3ICsyNzA4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
R2VuZXJhdAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBT
dHJpbmcganNvblN0cmluZzsKICAgICB7Ci0gICAgICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJH
Qyh2bS5oZWFwKTsgLy8gUHJldmVudCBjb25jdXJyZW50IEdDIGZyb20gaW50ZXJmZXJpbmcgd2l0
aCB0aGUgZnVsbCBHQyB0aGF0IHRoZSBzbmFwc2hvdCBkb2VzLgorICAgICAgICBEZWZlckdDRm9y
QVdoaWxlIGRlZmVyR0Modm0pOyAvLyBQcmV2ZW50IGNvbmN1cnJlbnQgR0MgZnJvbSBpbnRlcmZl
cmluZyB3aXRoIHRoZSBmdWxsIEdDIHRoYXQgdGhlIHNuYXBzaG90IGRvZXMuCiAKICAgICAgICAg
SGVhcFNuYXBzaG90QnVpbGRlciBzbmFwc2hvdEJ1aWxkZXIodm0uZW5zdXJlSGVhcFByb2ZpbGVy
KCksIEhlYXBTbmFwc2hvdEJ1aWxkZXI6OlNuYXBzaG90VHlwZTo6R0NEZWJ1Z2dpbmdTbmFwc2hv
dCk7CiAgICAgICAgIHNuYXBzaG90QnVpbGRlci5idWlsZFNuYXBzaG90KCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg1NjA3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTIwNTEsNiArMjA1MSw3IEBACiAJCUZFOTlCMjQ5MUMyNEMzRDMwMEM4MjE1
OSAvKiBKSVROZWdHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFOTlCMjQ4MUMyNEI2RDMwMEM4MjE1OSAvKiBKSVROZWdHZW5lcmF0b3Iu
aCAqLzsgfTsKIAkJRkU5RjNGQjkyNjEzQzc4OTAwNjlFODlGIC8qIFJlc291cmNlRXhoYXVzdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU5RjNG
QjgyNjEzQzc4ODAwNjlFODlGIC8qIFJlc291cmNlRXhoYXVzdGlvbi5oICovOyB9OwogCQlGRTlG
M0ZDODI2MTYzQ0E5MDA2OUU4OUYgLyogRGVmZXJUZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU5RjNGQzYyNjE2M0NBOTAwNjlFODlG
IC8qIERlZmVyVGVybWluYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlGRTlGQTdDNTI3M0M4QjI2MDA1RDlFNzAgLyogRGVmZXJHQ0lubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFOUZB
N0M0MjczQzhCMjYwMDVEOUU3MCAvKiBEZWZlckdDSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1
MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQTA4NjIxMTgyQjdB
MDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1pdGl2ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1
Z2dlclByaW1pdGl2ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlGRUEzQkJBODIxMkI2NTU5MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBM0JCQTcy
MTJCNjU1ODAwRTkzQUQxIC8qIENhbGxGcmFtZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTUxNCw2ICs1NTE1LDcgQEAKIAkJRkU5
RjNGQjgyNjEzQzc4ODAwNjlFODlGIC8qIFJlc291cmNlRXhoYXVzdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUV4aGF1c3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU5RjNGQkEyNjEzQzg3QzAwNjlFODlGIC8qIFJlc291cmNlRXho
YXVzdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUV4aGF1c3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTlGM0ZDNjI2MTYzQ0E5MDA2OUU4OUYgLyog
RGVmZXJUZXJtaW5hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWZl
clRlcm1pbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOUZBN0M0Mjcz
QzhCMjYwMDVEOUU3MCAvKiBEZWZlckdDSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZWZlckdDSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCcmVha3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1pdGl2ZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdnZXJQcmltaXRpdmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQTNCQkE3MjEyQjY1NTgwMEU5M0FEMSAvKiBD
YWxsRnJhbWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxG
cmFtZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1MjMsNiArNjUy
NSw3IEBACiAJCQkJMEY3REYxMkYxRTI5NzBENTAwOTU5NTFCIC8qIENvbnN0cmFpbnRWb2xhdGls
aXR5LmggKi8sCiAJCQkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICov
LAogCQkJCTBGMTM2RDRCMTc0QUQ2OUIwMDc1QjM1NCAvKiBEZWZlckdDLmggKi8sCisJCQkJRkU5
RkE3QzQyNzNDOEIyNjAwNUQ5RTcwIC8qIERlZmVyR0NJbmxpbmVzLmggKi8sCiAJCQkJMEZCQjcz
QkExREVGODY0NDAwMkMwMDlFIC8qIERlbGV0ZUFsbENvZGVFZmZvcnQuaCAqLywKIAkJCQkwRjk2
MzAzNzFENDE5MkMzMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmNwcCAqLywKIAkJCQkwRjk2
MzAzODFENDE5MkMzMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggKi8sCkBAIC0xMDc3Niw2
ICsxMDc3OSw3IEBACiAJCQkJQkMxOEM0NjMwRTE2RjVDRDAwQjM0NDYwIC8qIFNvdXJjZVByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291
cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAw
MTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTlGQTdDNTI3M0M4QjI2MDA1RDlFNzAgLyogRGVmZXJHQ0lubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGREU4N0ZDMURGRTZFNTEwMDY0QzM5MCAvKiBTcGFjZVRpbWVNdXRhdG9yU2NoZWR1
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3Bh
cnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTQxMTg2OTdCNDAw
NTQwMjc5IC8qIFNwZWNpYWxpemVkVGh1bmtKSVQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDI4
NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjc1LDcgKzIyNzUsNyBAQCB2b2lkIENvZGVCbG9jazo6amV0dGlz
b24oUHJvZmlsZXI6OkpldHRpCiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCi0g
ICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKCpoZWFwKCkpOworICAgIERlZmVyR0NGb3JBV2hp
bGUgZGVmZXJHQyh2bSk7CiAgICAgCiAgICAgLy8gV2Ugd2FudCB0byBhY2NvbXBsaXNoIHR3byB0
aGluZ3MgaGVyZToKICAgICAvLyAxKSBNYWtlIHN1cmUgdGhhdCBpZiB0aGlzIENvZGVCbG9jayBp
cyBvbiB0aGUgc3RhY2sgcmlnaHQgbm93LCB0aGVuIGlmIHdlIHJldHVybiB0byBpdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZGVjb2RlQwogICAgIGludDMyX3QgY2FjaGVkQ29kZUJsb2NrRm9yQ2FsbE9mZnNldCA9
IG1fY2FjaGVkQ29kZUJsb2NrRm9yQ2FsbE9mZnNldDsKICAgICBpbnQzMl90IGNhY2hlZENvZGVC
bG9ja0ZvckNvbnN0cnVjdE9mZnNldCA9IG1fY2FjaGVkQ29kZUJsb2NrRm9yQ29uc3RydWN0T2Zm
c2V0OwogCi0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0MgZGVmZXJH
Qyh2bSk7CiAKICAgICAvLyBObyBuZWVkIHRvIGNsZWFyIG1fdW5saW5rZWRDb2RlQmxvY2tGb3JD
YWxsIGhlcmUsIHNpbmNlIHdlIG1vdmVkIHRoZSBkZWNvZGVyIG91dCBvZiB0aGUgc2FtZSBzbG90
CiAgICAgaWYgKGNhY2hlZENvZGVCbG9ja0ZvckNhbGxPZmZzZXQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAyODU2MDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBXYXRjaHBvaW50U2V0OjpmaXJlQWxs
V2F0Y2hwb2ludHMoVgogICAgIC8vIGZvciBtb3N0IFdhdGNocG9pbnRzIHRvIGJlIGRlc3RydWN0
ZWQgd2hpbGUgdGhleSdyZSBpbiB0aGUgbWlkZGxlIG9mIGZpcmluZy4KICAgICAvLyBUaGlzIEdD
IGNvdWxkIGFsc28gZGVzdHJveSB1cywgYW5kIHdlJ3JlIG5vdCBpbiBhIHNhZmUgc3RhdGUgdG8g
YmUgZGVzdHJveWVkLgogICAgIC8vIFRoZSBzYWZlc3QgdGhpbmcgdG8gZG8gaXMgdG8gRGVmZXJH
Q0ZvckFXaGlsZSB0byBwcmV2ZW50IHRoaXMgR0MgZnJvbSBoYXBwZW5pbmcuCi0gICAgRGVmZXJH
Q0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJH
Qyh2bSk7CiAgICAgCiAgICAgd2hpbGUgKCFtX3NldC5pc0VtcHR5KCkpIHsKICAgICAgICAgV2F0
Y2hwb2ludCogd2F0Y2hwb2ludCA9IG1fc2V0LmJlZ2luKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShy
ZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRl
cmxvby5jYT4KICAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KICAqCkBAIC0zODIs
NyArMzgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpCiAgICAgICAgICAgICAgICAgYmVm
b3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKLSAgICAgICAgICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKKyAgICAgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bSk7CiAgICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4o
dm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIHBhcmVudFNj
b3BlVERaVmFyaWFibGVzLCBwcml2YXRlTmFtZUVudmlyb25tZW50KTsKICAgICAgICAgICAgIHVu
c2lnbmVkIHNpemU7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJhdG9y
LT5nZW5lcmF0ZShzaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDQ2hlY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDQ2hlY2suY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQ0NoZWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJE
RkdOb2RlVHlwZS5oIgotI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAy
ODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkNvbXBpbAogICAgIGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpIHsKICAg
ICAgICAgLy8gV2UncmUgYWJvdXQgdG8gZXhpdCBvcHRpbWl6ZWQgY29kZS4gU28sIHRoZXJlJ3Mg
bm8gbG9uZ2VyIGFueSBvcHRpbWl6ZWQKICAgICAgICAgLy8gY29kZSBydW5uaW5nIHRoYXQgZXhw
ZWN0cyBubyBHQy4KLSAgICAgICAgdm0uaGVhcC5zZXREb2VzR0NFeHBlY3RhdGlvbih0cnVlLCBE
b2VzR0NDaGVjazo6U3BlY2lhbDo6REZHT1NSRXhpdCk7CisgICAgICAgIHZtLnNldERvZXNHQ0V4
cGVjdGF0aW9uKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpERkdPU1JFeGl0KTsKICAgICB9
CiAKICAgICBpZiAodm0uY2FsbEZyYW1lRm9yQ2F0Y2gpCkBAIC0xNjIsNyArMTYyLDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBpbAogCiAgICAgLy8gSXQncyBzb3J0
IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3aGlsZSBpbiBoZXJlLiBBbnl3YXlzLCBk
b2luZyBzbyB3b3VsZG4ndAogICAgIC8vIHJlYWxseSBiZSBwcm9maXRhYmxlLgotICAgIERlZmVy
R0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVy
R0Modm0pOwogCiAgICAgdWludDMyX3QgZXhpdEluZGV4ID0gdm0ub3NyRXhpdEluZGV4OwogICAg
IE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPm1fb3NyRXhpdFtl
eGl0SW5kZXhdOwpAQCAtNzU3LDEwICs3NTcsMTAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhp
dChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAgICAgRG9lc0dDQ2hlY2sgY2hlY2s7CiAgICAgICAg
ICAgICBjaGVjay51LmVuY29kZWQgPSBEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNHQ0No
ZWNrOjpTcGVjaWFsOjpERkdPU1JFeGl0KTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAg
ICAgaml0LnN0b3JlNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoY2hlY2sudS5lbmNvZGVk
KSwgdm0uaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSk7CisgICAgICAgICAgICBqaXQuc3RvcmU2NChD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChjaGVjay51LmVuY29kZWQpLCB2bS5hZGRyZXNzT2ZE
b2VzR0MoKSk7CiAjZWxzZQotICAgICAgICAgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoY2hlY2sudS5vdGhlciksICZ2bS5oZWFwLmFkZHJlc3NPZkRvZXNHQygpLT51
Lm90aGVyKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNoZWNrLnUubm9kZUluZGV4KSwgJnZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCktPnUubm9k
ZUluZGV4KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGNoZWNrLnUub3RoZXIpLCAmdm0uYWRkcmVzc09mRG9lc0dDKCktPnUub3RoZXIpOworICAg
ICAgICAgICAgaml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2hlY2sudS5u
b2RlSW5kZXgpLCAmdm0uYWRkcmVzc09mRG9lc0dDKCktPnUubm9kZUluZGV4KTsKICNlbmRpZgog
ICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE3LDcgKzIxMTcsNyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlCiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICAKLSAgICBE
ZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CisgICAgRGVmZXJHQ0ZvckFXaGlsZSBk
ZWZlckdDKHZtKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKQpAQCAtMjE0Nyw3ICsyMTQ3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkNyZWF0ZQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdD
KHZtLmhlYXApOworICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bSk7CiAgICAgCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKQEAgLTM3MzUs
NyArMzczNSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UcmlnZ2UKIHsK
ICAgICAvLyBJdCdzIHNvcnQgb2YgcHJlZmVyYWJsZSB0aGF0IHdlIGRvbid0IEdDIHdoaWxlIGlu
IGhlcmUuIEFueXdheXMsIGRvaW5nIHNvIHdvdWxkbid0CiAgICAgLy8gcmVhbGx5IGJlIHByb2Zp
dGFibGUuCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKGNvZGVCbG9jay0+dm0oKS5oZWFw
KTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoY29kZUJsb2NrLT52bSgpKTsKICAgICAK
ICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oY29kZUJsb2NrLT52bSgpKTsKIApAQCAtMzg1NSw3ICsz
ODU1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyaWdnZQogICAgIFZN
JiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVh
cCk7CisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtKTsKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgCiAgICAgc2FuaXRpemVTdGFj
a0ZvclZNKHZtKTsKQEAgLTQxMjEsNyArNDEyMSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25UcmlnZ2UKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgRGVmZXJH
Q0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJH
Qyh2bSk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
OwogICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXg6OmZyb21C
aXRzKGJ5dGVjb2RlSW5kZXhCaXRzKTsKIApAQCAtNDE1Myw3ICs0MTUzLDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyaWdnZQogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CisgICAgRGVmZXJHQ0Zv
ckFXaGlsZSBkZWZlckdDKHZtKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gQnl0ZWNv
ZGVJbmRleDo6ZnJvbUJpdHMoYnl0ZWNvZGVJbmRleEJpdHMpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJl
dmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDExIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjExNSw4ICsyMTE1LDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYm9vbCBleHBlY3REb2Vz
R0MgPSBkb2VzR0MobV9qaXQuZ3JhcGgoKSwgbm9kZSk7CiAgICAgICAgICAgICBEb2VzR0NDaGVj
ayBjaGVjazsKICAgICAgICAgICAgIGNoZWNrLnUuZW5jb2RlZCA9IERvZXNHQ0NoZWNrOjplbmNv
ZGUoZXhwZWN0RG9lc0dDLCBub2RlLT5pbmRleCgpLCBub2RlLT5vcCgpKTsKLSAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2hlY2sudS5vdGhlciks
ICZ2bSgpLmhlYXAuYWRkcmVzc09mRG9lc0dDKCktPnUub3RoZXIpOwotICAgICAgICAgICAgbV9q
aXQuc3RvcmUzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihjaGVjay51Lm5vZGVJbmRleCks
ICZ2bSgpLmhlYXAuYWRkcmVzc09mRG9lc0dDKCktPnUubm9kZUluZGV4KTsKKyAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2hlY2sudS5vdGhlciks
ICZ2bSgpLmFkZHJlc3NPZkRvZXNHQygpLT51Lm90aGVyKTsKKyAgICAgICAgICAgIG1faml0LnN0
b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2hlY2sudS5ub2RlSW5kZXgpLCAmdm0o
KS5hZGRyZXNzT2ZEb2VzR0MoKS0+dS5ub2RlSW5kZXgpOwogICAgICAgICB9CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3ODcsNyArMjc4Nyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBpZiBjb25zdGV4
cHIgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZURv
ZXNHQygpKSB7CiAgICAgICAgICAgICBib29sIGV4cGVjdERvZXNHQyA9IGRvZXNHQyhtX2ppdC5n
cmFwaCgpLCBub2RlKTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KERv
ZXNHQ0NoZWNrOjplbmNvZGUoZXhwZWN0RG9lc0dDLCBub2RlLT5pbmRleCgpLCBub2RlLT5vcCgp
KSksIHZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9y
ZTY0KFRydXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKGV4cGVjdERvZXNHQywgbm9kZS0+
aW5kZXgoKSwgbm9kZS0+b3AoKSkpLCB2bSgpLmFkZHJlc3NPZkRvZXNHQygpKTsKICAgICAgICAg
fQogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEzLDEwICsy
MTEzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb29wSGludChOb2QKICAgICAg
ICAgICAgICAgICAgICAgRG9lc0dDQ2hlY2sgY2hlY2s7CiAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrLnUuZW5jb2RlZCA9IERvZXNHQ0NoZWNrOjplbmNvZGUodHJ1ZSwgRG9lc0dDQ2hlY2s6OlNw
ZWNpYWw6OlVuaW5pdGlhbGl6ZWQpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAg
ICAgICAgIG1faml0LnN0b3JlNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoY2hlY2sudS5l
bmNvZGVkKSwgdm0oKS5oZWFwLmFkZHJlc3NPZkRvZXNHQygpKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChjaGVjay51LmVuY29k
ZWQpLCB2bSgpLmFkZHJlc3NPZkRvZXNHQygpKTsKICNlbHNlCi0gICAgICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoY2hlY2sudS5vdGhlciks
ICZ2bSgpLmhlYXAuYWRkcmVzc09mRG9lc0dDKCktPnUub3RoZXIpOwotICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGNoZWNrLnUubm9k
ZUluZGV4KSwgJnZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKS0+dS5ub2RlSW5kZXgpOworICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KGNoZWNrLnUub3RoZXIpLCAmdm0oKS5hZGRyZXNzT2ZEb2VzR0MoKS0+dS5vdGhlcik7CisgICAg
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
Y2hlY2sudS5ub2RlSW5kZXgpLCAmdm0oKS5hZGRyZXNzT2ZEb2VzR0MoKS0+dS5ub2RlSW5kZXgp
OwogI2VuZGlmCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjg1
NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MjAsNyArNzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgY29u
c3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZh
bGlkYXRlRG9lc0dDKCkpIHsKICAgICAgICAgICAgICAgICBib29sIGV4cGVjdERvZXNHQyA9IGRv
ZXNHQyhtX2dyYXBoLCBtX25vZGUpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0
LmNvbnN0SW50NjQoRG9lc0dDQ2hlY2s6OmVuY29kZShleHBlY3REb2VzR0MsIG1fbm9kZS0+aW5k
ZXgoKSwgbV9ub2RlLT5vcCgpKSksIG1fb3V0LmFic29sdXRlKHZtKCkuaGVhcC5hZGRyZXNzT2ZE
b2VzR0MoKSkpOworICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNvbnN0SW50NjQo
RG9lc0dDQ2hlY2s6OmVuY29kZShleHBlY3REb2VzR0MsIG1fbm9kZS0+aW5kZXgoKSwgbV9ub2Rl
LT5vcCgpKSksIG1fb3V0LmFic29sdXRlKHZtKCkuYWRkcmVzc09mRG9lc0dDKCkpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xNjEzMiw3ICsxNjEzMiw3IEBAIElHTk9SRV9DTEFO
R19XQVJOSU5HU19FTkQKICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2Vz
R0MpIHsKICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVEb2VzR0MoKSkgewog
ICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1vY2sgd2hhdCBhIFJldHVybiBkb2Vz
OiBjbGFpbXMgdG8gR0MuCi0gICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cih2bS0+aGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSksIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHZtLT5hZGRyZXNzT2ZEb2VzR0MoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAg
ICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoRG9lc0dDQ2hl
Y2s6OmVuY29kZSh0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lhbDo6VW5pbml0aWFsaXplZCkpLCBH
UFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86
OnJlZ1QxLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKICAgICAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw3ICsy
MTgsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkCiAgICAgICAg
ICAgICAvLyB0byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVGVExPU1JFeGl0KCkgaXMgb25s
eSBjYWxsZWQgb24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgICAgIC8vIHdlIGV4aXQgZnJvbSB0
aGlzIHNpdGUsIGJ1dCBhbGwgc3Vic2VxdWVudCBleGl0cyB3aWxsIHRha2UgdGhpcyBjb21waWxl
ZAogICAgICAgICAgICAgLy8gcmFtcCB3aXRob3V0IGNhbGxpbmcgY29tcGlsZUZUTE9TUkV4aXQo
KSBmaXJzdC4KLSAgICAgICAgICAgIGppdC5zdG9yZTY0KENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KERvZXNHQ0NoZWNrOjplbmNvZGUodHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkZUTE9T
UkV4aXQpKSwgdm0uaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUs
IERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpGVExPU1JFeGl0KSksIHZtLmFkZHJlc3NPZkRvZXNHQygp
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTA0LDcgKzUwNCw3IEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25Db21waWwKICAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZH
RG9lc0dDKSB7CiAgICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGV4aXQgb3B0aW1pemVkIGNvZGUu
IFNvLCB0aGVyZSdzIG5vIGxvbmdlciBhbnkgb3B0aW1pemVkCiAgICAgICAgIC8vIGNvZGUgcnVu
bmluZyB0aGF0IGV4cGVjdHMgbm8gR0MuCi0gICAgICAgIHZtLmhlYXAuc2V0RG9lc0dDRXhwZWN0
YXRpb24odHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkZUTE9TUkV4aXQpOworICAgICAgICB2
bS5zZXREb2VzR0NFeHBlY3RhdGlvbih0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lhbDo6RlRMT1NS
RXhpdCk7CiAgICAgfQogCiAgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNhdGNoKQpAQCAtNTE3LDcg
KzUxNyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWwKICAgICAK
ICAgICAvLyBJdCdzIHNvcnQgb2YgcHJlZmVyYWJsZSB0aGF0IHdlIGRvbid0IEdDIHdoaWxlIGlu
IGhlcmUuIEFueXdheXMsIGRvaW5nIHNvIHdvdWxkbid0CiAgICAgLy8gcmVhbGx5IGJlIHByb2Zp
dGFibGUuCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVy
R0NGb3JBV2hpbGUgZGVmZXJHQyh2bSk7CiAKICAgICBKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJs
b2NrLT5qaXRDb2RlKCktPmZ0bCgpOwogICAgIE9TUkV4aXQmIGV4aXQgPSBqaXRDb2RlLT5tX29z
ckV4aXRbZXhpdElEXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjg1NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUG9wdWxhCiAgICAgLy8gV2UgY2Fubm90IEdD
LiBXZSd2ZSBnb3QgcG9pbnRlcnMgaW4gZXZpbCBwbGFjZXMuCiAgICAgLy8gRklYTUU6IFdlIGFy
ZSBub3QgZG9pbmcgYW55dGhpbmcgdGhhdCBjYW4gR0MgaGVyZSwgYW5kIHRoaXMgaXMKICAgICAv
LyBwcm9iYWJseSB1bm5lY2Vzc2FyeS4KLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0u
aGVhcCk7CisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtKTsKIAogICAgIHN3aXRjaCAo
bWF0ZXJpYWxpemF0aW9uLT50eXBlKCkpIHsKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6IHsK
QEAgLTE5MCw3ICsxOTAsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTWF0
ZXJpCiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwogCiAgICAgLy8gV2UgY2Fubm90IEdDLiBXZSd2ZSBnb3QgcG9pbnRlcnMgaW4g
ZXZpbCBwbGFjZXMuCi0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOworICAg
IERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bSk7CiAgICAgCiAgICAgc3dpdGNoIChtYXRlcmlh
bGl6YXRpb24tPnR5cGUoKSkgewogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDogewpAQCAtNzM0
LDcgKzczNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Db21waWwKICAg
ICAvLyBEb24ndCBuZWVkIGFuIEFjdGl2ZVNjcmF0Y2hCdWZmZXJTY29wZSBoZXJlIGJlY2F1c2Ug
d2UgRGVmZXJHQ0ZvckFXaGlsZS4KIAogICAgIC8vIFdlIGNhbm5vdCBHQy4gV2UndmUgZ290IHBv
aW50ZXJzIGluIGV2aWwgcGxhY2VzLgotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5o
ZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0pOwogCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIEpJVENvZGUqIGppdENv
ZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZnRsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjg1NjA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6YWxs
b2NhdGVTbG93KFZNJgogdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KFZN
JiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7
CiAgICAgaWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgdm0uaGVhcC52
ZXJpZnlDYW5HQygpOworICAgICAgICB2bS52ZXJpZnlDYW5HQygpOwogCiAgICAgc2FuaXRpemVT
dGFja0ZvclZNKHZtKTsKICAgICAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkKiBDb21wbGV0ZVN1
YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3coCiB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjpyZWFsbG9j
YXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKFZNJiB2bSwgSGVhcENlbGwqIG9sZENlbGws
IHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgaWYgY29uc3RleHByICh2YWxpZGF0
ZURGR0RvZXNHQykKLSAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5HQygpOworICAgICAgICB2bS52
ZXJpZnlDYW5HQygpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQg
aW4gQnV0dGVyZmx5IGZvciBleGFtcGxlLgogICAgIEFTU0VSVChvbGRDZWxsLT5pc1ByZWNpc2VB
bGxvY2F0aW9uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVT
dWJzcGFjZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgdm9p
ZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNp
emUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dD
KQotICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CisgICAgICAgIHZtLnZlcmlmeUNhbkdD
KCk7CiAKICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1
YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQogICAgICAgICBy
ZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVy
ZU1vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkocmV2aXNpb24g
Mjg1NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsNDcgKzI2LDMxIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRp
c2FsbG93U2NvcGUuaCIKLSNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCitjbGFzcyBIZWFwOworY2xhc3MgVk07CisKIGNsYXNzIERlZmVyR0MgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERlZmVyR0MpOwogICAgIFdURl9GT1JCSURfSEVBUF9BTExPQ0FU
SU9OOwogcHVibGljOgotICAgIERlZmVyR0MoSGVhcCYgaGVhcCkKLSAgICAgICAgOiBtX2hlYXAo
aGVhcCkKLSAgICB7Ci0gICAgICAgIG1faGVhcC5pbmNyZW1lbnREZWZlcnJhbERlcHRoKCk7Ci0g
ICAgfQotICAgIAotICAgIH5EZWZlckdDKCkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAo
dmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgICAgICBtX2hlYXAudmVyaWZ5Q2FuR0MoKTsKLSAg
ICAgICAgbV9oZWFwLmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCk7Ci0gICAg
fQorICAgIERlZmVyR0MoVk0mKTsKKyAgICB+RGVmZXJHQygpOwogCiBwcml2YXRlOgotICAgIEhl
YXAmIG1faGVhcDsKKyAgICBWTSYgbV92bTsKIH07CiAKIGNsYXNzIERlZmVyR0NGb3JBV2hpbGUg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlZmVyR0NGb3JBV2hpbGUpOwogICAgIFdURl9G
T1JCSURfSEVBUF9BTExPQ0FUSU9OOwogcHVibGljOgotICAgIERlZmVyR0NGb3JBV2hpbGUoSGVh
cCYgaGVhcCkKLSAgICAgICAgOiBtX2hlYXAoaGVhcCkKLSAgICB7Ci0gICAgICAgIG1faGVhcC5p
bmNyZW1lbnREZWZlcnJhbERlcHRoKCk7Ci0gICAgfQotICAgIAotICAgIH5EZWZlckdDRm9yQVdo
aWxlKCkKLSAgICB7Ci0gICAgICAgIG1faGVhcC5kZWNyZW1lbnREZWZlcnJhbERlcHRoKCk7Ci0g
ICAgfQorICAgIERlZmVyR0NGb3JBV2hpbGUoVk0mKTsKKyAgICB+RGVmZXJHQ0ZvckFXaGlsZSgp
OwogCiBwcml2YXRlOgogICAgIEhlYXAmIG1faGVhcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0RlZmVyR0NJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvRGVmZXJHQ0lubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlZmVyR0MuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworaW5saW5lIERlZmVyR0M6OkRlZmVyR0MoVk0mIHZtKQorICAgIDog
bV92bSh2bSkKK3sKKyAgICBtX3ZtLmhlYXAuaW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpOworfQor
CitpbmxpbmUgRGVmZXJHQzo6fkRlZmVyR0MoKQoreworICAgIGlmIGNvbnN0ZXhwciAodmFsaWRh
dGVERkdEb2VzR0MpCisgICAgICAgIG1fdm0udmVyaWZ5Q2FuR0MoKTsKKyAgICBtX3ZtLmhlYXAu
ZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKTsKK30KKworaW5saW5lIERlZmVy
R0NGb3JBV2hpbGU6OkRlZmVyR0NGb3JBV2hpbGUoVk0mIHZtKQorICAgIDogbV9oZWFwKHZtLmhl
YXApCit7CisgICAgbV9oZWFwLmluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKK30KKworaW5saW5l
IERlZmVyR0NGb3JBV2hpbGU6On5EZWZlckdDRm9yQVdoaWxlKCkKK3sKKyAgICBtX2hlYXAuZGVj
cmVtZW50RGVmZXJyYWxEZXB0aCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NEZWZlcnJhbENvbnRleHQuaAkocmV2aXNp
b24gMjg1NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NEZWZlcnJhbENvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEhlYXA7CitjbGFzcyBWTTsKIGNsYXNzIEJsb2NrRGlyZWN0b3J5OwogY2xhc3Mg
TG9jYWxBbGxvY2F0b3I7CiAKQEAgLTQwLDExICs0MCwxMSBAQCBjbGFzcyBHQ0RlZmVycmFsQ29u
dGV4dCB7CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrRGlyZWN0b3J5OwogICAgIGZyaWVuZCBjbGFz
cyBMb2NhbEFsbG9jYXRvcjsKIHB1YmxpYzoKLSAgICBpbmxpbmUgR0NEZWZlcnJhbENvbnRleHQo
SGVhcCYpOworICAgIGlubGluZSBHQ0RlZmVycmFsQ29udGV4dChWTSYpOwogICAgIGlubGluZSB+
R0NEZWZlcnJhbENvbnRleHQoKTsKIAogcHJpdmF0ZToKLSAgICBIZWFwJiBtX2hlYXA7CisgICAg
Vk0mIG1fdm07CiAgICAgYm9vbCBtX3Nob3VsZEdDIHsgZmFsc2UgfTsKIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5s
aW5lcy5oCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q0RlZmVycmFsQ29udGV4dElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDE4ICszMCwx
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4
dDo6R0NEZWZlcnJhbENvbnRleHQoSGVhcCYgaGVhcCkKLSAgICA6IG1faGVhcChoZWFwKQorQUxX
QVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6R0NEZWZlcnJhbENvbnRleHQoVk0mIHZtKQor
ICAgIDogbV92bSh2bSkKIHsKIH0KIAogQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6
fkdDRGVmZXJyYWxDb250ZXh0KCkKIHsKICAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9l
c0dDKQotICAgICAgICBtX2hlYXAudmVyaWZ5Q2FuR0MoKTsKKyAgICAgICAgbV92bS52ZXJpZnlD
YW5HQygpOwogCiAgICAgaWYgKFVOTElLRUxZKG1fc2hvdWxkR0MpKQotICAgICAgICBtX2hlYXAu
Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOworICAgICAgICBtX3ZtLmhlYXAuY29sbGVjdElm
TmVjZXNzYXJ5T3JEZWZlcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw3ICsxMDY0
LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN5bmNocm9ub3VzbmVzcyBzeW5jaAogdm9pZCBIZWFw
Ojpjb2xsZWN0Tm93KFN5bmNocm9ub3VzbmVzcyBzeW5jaHJvbm91c25lc3MsIEdDUmVxdWVzdCBy
ZXF1ZXN0KQogewogICAgIGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAg
IHZlcmlmeUNhbkdDKCk7CisgICAgICAgIHZtKCkudmVyaWZ5Q2FuR0MoKTsKIAogICAgIHN3aXRj
aCAoc3luY2hyb25vdXNuZXNzKSB7CiAgICAgY2FzZSBBc3luYzogewpAQCAtMTA3Niw3ICsxMDc2
LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0Tm93KFN5bmNocm9ub3VzbmVzcyBzeQogICAgIGNhc2Ug
U3luYzogewogICAgICAgICBjb2xsZWN0U3luYyhyZXF1ZXN0KTsKICAgICAgICAgCi0gICAgICAg
IERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQygqdGhpcyk7CisgICAgICAgIERlZmVyR0NGb3JBV2hp
bGUgZGVmZXJHQyh2bSgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUltbW9y
dGFsT2JqZWN0cygpKSkKICAgICAgICAgICAgIHN3ZWVwZXIoKS5zdG9wU3dlZXBpbmcoKTsKICAg
ICAgICAgCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3ROb3coU3luY2hy
b25vdXNuZXNzIHN5CiB2b2lkIEhlYXA6OmNvbGxlY3RBc3luYyhHQ1JlcXVlc3QgcmVxdWVzdCkK
IHsKICAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICB2ZXJpZnlD
YW5HQygpOworICAgICAgICB2bSgpLnZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAoIW1faXNTYWZl
VG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIEhl
YXA6OmNvbGxlY3RBc3luYyhHQ1JlcXVlc3QgcmVxdWVzCiB2b2lkIEhlYXA6OmNvbGxlY3RTeW5j
KEdDUmVxdWVzdCByZXF1ZXN0KQogewogICAgIGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2Vz
R0MpCi0gICAgICAgIHZlcmlmeUNhbkdDKCk7CisgICAgICAgIHZtKCkudmVyaWZ5Q2FuR0MoKTsK
IAogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKQEAgLTE3ODQs
NyArMTc4NCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OnJlc3VtZVRoZU11dGF0b3IKIHZv
aWQgSGVhcDo6c3RvcElmTmVjZXNzYXJ5U2xvdygpCiB7CiAgICAgaWYgY29uc3RleHByICh2YWxp
ZGF0ZURGR0RvZXNHQykKLSAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKKyAgICAgICAgdm0oKS52ZXJp
ZnlDYW5HQygpOwogCiAgICAgd2hpbGUgKHN0b3BJZk5lY2Vzc2FyeVNsb3cobV93b3JsZFN0YXRl
LmxvYWQoKSkpIHsgfQogICAgIApAQCAtMTc5OCw3ICsxNzk4LDcgQEAgdm9pZCBIZWFwOjpzdG9w
SWZOZWNlc3NhcnlTbG93KCkKIGJvb2wgSGVhcDo6c3RvcElmTmVjZXNzYXJ5U2xvdyh1bnNpZ25l
ZCBvbGRTdGF0ZSkKIHsKICAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dDKQotICAg
ICAgICB2ZXJpZnlDYW5HQygpOworICAgICAgICB2bSgpLnZlcmlmeUNhbkdDKCk7CiAKICAgICBS
RUxFQVNFX0FTU0VSVChvbGRTdGF0ZSAmIGhhc0FjY2Vzc0JpdCk7CiAgICAgUkVMRUFTRV9BU1NF
UlQoIShvbGRTdGF0ZSAmIHN0b3BwZWRCaXQpKTsKQEAgLTI1NzQsNyArMjU3NCw3IEBAIHZvaWQg
SGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcihHQ0QKIHsKICAgICBBU1NFUlQoZGVmZXJy
YWxDb250ZXh0IHx8IGlzRGVmZXJyZWQoKSB8fCAhRGlzYWxsb3dHQzo6aXNJbkVmZmVjdE9uQ3Vy
cmVudFRocmVhZCgpKTsKICAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dDKQotICAg
ICAgICB2ZXJpZnlDYW5HQygpOworICAgICAgICB2bSgpLnZlcmlmeUNhbkdDKCk7CiAKICAgICBp
ZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRl
ICJDZWxsU3RhdGUuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJD
b2xsZWN0b3JQaGFzZS5oIgotI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAi
RGVsZXRlQWxsQ29kZUVmZm9ydC5oIgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVk
ZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIKQEAgLTk5LDE0ICs5OCw2IEBAIG5hbWVzcGFj
ZSBERkcgewogY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkg
JiYgQVNTRVJUX0VOQUJMRUQKLSNkZWZpbmUgRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT04g
MQotI2Vsc2UKLSNkZWZpbmUgRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT04gMAotI2VuZGlm
Ci0KLWNvbnN0ZXhwciBib29sIHZhbGlkYXRlREZHRG9lc0dDID0gRU5BQkxFX0RGR19ET0VTX0dD
X1ZBTElEQVRJT047Ci0KIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8SlNDZWxsKj4gUHJvdGVjdENv
dW50U2V0OwogdHlwZWRlZiBIYXNoQ291bnRlZFNldDxjb25zdCBjaGFyKj4gVHlwZUNvdW50U2V0
OwogCkBAIC0zMDcsMTggKzI5OCw2IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBiYXJyaWVyVGhy
ZXNob2xkKCkgY29uc3QgeyByZXR1cm4gbV9iYXJyaWVyVGhyZXNob2xkOyB9CiAgICAgY29uc3Qg
dW5zaWduZWQqIGFkZHJlc3NPZkJhcnJpZXJUaHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiAmbV9i
YXJyaWVyVGhyZXNob2xkOyB9CiAKLSNpZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikK
LSAgICBEb2VzR0NDaGVjayogYWRkcmVzc09mRG9lc0dDKCkgeyByZXR1cm4gJm1fZG9lc0dDOyB9
Ci0gICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sIGV4cGVjdERvZXNHQywgdW5zaWdu
ZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApIHsgbV9kb2VzR0Muc2V0KGV4cGVjdERvZXNH
Qywgbm9kZUluZGV4LCBub2RlT3ApOyB9Ci0gICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihi
b29sIGV4cGVjdERvZXNHQywgRG9lc0dDQ2hlY2s6OlNwZWNpYWwgc3BlY2lhbCkgeyBtX2RvZXNH
Qy5zZXQoZXhwZWN0RG9lc0dDLCBzcGVjaWFsKTsgfQotICAgIHZvaWQgdmVyaWZ5Q2FuR0MoKSB7
IG1fZG9lc0dDLnZlcmlmeUNhbkdDKHZtKCkpOyB9Ci0jZWxzZQotICAgIERvZXNHQ0NoZWNrKiBh
ZGRyZXNzT2ZEb2VzR0MoKSB7IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOyByZXR1cm4gbnVs
bHB0cjsgfQotICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCwgdW5zaWduZWQsIHVu
c2lnbmVkKSB7IH0KLSAgICB2b2lkIHNldERvZXNHQ0V4cGVjdGF0aW9uKGJvb2wsIERvZXNHQ0No
ZWNrOjpTcGVjaWFsKSB7IH0KLSAgICB2b2lkIHZlcmlmeUNhbkdDKCkgeyB9Ci0jZW5kaWYKLQog
ICAgIC8vIElmIHRydWUsIHRoZSBHQyBiZWxpZXZlcyB0aGF0IHRoZSBtdXRhdG9yIGlzIGN1cnJl
bnRseSBtZXNzaW5nIHdpdGggdGhlIGhlYXAuIFdlIGNhbGwgdGhpcwogICAgIC8vICJoYXZpbmcg
aGVhcCBhY2Nlc3MiLiBUaGUgR0MgbWF5IGJsb2NrIGlmIHRoZSBtdXRhdG9yIGlzIGluIHRoaXMg
c3RhdGUuIElmIGZhbHNlLCB0aGUgR0MgbWF5CiAgICAgLy8gY3VycmVudGx5IGJlIGRvaW5nIHRo
aW5ncyB0byB0aGUgaGVhcCB0aGF0IG1ha2UgdGhlIGhlYXAgdW5zYWZlIHRvIGFjY2VzcyBmb3Ig
dGhlIG11dGF0b3IuCkBAIC02MTEsOSArNTkwLDYgQEAgcHJpdmF0ZToKICAgICBNYXJrYWJsZTxD
b2xsZWN0aW9uU2NvcGUsIEVudW1NYXJrYWJsZVRyYWl0czxDb2xsZWN0aW9uU2NvcGU+PiBtX2Nv
bGxlY3Rpb25TY29wZTsKICAgICBNYXJrYWJsZTxDb2xsZWN0aW9uU2NvcGUsIEVudW1NYXJrYWJs
ZVRyYWl0czxDb2xsZWN0aW9uU2NvcGU+PiBtX2xhc3RDb2xsZWN0aW9uU2NvcGU7CiAgICAgTG9j
ayBtX3JhY2VNYXJrU3RhY2tMb2NrOwotI2lmIEVOQUJMRShERkdfRE9FU19HQ19WQUxJREFUSU9O
KQotICAgIERvZXNHQ0NoZWNrIG1fZG9lc0dDOwotI2VuZGlmCiAKICAgICBTdHJ1Y3R1cmVJRFRh
YmxlIG1fc3RydWN0dXJlSURUYWJsZTsKICAgICBNYXJrZWRTcGFjZSBtX29iamVjdFNwYWNlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZpc2lvbiAy
ODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVwcmVjYXRl
ZFJlcG9ydEV4dHJhTQogaW5saW5lIHZvaWQgSGVhcDo6YWNxdWlyZUFjY2VzcygpCiB7CiAgICAg
aWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgdmVyaWZ5Q2FuR0MoKTsK
KyAgICAgICAgdm0oKS52ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKG1fd29ybGRTdGF0ZS5jb21w
YXJlRXhjaGFuZ2VXZWFrKDAsIGhhc0FjY2Vzc0JpdCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2
NCw3ICsyNjQsNyBAQCBpbmxpbmUgYm9vbCBIZWFwOjptYXlOZWVkVG9TdG9wKCkKIGlubGluZSB2
b2lkIEhlYXA6OnN0b3BJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgY29uc3RleHByICh2YWxpZGF0
ZURGR0RvZXNHQykKLSAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKKyAgICAgICAgdm0oKS52ZXJpZnlD
YW5HQygpOwogCiAgICAgaWYgKG1heU5lZWRUb1N0b3AoKSkKICAgICAgICAgc3RvcElmTmVjZXNz
YXJ5U2xvdygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90
QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSGVhcFNuYXBzaG90
QnVpbGRlci5oIgogCi0jaW5jbHVkZSAiRGVmZXJHQy5oIgorI2luY2x1ZGUgIkRlZmVyR0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBQcm9maWxlci5oIgogI2lu
Y2x1ZGUgIkhlYXBTbmFwc2hvdC5oIgpAQCAtMzMyLDcgKzMzMiw3IEBAIFN0cmluZyBIZWFwU25h
cHNob3RCdWlsZGVyOjpkZXNjcmlwdGlvbkYKIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpq
c29uKEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOb2RlQ2Fs
bGJhY2spCiB7CiAgICAgVk0mIHZtID0gbV9wcm9maWxlci52bSgpOwotICAgIERlZmVyR0NGb3JB
V2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0p
OwogCiAgICAgLy8gQnVpbGQgYSBub2RlIHRvIGlkZW50aWZpZXIgbWFwIG9mIGFsbG93ZWQgbm9k
ZXMgdG8gdXNlIHdoZW4gc2VyaWFsaXppbmcgZWRnZXMuCiAgICAgSGFzaE1hcDxKU0NlbGwqLCBO
b2RlSWRlbnRpZmllcj4gYWxsb3dlZE5vZGVJZGVudGlmaWVyczsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAkocmV2aXNpb24g
Mjg1NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKIAotI2luY2x1ZGUgIkRlZmVyR0Mu
aCIKKyNpbmNsdWRlICJEZWZlckdDSW5saW5lcy5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKICNpbmNsdWRlICJWTS5oIgpAQCAtODQsNyArODQs
NyBAQCBib29sIEluY3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soCiAgICAgfQogICAg
IAogICAgIGlmIChibG9jaykgewotICAgICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0u
aGVhcCk7CisgICAgICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bSk7CiAgICAgICAgIGJs
b2NrLT5zd2VlcChudWxscHRyKTsKICAgICAgICAgdm0uaGVhcC5vYmplY3RTcGFjZSgpLmZyZWVP
clNocmlua0Jsb2NrKGJsb2NrKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAkocmV2
aXNpb24gMjg1NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0
b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwxMSArMzIsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIEFMV0FZU19JTkxJTkUgdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKEhl
YXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKKyAgICBWTSYgdm0gPSBoZWFwLnZtKCk7CiAgICAg
aWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgaGVhcC52ZXJpZnlDYW5H
QygpOworICAgICAgICB2bS52ZXJpZnlDYW5HQygpOwogICAgIHJldHVybiBtX2ZyZWVMaXN0LmFs
bG9jYXRlKAogICAgICAgICBbJl0gKCkgLT4gSGVhcENlbGwqIHsKLSAgICAgICAgICAgIHNhbml0
aXplU3RhY2tGb3JWTShoZWFwLnZtKCkpOworICAgICAgICAgICAgc2FuaXRpemVTdGFja0ZvclZN
KHZtKTsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIZWFwQ2VsbCo+KGFsbG9jYXRl
U2xvd0Nhc2UoaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSkpOwogICAgICAgICB9
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxs
b2NhdGlvbi5jcHAJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGlnbmVkRm9yUHJlY2lzZUFsCiBQcmVjaXNlQWxsb2Nh
dGlvbiogUHJlY2lzZUFsbG9jYXRpb246OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3Qgc2l6
ZSwgU3Vic3BhY2UqIHN1YnNwYWNlLCB1bnNpZ25lZCBpbmRleEluU3BhY2UpCiB7CiAgICAgaWYg
Y29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygp
OworICAgICAgICBoZWFwLnZtKCkudmVyaWZ5Q2FuR0MoKTsKIAogICAgIHNpemVfdCBhZGp1c3Rl
ZEFsaWdubWVudEFsbG9jYXRpb25TaXplID0gaGVhZGVyU2l6ZSgpICsgc2l6ZSArIGhhbGZBbGln
bm1lbnQ7CiAgICAgc3RhdGljX2Fzc2VydChoYWxmQWxpZ25tZW50ID09IDgsICJXZSBhc3N1bWUg
dGhhdCBtZW1vcnkgcmV0dXJuZWQgYnkgbWFsbG9jIGhhcyBhbGlnbm1lbnQgPj0gOC4iKTsKQEAg
LTEyMyw3ICsxMjMsNyBAQCBQcmVjaXNlQWxsb2NhdGlvbiogUHJlY2lzZUFsbG9jYXRpb246OnRy
CiBQcmVjaXNlQWxsb2NhdGlvbiogUHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGll
cihIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSwgU3Vic3BhY2UqIHN1YnNwYWNlLCB1aW50OF90IGxv
d2VyVGllckluZGV4KQogewogICAgIGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpCi0g
ICAgICAgIGhlYXAudmVyaWZ5Q2FuR0MoKTsKKyAgICAgICAgaGVhcC52bSgpLnZlcmlmeUNhbkdD
KCk7CiAKICAgICBzaXplX3QgYWRqdXN0ZWRBbGlnbm1lbnRBbGxvY2F0aW9uU2l6ZSA9IGhlYWRl
clNpemUoKSArIHNpemUgKyBoYWxmQWxpZ25tZW50OwogICAgIHN0YXRpY19hc3NlcnQoaGFsZkFs
aWdubWVudCA9PSA4LCAiV2UgYXNzdW1lIHRoYXQgbWVtb3J5IHJldHVybmVkIGJ5IG1hbGxvYyBo
YXMgYWxpZ25tZW50ID49IDguIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjg1
NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0
SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJBcnJh
eVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJEYXRlSW5z
dGFuY2UuaCIKLSNpbmNsdWRlICJEZWZlckdDLmgiCisjaW5jbHVkZSAiRGVmZXJHQ0lubGluZXMu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkhlYXBBbmFseXplci5oIgpAQCAtODU0LDcgKzg1NCw3IEBAIEpT
VmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SG9sZGUKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgewotICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0u
aGVhcCk7CisgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bSk7CiAgICAgICAgIFByZXZlbnRDb2xs
ZWN0aW9uU2NvcGUgcHJldmVudENvbGxlY3Rpb25TY29wZSh2bS5oZWFwKTsKICAgICAgICAgc2Fu
aXRpemVTdGFja0ZvclZNKHZtKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCShy
ZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTgyLDcgKzE4Miw3
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8U3RyaW4KICAgICAvLyBQcmV2
ZW50IHRoZSBjZWxsIGZyb20gZ2V0dGluZyBjb2xsZWN0ZWQgYXMgd2UgbG9vayBpdCB1cC4KICAg
ICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0p
OwogCiAgICAgdW5zaWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaGVhcE9iamVjdElkKTsKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hv
dE5vZGU+IG9wdGlvbmFsTm9kZSA9IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJvclN0
cmluZywgaGVhcE9iamVjdElkZW50aWZpZXIpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6UnUKICAgICAvLyBQcmV2ZW50IHRoZSBjZWxs
IGZyb20gZ2V0dGluZyBjb2xsZWN0ZWQgYXMgd2UgbG9vayBpdCB1cC4KICAgICBWTSYgdm0gPSBt
X2Vudmlyb25tZW50LnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0pOwogCiAgICAgdW5z
aWduZWQgaGVhcE9iamVjdElkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVhcE9i
amVjdElkKTsKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlv
bmFsTm9kZSA9IG5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihlcnJvclN0cmluZywgaGVhcE9i
amVjdElkZW50aWZpZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudC5jcHAJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuaCIKIAogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCi0jaW5jbHVkZSAiRGVmZXJHQy5o
IgorI2luY2x1ZGUgIkRlZmVyR0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJv
ZmlsZXIuaCIKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEluc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQ6OnRyYWNrCiAgICAgaWYgKG1fZW5hYmxlZFNhbXBsaW5nUHJvZmlsZXIpIHsKICAgICAg
ICAgVk0mIHZtID0gbV9lbnZpcm9ubWVudC5kZWJ1Z2dlcigpLnZtKCk7CiAgICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKLSAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOyAvLyBU
aGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2Ugd2lsbCBoYXZlIHJhdyBwb2ludGVycyBpbnRvIHRo
ZSBoZWFwIGFmdGVyIHdlIHJlbGVhc2VTdGFja1RyYWNlcygpLgorICAgICAgICBEZWZlckdDIGRl
ZmVyR0Modm0pOyAvLyBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2Ugd2lsbCBoYXZlIHJhdyBw
b2ludGVycyBpbnRvIHRoZSBoZWFwIGFmdGVyIHdlIHJlbGVhc2VTdGFja1RyYWNlcygpLgogICAg
ICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGluZ1Byb2ZpbGVyID0gdm0uc2FtcGxpbmdQcm9m
aWxlcigpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChzYW1wbGluZ1Byb2ZpbGVyKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW5JbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRv
d0NoaWNrZW5JbmxpbmVzLmgJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMz
LDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgog
dm9pZCBTaGFkb3dDaGlja2VuOjppdGVyYXRlKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OworICAgIERlZmVyR0MgZGVmZXJHQyh2bSk7CiAKICAgICB1cGRhdGUodm0sIGNhbGxGcmFtZSk7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDMsNyArMTk0Myw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PcHRpbWkKICAgICAvLyBOb3RlIHRoYXQgamV0dGlz
b25pbmcgd29uJ3QgaGFwcGVuIGlmIHdlIGFscmVhZHkgaW5pdGlhdGVkIE9TUiwgYmVjYXVzZSBp
bgogICAgIC8vIHRoYXQgY2FzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcGxhbnRlZCB0aGUgb3B0
aW1pemVkIGNvZGUgYmxvY2sgaW50byB0aGUgSlMKICAgICAvLyBzdGFjay4KLSAgICBEZWZlckdD
Rm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdD
KHZtKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCk7CiAgICAgaWYgKFVOTElLRUxZKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6
OkJhc2VsaW5lSklUKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3Jr
bGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3Jr
bGlzdC5jcHAJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUV29ya2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAgYXV0byBK
SVRXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZShKSVRDbwogCiBhdXRvIEpJVFdvcmtsaXN0Ojpj
b21wbGV0ZUFsbFJlYWR5UGxhbnNGb3JWTShWTSYgdm0sIEpJVENvbXBpbGF0aW9uS2V5IHJlcXVl
c3RlZEtleSkgLT4gU3RhdGUKIHsKLSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisgICAg
RGVmZXJHQyBkZWZlckdDKHZtKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8SklUUGxhbj4sIDg+IG15
UmVhZHlQbGFuczsKICAgICByZW1vdmVBbGxSZWFkeVBsYW5zRm9yVk0odm0sIG15UmVhZHlQbGFu
cyk7CkBAIC0xNjcsNyArMTY3LDcgQEAgYXV0byBKSVRXb3JrbGlzdDo6Y29tcGxldGVBbGxSZWFk
eVBsYW5zRgogCiB2b2lkIEpJVFdvcmtsaXN0Ojp3YWl0VW50aWxBbGxQbGFuc0ZvclZNQXJlUmVh
ZHkoVk0mIHZtKQogewotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdD
IGRlZmVyR0Modm0pOwogCiAgICAgLy8gV2hpbGUgd2UgYXJlIHdhaXRpbmcgZm9yIHRoZSBjb21w
aWxlciB0byBmaW5pc2gsIHRoZSBjb2xsZWN0b3IgbWlnaHQgaGF2ZSBhbHJlYWR5IHN1c3BlbmRl
ZAogICAgIC8vIHRoZSBjb21waWxlciBhbmQgdGhlbiBpdCB3aWxsIGJlIHdhaXRpbmcgZm9yIHVz
IHRvIHN0b3AuIFRoYXQncyBhIGRlYWRsb2NrLiBXZSBhdm9pZCB0aGF0CkBAIC0yMTAsNyArMjEw
LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6d2FpdFVudGlsQWxsUGxhbnNGb3JWTQogCiB2b2lkIEpJ
VFdvcmtsaXN0Ojpjb21wbGV0ZUFsbFBsYW5zRm9yVk0oVk0mIHZtKQogewotICAgIERlZmVyR0Mg
ZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0pOwogICAgIHdhaXRVbnRp
bEFsbFBsYW5zRm9yVk1BcmVSZWFkeSh2bSk7CiAgICAgY29tcGxldGVBbGxSZWFkeVBsYW5zRm9y
Vk0odm0pOwogfQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgSklUV29ya2xpc3Q6OmR1bXAoY29u
c3QgQWJzdHJhY3RMb2MKIAogdm9pZCBKSVRXb3JrbGlzdDo6cmVtb3ZlQWxsUmVhZHlQbGFuc0Zv
clZNKFZNJiB2bSwgVmVjdG9yPFJlZlB0cjxKSVRQbGFuPiwgOD4mIG15UmVhZHlQbGFucykKIHsK
LSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtKTsK
ICAgICBMb2NrZXIgbG9ja2VyIHsgKm1fbG9jayB9OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9yZWFkeVBsYW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxKSVRQbGFuPiBw
bGFuID0gbV9yZWFkeVBsYW5zW2ldOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgdm9pZCBmaXJlV2F0Y2hwb2ludAogICAgICAgICByZXN1bHQuZmlyZVdhdGNocG9p
bnRzKHZtKTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgICAgIEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtKTsKICAgICAg
ICAgICAgIHN0dWJJbmZvLnJlc2V0KGxvY2tlciwgY29kZUJsb2NrKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVH
ZXRCeShKCiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCByZXN1bHQ7CiAKICAgICB7Ci0gICAg
ICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIGds
b2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgZ2xvYmFsT2JqZWN0LT52bSgpKTsKIAogICAgICAg
ICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZ2xvYmFsT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUFycmF5R2UKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKIAog
ICAgIHsKLSAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2st
Pm1fbG9jaywgZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApOworICAgICAgICBHQ1NhZmVDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCkp
OwogCiAgICAgICAgIEpTQ2VsbCogYmFzZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKIApAQCAtNjc1
LDcgKzY3NSw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5KEoKICAg
ICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKTsKICAgICB7Ci0gICAg
ICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIGds
b2JhbE9iamVjdC0+dm0oKS5oZWFwKTsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgZ2xvYmFsT2JqZWN0LT52bSgpKTsKIAogICAgICAg
ICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZ2xvYmFsT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBH
aXZlVXBPbkNhY2hlOwpAQCAtOTcwLDcgKzk3MCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUFycmF5UHUKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIEdD
U2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKTsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jaywgZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmVzdWx0
ID0gc3R1YkluZm8uYWRkQWNjZXNzQ2FzZShsb2NrZXIsIGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBFQ01BTW9kZTo6c3RyaWN0KCksIG51bGxwdHIsIEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29k
ZUJsb2NrLCBhY2Nlc3NUeXBlLCBudWxscHRyKSk7CiAKICAgICAgICAgaWYgKHJlc3VsdC5nZW5l
cmF0ZWRTb21lQ29kZSgpKSB7CkBAIC05OTcsNyArOTk3LDcgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlRGVsZXRlQgogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgcmVzdWx0
OwogCiAgICAgewotICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrLCBnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCk7CisgICAgICAgIEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIGdsb2JhbE9iamVjdC0+
dm0oKSk7CiAKICAgICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCiAgICAg
ICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTExMDUsNyArMTEwNSw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAgICAgSWRlbnRpZmllciBpZGVudCA9
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSk7CiAKICAgICB7Ci0g
ICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ss
IHZtLmhlYXApOworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVC
bG9jay0+bV9sb2NrLCB2bSk7CiAgICAgICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmpl
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIApAQCAtMTIy
Miw3ICsxMjIyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSGFzUHJpdgog
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBicmFuZElELnVp
ZCgpKTsKIAogICAgIHsKLSAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtKTsKICAgICAgICAgaWYgKGZvcmNlSUNG
YWlsdXJlKGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsK
IApAQCAtMTI2OSw3ICsxMjY5LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
Q2hlY2tQcgogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBi
cmFuZElELnVpZCgpKTsKIAogICAgIHsKLSAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgIEdDU2FmZUNvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtKTsKICAgICAgICAgaWYg
KGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKIApAQCAtMTMxNiw3ICsxMzE2LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlU2V0UHJpdgogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKHZtLCBicmFuZElELnVpZCgpKTsKIAogICAgIHsKLSAgICAgICAgR0NTYWZlQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgIEdD
U2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtKTsKICAg
ICAgICAgaWYgKGZvcmNlSUNGYWlsdXJlKGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKICAgICAgICAgCkBAIC0xMzc5LDcgKzEzNzksNyBAQCBzdGF0aWMg
SW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbnN0YW5jCiAgICAgICAgIHJldHVybiBHaXZlVXBP
bkNhY2hlOwogICAgIAogICAgIHsKLSAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgIEdDU2FmZUNvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtKTsKICAgICAgICAgCiAgICAg
ICAgIEpTQ2VsbCogdmFsdWUgPSB2YWx1ZVZhbHVlLmFzQ2VsbCgpOwogICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHZhbHVlLT5zdHJ1Y3R1cmUodm0pOwpAQCAtMTU4Nyw3ICsxNTg3LDcg
QEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgLy8gRHVy
aW5nIGV4ZWN1dGlvbiBvZiBsaW5rUG9seW1vcnBoaWNDYWxsLCB3ZSBzdHJvbmdseSBhc3N1bWUg
dGhhdCB3ZSBuZXZlciBkbyBHQy4KICAgICAvLyBHQyBqZXR0aXNvbnMgQ29kZUJsb2NrcywgY2hh
bmdlcyBDYWxsTGlua0luZm8gZXRjLiBhbmQgYnJlYWtzIGFzc3VtcHRpb24gZG9uZSBiZWZvcmUg
YW5kIGFmdGVyIHRoaXMgY2FsbC4KLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0NGb3JBV2hp
bGUodm0uaGVhcCk7CisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDRm9yQVdoaWxlKHZtKTsK
ICAgICAKICAgICBpZiAoIW5ld1ZhcmlhbnQpIHsKICAgICAgICAgbGlua1ZpcnR1YWxGb3Iodm0s
IGNhbGxGcmFtZSwgY2FsbExpbmtJbmZvKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjg1NjA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY2LDcgKzM2Niw3IEBAIGlubGluZSBib29sIHNob3VsZEpJVChDb2RlQmxvY2sqIGNvZGVC
bG8KIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgdHJ5IHRvIE9TUi4KIGlubGluZSBib29s
IGppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlSW5kZXggbG9vcE9TUkVudHJ5Qnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgo
MCkpCiB7Ci0gICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOyAvLyBNeSBjYWxs
ZXJzIGRvbid0IHNldCB0b3AgY2FsbGZyYW1lLCBzbyB3ZSBkb24ndCB3YW50IHRvIEdDIGhlcmUg
YXQgYWxsLgorICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bSk7IC8vIE15IGNhbGxlcnMg
ZG9uJ3Qgc2V0IHRvcCBjYWxsZnJhbWUsIHNvIHdlIGRvbid0IHdhbnQgdG8gR0MgaGVyZSBhdCBh
bGwuCiAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKICAgICAKICAgICBjb2RlQmxvY2st
PnVwZGF0ZUFsbFZhbHVlUHJvZmlsZVByZWRpY3Rpb25zKCk7CkBAIC05NjEsNyArOTYxLDcgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZAogICAgICAgICAKICAgICAg
ICAgaWYgKG5ld1N0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmIGJh
c2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0g
UHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOworICAg
ICAgICAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2ssIHZtKTsKICAgICAgICAgICAgICAgICBpZiAoIW5ld1N0cnVjdHVyZS0+aXNEaWN0aW9u
YXJ5KCkgJiYgbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCktPm91dE9mTGluZUNhcGFjaXR5KCkg
PT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpKSB7CkBAIC0xMjgzLDcgKzEyODMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X3ByaXZhCiAgICAgICAgIAogICAgICAgICBpZiAobmV3U3RydWN0dXJlLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkp
IHsKICAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1By
b3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgICAgICAgICAgR0NTYWZlQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0pOwogICAgICAgICAg
ICAgICAgIGlmICghbmV3U3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBuZXdTdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA9PSBuZXdTdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVy
ZSA9PSBuZXdTdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChvbGRTdHJ1Y3R1cmUgPT0gbmV3U3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKQEAgLTEzNDIs
NyArMTM0Miw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zZXRfcHJpdmEKICAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIAogICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VT
U19TTE9XICYmICFvbGRTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgIEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwor
ICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
LCB2bSk7CiAgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3Ry
dWN0dXJlKHZtKTsKIAogICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlID09IG5ld1N0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpKTsKQEAgLTEzODUsNyArMTM4NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jaGVja19wcmkKICAgICAvLyByZWx5IG9uIFN0cnVjdHVyZUlEIGV2ZW4g
aWYgaXQncyBhbiB1bmNhY2hlYWJsZSBkaWN0aW9uYXJ5LgogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAoIUxMSU5UX0FMV0FZU19B
Q0NFU1NfU0xPVykgewotICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0pOwogCiAgICAgICAgIG1ldGFkYXRhLm1f
c3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQu
c2V0KHZtLCBjb2RlQmxvY2ssIGJyYW5kLmFzQ2VsbCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAJKHJldmlzaW9uIDI4NTYwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU0NCw3ICsyNTQ0LDcgQEAgVW5saW5rZWRDb2RlQmxvY2sqIGRlY29kZUNvZGVC
bG9ja0ltcGwoVgogICAgIFJlZjxEZWNvZGVyPiBkZWNvZGVyID0gRGVjb2Rlcjo6Y3JlYXRlKHZt
LCBXVEZNb3ZlKGNhY2hlZEJ5dGVjb2RlKSwgJmtleS5zb3VyY2UoKS5wcm92aWRlcigpKTsKICAg
ICBzdGQ6OnBhaXI8U291cmNlQ29kZUtleSwgVW5saW5rZWRDb2RlQmxvY2sqPiBlbnRyeTsKICAg
ICB7Ci0gICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtKTsKICAgICAgICAgaWYgKCFjYWNoZWRFbnRyeS0+ZGVjb2RlKGRlY29kZXIuZ2V0
KCksIGVudHJ5KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SlNMb2NrLmgJKHJl
dmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJl
bnRKU0xvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OSwxNSArNjksMTUgQEAgcHJpdmF0ZToK
IAogY2xhc3MgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIDogcHVibGljIENvbmN1cnJlbnRKU0xv
Y2tlckJhc2UgewogcHVibGljOgotICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlcihDb25jdXJy
ZW50SlNMb2NrJiBsb2NrYWJsZSwgSGVhcCYgaGVhcCkKKyAgICBHQ1NhZmVDb25jdXJyZW50SlNM
b2NrZXIoQ29uY3VycmVudEpTTG9jayYgbG9ja2FibGUsIFZNJiB2bSkKICAgICAgICAgOiBDb25j
dXJyZW50SlNMb2NrZXJCYXNlKGxvY2thYmxlKQotICAgICAgICAsIG1fZGVmZXJHQyhoZWFwKQor
ICAgICAgICAsIG1fZGVmZXJHQyh2bSkKICAgICB7CiAgICAgfQogCi0gICAgR0NTYWZlQ29uY3Vy
cmVudEpTTG9ja2VyKENvbmN1cnJlbnRKU0xvY2sqIGxvY2thYmxlLCBIZWFwJiBoZWFwKQorICAg
IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlcihDb25jdXJyZW50SlNMb2NrKiBsb2NrYWJsZSwgVk0m
IHZtKQogICAgICAgICA6IENvbmN1cnJlbnRKU0xvY2tlckJhc2UobG9ja2FibGUpCi0gICAgICAg
ICwgbV9kZWZlckdDKGhlYXApCisgICAgICAgICwgbV9kZWZlckdDKHZtKQogICAgIHsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1
enouY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25GdXp6LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw3IEBAIHZv
aWQgZG9FeGNlcHRpb25GdXp6aW5nKEpTR2xvYmFsT2JqZWN0KiAKICAgICBWTSYgdm0gPSBzY29w
ZS52bSgpOwogICAgIEFTU0VSVChPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpOwogCi0gICAg
RGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0NGb3JBV2hpbGUg
ZGVmZXJHQyh2bSk7CiAgICAgCiAgICAgc19udW1iZXJPZkV4Y2VwdGlvbkZ1enpDaGVja3MrKzsK
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShy
ZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENv
cHlyaWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdo
dCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgpAQCAtOTc5
LDcgKzk3OSw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmEKIAog
ICAgIC8vIE5lZWQgdG8gaGF2ZSBHQyBkZWZlcnJlZCBhcm91bmQgdGhlIHVuc2hpZnRDb3VudFNs
b3dDYXNlKCksIHNpbmNlIHRoYXQgbGVhdmVzIHRoZSBidXR0ZXJmbHkgaW4KICAgICAvLyBhIHdl
aXJkIHN0YXRlOiBzb21lIHBhcnRzIG9mIGl0IHdpbGwgYmUgbGVmdCB1bmluaXRpYWxpemVkLCB3
aGljaCB3ZSB3aWxsIGZpbGwgaW4gaGVyZS4KLSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7
CisgICAgRGVmZXJHQyBkZWZlckdDKHZtKTsKICAgICBMb2NrZXIgbG9ja2VyIHsgY2VsbExvY2so
KSB9OwogICAgIAogICAgIGlmIChtb3ZlRnJvbnQgJiYgc3RvcmFnZS0+bV9pbmRleEJpYXMgPj0g
Y291bnQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyVmlldy5jcHAJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjY4LDcgKzI2OCw3IEBAIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6c2xvd0Rvd24K
ICAgICAvLyB0aGF0IHlvdSAqaGFkKiBkb25lIHRob3NlIGFsbG9jYXRpb25zIGFuZCBpdCB3aWxs
IEdDIGFwcHJvcHJpYXRlbHkuCiAgICAgSGVhcCogaGVhcCA9IEhlYXA6OmhlYXAodGhpcyk7CiAg
ICAgVk0mIHZtID0gaGVhcC0+dm0oKTsKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoKmhl
YXApOworICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bSk7CiAKICAgICBSRUxFQVNFX0FT
U0VSVCghaGFzSW5kZXhpbmdIZWFkZXIodm0pKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHRoaXMtPnN0cnVjdHVyZSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbmNsdWRlICJDb21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkNQVS5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKLSNpbmNsdWRlICJEZWZlckdD
LmgiCisjaW5jbHVkZSAiRGVmZXJHQ0lubGluZXMuaCIKICNpbmNsdWRlICJGcmVlTGlzdElubGlu
ZXMuaCIKICNpbmNsdWRlICJIYW5kbGUuaCIKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkFycmF5QnVmZmVyVmlldy5oIgotI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJF
cnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMDQsNyAr
MjAwNCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmhhdmVBQmFkVGltZShWTSYgdm0KICAgICAv
LyBXX1NDLCBXX0JULCBSX0JULCBSX1NDOiBObyB3YXRjaHBvaW50IGlzIGluc3RhbGxlZCwgYnV0
IHdlIGNvdWxkIG5vdCBzZWUgb2xkIHN0cnVjdHVyZXMgZnJvbSB0aGUgY2FjaGUuCiAgICAgdm0u
c3RydWN0dXJlQ2FjaGUuY2xlYXIoKTsgLy8gV2UgbWF5IGJlIGNhY2hpbmcgYXJyYXkgc3RydWN0
dXJlcyBpbiBoZXJlLgogCi0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVy
R0MgZGVmZXJHQyh2bSk7CiAKICAgICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIG9iamVjdHMg
YW5kIHByb3RvdHlwZSBjaGFpbnM6CiAgICAgLy8gICAgTyAob2YgZ2xvYmFsIEcxKSAtPiBBIChv
ZiBnbG9iYWwgRzEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTgsNyArMTA5OCw3IEBAIEFycmF5
U3RvcmFnZSogSlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUkKICAgICAgICAgICAgIG1hcC0+YWRk
KHRoaXMsIGkpLml0ZXJhdG9yLT52YWx1ZS5mb3JjZVNldCh2bSwgbWFwLCB2YWx1ZSwgMCk7CiAg
ICAgfQogCi0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0MgZGVmZXJH
Qyh2bSk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHko
KS0+cmVzaXplQXJyYXkodm0sIHRoaXMsIHN0cnVjdHVyZSh2bSksIDAsIEFycmF5U3RvcmFnZTo6
c2l6ZUZvcigwKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobmV3QnV0dGVyZmx5KTsKICAgICBuZXdC
dXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX2luZGV4QmlhcyA9IDA7CkBAIC0xMTY2LDcgKzEx
NjYsNyBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsSW5kZXhlCiAKIEJ1dHRl
cmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxVbmRlY2lkZWQoVk0mIHZtLCB1bnNpZ25lZCBs
ZW5ndGgpCiB7Ci0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0MgZGVm
ZXJHQyh2bSk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5k
ZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCk7CiAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQg
PSB0aGlzLT5zdHJ1Y3R1cmVJRCgpOwogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gdm0u
Z2V0U3RydWN0dXJlKG9sZFN0cnVjdHVyZUlEKTsKQEAgLTExNzgsNyArMTE3OCw3IEBAIEJ1dHRl
cmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxVbmRlY2kKIAogQ29udGlndW91c0pTVmFsdWVz
IEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsSW50MzIoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiB7
Ci0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0MgZGVmZXJHQyh2bSk7
CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3Jh
Z2Uodm0sIGxlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3QnV0dGVyZmx5LT52ZWN0
b3JMZW5ndGgoKTsgaS0tOykKICAgICAgICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzKCkuYXQo
dGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlKCkpOwpAQCAtMTE5Miw3ICsx
MTkyLDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aQogCiBDb250
aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbERvdWJsZShWTSYgdm0sIHVuc2ln
bmVkIGxlbmd0aCkKIHsKLSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisgICAgRGVmZXJH
QyBkZWZlckdDKHZtKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUluaXRp
YWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBuZXdC
dXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KQogICAgICAgICBuZXdCdXR0ZXJmbHktPmNv
bnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKSA9IFBOYU47CkBAIC0xMjA2LDcgKzEyMDYsNyBA
QCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGlhCiAKIENvbnRpZ3VvdXNK
U1ZhbHVlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbENvbnRpZ3VvdXMoVk0mIHZtLCB1bnNpZ25l
ZCBsZW5ndGgpCiB7Ci0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0Mg
ZGVmZXJHQyh2bSk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFs
SW5kZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3QnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAgICAgICAgbmV3QnV0dGVyZmx5LT5jb250
aWd1b3VzKCkuYXQodGhpcywgaSkuc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVlKCkpOwpA
QCAtMTIzOSw3ICsxMjM5LDcgQEAgQnV0dGVyZmx5KiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9y
YWdlQgogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhZ2UoVk0mIHZt
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKIHsKLSAgICBEZWZlckdD
IGRlZmVyR0Modm0uaGVhcCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtKTsKICAgICBTdHJ1Y3R1
cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IHRoaXMtPnN0cnVjdHVyZUlEKCk7CiAgICAgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUgPSB2bS5nZXRTdHJ1Y3R1cmUob2xkU3RydWN0dXJlSUQpOwogICAgIElu
ZGV4aW5nVHlwZSBvbGRUeXBlID0gaW5kZXhpbmdUeXBlKCk7CkBAIC0xMzIxLDcgKzEzMjEsNyBA
QCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0CiAKIEFycmF5U3RvcmFn
ZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShWTSYgdm0sIFRyYW5z
aXRpb25LaW5kIHRyYW5zaXRpb24pCiB7Ci0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwor
ICAgIERlZmVyR0MgZGVmZXJHQyh2bSk7CiAgICAgQVNTRVJUKGhhc1VuZGVjaWRlZChpbmRleGlu
Z1R5cGUoKSkpOwogCiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gbV9idXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpOwpAQCAtMTM3Niw3ICsxMzc2LDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpT
T2JqZWN0Ojpjb252ZXJ0SW50MwogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50
MzJUb0FycmF5U3RvcmFnZShWTSYgdm0sIFRyYW5zaXRpb25LaW5kIHRyYW5zaXRpb24pCiB7Ci0g
ICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0MgZGVmZXJHQyh2bSk7CiAg
ICAgQVNTRVJUKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSk7CiAKICAgICB1bnNpZ25lZCB2ZWN0
b3JMZW5ndGggPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CkBAIC0xNDI3LDcgKzE0Mjcs
NyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnREb3ViCiAKIEFycmF5U3Rv
cmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZShWTSYgdm0sIFRyYW5z
aXRpb25LaW5kIHRyYW5zaXRpb24pCiB7Ci0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwor
ICAgIERlZmVyR0MgZGVmZXJHQyh2bSk7CiAgICAgQVNTRVJUKGhhc0RvdWJsZShpbmRleGluZ1R5
cGUoKSkpOwogCiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rv
ckxlbmd0aCgpOwpAQCAtMTQ1OCw3ICsxNDU4LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6
Y29udmVydERvdWJsZVRvQQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGln
dW91c1RvQXJyYXlTdG9yYWdlKFZNJiB2bSwgVHJhbnNpdGlvbktpbmQgdHJhbnNpdGlvbikKIHsK
LSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtKTsK
ICAgICBBU1NFUlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkpOwogCiAgICAgdW5zaWdu
ZWQgdmVjdG9yTGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwpAQCAtMzQ5OCw3
ICszNDk4LDcgQEAgYm9vbCBKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mIAogICAg
IC8vIEZhc3QgY2FzZSAtIHRoZXJlIGlzIG5vIHByZWNhcGFjaXR5LiBJbiB0aGVzZSBjYXNlcyBh
IHJlYWxsb2MgbWFrZXMgc2Vuc2UuCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5z
dHJ1Y3R1cmUodm0pOwogICAgIGlmIChMSUtFTFkoIWluZGV4QmlhcykpIHsKLSAgICAgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0pOwogICAg
ICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT5ncm93
QXJyYXlSaWdodCgKICAgICAgICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAgICAgICAgICAgIEFycmF5U3RvcmFnZTo6c2l6
ZUZvcih2ZWN0b3JMZW5ndGgpLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9yTGVuZ3Ro
KSk7CkBAIC0zNTEyLDcgKzM1MTIsNyBAQCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxl
bmd0aChWTSYgCiAgICAgfQogICAgIAogICAgIC8vIFJlbW92ZSBzb21lLCBidXQgbm90IGFsbCBv
ZiB0aGUgcHJlY2FwYWNpdHkuIEF0b21pYyBkZWNheSwgJiBjYXBwZWQgdG8gbm90IG92ZXJmbG93
IGFycmF5IGxlbmd0aC4KLSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisgICAgRGVmZXJH
QyBkZWZlckdDKHZtKTsKICAgICB1bnNpZ25lZCBuZXdJbmRleEJpYXMgPSBzdGQ6Om1pbihpbmRl
eEJpYXMgPj4gMSwgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCAtIG5ld1ZlY3Rvckxlbmd0aCk7
CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+cmVz
aXplQXJyYXkoCiAgICAgICAgIHZtLCB0aGlzLApAQCAtMzU0OCw3ICszNTQ4LDcgQEAgYm9vbCBK
U09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyhWTSYgdm0sIAogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAgICB1bnNpZ25lZCBwcm9wZXJ0eUNhcGFjaXR5
ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIAotICAgIEdDRGVmZXJyYWxD
b250ZXh0IGRlZmVycmFsQ29udGV4dCh2bS5oZWFwKTsKKyAgICBHQ0RlZmVycmFsQ29udGV4dCBk
ZWZlcnJhbENvbnRleHQodm0pOwogICAgIERpc2FsbG93R0MgZGlzYWxsb3dHQzsKICAgICB1bnNp
Z25lZCBhdmFpbGFibGVPbGRMZW5ndGggPQogICAgICAgICBCdXR0ZXJmbHk6OmF2YWlsYWJsZUNv
bnRpZ3VvdXNWZWN0b3JMZW5ndGgocHJvcGVydHlDYXBhY2l0eSwgb2xkVmVjdG9yTGVuZ3RoKTsK
QEAgLTM1OTgsNyArMzU5OCw3IEBAIHZvaWQgSlNPYmplY3Q6OnJlYWxsb2NhdGVBbmRTaHJpbmtC
dXR0ZXIKICAgICBBU1NFUlQobV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpID49IGxlbmd0aCk7
CiAgICAgQVNTRVJUKCFtX2J1dHRlcmZseS0+aW5kZXhpbmdIZWFkZXIoKS0+cHJlQ2FwYWNpdHko
c3RydWN0dXJlKHZtKSkpOwogCi0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIERl
ZmVyR0MgZGVmZXJHQyh2bSk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBidXR0ZXJm
bHkoKS0+cmVzaXplQXJyYXkodm0sIHRoaXMsIHN0cnVjdHVyZSh2bSksIDAsIEFycmF5U3RvcmFn
ZTo6c2l6ZUZvcihsZW5ndGgpKTsKICAgICBuZXdCdXR0ZXJmbHktPnNldFZlY3Rvckxlbmd0aChs
ZW5ndGgpOwogICAgIG5ld0J1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGxlbmd0aCk7CkBAIC0z
NjQyLDcgKzM2NDIsNyBAQCBzdGF0aWMgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogY3JlYXRlQ3Vz
CiAKICAgICAvLyBXZWFrR0NTZXQ6OmVuc3VyZVZhbHVlJ3MgZnVuY3RvciBtdXN0IG5vdCBpbnZv
a2UgR0Mgc2luY2UgR0MgY2FuIG1vZGlmeSBXZWFrR0NTZXQgaW4gdGhlIG1pZGRsZSBvZiBIYXNo
U2V0OjplbnN1cmUuCiAgICAgLy8gV2UgdXNlIERlZmVyR0MgaGVyZSAoMSkgbm90IHRvIGludm9r
ZSBHQyB3aGVuIGV4ZWN1dGluZyBXZWFrR0NTZXQ6OmVuc3VyZVZhbHVlIGFuZCAoMikgdG8gYXZv
aWQgbG9va2luZyB1cCBIYXNoU2V0IHR3aWNlLgotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFw
KTsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0pOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmN1
c3RvbUdldHRlckZ1bmN0aW9uU2V0KCkuZW5zdXJlVmFsdWU8VHJhbnNsYXRvcj4oc3RkOjptYWtl
X3BhaXIocHJvcGVydHlOYW1lLCBnZXRWYWx1ZUZ1bmMpLCBbJl0gewogICAgICAgICByZXR1cm4g
SlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSwgZ2V0VmFsdWVGdW5jLCBkb21BdHRyaWJ1dGUpOwogICAgIH0pOwpAQCAtMzY1NCw3ICsz
NjU0LDcgQEAgc3RhdGljIEpTQ3VzdG9tU2V0dGVyRnVuY3Rpb24qIGNyZWF0ZUN1cwogCiAgICAg
Ly8gV2Vha0dDU2V0OjplbnN1cmVWYWx1ZSdzIGZ1bmN0b3IgbXVzdCBub3QgaW52b2tlIEdDIHNp
bmNlIEdDIGNhbiBtb2RpZnkgV2Vha0dDU2V0IGluIHRoZSBtaWRkbGUgb2YgSGFzaFNldDo6ZW5z
dXJlLgogICAgIC8vIFdlIHVzZSBEZWZlckdDIGhlcmUgKDEpIG5vdCB0byBpbnZva2UgR0Mgd2hl
biBleGVjdXRpbmcgV2Vha0dDU2V0OjplbnN1cmVWYWx1ZSBhbmQgKDIpIHRvIGF2b2lkIGxvb2tp
bmcgdXAgSGFzaFNldCB0d2ljZS4KLSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisgICAg
RGVmZXJHQyBkZWZlckdDKHZtKTsKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5jdXN0b21TZXR0
ZXJGdW5jdGlvblNldCgpLmVuc3VyZVZhbHVlPFRyYW5zbGF0b3I+KHN0ZDo6bWFrZV9wYWlyKHBy
b3BlcnR5TmFtZSwgcHV0VmFsdWVGdW5jKSwgWyZdIHsKICAgICAgICAgcmV0dXJuIEpTQ3VzdG9t
U2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHB1
dFZhbHVlRnVuYyk7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0MSw3ICs3NDEsNyBAQCBpbmxp
bmUgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoVk0mIHZtKQogQUxXQVlTX0lOTElORSBKU1N0cmlu
ZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVk0mIHZtLCBVQ2hhciBjKQogewogICAgIGlmIGNv
bnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIHZtLmhlYXAudmVyaWZ5Q2FuR0Mo
KTsKKyAgICAgICAgdm0udmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFy
YWN0ZXJTdHJpbmcpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGMpOwogICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlKHZtLCBTdHJpbmdJbXBs
OjpjcmVhdGUoJmMsIDEpKTsKQEAgLTc3MSw3ICs3NzEsNyBAQCBBTFdBWVNfSU5MSU5FIElkZW50
aWZpZXIgSlNTdHJpbmc6OnRvSWRlCiBBTFdBWVNfSU5MSU5FIEF0b21TdHJpbmcgSlNTdHJpbmc6
OnRvQXRvbVN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAg
IGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIHZtKCkuaGVhcC52ZXJp
ZnlDYW5HQygpOworICAgICAgICB2bSgpLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzUm9wZSgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcykt
PnJlc29sdmVSb3BlVG9BdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIEF0b21T
dHJpbmcodmFsdWVJbnRlcm5hbCgpKTsKQEAgLTc4MCw3ICs3ODAsNyBAQCBBTFdBWVNfSU5MSU5F
IEF0b21TdHJpbmcgSlNTdHJpbmc6OnRvQXRvCiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxBdG9tU3Ry
aW5nSW1wbD4gSlNTdHJpbmc6OnRvRXhpc3RpbmdBdG9tU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNH
QykKLSAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CisgICAgICAgIHZtKCkudmVyaWZ5
Q2FuR0MoKTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbVN0cmlu
ZyhnbG9iYWxPYmplY3QpOwogICAgIGlmICh2YWx1ZUludGVybmFsKCkuaW1wbCgpLT5pc0F0b20o
KSkKQEAgLTc5MSw3ICs3OTEsNyBAQCBBTFdBWVNfSU5MSU5FIFJlZlB0cjxBdG9tU3RyaW5nSW1w
bD4gSlNTCiBpbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6dmFsdWUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZH
RG9lc0dDKQotICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKKyAgICAgICAgdm0oKS52
ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1JvcGUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9wZShnbG9iYWxPYmplY3Qp
OwogICAgIHJldHVybiB2YWx1ZUludGVybmFsKCk7CkBAIC04MDEsNyArODAxLDcgQEAgaW5saW5l
IGNvbnN0IFN0cmluZyYgSlNTdHJpbmc6OnRyeUdldFZhbAogewogICAgIGlmIChhbGxvY2F0aW9u
QWxsb3dlZCkgewogICAgICAgICBpZiBjb25zdGV4cHIgKHZhbGlkYXRlREZHRG9lc0dDKQotICAg
ICAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CisgICAgICAgICAgICB2bSgpLnZlcmlm
eUNhbkdDKCk7CiAgICAgICAgIGlmIChpc1JvcGUoKSkgewogICAgICAgICAgICAgLy8gUGFzcyBu
dWxscHRyIGZvciB0aGUgSlNHbG9iYWxPYmplY3Qgc28gdGhhdCByZXNvbHZlUm9wZSBkb2VzIG5v
dCB0aHJvdyBpbiB0aGUgZXZlbnQgb2YgYW4gT09NIGVycm9yLgogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9wZShudWxs
cHRyKTsKQEAgLTk5MCw3ICs5OTAsNyBAQCBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUg
dikKIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyBKU1JvcGVTdHJpbmc6OnVuc2FmZVZpZXcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiBjb25zdGV4cHIgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKKyAgICAg
ICAgdm0oKS52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1N1YnN0cmluZygpKSB7CiAgICAgICAg
IGF1dG8mIGJhc2UgPSBzdWJzdHJpbmdCYXNlKCktPnZhbHVlSW50ZXJuYWwoKTsKICAgICAgICAg
aWYgKGJhc2UuaXM4Qml0KCkpCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCBBTFdBWVNfSU5MSU5FIFN0
cmluZ1ZpZXcgSlNSb3BlU3RyaW5nOjp1CiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXdXaXRoVW5k
ZXJseWluZ1N0cmluZyBKU1JvcGVTdHJpbmc6OnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmIGNvbnN0ZXhwciAodmFs
aWRhdGVERkdEb2VzR0MpCi0gICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOworICAgICAg
ICB2bSgpLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKICAgICAgICAg
YXV0byYgYmFzZSA9IHN1YnN0cmluZ0Jhc2UoKS0+dmFsdWVJbnRlcm5hbCgpOwogICAgICAgICBp
ZiAoYmFzZS5pczhCaXQoKSkKQEAgLTEwMTcsNyArMTAxNyw3IEBAIEFMV0FZU19JTkxJTkUgU3Ry
aW5nVmlld1dpdGhVbmRlcmx5aW5nU3QKIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyBKU1N0cmlu
Zzo6dW5zYWZlVmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAg
IGlmIGNvbnN0ZXhwciAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIHZtKCkuaGVhcC52ZXJp
ZnlDYW5HQygpOworICAgICAgICB2bSgpLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzUm9wZSgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcykt
PnVuc2FmZVZpZXcoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gdmFsdWVJbnRlcm5hbCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaAkocmV2aXNpb24gMjg1NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUx
LDcgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoU3ltYm9sVGFibGVPYgogICAgICAgICBT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUgPSAqb2JqZWN0LT5zeW1ib2xUYWJsZSgpOwogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBpcyB2ZXJ5IHN1c3BpY2lvdXMuIFdlIHNob3VsZG4ndCBuZWVkIGEg
R0Mtc2FmZSBsb2NrIGhlcmUuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzQ2MDEKLSAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihzeW1ib2xUYWJsZS5tX2xvY2ssIHZtLmhlYXApOworICAgICAgICBHQ1NhZmVDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLm1fbG9jaywgdm0pOwogICAgICAgICBTeW1i
b2xUYWJsZTo6TWFwOjppdGVyYXRvciBpdGVyID0gc3ltYm9sVGFibGUuZmluZChsb2NrZXIsIHBy
b3BlcnR5TmFtZS51aWQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN5bWJvbFRhYmxlLmVuZChs
b2NrZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwS2V5LmgJKHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cEtleS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgUmVuYXRhIEhvZG92YW4gKGhvZG92YW5AaW5mLnUtc3plZ2VkLmh1
KQogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIllhcnJGbGFncy5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFja2VkUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNw
cAkocmV2aXNpb24gMjg1NjA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwTWF0Y2hlc0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDcgKzM2LDcgQEAgSlNB
cnJheSogY3JlYXRlRW1wdHlSZWdFeHBNYXRjaGVzQXJyYXkoSgogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBoYW5kbGUgYXJyYXkgYWxsb2NhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseS4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTQ0CiAgICAgCi0g
ICAgR0NEZWZlcnJhbENvbnRleHQgZGVmZXJyYWxDb250ZXh0KHZtLmhlYXApOworICAgIEdDRGVm
ZXJyYWxDb250ZXh0IGRlZmVycmFsQ29udGV4dCh2bSk7CiAgICAgT2JqZWN0SW5pdGlhbGl6YXRp
b25TY29wZSBzY29wZSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkoZ2xvYmFsT2JqZWN0LT5pc0hh
dmluZ0FCYWRUaW1lKCkpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMjg1NjA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC02
NSw3ICs2NSw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKICAg
ICBSZWdFeHAqIHJlZ0V4cCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0JiByZXN1
bHQpCiB7CiAgICAgaWYgY29uc3RleHByICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgdm0u
aGVhcC52ZXJpZnlDYW5HQygpOworICAgICAgICB2bS52ZXJpZnlDYW5HQygpOwogCiAgICAgVmVj
dG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOwogICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4
cC0+bWF0Y2hJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2bSwgaW5wdXRWYWx1ZSwgc3RhcnRPZmZzZXQs
IHN1YnBhdHRlcm5SZXN1bHRzKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBBTFdBWVNfSU5MSU5FIEpT
QXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgfTsKIAogICAgIGlmIChVTkxJS0VMWShnbG9i
YWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpIHsKLSAgICAgICAgR0NEZWZlcnJhbENvbnRl
eHQgZGVmZXJyYWxDb250ZXh0KHZtLmhlYXApOworICAgICAgICBHQ0RlZmVycmFsQ29udGV4dCBk
ZWZlcnJhbENvbnRleHQodm0pOwogICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIG1h
dGNoZXNBcnJheVNjb3BlKHZtKTsKICAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBp
bmRpY2VzQXJyYXlTY29wZSh2bSk7CiAgICAgICAgIGFycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZFJlc3RyaWN0ZWQobWF0Y2hlc0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRl
eHQsIG1hdGNoU3RydWN0dXJlLCBudW1TdWJwYXR0ZXJucyArIDEpOwpAQCAtMTY1LDcgKzE2NSw3
IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2gKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIEdDRGVmZXJyYWxDb250ZXh0IGRl
ZmVycmFsQ29udGV4dCh2bS5oZWFwKTsKKyAgICAgICAgR0NEZWZlcnJhbENvbnRleHQgZGVmZXJy
YWxDb250ZXh0KHZtKTsKICAgICAgICAgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBtYXRjaGVz
QXJyYXlTY29wZSh2bSk7CiAgICAgICAgIE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgaW5kaWNl
c0FycmF5U2NvcGUodm0pOwogICAgICAgICBhcnJheSA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRS
ZWdFeHBNYXRjaGVzQXJyYXkobWF0Y2hlc0FycmF5U2NvcGUsICZkZWZlcnJhbENvbnRleHQsIG1h
dGNoU3RydWN0dXJlLCBudW1TdWJwYXR0ZXJucyArIDEpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDI4
NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzUsNyArOTc1LDcgQEAgVmVjdG9yPFNhbXBsaW5nUHJv
ZmlsZXI6OlN0YWNrVHJhY2U+IFNhbQogCiBTdHJpbmcgU2FtcGxpbmdQcm9maWxlcjo6c3RhY2tU
cmFjZXNBc0pTT04oKQogewotICAgIERlZmVyR0MgZGVmZXJHQyhtX3ZtLmhlYXApOworICAgIERl
ZmVyR0MgZGVmZXJHQyhtX3ZtKTsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAg
ICB7CkBAIC0xMDUzLDcgKzEwNTMsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRv
cEZ1bmN0aW9uCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEZ1bmN0aW9ucyhQcmlu
dFN0cmVhbSYgb3V0KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKLSAgICBEZWZl
ckdDRm9yQVdoaWxlIGRlZmVyR0MobV92bS5oZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRl
ZmVyR0MobV92bSk7CiAKICAgICB7CiAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRl
cmF0aW9uU2NvcGUobV92bS5oZWFwKTsKQEAgLTExMTksNyArMTExOSw3IEBAIHZvaWQgU2FtcGxp
bmdQcm9maWxlcjo6cmVwb3J0VG9wQnl0ZWNvZGUKIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cmVw
b3J0VG9wQnl0ZWNvZGVzKFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhtX3ZtLmhlYXApOworICAg
IERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhtX3ZtKTsKIAogICAgIHsKICAgICAgICAgSGVhcEl0
ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29wZShtX3ZtLmhlYXApOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAJKHJl
dmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4
ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzc5LDcgKzM3OSw3IEBAIHN0YXRpYyB2
b2lkIHNldHVwSklUKFZNJiB2bSwgQ29kZUJsb2NrKiAKIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6
cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoVk0mIHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNT
Y29wZSogc2NvcGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQ29kZUJsb2NrKiYgcmVz
dWx0Q29kZUJsb2NrKQogewogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZl
ckdDRm9yQVdoaWxlIGRlZmVyR0Modm0pOwogCiAgICAgaWYgKFVOTElLRUxZKHZtLmdldEFuZENs
ZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkpIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zODcsNyArMzg3LDcgQEAgUHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjptYXRlcmlhbGl6
ZVBybwogICAgIEFTU0VSVChzdHJ1Y3R1cmUodm0pLT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpOwog
ICAgIEFTU0VSVCghcHJvdGVjdFByb3BlcnR5VGFibGVXaGlsZVRyYW5zaXRpb25pbmcoKSk7CiAg
ICAgCi0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIERlZmVyR0MgZGVmZXJHQyh2
bSk7CiAgICAgCiAgICAgVmVjdG9yPFN0cnVjdHVyZSosIDg+IHN0cnVjdHVyZXM7CiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmU7CkBAIC00MDUsNyArNDA1LDcgQEAgUHJvcGVydHlUYWJsZSogU3Ry
dWN0dXJlOjptYXRlcmlhbGl6ZVBybwogICAgIC8vIE11c3QgaG9sZCB0aGUgbG9jayBvbiB0aGlz
IHN0cnVjdHVyZSwgc2luY2Ugd2Ugd2lsbCBiZSBtb2RpZnlpbmcgdGhpcyBzdHJ1Y3R1cmUncwog
ICAgIC8vIHByb3BlcnR5IG1hcC4gV2UgZG9uJ3Qgd2FudCBnZXRDb25jdXJyZW50bHkoKSB0byBz
ZWUgdGhlIHByb3BlcnR5IG1hcCBpbiBhIGhhbGYtYmFrZWQKICAgICAvLyBzdGF0ZS4KLSAgICBH
Q1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jaywgdm0uaGVhcCk7CisgICAgR0NT
YWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2ssIHZtKTsKICAgICBpZiAoc2V0UHJv
cGVydHlUYWJsZSkKICAgICAgICAgdGhpcy0+c2V0UHJvcGVydHlUYWJsZSh2bSwgdGFibGUpOwog
CkBAIC01NDcsNyArNTQ3LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZE5ld1Byb3BlcnR5
VHJhbgogCiAgICAgY2hlY2tPZmZzZXQodHJhbnNpdGlvbi0+dHJhbnNpdGlvbk9mZnNldCgpLCB0
cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICBpZiAoIXN0cnVjdHVyZS0+aGFzQmVl
bkRpY3Rpb25hcnkoKSkgewotICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KHN0cnVjdHVyZS0+bV9sb2NrLCB2bS5oZWFwKTsKKyAgICAgICAgR0NTYWZlQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jaywgdm0pOwogICAgICAgICBzdHJ1Y3R1cmUt
Pm1fdHJhbnNpdGlvblRhYmxlLmFkZCh2bSwgdHJhbnNpdGlvbik7CiAgICAgfQogICAgIHRyYW5z
aXRpb24tPmNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsKQEAgLTY0NCw3ICs2NDQsNyBAQCBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZTo6cmVtb3ZlTmV3UHJvcGVydHlUCiAKICAgICBjaGVja09mZnNldCh0
cmFuc2l0aW9uLT50cmFuc2l0aW9uT2Zmc2V0KCksIHRyYW5zaXRpb24tPmlubGluZUNhcGFjaXR5
KCkpOwogICAgIGlmICghc3RydWN0dXJlLT5oYXNCZWVuRGljdGlvbmFyeSgpKSB7Ci0gICAgICAg
IEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2ssIHZtLmhl
YXApOworICAgICAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN0cnVjdHVyZS0+
bV9sb2NrLCB2bSk7CiAgICAgICAgIHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuYWRkKHZt
LCB0cmFuc2l0aW9uKTsKICAgICB9CiAgICAgdHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25zaXN0
ZW5jeSgpOwpAQCAtNjU2LDcgKzY1Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjaGFuZ2VQ
cm90b3R5cGVUcmEKIHsKICAgICBBU1NFUlQoaXNWYWxpZFByb3RvdHlwZShwcm90b3R5cGUpKTsK
IAotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0p
OwogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZSh2bSwgc3RydWN0dXJlLCAmZGVm
ZXJyZWQpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9wcm90b3R5cGUuc2V0KHZtLCB0cmFuc2l0aW9u
LCBwcm90b3R5cGUpOwpAQCAtNzM4LDcgKzczOCw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjph
dHRyaWJ1dGVDaGFuZ2VUcmEKIAogICAgIGNoZWNrT2Zmc2V0KHRyYW5zaXRpb24tPnRyYW5zaXRp
b25PZmZzZXQoKSwgdHJhbnNpdGlvbi0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmhhc0JlZW5EaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgR0NTYWZlQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihzdHJ1Y3R1cmUtPm1fbG9jaywgdm0uaGVhcCk7CisgICAgICAgIEdDU2Fm
ZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3RydWN0dXJlLT5tX2xvY2ssIHZtKTsKICAgICAg
ICAgc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5hZGQodm0sIHRyYW5zaXRpb24pOwogICAg
IH0KICAgICB0cmFuc2l0aW9uLT5jaGVja09mZnNldENvbnNpc3RlbmN5KCk7CkBAIC03NDksNyAr
NzQ5LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYQogU3RydWN0
dXJlKiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgRGljdGlvbmFyeUtpbmQga2luZCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0
aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKLSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7
CisgICAgRGVmZXJHQyBkZWZlckdDKHZtKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRp
b24gPSBjcmVhdGUodm0sIHN0cnVjdHVyZSwgZGVmZXJyZWQpOwogCkBAIC04MTUsNyArODE1LDcg
QEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdAogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdDIGRl
ZmVyR0Modm0pOwogICAgIAogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZSh2bSwg
c3RydWN0dXJlKTsKICAgICB0cmFuc2l0aW9uLT5zZXRUcmFuc2l0aW9uS2luZCh0cmFuc2l0aW9u
S2luZCk7CkBAIC05MDgsNyArOTA4LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5E
aWN0aW9uYXJ5UwogICAgIEFTU0VSVChpc0RpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKG9iamVj
dC0+c3RydWN0dXJlKHZtKSA9PSB0aGlzKTsKICAgICAKLSAgICBHQ1NhZmVDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jaywgdm0uaGVhcCk7CisgICAgR0NTYWZlQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2ssIHZtKTsKICAgICAKICAgICBvYmplY3QtPnNldFN0cnVjdHVyZUlE
RGlyZWN0bHkobnVrZShpZCgpKSk7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJ
KHJldmlzaW9uIDI4NTYwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUg
UHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphZGQoVk0mCiB7CiAgICAgUHJvcGVydHlUYWJsZSog
dGFibGUgPSBlbnN1cmVQcm9wZXJ0eVRhYmxlKHZtKTsKIAotICAgIEdDU2FmZUNvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9sb2NrLCB2bS5oZWFwKTsKKyAgICBHQ1NhZmVDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jaywgdm0pOwogCiAgICAgc3dpdGNoIChzaG91bGRQaW4pIHsKICAg
ICBjYXNlIFNob3VsZFBpbjo6WWVzOgpAQCAtNTExLDcgKzUxMSw3IEBAIHRlbXBsYXRlPFN0cnVj
dHVyZTo6U2hvdWxkUGluIHNob3VsZFBpbiwKIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1
cmU6OnJlbW92ZShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IEZ1bmMm
IGZ1bmMpCiB7CiAgICAgUHJvcGVydHlUYWJsZSogdGFibGUgPSBlbnN1cmVQcm9wZXJ0eVRhYmxl
KHZtKTsKLSAgICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jaywgdm0uaGVh
cCk7CisgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2ssIHZtKTsKIAog
ICAgIHN3aXRjaCAoc2hvdWxkUGluKSB7CiAgICAgY2FzZSBTaG91bGRQaW46OlllczoKQEAgLTU1
NSw3ICs1NTUsNyBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjphdHRyaWJ1CiB7
CiAgICAgUHJvcGVydHlUYWJsZSogdGFibGUgPSBlbnN1cmVQcm9wZXJ0eVRhYmxlKHZtKTsKIAot
ICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrLCB2bS5oZWFwKTsKKyAg
ICBHQ1NhZmVDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jaywgdm0pOwogCiAgICAgc3dp
dGNoIChzaG91bGRQaW4pIHsKICAgICBjYXNlIFNob3VsZFBpbjo6WWVzOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkNvbXBsZXRlU3Vi
c3BhY2UuaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiREZHRG9l
c0dDQ2hlY2suaCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0LmgiCiAjaW5jbHVkZSAi
RGlzYWxsb3dWTUVudHJ5LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oIgpA
QCAtMjA4LDYgKzIwOSwxNCBAQCBjbGFzcyBXYXRjaHBvaW50U2V0OwogY2xhc3MgV2ViQXNzZW1i
bHlGdW5jdGlvbjsKIGNsYXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOwogCisjaWYgRU5BQkxF
KERGR19KSVQpICYmIEFTU0VSVF9FTkFCTEVECisjZGVmaW5lIEVOQUJMRV9ERkdfRE9FU19HQ19W
QUxJREFUSU9OIDEKKyNlbHNlCisjZGVmaW5lIEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFUSU9O
IDAKKyNlbmRpZgorCitjb25zdGV4cHIgYm9vbCB2YWxpZGF0ZURGR0RvZXNHQyA9IEVOQUJMRV9E
RkdfRE9FU19HQ19WQUxJREFUSU9OOworCiBjbGFzcyBJc29IZWFwQ2VsbFR5cGU7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDZWxsVHlwZT4gY2xhc3MgSXNvSW5saW5lZEhlYXBDZWxsVHlwZTsKIHRlbXBs
YXRlPHR5cGVuYW1lIFBhcmVudD4gY2xhc3MgSlNDYWxsYmFja09iamVjdDsKQEAgLTExOTUsNiAr
MTIwNCwxOCBAQCBwdWJsaWM6CiAgICAgdWludHB0cl90KiBnZXRMb29wSGludEV4ZWN1dGlvbkNv
dW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICB2b2lkIHJlbW92ZUxvb3BIaW50RXhlY3V0
aW9uQ291bnRlcihjb25zdCBJbnN0cnVjdGlvbiopOwogCisjaWYgRU5BQkxFKERGR19ET0VTX0dD
X1ZBTElEQVRJT04pCisgICAgRG9lc0dDQ2hlY2sqIGFkZHJlc3NPZkRvZXNHQygpIHsgcmV0dXJu
ICZtX2RvZXNHQzsgfQorICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCBleHBlY3RE
b2VzR0MsIHVuc2lnbmVkIG5vZGVJbmRleCwgdW5zaWduZWQgbm9kZU9wKSB7IG1fZG9lc0dDLnNl
dChleHBlY3REb2VzR0MsIG5vZGVJbmRleCwgbm9kZU9wKTsgfQorICAgIHZvaWQgc2V0RG9lc0dD
RXhwZWN0YXRpb24oYm9vbCBleHBlY3REb2VzR0MsIERvZXNHQ0NoZWNrOjpTcGVjaWFsIHNwZWNp
YWwpIHsgbV9kb2VzR0Muc2V0KGV4cGVjdERvZXNHQywgc3BlY2lhbCk7IH0KKyAgICB2b2lkIHZl
cmlmeUNhbkdDKCkgeyBtX2RvZXNHQy52ZXJpZnlDYW5HQygqdGhpcyk7IH0KKyNlbHNlCisgICAg
RG9lc0dDQ2hlY2sqIGFkZHJlc3NPZkRvZXNHQygpIHsgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29s
LCB1bnNpZ25lZCwgdW5zaWduZWQpIHsgfQorICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24o
Ym9vbCwgRG9lc0dDQ2hlY2s6OlNwZWNpYWwpIHsgfQorICAgIHZvaWQgdmVyaWZ5Q2FuR0MoKSB7
IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKQEAgLTEzMTgsNiArMTMzOSwxMCBAQCBwcml2YXRlOgogICAgIExvY2sgbV9sb29w
SGludEV4ZWN1dGlvbkNvdW50TG9jazsKICAgICBIYXNoTWFwPGNvbnN0IEluc3RydWN0aW9uKiwg
c3RkOjpwYWlyPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8dWludHB0cl90Pj4+IG1fbG9vcEhp
bnRFeGVjdXRpb25Db3VudHM7CiAKKyNpZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikK
KyAgICBEb2VzR0NDaGVjayBtX2RvZXNHQzsKKyNlbmRpZgorCiAgICAgVk0qIG1fcHJldjsgLy8g
UmVxdWlyZWQgYnkgRG91Ymx5TGlua2VkTGlzdE5vZGUuCiAgICAgVk0qIG1fbmV4dDsgLy8gUmVx
dWlyZWQgYnkgRG91Ymx5TGlua2VkTGlzdE5vZGUuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI4NTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE3IEBACisyMDIxLTExLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIG1fZG9lc0dDIGZyb20gSGVhcCB0byBWTS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjk3NQorICAgICAgICByZGFyOi8v
ODUyNzc0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHQ0Nv
bnRyb2xsZXI6OmR1bXBIZWFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6Y3JlYXRlQ3Jv
c3NPcmlnaW5GdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6
Y3JlYXRlQ3Jvc3NPcmlnaW5HZXR0ZXJTZXR0ZXIpOgorCiAyMDIxLTExLTEwICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFRoZSBjc3NUZXh0IHByb3BlcnR5
IGZvciBhIGNvbXB1dGVkIHN0eWxlIHNob3VsZCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI4NTYwNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6OmR1
bXBIZWFwKCkKIAogICAgIFN0cmluZyBqc29uRGF0YTsKICAgICB7Ci0gICAgICAgIERlZmVyR0NG
b3JBV2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsgLy8gUHJldmVudCBjb25jdXJyZW50IEdDIGZyb20g
aW50ZXJmZXJpbmcgd2l0aCB0aGUgZnVsbCBHQyB0aGF0IHRoZSBzbmFwc2hvdCBkb2VzLgorICAg
ICAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0pOyAvLyBQcmV2ZW50IGNvbmN1cnJlbnQg
R0MgZnJvbSBpbnRlcmZlcmluZyB3aXRoIHRoZSBmdWxsIEdDIHRoYXQgdGhlIHNuYXBzaG90IGRv
ZXMuCiAKICAgICAgICAgSGVhcFNuYXBzaG90QnVpbGRlciBzbmFwc2hvdEJ1aWxkZXIodm0uZW5z
dXJlSGVhcFByb2ZpbGVyKCksIEhlYXBTbmFwc2hvdEJ1aWxkZXI6OlNuYXBzaG90VHlwZTo6R0NE
ZWJ1Z2dpbmdTbmFwc2hvdCk7CiAgICAgICAgIHNuYXBzaG90QnVpbGRlci5idWlsZFNuYXBzaG90
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCShyZXZpc2lvbiAyODU2MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw3ICszNDgsNyBA
QCBKU0Z1bmN0aW9uKiBKU0RPTUdsb2JhbE9iamVjdDo6Y3JlYXRlQ3JvCiAKICAgICAvLyBXZWFr
R0NNYXA6OmVuc3VyZVZhbHVlJ3MgZnVuY3RvciBtdXN0IG5vdCBpbnZva2UgR0Mgc2luY2UgR0Mg
Y2FuIG1vZGlmeSBXZWFrR0NNYXAgaW4gdGhlIG1pZGRsZSBvZiBIYXNoTWFwOjplbnN1cmUuCiAg
ICAgLy8gV2UgdXNlIERlZmVyR0MgaGVyZSAoMSkgbm90IHRvIGludm9rZSBHQyB3aGVuIGV4ZWN1
dGluZyBXZWFrR0NNYXA6OmVuc3VyZVZhbHVlIGFuZCAoMikgdG8gYXZvaWQgbG9va2luZyB1cCBI
YXNoTWFwIHR3aWNlLgotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdD
IGRlZmVyR0Modm0pOwogICAgIHJldHVybiBtX2Nyb3NzT3JpZ2luRnVuY3Rpb25NYXAuZW5zdXJl
VmFsdWUoa2V5LCBbJl0gewogICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBsZW5ndGgsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG5h
dGl2ZUZ1bmN0aW9uKTsKICAgICB9KTsKQEAgLTM2Miw3ICszNjIsNyBAQCBHZXR0ZXJTZXR0ZXIq
IEpTRE9NR2xvYmFsT2JqZWN0OjpjcmVhdGVDCiAKICAgICAvLyBXZWFrR0NNYXA6OmVuc3VyZVZh
bHVlJ3MgZnVuY3RvciBtdXN0IG5vdCBpbnZva2UgR0Mgc2luY2UgR0MgY2FuIG1vZGlmeSBXZWFr
R0NNYXAgaW4gdGhlIG1pZGRsZSBvZiBIYXNoTWFwOjplbnN1cmUuCiAgICAgLy8gV2UgdXNlIERl
ZmVyR0MgaGVyZSAoMSkgbm90IHRvIGludm9rZSBHQyB3aGVuIGV4ZWN1dGluZyBXZWFrR0NNYXA6
OmVuc3VyZVZhbHVlIGFuZCAoMikgdG8gYXZvaWQgbG9va2luZyB1cCBIYXNoTWFwIHR3aWNlLgot
ICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBEZWZlckdDIGRlZmVyR0Modm0pOwog
ICAgIHJldHVybiBtX2Nyb3NzT3JpZ2luR2V0dGVyU2V0dGVyTWFwLmVuc3VyZVZhbHVlKGtleSwg
WyZdIHsKICAgICAgICAgcmV0dXJuIEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LAogICAgICAgICAgICAgZ2V0dGVyID8gSlNDdXN0b21HZXR0ZXJGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGdldHRlcikgOiBu
dWxscHRyLAo=
</data>
<flag name="review"
          id="468719"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="468728"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>