<?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>208671</bug_id>
          
          <creation_ts>2020-03-05 15:54:21 -0800</creation_ts>
          <short_desc>[JSC] Cage JIT pointers to the JIT region</short_desc>
          <delta_ts>2020-09-22 20:25:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</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>1626350</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-03-05 15:54:21 -0800</bug_when>
    <thetext>The idea here is that we emit code that cages code pointers to the JIT region so that JIT execution does not escape to not-JIT&apos;ed regions except to known destinations.  For functions that the JIT&apos;ed code needs to call out to in C++ code space, provide a whitelist of allowable entry points.  Finally, verify that the emitted instructions follow the designed restrictions.

This change is currently only implemented for ARM64 hardware.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626352</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-03-05 15:54:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/56044895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626408</commentid>
    <comment_count>2</comment_count>
      <attachid>392652</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-03-05 17:03:36 -0800</bug_when>
    <thetext>Created attachment 392652
Draft patch

This patch does not build for non-ARM64 platforms.  It also doesn&apos;t generate the WebKit and WebCore whitelists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691005</commentid>
    <comment_count>3</comment_count>
      <attachid>409448</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2020-09-22 20:18:16 -0700</bug_when>
    <thetext>Created attachment 409448
Work in progress patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392652</attachid>
            <date>2020-03-05 17:03:36 -0800</date>
            <delta_ts>2020-09-22 20:18:16 -0700</delta_ts>
            <desc>Draft patch</desc>
            <filename>208671-draft1.patch</filename>
            <type>text/plain</type>
            <size>612799</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI1Nzky
NykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAz
LTA1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIE5lZWQg
YSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChP
T1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL1dvcmtzcGFjZVNldHRpbmdzLnhjc2V0
dGluZ3M6CisKIDIwMjAtMDMtMDMgIEZ1amlpIEhpcm9ub3JpICA8ZnVqaWkuaGlyb25vcmlAZ21h
aWwuY29tPgogCiAgICAgICAgIFtDdXJsXSBBZGQgVExTIGRlYnVnZ2luZyBmZWF0dXJlIHRvIGxv
ZyBlbmNyeXB0aW9uIGtleXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDY3MSBAQAorMjAyMC0wMy0wNSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDYWdlIEpJVCBwb2ludGVycyB0byB0aGUgSklU
IHJlZ2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA4NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgZm9yIEFSTTY0IGVtaXRzIGluZGlyZWN0IGp1bXBzIGFuZCBjYWxscyB0aHJv
dWdoIDEgb2YgMiBjYWdpbmcgc2VxdWVuY2VzLiAgVGhlc2UgY2FnaW5nCisgICAgICAgIHNlcXVl
bmNlcyBhcmUgYWxpZ25lZCBvbiAxNiBieXRlIGJvdW5kYXJpZXMgYW5kIGFyZSAxNiBieXRlcyBp
biBsZW5ndGguICBUaGUgZmlyc3Qgc2VxdWVuY2UgaXMgd2hlbiBnb2luZworICAgICAgICB0byBh
IGR5bmFtaWMgZGVzdGluYXRpb24gaW4gdGhlIEpJVCByZWdpb24uICBUaGluayBvZiBhIHZpcnR1
YWwgY2FsbC4gIEluIHRoaXMgY2FzZSB3ZSB1c2UgYSBsb2dpY2FsCisgICAgICAgIEFORCBhbmQg
YSBzaGlmdGVkIEFERCB0byBmaXJzdCBiaW5kIHRoZSB0YXJnZXQgdG8gYSAxMjhNIHJlYWNoIGFu
ZCB0aGVuIHBsYWNlIHRoYXQgcmVhY2ggYmVnaW5uaW5nIGluCisgICAgICAgIHRoZSBKSVQgcmVn
aW9uLiAgVGhlIHNlY29uZCBjYWdpbmcgc2VxdWVuY2UgaXMgYSBzdGFuZGFyZCAzIGluc3RydWN0
aW9uIG1vdmUgd2lkZSBmb2xsb3dlZCBpbW1lZGlhdGVseQorICAgICAgICBieSBhbiBpbmRpcmVj
dCBqdW1wIG9yIGNhbGwuICBUaGUgdmFsdWUgbWF0ZXJpYWxpemVkIGluIHRoZSBtb3ZlIHdpZGUg
c2VxdWVuY2UgbXVzdCBiZSBmcm9tIGEgcHJlY29tcHV0ZWQKKyAgICAgICAgd2hpdGVsaXN0Lgor
CisgICAgICAgIEFsbCBicmFuY2ggbGFiZWxzIGFyZSBhbGlnbmVkIG9uIDE2IGJ5dGUgYm91bmRh
cmllcywgdG8gZWxpbWluYXRlIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGNvZGUganVtcHMgdG8gdGhl
CisgICAgICAgIG1pZGRsZSBvZiBhIGNhZ2luZyBzZXF1ZW5jZS4KKworICAgICAgICBXaGVuIEpJ
VCdlZCBjb2RlIG5lZWRzIHRvIGp1bXAgb3IgY2FsbCB0byBDKysgY29kZSBhbmQgdGhlIGJyYW5j
aCB0YXJnZXQgY29tZXMgZnJvbSBhIG1lbW9yeSBsb2NhdGlvbgorICAgICAgICBvciByZWdpc3Rl
ciwgYSB0cmFtcG9saW5lIGNvbnNpc3Rpbmcgb2YgYSBkaXJlY3QganVtcCB0byB0aGUgQysrIGVu
dHJ5IHBvaW50LCBpbiB0aGUgZm9ybSBvZiB0aGUgc2Vjb25kCisgICAgICAgIGNhZ2luZyBzZXF1
ZW5jZSBpcyBnZW5lcmF0ZWQsIGFuZCB0aGUgYWRkcmVzcyBvZiB0aGF0IHRyYW1wb2xpbmUgaXMg
dXNlZCBhcyB0aGUgdGFyZ2V0IGluIEpJVCdlZCBjb2RlLgorCisgICAgICAgIEdlbmVyYXRlZCBK
SVQnZWQgY29kZSBpcyB2ZXJpZmllZCB3aGVuIGl0IGlzIGJlaW5nIGNvcGllZCB0byB0aGUgSklU
IHJlZ2lvbiB0byBhc3N1cmUgdGhhdCBpdCBjb21wbGllcworICAgICAgICB3aXRoIGFib3ZlIGRl
c2NyaWJlZCBzZXF1ZW5jZXMgYW5kIGFsaWdubWVudHMuCisKKyAgICAgICAgVGhlIHdoaXRlbGlz
dCBpcyAobW9zdGx5KSBnZW5lcmF0ZWQgYnkgbG9va2luZyBmb3IgdGhlIEpTQ19IT1NUX0NBTEwg
YW5kIEpJVF9PUEVSQVRJT04gYXR0cmlidXRlcyBzdXBwbGllZCBpbgorICAgICAgICBpbiB0aGUg
c291cmNlIGNvZGUuICBGb3IgZXhjZXB0aW9uYWwgY2FzZXMsIGxpa2UgdGhlIHZhcmlvdXMgc3lz
dGVtIG1hdGggcm91dGluZXMgb3Igc3RhdGljIGNsYXNzIGZ1bmN0aW9uLCB3ZQorICAgICAgICBw
cm92aWRlIHRob3NlIGluIGFuIGV4Y2VwdGlvbmFsIGxpc3QgdGhhdCBpcyBhZGRlZCB0byB0aGUg
YXV0b21hdGljYWxseSBnYXRoZXJlZCB3aGl0ZWxpc3QgaXRlbXMuICBUaGUKKyAgICAgICAgd2hp
dGVsaXN0IGlzIGluaXRpYWxpemVkIGR1cmluZyBzdGFydHVwIGluIGEgc3RhdGljYWxseSBhbGxv
Y2F0ZWQgdGFibGUuCisKKyAgICAgICAgR2l2ZW4gdGhhdCBjYWxscyB0byB3aGl0ZWxpc3RlZCBD
KysgZnVuY3Rpb25zIG5lZWQgdG8gYmUgbWF0ZXJpYWxpemVkIGltbWVkaWF0ZWx5IGJlZm9yZSB0
aGUgaW5kaXJlY3QgYnJhbmNoICAgIAorICAgICAgICBpbnN0cnVjdGlvbiwgYXBwcm9wcmlhdGUg
Y2hhbmdlcyB3ZXJlIG1hZGUgdG8gdGhlIG1hY3JvIGFzc2VtYmxlciBhbmQgb3B0aW1pemVkIEpJ
VCBlbmdpbmVzIHRvIGVuc3VyZSB0aGlzLgorCisgICAgICAgIFRoZSBKSVQgcmVnaW9uIGlzIG5v
dyBwYWRkZWQgb24gZWl0aGVyIHNpZGUgd2l0aCAxMjhNIHVubWFwcGVkIHJlZ2lvbnMgc28gdGhh
dCB0aGUgY2FnaW5nIHNlcXVlbmNlCisgICAgICAgIHdpbGwga2VlcCBicmFuY2ggdGFyZ2V0IGVp
dGhlciB3aXRoaW4gdGhlIEpJVCByZWdpb24gb3IgdG8gYWRkcmVzc2VzIHRoYXQgd2lsbCBmYXVs
dC4gIFRoZSBKSVQgcmVnaW9uCisgICAgICAgIGNhbiBiZSBjb25maWd1cmVkIHRvIHNpemVzIGxl
c3MgdGhhbiAxMjhNLgorCisgICAgICAgICogSklURGVzdGluYXRpb25XaGl0ZUxpc3QtaW5wdXQu
eGNmaWxlbGlzdDogQWRkZWQuCisgICAgICAgICogSklURGVzdGluYXRpb25XaGl0ZUxpc3Qtb3V0
cHV0LnhjZmlsZWxpc3Q6IEFkZGVkLgorICAgICAgICAqIEpJVERlc3RpbmF0aW9uV2hpdGVsaXN0
Lm1ha2U6IEFkZGVkLgorICAgICAgICAqIEpJVFdoaXRlbGlzdC5qc29uOiBBZGRlZC4KKyAgICAg
ICAgKiBKSVRXaGl0ZWxpc3RFeHRyYXMuaW46IEFkZGVkLgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU2NyaXB0cy9KSVRPcHNX
aGl0ZWxpc3RHZW5lcmF0b3IucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUt
aml0RGVzdGluYXRpb25XaGl0ZUxpc3Quc2g6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6bGFiZWwpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6bm9w
QWxpZ24xNik6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpub3BBbGlnbkluc3RydWN0
aW9uVG9PZmZzZXQpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6Y3VycmVudE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpjYW5Db21wYWN0KToKKyAgICAgICAg
KEpTQzo6QVJNNjRBc3NlbWJsZXI6OmNvbXB1dGVKdW1wVHlwZSk6CisgICAgICAgIChKU0M6OkFS
TTY0QXNzZW1ibGVyOjpkZWJ1Z09mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVy
L0FSTTY0RUFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk02NEVBc3NlbWJsZXI6OnNldFBv
aW50ZXIpOgorICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oOgorICAgICAgICAo
SlNDOjpBUk12N0Fzc2VtYmxlcjo6Y3VycmVudE9mZnNldCk6CisgICAgICAgIChKU0M6OkFSTXY3
QXNzZW1ibGVyOjpBUk1JbnN0cnVjdGlvbkZvcm1hdHRlcjo6Y3VycmVudE9mZnNldCk6CisgICAg
ICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpkZWJ1Z09mZnNldCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkFSTXY3QXNzZW1ibGVyOjpBUk1JbnN0cnVjdGlvbkZvcm1hdHRlcjo6ZGVidWdPZmZz
ZXQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
Lmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6Okp1bXA6OmxpbmsgY29u
c3QpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpjdXJyZW50T2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6ZGVidWdPZmZzZXQpOiBE
ZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoKKyAgICAgICAg
KEpTQzo6QXNzZW1ibGVyQnVmZmVyOjppc0FsaWduZWRUb09mZnNldCBjb25zdCk6CisgICAgICAg
IChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6Y3VycmVudE9mZnNldCk6CisgICAgICAgIChKU0M6OkFz
c2VtYmxlckJ1ZmZlcjo6cHV0SW50ZWdyYWxVbmNoZWNrZWQpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJsZXJCdWZmZXI6OmRlYnVnT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmNvcHlDb21wYWN0QW5k
TGlua0NvZGUpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpsaW5rQ29kZSk6CisgICAgICAg
ICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6dHJh
bXBvbGluZUF0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oOgorICAgICAg
ICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpjdXJyZW50T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6TUlQ
U0Fzc2VtYmxlcjo6ZGVidWdPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBy
b2JlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpjYWdlVG9KSVRSZWdpb24pOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpjYWxsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNNjQ6Omp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1w
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6bmVhckNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpuZWFyVGFpbENhbGwpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0Ojp0aHJlYWRTYWZlUGF0Y2hhYmxlTmVhckNhbGwpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpyZXQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpyZXBhdGNoQ2FsbCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6Om1ha2VCcmFuY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjptYWtlQ29tcGFyZUFuZEJyYW5jaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjQ6Om1ha2VUZXN0Qml0QW5kQnJhbmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bGlua0NhbGwpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dGFnUmV0dXJuQWRkcmVz
cyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjp1bnRhZ1JldHVybkFkZHJl
c3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dGFnUHRyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnVudGFnUHRyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnJlbW92ZVB0clRhZyk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjRFOjpjYWxsVHJ1c3RlZFB0cik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNNjRFOjpjYWxsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6
OmNhbGxSZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxs
T3BlcmF0aW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXAp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmZhckp1
bXApOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpjdXJyZW50T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
OjpYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjo6U2luZ2xlSW5zdHJ1Y3Rpb25CdWZmZXJXcml0ZXI6
Om1lbW9yeU1vZFJNKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpkZWJ1Z09mZnNldCk6
IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNDYWdlZENDYWxsLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpCMzo6Y2FnZWRDQ2FsbCk6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvcy5jcHA6Cisg
ICAgICAgICogYjMvQjNNYXRoRXh0cmFzLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oOgorICAgICAgICAoSlND
OjpvcGNvZGVTaXplQXNJbmRleCk6CisgICAgICAgICogZGZnL0RGR0FyaXRoTW9kZS5oOgorICAg
ICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFi
aWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXQ6OmVtaXRSZXN0b3JlQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6aGFuZGxlRXhpdENvdW50cyk6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2FsbGVyUmV0dXJuUEMpOgorICAgICAgICAoSlNDOjpERkc6OnJlaWZ5
SW5saW5lZENhbGxGcmFtZXMpOgorICAgICAgICAoSlNDOjpERkc6Om9zcldyaXRlQmFycmllcik6
CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUN1cnJlbnRCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBcml0aE1vZCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFsbG9jYXRlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZnByQWxsb2NhdGUpOgorICAgICAgICAqIGRmZy9ERkdU
aHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OmluaXQpOgorICAgICAg
ICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6c2V0UENBbmRPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6aXNWYWxpZEpJVFRh
cmdldCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpvcGNv
ZGVHcm91cElEKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6
Om9wY29kZUdyb3VwSURGb3JQcmlvckluc24pOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2Vt
Ymxlcjo6QTY0RE9wY29kZTo6ZGlzYXNzZW1ibGUpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fz
c2VtYmxlcjo6QTY0RE9wY29kZTo6aXNWYWxpZEluc24pOgorICAgICAgICAoSlNDOjpBUk02NERp
c2Fzc2VtYmxlcjo6QTY0RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYXRlOjppc1ZhbGlkKToKKyAg
ICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVBZGRTdWJ0cmFjdEV4dGVu
ZGVkUmVnaXN0ZXI6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6
QTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyOjppc1ZhbGlkKToKKyAgICAgICAg
KEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVCaXRmaWVsZDo6aXNWYWxpZCk6Cisg
ICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlQ29tcGFyZUFuZEJyYW5j
aEltbWVkaWF0ZTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpB
NjRET3Bjb2RlQ29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGU6OmlzVmFsaWQpOgorICAgICAgICAo
SlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUNvbmRpdGlvbmFsU2VsZWN0Ojppc1Zh
bGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVEYXRhUHJv
Y2Vzc2luZzFTb3VyY2U6OmZvcm1hdCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVy
OjpBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcxU291cmNlOjppc1ZhbGlkKToKKyAgICAgICAgKEpT
Qzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzJTb3VyY2U6Omlz
VmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZURhdGFQ
cm9jZXNzaW5nM1NvdXJjZTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1i
bGVyOjpBNjRPcGNvZGVFeGNlcHRpb25HZW5lcmF0aW9uOjppc1ZhbGlkKToKKyAgICAgICAgKEpT
Qzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVFeHRyYWN0Ojppc1ZhbGlkKToKKyAgICAg
ICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVGbG9hdGluZ1BvaW50Q29tcGFy
ZTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2Rl
RmxvYXRpbmdQb2ludENvbmRpdGlvbmFsU2VsZWN0Ojppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6
QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVGbG9hdGluZ1BvaW50RGF0YVByb2Nlc3Npbmcx
U291cmNlOjppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERP
cGNvZGVGbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcyU291cmNlOjppc1ZhbGlkKToKKyAgICAg
ICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVGbG9hdGluZ0ZpeGVkUG9pbnRD
b252ZXJzaW9uczo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpB
NjRET3Bjb2RlRmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9uczo6aXNWYWxpZCk6CisgICAg
ICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTVNSSW1tZWRpYXRlOjppc1Zh
bGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVNU1JPck1S
U1JlZ2lzdGVyOjppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2
NERPcGNvZGVIaW50OjpvcE5hbWUpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6
QTY0RE9wY29kZUhpbnQ6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxl
cjo6QTY0RE9wY29kZVNJTURUaHJlZVNhbWU6Om9wTmFtZSk6CisgICAgICAgIChKU0M6OkFSTTY0
RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlU0lNRFRocmVlU2FtZTo6bW9kaWZpZXIpOgorICAgICAg
ICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZVNJTURUaHJlZVNhbWU6OmZvcm1h
dCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlU0lNRFRocmVl
U2FtZTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bj
b2RlU3lzdGVtSW5zdDo6Zm9ybWF0KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6
OkE2NERPcGNvZGVTeXN0ZW1JbnN0Ojppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNh
c3NlbWJsZXI6OkE2NERPcGNvZGVTeXN0ZW1TeW5jOjppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6
QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6OmlzVmFsaWQp
OgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUlt
bWVkaWF0ZTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRE
T3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJPZmZzZXQ6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpB
Uk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9yZUF1dGhlbnRpY2F0ZWQ6OmlzVmFs
aWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvYWRTdG9y
ZVJlZ2lzdGVyUGFpcjo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVy
OjpBNjRET3Bjb2RlTG9hZFN0b3JlVW5zaWduZWRJbW1lZGlhdGU6OmlzVmFsaWQpOgorICAgICAg
ICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvZ2ljYWxTaGlmdGVkUmVnaXN0
ZXI6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29k
ZUxvZ2ljYWxJbW1lZGlhdGU6OmZvcm1hdCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1i
bGVyOjpBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0ZTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0ZTo6Y29tcHV0ZUlt
bWVkaWF0ZSk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTW92
ZVdpZGU6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9w
Y29kZU1vdmVXaWRlOjppc01vdm4pOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6
QTY0RE9wY29kZU1vdmVXaWRlOjppc01vdnopOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2Vt
Ymxlcjo6QTY0RE9wY29kZU1vdmVXaWRlOjppc01vdmspOgorICAgICAgICAoSlNDOjpBUk02NERp
c2Fzc2VtYmxlcjo6QTY0RE9wY29kZU1vdmVXaWRlOjp2YWx1ZSk6CisgICAgICAgIChKU0M6OkFS
TTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTW92ZVdpZGU6OmJ1aWxkSW1tZWRpYXRlRnJvbU1v
dmVXaWRlU2VxdWVuY2UpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9w
Y29kZVRlc3RBbmRCcmFuY2hJbW1lZGlhdGU6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02
NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZVVuY29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGU6Omlz
VmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZVVuY29u
ZGl0aW9uYWxCcmFuY2hSZWdpc3Rlcjo6Zm9ybWF0KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNh
c3NlbWJsZXI6OkE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXI6OmlzVmFsaWQp
OgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmg6CisgICAgICAgIChK
U0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpPcGNvZGVHcm91cDo6Z3JvdXBJRCBj
b25zdCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpPcGNv
ZGVHcm91cDo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6
OkE2NERPcGNvZGU6Ok9wY29kZUdyb3VwOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6Ok9wY29kZUdyb3VwTGlzdE5vZGU6Ok9wY29k
ZUdyb3VwTGlzdE5vZGUpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9w
Y29kZTo6T3Bjb2RlR3JvdXBMaXN0Tm9kZTo6c2V0TmV4dCk6CisgICAgICAgIChKU0M6OkFSTTY0
RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpPcGNvZGVHcm91cExpc3ROb2RlOjpuZXh0KToKKyAg
ICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6Ok9wY29kZUdyb3VwTGlz
dE5vZGU6Omdyb3VwKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNv
ZGU6Ok9wY29kZUdyb3VwTGlzdE5vZGU6Omdyb3VwSUQpOgorICAgICAgICAoSlNDOjpBUk02NERp
c2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6T3Bjb2RlR3JvdXBMaXN0Tm9kZTo6bWF0Y2hlcyk6Cisg
ICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpBNjRET3Bjb2RlKToK
KyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OmlzNjRCaXQpOgor
ICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6c2l6ZSk6CisgICAg
ICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpvcHRpb24pOgorICAgICAg
ICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6cmQpOgorICAgICAgICAoSlND
OjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6cnQpOgorICAgICAgICAoSlNDOjpBUk02
NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6cm4pOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fz
c2VtYmxlcjo6QTY0RE9wY29kZTo6cm0pOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxl
cjo6QTY0RE9wY29kZTo6c2V0T3Bjb2RlRnJvbVByaW9yKToKKyAgICAgICAgKEpTQzo6QVJNNjRE
aXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OnNldE9wY29kZSk6CisgICAgICAgIChKU0M6OkFSTTY0
RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpjdXJyZW50UEMpOgorICAgICAgICAoSlNDOjpBUk02
NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6cGNNYXNrZWRPZmZzZXRJcyk6CisgICAgICAgIChK
U0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpjdXJyZW50T3Bjb2RlKToKKyAgICAg
ICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OnBjUmVsYXRpdmVBZGRyZXNz
KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OnJlc2V0Rm9y
bWF0KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6Om9wY29k
ZUdyb3VwKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6Omlz
VmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6b3Bj
b2RlR3JvdXBOdW1iZXIpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9w
Y29kZTo6YXBwZW5kSW5zdHJ1Y3Rpb25OYW1lV2l0aE1vZGlmaWVyKToKKyAgICAgICAgKEpTQzo6
QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OmFwcGVuZFNJTURSZWdpc3Rlck5hbWUpOgor
ICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6YXBwZW5kUENSZWxh
dGl2ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpTZWNvbmRhcnlJ
bnN0cnVjdGlvblNjb3BlOjpTZWNvbmRhcnlJbnN0cnVjdGlvblNjb3BlKToKKyAgICAgICAgKEpT
Qzo6QVJNNjREaXNhc3NlbWJsZXI6OlNlY29uZGFyeUluc3RydWN0aW9uU2NvcGU6On5TZWNvbmRh
cnlJbnN0cnVjdGlvblNjb3BlKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2
NERPcGNvZGVBZGRTdWJ0cmFjdFNoaWZ0ZWRSZWdpc3Rlcjo6aXNBbmQpOgorICAgICAgICAoSlND
OjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZVNJTURUaHJlZVNhbWU6OmlzQml0T3ApOgor
ICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZVNJTURUaHJlZVNhbWU6
OnFCaXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZVNJTURU
aHJlZVNhbWU6OnVCaXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9w
Y29kZVNJTURUaHJlZVNhbWU6OnNpemUpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxl
cjo6QTY0RE9wY29kZVNJTURUaHJlZVNhbWU6Om9wY29kZSk6CisgICAgICAgIChKU0M6OkFSTTY0
RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0ZTo6aXNBbmQpOgorICAgICAg
ICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZU1vdmVXaWRlOjppc01vdmVXaWRl
KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6Ok9wY29kZUdy
b3VwOjpPcGNvZGVHcm91cCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1i
bGVyOjpBNjRET3Bjb2RlOjpPcGNvZGVHcm91cDo6c2V0TmV4dCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpPcGNvZGVHcm91cDo6bmV4dCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpP
cGNvZGVHcm91cDo6bWF0Y2hlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNz
ZW1ibGVyOjpBNjRET3Bjb2RlOjpPcGNvZGVHcm91cDo6Zm9ybWF0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkaXNhc3NlbWJsZXIvQVJNNjREaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjp0
cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKSVRDb2RlVmVyaWZpZXI6OmNoZWNrSW5zdHJ1Y3Rp
b25BdCk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0FSTTY0VmVyaWZpZXIuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkpJVENvZGVWZXJpZmllcjo6SklUQ29kZVZlcmlmaWVyKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6dmFsaWRhdGVBSVN0YXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUFyaXRoVW5hcnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJnc1NwcmVhZCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJh
cmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxF
dmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdFN0b3JlQmFy
cmllcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnZtQ2FsbCk6Cisg
ICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
Y29tcGlsZVN0dWIpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbkNvbXBpbGVGVExPU1JF
eGl0KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpjYWxsV2l0aG91dFNpZGVFZmZlY3RzKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
Om9wZXJhdGlvbik6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6Z2VuZXJpY0dlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJh
dG9yKCkgY29uc3QpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNhbGxFeGNlcHRpb25GdXp6KToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpkZWJ1Z0NhbGwpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5Q
YWNrZXQpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpwcmVwYXJlRm9yVGFpbENhbGxTbG93KToKKyAgICAgICAgKiBqaXQvQ2FsbEZy
YW1lU2h1ZmZsZXIuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFy
ZUZvclRhaWxDYWxsKToKKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OmluaXRpYWxpemVKSVRQYWdlUmVzZXJ2YXRpb24pOgorICAgICAgICAqIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmg6CisgICAgICAgIChKU0M6OnBlcmZvcm1KSVRNZW1jcHkp
OgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEVudGVyT3B0aW1pemF0aW9uQ2hlY2spOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklURGVzdGluYXRpb25XaGl0ZWxp
c3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SklURGVzdGluYXRpb25XaGl0ZWxpc3Q6OnZh
bGlkRnVuY1B0cnMpOgorICAgICAgICAoSlNDOjpKSVREZXN0aW5hdGlvbldoaXRlbGlzdDo6aW5z
dGFuY2UpOgorICAgICAgICAoSlNDOjpKSVREZXN0aW5hdGlvbldoaXRlbGlzdDo6dGFibGVGcm96
ZW4pOgorICAgICAgICAoSlNDOjpKSVREZXN0aW5hdGlvbldoaXRlbGlzdDo6YWRkRW50cnkpOgor
ICAgICAgICAoSlNDOjpKSVREZXN0aW5hdGlvbldoaXRlbGlzdDo6aXNPbkxpc3QpOgorICAgICAg
ICAoSlNDOjpKSVREZXN0aW5hdGlvbldoaXRlbGlzdDo6YXNzZXJ0T25MaXN0KToKKyAgICAgICAg
KEpTQzo6SklURGVzdGluYXRpb25XaGl0ZWxpc3Q6OmZ1bmN0aW9uTmFtZSk6CisgICAgICAgICog
aml0L0pJVERlc3RpbmF0aW9uV2hpdGVsaXN0Lmg6IEFkZGVkLgorICAgICAgICAqIGppdC9KSVRF
eGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1Vud2luZCk6CisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2xvb3Bf
aGludCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFRodW5rcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVFRodW5rczo6SG9zdEZ1bmN0aW9uU3R1YnM6Okhvc3RGdW5jdGlvblN0dWJCbG9jazo6
bGluayk6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6SG9zdEZ1bmN0aW9uU3R1YnM6Om5hdGl2
ZVRyYW1wb2xpbmVGb3IpOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6Okhvc3RGdW5jdGlvblN0
dWJzOjphZGRTdHViRm9yKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpIb3N0RnVuY3Rpb25T
dHViczo6Z2V0Q3VycmVudEJsb2NrKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAg
ICAgICogaml0L0pJVFZlcmlmaWVkQ29weS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpwZXJm
b3JtVmVyaWZpZWRKSVRDb3B5KToKKyAgICAgICAgKiBqaXQvSklUVmVyaWZpZWRDb3B5Lmg6IEFk
ZGVkLgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6cmVhZFB1dElD
Q2FsbFRhcmdldCk6CisgICAgICAgIChKU0M6OmZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbCk6Cisg
ICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmVtaXRQb2lu
dGVyVmFsaWRhdGlvbik6CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpzbG93UGF0aEZvcik6CisgICAgICAgIChKU0M6Om5hdGl2
ZUZvckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFyaXR5Rml4dXBHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcik6CisgICAgICAgICogaml0L1Ro
dW5rR2VuZXJhdG9ycy5oOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToK
KyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aW5p
dGlhbGl6ZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6CisgICAgICAgIChKU0M6OkxM
SW50OjpKSVRUcmFtcG9saW5lQmFzZUluZGV4Rm9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkpJ
VFRyYW1wb2xpbmVJbmRleEZvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpKSVRUcmFtcG9saW5l
SW5kZXhGb3JTbG93KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldE9wY29kZUlERnJvbSk6Cisg
ICAgICAgIChKU0M6OkxMSW50Ojppc0NoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJh
bXBvbGluZSk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmNhbGxUb1Rocm93KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZmxpbmVB
c21Db25maWcuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpleGNlcHRpb25UYWcpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxl
SG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAg
ICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVk1FbnRyeVRv
SklUVHJhbXBvbGluZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZUxMSW50Q2FnZWRS
ZXR1cm5UaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZUNoZWNrcG9pbnRPU1JF
eGl0RnJvbUlubGluZWRDYWxsVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVK
SVRSZWdFeHBUcmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlTExJbnRU
aHJvd0R1cmluZ0NhbGxUcmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRl
TExJbnRUb0pJVFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVXYXNt
TExJbnRUb0pJVFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6Q3JlYXRlTExpbnRU
b0pJVFRyYW1wb2xpbmVzKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0
RnJvbUlubGluZWRDYWxsVHJhbXBvbGluZSk6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3Mu
aDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIGxsaW50L1dlYkFzc2Vt
Ymx5LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybTY0LnJiOgorICAgICAgICAqIG9mZmxp
bmVhc20vYXJtNjRlLnJiOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdpdGhBcnJheUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6Y2FsbEFycmF5Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
cik6CisgICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjYWxsQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbEJpZ0ludENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludFBy
b3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpjYWxsQm9vbGVhbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0V2l0aEJvb2xlYW5Db25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9Cb29sZWFu
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29uc29sZU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OmNvbnNvbGVQcm90b0Z1bmNEZWJ1Zyk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90
b0Z1bmNFcnJvcik6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNMb2cpOgorICAgICAg
ICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jSW5mbyk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90
b0Z1bmNXYXJuKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0NsZWFyKToKKyAgICAg
ICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0Rpcik6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90
b0Z1bmNEaXJYTUwpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGFibGUpOgorICAg
ICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVHJhY2UpOgorICAgICAgICAoSlNDOjpjb25zb2xl
UHJvdG9GdW5jQXNzZXJ0KToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0NvdW50KToK
KyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQpOgorICAgICAgICAoSlND
Ojpjb25zb2xlUHJvdG9GdW5jUHJvZmlsZSk6CisgICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1
bmNQcm9maWxlRW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1Rha2VIZWFwU25h
cHNob3QpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGltZSk6CisgICAgICAgIChK
U0M6OmNvbnNvbGVQcm90b0Z1bmNUaW1lTG9nKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3Rv
RnVuY1RpbWVFbmQpOgorICAgICAgICAoSlNDOjpjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1wKToK
KyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY0dyb3VwKToKKyAgICAgICAgKEpTQzo6Y29u
c29sZVByb3RvRnVuY0dyb3VwQ29sbGFwc2VkKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3Rv
RnVuY0dyb3VwRW5kKToKKyAgICAgICAgKEpTQzo6Y29uc29sZVByb3RvRnVuY1JlY29yZCk6Cisg
ICAgICAgIChKU0M6OmNvbnNvbGVQcm90b0Z1bmNSZWNvcmRFbmQpOgorICAgICAgICAoSlNDOjpj
b25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdCk6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6Y2FsbERhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsRnVuY3Rpb25D
b25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmNhbGxGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAg
KiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1
bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVG
dW5jdGlvbkZvcik6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEludGxDb2xsYXRvcik6CisgICAgICAgIChKU0M6
OmNhbGxJbnRsQ29sbGF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yRnVuY0NvbXBhcmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQpOgorICAgICAgICAoSlNDOjpjYWxsSW50
bERhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXRE
YXRlVGltZSk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAg
KEpTQzo6Y2FsbEludGxOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRGdW5j
Rm9ybWF0TnVtYmVyKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
Ojpjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpjYWxsSW50bFBsdXJh
bFJ1bGVzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6
CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpjYWxsQXJyYXlCdWZmZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZSk6CisgICAgICAg
IChKU0M6OmFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk6CisgICAgICAgIChK
U0M6OnNoYXJlZEFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk6CisgICAgICAg
ICogcnVudGltZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8Vmlld0Ns
YXNzPjo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8Vmlld0NsYXNzPjo6Y29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcjxWaWV3Q2xhc3M+OjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5Vmlldyk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQpOgorICAg
ICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToKKyAg
ICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMpOgorICAg
ICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChK
U0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAg
KEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVmZmVyKToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKToKKyAg
ICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0
aCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5
dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNS
ZXZlcnNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNT
b3J0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2Up
OgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5
Q3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6bWFrZUJvdW5kRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpoYXNPd25MZW5ndGhQcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OmFzc2VydENhbGwpOgorICAgICAgICAoSlNDOjplbnF1ZXVl
Sm9iKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpydW5TdGRGdW5j
dGlvbik6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNWYWx1ZXMpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5UHJvdG9W
aWV3RnVuY0VudHJpZXMpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0tl
eXMpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldCk6CisgICAgICAg
IChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6
OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMpOgorICAgICAgICAoSlNDOjp0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNJbmRleE9mKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNKb2luKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZm
ZXIpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6
CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk6
CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldCk6
CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAg
IChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjp0eXBl
ZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFnKToKKyAgICAgICAgKiBydW50aW1l
L01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbE1hcCk6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdE1hcCk6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6TWF0Y2hSZXN1
bHQ6Ok1hdGNoUmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL01hdGhDb21tb24uY3BwOgorICAg
ICAgICAoSlNDOjpNYXRoOjpvcGVyYXRpb25Mb2cxcCk6CisgICAgICAgIChKU0M6Ok1hdGg6Omxv
ZzFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL01hdGhDb21tb24uaDoKKyAgICAgICAg
KiBydW50aW1lL01hdGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTG9n
MXApOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIHJ1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4
ZWN1dGFibGU6Ok5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXhl
Y3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaDoKKyAgICAgICAg
KEpTQzo6VGFnZ2VkTmF0aXZlRnVuY3Rpb246Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpU
YWdnZWROYXRpdmVGdW5jdGlvbjo6dW50YWdnZWRQb2ludGVyIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6VGFnZ2VkTmF0aXZlRnVuY3Rpb246OlRhZ2dlZE5hdGl2ZUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6VGFnZ2VkTmF0aXZlRnVuY3Rpb246OmlzRW1wdHlWYWx1ZSBjb25zdCk6CisgICAgICAg
IChKU0M6OlRhZ2dlZE5hdGl2ZUZ1bmN0aW9uOjppc0RlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OlRhZ2dlZE5hdGl2ZUZ1bmN0aW9uOjplbXB0eVZhbHVlKToKKyAgICAgICAgKEpT
Qzo6VGFnZ2VkTmF0aXZlRnVuY3Rpb246OmRlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlRh
Z2dlZE5hdGl2ZUZ1bmN0aW9uSGFzaDo6aGFzaCk6CisgICAgICAgICogcnVudGltZS9OdWxsR2V0
dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpOdWxsR2V0dGVyRnVuY3Rpb25DYWxsUmV0
dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6TnVsbEdldHRlckZ1bmN0aW9uOjpOdWxsR2V0
dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpOdWxsR2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6
Y2FsbFJldHVyblVuZGVmaW5lZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9OdWxsU2V0
dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpOdWxsU2V0dGVyRnVuY3Rpb25DYWxsUmV0
dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6TnVsbFNldHRlckZ1bmN0aW9uOjpOdWxsU2V0
dGVyRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpOdWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbDo6
Y2FsbFJldHVyblVuZGVmaW5lZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKEpTQzo6Y2FsbE51bWJlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
bnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29u
c3RydWN0b3JGdW5jSXNTYWZlSW50ZWdlcik6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpjYWxsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjptYWtlUmV2b2NhYmxlUHJveHkpOgorICAgICAgICAoSlNDOjpwcm94eVJldm9jYWJs
ZUNvbnN0cnVjdG9yVGhyb3dFcnJvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFByb3h5T2Jq
ZWN0KToKKyAgICAgICAgKEpTQzo6Y2FsbFByb3h5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q2FsbCk6CisgICAgICAgIChK
U0M6OnBlcmZvcm1Qcm94eUNvbnN0cnVjdCk6CisgICAgICAgICogcnVudGltZS9Qcm94eVJldm9r
ZS5jcHA6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eVJldm9rZSk6CisgICAgICAgICogcnVu
dGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6Y2FsbFJlZ0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdFNldExhc3RJbmRl
eFN0cmljdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmlj
dCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjYWxsU2V0KToKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0U2V0KToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5j
cHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OnN0cmluZ0Zyb21DaGFyQ29kZSk6CisgICAgICAgIChKU0M6OnN0cmluZ0Zyb21Db2RlUG9p
bnQpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IpOgorICAg
ICAgICAoSlNDOjpjYWxsU3RyaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Y2FsbFN5bWJvbCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06Om5hdGl2ZVRyYW1wb2xpbmVGb3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdl
YWtNYXApOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXZWFrTWFwKToKKyAgICAgICAgKiBydW50
aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha09iamVjdFJl
ZkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYWtSZWYpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RXZWFrUmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQ
cm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Y2FsbFdlYWtTZXQpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RXZWFr
U2V0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwOgorICAgICAgICAq
IHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpKU0RvbGxhclZNOjpwb3B1bGF0
ZUpJVERlc3RpbmF0aW9uV2hpdGVsaXN0KToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmg6
CisgICAgICAgICogdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHA6CisgICAgICAgIChKU0M6
OlNpZ2lsbENyYXNoQW5hbHl6ZXI6OmR1bXBDb2RlQmxvY2spOgorICAgICAgICAqIHdhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6
OmVtaXRDQ2FsbCk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRDYWxsT3BlcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHZXQpOgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCk6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjphZGRUYWJsZVNpemUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRUYWJsZUdyb3cpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRU
YWJsZUZpbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVt
b3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6c2V0R2xvYmFsKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdFdyaXRlQmFycmllckZvckpTV3Jh
cHBlcik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6
STMyUG9wY250Pik6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9w
VHlwZTo6STY0UG9wY250Pik6CisgICAgICAgICogd2FzbS9XYXNtT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OmRvT1NSRW50cnkpOgorICAgICAgICAqIHdhc20vV2FzbVRodW5r
cy5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnRyaWdnZXJPTUdFbnRyeVRpZXJVcFRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwOgorICAgICAgICAo
SlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJ
bnN0YW50aWF0ZUZ1bmMpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcik6Cisg
ICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKToKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNz
ZW1ibHlGdW5jdGlvbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2Fs
bEVudHJ5cG9pbnRTbG93KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5R2xvYmFs
KToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlHbG9iYWwpOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp3ZWJB
c3NlbWJseUdsb2JhbFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJs
eUdsb2JhbFByb3RvR2V0dGVyRnVuY1ZhbHVlKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlH
bG9iYWxQcm90b1NldHRlckZ1bmNWYWx1ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpjYWxsSlNXZWJBc3NlbWJseUluc3RhbmNl
KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvcik6CisgICAgICAgIChKU0M6
OmNhbGxKU1dlYkFzc2VtYmx5TGlua0Vycm9yKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5TWVtb3J5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFz
c2VtYmx5TWVtb3J5KToKKyAgICAgICAgKEpTQzo6Y2FsbEpTV2ViQXNzZW1ibHlNZW1vcnkpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwOgorICAgICAg
ICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNb2R1bGUpOgorICAgICAgICAoSlNDOjpjYWxsSlNX
ZWJBc3NlbWJseU1vZHVsZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcik6CisgICAgICAgIChKU0M6OmNhbGxKU1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZSk6CisgICAgICAgIChK
U0M6OmNhbGxKU1dlYkFzc2VtYmx5VGFibGUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90
b0Z1bmNMZW5ndGgpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3Jv
dyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQpOgorICAgICAg
ICAoSlNDOjp3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KToKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uKToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuaDoKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckNvZGVCbG9jazo6ZXhlY3V0ZSk6CisKIDIwMjAtMDMtMDUgIFBh
dWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ09ubHldIDMyLWJp
dHMgd2FybmluZyBvbiBtZW1zZXQgb2YgSlNWYWx1ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0pJVERlc3RpbmF0aW9uV2hpdGVMaXN0LWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0pJVERlc3RpbmF0aW9uV2hpdGVMaXN0LWlucHV0Lnhj
ZmlsZWxpc3QJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0pJVERlc3Rp
bmF0aW9uV2hpdGVMaXN0LWlucHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzIEBACisjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRlLXhjZmlsZWxp
c3RzIHNjcmlwdC4KKyQoUFJPSkVDVF9ESVIpL0pJVERlc3RpbmF0aW9uV2hpdGVsaXN0Lm1ha2UK
KyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvSklUT3BzV2hpdGVsaXN0R2VuZXJhdG9yLnB5CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSklURGVzdGluYXRpb25XaGl0ZUxpc3Qtb3V0cHV0Lnhj
ZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0pJVERlc3RpbmF0
aW9uV2hpdGVMaXN0LW91dHB1dC54Y2ZpbGVsaXN0CShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KSVREZXN0aW5hdGlvbldoaXRlTGlzdC1vdXRwdXQueGNmaWxlbGlzdAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIgQEAKKyMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBi
eSB0aGUgZ2VuZXJhdGUteGNmaWxlbGlzdHMgc2NyaXB0LgorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pJVFdoaXRlbGlzdEVudHJpZXMuY3BwCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSklURGVzdGluYXRpb25XaGl0ZWxpc3QubWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSklURGVzdGluYXRpb25XaGl0ZWxp
c3QubWFrZQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSklURGVzdGlu
YXRpb25XaGl0ZWxpc3QubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisjIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworUEVSTCA9IHBlcmwKK1BZVEhPTiA9IHB5dGhvbgorUlVCWSA9IHJ1YnkKKworSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIgPSAkKEphdmFTY3JpcHRDb3JlKS9TY3JpcHRzCisKK2lm
ZXEgKCQoT1MpLFdpbmRvd3NfTlQpCisgICAgREVMRVRFID0gY21kIC8vQyBkZWwKK2Vsc2UKKyAg
ICBERUxFVEUgPSBybSAtZgorZW5kaWYKKworIyAtLS0tLS0tLQorCitpZmVxICgkKE9TKSxNQUNP
UykKKyAgICBQTEFURk9STV9TUEVDSUZJQ19UQVJHRVRTID0gbWFrZV93aGl0ZWxpc3RfZW50cmll
cyAgIyBKSVRXaGl0ZWxpc3RFbnRyaWVzLmNwcAorCisgICAgT1BUX0ZMQUdTID0gJChzaGVsbCBl
Y2hvICQoR0NDX09QVElNSVpBVElPTl9MRVZFTCkgfCAkKFBFUkwpIC1lICdwcmludCAiLU8iIC4g
am9pbigiIC1PIiwgc3BsaXQoIiAiLCA8PikpOycpCisgICAgREVCVUdfRkxBR1MgPSAkKHNoZWxs
IGlmIHRlc3QgIiQoREVCVUdfREVGSU5FUykiOyB0aGVuIGVjaG8gJChERUJVR19ERUZJTkVTKSB8
ICQoUEVSTCkgLWUgJ3ByaW50ICItRCIgLiBqb2luKCIgLUQiLCBzcGxpdCgiICIsIDw+KSk7JyA7
IGZpKQorICAgIEZFQVRVUkVfRkxBR1MgPSAkKHNoZWxsIGVjaG8gJChGRUFUVVJFX0RFRklORVMp
IHwgJChQRVJMKSAtZSAncHJpbnQgIi1EIiAuIGpvaW4oIiAtRCIsIHNwbGl0KCIgIiwgPD4pKTsn
KQorICAgIEhFQURFUl9GTEFHUyA9ICQoc2hlbGwgZWNobyAkKEJVSUxUX1BST0RVQ1RTX0RJUikg
JChIRUFERVJfU0VBUkNIX1BBVEhTKSAkKFNZU1RFTV9IRUFERVJfU0VBUkNIX1BBVEhTKSB8ICQo
UEVSTCkgLWUgJ3ByaW50ICItSSIgLiBqb2luKCIgLUkiLCBzcGxpdCgiICIsIDw+KSk7JykKKwor
aWZuZXEgKCQoU0RLX0RJUiksKQorICAgIEhNQVBfRkxBR1MgPSAtaXF1b3RlICQoVEVNUF9ESVIp
L0phdmFTY3JpcHRDb3JlLWdlbmVyYXRlZC1maWxlcy5obWFwIFwKKwktSSQoVEVNUF9ESVIpL0ph
dmFTY3JpcHRDb3JlLW93bi10YXJnZXQtaGVhZGVycy5obWFwIFwKKwktSSQoVEVNUF9ESVIpL0ph
dmFTY3JpcHRDb3JlLWFsbC10YXJnZXQtaGVhZGVycy5obWFwIFwKKyAgICAgICAgLWlxdW90ZSAk
KFRFTVBfRElSKS9KYXZhU2NyaXB0Q29yZS1wcm9qZWN0LWhlYWRlcnMuaG1hcAorICAgIFNES19G
TEFHUz0taXN5c3Jvb3QgJChTREtfRElSKQorZW5kaWYKKworaWZlcSAoJChVU0VfTExWTV9UQVJH
RVRfVFJJUExFU19GT1JfQ0xBTkcpLFlFUykKKyAgICBXS19DVVJSRU5UX0FSQ0g9JCh3b3JkIDEs
ICQoQVJDSFMpKQorICAgIFRBUkdFVF9UUklQTEVfRkxBR1M9LXRhcmdldCAkKFdLX0NVUlJFTlRf
QVJDSCktJChMTFZNX1RBUkdFVF9UUklQTEVfVkVORE9SKS0kKExMVk1fVEFSR0VUX1RSSVBMRV9P
U19WRVJTSU9OKSQoTExWTV9UQVJHRVRfVFJJUExFX1NVRkZJWCkKK2VuZGlmCitlbmRpZgorCisu
UEhPTlkgOiBhbGwgSklUV2hpdGVsaXN0RW50cmllcy5jcHAKK2FsbCA6IFwKKyAgICAkKFBMQVRG
T1JNX1NQRUNJRklDX1RBUkdFVFMpCisKKyMgSklUV2hpdGVsaXN0RW50cmllcy5jcHA6ICQoSmF2
YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL0pJVE9wc1doaXRlbGlzdEdlbmVyYXRvci5weSAkKENP
TkZJR1VSQVRJT05fQlVJTERfRElSKS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgJChKYXZhU2Ny
aXB0Q29yZSkvSklUV2hpdGVsaXN0Lmpzb24KK21ha2Vfd2hpdGVsaXN0X2VudHJpZXM6CisJJChQ
WVRIT04pICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL0pJVE9wc1doaXRlbGlzdEdlbmVy
YXRvci5weSBnYXRoZXJJbmNsdWRlcyAtLWNvbmZpZ0pTT04gJChKYXZhU2NyaXB0Q29yZSkvSklU
V2hpdGVsaXN0Lmpzb24KKwkkKENDKSAteCBjKysgJChUQVJHRVRfVFJJUExFX0ZMQUdTKSAtRSAk
KE9QVF9GTEFHUykgJChDRkxBR1MpICQoU0RLX0ZMQUdTKSAkKERFQlVHX0ZMQUdTKSAkKEZFQVRV
UkVfRkxBR1MpICQoSE1BUF9GTEFHUykgJChIRUFERVJfRkxBR1MpIC1JJChKYXZhU2NyaXB0Q29y
ZSkgSklUV2hpdGVsaXN0VGVtcC5jcHAgLW8gSklUV2hpdGVsaXN0VGVtcC5pCisJJChQWVRIT04p
ICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL0pJVE9wc1doaXRlbGlzdEdlbmVyYXRvci5w
eSBjcmVhdGVXaGl0ZWxpc3QgLS1jb25maWdKU09OICQoSmF2YVNjcmlwdENvcmUpL0pJVFdoaXRl
bGlzdC5qc29uCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KSVRXaGl0ZWxpc3QuanNv
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSklUV2hpdGVsaXN0Lmpzb24J
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0pJVFdoaXRlbGlzdC5qc29u
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAwIEBACit7CisgICAgImRpcmVjdG9yeVNlYXJj
aExpc3QiOiBbIkphdmFTY3JpcHRDb3JlIl0sCisgICAgImZpbGVzVG9FeGNsdWRlIjogWyAiSmF2
YVNjcmlwdENvcmUvanNjLmNwcCIsICJKYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cCJdLAorICAgICJkZWZhdWx0TmFtZXNwYWNlIjogIkpTQyIsCisgICAgInVzaW5nTmFtZXNwYWNl
cyI6IFsiSW5zcGVjdG9yIiwgIkpTQyIsICJKU0M6OkRGRyIsICJKU0M6OkZUTCIsICJKU0M6Ok1h
dGgiLCAiSlNDOjpXYXNtIl0sCisgICAgIm5hbWVzcGFjZU92ZXJyaWRlcyI6IHsgIkphdmFTY3Jp
cHRDb3JlL2luc3BlY3RvciI6ICJJbnNwZWN0b3IiIH0sCisgICAgImluY2x1ZGVzVGVtcCI6ICJK
SVRXaGl0ZWxpc3RUZW1wLmNwcCIsCisgICAgInByZXByb2Nlc3NlZFRlbXAiOiAiSklUV2hpdGVs
aXN0VGVtcC5pIiwKKyAgICAib3V0cHV0RmlsZSI6ICJKSVRXaGl0ZWxpc3RFbnRyaWVzLmNwcCIs
CisgICAgImV4dHJhRW50cmllcyI6IHsKKyAgICAgICAgImluY2x1ZGVGaWxlcyI6IFsKKyAgICAg
ICAgICAgICJtYXRoLmgiLAorICAgICAgICAgICAgImRmZy9ERkdPcGVyYXRpb25zLmgiLAorICAg
ICAgICAgICAgImppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgiLAorICAgICAgICAgICAgInJ1bnRp
bWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oIiwKKyAgICAgICAgICAgICJydW50aW1l
L0pTRGF0YVZpZXcuaCIsCisgICAgICAgICAgICAicnVudGltZS9KU0dsb2JhbE9iamVjdC5oIiwK
KyAgICAgICAgICAgICJydW50aW1lL0pTRnVuY3Rpb24uaCIsCisgICAgICAgICAgICAicnVudGlt
ZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIsCisgICAgICAgICAgICAicnVudGltZS9BcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlLmgiLAorICAgICAgICAgICAgInJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIiwKKyAgICAgICAgICAgICJydW50aW1lL0pTVHlwZWRB
cnJheXMuaCIsCisgICAgICAgICAgICAicnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgi
LAorICAgICAgICAgICAgInJ1bnRpbWUvRXJyb3JUeXBlLmgiCisgICAgICAgIF0sCisgICAgICAg
ICJmb3J3YXJkRGVjbGFyYXRpb25zIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJkZWNsYXJhdGlvbnMiOiBbCisgICAgICAgICAgICAgICAgICAgICJleHRlcm4gZG91YmxlIGFj
b3MoZG91YmxlKTsgc3RhdGljIGRvdWJsZSAoJmFjb3NGUHRyKShkb3VibGUpID0gYWNvczsiLAor
ICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuIGRvdWJsZSBhY29zaChkb3VibGUpOyBzdGF0aWMg
ZG91YmxlICgmYWNvc2hGUHRyKShkb3VibGUpID0gYWNvc2g7IiwKKyAgICAgICAgICAgICAgICAg
ICAgImV4dGVybiBkb3VibGUgYXNpbihkb3VibGUpOyBzdGF0aWMgZG91YmxlICgmYXNpbkZQdHIp
KGRvdWJsZSkgPSBhc2luOyIsCisgICAgICAgICAgICAgICAgICAgICJleHRlcm4gZG91YmxlIGFz
aW5oKGRvdWJsZSk7IHN0YXRpYyBkb3VibGUgKCZhc2luaEZQdHIpKGRvdWJsZSkgPSBhc2luaDsi
LAorICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuIGRvdWJsZSBhdGFuKGRvdWJsZSk7IHN0YXRp
YyBkb3VibGUgKCZhdGFuRlB0cikoZG91YmxlKSA9IGF0YW47IiwKKyAgICAgICAgICAgICAgICAg
ICAgImV4dGVybiBkb3VibGUgYXRhbmgoZG91YmxlKTsgc3RhdGljIGRvdWJsZSAoJmF0YW5oRlB0
cikoZG91YmxlKSA9IGF0YW5oOyIsCisgICAgICAgICAgICAgICAgICAgICJleHRlcm4gZG91Ymxl
IGNicnQoZG91YmxlKTsgc3RhdGljIGRvdWJsZSAoJmNicnRGUHRyKShkb3VibGUpID0gY2JydDsi
LAorICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuIGRvdWJsZSBjZWlsKGRvdWJsZSk7IHN0YXRp
YyBkb3VibGUgKCZjZWlsRlB0cikoZG91YmxlKSA9IGNlaWw7IiwKKyAgICAgICAgICAgICAgICAg
ICAgImV4dGVybiBmbG9hdCBjZWlsZihmbG9hdCk7IHN0YXRpYyBmbG9hdCAoJmNlaWxmRlB0ciko
ZmxvYXQpID0gY2VpbGY7IiwKKyAgICAgICAgICAgICAgICAgICAgImV4dGVybiBkb3VibGUgY29z
KGRvdWJsZSk7IHN0YXRpYyBkb3VibGUgKCZjb3NGUHRyKShkb3VibGUpID0gY29zOyIsCisgICAg
ICAgICAgICAgICAgICAgICJleHRlcm4gZG91YmxlIGNvc2goZG91YmxlKTsgc3RhdGljIGRvdWJs
ZSAoJmNvc2hGUHRyKShkb3VibGUpID0gY29zaDsiLAorICAgICAgICAgICAgICAgICAgICAiZXh0
ZXJuIGRvdWJsZSBleHAoZG91YmxlKTsgc3RhdGljIGRvdWJsZSAoJmV4cEZQdHIpKGRvdWJsZSkg
PSBleHA7IiwKKyAgICAgICAgICAgICAgICAgICAgImV4dGVybiBkb3VibGUgZXhwbTEoZG91Ymxl
KTsgc3RhdGljIGRvdWJsZSAoJmV4cG0xRlB0cikoZG91YmxlKSA9IGV4cG0xOyIsCisgICAgICAg
ICAgICAgICAgICAgICJleHRlcm4gZG91YmxlIGZsb29yKGRvdWJsZSk7IHN0YXRpYyBkb3VibGUg
KCZmbG9vckZQdHIpKGRvdWJsZSkgPSBmbG9vcjsiLAorICAgICAgICAgICAgICAgICAgICAiZXh0
ZXJuIGZsb2F0IGZsb29yZihmbG9hdCk7IHN0YXRpYyBmbG9hdCAoJmZsb29yZkZQdHIpKGZsb2F0
KSA9IGZsb29yZjsiLAorICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuIGRvdWJsZSBmbW9kKGRv
dWJsZSwgZG91YmxlKTsgc3RhdGljIGRvdWJsZSAoJmZtb2RGUHRyKShkb3VibGUsIGRvdWJsZSkg
PSBmbW9kOyIsCisgICAgICAgICAgICAgICAgICAgICJleHRlcm4gZG91YmxlIGxvZyhkb3VibGUp
OyBzdGF0aWMgZG91YmxlICgmbG9nRlB0cikoZG91YmxlKSA9IGxvZzsiLAorICAgICAgICAgICAg
ICAgICAgICAiZXh0ZXJuIGRvdWJsZSBsb2cxMChkb3VibGUpOyBzdGF0aWMgZG91YmxlICgmbG9n
MTBGUHRyKShkb3VibGUpID0gbG9nMTA7IiwKKyAgICAgICAgICAgICAgICAgICAgImV4dGVybiBk
b3VibGUgbG9nMihkb3VibGUpOyBzdGF0aWMgZG91YmxlICgmbG9nMkZQdHIpKGRvdWJsZSkgPSBs
b2cyOyIsCisgICAgICAgICAgICAgICAgICAgICJleHRlcm4gZG91YmxlIHBvdyhkb3VibGUsIGRv
dWJsZSk7IHN0YXRpYyBkb3VibGUgKCZwb3dGUHRyKShkb3VibGUsIGRvdWJsZSkgPSBwb3c7IiwK
KyAgICAgICAgICAgICAgICAgICAgImV4dGVybiBkb3VibGUgc2luKGRvdWJsZSk7IHN0YXRpYyBk
b3VibGUgKCZzaW5GUHRyKShkb3VibGUpID0gc2luOyIsCisgICAgICAgICAgICAgICAgICAgICJl
eHRlcm4gZG91YmxlIHNpbmgoZG91YmxlKTsgc3RhdGljIGRvdWJsZSAoJnNpbmhGUHRyKShkb3Vi
bGUpID0gc2luaDsiLAorICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuIGRvdWJsZSBzcXJ0KGRv
dWJsZSk7IHN0YXRpYyBkb3VibGUgKCZzcXJ0RlB0cikoZG91YmxlKSA9IHNxcnQ7IiwKKyAgICAg
ICAgICAgICAgICAgICAgImV4dGVybiBkb3VibGUgdGFuKGRvdWJsZSk7IHN0YXRpYyBkb3VibGUg
KCZ0YW5GUHRyKShkb3VibGUpID0gdGFuOyIsCisgICAgICAgICAgICAgICAgICAgICJleHRlcm4g
ZG91YmxlIHRhbmgoZG91YmxlKTsgc3RhdGljIGRvdWJsZSAoJnRhbmhGUHRyKShkb3VibGUpID0g
dGFuaDsiLAorICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuIFwiQ1wiIGRvdWJsZSBjZWlsVGh1
bmsoZG91YmxlKTsiLAorICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuIFwiQ1wiIGRvdWJsZSBl
eHBUaHVuayhkb3VibGUpOyIsCisgICAgICAgICAgICAgICAgICAgICJleHRlcm4gXCJDXCIgZG91
YmxlIGZsb29yVGh1bmsoZG91YmxlKTsiLAorICAgICAgICAgICAgICAgICAgICAiZXh0ZXJuIFwi
Q1wiIGRvdWJsZSBqc1JvdW5kVGh1bmsoZG91YmxlKTsiLAorICAgICAgICAgICAgICAgICAgICAi
ZXh0ZXJuIFwiQ1wiIGRvdWJsZSBsb2dUaHVuayhkb3VibGUpOyIsCisgICAgICAgICAgICAgICAg
ICAgICJleHRlcm4gXCJDXCIgZG91YmxlIHRydW5jVGh1bmsoZG91YmxlKTsiCisgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAi
bmFtZXNwYWNlIjogIkpTQyIsCisgICAgICAgICAgICAgICAgImRlY2xhcmF0aW9ucyI6IFsKKyAg
ICAgICAgICAgICAgICAgICAgImJvb2wgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgdmFsdWUpOyIsCisgICAgICAgICAgICAgICAgICAgICJib29sIHJlZ0V4cE9i
amVjdFNldExhc3RJbmRleE5vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKTsiLAorICAgICAg
ICAgICAgICAgICAgICAiRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JJbnB1dChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOyIsCisgICAgICAgICAg
ICAgICAgICAgICJFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOyIsCisgICAgICAgICAg
ICAgICAgICAgICJFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOyIsCisgICAgICAgICAg
ICAgICAgICAgICJFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbihKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOyIsCisgICAgICAgICAg
ICAgICAgICAgICJFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7IiwKKyAgICAgICAg
ICAgICAgICAgICAgIkVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yUmlnaHRDb250ZXh0
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7IiwKKyAgICAg
ICAgICAgICAgICAgICAgInRlbXBsYXRlPGludCBOPiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25z
dHJ1Y3RvckRvbGxhcihKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpOyIsCisgICAgICAgICAgICAgICAgICAgICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yRG9sbGFyPDE+KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7IiwKKyAgICAgICAgICAgICAgICAgICAgInRlbXBsYXRlPD4gRW5jb2Rl
ZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI8Mj4oSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsiLAorICAgICAgICAgICAgICAgICAgICAidGVtcGxh
dGU8PiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjwzPihKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOyIsCisgICAgICAgICAgICAgICAg
ICAgICJ0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyPDQ+
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7IiwKKyAgICAg
ICAgICAgICAgICAgICAgInRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0
b3JEb2xsYXI8NT4oSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsiLAorICAgICAgICAgICAgICAgICAgICAidGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSByZWdF
eHBDb25zdHJ1Y3RvckRvbGxhcjw2PihKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpOyIsCisgICAgICAgICAgICAgICAgICAgICJ0ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyPDc+KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7IiwKKyAgICAgICAgICAgICAgICAgICAgInRlbXBsYXRl
PD4gRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXI8OD4oSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsiLAorICAgICAgICAgICAgICAgICAg
ICAidGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjw5PihK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOyIsCisgICAgICAg
ICAgICAgICAgICAgICJib29sIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOyIsCisgICAgICAgICAgICAgICAg
ICAgICJib29sIHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsiCisgICAgICAgICAgICAgICAgXQorICAg
ICAgICAgICAgfQorICAgICAgICBdLAorICAgICAgICAiZW50cmllcyI6IFsKKyAgICAgICAgICAg
ICJyZWludGVycHJldF9jYXN0PHZvaWQqPihhY29zRlB0cikiLAorICAgICAgICAgICAgInJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGFjb3NoRlB0cikiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGFzaW5GUHRyKSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oYXNpbmhGUHRyKSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
YXRhbkZQdHIpIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihhdGFuaEZQ
dHIpIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihjYnJ0RlB0cikiLAor
ICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNlaWxGUHRyKSIsCisgICAgICAg
ICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2VpbGZGUHRyKSIsCisgICAgICAgICAgICAi
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29zRlB0cikiLAorICAgICAgICAgICAgInJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGNvc2hGUHRyKSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oZXhwRlB0cikiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGV4cG0xRlB0cikiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZsb29y
RlB0cikiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZsb29yZkZQdHIp
IiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihmbW9kRlB0cikiLAorICAg
ICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGxvZ0ZQdHIpIiwKKyAgICAgICAgICAg
ICJyZWludGVycHJldF9jYXN0PHZvaWQqPihsb2cxMEZQdHIpIiwKKyAgICAgICAgICAgICJyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihsb2cyRlB0cikiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHBvd0ZQdHIpIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZv
aWQqPihzaW5GUHRyKSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2lu
aEZQdHIpIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihzcXJ0RlB0ciki
LAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRhbkZQdHIpIiwKKyAgICAg
ICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPih0YW5oRlB0cikiLAorICAgICAgICAgICAg
InJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNlaWxUaHVuaykiLAorICAgICAgICAgICAgInJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGV4cFRodW5rKSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZmxvb3JUaHVuaykiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGpzUm91bmRUaHVuaykiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGxvZ1RodW5rKSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odHJ1
bmNUaHVuaykiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ob3BlcmF0aW9uQXJpdGhBQ29zKSIsCisgICAgICAgICAgICAicmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQXJpdGhBQ29zaCkiLAorICAgICAgICAgICAgInJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkFyaXRoQVNpbikiLAorICAgICAgICAgICAgInJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkFyaXRoQVNpbmgpIiwKKyAgICAgICAgICAg
ICJyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25Bcml0aEFUYW4pIiwKKyAgICAgICAg
ICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25Bcml0aEFUYW5oKSIsCisgICAg
ICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQXJpdGhDYnJ0KSIsCisg
ICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQXJpdGhDb3MpIiwK
KyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25Bcml0aENvc2gp
IiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25Bcml0aEV4
cCkiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkFyaXRo
RXhwbTEpIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25B
cml0aExvZykiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhdGlv
bkFyaXRoTG9nMTApIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVy
YXRpb25Bcml0aExvZzFwKSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
b3BlcmF0aW9uQXJpdGhMb2cyKSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ob3BlcmF0aW9uQXJpdGhTaW4pIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZv
aWQqPihvcGVyYXRpb25Bcml0aFNpbmgpIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0
PHZvaWQqPihvcGVyYXRpb25Bcml0aFRhbikiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG9wZXJhdGlvbkFyaXRoVGFuaCkiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdCkiLAorICAgICAgICAg
ICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0
cmljdCkiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ0V4cENvbnN0
cnVjdG9ySW5wdXQpIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdF
eHBDb25zdHJ1Y3Rvck11bHRpbGluZSkiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoKSIsCisgICAgICAgICAgICAicmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4ocmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4pIiwKKyAgICAgICAg
ICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0
KSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVnRXhwQ29uc3RydWN0
b3JSaWdodENvbnRleHQpIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihy
ZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjwxPikiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyPDI+KSIsCisgICAgICAgICAgICAicmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocmVnRXhwQ29uc3RydWN0b3JEb2xsYXI8Mz4pIiwKKyAgICAg
ICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjw0
PikiLAorICAgICAgICAgICAgInJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ0V4cENvbnN0cnVj
dG9yRG9sbGFyPDU+KSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
RXhwQ29uc3RydWN0b3JEb2xsYXI8Nj4pIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0
PHZvaWQqPihyZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjw3PikiLAorICAgICAgICAgICAgInJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyPDg+KSIsCisgICAgICAg
ICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVnRXhwQ29uc3RydWN0b3JEb2xsYXI8OT4p
IiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihzZXRSZWdFeHBDb25zdHJ1
Y3RvcklucHV0KSIsCisgICAgICAgICAgICAicmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2V0UmVn
RXhwQ29uc3RydWN0b3JNdWx0aWxpbmUpIgorICAgICAgICBdLAorICAgICAgICAiZnJpZW5kRW50
cmllcyI6IFsKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQqPihKU0Z1bmN0aW9u
Ojphcmd1bWVudHNHZXR0ZXIpIiwKKyAgICAgICAgICAgICJyZWludGVycHJldF9jYXN0PHZvaWQq
PihKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIpIiwKKyAgICAgICAgICAgICIodm9pZCopc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OmN1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uQ2FsbCkiLAorICAgICAgICAgICAgIih2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oSlNHZW5lcmljQXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
cjxBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0Pjo6Y29uc3RydWN0QXJyYXlCdWZmZXIp
IiwKKyAgICAgICAgICAgICIodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpT
R2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8QXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6U2hh
cmVkPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIpIiwKKyAgICAgICAgICAgICIodm9pZCopc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3I8SlNEYXRhVmlldz46OmNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcpIiwKKyAgICAgICAgICAg
ICIodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3I8SlNJbnQ4QXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3
KSIsCisgICAgICAgICAgICAiKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTSW50MTZBcnJheT46OmNhbGxHZW5l
cmljVHlwZWRBcnJheVZpZXcpIiwKKyAgICAgICAgICAgICIodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8SlNJbnQz
MkFycmF5Pjo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldykiLAorICAgICAgICAgICAgIih2b2lk
KilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oSlNHZW5lcmljVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3RvcjxKU1VpbnQ4QXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KSIsCisg
ICAgICAgICAgICAiKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTVWludDhDbGFtcGVkQXJyYXk+OjpjYWxsR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KSIsCisgICAgICAgICAgICAiKHZvaWQqKXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTVWlu
dDE2QXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KSIsCisgICAgICAgICAgICAiKHZv
aWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yPEpTVWludDMyQXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KSIs
CisgICAgICAgICAgICAiKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTRmxvYXQzMkFycmF5Pjo6Y2FsbEdlbmVy
aWNUeXBlZEFycmF5VmlldykiLAorICAgICAgICAgICAgIih2b2lkKilzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0Zsb2F0
NjRBcnJheT46OmNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcpIiwKKyAgICAgICAgICAgICIodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3I8SlNEYXRhVmlldz46OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlldyki
LAorICAgICAgICAgICAgIih2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0ludDhBcnJheT46OmNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5VmlldykiLAorICAgICAgICAgICAgIih2b2lkKilzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0lu
dDE2QXJyYXk+Ojpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcpIiwKKyAgICAgICAgICAg
ICIodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3I8SlNJbnQzMkFycmF5Pjo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3KSIsCisgICAgICAgICAgICAiKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTVWludDhBcnJheT46OmNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldykiLAorICAgICAgICAgICAgIih2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcjxKU1VpbnQ4Q2xhbXBlZEFycmF5Pjo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
KSIsCisgICAgICAgICAgICAiKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTVWludDE2QXJyYXk+Ojpjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcpIiwKKyAgICAgICAgICAgICIodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8
SlNVaW50MzJBcnJheT46OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldykiLAorICAgICAg
ICAgICAgIih2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0Zsb2F0MzJBcnJheT46OmNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5VmlldykiLAorICAgICAgICAgICAgIih2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0Zsb2F0NjRB
cnJheT46OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldykiLAorICAgICAgICAgICAgIih2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cjxFcnJvclR5cGU6OkV2YWxFcnJvcj46OmNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKSIsCisg
ICAgICAgICAgICAiKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6UmFuZ2VFcnJvcj46OmNhbGxOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKSIsCisgICAgICAgICAgICAiKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihOYXRpdmVFcnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6UmVmZXJlbmNlRXJyb3I+
OjpjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcikiLAorICAgICAgICAgICAgIih2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5
cGU6OlN5bnRheEVycm9yPjo6Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpIiwKKyAgICAgICAg
ICAgICIodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I8RXJyb3JUeXBlOjpUeXBlRXJyb3I+OjpjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cikiLAorICAgICAgICAgICAgIih2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OlVSSUVycm9yPjo6Y2FsbE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IpIiwKKyAgICAgICAgICAgICIodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+
Ojpjb25zdHJ1Y3ROYXRpdmVFcnJvckNvbnN0cnVjdG9yKSIsCisgICAgICAgICAgICAiKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihOYXRpdmVFcnJvckNvbnN0cnVjdG9yPEVy
cm9yVHlwZTo6UmFuZ2VFcnJvcj46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpIiwK
KyAgICAgICAgICAgICIodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpSZWZlcmVuY2VFcnJvcj46OmNvbnN0cnVjdE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IpIiwKKyAgICAgICAgICAgICIodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpTeW50
YXhFcnJvcj46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpIiwKKyAgICAgICAgICAg
ICIodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3I8RXJyb3JUeXBlOjpUeXBlRXJyb3I+Ojpjb25zdHJ1Y3ROYXRpdmVFcnJvckNvbnN0cnVj
dG9yKSIsCisgICAgICAgICAgICAiKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
PihOYXRpdmVFcnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6VVJJRXJyb3I+Ojpjb25zdHJ1Y3RO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKSIKKyAgICAgICAgXQorICAgIH0KK30KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KSVRXaGl0ZWxpc3RFeHRyYXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0pJVFdoaXRlbGlzdEV4dHJhcy5pbgkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSklUV2hpdGVsaXN0RXh0cmFzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8vIGZ1bmN0aW9ufGRlY2xhcmF0aW9ufGluY2x1ZGUgZmls
ZS4uLgorCityZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25Bcml0aEFDb3MpfHxkZmcv
REZHT3BlcmF0aW9ucy5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25Bcml0aEFD
b3NoKXx8ZGZnL0RGR09wZXJhdGlvbnMuaAorcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmF0
aW9uQXJpdGhBU2luKXx8ZGZnL0RGR09wZXJhdGlvbnMuaAorcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ob3BlcmF0aW9uQXJpdGhBU2luaCl8fGRmZy9ERkdPcGVyYXRpb25zLmgKK3JlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkFyaXRoQVRhbil8fGRmZy9ERkdPcGVyYXRpb25zLmgKK3Jl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkFyaXRoQVRhbmgpfHxkZmcvREZHT3BlcmF0
aW9ucy5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25Bcml0aENicnQpfHxkZmcv
REZHT3BlcmF0aW9ucy5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25Bcml0aENv
cyl8fGRmZy9ERkdPcGVyYXRpb25zLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhdGlv
bkFyaXRoQ29zaCl8fGRmZy9ERkdPcGVyYXRpb25zLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KG9wZXJhdGlvbkFyaXRoRXhwKXx8ZGZnL0RGR09wZXJhdGlvbnMuaAorcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ob3BlcmF0aW9uQXJpdGhFeHBtMSl8fGRmZy9ERkdPcGVyYXRpb25zLmgKK3JlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkFyaXRoTG9nKXx8ZGZnL0RGR09wZXJhdGlvbnMu
aAorcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQXJpdGhMb2cxMCl8fGRmZy9ERkdP
cGVyYXRpb25zLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkFyaXRoTG9nMil8
fGRmZy9ERkdPcGVyYXRpb25zLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkFy
aXRoU2luKXx8ZGZnL0RGR09wZXJhdGlvbnMuaAorcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3Bl
cmF0aW9uQXJpdGhTaW5oKXx8ZGZnL0RGR09wZXJhdGlvbnMuaAorcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ob3BlcmF0aW9uQXJpdGhUYW4pfHxkZmcvREZHT3BlcmF0aW9ucy5oCityZWludGVycHJl
dF9jYXN0PHZvaWQqPihvcGVyYXRpb25Bcml0aFRhbmgpfHxkZmcvREZHT3BlcmF0aW9ucy5oCisK
Ky8vICYmJiYgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oanNSb3VuZFRodW5rKQorLy8gJiYmJiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihleHBUaHVuaykKKy8vICYmJiYgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4obG9nVGh1bmspCisvLyAmJiYmIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZsb29y
VGh1bmspCisvLyAmJiYmIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNlaWxUaHVuaykKKy8vICYm
JiYgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odHJ1bmNUaHVuaykKKworLy8gJiYmJiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihjb3MpCisvLyAmJiYmIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNp
bikKKy8vICYmJiYgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3FydCkKKworcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ocmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KXxib29sIEpTQzo6cmVn
RXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpO3xydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ0V4cE9iamVjdFNl
dExhc3RJbmRleE5vblN0cmljdCl8Ym9vbCBKU0M6OnJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5v
blN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKTt8cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisK
K3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEpTRnVuY3Rpb246OmFyZ3VtZW50c0dldHRlcil8fHJ1
bnRpbWUvSlNGdW5jdGlvbi5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihKU0Z1bmN0aW9uOjpj
YWxsZXJHZXR0ZXIpfHxydW50aW1lL0pTRnVuY3Rpb24uaAorCityZWludGVycHJldF9jYXN0PHZv
aWQqPihKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yPEFycmF5QnVmZmVyU2hhcmluZ01v
ZGU6OkRlZmF1bHQ+Ojpjb25zdHJ1Y3RBcnJheUJ1ZmZlcil8fHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yLmh8cnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKK3JlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8QXJyYXlCdWZm
ZXJTaGFyaW5nTW9kZTo6U2hhcmVkPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIpfHxydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5ofHJ1bnRpbWUvQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5o
CisKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3I8SlNJbnQ4QXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KXx8cnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmh8cnVudGltZS9KU1R5cGVkQXJyYXlz
LmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3I8SlNJbnQxNkFycmF5Pjo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5Vmlldyl8fHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5ofHJ1bnRpbWUvSlNUeXBlZEFycmF5
cy5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yPEpTSW50MzJBcnJheT46OmNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcpfHxydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaHxydW50aW1lL0pTVHlwZWRBcnJh
eXMuaAorcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcjxKU1VpbnQ4QXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KXx8cnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmh8cnVudGltZS9KU1R5cGVkQXJy
YXlzLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3I8SlNVaW50OENsYW1wZWRBcnJheT46OmNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcp
fHxydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaHxydW50aW1lL0pT
VHlwZWRBcnJheXMuaAorcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcjxKU1VpbnQxNkFycmF5Pjo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5Vmll
dyl8fHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5ofHJ1bnRpbWUv
SlNUeXBlZEFycmF5cy5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yPEpTVWludDMyQXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KXx8cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmh8cnVudGlt
ZS9KU1R5cGVkQXJyYXlzLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3I8SlNGbG9hdDMyQXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KXx8cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmh8cnVu
dGltZS9KU1R5cGVkQXJyYXlzLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8SlNGbG9hdDY0QXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KXx8cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmh8
cnVudGltZS9KU1R5cGVkQXJyYXlzLmgKKworcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0ludDhBcnJheT46OmNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlldyl8fHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvci5ofHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTSW50MTZBcnJheT46OmNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlldyl8fHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3Rvci5ofHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5oCityZWludGVycHJldF9jYXN0PHZv
aWQqPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTSW50MzJBcnJheT46OmNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlldyl8fHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3Rvci5ofHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5oCityZWludGVycHJldF9j
YXN0PHZvaWQqPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTVWludDhBcnJh
eT46OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlldyl8fHJ1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5ofHJ1bnRpbWUvSlNUeXBlZEFycmF5cy5oCityZWludGVy
cHJldF9jYXN0PHZvaWQqPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTVWlu
dDhDbGFtcGVkQXJyYXk+Ojpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcpfHxydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaHxydW50aW1lL0pTVHlwZWRBcnJh
eXMuaAorcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcjxKU1VpbnQxNkFycmF5Pjo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KXx8
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmh8cnVudGltZS9KU1R5
cGVkQXJyYXlzLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3I8SlNVaW50MzJBcnJheT46OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlldyl8fHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5ofHJ1bnRp
bWUvSlNUeXBlZEFycmF5cy5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTRmxvYXQzMkFycmF5Pjo6Y29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3KXx8cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
Lmh8cnVudGltZS9KU1R5cGVkQXJyYXlzLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8SlNGbG9hdDY0QXJyYXk+Ojpjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXcpfHxydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IuaHxydW50aW1lL0pTVHlwZWRBcnJheXMuaAorCityZWludGVycHJldF9jYXN0PHZv
aWQqPihOYXRpdmVFcnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6RXZhbEVycm9yPjo6Y2FsbE5h
dGl2ZUVycm9yQ29uc3RydWN0b3IpfHxydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaHxy
dW50aW1lL0Vycm9yVHlwZS5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihOYXRpdmVFcnJvckNv
bnN0cnVjdG9yPEVycm9yVHlwZTo6UmFuZ2VFcnJvcj46OmNhbGxOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKXx8cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmh8cnVudGltZS9FcnJvclR5cGUu
aAorcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5
cGU6OlJlZmVyZW5jZUVycm9yPjo6Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpfHxydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaHxydW50aW1lL0Vycm9yVHlwZS5oCityZWludGVycHJl
dF9jYXN0PHZvaWQqPihOYXRpdmVFcnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6U3ludGF4RXJy
b3I+OjpjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcil8fHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5ofHJ1bnRpbWUvRXJyb3JUeXBlLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpUeXBlRXJyb3I+OjpjYWxsTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcil8fHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5ofHJ1bnRpbWUv
RXJyb3JUeXBlLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I8RXJyb3JUeXBlOjpVUklFcnJvcj46OmNhbGxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKXx8cnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmh8cnVudGltZS9FcnJvclR5cGUuaAorcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OkV2YWxF
cnJvcj46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpfHxydW50aW1lL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuaHxydW50aW1lL0Vycm9yVHlwZS5oCityZWludGVycHJldF9jYXN0PHZv
aWQqPihOYXRpdmVFcnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6UmFuZ2VFcnJvcj46OmNvbnN0
cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpfHxydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuaHxydW50aW1lL0Vycm9yVHlwZS5oCityZWludGVycHJldF9jYXN0PHZvaWQqPihOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6UmVmZXJlbmNlRXJyb3I+Ojpjb25zdHJ1Y3ROYXRp
dmVFcnJvckNvbnN0cnVjdG9yKXx8cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmh8cnVu
dGltZS9FcnJvclR5cGUuaAorcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvcjxFcnJvclR5cGU6OlN5bnRheEVycm9yPjo6Y29uc3RydWN0TmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcil8fHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5ofHJ1bnRpbWUvRXJyb3JU
eXBlLmgKK3JlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8RXJy
b3JUeXBlOjpUeXBlRXJyb3I+Ojpjb25zdHJ1Y3ROYXRpdmVFcnJvckNvbnN0cnVjdG9yKXx8cnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmh8cnVudGltZS9FcnJvclR5cGUuaAorcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OlVSSUVy
cm9yPjo6Y29uc3RydWN0TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcil8fHJ1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5ofHJ1bnRpbWUvRXJyb3JUeXBlLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQwLDYgKzQ0MCw3IEBAIGRmZy9ERkdXYXRj
aHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAogZGZnL0RGR1dvcmtsaXN0LmNwcAogCiBkaXNhc3Nl
bWJsZXIvQVJNNjREaXNhc3NlbWJsZXIuY3BwCitkaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5j
cHAKIGRpc2Fzc2VtYmxlci9DYXBzdG9uZURpc2Fzc2VtYmxlci5jcHAKIGRpc2Fzc2VtYmxlci9E
aXNhc3NlbWJsZXIuY3BwCiBkaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcApAQCAt
NjQxLDYgKzY0Miw3IEBAIGppdC9KSVREaXZHZW5lcmF0b3IuY3BwCiBqaXQvSklURXhjZXB0aW9u
cy5jcHAKIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKIGppdC9KSVRMZWZ0U2hpZnRH
ZW5lcmF0b3IuY3BwCitqaXQvSklURGVzdGluYXRpb25XaGl0ZWxpc3QuY3BwCiBqaXQvSklUTXVs
R2VuZXJhdG9yLmNwcAogaml0L0pJVE5lZ0dlbmVyYXRvci5jcHAKIGppdC9KSVRPcGNvZGVzLmNw
cApAQCAtNjUzLDYgKzY1NSw3IEBAIGppdC9KSVRTdHViUm91dGluZS5jcHAKIGppdC9KSVRTdWJH
ZW5lcmF0b3IuY3BwCiBqaXQvSklUVGh1bmtzLmNwcAogaml0L0pJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmNwcAoraml0L0pJVFZlcmlmaWVkQ29weS5jcHAKIGppdC9KSVRXb3Jr
bGlzdC5jcHAKIGppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKIGppdC9Qb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZS5jcHAKQEAgLTY2Nyw2ICs2NzAsOSBAQCBqaXQvVGFnUmVnaXN0ZXJzTW9kZS5j
cHAKIGppdC9UZW1wUmVnaXN0ZXJTZXQuY3BwCiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAogCisv
LyBEZXJpdmVkIFNvdXJjZXMKK0pJVFdoaXRlbGlzdEVudHJpZXMuY3BwCisKIGxsaW50L0xMSW50
Q0xvb3AuY3BwCiBsbGludC9MTEludERhdGEuY3BwCiBsbGludC9MTEludEVudHJ5cG9pbnQuY3Bw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEwICs0MiwxMiBAQAog
I2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERlc3RpbmF0aW9uV2hpdGVsaXN0Lmgi
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNs
dWRlICJKU0JpZ0ludC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Rv
bGxhclZNLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQ
cm9taXNlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCkBAIC01OSw2ICs2MSw3IEBACiAjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9y
eS5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTmF0aXZlRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9y
LmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgpAQCAtMzk0LDYgKzM5NywxMjEgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxi
YWNrKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisjaWYgRU5BQkxFKE1BU01fUFJPQkUpCitleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJh
bXBvbGluZSgpOworI2VuZGlmCisKK3N0YXRpYyB2b2lkKiBob3N0Q2FsbEVudHJ5cG9pbnRzW10g
PSB7CisjaWYgRU5BQkxFKE1BU01fUFJPQkUpCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
Y3RpTWFzbVByb2JlVHJhbXBvbGluZSksCisjZW5kaWYKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KSwKKyAgICAodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uUHJpbnRTdGRPdXQpLAor
ICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25QcmludFN0
ZEVyciksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlv
bkRlYnVnKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0
aW9uRGVzY3JpYmUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
ZnVuY3Rpb25EZXNjcmliZUFycmF5KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGZ1bmN0aW9uU2xlZXBTZWNvbmRzKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSlNDU3RhY2spLAorICAgICh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25HQ0FuZFN3ZWVwKSwKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRnVsbEdDKSwKKyAgICAodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRWRlbkdDKSwKKyAgICAo
dm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSGVhcFNpemUpLAor
ICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcmVhdGVN
ZW1vcnlGb290cHJpbnQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oZnVuY3Rpb25SZXNldE1lbW9yeVBlYWspLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25BZGRyZXNzT2YpLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25WZXJzaW9uKSwKKyAgICAodm9pZCopc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uUnVuKSwKKyAgICAodm9pZCopc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uUnVuU3RyaW5nKSwKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uTG9hZCksCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkxvYWRTdHJpbmcpLAorICAg
ICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25SZWFkRmlsZSks
CisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNoZWNr
U3ludGF4KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0
aW9uUmVhZGxpbmUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
ZnVuY3Rpb25QcmVjaXNlVGltZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24pLAorICAgICh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Ob0RGRyksCisgICAgKHZvaWQqKXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbk5vRlRMKSwKKyAgICAodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyksCisg
ICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbk9wdGltaXpl
TmV4dEludm9jYXRpb24pLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZCksCisgICAgKHZv
aWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkpTQ09wdGlvbnMpLAor
ICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25SZW9wdGlt
aXphdGlvblJldHJ5Q291bnQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKSwKKyAgICAodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRmFpbE5leHROZXdDb2RlQmxvY2spLAorICAg
ICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25RdWl0KSwKKyAg
ICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRmFsc2UpLAor
ICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25VbmRlZmlu
ZWQxKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9u
VW5kZWZpbmVkMiksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihm
dW5jdGlvbklzSW50MzIpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oZnVuY3Rpb25Jc1B1cmVOYU4pLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25FZmZlY3RmdWw0MiksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbklkZW50aXR5KSwKKyAgICAodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKSwKKyAgICAodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSGFzQ3VzdG9tUHJvcGVy
dGllcyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlv
bkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRyYWluTWljcm90YXNrcyksCisgICAgKHZvaWQqKXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvblJlbGVhc2VXZWFrUmVmcyksCisgICAg
KHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbklzMzJCaXRQbGF0
Zm9ybSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlv
bkNoZWNrTW9kdWxlU3ludGF4KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGZ1bmN0aW9uUGxhdGZvcm1TdXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIpLAorICAgICh2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25HZW5lcmF0ZUhlYXBT
bmFwc2hvdCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5j
dGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90Rm9yR0NEZWJ1Z2dpbmcpLAorICAgICh2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25SZXNldFN1cGVyU2FtcGxlclN0YXRl
KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRW5z
dXJlQXJyYXlTdG9yYWdlKSwKKworI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKKyAgICAo
dm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uU3RhcnRTYW1wbGlu
Z1Byb2ZpbGVyKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1
bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKSwKKyNlbmRpZgorCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbk1heEFyZ3VtZW50cyksCisg
ICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkFzeW5jVGVz
dFN0YXJ0KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0
aW9uQXN5bmNUZXN0UGFzc2VkKSwKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICAodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1v
cnlNb2RlKSwKKyNlbmRpZgorCisjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQorICAgICh2b2lk
KilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdz
KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ2xl
YXJTYW1wbGluZ0ZsYWdzKSwKKyNlbmRpZgorCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkdldFJhbmRvbVNlZWQpLAorICAgICh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25TZXRSYW5kb21TZWVkKSwKKyAgICAodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSXNSb3BlKSwKKyAgICAo
dm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ2FsbGVyU291cmNl
T3JpZ2luKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0
aW9uRG9sbGFyQ3JlYXRlUmVhbG0pLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0KSwKKyAgICAodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRG9sbGFyQWdlbnRTdGFydCksCisgICAgKHZv
aWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRvbGxhckFnZW50UmVj
ZWl2ZUJyb2FkY2FzdCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
PihmdW5jdGlvbkRvbGxhckFnZW50UmVwb3J0KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRG9sbGFyQWdlbnRTbGVlcCksCisgICAgKHZvaWQqKXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRvbGxhckFnZW50QnJvYWRjYXN0
KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRG9s
bGFyQWdlbnRHZXRSZXBvcnQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oZnVuY3Rpb25Eb2xsYXJBZ2VudExlYXZpbmcpLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Eb2xsYXJBZ2VudE1vbm90b25pY05vdyksCisg
ICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbldhaXRGb3JS
ZXBvcnQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rp
b25IZWFwQ2FwYWNpdHkpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oZnVuY3Rpb25GbGFzaEhlYXBBY2Nlc3MpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25EaXNhYmxlUmljaFNvdXJjZUluZm8pLAorICAgICh2b2lk
KilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25NYWxsb2NJbkFMb29wKSwK
KyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uVG90YWxD
b21waWxlVGltZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihm
dW5jdGlvblNldFVuaGFuZGxlZFJlamVjdGlvbkNhbGxiYWNrKQorfTsKKworc3RhdGljIHZvaWQg
cG9wdWxhdGVKSVREZXN0aW5hdGlvbldoaXRlbGlzdCgpCit7CisgICAgSklURGVzdGluYXRpb25X
aGl0ZWxpc3QmIGRlc3RpbmF0aW9uV2hpdGVsaXN0ID0gSklURGVzdGluYXRpb25XaGl0ZWxpc3Q6
Omluc3RhbmNlKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKGhvc3RD
YWxsRW50cnlwb2ludHMpIC8gc2l6ZW9mKHZvaWQqKTsgaSsrKQorICAgICAgICBkZXN0aW5hdGlv
bldoaXRlbGlzdC5hZGRFbnRyeShob3N0Q2FsbEVudHJ5cG9pbnRzW2ldKTsKK30KKyNlbmRpZiAv
LyBFTkFCTEUoSklUX0NBR0UpCisKIHN0cnVjdCBTY3JpcHQgewogICAgIGVudW0gY2xhc3MgU3Ry
aWN0TW9kZSB7CiAgICAgICAgIFN0cmljdCwKQEAgLTMxMzksNiArMzI1NywxMyBAQCBpbnQganNj
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgaWYgKG9wdGlvbnMubV9kdW1wKQogICAg
ICAgICBKU0M6Ok9wdGlvbnM6OmR1bXBHZW5lcmF0ZWRCeXRlY29kZXMoKSA9IHRydWU7CiAKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgcG9wdWxhdGVKSVREZXN0aW5hdGlvbldoaXRlbGlzdCgp
OworCisgICAgaWYgKGdfanNjQ29uZmlnLnJlc3RyaWN0ZWRPcHRpb25zRW5hYmxlZCAmJiBPcHRp
b25zOjp1c2VEb2xsYXJWTSgpKQorICAgICAgICBKU0M6OkpTRG9sbGFyVk06OnBvcHVsYXRlSklU
RGVzdGluYXRpb25XaGl0ZWxpc3QoKTsKKyNlbmRpZgorCiAgICAgLy8gSW5pdGlhbGl6ZSBKU0Mg
YmVmb3JlIGdldHRpbmcgVk0uCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAg
aW5pdGlhbGl6ZVRpbWVvdXRJZk5lZWRlZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2
ICs4NSwxOSBAQAogCQkJbmFtZSA9ICJPZmZsaW5lIEFzc2VtYmxlciI7CiAJCQlwcm9kdWN0TmFt
ZSA9ICJPZmZsaW5lIEFzc2VtYmxlciI7CiAJCX07CisJCTY1QkU2OUNEMjQwODUzOUQwMDZGMzgy
RiAvKiBKSVQgV2hpdGVsaXN0ICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1QkU2OUQwMjQwODUzOUQwMDZGMzgyRiAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiSklUIFdoaXRl
bGlzdCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk2NUJFNjlDRTI0MDg1MzlEMDA2RjM4
MkYgLyogR2VuZXJhdGUgV2hpdGVsaXN0IFNvdXJjZSAqLywKKwkJCSk7CisJCQlkZXBlbmRlbmNp
ZXMgPSAoCisJCQkJNjVCRTY5RDkyNDA4NTQ5MzAwNkYzODJGIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCisJCQkJNjVCRTY5RDcyNDA4NTQ4QjAwNkYzODJGIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCisJCQkpOworCQkJbmFtZSA9ICJKSVQgV2hpdGVsaXN0IjsKKwkJCXByb2R1Y3ROYW1l
ID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAv
KiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNv
dXJjZXMiICovOwpAQCAtMTE0NywxMCArMTE2MCwxMyBAQAogCQk2NTMwM0Q2NDE0NDdCOUUxMDBE
M0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTMwM0Q2MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU1NzBG
NUExQUE0QzNFQTAwOUIzQzIzIC8qIFJlZ3Jlc3MxNDEyNzUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTU3MEY1OTFBQTRDMDBBMDA5QjNDMjMgLyog
UmVncmVzczE0MTI3NS5tbSAqLzsgfTsKIAkJNjU3Q0Y0NTkxOUJGNjY2MjAwNEFDQkYyIC8qIEpT
Q2FsbGVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTdDRjQ1NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2NTg3QjFCMDIzODVDMTQ0MDAwMTA2Njkg
LyogSklUVmVyaWZpZWRDb3B5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NTg3QjFBRTIzODVBNkNDMDAwMTA2NjkgLyogSklUVmVyaWZpZWRDb3B5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU4N0Ix
QjEyMzg1QzE3QzAwMDEwNjY5IC8qIEpJVERlc3RpbmF0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg3QjFBRDIzODQ3Njk2MDAw
MTA2NjkgLyogSklURGVzdGluYXRpb25XaGl0ZWxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTg4MjRBRjFFNUNGREIwMDBGQjczNTkgLyog
Q29uZmlnRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjU4ODI0QUUxRTVDRkRCMDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NThEM0E1NjE5NjM4MjY4MDAz
QzQ1RDYgLyogVk1FbnRyeVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU4RDNBNTUxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NTlD
REE1QjFGNjc1M0YyMDBEM0U1M0YgLyogWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTlDREE1QTFGNjc1MDk4MDBE
M0U1M0YgLyogWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVCODM5MkUxQkFDQUQzNjAwNDRFODI0IC8qIENh
Y2hlZFJlY292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NUI4MzkyQzFCQUNBOTJBMDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCAqLzsgfTsK
KwkJNjVFMjRGNkUyM0EyRTFGMDAwODFCMjAwIC8qIEFSTTY0VmVyaWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTI0RjZDMjNBMkUxOEYwMDgx
QjIwMCAvKiBBUk02NFZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNkEzOENGQUExRTMyQjVBQjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tU
cmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkEz
OENGQTgxRTMyQjU4QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5oICovOyB9OwogCQk2QUQy
Q0I0RDE5QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkFEMkNCNEMxOUI5MTQwMTAwMDY1
NzE5IC8qIERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0
b3JPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MDExM0Q0QTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIxNzMsNiAr
MjE4OSwyMCBAQAogCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA2NTc4OEE5RDE4QjQwOUVCMDBD
MTg5RkY7CiAJCQlyZW1vdGVJbmZvID0gIk9mZmxpbmUgQXNzZW1ibGVyIjsKIAkJfTsKKwkJNjVC
RTY5RDYyNDA4NTQ4QjAwNkYzODJGIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdE
NjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9
IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDY1Nzg4QTlEMThCNDA5RUIwMEMxODlGRjsK
KwkJCXJlbW90ZUluZm8gPSAiT2ZmbGluZSBBc3NlbWJsZXIiOworCQl9OworCQk2NUJFNjlEODI0
MDg1NDkzMDA2RjM4MkYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0g
UEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0
MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJ
CXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCOworCQkJcmVt
b3RlSW5mbyA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y3RDA5RDExRUYzMDBG
NDlERUIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFp
bmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFB
QzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtMzg2Niw2ICszODk2LDcgQEAKIAkJNjJFM0Q1
RUYxQjhEMEI3MzAwQjg2OEJCIC8qIERhdGFGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGF0YUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTYyRUM5QkI0MUI3RUIwN0MwMDMwM0FEMSAvKiBDYWxsRnJhbWVTaHVmZmxlRGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsRnJhbWVTaHVmZmxl
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYyRUM5QkI1MUI3RUIwN0Mw
MDMwM0FEMSAvKiBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWxsRnJhbWVTaHVmZmxlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2NTA2ODc2RTIzQURBRkJCMDBDMkQ1NDEgLyogSklUV2hpdGVsaXN0RW50cmllcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKSVRXaGl0ZWxpc3RFbnRy
aWVzLmNwcDsgcGF0aCA9ICIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9Vc2Vycy9t
c2Fib2ZmL0xpYnJhcnkvRGV2ZWxvcGVyL1hjb2RlL0Rlcml2ZWREYXRhL1dlYktpdC1idm92amtm
eXZpYXBwaWV4Ymtyc2RtaXJmYXZ2L0J1aWxkL1Byb2R1Y3RzL0RlYnVnL0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0pJVFdoaXRlbGlzdEVudHJpZXMuY3BwIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjUwN0QyOTcwRTg3MUU0QTAwRDdEODk2IC8qIEpTVHlwZUluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4
cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB0ZXN0UmVnRXhwLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IHRlc3RSZWdFeHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBA
IC0zODg4LDEyICszOTE5LDE3IEBACiAJCTY1NTcwRjU4MUFBNEMwMEEwMDlCM0MyMyAvKiBSZWdy
ZXNzMTQxMjc1LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlZ3Jlc3MxNDEy
NzUuaDsgcGF0aCA9IEFQSS90ZXN0cy9SZWdyZXNzMTQxMjc1Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1NTcwRjU5MUFBNEMwMEEwMDlCM0MyMyAvKiBSZWdyZXNzMTQxMjc1Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUmVncmVzczE0MTI3NS5t
bTsgcGF0aCA9IEFQSS90ZXN0cy9SZWdyZXNzMTQxMjc1Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTVFQjI5QTEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQ29kZWdlbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1NjA3NTNFMjNFMjVGQ0IwMEUwODMzRiAvKiBK
SVRXaGl0ZWxpc3QuanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuanNvbjsgcGF0aCA9IEpJVFdoaXRlbGlz
dC5qc29uOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTYwQTRDRjA0QjNCM0U3MDA4
QUU5NTIgLyogQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb3Jl
Rm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9D
b3JlRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJ
CTY1NjIxRTZCMDg5RTg1OTcwMDc2MEYzNSAvKiBQcm9wZXJ0eVNsb3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvcGVydHlTbG90
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NTYyMUU2
QzA4OUU4NTk3MDA3NjBGMzUgLyogUHJvcGVydHlTbG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3BlcnR5U2xvdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JG
MiAvKiBKU0NhbGxlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0NhbGxlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1N0NGNDU3MTlCRjY2
NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NhbGxlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTg2MDE3NzE4NUE4
RjVFMDAwMzBFRUUgLyogTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU4N0IxQUMyMzg0NzY5NjAwMDEwNjY5IC8q
IEpJVERlc3RpbmF0aW9uV2hpdGVsaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpJVERlc3RpbmF0aW9uV2hpdGVsaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjU4N0IxQUQyMzg0NzY5NjAwMDEwNjY5IC8qIEpJVERlc3RpbmF0aW9uV2hp
dGVsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERlc3RpbmF0aW9u
V2hpdGVsaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1ODdCMUFFMjM4NUE2
Q0MwMDAxMDY2OSAvKiBKSVRWZXJpZmllZENvcHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklUVmVyaWZpZWRDb3B5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTY1ODdCMUFGMjM4NUE2Q0MwMDAxMDY2OSAvKiBKSVRWZXJpZmllZENvcHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVmVyaWZpZWRDb3B5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4ODI0QUUxRTVDRkRCMDAwRkI3MzU5IC8qIENvbmZp
Z0ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uZmlnRmlsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTg4MjRCMDFFNUNGREY0MDBGQjczNTkgLyog
Q29uZmlnRmlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25m
aWdGaWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4RDNBNTUxOTYzODI2
ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBs
aW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNRW50cnlSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpj
cHA7IH07CkBAIC0zOTAzLDIwICszOTM5LDI5IEBACiAJCTY1OUNEQTVBMUY2NzUwOTgwMEQzRTUz
RiAvKiBZYXJyVW5pY29kZVByb3BlcnRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmg7IHBhdGggPSB5YXJyL1lhcnJVbmljb2RlUHJv
cGVydGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUE5NDYxMzFDOEU5RjIw
MDBBNzIwOUEgLyogZ2VuZXJhdGVZYXJyQ2Fub25pY2FsaXplVW5pY29kZSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IGdlbmVyYXRlWWFyckNhbm9uaWNhbGl6ZVVuaWNvZGU7
IHBhdGggPSB5YXJyL2dlbmVyYXRlWWFyckNhbm9uaWNhbGl6ZVVuaWNvZGU7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1QTk0NjE0MUM4RTlGNkYwMEE3MjA5QSAvKiBZYXJyQ2Fub25p
Y2FsaXplVW5pY29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBZ
YXJyQ2Fub25pY2FsaXplVW5pY29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTY1QjZCODk1MjNGQ0E3MzUwMEI5MDFFMSAvKiBCM0NhZ2VkQ0NhbGwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDYWdlZENDYWxsLmg7IHBhdGggPSBiMy9CM0NhZ2VkQ0Nh
bGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCODM5MkMxQkFDQTkyQTAwNDRF
ODI0IC8qIENhY2hlZFJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlZFJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QjgzOTJE
MUJBQ0E5RDMwMDQ0RTgyNCAvKiBDYWNoZWRSZWNvdmVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRSZWNvdmVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1Qjg5OEFEMjMxNDZFOUIwMDQ3NjM1OCAvKiBhcm02NGUucmIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gYXJtNjRlLnJiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2NUJFNjlDQjI0MDg1MkQ0MDA2RjM4MkYgLyogZ2VuZXJhdGUtdW5pZmll
ZC1zb3VyY2VzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUt
dW5pZmllZC1zb3VyY2VzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVCRTY5
Q0MyNDA4NTJENDAwNkYzODJGIC8qIGdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gImdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1QkU2OUQ1MjQwODUzOUQwMDZGMzgyRiAv
KiBEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IG5hbWUgPSAiRGVyaXZl
ZCBTb3VyY2VzIGNvcHktSW5mby5wbGlzdCI7IHBhdGggPSAiL1ZvbHVtZXMvRXh0RGF0YS9zcmMv
V0suMS9PcGVuU291cmNlL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkIFNvdXJjZXMgY29w
eS1JbmZvLnBsaXN0Ijsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJNjVCRTY5REMy
NDA4NTk0NDAwNkYzODJGIC8qIEpJVERlc3RpbmF0aW9uV2hpdGVsaXN0Lm1ha2UgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLm1ha2U7IHBhdGggPSBKSVREZXN0aW5hdGlvbldoaXRlbGlzdC5tYWtlOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUMwMkZCQjA2Mzc0NjJBMDAzRTdFRTYgLyog
UHJvdGVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQcm90ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsK
IAkJNjVDNkJFREYyMTEyOEMzQjAwNjg0OUMzIC8qIFlhcnJEaXNhc3NlbWJsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckRpc2Fzc2VtYmxlci5jcHA7IHBh
dGggPSB5YXJyL1lhcnJEaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUM2QkVFMDIxMTI4QzNCMDA2ODQ5QzMgLyogWWFyckRpc2Fzc2VtYmxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyRGlzYXNzZW1ibGVyLmg7IHBhdGggPSB5
YXJyL1lhcnJEaXNhc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVD
N0ExNzEwQThFQUFDQjAwRkEzN0VBIC8qIEpTV3JhcHBlck9iamVjdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXcmFwcGVyT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDN0ExNzIwQThFQUFDQjAwRkEzN0VBIC8qIEpTV3JhcHBl
ck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXcmFwcGVyT2Jq
ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1REE5MDQ2MUY4NzA1MkEwMDlC
QzU0NiAvKiBnZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBnZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJs
ZXMucHk7IHBhdGggPSB5YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVFMjRGNkMyM0EyRTE4RjAwODFCMjAwIC8q
IEFSTTY0VmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQVJNNjRW
ZXJpZmllci5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL0FSTTY0VmVyaWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVFMjRGNkQyM0EyRTE4RjAwODFCMjAwIC8qIEFSTTY0VmVy
aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQVJNNjRWZXJp
Zmllci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RTg2NkVEMERENTlBRkEwMEEyQjJBMSAvKiBTb3VyY2VQ
cm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUVBNEM5OTA5MkFGOUUyMDA5M0Q4
MDAgLyogSlNMb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgfTsKIAkJNjVFQTRDOUEwOTJBRjlFMjAwOTNEODAwIC8qIEpTTG9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0xvY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NUVBNzM2MjBCQUUz
NUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1vbklkZW50aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjVFQTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZp
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25JZGVudGlmaWVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUY3Q0M5RDIzRDQxN0VEMDBFOEJG
QzEgLyogSklUT3BzV2hpdGVsaXN0R2VuZXJhdG9yLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBwYXRoID0gSklUT3BzV2hpdGVsaXN0R2VuZXJhdG9yLnB5OyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2NUY3Q0M5RTIzRDQxODFGMDBFOEJGQzEgLyogZ2VuZXJhdGUtaml0
RGVzdGluYXRpb25XaGl0ZUxpc3Quc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9
ICJnZW5lcmF0ZS1qaXREZXN0aW5hdGlvbldoaXRlTGlzdC5zaCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90b0NhbGxGcmFtZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QTM4Q0ZBNzFFMzJCNThCMDA2MDIwNkYgLyogQXN5
bmNTdGFja1RyYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFz
eW5jU3RhY2tUcmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZBMzhDRkE4
MUUzMkI1OEIwMDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXN5bmNTdGFja1RyYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01MzkzLDYgKzU0MzgsOCBAQAogCQkJCTkzN0I2M0NDMDlFNzY2RDIwMEE2NzFERCAv
KiBEZXJpdmVkU291cmNlcy5tYWtlICovLAogCQkJCTBGOTMyNzVBMUMyMEJDREYwMENGNjU2NCAv
KiBkeW5iZW5jaC5jcHAgKi8sCiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFT
Y3JpcHRDb3JlUHJlZml4LmggKi8sCisJCQkJNjVCRTY5REMyNDA4NTk0NDAwNkYzODJGIC8qIEpJ
VERlc3RpbmF0aW9uV2hpdGVsaXN0Lm1ha2UgKi8sCisJCQkJNjU2MDc1M0UyM0UyNUZDQjAwRTA4
MzNGIC8qIEpJVFdoaXRlbGlzdC5qc29uICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4
NCAvKiBqc2MuY3BwICovLAogCQkJCUE3QzIyNUNDMTM5OTgxRjEwMEZGMTY2MiAvKiBLZXl3b3Jk
TG9va3VwR2VuZXJhdG9yLnB5ICovLAogCQkJCTc5RDdCMEUyMjExNTJGRDMwMEZFN0M2NCAvKiBh
bGxvdy1qaXQtbWFjT1MuZW50aXRsZW1lbnRzICovLApAQCAtNTQzMSw2ICs1NDc4LDcgQEAKIAkJ
CQk4NjAzQ0VGMDE0Qzc1M0VGMDBBRTU5RTMgLyogdG9vbHMgKi8sCiAJCQkJN0I5OEQxMzMxQjYw
Q0QxRTAwMjNCMUE0IC8qIHdhc20gKi8sCiAJCQkJODZFQUM0OEMwRjkzRThCOTAwOEVDOTQ4IC8q
IHlhcnIgKi8sCisJCQkJNjVCRTY5RDUyNDA4NTM5RDAwNkYzODJGIC8qIERlcml2ZWQgU291cmNl
cyBjb3B5LUluZm8ucGxpc3QgKi8sCiAJCQkpOwogCQkJbmFtZSA9IEphdmFTY3JpcHRDb3JlOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU1OTUsNiArNTY0Myw3IEBACiAJCQkJRENG
REZCRDcxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCAqLywKIAkJCQkwRjZC
OEFERTFDNEVGRTE3MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2FsRWRnZXMuY3BwICovLAogCQkJ
CTBGNkI4QURGMUM0RUZFMTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5oICovLAor
CQkJCTY1QjZCODk1MjNGQ0E3MzUwMEI5MDFFMSAvKiBCM0NhZ2VkQ0NhbGwuaCAqLywKIAkJCQlE
QzlBMEMxQzFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5jcHAgKi8sCiAJCQkJ
REM5QTBDMUQxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uaCAqLywKIAkJCQlE
QzlBMEMxRTFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbklubGluZXMuaCAqLywK
QEAgLTU4ODgsNiArNTkzNyw4IEBACiAJCQkJNjUyQTNBMUExNjUxQTkyNDAwQTgwQUZFIC8qIEFS
TTY0ICovLAogCQkJCTBGRjQyNzMzMTU4RUJENjQwMDRDQjlGRiAvKiB1ZGlzODYgKi8sCiAJCQkJ
NjUyQTNBMjAxNjUxQzY2MTAwQTgwQUZFIC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCAqLywKKwkJ
CQk2NUUyNEY2QzIzQTJFMThGMDA4MUIyMDAgLyogQVJNNjRWZXJpZmllci5oICovLAorCQkJCTY1
RTI0RjZEMjNBMkUxOEYwMDgxQjIwMCAvKiBBUk02NFZlcmlmaWVyLmNwcCAqLywKIAkJCQkwRjlE
MzM2RTE2NURCQjhEMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQkwRkY0Mjcy
RjE1OEVCRDQ0MDA0Q0I5RkYgLyogRGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJMEZGNDI3MzAxNThF
QkQ0NDAwNENCOUZGIC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgKi8sCkBAIC02MDUyLDYgKzYx
MDMsOCBAQAogCQkJCTBGRkI4MEJCMjBBNzk0NzAwMDA2QUFGNiAvKiBKSVRDb2RlSW5saW5lcy5o
ICovLAogCQkJCUZFNDc2RkYzMjA3RTg1RDQwMDkzQ0EyRCAvKiBKSVRDb2RlTWFwLmggKi8sCiAJ
CQkJMEYwNzc2QkQxNEZGMDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi8s
CisJCQkJNjU4N0IxQUMyMzg0NzY5NjAwMDEwNjY5IC8qIEpJVERlc3RpbmF0aW9uV2hpdGVsaXN0
LmNwcCAqLywKKwkJCQk2NTg3QjFBRDIzODQ3Njk2MDAwMTA2NjkgLyogSklURGVzdGluYXRpb25X
aGl0ZWxpc3QuaCAqLywKIAkJCQkwRkFGN0VGQTE2NUJBOTE5MDAwQzg0NTUgLyogSklURGlzYXNz
ZW1ibGVyLmNwcCAqLywKIAkJCQkwRkFGN0VGQjE2NUJBOTE5MDAwQzg0NTUgLyogSklURGlzYXNz
ZW1ibGVyLmggKi8sCiAJCQkJRkUxODdBMEExQzAyMjkyMzAwMzhCQkNBIC8qIEpJVERpdkdlbmVy
YXRvci5jcHAgKi8sCkBAIC02MDg2LDYgKzYxMzksOCBAQAogCQkJCTBGNUVGOTFDMTY4NzhGNzgw
MDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLywKIAkJCQkwRkM3MTJFMDE3Q0Q4NzhGMDA4Q0M5M0Mg
LyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovLAogCQkJCTBGQzcx
MkUxMTdDRDg3OEYwMDhDQzkzQyAvKiBKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5oICovLAorCQkJCTY1ODdCMUFGMjM4NUE2Q0MwMDAxMDY2OSAvKiBKSVRWZXJpZmllZENvcHku
Y3BwICovLAorCQkJCTY1ODdCMUFFMjM4NUE2Q0MwMDAxMDY2OSAvKiBKSVRWZXJpZmllZENvcHku
aCAqLywKIAkJCQlEQzAxODQxNzFEMTBDMTg3MDA1N0IwNTMgLyogSklUV29ya2xpc3QuY3BwICov
LAogCQkJCURDMDE4NDE4MUQxMEMxODcwMDU3QjA1MyAvKiBKSVRXb3JrbGlzdC5oICovLAogCQkJ
CUE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oICovLApAQCAtNjcy
NCw2ICs2Nzc5LDcgQEAKIAkJCQlBMTU4N0Q3NDFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oICovLAogCQkJCUExMjU4NDZDMUI0NUEzNjAwMENDN0Y2
QyAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmggKi8sCiAJCQkJQTEyNTg0NkQx
QjQ1QTM2MDAwQ0M3RjZDIC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUubHV0LmggKi8sCisJ
CQkJNjUwNjg3NkUyM0FEQUZCQjAwQzJENTQxIC8qIEpJVFdoaXRlbGlzdEVudHJpZXMuY3BwICov
LAogCQkJCUE3RDgwMUE2MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5jcHAgKi8sCiAJ
CQkJQTdEODAxQTcxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0aW5zLmggKi8sCiAJCQkJOTk2
QjczMEExQkQ5RkEyQzAwMzMxQjg0IC8qIEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmggKi8sCkBA
IC04NDEyLDggKzg0NjgsMTIgQEAKIAkJCQk5OURBMDA5NzFCRDU5OEUwMDBGNDU3NUMgLyogd2ti
dWlsdGlucyAqLywKIAkJCQk5OTU5RTkyNzFCRDE3RkEwMDAxQUE0MTMgLyogY3NzbWluLnB5ICov
LAogCQkJCTk5NTlFOTJGMUJEMTgxRjYwMDFBQTQxMyAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNw
ZWN0b3ItanNvbi5weSAqLywKKwkJCQk2NUJFNjlDQzI0MDg1MkQ0MDA2RjM4MkYgLyogZ2VuZXJh
dGUtZGVyaXZlZC1zb3VyY2VzLnNoICovLAorCQkJCTY1RjdDQzlFMjNENDE4MUYwMEU4QkZDMSAv
KiBnZW5lcmF0ZS1qaXREZXN0aW5hdGlvbldoaXRlTGlzdC5zaCAqLywKIAkJCQk5OURBMDBBQzFC
RDU5OTNFMDBGNDU3NUMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMucHkgKi8sCisJCQkJNjVCRTY5
Q0IyNDA4NTJENDAwNkYzODJGIC8qIGdlbmVyYXRlLXVuaWZpZWQtc291cmNlcy5zaCAqLywKIAkJ
CQk5OTU5RTkzMDFCRDE4MUY2MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVl
dHMtYW5kLXNjcmlwdHMucHkgKi8sCisJCQkJNjVGN0NDOUQyM0Q0MTdFRDAwRThCRkMxIC8qIEpJ
VE9wc1doaXRlbGlzdEdlbmVyYXRvci5weSAqLywKIAkJCQk5OTU5RTkyOTFCRDE3RkEwMDAxQUE0
MTMgLyoganNtaW4ucHkgKi8sCiAJCQkJOTlEQTAwQUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3
cml0ZXIucHkgKi8sCiAJCQkJQTVFRjEzRjcxRjA3MzFCNDAwMEYwNDQyIC8qIG1ha2UtanMtZmls
ZS1hcnJheXMucHkgKi8sCkBAIC04ODUyLDcgKzg5MTIsMTAgQEAKIAkJCQkwRkVDODU3MDFCREFD
REM3MDA4MEZGNzQgLyogQWlyQXJnLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY0RUFGMzFDNEVD
RDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1
NzIxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICovLAorCQkJ
CTY1ODdCMUIxMjM4NUMxN0MwMDAxMDY2OSAvKiBKSVREZXN0aW5hdGlvbldoaXRlbGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNjU4N0IxQjAyMzg1QzE0NDAwMDEwNjY5IC8qIEpJVFZlcmlmaWVk
Q29weS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQzYzQkMxRTYzNDQwQzAwQzEzODM5IC8qIEFp
ckJsb2NrSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2NUUyNEY2RTIzQTJFMUYw
MDA4MUIyMDAgLyogQVJNNjRWZXJpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMzg3OEUx
QkZCQzQ0RDAwRTNBQjFFIC8qIEFpckJsb2NrV29ya2xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNzlDN0NBMUU3NEM5M0IwMEVCMzREMSAvKiBBaXJCcmVha0NyaXRpY2FsRWRnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNjE4MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0Nv
bnZlbnRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA2MDIsNiArMTA2NjUsNyBAQAogCQkJCUE1
M0YxQUJGMThDOTBGOEIwMDcyRUI2RCAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJOTMyRjVCM0YwODIy
QTFDNzAwNzM2OTc1IC8qIEhlYWRlcnMgKi8sCiAJCQkJMzczMjgxMUExN0ZDRDIzNTAwNEFENTE5
IC8qIFBvc3Rwcm9jZXNzIEhlYWRlcnMgKi8sCisJCQkJNjVCRTY5REQyNDA4NjdBMjAwNkYzODJG
IC8qIEdlbmVyYXRlIFdoaXRlbGlzdCBTb3VyY2UgKi8sCiAJCQkJOTMyRjVCOTEwODIyQTFDNzAw
NzM2OTc1IC8qIFNvdXJjZXMgKi8sCiAJCQkJOTMyRjVCRDIwODIyQTFDNzAwNzM2OTc1IC8qIEZy
YW1ld29ya3MgKi8sCiAJCQkJNUQyOUQ4QkUwRTk4NjBCNDAwQzNEMkQwIC8qIENoZWNrIEZvciBX
ZWFrIFZUYWJsZXMgYW5kIEV4dGVybmFscyAqLywKQEAgLTEwNjkxLDYgKzEwNzU1LDcgQEAKIAkJ
CQk5MzJGNUJFMzA4MjJBMUM3MDA3MzY5NzUgLyogQWxsICovLAogCQkJCTkzMkY1QjNFMDgyMkEx
QzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZSAqLywKIAkJCQk2NUZCM0Y2NjA5RDExRTkxMDBG
NDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovLAorCQkJCTY1QkU2OUNEMjQwODUzOUQwMDZGMzgy
RiAvKiBKSVQgV2hpdGVsaXN0ICovLAogCQkJCTE0QkQ2ODhGMjE1MTkxNDUwMDUwREFGRiAvKiBM
TEludCBTZXR0aW5ncyAqLywKIAkJCQkxNEJENjg4MTIxNTE5MTMxMDA1MERBRkYgLyogSlNDTExJ
bnRTZXR0aW5nc0V4dHJhY3RvciAqLywKIAkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyog
TExJbnQgT2Zmc2V0cyAqLywKQEAgLTEwODA5LDcgKzEwODc0LDcgQEAKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJzZXQgLWVcblxuaWYgW1sgLWYgXCIke0JVSUxUX1BST0RV
Q1RTX0RJUn0vbGliV1RGLmFcIiBdXTsgdGhlblxuICAgIGxuIC1zIC1mIC1oIFwiJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L2xpYldURi5hXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvbGliV1RGLmFcIlxuZWxzZVxuICAgIGxuIC1zIC1mIC1oIFwi
JHtTREtfRElSfSR7V0tfQUxURVJOQVRFX1dFQktJVF9TREtfUEFUSH0vdXNyL2xvY2FsL2xpYi9s
aWJXVEYuYVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL2xpYldURi5hXCJcbmZpIjsKKwkJCXNoZWxsU2NyaXB0ID0gInNldCAtZVxuXG5pZiBb
WyAtZiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9saWJXVEYuYVwiIF1dOyB0aGVuXG4gICAgbG4g
LXMgLWYgLWggXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vbGliV1RGLmFcIiBcIiR7QlVJTFRfUFJP
RFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9saWJXVEYuYVwiXG5lbHNl
XG4gICAgbG4gLXMgLWYgLWggXCIke1NES19ESVJ9JHtXS19BTFRFUk5BVEVfV0VCS0lUX1NES19Q
QVRIfS91c3IvbG9jYWwvbGliL2xpYldURi5hXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvbGliV1RGLmFcIlxuZmlcbiI7CiAJCX07CiAJCTUz
MjVCREM1MjFERkYyQkEwMEEwREVFMSAvKiBTaGVsbFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTEwOTk3LDYgKzExMDYyLDQ0IEBACiAJCQlzaGVs
bFBhdGggPSAvYmluL3NoOwogCQkJc2hlbGxTY3JpcHQgPSAiaWYgW1sgXCIke0FDVElPTn1cIiA9
PSBcImluc3RhbGxoZHJzXCIgXV07IHRoZW5cbiAgICBleGl0IDBcbmZpXG5cbmNkIFwiJHtCVUlM
VF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL3Vzci9i
aW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIgXCItSSR7QlVJTFRf
UFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiIEphdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9
L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvclwiIExMSW50QXNzZW1ibHkuaCB8fCBleGl0IDFcbiI7
CiAJCX07CisJCTY1QkU2OUNFMjQwODUzOUQwMDZGMzgyRiAvKiBHZW5lcmF0ZSBXaGl0ZWxpc3Qg
U291cmNlICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0
RmlsZUxpc3RQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0IiwKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAi
R2VuZXJhdGUgV2hpdGVsaXN0IFNvdXJjZSI7CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAor
CQkJCSIkKFNSQ1JPT1QpL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IiwKKwkJCSk7
CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJTY3JpcHRzL2dlbmVyYXRlLWppdERlc3RpbmF0aW9uV2hpdGVMaXN0LnNoXG4iOworCQl9Owor
CQk2NUJFNjlERDI0MDg2N0EyMDA2RjM4MkYgLyogR2VuZXJhdGUgV2hpdGVsaXN0IFNvdXJjZSAq
LyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dEZpbGVMaXN0
UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkdl
bmVyYXRlIFdoaXRlbGlzdCBTb3VyY2UiOworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJ
CSk7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlw
dCA9ICJTY3JpcHRzL2dlbmVyYXRlLWppdERlc3RpbmF0aW9uV2hpdGVMaXN0LnNoXG4iOworCQl9
OwogCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
ICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTExNTA0LDYgKzExNjA3LDE2IEBACiAJCQl0YXJnZXQg
PSA2NTc4OEE5RDE4QjQwOUVCMDBDMTg5RkYgLyogT2ZmbGluZSBBc3NlbWJsZXIgKi87CiAJCQl0
YXJnZXRQcm94eSA9IDY1Nzg4QUFDMThCNDBBN0IwMEMxODlGRiAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi87CiAJCX07CisJCTY1QkU2OUQ3MjQwODU0OEIwMDZGMzgyRiAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdl
dCA9IDY1Nzg4QTlEMThCNDA5RUIwMEMxODlGRiAvKiBPZmZsaW5lIEFzc2VtYmxlciAqLzsKKwkJ
CXRhcmdldFByb3h5ID0gNjVCRTY5RDYyNDA4NTQ4QjAwNkYzODJGIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNjVCRTY5RDkyNDA4NTQ5MzAwNkYzODJGIC8qIFBCWFRhcmdl
dERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFy
Z2V0ID0gNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLzsKKwkJ
CXRhcmdldFByb3h5ID0gNjVCRTY5RDgyNDA4NTQ5MzAwNkYzODJGIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLzsKKwkJfTsKIAkJNjVGQjNGN0UwOUQxMUVGMzAwRjQ5REVCIC8qIFBCWFRhcmdl
dERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFy
Z2V0ID0gNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLzsKQEAg
LTEyMDgwLDYgKzEyMTkzLDM4IEBACiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07
CisJCTY1QkU2OUQxMjQwODUzOUQwMDZGMzgyRiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkw
NTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNjb25maWcgKi87CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJHZW5lcmF0ZSBKSVQgV2hpdGVs
aXN0IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTY1QkU2OUQyMjQwODUzOUQw
MDZGMzgyRiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlE
MCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRlIEpJVCBXaGl0ZWxpc3QiOworCQkJfTsKKwkJCW5h
bWUgPSBSZWxlYXNlOworCQl9OworCQk2NUJFNjlEMzI0MDg1MzlEMDA2RjM4MkYgLyogUHJvZmls
aW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0
Q29yZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1F
ID0gIkdlbmVyYXRlIEpJVCBXaGl0ZWxpc3QiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7
CisJCX07CisJCTY1QkU2OUQ0MjQwODUzOUQwMDZGMzgyRiAvKiBQcm9kdWN0aW9uICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkdlbmVyYXRl
IEpJVCBXaGl0ZWxpc3QiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQk2
NUZCM0Y3ODA5RDExRUJEMDBGNDlERUIgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMw
QkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwpAQCAtMTI0NDIs
NiArMTI1ODcsMTcgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKIAkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCTY1QkU2OUQw
MjQwODUzOUQwMDZGMzgyRiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3Jl
Z2F0ZVRhcmdldCAiSklUIFdoaXRlbGlzdCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk2NUJFNjlEMTI0MDg1MzlE
MDA2RjM4MkYgLyogRGVidWcgKi8sCisJCQkJNjVCRTY5RDIyNDA4NTM5RDAwNkYzODJGIC8qIFJl
bGVhc2UgKi8sCisJCQkJNjVCRTY5RDMyNDA4NTM5RDAwNkYzODJGIC8qIFByb2ZpbGluZyAqLywK
KwkJCQk2NUJFNjlENDI0MDg1MzlEMDA2RjM4MkYgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQk2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2
ZWQgU291cmNlcyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L0pJVE9wc1doaXRlbGlzdEdlbmVyYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy9KSVRPcHNXaGl0ZWxpc3RHZW5lcmF0b3IucHkJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvSklUT3BzV2hpdGVsaXN0R2VuZXJh
dG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUwIEBACisjIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
IyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisjIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisjIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyMgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitp
bXBvcnQgYXJncGFyc2UKK2ltcG9ydCBjb21tYW5kcworaW1wb3J0IGpzb24KK2ltcG9ydCBvcwor
aW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorCitjb3B5cmlnaHRIZWFkZXIgPSAi
IiIvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqCisqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworLy8gRE8gTk8gRURJVCEg
LSBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSAiIiIgKyBfX2ZpbGVfXyArICIiIgorIiIiCisK
K2luY2x1ZGVUZW1wSGVhZGVyID0gIiIiCisjZGVmaW5lIEpTQ19IT1NUX0NBTEwgSlNDX0hPU1Rf
Q0FMTAorI2RlZmluZSBKSVRfT1BFUkFUSU9OIEpJVF9PUEVSQVRJT04KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorIiIiCisKK3Nsb3dQYXRoTWFya2VyID0gIl9fc2xvd19wYXRoX2RlY2xfbWFya2Vy
X18iCit3YXNtU2xvd1BhdGhNYXJrZXIgPSAiX193YXNtX3Nsb3dfcGF0aF9kZWNsX21hcmtlcl9f
IgorCithZnRlckluY2x1ZGVUZXh0ID0gIiIiCitTTE9XX1BBVEhfREVDTCh7fSkKKworV0FTTV9T
TE9XX1BBVEhfREVDTCh7fSkKKyIiIi5mb3JtYXQoc2xvd1BhdGhNYXJrZXIsIHdhc21TbG93UGF0
aE1hcmtlcikKKworaW5jbHVkZVRlbXBGb290ZXIgPSAiIiIKKyIiIgorCit3aGl0ZUxpc3RIZWFk
ZXIgPSAiIiIKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkpJVERlc3RpbmF0aW9u
V2hpdGVsaXN0LmgiCisjaW5jbHVkZSAiTmF0aXZlRnVuY3Rpb24uaCIKKyIiIgorCit3aGl0ZUxp
c3RGb290ZXIgPSAiIiIKK30gLy8gbmFtZXNwYWNlIEpTQworIiIiCisKK3J1bk1vZGUgPSBOb25l
CitqaXRDYWxsU3ViZGlycyA9IFsiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSJdCitqaXRDYWxs
VGFncyA9IFsiSlNDX0hPU1RfQ0FMTCIsICJKSVRfT1BFUkFUSU9OIl0KK3Nsb3dQYXRoVGFncyA9
IFsiU0xPV19QQVRIX0RFQ0wiLCAiU0xPV19QQVRIX0hJRERFTl9ERUNMIl0KK3dhc21TbG93UGF0
aFRhZ3MgPSBbIldBU01fU0xPV19QQVRIX0RFQ0wiLCAiV0FTTV9TTE9XX1BBVEhfSElEREVOX0RF
Q0wiXQorc2xvd1BhdGhEZWNsYXJhdGlvbnMgPSB7CisgICAgIlNMT1dfUEFUSF9ERUNMIjogImV4
dGVybiBcIkNcIiBTbG93UGF0aFJldHVyblR5cGUgU0xPV19QQVRIIHt9KENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMpOyIsCisgICAgIlNMT1dfUEFUSF9ISURERU5f
REVDTCI6IE5vbmUsCisgICAgIldBU01fU0xPV19QQVRIX0RFQ0wiOiAiZXh0ZXJuIFwiQ1wiIFNs
b3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV97fShDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UpOyIsCisgICAg
IldBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMIjogTm9uZX0KKworY29uZmlnID0gTm9uZQorIyBz
b3VyY2VGaWxlc1RvRXhjbHVkZSA9IHNldChbIkphdmFTY3JpcHRDb3JlL2pzYy5jcHAiLCAiSmF2
YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAiXSkKKyMgbmFtZXNwYWNlT3ZlcnJpZGVz
ID0geyAiSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yIjogIkluc3BlY3RvciIgfQorCitmdW5jdGlv
bnNMaXN0ZWRQZXJMaW5lID0gMgorCitleHRyYWN0SklUQ2FsbFJFID0gcmUuY29tcGlsZSgiKD86
ZXh0ZXJuIFwiQ1wiICk/KD86SlNfRVhQT1JUX1BSSVZBVEUgKT8oPzpbQS1aYS16X11cdyopXCo/
ICh7fSkgKFtBLVphLXpfXVx3KilcKFteXCldKlwpIi5mb3JtYXQoJ3wnLmpvaW4oaml0Q2FsbFRh
Z3MpKSkKK2V4dHJhY3RTbG93UGF0aFJFID0gTm9uZQorZXh0cmFjdFdhc21TbG93UGF0aFJFID0g
Tm9uZQorCitoRmlsZXNUb0luY2x1ZGUgPSBzZXQoKQorY3BwRmlsZXNUb0luY2x1ZGUgPSBzZXQo
KQorc3ltYm9sRGljdCA9IHt9CisKKworZGVmIGV4cHJGb3JUYWcocyk6CisgICAgcmV0dXJuICct
ZSAiJyArIHMgKyAnIicKKworCitkZWYgdHJpbVNvdXJjZUxpbmUocyk6CisgICAgY29tbWVudElu
ZGV4ID0gcy5maW5kKCIvLyIpCisgICAgaWYgY29tbWVudEluZGV4ID09IDA6CisgICAgICAgIHJl
dHVybiAiIgorICAgIGlmIGNvbW1lbnRJbmRleCAhPSAtMToKKyAgICAgICAgcmV0dXJuIHNbMDpj
b21tZW50SW5kZXhdCisgICAgcmV0dXJuIHMKKworZ3JlcEV4cHJGb3JUYWdzID0gJyAnLmpvaW4o
bWFwKGV4cHJGb3JUYWcsIGppdENhbGxUYWdzICsgc2xvd1BhdGhUYWdzICsgWyJTbG93UGF0aFJl
dHVyblR5cGUiXSkpCisKKworY2xhc3MgU3ltYm9sKG9iamVjdCk6CisgICAga2V5d29yZEFyZ3Mg
PSBbImNwcEZpbGUiLCAiaEZpbGUiLCAiZGVjbGFyYXRpb24iLCAibmFtZXNwYWNlIl0KKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jdGlvbiwgdGFnVHlwZSwgKiprd2FyZ3MpOgorICAgICAg
ICBzZWxmLmZ1bmN0aW9uID0gZnVuY3Rpb24KKyAgICAgICAgc2VsZi50YWdUeXBlID0gdGFnVHlw
ZQorICAgICAgICBmb3IgYXJnIGluIHNlbGYua2V5d29yZEFyZ3M6CisgICAgICAgICAgICB2YWx1
ZSA9IGt3YXJncy5wb3AoYXJnLCBOb25lKQorICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhcmcs
IHZhbHVlKQorCisgICAgZGVmIHVwZGF0ZShzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIGZvciBh
cmcgaW4gc2VsZi5rZXl3b3JkQXJnczoKKyAgICAgICAgICAgIHZhbHVlID0ga3dhcmdzLnBvcChh
cmcsIE5vbmUpCisgICAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgICAgICBzZXRhdHRy
KHNlbGYsIGFyZywgdmFsdWUpCisKKyAgICBkZWYgZGVjbGFyZWRJbkNQUEZpbGUoc2VsZik6Cisg
ICAgICAgIHJldHVybiBzZWxmLmNwcEZpbGUgYW5kIG5vdCBzZWxmLmhGaWxlCisKKyAgICBkZWYg
aW5EZWZhdWx0TmFtZXNwYWNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lc3BhY2Ug
aXMgTm9uZQorCisgICAgZGVmIG5hbWVTcGFjZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
bmFtZXNwYWNlCisKKyAgICBkZWYgdGFnVHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
dGFnVHlwZQorCisgICAgZGVmIGRlY2xhcmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmRl
Y2xhcmF0aW9uCisKKworZGVmIG9wZW5PckV4aXQocGF0aCwgbW9kZSk6CisgICAgdHJ5OgorICAg
ICAgICBpZiBzeXMudmVyc2lvbl9pbmZvLm1ham9yID49IDM6CisgICAgICAgICAgICByZXR1cm4g
b3BlbihwYXRoLCBtb2RlLCBlbmNvZGluZz0iVVRGLTgiKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgcmV0dXJuIG9wZW4ocGF0aCwgbW9kZSkKKyAgICBleGNlcHQgSU9FcnJvciBhcyBlOgor
ICAgICAgICBwcmludCgiSS9PIGVycm9yIG9wZW5pbmcgezB9LCAoezF9KTogezJ9Ii5mb3JtYXQo
cGF0aCwgZS5lcnJubywgZS5zdHJlcnJvcikpCisgICAgICAgIGV4aXQoMSkKKworCitkZWYgb3Bl
bk9yTm9uZShwYXRoLCBtb2RlKToKKyAgICBpZiBub3QgcGF0aDoKKyAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICB0cnk6CisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPj0gMzoKKyAg
ICAgICAgICAgIHJldHVybiBvcGVuKHBhdGgsIG1vZGUsIGVuY29kaW5nPSJVVEYtOCIpCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gb3BlbihwYXRoLCBtb2RlKQorICAgIGV4Y2Vw
dCBJT0Vycm9yIGFzIGU6CisgICAgICAgIHByaW50KCJJL08gZXJyb3Igb3BlbmluZyB7MH0sICh7
MX0pOiB7Mn0iLmZvcm1hdChwYXRoLCBlLmVycm5vLCBlLnN0cmVycm9yKSkKKyAgICAgICAgcmV0
dXJuIE5vbmUKKworCitkZWYgY3JlYXRlUkVGcm9tU3RyaW5nKHMpOgorICAgICMgZXNjYXBlIGFs
bCBzcGVjaWFsIGNoYXJhY3RlcnMKKyAgICByZXN1bHQgPSAiIgorICAgIGZvciBjIGluIHM6Cisg
ICAgICAgIGlmIGMgaW4gIiEkXiooKXt9W10rLSI6CisgICAgICAgICAgICByZXN1bHQgKz0gJ1xc
JworICAgICAgICByZXN1bHQgKz0gYworCisgICAgcmV0dXJuIHJlc3VsdAorCisKK2RlZiBleHRy
YWN0SklUQ2FsbHNGcm9tRGVjbGFyYXRpb24oZGVjbCk6CisgICAgZGVmIGV4dHJhY3RTbG93UGF0
aEZ1bmN0aW9uKFJFLCBkZWNsKToKKyAgICAgICAgZnVuY3Rpb25NYXRjaCA9IFJFLm1hdGNoKGRl
Y2wpCisgICAgICAgIGlmIGZ1bmN0aW9uTWF0Y2g6CisgICAgICAgICAgICBkZWNsYXJhdGlvbiA9
IHNsb3dQYXRoRGVjbGFyYXRpb25zW2Z1bmN0aW9uTWF0Y2guZ3JvdXAoMSldCisgICAgICAgICAg
ICBpZiBkZWNsYXJhdGlvbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25NYXRjaC5n
cm91cCgxKSwgZnVuY3Rpb25NYXRjaC5ncm91cCgyKSwgZGVjbGFyYXRpb24uZm9ybWF0KGZ1bmN0
aW9uTWF0Y2guZ3JvdXAoMikpCisgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCisKKyAg
ICBnbG9iYWwgZXh0cmFjdFNsb3dQYXRoUkUKKworICAgIGlmIG5vdCBsZW4oZGVjbCk6CisgICAg
ICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCisKKyAgICBmdW5jdGlvbk1hdGNoID0gZXh0cmFj
dEpJVENhbGxSRS5tYXRjaChkZWNsKQorICAgIGlmIGZ1bmN0aW9uTWF0Y2g6CisgICAgICAgIGRl
Y2xhcmUgPSBmdW5jdGlvbk1hdGNoLmdyb3VwKDApCisgICAgICAgIGlmIGRlY2xhcmVbLTFdICE9
ICI7IjoKKyAgICAgICAgICAgIGRlY2xhcmUgPSBkZWNsYXJlICsgIjsiCisgICAgICAgIHJldHVy
biBmdW5jdGlvbk1hdGNoLmdyb3VwKDEpLCBmdW5jdGlvbk1hdGNoLmdyb3VwKDIpLCBkZWNsYXJl
CisKKyAgICBpZiBleHRyYWN0U2xvd1BhdGhSRToKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RTbG93
UGF0aEZ1bmN0aW9uKGV4dHJhY3RTbG93UGF0aFJFLCBkZWNsKQorICAgIGlmIGV4dHJhY3RXYXNt
U2xvd1BhdGhSRToKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RTbG93UGF0aEZ1bmN0aW9uKGV4dHJh
Y3RXYXNtU2xvd1BhdGhSRSwgZGVjbCkKKworICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCisK
KworZGVmIGV4dHJhY3RKSVRDYWxsc0Zyb21QcmVwcm9jZXNzZWREZWNsYXJhdGlvbihkZWNsKToK
KyAgICBkZWYgZXh0cmFjdFNsb3dQYXRoRnVuY3Rpb24oUkUsIGRlY2wpOgorICAgICAgICBmdW5j
dGlvbk1hdGNoID0gUkUubWF0Y2goZGVjbCkKKyAgICAgICAgaWYgZnVuY3Rpb25NYXRjaDoKKyAg
ICAgICAgICAgIGlmIGZ1bmN0aW9uTWF0Y2guZ3JvdXAoMSkgPT0gc2xvd1BhdGhNYXJrZXIgb3Ig
ZnVuY3Rpb25NYXRjaC5ncm91cCgxKSA9PSB3YXNtU2xvd1BhdGhNYXJrZXI6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUKKworICAgICAgICAgICAgcmV0dXJuICJTTE9X
X1BBVEhfREVDTCIsIGZ1bmN0aW9uTWF0Y2guZ3JvdXAoMSksIGZ1bmN0aW9uTWF0Y2guZ3JvdXAo
MCkKKyAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUKKworICAgIGdsb2JhbCBleHRyYWN0
U2xvd1BhdGhSRQorCisgICAgaWYgbm90IGxlbihkZWNsKToKKyAgICAgICAgcmV0dXJuIE5vbmUs
IE5vbmUsIE5vbmUKKworICAgIGZ1bmN0aW9uTWF0Y2ggPSBleHRyYWN0SklUQ2FsbFJFLm1hdGNo
KGRlY2wpCisgICAgaWYgZnVuY3Rpb25NYXRjaDoKKyAgICAgICAgZGVjbGFyZSA9IGZ1bmN0aW9u
TWF0Y2guZ3JvdXAoMCkKKyAgICAgICAgaWYgZGVjbGFyZVstMV0gIT0gIjsiOgorICAgICAgICAg
ICAgZGVjbGFyZSA9IGRlY2xhcmUgKyAiOyIKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTWF0Y2gu
Z3JvdXAoMSksIGZ1bmN0aW9uTWF0Y2guZ3JvdXAoMiksIGRlY2xhcmUKKworICAgIGlmIGV4dHJh
Y3RTbG93UGF0aFJFOgorICAgICAgICByZXR1cm4gZXh0cmFjdFNsb3dQYXRoRnVuY3Rpb24oZXh0
cmFjdFNsb3dQYXRoUkUsIGRlY2wpCisgICAgaWYgZXh0cmFjdFdhc21TbG93UGF0aFJFOgorICAg
ICAgICByZXR1cm4gZXh0cmFjdFNsb3dQYXRoRnVuY3Rpb24oZXh0cmFjdFdhc21TbG93UGF0aFJF
LCBkZWNsKQorCisgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUKKworCitkZWYgY3JlYXRlSW5j
bHVkZVRlbXBGaWxlKHNvdXJjZURpcmVjdG9yeSwgb3V0RmlsZSk6CisgICAgZGVmIHByb2Nlc3NI
RmlsZU1hdGNoKGxpbmUpOgorICAgICAgICBwYXJ0cyA9IGxpbmUucGFydGl0aW9uKCI6IikKKyAg
ICAgICAgZmlsZXNUb0V4Y2x1ZGUgPSBjb25maWdbImZpbGVzVG9FeGNsdWRlIl0gaWYgImZpbGVz
VG9FeGNsdWRlIiBpbiBjb25maWcgZWxzZSBbXQorICAgICAgICBpZiBwYXJ0c1sxXSA9PSAiOiI6
CisgICAgICAgICAgICBmaWxlbmFtZSA9IHBhcnRzWzBdCisgICAgICAgICAgICBpZiBmaWxlbmFt
ZSBpbiBmaWxlc1RvRXhjbHVkZToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAg
IHRhZ1R5cGUsIGZ1bmN0aW9uLCBkZWNsYXJlID0gZXh0cmFjdEpJVENhbGxzRnJvbURlY2xhcmF0
aW9uKHBhcnRzWzJdKQorICAgICAgICAgICAgaWYgbm90IGZ1bmN0aW9uOgorICAgICAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgICAgICBoRmlsZXNUb0luY2x1ZGUuYWRkKGZpbGVuYW1lKQor
ICAgICAgICAgICAgc3ltYm9sRGljdFtmdW5jdGlvbl0gPSBTeW1ib2woZnVuY3Rpb24sIHRhZ1R5
cGUsIGhGaWxlPWZpbGVuYW1lKQorCisgICAgZGVmIHByb2Nlc3NDUFBGaWxlTWF0Y2gobGluZSk6
CisgICAgICAgIHBhcnRzID0gbGluZS5wYXJ0aXRpb24oIjoiKQorICAgICAgICBmaWxlc1RvRXhj
bHVkZSA9IGNvbmZpZ1siZmlsZXNUb0V4Y2x1ZGUiXSBpZiAiZmlsZXNUb0V4Y2x1ZGUiIGluIGNv
bmZpZyBlbHNlIFtdCisgICAgICAgIG5hbWVzcGFjZU92ZXJyaWRlcyA9IGNvbmZpZ1sibmFtZXNw
YWNlT3ZlcnJpZGVzIl0gaWYgIm5hbWVzcGFjZU92ZXJyaWRlcyIgaW4gY29uZmlnIGVsc2V7fQor
ICAgICAgICBpZiBwYXJ0c1sxXSA9PSAiOiI6CisgICAgICAgICAgICBmaWxlbmFtZSA9IHBhcnRz
WzBdCisgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQorICAg
ICAgICAgICAgaWYgcGFydHNbMF0gaW4gZmlsZXNUb0V4Y2x1ZGU6CisgICAgICAgICAgICAgICAg
cmV0dXJuCisKKyAgICAgICAgICAgIGlmIGRpcm5hbWUgaW4gbmFtZXNwYWNlT3ZlcnJpZGVzOgor
ICAgICAgICAgICAgICAgIG5hbWVTcGFjZSA9IG5hbWVzcGFjZU92ZXJyaWRlc1tkaXJuYW1lXQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuYW1lU3BhY2UgPSBOb25lCisKKyAg
ICAgICAgICAgIHRhZ1R5cGUsIGZ1bmN0aW9uLCBkZWNsYXJlID0gZXh0cmFjdEpJVENhbGxzRnJv
bURlY2xhcmF0aW9uKHBhcnRzWzJdKQorICAgICAgICAgICAgaWYgbm90IGZ1bmN0aW9uOgorICAg
ICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgY3BwRmlsZXNUb0luY2x1ZGUuYWRkKGZp
bGVuYW1lKQorICAgICAgICAgICAgc3ltYm9sID0gc3ltYm9sRGljdC5nZXQoZnVuY3Rpb24pCisg
ICAgICAgICAgICBpZiBkZWNsYXJlWzA6N10gPT0gInN0YXRpYyAiOgorICAgICAgICAgICAgICAg
IGRlY2xhcmUgPSBkZWNsYXJlWzc6XQorCisgICAgICAgICAgICBpZiBzeW1ib2w6CisgICAgICAg
ICAgICAgICAgc3ltYm9sLnVwZGF0ZShjcHBGaWxlPXBhcnRzWzBdLCBkZWNsYXJhdGlvbj1kZWNs
YXJlLCBuYW1lc3BhY2U9bmFtZVNwYWNlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBzeW1ib2xEaWN0W2Z1bmN0aW9uXSA9IFN5bWJvbChmdW5jdGlvbiwgdGFnVHlwZSwgY3Bw
RmlsZT1maWxlbmFtZSwgZGVjbGFyYXRpb249ZGVjbGFyZSwgbmFtZXNwYWNlPW5hbWVTcGFjZSkK
KworICAgIGRlZiBzY2FuRmlsZXNGb3JUYWdzKHNvdXJjZURpcmVjdG9yeSwgZmlsZVBhdHRlcm4s
IHByb2Nlc3NMaW5lKToKKyAgICAgICAgZ3JlcFJlc3VsdCA9IGNvbW1hbmRzLmdldHN0YXR1c291
dHB1dCgiZmluZCAtSCB7fSAtbmFtZSB7fSB8IHhhcmdzIGdyZXAgLUggLS1maXhlZC1zdHJpbmdz
IHt9Ii5mb3JtYXQoc291cmNlRGlyZWN0b3J5LCBmaWxlUGF0dGVybiwgZ3JlcEV4cHJGb3JUYWdz
KSkKKyAgICAgICAgcmVzdWx0TGluZXMgPSBncmVwUmVzdWx0WzFdLnNwbGl0bGluZXMoKQorICAg
ICAgICBmb3IgbGluZSBpbiByZXN1bHRMaW5lczoKKyAgICAgICAgICAgIHByb2Nlc3NMaW5lKGxp
bmUpCisKKyAgICBnbG9iYWwgZXh0cmFjdFNsb3dQYXRoUkUsIGV4dHJhY3RXYXNtU2xvd1BhdGhS
RQorCisgICAgIyBGaXJzdCBwYXNzIHdlIGxvb2sgZm9yIHRoZSBTbG93IFBhdGggdGFncyB0byBm
aW5kIGFsbCB0aGUgLmggYW5kIC5jcHAgZmlsZXMKKyAgICBleHRyYWN0U2xvd1BhdGhSRSA9IHJl
LmNvbXBpbGUoIl4oe30pXCgoW0EtWmEtel9dXHcqKVwpIi5mb3JtYXQoJ3wnLmpvaW4oc2xvd1Bh
dGhUYWdzKSkpCisgICAgZXh0cmFjdFdhc21TbG93UGF0aFJFID0gcmUuY29tcGlsZSgiXih7fSlc
KChbQS1aYS16X11cdyopXCkiLmZvcm1hdCgnfCcuam9pbih3YXNtU2xvd1BhdGhUYWdzKSkpCisK
KyAgICBzY2FuRmlsZXNGb3JUYWdzKHNvdXJjZURpcmVjdG9yeSwgIlwqLmgiLCBwcm9jZXNzSEZp
bGVNYXRjaCkKKyAgICBzY2FuRmlsZXNGb3JUYWdzKHNvdXJjZURpcmVjdG9yeSwgIlwqLmNwcCIs
IHByb2Nlc3NDUFBGaWxlTWF0Y2gpCisKKyAgICBvdXRGaWxlLndyaXRlKGNvcHlyaWdodEhlYWRl
cikKKyAgICBvdXRGaWxlLndyaXRlKGluY2x1ZGVUZW1wSGVhZGVyKQorCisgICAgIyBNYXJrIHRo
ZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBpbmNsdWRlIGxpc3Qgc28gd2UgY2FuIGNvcHkgdGhlIGxp
c3QgdG8gdGhlIGppdFdoaXRlbGlzdEVudHJpZXMgZmlsZQorICAgIG91dEZpbGUud3JpdGUoIi8v
IElOQ0xVREUgTElTVCBTVEFSVFxuIikKKyAgICBmb3IgZmlsZU5hbWUgaW4gc29ydGVkKGhGaWxl
c1RvSW5jbHVkZSk6CisgICAgICAgIG91dEZpbGUud3JpdGUoIiNpbmNsdWRlIFwie31cIlxuIi5m
b3JtYXQoZmlsZU5hbWUucmVwbGFjZShzb3VyY2VEaXJlY3RvcnkgKyAnLycsICcnKSkpCisKKyAg
ICBvdXRGaWxlLndyaXRlKCIvLyBJTkNMVURFIExJU1QgRU5EXG4iKQorCisgICAgb3V0RmlsZS53
cml0ZSgiXG4iKQorICAgIG91dEZpbGUud3JpdGUoYWZ0ZXJJbmNsdWRlVGV4dCkKKyAgICBvdXRG
aWxlLndyaXRlKCJcbiIpCisKKyAgICBvdXRGaWxlLndyaXRlKCIvLyBDKysgRklMRVMgU1RBUlRc
biIpCisgICAgZm9yIGZpbGVOYW1lIGluIHNvcnRlZChjcHBGaWxlc1RvSW5jbHVkZSk6CisgICAg
ICAgIG91dEZpbGUud3JpdGUoIiNpbmNsdWRlIFwie31cIlxuIi5mb3JtYXQoZmlsZU5hbWUucmVw
bGFjZShzb3VyY2VEaXJlY3RvcnkgKyAnLycsICcnKSkpCisKKyAgICBvdXRGaWxlLndyaXRlKCIv
LyBDKysgRklMRVMgRU5EXG4iKQorCisgICAgb3V0RmlsZS53cml0ZSgiXG5cbiNpZiAwIC8vIERF
Q0xBUkFUSU9OIExJU1QgU1RBUlRcbiIpCisgICAgc3ltYm9sS2V5cyA9IHNvcnRlZChzeW1ib2xE
aWN0LmtleXMoKSkKKworICAgIGRlZmF1bHROYW1lc3BhY2UgPSBjb25maWdbImRlZmF1bHROYW1l
c3BhY2UiXSBpZiAiZGVmYXVsdE5hbWVzcGFjZSIgaW4gY29uZmlnIGVsc2UgTm9uZQorICAgIGlm
IGRlZmF1bHROYW1lc3BhY2U6CisgICAgICAgIG91dEZpbGUud3JpdGUoIm5hbWVzcGFjZSB7fSB7
e1xuXG4iLmZvcm1hdChkZWZhdWx0TmFtZXNwYWNlKSkKKyAgICBmb3IgZnVuY3Rpb24gaW4gc3lt
Ym9sS2V5czoKKyAgICAgICAgc3ltYm9sID0gc3ltYm9sRGljdFtmdW5jdGlvbl0KKyAgICAgICAg
aWYgc3ltYm9sLmRlY2xhcmVkSW5DUFBGaWxlKCkgYW5kIHN5bWJvbC5pbkRlZmF1bHROYW1lc3Bh
Y2UoKToKKyAgICAgICAgICAgIG91dEZpbGUud3JpdGUoInt9XG4iLmZvcm1hdChzeW1ib2wuZGVj
bGFyZSgpKSkKKworICAgIGlmIGRlZmF1bHROYW1lc3BhY2U6CisgICAgICAgIG91dEZpbGUud3Jp
dGUoIlxufX0gLy8gbmFtZXNwYWNlIHt9XG5cbiIuZm9ybWF0KGRlZmF1bHROYW1lc3BhY2UpKQor
CisgICAgbmFtZXNwYWNlT3ZlcnJpZGVzID0gY29uZmlnWyJuYW1lc3BhY2VPdmVycmlkZXMiXSBp
ZiAibmFtZXNwYWNlT3ZlcnJpZGVzIiBpbiBjb25maWcgZWxzZSB7fQorICAgIGZvciBuYW1lc3Bh
Y2UgaW4gbmFtZXNwYWNlT3ZlcnJpZGVzLnZhbHVlcygpOgorICAgICAgICBvdXRGaWxlLndyaXRl
KCJuYW1lc3BhY2Uge30ge3tcblxuIi5mb3JtYXQobmFtZXNwYWNlKSkKKyAgICAgICAgZm9yIGZ1
bmN0aW9uIGluIHN5bWJvbEtleXM6CisgICAgICAgICAgICBzeW1ib2wgPSBzeW1ib2xEaWN0W2Z1
bmN0aW9uXQorICAgICAgICAgICAgaWYgc3ltYm9sLmRlY2xhcmVkSW5DUFBGaWxlKCkgYW5kIHN5
bWJvbC5uYW1lU3BhY2UoKSA9PSBuYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgb3V0RmlsZS53
cml0ZSgie31cbiIuZm9ybWF0KHN5bWJvbC5kZWNsYXJlKCkpKQorCisgICAgICAgIG91dEZpbGUu
d3JpdGUoIlxufX0gLy8gbmFtZXNwYWNlIHt9XG4iLmZvcm1hdChuYW1lc3BhY2UpKQorCisgICAg
b3V0RmlsZS53cml0ZSgiI2VuZGlmIC8vIERFQ0xBUkFUSU9OIExJU1QgRU5EXG4iKQorCisgICAg
b3V0RmlsZS53cml0ZSgiXG4iKQorCisgICAgb3V0RmlsZS53cml0ZShpbmNsdWRlVGVtcEZvb3Rl
cikKKworCitkZWYgY3JlYXRlV2hpdGVsaXN0Q1BQRmlsZShpbmNsdWRlVGVtcEZpbGUsIGluY2x1
ZGVQcmVwcm9jZXNzZWRUZW1wLCBleHRyYUVudHJpZXMsIG91dEZpbGUpOgorICAgIGdsb2JhbCBl
eHRyYWN0U2xvd1BhdGhSRSwgZXh0cmFjdFdhc21TbG93UGF0aFJFCisKKyAgICBlcnJvckNvdW50
ID0gMAorCisgICAgaml0V2hpdGVsaXN0RmlsZS53cml0ZShjb3B5cmlnaHRIZWFkZXIpCisgICAg
aml0V2hpdGVsaXN0RmlsZS53cml0ZSh3aGl0ZUxpc3RIZWFkZXIpCisKKyAgICAjIENvcHkgaW5j
bHVkZSBmaWxlcyBmcm9tIG9yaWdpbmFsIHRlbXAgZmlsZSB0byBvdXRGaWxlCisgICAgZm9yIGxp
bmUgaW4gaW5jbHVkZVRlbXBGaWxlOgorICAgICAgICBpZiBsaW5lLnN0cmlwKCkgPT0gIi8vIElO
Q0xVREUgTElTVCBTVEFSVCI6CisgICAgICAgICAgICBicmVhaworCisgICAgZm9yIGxpbmUgaW4g
aW5jbHVkZVRlbXBGaWxlOgorICAgICAgICBpZiBsaW5lLnN0cmlwKCkgPT0gIi8vIElOQ0xVREUg
TElTVCBFTkQiOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgb3V0RmlsZS53cml0ZShsaW5l
KQorCisgICAgZXh0cmFFbnRyaWVzID0gY29uZmlnWyJleHRyYUVudHJpZXMiXSBpZiAiZXh0cmFF
bnRyaWVzIiBpbiBjb25maWcgZWxzZSBOb25lCisgICAgZXh0cmFJbmNsdWRlcyA9IGV4dHJhRW50
cmllc1siaW5jbHVkZUZpbGVzIl0gaWYgZXh0cmFFbnRyaWVzIGFuZCAiaW5jbHVkZUZpbGVzIiBp
biBleHRyYUVudHJpZXMgZWxzZSBbXQorICAgIGZvciBpbmNsIGluIGV4dHJhSW5jbHVkZXM6Cisg
ICAgICAgIG91dEZpbGUud3JpdGUoIiNpbmNsdWRlIFwie31cIlxuIi5mb3JtYXQoaW5jbCkpCisK
KyAgICBvdXRGaWxlLndyaXRlKCJcbiIpCisgICAgdXNpbmdOYW1lc3BhY2VzID0gY29uZmlnWyJ1
c2luZ05hbWVzcGFjZXMiXSBpZiAidXNpbmdOYW1lc3BhY2VzIiBpbiBjb25maWcgZWxzZSBbXQor
ICAgIGZvciBuYW1lc3BhY2UgaW4gdXNpbmdOYW1lc3BhY2VzOgorICAgICAgICBvdXRGaWxlLndy
aXRlKCJ1c2luZyBuYW1lc3BhY2Uge307XG4iLmZvcm1hdChuYW1lc3BhY2UpKQorICAgIG91dEZp
bGUud3JpdGUoIlxuIikKKworICAgIGZvciBsaW5lIGluIGluY2x1ZGVUZW1wRmlsZToKKyAgICAg
ICAgaWYgbGluZS5zdHJpcCgpID09ICIjaWYgMCAvLyBERUNMQVJBVElPTiBMSVNUIFNUQVJUIjoK
KyAgICAgICAgICAgIGJyZWFrCisKKyAgICBmb3IgbGluZSBpbiBpbmNsdWRlVGVtcEZpbGU6Cisg
ICAgICAgIGlmIGxpbmUuc3RyaXAoKSA9PSAiI2VuZGlmIC8vIERFQ0xBUkFUSU9OIExJU1QgRU5E
IjoKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIG91dEZpbGUud3JpdGUobGluZSkKKworICAg
IG91dEZpbGUud3JpdGUoIlxuIikKKworICAgIGV4dHJhRm9yd2FyZERlY2xhcmF0aW9ucyA9IGV4
dHJhRW50cmllc1siZm9yd2FyZERlY2xhcmF0aW9ucyJdIGlmIGV4dHJhRW50cmllcyBhbmQgImZv
cndhcmREZWNsYXJhdGlvbnMiIGluIGV4dHJhRW50cmllcyBlbHNlIFtdCisgICAgZm9yIGZvcndh
cmREZWNsYXJhdGlvbiBpbiBleHRyYUZvcndhcmREZWNsYXJhdGlvbnM6CisgICAgICAgIGlmICJu
YW1lc3BhY2UiIGluIGZvcndhcmREZWNsYXJhdGlvbjoKKyAgICAgICAgICAgIG91dEZpbGUud3Jp
dGUoIm5hbWVzcGFjZSB7fSB7e1xuIi5mb3JtYXQoZm9yd2FyZERlY2xhcmF0aW9uWyJuYW1lc3Bh
Y2UiXSkpCisgICAgICAgIGZvciBkZWNsYXJhdGlvbiBpbiBmb3J3YXJkRGVjbGFyYXRpb25bImRl
Y2xhcmF0aW9ucyJdOgorICAgICAgICAgICAgb3V0RmlsZS53cml0ZSgie31cbiIuZm9ybWF0KGRl
Y2xhcmF0aW9uKSkKKyAgICAgICAgaWYgIm5hbWVzcGFjZSIgaW4gZm9yd2FyZERlY2xhcmF0aW9u
OgorICAgICAgICAgICAgb3V0RmlsZS53cml0ZSgifX0gLy8gbmFtZXNwYWNlIHt9XG5cbiIuZm9y
bWF0KGZvcndhcmREZWNsYXJhdGlvblsibmFtZXNwYWNlIl0pKQorCisgICAgb3V0RmlsZS53cml0
ZSgibmFtZXNwYWNlIEpTQyB7XG4iKQorCisgICAgZnVuY3Rpb25SZWZzID0gW10KKworICAgIGZ1
bmN0aW9uc1NlZW4gPSBzZXQoKQorCisgICAgc2xvd1BhdGhNYXJrZXJMaW5lcyA9IGNvbW1hbmRz
LmdldHN0YXR1c291dHB1dCgiZ3JlcCAtZSB7fSAtZSB7fSB7fSIuZm9ybWF0KHNsb3dQYXRoTWFy
a2VyLCB3YXNtU2xvd1BhdGhNYXJrZXIsIGluY2x1ZGVQcmVwcm9jZXNzZWRUZW1wKSkKKworICAg
IGZvciBsaW5lIGluIHNsb3dQYXRoTWFya2VyTGluZXNbMV0uc3BsaXQoJ1xuJyk6CisgICAgICAg
IHBvcyA9IGxpbmUuZmluZChzbG93UGF0aE1hcmtlcikKKyAgICAgICAgaWYgcG9zICE9IC0xOgor
ICAgICAgICAgICAgcmVTdHJpbmcgPSBjcmVhdGVSRUZyb21TdHJpbmcobGluZSkKKyAgICAgICAg
ICAgIHJlU3RyaW5nID0gcmVTdHJpbmcucmVwbGFjZShzbG93UGF0aE1hcmtlciwgIihbQS1aYS16
X11cdyopIikKKyAgICAgICAgICAgIGV4dHJhY3RTbG93UGF0aFJFID0gcmUuY29tcGlsZShyZVN0
cmluZykKKworICAgIHN5bWJvbFJlc3VsdCA9IGNvbW1hbmRzLmdldHN0YXR1c291dHB1dCgiZ3Jl
cCAtLWZpeGVkLXN0cmluZ3Mge30ge30iLmZvcm1hdChncmVwRXhwckZvclRhZ3MsIGluY2x1ZGVQ
cmVwcm9jZXNzZWRUZW1wKSkKKyAgICBmb3IgbGluZSBpbiBzeW1ib2xSZXN1bHRbMV0uc3BsaXQo
J1xuJyk6CisgICAgICAgIHRhZ1R5cGUsIGZ1bmN0aW9uLCBkZWNsYXJlID0gZXh0cmFjdEpJVENh
bGxzRnJvbVByZXByb2Nlc3NlZERlY2xhcmF0aW9uKGxpbmUpCisgICAgICAgIGlmIGZ1bmN0aW9u
OgorICAgICAgICAgICAgaWYgZnVuY3Rpb24gbm90IGluIGZ1bmN0aW9uc1NlZW46CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb25zU2Vlbi5hZGQoZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgaWYg
dGFnVHlwZSA9PSAiSlNDX0hPU1RfQ0FMTCI6CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
UmVmcy5hcHBlbmQoIih2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oe30pIi5m
b3JtYXQoZnVuY3Rpb24pKQorIyAgICAgICAgICAgICAgICBpZiB0YWdUeXBlID09ICJTTE9XX1BB
VEhfREVDTCIgb3IgdGFnVHlwZSA9PSAiV0FTTV9TTE9XX1BBVEhfREVDTCI6CisjICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvblJlZnMuYXBwZW5kKCIodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KHt9KSIuZm9ybWF0KGZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvblJlZnMuYXBwZW5kKCJyZWludGVycHJldF9j
YXN0PHZvaWQqPih7fSkiLmZvcm1hdChmdW5jdGlvbikpCisKKyAgICBpZiBleHRyYUVudHJpZXMg
YW5kICJlbnRyaWVzIiBpbiBleHRyYUVudHJpZXM6CisgICAgICAgIGZvciBlbnRyeSBpbiBleHRy
YUVudHJpZXNbImVudHJpZXMiXToKKyAgICAgICAgICAgIGZ1bmN0aW9uUmVmcy5hcHBlbmQoZW50
cnkpCisKKyAgICBvdXRGaWxlLndyaXRlKCJcbiIpCisKKyAgICB0YWJsZVNpemUgPSBsZW4oZnVu
Y3Rpb25SZWZzKQorICAgIG91dEZpbGUud3JpdGUoInZvaWQqIGppdEVudHJ5cG9pbnRXaGl0ZWxp
c3Rbe31dID0ge3siLmZvcm1hdCh0YWJsZVNpemUpKQorICAgIGZ1bmN0aW9uQ291bnQgPSAwCisg
ICAgZm9yIGZ1bmN0aW9uUmVmIGluIGZ1bmN0aW9uUmVmczoKKyAgICAgICAgaWYgZnVuY3Rpb25D
b3VudCAlIGZ1bmN0aW9uc0xpc3RlZFBlckxpbmUgPT0gMDoKKyAgICAgICAgICAgIG91dEZpbGUu
d3JpdGUoIlxuICAgIikKKyAgICAgICAgb3V0RmlsZS53cml0ZSgiIHt9Ii5mb3JtYXQoZnVuY3Rp
b25SZWYpKQorICAgICAgICBmdW5jdGlvbkNvdW50ID0gZnVuY3Rpb25Db3VudCArIDEKKyAgICAg
ICAgaWYgZnVuY3Rpb25Db3VudCA8IHRhYmxlU2l6ZToKKyAgICAgICAgICAgIG91dEZpbGUud3Jp
dGUoIiwiKQorCisgICAgb3V0RmlsZS53cml0ZSgiXG59O1xuIikKKworICAgIG91dEZpbGUud3Jp
dGUoIlxuIikKKyAgICBvdXRGaWxlLndyaXRlKCJ2b2lkIHBvcHVsYXRlSklUV2hpdGVsaXN0KClc
biIpCisgICAgb3V0RmlsZS53cml0ZSgie1xuIikKKyAgICBvdXRGaWxlLndyaXRlKCIgICAgSklU
RGVzdGluYXRpb25XaGl0ZWxpc3QmIGRlc3RpbmF0aW9uV2hpdGVsaXN0ID0gSklURGVzdGluYXRp
b25XaGl0ZWxpc3Q6Omluc3RhbmNlKCk7XG4iKQorICAgIG91dEZpbGUud3JpdGUoIlxuIikKKyAg
ICBvdXRGaWxlLndyaXRlKCIgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHt9OyBpKyspIHt7
XG4iLmZvcm1hdCh0YWJsZVNpemUpKQorICAgIG91dEZpbGUud3JpdGUoIiAgICAgICAgZGVzdGlu
YXRpb25XaGl0ZWxpc3QuYWRkRW50cnkoaml0RW50cnlwb2ludFdoaXRlbGlzdFtpXSk7XG4iKQor
ICAgIG91dEZpbGUud3JpdGUoIiAgICB9XG4iKQorCisgICAgaWYgZXh0cmFFbnRyaWVzIGFuZCAi
ZnJpZW5kRW50cmllcyIgaW4gZXh0cmFFbnRyaWVzOgorICAgICAgICBvdXRGaWxlLndyaXRlKCJc
biIpCisgICAgICAgIG91dEZpbGUud3JpdGUoIiAgICAvLyBGcmllbmRzIGVudHJpZXMuXG4iKQor
ICAgICAgICBmb3IgZnJpZW5kRW50cnkgaW4gZXh0cmFFbnRyaWVzWyJmcmllbmRFbnRyaWVzIl06
CisgICAgICAgICAgICBvdXRGaWxlLndyaXRlKCIgICAgZGVzdGluYXRpb25XaGl0ZWxpc3QuYWRk
RW50cnkoe30pO1xuIi5mb3JtYXQoZnJpZW5kRW50cnkpKQorCisgICAgb3V0RmlsZS53cml0ZSgi
fVxuIikKKworICAgIGppdFdoaXRlbGlzdEZpbGUud3JpdGUod2hpdGVMaXN0Rm9vdGVyKQorCitp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50
UGFyc2VyKGRlc2NyaXB0aW9uPSJFeHRyYWN0IGFuZCBjb21waWxlIEpJVCBFbnRyeSBXaGl0ZWxp
c3QiKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgicnVuTW9kZSIsIGNob2ljZXM9WyJnYXRo
ZXJJbmNsdWRlcyIsICJjcmVhdGVXaGl0ZWxpc3QiXSwgaGVscD0iU2V0IHRoZSBydW4gbW9kZSBv
ZiB0aGUgc2NyaXB0IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWNvbmZpZ0pTT04iLCBk
ZXN0PSJjb25maWdKU09OIiwgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0iU3BlY2lmeSB0aGUgSlNPTiBj
b25maWd1cmF0aW9uIGZpbGUuIikKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisK
KyAgICBydW5Nb2RlID0gYXJncy5ydW5Nb2RlCisKKyAgICBjb25maWcgPSBqc29uLmxvYWQob3Bl
bk9yRXhpdChhcmdzLmNvbmZpZ0pTT04sICJyIikpCisKKyAgICBpZiBydW5Nb2RlID09ICJnYXRo
ZXJJbmNsdWRlcyI6CisgICAgICAgIHByaW50ICJHYXRoZXIgSW5jbHVkZXMgU3RhcnQ6IHt9Ii5m
b3JtYXQodGltZS5hc2N0aW1lKCkpCisKKyAgICAgICAgaWYgImRpcmVjdG9yeVNlYXJjaExpc3Qi
IG5vdCBpbiBjb25maWcgb3IgImluY2x1ZGVzVGVtcCIgbm90IGluIGNvbmZpZzoKKyAgICAgICAg
ICAgIHBhcnNlci5lcnJvcigiY29uZmlndXJhdGlvbiBKU09OIGluY29ycmVjdCIpICAgIyBXZSBz
aG91bGQgdmFsaWRhdGUgdGhlIGNvbmZpZyBmaWxlCisKKyAgICAgICAgcHJpbnQgIkdhdGhlciBJ
bmNsdWRlcyBNb2RlIgorICAgICAgICBzb3VyY2VEaXJlY3RvcnkgPSBjb25maWdbImRpcmVjdG9y
eVNlYXJjaExpc3QiXVswXQorICAgICAgICBpbmNsdWRlVGVtcFBhdGggPSBjb25maWdbImluY2x1
ZGVzVGVtcCJdCisKKyAgICAgICAgcHJpbnQgIlNvdXJjZURpcmVjdG9yeToge30sIGluY2x1ZGVU
ZW1wUGF0aDoge31cbiIuZm9ybWF0KHNvdXJjZURpcmVjdG9yeSwgaW5jbHVkZVRlbXBQYXRoKQor
CisgICAgICAgIGluY2x1ZGVUZW1wRmlsZSA9IG9wZW5PckV4aXQoaW5jbHVkZVRlbXBQYXRoLCAi
dyIpCisKKyAgICAgICAgY3JlYXRlSW5jbHVkZVRlbXBGaWxlKHNvdXJjZURpcmVjdG9yeSwgaW5j
bHVkZVRlbXBGaWxlKQorCisgICAgICAgIGluY2x1ZGVUZW1wRmlsZS5jbG9zZSgpCisKKyAgICAg
ICAgcHJpbnQgIkdhdGhlciBJbmNsdWRlcyBFbmQ6IHt9Ii5mb3JtYXQodGltZS5hc2N0aW1lKCkp
CisKKyAgICBlbGlmIHJ1bk1vZGUgPT0gImNyZWF0ZVdoaXRlbGlzdCI6CisgICAgICAgIHByaW50
ICJDcmVhdGUgV2hpdGVsaXN0IFN0YXJ0OiB7fSIuZm9ybWF0KHRpbWUuYXNjdGltZSgpKQorICAg
ICAgICBpZiAiaW5jbHVkZXNUZW1wIiBub3QgaW4gY29uZmlnIG9yICJwcmVwcm9jZXNzZWRUZW1w
IiBub3QgaW4gY29uZmlnIG9yICJvdXRwdXRGaWxlIiBub3QgaW4gY29uZmlnOgorICAgICAgICAg
ICAgcGFyc2VyLmVycm9yKCJjcmVhdGVXaGl0ZWxpc3QgLS1pbmNsdWRlVGVtcD08aW5jbHVkZVRl
bXAuY3BwPiAtLWluY2x1ZGVQcmVwcm9jZXNzZWQ9PGluY2x1ZGVUZW1wLmk+IC0taml0V2hpdGVs
aXN0PTxKSVRXaGl0ZWxpc3RFbnRyaWVzLmNwcD4iKQorCisgICAgICAgIHByaW50ICJDcmVhdGUg
SklUV2hpdGVMaXN0RW50cmllcy5jcHAgbW9kZSIKKyAgICAgICAgaW5jbHVkZVRlbXBQYXRoID0g
Y29uZmlnWyJpbmNsdWRlc1RlbXAiXQorICAgICAgICBpbmNsdWRlUHJlcHJvY2Vzc2VkVGVtcFBh
dGggPSBjb25maWdbInByZXByb2Nlc3NlZFRlbXAiXQorICAgICAgICBpZiAiZXh0cmFFbnRyaWVz
IiBpbiBjb25maWc6CisgICAgICAgICAgICBleHRyYUVudHJpZXMgPSBjb25maWdbImV4dHJhRW50
cmllcyJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHRyYUVudHJpZXMgPSBOb25lCisg
ICAgICAgIGppdFdoaXRlbGlzdFBhdGggPSBjb25maWdbIm91dHB1dEZpbGUiXQorCisgICAgICAg
IGppdFdoaXRlbGlzdFBhdGhUZW1wID0gaml0V2hpdGVsaXN0UGF0aCArICIudG1wIgorCisgICAg
ICAgIHByaW50ICJpbmNsdWRlVGVtcDoge30sIGluY2x1ZGVQcmVwcm9jZXNzZWRUZW1wOiB7fSwg
aml0V2hpdGVsaXN0OiB7fVxuIi5mb3JtYXQoaW5jbHVkZVRlbXBQYXRoLCBpbmNsdWRlUHJlcHJv
Y2Vzc2VkVGVtcFBhdGgsIGppdFdoaXRlbGlzdFBhdGhUZW1wKQorCisgICAgICAgIGluY2x1ZGVU
ZW1wRmlsZSA9IG9wZW5PckV4aXQoaW5jbHVkZVRlbXBQYXRoLCAiciIpCisgICAgICAgIGppdFdo
aXRlbGlzdEZpbGUgPSBvcGVuT3JFeGl0KGppdFdoaXRlbGlzdFBhdGhUZW1wLCAidyIpCisKKyAg
ICAgICAgY3JlYXRlV2hpdGVsaXN0Q1BQRmlsZShpbmNsdWRlVGVtcEZpbGUsIGluY2x1ZGVQcmVw
cm9jZXNzZWRUZW1wUGF0aCwgZXh0cmFFbnRyaWVzLCBqaXRXaGl0ZWxpc3RGaWxlKQorCisgICAg
ICAgIGluY2x1ZGVUZW1wRmlsZS5jbG9zZSgpCisgICAgICAgIGppdFdoaXRlbGlzdEZpbGUuY2xv
c2UoKQorCisgICAgICAgIGNvbXBhcmVUb0V4aXN0aW5nID0gY29tbWFuZHMuZ2V0c3RhdHVzb3V0
cHV0KCJkaWZmIC1xIC0tdW5pZGlyZWN0aW9uYWwtbmV3LWZpbGUge30ge30iLmZvcm1hdChqaXRX
aGl0ZWxpc3RQYXRoLCBqaXRXaGl0ZWxpc3RQYXRoVGVtcCkpCisgICAgICAgIGlmIGNvbXBhcmVU
b0V4aXN0aW5nWzBdIGlzIG5vdCAwOgorICAgICAgICAgICAgb3MucmVuYW1lKGppdFdoaXRlbGlz
dFBhdGhUZW1wLCBqaXRXaGl0ZWxpc3RQYXRoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
b3MucmVtb3ZlKGppdFdoaXRlbGlzdFBhdGhUZW1wKQorCisgICAgICAgIG9zLnJlbW92ZShpbmNs
dWRlVGVtcFBhdGgpCisgICAgICAgIG9zLnJlbW92ZShpbmNsdWRlUHJlcHJvY2Vzc2VkVGVtcFBh
dGgpCisKKyAgICAgICAgcHJpbnQgIkNyZWF0ZSBXaGl0ZWxpc3QgRW5kOiB7fSIuZm9ybWF0KHRp
bWUuYXNjdGltZSgpKQorICAgIGVsc2U6CisgICAgICAgIHByaW50ICJVbmtub3duIG1vZGUhIgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtaml0RGVzdGluYXRp
b25XaGl0ZUxpc3Quc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvZ2VuZXJhdGUtaml0RGVzdGluYXRpb25XaGl0ZUxpc3Quc2gJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtaml0RGVzdGluYXRpb25XaGl0
ZUxpc3Quc2gJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorIyEvYmluL3NoCisKK3Nl
dCAtZQorCitBUkdTPSgiJEAiKQorCitta2RpciAtcCAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlIgorY2QgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZSIKKworL2Jpbi9sbiAtc2ZoICIke1NSQ1JPT1R9
IiBKYXZhU2NyaXB0Q29yZQorZXhwb3J0IEphdmFTY3JpcHRDb3JlPSJKYXZhU2NyaXB0Q29yZSIK
K2V4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9Ii4uLy4uIgorCittYWtlIC1mICJKYXZhU2NyaXB0
Q29yZS9KSVREZXN0aW5hdGlvbldoaXRlbGlzdC5tYWtlIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAt
biBody5uY3B1YCAiJHtBUkdTW0BdfSIKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWppdERlc3RpbmF0aW9uV2hpdGVMaXN0LnNoCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BUk02NEFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDg4LDEyICsyNDg4LDI4IEBAIHB1YmxpYzoKIAogICAgIEFzc2VtYmxlckxhYmVsIGxh
YmVsKCkKICAgICB7Ci0gICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxh
YmVsKCk7Ci0gICAgICAgIHdoaWxlIChVTkxJS0VMWShzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5t
X29mZnNldCkgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkpIHsKKyNpZiBFTkFCTEUo
SklUX0NBR0UpCisgICAgICAgIHdoaWxlICgoY3VycmVudE9mZnNldCgpICYgMHhmKSAhPSAwIHx8
IHN0YXRpY19jYXN0PGludD4oY3VycmVudE9mZnNldCgpKSA8IG1faW5kZXhPZlRhaWxPZkxhc3RX
YXRjaHBvaW50KQorICAgICAgICAgICAgbm9wKCk7CisjZWxzZQorICAgICAgICB3aGlsZSAoVU5M
SUtFTFkoc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50T2Zmc2V0KCkpIDwgbV9pbmRleE9mVGFpbE9m
TGFzdFdhdGNocG9pbnQpKQorICAgICAgICAgICAgbm9wKCk7CisjZW5kaWYKKworICAgICAgICBy
ZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKKyAgICB9CisKKyAgICB2b2lkIG5vcEFsaWduMTYoKQor
ICAgIHsKKyAgICAgICAgd2hpbGUgKCFtX2J1ZmZlci5pc0FsaWduZWQoMTYpKQorICAgICAgICAg
ICAgbm9wKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dW5zaWduZWQgYWxpZ24+CisgICAgdm9p
ZCBub3BBbGlnbkluc3RydWN0aW9uVG9PZmZzZXQoKQorICAgIHsKKyAgICAgICAgd2hpbGUgKCFt
X2J1ZmZlci5pc0FsaWduZWRUb09mZnNldChhbGlnbikpCiAgICAgICAgICAgICBub3AoKTsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxp
Z25tZW50KQpAQCAtMjc5Niw3ICsyODEyLDcgQEAgcHVibGljOgogICAgICAgICBjYWNoZUZsdXNo
KHdoZXJlLCBzaXplb2YoaW50KSk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgZGVidWdPZmZzZXQo
KSB7IHJldHVybiBtX2J1ZmZlci5kZWJ1Z09mZnNldCgpOyB9CisgICAgdW5zaWduZWQgY3VycmVu
dE9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmN1cnJlbnRPZmZzZXQoKTsgfQogCiAjaWYgT1Mo
TElOVVgpICYmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQogICAgIHN0YXRpYyBpbmxpbmUgdm9p
ZCBsaW51eFBhZ2VGbHVzaCh1aW50cHRyX3QgYmVnaW4sIHVpbnRwdHJfdCBlbmQpCkBAIC0yODQ0
LDEyICsyODYwLDIwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNhbkNvbXBhY3QoSnVt
cFR5cGUganVtcFR5cGUpCiAgICAgeworI2lmIDAKKyAgICAgICAgcmV0dXJuIChqdW1wVHlwZSA9
PSBKdW1wTm9Db25kaXRpb24pIHx8IC8qIChqdW1wVHlwZSA9PSBKdW1wQ29uZGl0aW9uKSB8fCAq
LyAoanVtcFR5cGUgPT0gSnVtcENvbXBhcmVBbmRCcmFuY2gpIHx8IChqdW1wVHlwZSA9PSBKdW1w
VGVzdEJpdCk7CisjZWxzZQogICAgICAgICAvLyBGaXhlZCBqdW1wcyBjYW5ub3QgYmUgY29tcGFj
dGVkCiAgICAgICAgIHJldHVybiAoanVtcFR5cGUgPT0gSnVtcE5vQ29uZGl0aW9uKSB8fCAoanVt
cFR5cGUgPT0gSnVtcENvbmRpdGlvbikgfHwgKGp1bXBUeXBlID09IEp1bXBDb21wYXJlQW5kQnJh
bmNoKSB8fCAoanVtcFR5cGUgPT0gSnVtcFRlc3RCaXQpOworI2VuZGlmCiAgICAgfQogCiAgICAg
c3RhdGljIEp1bXBMaW5rVHlwZSBjb21wdXRlSnVtcFR5cGUoSnVtcFR5cGUganVtcFR5cGUsIGNv
bnN0IHVpbnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIHRvKQogICAgIHsKKyNpZiAxCisgICAg
ICAgIFVOVVNFRF9QQVJBTShmcm9tKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRvKTsKKyNlbmRp
ZgogICAgICAgICBzd2l0Y2ggKGp1bXBUeXBlKSB7CiAgICAgICAgIGNhc2UgSnVtcEZpeGVkOgog
ICAgICAgICAgICAgcmV0dXJuIExpbmtJbnZhbGlkOwpAQCAtMjg2NiwzMSArMjg5MCwzNiBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgSnVtcENvbmRpdGlvbjogewogICAgICAgICAgICAgQVNTRVJU
KGlzNEJ5dGVBbGlnbmVkKGZyb20pKTsKICAgICAgICAgICAgIEFTU0VSVChpczRCeXRlQWxpZ25l
ZCh0bykpOworI2lmIDAKICAgICAgICAgICAgIGludHB0cl90IHJlbGF0aXZlID0gcmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4odG8pIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20p
KTsKIAogICAgICAgICAgICAgaWYgKGlzSW50PDIxPihyZWxhdGl2ZSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIExpbmtKdW1wQ29uZGl0aW9uRGlyZWN0OworI2VuZGlmCiAKICAgICAgICAgICAg
IHJldHVybiBMaW5rSnVtcENvbmRpdGlvbjsKICAgICAgICAgICAgIH0KICAgICAgICAgY2FzZSBK
dW1wQ29tcGFyZUFuZEJyYW5jaDogIHsKICAgICAgICAgICAgIEFTU0VSVChpczRCeXRlQWxpZ25l
ZChmcm9tKSk7CiAgICAgICAgICAgICBBU1NFUlQoaXM0Qnl0ZUFsaWduZWQodG8pKTsKKyNpZiAw
CiAgICAgICAgICAgICBpbnRwdHJfdCByZWxhdGl2ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KHRvKSAtIChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihmcm9tKSk7CiAKICAgICAgICAg
ICAgIGlmIChpc0ludDwyMT4ocmVsYXRpdmUpKQogICAgICAgICAgICAgICAgIHJldHVybiBMaW5r
SnVtcENvbXBhcmVBbmRCcmFuY2hEaXJlY3Q7CisjZW5kaWYKIAogICAgICAgICAgICAgcmV0dXJu
IExpbmtKdW1wQ29tcGFyZUFuZEJyYW5jaDsKICAgICAgICAgfQogICAgICAgICBjYXNlIEp1bXBU
ZXN0Qml0OiAgIHsKICAgICAgICAgICAgIEFTU0VSVChpczRCeXRlQWxpZ25lZChmcm9tKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoaXM0Qnl0ZUFsaWduZWQodG8pKTsKKyNpZiAwCiAgICAgICAgICAg
ICBpbnRwdHJfdCByZWxhdGl2ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIChy
ZWludGVycHJldF9jYXN0PGludHB0cl90Pihmcm9tKSk7CiAKICAgICAgICAgICAgIGlmIChpc0lu
dDwxND4ocmVsYXRpdmUpKQogICAgICAgICAgICAgICAgIHJldHVybiBMaW5rSnVtcFRlc3RCaXRE
aXJlY3Q7Ci0KKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIExpbmtKdW1wVGVzdEJpdDsKICAg
ICAgICAgfQogICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BUk02NEVBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0FSTTY0RUFzc2VtYmxlci5oCShyZXZpc2lvbiAyNTc5MjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0RUFzc2VtYmxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoTlVNQkVSX09G
X0FERFJFU1NfRU5DT0RJTkdfSU5TVFJVQ1RJT05TID4gMykKICAgICAgICAgICAgIGJ1ZmZlclsz
XSA9IG1vdmVXaWRlSW1lZGlhdGUoRGF0YXNpemVfNjQsIE1vdmVXaWRlT3BfSywgMywgZ2V0SGFs
ZndvcmQodmFsdWUsIDMpLCByZCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011
bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPihhZGRyZXNzKSA9PSBhZGRyZXNzKTsKLSAgICAgICAg
cGVyZm9ybUpJVE1lbWNweShhZGRyZXNzLCBidWZmZXIsIHNpemVvZihpbnQpICogNCk7CisgICAg
ICAgIHBlcmZvcm1KSVRNZW1jcHkoYWRkcmVzcywgYnVmZmVyLCBzaXplb2YoaW50KSAqIE5VTUJF
Ul9PRl9BRERSRVNTX0VOQ09ESU5HX0lOU1RSVUNUSU9OUyk7CiAKICAgICAgICAgaWYgKGZsdXNo
KQogICAgICAgICAgICAgY2FjaGVGbHVzaChhZGRyZXNzLCBzaXplb2YoaW50KSAqIDQpOwpAQCAt
MzY2LDcgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWFkUG9pbnRlcihyZWlu
dGVycHJldF9jYXN0PGludCo+KGZyb20pIC0gY2FsbEluc3RydWN0aW9uIC0gTlVNQkVSX09GX0FE
RFJFU1NfRU5DT0RJTkdfSU5TVFJVQ1RJT05TKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgc3RhdGljIGNvbnN0ZXhwciBwdHJkaWZmX3QgTUFYX1BPSU5URVJfQklUUyA9IDQ4
OworI2Vsc2UKICAgICBzdGF0aWMgY29uc3RleHByIHB0cmRpZmZfdCBNQVhfUE9JTlRFUl9CSVRT
ID0gNjQ7CisjZW5kaWYKICAgICBzdGF0aWMgY29uc3RleHByIHB0cmRpZmZfdCBCSVRTX0VOQ09E
RUFCTEVfUEVSX0lOU1RSVUNUSU9OID0gMTY7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBwdHJkaWZm
X3QgTlVNQkVSX09GX0FERFJFU1NfRU5DT0RJTkdfSU5TVFJVQ1RJT05TID0gTUFYX1BPSU5URVJf
QklUUyAvIEJJVFNfRU5DT0RFQUJMRV9QRVJfSU5TVFJVQ1RJT047CiB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkocmV2aXNp
b24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2Vt
Ymxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzU4LDcgKzIzNTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fZm9y
bWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KKyAgICB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0KCkgeyBy
ZXR1cm4gbV9mb3JtYXR0ZXIuY3VycmVudE9mZnNldCgpOyB9CiAKICNpZiBPUyhMSU5VWCkKICAg
ICBzdGF0aWMgaW5saW5lIHZvaWQgbGludXhQYWdlRmx1c2godWludHB0cl90IGJlZ2luLCB1aW50
cHRyX3QgZW5kKQpAQCAtMjkxMCw3ICsyOTEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBp
c0FsaWduZWQoaW50IGFsaWdubWVudCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNBbGlnbmVk
KGFsaWdubWVudCk7IH0KICAgICAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmRhdGEoKTsgfQogCi0gICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4g
bV9idWZmZXIuZGVidWdPZmZzZXQoKTsgfQorICAgICAgICB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0
KCkgeyByZXR1cm4gbV9idWZmZXIuY3VycmVudE9mZnNldCgpOyB9CiAKICAgICAgICAgQXNzZW1i
bGVyQnVmZmVyIG1fYnVmZmVyOwogICAgIH0gbV9mb3JtYXR0ZXI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0Myw3ICs2NDMs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtYXNtLT5pbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVy
cygpOwogCiAjaWYgRU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJT04pCi0g
ICAgICAgICAgICBtYXNtLT5jaGVja1JlZ2lzdGVyQWxsb2NhdGlvbkFnYWluc3RCcmFuY2hSYW5n
ZShtX2xhYmVsLm1fb2Zmc2V0LCBtYXNtLT5kZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgICAgIG1h
c20tPmNoZWNrUmVnaXN0ZXJBbGxvY2F0aW9uQWdhaW5zdEJyYW5jaFJhbmdlKG1fbGFiZWwubV9v
ZmZzZXQsIG1hc20tPmN1cnJlbnRPZmZzZXQoKSk7CiAjZW5kaWYKIAogI2lmIENQVShBUk1fVEhV
TUIyKQpAQCAtODU4LDcgKzg1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGIudGVtcGxh
dGUgZGF0YUxvY2F0aW9uPHB0cmRpZmZfdD4oKSAtIGEudGVtcGxhdGUgZGF0YUxvY2F0aW9uPHB0
cmRpZmZfdD4oKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJu
IG1fYXNzZW1ibGVyLmRlYnVnT2Zmc2V0KCk7IH0KKyAgICB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0
KCkgeyByZXR1cm4gbV9hc3NlbWJsZXIuY3VycmVudE9mZnNldCgpOyB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIGNhY2hlRmx1c2godm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2Vt
YmxlckJ1ZmZlci5oCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CiAgICAg
fTsKIAotI2lmIENQVShBUk02NEUpCisjaWYgQ1BVKEFSTTY0RSkgJiYgIUVOQUJMRShKSVRfQ0FH
RSkKICAgICBjbGFzcyBBUk02NEVIYXNoIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEFSTTY0RUhh
c2goKSA9IGRlZmF1bHQ7CkBAIC0xOTUsNiArMTk1LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuICEobV9pbmRleCAmIChhbGlnbm1lbnQgLSAxKSk7CiAgICAgICAgIH0K
IAorICAgICAgICBib29sIGlzQWxpZ25lZFRvT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbWFzayA9IDB4ZikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChtX2lu
ZGV4ICYgbWFzaykgPT0gb2Zmc2V0OworICAgICAgICB9CisKICNpZiAhQ1BVKEFSTTY0KQogICAg
ICAgICB2b2lkIHB1dEJ5dGVVbmNoZWNrZWQoaW50OF90IHZhbHVlKSB7IHB1dEludGVncmFsVW5j
aGVja2VkKHZhbHVlKTsgfQogICAgICAgICB2b2lkIHB1dEJ5dGUoaW50OF90IHZhbHVlKSB7IHB1
dEludGVncmFsKHZhbHVlKTsgfQpAQCAtMjI3LDcgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIEFzc2VtYmxlckxhYmVsKG1faW5kZXgpOwogICAgICAgICB9CiAK
LSAgICAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2luZGV4OyB9CisgICAg
ICAgIHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQoKSB7IHJldHVybiBtX2luZGV4OyB9CiAKICAgICAg
ICAgQXNzZW1ibGVyRGF0YSYmIHJlbGVhc2VBc3NlbWJsZXJEYXRhKCkgeyByZXR1cm4gV1RGTW92
ZShtX3N0b3JhZ2UpOyB9CiAKQEAgLTI4Myw3ICsyODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfTsKICNlbmRpZiAvLyAhQ1BVKEFSTTY0KQogCi0jaWYgQ1BVKEFSTTY0RSkKKyNpZiBD
UFUoQVJNNjRFKSAmJiAhRU5BQkxFKEpJVF9DQUdFKQogICAgICAgICBBUk02NEVIYXNoIGhhc2go
KSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KICNlbmRpZgogCkBAIC0zMDcsNyArMzEyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICNpZiBDUFUoQVJNNjQpCiAgICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZih2YWx1ZSkgPT0gNCwgIiIpOwotI2lmIENQVShBUk02NEUpCisj
aWYgQ1BVKEFSTTY0RSkgJiYgIUVOQUJMRShKSVRfQ0FHRSkKICAgICAgICAgICAgIG1faGFzaC51
cGRhdGUodmFsdWUpOwogI2VuZGlmCiAjZW5kaWYKQEAgLTMzNCw3ICszMzksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBBc3NlbWJsZXJEYXRhIG1fc3RvcmFnZTsKICAgICAgICAgdW5z
aWduZWQgbV9pbmRleDsKLSNpZiBDUFUoQVJNNjRFKQorI2lmIENQVShBUk02NEUpICYmICFFTkFC
TEUoSklUX0NBR0UpCiAgICAgICAgIEFSTTY0RUhhc2ggbV9oYXNoOwogI2VuZGlmCiAgICAgfTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNw
cAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgTGlu
a0J1ZmZlcjo6Y29weUNvbXBhY3RBbmRMaW5rQ29kZSgKICAgICB1aW50OF90KiBpbkRhdGEgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2Fzc2VtYmxlclN0b3JhZ2UuYnVmZmVyKCkpOwog
CiAgICAgdWludDhfdCogY29kZU91dERhdGEgPSBtX2NvZGUuZGF0YUxvY2F0aW9uPHVpbnQ4X3Qq
PigpOwotI2lmIENQVShBUk02NEUpICYmIEVOQUJMRShGQVNUX0pJVF9QRVJNSVNTSU9OUykKKyNp
ZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoRkFTVF9KSVRfUEVSTUlTU0lPTlMpICYmICFFTkFCTEUo
SklUX0NBR0UpCiAgICAgY29uc3QgdWludDMyX3QgZXhwZWN0ZWRGaW5hbEhhc2ggPSBtYWNyb0Fz
c2VtYmxlci5tX2Fzc2VtYmxlci5idWZmZXIoKS5oYXNoKCkuZmluYWxIYXNoKCk7CiAgICAgQVJN
NjRFSGFzaCB2ZXJpZnlVbmNvbXBhY3RlZEhhc2g7CiAgICAgdWludDhfdCogb3V0RGF0YSA9IGNv
ZGVPdXREYXRhOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgTGlua0J1ZmZlcjo6Y29weUNvbXBh
Y3RBbmRMaW5rQ29kZSgKICAgICBpbnQgd3JpdGVQdHIgPSAwOwogICAgIHVuc2lnbmVkIGp1bXBD
b3VudCA9IGp1bXBzVG9MaW5rLnNpemUoKTsKIAotI2lmIENQVShBUk02NEUpICYmIEVOQUJMRShG
QVNUX0pJVF9QRVJNSVNTSU9OUykKKyNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoRkFTVF9KSVRf
UEVSTUlTU0lPTlMpICYmICFFTkFCTEUoSklUX0NBR0UpCiAgICAgb3NfdGhyZWFkX3NlbGZfcmVz
dHJpY3Rfcnd4X3RvX3J3KCk7CiAjZW5kaWYKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgTGlu
a0J1ZmZlcjo6Y29weUNvbXBhY3RBbmRMaW5rQ29kZSgKICAgICAgICAgICAgIEFTU0VSVCghKHdy
aXRlUHRyICUgMikpOwogICAgICAgICAgICAgd2hpbGUgKGNvcHlTb3VyY2UgIT0gY29weUVuZCkg
ewogICAgICAgICAgICAgICAgIEluc3RydWN0aW9uVHlwZSBpbnNuID0gKmNvcHlTb3VyY2UrKzsK
LSNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoRkFTVF9KSVRfUEVSTUlTU0lPTlMpCisjaWYgQ1BV
KEFSTTY0RSkgJiYgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKSAmJiAhRU5BQkxFKEpJVF9D
QUdFKQogICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEluc3RydWN0aW9uVHlw
ZSkgPT0gNCwgIiIpOwogICAgICAgICAgICAgICAgIHZlcmlmeVVuY29tcGFjdGVkSGFzaC51cGRh
dGUoaW5zbik7CiAjZW5kaWYKQEAgLTIyOCwxNCArMjI4LDE0IEBAIHZvaWQgTGlua0J1ZmZlcjo6
Y29weUNvbXBhY3RBbmRMaW5rQ29kZSgKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGJ5dGVzOyBpICs9IHNpemVvZihJbnN0cnVjdGlvblR5cGUpKSB7CiAgICAgICAgICAgICBJbnN0
cnVjdGlvblR5cGUgaW5zbiA9ICpzcmMrKzsKLSNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoRkFT
VF9KSVRfUEVSTUlTU0lPTlMpCisjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKEZBU1RfSklUX1BF
Uk1JU1NJT05TKSAmJiAhRU5BQkxFKEpJVF9DQUdFKQogICAgICAgICAgICAgdmVyaWZ5VW5jb21w
YWN0ZWRIYXNoLnVwZGF0ZShpbnNuKTsKICNlbmRpZgogICAgICAgICAgICAgKmRzdCsrID0gaW5z
bjsKICAgICAgICAgfQogICAgIH0KIAotI2lmIENQVShBUk02NEUpICYmIEVOQUJMRShGQVNUX0pJ
VF9QRVJNSVNTSU9OUykKKyNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoRkFTVF9KSVRfUEVSTUlT
U0lPTlMpICYmICFFTkFCTEUoSklUX0NBR0UpCiAgICAgaWYgKHZlcmlmeVVuY29tcGFjdGVkSGFz
aC5maW5hbEhhc2goKSAhPSBleHBlY3RlZEZpbmFsSGFzaCkgewogICAgICAgICBkYXRhTG9nTG4o
Ikhhc2hlcyBkb24ndCBtYXRjaDogIiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4odmVyaWZ5VW5jb21wYWN0ZWRIYXNoLmZpbmFsSGFzaCgpKSkp
LCAiICIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KGV4cGVjdGVkRmluYWxIYXNoKSkpKTsKICAgICAgICAgZGF0YUxvZ0xuKCJDcmFzaGluZyEi
KTsKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIExpbmtCdWZmZXI6OmNvcHlDb21wYWN0QW5kTGlu
a0NvZGUoCiAjZW5kaWYKICAgICB9CiAKLSNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoRkFTVF9K
SVRfUEVSTUlTU0lPTlMpCisjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKEZBU1RfSklUX1BFUk1J
U1NJT05TKSAmJiAhRU5BQkxFKEpJVF9DQUdFKQogICAgIG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0
X3J3eF90b19yeCgpOwogI2VuZGlmCiAKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIExpbmtCdWZm
ZXI6OmNvcHlDb21wYWN0QW5kTGlua0NvZGUoCiAgICAgICAgIG1fZXhlY3V0YWJsZU1lbW9yeS0+
c2hyaW5rKG1fc2l6ZSk7CiAgICAgfQogCi0jaWYgIUNQVShBUk02NEUpIHx8ICFFTkFCTEUoRkFT
VF9KSVRfUEVSTUlTU0lPTlMpCisjaWYgIUNQVShBUk02NEUpIHx8ICFFTkFCTEUoRkFTVF9KSVRf
UEVSTUlTU0lPTlMpIHx8IEVOQUJMRShKSVRfQ0FHRSkKICAgICBBU1NFUlQoY29kZU91dERhdGEg
IT0gb3V0RGF0YSk7CiAgICAgcGVyZm9ybUpJVE1lbWNweShjb2RlT3V0RGF0YSwgb3V0RGF0YSwg
bV9zaXplKTsKICNlbHNlCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5
Q29tcGFjdEFuZExpbmtDb2RlKAogdm9pZCBMaW5rQnVmZmVyOjpsaW5rQ29kZShNYWNyb0Fzc2Vt
YmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9y
dCBlZmZvcnQpCiB7CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGVuZCBvZiB0aGUgbGFzdCBpbnZh
bGlkYXRpb24gcG9pbnQgZG9lcyBub3QgZXh0ZW5kIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBidWZm
ZXIuCi0gICAgbWFjcm9Bc3NlbWJsZXIubGFiZWwoKTsKKyAgICBtYWNyb0Fzc2VtYmxlci5sYWJl
bElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKIAogI2lmICFFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04p
CiAjaWYgZGVmaW5lZChBU1NFTUJMRVJfSEFTX0NPTlNUQU5UX1BPT0wpICYmIEFTU0VNQkxFUl9I
QVNfQ09OU1RBTlRfUE9PTApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9MaW5rQnVmZmVyLmgJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyArMjc3LDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPFB0clRhZyB0YWc+CiAgICAgQ29kZVB0cjx0YWc+IHRy
YW1wb2xpbmVBdChMYWJlbCBsYWJlbCkKICAgICB7Ci0gICAgICAgIHJldHVybiBDb2RlUHRyPHRh
Zz4oTWFjcm9Bc3NlbWJsZXI6OkFzc2VtYmxlclR5cGVfVDo6Z2V0UmVsb2NhdGVkQWRkcmVzcyhj
b2RlKCksIGFwcGx5T2Zmc2V0KGxhYmVsLm1fbGFiZWwpKSk7CisgICAgICAgIHJldHVybiBDb2Rl
UHRyPHRhZz4oTWFjcm9Bc3NlbWJsZXI6OmdldExpbmtlckFkZHJlc3M8dGFnPihjb2RlKCksIGFw
cGx5T2Zmc2V0KGxhYmVsLm1fbGFiZWwpKSk7CiAgICAgfQogCiAgICAgdm9pZCogZGVidWdBZGRy
ZXNzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01JUFNBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzE2LDcgKzcxNiw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmNvZGVTaXplKCk7CiAgICAgfQogCi0g
ICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5kZWJ1Z09mZnNldCgp
OyB9CisgICAgdW5zaWduZWQgY3VycmVudE9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmN1cnJl
bnRPZmZzZXQoKTsgfQogCiAgICAgLy8gQXNzZW1ibHkgaGVscGVycyBmb3IgbW92aW5nIGRhdGEg
YmV0d2VlbiBmcCBhbmQgcmVnaXN0ZXJzLgogICAgIHZvaWQgdm1vdihSZWdpc3RlcklEIHJkMSwg
UmVnaXN0ZXJJRCByZDIsIEZQUmVnaXN0ZXJJRCBybikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAkocmV2
aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDI0ICsyMzQsMjQgQEAgc3Rh
dGljX2Fzc2VydCghKFBST0JFX1NJWkVfUExVU19FWFRSQVMgJgogI2RlZmluZSBGUFJfT0ZGU0VU
KGZwcikgKFBST0JFX0NQVV8jI2ZwciMjX09GRlNFVCAtIFBST0JFX0NQVV9RMF9PRkZTRVQpCiAK
IHN0cnVjdCBJbmNvbWluZ1Byb2JlUmVjb3JkIHsKLSAgICBVQ1BVUmVnaXN0ZXIgeDI0OwotICAg
IFVDUFVSZWdpc3RlciB4MjU7CisgICAgVUNQVVJlZ2lzdGVyIHgxNjsKKyAgICBVQ1BVUmVnaXN0
ZXIgeDE3OwogICAgIFVDUFVSZWdpc3RlciB4MjY7CiAgICAgVUNQVVJlZ2lzdGVyIHgyNzsKICAg
ICBVQ1BVUmVnaXN0ZXIgeDI4OwogICAgIFVDUFVSZWdpc3RlciB4MzA7IC8vIGxyCiB9OwogCi0j
ZGVmaW5lIElOX1gyNF9PRkZTRVQgKDAgKiBHUFJFR19TSVpFKQotI2RlZmluZSBJTl9YMjVfT0ZG
U0VUICgxICogR1BSRUdfU0laRSkKKyNkZWZpbmUgSU5fWDE2X09GRlNFVCAoMCAqIEdQUkVHX1NJ
WkUpCisjZGVmaW5lIElOX1gxN19PRkZTRVQgKDEgKiBHUFJFR19TSVpFKQogI2RlZmluZSBJTl9Y
MjZfT0ZGU0VUICgyICogR1BSRUdfU0laRSkKICNkZWZpbmUgSU5fWDI3X09GRlNFVCAoMyAqIEdQ
UkVHX1NJWkUpCiAjZGVmaW5lIElOX1gyOF9PRkZTRVQgKDQgKiBHUFJFR19TSVpFKQogI2RlZmlu
ZSBJTl9YMzBfT0ZGU0VUICg1ICogR1BSRUdfU0laRSkKICNkZWZpbmUgSU5fU0laRSAgICAgICAo
NiAqIEdQUkVHX1NJWkUpCiAKLXN0YXRpY19hc3NlcnQoSU5fWDI0X09GRlNFVCA9PSBvZmZzZXRv
ZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjQpLCAiSU5fWDI0X09GRlNFVCBpcyBpbmNvcnJlY3Qi
KTsKLXN0YXRpY19hc3NlcnQoSU5fWDI1X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2Jl
UmVjb3JkLCB4MjUpLCAiSU5fWDI1X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3Nl
cnQoSU5fWDE2X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MTYpLCAi
SU5fWDE2X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKK3N0YXRpY19hc3NlcnQoSU5fWDE3X09GRlNF
VCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MTcpLCAiSU5fWDE3X09GRlNFVCBp
cyBpbmNvcnJlY3QiKTsKIHN0YXRpY19hc3NlcnQoSU5fWDI2X09GRlNFVCA9PSBvZmZzZXRvZihJ
bmNvbWluZ1Byb2JlUmVjb3JkLCB4MjYpLCAiSU5fWDI2X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsK
IHN0YXRpY19hc3NlcnQoSU5fWDI3X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVj
b3JkLCB4MjcpLCAiSU5fWDI3X09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKIHN0YXRpY19hc3NlcnQo
SU5fWDI4X09GRlNFVCA9PSBvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjgpLCAiSU5f
WDIyX09GRlNFVCBpcyBpbmNvcnJlY3QiKTsKQEAgLTMwMiwyOSArMzAyLDI5IEBAIHN0YXRpY19h
c3NlcnQoIShzaXplb2YoTFJSZXN0b3JhdGlvblJlY28KIGFzbSAoCiAgICAgIi50ZXh0IiAiXG4i
CiAgICAgIi5iYWxpZ24gMTYiICJcbiIKKyAgICAgCiAgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZSkgIlxuIgotICAgIEhJREVfU1lNQk9MKGN0aU1hc21Q
cm9iZVRyYW1wb2xpbmUpICJcbiIKICAgICBTWU1CT0xfU1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1w
b2xpbmUpICI6IiAiXG4iCiAKICAgICAvLyBNYWNyb0Fzc2VtYmxlckFSTTY0Ojpwcm9iZSgpIGhh
cyBhbHJlYWR5IGdlbmVyYXRlZCBjb2RlIHRvIHN0b3JlIHNvbWUgdmFsdWVzIGluIGFuCiAgICAg
Ly8gSW5jb21pbmdQcm9iZVJlY29yZC4gc3AgcG9pbnRzIHRvIHRoZSBJbmNvbWluZ1Byb2JlUmVj
b3JkLgogICAgIC8vCiAgICAgLy8gSW5jb21pbmcgcmVnaXN0ZXIgdmFsdWVzOgotICAgIC8vICAg
ICB4MjQ6IHByb2JlIGZ1bmN0aW9uCi0gICAgLy8gICAgIHgyNTogcHJvYmUgYXJnCi0gICAgLy8g
ICAgIHgyNjogc2NyYXRjaCwgd2FzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUKLSAgICAvLyAgICAg
eDI3OiBzY3JhdGNoCisgICAgLy8gICAgIHgxNjogc2NyYXRjaCwgd2FzIGN0aU1hc21Qcm9iZVRy
YW1wb2xpbmUKKyAgICAvLyAgICAgeDE3OiBzY3JhdGNoCisgICAgLy8gICAgIHgyNjogcHJvYmUg
ZnVuY3Rpb24KKyAgICAvLyAgICAgeDI3OiBwcm9iZSBhcmcKICAgICAvLyAgICAgeDI4OiBQcm9i
ZTo6ZXhlY3V0ZVByb2JlCiAgICAgLy8gICAgIHgzMDogcmV0dXJuIGFkZHJlc3MKIAotICAgICJt
b3YgICAgICAgeDI2LCBzcCIgIlxuIgotICAgICJtb3YgICAgICAgeDI3LCBzcCIgIlxuIgorICAg
ICJtb3YgICAgICAgeDE2LCBzcCIgIlxuIgorICAgICJtb3YgICAgICAgeDE3LCBzcCIgIlxuIgog
Ci0gICAgInN1YiAgICAgICB4MjcsIHgyNywgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJ
WkVfUExVU19FWFRSQVMgKyBPVVRfU0laRSkgIlxuIgotICAgICJiaWMgICAgICAgeDI3LCB4Mjcs
ICMweGYiICJcbiIgLy8gVGhlIEFSTSBFQUJJIHNwZWNpZmllcyB0aGF0IHRoZSBzdGFjayBuZWVk
cyB0byBiZSAxNiBieXRlIGFsaWduZWQuCi0gICAgIm1vdiAgICAgICBzcCwgeDI3IiAiXG4iIC8v
IFNldCB0aGUgc3AgdG8gcHJvdGVjdCB0aGUgUHJvYmU6OlN0YXRlIGZyb20gaW50ZXJydXB0cyBi
ZWZvcmUgd2UgaW5pdGlhbGl6ZSBpdC4KKyAgICAic3ViICAgICAgIHgxNywgeDE3LCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRV9QTFVTX0VYVFJBUyArIE9VVF9TSVpFKSAiXG4iCisg
ICAgImJpYyAgICAgICB4MTcsIHgxNywgIzB4ZiIgIlxuIiAvLyBUaGUgQVJNIEVBQkkgc3BlY2lm
aWVzIHRoYXQgdGhlIHN0YWNrIG5lZWRzIHRvIGJlIDE2IGJ5dGUgYWxpZ25lZC4KKyAgICAibW92
ICAgICAgIHNwLCB4MTciICJcbiIgLy8gU2V0IHRoZSBzcCB0byBwcm90ZWN0IHRoZSBQcm9iZTo6
U3RhdGUgZnJvbSBpbnRlcnJ1cHRzIGJlZm9yZSB3ZSBpbml0aWFsaXplIGl0LgogCi0gICAgInN0
cCAgICAgICB4MjQsIHgyNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVf
RlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9yZSB0aGUgcHJvYmUgaGFuZGxlciBmdW5j
dGlvbiBhbmQgYXJnIChwcmVsb2FkZWQgaW50byB4MjQgYW5kIHgyNQorICAgICJzdHAgICAgICAg
eDI2LCB4MjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX1BST0JFX0ZVTkNUSU9O
X09GRlNFVCkgIl0iICJcbiIgLy8gU3RvcmUgdGhlIHByb2JlIGhhbmRsZXIgZnVuY3Rpb24gYW5k
IGFyZyAocHJlbG9hZGVkIGludG8geDI0IGFuZCB4MjUKIAogICAgICJzdHAgICAgICAgeDAsIHgx
LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDBfT0ZGU0VUKSAiXSIgIlxu
IgogICAgICJtcnMgICAgICAgeDAsIG56Y3YiICJcbiIgLy8gUHJlbG9hZCBuemN2LgpAQCAtMzM0
LDIyICszMzQsMjIgQEAgYXNtICgKICAgICAic3RwICAgICAgIHg2LCB4NywgW3NwLCAjIiBTVFJJ
TkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1g2X09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAg
ICAgIHg4LCB4OSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1g4X09GRlNF
VCkgIl0iICJcbiIKIAotICAgICJsZHAgICAgICAgeDIsIHgzLCBbeDI2LCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoSU5fWDI0X09GRlNFVCkgIl0iICJcbiIgLy8gUHJlbG9hZCBzYXZlZCB4MjQgYW5k
IHgyNS4KLSAgICAibGRwICAgICAgIHg0LCB4NSwgW3gyNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09G
KElOX1gyNl9PRkZTRVQpICJdIiAiXG4iIC8vIFByZWxvYWQgc2F2ZWQgeDI2IGFuZCB4MjcuCi0g
ICAgImxkcCAgICAgICB4NiwgeDcsIFt4MjYsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9YMjhf
T0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2FkIHNhdmVkIHgyOCBhbmQgbHIuCi0gICAgImFkZCAg
ICAgICB4MjYsIHgyNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1NJWkUpICJcbiIgLy8gQ29t
cHV0ZSB0aGUgc3AgYmVmb3JlIHRoZSBwcm9iZS4KKyAgICAibGRwICAgICAgIHgyLCB4MywgW3gx
NiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1gxNl9PRkZTRVQpICJdIiAiXG4iIC8vIFByZWxv
YWQgc2F2ZWQgeDE2IGFuZCB4MTcuCisgICAgImxkcCAgICAgICB4NCwgeDUsIFt4MTYsICMiIFNU
UklOR0laRV9WQUxVRV9PRihJTl9YMjZfT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2FkIHNhdmVk
IHgyNiBhbmQgeDI3LgorICAgICJsZHAgICAgICAgeDYsIHg3LCBbeDE2LCAjIiBTVFJJTkdJWkVf
VkFMVUVfT0YoSU5fWDI4X09GRlNFVCkgIl0iICJcbiIgLy8gUHJlbG9hZCBzYXZlZCB4MjggYW5k
IGxyLgorICAgICJhZGQgICAgICAgeDE2LCB4MTYsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9T
SVpFKSAiXG4iIC8vIENvbXB1dGUgdGhlIHNwIGJlZm9yZSB0aGUgcHJvYmUuCiAKICAgICAic3Rw
ICAgICAgIHgxMCwgeDExLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDEw
X09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAgICAgIHgxMiwgeDEzLCBbc3AsICMiIFNUUklO
R0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDEyX09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAg
ICAgIHgxNCwgeDE1LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDE0X09G
RlNFVCkgIl0iICJcbiIKLSAgICAic3RwICAgICAgIHgxNiwgeDE3LCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfWDE2X09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAgICAg
IHgxOCwgeDE5LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDE4X09GRlNF
VCkgIl0iICJcbiIKICAgICAic3RwICAgICAgIHgyMCwgeDIxLCBbc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9DUFVfWDIwX09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAgICAgIHgy
MiwgeDIzLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDIyX09GRlNFVCkg
Il0iICJcbiIKLSAgICAic3RwICAgICAgIHgyLCB4MywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX1gyNF9PRkZTRVQpICJdIiAiXG4iIC8vIFN0b3JlIHNhdmVkIHIyNCBhbmQg
cjI1IChwcmVsb2FkZWQgaW50byB4MiBhbmQgeDMgYWJvdmUpLgotICAgICJzdHAgICAgICAgeDQs
IHg1LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDI2X09GRlNFVCkgIl0i
ICJcbiIgLy8gU3RvcmUgc2F2ZWQgcjI2IGFuZCByMjcgKHByZWxvYWRlZCBpbnRvIHg0IGFuZCB4
NSBhYm92ZSkuCisgICAgInN0cCAgICAgICB4MjQsIHgyNSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX1gyNF9PRkZTRVQpICJdIiAiXG4iCisgICAgInN0cCAgICAgICB4Miwg
eDMsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9YMTZfT0ZGU0VUKSAiXSIg
IlxuIiAvLyBTdG9yZSBzYXZlZCB4MTYgYW5kIHgxNyAocHJlbG9hZGVkIGludG8geDIgYW5kIHgz
IGFib3ZlKS4KKyAgICAic3RwICAgICAgIHg0LCB4NSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVf
T0YoUFJPQkVfQ1BVX1gyNl9PRkZTRVQpICJdIiAiXG4iIC8vIFN0b3JlIHNhdmVkIHgyNiBhbmQg
eDI3IChwcmVsb2FkZWQgaW50byB4NCBhbmQgeDUgYWJvdmUpLgogICAgICJzdHAgICAgICAgeDYs
IHgyOSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyOF9PRkZTRVQpICJd
IiAiXG4iCi0gICAgInN0cCAgICAgICB4NywgeDI2LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIiAvLyBTYXZlIHZhbHVlcyBsciBhbmQgc3Ag
KG9yaWdpbmFsIHNwIHZhbHVlIGNvbXB1dGVkIGludG8geDI2IGFib3ZlKS4KKyAgICAic3RwICAg
ICAgIHg3LCB4MTYsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBST0JFX0NQVV9MUl9PRkZT
RVQpICJdIiAiXG4iIC8vIFNhdmUgdmFsdWVzIGxyIGFuZCBzcCAob3JpZ2luYWwgc3AgdmFsdWUg
Y29tcHV0ZWQgaW50byB4MTYgYWJvdmUpLgogCiAgICAgInN0ciAgICAgICB4MzAsIFtzcCwgIyIg
U1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX1JFVFVSTl9QQ19PRkZTRVQpICJdIiAiXG4i
IC8vIFNhdmUgYSBkdXBsaWNhdGUgY29weSBvZiByZXR1cm4gcGMgKGluIGxyKS4KIApAQCAtNTI4
LDE0ICs1MjgsMTcgQEAgdm9pZCBNYWNyb0Fzc2VtYmxlcjo6cHJvYmUoUHJvYmU6OkZ1bmN0aQog
ewogICAgIHN1YjY0KFRydXN0ZWRJbW0zMihzaXplb2YoSW5jb21pbmdQcm9iZVJlY29yZCkpLCBz
cCk7CiAKLSAgICBzdG9yZVBhaXI2NCh4MjQsIHgyNSwgc3AsIFRydXN0ZWRJbW0zMihvZmZzZXRv
ZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjQpKSk7CisgICAgc3RvcmVQYWlyNjQoeDE2LCB4MTcs
IHNwLCBUcnVzdGVkSW1tMzIob2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDE2KSkpOwog
ICAgIHN0b3JlUGFpcjY0KHgyNiwgeDI3LCBzcCwgVHJ1c3RlZEltbTMyKG9mZnNldG9mKEluY29t
aW5nUHJvYmVSZWNvcmQsIHgyNikpKTsKICAgICBzdG9yZVBhaXI2NCh4MjgsIHgzMCwgc3AsIFRy
dXN0ZWRJbW0zMihvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjgpKSk7IC8vIE5vdGU6
IHgzMCBpcyBsci4KLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oY3RpTWFzbVByb2JlVHJhbXBvbGluZSkpLCB4MjYpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihyZWludGVycHJldF9jYXN0PHZvaWQqPihQcm9iZTo6ZXhlY3V0ZVByb2JlKSksIHgyOCk7Ci0g
ICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSks
IHgyNCk7Ci0gICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyksIHgyNSk7Ci0gICAgY2FsbCh4MjYs
IENGdW5jdGlvblB0clRhZyk7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGZ1bmN0aW9uKSksIHgyNik7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZyks
IHgyNyk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGNhbGwoVHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPih1bnRhZ0NvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPihjdGlNYXNt
UHJvYmVUcmFtcG9saW5lKSkpLCBOb1B0clRhZyk7CisjZWxzZQorICAgIGNhbGwoVHJ1c3RlZElt
bVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihjdGlNYXNtUHJvYmVUcmFtcG9saW5lKSksIENG
dW5jdGlvblB0clRhZyk7CisjZW5kaWYKIAogICAgIC8vIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUg
c2hvdWxkIGhhdmUgcmVzdG9yZWQgZXZlcnkgcmVnaXN0ZXIgZXhjZXB0IGZvciBsciBhbmQgdGhl
IHNwLgogICAgIGxvYWQ2NChBZGRyZXNzKHNwLCBvZmZzZXRvZihMUlJlc3RvcmF0aW9uUmVjb3Jk
LCBscikpLCBscik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyMTQsNiArMzIxNCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1w
KG1ha2VCcmFuY2goY29uZCkpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWdl
VG9KSVRSZWdpb24oUmVnaXN0ZXJJRCB0YXJnZXQpCisgICAgeworI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubm9wQWxpZ24xNigpOworICAgICAgICBtX2Fzc2VtYmxlci5hbmRfPDY0Pih0YXJnZXQs
IHRhcmdldCwgTG9naWNhbEltbWVkaWF0ZTo6Y3JlYXRlNjQoMHhmZmZmZmYwKSk7CisgICAgICAg
IFJlZ2lzdGVySUQgdGVtcCA9IHRhcmdldCA9PSBkYXRhVGVtcFJlZ2lzdGVyID8gbWVtb3J5VGVt
cFJlZ2lzdGVyIDogZGF0YVRlbXBSZWdpc3RlcjsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92ejw2
ND4odGVtcCwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKCkpID4+IDI4KSwgMTYpOworICAgICAg
ICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KHRhcmdldCwgdGFyZ2V0LCB0ZW1wLCBBc3NlbWJsZXI6OkxT
TCwgMTIpOworI2VuZGlmCisgICAgfQogCiAgICAgLy8gSnVtcHMsIGNhbGxzLCByZXR1cm5zCiAK
QEAgLTMyMjMsMTYgKzMyMzQsMjkgQEAgcHVibGljOgogICAgICAgICBtb3ZlV2l0aEZpeGVkV2lk
dGgoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKICAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIuYmxyKGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBBc3NlbWJs
ZXJMYWJlbCBjYWxsTGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOworICAgICAgICBBc3NlbWJs
ZXJMYWJlbCBjYWxsTGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMo
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwb2ludGVyTGFiZWwsIEFzc2VtYmxlcjo6Z2V0RGlm
ZmVyZW5jZUJldHdlZW5MYWJlbHMoY2FsbExhYmVsLCBwb2ludGVyTGFiZWwpID09IFJFUEFUQ0hf
T0ZGU0VUX0NBTExfVE9fUE9JTlRFUik7CiAgICAgICAgIHJldHVybiBDYWxsKGNhbGxMYWJlbCwg
Q2FsbDo6TGlua2FibGUpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJl
Z2lzdGVySUQgdGFyZ2V0LCBQdHJUYWcpCiAgICAgewotICAgICAgICBpbnZhbGlkYXRlQWxsVGVt
cFJlZ2lzdGVycygpOworICAgICAgICBjYWdlVG9KSVRSZWdpb24odGFyZ2V0KTsKICAgICAgICAg
bV9hc3NlbWJsZXIuYmxyKHRhcmdldCk7Ci0gICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVy
LmxhYmVsKCksIENhbGw6Ok5vbmUpOworICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5s
YWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgQ2FsbDo6Tm9uZSk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSBDYWxsIGNhbGwoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZyB0YWcpCisg
ICAgeworICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKSB7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3BBbGlnbjE2KCk7CisgICAgICAgICAgICBtb3ZlKHRhcmdldCwgZ2V0Q2FjaGVkRGF0
YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgICAgIGludmFsaWRhdGVB
bGxUZW1wUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHIoZGF0YVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKSwgQ2FsbDo6Tm9uZSk7CisgICAgICAgIH0KKyAgICAgICAgbW92ZSh0
YXJnZXQsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAg
ICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQpAQCAtMzI0
NywzOSArMzI3MSw0OSBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbE9w
ZXJhdGlvbihjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG9wZXJhdGlvbikKICAg
ICB7Ci0gICAgICAgIGF1dG8gdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52
YWxpZGF0ZSgpOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIob3BlcmF0aW9uLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCB0bXApOwotICAgICAgICBjYWxsKHRtcCwgT3BlcmF0aW9uUHRyVGFnKTsK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGNhbGwoVHJ1c3RlZEltbVB0cihvcGVyYXRp
b24udGVtcGxhdGUgcmV0YWdnZWRFeGVjdXRhYmxlQWRkcmVzczxOb1B0clRhZz4oKSksIE5vUHRy
VGFnKTsKKyNlbHNlCisgICAgICAgIGNhbGwoVHJ1c3RlZEltbVB0cihvcGVyYXRpb24uZXhlY3V0
YWJsZUFkZHJlc3MoKSksIE9wZXJhdGlvblB0clRhZyk7CisjZW5kaWYKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIEp1bXAganVtcCgpCiAgICAgewotICAgICAgICBBc3NlbWJsZXJMYWJlbCBs
YWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVs
ID0gbV9hc3NlbWJsZXIubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmIoKTsKICAgICAgICAgcmV0dXJuIEp1bXAobGFiZWwsIG1fbWFrZUp1bXBQYXRjaGFi
bGUgPyBBc3NlbWJsZXI6Okp1bXBOb0NvbmRpdGlvbkZpeGVkU2l6ZSA6IEFzc2VtYmxlcjo6SnVt
cE5vQ29uZGl0aW9uKTsKICAgICB9CiAKICAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJn
ZXQsIFB0clRhZykKICAgICB7CisgICAgICAgIGNhZ2VUb0pJVFJlZ2lvbih0YXJnZXQpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5icih0YXJnZXQpOwogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChB
ZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBjYWdl
VG9KSVRSZWdpb24oZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJyKGRh
dGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KICAgICAKICAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4
IGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBjYWdlVG9KSVRS
ZWdpb24oZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJyKGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRk
cmVzcywgUHRyVGFnKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wQWxpZ24xNigpOwor
I2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGFsd2F5cyBlbWl0
IGEgMyBpbnN0cnVjdGlvbiB3aWRlIG1vdmUuCisgICAgICAgIG1vdmVXaXRoRml4ZWRXaWR0aChU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOworI2Vsc2UKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MubV9wdHIpLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwot
ICAgICAgICBsb2FkNjQoQWRkcmVzcyhkYXRhVGVtcFJlZ2lzdGVyKSwgZGF0YVRlbXBSZWdpc3Rl
cik7CisjZW5kaWYKICAgICAgICAgbV9hc3NlbWJsZXIuYnIoZGF0YVRlbXBSZWdpc3Rlcik7CiAg
ICAgfQogCkBAIC0zMjkwLDI3ICszMzI0LDM4IEBAIHB1YmxpYzoKIAogICAgIEFMV0FZU19JTkxJ
TkUgQ2FsbCBuZWFyQ2FsbCgpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAg
bV9hc3NlbWJsZXIubm9wQWxpZ25JbnN0cnVjdGlvblRvT2Zmc2V0PDBYYz4oKTsKKyNlbmRpZgog
ICAgICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5ibCgpOwotICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBDYWxsOjpM
aW5rYWJsZU5lYXIpOworICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIENhbGwgbmVhclRhaWxDYWxsKCkKICAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQogICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7Cisj
ZWxzZQorICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsSWdu
b3JpbmdXYXRjaHBvaW50cygpOworI2VuZGlmCiAgICAgICAgIG1fYXNzZW1ibGVyLmIoKTsKICAg
ICAgICAgcmV0dXJuIENhbGwobGFiZWwsIENhbGw6OkxpbmthYmxlTmVhclRhaWwpOwogICAgIH0K
IAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCB0aHJlYWRTYWZlUGF0Y2hhYmxlTmVhckNhbGwoKQog
ICAgIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIG1fYXNzZW1ibGVyLm5vcEFsaWdu
SW5zdHJ1Y3Rpb25Ub09mZnNldDwwWGM+KCk7CisjZW5kaWYKICAgICAgICAgaW52YWxpZGF0ZUFs
bFRlbXBSZWdpc3RlcnMoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYmwoKTsKLSAgICAgICAgcmV0
dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6TGlua2FibGVOZWFyKTsKKyAgICAg
ICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIENh
bGw6OkxpbmthYmxlTmVhcik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJldCgp
CiAgICAgeworICAgICAgICBjYWdlVG9KSVRSZWdpb24oQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIucmV0KCk7CiAgICAgfQogCkBAIC0zOTk5LDIwICs0MDQ0LDMxIEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRhZywgUHRyVGFnIGRlc3RUYWc+CiAg
ICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxjYWxsVGFnPiBjYWxs
LCBDb2RlTG9jYXRpb25MYWJlbDxkZXN0VGFnPiBkZXN0aW5hdGlvbikKICAgICB7CisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorICAgICAgICBBc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKGNhbGwuZGF0
YUxhYmVsUHRyQXRPZmZzZXQoUkVQQVRDSF9PRkZTRVRfQ0FMTF9UT19QT0lOVEVSKS5kYXRhTG9j
YXRpb24oKSwgZGVzdGluYXRpb24udW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNl
CiAgICAgICAgIEFzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIoY2FsbC5kYXRhTGFiZWxQdHJBdE9m
ZnNldChSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpLmRhdGFMb2NhdGlvbigpLCBkZXN0
aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBs
YXRlPFB0clRhZyBjYWxsVGFnLCBQdHJUYWcgZGVzdFRhZz4KICAgICBzdGF0aWMgdm9pZCByZXBh
dGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPGNhbGxUYWc+IGNhbGwsIEZ1bmN0aW9uUHRyPGRlc3RU
YWc+IGRlc3RpbmF0aW9uKQogICAgIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIEFz
c2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIoY2FsbC5kYXRhTGFiZWxQdHJBdE9mZnNldChSRVBBVENI
X09GRlNFVF9DQUxMX1RPX1BPSU5URVIpLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi50ZW1w
bGF0ZSByZXRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPE5vUHRyVGFnPigpKTsKKyNlbHNlCiAgICAg
ICAgIEFzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIoY2FsbC5kYXRhTGFiZWxQdHJBdE9mZnNldChS
RVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgogICAgIH0KIAogcHJvdGVjdGVkOgogICAg
IEFMV0FZU19JTkxJTkUgSnVtcCBtYWtlQnJhbmNoKEFzc2VtYmxlcjo6Q29uZGl0aW9uIGNvbmQp
CiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wQWxp
Z25JbnN0cnVjdGlvblRvT2Zmc2V0PDB4OD4oKTsKKyNlbmRpZgogICAgICAgICBtX2Fzc2VtYmxl
ci5iX2NvbmQoY29uZCk7Ci0gICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsID0gbV9hc3NlbWJs
ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwgPSBtX2Fzc2VtYmxlci5s
YWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAg
ICAgICAgIHJldHVybiBKdW1wKGxhYmVsLCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQXNzZW1ibGVy
OjpKdW1wQ29uZGl0aW9uRml4ZWRTaXplIDogQXNzZW1ibGVyOjpKdW1wQ29uZGl0aW9uLCBjb25k
KTsKICAgICB9CkBAIC00MDIzLDI0ICs0MDc5LDMwIEBAIHByb3RlY3RlZDoKICAgICB0ZW1wbGF0
ZSA8aW50IGRhdGFTaXplPgogICAgIEFMV0FZU19JTkxJTkUgSnVtcCBtYWtlQ29tcGFyZUFuZEJy
YW5jaChaZXJvQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnKQogICAgIHsKKyNpZiBFTkFC
TEUoSklUX0NBR0UpCisgICAgICAgIG1fYXNzZW1ibGVyLm5vcEFsaWduSW5zdHJ1Y3Rpb25Ub09m
ZnNldDwweDg+KCk7CisjZW5kaWYKICAgICAgICAgaWYgKGNvbmQgPT0gSXNaZXJvKQogICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuY2J6PGRhdGFTaXplPihyZWcpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5jYm56PGRhdGFTaXplPihyZWcpOwotICAgICAgICBBc3NlbWJs
ZXJMYWJlbCBsYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxh
YmVsIGxhYmVsID0gbV9hc3NlbWJsZXIubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICByZXR1cm4gSnVtcChsYWJlbCwgbV9tYWtl
SnVtcFBhdGNoYWJsZSA/IEFzc2VtYmxlcjo6SnVtcENvbXBhcmVBbmRCcmFuY2hGaXhlZFNpemUg
OiBBc3NlbWJsZXI6Okp1bXBDb21wYXJlQW5kQnJhbmNoLCBzdGF0aWNfY2FzdDxBc3NlbWJsZXI6
OkNvbmRpdGlvbj4oY29uZCksIGRhdGFTaXplID09IDY0LCByZWcpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgSnVtcCBtYWtlVGVzdEJpdEFuZEJyYW5jaChSZWdpc3RlcklEIHJlZywgdW5z
aWduZWQgYml0LCBaZXJvQ29uZGl0aW9uIGNvbmQpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wQWxpZ25JbnN0cnVjdGlvblRvT2Zmc2V0PDB4OD4o
KTsKKyNlbmRpZgogICAgICAgICBBU1NFUlQoYml0IDwgNjQpOwogICAgICAgICBiaXQgJj0gMHgz
ZjsKICAgICAgICAgaWYgKGNvbmQgPT0gSXNaZXJvKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
dGJ6KHJlZywgYml0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIudGJu
eihyZWcsIGJpdCk7Ci0gICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsID0gbV9hc3NlbWJsZXIu
bGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJl
bElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAg
ICAgIHJldHVybiBKdW1wKGxhYmVsLCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQXNzZW1ibGVyOjpK
dW1wVGVzdEJpdEZpeGVkU2l6ZSA6IEFzc2VtYmxlcjo6SnVtcFRlc3RCaXQsIHN0YXRpY19jYXN0
PEFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKSwgYml0LCByZWcpOwogICAgIH0KQEAgLTQ2MzIs
OSArNDY5NCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdGVtcGxhdGU8UHRyVGFnIHRhZz4KICAgICBz
dGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBDYWxsIGNhbGwsIEZ1bmN0aW9uUHRyPHRh
Zz4gZnVuY3Rpb24pCiAgICAgewotICAgICAgICBpZiAoIWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5l
YXIpKQorICAgICAgICBpZiAoIWNhbGwuaXNGbGFnU2V0KENhbGw6Ok5lYXIpKSB7CisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgQXNzZW1ibGVyOjpsaW5rUG9pbnRlcihjb2RlLCBj
YWxsLm1fbGFiZWwubGFiZWxBdE9mZnNldChSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIp
LCBmdW5jdGlvbi50ZW1wbGF0ZSByZXRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPE5vUHRyVGFnPigp
KTsKKyNlbHNlCiAgICAgICAgICAgICBBc3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUsIGNhbGwu
bV9sYWJlbC5sYWJlbEF0T2Zmc2V0KFJFUEFUQ0hfT0ZGU0VUX0NBTExfVE9fUE9JTlRFUiksIGZ1
bmN0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotICAgICAgICBlbHNlIGlmIChjYWxsLmlzRmxh
Z1NldChDYWxsOjpUYWlsKSkKKyNlbmRpZgorICAgICAgICB9IGVsc2UgaWYgKGNhbGwuaXNGbGFn
U2V0KENhbGw6OlRhaWwpKQogICAgICAgICAgICAgQXNzZW1ibGVyOjpsaW5rSnVtcChjb2RlLCBj
YWxsLm1fbGFiZWwsIGZ1bmN0aW9uLnRlbXBsYXRlIHJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8
Tm9QdHJUYWc+KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBBc3NlbWJsZXI6OmxpbmtD
YWxsKGNvZGUsIGNhbGwubV9sYWJlbCwgZnVuY3Rpb24udGVtcGxhdGUgcmV0YWdnZWRFeGVjdXRh
YmxlQWRkcmVzczxOb1B0clRhZz4oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCShyZXZpc2lvbiAyNTc5
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjRFLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDQ1ICs0NCw3MyBAQCBwdWJsaWM6CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgdGFnUmV0dXJuQWRkcmVzcygpCiAgICAgeworI2lmICFFTkFCTEUo
SklUX0NBR0UpCiAgICAgICAgIHRhZ1B0cihBUk02NFJlZ2lzdGVyczo6c3AsIEFSTTY0UmVnaXN0
ZXJzOjpscik7CisjZW5kaWYKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdS
ZXR1cm5BZGRyZXNzKCkKICAgICB7CisjaWYgIUVOQUJMRShKSVRfQ0FHRSkKICAgICAgICAgdW50
YWdQdHIoQVJNNjRSZWdpc3RlcnM6OnNwLCBBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHRhZ1B0cihQdHJUYWcgdGFnLCBSZWdpc3Rl
cklEIHRhcmdldCkKICAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBVTlVTRURf
UEFSQU0odGFnKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisjZWxzZQogICAgICAg
ICBhdXRvIHRhZ0dQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgdGFnR1BSKTsKICAgICAgICAgbV9h
c3NlbWJsZXIucGFjaWIodGFyZ2V0LCB0YWdHUFIpOworI2VuZGlmCiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHRhZ1B0cihSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCB0YXJnZXQp
CiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRhZyk7
CisgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworI2Vsc2UKICAgICAgICAgaWYgKHRhcmdl
dCA9PSBBUk02NFJlZ2lzdGVyczo6bHIgJiYgdGFnID09IEFSTTY0UmVnaXN0ZXJzOjpzcCkgewog
ICAgICAgICAgICAgbV9hc3NlbWJsZXIucGFjaWJzcCgpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIG1fYXNzZW1ibGVyLnBhY2liKHRhcmdldCwgdGFnKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ1B0cihQdHJUYWcgdGFnLCBS
ZWdpc3RlcklEIHRhcmdldCkKICAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBV
TlVTRURfUEFSQU0odGFnKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisjZWxzZQog
ICAgICAgICBhdXRvIHRhZ0dQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgdGFnR1BSKTsKICAgICAg
ICAgbV9hc3NlbWJsZXIuYXV0aWIodGFyZ2V0LCB0YWdHUFIpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHVudGFnUHRyKFJlZ2lzdGVySUQgdGFnLCBSZWdpc3RlcklE
IHRhcmdldCkKICAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBVTlVTRURfUEFS
QU0odGFnKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7CisjZWxzZQogICAgICAgICBt
X2Fzc2VtYmxlci5hdXRpYih0YXJnZXQsIHRhZyk7CisjZW5kaWYKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmVtb3ZlUHRyVGFnKFJlZ2lzdGVySUQgdGFyZ2V0KQogICAgIHsKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworI2Vsc2UK
ICAgICAgICAgbV9hc3NlbWJsZXIueHBhY2kodGFyZ2V0KTsKKyNlbmRpZgogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCB0YWdBcnJheVB0cihSZWdpc3RlcklEIGxlbmd0aCwgUmVnaXN0
ZXJJRCB0YXJnZXQpCkBAIC0xMTcsNiArMTQ1LDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxD
YWxsU2lnbmF0dXJlVHlwZSB0eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsVHJ1c3Rl
ZFB0cihSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworI2lmIEVOQUJMRShK
SVRfQ0FHRSkKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRhZ0dQUik7CisgICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlckFSTTY0OjpjYWxsKEpJVENhZ2VQdHJUYWcpOworI2Vsc2UKICAgICAgICAg
QVNTRVJUKHRhZ0dQUiAhPSBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgQXNzZW1ibGVyTGFi
ZWwgcG9pbnRlckxhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKICAgICAgICAgbW92ZVdpdGhG
aXhlZFdpZHRoKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKSk7CkBAIC0xMjgsMTYgKzE2MCwyMiBAQCBwdWJsaWM6CiAgICAg
ICAgIEFzc2VtYmxlckxhYmVsIGNhbGxMYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CiAgICAg
ICAgIEFTU0VSVF9VTlVTRUQocG9pbnRlckxhYmVsLCBBUk02NEFzc2VtYmxlcjo6Z2V0RGlmZmVy
ZW5jZUJldHdlZW5MYWJlbHMoY2FsbExhYmVsLCBwb2ludGVyTGFiZWwpID09IFJFUEFUQ0hfT0ZG
U0VUX0NBTExfVE9fUE9JTlRFUik7CiAgICAgICAgIHJldHVybiBDYWxsKGNhbGxMYWJlbCwgQ2Fs
bDo6TGlua2FibGUpOworI2VuZGlmCiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNh
bGwoUHRyVGFnIHRhZykKICAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBVTlVT
RURfUEFSQU0odGFnKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwo
SklUQ2FnZVB0clRhZyk7CisjZWxzZQogICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQogICAg
ICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFnKTsKICAgICAgICAg
aWYgKHRhZyA9PSBDRnVuY3Rpb25QdHJUYWcpCiAgICAgICAgICAgICByZXR1cm4gY2FsbFRydXN0
ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGw+KCk7CiAgICAgICAgIG1vdmUo
VHJ1c3RlZEltbTY0KHRhZyksIEFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAgICAgIHJldHVybiBj
YWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPihBUk02NFJlZ2lzdGVy
czo6bHIpOworI2VuZGlmCiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVn
aXN0ZXJJRCB0YWdHUFIpCkBAIC0xNDgsNiArMTg2LDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTxDYWxsU2lnbmF0dXJlVHlwZSB0eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsUmVn
aXN0ZXIoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BSID0gSW52YWxpZEdQ
UikKICAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBVTlVTRURfUEFSQU0odGFn
R1BSKTsKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFyZ2V0R1BS
LCBKSVRDYWdlUHRyVGFnKTsKKyNlbHNlCiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0
R1BSKTsKICAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKICAgICAgICAgaWYg
KHR5cGUgPT0gQ2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCkBAIC0xNTUsMTYgKzE5
NywyMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJs
cmFiKHRhcmdldEdQUiwgdGFnR1BSKTsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIu
bGFiZWwoKSwgQ2FsbDo6Tm9uZSk7CisjZW5kaWYKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQUiwgUHRyVGFnIHRhZykKICAgICB7CisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBVTlVTRURfUEFSQU0odGFnKTsKKyAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFyZ2V0R1BSLCBKSVRDYWdlUHRyVGFnKTsK
KyNlbHNlCiAgICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCiAgICAgICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCh0YXJnZXRHUFIsIHRhZyk7CiAgICAgICAgIGlmICh0
YWcgPT0gQ0Z1bmN0aW9uUHRyVGFnKQogICAgICAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxD
YWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbD4odGFyZ2V0R1BSKTsKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tNjQodGFnKSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICAgICAgcmV0dXJu
IGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YXJnZXRHUFIsIEFS
TTY0UmVnaXN0ZXJzOjpscik7CisjZW5kaWYKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENh
bGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIpCkBAIC0xNzIs
NiArMjIwLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2ln
bmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQogCisgICAg
QUxXQVlTX0lOTElORSBDYWxsIGNhbGwoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZyB0YWcp
CisgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRh
ZyB8fCB0YWcgPT0gSklUQ2FnZVB0clRhZykKKyAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpjYWxsKHRhcmdldCwgTm9QdHJUYWcpOworI2VuZGlmCisgICAgICAgIG1vdmUo
dGFyZ2V0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAg
ICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOworICAgIH0KKwogICAgIEFM
V0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7
CiAgICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCkBAIC0xOTAsOSArMjQ4LDEzIEBAIHB1Ymxp
YzoKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjYWxsT3BlcmF0aW9uKGNvbnN0IEZ1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4gb3BlcmF0aW9uKQogICAgIHsKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgICAgIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
KTsKKyNlbHNlCiAgICAgICAgIGF1dG8gdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIob3BlcmF0aW9uLmV4
ZWN1dGFibGVBZGRyZXNzKCkpLCB0bXApOwotICAgICAgICBjYWxsKHRtcCwgT3BlcmF0aW9uUHRy
VGFnKTsKKyAgICAgICAgY2FsbChUcnVzdGVkSW1tUHRyKG9wZXJhdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpKSwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbmRpZgogICAgIH0KIAogICAgIEFMV0FZU19J
TkxJTkUgSnVtcCBqdW1wKCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6anVtcCgpOyB9
CkBAIC0yMDEsMjEgKzI2MywzMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAodGFnID09
IE5vUHRyVGFnKQogICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1
bXAodGFyZ2V0LCB0YWcpOwotCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcCh0YXJnZXQsIHRhZyk7CisjZWxzZQogICAgICAg
ICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyk7CiAgICAgICAgIFJlZ2lzdGVySUQgZGl2
ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwog
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOwogICAgICAgICBm
YXJKdW1wKHRhcmdldCwgZGl2ZXJzaXR5R1BSKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQg
ZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCB0YWcpCiAgICAgewogICAgICAg
ICBBU1NFUlQodGFnICE9IHRhcmdldCk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBN
YWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKHRhcmdldCwgdGFnKTsKKyNlbHNlCiAgICAgICAg
IG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0LCB0YWcpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9p
ZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7CisjaWYgRU5BQkxF
KEpJVF9DQUdFKQorICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChh
ZGRyZXNzLCB0YWcpOworI2Vsc2UKICAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKICAgICAg
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7
CiAKQEAgLTIyNSwxOCArMjk3LDI2IEBAIHB1YmxpYzoKICAgICAgICAgbG9hZDY0KGFkZHJlc3Ms
IHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQ
Uik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwor
I2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCB0YWcpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyNlbHNlCiAgICAgICAg
IFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52
YWxpZGF0ZSgpOwogICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7CiAgICAgICAgIGxv
YWQ2NChhZGRyZXNzLCB0YXJnZXRHUFIpOwogICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdl
dEdQUiwgdGFnKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXgg
YWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNzLCB0YWcpOworI2Vs
c2UKICAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKICAgICAgICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7CiAKQEAgLTI0Niw0MSArMzI2
LDQ2IEBAIHB1YmxpYzoKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHRhcmdldEdQUik7CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKICAgICB7
CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02
NDo6ZmFySnVtcChhZGRyZXNzLCB0YWcpOworI2Vsc2UKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJn
ZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAg
ICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHRh
cmdldEdQUik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0YWcpOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgdm9pZCBmYXJKdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBQ
dHJUYWcgdGFnKQogICAgIHsKICAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKICAgICAgICAg
ICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7Cisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAodGFnID09IEpJVENhZ2VQdHJUYWcpCisg
ICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChBYnNvbHV0ZUFk
ZHJlc3ModW50YWdDb2RlUHRyPEpJVENhZ2VQdHJUYWc+KGFkZHJlc3MubV9wdHIpKSwgTm9QdHJU
YWcpOwogCisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKEFic29s
dXRlQWRkcmVzcyh1bnRhZ0NvZGVQdHIoYWRkcmVzcy5tX3B0ciwgdGFnKSksIE5vUHRyVGFnKTsK
KyNlbHNlCiAgICAgICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQ
UiA9IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7Ci0gICAgICAg
IGxvYWQ2NChBZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJyYWIo
dGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwotICAgIH0KLQotICAgIHZvaWQgZmFySnVtcChBYnNv
bHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCi0gICAgewotICAgICAgICBSZWdp
c3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOwotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7Ci0gICAgICAgIGxvYWQ2NChB
ZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIo
dGFyZ2V0R1BSLCB0YWcpOworI2VuZGlmCiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHJldCgpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJBUk02NDo6cmV0KCk7CisjZWxzZQogICAgICAgICBtX2Fzc2VtYmxlci5yZXRhYigpOworI2Vu
ZGlmCiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCShyZXZpc2lvbiAyNTc5MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNiArMzUyLDEyIEBAIHB1YmxpYzoKICAgICB9CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEoISp0aGlzKTsgfQogICAg
IAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgb3BlcmF0b3I9KGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciYgb3RoZXIpCisgICAgeworICAgICAgICBtX3ZhbHVlID0gb3RoZXIubV92YWx1
ZTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlz
aW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcgKzI2MCwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmYXJKdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQog
ICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNo
UmVnaXN0ZXIoKSk7CisjaWYgMQorICAgICAgICBmYXJKdW1wKHNjcmF0Y2hSZWdpc3RlcigpLCB0
YWcpOworI2Vsc2UKICAgICAgICAgZmFySnVtcChBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwg
dGFnKTsKKyNlbmRpZgogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmYXJKdW1wKEFi
c29sdXRlQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGp1bXBUYWcpIHsgVU5VU0VEX1BBUkFN
KGp1bXBUYWcpLCBmYXJKdW1wKGFkZHJlc3MsIE5vUHRyVGFnKTsgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAyNTc5
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTQ1LDcgKzM5NDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBiLm1fb2Zmc2V0IC0gYS5tX29mZnNldDsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgZGVi
dWdPZmZzZXQoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9CisgICAgdW5z
aWduZWQgY3VycmVudE9mZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmN1cnJlbnRPZmZzZXQo
KTsgfQogCiAgICAgdm9pZCBub3AoKQogICAgIHsKQEAgLTQ3MzIsOSArNDczMiwxMCBAQCBwcml2
YXRlOgogICAgICAgICBzaXplX3QgY29kZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5j
b2RlU2l6ZSgpOyB9CiAgICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIubGFiZWwoKTsgfQogICAgICAgICBib29sIGlzQWxpZ25lZChpbnQgYWxpZ25t
ZW50KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0FsaWduZWQoYWxpZ25tZW50KTsgfQorICAg
ICAgICBib29sIGlzQWxpZ25lZFRvT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuaXNBbGlnbmVkVG9PZmZzZXQob2Zmc2V0KTsgfQogICAgICAgICB2b2lkKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CiAKLSAgICAgICAgdW5zaWdu
ZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5kZWJ1Z09mZnNldCgpOyB9CisgICAg
ICAgIHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5jdXJyZW50T2Zm
c2V0KCk7IH0KIAogICAgIHB1YmxpYzoKICAgICAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2FnZWRDQ2FsbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NhZ2VkQ0NhbGwuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYWdlZENDYWxsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisKKyNp
bmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIKKyNpbmNsdWRlICJCM0Jh
c2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNDb25zdHJhaW5lZFZhbHVlLmgiCisjaW5j
bHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKKyNpbmNsdWRlICJCM1N0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcy5oIgorI2luY2x1ZGUgIkIzVmFsdWVSZXAuaCIKKyNpbmNsdWRlICJDQ2FsbEhlbHBl
cnMuaCIKKyNpbmNsdWRlICJKU0NQdHJUYWcuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uLCB0eXBlbmFtZS4uLiBBcmdzPgor
VmFsdWUqIGNhZ2VkQ0NhbGwoUHJvY2VkdXJlJiBwcm9jZWR1cmUsIEJhc2ljQmxvY2sqIGJsb2Nr
LCBPcmlnaW4gb3JpZ2luLCBUeXBlIHR5cGUsIEZ1bmN0aW9uIGZ1bmN0aW9uLCBBcmdzLi4uIGFy
Z3MpCit7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19zYW1lPEZ1bmN0aW9uLCBWYWx1ZSo+
Ojp2YWx1ZSk7CisgICAgUGF0Y2hwb2ludFZhbHVlKiByZXN1bHQgPSBibG9jay0+YXBwZW5kTmV3
PFBhdGNocG9pbnRWYWx1ZT4ocHJvY2VkdXJlLCB0eXBlLCBvcmlnaW4pOworICAgIHVuc2lnbmVk
IGdwckFyZ0luZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBmcHJBcmdJbmRleCA9IDA7CisgICAgdW5z
aWduZWQgc3RhY2tPZmZzZXQgPSAwOworCisgICAgYXV0byBtYXJzaGFsU3RhY2tBcmcgPSBbJl0g
KFZhbHVlKiBhcmcpIHsKKyAgICAgICAgdW5zaWduZWQgc2xvdFNpemU7CisKKyAgICAgICAgaWYg
KGlzQVJNNjQoKSAmJiBpc0lPUygpKQorICAgICAgICAgICAgc2xvdFNpemUgPSBzaXplb2ZUeXBl
KGFyZy0+dHlwZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2xvdFNpemUgPSA4Owor
CisgICAgICAgIHN0YWNrT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHNsb3RTaXpl
LCBzdGFja09mZnNldCk7CisgICAgICAgIHJlc3VsdC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
YXJnLCBWYWx1ZVJlcDo6c3RhY2tBcmd1bWVudChzdGFja09mZnNldCkpKTsKKyAgICAgICAgc3Rh
Y2tPZmZzZXQgKz0gc2xvdFNpemU7CisgICAgfTsKKworICAgIGF1dG8gbWFyc2hhbGxHUEFyZyA9
IFsmXSAoVmFsdWUqIGFyZykgeworICAgICAgICBpZiAoZ3ByQXJnSW5kZXggPCBHUFJJbmZvOjpu
dW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICByZXN1bHQtPmFwcGVuZChD
b25zdHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0b0FyZ3VtZW50UmVn
aXN0ZXIoZ3ByQXJnSW5kZXgrKykpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBtYXJzaGFsU3RhY2tBcmcoYXJnKTsKKyAgICB9OworCisgICAgYXV0byBtYXJz
aGFsbEZQQXJnID0gWyZdIChWYWx1ZSogYXJnKSB7CisgICAgICAgIGlmIChmcHJBcmdJbmRleCA8
IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHJlc3Vs
dC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnLCBWYWx1ZVJlcDo6cmVnKEZQUkluZm86OnRv
QXJndW1lbnRSZWdpc3RlcihmcHJBcmdJbmRleCsrKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIG1hcnNoYWxTdGFja0FyZyhhcmcpOworICAgIH07CisKKyAg
ICBpZiAodHlwZS5pc0ludCgpKQorICAgICAgICByZXN1bHQtPnJlc3VsdENvbnN0cmFpbnRzID0g
eyBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnJldHVyblZhbHVlR1BSKSB9OworICAgIGVsc2UgaWYg
KHR5cGUuaXNGbG9hdCgpKQorICAgICAgICByZXN1bHQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBW
YWx1ZVJlcDo6cmVnKEZQUkluZm86OnJldHVyblZhbHVlRlBSKSB9OworCisgICAgcmVzdWx0LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcmVzdWx0
LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKKwor
ICAgIGZvciAoVmFsdWUqIGFyZyA6IHN0ZDo6YXJyYXk8VmFsdWUqLCBzaXplb2YuLi4oQXJncyk+
e2FyZ3MuLi59KSB7CisgICAgICAgIEFTU0VSVChhcmctPnR5cGUoKS5pc0ludCgpIHx8IGFyZy0+
dHlwZSgpLmlzRmxvYXQoKSk7CisKKyAgICAgICAgaWYgKGFyZy0+dHlwZSgpLmlzSW50KCkpCisg
ICAgICAgICAgICBtYXJzaGFsbEdQQXJnKGFyZyk7CisgICAgICAgIGlmIChhcmctPnR5cGUoKS5p
c0Zsb2F0KCkpCisgICAgICAgICAgICBtYXJzaGFsbEZQQXJnKGFyZyk7CisgICAgfQorCisgICAg
cmVzdWx0LT5zZXRHZW5lcmF0b3IoCisgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIGppdC5j
YWxsKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
ZnVuY3Rpb24sIE5vUHRyVGFnKSksIE5vUHRyVGFnKTsKKyAgICAgICAgfSk7CisgICAgcmVzdWx0
LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2FsbCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8gIUVOQUJMRShKSVRfQ0FHRSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvcy5jcHAJKHJldmlz
aW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkIzQmFzaWNCbG9j
a0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAi
QjNDQ2FsbFZhbHVlLmgiCisjaW5jbHVkZSAiQjNDYWdlZENDYWxsLmgiCiAjaW5jbHVkZSAiQjND
YXNlQ29sbGVjdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNp
bmNsdWRlICJCM0ZlbmNlVmFsdWUuaCIKQEAgLTEyOCwyNSArMTI5LDYyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICAgICAgZG91YmxlICgqZm1v
ZERvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gZm1vZDsKKyNlbHNlCiAgICAgICAgICAgICAgICAg
YXV0byogZm1vZERvdWJsZSA9IHRhZ0NGdW5jdGlvblB0cjxkb3VibGUgKCopKGRvdWJsZSwgZG91
YmxlKT4oZm1vZCwgQjNDQ2FsbFB0clRhZyk7CisjZW5kaWYKKwogICAgICAgICAgICAgICAgIGlm
IChtX3ZhbHVlLT50eXBlKCkgPT0gRG91YmxlKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICAgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydDxQYXRjaHBvaW50VmFsdWU+KG1faW5kZXgsIERvdWJsZSwgbV9vcmlnaW4pOworICAg
ICAgICAgICAgICAgICAgICByZXN1bHQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6
cmVnKEZQUkluZm86OnJldHVyblZhbHVlRlBSKSB9OworICAgICAgICAgICAgICAgICAgICByZXN1
bHQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShtX3ZhbHVlLT5jaGlsZCgwKSwgVmFsdWVSZXA6OnJlZyhGUFJJbmZvOjp0
b0FyZ3VtZW50UmVnaXN0ZXIoMCkpKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+YXBw
ZW5kKENvbnN0cmFpbmVkVmFsdWUobV92YWx1ZS0+Y2hpbGQoMSksIFZhbHVlUmVwOjpyZWcoRlBS
SW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKDEpKSkpOworCisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY2FsbChNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZtb2REb3VibGUs
IE5vUHRyVGFnKSksIE5vUHRyVGFnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgICAgICByZXN1bHQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JDYWxsKCk7Cisj
ZWxzZQogICAgICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCBmbW9kRG91
YmxlKTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydDxDQ2FsbFZhbHVlPihtX2luZGV4LCBEb3VibGUsIG1fb3JpZ2luLAogICAgICAgICAg
ICAgICAgICAgICAgICAgRWZmZWN0czo6bm9uZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb25BZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQo
MCksCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgxKSk7CisjZW5kaWYK
ICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyZXN1bHQp
OwogICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAobV92YWx1ZS0+dHlwZSgpID09IEZsb2F0KSB7CiAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlKiBudW1lcmF0b3JBc0RvdWJsZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1
ZT4obV9pbmRleCwgRmxvYXRUb0RvdWJsZSwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDApKTsK
ICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGRlbm9taW5hdG9yQXNEb3VibGUgPSBtX2luc2Vy
dGlvblNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIEZsb2F0VG9Eb3VibGUsIG1fb3JpZ2luLCBt
X3ZhbHVlLT5jaGlsZCgxKSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgICAg
ICAgICBQYXRjaHBvaW50VmFsdWUqIGRvdWJsZU1vZCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxQ
YXRjaHBvaW50VmFsdWU+KG1faW5kZXgsIERvdWJsZSwgbV9vcmlnaW4pOworICAgICAgICAgICAg
ICAgICAgICBkb3VibGVNb2QtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6cmVnKEZQ
UkluZm86OnJldHVyblZhbHVlRlBSKSB9OworICAgICAgICAgICAgICAgICAgICBkb3VibGVNb2Qt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZG91YmxlTW9kLT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lz
dGVyc0ZvckpTQ2FsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlTW9kLT5hcHBlbmQo
bnVtZXJhdG9yQXNEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBkb3VibGVNb2QtPmFwcGVu
ZChkZW5vbWluYXRvckFzRG91YmxlKTsKKworICAgICAgICAgICAgICAgICAgICBkb3VibGVNb2Qt
PnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNhbGwoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihmbW9kRG91YmxlLCBOb1B0
clRhZykpLCBOb1B0clRhZyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICAgICAgZG91YmxlTW9kLT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2FsbCgpOworI2Vs
c2UKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGZ1bmN0aW9uQWRkcmVzcyA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgZm1vZERvdWJs
ZSk7CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBkb3VibGVNb2QgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8Q0NhbGxWYWx1ZT4obV9pbmRleCwgRG91YmxlLCBtX29yaWdpbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEVmZmVjdHM6Om5vbmUoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uQWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyYXRvckFzRG91
YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVub21pbmF0b3JBc0RvdWJsZSk7CisjZW5k
aWYKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxWYWx1ZT4obV9pbmRleCwgRG91YmxlVG9GbG9hdCwgbV9vcmlnaW4sIGRvdWJsZU1vZCk7
CiAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkocmVzdWx0
KTsKICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01hdGhFeHRyYXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM01hdGhFeHRyYXMuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNYXRoRXh0cmFzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ2FnZWRDQ2FsbC5oIgogI2luY2x1
ZGUgIkIzQ29uc3QzMlZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb25zdERvdWJsZVZhbHVlLmgiCiAj
aW5jbHVkZSAiQjNDb25zdFB0clZhbHVlLmgiCkBAIC01NywxMiArNTgsMTkgQEAgc3RkOjpwYWly
PEJhc2ljQmxvY2sqLCBWYWx1ZSo+IHBvd0RvdWJsZQogCiAgICAgLy8gRnVuY3Rpb24gY2FsbC4K
ICAgICBWYWx1ZSogeUFzRG91YmxlID0gZnVuY3Rpb25DYWxsQ2FzZS0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jZWR1cmUsIElUb0QsIG9yaWdpbiwgeSk7CisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgZG91YmxlICgqcG93RG91YmxlKShkb3VibGUsIGRvdWJsZSkgPSBwb3c7CisgICAgVmFsdWUq
IHBvd1Jlc3VsdCA9IGNhZ2VkQ0NhbGwocHJvY2VkdXJlLCBmdW5jdGlvbkNhbGxDYXNlLCBvcmln
aW4sIERvdWJsZSwgcG93RG91YmxlLCB4LCB5QXNEb3VibGUpOworICAgIFVwc2lsb25WYWx1ZSog
cG93UmVzdWx0VXBzaWxvbiA9IGZ1bmN0aW9uQ2FsbENhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFs
dWU+KHByb2NlZHVyZSwgb3JpZ2luLCBwb3dSZXN1bHQpOworI2Vsc2UKICAgICBhdXRvKiBwb3dE
b3VibGUgPSB0YWdDRnVuY3Rpb25QdHI8ZG91YmxlICgqKShkb3VibGUsIGRvdWJsZSk+KHBvdywg
QjNDQ2FsbFB0clRhZyk7CiAgICAgVmFsdWUqIHBvd1Jlc3VsdCA9IGZ1bmN0aW9uQ2FsbENhc2Ut
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPigKICAgICAgICAgcHJvY2VkdXJlLCBEb3VibGUsIG9yaWdp
biwKICAgICAgICAgZnVuY3Rpb25DYWxsQ2FzZS0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHBy
b2NlZHVyZSwgb3JpZ2luLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHBvd0RvdWJsZSkpLAogICAgICAg
ICB4LCB5QXNEb3VibGUpOwogICAgIFVwc2lsb25WYWx1ZSogcG93UmVzdWx0VXBzaWxvbiA9IGZ1
bmN0aW9uQ2FsbENhc2UtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2NlZHVyZSwgb3JpZ2lu
LCBwb3dSZXN1bHQpOworI2VuZGlmCiAgICAgZnVuY3Rpb25DYWxsQ2FzZS0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jZWR1cmUsIEp1bXAsIG9yaWdpbik7CiAgICAgZnVuY3Rpb25DYWxsQ2FzZS0+c2V0
U3VjY2Vzc29ycyhGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkocmV2aXNpb24g
MjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
Ygkod29ya2luZyBjb3B5KQpAQCAtMTI4NCw2ICsxMjg0LDE1IEBAIG9wIDpvcF9wdXRfYnlfdmFs
X3JldHVybl9sb2NhdGlvbgogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9wIDp3YXNtX2Z1
bmN0aW9uX3Byb2xvZ3VlX25vX3RscwogCitvcCA6b3BfY2FsbF9zbG93X3JldHVybl9sb2NhdGlv
bgorb3AgOm9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2Fs
bF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24K
K29wIDpvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb24K
K29wIDpvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2Nh
bGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbgorCisKIGVuZF9zZWN0aW9uIDpOYXRpdmVIZWxw
ZXJzCiAKIGJlZ2luX3NlY3Rpb24gOldhc20sCkBAIC0xMzA4LDYgKzEzMTcsMTEgQEAgb3AgOmVu
dGVyCiBvcCA6bm9wCiBvcCA6bG9vcF9oaW50CiAKK29wIDpjYWxsX3JldHVybl9sb2NhdGlvbgor
b3AgOmNhbGxfbm9fdGxzX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfaW5kaXJlY3RfcmV0dXJu
X2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVjdF9ub190bHNfcmV0dXJuX2xvY2F0aW9uCisKIG9w
IDptb3YsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVTaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaAkocmV2aXNpb24g
MjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZVNpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1l
bnVtIE9wY29kZVNpemUgeworZW51bSBPcGNvZGVTaXplIDogdW5zaWduZWQgewogICAgIE5hcnJv
dyA9IDEsCiAgICAgV2lkZTE2ID0gMiwKICAgICBXaWRlMzIgPSA0LAogfTsKIAorQUxXQVlTX0lO
TElORSB1bnNpZ25lZCBvcGNvZGVTaXplQXNJbmRleChPcGNvZGVTaXplIHNpemUpIHsgcmV0dXJu
IHNpemUgPj4gMTsgfQorCiB0ZW1wbGF0ZTxPcGNvZGVTaXplPgogc3RydWN0IFR5cGVCeVNpemU7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhNb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAkocmV2aXNp
b24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSB7
CiAgICAgbWFjcm8oQVRhbmgsIGF0YW5oKSBcCiAgICAgbWFjcm8oTG9nLCBsb2cpIFwKICAgICBt
YWNybyhMb2cxMCwgbG9nMTApIFwKLSAgICBtYWNybyhMb2cxcCwgbG9nMXApIFwKKyAgICBtYWNy
byhMb2cxcCwgb3BlcmF0aW9uTG9nMXApIFwKICAgICBtYWNybyhMb2cyLCBsb2cyKSBcCiAgICAg
bWFjcm8oQ2JydCwgY2JydCkgXAogICAgIG1hY3JvKEV4cCwgZXhwKSBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNTc5
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyMSw2ICszMjEsMTUgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246
CiAgICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlv
bl9wcm9sb2d1ZV9ub190bHM6CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGNhc2Ugb3BfY2Fs
bF9zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2NvbnN0cnVjdF9zbG93X3JldHVy
bl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb246CisgICAg
Y2FzZSBvcF90YWlsX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBv
cF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2Nh
bGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbjoKKyNlbmRpZgogICAgICAgICByZXR1cm4gQ2Fu
bm90Q29tcGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNiwxNiArMTI2LDI1IEBAIHZvaWQgT1NSRXhpdDo6ZW1pdFJlc3RvcmVBcmd1bWVudHMo
Q0NhbGwKICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKICAgICAgICAgc3dp
dGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIERpcmVjdEFyZ3VtZW50
c1RoYXRXZXJlTm90Q3JlYXRlZDoKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBq
aXQuY2FsbChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodW50YWdDb2RlUHRyPENGdW5j
dGlvblB0clRhZz4ob3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCkpLCBO
b1B0clRhZyk7CisjZWxzZQogICAgICAgICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNy
ZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmluZ0V4aXQpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Cisg
ICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcp
OworI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDbG9uZWRBcmd1bWVu
dHNUaGF0V2VyZU5vdENyZWF0ZWQ6CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAg
aml0LmNhbGwoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVudGFnQ29kZVB0cjxDRnVu
Y3Rpb25QdHJUYWc+KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50c0R1cmluZ0V4aXQpKSwg
Tm9QdHJUYWcpOworI2Vsc2UKICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25D
cmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9u
UHRyVGFnKTsKICAgICAgICAgaml0LnN0b3JlQ2VsbChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKIAogICAgICAgICBhbHJlYWR5
QWxsb2NhdGVkQXJndW1lbnRzLmFkZChpZCwgb3BlcmFuZC52aXJ0dWFsUmVnaXN0ZXIoKSk7CkBA
IC04NTIsNyArODYxLDcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMm
IAogCiAgICAgLy8gUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4KIAotICAgIHJlaWZ5SW5saW5l
ZENhbGxGcmFtZXMoaml0LCBleGl0KTsKKyAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKHZtLCBq
aXQsIGV4aXQpOwogCiAgICAgLy8gQW5kIGZpbmlzaC4KICAgICBhZGp1c3RBbmRKdW1wVG9UYXJn
ZXQodm0sIGppdCwgZXhpdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAyNTc5MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOCw4ICsxMDgsMTIgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRz
KFZNJiB2bSwgQ0NhbGxIZWxwZQogICAgIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlw
ZShvcGVyYXRpb25UcmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpPihHUFJJbmZvOjpyZWdUMCwgR1BS
SW5mbzo6cmVnVDMsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigmZXhpdCkpOwogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7Ci0gICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJh
dGlvblRyaWdnZXJSZW9wdGltaXphdGlvbk5vdykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaml0LmNhbGwoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHVudGFnQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KG9wZXJhdGlvblRyaWdnZXJSZW9w
dGltaXphdGlvbk5vdykpLCBOb1B0clRhZyk7CisjZWxzZQorICAgIGppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPih0
cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0
LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbmRpZgogICAg
IEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0aW5nID0gaml0Lmp1bXAoKTsKICAgICAK
ICAgICB0b29GZXdGYWlscy5saW5rKCZqaXQpOwpAQCAtMTQ5LDcgKzE1Myw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWwKICAgICBpZiAoY2FsbEJ5dGVjb2RlSW5k
ZXguY2hlY2twb2ludCgpKSB7CiAgICAgICAgIGlmICghY2FsbGVySXNMTEludCkKICAgICAgICAg
ICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5tX2hhc0xpbmtlZE9TUkV4aXQgPSB0cnVl
OwotICAgICAgICByZXR1cm4gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2tw
b2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lKTsKKyAgICAgICAgcmV0
dXJuIExMSW50OjpjaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmUoKTsK
ICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRh
cmdldDsKQEAgLTI0Myw4ICsyNDcsMTIgQEAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGNhbGxlZVNh
dmVTbG90KElubAogICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJz
OjpmcmFtZVBvaW50ZXJSZWdpc3Rlcik7CiB9CiAKLXZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1l
cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCit2b2lkIHJlaWZ5
SW5saW5lZENhbGxGcmFtZXMoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhp
dEJhc2UmIGV4aXQpCiB7CisjaWYgIUVOQUJMRShKSVRfQ0FHRSkKKyAgICBVTlVTRURfUEFSQU0o
dm0pOworI2VuZGlmCisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGxlYXZlIGhvbGVzIG9u
IHRoZSBzdGFjayB3aGVuIHBlcmZvcm1pbmcgYW4gT1NSIGV4aXQKICAgICAvLyBpbiBwcmVzZW5j
ZSBvZiBpbmxpbmVkIHRhaWwgY2FsbHMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NzUxMQpAQCAtMjY0LDcgKzI3Miw5IEBAIHZvaWQgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICAgICAgICAgaWYgKCF0cnVlQ2FsbGVyKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoaW5saW5lQ2FsbEZyYW1lLT5pc1RhaWwoKSk7CiAgICAgICAgICAg
ICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QzKTsK
LSNpZiBDUFUoQVJNNjRFKQorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdC5j
YWdlVG9KSVRSZWdpb24oR1BSSW5mbzo6cmVnVDMpOworI2VsaWYgQ1BVKEFSTTY0RSkKICAgICAg
ICAgICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJl
Z1QyKTsKICAgICAgICAgICAgIGppdC51bnRhZ1B0cihHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6
cmVnVDMpOwogICAgICAgICAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihpbmxpbmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCkgKyBzaXplb2Yodm9pZCopKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QyKTsKQEAgLTI4Niw3ICsy
OTYsMTEgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogICAgICAg
ICAgICAgICAgIGNhbGxlckZyYW1lR1BSID0gR1BSSW5mbzo6cmVnVDM7CiAgICAgICAgICAgICB9
CiAKLSNpZiBDUFUoQVJNNjRFKQorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGlm
ICghaXNKSVRQQyhqdW1wVGFyZ2V0LnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKSkgJiYgdm0u
Y2FuVXNlSklUKCkpCisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IHZtLm5hdGl2ZVRyYW1w
b2xpbmVGb3IoVGFnZ2VkTmF0aXZlRnVuY3Rpb24oYml0d2lzZV9jYXN0PGludHB0cl90PihqdW1w
VGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQudW50YWdnZWRFeGVjdXRh
YmxlQWRkcmVzcygpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxp
bmVDYWxsRnJhbWUtPnJldHVyblBDT2Zmc2V0KCkpKTsKKyNlbGlmIENQVShBUk02NEUpCiAgICAg
ICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNh
bGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSArIHNpemVvZih2b2lkKikpLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGp1bXBUYXJnZXQudW50YWdnZWRFeGVjdXRhYmxl
QWRkcmVzcygpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgICAgICAgICBqaXQudGFnUHRy
KEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKQEAgLTM0MSwxNCArMzU1LDI1
IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihWTSYgdm0sIENDYWwKIAogICAgIGppdC5z
ZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpPigmdm0sIG93
bmVyKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworI2lmIEVOQUJMRShKSVRf
Q0FHRSkKKyAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CisgICAgaml0LmNhbGwoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIodW50YWdDb2RlUHRyPENGdW5jdGlvblB0clRhZz4ob3BlcmF0
aW9uT1NSV3JpdGVCYXJyaWVyKSksIE5vUHRyVGFnKTsKKyNlbHNlCiAgICAgaml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKSksIHNjcmF0Y2gpOwogICAgIGppdC5jYWxsKHNj
cmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CisjZW5kaWYKIAogICAgIG93bmVySXNSZW1lbWJlcmVk
T3JJbkVkZW4ubGluaygmaml0KTsKIH0KIAogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0m
IHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiB7CisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorICAgIGNvbnN0IFB0clRhZyBkZXN0VGFnID0gTm9QdHJUYWc7Cisj
ZWxzZQorICAgIGNvbnN0IFB0clRhZyBkZXN0VGFnID0gT1NSRXhpdFB0clRhZzsKKyNlbmRpZgor
CiAgICAgaml0Lm1lbW9yeUZlbmNlKCk7CiAgICAgCiAgICAgaml0Lm1vdmUoCkBAIC0zOTIsMTUg
KzQxNywyNyBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsCiAgICAg
ICAgIGVsc2UgCiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpnZXRDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0g
dm0ubmF0aXZlVHJhbXBvbGluZUZvcihUYWdnZWROYXRpdmVGdW5jdGlvbihiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7CisjZW5kaWYKKwog
ICAgICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgewogICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjdXJyZW50SW5zdHJ1Y3Rpb24pLCBH
UFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDIs
ICZ2bS50YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cpOwogICAgICAgICB9CiAKKyNpZiBFTkFC
TEUoSklUX0NBR0UpCisgICAgICAgIC8vIENhZ2UgY2FsbGVyJ3MgTFIKKyAgICAgICAgaml0Lmxv
YWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBMTEludDo6UmVnaXN0ZXJzOjptZXRhZGF0
YVRhYmxlR1BSKTsKKyAgICAgICAgaml0LmNhZ2VUb0pJVFJlZ2lvbihMTEludDo6UmVnaXN0ZXJz
OjptZXRhZGF0YVRhYmxlR1BSKTsKKyAgICAgICAgaml0LnN0b3JlUHRyKExMSW50OjpSZWdpc3Rl
cnM6Om1ldGFkYXRhVGFibGVHUFIsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7CisjZW5kaWYK
KwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2Nr
Rm9yRXhpdC0+bWV0YWRhdGFUYWJsZSgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6bWV0YWRhdGFUYWJs
ZUdQUik7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2Rl
QmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBMTEludDo6UmVnaXN0ZXJz
OjpwYkdQUik7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJ5
dGVjb2RlSW5kZXgub2Zmc2V0KCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwY0dQUik7Ci0gICAgICAg
IGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1
dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dl
ZDxkZXN0VGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Y29kZUJsb2NrRm9yRXhpdC0+bV9oYXNMaW5rZWRPU1JFeGl0ID0gdHJ1ZTsKIApAQCAtNDE1LDcg
KzQ1Miw3IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGwKIAogICAg
ICAgICBBU1NFUlQoZGVzdGluYXRpb24pOwogCi0gICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5h
dGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
ICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxkZXN0VGFnPigpLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CiAgICAgfQogCiAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihKSVQ6OnN0YWNrUG9pbnRlck9mZnNldEZvcihjb2RlQmxvY2tGb3JFeGl0KSAq
IHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQXNzZW1ibHlI
ZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC00MjMsOSArNDYwLDEzIEBAIHZvaWQg
YWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGwKICAgICAgICAgLy8gU2luY2Ugd2Un
cmUganVtcGluZyB0byBvcF9jYXRjaCwgd2UgbmVlZCB0byBzZXQgY2FsbEZyYW1lRm9yQ2F0Y2gu
CiAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwgdm0uYWRk
cmVzc09mQ2FsbEZyYW1lRm9yQ2F0Y2goKSk7CiAgICAgfQotICAgIAorCisjaWYgRU5BQkxFKEpJ
VF9DQUdFKQorICAgIGppdC5mYXJKdW1wKE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3Mo
anVtcFRhcmdldCksIGRlc3RUYWcpOworI2Vsc2UKICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEdQUkluZm86OnJlZ1QyKTsKLSAgICBqaXQu
ZmFySnVtcChHUFJJbmZvOjpyZWdUMiwgT1NSRXhpdFB0clRhZyk7CisgICAgaml0LmZhckp1bXAo
R1BSSW5mbzo6cmVnVDIsIGRlc3RUYWcpOworI2VuZGlmCiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiB2b2lk
IGhhbmRsZUV4aXRDb3VudHMoVk0mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYp
Owotdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4
aXRCYXNlJik7Cit2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoVk0mLCBDQ2FsbEhlbHBlcnMm
LCBjb25zdCBPU1JFeGl0QmFzZSYpOwogdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mLCBD
Q2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxv
Y2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxG
cmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50KTsKIENDYWxsSGVscGVy
czo6QWRkcmVzcyBjYWxsZWVTYXZlU2xvdChJbmxpbmVDYWxsRnJhbWUqLCBDb2RlQmxvY2sqIGJh
c2VsaW5lQ29kZUJsb2NrLCBHUFJSZWcgY2FsbGVlU2F2ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ3NSw3ICs0NzUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhCiAgICAgfTsKIAogICAgIGF1dG8gbnVtYmVyT3AgPSBbXSAoZG91YmxlIGxlZnQsIGRvdWJs
ZSByaWdodCkgLT4gZG91YmxlIHsKLSAgICAgICAgcmV0dXJuIGpzTW9kKGxlZnQsIHJpZ2h0KTsK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbk1vZChsZWZ0LCByaWdodCk7CiAgICAgfTsKIAogICAg
IHJldHVybiBiaW5hcnlPcChnbG9iYWxPYmplY3QsIHZtLCBlbmNvZGVkT3AxLCBlbmNvZGVkT3Ay
LCBiaWdJbnRPcCwgbnVtYmVyT3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5
cGUgaW4gcmVtYWluZGVyIG9wZXJhdGlvbi4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDcgKzI3
Niw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YXRpY0UKIGludDMyX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXJyYXlJbmRleE9mU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQnV0dGVyZmx5KiwgSlNTdHJp
bmcqLCBpbnQzMl90KTsKLWludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4
T2ZWYWx1ZShKU0dsb2JhbE9iamVjdCosIEJ1dHRlcmZseSosIEVuY29kZWRKU1ZhbHVlLCBpbnQz
Ml90KTsKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZURv
dWJsZShKU0dsb2JhbE9iamVjdCosIEJ1dHRlcmZseSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90
KTsKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMy
T3JDb250aWd1b3VzKEpTR2xvYmFsT2JqZWN0KiwgQnV0dGVyZmx5KiwgRW5jb2RlZEpTVmFsdWUs
IGludDMyX3QpOwogCkBAIC0yOTYsOCArMjk1LDYgQEAgaW50NjRfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNvbnZlcnREbwogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTnVtYmVy
SXNJbnRlZ2VyKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwogCi1zaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBK
U0NlbGwqIHZhbHVlLCBKU0NlbGwqIHByb3RvKTsKLQogY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdSYXdPYmplY3QoVk0qLCBTdHJ1Y3R1cmUqLCBpbnQzMl90LCBCdXR0ZXJmbHkqKSBX
VEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0V2l0
aEJ1dHRlcmZseShWTSosIFN0cnVjdHVyZSosIEJ1dHRlcmZseSopIFdURl9JTlRFUk5BTDsKIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aElu
ZGV4aW5nSGVhZGVyQW5kVmVjdG9yTGVuZ3RoKFZNKiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVu
Z3RoLCBCdXR0ZXJmbHkqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NjEsNyArMTg2MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
dXJyZW50QmxvY2sKICAgICAgICAgQVNTRVJUKG1fY3VycmVudE5vZGUtPnNob3VsZEdlbmVyYXRl
KCkpOwogICAgICAgICAKICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkK
LSAgICAgICAgICAgIGRhdGFMb2dMbigiU3BlY3VsYXRpdmVKSVQgZ2VuZXJhdGluZyBOb2RlIEAi
LCAoaW50KW1fY3VycmVudE5vZGUtPmluZGV4KCksICIgKCIsIG1fY3VycmVudE5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkub2Zmc2V0KCksICIpIGF0IEpJVCBvZmZzZXQgMHgi
LCBtX2ppdC5kZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiU3BlY3VsYXRp
dmVKSVQgZ2VuZXJhdGluZyBOb2RlIEAiLCAoaW50KW1fY3VycmVudE5vZGUtPmluZGV4KCksICIg
KCIsIG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KCkub2Zmc2V0
KCksICIpIGF0IEpJVCBvZmZzZXQgMHgiLCBtX2ppdC5jdXJyZW50T2Zmc2V0KCkpOwogCiAgICAg
ICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZURGR0V4Y2VwdGlvbkhhbmRsaW5nKCkgJiYgKG1heUV4
aXQobV9qaXQuZ3JhcGgoKSwgbV9jdXJyZW50Tm9kZSkgIT0gRG9lc05vdEV4aXQgfHwgbV9jdXJy
ZW50Tm9kZS0+aXNUZXJtaW5hbCgpKSkKICAgICAgICAgICAgIG1faml0LmppdFJlbGVhc2VBc3Nl
cnROb0V4Y2VwdGlvbihtX2ppdC52bSgpKTsKQEAgLTU1OTQsNyArNTU5NCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZChOb2QKICAgICAgICAgRlBSUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKIAogICAgICAgICB1c2luZyBPcGVyYXRpb25UeXBlID0gRF9KSVRPcGVyYXRpb25f
REQ7Ci0gICAgICAgIGNhbGxPcGVyYXRpb248T3BlcmF0aW9uVHlwZT4oanNNb2QsIHJlc3VsdC5m
cHIoKSwgb3AxRlBSLCBvcDJGUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uPE9wZXJhdGlvblR5
cGU+KG9wZXJhdGlvbk1vZCwgcmVzdWx0LmZwcigpLCBvcDFGUFIsIG9wMkZQUik7CiAgICAgICAg
IAogICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNyArMjMwLDcgQEAgcHVibGlj
OgogICAgIEdQUlJlZyBhbGxvY2F0ZSgpCiAgICAgewogI2lmIEVOQUJMRShERkdfUkVHSVNURVJf
QUxMT0NBVElPTl9WQUxJREFUSU9OKQotICAgICAgICBtX2ppdC5hZGRSZWdpc3RlckFsbG9jYXRp
b25BdE9mZnNldChtX2ppdC5kZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgbV9qaXQuYWRkUmVnaXN0
ZXJBbGxvY2F0aW9uQXRPZmZzZXQobV9qaXQuY3VycmVudE9mZnNldCgpKTsKICNlbmRpZgogICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3BpbGxNZTsKICAgICAgICAgR1BSUmVnIGdwciA9IG1fZ3By
cy5hbGxvY2F0ZShzcGlsbE1lKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgR1BS
UmVnIGFsbG9jYXRlKEdQUlJlZyBzcGVjaWZpYykKICAgICB7CiAjaWYgRU5BQkxFKERGR19SRUdJ
U1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJT04pCi0gICAgICAgIG1faml0LmFkZFJlZ2lzdGVyQWxs
b2NhdGlvbkF0T2Zmc2V0KG1faml0LmRlYnVnT2Zmc2V0KCkpOworICAgICAgICBtX2ppdC5hZGRS
ZWdpc3RlckFsbG9jYXRpb25BdE9mZnNldChtX2ppdC5jdXJyZW50T2Zmc2V0KCkpOwogI2VuZGlm
CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzcGlsbE1lID0gbV9ncHJzLmFsbG9jYXRlU3BlY2lm
aWMoc3BlY2lmaWMpOwogICAgICAgICBpZiAoc3BpbGxNZS5pc1ZhbGlkKCkpIHsKQEAgLTI2OCw3
ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgRlBSUmVnIGZwckFsbG9jYXRlKCkKICAgICB7CiAjaWYg
RU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJT04pCi0gICAgICAgIG1faml0
LmFkZFJlZ2lzdGVyQWxsb2NhdGlvbkF0T2Zmc2V0KG1faml0LmRlYnVnT2Zmc2V0KCkpOworICAg
ICAgICBtX2ppdC5hZGRSZWdpc3RlckFsbG9jYXRpb25BdE9mZnNldChtX2ppdC5jdXJyZW50T2Zm
c2V0KCkpOwogI2VuZGlmCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzcGlsbE1lOwogICAgICAg
ICBGUFJSZWcgZnByID0gbV9mcHJzLmFsbG9jYXRlKHNwaWxsTWUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3
ICs4OCw5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3MKICNlbmRp
ZgogICAgIH0KIAotICAgIGppdC5mYXJKdW1wKE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJl
c3MoJnZtLm9zckV4aXRKdW1wRGVzdGluYXRpb24pLCBPU1JFeGl0UHRyVGFnKTsKKyAgICBHUFJS
ZWcgdGVtcCA9IGppdC5zY3JhdGNoUmVnaXN0ZXIoKTsKKyAgICBqaXQubG9hZFB0cigmdm0ub3Ny
RXhpdEp1bXBEZXN0aW5hdGlvbiwgdGVtcCk7CisgICAgaml0LmZhckp1bXAodGVtcCwgT1NSRXhp
dFB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lEKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJN
NjREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvQVJNNjREaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0RGlzYXNzZW1ibGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsMTAgKzM1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGJvb2wg
dHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8RGlzYXNzZW1ibHlQ
dHJUYWc+JiBjb2RlUHRyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0
cmVhbSYgb3V0KQogewotICAgIEE2NERPcGNvZGUgYXJtNjRPcGNvZGU7Ci0KICAgICB1aW50MzJf
dCogY3VycmVudFBDID0gY29kZVB0ci51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPHVpbnQzMl90
Kj4oKTsKICAgICBzaXplX3QgYnl0ZUNvdW50ID0gc2l6ZTsKKyAgICBBNjRET3Bjb2RlIGFybTY0
T3Bjb2RlKGN1cnJlbnRQQywgc2l6ZSAvIHNpemVvZih1aW50MzJfdCkpOwogCiAgICAgd2hpbGUg
KGJ5dGVDb3VudCkgewogICAgICAgICBjaGFyIHBjU3RyaW5nWzIwXTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NFZlcmlmaWVyLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0
VmVyaWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJBUk02NFZlcmlmaWVyLmgiCisKKyNpZiBFTkFCTEUoQVJNNjRfRElTQVNT
RU1CTEVSKQorCisjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSA8d3RmL0RhdGFM
b2cuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBib29sIHZlcmJvc2UgPSBmYWxzZTsK
Kwordm9pZCBKSVRDb2RlVmVyaWZpZXI6OmNoZWNrSW5zdHJ1Y3Rpb25BdChBNjRET3Bjb2RlOjpB
NjRJbnN0cnVjdGlvbiogYWRkcmVzcykKK3sKKyAgICBzaXplX3QgYmFkSW5zdHJ1Y3Rpb25Db3Vu
dCA9IDA7CisKKyAgICBpZiAoIW1fZGlzYXNzZW1ibGVyLmlzVmFsaWRJbnNuKGFkZHJlc3MsICph
ZGRyZXNzKSkgeworICAgICAgICAvLyBHaXZlIGVycm9yIG1lc3NhZ2UgYW5kIG9wdGlvbmFsbHkg
cHJvdmlkZSBkaXNhc3NlbWJseS4KKyAgICAgICAgKytiYWRJbnN0cnVjdGlvbkNvdW50OworCisg
ICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICBjaGFyIHBjU3RyaW5nWzIwXTsKKyAg
ICAgICAgICAgIHNucHJpbnRmKHBjU3RyaW5nLCBzaXplb2YocGNTdHJpbmcpLCAiMHglbHgiLCBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGxvbmc+KGFkZHJlc3MpKTsKKyAgICAgICAgICAgIGRh
dGFMb2dGKCJCQUQgSU5TVFJVQ1RJT04gYXQgJTE2czogJXNcbiIsIHBjU3RyaW5nLCBtX2Rpc2Fz
c2VtYmxlci5kaXNhc3NlbWJsZShhZGRyZXNzKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAodmVyYm9zZSAmJiBiYWRJbnN0cnVjdGlvbkNvdW50KQorICAgICAgICBkYXRhTG9nKCIhISEh
ICIsIGJhZEluc3RydWN0aW9uQ291bnQsICIgYmFkIGluc3RydWN0aW9uIiwgYmFkSW5zdHJ1Y3Rp
b25Db3VudCA9PSAxID8gIiIgOiAicyIsICJcbiIpOworCisgICAgUkVMRUFTRV9BU1NFUlQoIWJh
ZEluc3RydWN0aW9uQ291bnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShBUk02NF9ESVNBU1NFTUJMRVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUk02NF9ESVNBU1NF
TUJMRVIpCisKKyNpbmNsdWRlICJBNjRET3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit1
c2luZyBuYW1lc3BhY2UgSlNDOjpBUk02NERpc2Fzc2VtYmxlcjsKKworY2xhc3MgSklUQ29kZVZl
cmlmaWVyIHsKK3B1YmxpYzoKKyAgICBKSVRDb2RlVmVyaWZpZXIoQTY0RE9wY29kZTo6QTY0SW5z
dHJ1Y3Rpb24qIHN0YXJ0QWRkcmVzcywgc2l6ZV90IGNvdW50KQorICAgICAgICA6IG1fZGlzYXNz
ZW1ibGVyKHN0YXJ0QWRkcmVzcywgY291bnQpCisgICAgeworICAgIH0KKworICAgIHZvaWQgY2hl
Y2tJbnN0cnVjdGlvbkF0KEE2NERPcGNvZGU6OkE2NEluc3RydWN0aW9uKiBhZGRyZXNzKTsKKwor
cHJpdmF0ZToKKyAgICBBNjRET3Bjb2RlIG1fZGlzYXNzZW1ibGVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoQVJNNjRfRElTQVNTRU1CTEVSKQorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQv
QTY0RE9wY29kZS5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDE2ICsyNiwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKEFSTTY0X0RJ
U0FTU0VNQkxFUikKLQogI2luY2x1ZGUgIkE2NERPcGNvZGUuaCIKIAorI2luY2x1ZGUgIkV4ZWN1
dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJKSVREZXN0aW5hdGlvbldoaXRlbGlzdC5oIgor
I2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0
ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QVJNNjREaXNhc3NlbWJsZXIgewogCi1BNjRET3Bjb2RlOjpPcGNvZGVHcm91cCogQTY0RE9wY29k
ZTo6b3Bjb2RlVGFibGVbMzJdOworY29uc3QgYm9vbCB2ZXJib3NlVmFsaWRhdGlvbiA9IGZhbHNl
OwogCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlOjpzX2NvbmRpdGlvbk5hbWVzWzE2XSA9
IHsKICAgICAiZXEiLCAibmUiLCAiaHMiLCAibG8iLCAibWkiLCAicGwiLCAidnMiLCAidmMiLApA
QCAtNTQsMTE1ICs1NiwxMDEgQEAgY29uc3QgY2hhciBBNjRET3Bjb2RlOjpzX0ZQUmVnaXN0ZXJQ
cmVmaQogICAgICdiJywgJ2gnLCAncycsICdkJywgJ3EnCiB9OwogCi1zdHJ1Y3QgT3Bjb2RlR3Jv
dXBJbml0aWFsaXplciB7Ci0gICAgdW5zaWduZWQgbV9vcGNvZGVHcm91cE51bWJlcjsKLSAgICB1
aW50MzJfdCBtX21hc2s7Ci0gICAgdWludDMyX3QgbV9wYXR0ZXJuOwotICAgIGNvbnN0IGNoYXIq
ICgqbV9mb3JtYXQpKEE2NERPcGNvZGUqKTsKLX07Ci0KLSNkZWZpbmUgT1BDT0RFX0dST1VQX0VO
VFJZKGdyb3VwSW5kZXgsIGdyb3VwQ2xhc3MpIFwKLXsgZ3JvdXBJbmRleCwgZ3JvdXBDbGFzczo6
bWFzaywgZ3JvdXBDbGFzczo6cGF0dGVybiwgZ3JvdXBDbGFzczo6Zm9ybWF0IH0KLQotc3RhdGlj
IGNvbnN0IE9wY29kZUdyb3VwSW5pdGlhbGl6ZXIgb3Bjb2RlR3JvdXBMaXN0W10gPSB7Ci0gICAg
T1BDT0RFX0dST1VQX0VOVFJZKDB4MDgsIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3RlclBhaXIp
LAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDA4LCBBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVz
aXZlKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwOSwgQTY0RE9wY29kZUxvYWRTdG9yZVJl
Z2lzdGVyUGFpciksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGEsIEE2NERPcGNvZGVMb2dp
Y2FsU2hpZnRlZFJlZ2lzdGVyKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwYiwgQTY0RE9w
Y29kZUFkZFN1YnRyYWN0RXh0ZW5kZWRSZWdpc3RlciksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MGIsIEE2NERPcGNvZGVBZGRTdWJ0cmFjdFNoaWZ0ZWRSZWdpc3RlciksCi0gICAgT1BDT0RF
X0dST1VQX0VOVFJZKDB4MTEsIEE2NERPcGNvZGVBZGRTdWJ0cmFjdEltbWVkaWF0ZSksCi0gICAg
T1BDT0RFX0dST1VQX0VOVFJZKDB4MTIsIEE2NERPcGNvZGVNb3ZlV2lkZSksCi0gICAgT1BDT0RF
X0dST1VQX0VOVFJZKDB4MTIsIEE2NERPcGNvZGVMb2dpY2FsSW1tZWRpYXRlKSwKLSAgICBPUENP
REVfR1JPVVBfRU5UUlkoMHgxMywgQTY0RE9wY29kZUJpdGZpZWxkKSwKLSAgICBPUENPREVfR1JP
VVBfRU5UUlkoMHgxMywgQTY0RE9wY29kZUV4dHJhY3QpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRS
WSgweDE0LCBBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSksCi0gICAgT1BD
T0RFX0dST1VQX0VOVFJZKDB4MTQsIEE2NERPcGNvZGVDb25kaXRpb25hbEJyYW5jaEltbWVkaWF0
ZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTQsIEE2NERPcGNvZGVDb21wYXJlQW5kQnJh
bmNoSW1tZWRpYXRlKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxNCwgQTY0T3Bjb2RlRXhj
ZXB0aW9uR2VuZXJhdGlvbiksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTUsIEE2NERPcGNv
ZGVVbmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlko
MHgxNSwgQTY0RE9wY29kZUNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlKSwKLSAgICBPUENPREVf
R1JPVVBfRU5UUlkoMHgxNSwgQTY0RE9wY29kZUNvbXBhcmVBbmRCcmFuY2hJbW1lZGlhdGUpLAot
ICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE1LCBBNjRET3Bjb2RlSGludCksCi0gICAgT1BDT0RF
X0dST1VQX0VOVFJZKDB4MTUsIEE2NERPcGNvZGVTeXN0ZW1TeW5jKSwKLSAgICBPUENPREVfR1JP
VVBfRU5UUlkoMHgxNSwgQTY0RE9wY29kZU1TUkltbWVkaWF0ZSksCi0gICAgT1BDT0RFX0dST1VQ
X0VOVFJZKDB4MTUsIEE2NERPcGNvZGVNU1JPck1SU1JlZ2lzdGVyKSwKLSAgICBPUENPREVfR1JP
VVBfRU5UUlkoMHgxNiwgQTY0RE9wY29kZVVuY29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGUpLAot
ICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE2LCBBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5j
aFJlZ2lzdGVyKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxNiwgQTY0RE9wY29kZVRlc3RB
bmRCcmFuY2hJbW1lZGlhdGUpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE3LCBBNjRET3Bj
b2RlVW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MTcsIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXIpLAotICAgIE9QQ09E
RV9HUk9VUF9FTlRSWSgweDE3LCBBNjRET3Bjb2RlVGVzdEFuZEJyYW5jaEltbWVkaWF0ZSksCi0g
ICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTgsIEE2NERPcGNvZGVMb2FkU3RvcmVJbW1lZGlhdGUp
LAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE4LCBBNjRET3Bjb2RlTG9hZFN0b3JlUmVnaXN0
ZXJPZmZzZXQpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE4LCBBNjRET3Bjb2RlTG9hZFN0
b3JlQXV0aGVudGljYXRlZCksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTksIEE2NERPcGNv
ZGVMb2FkU3RvcmVVbnNpZ25lZEltbWVkaWF0ZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4
MWEsIEE2NERPcGNvZGVDb25kaXRpb25hbFNlbGVjdCksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MWEsIEE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzFTb3VyY2UpLAotICAgIE9QQ09ERV9HUk9V
UF9FTlRSWSgweDFhLCBBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcyU291cmNlKSwKLSAgICBPUENP
REVfR1JPVVBfRU5UUlkoMHgxYiwgQTY0RE9wY29kZURhdGFQcm9jZXNzaW5nM1NvdXJjZSksCi0g
ICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MWMsIEE2NERPcGNvZGVMb2FkU3RvcmVJbW1lZGlhdGUp
LAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDFjLCBBNjRET3Bjb2RlTG9hZFN0b3JlUmVnaXN0
ZXJPZmZzZXQpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDFkLCBBNjRET3Bjb2RlTG9hZFN0
b3JlVW5zaWduZWRJbW1lZGlhdGUpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDFlLCBBNjRE
T3Bjb2RlRmxvYXRpbmdQb2ludENvbXBhcmUpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDFl
LCBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbmRpdGlvbmFsU2VsZWN0KSwKLSAgICBPUENPREVf
R1JPVVBfRU5UUlkoMHgxZSwgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2luZzJT
b3VyY2UpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDFlLCBBNjRET3Bjb2RlRmxvYXRpbmdQ
b2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MWUs
IEE2NERPcGNvZGVGbG9hdGluZ0ZpeGVkUG9pbnRDb252ZXJzaW9ucyksCi0gICAgT1BDT0RFX0dS
T1VQX0VOVFJZKDB4MWUsIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25z
KSwKK2NvbnN0IEE2NERPcGNvZGU6Ok9wY29kZUdyb3VwIEE2NERPcGNvZGU6OnNfb3Bjb2RlR3Jv
dXBbc19vcGNvZGVHcm91cENvdW50XSA9IHsKKyNkZWZpbmUgQVJNNjRfT1BHUk9VUF9FTlRSWShn
cm91cENsYXNzLCBiaXRzMjRUbzI4Li4uKSBcCisgICAgeyBBNjRET3Bjb2RlOjpPcGNvZGVHcm91
cElEOjpncm91cENsYXNzLCB7IGJpdHMyNFRvMjggfSwgZ3JvdXBDbGFzczo6bWFzaywgZ3JvdXBD
bGFzczo6cGF0dGVybiwgXAorICAgICAgICBncm91cENsYXNzOjpmb3JtYXQsIGdyb3VwQ2xhc3M6
OmlzVmFsaWQgfSwKKyAgICAgICAgRk9SX0VBQ0hfQVJNNjRfT1BHUk9VUChBUk02NF9PUEdST1VQ
X0VOVFJZKQorI3VuZGVmIEFSTTY0X09QR1JPVVBfRU5UUlkKIH07CiAKIGJvb2wgQTY0RE9wY29k
ZTo6c19pbml0aWFsaXplZCA9IGZhbHNlOwogCitBNjRET3Bjb2RlOjpPcGNvZGVHcm91cExpc3RO
b2RlKiBBNjRET3Bjb2RlOjpzX29wY29kZVRhYmxlWzMyXTsKKwogdm9pZCBBNjRET3Bjb2RlOjpp
bml0KCkKIHsKICAgICBpZiAoc19pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
T3Bjb2RlR3JvdXAqIGxhc3RHcm91cHNbMzJdOworICAgIE9wY29kZUdyb3VwTGlzdE5vZGUqIGxh
c3RHcm91cHNbMzJdOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDMyOyBpKyspIHsK
LSAgICAgICAgb3Bjb2RlVGFibGVbaV0gPSAwOwotICAgICAgICBsYXN0R3JvdXBzW2ldID0gMDsK
KyAgICAgICAgc19vcGNvZGVUYWJsZVtpXSA9IG51bGxwdHI7CisgICAgICAgIGxhc3RHcm91cHNb
aV0gPSBudWxscHRyOwogICAgIH0KIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
b2Yob3Bjb2RlR3JvdXBMaXN0KSAvIHNpemVvZihzdHJ1Y3QgT3Bjb2RlR3JvdXBJbml0aWFsaXpl
cik7IGkrKykgewotICAgICAgICBPcGNvZGVHcm91cCogbmV3T3Bjb2RlR3JvdXAgPSBuZXcgT3Bj
b2RlR3JvdXAob3Bjb2RlR3JvdXBMaXN0W2ldLm1fbWFzaywgb3Bjb2RlR3JvdXBMaXN0W2ldLm1f
cGF0dGVybiwgb3Bjb2RlR3JvdXBMaXN0W2ldLm1fZm9ybWF0KTsKLSAgICAgICAgdWludDMyX3Qg
b3Bjb2RlR3JvdXBOdW1iZXIgPSBvcGNvZGVHcm91cExpc3RbaV0ubV9vcGNvZGVHcm91cE51bWJl
cjsKLQotICAgICAgICBpZiAoIW9wY29kZVRhYmxlW29wY29kZUdyb3VwTnVtYmVyXSkKLSAgICAg
ICAgICAgIG9wY29kZVRhYmxlW29wY29kZUdyb3VwTnVtYmVyXSA9IG5ld09wY29kZUdyb3VwOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBsYXN0R3JvdXBzW29wY29kZUdyb3VwTnVtYmVyXS0+
c2V0TmV4dChuZXdPcGNvZGVHcm91cCk7Ci0gICAgICAgIGxhc3RHcm91cHNbb3Bjb2RlR3JvdXBO
dW1iZXJdID0gbmV3T3Bjb2RlR3JvdXA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNf
b3Bjb2RlR3JvdXBDb3VudDsgaSsrKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgZ3JvdXBOdW1i
ZXJJbmRleCA9IDA7IGdyb3VwTnVtYmVySW5kZXggPCBzX21heE9wY29kZUdyb3VwTnVtYmVycyAm
JiBzX29wY29kZUdyb3VwW2ldLm1fb3Bjb2RlR3JvdXBOdW1iZXJzW2dyb3VwTnVtYmVySW5kZXhd
OyArK2dyb3VwTnVtYmVySW5kZXgpIHsKKyAgICAgICAgICAgIE9wY29kZUdyb3VwTGlzdE5vZGUq
IG5ld09wY29kZUdyb3VwTGlzdE5vZGUgPSBuZXcgT3Bjb2RlR3JvdXBMaXN0Tm9kZShzX29wY29k
ZUdyb3VwW2ldLm1fbWFzaywgc19vcGNvZGVHcm91cFtpXS5tX3BhdHRlcm4sIHNfb3Bjb2RlR3Jv
dXBbaV0pOworICAgICAgICAgICAgdWludDMyX3Qgb3Bjb2RlR3JvdXBOdW1iZXIgPSBzX29wY29k
ZUdyb3VwW2ldLm1fb3Bjb2RlR3JvdXBOdW1iZXJzW2dyb3VwTnVtYmVySW5kZXhdOworCisgICAg
ICAgICAgICBpZiAoIXNfb3Bjb2RlVGFibGVbb3Bjb2RlR3JvdXBOdW1iZXJdKQorICAgICAgICAg
ICAgICAgIHNfb3Bjb2RlVGFibGVbb3Bjb2RlR3JvdXBOdW1iZXJdID0gbmV3T3Bjb2RlR3JvdXBM
aXN0Tm9kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsYXN0R3JvdXBzW29w
Y29kZUdyb3VwTnVtYmVyXS0+c2V0TmV4dChuZXdPcGNvZGVHcm91cExpc3ROb2RlKTsKKyAgICAg
ICAgICAgIGxhc3RHcm91cHNbb3Bjb2RlR3JvdXBOdW1iZXJdID0gbmV3T3Bjb2RlR3JvdXBMaXN0
Tm9kZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHNfaW5pdGlhbGl6ZWQgPSB0cnVlOwogfQog
Ci12b2lkIEE2NERPcGNvZGU6OnNldFBDQW5kT3Bjb2RlKHVpbnQzMl90KiBuZXdQQywgdWludDMy
X3QgbmV3T3Bjb2RlKQordm9pZCBBNjRET3Bjb2RlOjpzZXRQQ0FuZE9wY29kZShBNjRJbnN0cnVj
dGlvbiogbmV3UEMsIEE2NEluc3RydWN0aW9uIG5ld09wY29kZSkKIHsKICAgICBtX2N1cnJlbnRQ
QyA9IG5ld1BDOwogICAgIG1fb3Bjb2RlID0gbmV3T3Bjb2RlOwotICAgIG1fYnVmZmVyT2Zmc2V0
ID0gMDsKLSAgICBtX2Zvcm1hdEJ1ZmZlclswXSA9ICdcMCc7CiB9CiAKLWNvbnN0IGNoYXIqIEE2
NERPcGNvZGU6OmRpc2Fzc2VtYmxlKHVpbnQzMl90KiBjdXJyZW50UEMpCitib29sIEE2NERPcGNv
ZGU6OmlzVmFsaWRKSVRUYXJnZXQodm9pZCogYWRkcikKIHsKLSAgICBzZXRQQ0FuZE9wY29kZShj
dXJyZW50UEMsICpjdXJyZW50UEMpOworICAgIC8vIEEgYnJhbmNoIHRhcmdldCBhZGRyZXNzIG11
c3QgYmUgaW4gdGhlIEpJVCByZWdpb24gYW5kIHBvaW50IHRvIGEgcGFyYWdyYXBoIGFkZHJlc3Ms
CisgICAgLy8gaXQgY2FuIHBvaW50IHRvIHRoZSBjdXJyZW50IGluc3RydWN0aW9uIGlmIGl0IGhh
c24ndCBiZWVuIGxpbmtlZCB0byBpdHMgdGFyZ2V0LCBvciB0byB0aGUgbmV4dCBpbnN0cnVjdGlv
bgorICAgIC8vIG1ha2luZyBpdCBhIE5PUC4KKyAgICByZXR1cm4gaXNKSVRQQyhhZGRyKSAmJiAo
IShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYWRkcikgJiAweGYpIHx8IGFkZHIgPT0gY3Vy
cmVudFBDKCkgfHwgYWRkciA9PSAoY3VycmVudFBDKCkgKyAxKSk7Cit9CisKK0E2NERPcGNvZGU6
Ok9wY29kZUdyb3VwSUQgQTY0RE9wY29kZTo6b3Bjb2RlR3JvdXBJRChBNjRJbnN0cnVjdGlvbiBp
bnNuKQoreworICAgIGlmIChjb25zdCBPcGNvZGVHcm91cCogb3BHcm91cCA9IG9wY29kZUdyb3Vw
KGluc24pKQorICAgICAgICByZXR1cm4gb3BHcm91cC0+Z3JvdXBJRCgpOwogCi0gICAgT3Bjb2Rl
R3JvdXAqIG9wR3JvdXAgPSBvcGNvZGVUYWJsZVtvcGNvZGVHcm91cE51bWJlcihtX29wY29kZSld
OworICAgIHJldHVybiBPcGNvZGVHcm91cElEOjpJbnZhbGlkT3Bjb2RlR3JvdXA7Cit9CiAKLSAg
ICB3aGlsZSAob3BHcm91cCkgewotICAgICAgICBpZiAob3BHcm91cC0+bWF0Y2hlcyhtX29wY29k
ZSkpCi0gICAgICAgICAgICByZXR1cm4gb3BHcm91cC0+Zm9ybWF0KHRoaXMpOwotICAgICAgICBv
cEdyb3VwID0gb3BHcm91cC0+bmV4dCgpOwotICAgIH0KK0E2NERPcGNvZGU6Ok9wY29kZUdyb3Vw
SUQgQTY0RE9wY29kZTo6b3Bjb2RlR3JvdXBJREZvclByaW9ySW5zbih1bnNpZ25lZCBwcmlvck9m
ZnNldCkKK3sKKyAgICBBNjRJbnN0cnVjdGlvbiogaW5zbkFkZHJlc3MgPSBtX2N1cnJlbnRQQyAt
IHByaW9yT2Zmc2V0OworICAgIGlmIChpbnNuQWRkcmVzcyA8IG1fc3RhcnRBZGRyZXNzKQorICAg
ICAgICByZXR1cm4gT3Bjb2RlR3JvdXBJRDo6SW52YWxpZE9wY29kZUdyb3VwOworCisgICAgaWYg
KGNvbnN0IE9wY29kZUdyb3VwKiBvcEdyb3VwID0gb3Bjb2RlR3JvdXAoKmluc25BZGRyZXNzKSkK
KyAgICAgICAgcmV0dXJuIG9wR3JvdXAtPmdyb3VwSUQoKTsKKworICAgIHJldHVybiBPcGNvZGVH
cm91cElEOjpJbnZhbGlkT3Bjb2RlR3JvdXA7Cit9CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGU6
OmRpc2Fzc2VtYmxlKEE2NEluc3RydWN0aW9uKiBjdXJyZW50UEMpCit7CisgICAgc2V0UENBbmRP
cGNvZGUoY3VycmVudFBDLCAqY3VycmVudFBDKTsKKyAgICByZXNldEZvcm1hdCgpOworCisgICAg
aWYgKGNvbnN0IE9wY29kZUdyb3VwKiBvcEdyb3VwID0gb3Bjb2RlR3JvdXAobV9vcGNvZGUpKQor
ICAgICAgICByZXR1cm4gb3BHcm91cC0+Zm9ybWF0KHRoaXMpOwogCiAgICAgcmV0dXJuIEE2NERP
cGNvZGU6OmZvcm1hdCgpOwogfQogCitib29sIEE2NERPcGNvZGU6OmlzVmFsaWRJbnNuKEE2NElu
c3RydWN0aW9uKiBwYywgQTY0SW5zdHJ1Y3Rpb24gaW5zbikKK3sKKyAgICBzZXRQQ0FuZE9wY29k
ZShwYywgaW5zbik7CisKKyAgICBpZiAoY29uc3QgT3Bjb2RlR3JvdXAqIG9wR3JvdXAgPSBvcGNv
ZGVHcm91cChpbnNuKSkKKyAgICAgICAgcmV0dXJuIG9wR3JvdXAtPmlzVmFsaWQodGhpcyk7CisK
KyAgICByZXR1cm4gQTY0RE9wY29kZTo6aXNWYWxpZCgpOworfQorCiB2b2lkIEE2NERPcGNvZGU6
OmJ1ZmZlclByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIHsKICAgICBpZiAobV9idWZm
ZXJPZmZzZXQgPj0gYnVmZmVyU2l6ZSkKQEAgLTIyOSw2ICsyMTcsMTEgQEAgY29uc3QgY2hhciog
QTY0RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsK
IH0KIAorYm9vbCBBNjRET3Bjb2RlQWRkU3VidHJhY3RJbW1lZGlhdGU6OmlzVmFsaWQoKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlQWRkU3VidHJhY3RF
eHRlbmRlZFJlZ2lzdGVyOjpmb3JtYXQoKQogewogICAgIGlmIChpbW1lZGlhdGUzKCkgPiA0KQpA
QCAtMjU3LDYgKzI1MCwxMSBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlQWRkU3VidHJhY3RFeHRl
bmRlCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERPcGNvZGVBZGRT
dWJ0cmFjdEV4dGVuZGVkUmVnaXN0ZXI6OmlzVmFsaWQoKQoreworICAgIHJldHVybiB0cnVlOwor
fQorCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlQWRkU3VidHJhY3RTaGlmdGVkUmVnaXN0ZXI6OmZv
cm1hdCgpCiB7CiAgICAgaWYgKCFpczY0Qml0KCkgJiYgaW1tZWRpYXRlNigpICYgMHgyMCkKQEAg
LTI4OSw2ICsyODcsMTcgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRl
ZAogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlQWRkU3Vi
dHJhY3RTaGlmdGVkUmVnaXN0ZXI6OmlzVmFsaWQoKQoreworICAgIGlmICghaXM2NEJpdCgpICYm
IGltbWVkaWF0ZTYoKSAmIDB4MjApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChz
aGlmdCgpID09IDB4MykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVCaXRmaWVsZDo6c19vcE5hbWVzWzNd
ID0geyAic2JmbSIsICJiZm0iLCAidWJmbSIgfTsKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNv
ZGVCaXRmaWVsZDo6c19leHRlbmRQc2V1ZG9PcE5hbWVzWzNdWzNdID0gewogICAgIHsgInN4dGIi
LCAic3h0aCIsICJzeHR3IiB9LCB7IDAsIDAsIDB9ICwgeyAidXh0YiIsICJ1eHRoIiwgInV4dHci
IH0gfTsKQEAgLTM5Niw2ICs0MDUsMjAgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUJpdGZpZWxk
Ojpmb3JtYXQoKQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bj
b2RlQml0ZmllbGQ6OmlzVmFsaWQoKQoreworICAgIGlmIChvcGMoKSA9PSAweDMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChpczY0Qml0KCkgIT0gbkJpdCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzNjRCaXQoKSAmJiAoKGltbWVkaWF0ZVIoKSAmIDB4
MjApIHx8IChpbW1lZGlhdGVTKCkgJiAweDIwKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlQ29tcGFyZUFuZEJy
YW5jaEltbWVkaWF0ZTo6Zm9ybWF0KCkKIHsKICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BC
aXQoKSA/ICJjYm56IiA6ICJjYnoiKTsKQEAgLTQwNSw2ICs0MjgsMTcgQEAgY29uc3QgY2hhciog
QTY0RE9wY29kZUNvbXBhcmVBbmRCcmFuY2hJbQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsK
IH0KIAorYm9vbCBBNjRET3Bjb2RlQ29tcGFyZUFuZEJyYW5jaEltbWVkaWF0ZTo6aXNWYWxpZCgp
Cit7CisgICAgaWYgKCFpc1ZhbGlkSklUVGFyZ2V0KHBjUmVsYXRpdmVBZGRyZXNzKHN0YXRpY19j
YXN0PGludDMyX3Q+KGltbWVkaWF0ZTE5KCkpKSkpIHsKKyAgICAgICAgaWYgKHZlcmJvc2VWYWxp
ZGF0aW9uKQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBGb3VuZCAlcyB0YXJnZXRpbmcgaW5j
b3JyZWN0IEpJVCBhZGRyZXNzICglcClcbiIsIG9wQml0KCkgPyAiY2JueiIgOiAiY2J6IiwgcGNS
ZWxhdGl2ZUFkZHJlc3Moc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW1tZWRpYXRlMTkoKSkpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25z
dCBjaGFyKiBBNjRET3Bjb2RlQ29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGU6OmZvcm1hdCgpCiB7
CiAgICAgYnVmZmVyUHJpbnRmKCIgICBiLiUtNS41cyIsIGNvbmRpdGlvbk5hbWUoY29uZGl0aW9u
KCkpKTsKQEAgLTQxMiw2ICs0NDYsMTcgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUNvbmRpdGlv
bmFsQnJhbmNoSQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bj
b2RlQ29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGU6OmlzVmFsaWQoKQoreworICAgIGlmICghaXNW
YWxpZEpJVFRhcmdldChwY1JlbGF0aXZlQWRkcmVzcyhzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1l
ZGlhdGUxOSgpKSkpKSB7CisgICAgICAgIGlmICh2ZXJib3NlVmFsaWRhdGlvbikKKyAgICAgICAg
ICAgIGRhdGFMb2dGKCIgICAgRm91bmQgYi4lLTUuNXMgdGFyZ2V0aW5nIGluY29ycmVjdCBKSVQg
YWRkcmVzcyAgJXBcbiIsIGNvbmRpdGlvbk5hbWUoY29uZGl0aW9uKCkpLCBwY1JlbGF0aXZlQWRk
cmVzcyhzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1lZGlhdGUxOSgpKSkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIGNv
bnN0IEE2NERPcGNvZGVDb25kaXRpb25hbFNlbGVjdDo6c19vcE5hbWVzWzRdID0gewogICAgICJj
c2VsIiwgImNzaW5jIiwgImNzaW52IiwgImNzbmVnIgogfTsKQEAgLTQ1Myw2ICs0OTgsMTcgQEAg
Y29uc3QgY2hhciogQTY0RE9wY29kZUNvbmRpdGlvbmFsU2VsZWN0OgogCiB9CiAKK2Jvb2wgQTY0
RE9wY29kZUNvbmRpdGlvbmFsU2VsZWN0Ojppc1ZhbGlkKCkKK3sKKyAgICBpZiAoc0JpdCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAob3AyKCkgJiAweDIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBjb25zdCBB
NjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcxU291cmNlOjpzX29wTmFtZXNbOF0gPSB7CiAgICAgInJi
aXQiLCAicmV2MTYiLCAicmV2MzIiLCAicmV2IiwgImNseiIsICJjbHMiLCAwLCAwCiB9OwpAQCAt
NDY4LDExICs1MjQsMTEgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZURhdGFQcm9jZXNzaW5nMVNv
dQogICAgIGlmIChzQml0KCkpCiAgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsK
IAotICAgIGlmIChvcENvZGUyKCkgPT0gMSAmJiBpczY0Qml0KCkgJiYgb3BDb2RlKCkgPD0gMHgx
MDAxKSB7Ci0gICAgICAgIGlmIChvcENvZGUoKSA8PSAweDAwMTExIHx8IHJ0KCkgPT0gMHgxMTEx
MSkgeworICAgIGlmIChvcENvZGUyKCkgPT0gMSAmJiBpczY0Qml0KCkgJiYgb3BDb2RlKCkgPD0g
MTcpIHsKKyAgICAgICAgaWYgKG9wQ29kZSgpIDw9IDcgfHwgcm4oKSA9PSAweDFmKSB7CiAgICAg
ICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoc19wYWNBdXRPcE5hbWVzW29wQ29kZSgpXSk7
CiAgICAgICAgICAgICBhcHBlbmRaUk9yUmVnaXN0ZXJOYW1lKHJkKCksIGlzNjRCaXQoKSk7Ci0g
ICAgICAgICAgICBpZiAob3BDb2RlKCkgPD0gMHgwMDExMSkgeworICAgICAgICAgICAgaWYgKG9w
Q29kZSgpIDw9IDcpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKICAgICAg
ICAgICAgICAgICBhcHBlbmRaUk9yUmVnaXN0ZXJOYW1lKHJuKCksIGlzNjRCaXQoKSk7CiAgICAg
ICAgICAgICB9CkBAIC00ODQsMTYgKzU0MCwxNSBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRGF0
YVByb2Nlc3NpbmcxU291CiAgICAgaWYgKG9wQ29kZTIoKSkKICAgICAgICAgcmV0dXJuIEE2NERP
cGNvZGU6OmZvcm1hdCgpOwogCi0gICAgaWYgKG9wQ29kZSgpICYgMHgzOCkKKyAgICBpZiAob3BD
b2RlKCkgPiAweDUpCiAgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKIAotICAg
IGlmICgob3BDb2RlKCkgJiAweDNlKSA9PSAweDYpCisgICAgaWYgKCFpczY0Qml0KCkgJiYgb3BD
b2RlKCkgPT0gMHgzKQogICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CiAKICAg
ICBpZiAoaXM2NEJpdCgpICYmIG9wQ29kZSgpID09IDB4MykKLSAgICAgICAgcmV0dXJuIEE2NERP
cGNvZGU6OmZvcm1hdCgpOwotCi0gICAgaWYgKCFpczY0Qml0KCkgJiYgb3BDb2RlKCkgPT0gMHgy
KQorICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoInJldjY0Iik7CisgICAgZWxzZSBpZiAo
IWlzNjRCaXQoKSAmJiBvcENvZGUoKSA9PSAweDIpCiAgICAgICAgIGFwcGVuZEluc3RydWN0aW9u
TmFtZSgicmV2Iik7CiAgICAgZWxzZQogICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BO
YW1lKCkpOwpAQCAtNTA0LDYgKzU1OSwzMiBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRGF0YVBy
b2Nlc3NpbmcxU291CiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERP
cGNvZGVEYXRhUHJvY2Vzc2luZzFTb3VyY2U6OmlzVmFsaWQoKQoreworICAgIGlmIChzQml0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChvcENvZGUyKCkgPT0gMSAmJiBpczY0
Qml0KCkgJiYgb3BDb2RlKCkgPD0gMTcpIHsKKyAgICAgICAgaWYgKG9wQ29kZSgpID09IDMgfHwg
b3BDb2RlKCkgPT0gNyB8fCAob3BDb2RlKCkgPT0gMTcgJiYgcm4oKSA9PSAweDFmKSkgeworICAg
ICAgICAgICAgLy8gV2Ugb25seSBhbGxvdyB0aGUgZGF0YSBzaWduaW5nIGluc3RydWN0aW9ucyBw
YWNkYiwgYXV0ZGIgJiB4cGFjZAorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAob3BDb2Rl
MigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAob3BDb2RlKCkgPiAweDUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXM2NEJpdCgpICYmIG9wQ29kZSgpID09
IDB4MykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNv
bnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzJTb3VyY2U6OnNfb3BOYW1l
c1sxNl0gPSB7CiAgICAgLy8gV2UgdXNlIHRoZSBwc2V1ZG8tb3AgbmFtZXMgZm9yIHRoZSBzaGlm
dC9yb3RhdGUgaW5zdHJ1Y3Rpb25zCiAgICAgMCwgMCwgInVkaXYiLCAic2RpdiIsIDAsIDAsIDAs
IDAsCkBAIC01MzgsNiArNjE5LDI3IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVEYXRhUHJvY2Vz
c2luZzJTb3UKICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29k
ZURhdGFQcm9jZXNzaW5nMlNvdXJjZTo6aXNWYWxpZCgpCit7CisgICAgaWYgKHNCaXQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCEob3BDb2RlKCkgJiAweDNlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG9wQ29kZSgpICYgMHgzMCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKChvcENvZGUoKSAmIDB4M2MpID09IDB4NCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgY2hhciogb3Bjb2RlTmFtZSA9IG9wTmFtZSgpOwor
ICAgIGlmICghb3Bjb2RlTmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzNT
b3VyY2U6OnNfb3BOYW1lc1sxNl0gPSB7CiAgICAgIm1hZGQiLCAibXN1YiIsICJzbWFkZGwiLCAi
c21zdWJsIiwgInNtdWxoIiwgMCwgMCwgMCwKICAgICAwLCAwLCAidW1hZGRsIiwgInVtc3VibCIs
ICJ1bXVsaCIsIDAsIDAsIDAKQEAgLTU4MSw2ICs2ODMsMjYgQEAgY29uc3QgY2hhciogQTY0RE9w
Y29kZURhdGFQcm9jZXNzaW5nM1NvdQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAor
Ym9vbCBBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmczU291cmNlOjppc1ZhbGlkKCkKK3sKKyAgICBp
ZiAob3A1NCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAob3BOdW0oKSA+IDEy
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzNjRCaXQoKSAmJiBvcE51bSgp
ID4gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFvcE5hbWUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKChvcE51bSgpICYgMHg0KSAmJiAocmEoKSAhPSAz
MSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25z
dCBjaGFyKiBBNjRPcGNvZGVFeGNlcHRpb25HZW5lcmF0aW9uOjpmb3JtYXQoKQogewogICAgIGNv
bnN0IGNoYXIqIG9wbmFtZSA9IDA7CkBAIC02MzEsNiArNzUzLDE0IEBAIGNvbnN0IGNoYXIqIEE2
NE9wY29kZUV4Y2VwdGlvbkdlbmVyYXRpb24KICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiB9
CiAKK2Jvb2wgQTY0T3Bjb2RlRXhjZXB0aW9uR2VuZXJhdGlvbjo6aXNWYWxpZCgpCit7CisgICAg
Ly8gQWxsb3cgYnJrICMwIGFuZCBub3RoaW5nIGVsc2UKKyAgICBpZiAob3BjKCkgPT0gMHgxICYm
ICFvcDIoKSAmJiAhbGwoKSAmJiAhaW1tZWRpYXRlMTYoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRXh0cmFjdDo6
Zm9ybWF0KCkKIHsKICAgICBpZiAob3AyMSgpIHx8IG8wQml0KCkpCkBAIC02NTksNiArNzg5LDIw
IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVFeHRyYWN0Ojpmb3JtYXQoKQogICAgIHJldHVybiBt
X2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlRXh0cmFjdDo6aXNWYWxpZCgpCit7
CisgICAgaWYgKG9wMjEoKSB8fCBvMEJpdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoaXM2NEJpdCgpICE9IG5CaXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKCFpczY0Qml0KCkgJiYgKGltbWVkaWF0ZVMoKSAmIDB4MjApKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY29uc3QgY2hhciogQTY0RE9wY29kZUZs
b2F0aW5nUG9pbnRDb21wYXJlOjpmb3JtYXQoKQogewogICAgIGlmIChtQml0KCkpCkBAIC02ODgs
NiArODMyLDI2IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50Q29tcGEKICAg
ICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZUZsb2F0aW5nUG9p
bnRDb21wYXJlOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAobUJpdCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoc0JpdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAodHlwZSgpICYgMHgyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAob3AoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG9wQ29kZTIoKSAmIDB4NykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIEE2
NERPcGNvZGVGbG9hdGluZ1BvaW50Q29uZGl0aW9uYWxTZWxlY3Q6OmZvcm1hdCgpCiB7CiAgICAg
aWYgKG1CaXQoKSkKQEAgLTcxMiw2ICs4NzYsMjAgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUZs
b2F0aW5nUG9pbnRDb25kaQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBB
NjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbmRpdGlvbmFsU2VsZWN0Ojppc1ZhbGlkKCkKK3sKKyAg
ICBpZiAobUJpdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKHNCaXQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICh0eXBlKCkgJiAweDIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFy
KiBjb25zdCBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZTo6c19v
cE5hbWVzWzE2XSA9IHsKICAgICAiZm1vdiIsICJmYWJzIiwgImZuZWciLCAiZnNxcnQiLCAiZmN2
dCIsICJmY3Z0IiwgMCwgImZjdnQiLAogICAgICJmcmludG4iLCAiZnJpbnRwIiwgImZyaW50bSIs
ICJmcmludHoiLCAiZnJpbnRhIiwgMCwgImZyaW50eCIsICJmcmludGkiCkBAIC03NjIsNiArOTQw
LDM3IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50RGF0YVAKICAgICByZXR1
cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnREYXRh
UHJvY2Vzc2luZzFTb3VyY2U6OmlzVmFsaWQoKQoreworICAgIGlmIChtQml0KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChzQml0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChvcE51bSgpID4gMTYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3
aXRjaCAodHlwZSgpKSB7CisgICAgY2FzZSAwOgorICAgICAgICBpZiAoKG9wTnVtKCkgPT0gMHg0
KSB8fCAob3BOdW0oKSA9PSAweDYpIHx8IChvcE51bSgpID09IDB4ZCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgaWYgKChv
cE51bSgpID09IDB4NSkgfHwgKG9wTnVtKCkgPT0gMHg2KSB8fCAob3BOdW0oKSA9PSAweGQpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIDM6CisgICAgICAgIGlmICgob3BOdW0oKSA8
IDB4NCkgfHwgKG9wTnVtKCkgPiAweDUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY29uc3QgY2hhciog
Y29uc3QgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2luZzJTb3VyY2U6OnNfb3BO
YW1lc1sxNl0gPSB7CiAgICAgImZtdWwiLCAiZmRpdiIsICJmYWRkIiwgImZzdWIiLCAiZm1heCIs
ICJmbWluIiwgImZtYXhubSIsICJmbWlubm0iLCAiZm5tdWwiCiB9OwpAQCAtNzkxLDYgKzEwMDAs
MjMgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUZsb2F0aW5nUG9pbnREYXRhUAogICAgIHJldHVy
biBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQ
cm9jZXNzaW5nMlNvdXJjZTo6aXNWYWxpZCgpCit7CisgICAgaWYgKG1CaXQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKHNCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKHR5cGUoKSAmIDB4MikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KG9wTnVtKCkgPiA4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZUZsb2F0aW5nRml4ZWRQb2ludENvbnZl
cnNpb25zOjpzX29wTmFtZXNbNF0gPSB7CiAgICAgImZjdnR6cyIsICJmY3Z0enUiLCAic2N2dGYi
LCAidWN2dGYiCiB9OwpAQCAtODQwLDYgKzEwNjYsMzUgQEAgY29uc3QgY2hhciogQTY0RE9wY29k
ZUZsb2F0aW5nRml4ZWRQb2ludAogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9v
bCBBNjRET3Bjb2RlRmxvYXRpbmdGaXhlZFBvaW50Q29udmVyc2lvbnM6OmlzVmFsaWQoKQorewor
ICAgIGlmIChzQml0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh0eXBlKCkg
JiAweDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChvcGNvZGUoKSAmIDB4NCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCEocm1vZGUoKSAmIDB4MSkgJiYgIShv
cGNvZGUoKSAmIDB4NikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgocm1vZGUo
KSAmIDB4MSkgJiYgKG9wY29kZSgpICYgMHg2KSA9PSAweDIpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghKHJtb2RlKCkgJiAweDIpICYmICEob3Bjb2RlKCkgJiAweDYpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKHJtb2RlKCkgJiAweDIpICYmIChvcGNvZGUo
KSAmIDB4NikgPT0gMHgyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzNjRC
aXQoKSAmJiBzY2FsZSgpID49IDMyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRJ
bnRlZ2VyQ29udmVyc2lvbnM6OnNfb3BOYW1lc1szMl0gPSB7CiAgICAgImZjdnRucyIsICJmY3Z0
bnUiLCAic2N2dGYiLCAidWN2dGYiLCAiZmN2dGFzIiwgImZjdnRhdSIsICJmbW92IiwgImZtb3Yi
LAogICAgICJmY3Z0cHMiLCAiZmN2dHB1IiwgMCwgMCwgMCwgMCwgImZtb3YiLCAiZm1vdiIsCkBA
IC05MDgsNiArMTE2MywzNSBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludElu
dGVnCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERPcGNvZGVGbG9h
dGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25zOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAoc0JpdCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodHlwZSgpID09IDB4MykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCgocm1vZGUoKSAmIDB4MSkgfHwgKHJtb2RlKCkg
JiAweDIpKSAmJiAoKChvcGNvZGUoKSAmIDB4NikgPT0gMHgyKSB8fCAoKG9wY29kZSgpICYgMHg2
KSA9PSAweDQpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCh0eXBlKCkgPT0g
MHgyKSAmJiAoIShvcGNvZGUoKSAmIDB4NCkgfHwgKChvcGNvZGUoKSAmIDB4NikgPT0gMHg0KSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdHlwZSgpICYmIChybW9kZSgpICYg
MHgxKSAmJiAoKG9wY29kZSgpICYgMHg2KSA9PSAweDYpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoaXM2NEJpdCgpICYmIHR5cGUoKSA9PSAweDIgJiYgKChvcE51bSgpICYgMHhl
KSA9PSAweDYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW9wTmFtZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKChvcE51bSgpICYgMHgxZSkgPT0gMHhl
KSAmJiAoIWlzNjRCaXQoKSB8fCAodHlwZSgpICE9IDB4MikpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY29uc3QgY2hhciogQTY0RE9wY29kZU1TUklt
bWVkaWF0ZTo6Zm9ybWF0KCkKIHsKICAgICBjb25zdCBjaGFyKiBwc3RhdGVGaWVsZCA9IG51bGxw
dHI7CkBAIC05MzUsNiArMTIxOSwxMSBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlTVNSSW1tZWRp
YXRlOjpmb3JtCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERPcGNv
ZGVNU1JJbW1lZGlhdGU6OmlzVmFsaWQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogY29u
c3QgY2hhciogQTY0RE9wY29kZU1TUk9yTVJTUmVnaXN0ZXI6OmZvcm1hdCgpCiB7CiAgICAgYXBw
ZW5kSW5zdHJ1Y3Rpb25OYW1lKG9wTmFtZSgpKTsKQEAgLTk4NCw2ICsxMjczLDM1IEBAIGNvbnN0
IGNoYXIqIEE2NERPcGNvZGVNU1JPck1SU1JlZ2lzdGVyOjoKICAgICByZXR1cm4gbV9mb3JtYXRC
dWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZU1TUk9yTVJTUmVnaXN0ZXI6OmlzVmFsaWQoKQor
eworICAgIHN3aXRjaCAoc3lzdGVtUmVnaXN0ZXIoKSkgeworICAgIGNhc2UgMGIxMTAxMTAwMDAw
MDAwMDAxOgorICAgICAgICAvLyBjdHJfZWwwCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNh
c2UgMGIxMTAxMTAxMDAwMDEwMDAwOgorICAgICAgICAvLyBuemN2CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGNhc2UgMGIxMTAxMTAxMDAwMDEwMDAxOgorICAgICAgICAvLyBkYWlmCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIDBiMTEwMTEwMTAwMDEwMDAwMDoKKyAgICAgICAg
Ly8gZnBjcgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIDBiMTEwMTEwMTAwMDEwMDAw
MToKKyAgICAgICAgLy8gZnBzcgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIDBiMTEw
MTExMTAxMDAwMDAxMDoKKyAgICAgICAgLy8gdHBpZHJfZWwwCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGNhc2UgMGIxMTAxMTExMDEwMDAwMDExOgorICAgICAgICAvLyB0cGlkcnIwX2VsMCAo
cmVhZCBvbmx5KQorICAgICAgICByZXR1cm4gbEJpdCgpOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKwogY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZUhpbnQ6OnNfb3BOYW1lc1sz
Ml0gPSB7CiAgICAgIm5vcCIsICJ5aWVsZCIsICJ3ZmUiLCAid2ZpIiwgInNldiIsICJzZXZsIiwg
MCwgInhwYWNscmkiLAogICAgICJwYWNpYTE3MTYiLCAwLCAicGFjaWIxNzE2IiwgMCwgImF1dGlh
MTcxNiIsIDAsICJhdXRpYjE3MTYiLCAwLApAQCAtOTkxLDYgKzEzMDksMTUgQEAgY29uc3QgY2hh
ciogY29uc3QgQTY0RE9wY29kZUhpbnQ6OnNfb3BOYQogICAgICJwYWNpYXoiLCAicGFjaWFzcCIs
ICJwYWNpYnoiLCAicGFjaWJzcCIsICJhdXRpYXoiLCAiYXV0aWFzcCIsICJhdXRpYnoiLCAiYXV0
aWJzcCIKIH07CiAKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVIaW50OjpvcE5hbWUoKQoreworICAg
IGNvbnN0IGNoYXIqIG9wTmFtZSA9IChpbW1lZGlhdGU3KCkgPCAzMiA/IHNfb3BOYW1lc1tpbW1l
ZGlhdGU3KCldIDogMCk7CisgICAgaWYgKCFvcE5hbWUpCisgICAgICAgIHJldHVybiAiaGludCI7
CisKKyAgICByZXR1cm4gb3BOYW1lOworfQorCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlSGludDo6
Zm9ybWF0KCkKIHsKICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOwpAQCAtMTAw
MSwxMyArMTMyOCwyNTAgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUhpbnQ6OmZvcm1hdCgpCiAg
ICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCi1jb25zdCBjaGFyKiBBNjRET3Bjb2RlSGlu
dDo6b3BOYW1lKCkKK2Jvb2wgQTY0RE9wY29kZUhpbnQ6OmlzVmFsaWQoKQogewotICAgIGNvbnN0
IGNoYXIqIG9wTmFtZSA9IChpbW1lZGlhdGU3KCkgPCAzMiA/IHNfb3BOYW1lc1tpbW1lZGlhdGU3
KCldIDogMCk7Ci0gICAgaWYgKCFvcE5hbWUpCi0gICAgICAgIHJldHVybiAiaGludCI7CisgICAg
Ly8gT25seSBhbGxvdyBub3AuCisgICAgaWYgKCFpbW1lZGlhdGU3KCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KIAotICAgIHJldHVybiBvcE5hbWU7Citjb25z
dCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlU0lNRFRocmVlU2FtZTo6c19pbnRPcE5hbWVzWzY0XSA9
IHsKKyAgICAic2hhZGQiLCAic3FhZGQiLCAic3JoYWRkIiwgMCwgInNoc3ViIiwgInNxc3ViIiwg
ImNtZ3QiLCAiY21nZSIsCisgICAgInNzaGwiLCAic3FzaGwiLCAic3JzaGwiLCAic3Fyc2hsIiwg
InNtYXgiLCAic21pbiIsICJzYWJkIiwgInNhYmEiLAorICAgICJhZGQiLCAiY210c3QiLCAibWxh
IiwgIm11bCIsICJzbWF4cCIsICJzbWlucCIsICJzcWRtdWxoIiwgImFkZHAiLAorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsCisgICAgInVoYWRkIiwgInVxYWRkIiwgInVyaGFkZCIsIDAsICJ1
aHN1YiIsICJ1cXN1YiIsICJjbWhpIiwgImNtaHMiLAorICAgICJ1c2hsIiwgInVxc2hsIiwgInVy
c2hsIiwgInVxcnNobCIsICJ1bWF4IiwgInVtaW4iLCAidWFiZCIsICJ1YWJhIiwKKyAgICAic3Vi
IiwgImNtZXEiLCAibWxzIiwgInBtdWwiLCAidW1heHAiLCAidW1pbnAiLCAic3FyZG11bGgiLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCit9OworCitjb25zdCBjaGFyKiBjb25zdCBB
NjRET3Bjb2RlU0lNRFRocmVlU2FtZTo6c19mcE9wTmFtZXNbMzJdID0geworICAgICJmbWF4bm0i
LCAiZm1sYSIsICJmYWRkIiwgImZtdWx4IiwgImZjbWVxIiwgMCwgImZtYXgiLCAiZnJlY3BzIiwK
KyAgICAiZm1pbm5tIiwgImZtbHMiLCAiZnN1YiIsIDAsIDAsICJmbWxzbCIsICJmbWluIiwgImZy
c3FydHMiLAorICAgICJmbWF4bm1wIiwgImZtbGFsIiwgImZhZGRwIiwgImZtdWwiLCAiZmNtZ2Ui
LCAiZm1heHAiLCAiZmRpdiIsCisgICAgImZtaW5ubXAiLCAiZm1sc2wiLCAiZmFiZCIsIDAsICJm
Y21ndCIsICJmYWNndCIsICJmbWlucCIsIDAKK307CisKK2NvbnN0IGNoYXIqIGNvbnN0IEE2NERP
cGNvZGVTSU1EVGhyZWVTYW1lOjpzX2JpdE9wTmFtZXNbOF0gPSB7CisgICAgImFuZCIsICJiaWMi
LCAib3JyIiwgIm9ybiIsICJlb3IiLCAiYnNsIiwgImJpdCIsICJiaWYiCit9OworCisKK2NvbnN0
IGNoYXIqIEE2NERPcGNvZGVTSU1EVGhyZWVTYW1lOjpvcE5hbWUoKQoreworICAgIGlmIChpc0Jp
dE9wKCkpCisgICAgICAgIHJldHVybiBzX2JpdE9wTmFtZXNbdUJpdCgpIDw8IDIgfCBzaXplKCld
OworCisgICAgaWYgKG9wY29kZSgpID49IDBiMTEwMDApIHsKKyAgICAgICAgaWYgKCF1Qml0KCkg
JiYgb3Bjb2RlKCkgPT0gMGIxMTEwMSAmJiBzaXplKCkgJiAwYjEpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKHVCaXQoKSAmJiBvcGNvZGUoKSA9PSAwYjExMDAxICYm
IHNpemUoKSAmIDBiMSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAo
dUJpdCgpICYmIG9wY29kZSgpID09IDBiMTEwMDEpCisgICAgICAgICAgICByZXR1cm4gIXNpemUo
KSA/ICJmbWxhbDIiIDogImZtbHNsMiI7CisgICAgICAgIHJldHVybiBzX2ZwT3BOYW1lc1t1Qml0
KCkgPDwgNCB8IChzaXplKCkgJiAwYjEwKSA8PCAyIHwgKG9wY29kZSgpICYgMGIxMTEpXTsKKyAg
ICB9CisKKyAgICByZXR1cm4gc19pbnRPcE5hbWVzW3VCaXQoKSA8PCA1IHwgb3Bjb2RlKCldOwor
fQorCitjb25zdCBjaGFyKiBBNjRET3Bjb2RlU0lNRFRocmVlU2FtZTo6bW9kaWZpZXIoKQorewor
ICAgIGlmIChpc0JpdE9wKCkpCisgICAgICAgIHJldHVybiBxQml0KCkgPyAiMTZiIiA6ICI4YiI7
CisgICAgCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVT
SU1EVGhyZWVTYW1lOjpmb3JtYXQoKQoreworICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBvcE5hbWUo
KTsKKyAgICBjb25zdCBjaGFyKiBzaXplTW9kID0gbW9kaWZpZXIoKTsKKyAgICBpZiAoIW5hbWUg
fHwgIXNpemVNb2QpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAg
IGFwcGVuZEluc3RydWN0aW9uTmFtZVdpdGhNb2RpZmllcihuYW1lLCBzaXplTW9kKTsKKyAgICBh
cHBlbmRTSU1EUmVnaXN0ZXJOYW1lKHJkKCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAg
IGFwcGVuZFNJTURSZWdpc3Rlck5hbWUocm4oKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7Cisg
ICAgYXBwZW5kU0lNRFJlZ2lzdGVyTmFtZShybSgpKTsKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZm
ZXI7Cit9CisKK2Jvb2wgQTY0RE9wY29kZVNJTURUaHJlZVNhbWU6OmlzVmFsaWQoKQoreworICAg
IGlmICghb3BOYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1vZGlmaWVy
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3Qg
Y2hhciogY29uc3QgQTY0RE9wY29kZVN5c3RlbUluc3Q6OnNfYXRPcHMxMDAwWzE2XSA9IHsKKyAg
ICAiczFlMXIiLCAiczFlMXciLCAiczFlMHIiLCAiczFlMHciLCAiczFlMnIiLCAiczFlMnciLCAw
LCAwLAorICAgICJzMTJlMXIiLCAiczEyZTFyIiwgInMxMmUwciIsICJzMTJlMHciLCAiczFlM3Ii
LCAiczFlM3ciLCAwLCAwCit9OworCitjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlU3lzdGVt
SW5zdDo6c19kY09wczAwMFsxNl0gPSB7CisgICAgMCwgIml2YWMiLCAiaXN3IiwgImlndmFjIiwg
Imlnc3ciLCAiaWdkdmFjIiwgImlnZHN3IiwgMCwKKyAgICAwLCAiY3N3IiwgImNnc3ciLCAiY2dk
c3ciLCAwLCAiY2lzdyIsICJjaWdzdyIsICJjaWdkc3ciCit9OworCitjb25zdCBjaGFyKiBjb25z
dCBBNjRET3Bjb2RlU3lzdGVtSW5zdDo6c19kY09wczExMVszMl0gPSB7CisgICAgMCwgInp2YSIs
IDAsICJndmEiLCAiZ3p2YSIsIDAsIDAsIDAsCisgICAgImN2YWMiLCAiY2d2YWMiLCAiY2dkdmFj
IiwgMCwgImN2YXUiLCAwLCAwLCAwLAorICAgICJjdmFwIiwgImNndmFwIiwgImNnZHZhcCIsIDAs
ICJjdmFkcCIsICJjZ3ZhZHAiLCAiY2dkdnNhZHAiLCAwLAorICAgICJjaXZhYyIsICJjaWd2YWMi
LCAiY2lnZHZhYyIsIDAsIDAsIDAsIDAsIDAKK307CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVT
eXN0ZW1JbnN0Ojpmb3JtYXQoKQoreworICAgIGF1dG8gZ2VuZXJpY1N5cyA9IFsmXSgpIHsKKyAg
ICAgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKCJzeXMiKTsKKyAgICAgICAgYXBwZW5kQ2hhcmFj
dGVyKCcjJyk7CisgICAgICAgIGFwcGVuZFVuc2lnbmVkSW1tZWRpYXRlKG9wMSgpKTsKKyAgICAg
ICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVuZENoYXJhY3RlcignQycpOworICAg
ICAgICBhcHBlbmRVbnNpZ25lZEltbWVkaWF0ZShjck4oKSk7CisgICAgICAgIGFwcGVuZFNlcGFy
YXRvcigpOworICAgICAgICBhcHBlbmRDaGFyYWN0ZXIoJ0MnKTsKKyAgICAgICAgYXBwZW5kVW5z
aWduZWRJbW1lZGlhdGUoY3JNKCkpOworICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAg
ICAgYXBwZW5kQ2hhcmFjdGVyKCcjJyk7CisgICAgICAgIGFwcGVuZFVuc2lnbmVkSW1tZWRpYXRl
KG9wMigpKTsKKyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVuZFpST3JS
ZWdpc3Rlck5hbWUocnQoKSk7CisgICAgICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKyAgICB9
OworCisgICAgY29uc3QgY2hhciogb3BOYW1lID0gbnVsbHB0cjsKKworICAgIGlmIChjck4oKSA9
PSA3KSB7CisgICAgICAgIGlmIChvcDEoKSA9PSAzICYmIGNyTSgpID09IDMpIHsKKyAgICAgICAg
ICAgIGlmIChvcDIoKSA9PSA0KQorICAgICAgICAgICAgICAgIG9wTmFtZSA9ICJjZnAiOworICAg
ICAgICAgICAgZWxzZSBpZiAob3AyKCkgPT0gNSkKKyAgICAgICAgICAgICAgICBvcE5hbWUgPSAi
ZHZwIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9wMigpID09IDcpCisgICAgICAgICAgICAgICAg
b3BOYW1lID0gImNwcCI7CisKKyAgICAgICAgICAgIGlmIChvcE5hbWUpIHsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKTsKKyAgICAgICAgICAgICAgICBhcHBl
bmRTdHJpbmcoInJjdHgiKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRaUk9yUmVnaXN0ZXJOYW1lKHJ0KCkpOworICAgICAgICAgICAg
ICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIGdlbmVyaWNTeXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoY3JNKCkp
IHsKKyAgICAgICAgY2FzZSAxOiAvLyBQb3NzaWJseSBJQyBJQUxMVUlTCisgICAgICAgIGNhc2Ug
NTogLy8gcG9zc2libHkgSUMgSUFMTFUgb3IgSUMgSVZBVQorICAgICAgICAgICAgaWYgKCFvcDEo
KSAmJiAhb3AyKCkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoImlj
Iik7CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGNyTSgpID09IDEgPyAiaWFsbHVpcyIg
OiAiaWFsbHUiKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAg
ICAgICAgICBhcHBlbmRaUk9yUmVnaXN0ZXJOYW1lKHJ0KCkpOworICAgICAgICAgICAgICAgIHJl
dHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcDEo
KSA9PSAzICYmIG9wMigpID09IDEpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRJbnN0cnVjdGlv
bk5hbWUoImljIik7CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKCJpdmF1Iik7CisgICAg
ICAgICAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICAgICAgYXBwZW5kWlJP
clJlZ2lzdGVyTmFtZShydCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9mb3JtYXRCdWZm
ZXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDQ6
CisgICAgICAgIGNhc2UgNjoKKyAgICAgICAgY2FzZSAxMDoKKyAgICAgICAgY2FzZSAxMToKKyAg
ICAgICAgY2FzZSAxMjoKKyAgICAgICAgY2FzZSAxMzoKKyAgICAgICAgY2FzZSAxNDoKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBQb3NzaWJseSBEQyB2YXJpYW50cworICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGRjT3AgPSBudWxscHRyOworCisgICAgICAgICAgICAgICAg
aWYgKCFvcDEoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY3JNKCkgPT0gMGIwMTEwKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZGNPcCA9IHNfZGNPcHMwMDBbb3AyKCldOworICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChjck0oKSA9PSAwYjEwMTApCisgICAgICAgICAgICAgICAg
ICAgICAgICBkY09wID0gc19kY09wczAwMFs4ICsgb3AyKCldOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGlmIChvcDEoKSA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChjck0oKSA9PSAwYjAxMDApCisgICAgICAgICAgICAgICAgICAgICAgICBkY09wID0gc19k
Y09wczExMVtvcDIoKV07CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wMigpICYgMSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRjT3AgPSBzX2RjT3BzMDAwWzggKyAoY3JNKCkgLSAx
MCkgKiA0ICsgKG9wMigpID4+IDEpXTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoZGNPcCkgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5h
bWUoImRjIik7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFN0cmluZyhkY09wKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFpST3JSZWdpc3Rlck5hbWUocnQoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
X2Zvcm1hdEJ1ZmZlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgLy8gcG9zc2libHkgQVQgdmFyaWFudHMKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBhdE9wID0gbnVsbHB0cjsKKworICAgICAgICAgICAgICAgIGlmICghb3AxKCkgJiYgb3AyKCkg
PCAwYjEwMCkKKyAgICAgICAgICAgICAgICAgICAgYXRPcCA9IHNfYXRPcHMxMDAwW29wMigpXTsK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChvcDEoKSA9PSA0KQorICAgICAgICAgICAgICAgICAg
ICBhdE9wID0gc19hdE9wczEwMDBbNCArIG9wMigpXTsKKyAgICAgICAgICAgICAgICBlbHNlIGlm
IChvcDEoKSA9PSA2KQorICAgICAgICAgICAgICAgICAgICBhdE9wID0gc19hdE9wczEwMDBbMTIg
KyBvcDIoKV07CisKKyAgICAgICAgICAgICAgICBpZiAoYXRPcCkgeworICAgICAgICAgICAgICAg
ICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoImF0Iik7CisgICAgICAgICAgICAgICAgICAgIGFw
cGVuZFN0cmluZyhhdE9wKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7
CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFpST3JSZWdpc3Rlck5hbWUocnQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA5OgorICAg
ICAgICAgICAgLy8gcG9zc2libHkgQVQgdmFyaWFudHMKKyAgICAgICAgICAgIGlmICghb3AxKCkg
JiYgIShvcDIoKSAmIDBiMTEwKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZEluc3RydWN0aW9u
TmFtZSgiYXQiKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmcoIW9wMigpID8gInMxZTFy
cCIgOiAiczFlMXdwIik7CisgICAgICAgICAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAg
ICAgICAgICAgICAgYXBwZW5kWlJPclJlZ2lzdGVyTmFtZShydCgpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gZ2VuZXJpY1N5cygpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmlj
U3lzKCk7Cit9CisKK2Jvb2wgQTY0RE9wY29kZVN5c3RlbUluc3Q6OmlzVmFsaWQoKQoreworICAg
IC8vIE9ubHkgYWxsb3cgZGMgCisgICAgaWYgKG9wMSgpID09IDBiMTEgJiYgY3JOKCkgPT0gMGIw
MTExICYmIGNyTSgpID09IDBiMDEwMCAmJiBvcDIoKSA9PSAwYjAwMSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERP
cGNvZGVTeXN0ZW1TeW5jOjpzX29wTmFtZXNbOF0gPSB7CkBAIC0xMDQ0LDYgKzE2MDgsMTQgQEAg
Y29uc3QgY2hhciogQTY0RE9wY29kZVN5c3RlbVN5bmM6OmZvcm1hdAogICAgIHJldHVybiBtX2Zv
cm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlU3lzdGVtU3luYzo6aXNWYWxpZCgpCit7
CisgICAgaWYgKCFvcE5hbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNp
dmU6OnNfb3BOYW1lc1s2NF0gPSB7CiAgICAgInN0eHJiIiwgInN0bHhyYiIsIDAsIDAsICJsZHhy
YiIsICJsZGF4cmIiLCAwLCAwLAogICAgIDAsICJzdGxyYiIsIDAsIDAsIDAsICJsZGFyYiIsIDAs
IDAsCkBAIC0xMDk3LDYgKzE2NjksMjkgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUxvYWRTdG9y
ZUV4Y2x1c2l2ZQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bj
b2RlTG9hZFN0b3JlRXhjbHVzaXZlOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAobzIoKSAmJiAhbzEo
KSAmJiAhbzAoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG8yKCkgJiYgbzEo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKChzaXplKCkgPCAyKSAmJiBvMSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobG9hZEJpdCgpICYmIChycygpICE9
IDB4MWYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzUGFpck9wKCkgJiYg
KHJ0MigpICE9IDB4MWYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW9wTmFt
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLy8g
QSB6ZXJvIGluIGFuIGVudHJ5IG9mIHRoZSB0YWJsZSBtZWFucyB0aGUgaW5zdHJ1Y3Rpb24gaXMg
VW5hbGxvY2F0ZWQKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVMb2FkU3RvcmU6OnNfb3BO
YW1lc1szMl0gPSB7CiAgICAgInN0cmIiLCAibGRyYiIsICJsZHJzYiIsICJsZHJzYiIsICJzdHIi
LCAibGRyIiwgInN0ciIsICJsZHIiLApAQCAtMTE4MSw2ICsxNzc2LDIzIEBAIGNvbnN0IGNoYXIq
IEE2NERPcGNvZGVMb2FkU3RvcmVJbW1lZGlhdGUKICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7
CiB9CiAKK2Jvb2wgQTY0RE9wY29kZUxvYWRTdG9yZUltbWVkaWF0ZTo6aXNWYWxpZCgpCit7Cisg
ICAgc3dpdGNoICh0eXBlKCkpIHsKKyAgICBjYXNlIDA6IC8vIFVuc2NhbGVkIEltbWVkaWF0ZQor
ICAgICAgICByZXR1cm4gISF1bnNjYWxlZE9wTmFtZSgpOworCisgICAgY2FzZSAxOiAvLyBJbW1l
ZGlhdGUgUG9zdC1JbmRleGVkCisgICAgY2FzZSAzOiAvLyBJbW1lZGlhdGUgUHJlLUluZGV4ZWQK
KyAgICAgICAgcmV0dXJuICEhb3BOYW1lKCk7CisKKyAgICBjYXNlIDI6IC8vIFVucHJpdmlsZWdl
ZAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJPZmZzZXQ6OmZvcm1hdCgp
CiB7CiAgICAgY29uc3QgY2hhciogdGhpc09wTmFtZSA9IG9wTmFtZSgpOwpAQCAtMTIzMSw2ICsx
ODQzLDE3IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3Rlck8KICAgICBy
ZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lz
dGVyT2Zmc2V0Ojppc1ZhbGlkKCkKK3sKKyAgICBpZiAoIW9wTmFtZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIShvcHRpb24oKSAmIDB4MikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bj
b2RlTG9hZFN0b3JlQXV0aGVudGljYXRlZDo6c19vcE5hbWVzWzJdID0gewogICAgICJsZHJhYSIs
ICJsZHJhYiIKIH07CkBAIC0xMjU1LDYgKzE4NzgsMTEgQEAgY29uc3QgY2hhciogQTY0RE9wY29k
ZUxvYWRTdG9yZUF1dGhlbnRpYwogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9v
bCBBNjRET3Bjb2RlTG9hZFN0b3JlQXV0aGVudGljYXRlZDo6aXNWYWxpZCgpCit7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3RlclBh
aXI6Om9wTmFtZSgpCiB7CiAgICAgaWYgKCF2Qml0KCkgJiYgbEJpdCgpICYmIHNpemUoKSA9PSAw
eDEpCkBAIC0xMzE4LDYgKzE5NDYsMjAgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUxvYWRTdG9y
ZVJlZ2lzdGVyUAogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bj
b2RlTG9hZFN0b3JlUmVnaXN0ZXJQYWlyOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAoc2l6ZSgpID09
IDB4MykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKChvZmZzZXRNb2RlKCkgPCAw
eDEpIHx8IChvZmZzZXRNb2RlKCkgPiAweDMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoKG9mZnNldE1vZGUoKSA9PSAweDEpICYmICF2Qml0KCkgJiYgIWxCaXQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIEE2
NERPcGNvZGVMb2FkU3RvcmVVbnNpZ25lZEltbWVkaWF0ZTo6Zm9ybWF0KCkKIHsKICAgICBjb25z
dCBjaGFyKiB0aGlzT3BOYW1lID0gb3BOYW1lKCk7CkBAIC0xMzUxLDYgKzE5OTMsMTYgQEAgY29u
c3QgY2hhciogQTY0RE9wY29kZUxvYWRTdG9yZVVuc2lnbmVkSQogICAgIHJldHVybiBtX2Zvcm1h
dEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlTG9hZFN0b3JlVW5zaWduZWRJbW1lZGlhdGU6
OmlzVmFsaWQoKQoreworICAgIGNvbnN0IGNoYXIqIHRoaXNPcE5hbWUgPSBvcE5hbWUoKTsKKwor
ICAgIGlmICghdGhpc09wTmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIC8vIEEgemVybyBpbiBhbiBlbnRyeSBvZiB0aGUgdGFibGUgbWVhbnMgdGhl
IGluc3RydWN0aW9uIGlzIFVuYWxsb2NhdGVkCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2Rl
TG9naWNhbDo6c19vcE5hbWVzWzhdID0gewogICAgICJhbmQiLCAiYmljIiwgIm9yciIsICJvcm4i
LCAiZW9yIiwgImVvbiIsICJhbmRzIiwgImJpY3MiCkBAIC0xMzg3LDYgKzIwMzksMTQgQEAgY29u
c3QgY2hhciogQTY0RE9wY29kZUxvZ2ljYWxTaGlmdGVkUmVnaQogICAgIHJldHVybiBtX2Zvcm1h
dEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlTG9naWNhbFNoaWZ0ZWRSZWdpc3Rlcjo6aXNW
YWxpZCgpCit7CisgICAgaWYgKCFpczY0Qml0KCkgJiYgaW1tZWRpYXRlNigpICYgMHgyMCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB1bnNp
Z25lZCBoaWdoZXN0Qml0U2V0KHVuc2lnbmVkIHZhbHVlKQogewogICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IDA7CkBAIC0xNDE5LDI0ICsyMDc5LDE0IEBAIHN0YXRpYyB1aW50NjRfdCByZXBsaWNhdGUo
dWludDY0X3QgdmFsdWUKIAogY29uc3QgY2hhciogQTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGU6
OmZvcm1hdCgpCiB7Ci0gICAgaWYgKCFpczY0Qml0KCkgJiYgbkJpdCgpKQotICAgICAgICByZXR1
cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7Ci0KICAgICB1bnNpZ25lZCBsZW4gPSBoaWdoZXN0Qml0
U2V0KG5CaXQoKSA8PCA2IHwgKGltbWVkaWF0ZVMoKSBeIDB4M2YpKTsKICAgICB1bnNpZ25lZCBs
ZXZlbHMgPSAoMSA8PCBsZW4pIC0gMTsgLy8gbGVuIG51bWJlciBvZiAxIGJpdHMgc3RhcnRpbmcg
YXQgTFNCCiAKICAgICBpZiAoKGltbWVkaWF0ZVMoKSAmIGxldmVscykgPT0gbGV2ZWxzKQogICAg
ICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CiAKLSAgICB1bnNpZ25lZCByID0gaW1t
ZWRpYXRlUigpICYgbGV2ZWxzOwotICAgIHVuc2lnbmVkIHMgPSBpbW1lZGlhdGVTKCkgJiBsZXZl
bHM7Ci0gICAgdW5zaWduZWQgZVNpemUgPSAxIDw8IGxlbjsKLSAgICB1aW50NjRfdCBwYXR0ZXJu
ID0gcm90YXRlUmlnaHQoKDF1bGwgPDwgKHMgKyAxKSkgLSAxLCBlU2l6ZSwgcik7Ci0KLSAgICB1
aW50NjRfdCBpbW1lZGlhdGUgPSByZXBsaWNhdGUocGF0dGVybiwgZVNpemUpOwotCi0gICAgaWYg
KCFpczY0Qml0KCkpCi0gICAgICAgIGltbWVkaWF0ZSAmPSAweGZmZmZmZmZmdWxsOworICAgIGlm
ICghaXM2NEJpdCgpICYmIG5CaXQoKSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1h
dCgpOwogCiAgICAgaWYgKGlzVHN0KCkpCiAgICAgICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZSgi
dHN0Iik7CkBAIC0xNDUyLDExICsyMTAyLDQ1IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVMb2dp
Y2FsSW1tZWRpYXRlOjoKICAgICAgICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJuKCksIGlzNjRCaXQo
KSk7CiAgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOwogICAgIH0KLSAgICBhcHBlbmRVbnNpZ25l
ZEltbWVkaWF0ZTY0KGltbWVkaWF0ZSk7CisgICAgYXBwZW5kVW5zaWduZWRJbW1lZGlhdGU2NChj
b21wdXRlSW1tZWRpYXRlKCkpOwogCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCiti
b29sIEE2NERPcGNvZGVMb2dpY2FsSW1tZWRpYXRlOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAoIWlz
NjRCaXQoKSAmJiBuQml0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVk
IGxlbiA9IGhpZ2hlc3RCaXRTZXQobkJpdCgpIDw8IDYgfCAoaW1tZWRpYXRlUygpIF4gMHgzZikp
OworICAgIHVuc2lnbmVkIGxldmVscyA9ICgxIDw8IGxlbikgLSAxOyAvLyBsZW4gbnVtYmVyIG9m
IDEgYml0cyBzdGFydGluZyBhdCBMU0IKKworICAgIGlmICgoaW1tZWRpYXRlUygpICYgbGV2ZWxz
KSA9PSBsZXZlbHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCit1aW50NjRfdCBBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0ZTo6Y29tcHV0ZUltbWVkaWF0
ZSgpCit7CisgICAgdW5zaWduZWQgbGVuID0gaGlnaGVzdEJpdFNldChuQml0KCkgPDwgNiB8IChp
bW1lZGlhdGVTKCkgXiAweDNmKSk7CisgICAgdW5zaWduZWQgbGV2ZWxzID0gKDEgPDwgbGVuKSAt
IDE7IC8vIGxlbiBudW1iZXIgb2YgMSBiaXRzIHN0YXJ0aW5nIGF0IExTQgorCisgICAgQVNTRVJU
KChpbW1lZGlhdGVTKCkgJiBsZXZlbHMpICE9IGxldmVscyk7CisKKyAgICB1bnNpZ25lZCByID0g
aW1tZWRpYXRlUigpICYgbGV2ZWxzOworICAgIHVuc2lnbmVkIHMgPSBpbW1lZGlhdGVTKCkgJiBs
ZXZlbHM7CisgICAgdW5zaWduZWQgZVNpemUgPSAxIDw8IGxlbjsKKyAgICB1aW50NjRfdCBwYXR0
ZXJuID0gcm90YXRlUmlnaHQoKDF1bGwgPDwgKHMgKyAxKSkgLSAxLCBlU2l6ZSwgcik7CisKKyAg
ICB1aW50NjRfdCBpbW1lZGlhdGUgPSByZXBsaWNhdGUocGF0dGVybiwgZVNpemUpOworCisgICAg
aWYgKCFpczY0Qml0KCkpCisgICAgICAgIGltbWVkaWF0ZSAmPSAweGZmZmZmZmZmdWxsOworCisg
ICAgcmV0dXJuIGltbWVkaWF0ZTsKK30KKwogY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZU1v
dmVXaWRlOjpzX29wTmFtZXNbNF0gPSB7ICJtb3ZuIiwgMCwgIm1vdnoiLCAibW92ayIgfTsKIAog
Y29uc3QgY2hhciogQTY0RE9wY29kZU1vdmVXaWRlOjpmb3JtYXQoKQpAQCAtMTQ5NSw2ICsyMTc5
LDkwIEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVNb3ZlV2lkZTo6Zm9ybWF0KCkKICAgICByZXR1
cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZU1vdmVXaWRlOjppc1ZhbGlk
KCkKK3sKKyAgICBpZiAob3BjKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghaXM2NEJpdCgpICYmIGh3KCkgPj0gMikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQTY0RE9wY29kZU1vdmVXaWRlOjppc01vdm4oKQorewor
ICAgIEFTU0VSVChpc01vdmVXaWRlKCkpOworICAgIGlmIChvcGMoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQTY0RE9wY29kZU1vdmVXaWRl
Ojppc01vdnooKQoreworICAgIEFTU0VSVChpc01vdmVXaWRlKCkpOworICAgIGlmIChvcGMoKSAh
PSAyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBBNjRET3Bjb2RlTW92ZVdpZGU6OmlzTW92aygpCit7CisgICAgQVNTRVJUKGlzTW92ZVdpZGUo
KSk7CisgICAgaWYgKG9wYygpICE9IDMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCit1aW50NjRfdCBBNjRET3Bjb2RlTW92ZVdpZGU6OnZhbHVlKHVpbnQ2
NF90JiBtYXNrKQoreworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworCisgICAgdW5zaWduZWQgaCA9
IGh3KCk7CisgICAgbWFzayA9IDB4ZmZmZlVMIDw8ICgxNiAqIGgpOworICAgIHVpbnQ2NF90IGFt
b3VudCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihpbW1lZGlhdGUxNigpKSA8PCAoMTYgKiBoKTsK
KyAgICBpZiAoIW9wYygpICYmICghaW1tZWRpYXRlMTYoKSB8fCAhaCkgJiYgKGlzNjRCaXQoKSB8
fCBpbW1lZGlhdGUxNigpICE9IDB4ZmZmZikpCisgICAgICAgIGFtb3VudCA9IH5hbW91bnQ7CisK
KyAgICBpZiAoIWlzNjRCaXQoKSkKKyAgICAgICAgcmV0dXJuIGFtb3VudCAmIDB4ZmZmZmZmZmY7
CisgICAgcmV0dXJuIGFtb3VudDsKK30KKwordWludDY0X3QgQTY0RE9wY29kZU1vdmVXaWRlOjpi
dWlsZEltbWVkaWF0ZUZyb21Nb3ZlV2lkZVNlcXVlbmNlKHVuc2lnbmVkJiB0YXJnZXRSZWcsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0KQoreworICAgIFNlY29uZGFyeUluc3RydWN0aW9uU2NvcGUgaW5z
blNjb3BlKCp0aGlzKTsKKworICAgIHNldE9wY29kZUZyb21QcmlvcihzdGFydE9mZnNldCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoaXNNb3Z6KCkgfHwgaXNNb3ZuKCkpOworCisgICAgdWludDY0X3Qg
bWFzazsKKyAgICB1aW50NjRfdCByZXN1bHQgPSB2YWx1ZShtYXNrKTsKKyAgICB0YXJnZXRSZWcg
PSBydCgpOworCisgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RhcnRPZmZzZXQ7CisKKyAgICB3aGls
ZSAob2Zmc2V0ID4gMCkgeworICAgICAgICBvZmZzZXQtLTsKKyAgICAgICAgc2V0T3Bjb2RlRnJv
bVByaW9yKG9mZnNldCk7CisgICAgICAgIGlmICghaXNNb3ZlV2lkZSgpIHx8IHJ0KCkgIT0gdGFy
Z2V0UmVnKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGlzTW92aygpKSB7Cisg
ICAgICAgICAgICB1aW50NjRfdCBzbGljZSA9IHZhbHVlKG1hc2spOworICAgICAgICAgICAgcmVz
dWx0ID0gKHJlc3VsdCAmIH5tYXNrKSB8IHNsaWNlOworICAgICAgICB9IGVsc2UgaWYgKGlzTW92
bigpKSB7CisgICAgICAgICAgICB1aW50NjRfdCBzbGljZSA9IHZhbHVlKG1hc2spOworICAgICAg
ICAgICAgcmVzdWx0ID0gfihyZXN1bHQgJiB+bWFzaykgfCBzbGljZTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBj
b25zdCBjaGFyKiBBNjRET3Bjb2RlVGVzdEFuZEJyYW5jaEltbWVkaWF0ZTo6Zm9ybWF0KCkKIHsK
ICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BCaXQoKSA/ICJ0Ym56IiA6ICJ0YnoiKTsKQEAg
LTE1MDYsNiArMjI3NCwxNyBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlVGVzdEFuZEJyYW5jaElt
bWVkCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERPcGNvZGVUZXN0
QW5kQnJhbmNoSW1tZWRpYXRlOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAoIWlzVmFsaWRKSVRUYXJn
ZXQocGNSZWxhdGl2ZUFkZHJlc3Moc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW1tZWRpYXRlMTQoKSkp
KSkgeworICAgICAgICBpZiAodmVyYm9zZVZhbGlkYXRpb24pCisgICAgICAgICAgICBkYXRhTG9n
RigiICAgIEZvdW5kICVzIHRhcmdldGluZyBpbmNvcnJlY3QgSklUIGFkZHJlc3MgJXBuIiwgb3BC
aXQoKSA/ICJ0Ym56IiA6ICJ0YnoiLCBwY1JlbGF0aXZlQWRkcmVzcyhzdGF0aWNfY2FzdDxpbnQz
Ml90PihpbW1lZGlhdGUxNCgpKSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFs
QnJhbmNoSW1tZWRpYXRlOjpmb3JtYXQoKQogewogICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZShv
cCgpID8gImJsIiA6ICJiIik7CkBAIC0xNTEzLDYgKzIyOTIsMjMgQEAgY29uc3QgY2hhciogQTY0
RE9wY29kZVVuY29uZGl0aW9uYWxCcmFuYwogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0K
IAorYm9vbCBBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZTo6aXNWYWxpZCgp
Cit7CisgICAgaWYgKG9wKCkgJiYgIXBjTWFza2VkT2Zmc2V0SXMoMHhmLCAweGMpKSB7CisgICAg
ICAgIGlmICh2ZXJib3NlVmFsaWRhdGlvbikKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBGb3Vu
ZCBibCBub3QgYXQgMHhYWFhjIGFkZHJlc3NcbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgaWYgKCFpc1ZhbGlkSklUVGFyZ2V0KHBjUmVsYXRpdmVBZGRyZXNzKHN0YXRp
Y19jYXN0PGludDMyX3Q+KGltbWVkaWF0ZTI2KCkpKSkpIHsKKyAgICAgICAgaWYgKHZlcmJvc2VW
YWxpZGF0aW9uKQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBGb3VuZCBibCB0YXJnZXRpbmcg
aW5jb3JyZWN0IEpJVCBhZGRyZXNzICAlcFxuIiwgcGNSZWxhdGl2ZUFkZHJlc3Moc3RhdGljX2Nh
c3Q8aW50MzJfdD4oaW1tZWRpYXRlMjYoKSkpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2Rl
VW5jb25kaXRpb25hbEJyYW5jaFJlZ2lzdGVyOjpzX29wTmFtZXNbOF0gPSB7ICJiciIsICJibHIi
LCAicmV0IiwgIiIsICJlcmV0IiwgImRycHMiLCAiIiwgIiIgfTsKIGNvbnN0IGNoYXIqIGNvbnN0
IEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXI6OnNfQXV0aE9wTmFtZXNbMjBd
ID0gewogICAgICJicmFheiIsICJicmFieiIsICJibHJhYXoiLCAiYmxyYWJ6IiwgInJldGFhIiwg
InJldGFiIiwgMCwgMCwKQEAgLTE1NDgsNyArMjM0NCw3IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNv
ZGVVbmNvbmRpdGlvbmFsQnJhbmMKIAogICAgICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiAg
ICAgfQotICAgIGlmIChvcGNWYWx1ZSA9PSAzIHx8IG9wY1ZhbHVlID4gNSkKKyAgICBpZiAob3Ay
KCkgIT0gMHgxZiB8fCBvcDMoKSB8fCBvcDQoKSB8fCBvcGNWYWx1ZSA9PSAzIHx8IG9wY1ZhbHVl
ID4gNSkKICAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOwogICAgIGlmICgoKG9w
Y1ZhbHVlICYgMHhlKSA9PSAweDQpICYmIHJuKCkgIT0gMHgxZikKICAgICAgICAgcmV0dXJuIEE2
NERPcGNvZGU6OmZvcm1hdCgpOwpAQCAtMTU1OCw2ICsyMzU0LDExMyBAQCBjb25zdCBjaGFyKiBB
NjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwog
fQogCitib29sIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXI6OmlzVmFsaWQo
KQoreworICAgIHVuc2lnbmVkIG9wY1ZhbHVlID0gb3BjKCk7CisgICAgaWYgKG9wMigpID09IDB4
MWYgJiYgKG9wMygpICYgMHgzZSkgPT0gMHgyKSB7CisgICAgICAgIGlmICghYXV0aE9wTmFtZSgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAocm4oKSAhPSAweDFmICYm
IChvcGNWYWx1ZSA9PSAweDIgfHwgb3BjVmFsdWUgPT0gMHg0KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBpZiAodmVyYm9zZVZhbGlkYXRpb24pCisgICAgICAgICAgICBk
YXRhTG9nKCIgICAgRm91bmQgYXV0aGVudGljYXRlZCBicmFuY2hcbiIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG9wMigpICE9IDB4MWYgfHwgb3AzKCkgfHwgb3A0
KCkgfHwgb3BjVmFsdWUgPiAyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXBj
TWFza2VkT2Zmc2V0SXMoMHhmLCAweGMpKSB7CisgICAgICAgIGlmICh2ZXJib3NlVmFsaWRhdGlv
bikKKyAgICAgICAgICAgIGRhdGFMb2dGKCIgICAgRm91bmQgJXMgbm90IGF0IDB4WFhYYyBhZGRy
ZXNzXG4iLCBvcE5hbWUoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyBWZXJpZnkgdGhhdCB0aGUgYWRkcmVzcyBsZWFzdCBzaWduaWZpY2FudCBuaWJibGUgaXMgMHhj
LgorICAgIC8vIENoZWNrIGZvciBleHBsaWNpdCBmYXIgYnJhbmNoIHNlcXVlbmNlLiBJZiBzbywg
Y2hlY2sgZm9yIGRlc3RpbmF0aW9uIGluIHdoaXRlbGlzdC4KKyAgICBpZiAob3Bjb2RlR3JvdXBJ
REZvclByaW9ySW5zbigzKSA9PSBPcGNvZGVHcm91cElEOjpBNjRET3Bjb2RlTW92ZVdpZGUKKyAg
ICAgICAgJiYgb3Bjb2RlR3JvdXBJREZvclByaW9ySW5zbigyKSA9PSBPcGNvZGVHcm91cElEOjpB
NjRET3Bjb2RlTW92ZVdpZGUKKyAgICAgICAgJiYgb3Bjb2RlR3JvdXBJREZvclByaW9ySW5zbigx
KSA9PSBPcGNvZGVHcm91cElEOjpBNjRET3Bjb2RlTW92ZVdpZGUpIHsKKworICAgICAgICB1bnNp
Z25lZCBicmFuY2hUYXJnZXRSZWcgPSBybigpOworICAgICAgICB1bnNpZ25lZCBtb3ZlV2lkZVRh
cmdldFJlZzsKKyAgICAgICAgdWludDY0X3QgdGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxjbGFz
cyBBNjRET3Bjb2RlTW92ZVdpZGUqPih0aGlzKS0+YnVpbGRJbW1lZGlhdGVGcm9tTW92ZVdpZGVT
ZXF1ZW5jZShtb3ZlV2lkZVRhcmdldFJlZywgMyk7CisKKyAgICAgICAgaWYgKHRhcmdldCAmIDB4
ZmZmZmZmZjAwMDAwMDAwMFVMTCkgeworICAgICAgICAgICAgaWYgKHZlcmJvc2VWYWxpZGF0aW9u
KQorICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCB0b28gYmlnIG9mIGEgZGVzdGlu
YXRpb24gIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPih0YXJnZXQpKSwgIlxu
Iik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1vdmVXaWRlVGFyZ2V0UmVnICE9IGJyYW5jaFRh
cmdldFJlZykgeworICAgICAgICAgICAgaWYgKHZlcmJvc2VWYWxpZGF0aW9uKQorICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgICBGb3VuZCBicmFuY2ggd2l0aG91dCBwcmlvciBtb3ZlIHdpZGUg
c2VxdWVuY2VcbiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiAoIXRhcmdldCkgeworICAgICAgICAgICAgLy8gRm91bmQgYnJhbmNo
IHdpdGggbnVsbHB0ciB0YXJnZXQuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIHVwIGJlZm9yZSBpdCBp
cyBhY3R1YWxseSB1c2VkLgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoaXNWYWxpZEpJVFRhcmdldChyZWludGVycHJldF9jYXN0PEE2NEluc3RydWN0
aW9uKj4odGFyZ2V0KSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBKSVRE
ZXN0aW5hdGlvbldoaXRlbGlzdCYgZGVzdGluYXRpb25XaGl0ZWxpc3QgPSBKSVREZXN0aW5hdGlv
bldoaXRlbGlzdDo6aW5zdGFuY2UoKTsKKyAgICAgICAgaWYgKCFkZXN0aW5hdGlvbldoaXRlbGlz
dC5hc3NlcnRPbkxpc3QocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGFyZ2V0KSkpIHsKKyAgICAg
ICAgICAgIGlmICh2ZXJib3NlVmFsaWRhdGlvbikKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgRm91bmQgYnJhbmNoIHdpdGggdW5rbm93biB0YXJnZXQgIiwgUmF3UG9pbnRlcihyZWludGVy
cHJldF9jYXN0PHZvaWQqPih0YXJnZXQpKSwgIlxuIik7CisKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8v
IENoZWNrIGZvciBjYWdpbmcgc2VxdWVuY2UuCisgICAgaWYgKG9wY29kZUdyb3VwSURGb3JQcmlv
ckluc24oMykgPT0gT3Bjb2RlR3JvdXBJRDo6QTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUKKyAg
ICAgICAgJiYgb3Bjb2RlR3JvdXBJREZvclByaW9ySW5zbigyKSA9PSBPcGNvZGVHcm91cElEOjpB
NjRET3Bjb2RlTW92ZVdpZGUKKyAgICAgICAgJiYgb3Bjb2RlR3JvdXBJREZvclByaW9ySW5zbigx
KSA9PSBPcGNvZGVHcm91cElEOjpBNjRET3Bjb2RlQWRkU3VidHJhY3RTaGlmdGVkUmVnaXN0ZXIp
IHsKKyAgICAgICAgdW5zaWduZWQgYnJhbmNoVGFyZ2V0UmVnID0gcm4oKTsKKyAgICAgICAgCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFNlY29uZGFyeUluc3RydWN0aW9uU2NvcGUgaW5zblNjb3Bl
KCp0aGlzKTsKKworICAgICAgICAgICAgc2V0T3Bjb2RlRnJvbVByaW9yKDMpOworICAgICAgICAg
ICAgQTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUqIGxvZ2ljYWxJbW1lZGlhdGUgPSByZWludGVy
cHJldF9jYXN0PGNsYXNzIEE2NERPcGNvZGVMb2dpY2FsSW1tZWRpYXRlKj4odGhpcyk7CisgICAg
ICAgICAgICBpZiAoIWxvZ2ljYWxJbW1lZGlhdGUtPmlzNjRCaXQoKSB8fCAhbG9naWNhbEltbWVk
aWF0ZS0+aXNBbmQoKQorICAgICAgICAgICAgICAgIHx8IGxvZ2ljYWxJbW1lZGlhdGUtPnJkKCkg
IT0gYnJhbmNoVGFyZ2V0UmVnCisgICAgICAgICAgICAgICAgfHwgbG9naWNhbEltbWVkaWF0ZS0+
cm4oKSAhPSBicmFuY2hUYXJnZXRSZWcKKyAgICAgICAgICAgICAgICB8fCBsb2dpY2FsSW1tZWRp
YXRlLT5jb21wdXRlSW1tZWRpYXRlKCkgIT0gMHhmZmZmZmYwdWxsKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgc2V0T3Bjb2RlRnJvbVByaW9yKDIpOworICAg
ICAgICAgICAgQTY0RE9wY29kZU1vdmVXaWRlKiBtb3ZlV2lkZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y2xhc3MgQTY0RE9wY29kZU1vdmVXaWRlKj4odGhpcyk7CisgICAgICAgICAgICBpZiAoIW1vdmVX
aWRlLT5pczY0Qml0KCkgfHwgIW1vdmVXaWRlLT5pc01vdnooKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGppdEJhc2VSZWcgPSBtb3ZlV2lk
ZS0+cmQoKTsKKyAgICAgICAgICAgIGlmIChtb3ZlV2lkZS0+aHcoKSAhPSAwYjAxKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChtb3ZlV2lkZS0+aW1tZWRp
YXRlMTYoKSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oc3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2woKSkgPj4gMjgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgc2V0T3Bjb2RlRnJvbVByaW9yKDEp
OworICAgICAgICAgICAgQTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyKiBhZGRT
aGlmdGVkUmVnID0gcmVpbnRlcnByZXRfY2FzdDxjbGFzcyBBNjRET3Bjb2RlQWRkU3VidHJhY3RT
aGlmdGVkUmVnaXN0ZXIqPih0aGlzKTsKKyAgICAgICAgICAgIGlmICghYWRkU2hpZnRlZFJlZy0+
aXM2NEJpdCgpIHx8ICFhZGRTaGlmdGVkUmVnLT5pc0FuZCgpCisgICAgICAgICAgICAgICAgfHwg
YWRkU2hpZnRlZFJlZy0+c2hpZnQoKSB8fCBhZGRTaGlmdGVkUmVnLT5yZCgpICE9IGJyYW5jaFRh
cmdldFJlZworICAgICAgICAgICAgICAgIHx8IGFkZFNoaWZ0ZWRSZWctPnJuKCkgIT0gYnJhbmNo
VGFyZ2V0UmVnIHx8IGFkZFNoaWZ0ZWRSZWctPnJtKCkgIT0gaml0QmFzZVJlZworICAgICAgICAg
ICAgICAgIHx8IGFkZFNoaWZ0ZWRSZWctPmltbWVkaWF0ZTYoKSAhPSAxMikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisKKy8vICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpBUk02NERpc2Fzc2VtYmxlcgogCiAjZW5kaWYgLy8g
RU5BQkxFKEFSTTY0X0RJU0FTU0VNQkxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oCShyZXZpc2lvbiAyNTc5
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNv
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNjUgKzI3LDIxMCBAQAogCiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBBUk02NERpc2Fzc2VtYmxlciB7CiAKKyNkZWZp
bmUgRk9SX0VBQ0hfQVJNNjRfT1BHUk9VUChtYWNybykgXAorICAgIG1hY3JvKEE2NERPcGNvZGVM
b2FkU3RvcmVSZWdpc3RlclBhaXIsIDB4MDgsIDB4MDkpIFwKKyAgICBtYWNybyhBNjRET3Bjb2Rl
TG9hZFN0b3JlRXhjbHVzaXZlLCAweDA4KSBcCisgICAgbWFjcm8oQTY0RE9wY29kZUxvZ2ljYWxT
aGlmdGVkUmVnaXN0ZXIsIDB4MGEpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlQWRkU3VidHJhY3RF
eHRlbmRlZFJlZ2lzdGVyLCAweDBiKSBcCisgICAgbWFjcm8oQTY0RE9wY29kZUFkZFN1YnRyYWN0
U2hpZnRlZFJlZ2lzdGVyLCAweDBiKSBcCisgICAgbWFjcm8oQTY0RE9wY29kZVNJTURUaHJlZVNh
bWUsIDB4MGUpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlQWRkU3VidHJhY3RJbW1lZGlhdGUsIDB4
MTEpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlTW92ZVdpZGUsIDB4MTIpIFwKKyAgICBtYWNybyhB
NjRET3Bjb2RlTG9naWNhbEltbWVkaWF0ZSwgMHgxMikgXAorICAgIG1hY3JvKEE2NERPcGNvZGVC
aXRmaWVsZCwgMHgxMykgXAorICAgIG1hY3JvKEE2NERPcGNvZGVFeHRyYWN0LCAweDEzKSBcCisg
ICAgbWFjcm8oQTY0RE9wY29kZVVuY29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGUsIDB4MTQsIDB4
MTUsIDB4MTYsIDB4MTcpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlQ29uZGl0aW9uYWxCcmFuY2hJ
bW1lZGlhdGUsIDB4MTQsIDB4MTUpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlQ29tcGFyZUFuZEJy
YW5jaEltbWVkaWF0ZSwgMHgxNCwgMHgxNSkgXAorICAgIG1hY3JvKEE2NE9wY29kZUV4Y2VwdGlv
bkdlbmVyYXRpb24sIDB4MTQpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlSGludCwgMHgxNSkgXAor
ICAgIG1hY3JvKEE2NERPcGNvZGVTeXN0ZW1TeW5jLCAweDE1KSBcCisgICAgbWFjcm8oQTY0RE9w
Y29kZU1TUkltbWVkaWF0ZSwgMHgxNSkgXAorICAgIG1hY3JvKEE2NERPcGNvZGVNU1JPck1SU1Jl
Z2lzdGVyLCAweDE1KSBcCisgICAgbWFjcm8oQTY0RE9wY29kZVN5c3RlbUluc3QsIDB4MTUpIFwK
KyAgICBtYWNybyhBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaFJlZ2lzdGVyLCAweDE2LCAw
eDE3KSBcCisgICAgbWFjcm8oQTY0RE9wY29kZVRlc3RBbmRCcmFuY2hJbW1lZGlhdGUsIDB4MTYs
IDB4MTcpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlTG9hZFN0b3JlSW1tZWRpYXRlLCAweDE4LCAw
eDFjKSBcCisgICAgbWFjcm8oQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyT2Zmc2V0LCAweDE4
LCAweDFjKSBcCisgICAgbWFjcm8oQTY0RE9wY29kZUxvYWRTdG9yZUF1dGhlbnRpY2F0ZWQsIDB4
MTgpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlTG9hZFN0b3JlVW5zaWduZWRJbW1lZGlhdGUsIDB4
MTksIDB4MWQpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlQ29uZGl0aW9uYWxTZWxlY3QsIDB4MWEp
IFwKKyAgICBtYWNybyhBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcxU291cmNlLCAweDFhKSBcCisg
ICAgbWFjcm8oQTY0RE9wY29kZURhdGFQcm9jZXNzaW5nMlNvdXJjZSwgMHgxYSkgXAorICAgIG1h
Y3JvKEE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzNTb3VyY2UsIDB4MWIpIFwKKyAgICBtYWNybyhB
NjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbXBhcmUsIDB4MWUpIFwKKyAgICBtYWNybyhBNjRET3Bj
b2RlRmxvYXRpbmdQb2ludENvbmRpdGlvbmFsU2VsZWN0LCAweDFlKSBcCisgICAgbWFjcm8oQTY0
RE9wY29kZUZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2luZzJTb3VyY2UsIDB4MWUpIFwKKyAgICBt
YWNybyhBNjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZSwgMHgxZSkg
XAorICAgIG1hY3JvKEE2NERPcGNvZGVGbG9hdGluZ0ZpeGVkUG9pbnRDb252ZXJzaW9ucywgMHgx
ZSkgXAorICAgIG1hY3JvKEE2NERPcGNvZGVGbG9hdGluZ1BvaW50SW50ZWdlckNvbnZlcnNpb25z
LCAweDFlKSBcCisKKyNkZWZpbmUgQVJNNjRfT1BHUk9VUF9GT1JXQVJEX0NMQVNTKG9wY29kZUdy
b3VwLCBiaXRzMjRUbzI4Li4uKSBjbGFzcyBvcGNvZGVHcm91cDsKKyAgICAgICAgRk9SX0VBQ0hf
QVJNNjRfT1BHUk9VUChBUk02NF9PUEdST1VQX0ZPUldBUkRfQ0xBU1MpCisjdW5kZWYgQVJNNjRf
T1BHUk9VUF9GT1JXQVJEX0NMQVNTCisKIGNsYXNzIEE2NERPcGNvZGUgeworcHVibGljOgorICAg
IHR5cGVkZWYgdWludDMyX3QgQTY0SW5zdHJ1Y3Rpb247CisKKyAgICBlbnVtIGNsYXNzIE9wY29k
ZUdyb3VwSUQgOiBpbnQgeworI2RlZmluZSBBUk02NF9PUEdST1VQX0VOVU0ob3Bjb2RlR3JvdXAs
IGJpdHMyNFRvMjguLi4pIG9wY29kZUdyb3VwLAorICAgICAgICBGT1JfRUFDSF9BUk02NF9PUEdS
T1VQKEFSTTY0X09QR1JPVVBfRU5VTSkKKyN1bmRlZiBBUk02NF9PUEdST1VQX0VOVU0KKyAgICAg
ICAgT3Bjb2RlR3JvdXBDb3VudCwKKyAgICAgICAgSW52YWxpZE9wY29kZUdyb3VwID0gLTEKKyAg
ICB9OworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfb3Bjb2RlR3JvdXBDb3VudCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihBNjRET3Bjb2RlOjpPcGNvZGVHcm91cElEOjpPcGNvZGVHcm91
cENvdW50KTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19tYXhPcGNvZGVHcm91cE51bWJl
cnMgPSA0OworICAgIHN0cnVjdCBPcGNvZGVHcm91cCB7CisgICAgICAgIEE2NERPcGNvZGU6Ok9w
Y29kZUdyb3VwSUQgbV9ncm91cElEOworICAgICAgICB1bnNpZ25lZCBtX29wY29kZUdyb3VwTnVt
YmVyc1tzX21heE9wY29kZUdyb3VwTnVtYmVyc107CisgICAgICAgIEE2NEluc3RydWN0aW9uIG1f
bWFzazsKKyAgICAgICAgQTY0SW5zdHJ1Y3Rpb24gbV9wYXR0ZXJuOworICAgICAgICBjb25zdCBj
aGFyKiAoKm1fZm9ybWF0KShBNjRET3Bjb2RlKik7CisgICAgICAgIGJvb2wgKCptX2lzVmFsaWQp
KEE2NERPcGNvZGUqKTsKKyAgICAgICAgCisgICAgICAgIE9wY29kZUdyb3VwSUQgZ3JvdXBJRCgp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2dyb3VwSUQ7CisgICAgICAg
IH0KKworICAgICAgICBjb25zdCBjaGFyKiBmb3JtYXQoQTY0RE9wY29kZSogdGhpc09iaikgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZm9ybWF0KHRoaXNPYmopOworICAg
ICAgICB9CisKKyAgICAgICAgYm9vbCBpc1ZhbGlkKEE2NERPcGNvZGUqIHRoaXNPYmopIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2lzVmFsaWQodGhpc09iaik7CisgICAg
ICAgIH0KKyAgICB9OworCiBwcml2YXRlOgotICAgIGNsYXNzIE9wY29kZUdyb3VwIHsKKyAgICBj
bGFzcyBPcGNvZGVHcm91cExpc3ROb2RlIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgotICAgICAgICBPcGNvZGVHcm91cCh1aW50MzJfdCBvcGNvZGVNYXNr
LCB1aW50MzJfdCBvcGNvZGVQYXR0ZXJuLCBjb25zdCBjaGFyKiAoKmZvcm1hdCkoQTY0RE9wY29k
ZSopKQorICAgICAgICBPcGNvZGVHcm91cExpc3ROb2RlKEE2NEluc3RydWN0aW9uIG9wY29kZU1h
c2ssIEE2NEluc3RydWN0aW9uIG9wY29kZVBhdHRlcm4sIGNvbnN0IE9wY29kZUdyb3VwJiBvcGNv
ZGVHcm91cCkKICAgICAgICAgICAgIDogbV9vcGNvZGVNYXNrKG9wY29kZU1hc2spCiAgICAgICAg
ICAgICAsIG1fb3Bjb2RlUGF0dGVybihvcGNvZGVQYXR0ZXJuKQotICAgICAgICAgICAgLCBtX2Zv
cm1hdChmb3JtYXQpCisgICAgICAgICAgICAsIG1fb3Bjb2RlR3JvdXAob3Bjb2RlR3JvdXApCiAg
ICAgICAgICAgICAsIG1fbmV4dCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIHNldE5leHQoT3Bjb2RlR3JvdXAqIG5leHQpCisgICAgICAgIHZvaWQgc2V0TmV4dChPcGNv
ZGVHcm91cExpc3ROb2RlKiBuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBtX25leHQgPSBu
ZXh0OwogICAgICAgICB9CiAKLSAgICAgICAgT3Bjb2RlR3JvdXAqIG5leHQoKQorICAgICAgICBP
cGNvZGVHcm91cExpc3ROb2RlKiBuZXh0KCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IG1fbmV4dDsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgbWF0Y2hlcyh1aW50MzJfdCBvcGNv
ZGUpCisgICAgICAgIGNvbnN0IE9wY29kZUdyb3VwKiBncm91cCgpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAob3Bjb2RlICYgbV9vcGNvZGVNYXNrKSA9PSBtX29wY29kZVBhdHRlcm47
CisgICAgICAgICAgICByZXR1cm4gJm1fb3Bjb2RlR3JvdXA7CiAgICAgICAgIH0KIAotICAgICAg
ICBjb25zdCBjaGFyKiBmb3JtYXQoQTY0RE9wY29kZSogdGhpc09iaikKKyAgICAgICAgT3Bjb2Rl
R3JvdXBJRCBncm91cElEKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fZm9ybWF0
KHRoaXNPYmopOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlR3JvdXAubV9ncm91cElEOwor
ICAgICAgICB9CisKKyAgICAgICAgYm9vbCBtYXRjaGVzKEE2NEluc3RydWN0aW9uIG9wY29kZSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChvcGNvZGUgJiBtX29wY29kZU1hc2spID09
IG1fb3Bjb2RlUGF0dGVybjsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdWlu
dDMyX3QgbV9vcGNvZGVNYXNrOwotICAgICAgICB1aW50MzJfdCBtX29wY29kZVBhdHRlcm47Ci0g
ICAgICAgIGNvbnN0IGNoYXIqICgqbV9mb3JtYXQpKEE2NERPcGNvZGUqKTsKLSAgICAgICAgT3Bj
b2RlR3JvdXAqIG1fbmV4dDsKKyAgICAgICAgQTY0SW5zdHJ1Y3Rpb24gbV9vcGNvZGVNYXNrOwor
ICAgICAgICBBNjRJbnN0cnVjdGlvbiBtX29wY29kZVBhdHRlcm47CisgICAgICAgIGNvbnN0IE9w
Y29kZUdyb3VwJiBtX29wY29kZUdyb3VwOworICAgICAgICBPcGNvZGVHcm91cExpc3ROb2RlKiBt
X25leHQ7CiAgICAgfTsKIAogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKIAotICAg
IEE2NERPcGNvZGUoKQotICAgICAgICA6IG1fb3Bjb2RlKDApCisgICAgQTY0RE9wY29kZShBNjRJ
bnN0cnVjdGlvbiogc3RhcnRBZGRyZXNzLCBzaXplX3QgY291bnQpCisgICAgICAgIDogbV9zdGFy
dEFkZHJlc3Moc3RhcnRBZGRyZXNzKQorICAgICAgICAsIG1fb3Bjb2RlKDApCiAgICAgICAgICwg
bV9idWZmZXJPZmZzZXQoMCkKICAgICB7CisgICAgICAgIG1fZW5kQWRkcmVzcyA9IG1fc3RhcnRB
ZGRyZXNzICsgY291bnQ7CiAgICAgICAgIGluaXQoKTsKLSAgICAgICAgbV9mb3JtYXRCdWZmZXJb
MF0gPSAnXDAnOworICAgICAgICByZXNldEZvcm1hdCgpOwogICAgIH0KIAotICAgIGNvbnN0IGNo
YXIqIGRpc2Fzc2VtYmxlKHVpbnQzMl90KiBjdXJyZW50UEMpOworICAgIEE2NERPcGNvZGU6Ok9w
Y29kZUdyb3VwSUQgb3Bjb2RlR3JvdXBJRChBNjRJbnN0cnVjdGlvbiBpbnNuKTsKKyAgICBBNjRE
T3Bjb2RlOjpPcGNvZGVHcm91cElEIG9wY29kZUdyb3VwSURGb3JQcmlvckluc24odW5zaWduZWQg
cHJpb3JPZmZzZXQpOworICAgIGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmxlKEE2NEluc3RydWN0aW9u
KiBjdXJyZW50UEMpOworICAgIGJvb2wgaXNWYWxpZEluc24oQTY0SW5zdHJ1Y3Rpb24qIHBjLCBB
NjRJbnN0cnVjdGlvbiBpbnNuKTsKKworICAgIGJvb2wgaXM2NEJpdCgpIHsgcmV0dXJuIG1fb3Bj
b2RlICYgMHg4MDAwMDAwMDsgfQorICAgIHVuc2lnbmVkIHNpemUoKSB7IHJldHVybiBtX29wY29k
ZSA+PiAzMDsgfQorICAgIHVuc2lnbmVkIG9wdGlvbigpIHsgcmV0dXJuIChtX29wY29kZSA+PiAx
MykgJiAweDc7IH0KKyAgICB1bnNpZ25lZCByZCgpIHsgcmV0dXJuIG1fb3Bjb2RlICYgMHgxZjsg
fQorICAgIHVuc2lnbmVkIHJ0KCkgeyByZXR1cm4gbV9vcGNvZGUgJiAweDFmOyB9CisgICAgdW5z
aWduZWQgcm4oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gNSkgJiAweDFmOyB9CisgICAgdW5zaWdu
ZWQgcm0oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTYpICYgMHgxZjsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgdm9pZCBzZXRQQ0FuZE9wY29kZSh1aW50MzJfdCosIHVpbnQzMl90KTsKKyAgICBmcmll
bmQgY2xhc3MgU2Vjb25kYXJ5SW5zdHJ1Y3Rpb25TY29wZTsKKworICAgIHZvaWQgc2V0UENBbmRP
cGNvZGUoQTY0SW5zdHJ1Y3Rpb24qLCBBNjRJbnN0cnVjdGlvbik7CisKKyAgICB2b2lkIHNldE9w
Y29kZUZyb21Qcmlvcih1bnNpZ25lZCBvZmZzZXQpCisgICAgeworICAgICAgICBBU1NFUlQoKG1f
Y3VycmVudFBDIC0gb2Zmc2V0KSA+PSBtX3N0YXJ0QWRkcmVzcyk7CisgICAgICAgIHNldE9wY29k
ZSgqKG1fY3VycmVudFBDIC0gb2Zmc2V0KSk7CisgICAgfQorCisgICAgdm9pZCBzZXRPcGNvZGUo
QTY0SW5zdHJ1Y3Rpb24gb3Bjb2RlKSB7IG1fb3Bjb2RlID0gb3Bjb2RlOyB9CisKKyAgICBBNjRJ
bnN0cnVjdGlvbiogY3VycmVudFBDKCkgeyByZXR1cm4gbV9jdXJyZW50UEM7IH0KKworICAgIGJv
b2wgcGNNYXNrZWRPZmZzZXRJcyh1aW50cHRyX3QgbWFzaywgdWludHB0cl90IG9mZnNldCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQ
QygpKSAmIG1hc2spID09IG9mZnNldDsKKyAgICB9CisKKyAgICBBNjRJbnN0cnVjdGlvbiBjdXJy
ZW50T3Bjb2RlKCkgeyByZXR1cm4gbV9vcGNvZGU7IH0KKworICAgIEE2NEluc3RydWN0aW9uKiBw
Y1JlbGF0aXZlQWRkcmVzcyhpbnQzMl90IGltbWVkaWF0ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBjdXJyZW50UEMoKSArIGltbWVkaWF0ZTsKKyAgICB9CisKKyAgICBib29sIGlzVmFsaWRKSVRU
YXJnZXQodm9pZCogYWRkcik7CisKKyAgICB2b2lkIHJlc2V0Rm9ybWF0KCkKKyAgICB7CisgICAg
ICAgIG1fYnVmZmVyT2Zmc2V0ID0gMDsKKyAgICAgICAgbV9mb3JtYXRCdWZmZXJbMF0gPSAnXDAn
OworICAgIH0KKworICAgIGNvbnN0IE9wY29kZUdyb3VwKiBvcGNvZGVHcm91cChBNjRJbnN0cnVj
dGlvbiBpbnNuKQorICAgIHsKKyAgICAgICAgT3Bjb2RlR3JvdXBMaXN0Tm9kZSogb3BHcm91cE5v
ZGUgPSBzX29wY29kZVRhYmxlW29wY29kZUdyb3VwTnVtYmVyKGluc24pXTsKKworICAgICAgICB3
aGlsZSAob3BHcm91cE5vZGUpIHsKKyAgICAgICAgICAgIGlmIChvcEdyb3VwTm9kZS0+bWF0Y2hl
cyhpbnNuKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gb3BHcm91cE5vZGUtPmdyb3VwKCk7Cisg
ICAgICAgICAgICBvcEdyb3VwTm9kZSA9IG9wR3JvdXBOb2RlLT5uZXh0KCk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBjb25zdCBjaGFyKiBmb3Jt
YXQoKTsKKyAgICBib29sIGlzVmFsaWQoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IHNfY29uZGl0aW9uTmFtZXNbMTZdOwogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBzX3NoaWZ0TmFtZXNbNF07CkBAIC0xMDIsMTUgKzI0Nyw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIHNfRlBSZWdpc3RlclByZWZpeFtGUFJlZ2lzdGVyU2l6ZV07
CiAgICAgfQogCi0gICAgdW5zaWduZWQgb3Bjb2RlR3JvdXBOdW1iZXIodWludDMyX3Qgb3Bjb2Rl
KSB7IHJldHVybiAob3Bjb2RlID4+IDI0KSAmIDB4MWY7IH0KLQotICAgIGJvb2wgaXM2NEJpdCgp
IHsgcmV0dXJuIG1fb3Bjb2RlICYgMHg4MDAwMDAwMDsgfQotICAgIHVuc2lnbmVkIHNpemUoKSB7
IHJldHVybiBtX29wY29kZSA+PiAzMDsgfQotICAgIHVuc2lnbmVkIG9wdGlvbigpIHsgcmV0dXJu
IChtX29wY29kZSA+PiAxMykgJiAweDc7IH0KLSAgICB1bnNpZ25lZCByZCgpIHsgcmV0dXJuIG1f
b3Bjb2RlICYgMHgxZjsgfQotICAgIHVuc2lnbmVkIHJ0KCkgeyByZXR1cm4gbV9vcGNvZGUgJiAw
eDFmOyB9Ci0gICAgdW5zaWduZWQgcm4oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gNSkgJiAweDFm
OyB9Ci0gICAgdW5zaWduZWQgcm0oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTYpICYgMHgxZjsg
fQorICAgIHVuc2lnbmVkIG9wY29kZUdyb3VwTnVtYmVyKEE2NEluc3RydWN0aW9uIG9wY29kZSkg
eyByZXR1cm4gKG9wY29kZSA+PiAyNCkgJiAweDFmOyB9CiAKICAgICB2b2lkIGJ1ZmZlclByaW50
Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CiAK
QEAgLTExOSw2ICsyNTYsMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICBidWZmZXJQcmludGYoIiAg
ICUtOC44cyIsIGluc3RydWN0aW9uTmFtZSk7CiAgICAgfQogCisgICAgdm9pZCBhcHBlbmRJbnN0
cnVjdGlvbk5hbWVXaXRoTW9kaWZpZXIoY29uc3QgY2hhciogaW5zdHJ1Y3Rpb25OYW1lLCBjb25z
dCBjaGFyKiBtb2RpZmllcikKKyAgICB7CisgICAgICAgIGJ1ZmZlclByaW50ZigiICAgJXMuJXMg
IiwgaW5zdHJ1Y3Rpb25OYW1lLCBtb2RpZmllcik7CisgICAgICAgIHNpemVfdCBpbnNuV2lkdGgg
PSBzdHJsZW4oaW5zdHJ1Y3Rpb25OYW1lKSArIHN0cmxlbihtb2RpZmllcikgKyAyOworICAgICAg
ICBmb3IgKDsgaW5zbldpZHRoIDwgODsgaW5zbldpZHRoKyspCisgICAgICAgICAgICBhcHBlbmRD
aGFyYWN0ZXIoJyAnKTsKKyAgICB9CisKICAgICB2b2lkIGFwcGVuZFJlZ2lzdGVyTmFtZSh1bnNp
Z25lZCByZWdpc3Rlck51bWJlciwgYm9vbCBpczY0Qml0ID0gdHJ1ZSk7CiAgICAgdm9pZCBhcHBl
bmRTUE9yUmVnaXN0ZXJOYW1lKHVuc2lnbmVkIHJlZ2lzdGVyTnVtYmVyLCBib29sIGlzNjRCaXQg
PSB0cnVlKQogICAgIHsKQEAgLTE0MCw2ICsyODUsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9p
ZCBhcHBlbmRGUFJlZ2lzdGVyTmFtZSh1bnNpZ25lZCByZWdpc3Rlck51bWJlciwgdW5zaWduZWQg
cmVnaXN0ZXJTaXplKTsKIAorICAgIHZvaWQgYXBwZW5kU0lNRFJlZ2lzdGVyTmFtZSh1bnNpZ25l
ZCByZWdpc3Rlck51bWJlcikKKyAgICB7CisgICAgICAgIGJ1ZmZlclByaW50ZigidiV1IiwgcmVn
aXN0ZXJOdW1iZXIpOworICAgIH0KKwogICAgIHZvaWQgYXBwZW5kU2VwYXJhdG9yKCkKICAgICB7
CiAgICAgICAgIGJ1ZmZlclByaW50ZigiLCAiKTsKQEAgLTE4NSw3ICszMzUsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIGJ1ZmZlclByaW50ZigiIzB4JSIgUFJJeDY0LCBpbW1lZGlhdGUpOwogICAg
IH0KIAotICAgIHZvaWQgYXBwZW5kUENSZWxhdGl2ZU9mZnNldCh1aW50MzJfdCogcGMsIGludDMy
X3QgaW1tZWRpYXRlKQorICAgIHZvaWQgYXBwZW5kUENSZWxhdGl2ZU9mZnNldChBNjRJbnN0cnVj
dGlvbiogcGMsIGludDMyX3QgaW1tZWRpYXRlKQogICAgIHsKICAgICAgICAgYnVmZmVyUHJpbnRm
KCIweCUiIFBSSXg2NCwgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4ocGMgKyBpbW1lZGlhdGUp
KTsKICAgICB9CkBAIC0xOTgsMTkgKzM0OCw0MyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgYnVmZmVyU2l6ZSA9IDgxOwogCiAgICAgY2hhciBtX2Zvcm1hdEJ1ZmZlclti
dWZmZXJTaXplXTsKLSAgICB1aW50MzJfdCogbV9jdXJyZW50UEM7Ci0gICAgdWludDMyX3QgbV9v
cGNvZGU7CisgICAgQTY0SW5zdHJ1Y3Rpb24qIG1fc3RhcnRBZGRyZXNzOworICAgIEE2NEluc3Ry
dWN0aW9uKiBtX2VuZEFkZHJlc3M7CisgICAgQTY0SW5zdHJ1Y3Rpb24qIG1fY3VycmVudFBDOwor
ICAgIEE2NEluc3RydWN0aW9uIG1fb3Bjb2RlOwogICAgIGludCBtX2J1ZmZlck9mZnNldDsKIAog
cHJpdmF0ZToKLSAgICBzdGF0aWMgT3Bjb2RlR3JvdXAqIG9wY29kZVRhYmxlWzMyXTsKKyAgICBz
dGF0aWMgY29uc3QgT3Bjb2RlR3JvdXAgc19vcGNvZGVHcm91cFtzX29wY29kZUdyb3VwQ291bnRd
OworICAgIHN0YXRpYyBPcGNvZGVHcm91cExpc3ROb2RlKiBzX29wY29kZVRhYmxlWzMyXTsKIAog
ICAgIHN0YXRpYyBib29sIHNfaW5pdGlhbGl6ZWQ7CiB9OwogCitjbGFzcyBTZWNvbmRhcnlJbnN0
cnVjdGlvblNjb3BlIHsKK3B1YmxpYzoKKyAgICBTZWNvbmRhcnlJbnN0cnVjdGlvblNjb3BlKEE2
NERPcGNvZGUmIGRpc2Fzc2VtYmxlcikKKyAgICAgICAgOiBtX2Rpc2Fzc2VtYmxlcihkaXNhc3Nl
bWJsZXIpCisgICAgICAgICwgbV9zYXZlZE9wY29kZShkaXNhc3NlbWJsZXIuY3VycmVudE9wY29k
ZSgpKQorICAgIHsKKyAgICB9CisKKyAgICB+U2Vjb25kYXJ5SW5zdHJ1Y3Rpb25TY29wZSgpCisg
ICAgeworICAgICAgICBtX2Rpc2Fzc2VtYmxlci5zZXRPcGNvZGUobV9kaXNhc3NlbWJsZXIuY3Vy
cmVudE9wY29kZSgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQTY0RE9wY29kZSYgbV9kaXNh
c3NlbWJsZXI7CisgICAgQTY0RE9wY29kZTo6QTY0SW5zdHJ1Y3Rpb24gbV9zYXZlZE9wY29kZTsK
K307CisKICNkZWZpbmUgREVGSU5FX1NUQVRJQ19GT1JNQVQoa2xhc3MsIHRoaXNPYmopIFwKICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBmb3JtYXQoQTY0RE9wY29kZSogdGhpc09iaikgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDwga2xhc3MgKj4odGhpc09iaiktPmZvcm1hdCgpOyB9CiAKKyNkZWZp
bmUgREVGSU5FX1NUQVRJQ19JU19WQUxJRChrbGFzcywgdGhpc09iaikgXAorICAgIHN0YXRpYyBi
b29sIGlzVmFsaWQoQTY0RE9wY29kZSogdGhpc09iaikgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDwga2xhc3MgKj4odGhpc09iaiktPmlzVmFsaWQoKTsgfQorCiBjbGFzcyBBNjRET3Bjb2RlQWRk
U3VidHJhY3QgOiBwdWJsaWMgQTY0RE9wY29kZSB7CiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBzX29wTmFtZXNbNF07CkBAIC0yMjcsMTIgKzQwMSwxNCBAQCBwdWJsaWM6
CiAKIGNsYXNzIEE2NERPcGNvZGVBZGRTdWJ0cmFjdEltbWVkaWF0ZSA6IHB1YmxpYyBBNjRET3Bj
b2RlQWRkU3VidHJhY3QgewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bWFzayA9IDB4MWYwMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJu
ID0gMHgxMTAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sg
PSAweDFmMDAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVy
biA9IDB4MTEwMDAwMDA7CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlQWRk
U3VidHJhY3RJbW1lZGlhdGUsIHRoaXNPYmopOworICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQo
QTY0RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYXRlLCB0aGlzT2JqKTsKIAogICAgIGNvbnN0IGNo
YXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgYm9vbCBpc01vdlNQKCkg
eyByZXR1cm4gKCFvcEFuZFMoKSAmJiAhaW1tZWQxMigpICYmICgocmQoKSA9PSAzMSkgfHwgcm4o
KSA9PSAzMSkpOyB9CiAgICAgdW5zaWduZWQgc2hpZnQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4g
MjIpICYgMHgzOyB9CkBAIC0yNDEsMjUgKzQxNywzMCBAQCBwdWJsaWM6CiAKIGNsYXNzIEE2NERP
cGNvZGVBZGRTdWJ0cmFjdEV4dGVuZGVkUmVnaXN0ZXIgOiBwdWJsaWMgQTY0RE9wY29kZUFkZFN1
YnRyYWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAw
eDFmZTAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4MGIy
MDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHgxZmUw
MDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweDBi
MjAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUFkZFN1YnRyYWN0
RXh0ZW5kZWRSZWdpc3RlciwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChB
NjRET3Bjb2RlQWRkU3VidHJhY3RFeHRlbmRlZFJlZ2lzdGVyLCB0aGlzT2JqKTsKIAogICAgIGNv
bnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgdW5zaWduZWQg
aW1tZWRpYXRlMygpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMCkgJiAweDc7IH0KIH07CiAKIGNs
YXNzIEE2NERPcGNvZGVBZGRTdWJ0cmFjdFNoaWZ0ZWRSZWdpc3RlciA6IHB1YmxpYyBBNjRET3Bj
b2RlQWRkU3VidHJhY3QgewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
bWFzayA9IDB4MWYyMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJu
ID0gMHgwYjAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sg
PSAweDFmMjAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVy
biA9IDB4MGIwMDAwMDA7CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlQWRk
U3VidHJhY3RTaGlmdGVkUmVnaXN0ZXIsIHRoaXNPYmopOworICAgIERFRklORV9TVEFUSUNfSVNf
VkFMSUQoQTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyLCB0aGlzT2JqKTsKIAog
ICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCisgICAgYm9v
bCBpc0FuZCgpIHsgcmV0dXJuICFvcEFuZFMoKTsgfQogICAgIGJvb2wgaXNOZWcoKSB7IHJldHVy
biAob3AoKSAmJiBybigpID09IDMxKTsgfQogICAgIGNvbnN0IGNoYXIqIG5lZ05hbWUoKSB7IHJl
dHVybiBzQml0KCkgPyAibmVncyIgOiAibmVnIjsgfQogICAgIHVuc2lnbmVkIHNoaWZ0KCkgeyBy
ZXR1cm4gKG1fb3Bjb2RlID4+IDIyKSAmIDB4MzsgfQpAQCAtMjc0LDEyICs0NTUsMTQgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19leHRyYWN0T3BOYW1lc1szXTsK
IAogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4MWY4MDAw
MDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxMzAwMDAwMDsK
KyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDFmODAwMDAwOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MTMwMDAwMDA7
CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlQml0ZmllbGQsIHRoaXNPYmop
OworICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZUJpdGZpZWxkLCB0aGlzT2Jq
KTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAg
ICAgY29uc3QgY2hhciogb3BOYW1lKCkgeyByZXR1cm4gc19vcE5hbWVzW29wYygpXTsgfQogICAg
IGNvbnN0IGNoYXIqIGV4dGVuZFBzZXVkb09wTmFtZXModW5zaWduZWQgb3BTaXplKSB7IHJldHVy
biBzX2V4dGVuZFBzZXVkb09wTmFtZXNbb3BjKCldW29wU2l6ZV07IH0KQEAgLTI5NCwxMiArNDc3
LDE0IEBAIHB1YmxpYzoKIAogY2xhc3MgQTY0RE9wY29kZUNvbXBhcmVBbmRCcmFuY2hJbW1lZGlh
dGUgOiBwdWJsaWMgQTY0RE9wY29kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50MzJfdCBtYXNrID0gMHg3ZTAwMDAwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IHBhdHRlcm4gPSAweDM0MDAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rp
b24gbWFzayA9IDB4N2UwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlv
biBwYXR0ZXJuID0gMHgzNDAwMDAwMDsKIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERP
cGNvZGVDb21wYXJlQW5kQnJhbmNoSW1tZWRpYXRlLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RB
VElDX0lTX1ZBTElEKEE2NERPcGNvZGVDb21wYXJlQW5kQnJhbmNoSW1tZWRpYXRlLCB0aGlzT2Jq
KTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAg
ICAgdW5zaWduZWQgb3BCaXQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjQpICYgMHgxOyB9CiAg
ICAgaW50IGltbWVkaWF0ZTE5KCkgeyByZXR1cm4gKHN0YXRpY19jYXN0PGludD4oKG1fb3Bjb2Rl
ID4+IDUpICYgMHg3ZmZmZikgPDwgMTMpID4+IDEzOyB9CkBAIC0zMDcsMTIgKzQ5MiwxNCBAQCBw
dWJsaWM6CiAKIGNsYXNzIEE2NERPcGNvZGVDb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSA6IHB1
YmxpYyBBNjRET3Bjb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1hc2sgPSAweGZmMDAwMDEwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVy
biA9IDB4NTQwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNr
ID0gMHhmZjAwMDAxMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRl
cm4gPSAweDU0MDAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUNv
bmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lT
X1ZBTElEKEE2NERPcGNvZGVDb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSwgdGhpc09iaik7CiAK
ICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBib29sIGlzVmFsaWQoKTsKIAogICAgIHVu
c2lnbmVkIGNvbmRpdGlvbigpIHsgcmV0dXJuIG1fb3Bjb2RlICYgMHhmOyB9CiAgICAgaW50IGlt
bWVkaWF0ZTE5KCkgeyByZXR1cm4gKHN0YXRpY19jYXN0PGludD4oKG1fb3Bjb2RlID4+IDUpICYg
MHg3ZmZmZikgPDwgMTMpID4+IDEzOyB9CkBAIC0zMjMsMTIgKzUxMCwxNCBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX29wTmFtZXNbNF07CiAKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAweDFmZTAwMDAwOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4MWE4MDAwMDA7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHgxZmUwMDAwMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweDFhODAwMDAwOwogCiAgICAgREVGSU5F
X1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUNvbmRpdGlvbmFsU2VsZWN0LCB0aGlzT2JqKTsKKyAg
ICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVDb25kaXRpb25hbFNlbGVjdCwgdGhp
c09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBib29sIGlzVmFsaWQoKTsK
IAogICAgIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuIHNfb3BOYW1lc1tvcE51bSgpXTsg
fQogICAgIHVuc2lnbmVkIG9wTnVtKCkgeyByZXR1cm4gKG9wKCkgPDwgMSB8IChvcDIoKSAmIDB4
MSkpOyB9CkBAIC0zNDQsMTMgKzUzMywxNSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBzX3BhY0F1dE9wTmFtZXNbMThdOwogICAgIAogcHVibGljOgotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4NWZlMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHg1YWMwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDVmZTAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIg
QTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4NWFjMDAwMDA7CiAgICAgCiAgICAgREVGSU5FX1NU
QVRJQ19GT1JNQVQoQTY0RE9wY29kZURhdGFQcm9jZXNzaW5nMVNvdXJjZSwgdGhpc09iaik7Ci0g
ICAgCisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlRGF0YVByb2Nlc3Npbmcx
U291cmNlLCB0aGlzT2JqKTsKKwogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOwotICAgIAorICAg
IGJvb2wgaXNWYWxpZCgpOworCiAgICAgY29uc3QgY2hhciogb3BOYW1lKCkgeyByZXR1cm4gc19v
cE5hbWVzW29wTmFtZUluZGV4KCldOyB9CiAgICAgdW5zaWduZWQgc0JpdCgpIHsgcmV0dXJuICht
X29wY29kZSA+PiAyOSkgJiAweDE7IH0KICAgICB1bnNpZ25lZCBvcENvZGUoKSB7IHJldHVybiAo
bV9vcGNvZGUgPj4gMTApICYgMHgzZjsgfQpAQCAtMzYzLDEyICs1NTQsMTQgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19vcE5hbWVzWzE2XTsKIAogcHVibGljOgot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4NWZlMDAwMDA7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxYWMwMDAwMDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDVmZTAwMDAwOworICAgIHN0YXRpYyBj
b25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MWFjMDAwMDA7CiAKICAgICBERUZJ
TkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcyU291cmNlLCB0aGlzT2Jq
KTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzJT
b3VyY2UsIHRoaXNPYmopOwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBp
c1ZhbGlkKCk7CiAKICAgICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVybiBzX29wTmFtZXNb
b3BOYW1lSW5kZXgoKV07IH0KICAgICB1bnNpZ25lZCBzQml0KCkgeyByZXR1cm4gKG1fb3Bjb2Rl
ID4+IDI5KSAmIDB4MTsgfQpAQCAtMzgyLDEyICs1NzUsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3Qgc19wc2V1ZG9PcE5hbWVzWzE2XTsKIAogcHVibGljOgotICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4MWYwMDAwMDA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxYjAwMDAwMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDFmMDAwMDAwOworICAgIHN0YXRpYyBjb25z
dGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MWIwMDAwMDA7CiAKICAgICBERUZJTkVf
U1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmczU291cmNlLCB0aGlzT2JqKTsK
KyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzNTb3Vy
Y2UsIHRoaXNPYmopOwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1Zh
bGlkKCk7CiAKICAgICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVybiByYSgpID09IDMxID8g
c19wc2V1ZG9PcE5hbWVzW29wTnVtKCkgJiAweGZdIDogc19vcE5hbWVzW29wTnVtKCkgJiAweGZd
OyB9CiAgICAgdW5zaWduZWQgcmEoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTApICYgMHgxZjsg
fQpAQCAtMzk5LDEyICs1OTQsMTQgQEAgcHVibGljOgogCiBjbGFzcyBBNjRPcGNvZGVFeGNlcHRp
b25HZW5lcmF0aW9uIDogcHVibGljIEE2NERPcGNvZGUgewogcHVibGljOgotICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4ZmYwMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBwYXR0ZXJuID0gMHhkNDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2
NEluc3RydWN0aW9uIG1hc2sgPSAweGZmMDAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0
SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4ZDQwMDAwMDA7CiAKICAgICBERUZJTkVfU1RBVElDX0ZP
Uk1BVChBNjRPcGNvZGVFeGNlcHRpb25HZW5lcmF0aW9uLCB0aGlzT2JqKTsKKyAgICBERUZJTkVf
U1RBVElDX0lTX1ZBTElEKEE2NE9wY29kZUV4Y2VwdGlvbkdlbmVyYXRpb24sIHRoaXNPYmopOwog
CiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICB1
bnNpZ25lZCBvcGMoKSB7IHJldHVybiAobV9vcGNvZGU+PjIxKSAmIDB4NzsgfQogICAgIHVuc2ln
bmVkIG9wMigpIHsgcmV0dXJuIChtX29wY29kZT4+MikgJiAweDc7IH0KQEAgLTQxNCwxMiArNjEx
LDE0IEBAIHB1YmxpYzoKIAogY2xhc3MgQTY0RE9wY29kZUV4dHJhY3QgOiBwdWJsaWMgQTY0RE9w
Y29kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHgx
ZjgwMDAwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDEzODAw
MDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4MWY4MDAw
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgxMzgw
MDAwMDsKIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVFeHRyYWN0LCB0aGlz
T2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVFeHRyYWN0LCB0aGlz
T2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwog
CiAgICAgdW5zaWduZWQgb3AyMSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAyOSkgJiAweDM7IH0K
ICAgICB1bnNpZ25lZCBuQml0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDIyKSAmIDB4MTsgfQpA
QCAtNDM5LDEyICs2MzgsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19vcE5hbWVzWzE2XTsKICAgICAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IG1hc2sgPSAweDVmMjAzYzAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
cGF0dGVybiA9IDB4MWUyMDIwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlv
biBtYXNrID0gMHg1ZjIwM2MwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9u
IHBhdHRlcm4gPSAweDFlMjAyMDAwOwogICAgIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2
NERPcGNvZGVGbG9hdGluZ1BvaW50Q29tcGFyZSwgdGhpc09iaik7Ci0gICAgCisgICAgREVGSU5F
X1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbXBhcmUsIHRoaXNPYmop
OworCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAg
ICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVybiAob3BOdW0oKSAmIDB4MikgPyAiZmNtcGUi
IDogImZjbXAiOyB9CiAKQEAgLTQ1NSwxMyArNjU2LDE1IEBAIHB1YmxpYzoKIAogY2xhc3MgQTY0
RE9wY29kZUZsb2F0aW5nUG9pbnRDb25kaXRpb25hbFNlbGVjdCA6IHB1YmxpYyBBNjRET3Bjb2Rl
RmxvYXRpbmdQb2ludE9wcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBtYXNrID0gMHg1ZjIwMGMwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRl
cm4gPSAweDFlMjAwYzAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFz
ayA9IDB4NWYyMDBjMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0
ZXJuID0gMHgxZTIwMGMwMDsKICAgICAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bj
b2RlRmxvYXRpbmdQb2ludENvbmRpdGlvbmFsU2VsZWN0LCB0aGlzT2JqKTsKLSAgICAKKyAgICBE
RUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVGbG9hdGluZ1BvaW50Q29uZGl0aW9uYWxT
ZWxlY3QsIHRoaXNPYmopOworCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7Ci0gICAgCisgICAg
Ym9vbCBpc1ZhbGlkKCk7CisKICAgICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVybiAiZmNz
ZWwiOyB9CiAgICAgCiAgICAgdW5zaWduZWQgY29uZGl0aW9uKCkgeyByZXR1cm4gKG1fb3Bjb2Rl
ID4+IDEyKSAmIDB4ZjsgfQpAQCAtNDcyLDEyICs2NzUsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3Qgc19vcE5hbWVzWzE2XTsKIAogcHVibGljOgotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4NWYyMDdjMDA7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxZTIwNDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDVmMjA3YzAwOworICAgIHN0YXRpYyBjb25zdGV4cHIg
QTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MWUyMDQwMDA7CiAKICAgICBERUZJTkVfU1RBVElD
X0ZPUk1BVChBNjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZSwgdGhp
c09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlRmxvYXRpbmdQb2lu
dERhdGFQcm9jZXNzaW5nMVNvdXJjZSwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3Jt
YXQoKTsKKyAgICBib29sIGlzVmFsaWQoKTsKIAogICAgIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsg
cmV0dXJuIHNfb3BOYW1lc1tvcE51bSgpXTsgfQogCkBAIC00ODksMTIgKzY5NCwxNCBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX29wTmFtZXNbMTZdOwogCiBwdWJs
aWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHg1ZjIwMDgwMDsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDFlMjAwODAwOworICAgIHN0
YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4NWYyMDA4MDA7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgxZTIwMDgwMDsKIAogICAg
IERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVGbG9hdGluZ1BvaW50RGF0YVByb2Nlc3Np
bmcyU291cmNlLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNv
ZGVGbG9hdGluZ1BvaW50RGF0YVByb2Nlc3NpbmcyU291cmNlLCB0aGlzT2JqKTsKIAogICAgIGNv
bnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgY29uc3QgY2hh
ciogb3BOYW1lKCkgeyByZXR1cm4gc19vcE5hbWVzW29wTnVtKCldOyB9CiAKQEAgLTUwNiwxMyAr
NzEzLDE1IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BOYW1l
c1s0XTsKICAgICAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sg
PSAweDVmMjAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4
MWUwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHg1
ZjIwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAw
eDFlMDAwMDAwOwogICAgIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVGbG9h
dGluZ0ZpeGVkUG9pbnRDb252ZXJzaW9ucywgdGhpc09iaik7Ci0gICAgCisgICAgREVGSU5FX1NU
QVRJQ19JU19WQUxJRChBNjRET3Bjb2RlRmxvYXRpbmdGaXhlZFBvaW50Q29udmVyc2lvbnMsIHRo
aXNPYmopOworCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7Ci0gICAgCisgICAgYm9vbCBpc1Zh
bGlkKCk7CisKICAgICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVybiBzX29wTmFtZXNbb3BO
dW0oKV07IH0KICAgICB1bnNpZ25lZCBybW9kZSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxOSkg
JiAweDM7IH0KICAgICB1bnNpZ25lZCBvcGNvZGUoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTYp
ICYgMHg3OyB9CkBAIC01MjUsMTIgKzczNCwxNCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBzX29wTmFtZXNbMzJdOwogICAgIAogcHVibGljOgotICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4NWYyMGZjMDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxZTIwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2
NEluc3RydWN0aW9uIG1hc2sgPSAweDVmMjBmYzAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0
SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MWUyMDAwMDA7CiAKICAgICBERUZJTkVfU1RBVElDX0ZP
Uk1BVChBNjRET3Bjb2RlRmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9ucywgdGhpc09iaik7
CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlRmxvYXRpbmdQb2ludEludGVn
ZXJDb252ZXJzaW9ucywgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAg
ICBib29sIGlzVmFsaWQoKTsKIAogICAgIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuIHNf
b3BOYW1lc1tvcE51bSgpXTsgfQogICAgIHVuc2lnbmVkIHJtb2RlKCkgeyByZXR1cm4gKG1fb3Bj
b2RlID4+IDE5KSAmIDB4MzsgfQpAQCAtNTM4LDYgKzc0OSwzMSBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgb3BOdW0oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTYpICYgMHgxZjsgfQogfTsKIAor
Y2xhc3MgQTY0RE9wY29kZVNJTURUaHJlZVNhbWUgOiBwdWJsaWMgQTY0RE9wY29kZSB7CisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfaW50T3BOYW1lc1s2NF07CisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGNvbnN0IHNfZnBPcE5hbWVzWzMyXTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
Y29uc3Qgc19iaXRPcE5hbWVzWzhdOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBB
NjRJbnN0cnVjdGlvbiBtYXNrID0gMHg5ZjIwMDQwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2
NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweDBlMjAwNDAwOworCisgICAgREVGSU5FX1NUQVRJQ19G
T1JNQVQoQTY0RE9wY29kZVNJTURUaHJlZVNhbWUsIHRoaXNPYmopOworICAgIERFRklORV9TVEFU
SUNfSVNfVkFMSUQoQTY0RE9wY29kZVNJTURUaHJlZVNhbWUsIHRoaXNPYmopOworCisgICAgY29u
c3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CisKKyAgICBjb25zdCBjaGFy
KiBvcE5hbWUoKTsKKyAgICBjb25zdCBjaGFyKiBtb2RpZmllcigpOworICAgIAorICAgIGJvb2wg
aXNCaXRPcCgpIHsgcmV0dXJuIG9wY29kZSgpID09IDBiMDAwMTE7IH0KKyAgICB1bnNpZ25lZCBx
Qml0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDMwKSAmIDB4MTsgfQorICAgIHVuc2lnbmVkIHVC
aXQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjkpICYgMHgxOyB9CisgICAgdW5zaWduZWQgc2l6
ZSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAyMikgJiAweDM7IH0KKyAgICB1bnNpZ25lZCBvcGNv
ZGUoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTEpICYgMHgxZjsgfQorfTsKKwogY2xhc3MgQTY0
RE9wY29kZVN5c3RlbSA6IHB1YmxpYyBBNjRET3Bjb2RlIHsKIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBsQml0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDIxKSAmIDB4MTsgfQpAQCAtNTUwLDIyICs3
ODYsMjYgQEAgcHVibGljOgogCiBjbGFzcyBBNjRET3Bjb2RlTVNSSW1tZWRpYXRlIDogcHVibGlj
IEE2NERPcGNvZGVTeXN0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3QgbWFzayA9IDB4ZmZmOGYwMWY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0
ZXJuID0gMHhkNTAwNDAxZjsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1h
c2sgPSAweGZmZjhmMDFmOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0
dGVybiA9IDB4ZDUwMDQwMWY7CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2Rl
TVNSSW1tZWRpYXRlLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERP
cGNvZGVNU1JJbW1lZGlhdGUsIHRoaXNPYmopOwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7
CisgICAgYm9vbCBpc1ZhbGlkKCk7CiB9OwogCiBjbGFzcyBBNjRET3Bjb2RlTVNST3JNUlNSZWdp
c3RlciA6IHB1YmxpYyBBNjRET3Bjb2RlU3lzdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IG1hc2sgPSAweGZmZDAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgcGF0dGVybiA9IDB4ZDUxMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJ
bnN0cnVjdGlvbiBtYXNrID0gMHhmZmQwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NElu
c3RydWN0aW9uIHBhdHRlcm4gPSAweGQ1MTAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JN
QVQoQTY0RE9wY29kZU1TUk9yTVJTUmVnaXN0ZXIsIHRoaXNPYmopOworICAgIERFRklORV9TVEFU
SUNfSVNfVkFMSUQoQTY0RE9wY29kZU1TUk9yTVJTUmVnaXN0ZXIsIHRoaXNPYmopOwogCiAgICAg
Y29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICBjb25zdCBj
aGFyKiBvcE5hbWUoKSB7IHJldHVybiBsQml0KCkgPyAibXJzIiA6ICJtc3IiOyB9CiAgICAgdW5z
aWduZWQgc3lzdGVtUmVnaXN0ZXIoKSB7IHJldHVybiAoKG9wMCgpIDw8IDE0KSB8IChvcDEoKSA8
PCAxMSkgfCAoY3JOKCkgPDwgNykgfCAoY3JNKCkgPDwgMykgfCBvcDIoKSk7IH0KQEAgLTU3Niwy
OCArODE2LDQ4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BO
YW1lc1szMl07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sg
PSAweGZmZmZmMDFmOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4
ZDUwMzIwMWY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHhm
ZmZmZjAxZjsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAw
eGQ1MDMyMDFmOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUhpbnQsIHRo
aXNPYmopOworICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZUhpbnQsIHRoaXNP
YmopOwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAK
ICAgICBjb25zdCBjaGFyKiBvcE5hbWUoKTsKICAgICB1bnNpZ25lZCBpbW1lZGlhdGU3KCkgeyBy
ZXR1cm4gKG1fb3Bjb2RlID4+IDUpICYgMHg3ZjsgfQogfTsKIAorY2xhc3MgQTY0RE9wY29kZVN5
c3RlbUluc3QgOiBwdWJsaWMgQTY0RE9wY29kZVN5c3RlbSB7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IHNfYXRPcHMxMDAwWzE2XTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
c19kY09wczAwMFsxNl07CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfZGNPcHMxMTFb
MzJdOworCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNr
ID0gMHhmZmY4MDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRl
cm4gPSAweGQ1MDgwMDAwOworCisgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZVN5
c3RlbUluc3QsIHRoaXNPYmopOworICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29k
ZVN5c3RlbUluc3QsIHRoaXNPYmopOworCisgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAg
Ym9vbCBpc1ZhbGlkKCk7Cit9OworCiBjbGFzcyBBNjRET3Bjb2RlU3lzdGVtU3luYyA6IHB1Ymxp
YyBBNjRET3Bjb2RlU3lzdGVtIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19vcE5h
bWVzWzhdOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX29wdGlvbk5hbWVzWzE2XTsK
IAogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4ZmZmZmYw
MWY7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHhkNTAzMzAxZjsK
KyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweGZmZmZmMDFmOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4ZDUwMzMwMWY7
CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlU3lzdGVtU3luYywgdGhpc09i
aik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlU3lzdGVtU3luYywgdGhp
c09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBib29sIGlzVmFsaWQoKTsK
IAogICAgIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuIHNfb3BOYW1lc1tvcDIoKV07IH0K
ICAgICBjb25zdCBjaGFyKiBvcHRpb24oKSB7IHJldHVybiBzX29wdGlvbk5hbWVzW2NyTSgpXTsg
fQpAQCAtNjI1LDEyICs4ODUsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciog
Y29uc3Qgc19vcE5hbWVzWzY0XTsKIAogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgbWFzayA9IDB4M2YwMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBw
YXR0ZXJuID0gMHgwODAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9u
IG1hc2sgPSAweDNmMDAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24g
cGF0dGVybiA9IDB4MDgwMDAwMDA7CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bj
b2RlTG9hZFN0b3JlRXhjbHVzaXZlLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZB
TElEKEE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmUsIHRoaXNPYmopOwogCiAgICAgY29uc3Qg
Y2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICBjb25zdCBjaGFyKiBv
cE5hbWUoKQogICAgIHsKQEAgLTY1MywxMiArOTE1LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IHNfdW5zY2FsZWRPcE5hbWVzWzMyXTsKIAogcHVibGljOgotICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4M2IyMDAwMDA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgzODAwMDAwMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDNiMjAwMDAwOworICAgIHN0YXRpYyBjb25z
dGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MzgwMDAwMDA7CiAKICAgICBERUZJTkVf
U1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlTG9hZFN0b3JlSW1tZWRpYXRlLCB0aGlzT2JqKTsKKyAg
ICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVMb2FkU3RvcmVJbW1lZGlhdGUsIHRo
aXNPYmopOwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7
CiAKICAgICBjb25zdCBjaGFyKiB1bnByaXZpbGVnZWRPcE5hbWUoKQogICAgIHsKQEAgLTY3NCwx
MiArOTM4LDE0IEBAIHB1YmxpYzoKIAogY2xhc3MgQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVy
T2Zmc2V0IDogcHVibGljIEE2NERPcGNvZGVMb2FkU3RvcmUgewogcHVibGljOgotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4M2IyMDBjMDA7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgzODIwMDgwMDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDNiMjAwYzAwOworICAgIHN0YXRpYyBjb25zdGV4cHIg
QTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MzgyMDA4MDA7CiAKICAgICBERUZJTkVfU1RBVElD
X0ZPUk1BVChBNjRET3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJPZmZzZXQsIHRoaXNPYmopOworICAg
IERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyT2Zmc2V0
LCB0aGlzT2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxp
ZCgpOwogCiAgICAgdW5zaWduZWQgb3B0aW9uKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEzKSAm
IDB4NzsgfQogICAgIGludCBzQml0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEyKSAmIDB4MTsg
fQpAQCAtNjk2LDEyICs5NjIsMTQgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHVibGljOgotICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4ZmYyMDA0MDA7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHhmODIwMDQwMDsKKyAgICBzdGF0aWMgY29u
c3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweGZmMjAwNDAwOworICAgIHN0YXRpYyBjb25z
dGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4ZjgyMDA0MDA7CiAgICAgCiAgICAgREVG
SU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUxvYWRTdG9yZUF1dGhlbnRpY2F0ZWQsIHRoaXNP
YmopOwotICAgIAorICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZUxvYWRTdG9y
ZUF1dGhlbnRpY2F0ZWQsIHRoaXNPYmopOworCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7Cisg
ICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICB1bnNpZ25lZCBvcE51bSgpIHsgcmV0dXJuIG1CaXQo
KTsgfQogICAgIHVuc2lnbmVkIG1CaXQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjMpICYgMHgx
OyB9CkBAIC03MTMsMTIgKzk4MSwxNSBAQCBwdWJsaWM6CiAKIGNsYXNzIEE2NERPcGNvZGVMb2Fk
U3RvcmVSZWdpc3RlclBhaXIgOiBwdWJsaWMgQTY0RE9wY29kZUxvYWRTdG9yZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHgzYTAwMDAwMDsKLSAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDI4MDAwMDAwOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4M2EwMDAwMDA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgyODAwMDAwMDsKIAogICAgIERF
RklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3RlclBhaXIsIHRoaXNP
YmopOworICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lz
dGVyUGFpciwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBib29s
IGlzVmFsaWQoKTsKKwogICAgIGNvbnN0IGNoYXIqIG9wTmFtZSgpOwogCiAgICAgdW5zaWduZWQg
cnQyKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDB4MWY7IH0KQEAgLTcyOSwxMiArMTAw
MCwxNCBAQCBwdWJsaWM6CiAKIGNsYXNzIEE2NERPcGNvZGVMb2FkU3RvcmVVbnNpZ25lZEltbWVk
aWF0ZSA6IHB1YmxpYyBBNjRET3Bjb2RlTG9hZFN0b3JlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAweDNiMDAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludDMyX3QgcGF0dGVybiA9IDB4MzkwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBB
NjRJbnN0cnVjdGlvbiBtYXNrID0gMHgzYjAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2
NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweDM5MDAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19G
T1JNQVQoQTY0RE9wY29kZUxvYWRTdG9yZVVuc2lnbmVkSW1tZWRpYXRlLCB0aGlzT2JqKTsKKyAg
ICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVMb2FkU3RvcmVVbnNpZ25lZEltbWVk
aWF0ZSwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBib29sIGlz
VmFsaWQoKTsKIAogICAgIHVuc2lnbmVkIGltbWVkaWF0ZTEyKCkgeyByZXR1cm4gKG1fb3Bjb2Rl
ID4+IDEwKSAmIDB4ZmZmOyB9CiB9OwpAQCAtNzU1LDEzICsxMDI4LDE3IEBAIHB1YmxpYzoKIAog
Y2xhc3MgQTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUgOiBwdWJsaWMgQTY0RE9wY29kZUxvZ2lj
YWwgewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4MWY4
MDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxMjAwMDAw
MDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDFmODAwMDAw
OworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MTIwMDAw
MDA7CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0
ZSwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlTG9naWNh
bEltbWVkaWF0ZSwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBi
b29sIGlzVmFsaWQoKTsKIAorICAgIHVpbnQ2NF90IGNvbXB1dGVJbW1lZGlhdGUoKTsKKyAgICBi
b29sIGlzQW5kKCkgeyByZXR1cm4gIW9wTnVtYmVyKCk7IH0KICAgICBib29sIGlzVHN0KCkgeyBy
ZXR1cm4gKChvcE51bWJlcigpID09IDYpICYmIChyZCgpID09IDMxKSk7IH0KICAgICBib29sIGlz
TW92KCkgeyByZXR1cm4gKChvcE51bWJlcigpID09IDIpICYmIChybigpID09IDMxKSk7IH0KICAg
ICB1bnNpZ25lZCBvcE51bWJlcigpIHsgcmV0dXJuIG9wYygpIDw8IDE7IH0KQEAgLTc3MiwxMiAr
MTA0OSwxNCBAQCBwdWJsaWM6CiAKIGNsYXNzIEE2NERPcGNvZGVMb2dpY2FsU2hpZnRlZFJlZ2lz
dGVyIDogcHVibGljIEE2NERPcGNvZGVMb2dpY2FsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IG1hc2sgPSAweDFmMDAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgcGF0dGVybiA9IDB4MGEwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJ
bnN0cnVjdGlvbiBtYXNrID0gMHgxZjAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NElu
c3RydWN0aW9uIHBhdHRlcm4gPSAweDBhMDAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JN
QVQoQTY0RE9wY29kZUxvZ2ljYWxTaGlmdGVkUmVnaXN0ZXIsIHRoaXNPYmopOworICAgIERFRklO
RV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZUxvZ2ljYWxTaGlmdGVkUmVnaXN0ZXIsIHRoaXNP
YmopOwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAK
ICAgICBib29sIGlzVHN0KCkgeyByZXR1cm4gKChvcE51bWJlcigpID09IDYpICYmIChyZCgpID09
IDMxKSk7IH0KICAgICBib29sIGlzTW92KCkgeyByZXR1cm4gKChvcGMoKSA9PSAxKSAmJiAocm4o
KSA9PSAzMSkpOyB9CkBAIC03OTEsMTIgKzEwNzAsMjEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3Qgc19vcE5hbWVzWzRdOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHgxZjgwMDAwMDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQzMl90IHBhdHRlcm4gPSAweDEyODAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0
SW5zdHJ1Y3Rpb24gbWFzayA9IDB4MWY4MDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJ
bnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgxMjgwMDAwMDsKIAogICAgIERFRklORV9TVEFUSUNfRk9S
TUFUKEE2NERPcGNvZGVNb3ZlV2lkZSwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19W
QUxJRChBNjRET3Bjb2RlTW92ZVdpZGUsIHRoaXNPYmopOwogCiAgICAgY29uc3QgY2hhciogZm9y
bWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CisKKyAgICBib29sIGlzTW92ZVdpZGUoKSB7IHJl
dHVybiAobV9vcGNvZGUgJiBtYXNrKSA9PSBwYXR0ZXJuOyB9CisgICAgYm9vbCBpc01vdm4oKTsK
KyAgICBib29sIGlzTW92eigpOworICAgIGJvb2wgaXNNb3ZrKCk7CisgICAgdWludDY0X3QgdmFs
dWUodWludDY0X3QmKTsKKyAgICB1aW50NjRfdCBidWlsZEltbWVkaWF0ZUZyb21Nb3ZlV2lkZVNl
cXVlbmNlKHVuc2lnbmVkJiB0YXJnZXRSZWcsIHVuc2lnbmVkIHN0YXJ0T2ZmZXN0KTsKIAogICAg
IGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuIHNfb3BOYW1lc1tvcGMoKV07IH0KICAgICB1
bnNpZ25lZCBvcGMoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjkpICYgMHgzOyB9CkBAIC04MDYs
MTIgKzEwOTQsMTQgQEAgcHVibGljOgogCiBjbGFzcyBBNjRET3Bjb2RlVGVzdEFuZEJyYW5jaElt
bWVkaWF0ZSA6IHB1YmxpYyBBNjRET3Bjb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnQzMl90IG1hc2sgPSAweDdlMDAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgcGF0dGVybiA9IDB4MzYwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0
cnVjdGlvbiBtYXNrID0gMHg3ZTAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3Ry
dWN0aW9uIHBhdHRlcm4gPSAweDM2MDAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQo
QTY0RE9wY29kZVRlc3RBbmRCcmFuY2hJbW1lZGlhdGUsIHRoaXNPYmopOworICAgIERFRklORV9T
VEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZVRlc3RBbmRCcmFuY2hJbW1lZGlhdGUsIHRoaXNPYmop
OwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAg
ICB1bnNpZ25lZCBiaXROdW1iZXIoKSB7IHJldHVybiAoKG1fb3Bjb2RlID4+IDI2KSAmIDB4MjAp
IHwgKChtX29wY29kZSA+PiAxOSkgJiAweDFmKTsgfQogICAgIHVuc2lnbmVkIG9wQml0KCkgeyBy
ZXR1cm4gKG1fb3Bjb2RlID4+IDI0KSAmIDB4MTsgfQpAQCAtODIwLDEyICsxMTEwLDE0IEBAIHB1
YmxpYzoKIAogY2xhc3MgQTY0RE9wY29kZVVuY29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGUgOiBw
dWJsaWMgQTY0RE9wY29kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBtYXNrID0gMHg3YzAwMDAwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRl
cm4gPSAweDE0MDAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFz
ayA9IDB4N2MwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0
ZXJuID0gMHgxNDAwMDAwMDsKIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVV
bmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElD
X0lTX1ZBTElEKEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlLCB0aGlzT2Jq
KTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAg
ICAgdW5zaWduZWQgb3AoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMzEpICYgMHgxOyB9CiAgICAg
aW50IGltbWVkaWF0ZTI2KCkgeyByZXR1cm4gKHN0YXRpY19jYXN0PGludD4obV9vcGNvZGUgJiAw
eDNmZmZmZmYpIDw8IDYpID4+IDY7IH0KQEAgLTgzNywxMyArMTEyOSwxNSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX0F1dGhPcE5hbWVzWzIwXTsKIAogcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4ZmUxZjAwMDA7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHhkNjFmMDAwMDsKKyAgICBzdGF0
aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweGZlMWYwMDAwOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4ZDYxZjAwMDA7CiAKICAgICBE
RUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaFJlZ2lzdGVy
LCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVVbmNvbmRp
dGlvbmFsQnJhbmNoUmVnaXN0ZXIsIHRoaXNPYmopOwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0
KCk7Ci0KKyAgICBib29sIGlzVmFsaWQoKTsKKyAgICAKICAgICBjb25zdCBjaGFyKiBvcE5hbWUo
KSB7IHJldHVybiBzX29wTmFtZXNbb3BjKCldOyB9CiAgICAgY29uc3QgY2hhciogYXV0aE9wTmFt
ZSgpOwogICAgIHVuc2lnbmVkIG9wYygpIHsgcmV0dXJuIChtX29wY29kZSA+PiAyMSkgJiAweGY7
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEzLDYgKzYxMywxMCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNMb2NhbFN0YXRlID0gdHJ1
ZTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihpbnB1dCk7CiAg
ICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyNpZiBFTkFCTEUo
SklUX0NBR0UpCisgICAgICAgICAgICAgICAgLy8gSklUIGNhZ2luZyBtaWdodCB1c2Ugc2NyYXRj
aCByZWdpc3RlcnMgZm9yIG1ha2luZyBhIGNhZ2VkIGNhbGwuCisgICAgICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworI2VuZGlmCiAg
ICAgICAgICAgICAgICAgR1BSUmVnIHJlZyA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgICAgICAg
ICAgRlBSUmVnIGZwUmVnID0gSW52YWxpZEZQUlJlZzsKICAgICAgICAgICAgICAgICBpZiAoZmx1
c2hGb3JtYXQgPT0gRmx1c2hlZERvdWJsZSkKQEAgLTI3OTgsNyArMjgwMiwxMSBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkgeworI2lmIEVOQUJMRShK
SVRfQ0FHRSkKKyAgICAgICAgICAgIHNldERvdWJsZSh2bUNhbGwoRG91YmxlLCBERkc6OmFyaXRo
VW5hcnlGdW5jdGlvbihtX25vZGUtPmFyaXRoVW5hcnlUeXBlKCkpLCBsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDEoKSkpKTsKKyNlbHNlCiAgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZG91Ymxl
VW5hcnkobV9ub2RlLT5hcml0aFVuYXJ5VHlwZSgpLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEo
KSkpKTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIExW
YWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CkBAIC05MjYyLDgg
KzkyNzAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAg
ICAgYXV0byBjYWxsV2l0aEV4Y2VwdGlvbkNoZWNrID0gWyZdICh2b2lkKiBjYWxsZWUpIHsKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICAgICAgICAgIGppdC5jYWxsKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cih1bnRhZ0NvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPihjYWxsZWUp
KSwgTm9QdHJUYWcpOworI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGNh
bGxlZSkpLCBHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApOwogICAgICAgICAg
ICAgICAgICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjAs
IE9wZXJhdGlvblB0clRhZyk7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy0+YXBwZW5kKGppdC5lbWl0RXhjZXB0aW9uQ2hlY2soKnZtLCBBc3NlbWJseUhlbHBlcnM6Ok5v
cm1hbEV4Y2VwdGlvbkNoZWNrLCBBc3NlbWJseUhlbHBlcnM6OkZhckp1bXBXaWR0aCkpOwogICAg
ICAgICAgICAgICAgIH07CiAKQEAgLTk2MDIsOCArOTYxNCwxMiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFhbGxvY2F0b3IubnVtYmVyT2ZSZXVzZWRSZWdpc3Rl
cnMoKSk7CiAKICAgICAgICAgICAgICAgICBhdXRvIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2sgPSBb
Jl0gKHZvaWQqIGNhbGxlZSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgICAg
ICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVudGFnQ29kZVB0cjxD
RnVuY3Rpb25QdHJUYWc+KGNhbGxlZSkpLCBOb1B0clRhZyk7CisjZWxzZQogICAgICAgICAgICAg
ICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9u
UHRyPE9wZXJhdGlvblB0clRhZz4oY2FsbGVlKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFy
Z3VtZW50R1BSMCk7CiAgICAgICAgICAgICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vblBy
ZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbmRpZgogICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25zLT5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25DaGVjaygq
dm0sIEFzc2VtYmx5SGVscGVyczo6Tm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5SGVscGVy
czo6RmFySnVtcFdpZHRoKSk7CiAgICAgICAgICAgICAgICAgfTsKIApAQCAtOTc5NSw4ICs5ODEx
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMihyZXF1aXJlZEJ5dGVzKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9w
ZXJhdGlvbkNhbGxFdmFsKT4oZ2xvYmFsT2JqZWN0LCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAg
ICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgICAgICAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHVudGFnQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxFdmFsKSksIE5vUHRy
VGFnKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkNhbGxF
dmFsKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAgICAgICAgICAg
ICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVy
YXRpb25QdHJUYWcpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy0+YXBwZW5k
KGppdC5lbWl0RXhjZXB0aW9uQ2hlY2soc3RhdGUtPnZtKCksIEFzc2VtYmx5SGVscGVyczo6Tm9y
bWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdpZHRoKSk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGRvbmUgPSBq
aXQuYnJhbmNoVGVzdDY0KENDYWxsSGVscGVyczo6Tm9uWmVybywgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIpOwpAQCAtMTc3NTYsOCArMTc3NzYsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBMVmFs
dWUgY2FsbCA9IHZtQ2FsbChWb2lkLCBvcGVyYXRpb25Xcml0ZUJhcnJpZXJTbG93UGF0aCwgbV92
bVZhbHVlLCBiYXNlKTsKLSAgICAgICAgbV9oZWFwcy5kZWNvcmF0ZUNDYWxsUmVhZCgmbV9oZWFw
cy5yb290LCBjYWxsKTsKLSAgICAgICAgbV9oZWFwcy5kZWNvcmF0ZUNDYWxsV3JpdGUoJm1faGVh
cHMuSlNDZWxsX2NlbGxTdGF0ZSwgY2FsbCk7CisgICAgICAgIGlmIChjYWxsLT5vcGNvZGUoKSA9
PSBDQ2FsbCkgeworICAgICAgICAgICAgbV9oZWFwcy5kZWNvcmF0ZUNDYWxsUmVhZCgmbV9oZWFw
cy5yb290LCBjYWxsKTsKKyAgICAgICAgICAgIG1faGVhcHMuZGVjb3JhdGVDQ2FsbFdyaXRlKCZt
X2hlYXBzLkpTQ2VsbF9jZWxsU3RhdGUsIGNhbGwpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgQVNTRVJUKGNhbGwtPm9wY29kZSgpID09IFBhdGNocG9pbnQpOworICAgICAgICAgICAg
bV9oZWFwcy5kZWNvcmF0ZVBhdGNocG9pbnRSZWFkKCZtX2hlYXBzLnJvb3QsIGNhbGwpOworICAg
ICAgICAgICAgbV9oZWFwcy5kZWNvcmF0ZVBhdGNocG9pbnRXcml0ZSgmbV9oZWFwcy5KU0NlbGxf
Y2VsbFN0YXRlLCBjYWxsKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogCkBAIC0xNzgzOCw3ICsxNzg2NCwxMSBAQCBwcml2YXRlOgogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3NhbWU8T3BlcmF0aW9uVHlwZSwgTFZhbHVlPjo6
dmFsdWUpOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5
cGU+OjpjQ2FsbEFyaXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpLCAiU2FuaXR5IGNoZWNrIik7CiAg
ICAgICAgIGNhbGxQcmVmbGlnaHQoKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBjYWdlZENDYWxsKG1fb3V0Lm1fcHJvYywgbV9vdXQubV9ibG9jaywgbV9v
dXQub3JpZ2luKCksIHR5cGUsIGZ1bmN0aW9uLCBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworI2Vsc2UKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmNhbGwodHlwZSwgbV9vdXQu
b3BlcmF0aW9uKGZ1bmN0aW9uKSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyNlbmRp
ZgogICAgICAgICBpZiAobWF5RXhpdChtX2dyYXBoLCBtX25vZGUpKQogICAgICAgICAgICAgY2Fs
bENoZWNrKCk7CiAgICAgICAgIGVsc2UgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzcsOCArMzM3LDEyIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwg
dW5zaWduZWQKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobWF0
ZXJpYWxpemF0aW9uKSwKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobWF0ZXJpYWxpemF0aW9uQXJndW1lbnRzKSk7CiAgICAgICAgICAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdC5j
YWxsKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih1bnRhZ0NvZGVQdHI8Q0Z1bmN0aW9uUHRy
VGFnPihvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKSksIE5vUHRyVGFnKTsKKyNlbHNl
CiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9T
UikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86
Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CisjZW5kaWYKICAgICAgICAgICAgIGppdC5z
dG9yZVB0cihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgbWF0ZXJpYWxpemF0aW9uVG9Qb2ludGVy
LmdldChtYXRlcmlhbGl6YXRpb24pKTsKIAogICAgICAgICAgICAgLy8gTGV0IGV2ZXJ5b25lIGtu
b3cgdGhhdCB3ZSdyZSBkb25lLgpAQCAtMzY3LDggKzM3MSwxMiBAQCBzdGF0aWMgdm9pZCBjb21w
aWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobWF0ZXJpYWxpemF0aW9uVG9Qb2ludGVyLmdldChtYXRlcmlhbGl6YXRpb24pKSwK
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb25B
cmd1bWVudHMpKTsKICAgICAgICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cih1bnRhZ0NvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPihvcGVyYXRpb25Qb3B1bGF0ZU9iamVj
dEluT1NSKSksIE5vUHRyVGFnKTsKKyNlbHNlCiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25Qb3B1bGF0ZU9iamVjdEluT1NSKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICBq
aXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOworI2VuZGlmCiAg
ICAgfQogCiAgICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSB3aGVyZXZlciB0aGUgZXhpdCBkYXRh
IHRlbGxzIHVzIGl0IHdhcywgaW50byB0aGUgYXBwcm9wcmlhdGUgcGxhY2UgaW4KQEAgLTUyNSw3
ICs1MzMsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVuc2lnbmVkCiAgICAg
fQogICAgIAogICAgIGhhbmRsZUV4aXRDb3VudHModm0sIGppdCwgZXhpdCk7Ci0gICAgcmVpZnlJ
bmxpbmVkQ2FsbEZyYW1lcyhqaXQsIGV4aXQpOworICAgIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMo
dm0sIGppdCwgZXhpdCk7CiAgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KHZtLCBqaXQsIGV4aXQp
OwogICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBjb2RlQmxvY2spOwpAQCAt
NTM5LDcgKzU0Nyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQK
ICAgICAgICAgKTsKIH0KIAotZXh0ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQqIG9wZXJhdGlv
bkNvbXBpbGVGVExPU1JFeGl0KENhbGxGcmFtZSogY2FsbEZyYW1lLCB1bnNpZ25lZCBleGl0SUQp
CitleHRlcm4gIkMiIHZvaWQqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGlsZUZUTE9TUkV4
aXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIGV4aXRJRCkKIHsKICAgICBpZiAoc2hv
dWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6dmVyYm9zZU9TUigpIHx8IE9wdGlvbnM6
OnZlcmJvc2VGVExPU1JFeGl0KCkpCiAgICAgICAgIGRhdGFMb2coIkNvbXBpbGluZyBPU1IgZXhp
dCB3aXRoIGV4aXRJRCA9ICIsIGV4aXRJRCwgIlxuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMyBAQAog
CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UuaCIKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
QjNDQ2FsbFZhbHVlLmgiCisjaW5jbHVkZSAiQjNDYWdlZENDYWxsLmgiCiAjaW5jbHVkZSAiQjND
b21waWxhdGlvbi5oIgogI2luY2x1ZGUgIkIzRnJlcXVlbnRlZEJsb2NrLmgiCisjaW5jbHVkZSAi
QjNQYXRjaHBvaW50VmFsdWUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUg
IkIzU3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1dpZHRoLmgiCkBAIC0zOTQsMTQgKzM5Nywy
NSBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoQjM6OlR5cGUg
dHlwZSwgRnVuY3Rpb24gZnVuY3Rpb24sIExWYWx1ZSBhcmcxLCBBcmdzLi4uIGFyZ3MpCiAgICAg
ewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3NhbWU8RnVuY3Rpb24sIExWYWx1ZT46
OnZhbHVlKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIHJldHVybiBjYWdlZENDYWxs
KG1fcHJvYywgbV9ibG9jaywgb3JpZ2luKCksIHR5cGUsIGZ1bmN0aW9uLCBhcmcxLCBhcmdzLi4u
KTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNDYWxsVmFs
dWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCksIEIzOjpFZmZlY3RzOjpub25lKCksCiAgICAgICAg
ICAgICBjb25zdEludFB0cih0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmN0aW9uLCBCM0NDYWxs
UHRyVGFnKSksIGFyZzEsIGFyZ3MuLi4pOworI2VuZGlmCiAgICAgfQotCisgICAgCiAgICAgLy8g
RklYTUU6IENvbnNpZGVyIGVuaGFuY2luZyB0aGlzIHRvIGFsbG93IHRoZSBjbGllbnQgdG8gY2hv
b3NlIHRoZSB0YXJnZXQgUHRyVGFnIHRvIHVzZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MzI0CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rp
b25UeXBlPgotICAgIExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rpb25UeXBlIGZ1bmN0aW9uKSB7IHJl
dHVybiBjb25zdEludFB0cih0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmN0aW9uLCBCM0NDYWxs
UHRyVGFnKSk7IH0KKyAgICBMVmFsdWUgb3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbikK
KyAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICByZXR1cm4gY29uc3RJbnRQdHIo
dGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihmdW5jdGlvbiwgTm9QdHJUYWcpKTsKKyNlbHNlCisgICAg
ICAgIHJldHVybiBjb25zdEludFB0cih0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmN0aW9uLCBC
M0NDYWxsUHRyVGFnKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICB2b2lkIGp1bXAoTEJhc2ljQmxv
Y2spOwogICAgIHZvaWQgYnJhbmNoKExWYWx1ZSBjb25kaXRpb24sIExCYXNpY0Jsb2NrIHRha2Vu
LCBXZWlnaHQgdGFrZW5XZWlnaHQsIExCYXNpY0Jsb2NrIG5vdFRha2VuLCBXZWlnaHQgbm90VGFr
ZW5XZWlnaHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAko
cmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0cgogCiAgICAgcmVzdG9yZUFsbFJlZ2lzdGVycyhqaXQsIGJ1
ZmZlcik7CiAKLSNpZiBDUFUoQVJNNjRFKQorI2lmIENQVShBUk02NEUpICYmICFFTkFCTEUoSklU
X0NBR0UpCiAgICAgaml0LnVudGFnUHRyKHJlc3VsdFRhZywgQXNzZW1ibHlIZWxwZXJzOjpsaW5r
UmVnaXN0ZXIpOwogICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CiAjZWxzZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNCArMzgsMjQgQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRh
aWxzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uR2V0SW50
ZXJuYWxQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xsZWN0aW9uKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNQcm9taXNlUmVqZWN0ZWRXaXRoTmF0aXZl
R2V0dGVyVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uUHJveHlUYXJnZXRWYWx1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbldlYWtNYXBTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0U2l6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25RdWVyeUhvbGRlcnMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uU3VidHlw
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxz
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFByb3Bl
cnRpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29u
c3RydWN0b3JOYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc0hU
TUxBbGxDb2xsZWN0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25J
c1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblByb3h5VGFyZ2V0VmFsdWUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbldlYWtTZXRFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGVGdW5jdGlvblF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
RnVuY3Rpb25RdWVyeUhvbGRlcnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRBbGlhcyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlQXR0cmlidXRlU2F2ZWRSZXN1bHRBbGlhcyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIkluamVjdGVkU2NyaXB0SG9zdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUpIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTkgKzM3LDE5
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gRnVu
Y3Rpb25zLgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0
Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0
aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9u
U2NvcGVEZXNjcmlwdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogLy8gQXR0
cmlidXRlcy4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlw
dENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1l
QXR0cmlidXRlU291cmNlSUQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0
ZUxpbmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTY29wZUNoYWluKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0ph
dmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3Jp
cHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVJ
c1RhaWxEZWxldGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTb3VyY2VJRChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxs
RnJhbWVBdHRyaWJ1dGVMaW5lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVt
bihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVGdW5jdGlvbk5hbWUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZh
U2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJh
bWVBdHRyaWJ1dGVUaGlzT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVR5
cGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJKYXZhU2NyaXB0Q2FsbEZyYW1lIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUpIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNyArNjAsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNXaXRo
U2NvcGUuaCIKICNpbmNsdWRlICJMTEludENMb29wLmgiCi0jaW5jbHVkZSAiTExJbnRUaHVua3Mu
aCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgiCiAj
aW5jbHVkZSAiTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIk9iamVjdFByb3Rv
dHlwZS5oIgpAQCAtNTQ2LDcgKzU0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fY29kZUJs
b2NrKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgZXhjZXB0aW9u
IGhhbmRsaW5nIGluIGNoZWNrcG9pbnRzLgogI2lmIEVOQUJMRShERkdfSklUKQotICAgICAgICAg
ICAgaWYgKHJlbW92ZUNvZGVQdHJUYWcobV9yZXR1cm5QQykgPT0gTExJbnQ6OmdldENvZGVQdHI8
Tm9QdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGlu
ZSkuZXhlY3V0YWJsZUFkZHJlc3MoKSkKKyAgICAgICAgICAgIGlmIChMTEludDo6aXNDaGVja3Bv
aW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmUocmVtb3ZlQ29kZVB0clRhZyhtX3Jl
dHVyblBDKSkpCiAgICAgICAgICAgICAgICAgbV9jb2RlQmxvY2stPnZtKCkuZmluZENoZWNrcG9p
bnRPU1JTaWRlU3RhdGUobV9jYWxsRnJhbWUpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoIW1f
aXNUZXJtaW5hdGlvbikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsOSArMjUx
LDEzIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWxsRXhjZXB0aW9uRnV6eigKIAogICAgIC8v
IFNldCB1cCBvbmUgYXJndW1lbnQuCiAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodGFnQ0Z1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpLCBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIpOwogICAgIHByZXBhcmVDYWxsT3BlcmF0aW9u
KHZtKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgY2FsbChUcnVzdGVkSW1tUHRyKHVudGFn
Q29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enopKSwgTm9QdHJU
YWcpOworI2Vsc2UKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eikpLCBHUFJJbmZvOjpub25QcmVzZXJ2
ZWROb25SZXR1cm5HUFIpOwogICAgIGNhbGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJu
R1BSLCBPcGVyYXRpb25QdHJUYWcpOworI2VuZGlmCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgewogICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYnVmZmVyICsgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgKyBpKSwgR1BS
SW5mbzo6cmVnVDApOwpAQCAtOTI4LDEzICs5MzIsMTkgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmRlYnVnQ2FsbChWTSYgdm0sIAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyNpZiAhRU5BQkxFKEpJVF9DQUdFKQogICAgIEdQ
UlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyNlbmRpZgogI2Vs
c2UKICNlcnJvciAiSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYK
ICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
IGNhbGwoVHJ1c3RlZEltbVB0cih1bnRhZ0NvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPihmdW5jdGlv
bikpLCBOb1B0clRhZyk7CisjZWxzZQogICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihmdW5jdGlvbikpLCBzY3JhdGNoKTsKICAgICBjYWxsKHNj
cmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CisjZW5kaWYKIAogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihzY3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSksIEdQUkluZm86OnJlZ1Qw
KTsKICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBHUFJJbmZvOjpyZWdUMCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCShyZXZp
c2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDggKzYyLDEyIEBAIHZvaWQgQ0NhbGxIZWxwZXJzOjpl
bnN1cmVTaGFkb3dDaGlja2VuUGEKICAgICBKdW1wIG9rID0gYnJhbmNoUHRyKEJlbG93LCBzaGFk
b3dQYWNrZXQsIFRydXN0ZWRJbW1QdHIoc2hhZG93Q2hpY2tlbi0+bG9nRW5kKCkpKTsKICAgICBz
ZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxvZyk+
KFRydXN0ZWRJbW1QdHIoJnZtKSk7CiAgICAgcHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworI2lm
IEVOQUJMRShKSVRfQ0FHRSkKKyAgICBjYWxsKFRydXN0ZWRJbW1QdHIodW50YWdDb2RlUHRyPENG
dW5jdGlvblB0clRhZz4ob3BlcmF0aW9uUHJvY2Vzc1NoYWRvd0NoaWNrZW5Mb2cpKSwgTm9QdHJU
YWcpOworI2Vsc2UKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4ob3BlcmF0aW9uUHJvY2Vzc1NoYWRvd0NoaWNrZW5Mb2cpKSwgc2NyYXRjaDFO
b25BcmdHUFIpOwogICAgIGNhbGwoc2NyYXRjaDFOb25BcmdHUFIsIE9wZXJhdGlvblB0clRhZyk7
CisjZW5kaWYKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2hhZG93Q2hpY2tlbi0+YWRkcmVzc09m
TG9nQ3Vyc29yKCkpLCBzY3JhdGNoMU5vbkFyZ0dQUik7CiAgICAgbG9hZFB0cihBZGRyZXNzKHNj
cmF0Y2gxTm9uQXJnR1BSKSwgc2hhZG93UGFja2V0KTsKICAgICBvay5saW5rKHRoaXMpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAyNTc5
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03NjksNyArNzY5LDcgQEAgcHVibGljOgogI2lmIENQVShBUk1fVEhVTUIyKSB8
fCBDUFUoQVJNNjQpCiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhmcmFtZVBvaW50ZXJSZWdpc3Rl
ciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgbGlua1JlZ2lzdGVyKTsKICAgICAgICAg
c3ViUHRyKFRydXN0ZWRJbW0zMigyICogc2l6ZW9mKHZvaWQqKSksIG5ld0ZyYW1lU2l6ZUdQUik7
Ci0jaWYgQ1BVKEFSTTY0RSkKKyNpZiBDUFUoQVJNNjRFKSAmJiAhRU5BQkxFKEpJVF9DQUdFKQog
ICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIE1h
Y3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlciwgdGVtcEdQUik7CiAgICAgICAgIHVu
dGFnUHRyKHRlbXBHUFIsIGxpbmtSZWdpc3Rlcik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCShyZXZpc2lvbiAyNTc5
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6
OnByZXBhcmVGb3JUYWlsQ2EKICNpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTTY0KQogICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OmZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6bGlua1JlZ2lzdGVyKTsKLSNpZiBDUFUoQVJNNjRFKQorI2lmIENQ
VShBUk02NEUpICYmICFFTkFCTEUoSklUX0NBR0UpCiAgICAgbV9qaXQuYWRkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgTWFjcm9Bc3Nl
bWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKICAgICBtX2ppdC51bnRhZ1B0cihNYWNyb0Fz
c2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpsaW5rUmVnaXN0
ZXIpOwogICAgIG1faml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSksIE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3Rl
cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw3ICszMjcs
MTEgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSklUUmVzZXJ2YXRpb24gaW5pdAogICAgICAgICBp
ZiAoT3B0aW9uczo6bG9nSklUQ29kZUZvclBlcmYoKSkKICAgICAgICAgICAgIHJldHVybiBQYWdl
UmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNp
emUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxF
LCB0cnVlKTsKICNlbmRpZgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmV0dXJuIFBh
Z2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZUFuZENvbW1pdFdpdGhHdWFyZFJlZ2lvbnMocmVzZXJ2YXRp
b25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklU
QUJMRSwgdHJ1ZSk7CisjZWxzZQogICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlV2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2Rl
UGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSk7CisjZW5kaWYKICAgICB9Owog
CiAgICAgcmVzZXJ2YXRpb24ucGFnZVJlc2VydmF0aW9uID0gdHJ5Q3JlYXRlUGFnZVJlc2VydmF0
aW9uKHJlc2VydmF0aW9uLnNpemUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpJVENvbXBpbGF0aW9u
RWZmb3J0LmgiCisjaW5jbHVkZSAiSklUVmVyaWZpZWRDb3B5LmgiCiAjaW5jbHVkZSAiSlNDQ29u
ZmlnLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgpAQCAt
MTMxLDcgKzEzMiwxMSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkKiBwZXJmb3JtSklUTWVt
CiAjZW5kaWYKICAgICAgICAgewogICAgICAgICAgICAgb3NfdGhyZWFkX3NlbGZfcmVzdHJpY3Rf
cnd4X3RvX3J3KCk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgcGVyZm9ybVZl
cmlmaWVkSklUQ29weShkc3QsIHNyYywgbik7CisjZWxzZQogICAgICAgICAgICAgbWVtY3B5KGRz
dCwgc3JjLCBuKTsKKyNlbmRpZgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIUdpZ2FjYWdl
Ojpjb250YWlucyhzcmMpKTsKICAgICAgICAgICAgIG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0X3J3
eF90b19yeCgpOwogICAgICAgICAgICAgcmV0dXJuIGRzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDY1LDYgKzQ2NSw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIg
PSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwID0gWDg2UmVn
aXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6
ZWF4OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21DYWxsZWVGcm9tSW50ZXJwcmV0
ZXIgPSBYODZSZWdpc3RlcnM6OmVheDsKKwogCiAgICAgLy8gRklYTUU6IEkgYmVsaWV2ZSB0aGF0
IGFsbCB1c2VzIG9mIHRoaXMgYXJlIGRlYWQgaW4gdGhlIHNlbnNlIHRoYXQgaXQganVzdCBjYXVz
ZXMgdGhlIHNjcmF0Y2gKICAgICAvLyByZWdpc3RlciBhbGxvY2F0b3IgdG8gc2VsZWN0IGEgZGlm
ZmVyZW50IHJlZ2lzdGVyIGFuZCBwb3RlbnRpYWxseSBzcGlsbCB0aGluZ3MuIEl0IHdvdWxkIGJl
IGJldHRlcgpAQCAtNjU0LDYgKzY1Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDg7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIx
ID0gQVJNNjRSZWdpc3RlcnM6Ong5OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBhdGNo
cG9pbnRTY3JhdGNoUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6aXAwOworICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHdhc21DYWxsZWVGcm9tSW50ZXJwcmV0ZXIgPSBBUk02NFJlZ2lzdGVy
czo6eDk7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBkaXJlY3QsIHRoZSBtYWNoaW5lIHJl
Z2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBkaXJlY3RseSBhcyBpbmRpY2VzIGlu
dG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRFbnRlck9w
dGltaXphdGlvbkNoZWNrKCkKIAogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT3B0aW1pemUs
ICZ2bSgpLCBtX2J5dGVjb2RlSW5kZXguYXNCaXRzKCkpOwogICAgIHNraXBPcHRpbWl6ZS5hcHBl
bmQoYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUikpOworI2lmIEVOQUJMRShKSVRf
Q0FHRSkKKyAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBKSVRDYWdlUHRyVGFnKTsKKyNlbHNl
CiAgICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OworI2VuZGlmCiAgICAgc2tpcE9wdGltaXplLmxpbmsodGhpcyk7CiB9CiAjZW5kaWYKQEAgLTI2
MSw3ICsyNjUsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IG1fbGFiZWxzW21fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKV0gPSBsYWJlbCgpOwogCiAgICAgICAg
IGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiT2xkIEpJ
VCBlbWl0dGluZyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChs
b25nKWRlYnVnT2Zmc2V0KCkpOworICAgICAgICAgICAgZGF0YUxvZ0xuKCJPbGQgSklUIGVtaXR0
aW5nIGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpY3Vy
cmVudE9mZnNldCgpKTsKIAogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+b3Bjb2RlSUQoKTsKIApAQCAtNTI1LDcgKzUyOSw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAgICByYXJlQ2FzZVByb2ZpbGUgPSAmcmFy
ZUNhc2VQcm9maWxlcy5hdChieXRlY29kZUNvdW50SGF2aW5nU2xvd0Nhc2UpOwogCiAgICAgICAg
IGlmIChKSVRJbnRlcm5hbDo6dmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiT2xkIEpJ
VCBlbWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQg
IiwgKGxvbmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk9sZCBKSVQg
ZW1pdHRpbmcgc2xvdyBjb2RlIGZvciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIs
IChsb25nKWN1cnJlbnRPZmZzZXQoKSk7CiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQog
ICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldEZvckJ5dGVjb2RlU2xvd1BhdGgobV9ieXRl
Y29kZUluZGV4Lm9mZnNldCgpLCBsYWJlbCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklURGVzdGluYXRpb25XaGl0ZWxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGVzdGluYXRpb25XaGl0ZWxpc3QuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGVzdGluYXRpb25XaGl0ZWxpc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJKSVREZXN0aW5hdGlvbldoaXRlbGlzdC5oIgorCisjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxF
KEpJVF9DQUdFKQorCisjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCisjaW5jbHVkZSA8ZGxmY24uaD4K
KyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxKSVREZXN0
aW5hdGlvbldoaXRlbGlzdD4gc19pbnN0YW5jZTsKKworc3RhdGljIGJvb2wgdmVyYm9zZSA9IGZh
bHNlOworCitKSVREZXN0aW5hdGlvbldoaXRlbGlzdDo6RnVuY3Rpb25QdHJTZXQqIEpJVERlc3Rp
bmF0aW9uV2hpdGVsaXN0Ojp2YWxpZEZ1bmNQdHJzKCkKK3sKKyAgICBGdW5jdGlvblB0clNldCog
dGhlVGFibGUgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uUHRyU2V0Kj4obV9wdHJTZXRTcGFj
ZS5kYXRhKCkpOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIG5ldyAodGhlVGFibGUpIEZ1bmN0aW9u
UHRyU2V0KCk7CisgICAgfSk7CisgICAgCisgICAgcmV0dXJuIHRoZVRhYmxlOworfQorCitKSVRE
ZXN0aW5hdGlvbldoaXRlbGlzdCYgSklURGVzdGluYXRpb25XaGl0ZWxpc3Q6Omluc3RhbmNlKCkK
K3sKKyAgICByZXR1cm4gZ19qc2NDb25maWcuaml0V2hpdGVsaXN0OworfQorCitib29sIEpJVERl
c3RpbmF0aW9uV2hpdGVsaXN0Ojp0YWJsZUZyb3plbigpCit7CisgICAgcmV0dXJuIGdfanNjQ29u
ZmlnLmlzUGVybWFuZW50bHlGcm96ZW47Cit9CisKK3ZvaWQgSklURGVzdGluYXRpb25XaGl0ZWxp
c3Q6OmFkZEVudHJ5KFJhd0Z1bmN0aW9uUHRyIGZ1bmN0aW9uUHRyKQoreworICAgIEFTU0VSVCgh
dGFibGVGcm96ZW4oKSk7CisgICAgLy8gUG9vciBtYW4ncyB1bnRhZworICAgIGZ1bmN0aW9uUHRy
ID0gcmVpbnRlcnByZXRfY2FzdDxSYXdGdW5jdGlvblB0cio+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGZ1bmN0aW9uUHRyKSAmIDB4ZmZmZmZmZmZmVUwpOworCisgICAgCisgICAgYm9vbCBp
c05ldyA9IHZhbGlkRnVuY1B0cnMoKS0+YWRkKGZ1bmN0aW9uUHRyKTsKKyAgICBpZiAgKHZlcmJv
c2UgJiYgIWlzTmV3KQorICAgICAgICBkYXRhTG9nKCJBZGRpbmcgZHVwbGljYXRlIHRhcmdldDog
IiwgUmF3UG9pbnRlcihmdW5jdGlvblB0ciksICIgdG8gV2hpdGVsaXN0XG4iKTsKK30KKworYm9v
bCBKSVREZXN0aW5hdGlvbldoaXRlbGlzdDo6aXNPbkxpc3QoUmF3RnVuY3Rpb25QdHIgZnVuY3Rp
b25QdHIpCit7CisgICAgaWYgKCFmdW5jdGlvblB0cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHZhbGlkRnVuY1B0cnMoKS0+Y29udGFpbnMoZnVuY3Rpb25QdHIpOworfQor
Citib29sIEpJVERlc3RpbmF0aW9uV2hpdGVsaXN0Ojphc3NlcnRPbkxpc3QoUmF3RnVuY3Rpb25Q
dHIgZnVuY3Rpb25QdHIpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGlzT25M
aXN0KGZ1bmN0aW9uUHRyKSwgIkZ1bmN0aW9uIG5vdCBvbiBXaGl0ZWxpc3Q6ICVzIiwgZnVuY3Rp
b25OYW1lKGZ1bmN0aW9uUHRyKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgY2hh
ciogSklURGVzdGluYXRpb25XaGl0ZWxpc3Q6OmZ1bmN0aW9uTmFtZShSYXdGdW5jdGlvblB0ciBm
dW5jdGlvblB0cikKK3sKKyAgICBjb25zdGV4cHIgc2l6ZV90IGJ1ZmZlclNpemUgPSAxMDA7Cisg
ICAgc3RhdGljIGNoYXIgYnVmZmVyW2J1ZmZlclNpemVdOworICAgIERsX2luZm8gZGxJbmZvOwor
CisgICAgaWYgKCFmdW5jdGlvblB0cikKKyAgICAgICAgcmV0dXJuICI8bnVsbHB0cj5cbiI7CisK
KyAgICBpbnQgZGxMb29rdXBSZXN1bHQgPSBkbGFkZHIoZnVuY3Rpb25QdHIsICZkbEluZm8pOwor
ICAgIGlmICghZGxMb29rdXBSZXN1bHQpIHsKKyAgICAgICAgc25wcmludGYoYnVmZmVyLCBidWZm
ZXJTaXplLCAiPz8/OiAlcCIsIGZ1bmN0aW9uUHRyKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsK
KyAgICB9CisKKyAgICBzbnByaW50ZihidWZmZXIsIGJ1ZmZlclNpemUsICIlczolcyIsIGRsSW5m
by5kbGlfZm5hbWUsIGRsSW5mby5kbGlfc25hbWUpOworICAgIHJldHVybiBidWZmZXI7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGVzdGluYXRpb25XaGl0ZWxpc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERlc3RpbmF0aW9uV2hpdGVsaXN0LmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREZXN0aW5hdGlv
bldoaXRlbGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoSklUKSAmJiBFTkFCTEUoSklUX0NBR0UpCisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNs
dWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvU3RhdGljUHRySGFzaFNldC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3RleHByIHVuc2lnbmVkIFdoaXRlbGlzdFRhYmxlU2l6ZSA9IDgxOTI7
CisKK3R5cGVkZWYgdm9pZCogUmF3RnVuY3Rpb25QdHI7CisKK2NsYXNzIEpJVERlc3RpbmF0aW9u
V2hpdGVsaXN0IHsKKyAgICB0eXBlZGVmIFN0YXRpY1B0ckhhc2hTZXQ8V2hpdGVsaXN0VGFibGVT
aXplPiBGdW5jdGlvblB0clNldDsKKyAgICAKK3B1YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgSklURGVzdGluYXRpb25XaGl0ZWxpc3QmIGluc3RhbmNlKCk7CisKKyAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGFkZEVudHJ5KFJhd0Z1bmN0aW9uUHRyKTsKKyAgICBib29sIGlz
T25MaXN0KFJhd0Z1bmN0aW9uUHRyKTsKKyAgICBib29sIGFzc2VydE9uTGlzdChSYXdGdW5jdGlv
blB0cik7CisKK3ByaXZhdGU6CisgICAgRnVuY3Rpb25QdHJTZXQqIHZhbGlkRnVuY1B0cnMoKTsK
KyAgICBib29sIHRhYmxlRnJvemVuKCk7CisKKyAgICBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUo
UmF3RnVuY3Rpb25QdHIpOworCisgICAgc3RkOjphcnJheTx2b2lkKiwgc2l6ZW9mKEZ1bmN0aW9u
UHRyU2V0KSAvIHNpemVvZih2b2lkKik+IG1fcHRyU2V0U3BhY2U7Cit9OworCit2b2lkIHBvcHVs
YXRlSklUV2hpdGVsaXN0KCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24g
MjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTEgQEAgdm9pZCBnZW5lcmljVW53aW5kKFZNJiB2
bSwgQ2FsbEZyYW1lKiBjYQogICAgIH0gZWxzZQogICAgICAgICBjYXRjaFJvdXRpbmUgPSBMTElu
dDo6Z2V0Q29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihoYW5kbGVVbmNhdWdodEV4Y2Vw
dGlvbikuZXhlY3V0YWJsZUFkZHJlc3MoKTsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBp
ZiAoIWlzSklUUEModW50YWdDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGNhdGNoUm91
dGluZSkpICYmIHZtLmNhblVzZUpJVCgpKQorICAgICAgICBjYXRjaFJvdXRpbmUgPSB2bS5uYXRp
dmVUcmFtcG9saW5lRm9yKFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uKGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4ocmV0YWdDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcsIEpTRW50cnlQdHJUYWc+KGNh
dGNoUm91dGluZSkpKSkucmV0YWdnZWRFeGVjdXRhYmxlQWRkcmVzczxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPigpOworI2VuZGlmCisKICAgICBBU1NFUlQoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
Y2FsbEZyYW1lKSA8IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZtLnRvcEVudHJ5RnJhbWUpKTsK
IAogICAgIGFzc2VydElzVGFnZ2VkV2l0aChjYXRjaFJvdXRpbmUsIEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgxLDcgKzEwODEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2xvb3BfaGludChjb25zdCBJbgogICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJ
VFVucmVhc29uYWJsZUxvb3BIaW50SnVtcFRhcmdldCk7CiAgICAgICAgICAgICBvay5saW5rKHRo
aXMpOwogICAgICAgICB9CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBmYXJKdW1wKHJl
dHVyblZhbHVlR1BSLCBKSVRDYWdlUHRyVGFnKTsKKyNlbHNlCiAgICAgICAgIGZhckp1bXAocmV0
dXJuVmFsdWVHUFIsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyNlbmRpZgogICAgICAg
ICBub09wdGltaXplZEVudHJ5LmxpbmsodGhpcyk7CiAKICAgICAgICAgZW1pdEp1bXBTbG93VG9I
b3QoanVtcCgpLCBjdXJyZW50SW5zdHJ1Y3Rpb24tPnNpemUoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNDUsNyArMTA0NSwxMSBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRs
ZUhvc3RDYWxsCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgICAgIHZtLmdldENUSVN0dWIo
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZUdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
LmV4ZWN1dGFibGVBZGRyZXNzKCksCisjZWxzZQogICAgICAgICAgICAgICAgIHRhZ0NGdW5jdGlv
blB0cjx2b2lkKiwgSlNFbnRyeVB0clRhZz4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksCisjZW5k
aWYKICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8t
PmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZy
YW1lKSk7CiAgICAgICAgIH0KICAgICAKQEAgLTEwNzMsNyArMTA3NywxMyBAQCBzdGF0aWMgU2xv
d1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KHRhZ0NGdW5jdGlvblB0cjx2b2lkKiwgSlNFbnRyeVB0clRhZz4oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFt
ZSkpOworICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgICAgIHZtLmdldENUSVN0dWIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZUdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisjZWxzZQor
ICAgICAgICAgICAgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqLCBKU0VudHJ5UHRyVGFnPihnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSwKKyNlbmRpZgorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAgfQogICAgIAogICAgIEFTU0VSVChjb25zdHJ1Y3RU
eXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwpAQCAtMTEwNiw3ICsxMTE2LDExIEBAIFNsb3dQ
YXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBsaW5rRm9yKHZtLCBjYWxsZWVGcmFtZSwgKmNhbGxMaW5rSW5mbywgbnVs
bHB0ciwgaW50ZXJuYWxGdW5jdGlvbiwgY29kZVB0cik7CiAKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgICAgICAgICB2b2lkKiBsaW5rZWRUYXJnZXQgPSBjb2RlUHRyLnVudGFnZ2VkRXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyNlbHNlCiAgICAgICAgICAgICB2b2lkKiBsaW5rZWRUYXJnZXQgPSBj
b2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQobGlua2VkVGFyZ2V0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlu
a0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2Vl
cFRoZUZyYW1lKSk7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIGhhbmRsZUhvc3RDYWxsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxlZUFz
VmFsdWUsIGNhbGxMaW5rSW5mbykpOwpAQCAtMTEyNiw3ICsxMTQwLDExIEBAIFNsb3dQYXRoUmV0
dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihl
eGVjdXRhYmxlKTsKIAogICAgICAgICBhdXRvIGhhbmRsZVRocm93RXhjZXB0aW9uID0gWyZdICgp
IHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICB2b2lkKiB0aHJvd1RhcmdldCA9
IHZtLmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8SlNFbnRyeVB0clRhZz4oKS51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCk7
CisjZWxzZQogICAgICAgICAgICAgdm9pZCogdGhyb3dUYXJnZXQgPSB2bS5nZXRDVElTdHViKHRo
cm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50
cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCh0aHJvd1RhcmdldCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2Vl
cFRoZUZyYW1lKSk7CiAgICAgICAgIH07CiAKQEAgLTExNTQsNyArMTE3MiwxMSBAQCBTbG93UGF0
aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgZWxzZQogICAgICAgICBsaW5r
Rm9yKHZtLCBjYWxsZWVGcmFtZSwgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxsZWUsIGNv
ZGVQdHIpOwogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
Y29kZVB0ci51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhl
RnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsKKyNlbHNlCiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChj
b2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxM
aW5rSW5mby0+Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBL
ZWVwVGhlRnJhbWUpKTsKKyNlbmRpZgogfQogCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZp
cnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsZWVGcmFtZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8sIEpTQ2VsbComIGNh
bGxlZUFzRnVuY3Rpb25DZWxsKQpAQCAtMTY4MSw3ICsxNzAzLDExIEBAIFNsb3dQYXRoUmV0dXJu
VHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgY29kZUJsb2NrLT5vcHRpbWl6ZVNv
b24oKTsKICAgICAgICAgY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpLT5zZXREaWRPcHRp
bWl6ZShUcnVlVHJpU3RhdGUpOwogICAgICAgICB2b2lkKiB0YXJnZXRQQyA9IHZtLmdldENUSVN0
dWIoREZHOjpvc3JFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIHRhcmdldFBDID0gdW50YWdDb2RlUHRy
KHRhcmdldFBDLCBKSVRUaHVua1B0clRhZyk7CisjZWxzZQogICAgICAgICB0YXJnZXRQQyA9IHJl
dGFnQ29kZVB0cih0YXJnZXRQQywgSklUVGh1bmtQdHJUYWcsIGJpdHdpc2VfY2FzdDxQdHJUYWc+
KGNhbGxGcmFtZSkpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQodGFyZ2V0
UEMsIGRhdGFCdWZmZXIpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsOCArMTczLDYg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbkJ5SWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlkR2VuZXJp
YyhKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Ci1F
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5CeVZhbChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CkBA
IC0xODQsMTAgKzE4Miw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3Ry
aWMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RT
dHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lO
VEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFM
OwpAQCAtMjQzLDcgKzIzNyw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0
ZXJTZXQKICNlbHNlCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVy
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IGF0
dHJpYnV0ZSwgSlNDZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogI2VuZGlmCi12b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaEZ1bmN0aW9uTmFtZVNjb3BlKEpTR2xvYmFsT2JqZWN0
KiwgaW50MzJfdCwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgaW50
MzJfdCkgV1RGX0lOVEVSTkFMOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEFycmF5UHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkU3Vic2NyaXB0KSBXVEZfSU5URVJOQUw7CkBAIC0yNTcsNyArMjUwLDYgQEAgc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYQogc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQpIFdU
Rl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXNoV2l0aFNjb3Bl
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiBjdXJyZW50U2NvcGVDZWxsLCBFbmNvZGVkSlNWYWx1
ZSBvYmplY3QpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXNoV2l0aFNjb3BlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCog
Y3VycmVudFNjb3BlQ2VsbCwgSlNPYmplY3QqIG9iamVjdCkgV1RGX0lOVEVSTkFMOwotSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFBOYW1lcyhKU0dsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25JbnN0YW5jZU9mKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgdmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIHByb3RvKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkluc3RhbmNlT2ZHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFu
Y2VPZk9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSB2YWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pIFdURl9JTlRFUk5BTDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAJKHJldmlzaW9uIDI1NzkyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMjM0LDYgKzIzNSwxMDQgQEAgTmF0aXZl
RXhlY3V0YWJsZSogSklUVGh1bmtzOjpob3N0RnVuY3RpbwogICAgIHJldHVybiBob3N0RnVuY3Rp
b25TdHViKHZtLCBmdW5jdGlvbiwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGdlbmVy
YXRvciwgaW50cmluc2ljLCBudWxscHRyLCBuYW1lKTsKIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FH
RSkKK3VuaW9uIFRyYW1wb2xpbmVMb2NhdGlvbiB7CisgICAgVHJhbXBvbGluZUxvY2F0aW9uKCkK
KyAgICAgICAgOiBtX2xhYmVsKEFzc2VtYmx5SGVscGVyczo6TGFiZWwoKSkKKyAgICB7CisgICAg
fQorCisgICAgVHJhbXBvbGluZUxvY2F0aW9uKEFzc2VtYmx5SGVscGVyczo6TGFiZWwgbGFiZWwp
CisgICAgICAgIDogbV9sYWJlbChsYWJlbCkKKyAgICB7CisgICAgfQorCisgICAgVHJhbXBvbGlu
ZUxvY2F0aW9uJiBvcGVyYXRvcj0oY29uc3QgVHJhbXBvbGluZUxvY2F0aW9uJiBvdGhlcikKKyAg
ICB7CisgICAgICAgIG1fbGFiZWwgPSBvdGhlci5tX2xhYmVsOworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCisgICAgQXNzZW1ibHlIZWxwZXJzOjpMYWJlbCBtX2xhYmVsOworICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBtX2NvZGVQdHI7Cit9OworCitNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gSklUVGh1bmtzOjpIb3N0RnVuY3Rpb25T
dHViczo6SG9zdEZ1bmN0aW9uU3R1YkJsb2NrOjpsaW5rKE1hY3JvQXNzZW1ibGVyJiBqaXQpCit7
CisgICAgc2l6ZV90IGNvZGVTaXplID0gaml0Lm1fYXNzZW1ibGVyLmNvZGVTaXplKCk7CisKKyNp
ZiBDUFUoQVJNNjQpCisgICAgQVNTRVJUKGNvZGVTaXplID0gcm91bmRVcFRvTXVsdGlwbGVPZigx
NiwgY29kZVNpemUpKTsKKyNlbmRpZgorCisgICAgaWYgKCFtX2Jhc2UpIHsKKyAgICAgICAgQVNT
RVJUKGNvZGVTaXplIDw9IHNfYmxvY2tTaXplKTsKKworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWwgbmV4dEZyZWVMYWJlbCA9IGppdC5sYWJlbCgpOworI2lmIENQVShBUk02NCkKKyAgICAg
ICAgc2l6ZV90IHBhZENvdW50ID0gKHNfYmxvY2tTaXplIC0gY29kZVNpemUpIC8gQXNzZW1ibGVy
OjppbnN0cnVjdGlvblNpemU7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFkQ291
bnQ7IGkrKykKKyAgICAgICAgICAgIGppdC5icmVha3BvaW50KCk7CisjZWxzZQorI2Vycm9yICJD
UFUgdHlwZSBub3Qgc3VwcG9ydGVkIgorI2VuZGlmCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbCBlbmRMYWJlbCA9IGppdC5sYWJlbCgpOworICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworCisgICAgICAgIG1fbmV4dEZyZWVPZmZzZXQgPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4obmV4dEZyZWVMYWJlbCk7CisgICAg
ICAgIG1fYmxvY2tFbmQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oZW5k
TGFiZWwpOworCisgICAgICAgIG1fYmFzZSA9IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgSlNF
bnRyeVB0clRhZywgIkhvc3QgRnVuY3Rpb24gVHJhbXBvbGluZSBUaHVuayIpOworCisgICAgICAg
IHJldHVybiBtX2Jhc2UuY29kZSgpOworICAgIH0KKworICAgIEFTU0VSVChjb2RlU2l6ZSA8PSBm
cmVlU3BhY2UoKSk7CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgbV9uZXh0RnJlZU9m
ZnNldCwgY29kZVNpemUsIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpOworICAgIAorICAgIG1f
bmV4dEZyZWVPZmZzZXQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oaml0
LmxhYmVsKCkpOworCisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgSlNFbnRy
eVB0clRhZywgIkhvc3QgRnVuY3Rpb24gVHJhbXBvbGluZSBUaHVuayIpLmNvZGUoKTsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IEpJVFRodW5rczo6SG9zdEZ1bmN0
aW9uU3R1YnM6Om5hdGl2ZVRyYW1wb2xpbmVGb3IoY29uc3QgTG9ja0hvbGRlciYgbG9jaywgVGFn
Z2VkTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24pCit7CisgICAgYXV0byBlbnRyeSA9IG1faG9zdEZ1
bmN0aW9uVHJhbXBvbGluZU1hcC0+ZmluZChmdW5jdGlvbik7CisgICAgaWYgKGVudHJ5ICE9IG1f
aG9zdEZ1bmN0aW9uVHJhbXBvbGluZU1hcC0+ZW5kKCkpCisgICAgICAgIHJldHVybiBlbnRyeS0+
dmFsdWU7CisKKyAgICByZXR1cm4gYWRkU3R1YkZvcihsb2NrLCBmdW5jdGlvbik7Cit9CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBKSVRUaHVua3M6Okhvc3RGdW5jdGlv
blN0dWJzOjphZGRTdHViRm9yKGNvbnN0IExvY2tIb2xkZXImLCBUYWdnZWROYXRpdmVGdW5jdGlv
biBmdW5jdGlvbikKK3sKKyAgICBBc3NlbWJseUhlbHBlcnMgaml0KG51bGxwdHIpOworCisgICAg
QVNTRVJUKCFpc0pJVFBDKHVudGFnQ29kZVB0cihmdW5jdGlvbi5yYXdQb2ludGVyKCksIEpTRW50
cnlQdHJUYWcpKSk7CisgICAgCisgICAgaml0LmZhckp1bXAoQXNzZW1ibHlIZWxwZXJzOjpBYnNv
bHV0ZUFkZHJlc3ModW50YWdDb2RlUHRyKGZ1bmN0aW9uLnJhd1BvaW50ZXIoKSwgSlNFbnRyeVB0
clRhZykpLCBOb1B0clRhZyk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IHJlc3VsdCA9IGdldEN1cnJlbnRCbG9jaygpLT5saW5rKGppdCk7CisgICAgbV9ob3N0RnVu
Y3Rpb25UcmFtcG9saW5lTWFwLT5hZGQoZnVuY3Rpb24sIHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworSklUVGh1bmtzOjpIb3N0RnVuY3Rpb25TdHViczo6SG9zdEZ1bmN0aW9uU3R1
YkJsb2NrKiBKSVRUaHVua3M6Okhvc3RGdW5jdGlvblN0dWJzOjpnZXRDdXJyZW50QmxvY2soKQor
eworICAgIGlmICghbV90YWlsIHx8ICFtX3RhaWwtPmhhc0ZyZWVTcGFjZSgpKSB7CisgICAgICAg
IEhvc3RGdW5jdGlvblN0dWJCbG9jayogbmV3QmxvY2sgPSBuZXcgSG9zdEZ1bmN0aW9uU3R1YkJs
b2NrKCk7CisKKyAgICAgICAgaWYgKCFtX2hlYWQpCisgICAgICAgICAgICBtX2hlYWQgPSBuZXdC
bG9jazsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90YWlsLT5saW5rKG5ld0Jsb2NrKTsK
KworICAgICAgICBtX3RhaWwgPSBuZXdCbG9jazsKKyAgICB9CisKKyAgICByZXR1cm4gbV90YWls
OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAkocmV2aXNpb24gMjU3
OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNiArNjYsMTQgQEAgcHVibGljOgogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhv
c3RGdW5jdGlvblN0dWIoVk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IsIFRodW5rR2VuZXJhdG9yLCBJbnRyaW5zaWMsIGNvbnN0IERPTUpJ
VDo6U2lnbmF0dXJlKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBOYXRpdmVFeGVjdXRhYmxl
KiBob3N0RnVuY3Rpb25TdHViKFZNJiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRodW5rR2VuZXJh
dG9yLCBJbnRyaW5zaWMsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG5hdGl2ZVRyYW1w
b2xpbmVGb3IoVGFnZ2VkTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICByZXR1cm4gbV9ob3N0RnVuY3Rpb25T
dHVicy5uYXRpdmVUcmFtcG9saW5lRm9yKGxvY2tlciwgZnVuY3Rpb24pOworICAgIH0KKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBj
b250ZXh0KSBvdmVycmlkZTsKICAgICAKQEAgLTEwNyw2ICsxMTUsNjIgQEAgcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgSG9zdEtleVNlYXJjaGVyOwogICAgIHN0cnVjdCBOYXRpdmVFeGVjdXRhYmxlVHJh
bnNsYXRvcjsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBjbGFzcyBIb3N0RnVuY3Rpb25T
dHVicyB7CisgICAgcHVibGljOgorICAgICAgICBjbGFzcyBIb3N0RnVuY3Rpb25TdHViQmxvY2sg
eworICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IHNfYmxvY2tTaXplID0gMjA0ODsKKworICAgICAgICBwdWJsaWM6Cisg
ICAgICAgICAgICBIb3N0RnVuY3Rpb25TdHViQmxvY2soKQorICAgICAgICAgICAgICAgIDogbV9u
ZXh0KG51bGxwdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBsaW5rKE1hY3JvQXNzZW1ibGVy
JiBqaXQpOworCisgICAgICAgICAgICBzaXplX3QgZnJlZVNwYWNlKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9ibG9j
a0VuZC5kYXRhTG9jYXRpb24oKSkgLSByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX25leHRG
cmVlT2Zmc2V0LmRhdGFMb2NhdGlvbigpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ym9vbCBoYXNGcmVlU3BhY2UoKSB7IHJldHVybiAhIWZyZWVTcGFjZSgpOyB9CisKKyAgICAgICAg
ICAgIHZvaWQgbGluayhIb3N0RnVuY3Rpb25TdHViQmxvY2sqIG5leHQpIHsgbV9uZXh0ID0gbmV4
dDsgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gbV9iYXNlOworICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWw8
SlNFbnRyeVB0clRhZz4gbV9uZXh0RnJlZU9mZnNldDsKKyAgICAgICAgICAgIENvZGVMb2NhdGlv
bkxhYmVsPEpTRW50cnlQdHJUYWc+IG1fYmxvY2tFbmQ7CisgICAgICAgICAgICBIb3N0RnVuY3Rp
b25TdHViQmxvY2sqIG1fbmV4dDsKKyAgICAgICAgfTsKKworICAgICAgICBIb3N0RnVuY3Rpb25T
dHVicygpCisgICAgICAgICAgICA6IG1faGVhZChudWxscHRyKQorICAgICAgICAgICAgLCBtX3Rh
aWwobnVsbHB0cikKKyAgICAgICAgICAgICwgbV9ob3N0RnVuY3Rpb25UcmFtcG9saW5lTWFwKG1h
a2VVbmlxdWU8SG9zdEZ1bmN0aW9uVHJhbXBvbGluZU1hcD4oKSkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG5hdGl2
ZVRyYW1wb2xpbmVGb3IoY29uc3QgTG9ja0hvbGRlciYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uKTsK
KworICAgIHByaXZhdGU6CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPiBhZGRTdHViRm9yKGNvbnN0IExvY2tIb2xkZXImLCBUYWdnZWROYXRpdmVGdW5jdGlvbik7
CisKKyAgICAgICAgSG9zdEZ1bmN0aW9uU3R1YkJsb2NrKiBnZXRDdXJyZW50QmxvY2soKTsKKwor
ICAgICAgICBIb3N0RnVuY3Rpb25TdHViQmxvY2sqIG1faGVhZDsKKyAgICAgICAgSG9zdEZ1bmN0
aW9uU3R1YkJsb2NrKiBtX3RhaWw7CisKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFRhZ2dlZE5h
dGl2ZUZ1bmN0aW9uLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4sIFRhZ2dl
ZE5hdGl2ZUZ1bmN0aW9uSGFzaCwgSGFzaFRyYWl0czxKU0M6OlRhZ2dlZE5hdGl2ZUZ1bmN0aW9u
Pj4gSG9zdEZ1bmN0aW9uVHJhbXBvbGluZU1hcDsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SG9zdEZ1bmN0aW9uVHJhbXBvbGluZU1hcD4gbV9ob3N0RnVuY3Rpb25UcmFtcG9saW5lTWFwOwor
ICAgIH07CisKKyAgICBIb3N0RnVuY3Rpb25TdHVicyBtX2hvc3RGdW5jdGlvblN0dWJzOworI2Vu
ZGlmCisKICAgICB1c2luZyBXZWFrTmF0aXZlRXhlY3V0YWJsZVNldCA9IEhhc2hTZXQ8V2VhazxO
YXRpdmVFeGVjdXRhYmxlPiwgV2Vha05hdGl2ZUV4ZWN1dGFibGVIYXNoPjsKICAgICBXZWFrTmF0
aXZlRXhlY3V0YWJsZVNldCBtX25hdGl2ZUV4ZWN1dGFibGVTZXQ7CiAgICAgTG9jayBtX2xvY2s7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFZlcmlmaWVkQ29weS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRWZXJpZmllZENvcHkuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVmVyaWZpZWRD
b3B5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlICJKSVRWZXJpZmllZENvcHkuaCIKKworI2luY2x1
ZGUgIkFSTTY0VmVyaWZpZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3VzaW5nIEluc3RydWN0
aW9uVHlwZSA9IEE2NERPcGNvZGU6OkE2NEluc3RydWN0aW9uOworCit2b2lkIHBlcmZvcm1WZXJp
ZmllZEpJVENvcHkodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKQoreworI2lm
IENQVShBUk02NCkKKyAgICBKSVRDb2RlVmVyaWZpZXIgaml0Q29kZVZlcmlmaWVyKHJlaW50ZXJw
cmV0X2Nhc3RfcHRyPEluc3RydWN0aW9uVHlwZSo+KGRzdCksIG4pOworCisgICAgY2hhciogc3Jj
UHRyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RfY2FzdDx2b2lkKj4oc3JjKSk7Cisg
ICAgSW5zdHJ1Y3Rpb25UeXBlKiBjb3B5U291cmNlID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SW5z
dHJ1Y3Rpb25UeXBlKj4oc3JjUHRyKTsKKyAgICBjb25zdCBJbnN0cnVjdGlvblR5cGUqIGNvcHlF
bmQgPSByZWludGVycHJldF9jYXN0X3B0cjxJbnN0cnVjdGlvblR5cGUqPihzcmNQdHIgKyBuKTsK
KyAgICBJbnN0cnVjdGlvblR5cGUqIGNvcHlEc3QgPSByZWludGVycHJldF9jYXN0X3B0cjxJbnN0
cnVjdGlvblR5cGUqPihkc3QpOworCisgICAgd2hpbGUgKGNvcHlTb3VyY2UgIT0gY29weUVuZCkg
eworICAgICAgICAqY29weURzdCA9ICpjb3B5U291cmNlKys7CisKKyAgICAgICAgaml0Q29kZVZl
cmlmaWVyLmNoZWNrSW5zdHJ1Y3Rpb25BdChyZWludGVycHJldF9jYXN0X3B0cjxJbnN0cnVjdGlv
blR5cGUqPihjb3B5RHN0KSk7CisKKyAgICAgICAgKytjb3B5RHN0OworICAgIH0KKworICAgIGlm
ICgocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29weURzdCkgJiAweGYpICE9IDApIHsKKyAg
ICAgICAgLy8gUGFydGlhbCBwYXJhZ3JhcGggY29weS4gVmVyaWZ5IHRvIHRoZSBlbmQgb2YgdGhl
IHBhcmFncmFwaCBpbiBjYXNlIHdlIGFyZSBwYXRjaGluZyBhIGJyYW5jaCB0YXJnZXQgYWRkcmVz
cy4KKyAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb25UeXBlKiB2ZXJpZnlFbmQgPSByZWludGVycHJl
dF9jYXN0PEluc3RydWN0aW9uVHlwZSo+KChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb3B5
RHN0KSArIDB4MTApICYgMHhmZmZmZmZmZmZmZmZmZmYwKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb25U
eXBlKiB2ZXJpZnlQdHIgPSByZWludGVycHJldF9jYXN0X3B0cjxJbnN0cnVjdGlvblR5cGUqPihj
b3B5RHN0KTsKKyAgICAgICAgd2hpbGUgKHZlcmlmeVB0ciAhPSB2ZXJpZnlFbmQpIHsKKyAgICAg
ICAgICAgIGppdENvZGVWZXJpZmllci5jaGVja0luc3RydWN0aW9uQXQocmVpbnRlcnByZXRfY2Fz
dF9wdHI8SW5zdHJ1Y3Rpb25UeXBlKj4odmVyaWZ5UHRyKSk7CisgICAgICAgICAgICArK3Zlcmlm
eVB0cjsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIENQVSBm
b3IgcGVyZm9ybVZlcmlmaWVkSklUQ29weSgpIgorI2VuZGlmCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoSklUX0NBR0UpCisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRWZXJpZmllZENvcHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFZlcmlmaWVkQ29weS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVmVyaWZpZWRDb3B5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgcGVyZm9ybVZlcmlmaWVkSklUQ29weSh2b2lkICpk
c3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pOworICAgIAorI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZp
c2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MSwxMiArNzEsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCitzdGF0aWMgY29uc3RleHByIFB0clRhZyBqaXRQdHJUYWcgPSBO
b1B0clRhZzsKKyNlbHNlCitzdGF0aWMgY29uc3RleHByIFB0clRhZyBqaXRQdHJUYWcgPSBPcGVy
YXRpb25QdHJUYWc7CisjZW5kaWYKKwogc3RhdGljIEZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4gcmVhZFB1dElDQ2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUxvY2F0aW9u
Q2FsbDxKU0ludGVybmFsUHRyVGFnPiBjYWxsKQogewotICAgIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PE9wZXJhdGlv
blB0clRhZz4oY2FsbCk7CisgICAgRnVuY3Rpb25QdHI8aml0UHRyVGFnPiB0YXJnZXQgPSBNYWNy
b0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQ8aml0UHRyVGFnPihjYWxsKTsKICNpZiBFTkFCTEUo
RlRMX0pJVCkKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6RlRMSklU
KSB7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gdGh1bmsg
PSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T3BlcmF0aW9uUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1
dGFibGVBZGRyZXNzKHRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKS5yZXRhZ2dlZDxKSVRUaHVu
a1B0clRhZz4oKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFn
PiB0aHVuayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxqaXRQdHJUYWc+OjpjcmVhdGVGcm9tRXhl
Y3V0YWJsZUFkZHJlc3ModGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLnJldGFnZ2VkPEpJVFRo
dW5rUHRyVGFnPigpOwogICAgICAgICByZXR1cm4gY29kZUJsb2NrLT52bSgpLmZ0bFRodW5rcy0+
a2V5Rm9yU2xvd1BhdGhDYWxsVGh1bmsodGh1bmspLmNhbGxUYXJnZXQoKS5yZXRhZ2dlZDxDRnVu
Y3Rpb25QdHJUYWc+KCk7CiAgICAgfQogI2Vsc2UKQEAgLTkxLDExICs5NywxMSBAQCB2b2lkIGZ0
bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChDb2RlQmxvY2sqCiAgICAgaWYgKGNvZGVCbG9jay0+aml0
VHlwZSgpID09IEpJVFR5cGU6OkZUTEpJVCkgewogICAgICAgICBWTSYgdm0gPSBjb2RlQmxvY2st
PnZtKCk7CiAgICAgICAgIEZUTDo6VGh1bmtzJiB0aHVua3MgPSAqdm0uZnRsVGh1bmtzOwotICAg
ICAgICBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IHRhcmdldCA9IE1hY3JvQXNzZW1ibGVy
OjpyZWFkQ2FsbFRhcmdldDxPcGVyYXRpb25QdHJUYWc+KGNhbGwpOworICAgICAgICBGdW5jdGlv
blB0cjxqaXRQdHJUYWc+IHRhcmdldCA9IE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2FsbFRhcmdldDxq
aXRQdHJUYWc+KGNhbGwpOwogICAgICAgICBhdXRvIHNsb3dQYXRoVGh1bmsgPSBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SklUVGh1bmtQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Mo
dGFyZ2V0LnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8SklUVGh1bmtQdHJUYWc+KCkpOwogICAg
ICAgICBGVEw6OlNsb3dQYXRoQ2FsbEtleSBrZXkgPSB0aHVua3Mua2V5Rm9yU2xvd1BhdGhDYWxs
VGh1bmsoc2xvd1BhdGhUaHVuayk7CiAgICAgICAgIGtleSA9IGtleS53aXRoQ2FsbFRhcmdldChu
ZXdDYWxsZWVGdW5jdGlvbik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChj
YWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KHRodW5rcy5nZXRTbG93UGF0aENhbGxU
aHVuayh2bSwga2V5KS5yZXRhZ2dlZENvZGU8T3BlcmF0aW9uUHRyVGFnPigpKSk7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLCBGdW5jdGlvblB0cjxqaXRQdHJUYWc+
KHRodW5rcy5nZXRTbG93UGF0aENhbGxUaHVuayh2bSwga2V5KS5yZXRhZ2dlZENvZGU8aml0UHRy
VGFnPigpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZSAvLyBFTkFCTEUoRlRMX0pJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKKyNpbmNsdWRl
ICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBAIC01NCw3ICs1
NSwxMiBAQCBpbmxpbmUgdm9pZCBlbWl0UG9pbnRlclZhbGlkYXRpb24oQ0NhbGxICiAgICAgaml0
LmFib3J0V2l0aFJlYXNvbihUR0ludmFsaWRQb2ludGVyKTsKICAgICBpc05vblplcm8ubGluaygm
aml0KTsKICAgICBqaXQucHVzaFRvU2F2ZShwb2ludGVyR1BSKTsKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgVU5VU0VEX1BBUkFNKHRhZyk7CisgICAgaml0LmFuZDY0KENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cigweGZmZmZmZmZmMCksIHBvaW50ZXJHUFIpOworI2Vsc2UKICAgICBqaXQu
dW50YWdQdHIodGFnLCBwb2ludGVyR1BSKTsKKyNlbmRpZgogICAgIGppdC5sb2FkOChwb2ludGVy
R1BSLCBwb2ludGVyR1BSKTsKICAgICBqaXQucG9wVG9SZXN0b3JlKHBvaW50ZXJHUFIpOwogfQpA
QCAtNzMsMTUgKzc5LDQwIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
dGgKIAogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Mb29rdXBFeGNl
cHRpb25IYW5kbGVyKT4oQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZ2bSkpOwogICAgIGpp
dC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGpp
dC5jYWxsKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih1bnRhZ0NvZGVQdHI8Q0Z1bmN0aW9u
UHRyVGFnPihvcGVyYXRpb25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSksIE5vUHRyVGFnKTsKKyNl
bHNlCiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbkxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BS
SW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBqaXQuY2FsbChHUFJJbmZv
Ojpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOworI2VuZGlmCiAgICAgaml0Lmp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIodm0pOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJ
VFRodW5rUHRyVGFnLCAiVGhyb3cgZXhjZXB0aW9uIGZyb20gY2FsbCBzbG93IHBhdGggdGh1bmsi
KTsKIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZUdlbmVyYXRvcihWTSYpCit7CisgICAg
Q0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOworI2lm
IENQVShBUk02NCkgfHwgKENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiBDUFUoWDg2XzY0KSkK
KyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworI2Vsc2UKKyNlcnJvciAiTm8gc3VwcG9ydCBmb3IgQ1BVIHR5cGUg
aW4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZUdlbmVyYXRvciIKKyNlbmRpZgorCisgICAgaml0LmNh
bGwoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odW50
YWdDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlLCBDRnVuY3Rpb25Q
dHJUYWcpKSksIE5vUHRyVGFnKTsKKyAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWVXaXRoRW1w
dHlGcmFtZSgpOworICAgIGppdC5yZXQoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkdldCBIb3N0IENhbGwgUmV0dXJuIFZhbHVlIHRodW5rIik7
Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgc2xvd1BhdGhGb3IoQ0NhbGxIZWxwZXJzJiBqaXQs
IFZNJiB2bSwgU3BydF9KSVRPcGVyYXRpb25fRUdDbGkgc2xvd1BhdGhGdW5jdGlvbikKIHsKICAg
ICBqaXQuc2FuaXRpemVTdGFja0lubGluZSh2bSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CkBAIC0x
MTAsOSArMTQxLDEzIEBAIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKENDYWxsSGVscGVycyYgamkK
ICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGppdC5hZGRQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgaml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKHNsb3dQYXRoRnVuY3Rpb24pPihHUFJJbmZvOjpyZWdUMywgR1BS
SW5mbzo6cmVnVDIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBqaXQuY2FsbChDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIodW50YWdDb2RlUHRyPENGdW5jdGlvblB0clRhZz4oc2xvd1Bh
dGhGdW5jdGlvbikpLCBOb1B0clRhZyk7CisjZWxzZQogICAgIGppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihzbG93UGF0
aEZ1bmN0aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVtaXRQb2ludGVyVmFsaWRh
dGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CiAgICAgaml0
LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbmRpZgogICAg
IGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgaml0LmFkZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCks
IENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogI2VuZGlmCkBAIC0zMzUsOCAr
MzcwLDEzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHIKICAgICBq
aXQuc3ViUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CiAjZW5kaWYKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoJnZtKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCk7CisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
UHRyKHVudGFnQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0
aW9uKSksIE5vUHRyVGFnKTsKKyNlbHNlCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRy
dXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVk1I
YW5kbGVFeGNlcHRpb24pKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsKICAgICBqaXQuY2FsbChK
U0ludGVyZmFjZUpJVDo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7CisjZW5kaWYKKwogI2lmIE9T
KFdJTkRPV1MpCiAgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDQg
KiBzaXplb2YoaW50NjRfdCkpLCBKU0ludGVyZmFjZUpJVDo6c3RhY2tQb2ludGVyUmVnaXN0ZXIp
OwogI2VsaWYgQ1BVKE1JUFMpCkBAIC0zOTUsNyArNDM1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBhcgogICAgIGppdC5wb3AoSlNJbnRlcmZhY2VKSVQ6OnJlZ1Q0
KTsKICMgIGVuZGlmCiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKLSNpZiBDUFUoQVJNNjRF
KQorI2lmIENQVShBUk02NEUpICYmICFFTkFCTEUoSklUX0NBR0UpCiAgICAgaml0LmxvYWRQdHIo
SlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxG
cmFtZTo6cmV0dXJuUENPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuYWRkUHRy
KEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGV4dHJhVGVtcCk7CiAgICAgaml0LnVudGFnUHRy
KGV4dHJhVGVtcCwgR1BSSW5mbzo6cmVnVDMpOwpAQCAtNDUxLDcgKzQ5MSw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYXIKICAgICAKICAgICBkb25lLmxpbmsoJmpp
dCk7CiAKLSNpZiBDUFUoQVJNNjRFKQorI2lmIENQVShBUk02NEUpICYmICFFTkFCTEUoSklUX0NB
R0UpCiAgICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSksIEdQUkluZm86OnJl
Z1QzKTsKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0ZW1wUmV0
dXJuUENUYWcpLCBleHRyYVRlbXApOwogICAgIGppdC51bnRhZ1B0cihleHRyYVRlbXAsIEdQUklu
Zm86OnJlZ1QzKTsKQEAgLTExOTEsOSArMTIzMSwxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGJvCiAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwLCBKU0JvdW5kRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwg
R1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21UaHVuayk+KEdQUkluZm86OnJlZ1QzKTsKICAg
ICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAg
ICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodW50YWdDb2RlUHRyPENGdW5j
dGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwg
Tm9QdHJUYWcpOworI2Vsc2UKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIodGFnQ0Z1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3dTdGFja092
ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwor
I2VuZGlmCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwogCiAgICAgaGF2ZVN0
YWNrU3BhY2UubGluaygmaml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAg
QEAgY2xhc3MgVk07CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGhy
b3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKFZNJik7CiAKKyNpZiBFTkFCTEUo
SklUX0NBR0UpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVHZW5lcmF0b3IoVk0mKTsKKyNlbmRpZgorCiBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0mKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbGlua1BvbHltb3JwaGljQ2FsbFRodW5r
R2VuZXJhdG9yKFZNJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsMTAgQEAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkluc3Ry
dWN0aW9uLmgiCisjaW5jbHVkZSAiSklURGVzdGluYXRpb25XaGl0ZWxpc3QuaCIKICNpbmNsdWRl
ICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgorI2luY2x1ZGUgIkxMSW50VGh1
bmtzLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNs
dWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgpAQCAtNTMsNiArNTUs
MTcgQEAgT3Bjb2RlIGdfb3Bjb2RlTWFwW251bU9wY29kZUlEcyArIG51bVdhcwogT3Bjb2RlIGdf
b3Bjb2RlTWFwV2lkZTE2W251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdID0geyB9Owog
T3Bjb2RlIGdfb3Bjb2RlTWFwV2lkZTMyW251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNd
ID0geyB9OwogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQordm9pZCogZ19KSVRUcmFtcG9saW5lc1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVzOjpOdW1UeXBlcyldID0ge307
Cit2b2lkKiBnX3ZtRW50cnlUb0pTVHJhbXBvbGluZSA9IHsgfTsKK3ZvaWQqIGdfbGxpbnRDYWdl
ZFJldHVyblRodW5rID0geyB9Owordm9pZCogZ192bUVudHJ5UmV0dXJuID0geyB9Owordm9pZCog
Z19jaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRodW5rID0geyB9Owordm9pZCogZ19y
ZWdFeHBKSVRUcmFtcG9saW5lID0geyB9Owordm9pZCogZ19sbGludFRocm93RHVyaW5nQ2FsbFRy
YW1wb2xpbmUgPSB7IH07Cit2b2lkKiBnX3JlZ0V4cEpJVFJldHVybiA9IHsgfTsKKyNlbmRpZgor
CiAjaWYgIUVOQUJMRShDX0xPT1ApCiBleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW50cnkodm9pZCos
IHZvaWQqLCB2b2lkKik7CiAKQEAgLTc0LDcgKzg3LDI0IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAg
ICAgd2FzbV9lbnRyeSgmZ19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXSwgJmdfb3Bjb2RlTWFwV2lk
ZTE2W251bU9wY29kZUlEc10sICZnX29wY29kZU1hcFdpZGUzMltudW1PcGNvZGVJRHNdKTsKICNl
bmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAg
SklURGVzdGluYXRpb25XaGl0ZWxpc3QmIGRlc3RpbmF0aW9uV2hpdGVsaXN0ID0gSklURGVzdGlu
YXRpb25XaGl0ZWxpc3Q6Omluc3RhbmNlKCk7CisKKyAgICBhdXRvIGFkZE9wY29kZUVudHJ5cG9p
bnRUb1doaXRlbGlzdCA9IFsmXSh2b2lkKiBsbGludEVudHJ5UG9pbnQpIHsKKyAgICAgICAgaWYg
KGxsaW50RW50cnlQb2ludCkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uV2hpdGVsaXN0LmFkZEVu
dHJ5KGxsaW50RW50cnlQb2ludCk7CisgICAgfTsKKworICAgIGFkZE9wY29kZUVudHJ5cG9pbnRU
b1doaXRlbGlzdChnX3ZtRW50cnlSZXR1cm4pOworICAgIGFkZE9wY29kZUVudHJ5cG9pbnRUb1do
aXRlbGlzdChnX3JlZ0V4cEpJVFJldHVybik7CisjZW5kaWYKKwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbnVtT3Bjb2RlSURzICsgbnVtV2FzbU9wY29kZUlEczsgKytpKSB7CisjaWYgRU5BQkxF
KEpJVF9DQUdFKQorICAgICAgICBhZGRPcGNvZGVFbnRyeXBvaW50VG9XaGl0ZWxpc3QoZ19vcGNv
ZGVNYXBbaV0pOworICAgICAgICBhZGRPcGNvZGVFbnRyeXBvaW50VG9XaGl0ZWxpc3QoZ19vcGNv
ZGVNYXBXaWRlMTZbaV0pOworICAgICAgICBhZGRPcGNvZGVFbnRyeXBvaW50VG9XaGl0ZWxpc3Qo
Z19vcGNvZGVNYXBXaWRlMzJbaV0pOworI2VuZGlmCiAgICAgICAgIGdfb3Bjb2RlTWFwW2ldID0g
dGFnQ29kZVB0cihnX29wY29kZU1hcFtpXSwgQnl0ZWNvZGVQdHJUYWcpOwogICAgICAgICBnX29w
Y29kZU1hcFdpZGUxNltpXSA9IHRhZ0NvZGVQdHIoZ19vcGNvZGVNYXBXaWRlMTZbaV0sIEJ5dGVj
b2RlUHRyVGFnKTsKICAgICAgICAgZ19vcGNvZGVNYXBXaWRlMzJbaV0gPSB0YWdDb2RlUHRyKGdf
b3Bjb2RlTWFwV2lkZTMyW2ldLCBCeXRlY29kZVB0clRhZyk7CkBAIC04NSw2ICsxMTUsMTAgQEAg
dm9pZCBpbml0aWFsaXplKCkKICAgICAgICAgRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnNb
aV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgICAgICBEYXRh
OjpzX3dhc21FeGNlcHRpb25JbnN0cnVjdGlvbnNbaV0gPSB3YXNtX3Rocm93X2Zyb21fc2xvd19w
YXRoX3RyYW1wb2xpbmU7CiAgICAgfQorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIENyZWF0
ZUxMaW50VG9KSVRUcmFtcG9saW5lcygpOworI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKENfTE9P
UCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2
aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMTEgQEAgZXh0ZXJuICJDIiBKU19FWFBPUlRf
UFJJVkFURSBPcGNvZGUgZ19vcAogZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSBPcGNvZGUg
Z19vcGNvZGVNYXBXaWRlMTZbbnVtT3Bjb2RlSURzICsgbnVtV2FzbU9wY29kZUlEc107CiBleHRl
cm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIE9wY29kZSBnX29wY29kZU1hcFdpZGUzMltudW1PcGNv
ZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2VudW0g
Y2xhc3MgSklUVHJhbXBvbGluZVR5cGVzIDogdW5zaWduZWQgeworICAgIExMSW50X29wX2NhbGws
CisgICAgTExJbnRfb3BfdGFpbF9jYWxsLAorICAgIExMSW50X29wX2NvbnN0cnVjdCwKKyAgICBM
TEludF9vcF9jYWxsX3Nsb3dQYXRoLAorICAgIExMSW50X29wX3RhaWxfY2FsbF9zbG93UGF0aCwK
KyAgICBMTEludF9vcF9jb25zdHJ1Y3Rfc2xvd1BhdGgsCisgICAgTExJbnRfb3BfY2FsbF9ldmFs
X3Nsb3dQYXRoLAorICAgIExMSW50X29wX2NhbGxfdmFyYXJnc19zbG93UGF0aCwKKyAgICBMTElu
dF9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93UGF0aCwKKyAgICBMTEludF9vcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHNfc2xvd1BhdGgsCisgICAgTExJbnRfb3BfY29uc3RydWN0X3ZhcmFy
Z3Nfc2xvd1BhdGgsCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIFdhc21fd2FzbV9jYWxs
LAorICAgIFdhc21fd2FzbV9jYWxsX25vX3RscywKKyAgICBXYXNtX3dhc21fY2FsbF9pbmRpcmVj
dCwKKyAgICBXYXNtX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHMsCisjZW5kaWYKKyAgICBUeXBl
UGVyU2l6ZSwKKyAgICBOYXJyb3dCYXNlID0gMCwKKyAgICBXaWRlMTZCYXNlID0gVHlwZVBlclNp
emUsCisgICAgV2lkZTMyQmFzZSA9IFR5cGVQZXJTaXplICogMiwKKyAgICBOdW1UeXBlcyA9IFR5
cGVQZXJTaXplICogMywKKyAgICBVbnVzZWQgPSBVSU5UX01BWAorfTsKKworY29uc3RleHByIHVu
c2lnbmVkIEpJVFRyYW1wb2xpbmVCYXNlSW5kZXhGb3IoT3Bjb2RlU2l6ZSBvcGNvZGVTaXplKQor
eworICAgIHN3aXRjaCAob3Bjb2RlU2l6ZSkgeworICAgIGNhc2UgT3Bjb2RlU2l6ZTo6TmFycm93
OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBl
czo6TmFycm93QmFzZSk7CisgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMTY6CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVzOjpXaWRlMTZCYXNl
KTsKKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUzMjoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKSVRUcmFtcG9saW5lVHlwZXM6OldpZGUzMkJhc2UpOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5
cGVzOjpVbnVzZWQpOworICAgIH0KK30KKworY29uc3RleHByIHVuc2lnbmVkIEpJVFRyYW1wb2xp
bmVJbmRleEZvcihPcGNvZGVJRCBvcCwgT3Bjb2RlU2l6ZSBvcGNvZGVTaXplID0gT3Bjb2RlU2l6
ZTo6TmFycm93KQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIG9wX2NhbGw6CisgICAg
ICAgIHJldHVybiBKSVRUcmFtcG9saW5lQmFzZUluZGV4Rm9yKG9wY29kZVNpemUpICsgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6TExJbnRfb3BfY2FsbCk7CisgICAg
Y2FzZSBvcF90YWlsX2NhbGw6CisgICAgICAgIHJldHVybiBKSVRUcmFtcG9saW5lQmFzZUluZGV4
Rm9yKG9wY29kZVNpemUpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBl
czo6TExJbnRfb3BfdGFpbF9jYWxsKTsKKyAgICBjYXNlIG9wX2NvbnN0cnVjdDoKKyAgICAgICAg
cmV0dXJuIEpJVFRyYW1wb2xpbmVCYXNlSW5kZXhGb3Iob3Bjb2RlU2l6ZSkgKyBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVzOjpMTEludF9vcF9jb25zdHJ1Y3QpOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBv
bGluZVR5cGVzOjpVbnVzZWQpOworICAgIH0KK30KKworY29uc3RleHByIHVuc2lnbmVkIEpJVFRy
YW1wb2xpbmVJbmRleEZvclNsb3coT3Bjb2RlSUQgb3AsIE9wY29kZVNpemUgb3Bjb2RlU2l6ZSA9
IE9wY29kZVNpemU6Ok5hcnJvdykKK3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBvcF9j
YWxsOgorICAgICAgICByZXR1cm4gSklUVHJhbXBvbGluZUJhc2VJbmRleEZvcihvcGNvZGVTaXpl
KSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRUcmFtcG9saW5lVHlwZXM6OkxMSW50X29wX2Nh
bGxfc2xvd1BhdGgpOworICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgorICAgICAgICByZXR1cm4gSklU
VHJhbXBvbGluZUJhc2VJbmRleEZvcihvcGNvZGVTaXplKSArIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKSVRUcmFtcG9saW5lVHlwZXM6OkxMSW50X29wX3RhaWxfY2FsbF9zbG93UGF0aCk7CisgICAg
Y2FzZSBvcF9jb25zdHJ1Y3Q6CisgICAgICAgIHJldHVybiBKSVRUcmFtcG9saW5lQmFzZUluZGV4
Rm9yKG9wY29kZVNpemUpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBl
czo6TExJbnRfb3BfY29uc3RydWN0X3Nsb3dQYXRoKTsKKyAgICBjYXNlIG9wX2NhbGxfZXZhbDoK
KyAgICAgICAgcmV0dXJuIEpJVFRyYW1wb2xpbmVCYXNlSW5kZXhGb3Iob3Bjb2RlU2l6ZSkgKyBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVzOjpMTEludF9vcF9jYWxsX2V2
YWxfc2xvd1BhdGgpOworICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgorICAgICAgICByZXR1cm4g
SklUVHJhbXBvbGluZUJhc2VJbmRleEZvcihvcGNvZGVTaXplKSArIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKSVRUcmFtcG9saW5lVHlwZXM6OkxMSW50X29wX2NhbGxfdmFyYXJnc19zbG93UGF0aCk7
CisgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKKyAgICAgICAgcmV0dXJuIEpJVFRyYW1w
b2xpbmVCYXNlSW5kZXhGb3Iob3Bjb2RlU2l6ZSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklU
VHJhbXBvbGluZVR5cGVzOjpMTEludF9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93UGF0aCk7Cisg
ICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CisgICAgICAgIHJldHVybiBK
SVRUcmFtcG9saW5lQmFzZUluZGV4Rm9yKG9wY29kZVNpemUpICsgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6TExJbnRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzX3Nsb3dQYXRoKTsKKyAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgorICAgICAgICBy
ZXR1cm4gSklUVHJhbXBvbGluZUJhc2VJbmRleEZvcihvcGNvZGVTaXplKSArIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKSVRUcmFtcG9saW5lVHlwZXM6OkxMSW50X29wX2NvbnN0cnVjdF92YXJhcmdz
X3Nsb3dQYXRoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6VW51c2VkKTsKKyAgICB9Cit9CisKK2NvbnN0ZXhw
ciB1bnNpZ25lZCBKSVRUcmFtcG9saW5lSW5kZXhGb3IoV2FzbU9wY29kZUlEIG9wLCBPcGNvZGVT
aXplIG9wY29kZVNpemUgPSBPcGNvZGVTaXplOjpOYXJyb3cpCit7CisgICAgc3dpdGNoIChvcCkg
eworICAgIGNhc2Ugd2FzbV9jYWxsOgorICAgICAgICByZXR1cm4gSklUVHJhbXBvbGluZUJhc2VJ
bmRleEZvcihvcGNvZGVTaXplKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRUcmFtcG9saW5l
VHlwZXM6Oldhc21fd2FzbV9jYWxsKTsKKyAgICBjYXNlIHdhc21fY2FsbF9ub190bHM6CisgICAg
ICAgIHJldHVybiBKSVRUcmFtcG9saW5lQmFzZUluZGV4Rm9yKG9wY29kZVNpemUpICsgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6V2FzbV93YXNtX2NhbGxfbm9fdGxz
KTsKKyAgICBjYXNlIHdhc21fY2FsbF9pbmRpcmVjdDoKKyAgICAgICAgcmV0dXJuIEpJVFRyYW1w
b2xpbmVCYXNlSW5kZXhGb3Iob3Bjb2RlU2l6ZSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklU
VHJhbXBvbGluZVR5cGVzOjpXYXNtX3dhc21fY2FsbF9pbmRpcmVjdCk7CisgICAgY2FzZSB3YXNt
X2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorICAgICAgICByZXR1cm4gSklUVHJhbXBvbGluZUJhc2VJ
bmRleEZvcihvcGNvZGVTaXplKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRUcmFtcG9saW5l
VHlwZXM6Oldhc21fd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rscyk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRUcmFtcG9saW5lVHlwZXM6OlVu
dXNlZCk7CisgICAgfQorfQorCitleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGdf
SklUVHJhbXBvbGluZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6
TnVtVHlwZXMpXTsKK2V4dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogZ192bUVudHJ5
VG9KU1RyYW1wb2xpbmU7CitleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGdfbGxp
bnRDYWdlZFJldHVyblRodW5rOworZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBn
X3ZtRW50cnlSZXR1cm47CitleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGdfY2hl
Y2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUaHVuazsKK2V4dGVybiAiQyIgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCogZ19yZWdFeHBKSVRUcmFtcG9saW5lOworZXh0ZXJuICJDIiBKU19FWFBP
UlRfUFJJVkFURSB2b2lkKiBnX2xsaW50VGhyb3dEdXJpbmdDYWxsVHJhbXBvbGluZTsKK2V4dGVy
biAiQyIgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogZ19yZWdFeHBKSVRSZXR1cm47CisjZW5kaWYK
KwogY2xhc3MgRGF0YSB7CiAKIHB1YmxpYzoKQEAgLTk5LDYgKzIwNCwxMSBAQCBpbmxpbmUgT3Bj
b2RlKiBvcGNvZGVNYXBXaWRlMzIoKQogICAgIHJldHVybiBnX29wY29kZU1hcFdpZGUzMjsKIH0K
IAoraW5saW5lIE9wY29kZUlEIGdldE9wY29kZUlERnJvbShXYXNtT3Bjb2RlSUQgaWQpCit7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihudW1PcGNvZGVJRHMgKyBzdGF0aWNfY2Fz
dDxPcGNvZGVJRD4oaWQpKTsKK30KKwogaW5saW5lIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQg
aWQpCiB7CiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKQEAgLTE2OCw2ICsyNzgs
MTcgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPgogICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGdl
dENvZGVQdHI8dGFnPihvcGNvZGVJRCkpOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNDaGVj
a3BvaW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmUoY29uc3Qgdm9pZCogZnVuYykK
K3sKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKCFnX2NoZWNrcG9pbnRPU1JFeGl0RnJv
bUlubGluZWRDYWxsVGh1bmspCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZnVu
YyA9PSBnX2NoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVGh1bms7CisjZWxzZQorICAg
IHJldHVybiBmdW5jID09IGdldENvZGVQdHI8Tm9QdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRf
ZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyNlbmRp
ZgorfQorCiAjaWYgRU5BQkxFKEpJVCkKIHRlbXBsYXRlPFB0clRhZyB0YWc+CiBBTFdBWVNfSU5M
SU5FIExMSW50Q29kZSBnZXRDb2RlRnVuY3Rpb25QdHIoT3Bjb2RlSUQgb3Bjb2RlSUQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAko
cmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDEwIEBAIHZvaWQqIGNhbGxU
b1Rocm93KFZNJiB2bSkKICAgICAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICIsIEpT
VmFsdWUoc2NvcGUuZXhjZXB0aW9uKCkpLCAiIChjYWxsVG9UaHJvdykuXG4iKTsKICAgICB9CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKHZtLmNhblVzZUpJVCgpKQorICAg
ICAgICByZXR1cm4gZ19sbGludFRocm93RHVyaW5nQ2FsbFRyYW1wb2xpbmU7CisjZW5kaWYKICAg
ICByZXR1cm4gTExJbnQ6OmdldENvZGVQdHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4obGxpbnRf
dGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVB
c21Db25maWcuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1
LDEyIEBACiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTTY0RSAwCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShKSVRfQ0FHRSkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0NBR0UgMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fSklUX0NBR0UgMAorI2VuZGlmCisKICNpZiBDUFUoTUlQUykKICNpZmRl
ZiBXVEZfTUlQU19QSUMKICNkZWZpbmUgUyh4KSAjeApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgIlN1cGVyU2FtcGxlci5o
IgorI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5oPgpAQCAtMTAyLDYgKzEwMywxOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKIGlubGluZSBKU1ZhbHVlIGdldE5vbkNvbnN0YW50T3BlcmFuZChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsgcmV0dXJuIGNhbGxGcmFtZS0+
dW5jaGVja2VkUihvcGVyYW5kKS5qc1ZhbHVlKCk7IH0KIGlubGluZSBKU1ZhbHVlIGdldE9wZXJh
bmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7IHJldHVy
biBjYWxsRnJhbWUtPnIob3BlcmFuZCkuanNWYWx1ZSgpOyB9CiAKK2lubGluZSBXVEY6OlB0clRh
ZyBleGNlcHRpb25UYWcoVk0mIHZtKQoreworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAo
dm0uY2FuVXNlSklUKCkpCisgICAgICAgIHJldHVybiBOb1B0clRhZzsKKyAgICByZXR1cm4gRXhj
ZXB0aW9uSGFuZGxlclB0clRhZzsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBy
ZXR1cm4gRXhjZXB0aW9uSGFuZGxlclB0clRhZzsKKyNlbmRpZgorfQorCiAjZGVmaW5lIExMSU5U
X1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCiAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoZmlyc3QsIHNlY29uZCk7ICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2Up
CkBAIC0xNjksMTQgKzE4MiwxNCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFt
ZSogY2FsCiAjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZ2xvYmFsT2JqZWN0LCBleGNlcHRpb25U
b1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IF9fY3RfZ2xvYmFsT2JqZWN0ID0gKGdsb2JhbE9iamVjdCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAgICAgdGhyb3dFeGNlcHRpb24oX19jdF9nbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgXAotICAgICAgICBMTElOVF9D
QUxMX0VORF9JTVBMKG51bGxwdHIsIGNhbGxUb1Rocm93KHZtKSwgRXhjZXB0aW9uSGFuZGxlclB0
clRhZyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwobnVs
bHB0ciwgY2FsbFRvVGhyb3codm0pLCBleGNlcHRpb25UYWcodm0pKTsgICAgICAgICAgICAgICAg
IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQ
VElPTihnbG9iYWxPYmplY3QpIGRvIHsgICAgICAgICAgICAgICBcCiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBfX2NjZV9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGRvRXhjZXB0aW9uRnV6emluZ0lmRW5hYmxl
ZChfX2NjZV9nbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJMTEludFNsb3dQYXRocy9jYWxsIiwg
bnVsbHB0cik7IFwKICAgICAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkp
KSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIExMSU5UX0NBTExfRU5E
X0lNUEwobnVsbHB0ciwgY2FsbFRvVGhyb3codm0pLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsg
XAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChudWxscHRyLCBjYWxsVG9UaHJvdyh2
bSksIGV4Y2VwdGlvblRhZyh2bSkpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUg
TExJTlRfQ0FMTF9SRVRVUk4oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgY2FsbFRhcmdldCwg
Y2FsbFRhcmdldFRhZykgZG8geyBcCkBAIC0xNDY1LDYgKzE0NzgsMTAgQEAgc3RhdGljIFNsb3dQ
YXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICAgICAgU2xvd1BhdGhGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKICAgICAgICAgICAgIGNhbGxlZUZyYW1lLT5z
ZXRDYWxsZWUoYXNPYmplY3QoY2FsbGVlKSk7CiAgICAgICAgICAgICB2bS5ob3N0Q2FsbFJldHVy
blZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVj
dChjYWxsZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBjYWxsZWVGcmFtZSkpOworI2lmIEVOQUJMRShK
SVRfQ0FHRSkKKyAgICAgICAgICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkKKyAgICAgICAgICAgICAg
ICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCB2bS5nZXRDVElT
dHViKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVHZW5lcmF0b3IpLnRlbXBsYXRlIHJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLCBOb1B0clRhZyk7CisjZW5kaWYKICAg
ICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIExM
SW50OjpnZXRDb2RlUHRyKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcp
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTQ4NSw2ICsxNTAyLDEwIEBAIHN0YXRpYyBTbG93
UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgU2xvd1BhdGhGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKICAgICAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxl
ZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgdm0uaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChjYWxs
ZWUpLT5nbG9iYWxPYmplY3Qodm0pLCBjYWxsZWVGcmFtZSkpOworI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyAgICAgICAgaWYgKHZtLmNhblVzZUpJVCgpKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgdm0uZ2V0Q1RJU3R1YihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlR2VuZXJhdG9yKS50ZW1wbGF0ZSByZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgTm9QdHJUYWcpOworI2VuZGlmCiAgICAgICAgIExMSU5UX0NB
TExfUkVUVVJOKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIExMSW50OjpnZXRDb2RlUHRyKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpLCBDRnVuY3Rpb25QdHJUYWcpOwogICAgIH0KICAgICAKQEAg
LTE3MzksNiArMTc2MCwxMCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxF
dmFsCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBzZXRVcENhbGwoY2Fs
bGVlRnJhbWUsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKSk7CiAgICAgCiAgICAgdm0uaG9z
dENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSk7CisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkKKyAgICAgICAgTExJTlRf
Q0FMTF9SRVRVUk4oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgdm0uZ2V0Q1RJU3R1YihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlR2VuZXJhdG9yKS50ZW1wbGF0ZSByZXRhZ2dlZENvZGU8Tm9QdHJU
YWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgTm9QdHJUYWcpOworI2VuZGlmCiAgICAgTExJTlRf
Q0FMTF9SRVRVUk4oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgTExJbnQ6OmdldENvZGVQdHIo
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRhZyk7CiB9CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9u
IDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJMTEludERhdGEuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiVk0uaCIKQEAgLTYyLDYgKzYz
LDkgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0cgogICAgIExMSW50
Q29kZSB0YXJnZXQgPSBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9w
Y29kZUlEKTsKICAgICBhc3NlcnRJc1RhZ2dlZFdpdGgodGFyZ2V0LCBKU0VudHJ5UHRyVGFnKTsK
IAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBqaXQuZmFySnVtcChKU0ludGVyZmFjZUpJVDo6
QWJzb2x1dGVBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJldGFnQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnLCBKSVRDYWdlUHRyVGFnPih0YXJnZXQpKSksIEpJVENhZ2VQdHJUYWcpOworI2Vs
c2UKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgQ0NhbGxIZWxwZXJzOjpSZWdpc3RlcklE
IHNjcmF0Y2ggPSBXYXNtOjp3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hH
UFJzWzBdOwogI2Vsc2UKQEAgLTY5LDYgKzczLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0cgogI2VuZGlmCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRy
dXN0ZWRJbW1QdHIodGFyZ2V0KSwgc2NyYXRjaCk7CiAgICAgaml0LmZhckp1bXAoc2NyYXRjaCwg
SlNFbnRyeVB0clRhZyk7CisjZW5kaWYKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgIkxMSW50ICVzIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKTsK
QEAgLTE0NCw2ICsxNDksMzQ1IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gbW8KICAgICByZXR1cm4gY29kZVJlZjsKIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2Vu
dW0gVGh1bmtWYXJpYW50IHsKKyAgICBGYXN0UGF0aCwKKyAgICBTbG93UGF0aAorfTsKKworc3Rh
dGljIGNvbnN0IGNoYXIqIG9wY29kZVdpZHRoTmFtZVszXSA9IHsibmFycm93IiwgIndpZGUxNiIs
ICJ3aWRlMzIifTsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gZ2VuZXJhdGVWTUVudHJ5VG9KSVRUcmFtcG9saW5lKCkKK3sKKyAgICBKU0ludGVyZmFjZUpJ
VCBqaXQ7CisKKyAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBKSVRD
YWdlUHRyVGFnKTsKKworICAgIGppdC5mYXJKdW1wKEpTSW50ZXJmYWNlSklUOjpBYnNvbHV0ZUFk
ZHJlc3MoZ192bUVudHJ5UmV0dXJuKSwgTm9QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiVk1FbnRyeVRvSlMgdHJhbXBvbGluZSIpOwor
fQorCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0
ZUxMSW50Q2FnZWRSZXR1cm5UaHVuaygpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisg
ICAgLy8gVGhlIG1hY3JvQXNzZW1ibGVyIHJldCgpIHBlcmZvcm1zIHRoZSBjYWdpbmcgZm9yIHVz
LgorICAgIGppdC5yZXQoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRU
aHVua1B0clRhZywgIkxMaW50IFJldHVybiBUaHVuayIpOworfQorCitzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyYXRlQ2hlY2twb2ludE9TUkV4aXRGcm9t
SW5saW5lZENhbGxUaHVuaygpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHRhcmdldCA9IGdldENvZGVQdHI8SlNF
bnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9s
aW5lKTsKKworICAgIGppdC5mYXJKdW1wKEpTSW50ZXJmYWNlSklUOjpBYnNvbHV0ZUFkZHJlc3Mo
dGFyZ2V0LnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8Tm9QdHJUYWc+KCkpLCBOb1B0clRhZyk7
CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSlNFbnRyeVB0clRhZywgIkNoZWNr
cG9pbnQgT1NSIEV4aXQgRnJvbSBJbmxpbmVkIENhbGwgVGh1bmsiKTsKK30KKworc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVKSVRSZWdFeHBUcmFt
cG9saW5lKCkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisKKyAgICBqaXQuY2FsbChKU0lu
dGVyZmFjZUpJVDo6YXJndW1lbnRHUFI2LCBKSVRDYWdlUHRyVGFnKTsKKworICAgIGppdC5mYXJK
dW1wKEpTSW50ZXJmYWNlSklUOjpBYnNvbHV0ZUFkZHJlc3MoZ19yZWdFeHBKSVRSZXR1cm4pLCBO
b1B0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5L
X0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJSZWdFeHAgSklUIHRyYW1wb2xpbmUiKTsKK30KKworc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBnZW5lcmF0ZUxMSW50VGhyb3dEdXJpbmdD
YWxsVHJhbXBvbGluZSgpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgaml0Lm1v
dmUoSlNJbnRlcmZhY2VKSVQ6OmxpbmtSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOworICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxCeXRlY29kZVB0clRhZz4gdGFyZ2V0ID0gZ2V0Q29kZVB0cjxC
eXRlY29kZVB0clRhZz4obGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSk7Cisg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5vUHRyVGFnPiByYXdUYXJnZXQgPSB0YXJnZXQucmV0
YWdnZWQ8Tm9QdHJUYWc+KCk7CisKKyAgICBqaXQuZmFySnVtcChKU0ludGVyZmFjZUpJVDo6QWJz
b2x1dGVBZGRyZXNzKHJhd1RhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgTm9QdHJUYWcpOwor
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcs
ICJMTEludCBUaHJvdyBEdXJpbmcgQ2FsbCB0cmFtcG9saW5lIik7Cit9CisKK3N0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlTExJbnRUb0pJVFRyYW1w
b2xpbmUoT3Bjb2RlSUQgb3Bjb2RlSUQsIE9wY29kZUlEIHJldHVybk9wY29kZUlELCBPcGNvZGVT
aXplIG9wY29kZVNpemUgPSBPcGNvZGVTaXplOjpOYXJyb3csIFRodW5rVmFyaWFudCB0aHVua1Zh
cmlhbnQgPSBGYXN0UGF0aCkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisKKyAgICBqaXQu
Y2FsbChKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBKSVRDYWdlUHRyVGFnKTsKKworICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxCeXRlY29kZVB0clRhZz4gdGFyZ2V0OworICAgIHN3aXRj
aCAob3Bjb2RlU2l6ZSkgeworICAgIGNhc2UgTmFycm93OgorICAgICAgICB0YXJnZXQgPSBnZXRD
b2RlUHRyPEJ5dGVjb2RlUHRyVGFnPihyZXR1cm5PcGNvZGVJRCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV2lkZTE2OgorICAgICAgICB0YXJnZXQgPSBnZXRXaWRlMTZDb2RlUHRyPEJ5dGVj
b2RlUHRyVGFnPihyZXR1cm5PcGNvZGVJRCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2lk
ZTMyOgorICAgICAgICB0YXJnZXQgPSBnZXRXaWRlMzJDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnPihy
ZXR1cm5PcGNvZGVJRCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxO
b1B0clRhZz4gcmF3VGFyZ2V0ID0gdGFyZ2V0LnJldGFnZ2VkPE5vUHRyVGFnPigpOworCisgICAg
aml0LmZhckp1bXAoSlNJbnRlcmZhY2VKSVQ6OkFic29sdXRlQWRkcmVzcyhyYXdUYXJnZXQuZXhl
Y3V0YWJsZUFkZHJlc3MoKSksIE5vUHRyVGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkxMSW50IHRvIEpJVCAlcyVzICVzIHRyYW1wb2xpbmUi
LCBvcGNvZGVOYW1lc1tvcGNvZGVJRF0sCisgICAgICAgIHRodW5rVmFyaWFudCA9PSBGYXN0UGF0
aCA/ICIiIDogIiBzbG93IHBhdGgiLCBvcGNvZGVXaWR0aE5hbWVbb3Bjb2RlU2l6ZUFzSW5kZXgo
b3Bjb2RlU2l6ZSldKTsKK30KKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gZ2VuZXJhdGVXYXNtTExJbnRUb0pJVFRyYW1wb2xpbmUoV2FzbU9wY29kZUlEIG9w
Y29kZUlELCBXYXNtT3Bjb2RlSUQgcmV0dXJuT3Bjb2RlSUQsIE9wY29kZVNpemUgb3Bjb2RlU2l6
ZSA9IE9wY29kZVNpemU6Ok5hcnJvdykKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisKKyAg
ICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6d2FzbUNhbGxlZUZyb21JbnRlcnByZXRlciwgSklU
Q2FnZVB0clRhZyk7CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+
IHRhcmdldDsKKyAgICBzd2l0Y2ggKG9wY29kZVNpemUpIHsKKyAgICBjYXNlIE5hcnJvdzoKKyAg
ICAgICAgdGFyZ2V0ID0gZ2V0Q29kZVB0cjxCeXRlY29kZVB0clRhZz4oZ2V0T3Bjb2RlSURGcm9t
KHJldHVybk9wY29kZUlEKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2lkZTE2OgorICAg
ICAgICB0YXJnZXQgPSBnZXRXaWRlMTZDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnPihnZXRPcGNvZGVJ
REZyb20ocmV0dXJuT3Bjb2RlSUQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXaWRlMzI6
CisgICAgICAgIHRhcmdldCA9IGdldFdpZGUzMkNvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+KGdldE9w
Y29kZUlERnJvbShyZXR1cm5PcGNvZGVJRCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8Tm9QdHJUYWc+IHJhd1RhcmdldCA9IHRhcmdldC5yZXRhZ2dlZDxOb1B0clRh
Zz4oKTsKKworICAgIGppdC5mYXJKdW1wKEpTSW50ZXJmYWNlSklUOjpBYnNvbHV0ZUFkZHJlc3Mo
cmF3VGFyZ2V0LmV4ZWN1dGFibGVBZGRyZXNzKCkpLCBOb1B0clRhZyk7CisKKyAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJ
WkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJXYXNtIHRvIEpJVCAlcyAlcyB0
cmFtcG9saW5lIiwgd2FzbU9wY29kZU5hbWVzW29wY29kZUlEXSwKKyAgICAgICAgb3Bjb2RlV2lk
dGhOYW1lW29wY29kZVNpemVBc0luZGV4KG9wY29kZVNpemUpXSk7Cit9CisKK2VudW0gT3Bjb2Rl
UmV0dXJucyB7CisgICAgTm9uZSA9IDAsCisgICAgRmFzdFJldHVybiA9IDEsCisgICAgU2xvd1Jl
dHVybiA9IDIsCisgICAgRmFzdEFuZFNsb3dSZXR1cm5zID0gMworfTsKKworc3RydWN0IE9wY29k
ZVdpdGhKSVRUcmFtcG9saW5lcyB7CisgICAgT3Bjb2RlSUQgb3A7CisgICAgT3Bjb2RlUmV0dXJu
cyByZXR1cm5UeXBlczsKKyAgICBPcGNvZGVJRCByZXR1cm5PcDsKKyAgICBPcGNvZGVJRCBzbG93
UmV0dXJuT3A7Cit9OworCitjb25zdGV4cHIgdW5zaWduZWQgbnVtT3Bjb2Rlc1dpdGhKaXRUcmFt
cG9saW5lcyA9IDg7CisKK3N0YXRpYyBPcGNvZGVXaXRoSklUVHJhbXBvbGluZXMgb3Bjb2Rlc1dp
dGhUcmFtcG9saW5lc1tudW1PcGNvZGVzV2l0aEppdFRyYW1wb2xpbmVzXSA9IHsKKyAgICB7IG9w
X2NhbGwsIEZhc3RBbmRTbG93UmV0dXJucywgb3BfY2FsbF9yZXR1cm5fbG9jYXRpb24sIG9wX2Nh
bGxfc2xvd19yZXR1cm5fbG9jYXRpb24gfSwKKyAgICB7IG9wX3RhaWxfY2FsbCwgRmFzdEFuZFNs
b3dSZXR1cm5zLCBvcF90YWlsX2NhbGxfcmV0dXJuX2xvY2F0aW9uLCBvcF90YWlsX2NhbGxfc2xv
d19yZXR1cm5fbG9jYXRpb24gfSwKKyAgICB7IG9wX2NvbnN0cnVjdCwgRmFzdEFuZFNsb3dSZXR1
cm5zLCBvcF9jb25zdHJ1Y3RfcmV0dXJuX2xvY2F0aW9uLCBvcF9jb25zdHJ1Y3Rfc2xvd19yZXR1
cm5fbG9jYXRpb24gfSwKKyAgICB7IG9wX2NhbGxfZXZhbCwgU2xvd1JldHVybiwgKE9wY29kZUlE
KTAsIG9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbiB9LAorICAgIHsgb3BfY2FsbF92
YXJhcmdzLCBTbG93UmV0dXJuLCAoT3Bjb2RlSUQpMCwgb3BfY2FsbF92YXJhcmdzX3Nsb3dfcmV0
dXJuX2xvY2F0aW9uIH0sCisgICAgeyBvcF90YWlsX2NhbGxfdmFyYXJncywgU2xvd1JldHVybiwg
KE9wY29kZUlEKTAsIG9wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uIH0s
CisgICAgeyBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMsIFNsb3dSZXR1cm4sIChPcGNv
ZGVJRCkwLCBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5fbG9jYXRp
b24gfSwKKyAgICB7IG9wX2NvbnN0cnVjdF92YXJhcmdzLCBTbG93UmV0dXJuLCAoT3Bjb2RlSUQp
MCwgb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb24gfQorfTsKKworI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKK3N0cnVjdCBXYXNtT3Bjb2RlV2l0aEpJVFRyYW1wb2xpbmVz
IHsKKyAgICBXYXNtT3Bjb2RlSUQgb3A7CisgICAgV2FzbU9wY29kZUlEIHJldHVybk9wOworfTsK
KworY29uc3RleHByIHVuc2lnbmVkIG51bVdhc21PcGNvZGVzV2l0aEppdFRyYW1wb2xpbmVzID0g
NDsKKworc3RhdGljIFdhc21PcGNvZGVXaXRoSklUVHJhbXBvbGluZXMgd2FzbU9wY29kZXNXaXRo
VHJhbXBvbGluZXNbbnVtV2FzbU9wY29kZXNXaXRoSml0VHJhbXBvbGluZXNdID0geworICAgIHsg
d2FzbV9jYWxsLCB3YXNtX2NhbGxfcmV0dXJuX2xvY2F0aW9uIH0sCisgICAgeyB3YXNtX2NhbGxf
bm9fdGxzLCB3YXNtX2NhbGxfbm9fdGxzX3JldHVybl9sb2NhdGlvbiB9LAorICAgIHsgd2FzbV9j
YWxsX2luZGlyZWN0LCB3YXNtX2NhbGxfaW5kaXJlY3RfcmV0dXJuX2xvY2F0aW9uIH0sCisgICAg
eyB3YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLCB3YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzX3Jl
dHVybl9sb2NhdGlvbiB9LAorfTsKKyNlbmRpZgorCitleHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRv
SklUVHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIHJldHVyblRodW5rKCk7CitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfb3BfY2FsbF90cmFtcG9saW5lX25hcnJvdygpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X29wX2NhbGxfdHJhbXBvbGluZV93aWRlMTYoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9vcF9jYWxsX3RyYW1wb2xpbmVfd2lkZTMyKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
b3BfdGFpbF9jYWxsX3RyYW1wb2xpbmVfbmFycm93KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
b3BfdGFpbF9jYWxsX3RyYW1wb2xpbmVfd2lkZTE2KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
b3BfdGFpbF9jYWxsX3RyYW1wb2xpbmVfd2lkZTMyKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
b3BfY29uc3RydWN0X3RyYW1wb2xpbmVfbmFycm93KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
b3BfY29uc3RydWN0X3RyYW1wb2xpbmVfd2lkZTE2KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
b3BfY29uc3RydWN0X3RyYW1wb2xpbmVfd2lkZTMyKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
b3BfY2FsbF9zbG93UGF0aF90cmFtcG9saW5lX25hcnJvdygpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X29wX2NhbGxfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMTYoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9vcF9jYWxsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTMyKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfb3BfdGFpbF9jYWxsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfbmFycm93KCk7Citl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfdGFpbF9jYWxsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lk
ZTE2KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfdGFpbF9jYWxsX3Nsb3dQYXRoX3RyYW1w
b2xpbmVfd2lkZTMyKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfY29uc3RydWN0X3Nsb3dQ
YXRoX3RyYW1wb2xpbmVfbmFycm93KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfY29uc3Ry
dWN0X3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
b3BfY29uc3RydWN0X3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTMyKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfb3BfY2FsbF9ldmFsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfbmFycm93KCk7CitleHRl
cm4gIkMiIHZvaWQgbGxpbnRfb3BfY2FsbF9ldmFsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfY2FsbF9ldmFsX3Nsb3dQYXRoX3RyYW1wb2xp
bmVfd2lkZTMyKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfY2FsbF92YXJhcmdzX3Nsb3dQ
YXRoX3RyYW1wb2xpbmVfbmFycm93KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfY2FsbF92
YXJhcmdzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2KCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfb3BfY2FsbF92YXJhcmdzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTMyKCk7CitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd1BhdGhfdHJhbXBvbGluZV9u
YXJyb3coKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93
UGF0aF90cmFtcG9saW5lX3dpZGUxNigpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X29wX3RhaWxf
Y2FsbF92YXJhcmdzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTMyKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dQYXRoX3RyYW1wb2xp
bmVfbmFycm93KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2KCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dQYXRoX3RyYW1wb2xpbmVf
d2lkZTMyKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xv
d1BhdGhfdHJhbXBvbGluZV9uYXJyb3coKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9jb25z
dHJ1Y3RfdmFyYXJnc19zbG93UGF0aF90cmFtcG9saW5lX3dpZGUxNigpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X29wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTMy
KCk7CisKK3ZvaWQgQ3JlYXRlTExpbnRUb0pJVFRyYW1wb2xpbmVzKCkKK3sKKyAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOb1B0clRhZz4+IFZNRW50
cnlUb0pJVFRyYW1wb2xpbmVDb2RlUmVmOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5vUHRyVGFnPj4gbGxpbnRDYWdlZFJldHVyblRodW5rQ29k
ZVJlZjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOb1B0clRhZz4+IGppdFJlZ0V4cFRyYW1wb2xpbmVDb2RlUmVmOworICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5vUHRyVGFnPj4gbGxpbnRUaHJv
d0R1cmluZ0NhbGxUcmFtcG9saW5lQ29kZVJlZjsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOb1B0clRhZz4+IGppdFRyYW1wb2xpbmVDb2RlUmVm
c1tudW1PcGNvZGVzV2l0aEppdFRyYW1wb2xpbmVzXVs2XTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
Tm9QdHJUYWc+PiB3YXNtVHJhbXBvbGluZUNvZGVSZWZzW251bVdhc21PcGNvZGVzV2l0aEppdFRy
YW1wb2xpbmVzXVszXTsKKyNlbmRpZgorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VKSVQoKSkgeworICAgICAgICAgICAgVk1FbnRyeVRvSklUVHJhbXBvbGluZUNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVk1FbnRyeVRvSklUVHJhbXBvbGluZSgpLnJldGFnZ2VkPE5vUHRy
VGFnPigpKTsKKyAgICAgICAgICAgIGdfdm1FbnRyeVRvSlNUcmFtcG9saW5lID0gVk1FbnRyeVRv
SklUVHJhbXBvbGluZUNvZGVSZWYtPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworCisgICAg
ICAgICAgICBsbGludENhZ2VkUmV0dXJuVGh1bmtDb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZUxM
SW50Q2FnZWRSZXR1cm5UaHVuaygpLnJldGFnZ2VkPE5vUHRyVGFnPigpKTsKKyAgICAgICAgICAg
IGdfbGxpbnRDYWdlZFJldHVyblRodW5rID0gbGxpbnRDYWdlZFJldHVyblRodW5rQ29kZVJlZi0+
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisKKyAgICAgICAgICAgIGppdFJlZ0V4cFRyYW1w
b2xpbmVDb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZUpJVFJlZ0V4cFRyYW1wb2xpbmUoKS5yZXRh
Z2dlZDxOb1B0clRhZz4oKSk7CisgICAgICAgICAgICBnX3JlZ0V4cEpJVFRyYW1wb2xpbmUgPSBq
aXRSZWdFeHBUcmFtcG9saW5lQ29kZVJlZi0+Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGxsaW50VGhyb3dEdXJpbmdDYWxsVHJhbXBvbGluZUNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlTExJbnRUaHJvd0R1cmluZ0NhbGxUcmFtcG9saW5lKCku
cmV0YWdnZWQ8Tm9QdHJUYWc+KCkpOworICAgICAgICAgICAgZ19sbGludFRocm93RHVyaW5nQ2Fs
bFRyYW1wb2xpbmUgPSBsbGludFRocm93RHVyaW5nQ2FsbFRyYW1wb2xpbmVDb2RlUmVmLT5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bU9wY29kZXNXaXRoSml0VHJhbXBvbGluZXM7ICsraSkgeworICAgICAgICAgICAg
ICAgIE9wY29kZUlEIG9wID0gb3Bjb2Rlc1dpdGhUcmFtcG9saW5lc1tpXS5vcDsKKworICAgICAg
ICAgICAgICAgIGlmIChvcGNvZGVzV2l0aFRyYW1wb2xpbmVzW2ldLnJldHVyblR5cGVzICYgT3Bj
b2RlUmV0dXJuczo6RmFzdFJldHVybikgeworICAgICAgICAgICAgICAgICAgICBPcGNvZGVJRCBy
ZXR1cm5PcCA9IG9wY29kZXNXaXRoVHJhbXBvbGluZXNbaV0ucmV0dXJuT3A7CisKKyAgICAgICAg
ICAgICAgICAgICAgaml0VHJhbXBvbGluZUNvZGVSZWZzW2ldW29wY29kZVNpemVBc0luZGV4KE5h
cnJvdyldLmNvbnN0cnVjdChnZW5lcmF0ZUxMSW50VG9KSVRUcmFtcG9saW5lKG9wLCByZXR1cm5P
cCwgTmFycm93KS5yZXRhZ2dlZDxOb1B0clRhZz4oKSk7CisgICAgICAgICAgICAgICAgICAgIGdf
SklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yKG9wKV0gPSBqaXRUcmFtcG9saW5l
Q29kZVJlZnNbaV1bb3Bjb2RlU2l6ZUFzSW5kZXgoTmFycm93KV0tPmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpOworCisgICAgICAgICAgICAgICAgICAgIGppdFRyYW1wb2xpbmVDb2RlUmVmc1tp
XVtvcGNvZGVTaXplQXNJbmRleChXaWRlMTYpXS5jb25zdHJ1Y3QoZ2VuZXJhdGVMTEludFRvSklU
VHJhbXBvbGluZShvcCwgcmV0dXJuT3AsIFdpZGUxNikucmV0YWdnZWQ8Tm9QdHJUYWc+KCkpOwor
ICAgICAgICAgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZv
cihvcCwgV2lkZTE2KV0gPSBqaXRUcmFtcG9saW5lQ29kZVJlZnNbaV1bb3Bjb2RlU2l6ZUFzSW5k
ZXgoV2lkZTE2KV0tPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworCisgICAgICAgICAgICAg
ICAgICAgIGppdFRyYW1wb2xpbmVDb2RlUmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChXaWRlMzIp
XS5jb25zdHJ1Y3QoZ2VuZXJhdGVMTEludFRvSklUVHJhbXBvbGluZShvcCwgcmV0dXJuT3AsIFdp
ZGUzMikucmV0YWdnZWQ8Tm9QdHJUYWc+KCkpOworICAgICAgICAgICAgICAgICAgICBnX0pJVFRy
YW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihvcCwgV2lkZTMyKV0gPSBqaXRUcmFtcG9s
aW5lQ29kZVJlZnNbaV1bb3Bjb2RlU2l6ZUFzSW5kZXgoV2lkZTMyKV0tPmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChv
cGNvZGVzV2l0aFRyYW1wb2xpbmVzW2ldLnJldHVyblR5cGVzICYgT3Bjb2RlUmV0dXJuczo6U2xv
d1JldHVybikgeworICAgICAgICAgICAgICAgICAgICBPcGNvZGVJRCByZXR1cm5PcCA9IG9wY29k
ZXNXaXRoVHJhbXBvbGluZXNbaV0uc2xvd1JldHVybk9wOworCisgICAgICAgICAgICAgICAgICAg
IGppdFRyYW1wb2xpbmVDb2RlUmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChOYXJyb3cpICsgM10u
Y29uc3RydWN0KGdlbmVyYXRlTExJbnRUb0pJVFRyYW1wb2xpbmUob3AsIHJldHVybk9wLCBOYXJy
b3csIFNsb3dQYXRoKS5yZXRhZ2dlZDxOb1B0clRhZz4oKSk7CisgICAgICAgICAgICAgICAgICAg
IGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcCldID0gaml0VHJh
bXBvbGluZUNvZGVSZWZzW2ldW29wY29kZVNpemVBc0luZGV4KE5hcnJvdykgKyAzXS0+Y29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaml0VHJhbXBvbGlu
ZUNvZGVSZWZzW2ldW29wY29kZVNpemVBc0luZGV4KFdpZGUxNikgKyAzXS5jb25zdHJ1Y3QoZ2Vu
ZXJhdGVMTEludFRvSklUVHJhbXBvbGluZShvcCwgcmV0dXJuT3AsIFdpZGUxNiwgU2xvd1BhdGgp
LnJldGFnZ2VkPE5vUHRyVGFnPigpKTsKKyAgICAgICAgICAgICAgICAgICAgZ19KSVRUcmFtcG9s
aW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wLCBXaWRlMTYpXSA9IGppdFRyYW1wb2xp
bmVDb2RlUmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChXaWRlMTYpICsgM10tPmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpOworCisgICAgICAgICAgICAgICAgICAgIGppdFRyYW1wb2xpbmVDb2Rl
UmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChXaWRlMzIpICsgM10uY29uc3RydWN0KGdlbmVyYXRl
TExJbnRUb0pJVFRyYW1wb2xpbmUob3AsIHJldHVybk9wLCBXaWRlMzIsIFNsb3dQYXRoKS5yZXRh
Z2dlZDxOb1B0clRhZz4oKSk7CisgICAgICAgICAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNb
SklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcCwgV2lkZTMyKV0gPSBqaXRUcmFtcG9saW5lQ29k
ZVJlZnNbaV1bb3Bjb2RlU2l6ZUFzSW5kZXgoV2lkZTMyKSArIDNdLT5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
V2FzbU9wY29kZXNXaXRoSml0VHJhbXBvbGluZXM7ICsraSkgeworICAgICAgICAgICAgICAgIFdh
c21PcGNvZGVJRCBvcCA9IHdhc21PcGNvZGVzV2l0aFRyYW1wb2xpbmVzW2ldLm9wOworICAgICAg
ICAgICAgICAgIFdhc21PcGNvZGVJRCByZXR1cm5PcCA9IHdhc21PcGNvZGVzV2l0aFRyYW1wb2xp
bmVzW2ldLnJldHVybk9wOworCisgICAgICAgICAgICAgICAgd2FzbVRyYW1wb2xpbmVDb2RlUmVm
c1tpXVtvcGNvZGVTaXplQXNJbmRleChOYXJyb3cpXS5jb25zdHJ1Y3QoZ2VuZXJhdGVXYXNtTExJ
bnRUb0pJVFRyYW1wb2xpbmUob3AsIHJldHVybk9wLCBOYXJyb3cpLnJldGFnZ2VkPE5vUHRyVGFn
PigpKTsKKyAgICAgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRl
eEZvcihvcCldID0gd2FzbVRyYW1wb2xpbmVDb2RlUmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChO
YXJyb3cpXS0+Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisKKyAgICAgICAgICAgICAgICB3
YXNtVHJhbXBvbGluZUNvZGVSZWZzW2ldW29wY29kZVNpemVBc0luZGV4KFdpZGUxNildLmNvbnN0
cnVjdChnZW5lcmF0ZVdhc21MTEludFRvSklUVHJhbXBvbGluZShvcCwgcmV0dXJuT3AsIFdpZGUx
NikucmV0YWdnZWQ8Tm9QdHJUYWc+KCkpOworICAgICAgICAgICAgICAgIGdfSklUVHJhbXBvbGlu
ZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yKG9wLCBXaWRlMTYpXSA9IHdhc21UcmFtcG9saW5lQ29k
ZVJlZnNbaV1bb3Bjb2RlU2l6ZUFzSW5kZXgoV2lkZTE2KV0tPmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpOworCisgICAgICAgICAgICAgICAgd2FzbVRyYW1wb2xpbmVDb2RlUmVmc1tpXVtvcGNv
ZGVTaXplQXNJbmRleChXaWRlMzIpXS5jb25zdHJ1Y3QoZ2VuZXJhdGVXYXNtTExJbnRUb0pJVFRy
YW1wb2xpbmUob3AsIHJldHVybk9wLCBXaWRlMzIpLnJldGFnZ2VkPE5vUHRyVGFnPigpKTsKKyAg
ICAgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihvcCwg
V2lkZTMyKV0gPSB3YXNtVHJhbXBvbGluZUNvZGVSZWZzW2ldW29wY29kZVNpemVBc0luZGV4KFdp
ZGUzMildLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIH0KKyNlbmRp
ZgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTm8gSklUCisgICAgICAgICAgICBn
X3ZtRW50cnlUb0pTVHJhbXBvbGluZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNv
ZGVQdHJUYWcodm1FbnRyeVRvSklUVHJhbXBvbGluZSkpOworICAgICAgICAgICAgZ19sbGludENh
Z2VkUmV0dXJuVGh1bmsgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFn
KHJldHVyblRodW5rKSk7CisgICAgICAgICAgICBnX2NoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGlu
ZWRDYWxsVGh1bmsgPSBnZXRDb2RlUHRyPE5vUHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X2Zy
b21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisKKyAgICAg
ICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yKG9wX2NhbGwpXSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfY2FsbF90
cmFtcG9saW5lX25hcnJvdykpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFt
cG9saW5lSW5kZXhGb3Iob3BfY2FsbCwgV2lkZTE2KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQq
PihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX2NhbGxfdHJhbXBvbGluZV93aWRlMTYpKTsKKyAg
ICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yKG9wX2NhbGws
IFdpZGUzMildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGlu
dF9vcF9jYWxsX3RyYW1wb2xpbmVfd2lkZTMyKSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xp
bmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihvcF90YWlsX2NhbGwpXSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfdGFpbF9jYWxsX3RyYW1wb2xpbmVf
bmFycm93KSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRl
eEZvcihvcF90YWlsX2NhbGwsIFdpZGUxNildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVt
b3ZlQ29kZVB0clRhZyhsbGludF9vcF90YWlsX2NhbGxfdHJhbXBvbGluZV93aWRlMTYpKTsKKyAg
ICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yKG9wX3RhaWxf
Y2FsbCwgV2lkZTMyKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFn
KGxsaW50X29wX3RhaWxfY2FsbF90cmFtcG9saW5lX3dpZGUzMikpOworICAgICAgICAgICAgZ19K
SVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3Iob3BfY29uc3RydWN0KV0gPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX2NvbnN0cnVjdF90
cmFtcG9saW5lX25hcnJvdykpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFt
cG9saW5lSW5kZXhGb3Iob3BfY29uc3RydWN0LCBXaWRlMTYpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfY29uc3RydWN0X3RyYW1wb2xpbmVfd2lk
ZTE2KSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZv
cihvcF9jb25zdHJ1Y3QsIFdpZGUzMildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3Zl
Q29kZVB0clRhZyhsbGludF9vcF9jb25zdHJ1Y3RfdHJhbXBvbGluZV93aWRlMzIpKTsKKyAgICAg
ICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9jYWxs
KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX2Nh
bGxfc2xvd1BhdGhfdHJhbXBvbGluZV9uYXJyb3cpKTsKKyAgICAgICAgICAgIGdfSklUVHJhbXBv
bGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9jYWxsLCBXaWRlMTYpXSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfY2FsbF9zbG93UGF0
aF90cmFtcG9saW5lX3dpZGUxNikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRU
cmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2NhbGwsIFdpZGUzMildID0gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF9jYWxsX3Nsb3dQYXRoX3RyYW1wb2xp
bmVfd2lkZTMyKSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJ
bmRleEZvclNsb3cob3BfdGFpbF9jYWxsKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1v
dmVDb2RlUHRyVGFnKGxsaW50X29wX3RhaWxfY2FsbF9zbG93UGF0aF90cmFtcG9saW5lX25hcnJv
dykpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JT
bG93KG9wX3RhaWxfY2FsbCwgV2lkZTE2KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1v
dmVDb2RlUHRyVGFnKGxsaW50X29wX3RhaWxfY2FsbF9zbG93UGF0aF90cmFtcG9saW5lX3dpZGUx
NikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JT
bG93KG9wX3RhaWxfY2FsbCwgV2lkZTMyKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1v
dmVDb2RlUHRyVGFnKGxsaW50X29wX3RhaWxfY2FsbF9zbG93UGF0aF90cmFtcG9saW5lX3dpZGUz
MikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JT
bG93KG9wX2NvbnN0cnVjdCldID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3ZlQ29kZVB0
clRhZyhsbGludF9vcF9jb25zdHJ1Y3Rfc2xvd1BhdGhfdHJhbXBvbGluZV9uYXJyb3cpKTsKKyAg
ICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9j
b25zdHJ1Y3QsIFdpZGUxNildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3ZlQ29kZVB0
clRhZyhsbGludF9vcF9jb25zdHJ1Y3Rfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMTYpKTsKKyAg
ICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9j
b25zdHJ1Y3QsIFdpZGUzMildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3ZlQ29kZVB0
clRhZyhsbGludF9vcF9jb25zdHJ1Y3Rfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIpKTsKKyAg
ICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9j
YWxsX2V2YWwpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxp
bnRfb3BfY2FsbF9ldmFsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfbmFycm93KSk7CisgICAgICAgICAg
ICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY2FsbF9ldmFs
LCBXaWRlMTYpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxp
bnRfb3BfY2FsbF9ldmFsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2KSk7CisgICAgICAgICAg
ICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY2FsbF9ldmFs
LCBXaWRlMzIpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxp
bnRfb3BfY2FsbF9ldmFsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTMyKSk7CisgICAgICAgICAg
ICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY2FsbF92YXJh
cmdzKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29w
X2NhbGxfdmFyYXJnc19zbG93UGF0aF90cmFtcG9saW5lX25hcnJvdykpOworICAgICAgICAgICAg
Z19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2NhbGxfdmFyYXJn
cywgV2lkZTE2KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxs
aW50X29wX2NhbGxfdmFyYXJnc19zbG93UGF0aF90cmFtcG9saW5lX3dpZGUxNikpOworICAgICAg
ICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2NhbGxf
dmFyYXJncywgV2lkZTMyKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRy
VGFnKGxsaW50X29wX2NhbGxfdmFyYXJnc19zbG93UGF0aF90cmFtcG9saW5lX3dpZGUzMikpOwor
ICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9w
X3RhaWxfY2FsbF92YXJhcmdzKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2Rl
UHRyVGFnKGxsaW50X29wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfbmFy
cm93KSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZv
clNsb3cob3BfdGFpbF9jYWxsX3ZhcmFyZ3MsIFdpZGUxNildID0gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93UGF0
aF90cmFtcG9saW5lX3dpZGUxNikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRU
cmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX3RhaWxfY2FsbF92YXJhcmdzLCBXaWRlMzIpXSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfdGFpbF9jYWxs
X3ZhcmFyZ3Nfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIpKTsKKyAgICAgICAgICAgIGdfSklU
VHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF90YWlsX2NhbGxfZm9yd2Fy
ZF9hcmd1bWVudHMpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWco
bGxpbnRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dQYXRoX3RyYW1wb2xpbmVf
bmFycm93KSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRl
eEZvclNsb3cob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzLCBXaWRlMTYpXSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfdGFpbF9jYWxsX2Zv
cndhcmRfYXJndW1lbnRzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2KSk7CisgICAgICAgICAg
ICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzLCBXaWRlMzIpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
bW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dQ
YXRoX3RyYW1wb2xpbmVfd2lkZTMyKSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJ
VFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY29uc3RydWN0X3ZhcmFyZ3MpXSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfY29uc3RydWN0X3ZhcmFy
Z3Nfc2xvd1BhdGhfdHJhbXBvbGluZV9uYXJyb3cpKTsKKyAgICAgICAgICAgIGdfSklUVHJhbXBv
bGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9jb25zdHJ1Y3RfdmFyYXJncywgV2lk
ZTE2KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29w
X2NvbnN0cnVjdF92YXJhcmdzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2KSk7CisgICAgICAg
ICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY29uc3Ry
dWN0X3ZhcmFyZ3MsIFdpZGUzMildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3ZlQ29k
ZVB0clRhZyhsbGludF9vcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93UGF0aF90cmFtcG9saW5lX3dp
ZGUzMikpOworICAgICAgICB9CisgICAgICAgIAorICAgIH0pOworfQorI2VuZGlmCisKK01hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdEZyb21Jbmxp
bmVkQ2FsbFRyYW1wb2xpbmUoKQoreworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4g
Y29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0
ZUNoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVGh1bmsoKSk7CisgICAgICAgIGdfY2hl
Y2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUaHVuayA9IGNvZGVSZWYtPnRlbXBsYXRlIHJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0pOworCisg
ICAgcmV0dXJuIGNvZGVSZWYtPmNvZGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIExMSW50OjpnZXRD
b2RlUHRyPEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2Nh
bGxfdHJhbXBvbGluZSk7CisjZW5kaWYKK30KKwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gd2FzbUZ1bmN0aW9uRW50cnlUaHVu
aygpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAko
cmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gZXYKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKTsKIAorTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJhbXBv
bGluZSgpOworCisjaWYgRU5BQkxFKEpJVF9DQUdFKQordm9pZCBDcmVhdGVMTGludFRvSklUVHJh
bXBvbGluZXMoKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCk7CiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDI1
NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNiArMjkyLDEwIEBAIG1hY3JvIG1ha2VKYXZh
U2NyaXB0Q2FsbChlbnRyeSwgcHJvdG9DYWwKICAgICBhZGRwIDE2LCBzcAogICAgIGlmIENfTE9P
UCBvciBDX0xPT1BfV0lOCiAgICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gZW50cnkKKyAgICBl
bHNpZiBKSVRfQ0FHRQorICAgICAgICBsZWFwIF9nX3ZtRW50cnlUb0pTVHJhbXBvbGluZSwgdGVt
cDEKKyAgICAgICAgam1wIFt0ZW1wMV0sIE5vUHRyVGFnCitfdm1FbnRyeVRvSlNSZXR1cm46CiAg
ICAgZWxzZQogICAgICAgICBjYWxsIGVudHJ5LCBKU0VudHJ5UHRyVGFnCiAgICAgZW5kCkBAIC0y
MDY0LDcgKzIwNjgsOCBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgs
CiAgICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2Fk
T2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAogICAgICAgICBwcmVwYXJlQ2FsbCglb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRb
dDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rp
b24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNF
bnRyeVB0clRhZykKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDAKKyAgICAgICAgY2FsbFRhcmdl
dEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHQwLCBK
U0VudHJ5UHRyVGFnKQogCiAgICAgLm9wQ2FsbFNsb3c6CiAgICAgICAgIHNsb3dQYXRoRm9yQ2Fs
bChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJl
cGFyZUNhbGwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTEwMSw4ICsxMDEsOCBAQAogIyAgLSBhMywgdDIsIHQzLCB0NCBhbmQgdDUgYXJlIG5ldmVyIHJl
dHVybiByZWdpc3RlcnM7IHQwLCB0MSwgYTAsIGExIGFuZCBhMgogIyAgY2FuIGJlIHJldHVybiBy
ZWdpc3RlcnMuCiAjCi0jICAtIHQ0IGFuZCB0NSBhcmUgbmV2ZXIgYXJndW1lbnQgcmVnaXN0ZXJz
LCB0MyBjYW4gb25seSBiZSBhMywgdDEgY2FuIG9ubHkgYmUKLSMgIGExOyBidXQgdDAgYW5kIHQy
IGNhbiBiZSBlaXRoZXIgYTAgb3IgYTIuCisjICAtIHQzLCB0NCwgdDUgY2FuIG9ubHkgYmUgYTMs
IGE0LCBhNSByZXNwZWN0aXZlbHkKKyMgIC0gdDEgY2FuIG9ubHkgYmUgYTE7IGJ1dCB0MCBhbmQg
dDIgY2FuIGJlIGVpdGhlciBhMCBvciBhMi4KICMKICMgIC0gVGhlcmUgYXJlIGNhbGxlZS1zYXZl
IHJlZ2lzdGVycyBuYW1lZCBjc3IwLCBjc3IxLCAuLi4gY3NyTi4KICMgIFRoZSBsYXN0IHRocmVl
IGNzciByZWdpc3RlcnMgYXJlIHVzZWQgdXNlZCB0byBzdG9yZSB0aGUgUEMgYmFzZSBhbmQKQEAg
LTIyOCw3ICsyMjgsNiBAQCBlbmQKIAogY29uc3QgQ2FsbGVlU2F2ZVNwYWNlU3RhY2tBbGlnbmVk
ID0gKENhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycyAqIFNsb3RTaXplICsgU3RhY2tB
bGlnbm1lbnQgLSAxKSAmIH5TdGFja0FsaWdubWVudE1hc2sKIAotCiAjIFdhdGNocG9pbnQgc3Rh
dGVzCiBjb25zdCBDbGVhcldhdGNocG9pbnQgPSBjb25zdGV4cHIgQ2xlYXJXYXRjaHBvaW50CiBj
b25zdCBJc1dhdGNoZWQgPSBjb25zdGV4cHIgSXNXYXRjaGVkCkBAIC0yNTQsNiArMjUzLDI5IEBA
IGNvbnN0IEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcgPSBjb25zdGV4cHIKIGNvbnN0IE5vUHRyVGFn
ID0gY29uc3RleHByIE5vUHRyVGFnCiBjb25zdCBTbG93UGF0aFB0clRhZyA9IGNvbnN0ZXhwciBT
bG93UGF0aFB0clRhZwogCitpZiBKSVRfQ0FHRQorICAgIGNvbnN0IExMSW50X29wX2NhbGwgPSBj
b25zdGV4cHIgKExMSW50OjpKSVRUcmFtcG9saW5lSW5kZXhGb3Iob3BfY2FsbCkpCisgICAgY29u
c3QgTExJbnRfb3BfdGFpbF9jYWxsID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBvbGluZUlu
ZGV4Rm9yKG9wX3RhaWxfY2FsbCkpCisgICAgY29uc3QgTExJbnRfb3BfY29uc3RydWN0ID0gY29u
c3RleHByIChMTEludDo6SklUVHJhbXBvbGluZUluZGV4Rm9yKG9wX2NvbnN0cnVjdCkpCisgICAg
Y29uc3QgTExJbnRfb3BfY2FsbF9zbG93UGF0aCA9IGNvbnN0ZXhwciAoTExJbnQ6OkpJVFRyYW1w
b2xpbmVJbmRleEZvclNsb3cob3BfY2FsbCkpCisgICAgY29uc3QgTExJbnRfb3BfdGFpbF9jYWxs
X3Nsb3dQYXRoID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhv
cF90YWlsX2NhbGwpKQorICAgIGNvbnN0IExMSW50X29wX2NvbnN0cnVjdF9zbG93UGF0aCA9IGNv
bnN0ZXhwciAoTExJbnQ6OkpJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY29uc3RydWN0KSkK
KyAgICBjb25zdCBMTEludF9vcF9jYWxsX2V2YWxfc2xvd1BhdGggPSBjb25zdGV4cHIgKExMSW50
OjpKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2NhbGxfZXZhbCkpCisgICAgY29uc3QgTExJ
bnRfb3BfY2FsbF92YXJhcmdzX3Nsb3dQYXRoID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBv
bGluZUluZGV4Rm9yU2xvdyhvcF9jYWxsX3ZhcmFyZ3MpKQorICAgIGNvbnN0IExMSW50X29wX3Rh
aWxfY2FsbF92YXJhcmdzX3Nsb3dQYXRoID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBvbGlu
ZUluZGV4Rm9yU2xvdyhvcF90YWlsX2NhbGxfdmFyYXJncykpCisgICAgY29uc3QgTExJbnRfb3Bf
dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dQYXRoID0gY29uc3RleHByIChMTEludDo6
SklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMp
KQorICAgIGNvbnN0IExMSW50X29wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3dQYXRoID0gY29uc3Rl
eHByIChMTEludDo6SklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9jb25zdHJ1Y3RfdmFyYXJn
cykpCisKKyAgICBjb25zdCBXYXNtX3dhc21fY2FsbCA9IGNvbnN0ZXhwciAoTExJbnQ6OkpJVFRy
YW1wb2xpbmVJbmRleEZvcih3YXNtX2NhbGwpKQorICAgIGNvbnN0IFdhc21fd2FzbV9jYWxsX25v
X3RscyA9IGNvbnN0ZXhwciAoTExJbnQ6OkpJVFRyYW1wb2xpbmVJbmRleEZvcih3YXNtX2NhbGxf
bm9fdGxzKSkKKyAgICBjb25zdCBXYXNtX3dhc21fY2FsbF9pbmRpcmVjdCA9IGNvbnN0ZXhwciAo
TExJbnQ6OkpJVFRyYW1wb2xpbmVJbmRleEZvcih3YXNtX2NhbGxfaW5kaXJlY3QpKQorICAgIGNv
bnN0IFdhc21fd2FzbV9jYWxsX2luZGlyZWN0X25vX3RscyA9IGNvbnN0ZXhwciAoTExJbnQ6OkpJ
VFRyYW1wb2xpbmVJbmRleEZvcih3YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzKSkKKworICAgIGNv
bnN0IE5hcnJvd0Jhc2UgPSBjb25zdGV4cHIgKExMSW50OjpKSVRUcmFtcG9saW5lQmFzZUluZGV4
Rm9yKE9wY29kZVNpemU6Ok5hcnJvdykpCisgICAgY29uc3QgV2lkZTE2QmFzZSA9IGNvbnN0ZXhw
ciAoTExJbnQ6OkpJVFRyYW1wb2xpbmVCYXNlSW5kZXhGb3IoT3Bjb2RlU2l6ZTo6V2lkZTE2KSkK
KyAgICBjb25zdCBXaWRlMzJCYXNlID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBvbGluZUJh
c2VJbmRleEZvcihPcGNvZGVTaXplOjpXaWRlMzIpKQorZW5kCisKICMgU29tZSByZWdpc3RlciBj
b252ZW50aW9ucy4KICMgLSBXZSB1c2UgYSBwYWlyIG9mIHJlZ2lzdGVycyB0byByZXByZXNlbnQg
dGhlIFBDOiBvbmUgcmVnaXN0ZXIgZm9yIHRoZQogIyAgIGJhc2Ugb2YgdGhlIGJ5dGVjb2Rlcywg
YW5kIG9uZSByZWdpc3RlciBmb3IgdGhlIGluZGV4LgpAQCAtNDkwLDYgKzUxMiw1OCBAQCBtYWNy
byBsbGludE9wV2l0aFByb2ZpbGUob3Bjb2RlTmFtZSwgb3BjCiAgICAgZW5kKQogZW5kCiAKK21h
Y3JvIGpzUmV0dXJuUG9pbnQodGh1bmtMYWJlbFByZWZpeCwgc2l6ZSkKKyAgICBtYWNybyBqc1Jl
dHVyblBvaW50TmFycm93KCkKKyAgICAgICAgXyV0aHVua0xhYmVsUHJlZml4JV9yZXR1cm5fbG9j
YXRpb246CisgICAgZW5kCisKKyAgICBtYWNybyBqc1JldHVyblBvaW50V2lkZTE2KCkKKyAgICAg
ICAgXyV0aHVua0xhYmVsUHJlZml4JV9yZXR1cm5fbG9jYXRpb25fd2lkZTE2OgorICAgIGVuZAor
CisgICAgbWFjcm8ganNSZXR1cm5Qb2ludFdpZGUzMigpCisgICAgICAgIF8ldGh1bmtMYWJlbFBy
ZWZpeCVfcmV0dXJuX2xvY2F0aW9uX3dpZGUzMjoKKyAgICBlbmQKKworICAgIHNpemUoanNSZXR1
cm5Qb2ludE5hcnJvdywganNSZXR1cm5Qb2ludFdpZGUxNiwganNSZXR1cm5Qb2ludFdpZGUzMiwg
bWFjcm8gKGpzUmV0dXJuUG9pbnQpIGpzUmV0dXJuUG9pbnQoKSBlbmQpCitlbmQKKworbWFjcm8g
anVtcFRvVHJhbXBvbGluZShvcGNvZGVOYW1lLCBzaXplKQorICAgIG1hY3JvIGdldE5hcnJvd1Ry
YW1wb2xpbmVJbmRleCgpCisgICAgICAgIG1vdmUgKExMSW50XyVvcGNvZGVOYW1lJSArIE5hcnJv
d0Jhc2UpLCB0MworICAgIGVuZAorCisgICAgbWFjcm8gZ2V0V2lkZTE2VHJhbXBvbGluZUluZGV4
KCkKKyAgICAgICAgbW92ZSAoTExJbnRfJW9wY29kZU5hbWUlICsgV2lkZTE2QmFzZSksIHQzCisg
ICAgZW5kCisKKyAgICBtYWNybyBnZXRXaWRlMzJUcmFtcG9saW5lSW5kZXgoKQorICAgICAgICBt
b3ZlIChMTEludF8lb3Bjb2RlTmFtZSUgKyBXaWRlMzJCYXNlKSwgdDMKKyAgICBlbmQKKworICAg
IHNpemUoZ2V0TmFycm93VHJhbXBvbGluZUluZGV4LCBnZXRXaWRlMTZUcmFtcG9saW5lSW5kZXgs
IGdldFdpZGUxNlRyYW1wb2xpbmVJbmRleCwgbWFjcm8gKGp1bXBUb1RyYW1wb2xpbmUpIGp1bXBU
b1RyYW1wb2xpbmUoKSBlbmQpCisgICAgbGVhcCBfZ19KSVRUcmFtcG9saW5lcywgdDUKKyAgICBq
bXAgW3Q1LCB0MywgUHRyU2l6ZV0sIE5vUHRyVGFnCitlbmQKKworbWFjcm8ganVtcFRvU2xvd1Ry
YW1wb2xpbmUob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICBtYWNybyBnZXROYXJyb3dTbG93VHJhbXBv
bGluZUluZGV4KCkKKyAgICAgICAgbW92ZSAoTExJbnRfJW9wY29kZU5hbWUlX3Nsb3dQYXRoICsg
TmFycm93QmFzZSksIHQzCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRXaWRlMTZTbG93VHJhbXBv
bGluZUluZGV4KCkKKyAgICAgICAgbW92ZSAoTExJbnRfJW9wY29kZU5hbWUlX3Nsb3dQYXRoICsg
V2lkZTE2QmFzZSksIHQzCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRXaWRlMzJTbG93VHJhbXBv
bGluZUluZGV4KCkKKyAgICAgICAgbW92ZSAoTExJbnRfJW9wY29kZU5hbWUlX3Nsb3dQYXRoICsg
V2lkZTMyQmFzZSksIHQzCisgICAgZW5kCisKKyAgICBzaXplKGdldE5hcnJvd1Nsb3dUcmFtcG9s
aW5lSW5kZXgsIGdldFdpZGUxNlNsb3dUcmFtcG9saW5lSW5kZXgsIGdldFdpZGUzMlNsb3dUcmFt
cG9saW5lSW5kZXgsIG1hY3JvIChqdW1wVG9TbG93VHJhbXBvbGluZSkganVtcFRvU2xvd1RyYW1w
b2xpbmUoKSBlbmQpCisgICAgbGVhcCBfZ19KSVRUcmFtcG9saW5lcywgdDUKKyAgICBqbXAgW3Q1
LCB0MywgUHRyU2l6ZV0sIE5vUHRyVGFnCitlbmQKKwogCiBpZiBYODZfNjRfV0lOCiAgICAgY29u
c3QgZXh0cmFUZW1wUmVnID0gdDAKQEAgLTEwMTAsNyArMTA4NCw3IEBAIG1hY3JvIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBlbmQKIGVuZAogCi1tYWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwo
b3Bjb2RlTmFtZSwgc2l6ZSkKK21hY3JvIGRlZmluZVJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNp
emUpCiAgICAgbWFjcm8gZGVmaW5lTmFycm93KCkKICAgICAgICAgaWYgbm90IENfTE9PUF9XSU4K
ICAgICAgICAgICAgIF8lb3Bjb2RlTmFtZSVfcmV0dXJuX2xvY2F0aW9uOgpAQCAtMTAzMiw5ICsx
MTA2LDM1IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW0KICAgICBz
aXplKGRlZmluZU5hcnJvdywgZGVmaW5lV2lkZTE2LCBkZWZpbmVXaWRlMzIsIG1hY3JvIChmKSBm
KCkgZW5kKQogZW5kCiAKK21hY3JvIGNhbGxTbG93cGF0aEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykKKyAgICBpZiBD
X0xPT1Agb3IgQ19MT09QX1dJTgorICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQor
ICAgIGVsc2lmIEpJVF9DQUdFCisgICAgICAgIG1vdmUgY2FsbGVlLCBhMAorICAgICAgICBqdW1w
VG9TbG93VHJhbXBvbGluZShvcGNvZGVOYW1lLCBzaXplKQorICAgIGVsc2UKKyAgICAgICAgY2Fs
bCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBlbmQKKworICAgIGlmIEFSTXY3IG9yIE1JUFMKKyAg
ICAgICAgIyBJdCBpcyByZXF1aXJlZCBpbiBBUk12NyBhbmQgTUlQcyBiZWNhdXNlIGdsb2JhbCBs
YWJlbCBkZWZpbml0aW9ucworICAgICAgICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1cmVzIGdlbmVy
YXRlcyBhIHNldCBvZiBpbnN0cnVjdGlvbnMKKyAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExM
SW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKKyAgICAgICAgIyBjcmFzaGVz
LgorICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKKyAgICAgICAgZGlzcGF0
Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCkKKyAgICBlbmQKKyAgICBk
ZWZpbmVSZXR1cm5MYWJlbCglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSkKKyAgICByZXN0b3JlU3Rh
Y2tQb2ludGVyQWZ0ZXJDYWxsKCkKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoKQorZW5kCisKIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCiAg
ICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBj
YWxsZWUKKyAgICBlbHNpZiBKSVRfQ0FHRQorICAgICAgICBtb3ZlIGNhbGxlZSwgYTAKKyAgICAg
ICAganVtcFRvVHJhbXBvbGluZShvcGNvZGVOYW1lLCBzaXplKQogICAgIGVsc2UKICAgICAgICAg
Y2FsbCBjYWxsZWUsIGNhbGxQdHJUYWcKICAgICBlbmQKQEAgLTEwNDcsNyArMTE0Nyw3IEBAIG1h
Y3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXoKICAgICAgICAgcmVzdG9yZVN0
YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gpCiAgICAgZW5kCi0gICAgZGVmaW5lT1NSRXhpdFJldHVybkxh
YmVsKG9wY29kZU5hbWUsIHNpemUpCisgICAgZGVmaW5lUmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwg
c2l6ZSkKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKICAgICBkaXNwYXRjaEFm
dGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoKQogZW5kCkBAIC0xMTI2LDE0ICsx
MjI2LDE0IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCAKICAgICAg
ICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2FsbChj
YWxsZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQ
OgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXpl
LCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAg
ICAgICAgY2FsbFNsb3dwYXRoRnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCBkaXNwYXRjaCwgY2FsbGVlLCBTbG93UGF0aFB0clRhZykKICAgICAgICAgZW5kKQogZW5kCiAK
IG1hY3JvIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcE5hbWUsIHNpemUpCiAgICAg
Y3Jhc2goKSAjIFdlIGRvbid0IHJlYWNoIHRoaXMgaW4gc3RyYWlnaHQgbGluZSBjb2RlLiBXZSBv
bmx5IHJlYWNoIGl0IHZpYSByZXR1cm5pbmcgdG8gdGhlIGNvZGUgYmVsb3cgd2hlbiByZWNvbnN0
cnVjdGluZyBzdGFjayBmcmFtZXMgZHVyaW5nIE9TUiBleGl0LgogCi0gICAgZGVmaW5lT1NSRXhp
dFJldHVybkxhYmVsKG9wTmFtZSwgc2l6ZSkKKyAgICBkZWZpbmVSZXR1cm5MYWJlbChvcE5hbWUs
IHNpemUpCiAKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBM
TEludFJldHVyblBDW2Nmcl0sIFBDCkBAIC0xMzc2LDggKzE0NzYsMTMgQEAgZW5kCiBtYWNybyBk
b1JldHVybigpCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogICAgIHJlc3Rv
cmVDYWxsZXJQQ0FuZENGUigpCitpZiBKSVRfQ0FHRQorICAgIGxlYXAgX2dfbGxpbnRDYWdlZFJl
dHVyblRodW5rLCB0MworICAgIGptcCBbdDNdLCBOb1B0clRhZworZWxzZQogICAgIHJldAogZW5k
CitlbmQKIAogIyBUaGlzIGJyZWFrIGluc3RydWN0aW9uIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBz
eW50aGVzaXplZCBsbGludFBDUmFuZ2VTdGFydCBsYWJlbAogIyBkb2Vzbid0IHBvaW50IHRvIHRo
ZSBleGFjdCBzYW1lIGxvY2F0aW9uIGFzIHZtRW50cnlUb0phdmFTY3JpcHQgd2hpY2ggY29tZXMg
YWZ0ZXIgaXQuCkBAIC0xNTIzLDcgKzE2MjgsMzUgQEAgZWxzZQogICAgIGVuZAogCiAKLW1hY3Jv
IGVudHJ5KGtpbmQsIGluaXRpYWxpemUpCitpZiBKSVRfQ0FHRQorICAgIGlmIEFSTTY0IG9yIEFS
TTY0RQorICAgIGdsb2JhbCBfY2FsbFRvUmVnRXhwSklUQ29kZQorX2NhbGxUb1JlZ0V4cEpJVENv
ZGU6CisgICAgICAgIGZ1bmN0aW9uUHJvbG9ndWUoKQorICAgICAgICAvLyBBcmd1bWVudHMgYXJl
IGluIGEwIC4uIGE1LCBkZXN0aW5hdGlvbiBKSVQgUmVnRXhwIGZ1bmN0aW9uIGlzIGluIGE2Lgor
ICAgICAgICBsZWFwIF9nX3JlZ0V4cEpJVFRyYW1wb2xpbmUsIHQ3CisgICAgICAgIGptcCBbdDdd
LCBOb1B0clRhZworX3JlZ0V4cEpJVFJldHVybjoKKyAgICAgICAgZnVuY3Rpb25FcGlsb2d1ZSgp
CisgICAgICAgIHJldAorICAgIGVuZAorCisgICAgbWFjcm8gaW5pdFRyYW1wb2xpbmVSZXR1cm5z
KHRlbXAxLCB0ZW1wMikKKyAgICAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCisgICAgICAgICAgICBw
Y3J0b2FkZHIgX3ZtRW50cnlUb0pTUmV0dXJuLCB0ZW1wMQorICAgICAgICAgICAgbGVhcCBfZ192
bUVudHJ5UmV0dXJuLCB0ZW1wMgorICAgICAgICAgICAgc3RvcmVwIHRlbXAxLCBbdGVtcDJdCisg
ICAgICAgICAgICBwY3J0b2FkZHIgX3JlZ0V4cEpJVFJldHVybiwgdGVtcDEKKyAgICAgICAgICAg
IGxlYXAgX2dfcmVnRXhwSklUUmV0dXJuLCB0ZW1wMgorICAgICAgICAgICAgc3RvcmVwIHRlbXAx
LCBbdGVtcDJdCisgICAgICAgIGVuZAorICAgIGVuZAorZWxzZQorICAgIG1hY3JvIGluaXRUcmFt
cG9saW5lUmV0dXJucyh0ZW1wMSwgdGVtcDIpCisgICAgZW5kCitlbmQKKworbWFjcm8gZW50cnko
a2luZCwgaW5pdGlhbGl6ZSwgZXh0cmFJbml0KQogICAgIGdsb2JhbCBfJWtpbmQlX2VudHJ5CiAg
ICAgXyVraW5kJV9lbnRyeToKICAgICAgICAgZnVuY3Rpb25Qcm9sb2d1ZSgpCkBAIC0xNTM1LDcg
KzE2NjgsNyBAQCBtYWNybyBlbnRyeShraW5kLCBpbml0aWFsaXplKQogICAgICAgICBlbmQKIAog
ICAgICAgICBpbml0UENSZWxhdGl2ZShraW5kLCB0MykKLQorICAgICAgICBleHRyYUluaXQodDMs
IHQ0KQogICAgICAgICAjIEluY2x1ZGUgZ2VuZXJhdGVkIGJ5dGVjb2RlIGluaXRpYWxpemF0aW9u
IGZpbGUuCiAgICAgICAgIGluY2x1ZGVFbnRyaWVzQXRPZmZzZXQoa2luZCwgaW5pdGlhbGl6ZSkK
ICAgICAgICAgcG9wQ2FsbGVlU2F2ZXMoKQpAQCAtMTU0Niw3ICsxNjc5LDggQEAgZW5kCiAjIEVu
dHJ5IHBvaW50IGZvciB0aGUgbGxpbnQgdG8gaW5pdGlhbGl6ZS4KIGVudHJ5KGxsaW50LCBtYWNy
bygpCiAgICAgaW5jbHVkZSBJbml0Qnl0ZWNvZGVzCi1lbmQpCisgICAgZW5kLAorICAgIGluaXRU
cmFtcG9saW5lUmV0dXJucykKIAogZW5kIC8vIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAK
QEAgLTE5NzgsNyArMjExMiw3IEBAIGVuZCkKIAogX2xsaW50X29wX2NhbGxfZXZhbDoKICAgICBz
bG93UGF0aEZvckNhbGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbF9uYXJyb3csCisgICAgICAgIG9w
X2NhbGxfZXZhbCwKICAgICAgICAgbmFycm93LAogICAgICAgICBPcENhbGxFdmFsLAogICAgICAg
ICBtYWNybyAoKSBkaXNwYXRjaE9wKG5hcnJvdywgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0xOTg3
LDcgKzIxMjEsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsOgogCiBfbGxpbnRfb3BfY2FsbF9ldmFs
X3dpZGUxNjoKICAgICBzbG93UGF0aEZvckNhbGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbF93aWRl
MTYsCisgICAgICAgIG9wX2NhbGxfZXZhbCwKICAgICAgICAgd2lkZTE2LAogICAgICAgICBPcENh
bGxFdmFsLAogICAgICAgICBtYWNybyAoKSBkaXNwYXRjaE9wKHdpZGUxNiwgb3BfY2FsbF9ldmFs
KSBlbmQsCkBAIC0xOTk2LDcgKzIxMzAsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoK
IAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMzI6CiAgICAgc2xvd1BhdGhGb3JDYWxsKAotICAg
ICAgICBvcF9jYWxsX2V2YWxfd2lkZTMyLAorICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAgICAg
IHdpZGUzMiwKICAgICAgICAgT3BDYWxsRXZhbCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hP
cCh3aWRlMzIsIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAtMjEyNyw3ICsyMjYxLDggQEAgaWYgV0VC
QVNTRU1CTFkgYW5kIG5vdCBYODZfNjRfV0lOCiAKIGVudHJ5KHdhc20sIG1hY3JvKCkKICAgICBp
bmNsdWRlIEluaXRXYXNtCi1lbmQpCisgICAgZW5kLAorICAgIG1hY3JvKHRlbXAxLCB0ZW1wMikg
ZW5kKQogCiBtYWNybyB3YXNtU2NvcGUoKQogICAgICMgV3JhcCB0aGUgc2NyaXB0IGluIGEgbWFj
cm8gc2luY2UgaXQgb3ZlcndyaXRlcyBzb21lIG9mIHRoZSBMTEludCBtYWNyb3MsCkBAIC0yMTQ4
LDMgKzIyODMsNzYgQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1hY3JvIAog
ZW5kKQogCiBlbmQKKworaWYgSklUX0NBR0UKKyAgICAjIExMSW50IHRyYW1wb2xpbmVzIGZvciBK
SVQgQ2FnaW5nIHdoZW4gSklUIGlzbid0IHJ1bnRpbWUgZW5hYmxlZC4KKyAgICBnbG9iYWwgX3Zt
RW50cnlUb0pJVFRyYW1wb2xpbmUKKyAgICBfdm1FbnRyeVRvSklUVHJhbXBvbGluZToKKyAgICAg
ICAgY2FsbCBhMCwgSlNFbnRyeVB0clRhZworICAgICAgICBqbXAgX3ZtRW50cnlUb0pTUmV0dXJu
CisKKyAgICBnbG9iYWwgX3JldHVyblRodW5rCisgICAgX3JldHVyblRodW5rOgorICAgICAgICBy
ZXQKKworICAgIG1hY3JvIG1ha2VUcmFtcG9saW5lTGFiZWwodHJhbXBvbGluZVR5cGUsIHNpemUp
CisgICAgICAgIG1hY3JvIG1ha2VUcmFtcG9saW5lTGFiZWxOYXJyb3coKQorICAgICAgICAgICAg
Z2xvYmFsIF9sbGludF8ldHJhbXBvbGluZVR5cGUlX3RyYW1wb2xpbmVfbmFycm93CisgICAgICAg
ICAgICBfbGxpbnRfJXRyYW1wb2xpbmVUeXBlJV90cmFtcG9saW5lX25hcnJvdzoKKyAgICAgICAg
ZW5kCisKKyAgICAgICAgbWFjcm8gbWFrZVRyYW1wb2xpbmVMYWJlbFdpZGUxNigpCisgICAgICAg
ICAgICBnbG9iYWwgX2xsaW50XyV0cmFtcG9saW5lVHlwZSVfdHJhbXBvbGluZV93aWRlMTYKKyAg
ICAgICAgICAgIF9sbGludF8ldHJhbXBvbGluZVR5cGUlX3RyYW1wb2xpbmVfd2lkZTE2OgorICAg
ICAgICBlbmQKKworICAgICAgICBtYWNybyBtYWtlVHJhbXBvbGluZUxhYmVsV2lkZTMyKCkKKyAg
ICAgICAgICAgIGdsb2JhbCBfbGxpbnRfJXRyYW1wb2xpbmVUeXBlJV90cmFtcG9saW5lX3dpZGUz
MgorICAgICAgICAgICAgX2xsaW50XyV0cmFtcG9saW5lVHlwZSVfdHJhbXBvbGluZV93aWRlMzI6
CisgICAgICAgIGVuZAorCisgICAgICAgIHNpemUobWFrZVRyYW1wb2xpbmVMYWJlbE5hcnJvdywg
bWFrZVRyYW1wb2xpbmVMYWJlbFdpZGUxNiwgbWFrZVRyYW1wb2xpbmVMYWJlbFdpZGUzMiwgbWFj
cm8gKG1ha2VUcmFtcG9saW5lTGFiZWwpIG1ha2VUcmFtcG9saW5lTGFiZWwoKSBlbmQpCisgICAg
ZW5kCisKKyAgICBtYWNybyBqdW1wVG9SZXR1cm5Qb2ludChyZXR1cm5MYWJlbFByZWZpeCwgc2l6
ZSkKKyAgICAgICAgbWFjcm8ganVtcFRvUmV0dXJuUG9pbnROYXJyb3coKQorICAgICAgICAgICAg
am1wIF8lcmV0dXJuTGFiZWxQcmVmaXglCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGp1
bXBUb1JldHVyblBvaW50V2lkZTE2KCkKKyAgICAgICAgICAgIGptcCBfJXJldHVybkxhYmVsUHJl
Zml4JV93aWRlMTYKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8ganVtcFRvUmV0dXJuUG9p
bnRXaWRlMzIoKQorICAgICAgICAgICAgam1wIF8lcmV0dXJuTGFiZWxQcmVmaXglX3dpZGUzMgor
ICAgICAgICBlbmQKKworICAgICAgICBzaXplKGp1bXBUb1JldHVyblBvaW50TmFycm93LCBqdW1w
VG9SZXR1cm5Qb2ludFdpZGUxNiwganVtcFRvUmV0dXJuUG9pbnRXaWRlMzIsIG1hY3JvIChqdW1w
VG9SZXR1cm5Qb2ludCkganVtcFRvUmV0dXJuUG9pbnQoKSBlbmQpCisgICAgZW5kCisKKyAgICBt
YWNybyB0cmFtcG9saW5lRm9yKG9wLCByZXR1cm5PcCwgdGFnKQorICAgICAgICBtYWtlVHJhbXBv
bGluZUxhYmVsKG9wLCBuYXJyb3cpCisgICAgICAgIGNhbGwgYTAsIHRhZworICAgICAgICBqdW1w
VG9SZXR1cm5Qb2ludChyZXR1cm5PcCwgbmFycm93KQorCisgICAgICAgIG1ha2VUcmFtcG9saW5l
TGFiZWwob3AsIHdpZGUxNikKKyAgICAgICAgY2FsbCBhMCwgdGFnCisgICAgICAgIGp1bXBUb1Jl
dHVyblBvaW50KHJldHVybk9wLCB3aWRlMTYpCisKKyAgICAgICAgbWFrZVRyYW1wb2xpbmVMYWJl
bChvcCwgd2lkZTMyKQorICAgICAgICBjYWxsIGEwLCB0YWcKKyAgICAgICAganVtcFRvUmV0dXJu
UG9pbnQocmV0dXJuT3AsIHdpZGUzMikKKyAgICBlbmQKKworICAgIHRyYW1wb2xpbmVGb3Iob3Bf
Y2FsbCwgb3BfY2FsbF9yZXR1cm5fbG9jYXRpb24sIEpTRW50cnlQdHJUYWcpCisgICAgdHJhbXBv
bGluZUZvcihvcF90YWlsX2NhbGwsIG9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24sIEpTRW50
cnlQdHJUYWcpCisgICAgdHJhbXBvbGluZUZvcihvcF9jb25zdHJ1Y3QsIG9wX2NvbnN0cnVjdF9y
ZXR1cm5fbG9jYXRpb24sIEpTRW50cnlQdHJUYWcpCisgICAgdHJhbXBvbGluZUZvcihvcF9jYWxs
X3Nsb3dQYXRoLCBvcF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uLCBTbG93UGF0aFB0clRhZykK
KyAgICB0cmFtcG9saW5lRm9yKG9wX3RhaWxfY2FsbF9zbG93UGF0aCwgb3BfdGFpbF9jYWxsX3Ns
b3dfcmV0dXJuX2xvY2F0aW9uLCBTbG93UGF0aFB0clRhZykKKyAgICB0cmFtcG9saW5lRm9yKG9w
X2NvbnN0cnVjdF9zbG93UGF0aCwgb3BfY29uc3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uLCBT
bG93UGF0aFB0clRhZykKKyAgICB0cmFtcG9saW5lRm9yKG9wX2NhbGxfZXZhbF9zbG93UGF0aCwg
b3BfY2FsbF9ldmFsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uLCBTbG93UGF0aFB0clRhZykKKyAgICB0
cmFtcG9saW5lRm9yKG9wX2NhbGxfdmFyYXJnc19zbG93UGF0aCwgb3BfY2FsbF92YXJhcmdzX3Ns
b3dfcmV0dXJuX2xvY2F0aW9uLCBTbG93UGF0aFB0clRhZykKKyAgICB0cmFtcG9saW5lRm9yKG9w
X3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dQYXRoLCBvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3Jl
dHVybl9sb2NhdGlvbiwgU2xvd1BhdGhQdHJUYWcpCisgICAgdHJhbXBvbGluZUZvcihvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd1BhdGgsIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2Fy
Z3VtZW50c19zbG93X3JldHVybl9sb2NhdGlvbiwgU2xvd1BhdGhQdHJUYWcpCisgICAgdHJhbXBv
bGluZUZvcihvcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93UGF0aCwgb3BfY29uc3RydWN0X3ZhcmFy
Z3Nfc2xvd19yZXR1cm5fbG9jYXRpb24sIFNsb3dQYXRoUHRyVGFnKQorZW5kCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20JKHJldmlzaW9uIDI1Nzky
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTY3MSw3ICs2NzEsNDEgQEAgd2FzbU9wKHNldF9nbG9iYWxfcG9ydGFibGVf
YmluZGluZywgV2FzbQogICAgIGRpc3BhdGNoKGN0eCkKIGVuZCkKIAotbWFjcm8gc2xvd1BhdGhG
b3JXYXNtQ2FsbChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKK21hY3JvIGp1bXBU
b1dhc21UcmFtcG9saW5lKG9wY29kZU5hbWUsIHNpemUpCisgICAgbWFjcm8gZ2V0VHJhbXBvbGlu
ZU5hcnJvdygpCisgICAgICAgIGFkZHEgKFdhc21fJW9wY29kZU5hbWUlICsgTmFycm93QmFzZSkg
KiBQdHJTaXplLCB3czEKKyAgICBlbmQKKworICAgIG1hY3JvIGdldFRyYW1wb2xpbmVXaWRlMTYo
KQorICAgICAgICBhZGRxIChXYXNtXyVvcGNvZGVOYW1lJSArIFdpZGUxNkJhc2UpICogUHRyU2l6
ZSwgd3MxCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRUcmFtcG9saW5lV2lkZTMyKCkKKyAgICAg
ICAgYWRkcSAoV2FzbV8lb3Bjb2RlTmFtZSUgKyBXaWRlMzJCYXNlKSAqIFB0clNpemUsIHdzMQor
ICAgIGVuZAorCisgICAgbGVhcCBfZ19KSVRUcmFtcG9saW5lcywgd3MxCisgICAgc2l6ZShnZXRU
cmFtcG9saW5lTmFycm93LCBnZXRUcmFtcG9saW5lV2lkZTE2LCBnZXRUcmFtcG9saW5lV2lkZTMy
LCBtYWNybyAoanVtcFRvV2FzbVRyYW1wb2xpbmUpIGp1bXBUb1dhc21UcmFtcG9saW5lKCkgZW5k
KQorICAgIGptcCBbd3MxXSwgTm9QdHJUYWcKK2VuZAorCittYWNybyBkZWZpbmVXYXNtQ2FsbFJl
dHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCisgICAgbWFjcm8gZGVmaW5lV2FzbUNhbGxSZXR1
cm5MYWJlbE5hcnJvdygpCisgICAgICAgIF8lb3Bjb2RlTmFtZSVfcmV0dXJuX2xvY2F0aW9uOgor
ICAgIGVuZAorCisgICAgbWFjcm8gZGVmaW5lV2FzbUNhbGxSZXR1cm5MYWJlbFdpZGUxNigpCisg
ICAgICAgIF8lb3Bjb2RlTmFtZSVfcmV0dXJuX2xvY2F0aW9uX3dpZGUxNjoKKyAgICBlbmQKKwor
ICAgIG1hY3JvIGRlZmluZVdhc21DYWxsUmV0dXJuTGFiZWxXaWRlMzIoKQorICAgICAgICBfJW9w
Y29kZU5hbWUlX3JldHVybl9sb2NhdGlvbl93aWRlMzI6CisgICAgZW5kCisKKyAgICBzaXplKGRl
ZmluZVdhc21DYWxsUmV0dXJuTGFiZWxOYXJyb3csIGRlZmluZVdhc21DYWxsUmV0dXJuTGFiZWxX
aWRlMTYsIGRlZmluZVdhc21DYWxsUmV0dXJuTGFiZWxXaWRlMzIsIG1hY3JvIChkZWZpbmVXYXNt
Q2FsbFJldHVybkxhYmVsKSBkZWZpbmVXYXNtQ2FsbFJldHVybkxhYmVsKCkgZW5kKQorZW5kCisK
K21hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgY2FsbFR5cGUsIHN0b3Jl
V2FzbUluc3RhbmNlKQogICAgIGNhbGxXYXNtQ2FsbFNsb3dQYXRoKAogICAgICAgICBzbG93UGF0
aCwKICAgICAgICAgIyBjYWxsZWUgaXMgcjAgYW5kIHRhcmdldFdhc21JbnN0YW5jZSBpcyByMQpA
QCAtNzA1LDcgKzczOSwxNCBAQCBtYWNybyBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgc2xvd1Bh
dGgsCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQ
Q1NpemUsIHNwCi0gICAgICAgICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQdHJUYWcKKyAgICAgICAg
ICAgIGlmIEpJVF9DQUdFCisgICAgICAgICAgICAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAganVtcFRvV2FzbVRyYW1wb2xp
bmUob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lV2FzbUNhbGxS
ZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQorICAgICAgICAgICAgICAgIGVuZCkKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQdHJUYWcKKyAg
ICAgICAgICAgIGVuZAogCiAgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgd3MxCiAg
ICAgICAgICAgICBsb2FkaSBXYXNtOjpGdW5jdGlvbkNvZGVCbG9jazo6bV9udW1DYWxsZWVMb2Nh
bHNbd3MxXSwgd3MxCkBAIC03NTgsMTkgKzc5OSwxOSBAQCBtYWNybyBzbG93UGF0aEZvcldhc21D
YWxsKGN0eCwgc2xvd1BhdGgsCiBlbmQKIAogdW5wcmVmaXhlZFdhc21PcCh3YXNtX2NhbGwsIFdh
c21DYWxsLCBtYWNybyhjdHgpCi0gICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3Bh
dGhfd2FzbV9jYWxsLCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQorICAgIHNsb3dQYXRoRm9yV2Fz
bUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbCwgQ2FsbCwgc3RvcmVXYXNtSW5zdGFuY2VU
b1RMUykKIGVuZCkKIAogdW5wcmVmaXhlZFdhc21PcCh3YXNtX2NhbGxfbm9fdGxzLCBXYXNtQ2Fs
bE5vVGxzLCBtYWNybyhjdHgpCi0gICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3Bh
dGhfd2FzbV9jYWxsX25vX3RscywgbWFjcm8odGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5z
dGFuY2UsIHdhc21JbnN0YW5jZSBlbmQpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9z
bG93X3BhdGhfd2FzbV9jYWxsX25vX3RscywgQ2FsbE5vVExTLCBtYWNybyh0YXJnZXRJbnN0YW5j
ZSkgbW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNlIGVuZCkKIGVuZCkKIAogd2FzbU9w
KGNhbGxfaW5kaXJlY3QsIFdhc21DYWxsSW5kaXJlY3QsIG1hY3JvKGN0eCkKLSAgICBzbG93UGF0
aEZvcldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX2NhbGxfaW5kaXJlY3QsIHN0b3JlV2Fz
bUluc3RhbmNlVG9UTFMpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhf
d2FzbV9jYWxsX2luZGlyZWN0LCBDYWxsSW5kaXJlY3QsIHN0b3JlV2FzbUluc3RhbmNlVG9UTFMp
CiBlbmQpCiAKIHdhc21PcChjYWxsX2luZGlyZWN0X25vX3RscywgV2FzbUNhbGxJbmRpcmVjdE5v
VGxzLCBtYWNybyhjdHgpCi0gICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhf
d2FzbV9jYWxsX2luZGlyZWN0X25vX3RscywgbWFjcm8odGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFy
Z2V0SW5zdGFuY2UsIHdhc21JbnN0YW5jZSBlbmQpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChj
dHgsIF9zbG93X3BhdGhfd2FzbV9jYWxsX2luZGlyZWN0X25vX3RscywgQ2FsbEluZGlyZWN0Tm9U
TFMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFu
Y2UgZW5kKQogZW5kKQogCiB3YXNtT3AoY3VycmVudF9tZW1vcnksIFdhc21DdXJyZW50TWVtb3J5
LCBtYWNybyhjdHgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02
NC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02
NC5yYgkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtNjQucmIJKHdvcmtpbmcgY29weSkKQEAgLTM3LDIxICszNywyNCBAQCByZXF1aXJlICJy
aXNjIgogIwogIyBHUFIgY29udmVudGlvbnMsIHRvIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQ6CiAj
Ci0jICB4MCAgPT4gdDAsIGEwLCByMAotIyAgeDEgID0+IHQxLCBhMSwgcjEKLSMgIHgyICA9PiB0
MiwgYTIKLSMgIHgzICA9PiB0MywgYTMKLSMgIHg0ICA9PiB0NAotIyAgeDUgID0+IHQ1CisjICB4
MCAgPT4gdDAsIGEwLCB3YTAsIHIwCisjICB4MSAgPT4gdDEsIGExLCB3YTEsIHIxCisjICB4MiAg
PT4gdDIsIGEyLCB3YTIKKyMgIHgzICA9PiB0MywgYTMsIHdhMworIyAgeDQgID0+IHQ0LCBhNCwg
d2E0CisjICB4NSAgPT4gdDUsIGE1LCB3YTUKKyMgIHg2ICA9PiB0NiwgYTYsIHdhNgorIyAgeDcg
ID0+IHQ3LCBhNywgd2E3CiAjIHgxMyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKICMg
eDE2ICA9PiAgICAgICAgICAgICAgICAgIChzY3JhdGNoKQogIyB4MTcgID0+ICAgICAgICAgICAg
ICAgICAgKHNjcmF0Y2gpCisjIHgyNSAgPT4gICAgICAgICAgICAgbWV0YWRhdGFUYWJsZQogIyB4
MjYgID0+ICAgICAgICAgICAgIGNzcjAgKFBCKQogIyB4MjcgID0+ICAgICAgICAgICAgIGNzcjEg
KG51bWJlclRhZykKICMgeDI4ICA9PiAgICAgICAgICAgICBjc3IyIChub3RDZWxsTWFzaykKICMg
eDI5ICA9PiBjZnIKLSMgIHNwICA9PiBzcAogIyAgbHIgID0+IGxyCisjICBzcCAgPT4gc3AKICMK
ICMgRlBSIGNvbnZlbnRpb25zLCB0byBtYXRjaCB0aGUgYmFzZWxpbmUgSklUOgogIwpAQCAtMTI4
LDEzICsxMzEsMTMgQEAgY2xhc3MgUmVnaXN0ZXJJRAogICAgICAgICAgICAgYXJtNjRHUFJOYW1l
KCd4MicsIGtpbmQpCiAgICAgICAgIHdoZW4gJ3QzJywgJ2EzJywgJ3dhMycKICAgICAgICAgICAg
IGFybTY0R1BSTmFtZSgneDMnLCBraW5kKQotICAgICAgICB3aGVuICd0NCcsICd3YTQnCisgICAg
ICAgIHdoZW4gJ3Q0JywgJ2E0JywgJ3dhNCcKICAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDQn
LCBraW5kKQotICAgICAgICB3aGVuICd0NScsICd3YTUnCisgICAgICAgIHdoZW4gJ3Q1JywgJ2E1
JywgJ3dhNScKICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3g1Jywga2luZCkKLSAgICAgICAgd2hl
biAndDYnLCAnd2E2JworICAgICAgICB3aGVuICd0NicsICdhNicsICd3YTYnCiAgICAgICAgICAg
YXJtNjRHUFJOYW1lKCd4NicsIGtpbmQpCi0gICAgICAgIHdoZW4gJ3Q3JywgJ3dhNycKKyAgICAg
ICAgd2hlbiAndDcnLCAnYTcnLCAnd2E3JwogICAgICAgICAgIGFybTY0R1BSTmFtZSgneDcnLCBr
aW5kKQogICAgICAgICB3aGVuICd3czAnCiAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4OScsIGtp
bmQpCkBAIC04OTQsNyArODk3LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgd2hlbiAi
bW92ZSIKICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8KICAgICAgICAgICAg
ICAgICBlbWl0QVJNNjRNb3ZlSW1tZWRpYXRlKG9wZXJhbmRzWzBdLnZhbHVlLCBvcGVyYW5kc1sx
XSkKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzWzBdLmFybTY0
T3BlcmFuZCg6cXVhZCkgIT0gb3BlcmFuZHNbMV0uYXJtNjRPcGVyYW5kKDpxdWFkKQogICAgICAg
ICAgICAgICAgIGVtaXRBUk02NCgibW92Iiwgb3BlcmFuZHMsIDpxdWFkKQogICAgICAgICAgICAg
ZW5kCiAgICAgICAgIHdoZW4gIm1vdmVkIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXJtNjRlLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FybTY0ZS5yYgkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtNjRlLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw4
IEBACiAKIGNsYXNzIEFSTTY0RQogICAgICMgRklYTUU6IFRoaXMgaXMgZnJhZ2lsZSBhbmQgbmVl
ZHMgdG8gbWF0Y2ggdGhlIGVudW0gdmFsdWUgaW4gUHRyVGFnLmguCi0gICAgQ0Z1bmN0aW9uUHRy
VGFnID0gMgorICAgIE5vUHRyVGFnID0gMAorICAgIENGdW5jdGlvblB0clRhZyA9IDEKIGVuZAog
CiBjbGFzcyBTZXF1ZW5jZQpAQCAtNDUsNiArNDYsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAg
ICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA+IDEKICAgICAgICAgICAgICAgICAg
ICAgaWYgbm9kZS5vcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICAgICAg
ICAgICAgICB0YWcgPSByaXNjQXNSZWdpc3RlcihuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBu
b2RlLm9wZXJhbmRzWzFdLCAicCIsIGZhbHNlKQorICAgICAgICAgICAgICAgICAgICBlbHNpZiBu
b2RlLm9wZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgbm9kZS5vcGVyYW5kc1sxXS52YWx1
ZSA9PSBBUk02NEU6Ok5vUHRyVGFnCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2UsIG5ld0xpc3QKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgdGFnID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQogICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9k
ZS5vcGVyYW5kc1sxXSwgdGFnXSwgYW5ub3RhdGlvbikKQEAgLTgzLDcgKzg2LDcgQEAgY2xhc3Mg
SW5zdHJ1Y3Rpb24KICAgICAgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoImJscmFiIiwg
b3BlcmFuZHMsIDpwdHIpCiAgICAgICAgICAgICBlbmQKICAgICAgICAgd2hlbiAiam1wIgotICAg
ICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDEgb3Igb3BlcmFuZHNbMF0ubGFiZWw/CiAgICAgICAgICAgICAgICAgbG93ZXJBUk02
NAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBlZCgi
YnJhYiIsIG9wZXJhbmRzLCA6cHRyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw4ICs1MCw4IEBAIGNvbnN0IENsYXNzSW5mbyBBcnJheUNvbnN0cnVjdG9y
OjpzX2luZm8KIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxBcnJheUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBBcnJheUNvbnN0cnVjdG9yOjpB
cnJheUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxBcnJheUNvbnN0cnVjdG9yLCBjb25zdHJ1
Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcikKQEAgLTk0LDEzICs5NCwxMyBAQCBzdGF0aWMgaW5saW5l
IEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0CiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGds
b2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIp
LCBhcmdzLCBuZXdUYXJnZXQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFt
ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVp
cmsoZ2xvYmFsT2JqZWN0LCBhcmdzLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBBcmdMaXN0IGFy
Z3MoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5
V2l0aFNpemVRdWlyayhnbG9iYWxPYmplY3QsIGFyZ3MsIEpTVmFsdWUoKSkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiwxMyArMzYsMTYgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KAogCiBjb25zdCBDbGFzc0luZm8gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJBc3luY0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpIH07CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhcmdzLCBG
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFyZ3MsIEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMTMgKzM2LDE2IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNU
SUJMRSgKIAogY29uc3QgQ2xhc3NJbmZvIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEFz
eW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBc3luY0dlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgQXJnTGlzdCBhcmdzKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luY0dlbmVyYXRvcikpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBBcmdMaXN0IGFyZ3MoY2FsbEZy
YW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5j
R2VuZXJhdG9yKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDggKzM3LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1Vp
bnROKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApAQCAtNTcsNyArNTcsNyBAQCBjb25zdCBD
bGFzc0luZm8gQmlnSW50Q29uc3RydWN0b3I6OnNfaW5mCiBAZW5kCiAqLwogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJp
Z0ludENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEJpZ0ludENv
bnN0cnVjdG9yOjpCaWdJbnRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsQmlnSW50Q29uc3Ry
dWN0b3IsIG51bGxwdHIpCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IHRvQmlnSW50KEpTR2xvYmFsTwogICAgIH0pKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsOSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50UHJvdG9G
dW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGJpZ0ludFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1ZhbHVlT2Yo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE0ICszMSwxNyBAQCBTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoCiAKIGNvbnN0IENsYXNzSW5mbyBCb29sZWFu
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShCb29sZWFuQ29uc3RydWN0b3IpIH07CiAK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJvb2xlYW5Db25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RXaXRoQm9vbGVhbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CisKIC8vIEVDTUEgMTUuNi4xCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsQm9vbGVhbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQm9v
bGVhbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCkpKTsKIH0KIAogLy8gRUNN
QSAxNS42LjIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdp
dGhCb29sZWFuQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdp
dGhCb29sZWFuQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVu
Y1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJv
dG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc0OSw3ICs3NDksNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQogICAg
IAogICAgIGRvdWJsZSBhID0gV1RGOjpnZXQ8ZG91YmxlPihsZWZ0TnVtZXJpYyk7CiAgICAgZG91
YmxlIGIgPSBXVEY6OmdldDxkb3VibGU+KHJpZ2h0TnVtZXJpYyk7Ci0gICAgUkVUVVJOKGpzTnVt
YmVyKGpzTW9kKGEsIGIpKSk7CisgICAgUkVUVVJOKGpzTnVtYmVyKG9wZXJhdGlvbk1vZChhLCBi
KSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG93KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDI1
NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNyArMjA1LDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jcmVhdGVfYwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVh
dGVfYXJndW1lbnRzX2J1dHRlcmZseSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZW50ZXIpOwot
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfY2FsbGVlKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfdG9fdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3Rocm93X3Rkel9lcnJvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NoZWNrX3Rkeik7CkBAIC0yNDEsNyArMjQwLDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9iaXRhbmQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9iaXRvcik7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2JpdHhvcik7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3R5cGVvZik7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2lzX29iamVjdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lzX29iamVj
dF9vcl9udWxsKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaXNfZnVuY3Rpb24p
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CkBAIC0yNjQsNyAr
MjYyLDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF91bnJlYWNoYQogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwotU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9pc192YXJfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9wcm9taXNlKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2dlbmVyYXRvcik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcAkocmV2aXNpb24g
MjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDMyICs0OCwzMiBAQCBzdGF0aWMgU3RyaW5nIHZhbHVl
T3JEZWZhdWx0TGFiZWxTdHJpbmcoCiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShDb25zb2xlT2JqZWN0KTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc29sZVByb3RvRnVuY0RlYnVnKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJy
b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNMb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNJbmZvKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jV2FybihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY0NsZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRGlyKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
b2xlUHJvdG9GdW5jRGlyWE1MKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFibGUoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNUcmFjZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2Vy
dChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jQ291bnRSZXNldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFr
ZUhlYXBTbmFwc2hvdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNUaW1lTG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUVuZChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVTdGFtcChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3Rv
RnVuY0dyb3VwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cEVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Jl
Y29yZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZEVuZChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29s
ZVByb3RvRnVuY1NjcmVlbnNob3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RlYnVnKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNFcnJvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNJ
bmZvKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNXYXJuKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zb2xlUHJvdG9GdW5jRGlyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY1RhYmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUcmFjZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
QXNzZXJ0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnRS
ZXNldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmls
ZUVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGFrZUhlYXBTbmFwc2hvdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9G
dW5jVGltZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUxvZyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGlt
ZUVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZVN0YW1wKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91
cChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBDb2xsYXBzZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dy
b3VwRW5kKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29y
ZEVuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jU2NyZWVuc2hvdChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gQ29uc29sZU9iamVjdDo6c19pbmZvID0geyAiQ29u
c29sZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoQ29uc29sZU9iamVjdCkgfTsKIApAQCAtMTM2LDMyICsxMzYsMzIgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIGNvbnNvbGVMb2dXaXRoTGV2ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNEZWJ1ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY0RlYnVnKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCBNZXNzYWdlTGV2ZWw6OkRlYnVnKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgcmV0dXJuIGNvbnNvbGVMb2dXaXRoTGV2
ZWwoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBjb25z
b2xlTG9nV2l0aExldmVsKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBNZXNzYWdlTGV2ZWw6Okxv
Zyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90
b0Z1bmNJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jSW5mbyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICByZXR1cm4gY29uc29sZUxvZ1dpdGhMZXZlbChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgTWVz
c2FnZUxldmVsOjpJbmZvKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY1dhcm4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNXYXJuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIHJldHVybiBjb25zb2xlTG9nV2l0aExldmVsKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ2xlYXIoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc29sZVByb3RvRnVuY0NsZWFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSopCiB7CiAgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25z
b2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNEaXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5j
b25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCkBAIC0xODEsNyArMTgxLDcgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNEaXJYTUwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQ29uc29sZUNsaWVudCogY2xpZW50ID0gZ2xvYmFs
T2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCkBAIC0xOTEsNyArMTkx
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUYWJsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9
IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQpAQCAtMjAx
LDcgKzIwMSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUcmFjZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBDb25zb2xlQ2xpZW50KiBj
bGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkK
QEAgLTIxMSw3ICsyMTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Fzc2VydChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
Q291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwogICAg
IGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgpOwpAQCAtMjQzLDcg
KzI0Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jQ291bnRSZXNldChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBhdXRvKiBj
bGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKQEAgLTI1Nyw3ICsyNTcsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1Byb2ZpbGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNzgs
NyArMjc4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQcm9maWxlRW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZUVuZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
VGFrZUhlYXBTbmFwc2hvdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y1Rha2VIZWFwU25hcHNob3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTMyMCw3ICszMjAsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnNvbGVQcm90b0Z1bmNUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgYXV0byogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5j
b25zb2xlQ2xpZW50KCk7CkBAIC0zMzQsNyArMzM0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29ucwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQ
cm90b0Z1bmNUaW1lTG9nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5j
VGltZUxvZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3Qt
PnZtKCkpOwogICAgIGF1dG8qIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29uc29sZUNsaWVudCgp
OwpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUVu
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVFbmQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBh
dXRvKiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKQEAgLTM2Miw3ICsz
NjIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVTdGFtcChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1RpbWVTdGFtcChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBDb25zb2xlQ2xpZW50
KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVu
dCkKQEAgLTM3Miw3ICszNzIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3Vw
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQ29uc29s
ZUNsaWVudCogY2xpZW50ID0gZ2xvYmFsT2JqZWN0LT5jb25zb2xlQ2xpZW50KCk7CiAgICAgaWYg
KCFjbGllbnQpCkBAIC0zODIsNyArMzgyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29ucwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNHcm91cENvbGxhcHNlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVu
Y0dyb3VwQ29sbGFwc2VkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+
Y29uc29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQpAQCAtMzkyLDcgKzM5Miw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cEVuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBDb25zb2xlQ2xpZW50KiBjbGllbnQgPSBn
bG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkKQEAgLTQwMiw3
ICs0MDIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBDb25zb2xlQ2xpZW50KiBj
bGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAgICBpZiAoIWNsaWVudCkK
QEAgLTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZEVu
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1JlY29yZEVuZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBD
b25zb2xlQ2xpZW50KiBjbGllbnQgPSBnbG9iYWxPYmplY3QtPmNvbnNvbGVDbGllbnQoKTsKICAg
ICBpZiAoIWNsaWVudCkKQEAgLTQyMiw3ICs0MjIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY1NjcmVlbnNob3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1
bmNTY3JlZW5zaG90KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIENvbnNvbGVDbGllbnQqIGNsaWVudCA9IGdsb2JhbE9iamVjdC0+Y29u
c29sZUNsaWVudCgpOwogICAgIGlmICghY2xpZW50KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNTc5Mjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBAIGNvbnN0IENsYXNzSW5mbyBEYXRlQ29uc3Ry
dWN0b3I6OnNfaW5mbyAKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KERhdGVDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxEYXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxE
YXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogRGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwg
Y2FsbERhdGUsIGNvbnN0cnVjdFdpdGhEYXRlQ29uc3RydWN0b3IpCkBAIC0xNDksMTQgKzE0OSwx
NCBAQCBKU09iamVjdCogY29uc3RydWN0RGF0ZShKU0dsb2JhbE9iamVjdCogCiAgICAgcmV0dXJu
IERhdGVJbnN0YW5jZTo6Y3JlYXRlKHZtLCBkYXRlU3RydWN0dXJlLCB2YWx1ZSk7CiB9CiAgICAg
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0ZUNv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29uc3RydWN0RGF0ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCks
IGFyZ3MpKTsKIH0KIAogLy8gRUNNQSAxNS45LjIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxEYXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIEdyZWdvcmlhbkRhdGVUaW1lIHRzOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1
NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJ
VklBTExZX0RFU1RSVUNUSUJMRSgKIAogY29uc3QgQ2xhc3NJbmZvIEVycm9yQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShFcnJvckNvbnN0cnVjdG9yKSB9OwogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0RXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RFcnJvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEVycm9y
Q29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEVycm9yQ29uc3Ry
dWN0b3IsIGNvbnN0cnVjdEVycm9yQ29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTc5Mjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBTVEFUSUNfQVNT
RVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoRXJyb3JQcm90b3R5cGVCYXNlKTsKIFNUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShFcnJvclByb3RvdHlwZSk7CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsMTQgKzM4LDE3IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJM
RSgKIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0V2l0aEZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0
aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBB
cmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhcmdzLCBGdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGU6OkZ1bmN0aW9uLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpKSk7CiB9CiAKIC8v
IEVDTUEgMTUuMy4xIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvciBDYWxsZWQgYXMgYSBGdW5jdGlv
bgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9uQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvbkNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29u
c3RydWN0RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFyZ3MpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAgKzM3LDExIEBAIFNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIAogY29uc3QgQ2xhc3NJbmZv
IEZ1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25Qcm90b3R5cGUp
IH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9G
dW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEZ1bmN0aW9uUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
VG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogLy8gRUNNQSAxNS4zLjQK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxGdW5jdGlvblByb3RvdHlw
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxGdW5jdGlvblByb3RvdHlwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiB7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsMTMgKzM2LDE2IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRSgKIAogY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIEFyZ0xp
c3QgYXJncyhjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
RnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZTo6R2VuZXJhdG9yKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgQXJn
TGlzdCBhcmdzKGNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3RGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXJncywgRnVuY3Rpb25Db25zdHJ1
Y3Rpb25Nb2RlOjpHZW5lcmF0b3IsIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAj
aW5jbHVkZSAiSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIkpJVERlc3RpbmF0aW9uV2hpdGVsaXN0
LmgiCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5j
bHVkZSAiSlNEYXRlTWF0aC5oIgpAQCAtODIsNiArODMsMTAgQEAgdm9pZCBpbml0aWFsaXplVGhy
ZWFkaW5nKCkKICAgICAgICAgICAgIGVuYWJsZVNpZ2lsbENyYXNoQW5hbHl6ZXIoKTsKIAogICAg
ICAgICBMTEludDo6aW5pdGlhbGl6ZSgpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAg
aWYgKFZNOjpjYW5Vc2VKSVQoKSkKKyAgICAgICAgICAgIHBvcHVsYXRlSklUV2hpdGVsaXN0KCk7
CisjZW5kaWYKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIERpc2FsbG93R0M6OmluaXRpYWxpemUo
KTsKICAgICAgICAgRGlzYWxsb3dWTVJlZW50cnk6OmluaXRpYWxpemUoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCShy
ZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTIgQEAgSW50ZXJuYWxG
dW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihWTSYgdgogewogICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UobV9mdW5jdGlvbkZvckNhbGwsICJbW0NhbGxdXSBtdXN0IGJlIGltcGxlbWVudGVkIik7CiAg
ICAgQVNTRVJUKG1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3QpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICBpZiAodm0uY2FuVXNlSklUKCkpIHsKKyAgICAgICAgbV9mdW5jdGlvbkZvckNhbGxUcmFt
cG9saW5lID0gVGFnZ2VkTmF0aXZlRnVuY3Rpb24odm0ubmF0aXZlVHJhbXBvbGluZUZvcihtX2Z1
bmN0aW9uRm9yQ2FsbCkuZXhlY3V0YWJsZUFkZHJlc3M8aW50cHRyX3Q+KCkpOworICAgICAgICBt
X2Z1bmN0aW9uRm9yQ29uc3RydWN0VHJhbXBvbGluZSA9ICBUYWdnZWROYXRpdmVGdW5jdGlvbih2
bS5uYXRpdmVUcmFtcG9saW5lRm9yKG1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3QpLmV4ZWN1dGFibGVB
ZGRyZXNzPGludHB0cl90PigpKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBJbnRlcm5hbEZ1
bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IFN0cmluZyYgbmFtZSwgTmFtZUFk
ZGl0aW9uTW9kZSBuYW1lQWRkaXRpb25Nb2RlKQpAQCAtMTQ3LDUgKzE1Myw0IEBAIFN0cnVjdHVy
ZSogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2wKICAgICByZXR1cm4gYmFzZUNsYXNzOwog
fQogCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGJhc2VDYWxs
ZWUsIEpTVmFsdWUgbmV3VGFyZ2V0LCBTdHJ1Y3R1cmUqKTsKIAorI2lmIDAKICAgICBUYWdnZWRO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbkZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCiAgICAgewogICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKQEAgLTY2LDEzICs2
NywyMSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qp
OwogICAgICAgICByZXR1cm4gbV9mdW5jdGlvbkZvckNvbnN0cnVjdDsKICAgICB9CisjZW5kaWYK
IAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAg
ICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEludGVybmFsRnVuY3Rpb24sIG1fZnVuY3Rpb25Gb3JDYWxsVHJhbXBvbGluZSk7Cisg
ICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEludGVybmFsRnVuY3Rpb24sIG1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3RU
cmFtcG9saW5lKTsKKyNlbHNlCiAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKQogICAg
ICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnRlcm5hbEZ1bmN0aW9uLCBtX2Z1bmN0
aW9uRm9yQ2FsbCk7CiAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwog
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEludGVybmFsRnVuY3Rpb24sIG1fZnVuY3Rp
b25Gb3JDb25zdHJ1Y3QpOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkdsb2JhbE9iamVjdCgpCkBAIC05NSw2ICsxMDQsMTAgQEAgcHJvdGVjdGVkOgogCiAg
ICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9mdW5jdGlvbkZvckNhbGw7CiAgICAgVGFnZ2VkTmF0
aXZlRnVuY3Rpb24gbV9mdW5jdGlvbkZvckNvbnN0cnVjdDsKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9mdW5jdGlvbkZvckNhbGxUcmFtcG9saW5lOwor
ICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb25Gb3JDb25zdHJ1Y3RUcmFtcG9saW5l
OworI2VuZGlmCiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX29yaWdpbmFsTmFtZTsKICAg
ICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKEludGxDb2xsYXRvckNvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3Vw
cG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvckNvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExv
Y2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTQ5LDggKzQ5
LDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxD
b2xsYXRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsQ29sbGF0
b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
RnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmY29sbGF0b3JDb25zdHJ1Y3Rv
clRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxDb2xsYXRvckNvbnN0cnVj
dG9yKSB9OwogCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6
OmZpbmlzaENyZWEKICAgICBjb2xsYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxDb2xsYXRvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bENvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29ucwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3IpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSW50bENvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEwLjEuMiBJbnRsLkNvbGxhdG9y
IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYgTmV3
VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0aXZlIGZ1bmN0aW9u
IG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxh
dG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVH
ZXR0ZXJDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bENvbGxhdG9yRnVuY0NvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IAogfQogCkBAIC03OCw3ICs3OSw3IEBAIHZvaWQgSW50bENvbGxhdG9yUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIk9iamVjdCJf
cyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xs
YXRvckZ1bmNDb21wYXJlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JGdW5j
Q29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IpOwogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1
bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5j
U3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApA
QCAtNjksOCArNjksOCBAQCBTdHJ1Y3R1cmUqIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
CiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEYXRl
VGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJ
bnRsRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsSW50bERhdGVUaW1l
Rm9ybWF0LCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQpCkBAIC04NSw3ICs4NSw3IEBAIHZv
aWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmkKICAgICBkYXRlVGltZUZvcm1h
dFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDQsNyAr
MTA0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSW50bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIC8vIDEyLjEuMiBJbnRsLkRh
dGVUaW1lRm9ybWF0IChbbG9jYWxlcyBbLCBvcHRpb25zXV0pIChFQ01BLTQwMiAyLjApCiAgICAg
Ly8gMS4gSWYgTmV3VGFyZ2V0IGlzIHVuZGVmaW5lZCwgbGV0IG5ld1RhcmdldCBiZSB0aGUgYWN0
aXZlIGZ1bmN0aW9uIG9iamVjdCwgZWxzZSBsZXQgbmV3VGFyZ2V0IGJlIE5ld1RhcmdldC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGVHZXR0ZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1l
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogI2lmIEpTQ19JQ1VfSEFTX1VGSUVMRFBPU0lURVIKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRU
b1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjZW5kaWYKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNS
ZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTkyLDcgKzkz
LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaAogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5
bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCAiT2JqZWN0Il9zKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1h
dERhdGVUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5j
Rm9ybWF0RGF0ZVRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NyArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvckZ1bmNT
dXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBv
cnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTY5
LDggKzY5LDggQEAgU3RydWN0dXJlKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OgogICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpJbnRsTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFs
RnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEludGxOdW1iZXJGb3JtYXQsIGNvbnN0cnVjdElu
dGxOdW1iZXJGb3JtYXQpCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yOjpmaW5pc2gKICAgICBudW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVy
Rm9ybWF0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbElu
dGxOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIC8vIDExLjEuMiBJbnRsLk51bWJlckZvcm1hdCAoW2xvY2FsZXMgWywgb3B0aW9uc11d
KSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIElmIE5ld1RhcmdldCBpcyB1bmRlZmluZWQsIGxl
dCBuZXdUYXJnZXQgYmUgdGhlIGFjdGl2ZSBmdW5jdGlvbiBvYmplY3QsIGVsc2UgbGV0IG5ld1Rh
cmdldCBiZSBOZXdUYXJnZXQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwxMiBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAjaWYgSEFWRShJ
Q1VfRk9STUFUX0RPVUJMRV9GT1JfRklFTERTKQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogI2VuZGlmCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0
RnVuY0Zvcm1hdE51bWJlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAg
LTg5LDcgKzkwLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpmaW5pc2hDcgog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0
cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCAiT2JqZWN0Il9zKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdEZ1
bmNGb3JtYXROdW1iZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRG
dW5jRm9ybWF0TnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJ
VklBTExZX0RFU1RSVUNUSUJMRShJbnRsT2JqZWN0KTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgaW50bE9iamVjdEZ1bmNHZXRDYW5vbmljYWxMb2NhbGVzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGludGxP
YmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwogCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiB2bSwgSlNP
YmplY3QqIG9iamVjdCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9u
IDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
c0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTY4LDggKzY4LDggQEAgU3RydWN0dXJl
KiBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcjo6YwogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rp
b25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEludGxQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bFBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxQ
bHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBJbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3Rvcjo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2Fs
bEludGxQbHVyYWxSdWxlcywgY29uc3RydWN0SW50bFBsdXJhbFJ1bGVzKQpAQCAtODQsNyArODQs
NyBAQCB2b2lkIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpmaW5pc2hDCiAgICAgcGx1cmFs
UnVsZXNQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEludGxQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTAxLDcgKzEw
MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SW50bFBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSop
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBs
dXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5j
U2VsZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5QnVmZmVyRnVuY0lzVmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFycmF5QnVmZmVyKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5QnVmZmVyRnVuY0lzVmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogdGVtcGxhdGU8PgogY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXJD
b25zdHJ1Y3Rvcjo6c19pbmZvID0gewpAQCAtMTE5LDcgKzExOSw3IEBAIGNvbnN0IENsYXNzSW5m
byogSlNHZW5lcmljQXJyYXlCdWZmZXJDb24KICAgICByZXR1cm4gJkpTR2VuZXJpY0FycmF5QnVm
ZmVyQ29uc3RydWN0b3I8c2hhcmluZ01vZGU+OjpzX2luZm87CiB9CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
QXJyYXlCdWZmZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI1Nzky
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIGNsYXNzIEdldHRlclNldHRl
cjsKIAogdGVtcGxhdGU8QXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZT4KIGNsYXNz
IEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CisgICAgZnJpZW5kIHZvaWQgcG9wdWxhdGVKSVRXaGl0ZWxpc3QoKTsKKwogcHVi
bGljOgogICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5j
Qnl0ZUxlbmd0aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzaGFyZWRBcnJheUJ1ZmZlclByb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC02Niw3
ICs3MCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmEKIH0KIAog
Ly8gaHR0cDovL3RjMzkuZ2l0aHViLmlvL2VjbWFzY3JpcHRfc2hhcmVkbWVtL3NobWVtLmh0bWwj
c2VjLWdldC1hcnJheWJ1ZmZlci5wcm90b3R5cGUuYnl0ZWxlbmd0aAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3Ro
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvR2V0dGVyRnVuY0J5dGVM
ZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTg0LDcgKzg4LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYQogfQogCiAvLyBodHRwOi8vdGMzOS5naXRodWIuaW8v
ZWNtYXNjcmlwdF9zaGFyZWRtZW0vc2htZW0uaHRtbCNTdHJ1Y3R1cmVkRGF0YS5TaGFyZWRBcnJh
eUJ1ZmZlci5wcm90b3R5cGUuZ2V0X2J5dGVMZW5ndGgKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHNoYXJlZEFycmF5QnVmZmVyUHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNC
eXRlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDIyICsyNSwz
MSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkpJVERlc3RpbmF0aW9uV2hpdGVsaXN0
LmgiCiAjaW5jbHVkZSAiT3B0aW9uc0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEV4ZWN1dGFibGVBbGxvY2F0b3I7CiBj
bGFzcyBGaXhlZFZNUG9vbEV4ZWN1dGFibGVBbGxvY2F0b3I7CiBjbGFzcyBWTTsKIAorI2lmIEVO
QUJMRShKSVRfQ0FHRSkKKyNlbmRpZgorCiAjaWYgQ1BVKEFSTTY0KSB8fCBQTEFURk9STShXQVRD
SE9TKQogY29uc3RleHByIHNpemVfdCBQYWdlU2l6ZSA9IDE2ICogS0I7CiAjZWxzZQogY29uc3Rl
eHByIHNpemVfdCBQYWdlU2l6ZSA9IDQgKiBLQjsKICNlbmRpZgogCisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorY29uc3RleHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0ID0gUGFnZVNpemUgKyBX
aGl0ZWxpc3RUYWJsZVNpemUgKiBzaXplb2Yodm9pZCopOworI2Vsc2UKIGNvbnN0ZXhwciBzaXpl
X3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IFBhZ2VTaXplOworI2VuZGlmCiAKICNpZiBFTkFCTEUo
U0VQQVJBVEVEX1dYX0hFQVApCiB1c2luZyBKSVRXcml0ZVNlcGFyYXRlSGVhcHNGdW5jdGlvbiA9
IHZvaWQgKCopKG9mZl90LCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKQEAgLTgxLDcgKzkwLDkgQEAg
c3RydWN0IENvbmZpZyB7CiAgICAgICAgICAgICBKSVRXcml0ZVNlcGFyYXRlSGVhcHNGdW5jdGlv
biBqaXRXcml0ZVNlcGFyYXRlSGVhcHM7CiAgICAgICAgICAgICBib29sIHVzZUZhc3RQZXJtaXNp
b25zSklUQ29weTsKICNlbmRpZgotCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAg
SklURGVzdGluYXRpb25XaGl0ZWxpc3Qgaml0V2hpdGVsaXN0OworI2VuZGlmCiAgICAgICAgICAg
ICBPcHRpb25zU3RvcmFnZSBvcHRpb25zOwogCiAgICAgICAgICAgICB2b2lkICgqc2hlbGxUaW1l
b3V0Q2hlY2tDYWxsYmFjaykoVk0mKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgJKHJl
dmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIEN1c3RvbUdldHRlclNldHRlcjsKIAogY2xhc3MgSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBm
cmllbmQgdm9pZCBwb3B1bGF0ZUpJVFdoaXRlbGlzdCgpOworCiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBKU0Z1bmN0aW9uIEJhc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBj
bGFzcyBKU0Z1bmN0aW9uIDogcHVibGljIEpTQ2FsbGVlIHsKICAgICBmcmllbmQgY2xhc3MgREZH
OjpKSVRDb21waWxlcjsKICAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgZnJpZW5kIGNsYXNzIElu
dGVybmFsRnVuY3Rpb247CisgICAgZnJpZW5kIHZvaWQgcG9wdWxhdGVKSVRXaGl0ZWxpc3QoKTsK
IAogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHJhcmVEYXRhVGFnID0g
MHgxOwpAQCAtMjE4LDggKzIxOSw4IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50
c0dldHRlcihKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwot
ICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcmd1bWVudHNHZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKKyAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsZXJHZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKTsKIAogICAgIHVpbnRwdHJfdCBtX2V4ZWN1dGFibGVPclJhcmVEYXRhOwogfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI1NzkyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTQgKzMxLDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBjbGFzcyBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
eworICAgIGZyaWVuZCB2b2lkIHBvcHVsYXRlSklUV2hpdGVsaXN0KCk7CisKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKIAotcHJvdGVjdGVkOgotICAgIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogcHJvdG90eXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZ1bmN0aW9uRXhlY3V0YWJsZSogcHJpdmF0ZUFsbG9jYXRv
cik7Ci0KLXB1YmxpYzoKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvciogY3JlYXRlKAogICAgICAgICBWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
SlNPYmplY3QqIHByb3RvdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIHByaXZhdGVBbGxvY2F0b3IpOwogCkBAIC00OCw2ICs0NSwxMyBAQCBwdWJsaWM6CiAgICAg
SUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisKK3By
b3RlY3RlZDoKKyAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yKFZNJiwgU3Ry
dWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqIHByb3RvdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIHByaXZhdGVBbGxvY2F0b3IpOworCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDE0ICszOCwxNCBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxWaWV3Q2xhc3M+OjpKU0dlbmVyaWNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUsIGNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXc8Vmlld0NsYXNzPiwgY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3PFZpZXdDbGFzcz4pCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUsIGNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcsIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5VmlldykKIHsKIH0KIApAQCAtMjA2LDcgKzIwNiw3IEBAIGlubGluZSBKU09iamVjdCogY29u
c3RydWN0R2VuZXJpY1R5cGVkQXIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3I8Vmlld0NsYXNzPjo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC0yNTEsNyArMjUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RHZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8Vmlld0NsYXNz
Pjo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgJKHJldmlzaW9uIDI1NzkyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbmxp
bmUgdW5zaWduZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNTZXQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29w
eVdpdGhpbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Q29weVdpdGhpbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIApAQCAtMTgwLDcgKzE4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2Vu
ZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQorRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIy
NSw3ICsyMjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpT
VmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjYyLDcgKzI2Miw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCkBAIC0zMDEsNyArMzAxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0xhc3RJbmRleE9mKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNMYXN0SW5kZXhPZihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIApAQCAtMzUxLDcgKzM1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRl
ckZ1bmNCdWZmZXIoVk0mLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY0J1ZmZlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIC8vIDIyLjIuMy4zCiAgICAgVmlld0NsYXNzKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwpAQCAtMzYw
LDcgKzM2MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoVk0mLCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyAyMi4yLjMuMTcKICAgICBWaWV3Q2xh
c3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CkBAIC0zNjksNyArMzY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVM
ZW5ndGgoVk0mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2Rl
ZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMjIu
Mi4zLjIKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CkBAIC0zNzgsNyArMzc4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xh
c3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQoVk0mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0
ZXJGdW5jQnl0ZU9mZnNldChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCiB7CiAgICAgLy8gMjIuMi4zLjMKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8Vmlld0NsYXNzKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CkBAIC0zODcsNyArMzg3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKIC8vICAgIFZNJiB2bSA9IGdl
dFZNKGdsb2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwpAQCAtNDA0LDcgKzQwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2Vu
ZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K0VuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogLy8gICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00MjAsNyArNDIwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvRnVuY1NsaWNlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTbGljZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIApAQCAtNTA5LDcgKzUwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFy
cmF5Q3JlYXRlKFZNJnZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVG
dW5jU3ViYXJyYXlDcmVhdGUoVk0mdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiAr
MjQwLDEzIEBAIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUoQ0hFQ0tfRkVBVFUKIEZPUl9F
QUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENIRUNLX0ZFQVRVUkVfRkxBR19UWVBF
KQogRk9SX0VBQ0hfTEFaWV9CVUlMVElOX1RZUEUoQ0hFQ0tfRkVBVFVSRV9GTEFHX1RZUEUpCiAK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUJvdW5kRnVuY3Rpb24oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzT3du
TGVuZ3RoUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyNpZiBBU1NFUlRf
RU5BQkxFRAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CisjZW5kaWYKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZW5xdWV1ZUpvYihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiBzdGF0aWMgSlNW
YWx1ZSBjcmVhdGVQcm94eVByb3BlcnR5KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0
KTsKQEAgLTI3MCw3ICsyNzcsNyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVDb25zb2xlUHJvcGVy
dHkoVk0mCiAgICAgcmV0dXJuIENvbnNvbGVPYmplY3Q6OmNyZWF0ZSh2bSwgZ2xvYmFsLCBDb25z
b2xlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbCwgY29uc3RydWN0RW1wdHlPYmpl
Y3QoZ2xvYmFsKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YWtlQm91bmRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZUJvdW5kRnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI4Nyw3ICsyOTQsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
dGFyZ2V0LCBib3VuZFRoaXMsIGJvdW5kQXJncy5pc0NlbGwoKSA/IGpzQ2FzdDxKU0ltbXV0YWJs
ZUJ1dHRlcmZseSo+KGJvdW5kQXJncykgOiBudWxscHRyLCBsZW5ndGgsIG5hbWVTdHJpbmcpKSk7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFBy
b3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNPd25MZW5ndGhQcm9wZXJ0eShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtMzA2LDcgKzMxMyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGhhc08KIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhc3NlcnRDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNC
b29sZWFuKCkpOwogICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmFzQm9vbGVhbigpKQpA
QCAtNDA2LDcgKzQxMyw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFs
T2IKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVucXVl
dWVKb2IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVucXVldWVKb2IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDE0ICs0OSwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUGFyc2VNb2R1bGUoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVs
ZUxvYWRlclJlcXVlc3RlZE1vZHVsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlckV2YWx1YXRlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJlc29sdmVTeW5j
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyR2V0TW9k
dWxlTmFtZXNwYWNlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlclJlcXVlc3RlZE1vZHVsZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9h
ZGVyTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclJlc29sdmUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyUmVzb2x2ZVN5bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxl
TG9hZGVyR2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVT
dGRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8g
SlNOYXRpdmVTdGRGdW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTmF0aXZlU3RkRnVuY3Rp
b24pIH07CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcnVuU3RkRnVuY3Rpb24oSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEpTTmF0aXZlU3RkRnVuY3Rpb246OkpTTmF0aXZl
U3RkRnVuY3Rpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTmF0aXZlU3RkRnVu
Y3Rpb24mJiBmdW5jdGlvbikKICAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKQogICAgICwgbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKQEAgLTU1
LDcgKzU2LDcgQEAgdm9pZCBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbgogICAg
IEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
dW5TdGRGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxK
U05hdGl2ZVN0ZEZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKICAgICBBU1NFUlQo
ZnVuY3Rpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNTc5
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RU
eXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I6OkpTVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlLCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldywgY29uc3RydWN0VHlwZWRB
cnJheVZpZXcpCkBAIC02MywxMyArNjMsMTMgQEAgU3RydWN0dXJlKiBKU1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3I6OgogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiB9CiAKLQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBl
ZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIiVUeXBlZEFycmF5JSBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSJf
cyk7CiB9CiAKK3RlbXBsYXRlIGNsYXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3I8SlNJbnQ4QXJyYXk+OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYs
NiArNjYsMjIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiB9IHdoaWxlIChmYWxzZSkKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1ZhbHVlcyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5UHJvdG9WaWV3
RnVuY0VudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNLZXlzKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0
eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
TGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJvdG9GdW5jSm9pbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZl
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1
bmNCeXRlT2Zmc2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9T
dHJpbmdUYWcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CkBAIC0xMTIs
MTcgKzEyOCwxNyBAQCBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY3JlYXRlVHlwZWRBcnJheUl0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmplY3QsIGpzTnVtYmVy
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jVmFsdWVzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBj
cmVhdGVUeXBlZEFycmF5SXRlcmF0b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIEl0
ZXJhdGlvbktpbmQ6OlZhbHVlcyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlQcm90b1ZpZXdGdW5jRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgdHlwZWRBcnJheVByb3RvVmlld0Z1bmNFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBjcmVhdGVUeXBl
ZEFycmF5SXRlcmF0b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIEl0ZXJhdGlvbktp
bmQ6OkVudHJpZXMpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0
eXBlZEFycmF5Vmlld1Byb3RvRnVuY0tleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICByZXR1cm4gY3JlYXRlVHlwZWRBcnJheUl0ZXJhdG9y
T2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5kOjpLZXlzKTsKIH0K
QEAgLTEzNiw3ICsxNTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWCiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVy
aWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpAQCAtMTQ3LDcgKzE2Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGUKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKQEAgLTE1OCw3ICsxNzQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB0eXBlCiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBF
X0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4pOwogfQog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luY2x1ZGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luY2x1ZGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNjksNyArMTg1LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZQogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJ
bmNsdWRlcyk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTE4
MCw3ICsxOTYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlCiAg
ICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTE5MSw3ICsyMDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlCiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtMjAyLDcgKzIxOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHR5cGUKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVf
RlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbik7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJG
dW5jQnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY0J1ZmZlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjEzLDcgKzIyOSw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGUKICAgICBDQUxMX0dFTkVSSUNfVFlQ
RURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0
ZXJGdW5jQnVmZmVyKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CkBAIC0yMjQsNyArMjQwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
dHlwZQogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgpOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5
dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0
ZXJGdW5jQnl0ZUxlbmd0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjM1LDcgKzI1MSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGUKICAgICBDQUxMX0dFTkVSSUNf
VFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9H
ZXR0ZXJGdW5jQnl0ZUxlbmd0aCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC0yNDYsNyArMjYyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZQogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQ
RV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNSZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmll
d1Byb3RvRnVuY1JldmVyc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI2OCw3ICsyODQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWCiAgICAgQ0FMTF9HRU5FUklD
X1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZh
dGVGdW5jU3ViYXJyYXlDcmVhdGUpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0y
NzksNyArMjk1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZQog
ICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJp
bmdUYWcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDIyICs0NywyMiBAQCB2b2lkIE1hcENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgCiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU3ltYm9sLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1hcChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RNYXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogTWFwQ29uc3Ry
dWN0b3I6Ok1hcENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxNYXAsIGNvbnN0cnVjdE1hcCkKIHsKIH0KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1hcChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsTWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ik1hcCIpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0TWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTMgKzQ4LDEzIEBAIGNv
bnN0IENsYXNzSW5mbyBNYXBQcm90b3R5cGU6OnNfaW5mbyA9IHsKIEBlbmQKICovCiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0NsZWFyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBtYXBQcm90b0Z1bmNEZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
Q2xlYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90
b0Z1bmNIYXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NpemUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFwUHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogICAgIAog
dm9pZCBNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGNoUmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0Y2hSZXN1bHQuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTMgQEAg
dXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0ID0gdWludDY0X3Q7CiB1c2luZyBFbmNvZGVkTWF0Y2hS
ZXN1bHQgPSBNYXRjaFJlc3VsdDsKICNlbmRpZgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorc3Ry
dWN0IFBPRE1hdGNoUmVzdWx0IHsKKyAgICBzaXplX3Qgc3RhcnQ7CisgICAgc2l6ZV90IGVuZDsK
K307CisjZW5kaWYKKwogc3RydWN0IE1hdGNoUmVzdWx0IHsKICAgICBNYXRjaFJlc3VsdCgpCiAg
ICAgICAgIDogc3RhcnQoV1RGOjpub3RGb3VuZCkKQEAgLTQ0LDYgKzUxLDE0IEBAIHN0cnVjdCBN
YXRjaFJlc3VsdCB7CiAgICAgewogICAgIH0KICAgICAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdChQT0RNYXRjaFJlc3VsdCBvdGhlcikKKyAgICAg
ICAgOiBzdGFydChvdGhlci5zdGFydCkKKyAgICAgICAgLCBlbmQob3RoZXIuZW5kKQorICAgIHsK
KyAgICB9CisjZW5kaWYKKwogICAgIEFMV0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQoc2l6ZV90IHN0
YXJ0LCBzaXplX3QgZW5kKQogICAgICAgICA6IHN0YXJ0KHN0YXJ0KQogICAgICAgICAsIGVuZChl
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmNw
cAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0
aENvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw4ICs0ODIsNyBAQCBkb3VibGUganNS
b3VuZChkb3VibGUgdmFsdWUpCiAgICAgcmV0dXJuIGludGVnZXIgLSAoaW50ZWdlciAtIDAuNSA+
IHZhbHVlKTsKIH0KIAotI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMIHx8IENQVShB
Uk1fVEhVTUIyKQotZG91YmxlIGpzTW9kKGRvdWJsZSB4LCBkb3VibGUgeSkKK2RvdWJsZSBvcGVy
YXRpb25Nb2QoZG91YmxlIHgsIGRvdWJsZSB5KQogewogI2lmIEhBVkUoQVJNX0lESVZfSU5TVFJV
Q1RJT05TKQogICAgIC8vIGZtb2QoKSBkb2VzIG5vdCBoYXZlIGV4YWN0IHJlc3VsdHMgZm9yIGlu
dGVnZXIgb24gQVJNdjcuCkBAIC01MDYsMTIgKzUwNSwxMSBAQCBkb3VibGUganNNb2QoZG91Ymxl
IHgsIGRvdWJsZSB5KQogI2VuZGlmCiAgICAgcmV0dXJuIGZtb2QoeCwgeSk7CiB9Ci0jZW5kaWYK
IH0gLy8gZXh0ZXJuICJDIgogCiBuYW1lc3BhY2UgTWF0aCB7CiAKLWRvdWJsZSBKSVRfT1BFUkFU
SU9OIGxvZzFwKGRvdWJsZSB2YWx1ZSkKK2RvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxv
ZzFwKGRvdWJsZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gMC4wKQogICAgICAgICByZXR1
cm4gdmFsdWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1v
bi5oCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiwxMSArMjAyLDcgQEAgZG91YmxlIEpJ
VF9PUEVSQVRJT04ganNSb3VuZChkb3VibGUgdmFsdQogCiAvLyBPbiBXaW5kb3dzIHdlIG5lZWQg
dG8gd3JhcCBmbW9kOyBvbiBvdGhlciBwbGF0Zm9ybXMgd2UgY2FuIGNhbGwgaXQgZGlyZWN0bHku
CiAvLyBPbiBBUk12NyB3ZSBhc3NlcnQgdGhhdCBhbGwgZnVuY3Rpb24gcG9pbnRlcnMgaGF2ZSB0
byBsb3cgYml0IHNldCAocG9pbnQgdG8gdGh1bWIgY29kZSkuCi0jaWYgQ0FMTElOR19DT05WRU5U
SU9OX0lTX1NURENBTEwgfHwgQ1BVKEFSTV9USFVNQjIpCi1kb3VibGUgSklUX09QRVJBVElPTiBq
c01vZChkb3VibGUgeCwgZG91YmxlIHkpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFM
OwotI2Vsc2UKLSNkZWZpbmUganNNb2QgZm1vZAotI2VuZGlmCitkb3VibGUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Nb2QoZG91YmxlIHgsIGRvdWJsZSB5KSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdU
Rl9JTlRFUk5BTDsKIH0KIAogbmFtZXNwYWNlIE1hdGggewpAQCAtMjMwLDcgKzIyNiw3IEBAIHVz
aW5nIHN0ZDo6Y2JydDsKIHVzaW5nIHN0ZDo6ZXhwOwogdXNpbmcgc3RkOjpleHBtMTsKIAotZG91
YmxlIEpJVF9PUEVSQVRJT04gbG9nMXAoZG91YmxlKSBXVEZfSU5URVJOQUw7Citkb3VibGUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Mb2cxcChkb3VibGUpIFdURl9JTlRFUk5BTDsKIAogfSAvLyBu
YW1lc3BhY2UgTWF0aAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1NCw3ICszNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzFwKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6bG9nMXAoY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6b3BlcmF0aW9uTG9nMXAoY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpKSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxMChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHJl
dmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwcm90ZWN0
ZWQ6CiAKIHRlbXBsYXRlPEVycm9yVHlwZSBlcnJvclR5cGU+CiBjbGFzcyBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yIGZpbmFsIDogcHVibGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3JCYXNlIHsKKyAg
ICBmcmllbmQgdm9pZCBwb3B1bGF0ZUpJVFdoaXRlbGlzdCgpOworCiBwdWJsaWM6CiAgICAgc3Rh
dGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3Bw
CShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOSBAQAogI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSklULmgiCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgIkpJVFRodW5rcy5o
IgorI2VuZGlmCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlw
b2ludC5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtNzksNiArODIsMTIgQEAgTmF0aXZlRXhl
Y3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZShWTSYgdgogICAgICwgbV9mdW5jdGlvbihmdW5jdGlv
bikKICAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0b3IpCiB7CisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgIGlmICh2bS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBtX2Z1bmN0aW9uVHJhbXBv
bGluZSA9IFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uKHZtLm5hdGl2ZVRyYW1wb2xpbmVGb3IobV9mdW5j
dGlvbikuZXhlY3V0YWJsZUFkZHJlc3M8aW50cHRyX3Q+KCkpOworICAgICAgICBtX2NvbnN0cnVj
dG9yVHJhbXBvbGluZSA9ICBUYWdnZWROYXRpdmVGdW5jdGlvbih2bS5uYXRpdmVUcmFtcG9saW5l
Rm9yKG1fY29uc3RydWN0b3IpLmV4ZWN1dGFibGVBZGRyZXNzPGludHB0cl90PigpKTsKKyAgICB9
CisjZW5kaWYKIH0KIAogY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIE5hdGl2ZUV4ZWN1dGFibGU6
OnNpZ25hdHVyZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgRXhlY3V0YWJsZUJh
c2UgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNzIEpJVFRodW5rczsK
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIHR5
cGVkZWYgRXhlY3V0YWJsZUJhc2UgQmFzZTsKQEAgLTYxLDEwICs2MiwxNyBAQCBwdWJsaWM6CiAg
ICAgICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCisgICAgICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKE5hdGl2ZUV4ZWN1dGFibGUsIG1fZnVuY3Rpb25UcmFtcG9saW5lKTsKKyAg
ICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoTmF0aXZlRXhlY3V0YWJsZSwgbV9jb25zdHJ1Y3RvclRyYW1wb2xpbmUp
OworI2Vsc2UKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCiAgICAgICAgICAgICBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5hdGl2ZUV4ZWN1dGFibGUsIG1fZnVuY3Rpb24pOwogICAg
ICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKICAgICAgICAgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihOYXRpdmVFeGVjdXRhYmxlLCBtX2NvbnN0cnVjdG9yKTsKKyNlbmRpZgog
ICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90byk7CkBAIC04NCw2ICs5MiwxMCBAQCBwcml2YXRlOgog
CiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9mdW5jdGlvbjsKICAgICBUYWdnZWROYXRpdmVG
dW5jdGlvbiBtX2NvbnN0cnVjdG9yOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBUYWdnZWRO
YXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uVHJhbXBvbGluZTsKKyAgICBUYWdnZWROYXRpdmVGdW5j
dGlvbiBtX2NvbnN0cnVjdG9yVHJhbXBvbGluZTsKKyNlbmRpZgogCiAgICAgU3RyaW5nIG1fbmFt
ZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVGdW5jdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1
bmN0aW9uLmgJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBDYWxsRnJhbWU7CitjbGFzcyBWTTsKIAogdHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSAoSlNDX0hPU1RfQ0FMTCAqUmF3TmF0aXZlRnVuY3Rpb24pKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKQEAgLTgxLDYgKzgyLDExIEBAIHB1YmxpYzoKICAgICBi
b29sIG9wZXJhdG9yPT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fcHRyID09IG90aGVyLm1fcHRyOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KFRhZ2dlZE5hdGl2
ZUZ1bmN0aW9uIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciAhPSBvdGhlci5tX3B0cjsgfQog
CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSW50SGFz
aDx1aW50cHRyX3Q+OjpoYXNoKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG1fcHRyKSk7CisgICAg
fQorCiAgICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gTmF0aXZlRnVuY3Rpb24oKnRo
aXMpKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsgfQogCiAgICAgZXhwbGljaXQgb3BlcmF0b3Ig
TmF0aXZlRnVuY3Rpb24oKQpAQCAtOTAsMTMgKzk2LDM1IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICB2b2lkKiByYXdQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KKyAgICAKKyAgICB2
b2lkKiB1bnRhZ2dlZFBvaW50ZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHVudGFn
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihtX3B0cik7CisgICAgfQorCisgICAgZW51bSBFbXB0eVZh
bHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRl
ZFZhbHVlIH07CisKKyAgICBUYWdnZWROYXRpdmVGdW5jdGlvbihFbXB0eVZhbHVlVGFnKQorICAg
ICAgICA6IG1fcHRyKGVtcHR5VmFsdWUoKSkKKyAgICB7IH0KKyAgICAKKyAgICBUYWdnZWROYXRp
dmVGdW5jdGlvbihEZWxldGVkVmFsdWVUYWcpCisgICAgICAgIDogbV9wdHIoZGVsZXRlZFZhbHVl
KCkpCisgICAgeyB9CisKKyAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHRyID09IGVtcHR5VmFsdWUoKTsgfQorICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3B0ciA9PSBkZWxldGVkVmFsdWUoKTsgfQogCiBwcml2YXRlOgorICAgIHN0YXRp
YyB2b2lkKiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oMCkpOyB9CisgICAgc3RhdGljIHZvaWQqIGRlbGV0ZWRWYWx1ZSgpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSk7IH0K
KwogICAgIHZvaWQqIG1fcHRyOwogfTsKIAogc3RydWN0IFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uSGFz
aCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goVGFnZ2VkTmF0aXZlRnVuY3Rpb24ga2V5KSB7
IHJldHVybiBJbnRIYXNoPHVpbnRwdHJfdD46Omhhc2goYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
a2V5KSk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChUYWdnZWROYXRpdmVGdW5jdGlvbiBr
ZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KICAgICBzdGF0aWMgYm9vbCBlcXVhbChUYWdnZWRO
YXRpdmVGdW5jdGlvbiBhLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBiKSB7IHJldHVybiBhID09IGI7
IH0KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOwogfTsKQEAgLTExOCw1ICsxNDYsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxKU0M6OlRhZ2dlCiAgICAgdXNpbmcgSGFzaCA9IEpTQzo6VGFnZ2VkTmF0aXZlRnVu
Y3Rpb25IYXNoOwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6VGFnZ2VkTmF0aXZlRnVuY3Rpb24+
IDogcHVibGljIEN1c3RvbUhhc2hUcmFpdHM8SlNDOjpUYWdnZWROYXRpdmVGdW5jdGlvbj4geyB9
OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVsbEdldHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNTc5Mjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNyArMzEsMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgTnVsbEdldHRlckZ1bmN0aW9uQ2FsbFJldHVy
blVuZGVmaW5lZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiBjb25zdCBDbGFzc0lu
Zm8gTnVsbEdldHRlckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoTnVsbEdldHRlckZ1bmN0
aW9uKSB9OwogCi1uYW1lc3BhY2UgTnVsbEdldHRlckZ1bmN0aW9uSW50ZXJuYWwgewotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE51bGxH
ZXR0ZXJGdW5jdGlvbkNhbGxSZXR1cm5VbmRlZmluZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9Ci19
CiAKIE51bGxHZXR0ZXJGdW5jdGlvbjo6TnVsbEdldHRlckZ1bmN0aW9uKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIE51bGxHZXR0ZXJGdW5j
dGlvbkludGVybmFsOjpjYWxsUmV0dXJuVW5kZWZpbmVkLCBudWxscHRyKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlLCBOdWxsR2V0dGVyRnVuY3Rpb25DYWxsUmV0dXJuVW5kZWZpbmVkLCBudWxs
cHRyKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0
dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgTnVsbFNldHRlckZ1bmN0aW9uQ2FsbFJldHVyblVuZGVmaW5lZChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiBjb25zdCBDbGFzc0luZm8gTnVsbFNldHRlckZ1
bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoTnVsbFNldHRlckZ1bmN0aW9uKSB9OwogCiAKQEAg
LTcwLDggKzcyLDcgQEAgc3RhdGljIGJvb2wgY2FsbGVySXNTdHJpY3QoVk0mIHZtLCBDYWxsRgog
ICAgIHJldHVybiBpdGVyLmNhbGxlcklzU3RyaWN0KCk7CiB9CiAKLW5hbWVzcGFjZSBOdWxsU2V0
dGVyRnVuY3Rpb25JbnRlcm5hbCB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsUmV0dXJuVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBOdWxsU2V0dGVy
RnVuY3Rpb25DYWxsUmV0dXJuVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04MCwxMCAr
ODEsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIl9zKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KLX0KIAogTnVsbFNldHRl
ckZ1bmN0aW9uOjpOdWxsU2V0dGVyRnVuY3Rpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKLSAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgTnVsbFNldHRlckZ1bmN0aW9uSW50ZXJuYWw6
OmNhbGxSZXR1cm5VbmRlZmluZWQsIG51bGxwdHIpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUs
IE51bGxTZXR0ZXJGdW5jdGlvbkNhbGxSZXR1cm5VbmRlZmluZWQsIG51bGxwdHIpCiB7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEs
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25z
dHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdl
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC01Miw4ICs1Miw4IEBAIGNv
bnN0IENsYXNzSW5mbyBOdW1iZXJDb25zdHJ1Y3Rvcjo6c19pbmYKIEBlbmQKICovCiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE51bWJlckNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKIE51bWJlckNvbnN0cnVjdG9yOjpOdW1iZXJDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBj
YWxsTnVtYmVyQ29uc3RydWN0b3IsIGNvbnN0cnVjdE51bWJlckNvbnN0cnVjdG9yKQpAQCAtODYs
NyArODYsNyBAQCB2b2lkIE51bWJlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWCiB9CiAK
IC8vIEVDTUEgMTUuNy4xCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3ROdW1iZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
TnVtYmVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEwMSwxOSArMTAxLDE5IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKIH0KIAogLy8gRUNNQSAx
NS43LjIKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE51bWJlckNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpID8gMCA6IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFs
T2JqZWN0KSkpOwogfQogCiAvLyBFQ01BLTI2MiAyMC4xLjIuMwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyQ29uc3RydWN0b3JGdW5jSXNJbnRlZ2VyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KE51bWJlckNvbnN0cnVjdG9yOjppc0ludGVnZXJJbXBsKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
KSk7CiB9CiAKIC8vIEVDTUEtMjYyIDIwLjEuMi41Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJDb25zdHJ1Y3RvckZ1bmNJc1NhZmVJbnRlZ2VyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBib29sIGlzSW50ZWdlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjU3OTI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsMTAgKzQ0LDEyIEBAIHR5cGVkZWYgV1RGOjpkb3VibGVfY29u
dmVyc2lvbjo6U3RyaW5nQnUKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9u
ZW50aWFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90
b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclBy
b3RvRnVuY1RvRXhwb25lbnRpYWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVt
YmVyUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsOCBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29u
c3RydWN0b3I6OnNfaW5mCiAqLwogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE9iamVjdENv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoT2JqZWN0
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogT2JqZWN0Q29uc3Ry
dWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxPYmplY3RDb25zdHJ1Y3Rv
ciwgY29uc3RydWN0V2l0aE9iamVjdENvbnN0cnVjdG9yKQpAQCAtMTQxLDEyICsxNDEsMTIgQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIGNvbnN0cnVjdAogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgYXJndW1lbnQudG9PYmplY3QoZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhPYmplY3RDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aE9iamVjdENvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0T2JqZWN0V2l0aE5ld1Rh
cmdldChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSkpOwog
fQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqZWN0Q29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmplY3RDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdE9iamVjdFdpdGhOZXdUYXJnZXQoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIEpTVmFsdWUoKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTc5
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMTUgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1ZhbHVl
T2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBT
ZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNWYWx1
ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0lz
UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
RnVuY0RlZmluZVNldHRlcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNMb29rdXBHZXR0ZXIoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0
UHJvdG9GdW5jTG9va3VwU2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJh
YmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShPYmpl
Y3RQcm90b3R5cGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDE1ICs0OCwxNyBAQCBQcm94eUNvbnN0cnVjdG9yKiBQcm94eUNvbnN0cnVjdG9yOjpj
cmVhCiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsUHJveHkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxQcm94eShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm94eU9iamVjdChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHko
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogUHJveHlDb25zdHJ1Y3Rvcjo6UHJveHlDb25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsUHJv
eHksIGNvbnN0cnVjdFByb3h5T2JqZWN0KQogewogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1ha2VSZXZvY2FibGVQcm94eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzksNyArODEsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBw
cm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByb3h5LnJldm9jYWJsZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQu
IEl0IGNhbiBvbmx5IGJlIGNhbGxlZCJfcyk7CkBAIC05Miw3ICs5NCw3IEBAIHZvaWQgUHJveHlD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0KICAgICBwdXREaXJlY3Qodm0sIG1ha2VJZGVu
dGlmaWVyKHZtLCAicmV2b2NhYmxlIiksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAyLCAicmV2b2NhYmxlIl9zLCBtYWtlUmV2b2NhYmxlUHJveHksIE5vSW50cmluc2ljLCBw
cm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcikpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm94eU9iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBpZiAoY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKS5pc1VuZGVmaW5lZCgpKQpAQCAtMTA0LDcgKzEwNiw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShQcm94eU9iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgdGFyZ2V0
LCBoYW5kbGVyKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsUHJveHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlByb3h5IikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw5IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIAogY29uc3Qg
Q2xhc3NJbmZvIFByb3h5T2JqZWN0OjpzX2luZm8gPSB7ICJQcm94eU9iamVjdCIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoUHJveHlPYmplY3Qp
IH07CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBw
ZXJmb3JtUHJveHlDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwogUHJv
eHlPYmplY3Q6OlByb3h5T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiB7CkBAIC01MTUsNyArNTE4LDcgQEAgYm9vbCBQcm94eU9i
amVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wdXRC
eUluZGV4Q29tbW9uKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwZXJmb3JtUHJveHlDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlD
YWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIE5PX1RBSUxfQ0FMTFMoKTsKIApAQCAtNTY2LDcgKzU2OSw3IEBAIENhbGxUeXBlIFBy
b3h5T2JqZWN0OjpnZXRDYWxsRGF0YShKU0NlbGwKICAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNv
bnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IE5PX1RBSUxfQ0FMTFMoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJveHlSZXZva2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5UmV2b2tlLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0
Miw3IEBAIFByb3h5UmV2b2tlKiBQcm94eVJldm9rZTo6Y3JlYXRlKFZNJiB2bSwKICAgICByZXR1
cm4gcmV2b2tlOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJm
b3JtUHJveHlSZXZva2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5UmV2b2tlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAKIFByb3h5UmV2b2tlOjpQcm94eVJldm9rZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBwZXJmb3JtUHJveHlSZXZva2Us
IG51bGxwdHIpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgUHJveHlSZXZva2U6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHBlcmZvcm1Qcm94eVJldm9rZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5
UmV2b2tlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIFByb3h5UmV2b2tlKiBwcm94eVJldm9rZSA9IGpzQ2FzdDxQcm94eVJldm9rZSo+
KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBwcm94eVZhbHVlID0gcHJveHlS
ZXZva2UtPnByb3h5KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZs
ZWN0T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWZsZWN0T2JqZWN0LmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2
ICszNCwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdENvbnN0cnVjdChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVj
dERlZmluZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
R2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0UHJldmVudEV4
dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmpl
Y3RTZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmpl
Y3REZWZpbmVQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldFByb3RvdHlwZU9mKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RJc0V4dGVuc2libGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdE93bktleXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVj
dE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdFNldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNyArMzEs
MTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSByZWdFeHBD
b25zdHJ1Y3RvcklucHV0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIHJl
Z0V4cENvbnN0cnVjdG9yTGFzdFBhcmVuKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IFByb3BlcnR5TmFtZSk7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JM
ZWZ0Q29udGV4dChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yUmlnaHRDb250ZXh0KEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitFbmNvZGVkSlNW
YWx1ZSByZWdFeHBDb25zdHJ1Y3RvcklucHV0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSk7CitFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRp
bGluZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworRW5j
b2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0TWF0Y2goSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK0VuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0
cnVjdG9yTGFzdFBhcmVuKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5
TmFtZSk7CitFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitFbmNvZGVkSlNWYWx1
ZSByZWdFeHBDb25zdHJ1Y3RvclJpZ2h0Q29udGV4dChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogdGVtcGxhdGU8aW50IE4+Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgcmVnRXhwQ29uc3RydWN0b3JEb2xsYXIoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKTsKK0VuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKLXN0
YXRpYyBib29sIHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwotc3RhdGljIGJvb2wgc2V0UmVnRXhwQ29uc3Ry
dWN0b3JNdWx0aWxpbmUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpOworYm9vbCBzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0KEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKK2Jvb2wgc2V0UmVnRXhwQ29uc3RydWN0
b3JNdWx0aWxpbmUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApAQCAtNzgsOCArNzgsOCBAQCBjb25zdCBDbGFz
c0luZm8gUmVnRXhwQ29uc3RydWN0b3I6OnNfaW5mCiAqLwogCiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RXaXRoUmVnRXhwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IAogUmVnRXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxS
ZWdFeHBDb25zdHJ1Y3RvciwgY29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKQpAQCAtMjgz
LDEzICsyODMsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlc1NwZWNJc1JlZwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzUmVnRXhwKHZtLCBnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIEFyZ0xp
c3QgYXJncyhjYWxsRnJhbWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
UmVnRXhwKGdsb2JhbE9iamVjdCwgYXJncywgY2FsbEZyYW1lLT5qc0NhbGxlZSgpLCBjYWxsRnJh
bWUtPm5ld1RhcmdldCgpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJl
Z0V4cENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY29uc3RydWN0UmVnRXhwKGdsb2JhbE9iamVjdCwgYXJncywgY2FsbEZy
YW1lLT5qc0NhbGxlZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Jvb2wgcmVnRXhwT2JqZWN0U2V0TGFzdElu
ZGV4U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KTsKK2Jvb2wgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4Tm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKKwogU1RBVElDX0FTU0VSVF9JU19U
UklWSUFMTFlfREVTVFJVQ1RJQkxFKFJlZ0V4cE9iamVjdCk7CiAKIGNvbnN0IENsYXNzSW5mbyBS
ZWdFeHBPYmplY3Q6OnNfaW5mbyA9IHsgIlJlZ0V4cCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoUmVnRXhwT2JqZWN0KSB9OwpAQCAtMTM5LDEy
ICsxNDIsMTIgQEAgYm9vbCBSZWdFeHBPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTTwogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKTsK
IH0KIAotc3RhdGljIGJvb2wgcmVnRXhwT2JqZWN0U2V0TGFzdEluZGV4U3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgdmFsdWUpCitib29sIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIHZhbHVlKQogewogICAgIHJldHVybiBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRMYXN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLCB0cnVlKTsKIH0KIAotc3RhdGljIGJvb2wgcmVnRXhwT2JqZWN0U2V0
TGFzdEluZGV4Tm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCitib29sIHJlZ0V4cE9iamVj
dFNldExhc3RJbmRleE5vblN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewogICAgIHJldHVy
biBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpLT5zZXRM
YXN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBmYWxzZSk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE3ICs0MiwxNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0
dGVyR2xvYmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckRv
dEFsbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvR2V0dGVyVW5pY29kZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNDb21waWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvR2V0dGVyR2xvYmFsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlck11bHRpbGluZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckRvdEFsbChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlclN0aWNreShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVuaWNvZGUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9HZXR0ZXJTb3VyY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJGbGFncyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gUmVnRXhwUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFJlZ0V4cFByb3RvdHlwZSkgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjU3OTI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NywyMiArNDcsMjIgQEAgdm9pZCBTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIAogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwg
UHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFNldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0U2V0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxT
ZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0U2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFNldENv
bnN0cnVjdG9yOjpTZXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsU2V0LCBjb25zdHJ1Y3RTZXQpCiB7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0
cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJTZXQiKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0U2V0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NldFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEzICs0NywxMyBA
QCBjb25zdCBDbGFzc0luZm8gU2V0UHJvdG90eXBlOjpzX2luZm8gPSB7CiBAZW5kCiAqLwogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNBZGQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHNldFByb3RvRnVuY0NsZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNEZWxldGUoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHNldFByb3RvRnVuY0hhcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNBZGQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQ2xl
YXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc2V0UHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0hhcyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHNldFByb3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjU3
OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ0Zyb21Db2RlUG9pbnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBA
IC01Myw4ICs1Myw4IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdDb25zdHJ1Y3Rvcjo6c19pbmYK
IFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTdHJpbmdDb25zdHJ1Y3Rv
cik7CiAKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN0cmluZ0Nv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29u
c3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVu
Y3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRo
U3RyaW5nQ29uc3RydWN0b3IpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgU3RyaW5nQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFYKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTA1
LDEyICsxMDUsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaQog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZt
LCBXVEZNb3ZlKGltcGw4Qml0KSkpKTsKIH0KIAotSlNTdHJpbmcqIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nRnJvbUNoYXJDb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludDMyX3QgYXJn
KQorSlNTdHJpbmcqIHN0cmluZ0Zyb21DaGFyQ29kZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBpbnQzMl90IGFyZykKIHsKICAgICByZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmco
Z2xvYmFsT2JqZWN0LT52bSgpLCBhcmcpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ29kZVBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdGcm9tQ29kZVBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMzksNyArMTM5LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaQogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBidWlsZGVyLnRvU3Ry
aW5nKCkpKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xNjIsNyArMTYy
LDcgQEAgSlNTdHJpbmcqIHN0cmluZ0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZQogICAgIHJldHVy
biBhcmd1bWVudC50b1N0cmluZyhnbG9iYWxPYmplY3QpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3RyaW5nQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxTdHJpbmdDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogfTsK
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFN0cmluZ0NvbnN0cnVjdG9yLCBJ
bnRlcm5hbEZ1bmN0aW9uKTsKIAotSlNTdHJpbmcqIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNo
YXJDb2RlKEpTR2xvYmFsT2JqZWN0KiwgaW50MzJfdCk7CitKU1N0cmluZyogc3RyaW5nRnJvbUNo
YXJDb2RlKEpTR2xvYmFsT2JqZWN0KiwgaW50MzJfdCk7CiBKU1N0cmluZyogc3RyaW5nQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN5bWJvbENvbnN0cnVjdG9yRm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZv
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzeW1ib2xDb25zdHJ1Y3RvckZvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTU2LDcgKzU2LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIFN5bWJvbENvbnN0cnVjdG9yOjpzX2luZgogQGVuZAogKi8KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN5bWJvbChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU3ltYm9sKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFN5bWJvbENvbnN0cnVjdG9yOjpTeW1ib2xDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5j
dGlvbih2bSwgc3RydWN0dXJlLCBjYWxsU3ltYm9sLCBudWxscHRyKQpAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIFN5bWJvbENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTeW1ib2woSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9s
UHJvdG9HZXR0ZXJEZXNjcmlwdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9HZXR0ZXJEZXNj
cmlwdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNWYWx1
ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBA
CiAjaW5jbHVkZSAiSXNvSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBD
ZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKSVREZXN0aW5hdGlv
bldoaXRlbGlzdC5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiSlNBUElH
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MzMsNiArODMzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5jdGlTdHViKCp0aGlzLCBnZW5l
cmF0b3IpOwogICAgIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbmF0aXZlVHJhbXBvbGluZUZvcihUYWdnZWROYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+bmF0aXZl
VHJhbXBvbGluZUZvcihmdW5jdGlvbik7CisgICAgfQorI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RlRMOjpUaHVu
a3M+IGZ0bFRodW5rczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtN
YXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUsMjIgKzQ1LDIyIEBAIHZvaWQgV2Vha01hcENvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbigKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogCiBXZWFrTWFwQ29uc3RydWN0b3I6OldlYWtNYXBDb25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsV2Vha01h
cCwgY29uc3RydWN0V2Vha01hcCkKIHsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtNYXAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVk
QXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2Vha01hcCIpKTsKIH0K
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWFrTWFwUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJXZWFrTWFwIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShXZWFrTWFwUHJvdG90eXBlKSB9OwogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBw
cm90b0Z1bmNXZWFrTWFwR2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwSGFzKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwcm90b0Z1bmNXZWFrTWFwU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBEZWxldGUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9G
dW5jV2Vha01hcEdldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBT
ZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBXZWFrTWFwUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDIyICs0NSwyMiBAQCB2b2lkIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrUmVm
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yOjpXZWFrT2JqZWN0UmVmQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVj
dHVyZSwgY2FsbFdlYWtSZWYsIGNvbnN0cnVjdFdlYWtSZWYpCiB7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxX
ZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IldlYWtSZWYiKSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtSZWYo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTc5Mjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
Y29uc3QgQ2xhc3NJbmZvIFdlYWtPYmplY3RSZWZQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYWtS
ZWYiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFdlYWtPYmplY3RSZWZQcm90b3R5cGUpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtSZWZEZXJlZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrUmVmRGVyZWYo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBXZWFrT2JqZWN0UmVmUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDIyICs0NSwyMiBAQCB2b2lkIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oCiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrU2V0KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogV2Vh
a1NldENvbnN0cnVjdG9yOjpXZWFrU2V0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFdlYWtTZXQsIGNvbnN0cnVj
dFdlYWtTZXQpCiB7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIldlYWtTZXQiKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
U2V0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYWtTZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IldlYWtTZXQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFdlYWtTZXRQcm90b3R5cGUpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXREZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtT
ZXRIYXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRBZGQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldERl
bGV0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0SGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRBZGQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBXZWFrU2V0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNTc5
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2MSw3ICs0NjEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIGN1c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNz
ZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CkBAIC05NDksOSArOTQ4LDYgQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfTsKIAotcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKLQogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRW5hYmxlRXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3Nl
cnRTY29wZTsKQEAgLTk2Miw2ICs5NTgsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAorcHJpdmF0ZToKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKwogICAgIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBjdXN0b21HZXR0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICBEb2xs
YXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpAQCAtMzAxMyw2ICszMDEyLDEyNiBAQCB2b2lk
IEpTRG9sbGFyVk06OmFkZENvbnN0cnVjdGlibGVGdW5jdGlvCiAgICAgcHV0RGlyZWN0KHZtLCBp
ZGVudGlmaWVyLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgYXJndW1lbnRz
LCBpZGVudGlmaWVyLnN0cmluZygpLCBmdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGZ1bmN0aW9uKSk7
CiB9CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitzdGF0aWMgdm9pZCogaG9zdENhbGxFbnRyeXBv
aW50c1tdID0geworICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oRE9N
SklUQ2hlY2tTdWJDbGFzc09iamVjdDo6ZnVuY3Rpb25XaXRoVHlwZUNoZWNrKSwKKyAgICAodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KERPTUpJVEZ1bmN0aW9uT2JqZWN0Ojpm
dW5jdGlvbldpdGhUeXBlQ2hlY2spLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oRE9NSklUR2V0dGVyQ29tcGxleDo6ZnVuY3Rpb25FbmFibGVFeGNlcHRpb24pLAor
I2lmIEVOQUJMRShKSVQpCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRE9NSklUQ2hlY2tT
dWJDbGFzc09iamVjdDo6ZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrKSwKKyAgICByZWludGVycHJl
dF9jYXN0PHZvaWQqPihET01KSVRGdW5jdGlvbk9iamVjdDo6ZnVuY3Rpb25XaXRob3V0VHlwZUNo
ZWNrKSwKKyAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihET01KSVRHZXR0ZXI6OkRPTUpJVEF0
dHJpYnV0ZTo6c2xvd0NhbGwpLAorICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KERPTUpJVEdl
dHRlckJhc2VKU09iamVjdDo6RE9NSklUQXR0cmlidXRlOjpzbG93Q2FsbCksCisgICAgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oRE9NSklUR2V0dGVyQ29tcGxleDo6RE9NSklUQXR0cmlidXRlOjpz
bG93Q2FsbCksCisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgKHZvaWQqKXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZVdhc21TdHJlYW1pbmdQ
YXJzZXIpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rp
b25XYXNtU3RyZWFtaW5nUGFyc2VyQWRkQnl0ZXMpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUpLAor
I2VuZGlmCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY3VzdG9tR2V0QWNjZXNzb3IpLAor
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN1c3RvbUdldFZhbHVlKSwKKyAgICByZWludGVy
cHJldF9jYXN0PHZvaWQqPihjdXN0b21TZXRBY2Nlc3NvciksCisgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY3VzdG9tU2V0VmFsdWUpLAorICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEN1
c3RvbUdldHRlcjo6Y3VzdG9tR2V0dGVyKSwKKyAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihD
dXN0b21HZXR0ZXI6OmN1c3RvbUdldHRlckFjZXNzb3IpLAorCisgICAgKHZvaWQqKXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0RvbGxhclZNSGVscGVyOjpmdW5jdGlvbkdldFN0cnVj
dHVyZVRyYW5zaXRpb25MaXN0KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGZ1bmN0aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50KSwKKyAgICAodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQnJlYWtwb2ludCksCisgICAgKHZv
aWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNhbGxGcmFtZSksCisg
ICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNhbGxXaXRo
U3RhY2tTaXplKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1
bmN0aW9uQ29kZUJsb2NrRm9yKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGZ1bmN0aW9uQ29kZUJsb2NrRm9yRnJhbWUpLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcHVDbGZsdXNoKSwKKyAgICAodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3B1Q3B1aWQpLAorICAgICh2b2lk
KilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcHVNZmVuY2UpLAorICAg
ICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcHVQYXVzZSks
CisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNwdVJk
dHNjKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9u
Q3Jhc2gpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rp
b25DcmVhdGVCdWlsdGluKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGZ1bmN0aW9uQ3JlYXRlRW1wdHlGdW5jdGlvbldpdGhOYW1lKSwKKyAgICAodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRlT2JqZWN0RG9pbmdTaWRl
RWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzKSwKKyAgICAodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRlQ3VzdG9tR2V0dGVyT2JqZWN0KSwK
KyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRl
Q3VzdG9tVGVzdEdldHRlclNldHRlciksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZURPTUpJVENoZWNrU3ViQ2xhc3NPYmplY3QpLAorICAg
ICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcmVhdGVET01K
SVRGdW5jdGlvbk9iamVjdCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlckJhc2VKU09iamVjdCksCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRl
ckNvbXBsZXhPYmplY3QpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oZnVuY3Rpb25DcmVhdGVET01KSVRHZXR0ZXJPYmplY3QpLAorICAgICh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcmVhdGVET01KSVROb2RlT2JqZWN0KSwK
KyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRl
RWxlbWVudCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5j
dGlvbkNyZWF0ZUdsb2JhbE9iamVjdCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZUltcHVyZUdldHRlciksCisgICAgKHZvaWQqKXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZU51bGxSb3BlU3RyaW5nKSwK
KyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRl
UHJveHkpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rp
b25DcmVhdGVSb290KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uQ3JlYXRlUnVudGltZUFycmF5KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRlU2ltcGxlT2JqZWN0KSwKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRlU3RhdGljQ3VzdG9t
QWNjZXNzb3IpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVu
Y3Rpb25DdXJyZW50Q1BVVGltZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihmdW5jdGlvbkRGR1RydWUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oZnVuY3Rpb25EYXRhTG9nKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRGVsZXRlQWxsQ29kZVdoZW5JZGxlKSwKKyAgICAodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRGVsdGFCZXR3ZWVuQnV0
dGVyZmxpZXMpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVu
Y3Rpb25EaXNhYmxlRGVidWdnZXJNb2RlV2hlbklkbGUpLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25EdW1wQmFzaWNCbG9ja0V4ZWN1dGlvblJhbmdl
cyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkR1
bXBCeXRlY29kZUZvciksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
PihmdW5jdGlvbkR1bXBDYWxsRnJhbWUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oZnVuY3Rpb25EdW1wQ2VsbCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkR1bXBSZWdpc3RlcnMpLAorICAgICh2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25EdW1wU291cmNlRm9yKSwKKyAgICAo
dm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRHVtcFN0YWNrKSwK
KyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRHVtcFN1
YnNwYWNlSGFzaGVzKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uRWRlbkdDKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGZ1bmN0aW9uRW5hYmxlRGVidWdnZXJNb2RlV2hlbklkbGUpLAorICAgICh2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25FbmFibGVFeGNlcHRpb25GdXp6KSwK
KyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRlRMVHJ1
ZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkZp
bmRUeXBlRm9yRXhwcmVzc2lvbiksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihmdW5jdGlvbkZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KSwKKyAgICAodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uR0MpLAorICAgICh2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25HZXRDb25jdXJyZW50bHkpLAorICAg
ICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25IYXNPd25MZW5n
dGhQcm9wZXJ0eSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihm
dW5jdGlvbkdDU3dlZXBBc3luY2hyb25vdXNseSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkdldEVsZW1lbnQpLAorICAgICh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIpLAorICAgICh2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25HZXRIaWRkZW5WYWx1
ZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkdl
dFBJRCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlv
bkdldFByaXZhdGVQcm9wZXJ0eSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihmdW5jdGlvbkdsb2JhbE9iamVjdENvdW50KSwKKyAgICAodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uR2xvYmFsT2JqZWN0Rm9yT2JqZWN0KSwKKyAg
ICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSGFzQmFzaWNC
bG9ja0V4ZWN1dGVkKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uSGF2ZUFCYWRUaW1lKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGZ1bmN0aW9uSW5kZXhpbmdNb2RlKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSW5saW5lQ2FwYWNpdHkpLAorICAgICh2b2lkKilz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Jc0hhdmluZ0FCYWRUaW1lKSwK
KyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSXNXYXNt
U3VwcG9ydGVkKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1
bmN0aW9uSklUVHJ1ZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
PihmdW5jdGlvbkxMaW50VHJ1ZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihmdW5jdGlvbkxvYWRHZXR0ZXJGcm9tR2V0dGVyU2V0dGVyKSwKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uTWFrZTE2Qml0U3RyaW5nSWZQ
b3NzaWJsZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5j
dGlvbk5vSW5saW5lKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uUGFyc2VDb3VudCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihmdW5jdGlvblByaW50KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGZ1bmN0aW9uUmV0dXJuVHlwZUZvciksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvblNldEdsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNo
b3VsZE5vdFRocm93KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uU2V0SGlkZGVuVmFsdWUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oZnVuY3Rpb25TZXRJbXB1cmVHZXR0ZXJEZWxlZ2F0ZSksCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5j
dGlvbnNPblN0YWNrKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uVG90YWxHQ1RpbWUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25WYWx1ZSksCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGVz
dFN0YXRpY0FjY2Vzc29yR2V0dGVyKQorfTsKKwordm9pZCBKU0RvbGxhclZNOjpwb3B1bGF0ZUpJ
VERlc3RpbmF0aW9uV2hpdGVsaXN0KCkKK3sKKyAgICBKSVREZXN0aW5hdGlvbldoaXRlbGlzdCYg
ZGVzdGluYXRpb25XaGl0ZWxpc3QgPSBKSVREZXN0aW5hdGlvbldoaXRlbGlzdDo6aW5zdGFuY2Uo
KTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YoaG9zdENhbGxFbnRyeXBv
aW50cykgLyBzaXplb2Yodm9pZCopOyBpKyspCisgICAgICAgIGRlc3RpbmF0aW9uV2hpdGVsaXN0
LmFkZEVudHJ5KGhvc3RDYWxsRW50cnlwb2ludHNbaV0pOworfQorI2VuZGlmCisKIHZvaWQgSlNE
b2xsYXJWTTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIEpTRG9sbGFyVk0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNEb2xsYXJWTSo+KGNl
bGwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCShyZXZp
c2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBpbnN0YW5jZTsKICAgICB9CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgcG9wdWxhdGVKSVREZXN0aW5hdGlvbldoaXRlbGlzdCgpOwor
I2VuZGlmCisKICAgICBTdHJ1Y3R1cmUqIG9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRD
b3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fb2JqZWN0RG9pbmdTaWRlRWZm
ZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgCiBw
cml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5h
bHl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdp
bGxDcmFzaEFuYWx5emVyLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
OSwxMCArNTksNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNpZ2lsbENyYXNoQW5hbHl6ZXIo
KSB7IH0KICAgICB2b2lkIGR1bXBDb2RlQmxvY2soQ29kZUJsb2NrKiwgdm9pZCogbWFjaGluZVBD
KTsKLQotI2lmIEVOQUJMRShBUk02NF9ESVNBU1NFTUJMRVIpCi0gICAgQTY0RE9wY29kZSBtX2Fy
bTY0T3Bjb2RlOwotI2VuZGlmCiB9OwogCiAjaWYgT1MoREFSV0lOKQpAQCAtMzIwLDE0ICszMTYs
MTYgQEAgdm9pZCBTaWdpbGxDcmFzaEFuYWx5emVyOjpkdW1wQ29kZUJsb2NrKAogICAgIGxvZygi
RGlzYXNzZW1ibHk6Iik7CiAgICAgdWludDMyX3QqIGN1cnJlbnRQQyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihqaXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAgICBzaXplX3Qg
Ynl0ZUNvdW50ID0gaml0Q29kZS0+c2l6ZSgpOworICAgIEE2NERPcGNvZGUgYXJtNjRPcGNvZGUo
Y3VycmVudFBDLCBieXRlQ291bnQpOworCiAgICAgd2hpbGUgKGJ5dGVDb3VudCkgewogICAgICAg
ICBjaGFyIHBjU3RyaW5nWzI0XTsKICAgICAgICAgaWYgKGN1cnJlbnRQQyA9PSBtYWNoaW5lUEMp
IHsKICAgICAgICAgICAgIHNucHJpbnRmKHBjU3RyaW5nLCBzaXplb2YocGNTdHJpbmcpLCAiKiAw
eCVseCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjdXJyZW50UEMpKTsKLSAgICAgICAg
ICAgIGxvZygiJTIwczogJXMgICAgPD09PT09PT09PT09PT09PT09PT09PT09PT0iLCBwY1N0cmlu
ZywgbV9hcm02NE9wY29kZS5kaXNhc3NlbWJsZShjdXJyZW50UEMpKTsKKyAgICAgICAgICAgIGxv
ZygiJTIwczogJXMgICAgPD09PT09PT09PT09PT09PT09PT09PT09PT0iLCBwY1N0cmluZywgYXJt
NjRPcGNvZGUuZGlzYXNzZW1ibGUoY3VycmVudFBDKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBzbnByaW50ZihwY1N0cmluZywgc2l6ZW9mKHBjU3RyaW5nKSwgIjB4JWx4IiwgcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGN1cnJlbnRQQykpOwotICAgICAgICAgICAgbG9nKCIl
MjBzOiAlcyIsIHBjU3RyaW5nLCBtX2FybTY0T3Bjb2RlLmRpc2Fzc2VtYmxlKGN1cnJlbnRQQykp
OworICAgICAgICAgICAgbG9nKCIlMjBzOiAlcyIsIHBjU3RyaW5nLCBhcm02NE9wY29kZS5kaXNh
c3NlbWJsZShjdXJyZW50UEMpKTsKICAgICAgICAgfQogICAgICAgICBjdXJyZW50UEMrKzsKICAg
ICAgICAgYnl0ZUNvdW50IC09IHNpemVvZih1aW50MzJfdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI1
NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4OCw5ICs1ODgsNDYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBhdXRvKiBw
YXRjaCA9IGFkZFBhdGNocG9pbnQocmVzdWx0VHlwZSk7CisgICAgICAgIEIzOjpFZmZlY3RzIGVm
ZmVjdHMgPSBCMzo6RWZmZWN0czo6bm9uZSgpOworICAgICAgICBlZmZlY3RzLnJlYWRzID0gQjM6
OkhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIGVmZmVjdHMud3JpdGVzID0gQjM6OkhlYXBSYW5n
ZTo6dG9wKCk7CisgICAgICAgIHBhdGNoLT5lZmZlY3RzID0gZWZmZWN0czsKKworICAgICAgICBp
ZiAocmVzdWx0VHlwZS5pc0ludCgpKQorICAgICAgICAgICAgcGF0Y2gtPnJlc3VsdENvbnN0cmFp
bnRzID0geyBCMzo6VmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikgfTsKKyAg
ICAgICAgZWxzZSBpZiAocmVzdWx0VHlwZS5pc0Zsb2F0KCkpCisgICAgICAgICAgICBwYXRjaC0+
cmVzdWx0Q29uc3RyYWludHMgPSB7IEIzOjpWYWx1ZVJlcDo6cmVnKEZQUkluZm86OnJldHVyblZh
bHVlRlBSKSB9OworCisgICAgICAgIHBhdGNoLT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNoLT5jbG9iYmVyTGF0ZShSZWdpc3RlclNl
dDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwoKSk7CisKKyAgICAgICAgVmVjdG9yPENvbnN0
cmFpbmVkVG1wPiBwYXRjaEFyZ3M7CisKKyAgICAgICAgc2l6ZV90IGdwQXJndW1lbnRDb3VudCA9
IDA7CisgICAgICAgIHNpemVfdCBmcEFyZ3VtZW50Q291bnQgPSAwOworCisgICAgICAgIGZvciAo
VHlwZWRUbXAgYXJnIDogVmVjdG9yPFR5cGVkVG1wLCBzaXplb2YuLi4oQXJncyk+e3RoZUFyZ3Mu
Li59KSB7CisgICAgICAgICAgICBpZiAoYXJnLnR5cGUoKSA9PSBUeXBlOjpGNjQgfHwgYXJnLnR5
cGUoKSA9PSBUeXBlOjpGMzIpCisgICAgICAgICAgICAgICAgcGF0Y2hBcmdzLmFwcGVuZChDb25z
dHJhaW5lZFRtcChhcmcsIEFyZ3VtZW50TG9jYXRpb246OnJlZyhGUFJJbmZvOjp0b0FyZ3VtZW50
UmVnaXN0ZXIoZnBBcmd1bWVudENvdW50KyspKSkpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29uc3RyYWluZWRUbXAoYXJnLCBBcmd1bWVudExv
Y2F0aW9uOjpyZWcoR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGdwQXJndW1lbnRDb3VudCsr
KSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChncEFyZ3VtZW50Q291bnQgPD0gR1BS
SW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7CisgICAgICAgIEFTU0VSVChmcEFyZ3Vt
ZW50Q291bnQgPD0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7CisKKyAgICAg
ICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LmNhbGwo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihmdW5j
LCBOb1B0clRhZykpLCBOb1B0clRhZyk7CisgICAgICAgIH0pOworCisgICAgICAgIGVtaXRQYXRj
aHBvaW50KGJsb2NrLCBwYXRjaCwgVmVjdG9yPFR5cGVkVG1wLCA4PiB7IHJlc3VsdCB9LCBXVEZN
b3ZlKHBhdGNoQXJncykpOworI2Vsc2UKICAgICAgICAgYXV0byBtYWtlRHVtbXlWYWx1ZSA9IFsm
XSAoVG1wIHRtcCkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgbGVzcyB0aGFuIGlk
ZWFsIHRvIGNyZWF0ZSBkdW1teSB2YWx1ZXMganVzdCB0byBzYXRpc2Z5IEFpcidzCi0gICAgICAg
ICAgICAvLyB2YWxpZGF0aW9uLiBXZSBzaG91bGQgYWJzdHJjYXQgQ0NhbGwgZW5vdWdoIHNvIHdl
J3JlIG5vdCByZWxpYW50IG9uIGFyZ3VtZW50cworICAgICAgICAgICAgLy8gdmFsaWRhdGlvbi4g
V2Ugc2hvdWxkIGFic3RyYWN0IENDYWxsIGVub3VnaCBzbyB3ZSdyZSBub3QgcmVsaWFudCBvbiBh
cmd1bWVudHMKICAgICAgICAgICAgIC8vIHRvIHRoZSBCMzo6Q0NhbGxWYWx1ZS4KICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAKICAg
ICAgICAgICAgIGlmICh0bXAuaXNHUCgpKQpAQCAtNjE0LDYgKzY1MSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBpbnN0LmFyZ3MuYXBwZW5kKHRtcCk7CiAKICAgICAgICAgYmxvY2stPmFwcGVu
ZChXVEZNb3ZlKGluc3QpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBCMzo6QWlyOjpP
cGNvZGUgbW92ZU9wRm9yVmFsdWVUeXBlKFR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI1Nzky
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZUlmLmgiCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQ2FnZWRDQ2FsbC5oIgogI2lu
Y2x1ZGUgIkIzQ29tcGlsZS5oIgogI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzRml4U1NBLmgiCkBAIC0yNzksNiArMjgwLDggQEAgcHVibGljOgogICAgIEIzOjpUeXBl
IHRvQjNSZXN1bHRUeXBlKEJsb2NrU2lnbmF0dXJlKTsKIAogcHJpdmF0ZToKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdGlvbiwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBWYWx1ZSogZW1pdENh
bGxPcGVyYXRpb24oQjM6OlR5cGUgdHlwZSwgRnVuY3Rpb24gZnVuY3Rpb24sIEFyZ3MuLi4gYXJn
cyk7CiAgICAgdm9pZCBlbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJzJiwgRXhjZXB0aW9u
VHlwZSk7CiAKICAgICB2b2lkIGVtaXRFbnRyeVRpZXJVcENoZWNrKCk7CkBAIC01ODksNiArNTky
LDE4IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2wKICAgICB9CiB9
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvbiwgdHlwZW5hbWUuLi4gQXJncz4KK1ZhbHVl
KiBCM0lSR2VuZXJhdG9yOjplbWl0Q2FsbE9wZXJhdGlvbihCMzo6VHlwZSB0eXBlLCBPcGVyYXRp
b24gb3BlcmF0aW9uLCBBcmdzLi4uIGFyZ3MpCit7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
IHJldHVybiBjYWdlZENDYWxsKG1fcHJvYywgbV9jdXJyZW50QmxvY2ssIG9yaWdpbigpLCB0eXBl
LCBvcGVyYXRpb24sIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisjZWxzZQorICAgIHJl
dHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgdHlwZSwg
b3JpZ2luKCksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPigmb3BlcmF0aW9uLCBC
M0NDYWxsUHRyVGFnKSksCisgICAgICAgIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cisj
ZW5kaWYKK30KKwogdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxI
ZWxwZXJzJiBqaXQsIEV4Y2VwdGlvblR5cGUgdHlwZSkKIHsKICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4odHlwZSkpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOwpAQCAtNjk3LDEwICs3MTIsOSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZFJlZklzTnVsbChFeHByZXNzCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR2V0KHVu
c2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGluZGV4LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxp
bmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgotICAg
IHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0
b0IzVHlwZShBbnlyZWYpLCBvcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9p
ZCo+KCZvcGVyYXRpb25HZXRXYXNtVGFibGVFbGVtZW50LCBCM0NDYWxsUHRyVGFnKSksCisgICAg
cmVzdWx0ID0gZW1pdENhbGxPcGVyYXRpb24odG9CM1R5cGUoQW55cmVmKSwgb3BlcmF0aW9uR2V0
V2FzbVRhYmxlRWxlbWVudCwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFibGVJbmRleCks
IGluZGV4KTsKLQorICAgIAogICAgIHsKICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigp
LAogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBF
cXVhbCwgb3JpZ2luKCksIHJlc3VsdCwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0
VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIDApKSk7CkBAIC03MTYsOCArNzMwLDcgQEAgYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCh1bnNpZ25lZAogYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRUYWJsZVNldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSBpbmRleCwgRXhw
cmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1p
dCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODUwNj4uCi0gICAgYXV0byBzaG91bGRUaHJvdyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6SW50MzIsIG9yaWdpbigpLAotICAgICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NG
dW5jdGlvblB0cjx2b2lkKj4oJm9wZXJhdGlvblNldFdhc21UYWJsZUVsZW1lbnQsIEIzQ0NhbGxQ
dHJUYWcpKSwKKyAgICBhdXRvIHNob3VsZFRocm93ID0gZW1pdENhbGxPcGVyYXRpb24oQjM6Oklu
dDMyLCBvcGVyYXRpb25TZXRXYXNtVGFibGVFbGVtZW50LAogICAgICAgICBpbnN0YW5jZVZhbHVl
KCksIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdp
bigpLCB0YWJsZUluZGV4KSwgaW5kZXgsIHZhbHVlKTsKIAogICAgIHsKQEAgLTczNSw5ICs3NDgs
NyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KHVuc2lnbmVkCiBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCi0KLSAgICBy
ZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgQjM6
OkludDY0LCBvcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZvcGVy
YXRpb25XYXNtUmVmRnVuYywgQjNDQ2FsbFB0clRhZykpLAorICAgIHJlc3VsdCA9IGVtaXRDYWxs
T3BlcmF0aW9uKEIzOjpJbnQ2NCwgb3BlcmF0aW9uV2FzbVJlZkZ1bmMsCiAgICAgICAgIGluc3Rh
bmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZTo6STMyLCBpbmRleCkpOwogCiAgICAgcmV0dXJu
IHsgfTsKQEAgLTc0Niw4ICs3NTcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFJlZkZ1bmMo
dWludDMyX3QgCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSh1bnNpZ25lZCB0YWJs
ZUluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAg
Ly8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTg1MDY+LgotICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCB0b0IzVHlwZShJMzIpLCBvcmlnaW4oKSwKLSAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigp
LCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZvcGVyYXRpb25HZXRXYXNtVGFibGVTaXplLCBCM0ND
YWxsUHRyVGFnKSksCisgICAgcmVzdWx0ID0gZW1pdENhbGxPcGVyYXRpb24odG9CM1R5cGUoSTMy
KSwgb3BlcmF0aW9uR2V0V2FzbVRhYmxlU2l6ZSwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dGFibGVJbmRleCkpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTc1NSw4ICs3NjUsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSh1bnNpZ25lCiAKIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkVGFibGVHcm93KHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGZpbGws
IEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFs
UmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZh
bHVlPihtX3Byb2MsIHRvQjNUeXBlKEkzMiksIG9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKj4oJm9wZXJhdGlvbldhc21UYWJsZUdyb3csIEIzQ0NhbGxQdHJUYWcpKSwK
KyAgICByZXN1bHQgPSBlbWl0Q2FsbE9wZXJhdGlvbih0b0IzVHlwZShJMzIpLCBvcGVyYXRpb25X
YXNtVGFibGVHcm93LAogICAgICAgICBpbnN0YW5jZVZhbHVlKCksIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWJsZUluZGV4KSwgZmls
bCwgZGVsdGEpOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTc2NCw4ICs3NzMsNyBAQCBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZFRhYmxlR3Jvdyh1bnNpZ25lCiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkVGFibGVGaWxsKHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIG9mZnNldCwg
RXhwcmVzc2lvblR5cGUgZmlsbCwgRXhwcmVzc2lvblR5cGUgY291bnQpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxW
YWx1ZT4obV9wcm9jLCB0b0IzVHlwZShJMzIpLCBvcmlnaW4oKSwKLSAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVu
Y3Rpb25QdHI8dm9pZCo+KCZvcGVyYXRpb25XYXNtVGFibGVGaWxsLCBCM0NDYWxsUHRyVGFnKSks
CisgICAgYXV0byByZXN1bHQgPSBlbWl0Q2FsbE9wZXJhdGlvbih0b0IzVHlwZShJMzIpLCBvcGVy
YXRpb25XYXNtVGFibGVGaWxsLAogICAgICAgICBpbnN0YW5jZVZhbHVlKCksIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWJsZUluZGV4
KSwgb2Zmc2V0LCBmaWxsLCBjb3VudCk7CiAKICAgICB7CkBAIC03OTksMTAgKzgwNyw4IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiAKIAogYXV0byBCM0lSR2VuZXJh
dG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEludDMyLCBvcmlnaW4oKSwKLSAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigp
LCB0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KCZvcGVyYXRpb25Hcm93TWVtb3J5LCBCM0NDYWxsUHRy
VGFnKSksCi0gICAgICAgIGZyYW1lUG9pbnRlcigpLCBpbnN0YW5jZVZhbHVlKCksIGRlbHRhKTsK
LQorICAgIHJlc3VsdCA9IGNhZ2VkQ0NhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgb3JpZ2lu
KCksIEludDMyLCBvcGVyYXRpb25Hcm93TWVtb3J5LCBmcmFtZVBvaW50ZXIoKSwgaW5zdGFuY2VW
YWx1ZSgpLCBkZWx0YSk7CisgICAgCiAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
UmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6Ok5vLCBtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVl
KCksIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTkwNCw4
ICs5MTAsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OnNldEdsb2JhbCh1aW50MzJfdCBpCiAgICAg
ICAgICAgICBjb250aW51YXRpb24tPmFkZFByZWRlY2Vzc29yKG1fY3VycmVudEJsb2NrKTsKICAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gZG9TbG93UGF0aDsKIAotICAgICAgICAgICAgVmFs
dWUqIHdyaXRlQmFycmllckFkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJm9wZXJh
dGlvbldhc21Xcml0ZUJhcnJpZXJTbG93UGF0aCwgQjNDQ2FsbFB0clRhZykpOwotICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpWb2lk
LCBvcmlnaW4oKSwgd3JpdGVCYXJyaWVyQWRkcmVzcywgY2VsbCwgdm0pOworICAgICAgICAgICAg
ZW1pdENhbGxPcGVyYXRpb24oQjM6OlZvaWQsIG9wZXJhdGlvbldhc21Xcml0ZUJhcnJpZXJTbG93
UGF0aCwgY2VsbCwgdm0pOwogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24pOwogCiAgICAg
ICAgICAgICBjb250aW51YXRpb24tPmFkZFByZWRlY2Vzc29yKG1fY3VycmVudEJsb2NrKTsKQEAg
LTk1Nyw4ICs5NjIsNyBAQCBpbmxpbmUgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0V3JpdGVCYXJy
CiAgICAgY29udGludWF0aW9uLT5hZGRQcmVkZWNlc3NvcihtX2N1cnJlbnRCbG9jayk7CiAgICAg
bV9jdXJyZW50QmxvY2sgPSBkb1Nsb3dQYXRoOwogCi0gICAgVmFsdWUqIHdyaXRlQmFycmllckFk
ZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4oJm9wZXJhdGlvbldhc21Xcml0ZUJhcnJp
ZXJTbG93UGF0aCwgQjNDQ2FsbFB0clRhZykpOwotICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luKCksIHdyaXRlQmFycmllckFk
ZHJlc3MsIGNlbGwsIHZtKTsKKyAgICBlbWl0Q2FsbE9wZXJhdGlvbihCMzo6Vm9pZCwgb3BlcmF0
aW9uV2FzbVdyaXRlQmFycmllclNsb3dQYXRoLCBjZWxsLCB2bSk7CiAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250aW51
YXRpb24pOwogCiAgICAgY29udGludWF0aW9uLT5hZGRQcmVkZWNlc3NvcihtX2N1cnJlbnRCbG9j
ayk7CkBAIC0yMTUwLDggKzIxNTQsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlw
ZTo6STMyUG9wCiAgICAgfQogI2VuZGlmCiAKLSAgICBWYWx1ZSogZnVuY0FkZHJlc3MgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRh
Z0NGdW5jdGlvblB0cjx2b2lkKj4oJm9wZXJhdGlvblBvcGNvdW50MzIsIEIzQ0NhbGxQdHJUYWcp
KTsKLSAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1f
cHJvYywgSW50MzIsIG9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksIGZ1bmNBZGRyZXNzLCBhcmcp
OworICAgIHJlc3VsdCA9IGVtaXRDYWxsT3BlcmF0aW9uKEIzOjpJbnQzMiwgb3BlcmF0aW9uUG9w
Y291bnQzMiwgYXJnKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0yMTcxLDggKzIxNzQsNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0UG9wCiAgICAgfQogI2VuZGlm
CiAKLSAgICBWYWx1ZSogZnVuY0FkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENv
bnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4ob3Bl
cmF0aW9uUG9wY291bnQ2NCwgQjNDQ2FsbFB0clRhZykpOwotICAgIHJlc3VsdCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQ2NCwgb3JpZ2luKCksIEVm
ZmVjdHM6Om5vbmUoKSwgZnVuY0FkZHJlc3MsIGFyZyk7CisgICAgcmVzdWx0ID0gZW1pdENhbGxP
cGVyYXRpb24oQjM6OkludDY0LCBvcGVyYXRpb25Qb3Bjb3VudDY0LCBhcmcpOwogICAgIHJldHVy
biB7IH07CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSw3IEBA
IHN0YXRpYyB2b2lkIGRvT1NSRW50cnkoSW5zdGFuY2UqIGluc3RhbmMKICAgICBjb250ZXh0Lmdw
cihBUk02NFJlZ2lzdGVyczo6bHIpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4oKihmcmFt
ZVBvaW50ZXIgKyAxKSk7CiAgICAgY29udGV4dC5zcCgpID0gZnJhbWVQb2ludGVyICsgMjsKICAg
ICBzdGF0aWNfYXNzZXJ0KEFzc2VtYmx5SGVscGVyczo6cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0
YSgpID09IHNpemVvZih2b2lkKikgKiAyKTsKLSNpZiBDUFUoQVJNNjRFKQorI2lmIENQVShBUk02
NEUpICYmICFFTkFCTEUoSklUX0NBR0UpCiAgICAgLy8gTFIgbmVlZHMgdG8gYmUgdW50YWdnZWQg
c2luY2UgT1NSIGVudHJ5IGZ1bmN0aW9uIHByb2xvZ3VlIHdpbGwgdGFnIGl0IHdpdGggU1AuIFRo
aXMgaXMgc2ltaWxhciB0byB0YWlsLWNhbGwuCiAgICAgY29udGV4dC5ncHIoQVJNNjRSZWdpc3Rl
cnM6OmxyKSA9IGJpdHdpc2VfY2FzdDxVQ1BVUmVnaXN0ZXI+KHVudGFnQ29kZVB0cihjb250ZXh0
Lmdwcjx2b2lkKj4oQVJNNjRSZWdpc3RlcnM6OmxyKSwgYml0d2lzZV9jYXN0PFB0clRhZz4oY29u
dGV4dC5zcCgpKSkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGh1bmtzLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDggKzg4LDEyIEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdHIKICAgICB1bnNpZ25lZCBudW1i
ZXJPZlN0YWNrQnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24gPSBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3I6OnByZXNlcnZlUmVnaXN0ZXJzVG9TdGFja0ZvckNhbGwoaml0LCByZWdpc3Rl
cnNUb1NwaWxsLCBleHRyYVBhZGRpbmdCeXRlcyk7CiAKICAgICBqaXQubG9hZFdhc21Db250ZXh0
SW5zdGFuY2UoR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgaml0LmNhbGwoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodW50YWdDb2RlUHRyPENG
dW5jdGlvblB0clRhZz4ob3BlcmF0aW9uV2FzbVRyaWdnZXJUaWVyVXBOb3cpKSwgTm9QdHJUYWcp
OworI2Vsc2UKICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih0YWdD
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25XYXNtVHJpZ2dlclRpZXJVcE5v
dykpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5jYWxsKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMiwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbmRpZgogCiAgICAgU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yOjpyZXN0b3JlUmVnaXN0ZXJzRnJvbVN0YWNrRm9yQ2FsbChqaXQsIHJlZ2lzdGVy
c1RvU3BpbGwsIFJlZ2lzdGVyU2V0KCksIG51bWJlck9mU3RhY2tCeXRlc1VzZWRGb3JSZWdpc3Rl
clByZXNlcnZhdGlvbiwgZXh0cmFQYWRkaW5nQnl0ZXMpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcAkocmV2aXNpb24gMjU3OTI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDkgKzcwLDkgQEAgRk9SX0VBQ0hfV0VCQVNTRU1CTFlfQ09OU1RS
VUNUT1JfVFlQRShERQogCiAjdW5kZWYgREVGSU5FX0NBTExCQUNLX0ZPUl9DT05TVFJVQ1RPUgog
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVG
dW5jKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNz
ZW1ibHlWYWxpZGF0ZUZ1bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eUluc3RhbnRpYXRlRnVuYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5CiAgICAgfSkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHk6OndlYkFzc2VtYmx5TW9k
dWxlSW5zCiAgICAgQ0xFQVJfQU5EX1JFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwgdm9p
ZCgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1i
bHlJbnN0YW50aWF0ZUZ1bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5z
dGFudGlhdGVGdW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAtMzI0LDcg
KzMyNCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkEKICAgICB9
CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFs
aWRhdGVGdW5jKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVu
YyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSwxMiArMzksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlDb21waWxlRXJyb3Is
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25z
dHJ1Y3RvcikgfTsKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dl
YkFzc2VtYmx5Q29tcGlsZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaAogIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2Vi
QXNzZW1ibHlDb21waWxlRXJyb3IKICBAZW5kCiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBh
dXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC01NCw3ICs1Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnMKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShKU1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2
bSwgc3RydWN0dXJlLCBtZXNzYWdlKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgSlNWYWx1ZSBtZXNzYWdl
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVjdHVyZSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlG
dW5jdGlvbi5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1
OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlGdW5j
dGlvbjo6c19pbmZvID0geyAiV2ViQXNzZW1ibHlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlGdW5jdGlvbikg
fTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5
RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9u
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQxNSw3
ICs0MTcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2ViCiAgICAg
ZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cih0aGlzKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5lbWl0RnVuY3Rpb25F
cGlsb2d1ZSgpOwotI2lmIENQVShBUk02NEUpCisjaWYgQ1BVKEFSTTY0RSkgJiYgIUVOQUJMRShK
SVRfQ0FHRSkKICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CiAjZW5kaWYKICAgICBhdXRv
IGp1bXBUb0hvc3RDYWxsVGh1bmsgPSBqaXQuanVtcCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxMiArNDAsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJB
c3NlbWJseUdsb2JhbENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sICZjb25zdHJ1Y3Rvckdsb2JhbFdlYkFzc2VtYmx5R2xvYmFsLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IpIH07CiAKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUdsb2JhbChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsSlNXZWJBc3NlbWJseUdsb2JhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiAv
KiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IubHV0LmgKICBAYmVnaW4g
Y29uc3RydWN0b3JHbG9iYWxXZWJBc3NlbWJseUdsb2JhbAogIEBlbmQKICAqLwogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5R2xvYmFs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5R2xvYmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEyNCw3ICsxMjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5R2xvYmFsOjp0cnlDcmVhdGUoZ2xvYmFs
T2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUdsb2JhbFN0cnVjdHVyZSgpLCBX
VEZNb3ZlKHdhc21HbG9iYWwpKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUdsb2JhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJB
c3NlbWJseUdsb2JhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUdsb2JhbFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDkgQEAKICNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5R2xvYmFsUHJvdG9GdW5j
VmFsdWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlHbG9iYWxQcm90b0dldHRlckZ1bmNWYWx1ZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlHbG9iYWxQcm90b1NldHRlckZ1bmNWYWx1ZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseUdsb2JhbFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlHbG9iYWxQcm90b0dldHRl
ckZ1bmNWYWx1ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUdsb2JhbFByb3RvU2V0dGVyRnVuY1ZhbHVlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseUdsb2Jh
bFByb3RvdHlwZS5sdXQuaCIKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUg
SlNXZWJBc3NlbWJseUdsb2JhbAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5R2xvYmFsUHJvdG9GdW5jVmFsdWVP
ZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlHbG9iYWxQcm90b0Z1bmNWYWx1
ZU9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQQogICAgIH0KIH0KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlHbG9iYWxQcm90b0dldHRlckZ1bmNWYWx1
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlHbG9iYWxQcm90b0dldHRlckZ1
bmNWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkEKICAgICB9CiB9CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5R2xvYmFsUHJvdG9TZXR0ZXJGdW5j
VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5R2xvYmFsUHJvdG9TZXR0
ZXJGdW5jVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNl
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw2ICs1Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8g
V2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlJbnN0YW5jZSwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IpIH07
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUlu
c3RhbmNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKKwogLyogU291cmNlIGZvciBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3Iu
bHV0LmgKICBAYmVnaW4gY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5SW5zdGFuY2UKICBAZW5k
CkBAIC01OSw3ICs2Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUluc3RhbmNlQ29u
c3QKIAogdXNpbmcgV2FzbTo6UGxhbjsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAg
LTg2LDcgKzg5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUluc3RhbmNlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5SW5zdGFuY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0
YW5jZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgi
CiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW5j
ZVByb3RvRnVuY0V4cG9ydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIH0KIAogI2lu
Y2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgiCkBAIC02MSw3ICs2MSw3
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlJbnN0YW4KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlJbnN0YW5jZVByb3RvRnVuY0V4cG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JD
b25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiArMzksMTUgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxl
V2ViQXNzZW1ibHlMaW5rRXJyb3IsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNz
ZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3RvcikgfTsKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TGlua0Vycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5
TGlua0Vycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKIC8qIFNvdXJjZSBmb3Ig
V2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaAogIEBiZWdpbiBjb25zdHJ1Y3Rv
clRhYmxlV2ViQXNzZW1ibHlMaW5rRXJyb3IKICBAZW5kCiAgKi8KIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBh
dXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CkBAIC01NCw3ICs1Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnMKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShKU1dlYkFzc2VtYmx5TGlua0Vycm9yOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwg
c3RydWN0dXJlLCBtZXNzYWdlKSkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseUxpbmtFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgSlNWYWx1ZSBtZXNzYWdlID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT53ZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1v
cnlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MywxMiArNDMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5m
byBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlNZW1vcnksIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3RvcikgfTsKIAor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TWVtb3J5
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxKU1dlYkFzc2VtYmx5TWVtb3J5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CisKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5sdXQuaAogIEBi
ZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlNZW1vcnkKICBAZW5kCiAgKi8KIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1l
bW9yeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseU1lbW9y
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMTMsNyArMTE2LDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNNZW1vcnkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SlNXZWJBc3NlbWJseU1lbW9yeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseU1lbW9y
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1
NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlIZWxwZXJzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1l
bW9yeVByb3RvRnVuY0dyb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5TWVt
b3J5UHJvdG90eXBlLmx1dC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0NiwxMyBA
QAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNl
Y3Rpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5TW9kdWxlRXhwb3J0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5TW9kdWxl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKIH0KIAogI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5TW9kdWxlQ29uc3RydWN0b3IubHV0LmgiCkBAIC0xNTgsNyArMTYyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNXZWJBc3NlbWJseU1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlNXZWJBc3NlbWJseU1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTY5LDcgKzE3Myw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShXZWJBc3NlbWJseU1vZHVsZUNvbnN0
cnVjdG9yOjpjcmVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIFdURk1vdmUoc291
cmNlKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpT
V2ViQXNzZW1ibHlNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpTV2ViQXNzZW1ibHlNb2R1bGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMiAr
MzksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3RvcikgfTsK
IAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CisKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JD
b25zdHJ1Y3Rvci5sdXQuaAogIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IKICBAZW5kCiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBhdXRvJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC01Niw3ICs1OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3I6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUobWVzc2FnZVN0
cmluZykpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEpT
V2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIEpTVmFsdWUgbWVzc2FnZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CiAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+
d2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsMTIgKzQwLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNz
ZW1ibHlUYWJsZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IpIH07CiAKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxKU1dl
YkFzc2VtYmx5VGFibGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwogLyogU291cmNl
IGZvciBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0LmgKICBAYmVnaW4gY29uc3RydWN0
b3JUYWJsZVdlYkFzc2VtYmx5VGFibGUKICBAZW5kCiAgKi8KIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseVRhYmxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5VGFibGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwpAQCAtMTA0LDcgKzEwNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnMKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKEpTV2ViQXNzZW1ibHlUYWJsZTo6dHJ5Q3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlUYWJsZVN0cnVjdHVyZSgpLCB3YXNtVGFibGUucmVsZWFz
ZU5vbk51bGwoKSkpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEpTV2ViQXNzZW1ibHlUYWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSlNXZWJBc3NlbWJseVRh
YmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTc5Mjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW5jbHVkZSAiSlNX
ZWJBc3NlbWJseVRhYmxlLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNHZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9G
dW5jR3JvdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIH0KIAogI2luY2x1
ZGUgIldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmgiCkBAIC02Nyw3ICs2Nyw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlUYWJsZSoKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTc3LDcgKzc3LDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGFibGUtPmxlbmd0aCgpKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkEKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKG9sZExlbmd0aCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTEx
Miw3ICsxMTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0YWJsZS0+Z2V0KGluZGV4KSk7CiB9CiAKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNT
ZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAkocmV2
aXNpb24gMjU3OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b246OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SklULmgJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgZW51bSBjbGFzcyBKSVRG
YWlsdXJlUmVhc29uIDogdWludDhfdCB7CiAgICAgRXhlY3V0YWJsZU1lbW9yeUFsbG9jYXRpb25G
YWlsdXJlLAogfTsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVybiAiQyIgUE9ETWF0Y2hS
ZXN1bHQgY2FsbFRvUmVnRXhwSklUQ29kZShjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIHZvaWQqIGZyZWVQYXJlbkNvbnRleHQs
IHVuc2lnbmVkIHBhcmVuQ29udGV4dFNpemUsIHZvaWQqKTsKKyNlbmRpZgorCiBjbGFzcyBZYXJy
Q29kZUJsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShZYXJyQ29kZUJsb2NrKTsKQEAgLTg2LDI1ICs5MCw0MSBAQCBwdWJsaWM6CiAg
ICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCB2b2lkKiBmcmVlUGFyZW5Db250ZXh0LCB1
bnNpZ25lZCBwYXJlbkNvbnRleHRTaXplKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhCaXRD
b2RlKCkpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0
KGNhbGxUb1JlZ0V4cEpJVENvZGUoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgZnJlZVBh
cmVuQ29udGV4dCwgcGFyZW5Db250ZXh0U2l6ZSwgbV9yZWY4LmNvZGUoKS5yZXRhZ2dlZEV4ZWN1
dGFibGVBZGRyZXNzPE5vUHRyVGFnPigpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hS
ZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGU4LCBZYXJyOEJpdFB0clRhZz4obV9y
ZWY4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0
cHV0LCBmcmVlUGFyZW5Db250ZXh0LCBwYXJlbkNvbnRleHRTaXplKSk7CisjZW5kaWYKICAgICB9
CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIHZvaWQqIGZyZWVQYXJlbkNvbnRl
eHQsIHVuc2lnbmVkIHBhcmVuQ29udGV4dFNpemUpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFz
MTZCaXRDb2RlKCkpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmV0dXJuIE1hdGNo
UmVzdWx0KGNhbGxUb1JlZ0V4cEpJVENvZGUoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwg
ZnJlZVBhcmVuQ29udGV4dCwgcGFyZW5Db250ZXh0U2l6ZSwgbV9yZWYxNi5jb2RlKCkucmV0YWdn
ZWRFeGVjdXRhYmxlQWRkcmVzczxOb1B0clRhZz4oKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJu
IE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlMTYsIFlhcnIxNkJpdFB0
clRhZz4obV9yZWYxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBs
ZW5ndGgsIG91dHB1dCwgZnJlZVBhcmVuQ29udGV4dCwgcGFyZW5Db250ZXh0U2l6ZSkpOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQs
IHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIGZyZWVQYXJlbkNvbnRleHQs
IHVuc2lnbmVkIHBhcmVuQ29udGV4dFNpemUpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzOEJp
dENvZGVNYXRjaE9ubHkoKSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICByZXR1cm4g
TWF0Y2hSZXN1bHQoY2FsbFRvUmVnRXhwSklUQ29kZShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgMCwg
ZnJlZVBhcmVuQ29udGV4dCwgcGFyZW5Db250ZXh0U2l6ZSwgbV9tYXRjaE9ubHk4LmNvZGUoKS5y
ZXRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPE5vUHRyVGFnPigpKSk7CisjZWxzZQogICAgICAgICBy
ZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHk4
LCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgMCwgZnJlZVBhcmVuQ29udGV4dCwgcGFy
ZW5Db250ZXh0U2l6ZSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0
ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHZv
aWQqIGZyZWVQYXJlbkNvbnRleHQsIHVuc2lnbmVkIHBhcmVuQ29udGV4dFNpemUpCiAgICAgewog
ICAgICAgICBBU1NFUlQoaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkpOworI2lmIEVOQUJMRShKSVRf
Q0FHRSkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KGNhbGxUb1JlZ0V4cEpJVENvZGUoaW5w
dXQsIHN0YXJ0LCBsZW5ndGgsIDAsIGZyZWVQYXJlbkNvbnRleHQsIHBhcmVuQ29udGV4dFNpemUs
IG1fbWF0Y2hPbmx5MTYuY29kZSgpLnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8Tm9QdHJUYWc+
KCkpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0
cjxZYXJySklUQ29kZU1hdGNoT25seTE2LCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+KG1fbWF0
Y2hPbmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3Ro
LCAwLCBmcmVlUGFyZW5Db250ZXh0LCBwYXJlbkNvbnRleHRTaXplKSk7CisjZW5kaWYKICAgICB9
CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjU3OTI3KQor
KysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAor
MjAyMC0wMy0wNSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBDYWdlIEpJVCBwb2ludGVycyB0byB0aGUgSklUIHJlZ2lvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBhZ2UgcmVzZXJ2YXRpb24g
ZnVuY3Rpb24gdG8gaW5jbHVkZSBndWFyZCByZWdpb25zLgorCisgICAgICAgIEFkZGVkIGEgbmV3
IHN0YXRpYyBwb2ludGVyIGhhc2ggY2xhc3MgZm9yIHRhYmxlcyBpbiBtZW1vcnkgdGhhdCBjYW5u
b3QgZ3Jvdy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHd0Zi9PU0FsbG9jYXRvci5oOgorICAgICAgICAqIHd0Zi9QYWdlQmxvY2suaDoKKyAg
ICAgICAgKFdURjo6UGFnZUJsb2NrOjpQYWdlQmxvY2spOgorICAgICAgICAqIHd0Zi9QYWdlUmVz
ZXJ2YXRpb24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKToKKyAg
ICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlV2l0aEd1YXJkUGFnZXMpOgorICAg
ICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdl
cyk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZUFuZENvbW1pdFdpdGhH
dWFyZFJlZ2lvbnMpOgorICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OlBhZ2VSZXNlcnZh
dGlvbik6CisgICAgICAgICogd3RmL1BsYXRmb3JtQ2FsbGluZ0NvbnZlbnRpb25zLmg6CisgICAg
ICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisgICAgICAgICogd3RmL1B0clRhZy5oOgorICAg
ICAgICAoV1RGOjp0YWdDb2RlUHRySW1wbCk6CisgICAgICAgIChXVEY6OnVudGFnQ29kZVB0cklt
cGxIZWxwZXIpOgorICAgICAgICAoV1RGOjp1bnRhZ0NvZGVQdHJJbXBsKToKKyAgICAgICAgKFdU
Rjo6cmV0YWdDb2RlUHRySW1wbEhlbHBlcik6CisgICAgICAgICogd3RmL1N0YXRpY1B0ckhhc2hT
ZXQuaDogQWRkZWQuCisgICAgICAgIChXVEY6OlN0YXRpY1B0ckhhc2hTZXQ6OlN0YXRpY1B0ckhh
c2hTZXQpOgorICAgICAgICAoV1RGOjpTdGF0aWNQdHJIYXNoU2V0Ojpjb250YWlucyk6CisgICAg
ICAgIChXVEY6OlN0YXRpY1B0ckhhc2hTZXQ6OmFkZCk6CisgICAgICAgIChXVEY6OlN0YXRpY1B0
ckhhc2hTZXQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV1RGOjpTdGF0aWNQdHJIYXNoU2V0Ojpo
YXNoKToKKyAgICAgICAgKFdURjo6U3RhdGljUHRySGFzaFNldDo6bWF4TG9hZCBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlN0YXRpY1B0ckhhc2hTZXQ6OmNhc3QpOgorICAgICAgICAqIHd0Zi9wb3Np
eC9PU0FsbG9jYXRvclBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2Vy
dmVVbmNvbW1pdHRlZCk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29t
bWl0KToKKwogMjAyMC0wMy0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGFuZGxlIGFuIG91dCBvZiBtZW1vcnkgZXJyb3Igd2hpbGUgY29uc3RydWN0aW5nIHRo
ZSBCeXRlY29kZUdlbmVyYXRvci4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDI3LDYgKzQyNyw3IEBACiAJCTVG
QUQzQUUxMjFCOTYzNjYwMEJFRTE3OCAvKiBVUkxIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTQxQ0FGNDE2MzBEQjI2MDA2RDBERUMgLyogQ29weVdURkhlYWRlcnMueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29weVdURkhlYWRlcnMueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OTNDREU5MjJGQTRBNTIwMDg3
NzE0QiAvKiBQcm9jZXNzTWVtb3J5Rm9vdHByaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByb2Nlc3NNZW1vcnlGb290cHJpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNjVFN0Y1QzMyM0NEM0VFQzAwMDRFREUxIC8qIFN0YXRpY1B0ckhhc2hTZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljUHRySGFzaFNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3lt
Ym9sUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lt
Ym9sUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEE5OTNGRDFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3ltYm9sUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21TdHJpbmdJbXBsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF0b21TdHJpbmdJbXBsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyMjcsNiArMTIyOCw3IEBACiAJCQkJRkVEQUNEM0Mx
NjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLywKIAkJCQkzMTNFREVDOTc3OEU0OUM5
QkVBOTFDRkMgLyogU3RhY2tUcmFjZS5jcHAgKi8sCiAJCQkJRUY3RDZDRDU5RDg2NDJBOEEwREE4
NkFEIC8qIFN0YWNrVHJhY2UuaCAqLywKKwkJCQk2NUU3RjVDMzIzQ0QzRUVDMDAwNEVERTEgLyog
U3RhdGljUHRySGFzaFNldC5oICovLAogCQkJCUE4QTQ3MzExMTUxQTgyNUIwMDQxMjNGRiAvKiBT
dGRMaWJFeHRyYXMuaCAqLywKIAkJCQlGRjBBNDM2NTg4OTU0RjNDQjA3REJFQ0EgLyogU3RkTGlz
dC5oICovLAogCQkJCTM5MUJENkJBNEQxNjRGRDI5NEY5QTkzRCAvKiBTdGRNYXAuaCAqLywKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvT1NBbGxvY2F0b3IuaAkocmV2aXNpb24gMjU3OTI3KQorKysgU291cmNlL1dURi93dGYv
T1NBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgRmFzdE1hbGxvY1BhZ2VzID0gVk1fVEFHX0ZPUl9UQ01BTExPQ19NRU1PUlksCiAg
ICAgICAgIEpTSklUQ29kZVBhZ2VzID0gVk1fVEFHX0ZPUl9FWEVDVVRBQkxFQUxMT0NBVE9SX01F
TU9SWSwKICAgICB9OworICAgIAorICAgIGVudW0gR3VhcmRzIHsKKyAgICAgICAgTm9HdWFyZHMg
PSAwLAorICAgICAgICBHdWFyZFBhZ2VzLAorICAgICAgICBHdWFyZFJlZ2lvbnMKKyAgICB9Owog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlVW5jb21taXR0ZWQg
YWxsb2NhdGVzIFZNIGluIGFuIHVuY29tbWl0dGVkIHN0YXRlLAogICAgIC8vIHJlbGVhc2VEZWNv
bW1pdHRlZCBzaG91bGQgYmUgY2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBh
IHNpbmdsZSByZXNlcnZhdGlvbiwKICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRs
eSBiZSBpbiBhIGRlY29tbWl0dGVkIHN0YXRlLiByZXNlcnZlVW5jb21taXR0ZWQgcmV0dXJucyB0
bwogICAgIC8vIHlvdSBtZW1vcnkgdGhhdCBpcyB6ZXJvZWQuCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25v
d25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBi
b29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5rbm93blVz
YWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIEd1YXJk
cyBndWFyZHMgPSBOb0d1YXJkcyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsKIAogICAgIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIHN5bW1ldHJpYzsgdGhleSBjb21taXQgb3IgZGVjb21taXQgYSByZWdpb24gb2YgVk0g
KHVuY29tbWl0dGVkIFZNIHNob3VsZApAQCAtNTUsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRlcyBW
TSBpbiBhbiBjb21taXR0ZWQgc3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNob3Vs
ZCBiZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2Vy
dmF0aW9uLAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgY29t
bWl0dGVkIHN0YXRlLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2
ZUFuZENvbW1pdChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0g
dHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0g
ZmFsc2UpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENv
bW1pdChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UsIEd1YXJkcyBndWFyZHMgPSBOb0d1YXJkcywgc2l6ZV90
IGd1YXJkU2l6ZSA9IDApOwogICAgIHN0YXRpYyB2b2lkIGRlY29tbWl0QW5kUmVsZWFzZSh2b2lk
KiBiYXNlLCBzaXplX3Qgc2l6ZSk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBha2luIHRv
IHJlc2VydmVBbmRDb21taXQvZGVjb21taXRBbmRSZWxlYXNlLCBhYm92ZSAtIGhvd2V2ZXIgcmF0
aGVyIHRoYW4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BhZ2VCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BhZ2VCbG9jay5oCShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9QYWdlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksOCBAQCBwdWJs
aWM6CiAgICAgUGFnZUJsb2NrKCk7CiAgICAgUGFnZUJsb2NrKGNvbnN0IFBhZ2VCbG9jayYpOwog
ICAgIFBhZ2VCbG9jayh2b2lkKiwgc2l6ZV90LCBib29sIGhhc0d1YXJkUGFnZXMpOwotICAgIAor
ICAgIFBhZ2VCbG9jayh2b2lkKiwgdm9pZCosIHNpemVfdCk7CisKICAgICB2b2lkKiBiYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KIApAQCAtNzgsNiArNzksMTMgQEAgaW5saW5lIFBhZ2VCbG9jazo6UGFnZUJs
b2NrKHZvaWQqIGJhc2UsIAogewogfQogCitpbmxpbmUgUGFnZUJsb2NrOjpQYWdlQmxvY2sodm9p
ZCogcmVhbEJhc2UsIHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQorICAgIDogbV9yZWFsQmFzZShy
ZWFsQmFzZSkKKyAgICAsIG1fYmFzZShiYXNlKQorICAgICwgbV9zaXplKHNpemUpCit7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OnBhZ2VTaXplOwpJbmRleDogU291cmNl
L1dURi93dGYvUGFnZVJlc2VydmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UGFnZVJlc2VydmF0aW9uLmgJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9XVEYvd3RmL1Bh
Z2VSZXNlcnZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05NiwyMSArOTYsMzggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxv
Y2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0
YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkpOwotICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9u
KE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBl
eGVjdXRhYmxlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNp
emUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRh
YmxlLCBPU0FsbG9jYXRvcjo6Tm9HdWFyZHMpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgUGFn
ZVJlc2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0
b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJs
ZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGlzUGFnZUFsaWduZWQoc2l6ZSkpOwotICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9T
QWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2Fn
ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJs
ZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJl
c2VydmVVbmNvbW1pdHRlZChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwg
ZXhlY3V0YWJsZSwgT1NBbGxvY2F0b3I6Okd1YXJkUGFnZXMpLCBzaXplLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSwgdHJ1ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNl
cnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2Fn
ZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVl
LCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VB
bGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRv
cjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJs
ZSwgZXhlY3V0YWJsZSwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsK
KyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENv
bW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwg
T1NBbGxvY2F0b3I6Okd1YXJkUGFnZXMpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1
ZSk7CiAgICAgfQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2
YXRpb24gcmVzZXJ2ZUFuZENvbW1pdFdpdGhHdWFyZFJlZ2lvbnMoc2l6ZV90IHNpemUsIE9TQWxs
b2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3Jp
dGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHNpemVf
dCBndWFyZFNpemUgPSAxMjggKiAxMDI0ICogMTAyNDsKKyNlbHNlCisjZXJyb3IoIlVua25vd24g
Z3VhcmQgc2l6ZSBmb3IgQ1BVIGluIHJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRSZWdpb25zKCki
KQorI2VuZGlmCisgICAgICAgIEFTU0VSVChzaXplIDw9IGd1YXJkU2l6ZSk7CisgICAgICAgIHZv
aWQqIHJlYWxCYXNlID0gT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIGd1YXJk
U2l6ZSAqIDMsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgT1NBbGxvY2F0b3I6Okd1YXJk
UmVnaW9ucywgZ3VhcmRTaXplKTsKKyAgICAgICAgaW50cHRyX3QgcmVhbEJhc2VBc0ludCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHJlYWxCYXNlKTsKKyAgICAgICAgdm9pZCogYmFzZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlYWxCYXNlQXNJbnQgKyAocmVhbEJhc2VBc0ludCAm
ICgxIDw8IDI3KSA/IDEgOiAyKSAqIGd1YXJkU2l6ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVz
ZXJ2YXRpb24ocmVhbEJhc2UsIGJhc2UsIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKKyAg
ICB9CisjZW5kaWYKKwogICAgIHZvaWQgZGVhbGxvY2F0ZSgpCiAgICAgewogICAgICAgICBBU1NF
UlQoIW1fY29tbWl0dGVkKTsKQEAgLTEzNSw2ICsxNTIsMTQgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgfQogCisgICAgUGFnZVJlc2VydmF0aW9uKHZvaWQqIHJlYWxCYXNlLCB2b2lkKiBiYXNlLCBz
aXplX3Qgc2l6ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQorICAgICAgICA6IFBh
Z2VCbG9jayhyZWFsQmFzZSwgYmFzZSwgc2l6ZSkKKyAgICAgICAgLCBtX2NvbW1pdHRlZCgwKQor
ICAgICAgICAsIG1fd3JpdGFibGUod3JpdGFibGUpCisgICAgICAgICwgbV9leGVjdXRhYmxlKGV4
ZWN1dGFibGUpCisgICAgeworICAgIH0KKwogICAgIHNpemVfdCBtX2NvbW1pdHRlZDsKICAgICBi
b29sIG1fd3JpdGFibGU7CiAgICAgYm9vbCBtX2V4ZWN1dGFibGU7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUNhbGxpbmdDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtQ2FsbGluZ0NvbnZlbnRpb25zLmgJKHJldmlzaW9uIDI1NzkyNykKKysr
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtQ2FsbGluZ0NvbnZlbnRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAKIC8qIE1hY3JvcyBmb3Igc3BlY2lmaW5nIHNwZWNpZmljIGNh
bGxpbmcgY29udmVudGlvbnMuICovCiAKIAorI2lmbmRlZiBKU0NfSE9TVF9DQUxMCiAjaWYgQ1BV
KFg4NikgJiYgQ09NUElMRVIoTVNWQykKICNkZWZpbmUgSlNDX0hPU1RfQ0FMTCBfX2Zhc3RjYWxs
CiAjZWxpZiBDUFUoWDg2KSAmJiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKQEAgLTQxLDYgKzQy
LDcgQEAKICNlbHNlCiAjZGVmaW5lIEpTQ19IT1NUX0NBTEwKICNlbmRpZgorI2VuZGlmCiAKICNp
ZiBDUFUoWDg2KSAmJiBPUyhXSU5ET1dTKQogI2RlZmluZSBDQUxMSU5HX0NPTlZFTlRJT05fSVNf
U1REQ0FMTCAxCkBAIC02OCw4ICs3MCwxMCBAQAogI2RlZmluZSBXVEZfQ09NUElMRVJfU1VQUE9S
VFNfRkFTVENBTExfQ0FMTElOR19DT05WRU5USU9OIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQo
SklUX09QRVJBVElPTikKICNpZiBFTkFCTEUoSklUKSAmJiBDQUxMSU5HX0NPTlZFTlRJT05fSVNf
U1REQ0FMTAogI2RlZmluZSBKSVRfT1BFUkFUSU9OIENERUNMCiAjZWxzZQogI2RlZmluZSBKSVRf
T1BFUkFUSU9OCiAjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1F
bmFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCShy
ZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MjEsNiArNzIxLDEwIEBACiAjZGVmaW5lIEVOQUJMRV9TRVBBUkFURURf
V1hfSEVBUCAxCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIENQVShBUk02
NCkgJiYgIWRlZmluZWQoRU5BQkxFX0pJVF9DQUdFKQorI2RlZmluZSBFTkFCTEVfSklUX0NBR0Ug
MQorI2VuZGlmCisKIC8qIERldGVybWluZSBpZiB3ZSBuZWVkIHRvIGVuYWJsZSBDb21wdXRlZCBH
b3RvIE9wY29kZXMgb3Igbm90OiAqLwogI2lmIEhBVkUoQ09NUFVURURfR09UTykgfHwgIUVOQUJM
RShDX0xPT1ApCiAjZGVmaW5lIEVOQUJMRV9DT01QVVRFRF9HT1RPX09QQ09ERVMgMQpJbmRleDog
U291cmNlL1dURi93dGYvUHRyVGFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHRy
VGFnLmgJKHJldmlzaW9uIDI1NzkyNykKKysrIFNvdXJjZS9XVEYvd3RmL1B0clRhZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw5ICszMCwxNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorI2lmIEVO
QUJMRShKSVRfQ0FHRSkKICNkZWZpbmUgRk9SX0VBQ0hfQkFTRV9XVEZfUFRSVEFHKHYpIFwKICAg
ICB2KE5vUHRyVGFnKSBcCiAgICAgdihDRnVuY3Rpb25QdHJUYWcpIFwKKyAgICB2KEpJVENhZ2VQ
dHJUYWcpCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9CQVNFX1dURl9QVFJUQUcodikgXAorICAg
IHYoTm9QdHJUYWcpIFwKKyAgICB2KENGdW5jdGlvblB0clRhZykKKyNlbmRpZgogCiAjZGVmaW5l
IEZPUl9FQUNIX0FERElUSU9OQUxfV1RGX1BUUlRBRyh2KSBcCiAgICAgdihGcmVlU3BhY2VQdHJU
YWcpIFwKQEAgLTQ3LDggKzU0LDE1IEBAIG5hbWVzcGFjZSBXVEYgewogZW51bSBQdHJUYWcgOiB1
aW50cHRyX3QgewogICAgIE5vUHRyVGFnLAogICAgIENGdW5jdGlvblB0clRhZywKKyNpZiBFTkFC
TEUoSklUX0NBR0UpCisgICAgSklUQ2FnZVB0clRhZyA9IDB4Y2FjOTc4MDAwMDAwMDAwMFVMCisj
ZW5kaWYKIH07CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitjb25zdCBpbnRwdHJfdCBKSVRDYWdl
UHRyVGFnTWFzayA9IDB4MDAwMDAwZmZmZmZmZmZmZlVMOworI2VuZGlmCisKICNpZiBDUFUoQVJN
NjRFKQogI2RlZmluZSBXVEZfUFRSVEFHX0hBU0godGFnKSBwdHJhdXRoX3N0cmluZ19kaXNjcmlt
aW5hdG9yKCN0YWcpCiAKQEAgLTY2LDkgKzgwLDE1IEBAIGNvbnN0ZXhwciB1aW50cHRyX3QgbWFr
ZVB0clRhZ0hhc2goY29uc3QKICNkZWZpbmUgV1RGX1BUUlRBR19IQVNIKHRhZykgV1RGOjptYWtl
UHRyVGFnSGFzaCgjdGFnKQogI2VuZGlmIC8vIG5vdCBDUFUoQVJNNjRFKQogCisjaWYgRU5BQkxF
KEpJVF9DQUdFKQorI2RlZmluZSBXVEZfREVDTEFSRV9QVFJUQUcodGFnKSBcCisgICAgY29uc3Rl
eHByIFB0clRhZyB0YWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURl9QVFJUQUdfSEFTSCgjdGFn
KSk7IFwKKyAgICBzdGF0aWNfYXNzZXJ0KHRhZyAhPSBOb1B0clRhZyAmJiB0YWcgIT0gQ0Z1bmN0
aW9uUHRyVGFnICYmIHRhZyAhPSBKSVRDYWdlUHRyVGFnLCAiIik7CisjZWxzZQogI2RlZmluZSBX
VEZfREVDTEFSRV9QVFJUQUcodGFnKSBcCiAgICAgY29uc3RleHByIFB0clRhZyB0YWcgPSBzdGF0
aWNfY2FzdDxQdHJUYWc+KFdURl9QVFJUQUdfSEFTSCgjdGFnKSk7IFwKICAgICBzdGF0aWNfYXNz
ZXJ0KHRhZyAhPSBOb1B0clRhZyAmJiB0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnLCAiIik7CisjZW5k
aWYKIAogc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KE5vUHRyVGFnKSA9PSBz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KDApLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oQ0Z1bmN0aW9uUHRyVGFnKSA9PSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
LCAiIik7CkBAIC0xNzYsNiArMTk2LDEwIEBAIGlubGluZSBQdHJUeXBlIHRhZ0NvZGVQdHJJbXBs
KFB0clR5cGUgcHQKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICBpZiAodGFnID09IENGdW5jdGlv
blB0clRhZykKICAgICAgICAgcmV0dXJuIHB0cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQocHRy
LCBwdHJhdXRoX2tleV9mdW5jdGlvbl9wb2ludGVyLCAwKTsKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgaWYgKHRhZyA9PSBKSVRDYWdlUHRyVGFnKQorICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxQdHJUeXBlPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSB8IEpJVENh
Z2VQdHJUYWcpOworI2VuZGlmCiAgICAgcmV0dXJuIHB0cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0
ZWQocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCB0YWcpOwogfQogCkBA
IC0yMDcsNiArMjMxLDEwIEBAIGlubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0ckltcGxIZWxwZXIo
UHQKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykK
ICAgICAgICAgcmV0dXJuIF9fYnVpbHRpbl9wdHJhdXRoX2F1dGgocHRyLCBwdHJhdXRoX2tleV9m
dW5jdGlvbl9wb2ludGVyLCAwKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKHRhZyA9
PSBKSVRDYWdlUHRyVGFnKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdHJUeXBl
PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSAmIEpJVENhZ2VQdHJUYWdNYXNrKTsK
KyNlbmRpZgogICAgIHJldHVybiBfX2J1aWx0aW5fcHRyYXV0aF9hdXRoKHB0ciwgcHRyYXV0aF9r
ZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgdGFnKTsKIH0KIApAQCAtMjE2LDcgKzI0NCwxMiBA
QCBpbmxpbmUgUHRyVHlwZSB1bnRhZ0NvZGVQdHJJbXBsKFB0clR5cGUgCiAgICAgaWYgKCFwdHIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFB0clR5cGUgcmVzdWx0ID0gdW50YWdDb2Rl
UHRySW1wbEhlbHBlcihwdHIsIHRhZyk7Ci0gICAgV1RGX1BUUlRBR19BU1NFUlQodGFnQWN0aW9u
LCBwdHIsIHRhZywgcmVtb3ZlQ29kZVB0clRhZyhwdHIpID09IHJlc3VsdCk7CisjaWYgRU5BQkxF
KEpJVF9DQUdFKQorICAgIGlmICh0YWcgPT0gSklUQ2FnZVB0clRhZykKKyAgICAgICAgV1RGX1BU
UlRBR19BU1NFUlQodGFnQWN0aW9uLCBwdHIsIHRhZywgcmVpbnRlcnByZXRfY2FzdDxQdHJUeXBl
PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSAmIEpJVENhZ2VQdHJUYWdNYXNrKSA9
PSByZXN1bHQpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBXVEZfUFRSVEFHX0FTU0VSVCh0
YWdBY3Rpb24sIHB0ciwgdGFnLCByZW1vdmVDb2RlUHRyVGFnKHB0cikgPT0gcmVzdWx0KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNTAsNiArMjgzLDEwIEBAIGlubGluZSBQdHJUeXBl
IHJldGFnQ29kZVB0ckltcGxIZWxwZXIoUHQKICAgICAgICAgcmV0dXJuIHVudGFnQ29kZVB0cklt
cGw8dGFnQWN0aW9uPihwdHIsIG9sZFRhZyk7CiAgICAgaWYgKG9sZFRhZyA9PSBOb1B0clRhZykK
ICAgICAgICAgcmV0dXJuIHRhZ0NvZGVQdHJJbXBsPHRhZ0FjdGlvbj4ocHRyLCBuZXdUYWcpOwor
I2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAob2xkVGFnID09IEpJVENhZ2VQdHJUYWcgfHwg
bmV3VGFnID09IEpJVENhZ2VQdHJUYWcpCisgICAgICAgIHJldHVybiB0YWdDb2RlUHRySW1wbDx0
YWdBY3Rpb24+KHVudGFnQ29kZVB0ckltcGw8dGFnQWN0aW9uPihwdHIsIG9sZFRhZyksIG5ld1Rh
Zyk7CisjZW5kaWYKICAgICBpZiAob2xkVGFnID09IENGdW5jdGlvblB0clRhZykKICAgICAgICAg
cmV0dXJuIHB0cmF1dGhfYXV0aF9hbmRfcmVzaWduKHB0ciwgcHRyYXV0aF9rZXlfZnVuY3Rpb25f
cG9pbnRlciwgMCwgcHRyYXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgbmV3VGFnKTsK
ICAgICBpZiAobmV3VGFnID09IENGdW5jdGlvblB0clRhZykKQEAgLTU2MSw2ICs1OTgsOSBAQCBp
bmxpbmUgYm9vbCB1c2VzUG9pbnRlclRhZ2dpbmcoKSB7IHJldHVyCiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQordXNpbmcgV1RGOjpKSVRDYWdlUHRyVGFnOwor
I2VuZGlmCiB1c2luZyBXVEY6OkNGdW5jdGlvblB0clRhZzsKIHVzaW5nIFdURjo6Tm9QdHJUYWc7
CiB1c2luZyBXVEY6OlBsYXRmb3JtUmVnaXN0ZXJzTFJQdHJUYWc7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TdGF0aWNQdHJIYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3Rh
dGljUHRySGFzaFNldC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0YXRpY1B0
ckhhc2hTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisK
K25hbWVzcGFjZSBXVEYgeworCisvLyBUaGlzIGlzIGEgZml4ZWQgc2l6ZWQgaGFzaC1iYXNlZCBz
ZXQgZm9yIHBvaW50ZXJzLiBJdCdzIG9wdGltaXplZCBmb3I6CisvLworLy8gLSBBZGRpbmcgZW50
cmllcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHRoZW4gY2hlY2tpbmcgZm9yIHNldCBtZW1i
ZXJzaGlwIHF1aWNrbHkuCisvLyAtIEhpZ2ggcmF0ZSBvZiBjb250YWlucygpIGNhbGxzLgorLy8g
LSBJdCBjYW4gYmUgZnJvemVuLCBpLmUuIG1hZGUgaW1tdXRhYmxlIGJ5IGxvY2tpbmcgZG93biBp
dHMgbWVtb3J5LgorLy8gLSBJdCBpcyB0aHJlYWRzYWZlIGZvciBjb250YWlucygpIG9ubHkgY2Fs
bHMuCisvLworLy8gU3RhdGljUHRySGFzaFNldCdzIGluaXRpYWwgbWFpbiB1c2VyLCBpcyB0aGUg
SklUIHBvaW50ZXIgd2hpdGUgbGlzdC4KK3RlbXBsYXRlIDx1bnNpZ25lZCBTaXplPgorY2xhc3Mg
U3RhdGljUHRySGFzaFNldCAgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0YXRpY1B0ckhh
c2hTZXQpOworCitwdWJsaWM6CisgICAgU3RhdGljUHRySGFzaFNldCgpCisgICAgICAgIDogbV9z
aXplKFNpemUpCisgICAgICAgICwgbV9tYXNrKFNpemUgLSAxKQorICAgICAgICAsIG1fY291bnQo
MCkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBib29sIGNv
bnRhaW5zKFQgdmFsdWUpCisgICAgeworICAgICAgICB2b2lkKiBwdHIgPSBjYXN0KHZhbHVlKTsK
KworICAgICAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gaGFzaChwdHIpICYgbV9tYXNrOworICAg
ICAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgIGZvciAoOzspIHsKKyAg
ICAgICAgICAgIHZvaWQqIGVudHJ5ID0gbV90YWJsZVtpbmRleF07CisgICAgICAgICAgICBpZiAo
IWVudHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChl
bnRyeSA9PSBwdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBp
bmRleCA9IChpbmRleCArIDEpICYgbV9tYXNrOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aW5kZXggIT0gc3RhcnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICBib29sIGFkZChUIHZhbHVlKQorICAgIHsKKyAgICAgICAgdm9p
ZCogcHRyID0gY2FzdCh2YWx1ZSk7CisKKyAgICAgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IGhh
c2gocHRyKSAmIG1fbWFzazsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGFydEluZGV4Owor
ICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICB2b2lkKiBlbnRyeSA9IG1fdGFibGVbaW5k
ZXhdOworICAgICAgICAgICAgaWYgKCFlbnRyeSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCgr
K21fY291bnQgPCBtYXhMb2FkKCkpOworCisgICAgICAgICAgICAgICAgbV90YWJsZVtpbmRleF0g
PSBwdHI7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IAorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGVudHJ5ID09IHB0cikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBpbmRleCA9IChpbmRleCArIDEpICYgbV9tYXNrOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaW5kZXggIT0gc3RhcnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICAKK3By
aXZhdGU6CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2godm9pZCogcHRyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFB0ckhhc2g8dm9pZCo+OjpoYXNoKHB0cik7CisgICAgfQorICAgIAorICAgIHVu
c2lnbmVkIG1heExvYWQoKSBjb25zdCB7IHJldHVybiBtX3NpemUgLyAyOyB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQqIGNhc3QoVCB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVvZih2b2lkKiksICJ0eXBlIHRvbyBiaWci
KTsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgdm9pZCogcHRyOworICAgICAgICAgICAg
VCB2YWx1ZTsKKyAgICAgICAgfSB1OworICAgICAgICB1LnB0ciA9IG51bGxwdHI7CisgICAgICAg
IHUudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHUucHRyOworICAgIH0KKworICAgIGJv
b2wgYWRkU2xvdyh1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBpbmRleCwgdm9pZCogcHRy
KTsKKworICAgIHZvaWQqIG1fdGFibGVbU2l6ZV0gPSB7IG51bGxwdHIgfTsKKyAgICAgICAgCisg
ICAgdW5zaWduZWQgbV9zaXplOworICAgIHVuc2lnbmVkIG1fbWFzazsKKyAgICB1bnNpZ25lZCBt
X2NvdW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3RhdGljUHRy
SGFzaFNldDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3Bw
CShyZXZpc2lvbiAyNTc5MjcpCisrKyBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBP
U0lYLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjAgKzMzLDIxIEBACiAKIG5hbWVzcGFjZSBX
VEYgewogCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRl
cywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNs
dWRlc0d1YXJkUGFnZXMpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNp
emVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwg
R3VhcmRzIGd1YXJkcykKIHsKKyAgICBBU1NFUlQoZ3VhcmRzICE9IEd1YXJkUmVnaW9ucyk7CiAj
aWYgT1MoTElOVVgpCiAgICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKICAgICBVTlVTRURfUEFSQU0o
d3JpdGFibGUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjdXRhYmxlKTsKLSAgICBVTlVTRURfUEFS
QU0oaW5jbHVkZXNHdWFyZFBhZ2VzKTsKKyAgICBVTlVTRURfUEFSQU0oZ3VhcmRzKTsKIAogICAg
IHZvaWQqIHJlc3VsdCA9IG1tYXAoMCwgYnl0ZXMsIFBST1RfTk9ORSwgTUFQX05PUkVTRVJWRSB8
IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKICAgICBpZiAocmVzdWx0ID09IE1BUF9G
QUlMRUQpCiAgICAgICAgIENSQVNIKCk7CiAgICAgbWFkdmlzZShyZXN1bHQsIGJ5dGVzLCBNQURW
X0RPTlRORUVEKTsKICNlbHNlCi0gICAgdm9pZCogcmVzdWx0ID0gcmVzZXJ2ZUFuZENvbW1pdChi
eXRlcywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBpbmNsdWRlc0d1YXJkUGFnZXMpOwor
ICAgIHZvaWQqIHJlc3VsdCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJs
ZSwgZXhlY3V0YWJsZSwgZ3VhcmRzKTsKICNpZiBIQVZFKE1BRFZfRlJFRV9SRVVTRSkKICAgICBp
ZiAocmVzdWx0KSB7CiAgICAgICAgIC8vIFRvIHN1cHBvcnQgdGhlICJyZXNlcnZlIHRoZW4gY29t
bWl0IiBtb2RlbCwgd2UgaGF2ZSB0byBpbml0aWFsbHkgZGVjb21taXQuCkBAIC01OSw4ICs2MCw5
IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2kKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3Qg
Ynl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wg
aW5jbHVkZXNHdWFyZFBhZ2VzKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQo
c2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxl
LCBHdWFyZHMgZ3VhcmRzLCBzaXplX3QgZ3VhcmRTaXplKQogeworICAgIFVOVVNFRF9QQVJBTShn
dWFyZFNpemUpOwogICAgIC8vIEFsbCBQT1NJWCByZXNlcnZhdGlvbnMgc3RhcnQgb3V0IGxvZ2lj
YWxseSBjb21taXR0ZWQuCiAgICAgaW50IHByb3RlY3Rpb24gPSBQUk9UX1JFQUQ7CiAgICAgaWYg
KHdyaXRhYmxlKQpAQCAtODQsNyArODYsNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFu
ZENvbW1pdChzaXplCiAgICAgdm9pZCogcmVzdWx0ID0gMDsKICNpZiAoT1MoREFSV0lOKSAmJiBD
UFUoWDg2XzY0KSkKICAgICBpZiAoZXhlY3V0YWJsZSkgewotICAgICAgICBBU1NFUlQoaW5jbHVk
ZXNHdWFyZFBhZ2VzKTsKKyAgICAgICAgQVNTRVJUKGd1YXJkcyA9PSBPU0FsbG9jYXRvcjo6R3Vh
cmRQYWdlcyk7CiAgICAgICAgIC8vIENvb2sgdXAgYW4gYWRkcmVzcyB0byBhbGxvY2F0ZSBhdCwg
dXNpbmcgdGhlIGZvbGxvd2luZyByZWNpcGU6CiAgICAgICAgIC8vICAgMTcgYml0cyBvZiB6ZXJv
LCBzdGF5IGluIHVzZXJzcGFjZSBraWRzLgogICAgICAgICAvLyAgIDI2IGJpdHMgb2YgcmFuZG9t
bmVzcyBmb3IgQVNMUi4KQEAgLTEwOSwxMyArMTExLDM2IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpy
ZXNlcnZlQW5kQ29tbWl0KHNpemUKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQ1JBU0goKTsK
ICAgICB9Ci0gICAgaWYgKHJlc3VsdCAmJiBpbmNsdWRlc0d1YXJkUGFnZXMpIHsKLSAgICAgICAg
Ly8gV2UgdXNlIG1tYXAgdG8gcmVtYXAgdGhlIGd1YXJkcGFnZXMgcmF0aGVyIHRoYW4gdXNpbmcg
bXByb3RlY3QgYXMKLSAgICAgICAgLy8gbXByb3RlY3QgcmVzdWx0cyBpbiBtdWx0aXBsZSByZWZl
cmVuY2VzIHRvIHRoZSBjb2RlIHJlZ2lvbi4gVGhpcwotICAgICAgICAvLyBicmVha3MgdGhlIG1h
ZHZpc2UgYmFzZWQgbWVjaGFuaXNtIHdlIHVzZSB0byByZXR1cm4gcGh5c2ljYWwgbWVtb3J5Ci0g
ICAgICAgIC8vIHRvIHRoZSBPUy4KLSAgICAgICAgbW1hcChyZXN1bHQsIHBhZ2VTaXplKCksIFBS
T1RfTk9ORSwgTUFQX0ZJWEVEIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgZmQsIDApOwotICAg
ICAgICBtbWFwKHN0YXRpY19jYXN0PGNoYXIqPihyZXN1bHQpICsgYnl0ZXMgLSBwYWdlU2l6ZSgp
LCBwYWdlU2l6ZSgpLCBQUk9UX05PTkUsIE1BUF9GSVhFRCB8IE1BUF9QUklWQVRFIHwgTUFQX0FO
T04sIGZkLCAwKTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIGlmIChndWFyZHMgPT0gR3Vh
cmRQYWdlcykgeworICAgICAgICAgICAgLy8gV2UgdXNlIG1tYXAgdG8gcmVtYXAgdGhlIGd1YXJk
cGFnZXMgcmF0aGVyIHRoYW4gdXNpbmcgbXByb3RlY3QgYXMKKyAgICAgICAgICAgIC8vIG1wcm90
ZWN0IHJlc3VsdHMgaW4gbXVsdGlwbGUgcmVmZXJlbmNlcyB0byB0aGUgY29kZSByZWdpb24uIFRo
aXMKKyAgICAgICAgICAgIC8vIGJyZWFrcyB0aGUgbWFkdmlzZSBiYXNlZCBtZWNoYW5pc20gd2Ug
dXNlIHRvIHJldHVybiBwaHlzaWNhbCBtZW1vcnkKKyAgICAgICAgICAgIC8vIHRvIHRoZSBPUy4K
KyAgICAgICAgICAgIG1tYXAocmVzdWx0LCBwYWdlU2l6ZSgpLCBQUk9UX05PTkUsIE1BUF9GSVhF
RCB8IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIGZkLCAwKTsKKyAgICAgICAgICAgIG1tYXAoc3Rh
dGljX2Nhc3Q8Y2hhcio+KHJlc3VsdCkgKyBieXRlcyAtIHBhZ2VTaXplKCksIHBhZ2VTaXplKCks
IFBST1RfTk9ORSwgTUFQX0ZJWEVEIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgZmQsIDApOwor
I2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgfSBlbHNlIGlmIChndWFyZHMgPT0gR3VhcmRS
ZWdpb25zKSB7CisgICAgICAgICAgICB2b2lkKiBiYXNlOworICAgICAgICAgICAgdm9pZCogcG9z
dEd1YXJkU3RhcnQ7CisgICAgICAgICAgICBzaXplX3QgcHJlR3VhcmRTaXplOworICAgICAgICAg
ICAgc2l6ZV90IHBvc3RHdWFyZFNpemU7CisgICAgICAgICAgICBpbnRwdHJfdCByZXN1bHRBc0lu
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHJlc3VsdCk7CisgICAgICAgICAgICBpZiAo
cmVzdWx0QXNJbnQgJiAoMSA8PCAyNykpIHsKKyAgICAgICAgICAgICAgICBiYXNlID0gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4ocmVzdWx0QXNJbnQgKyBndWFyZFNpemUpOworICAgICAgICAgICAg
ICAgIHByZUd1YXJkU2l6ZSA9IGd1YXJkU2l6ZTsKKyAgICAgICAgICAgICAgICBwb3N0R3VhcmRT
dGFydCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlc3VsdEFzSW50ICsgMiAqIGd1YXJkU2l6
ZSk7CisgICAgICAgICAgICAgICAgcG9zdEd1YXJkU2l6ZSA9IGd1YXJkU2l6ZSAqIDI7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJhc2UgPSByZWludGVycHJldF9jYXN0
PHZvaWQqPihyZXN1bHRBc0ludCArIDIgKiBndWFyZFNpemUpOworICAgICAgICAgICAgICAgIHBy
ZUd1YXJkU2l6ZSA9IDIgKiBndWFyZFNpemU7CisgICAgICAgICAgICAgICAgcG9zdEd1YXJkU3Rh
cnQgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZXN1bHRBc0ludCArIDMgKiBndWFyZFNpemUp
OworICAgICAgICAgICAgICAgIHBvc3RHdWFyZFNpemUgPSBndWFyZFNpemU7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtbWFwKHJlc3VsdCwgcHJlR3VhcmRTaXplLCBQUk9UX05PTkUsIE1B
UF9GSVhFRCB8IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIGZkLCAwKTsKKyAgICAgICAgICAgIG1t
YXAocG9zdEd1YXJkU3RhcnQsIHBvc3RHdWFyZFNpemUsIFBST1RfTk9ORSwgTUFQX0ZJWEVEIHwg
TUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgZmQsIDApOworI2VuZGlmCisgICAgICAgIH0KICAgICB9
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Nzk1NCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTA1ICBNaWNoYWVsIFNh
Ym9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlw
dGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzOgorCiAyMDIwLTAzLTA1ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBJbXBsZW1lbnQgU1BJIC1bX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbERlbGVnYXRlIHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOnNv
dXJjZTpjb21wbGV0aW9uSGFuZGxlcjpdCkluZGV4OiBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFy
ZWRkYXRhL1dvcmtzcGFjZVNldHRpbmdzLnhjc2V0dGluZ3MKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS9Xb3Jrc3BhY2VTZXR0aW5ncy54Y3NldHRpbmdzCShy
ZXZpc2lvbiAyNTc5MjcpCisrKyBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL1dvcmtz
cGFjZVNldHRpbmdzLnhjc2V0dGluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTYsNSArNiw3IEBACiAJ
PHN0cmluZz5PcmlnaW5hbDwvc3RyaW5nPgogCTxrZXk+SURFV29ya3NwYWNlU2hhcmVkU2V0dGlu
Z3NfQXV0b2NyZWF0ZUNvbnRleHRzSWZOZWVkZWQ8L2tleT4KIAk8ZmFsc2UvPgorCTxrZXk+UHJl
dmlld3NFbmFibGVkPC9rZXk+CisJPGZhbHNlLz4KIDwvZGljdD4KIDwvcGxpc3Q+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409448</attachid>
            <date>2020-09-22 20:18:16 -0700</date>
            <delta_ts>2020-09-22 20:25:38 -0700</delta_ts>
            <desc>Work in progress patch</desc>
            <filename>208671-wip2.patch</filename>
            <type>text/plain</type>
            <size>753162</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY3NDU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3OSBA
QAorMjAyMC0wOS0yMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBbSlNDXSBDYWdlIEpJVCBwb2ludGVycyB0byB0aGUgSklUIHJlZ2lvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NjcxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZm9yIEFS
TTY0IGVtaXRzIGluZGlyZWN0IGp1bXBzIGFuZCBjYWxscyB0aHJvdWdoIDEgb2YgMiBjYWdpbmcg
c2VxdWVuY2VzLiAgVGhlc2UgY2FnaW5nCisgICAgICAgIHNlcXVlbmNlcyBhcmUgYWxpZ25lZCBv
biAxNiBieXRlIGJvdW5kYXJpZXMgYW5kIGFyZSAxNiBieXRlcyBpbiBsZW5ndGguICBUaGUgZmly
c3Qgc2VxdWVuY2UgaXMgd2hlbiBnb2luZworICAgICAgICB0byBhIGR5bmFtaWMgZGVzdGluYXRp
b24gaW4gdGhlIEpJVCByZWdpb24uICBUaGluayBvZiBhIHZpcnR1YWwgY2FsbC4gIEluIHRoaXMg
Y2FzZSB3ZSB1c2UgYSBsb2dpY2FsCisgICAgICAgIEFORCBhbmQgYSBzaGlmdGVkIEFERCB0byBm
aXJzdCBiaW5kIHRoZSB0YXJnZXQgdG8gYSAxMjhNIHJlYWNoIGFuZCB0aGVuIHBsYWNlIHRoYXQg
cmVhY2ggYmVnaW5uaW5nIGluCisgICAgICAgIHRoZSBKSVQgcmVnaW9uLiAgVGhlIHNlY29uZCBj
YWdpbmcgc2VxdWVuY2UgaXMgYSBzdGFuZGFyZCAzIGluc3RydWN0aW9uIG1vdmUgd2lkZSBmb2xs
b3dlZCBpbW1lZGlhdGVseQorICAgICAgICBieSBhbiBpbmRpcmVjdCBqdW1wIG9yIGNhbGwuICBU
aGUgdmFsdWUgbWF0ZXJpYWxpemVkIGluIHRoZSBtb3ZlIHdpZGUgc2VxdWVuY2UgbXVzdCBiZSBm
cm9tIGEgcHJlY29tcHV0ZWQKKyAgICAgICAgdmFsaWQgdGFyZ2V0IGxpc3QuCisKKyAgICAgICAg
QWxsIGJyYW5jaCBsYWJlbHMgYXJlIGFsaWduZWQgb24gMTYgYnl0ZSBib3VuZGFyaWVzLCB0byBl
bGltaW5hdGUgdGhlIHBvc3NpYmlsaXR5IHRoYXQgY29kZSBqdW1wcyB0byB0aGUKKyAgICAgICAg
bWlkZGxlIG9mIGEgY2FnaW5nIHNlcXVlbmNlLgorCisgICAgICAgIFdoZW4gSklUJ2VkIGNvZGUg
bmVlZHMgdG8ganVtcCBvciBjYWxsIHRvIEMrKyBjb2RlIGFuZCB0aGUgYnJhbmNoIHRhcmdldCBj
b21lcyBmcm9tIGEgbWVtb3J5IGxvY2F0aW9uCisgICAgICAgIG9yIHJlZ2lzdGVyLCBhIHRyYW1w
b2xpbmUgY29uc2lzdGluZyBvZiBhIGRpcmVjdCBqdW1wIHRvIHRoZSBDKysgZW50cnkgcG9pbnQs
IGluIHRoZSBmb3JtIG9mIHRoZSBzZWNvbmQKKyAgICAgICAgY2FnaW5nIHNlcXVlbmNlIGlzIGdl
bmVyYXRlZCwgYW5kIHRoZSBhZGRyZXNzIG9mIHRoYXQgdHJhbXBvbGluZSBpcyB1c2VkIGFzIHRo
ZSB0YXJnZXQgaW4gSklUJ2VkIGNvZGUuCisKKyAgICAgICAgR2VuZXJhdGVkIEpJVCdlZCBjb2Rl
IGlzIHZlcmlmaWVkIHdoZW4gaXQgaXMgYmVpbmcgY29waWVkIHRvIHRoZSBKSVQgcmVnaW9uIHRv
IGFzc3VyZSB0aGF0IGl0IGNvbXBsaWVzCisgICAgICAgIHdpdGggYWJvdmUgZGVzY3JpYmVkIHNl
cXVlbmNlcyBhbmQgYWxpZ25tZW50cy4KKworICAgICAgICBUaGUgdmFsaWQgdGFyZ2V0IGxpc3Qg
aXMgbW9zdGx5IGdlbmVyYXRlZCB1c2luZyBzZXZlcmFsIG1hY3JvcyBWQUxJRF9KSVRfVEFSR0VU
LCBWQUxJRF9KSVRfVEFSR0VUX0VYUExJQ0lUSUQKKyAgICAgICAgYW5kIFZBTElEX0pTQ19IT1NU
X0NBTEwuIFRoZXNlIG1hY3JvcyBjcmVhdGUgYSBzdGF0aWMgdmFyaWFibGUgdGhhdCBjb250YWlu
cyB0aGUgYWRkcmVzcyBvZiB0aGUgZGVjb3JhdGVkCisgICAgICAgIGZ1bmN0aW9uIGFuZCBwdXRz
IHRoYXQgc3RhdGljIHZhcmlhYmxlIGluIGEgc2VwZXJhdGUgREFUQV9DT05TVCBzZWN0aW9uIGNh
bGxlZCBfX2ppdF90YXJnZXRzLgorICAgICAgICBBdCBpbml0aWFsaXphdGlvbiB0aW1lLCBwb3B1
bGF0ZUpJVFZhbGlkVGFyZ2V0TGlzdCgpIGV4dHJhY3RzIGFsbCB0aG9zZSBwb2ludGVycyBhbmQg
cHV0cyB0aGVtIGluIGEgaGFzaAorICAgICAgICB0YWJsZS4gRm9yIGV4Y2VwdGlvbmFsIGNhc2Vz
LCBsaWtlIHRoZSB2YXJpb3VzIHN5c3RlbSBtYXRoIHJvdXRpbmVzIG9yIHN0YXRpYyBjbGFzcyBm
dW5jdGlvbiwgCisgICAgICAgIHBvcHVsYXRlSklUVmFsaWRUYXJnZXRMaXN0KCkgYWRkcyB0aG9z
ZSB0byB0aGUgdmFsaWQgaml0IHRhcnRnZXQgaGFzaCB0YWJsZS4KKworICAgICAgICBHaXZlbiB0
aGF0IGNhbGxzIHRvIHZhbGlkIHRhcmdldCBsaXN0ZWQgQysrIGZ1bmN0aW9ucyBuZWVkIHRvIGJl
IG1hdGVyaWFsaXplZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlCisgICAgICAgIGluZGlyZWN0IGJy
YW5jaCBpbnN0cnVjdGlvbiwgYXBwcm9wcmlhdGUgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gdGhlIG1h
Y3JvIGFzc2VtYmxlciBhbmQgb3B0aW1pemVkIEpJVCBlbmdpbmVzCisgICAgICAgIHRvIGVuc3Vy
ZSB0aGlzLgorCisgICAgICAgIFRoZSBKSVQgcmVnaW9uIGlzIG5vdyBwYWRkZWQgb24gZWl0aGVy
IHNpZGUgd2l0aCBhdCBsZWFzdCAxMjhNIHVubWFwcGVkIHJlZ2lvbnMgc28gdGhhdCB0aGUgY2Fn
aW5nIHNlcXVlbmNlCisgICAgICAgIHdpbGwga2VlcCBicmFuY2ggdGFyZ2V0IGVpdGhlciB3aXRo
aW4gdGhlIEpJVCByZWdpb24gb3IgdG8gYWRkcmVzc2VzIHRoYXQgd2lsbCBmYXVsdC4gIFRoZSBK
SVQgcmVnaW9uCisgICAgICAgIGNhbiBiZSBjb25maWd1cmVkIHRvIHNpemVzIGxlc3MgdGhhbiAx
MjhNLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
ICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHA6CisgICAgICAgICogQVBJL09iakNDYWxsYmFj
a0Z1bmN0aW9uLm1tOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYXNzZW1ibGVyL0FS
TTY0QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpMaW5rUmVjb3Jk
OjpMaW5rUmVjb3JkKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OkxpbmtSZWNvcmQ6
OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OkxpbmtSZWNvcmQ6OnNl
dFR5cGUpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6TGlua1JlY29yZDo6c2V0TGlu
a1R5cGUpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6TGlua1JlY29yZDo6c2V0SW5z
dHJ1Y3Rpb25Db3VudCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpMaW5rUmVjb3Jk
OjppbnN0cnVjdGlvbkNvdW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6
OkFsaWdubWVudFBvaW50OjpBbGlnbm1lbnRQb2ludCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNz
ZW1ibGVyOjpBbGlnbm1lbnRQb2ludDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6
OkFSTTY0QXNzZW1ibGVyOjpBbGlnbm1lbnRQb2ludDo6b3BlcmF0b3I8IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OkFsaWdubWVudFBvaW50OjpvZmZzZXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6QWxpZ25tZW50UG9pbnQ6OmFkanVzdE9mZnNl
dEJ5KToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OkFsaWdubWVudFBvaW50OjphbGln
bm1lbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6QWxpZ25tZW50UG9p
bnQ6OmFsaWdubWVudEFzT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJs
ZXI6OmZpbGxOb3BzKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmZpbGxEZXNjZW5k
aW5nQnJlYWtzKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmxhYmVsKToKKyAgICAg
ICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmNhZ2VUb0pJVFJlZ2lvbik6CisgICAgICAgIChKU0M6
OkFSTTY0QXNzZW1ibGVyOjphZGRVbmxpbmtlZEp1bXApOgorICAgICAgICAoSlNDOjpBUk02NEFz
c2VtYmxlcjo6cmVtb3ZlVW5saW5rZWRKdW1wKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJs
ZXI6OmxpbmtKdW1wKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmN1cnJlbnRPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6anVtcFNpemVEZWx0YSk6CisgICAg
ICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUpOgorICAgICAgICAoSlND
OjpBUk02NEFzc2VtYmxlcjo6cmVxdWlyZXNBbGlnbmluZyk6CisgICAgICAgIChKU0M6OkFSTTY0
QXNzZW1ibGVyOjpmaWxsZXJJbnNuTmVlZGVkRm9ySW5kaXJlY3RKdW1wQWxpZ25tZW50KToKKyAg
ICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmxheW91dEp1bXApOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6cmV2ZXJ0ZWRKdW1wVG9GaXhlZFNpemUpOgorICAgICAgICAoSlNDOjpB
Uk02NEFzc2VtYmxlcjo6anVtcHNUb0xpbmspOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxl
cjo6YWRkQWxpZ25tZW50UG9pbnQpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6YWxp
Z25tZW50UG9pbnRDb21wYXJhdG9yKToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmFs
aWdubWVudFBvaW50cyk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpsaW5rQ29tcGFy
ZUFuZEJyYW5jaCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpsaW5rQ29uZGl0aW9u
YWxCcmFuY2gpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6bGlua1Rlc3RBbmRCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVsaW5rSnVtcE9yQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpicmtJbnNuKToKKyAgICAgICAgKEpTQzo6QVJN
NjRBc3NlbWJsZXI6OmFsaWduKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJs
ZXI6OmRlYnVnT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRFQXNz
ZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTTY0RUFzc2VtYmxlcjo6c2V0UG9pbnRlcik6Cisg
ICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFSTXY3
QXNzZW1ibGVyOjpqdW1wU2l6ZURlbHRhKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6
OmN1cnJlbnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6QVJNSW5zdHJ1
Y3Rpb25Gb3JtYXR0ZXI6OmN1cnJlbnRPZmZzZXQpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2Vt
Ymxlcjo6ZGVidWdPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxl
cjo6QVJNSW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OmRlYnVnT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpKdW1wOjpsaW5rIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6Y3VycmVudE9mZnNldCk6CisgICAgICAgIChKU0M6OkFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI6OmFsaWduKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjo6ZGVidWdPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGFz
c2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyRGF0YTo6
dGFrZUJ1ZmZlcklmTGFyZ2VyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVyQnVmZmVyOjppc0Fs
aWduZWRUb09mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6Y3Vy
cmVudE9mZnNldCk6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6cHV0SW50ZWdyYWxV
bmNoZWNrZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OmRlYnVnT2Zmc2V0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChK
U0M6OnJlY29yZExpbmtPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6Y29weUFs
aWduQW5kTGlua0NvZGUpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFu
ZExpbmtDb2RlKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bGlua0NvZGUpOgorICAgICAg
ICAoSlNDOjpMaW5rQnVmZmVyOjphbGxvY2F0ZSk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6bG9jYXRpb25PZk5lYXJDYWxsKToK
KyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6dHJhbXBvbGluZUF0KToKKyAgICAgICAgKEpTQzo6
TGlua0J1ZmZlcjo6ZXhlY3V0YWJsZU9mZnNldEZvcik6CisgICAgICAgIChKU0M6OkxpbmtCdWZm
ZXI6OmFwcGx5T2Zmc2V0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oOgor
ICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpjdXJyZW50T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6TUlQU0Fzc2VtYmxlcjo6ZGVidWdPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnByb2JlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphbGlnbm1lbnRQb2ludHMpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpsYXlvdXRKdW1wKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cmV2ZXJ0ZWRKdW1wVG9GaXhlZFNpemUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjphZGRQdHJTaGlmdGVkUmVnKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FnZVRvSklUUmVnaW9uKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TTY0OjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6Om5lYXJDYWxsKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJDYWxsKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cmV0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk02NDo6cmVwYXRjaENhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjptYWtlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6bWFrZUNvbXBhcmVBbmRCcmFuY2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTY0OjptYWtlVGVzdEJpdEFuZEJyYW5jaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNNjQ6OmxpbmtDYWxsKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk02NEUuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnRhZ1JldHVybkFk
ZHJlc3MpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6dW50YWdSZXR1cm5B
ZGRyZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnRhZ1B0cik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjp1bnRhZ1B0cik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpyZW1vdmVQdHJUYWcpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0RTo6Y2FsbCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
NjRFOjpjYWxsUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpmYXJK
dW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OnJldCk6CisgICAgICAg
ICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckNvZGVQdHI6Om9wZXJhdG9yPSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpm
YXJKdW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6Y3VycmVudE9mZnNldCk6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6WDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXI6OlNpbmdsZUluc3RydWN0aW9uQnVmZmVyV3Jp
dGVyOjptZW1vcnlNb2RSTSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6ZGVidWdPZmZz
ZXQpOiBEZWxldGVkLgorICAgICAgICAqIGIzL0IzQ2FnZWRDQ2FsbC5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OmNhZ2VkQ0NhbGwpOgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3MuY3Bw
OgorICAgICAgICAqIGIzL0IzTWF0aEV4dHJhcy5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHA6CisgICAg
ICAgIChKU0M6OklubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgpOgorICAgICAgICAq
IGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5oOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6OnNp
emVGb3JMZW5ndGhBY2Nlc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZVNpemUuaDoKKyAg
ICAgICAgKEpTQzo6b3Bjb2RlU2l6ZUFzSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL1N1cGVy
U2FtcGxlci5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVTdXBlclNhbXBsZXIpOgorICAg
ICAgICAqIGRmZy9ERkdBcml0aE1vZGUuaDoKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRm
Zy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjplbWl0UmVzdG9y
ZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlND
OjpERkc6OmhhbmRsZUV4aXRDb3VudHMpOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJldHVy
blBDKToKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpvc3JXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpERkc6OmFkanVz
dEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNb2QpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjphbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZw
ckFsbG9jYXRlKToKKyAgICAgICAgKiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBkaXNhc3Nl
bWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHA6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1i
bGVyOjpBNjRET3Bjb2RlOjppbml0KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6
OkE2NERPcGNvZGU6OnNldFBDQW5kT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3Nl
bWJsZXI6OkE2NERPcGNvZGU6OmlzVmFsaWRKSVRUYXJnZXQpOgorICAgICAgICAoSlNDOjpBUk02
NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6b3Bjb2RlR3JvdXBJRCk6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpvcGNvZGVHcm91cElERm9yUHJpb3JJbnNu
KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OmRpc2Fzc2Vt
YmxlKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OmlzVmFs
aWRJbnNuKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVBZGRT
dWJ0cmFjdEltbWVkaWF0ZTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1i
bGVyOjpBNjRET3Bjb2RlQWRkU3VidHJhY3RFeHRlbmRlZFJlZ2lzdGVyOjppc1ZhbGlkKToKKyAg
ICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVBZGRTdWJ0cmFjdFNoaWZ0
ZWRSZWdpc3Rlcjo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpB
NjRET3Bjb2RlQml0ZmllbGQ6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2Vt
Ymxlcjo6QTY0RE9wY29kZUNvbXBhcmVBbmRCcmFuY2hJbW1lZGlhdGU6OmlzVmFsaWQpOgorICAg
ICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUNvbmRpdGlvbmFsQnJhbmNo
SW1tZWRpYXRlOjpmb3JtYXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0
RE9wY29kZUNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlOjppc1ZhbGlkKToKKyAgICAgICAgKEpT
Qzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVDb25kaXRpb25hbFNlbGVjdDo6aXNWYWxp
ZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlRGF0YVByb2Nl
c3NpbmcxU291cmNlOjpmb3JtYXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6
QTY0RE9wY29kZURhdGFQcm9jZXNzaW5nMVNvdXJjZTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcyU291cmNlOjppc1Zh
bGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVEYXRhUHJv
Y2Vzc2luZzNTb3VyY2U6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxl
cjo6QTY0T3Bjb2RlRXhjZXB0aW9uR2VuZXJhdGlvbjo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlRXh0cmFjdDo6aXNWYWxpZCk6CisgICAgICAg
IChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbXBhcmU6
OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUZs
b2F0aW5nUG9pbnRDb25kaXRpb25hbFNlbGVjdDo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFS
TTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNv
dXJjZTo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bj
b2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMlNvdXJjZTo6aXNWYWxpZCk6CisgICAgICAg
IChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlRmxvYXRpbmdGaXhlZFBvaW50Q29u
dmVyc2lvbnM6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0
RE9wY29kZUZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lvbnM6OmlzVmFsaWQpOgorICAgICAg
ICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZU1TUkltbWVkaWF0ZTo6aXNWYWxp
ZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTVNST3JNUlNS
ZWdpc3Rlcjo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRE
T3Bjb2RlSGludDo6b3BOYW1lKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2
NERPcGNvZGVIaW50Ojppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6
OkE2NERPcGNvZGVTSU1EVGhyZWVTYW1lOjpvcE5hbWUpOgorICAgICAgICAoSlNDOjpBUk02NERp
c2Fzc2VtYmxlcjo6QTY0RE9wY29kZVNJTURUaHJlZVNhbWU6Om1vZGlmaWVyKToKKyAgICAgICAg
KEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVTSU1EVGhyZWVTYW1lOjpmb3JtYXQp
OgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZVNJTURUaHJlZVNh
bWU6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29k
ZVN5c3RlbUluc3Q6OmZvcm1hdCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpB
NjRET3Bjb2RlU3lzdGVtSW5zdDo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNz
ZW1ibGVyOjpBNjRET3Bjb2RlU3lzdGVtU3luYzo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkFS
TTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlOjppc1ZhbGlkKToK
KyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVJbW1l
ZGlhdGU6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9w
Y29kZUxvYWRTdG9yZVJlZ2lzdGVyT2Zmc2V0Ojppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QVJN
NjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVBdXRoZW50aWNhdGVkOjppc1ZhbGlk
KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2FkU3RvcmVS
ZWdpc3RlclBhaXI6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6
QTY0RE9wY29kZUxvYWRTdG9yZVVuc2lnbmVkSW1tZWRpYXRlOjppc1ZhbGlkKToKKyAgICAgICAg
KEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVMb2dpY2FsU2hpZnRlZFJlZ2lzdGVy
Ojppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVM
b2dpY2FsSW1tZWRpYXRlOjpmb3JtYXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxl
cjo6QTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGU6OmlzVmFsaWQpOgorICAgICAgICAoSlNDOjpB
Uk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGU6OmNvbXB1dGVJbW1l
ZGlhdGUpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZU1vdmVX
aWRlOjppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNv
ZGVNb3ZlV2lkZTo6aXNNb3ZuKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2
NERPcGNvZGVNb3ZlV2lkZTo6aXNNb3Z6KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJs
ZXI6OkE2NERPcGNvZGVNb3ZlV2lkZTo6aXNNb3ZrKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNh
c3NlbWJsZXI6OkE2NERPcGNvZGVNb3ZlV2lkZTo6dmFsdWUpOgorICAgICAgICAoSlNDOjpBUk02
NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZU1vdmVXaWRlOjpidWlsZEltbWVkaWF0ZUZyb21Nb3Zl
V2lkZVNlcXVlbmNlKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNv
ZGVUZXN0QW5kQnJhbmNoSW1tZWRpYXRlOjppc1ZhbGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjRE
aXNhc3NlbWJsZXI6OkE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlOjppc1Zh
bGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVVbmNvbmRp
dGlvbmFsQnJhbmNoUmVnaXN0ZXI6OmZvcm1hdCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNz
ZW1ibGVyOjpBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaFJlZ2lzdGVyOjppc1ZhbGlkKToK
KyAgICAgICAgKiBkaXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5oOgorICAgICAgICAoSlND
OjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6T3Bjb2RlR3JvdXA6Omdyb3VwSUQgY29u
c3QpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6T3Bjb2Rl
R3JvdXA6OmZvcm1hdCBjb25zdCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpB
NjRET3Bjb2RlOjpPcGNvZGVHcm91cDo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChKU0M6OkFS
TTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpPcGNvZGVHcm91cExpc3ROb2RlOjpPcGNvZGVH
cm91cExpc3ROb2RlKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNv
ZGU6Ok9wY29kZUdyb3VwTGlzdE5vZGU6OnNldE5leHQpOgorICAgICAgICAoSlNDOjpBUk02NERp
c2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6T3Bjb2RlR3JvdXBMaXN0Tm9kZTo6bmV4dCk6CisgICAg
ICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpPcGNvZGVHcm91cExpc3RO
b2RlOjpncm91cCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2Rl
OjpPcGNvZGVHcm91cExpc3ROb2RlOjpncm91cElEKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNh
c3NlbWJsZXI6OkE2NERPcGNvZGU6Ok9wY29kZUdyb3VwTGlzdE5vZGU6Om1hdGNoZXMpOgorICAg
ICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6QTY0RE9wY29kZSk6Cisg
ICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjppczY0Qml0KToKKyAg
ICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OnNpemUpOgorICAgICAg
ICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6b3B0aW9uKToKKyAgICAgICAg
KEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OnJkKToKKyAgICAgICAgKEpTQzo6
QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OnJ0KToKKyAgICAgICAgKEpTQzo6QVJNNjRE
aXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OnJuKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3Nl
bWJsZXI6OkE2NERPcGNvZGU6OnJtKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6
OkE2NERPcGNvZGU6OnNldE9wY29kZUZyb21Qcmlvcik6CisgICAgICAgIChKU0M6OkFSTTY0RGlz
YXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpzZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpBUk02NERp
c2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6Y3VycmVudFBDKToKKyAgICAgICAgKEpTQzo6QVJNNjRE
aXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OnBjTWFza2VkT2Zmc2V0SXMpOgorICAgICAgICAoSlND
OjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6Y3VycmVudE9wY29kZSk6CisgICAgICAg
IChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpwY1JlbGF0aXZlQWRkcmVzcyk6
CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpyZXNldEZvcm1h
dCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpvcGNvZGVH
cm91cCk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjppc1Zh
bGlkKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6Om9wY29k
ZUdyb3VwTnVtYmVyKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNv
ZGU6OmFwcGVuZEluc3RydWN0aW9uTmFtZVdpdGhNb2RpZmllcik6CisgICAgICAgIChKU0M6OkFS
TTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjphcHBlbmRTSU1EUmVnaXN0ZXJOYW1lKToKKyAg
ICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGU6OmFwcGVuZFBDUmVsYXRp
dmVPZmZzZXQpOgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6U2Vjb25kYXJ5SW5z
dHJ1Y3Rpb25TY29wZTo6U2Vjb25kYXJ5SW5zdHJ1Y3Rpb25TY29wZSk6CisgICAgICAgIChKU0M6
OkFSTTY0RGlzYXNzZW1ibGVyOjpTZWNvbmRhcnlJbnN0cnVjdGlvblNjb3BlOjp+U2Vjb25kYXJ5
SW5zdHJ1Y3Rpb25TY29wZSk6CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRE
T3Bjb2RlQWRkU3VidHJhY3RTaGlmdGVkUmVnaXN0ZXI6OmlzQW5kKToKKyAgICAgICAgKEpTQzo6
QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVTSU1EVGhyZWVTYW1lOjppc0JpdE9wKToKKyAg
ICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVTSU1EVGhyZWVTYW1lOjpx
Qml0KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVTSU1EVGhy
ZWVTYW1lOjp1Qml0KToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNv
ZGVTSU1EVGhyZWVTYW1lOjpzaXplKToKKyAgICAgICAgKEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6
OkE2NERPcGNvZGVTSU1EVGhyZWVTYW1lOjpvcGNvZGUpOgorICAgICAgICAoSlNDOjpBUk02NERp
c2Fzc2VtYmxlcjo6QTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGU6OmlzQW5kKToKKyAgICAgICAg
KEpTQzo6QVJNNjREaXNhc3NlbWJsZXI6OkE2NERPcGNvZGVNb3ZlV2lkZTo6aXNNb3ZlV2lkZSk6
CisgICAgICAgIChKU0M6OkFSTTY0RGlzYXNzZW1ibGVyOjpBNjRET3Bjb2RlOjpPcGNvZGVHcm91
cDo6T3Bjb2RlR3JvdXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxl
cjo6QTY0RE9wY29kZTo6T3Bjb2RlR3JvdXA6OnNldE5leHQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6T3Bjb2RlR3JvdXA6Om5leHQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2VtYmxlcjo6QTY0RE9wY29kZTo6T3Bj
b2RlR3JvdXA6Om1hdGNoZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBUk02NERpc2Fzc2Vt
Ymxlcjo6QTY0RE9wY29kZTo6T3Bjb2RlR3JvdXA6OmZvcm1hdCk6IERlbGV0ZWQuCisgICAgICAg
ICogZGlzYXNzZW1ibGVyL0FSTTY0RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5
VG9EaXNhc3NlbWJsZSk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0FSTTY0VmVyaWZpZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SklUQ29kZVZlcmlmaWVyOjpjaGVja0luc3RydWN0aW9u
QXQpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9BUk02NFZlcmlmaWVyLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpKSVRDb2RlVmVyaWZpZXI6OkpJVENvZGVWZXJpZmllcik6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnZhbGlkYXRlQUlTdGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVBcml0aFVuYXJ5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZhcmFyZ3NTcHJlYWQpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0VmFyYXJn
cyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsRXZh
bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRTdG9yZUJhcnJp
ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp2bUNhbGwpOgorICAg
ICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNv
bXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
ZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2FsbFdpdGhvdXRT
aWRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpvcGVyYXRpb24pOgorICAg
ICAgICAqIGZ0bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmdlbmVyaWNHZW5l
cmF0aW9uVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENh
bGxGcmFtZVByb3RvdHlwZS5jcHA6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FsbEV4Y2VwdGlvbkZ1enopOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmRlYnVnQ2FsbCk6CisgICAgICAgICogaml0L0ND
YWxsSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6ZW5zdXJlU2hhZG93
Q2hpY2tlblBhY2tldCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OnByZXBhcmVGb3JUYWlsQ2FsbFNsb3cpOgorICAgICAgICAqIGpp
dC9DYWxsRnJhbWVTaHVmZmxlci5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVy
OjpwcmVwYXJlRm9yVGFpbENhbGwpOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSklUQ2FnaW5nVGVtcGxhdGUpOgorICAgICAgICAo
SlNDOjppbml0aWFsaXplSklUUGFnZVJlc2VydmF0aW9uKToKKyAgICAgICAgKiBqaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5oOgorICAgICAgICAoSlNDOjpwZXJmb3JtSklUTWVtY3B5KToKKyAgICAg
ICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RW50ZXJP
cHRpbWl6YXRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAg
ICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1Vud2lu
ZCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2xvb3BfaGludCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFRodW5rcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6SG9zdEZ1bmN0aW9uU3R1YnM6Okhvc3RGdW5j
dGlvblN0dWJCbG9jazo6bGluayk6CisgICAgICAgIChKU0M6OkpJVFRodW5rczo6SG9zdEZ1bmN0
aW9uU3R1YnM6Om5hdGl2ZVRyYW1wb2xpbmVGb3IpOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6
Okhvc3RGdW5jdGlvblN0dWJzOjphZGRTdHViRm9yKToKKyAgICAgICAgKEpTQzo6SklUVGh1bmtz
OjpIb3N0RnVuY3Rpb25TdHViczo6Z2V0Q3VycmVudEJsb2NrKToKKyAgICAgICAgKiBqaXQvSklU
VGh1bmtzLmg6CisgICAgICAgICogaml0L0pJVFZhbGlkVGFyZ2V0Lmg6IEFkZGVkLgorICAgICAg
ICAqIGppdC9KSVRWYWxpZFRhcmdldExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SklU
VmFsaWRUYXJnZXRMaXN0Ojp2YWxpZEZ1bmNQdHJzKToKKyAgICAgICAgKEpTQzo6SklUVmFsaWRU
YXJnZXRMaXN0OjppbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpJVFZhbGlkVGFyZ2V0TGlzdDo6
aXNUYWJsZUZyb3plbik6CisgICAgICAgIChKU0M6OkpJVFZhbGlkVGFyZ2V0TGlzdDo6YWRkRW50
cnkpOgorICAgICAgICAoSlNDOjpKSVRWYWxpZFRhcmdldExpc3Q6OmlzT25MaXN0KToKKyAgICAg
ICAgKEpTQzo6SklUVmFsaWRUYXJnZXRMaXN0Ojphc3NlcnRPbkxpc3QpOgorICAgICAgICAoSlND
OjpKSVRWYWxpZFRhcmdldExpc3Q6OnN0YXRzKToKKyAgICAgICAgKEpTQzo6SklUVmFsaWRUYXJn
ZXRMaXN0OjpmdW5jdGlvbk5hbWUpOgorICAgICAgICAoSlNDOjpwb3B1bGF0ZUpJVFZhbGlkVGFy
Z2V0TGlzdCk6CisgICAgICAgICogaml0L0pJVFZhbGlkVGFyZ2V0TGlzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBqaXQvSklUVmFsaWRUYXJnZXRMaXN0U3RhcnQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBqaXQvSklUVmVyaWZpZWRDb3B5LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OnBlcmZvcm1W
ZXJpZmllZEpJVENvcHkpOgorICAgICAgICAqIGppdC9KSVRWZXJpZmllZENvcHkuaDogQWRkZWQu
CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZWFkUHV0SUNDYWxs
VGFyZ2V0KToKKyAgICAgICAgKEpTQzo6ZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKToKKyAgICAg
ICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6ZW1pdFBvaW50ZXJW
YWxpZGF0aW9uKToKKyAgICAgICAgKEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRo
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZUdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9y
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6YXJpdHlGaXh1cEdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OmJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvVGh1bmtH
ZW5lcmF0b3JzLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHBvcHVsYXRlSlNDSklU
VmFsaWRUYXJnZXRMaXN0KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoanNjbWFpbik6Cisg
ICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OmluaXRp
YWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgorICAgICAgICAoSlNDOjpMTElu
dDo6SklUVHJhbXBvbGluZUJhc2VJbmRleEZvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpKSVRU
cmFtcG9saW5lSW5kZXhGb3IpOgorICAgICAgICAoSlNDOjpMTEludDo6SklUVHJhbXBvbGluZUlu
ZGV4Rm9yU2xvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVJREZyb20pOgorICAg
ICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojpj
YWxsVG9UaHJvdyk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
ZXhjZXB0aW9uVGFnKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNvbW1vbkNhbGxFdmFsKToKKyAgICAgICAgKiBsbGludC9MTElu
dFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVZNRW50cnlUb0pJVFRyYW1wb2xpbmUp
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVMTEludENhZ2VkUmV0dXJuVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVDaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVk
Q2FsbFRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlUmVnRXhwSklUVHJhbXBv
bGluZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZUNTU1NlbGVjdG9ySklUVHJhbXBv
bGluZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZUxMSW50VGhyb3dEdXJpbmdDYWxs
VHJhbXBvbGluZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZUxMSW50VG9KSVRUcmFt
cG9saW5lKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlV2FzbUxMSW50VG9KSVRUcmFt
cG9saW5lKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkNyZWF0ZUxMaW50VG9KSVRUcmFtcG9saW5l
cyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVkQ2Fs
bFRyYW1wb2xpbmUpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAg
ICAgICogb2ZmbGluZWFzbS9hcm02NC5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybTY0ZS5y
YjoKKyAgICAgICAgKiBydW50aW1lL0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9GaW5h
bGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0ZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgICogcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0
aW9uOjpvZmZzZXRPZk5hdGl2ZUZ1bmN0aW9uRm9yKToKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxG
dW5jdGlvbjo6bmF0aXZlRnVuY3Rpb25Gb3IpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxh
dG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGlt
ZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGlt
ZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0lu
dGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9JbnRsU2VnbWVu
dGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlw
ZS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmg6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHA6CisgICAgICAgICogcnVudGltZS9KU0NDb25maWcuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5jcHA6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPFZpZXdDbGFzcz46OkpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPFZpZXdDbGFzcz46OmNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlldyk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3I8Vmlld0NsYXNzPjo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlldyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChK
U0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjpnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6Omdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChK
U0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOgorICAg
ICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6
CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6Cisg
ICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZUxvYWRlci5jcHA6CisgICAgICAgICogcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNP
YmplY3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDbGFzc1Byb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL01hdGNoUmVzdWx0Lmg6CisgICAgICAgIChKU0M6Ok1hdGNoUmVz
dWx0OjpNYXRjaFJlc3VsdCk6CisgICAgICAgICogcnVudGltZS9NYXRoQ29tbW9uLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWF0aDo6b3BlcmF0aW9uTG9nMXApOgorICAgICAgICAoSlNDOjpNYXRoOjps
b2cxcCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9NYXRoQ29tbW9uLmg6CisgICAgICAg
ICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0xv
ZzFwKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpOYXRpdmVF
eGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4
ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmg6CisgICAgICAg
IChKU0M6OlRhZ2dlZE5hdGl2ZUZ1bmN0aW9uOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
VGFnZ2VkTmF0aXZlRnVuY3Rpb246OnVudGFnZ2VkUG9pbnRlciBjb25zdCk6CisgICAgICAgIChK
U0M6OlRhZ2dlZE5hdGl2ZUZ1bmN0aW9uOjpUYWdnZWROYXRpdmVGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OlRhZ2dlZE5hdGl2ZUZ1bmN0aW9uOjppc0VtcHR5VmFsdWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpUYWdnZWROYXRpdmVGdW5jdGlvbjo6aXNEZWxldGVkVmFsdWUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpUYWdnZWROYXRpdmVGdW5jdGlvbjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChK
U0M6OlRhZ2dlZE5hdGl2ZUZ1bmN0aW9uOjpkZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpU
YWdnZWROYXRpdmVGdW5jdGlvbkhhc2g6Omhhc2gpOgorICAgICAgICAqIHJ1bnRpbWUvTnVsbEdl
dHRlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5j
cHA6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
cnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6anNSZW1haW5kZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVu
dGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9Qcm94eVJldm9rZS5jcHA6
CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OnJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdCk6CisgICAg
ICAgIChKU0M6OnJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmljdCk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJv
bUNoYXJDb2RlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmg6CisgICAg
ICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3lt
Ym9sQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06Om5hdGl2ZVRy
YW1wb2xpbmVGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1l
L1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgICogcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogcnVudGltZS9XZWFr
U2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNEb2xsYXJWTTo6cG9wdWxhdGVKSVRWYWxpZFRhcmdldExpc3QpOgorICAgICAg
ICAqIHRvb2xzL0pTRG9sbGFyVk0uaDoKKyAgICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5
emVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2lnaWxsQ3Jhc2hBbmFseXplcjo6ZHVtcENvZGVCbG9j
ayk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENDYWxsKToKKyAgICAgICAgKiB3YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1p
dENhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbWl0
RXhjZXB0aW9uQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjpjb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0
b3I6OmZyYW1lUG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6Omluc2VydENvbnN0YW50cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OnRvQjNSZXN1bHRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Fz
bTo6QjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNt
OjpCM0lSR2VuZXJhdG9yOjphZGRBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjphZGRSZWZJc051bGwpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2V0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlU2l6ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlR3Jvdyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlRmlsbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmdldExvY2FsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ3VycmVudE1l
bW9yeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnNldExv
Y2FsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6Z2V0R2xv
YmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6c2V0R2xv
YmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdFdy
aXRlQmFycmllckZvckpTV3JhcHBlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OmVtaXRDaGVja0FuZFByZXBhcmVQb2ludGVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6V2FzbTo6c2l6ZU9mTG9hZE9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Fz
bTo6QjNJUkdlbmVyYXRvcjo6bWVtb3J5S2luZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OmVtaXRMb2FkT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjpsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
c2l6ZU9mU3RvcmVPcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0
b3I6OmVtaXRTdG9yZU9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6c3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRTZWxlY3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0
b3I6OmVtaXRFbnRyeVRpZXJVcENoZWNrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6
QjNJUkdlbmVyYXRvcjo6ZW1pdExvb3BUaWVyVXBDaGVjayk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZExvb3ApOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRUb3BMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZEJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkSWYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjphZGRFbHNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Fz
bTo6QjNJUkdlbmVyYXRvcjo6YWRkRWxzZVRvVW5yZWFjaGFibGUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRSZXR1cm4pOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRCcmFuY2gpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRTd2l0Y2gpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbmRCbG9jayk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmNyZWF0ZUNhbGxQYXRjaHBvaW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnVuaWZ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6dW5pZnlWYWx1ZXNXaXRoQmxv
Y2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpkdW1wRXhwcmVzc2lvblN0YWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZHVtcCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6Om9yaWdpbik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja3NGb3JNb2RPckRpdik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMy
RGl2Uz4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRP
cDxPcFR5cGU6OkkzMlJlbVM+KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJEaXZVPik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyUmVtVT4pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NERpdlM+
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BU
eXBlOjpJNjRSZW1TPik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0
b3I6OmFkZE9wPE9wVHlwZTo6STY0RGl2VT4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNt
OjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFJlbVU+KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJDdHo+KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJ
NjRDdHo+KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRk
T3A8T3BUeXBlOjpJMzJQb3BjbnQ+KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJ
UkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRQb3BjbnQ+KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkT3A8RjY0Q29udmVydFVJNjQ+KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJD
b252ZXJ0VUk2ND4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRPcDxPcFR5cGU6OkY2NE5lYXJlc3Q+KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2Fz
bTo6QjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpGMzJOZWFyZXN0Pik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6RjY0VHJ1bmM+
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BU
eXBlOjpGMzJUcnVuYz4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jU0Y2ND4pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jU0YzMj4pOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okkz
MlRydW5jVUY2ND4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9y
OjphZGRPcDxPcFR5cGU6OkkzMlRydW5jVUYzMj4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
YXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jU0Y2ND4pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRy
dW5jVUY2ND4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjph
ZGRPcDxPcFR5cGU6Okk2NFRydW5jU0YzMj4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNt
OjpCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jVUYzMj4pOiBEZWxldGVkLgor
ICAgICAgICAqIHdhc20vV2FzbU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpk
b09TUkVudHJ5KToKKyAgICAgICAgKiB3YXNtL1dhc21UaHVua3MuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjp0cmlnZ2VyT01HRW50cnlUaWVyVXBUaHVua0dlbmVyYXRvcik6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNwcDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmpzQ2Fs
bEVudHJ5cG9pbnRTbG93KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5
cGUuY3BwOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3Bw
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHA6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA6CisgICAgICAgICogeWFyci9ZYXJySklULmg6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUpOgorCiAyMDIwLTA5LTIy
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRW5h
YmxlIEludGwuRGF0ZVRpbWVGb3JtYXQgZGF5UGVyaW9kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0OCw2ICs0NDgsNyBAQCBkZmcvREZHV2F0Y2hw
b2ludENvbGxlY3Rpb25QaGFzZS5jcHAKIGRmZy9ERkdXb3JrbGlzdC5jcHAKIAogZGlzYXNzZW1i
bGVyL0FSTTY0RGlzYXNzZW1ibGVyLmNwcAorZGlzYXNzZW1ibGVyL0FSTTY0VmVyaWZpZXIuY3Bw
CiBkaXNhc3NlbWJsZXIvQ2Fwc3RvbmVEaXNhc3NlbWJsZXIuY3BwCiBkaXNhc3NlbWJsZXIvRGlz
YXNzZW1ibGVyLmNwcAogZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAKQEAgLTY2
MCw2ICs2NjEsNyBAQCBqaXQvSklUU3R1YlJvdXRpbmUuY3BwCiBqaXQvSklUU3ViR2VuZXJhdG9y
LmNwcAogaml0L0pJVFRodW5rcy5jcHAKIGppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5jcHAKK2ppdC9KSVRWZXJpZmllZENvcHkuY3BwCiBqaXQvSklUV29ya2xpc3QuY3Bw
CiBqaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDEx
IEBACiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXRMaXN0Lmgi
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNs
dWRlICJKU0JpZ0ludC5oIgorI2luY2x1ZGUgIkpTRG9sbGFyVk0uaCIKICNpbmNsdWRlICJKU0Zp
bmFsaXphdGlvblJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTSW50ZXJuYWxQcm9taXNlLmgiCkBAIC01NSw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgogI2lu
Y2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTmF0aXZlRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5j
bHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgpAQCAtMTg1LDYgKzE4OCwxMCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBWZWN0b3I+CiBzdGF0aWMgYm9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvciYgYnVmZmVyKTsKIHN0YXRpYyBSZWZQdHI8
VWludDhBcnJheT4gZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKTsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK3N0YXRpYyB2b2lkIHBvcHVsYXRlSlND
SklUVmFsaWRUYXJnZXRMaXN0KCk7CisjZW5kaWYKKwogY2xhc3MgQ29tbWFuZExpbmU7CiBjbGFz
cyBHbG9iYWxPYmplY3Q7CiBjbGFzcyBXb3JrZXJzOwpAQCAtNDU2LDYgKzQ2Myw5IEBAIHN0YXRp
YyBpbmxpbmUgU3RyaW5nIHN0cmluZ0Zyb21VVEYoY29uc3QKIH0KIAogY2xhc3MgR2xvYmFsT2Jq
ZWN0IGZpbmFsIDogcHVibGljIEpTR2xvYmFsT2JqZWN0IHsKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgZnJpZW5kIHZvaWQgcG9wdWxhdGVKU0NKSVRWYWxpZFRhcmdldExpc3QoKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUX0NBR0UpCiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTR2xvYmFs
T2JqZWN0OwogCkBAIC03MzUsNiArNzQ1LDEzOSBAQCBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVj
dChWTSYgdm0sIFN0cnVjCiB7CiB9CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaWYgRU5BQkxF
KE1BU01fUFJPQkUpCitleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpOwor
I2VuZGlmCisKK3N0YXRpYyB2b2lkKiBob3N0Q2FsbEVudHJ5cG9pbnRzW10gPSB7CisjaWYgRU5B
QkxFKE1BU01fUFJPQkUpCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY3RpTWFzbVByb2Jl
VHJhbXBvbGluZSksCisjZW5kaWYKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KSwKKyAgICAodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRlSGVhcEJpZ0ludCksCisjaWYgVVNF
KEJJR0lOVDMyKQorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVu
Y3Rpb25DcmVhdGVCaWdJbnQzMiksCisjZW5kaWYKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uVXNlQmlnSW50MzIpLAorICAgICh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Jc0JpZ0ludDMyKSwKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSXNIZWFwQmlnSW50KSwKKyAg
ICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uUHJpbnRTdGRP
dXQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Q
cmludFN0ZEVyciksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihm
dW5jdGlvbkRlYnVnKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uRGVzY3JpYmUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oZnVuY3Rpb25EZXNjcmliZUFycmF5KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uU2xlZXBTZWNvbmRzKSwKKyAgICAodm9pZCopc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSlNDU3RhY2spLAorICAgICh2b2lkKilz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25HQ0FuZFN3ZWVwKSwKKyAgICAo
dm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRnVsbEdDKSwKKyAg
ICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRWRlbkdDKSwK
KyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSGVhcFNp
emUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25D
cmVhdGVNZW1vcnlGb290cHJpbnQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25SZXNldE1lbW9yeVBlYWspLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25BZGRyZXNzT2YpLAorICAgICh2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25WZXJzaW9uKSwKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uUnVuKSwKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uUnVuU3RyaW5nKSwKKyAgICAo
dm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uTG9hZCksCisgICAg
KHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkxvYWRTdHJpbmcp
LAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25SZWFk
RmlsZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlv
bkNoZWNrU3ludGF4KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uUmVhZGxpbmUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oZnVuY3Rpb25QcmVjaXNlVGltZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24pLAorICAgICh2b2lkKilz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Ob0RGRyksCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbk5vRlRMKSwKKyAgICAodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uTm9PU1JFeGl0RnV6emlu
ZyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbk9w
dGltaXplTmV4dEludm9jYXRpb24pLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKSwKKyAgICAodm9pZCopc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ2FsbGVySXNPTUdDb21waWxlZCksCisg
ICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkpTQ09wdGlv
bnMpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25S
ZW9wdGltaXphdGlvblJldHJ5Q291bnQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oZnVuY3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKSwKKyAgICAodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRmFpbE5leHROZXdDb2RlQmxvY2sp
LAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25RdWl0
KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRmFs
c2UpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25V
bmRlZmluZWQxKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1
bmN0aW9uVW5kZWZpbmVkMiksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihmdW5jdGlvbklzSW50MzIpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25Jc1B1cmVOYU4pLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25FZmZlY3RmdWw0MiksCisgICAgKHZvaWQqKXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbklkZW50aXR5KSwKKyAgICAodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uTWFrZU1hc3F1ZXJhZGVyKSwKKyAg
ICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ2FsbE1hc3F1
ZXJhZGVyKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0
aW9uSGFzQ3VzdG9tUHJvcGVydGllcyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihmdW5jdGlvbkR1bXBUeXBlc0ZvckFsbFZhcmlhYmxlcyksCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRyYWluTWljcm90YXNrcyks
CisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvblNldFRp
bWVvdXQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rp
b25SZWxlYXNlV2Vha1JlZnMpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdpc3RyeUxpdmVDb3VudCksCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkZpbmFsaXphdGlvblJlZ2lz
dHJ5RGVhZENvdW50KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgpLAorICAgICh2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxp
bmdQcm9maWxlciksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihm
dW5jdGlvbkdlbmVyYXRlSGVhcFNuYXBzaG90KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3RGb3JHQ0RlYnVnZ2lu
ZyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvblJl
c2V0U3VwZXJTYW1wbGVyU3RhdGUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25FbnN1cmVBcnJheVN0b3JhZ2UpLAorCisjaWYgRU5BQkxFKFNBTVBM
SU5HX1BST0ZJTEVSKQorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
ZnVuY3Rpb25TdGFydFNhbXBsaW5nUHJvZmlsZXIpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxS
YXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMpLAor
I2VuZGlmCisKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0
aW9uTWF4QXJndW1lbnRzKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGZ1bmN0aW9uQXN5bmNUZXN0U3RhcnQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Bc3luY1Rlc3RQYXNzZWQpLAorCisjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVu
Y3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUpLAorI2VuZGlmCisKKyNpZiBFTkFCTEUoU0FNUExJ
TkdfRkxBR1MpCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5j
dGlvblNldFNhbXBsaW5nRmxhZ3MpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MpLAorI2VuZGlmCisKKyAgICAodm9p
ZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uR2V0UmFuZG9tU2VlZCks
CisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvblNldFJh
bmRvbVNlZWQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVu
Y3Rpb25Jc1JvcGUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
ZnVuY3Rpb25DYWxsZXJTb3VyY2VPcmlnaW4pLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Eb2xsYXJDcmVhdGVSZWFsbSksCisgICAgKHZvaWQqKXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRvbGxhckV2YWxTY3JpcHQpLAor
ICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Eb2xsYXJB
Z2VudFN0YXJ0KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1
bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KSwKKyAgICAodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRG9sbGFyQWdlbnRSZXBvcnQpLAorICAgICh2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Eb2xsYXJBZ2VudFNs
ZWVwKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9u
RG9sbGFyQWdlbnRCcm9hZGNhc3QpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25Eb2xsYXJBZ2VudEdldFJlcG9ydCksCisgICAgKHZvaWQqKXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRvbGxhckFnZW50TGVhdmluZyksCisg
ICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRvbGxhckFn
ZW50TW9ub3RvbmljTm93KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGZ1bmN0aW9uV2FpdEZvclJlcG9ydCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkhlYXBDYXBhY2l0eSksCisgICAgKHZvaWQqKXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkZsYXNoSGVhcEFjY2VzcyksCisgICAgKHZv
aWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRpc2FibGVSaWNoU291
cmNlSW5mbyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5j
dGlvbk1hbGxvY0luQUxvb3ApLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oZnVuY3Rpb25Ub3RhbENvbXBpbGVUaW1lKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uU2V0VW5oYW5kbGVkUmVqZWN0aW9uQ2FsbGJhY2sp
LAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Bc0Rv
dWJsZU51bWJlciksCit9OworCitzdGF0aWMgdm9pZCBwb3B1bGF0ZUpTQ0pJVFZhbGlkVGFyZ2V0
TGlzdCgpCit7CisgICAgSklUVmFsaWRUYXJnZXRMaXN0JiB2YWxpZFRhcmdldExpc3QgPSBKSVRW
YWxpZFRhcmdldExpc3Q6Omluc3RhbmNlKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZW9mKGhvc3RDYWxsRW50cnlwb2ludHMpIC8gc2l6ZW9mKHZvaWQqKTsgaSsrKQorICAg
ICAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkoaG9zdENhbGxFbnRyeXBvaW50c1tpXSk7Cisg
ICAgCisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KEdsb2JhbE9iamVjdDo6dGVzdEN1c3RvbUFjY2Vzc29yU2V0dGVyKSk7CisgICAgdmFsaWRUYXJn
ZXRMaXN0LmFkZEVudHJ5KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEdsb2JhbE9iamVjdDo6dGVz
dEN1c3RvbVZhbHVlU2V0dGVyKSk7CisgICAgCisgICAgdmFsaWRUYXJnZXRMaXN0LnN0YXRzKCJB
ZnRlciBqc2MuY3BwIHBvcHVsYXRlSklUVmFsaWRUYXJnZXRMaXN0KCk6ICIpOworfQorI2VuZGlm
IC8vIEVOQUJMRShKSVRfQ0FHRSkKKworCiBzdGF0aWMgVUNoYXIgcGF0aFNlcGFyYXRvcigpCiB7
CiAjaWYgT1MoV0lORE9XUykKQEAgLTI3MjUsNiArMjg2OCwxMyBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiAgICAgLy8gaGF2ZSBhIGNoYW5jZSB0byBwYXJzZSBvcHRpb25zLgog
ICAgIFdURjo6aW5pdGlhbGl6ZSgpOwogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB7
CisgICAgICAgIE9wdGlvbnM6OkFsbG93VW5maW5hbGl6ZWRBY2Nlc3NTY29wZSBzY29wZTsKKyAg
ICAgICAgT3B0aW9uczo6Y3Jhc2hJZkNhbnRBbGxvY2F0ZUpJVE1lbW9yeSgpID0gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYKKwogICAgIC8vIFdlIGNhbid0IHVzZSBkZXN0cnVjdG9ycyBpbiB0aGUgZm9s
bG93aW5nIGNvZGUgYmVjYXVzZSBpdCB1c2VzIFdpbmRvd3MKICAgICAvLyBTdHJ1Y3R1cmVkIEV4
Y2VwdGlvbiBIYW5kbGluZwogICAgIGludCByZXMgPSBFWElUX1NVQ0NFU1M7CkBAIC0zMzk3LDYg
KzM1NDcsMTYgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAg
ICAgT3B0aW9uczo6ZHVtcEdlbmVyYXRlZEJ5dGVjb2RlcygpID0gdHJ1ZTsKICAgICB9CiAKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgcG9wdWxhdGVKU0NKSVRWYWxpZFRhcmdldExpc3QoKTsK
KworICAgIHsKKyAgICAgICAgT3B0aW9uczo6QWxsb3dVbmZpbmFsaXplZEFjY2Vzc1Njb3BlIHNj
b3BlOworICAgICAgICBpZiAoZ19qc2NDb25maWcucmVzdHJpY3RlZE9wdGlvbnNFbmFibGVkICYm
IE9wdGlvbnM6OnVzZURvbGxhclZNKCkpCisgICAgICAgICAgICBKU0RvbGxhclZNOjpwb3B1bGF0
ZUpJVFZhbGlkVGFyZ2V0TGlzdCgpOworICAgIH0KKyNlbmRpZgorCiAgICAgSlNDOjppbml0aWFs
aXplKCk7CiAgICAgaW5pdGlhbGl6ZVRpbWVvdXRJZk5lZWRlZCgpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tD
b25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkNhbGxiYWNrQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcikgfTsKIAordGVtcGxh
dGUgRW5jb2RlZEpTVmFsdWUgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0PEpTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvcj4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK1ZBTElEX0pJVF9U
QVJHRVRfRVhQTElDSVRJRChBUElDYWxsYmFja0Z1bmN0aW9uQ29uc3RydWN0SlNDYWxsYmFja0Nv
bnN0cnVjdG9yLCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3Q8SlNDYWxsYmFja0NvbnN0
cnVjdG9yPik7CisKIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxsYmFja0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0Ns
YXNzUmVmIGpzQ2xhc3MsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFj
aykKICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2Ns
YXNzKGpzQ2xhc3MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKIAogI2luY2x1ZGUgIkFQ
SUNhbGxiYWNrRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNSw2ICszNiw5IEBAIFNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIAogY29uc3QgQ2xhc3NJbmZv
IEpTQ2FsbGJhY2tGdW5jdGlvbjo6c19pbmZvID0geyAiQ2FsbGJhY2tGdW5jdGlvbiIsICZJbnRl
cm5hbEZ1bmN0aW9uOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNDYWxsYmFja0Z1bmN0aW9uKSB9OwogCit0ZW1wbGF0ZSBFbmNvZGVkSlNWYWx1ZSBBUElD
YWxsYmFja0Z1bmN0aW9uOjpjYWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChBUElDYWxsYmFja0Z1
bmN0aW9uQ2FsbEpTQ2FsbGJhY2tGdW5jdGlvbiwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbDxK
U0NhbGxiYWNrRnVuY3Rpb24+KTsKKwogSlNDYWxsYmFja0Z1bmN0aW9uOjpKU0NhbGxiYWNrRnVu
Y3Rpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxiYWNrKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJl
LCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4sIG51bGxwdHIp
CiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCShyZXZpc2lvbiAyNjc0NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJBUElDYWxsYmFja0Z1bmN0aW9u
LmgiCiAjaW1wb3J0ICJBUElDYXN0LmgiCiAjaW1wb3J0ICJFcnJvci5oIgorI2ltcG9ydCAiSklU
VmFsaWRUYXJnZXQuaCIKICNpbXBvcnQgIkpTQ2VsbC5oIgogI2ltcG9ydCAiSlNDSW5saW5lcy5o
IgogI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIKQEAgLTQwOSw2ICs0MTAsMTEgQEAgZW51
bSBDYWxsYmFja1R5cGUgewogCiBuYW1lc3BhY2UgSlNDIHsKIAordGVtcGxhdGUgRW5jb2RlZEpT
VmFsdWUgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbDxPYmpDQ2FsbGJhY2tGdW5jdGlvbj4oSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChB
UElDYWxsYmFja0Z1bmN0aW9uQ2FsbE9iakNDYWxsYmFja0Z1bmN0aW9uLCBBUElDYWxsYmFja0Z1
bmN0aW9uOjpjYWxsPE9iakNDYWxsYmFja0Z1bmN0aW9uPik7Cit0ZW1wbGF0ZSBFbmNvZGVkSlNW
YWx1ZSBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3Q8T2JqQ0NhbGxiYWNrRnVuY3Rpb24+
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitWQUxJRF9KSVRfVEFSR0VUX0VYUExJQ0lU
SUQoQVBJQ2FsbGJhY2tGdW5jdGlvbkNvbnN0cnVjdE9iakNDYWxsYmFja0Z1bmN0aW9uLCBBUElD
YWxsYmFja0Z1bmN0aW9uOjpjYWxsPE9iakNDYWxsYmFja0Z1bmN0aW9uPik7CisKIGNsYXNzIE9i
akNDYWxsYmFja0Z1bmN0aW9uSW1wbCBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExNTMsMTIgKzExNTMsMTggQEAK
IAkJNjUxMTIzMDcxNDA0NkIwQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMTIyRTUxNDA0NjlCQTAwMkIx
MDFEIC8qIHRlc3RSZWdFeHAuY3BwICovOyB9OwogCQk2NTE0RjIxOTE4QjNFMTY3MDA5OEZGOEIg
LyogQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTE0RjIxNzE4QjNFMTY3MDA5OEZGOEIgLyogQnl0ZWNvZGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjUzMDNENjQxNDQ3QjlFMTAw
RDNGOTA0IC8qIFBhcnNlclRva2Vucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjUzMDNENjMxNDQ3QjlFMTAwRDNGOTA0IC8qIFBhcnNlclRva2Vucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTY1M0E2
RTEzMjRCRjk5ODkwMDMyQUUyMiAvKiBKSVRWYWxpZFRhcmdldExpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4N0IxQUMyMzg0NzY5NjAwMDEw
NjY5IC8qIEpJVFZhbGlkVGFyZ2V0TGlzdC5jcHAgKi87IH07CisJCTY1M0E2RTE1MjRCRjk5RTcw
MDMyQUUyMiAvKiBKSVRWYWxpZFRhcmdldExpc3RTdGFydC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTNBNkUxNDI0QkY5OUQ2MDAzMkFFMjIgLyog
SklUVmFsaWRUYXJnZXRMaXN0U3RhcnQuY3BwICovOyB9OwogCQk2NTU3MEY1QTFBQTRDM0VBMDA5
QjNDMjMgLyogUmVncmVzczE0MTI3NS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NTcwRjU5MUFBNEMwMEEwMDlCM0MyMyAvKiBSZWdyZXNzMTQxMjc1
Lm1tICovOyB9OwogCQk2NTdDRjQ1OTE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0NGNDU3MTlCRjY2
NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTY1ODdCMUIwMjM4NUMxNDQwMDAxMDY2OSAvKiBKSVRWZXJpZmll
ZENvcHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
ODdCMUFFMjM4NUE2Q0MwMDAxMDY2OSAvKiBKSVRWZXJpZmllZENvcHkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2NTg3QjFCMTIzODVDMTdDMDAw
MTA2NjkgLyogSklUVmFsaWRUYXJnZXRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg3QjFBRDIzODQ3Njk2MDAwMTA2NjkgLyogSklUVmFsaWRU
YXJnZXRMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNjU4ODI0QUYxRTVDRkRCMDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODgyNEFFMUU1Q0ZEQjAwMEZC
NzM1OSAvKiBDb25maWdGaWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNjU4RDNBNTYxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OEQzQTU1
MTk2MzgyNjgwMDNDNDVENiAvKiBWTUVudHJ5UmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU5Q0RBNUIxRjY3NTNGMjAwRDNFNTNGIC8q
IFlhcnJVbmljb2RlUHJvcGVydGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU5Q0RBNUExRjY3NTA5ODAwRDNFNTNGIC8qIFlhcnJVbmljb2RlUHJv
cGVydGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTY1QjdBNDMzMjRDRjY2MjEwMDQ4RDkwRSAvKiBKSVRWYWxpZFRhcmdldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUzQTZFMTYyNEJGOUFEQTAw
MzJBRTIyIC8qIEpJVFZhbGlkVGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVCODM5MkUxQkFDQUQzNjAwNDRFODI0IC8qIENhY2hlZFJl
Y292ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NUI4MzkyQzFCQUNBOTJBMDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCAqLzsgfTsKKwkJNjVF
MjRGNkUyM0EyRTFGMDAwODFCMjAwIC8qIEFSTTY0VmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTI0RjZDMjNBMkUxOEYwMDgxQjIwMCAv
KiBBUk02NFZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNkEzOENGQUExRTMyQjVBQjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkEzOENGQTgx
RTMyQjU4QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5oICovOyB9OwogCQk2QUQyQ0I0RDE5
QjkxNDAxMDAwNjU3MTkgLyogRGVidWdnZXJFdmFsRW5hYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkFEMkNCNEMxOUI5MTQwMTAwMDY1NzE5IC8q
IERlYnVnZ2VyRXZhbEVuYWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MDExM0Q0QzFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVy
YXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MDExM0Q0QTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0b3JPcGVyYXRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5MjgsNiArMzkzNCw4
IEBACiAJCTY1MkEzQTIyMTY1MUM2OTcwMEE4MEFGRSAvKiBBNjRET3Bjb2RlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEE2NERPcGNvZGUuY3BwOyBwYXRoID0gZGlz
YXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NTJBM0EyMzE2NTFDNjk3MDBBODBBRkUgLyogQTY0RE9wY29kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBNjRET3Bjb2RlLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIv
QVJNNjQvQTY0RE9wY29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTMwM0Q2
MzE0NDdCOUUxMDBEM0Y5MDQgLyogUGFyc2VyVG9rZW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhcnNlclRva2Vucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk2NTNBNkUxNDI0QkY5OUQ2MDAzMkFFMjIgLyogSklUVmFsaWRUYXJnZXRMaXN0U3RhcnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVmFsaWRUYXJnZXRMaXN0
U3RhcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTNBNkUxNjI0QkY5QURB
MDAzMkFFMjIgLyogSklUVmFsaWRUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSklUVmFsaWRUYXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0
MDBDMTAwQTY5QkFGMjAwNTA5ODg3IC8qIFByb3BlcnR5TmFtZUFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9wZXJ0eU5hbWVBcnJheS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NTQwQzc5QzFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9m
ZnNldExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0
ZXJBdE9mZnNldExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTQwQzc5
RDFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJBdE9mZnNldExpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTM5NDcsNiArMzk1NSwxMCBAQAogCQk2NTdDRjQ1NjE5QkY2NjYy
MDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDYWxsZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTdDRjQ1
NzE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDYWxsZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NjAx
NzcxODVBOEY1RTAwMDMwRUVFIC8qIE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1ODdCMUFDMjM4NDc2OTYwMDAx
MDY2OSAvKiBKSVRWYWxpZFRhcmdldExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSklUVmFsaWRUYXJnZXRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNjU4N0IxQUQyMzg0NzY5NjAwMDEwNjY5IC8qIEpJVFZhbGlkVGFyZ2V0TGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRWYWxpZFRhcmdldExpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU4N0IxQUUyMzg1QTZDQzAwMDEwNjY5IC8q
IEpJVFZlcmlmaWVkQ29weS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRW
ZXJpZmllZENvcHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU4N0IxQUYyMzg1
QTZDQzAwMDEwNjY5IC8qIEpJVFZlcmlmaWVkQ29weS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKSVRWZXJpZmllZENvcHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTg4MjRBRTFFNUNGREIwMDBGQjczNTkgLyogQ29uZmlnRmlsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25maWdGaWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1ODgyNEIwMUU1Q0ZERjQwMEZCNzM1OSAvKiBDb25maWdGaWxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbmZpZ0ZpbGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NThEM0E1NTE5NjM4MjY4MDAzQzQ1RDYgLyog
Vk1FbnRyeVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAw
OyBwYXRoID0gVk1FbnRyeVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1
YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKQEAgLTM5
NTYsMjAgKzM5NjgsMjcgQEAKIAkJNjU5Q0RBNUExRjY3NTA5ODAwRDNFNTNGIC8qIFlhcnJVbmlj
b2RlUHJvcGVydGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyVW5p
Y29kZVByb3BlcnRpZXMuaDsgcGF0aCA9IHlhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QTk0NjEzMUM4RTlGMjAwMEE3MjA5QSAvKiBn
ZW5lcmF0ZVlhcnJDYW5vbmljYWxpemVVbmljb2RlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBuYW1lID0gZ2VuZXJhdGVZYXJyQ2Fub25pY2FsaXplVW5pY29kZTsgcGF0aCA9IHlhcnIv
Z2VuZXJhdGVZYXJyQ2Fub25pY2FsaXplVW5pY29kZTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNjVBOTQ2MTQxQzhFOUY2RjAwQTcyMDlBIC8qIFlhcnJDYW5vbmljYWxpemVVbmljb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFlhcnJDYW5vbmljYWxp
emVVbmljb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVCNkI4OTUyM0ZD
QTczNTAwQjkwMUUxIC8qIEIzQ2FnZWRDQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBCM0NhZ2VkQ0NhbGwuaDsgcGF0aCA9IGIzL0IzQ2FnZWRDQ2FsbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2NUI4MzkyQzFCQUNBOTJBMDA0NEU4MjQgLyogQ2FjaGVk
UmVjb3ZlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVjb3Zl
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCODM5MkQxQkFDQTlEMzAwNDRF
ODI0IC8qIENhY2hlZFJlY292ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENhY2hlZFJlY292ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjVCODk4QUQyMzE0NkU5QjAwNDc2MzU4IC8qIGFybTY0ZS5yYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnJ1Ynk7IHBhdGggPSBhcm02NGUucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTY1QkU2OUNCMjQwODUyRDQwMDZGMzgyRiAvKiBnZW5lcmF0ZS11bmlmaWVkLXNvdXJjZXMuc2gg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS11bmlmaWVkLXNvdXJj
ZXMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUJFNjlDQzI0MDg1MkQ0MDA2
RjM4MkYgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3Jp
cHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjVCRTY5RDUyNDA4NTM5RDAwNkYzODJGIC8qIERlcml2ZWQgU291
cmNlcyBjb3B5LUluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMgY29w
eS1JbmZvLnBsaXN0IjsgcGF0aCA9ICIvVm9sdW1lcy9FeHREYXRhL3NyYy9XSy4xL09wZW5Tb3Vy
Y2UvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWQgU291cmNlcyBjb3B5LUluZm8ucGxpc3Qi
OyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk2NUMwMkZCQjA2Mzc0NjJBMDAzRTdF
RTYgLyogUHJvdGVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQcm90ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKIAkJNjVDNkJFREYyMTEyOEMzQjAwNjg0OUMzIC8qIFlhcnJEaXNhc3NlbWJsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckRpc2Fzc2VtYmxlci5j
cHA7IHBhdGggPSB5YXJyL1lhcnJEaXNhc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NUM2QkVFMDIxMTI4QzNCMDA2ODQ5QzMgLyogWWFyckRpc2Fzc2VtYmxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyRGlzYXNzZW1ibGVyLmg7IHBh
dGggPSB5YXJyL1lhcnJEaXNhc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVDN0ExNzEwQThFQUFDQjAwRkEzN0VBIC8qIEpTV3JhcHBlck9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXcmFwcGVyT2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDN0ExNzIwQThFQUFDQjAwRkEzN0VBIC8qIEpT
V3JhcHBlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXcmFw
cGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1REE5MDQ2MUY4NzA1
MkEwMDlCQzU0NiAvKiBnZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBnZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVy
dHlUYWJsZXMucHk7IHBhdGggPSB5YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxl
cy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVFMjRGNkMyM0EyRTE4RjAwODFC
MjAwIC8qIEFSTTY0VmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QVJNNjRWZXJpZmllci5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL0FSTTY0VmVyaWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVFMjRGNkQyM0EyRTE4RjAwODFCMjAwIC8qIEFS
TTY0VmVyaWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQVJN
NjRWZXJpZmllci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1RTg2NkVEMERENTlBRkEwMEEyQjJBMSAvKiBT
b3VyY2VQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUVBNEM5OTA5MkFGOUUy
MDA5M0Q4MDAgLyogSlNMb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTG9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgfTsKIAkJNjVFQTRDOUEwOTJBRjlFMjAwOTNEODAwIC8qIEpTTG9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0xv
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NUVBNzM2
MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1vbklkZW50aWZpZXJzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVFQTczNjMwQkFFMzVEMTAwMUJCNTYwIC8qIENvbW1vbklk
ZW50aWZpZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25JZGVu
dGlmaWVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUY3Q0M5RTIzRDQxODFG
MDBFOEJGQzEgLyogZ2VuZXJhdGUtdmFsaWRKSVRUYXJnZXRMaXN0LnNoICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtdmFsaWRKSVRUYXJnZXRMaXN0LnNoIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVGQjUxMTUxODRFRThGODAwQzEyQjcwIC8qIFBy
b3RvQ2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RvQ2Fs
bEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZBMzhDRkE3MUUzMkI1OEIw
MDYwMjA2RiAvKiBBc3luY1N0YWNrVHJhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXN5bmNTdGFja1RyYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNkEzOENGQTgxRTMyQjU4QjAwNjAyMDZGIC8qIEFzeW5jU3RhY2tUcmFjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY1N0YWNrVHJhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1MzMsNiArNTU1Miw3IEBACiAJCQkJODYwM0NFRjAxNEM3
NTNFRjAwQUU1OUUzIC8qIHRvb2xzICovLAogCQkJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAv
KiB3YXNtICovLAogCQkJCTg2RUFDNDhDMEY5M0U4QjkwMDhFQzk0OCAvKiB5YXJyICovLAorCQkJ
CTY1QkU2OUQ1MjQwODUzOUQwMDZGMzgyRiAvKiBEZXJpdmVkIFNvdXJjZXMgY29weS1JbmZvLnBs
aXN0ICovLAogCQkJKTsKIAkJCW5hbWUgPSBKYXZhU2NyaXB0Q29yZTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC01Njk5LDYgKzU3MTksNyBAQAogCQkJCUUzOTJFNkY3MjREMjVGQTYw
MEIyMDc2NyAvKiBCM0JvdHRvbVR1cGxlVmFsdWUuaCAqLywKIAkJCQkwRjZCOEFERTFDNEVGRTE3
MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2FsRWRnZXMuY3BwICovLAogCQkJCTBGNkI4QURGMUM0
RUZFMTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5oICovLAorCQkJCTY1QjZCODk1
MjNGQ0E3MzUwMEI5MDFFMSAvKiBCM0NhZ2VkQ0NhbGwuaCAqLywKIAkJCQlEQzlBMEMxQzFEMkQ5
NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5jcHAgKi8sCiAJCQkJREM5QTBDMUQxRDJE
OTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uaCAqLywKIAkJCQlEQzlBMEMxRTFEMkQ5
NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbklubGluZXMuaCAqLywKQEAgLTU5OTMsNiAr
NjAxNCw4IEBACiAJCQkJNjUyQTNBMUExNjUxQTkyNDAwQTgwQUZFIC8qIEFSTTY0ICovLAogCQkJ
CTBGRjQyNzMzMTU4RUJENjQwMDRDQjlGRiAvKiB1ZGlzODYgKi8sCiAJCQkJNjUyQTNBMjAxNjUx
QzY2MTAwQTgwQUZFIC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCAqLywKKwkJCQk2NUUyNEY2QzIz
QTJFMThGMDA4MUIyMDAgLyogQVJNNjRWZXJpZmllci5oICovLAorCQkJCTY1RTI0RjZEMjNBMkUx
OEYwMDgxQjIwMCAvKiBBUk02NFZlcmlmaWVyLmNwcCAqLywKIAkJCQkwRjlEMzM2RTE2NURCQjhE
MDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQkwRkY0MjcyRjE1OEVCRDQ0MDA0
Q0I5RkYgLyogRGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJMEZGNDI3MzAxNThFQkQ0NDAwNENCOUZG
IC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgKi8sCkBAIC02MTkxLDYgKzYyMTQsMTIgQEAKIAkJ
CQkwRjVFRjkxQzE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmggKi8sCiAJCQkJMEZDNzEy
RTAxN0NEODc4RjAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcCAqLywKIAkJCQkwRkM3MTJFMTE3Q0Q4NzhGMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQk2NTNBNkUxNjI0QkY5QURBMDAzMkFFMjIg
LyogSklUVmFsaWRUYXJnZXQuaCAqLywKKwkJCQk2NTg3QjFBQzIzODQ3Njk2MDAwMTA2NjkgLyog
SklUVmFsaWRUYXJnZXRMaXN0LmNwcCAqLywKKwkJCQk2NTg3QjFBRDIzODQ3Njk2MDAwMTA2Njkg
LyogSklUVmFsaWRUYXJnZXRMaXN0LmggKi8sCisJCQkJNjUzQTZFMTQyNEJGOTlENjAwMzJBRTIy
IC8qIEpJVFZhbGlkVGFyZ2V0TGlzdFN0YXJ0LmNwcCAqLywKKwkJCQk2NTg3QjFBRjIzODVBNkND
MDAwMTA2NjkgLyogSklUVmVyaWZpZWRDb3B5LmNwcCAqLywKKwkJCQk2NTg3QjFBRTIzODVBNkND
MDAwMTA2NjkgLyogSklUVmVyaWZpZWRDb3B5LmggKi8sCiAJCQkJREMwMTg0MTcxRDEwQzE4NzAw
NTdCMDUzIC8qIEpJVFdvcmtsaXN0LmNwcCAqLywKIAkJCQlEQzAxODQxODFEMTBDMTg3MDA1N0Iw
NTMgLyogSklUV29ya2xpc3QuaCAqLywKIAkJCQlBNzZDNTE3NDExODI3NDhEMDA3MTVCMDUgLyog
SlNJbnRlcmZhY2VKSVQuaCAqLywKQEAgLTg1NzIsNyArODYwMSwxMCBAQAogCQkJCTk5REEwMDk3
MUJENTk4RTAwMEY0NTc1QyAvKiB3a2J1aWx0aW5zICovLAogCQkJCTk5NTlFOTI3MUJEMTdGQTAw
MDFBQTQxMyAvKiBjc3NtaW4ucHkgKi8sCiAJCQkJOTk1OUU5MkYxQkQxODFGNjAwMUFBNDEzIC8q
IGdlbmVyYXRlLWNvbWJpbmVkLWluc3BlY3Rvci1qc29uLnB5ICovLAorCQkJCTY1QkU2OUNDMjQw
ODUyRDQwMDZGMzgyRiAvKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2ggKi8sCisJCQkJNjVG
N0NDOUUyM0Q0MTgxRjAwRThCRkMxIC8qIGdlbmVyYXRlLXZhbGlkSklUVGFyZ2V0TGlzdC5zaCAq
LywKIAkJCQk5OURBMDBBQzFCRDU5OTNFMDBGNDU3NUMgLyogZ2VuZXJhdGUtanMtYnVpbHRpbnMu
cHkgKi8sCisJCQkJNjVCRTY5Q0IyNDA4NTJENDAwNkYzODJGIC8qIGdlbmVyYXRlLXVuaWZpZWQt
c291cmNlcy5zaCAqLywKIAkJCQk5OTU5RTkzMDFCRDE4MUY2MDAxQUE0MTMgLyogaW5saW5lLWFu
ZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgKi8sCiAJCQkJOTk1OUU5MjkxQkQx
N0ZBMDAwMUFBNDEzIC8qIGpzbWluLnB5ICovLAogCQkJCTk5REEwMEFEMUJENTk5M0UwMEY0NTc1
QyAvKiBsYXp5d3JpdGVyLnB5ICovLApAQCAtOTAxMyw2ICs5MDQ1LDcgQEAKIAkJCQkwRjY0RUFG
MzFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1NzIxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckJhc2ljQmxvY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkM2M0JDMUU2MzQ0MEMwMEMxMzgzOSAvKiBBaXJCbG9ja0luc2VydGlvblNldC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNjVFMjRGNkUyM0EyRTFGMDAwODFCMjAwIC8qIEFSTTY0VmVy
aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjM4NzhFMUJGQkM0NEQwMEUzQUIxRSAvKiBB
aXJCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc5QzdDQTFFNzRDOTNCMDBF
QjM0RDEgLyogQWlyQnJlYWtDcml0aWNhbEVkZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYx
ODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVy
cyAqLywKQEAgLTk5MTcsNiArOTk1MCw5IEBACiAJCQkJMEY3NjZEMkMxNUE4Q0MzQTAwOEYzNjNF
IC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVFRjkxRjE2ODc4
RjdEMDAzRTVDMjUgLyogSklUVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM3MTJFMzE3
Q0Q4NzkzMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAorCQkJCTY1QjdBNDMzMjRDRjY2MjEwMDQ4RDkwRSAvKiBKSVRWYWxpZFRh
cmdldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU4N0IxQjEyMzg1QzE3QzAwMDEwNjY5IC8qIEpJ
VFZhbGlkVGFyZ2V0TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU4N0IxQjAyMzg1QzE0NDAw
MDEwNjY5IC8qIEpJVFZlcmlmaWVkQ29weS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMwMTg0MTkx
RDEwQzE4OTAwNTdCMDUzIC8qIEpJVFdvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0M0
RjY2QjIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMTM0Myw2ICsxMTM3OSw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKKwkJCQk2NTNBNkUxNTI0QkY5OUU3MDAzMkFFMjIgLyogSklUVmFsaWRUYXJnZXRMaXN0U3Rh
cnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkUwNUZBRkQxRkU0Q0VEQTAwMDkzMjMwIC8qIERl
cHJlY2F0ZWRJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMzM0JCREMy
MTEwRjdEOTAwNzYxOEVDIC8qIERGR1NwZWN1bGF0aXZlSklULmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUzMzNCQkRCMjExMEY3RDIwMDc2MThFQyAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMTE1MDcsNiArMTE1NDQsNyBAQAogCQkJCTUzMEE2NkMzMUZB
M0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUzMEE2NkM0MUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlMTQ1LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUyNUM5Q0RGMjIwMjg1ODMwMDgyREJGRCAvKiBXYXNtQWlySVJHZW5lcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjUzQTZFMTMyNEJGOTk4OTAwMzJBRTIyIC8qIEpJ
VFZhbGlkVGFyZ2V0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTExODcyLDYgKzExOTEwLDcg
QEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSAxQzkwNTE0MzBCQTlFOEE3MDA4MUU5RDAgLyogSmF2YVNjcmlwdENvcmUueGNj
b25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUxEX0dFTkVSQVRFX01BUF9GSUxF
ID0gTk87CiAJCQl9OwogCQkJbmFtZSA9IERlYnVnOwogCQl9OwpAQCAtMTE4NzksNiArMTE5MTgs
NyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54
Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJTERfR0VORVJBVEVfTUFQX0ZJ
TEUgPSBOTzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKIAkJfTsKQEAgLTExODg3LDYgKzEx
OTI3LDcgQEAKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDUxNDMwQkE5RThB
NzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKIAkJCQlCVUlMRF9WQVJJQU5UUyA9IG5vcm1hbDsKKwkJCQlMRF9HRU5FUkFURV9NQVBf
RklMRSA9IE5POwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OwpAQCAtMTIzMzUs
NiArMTIzNzYsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2Ny
aXB0Q29yZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJTERfR0VORVJB
VEVfTUFQX0ZJTEUgPSBOTzsKIAkJCX07CiAJCQluYW1lID0gUHJvZmlsaW5nOwogCQl9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIu
aAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
Uk02NEFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCwxMSBAQAogI2luY2x1
ZGUgIkpTQ1B0clRhZy5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNl
bmRpZgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KIApAQCAt
MzE2LDI2ICszMjEsMjkgQEAgcHVibGljOgogICAgIH07CiAKICNkZWZpbmUgSlVNUF9FTlVNX1dJ
VEhfU0laRShpbmRleCwgdmFsdWUpICgoKHZhbHVlKSA8PCA0KSB8IChpbmRleCkpCi0jZGVmaW5l
IEpVTVBfRU5VTV9TSVpFKGp1bXApICgoanVtcCkgPj4gNCkKKyNkZWZpbmUgSlVNUF9FTlVNX1NJ
WkUoanVtcCkgKCgoanVtcCkgPj4gNCkgKiBzaXplb2YodWludDMyX3QpKQorI2lmIEVOQUJMRShK
SVRfQ0FHRSkKKyNkZWZpbmUgSlVNUF9FTlVNX0lOU1RSVUNUSU9OX0NPVU5UKGp1bXApICgoanVt
cCkgPj4gNCkKKyNlbmRpZgogICAgIGVudW0gSnVtcFR5cGUgeyBKdW1wRml4ZWQgPSBKVU1QX0VO
VU1fV0lUSF9TSVpFKDAsIDApLAotICAgICAgICBKdW1wTm9Db25kaXRpb24gPSBKVU1QX0VOVU1f
V0lUSF9TSVpFKDEsIDEgKiBzaXplb2YodWludDMyX3QpKSwKLSAgICAgICAgSnVtcENvbmRpdGlv
biA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoMiwgMiAqIHNpemVvZih1aW50MzJfdCkpLAotICAgICAg
ICBKdW1wQ29tcGFyZUFuZEJyYW5jaCA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoMywgMiAqIHNpemVv
Zih1aW50MzJfdCkpLAotICAgICAgICBKdW1wVGVzdEJpdCA9IEpVTVBfRU5VTV9XSVRIX1NJWkUo
NCwgMiAqIHNpemVvZih1aW50MzJfdCkpLAotICAgICAgICBKdW1wTm9Db25kaXRpb25GaXhlZFNp
emUgPSBKVU1QX0VOVU1fV0lUSF9TSVpFKDUsIDEgKiBzaXplb2YodWludDMyX3QpKSwKLSAgICAg
ICAgSnVtcENvbmRpdGlvbkZpeGVkU2l6ZSA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNiwgMiAqIHNp
emVvZih1aW50MzJfdCkpLAotICAgICAgICBKdW1wQ29tcGFyZUFuZEJyYW5jaEZpeGVkU2l6ZSA9
IEpVTVBfRU5VTV9XSVRIX1NJWkUoNywgMiAqIHNpemVvZih1aW50MzJfdCkpLAotICAgICAgICBK
dW1wVGVzdEJpdEZpeGVkU2l6ZSA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoOCwgMiAqIHNpemVvZih1
aW50MzJfdCkpLAorICAgICAgICBKdW1wTm9Db25kaXRpb24gPSBKVU1QX0VOVU1fV0lUSF9TSVpF
KDEsIDEpLAorICAgICAgICBKdW1wQ29uZGl0aW9uID0gSlVNUF9FTlVNX1dJVEhfU0laRSgyLCAy
KSwKKyAgICAgICAgSnVtcENvbXBhcmVBbmRCcmFuY2ggPSBKVU1QX0VOVU1fV0lUSF9TSVpFKDMs
IDIpLAorICAgICAgICBKdW1wVGVzdEJpdCA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNCwgMiksCisg
ICAgICAgIEp1bXBOb0NvbmRpdGlvbkZpeGVkU2l6ZSA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNSwg
MSksCisgICAgICAgIEp1bXBDb25kaXRpb25GaXhlZFNpemUgPSBKVU1QX0VOVU1fV0lUSF9TSVpF
KDYsIDIpLAorICAgICAgICBKdW1wQ29tcGFyZUFuZEJyYW5jaEZpeGVkU2l6ZSA9IEpVTVBfRU5V
TV9XSVRIX1NJWkUoNywgMiksCisgICAgICAgIEp1bXBUZXN0Qml0Rml4ZWRTaXplID0gSlVNUF9F
TlVNX1dJVEhfU0laRSg4LCAyKSwKICAgICB9OwogICAgIGVudW0gSnVtcExpbmtUeXBlIHsKICAg
ICAgICAgTGlua0ludmFsaWQgPSBKVU1QX0VOVU1fV0lUSF9TSVpFKDAsIDApLAotICAgICAgICBM
aW5rSnVtcE5vQ29uZGl0aW9uID0gSlVNUF9FTlVNX1dJVEhfU0laRSgxLCAxICogc2l6ZW9mKHVp
bnQzMl90KSksCi0gICAgICAgIExpbmtKdW1wQ29uZGl0aW9uRGlyZWN0ID0gSlVNUF9FTlVNX1dJ
VEhfU0laRSgyLCAxICogc2l6ZW9mKHVpbnQzMl90KSksCi0gICAgICAgIExpbmtKdW1wQ29uZGl0
aW9uID0gSlVNUF9FTlVNX1dJVEhfU0laRSgzLCAyICogc2l6ZW9mKHVpbnQzMl90KSksCi0gICAg
ICAgIExpbmtKdW1wQ29tcGFyZUFuZEJyYW5jaCA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNCwgMiAq
IHNpemVvZih1aW50MzJfdCkpLAotICAgICAgICBMaW5rSnVtcENvbXBhcmVBbmRCcmFuY2hEaXJl
Y3QgPSBKVU1QX0VOVU1fV0lUSF9TSVpFKDUsIDEgKiBzaXplb2YodWludDMyX3QpKSwKLSAgICAg
ICAgTGlua0p1bXBUZXN0Qml0ID0gSlVNUF9FTlVNX1dJVEhfU0laRSg2LCAyICogc2l6ZW9mKHVp
bnQzMl90KSksCi0gICAgICAgIExpbmtKdW1wVGVzdEJpdERpcmVjdCA9IEpVTVBfRU5VTV9XSVRI
X1NJWkUoNywgMSAqIHNpemVvZih1aW50MzJfdCkpLAorICAgICAgICBMaW5rSnVtcE5vQ29uZGl0
aW9uID0gSlVNUF9FTlVNX1dJVEhfU0laRSgxLCAxKSwKKyAgICAgICAgTGlua0p1bXBDb25kaXRp
b25EaXJlY3QgPSBKVU1QX0VOVU1fV0lUSF9TSVpFKDIsIDEpLAorICAgICAgICBMaW5rSnVtcENv
bmRpdGlvbiA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoMywgMiksCisgICAgICAgIExpbmtKdW1wQ29t
cGFyZUFuZEJyYW5jaCA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNCwgMiksCisgICAgICAgIExpbmtK
dW1wQ29tcGFyZUFuZEJyYW5jaERpcmVjdCA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNSwgMSksCisg
ICAgICAgIExpbmtKdW1wVGVzdEJpdCA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNiwgMiksCisgICAg
ICAgIExpbmtKdW1wVGVzdEJpdERpcmVjdCA9IEpVTVBfRU5VTV9XSVRIX1NJWkUoNywgMSksCiAg
ICAgfTsKIAogICAgIGNsYXNzIExpbmtSZWNvcmQgewpAQCAtMzQ3LDcgKzM1NSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBkYXRhLnJlYWxUeXBlcy5tX3R5cGUgPSB0eXBlOwogICAgICAgICAg
ICAgZGF0YS5yZWFsVHlwZXMubV9saW5rVHlwZSA9IExpbmtJbnZhbGlkOwogICAgICAgICAgICAg
ZGF0YS5yZWFsVHlwZXMubV9jb25kaXRpb24gPSBjb25kaXRpb247CisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV9mcm9tSW5zdHJ1Y3Rpb25Db3VudCA9
IEpVTVBfRU5VTV9JTlNUUlVDVElPTl9DT1VOVCh0eXBlKTsKKyNlbmRpZgogICAgICAgICB9CisK
ICAgICAgICAgTGlua1JlY29yZChpbnRwdHJfdCBmcm9tLCBpbnRwdHJfdCB0bywgSnVtcFR5cGUg
dHlwZSwgQ29uZGl0aW9uIGNvbmRpdGlvbiwgYm9vbCBpczY0Qml0LCBSZWdpc3RlcklEIGNvbXBh
cmVSZWdpc3RlcikKICAgICAgICAgewogICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV9mcm9t
ID0gZnJvbTsKQEAgLTM1Nyw3ICszNjksMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZGF0YS5y
ZWFsVHlwZXMubV9jb25kaXRpb24gPSBjb25kaXRpb247CiAgICAgICAgICAgICBkYXRhLnJlYWxU
eXBlcy5tX2lzNjRCaXQgPSBpczY0Qml0OwogICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV9j
b21wYXJlUmVnaXN0ZXIgPSBjb21wYXJlUmVnaXN0ZXI7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQor
ICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV9mcm9tSW5zdHJ1Y3Rpb25Db3VudCA9IEpVTVBf
RU5VTV9JTlNUUlVDVElPTl9DT1VOVCh0eXBlKTsKKyNlbmRpZgogICAgICAgICB9CisgICAgICAg
IAogICAgICAgICBMaW5rUmVjb3JkKGludHB0cl90IGZyb20sIGludHB0cl90IHRvLCBKdW1wVHlw
ZSB0eXBlLCBDb25kaXRpb24gY29uZGl0aW9uLCB1bnNpZ25lZCBiaXROdW1iZXIsIFJlZ2lzdGVy
SUQgY29tcGFyZVJlZ2lzdGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBkYXRhLnJlYWxUeXBl
cy5tX2Zyb20gPSBmcm9tOwpAQCAtMzY3LDIzICszODMsNTYgQEAgcHVibGljOgogICAgICAgICAg
ICAgZGF0YS5yZWFsVHlwZXMubV9jb25kaXRpb24gPSBjb25kaXRpb247CiAgICAgICAgICAgICBk
YXRhLnJlYWxUeXBlcy5tX2JpdE51bWJlciA9IGJpdE51bWJlcjsKICAgICAgICAgICAgIGRhdGEu
cmVhbFR5cGVzLm1fY29tcGFyZVJlZ2lzdGVyID0gY29tcGFyZVJlZ2lzdGVyOworI2lmIEVOQUJM
RShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGRhdGEucmVhbFR5cGVzLm1fZnJvbUluc3RydWN0aW9u
Q291bnQgPSBKVU1QX0VOVU1fSU5TVFJVQ1RJT05fQ09VTlQodHlwZSk7CisjZW5kaWYKKyAgICAg
ICAgfQorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBMaW5rUmVjb3JkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV9mcm9tID0gLTE7CisgICAgICAgICAg
ICBkYXRhLnJlYWxUeXBlcy5tX3RvID0gLTE7CisgICAgICAgICAgICBkYXRhLnJlYWxUeXBlcy5t
X3R5cGUgPSBKdW1wRml4ZWQ7CisgICAgICAgICAgICBkYXRhLnJlYWxUeXBlcy5tX2xpbmtUeXBl
ID0gTGlua0ludmFsaWQ7CisgICAgICAgICAgICBkYXRhLnJlYWxUeXBlcy5tX2NvbmRpdGlvbiA9
IENvbmRpdGlvbkVROworICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV9iaXROdW1iZXIgPSAw
OworICAgICAgICAgICAgZGF0YS5yZWFsVHlwZXMubV9jb21wYXJlUmVnaXN0ZXIgPSBBUk02NFJl
Z2lzdGVyczo6SW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgIGRhdGEucmVhbFR5cGVzLm1fZnJv
bUluc3RydWN0aW9uQ291bnQgPSAwOwogICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc0xpbmtl
ZCgpIHsgcmV0dXJuIGRhdGEucmVhbFR5cGVzLm1fdG8gIT0gLTE7IH0KKyNlbmRpZgorCiAgICAg
ICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IExpbmtSZWNvcmQmIG90aGVyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBkYXRhLmNvcHlUeXBlcy5jb250ZW50WzBdID0gb3RoZXIuZGF0YS5jb3B5VHlw
ZXMuY29udGVudFswXTsKICAgICAgICAgICAgIGRhdGEuY29weVR5cGVzLmNvbnRlbnRbMV0gPSBv
dGhlci5kYXRhLmNvcHlUeXBlcy5jb250ZW50WzFdOwogICAgICAgICAgICAgZGF0YS5jb3B5VHlw
ZXMuY29udGVudFsyXSA9IG90aGVyLmRhdGEuY29weVR5cGVzLmNvbnRlbnRbMl07CiAgICAgICAg
IH0KKwogICAgICAgICBpbnRwdHJfdCBmcm9tKCkgY29uc3QgeyByZXR1cm4gZGF0YS5yZWFsVHlw
ZXMubV9mcm9tOyB9CiAgICAgICAgIHZvaWQgc2V0RnJvbShpbnRwdHJfdCBmcm9tKSB7IGRhdGEu
cmVhbFR5cGVzLm1fZnJvbSA9IGZyb207IH0KICAgICAgICAgaW50cHRyX3QgdG8oKSBjb25zdCB7
IHJldHVybiBkYXRhLnJlYWxUeXBlcy5tX3RvOyB9CiAgICAgICAgIEp1bXBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBkYXRhLnJlYWxUeXBlcy5tX3R5cGU7IH0KKyAgICAgICAgdm9pZCBzZXRU
eXBlKEp1bXBUeXBlIHR5cGUpIHsgZGF0YS5yZWFsVHlwZXMubV90eXBlID0gdHlwZTsgfQogICAg
ICAgICBKdW1wTGlua1R5cGUgbGlua1R5cGUoKSBjb25zdCB7IHJldHVybiBkYXRhLnJlYWxUeXBl
cy5tX2xpbmtUeXBlOyB9Ci0gICAgICAgIHZvaWQgc2V0TGlua1R5cGUoSnVtcExpbmtUeXBlIGxp
bmtUeXBlKSB7IEFTU0VSVChkYXRhLnJlYWxUeXBlcy5tX2xpbmtUeXBlID09IExpbmtJbnZhbGlk
KTsgZGF0YS5yZWFsVHlwZXMubV9saW5rVHlwZSA9IGxpbmtUeXBlOyB9CisgICAgICAgIHZvaWQg
c2V0TGlua1R5cGUoSnVtcExpbmtUeXBlIGxpbmtUeXBlKSB7IGRhdGEucmVhbFR5cGVzLm1fbGlu
a1R5cGUgPSBsaW5rVHlwZTsgfQorICAgICAgICB2b2lkIHNldExpbmtUeXBlKEp1bXBMaW5rVHlw
ZSBsaW5rVHlwZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGF0YS5yZWFsVHlwZXMubV9saW5rVHlwZSA9IGxpbmtUeXBlOworI2lmIEVOQUJMRShK
SVRfQ0FHRSkKKyAgICAgICAgICAgIGRhdGEucmVhbFR5cGVzLm1fZnJvbUluc3RydWN0aW9uQ291
bnQgPSBpbnN0cnVjdGlvbkNvdW50OworI2VuZGlmCisgICAgICAgIH0KICAgICAgICAgQ29uZGl0
aW9uIGNvbmRpdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEucmVhbFR5cGVzLm1fY29uZGl0aW9u
OyB9CiAgICAgICAgIGJvb2wgaXM2NEJpdCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEucmVhbFR5cGVz
Lm1faXM2NEJpdDsgfQogICAgICAgICB1bnNpZ25lZCBiaXROdW1iZXIoKSBjb25zdCB7IHJldHVy
biBkYXRhLnJlYWxUeXBlcy5tX2JpdE51bWJlcjsgfQogICAgICAgICBSZWdpc3RlcklEIGNvbXBh
cmVSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIGRhdGEucmVhbFR5cGVzLm1fY29tcGFyZVJlZ2lz
dGVyOyB9CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICB2b2lkIHNldEluc3RydWN0aW9u
Q291bnQodW5zaWduZWQgY291bnQpIHsgZGF0YS5yZWFsVHlwZXMubV9mcm9tSW5zdHJ1Y3Rpb25D
b3VudCA9IGNvdW50OyB9CisgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSBjb25z
dCB7IHJldHVybiBkYXRhLnJlYWxUeXBlcy5tX2Zyb21JbnN0cnVjdGlvbkNvdW50OyB9CisjZW5k
aWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuaW9uIHsKQEAgLTM5NSw2ICs0NDQsOSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgSnVtcExpbmtUeXBlIG1fbGlua1R5cGUgOiA4OwogICAg
ICAgICAgICAgICAgIENvbmRpdGlvbiBtX2NvbmRpdGlvbiA6IDQ7CiAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbV9iaXROdW1iZXIgOiA2OworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBtX2Zyb21JbnN0cnVjdGlvbkNvdW50IDogMzsKKyNlbmRpZgogICAg
ICAgICAgICAgICAgIGJvb2wgbV9pczY0Qml0IDogMTsKICAgICAgICAgICAgIH0gcmVhbFR5cGVz
OwogICAgICAgICAgICAgc3RydWN0IENvcHlUeXBlcyB7CkBAIC00MDQsNiArNDU2LDQxIEBAIHB1
YmxpYzoKICAgICAgICAgfSBkYXRhOwogICAgIH07CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgY2xhc3MgQWxpZ25tZW50UG9pbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBBbGln
bm1lbnRPZmZzZXQgeworICAgICAgICAgICAgQWxpZ24wMCA9IDAsCisgICAgICAgICAgICBBbGln
bjBDID0gMworICAgICAgICB9OworCisgICAgICAgIEFsaWdubWVudFBvaW50KHVuc2lnbmVkIG9m
ZnNldCwgQWxpZ25tZW50T2Zmc2V0IGFsaWdubWVudCA9IEFsaWdubWVudE9mZnNldDo6QWxpZ24w
MCkKKyAgICAgICAgICAgIDogbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBtX2FsaWdu
bWVudChhbGlnbm1lbnQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBbGlnbm1lbnRQb2ludCYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldCAmJiBtX2FsaWdubWVu
dCA9PSBvdGhlci5tX2FsaWdubWVudDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IEFsaWdubWVudFBvaW50JiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIG1fb2Zmc2V0IDwgb3RoZXIubV9vZmZzZXQgfHwgbV9hbGlnbm1lbnQgPCBv
dGhlci5tX2FsaWdubWVudDsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgICAgIHZvaWQgYWRqdXN0T2Zmc2V0Qnko
aW50IGRlbHRhKSB7IG1fb2Zmc2V0ICs9IGRlbHRhOyB9CisgICAgICAgIHVuc2lnbmVkIGFsaWdu
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxpZ25tZW50OyB9CisgICAgICAgIHVuc2lnbmVkIGFs
aWdubWVudEFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbm1lbnQgPT0gQWxpZ24wMCA/
IDE2IDogbV9hbGlnbm1lbnQgPDwgMjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWdu
ZWQgbV9vZmZzZXQ7CisgICAgICAgIHVuc2lnbmVkIG1fYWxpZ25tZW50OworICAgIH07CisjZW5k
aWYKKwogICAgIC8vIGJpdHMoTikgVkZQRXhwYW5kSW1tKGJpdHMoOCkgaW1tOCk7CiAgICAgLy8K
ICAgICAvLyBFbmNvZGluZyBvZiBmbG9hdGluZyBwb2ludCBpbW1lZGlhdGVzIGlzIGEgbGl0dGUg
Y29tcGxpY2F0ZWQuIEhlcmUncyBhCkBAIC0xNTAwLDcgKzE1ODcsMjIgQEAgcHVibGljOgogICAg
ICAgICAgICAgY29weShwdHIrKywgJmluc24sIHNpemVvZihpbnQpKTsKICAgICAgICAgfQogICAg
IH0KLSAgICAKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBzdGF0aWMgdm9pZCBmaWxsTm9w
cyh1aW50MzJfdCogYmFzZSwgaW50IGNvdW50KQorICAgIHsKKyAgICAgICAgaW50IG5vcEluc3Ry
dWN0aW9uID0gbm9wUHNldWRvKCk7CisgICAgICAgIHdoaWxlIChjb3VudC0tKQorICAgICAgICAg
ICAgKmJhc2UrKyA9IG5vcEluc3RydWN0aW9uOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZp
bGxEZXNjZW5kaW5nQnJlYWtzKGludDMyX3QqIGJhc2UsIGludCBjb3VudCkKKyAgICB7CisgICAg
ICAgIHdoaWxlIChjb3VudCkKKyAgICAgICAgICAgICpiYXNlKysgPSBicmtJbnNuKGNvdW50LS0p
OworICAgIH0KKyNlbmRpZgorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRtYklTSCgpCiAgICAg
ewogICAgICAgICBpbnNuKDB4ZDUwMzNiYmYpOwpAQCAtMjQ3NiwyMiArMjU3OCwxNSBAQCBwdWJs
aWM6CiAKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAgICBBc3NlbWJs
ZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOwotICAgICAgICB3aGlsZSAoVU5MSUtF
TFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFz
dFdhdGNocG9pbnQpKSB7CisgICAgICAgIHdoaWxlIChVTkxJS0VMWShzdGF0aWNfY2FzdDxpbnQ+
KGN1cnJlbnRPZmZzZXQoKSkgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkpCiAgICAg
ICAgICAgICBub3AoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CiAKLSAgICBBc3NlbWJsZXJM
YWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCEoYWxpZ25t
ZW50ICYgMykpOwotICAgICAgICB3aGlsZSAoIW1fYnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQp
KQotICAgICAgICAgICAgYnJrKDApOwotICAgICAgICByZXR1cm4gbGFiZWwoKTsKKyNpZiBFTkFC
TEUoSklUX0NBR0UpCisgICAgICAgIGFkZEFsaWdubWVudFBvaW50KCk7CisjZW5kaWYKKyAgICAg
ICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CiAgICAgfQotICAgIAorCiAgICAgc3RhdGljIHZv
aWQqIGdldFJlbG9jYXRlZEFkZHJlc3Modm9pZCogY29kZSwgQXNzZW1ibGVyTGFiZWwgbGFiZWwp
CiAgICAgewogICAgICAgICBBU1NFUlQobGFiZWwuaXNTZXQoKSk7CkBAIC0yNTExLDYgKzI2MDYs
MzYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY2FsbC5tX29mZnNldDsKICAgICB9CiAKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNhZ2VUb0pJVFJlZ2lv
bihSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCB0ZW1wKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFpc1NwKHRhcmdldCkpOworICAgICAgICBpbnNuKGdfanNjQ29uZmlnLmppdENhZ2VUZW1w
bGF0ZS5tYXNrSW5zbiB8IHhPclpyKHRhcmdldCkgPDwgNSB8IHhPclNwKHRhcmdldCkpOworICAg
ICAgICBpbnNuKGdfanNjQ29uZmlnLmppdENhZ2VUZW1wbGF0ZS5qaXRCYXNlSW5zbiB8IHhPclpy
KHRlbXApKTsKKyAgICAgICAgaW5zbihnX2pzY0NvbmZpZy5qaXRDYWdlVGVtcGxhdGUubWVyZ2VJ
bnNuIHwgeE9yWnIodGVtcCkgPDwgMTYgfCB4T3Jacih0YXJnZXQpIDw8IDUgfCB4T3JTcCh0YXJn
ZXQpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVubGlua2VkSnVtcChBc3NlbWJsZXJMYWJlbCBm
cm9tLCBKdW1wVHlwZSB0eXBlLCBDb25kaXRpb24gY29uZGl0aW9uKQorICAgIHsKKyAgICAgICAg
bV91bmxpbmtlZEp1bXBzLmFkZChmcm9tLm1fb2Zmc2V0LCBMaW5rUmVjb3JkKGZyb20ubV9vZmZz
ZXQsIC0xLCB0eXBlLCBjb25kaXRpb24pKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFVubGlua2Vk
SnVtcChBc3NlbWJsZXJMYWJlbCBmcm9tLCBKdW1wVHlwZSB0eXBlLCBDb25kaXRpb24gY29uZGl0
aW9uLCBib29sIGlzNjRCaXQsIFJlZ2lzdGVySUQgY29tcGFyZVJlZ2lzdGVyKQorICAgIHsKKyAg
ICAgICAgbV91bmxpbmtlZEp1bXBzLmFkZChmcm9tLm1fb2Zmc2V0LCBMaW5rUmVjb3JkKGZyb20u
bV9vZmZzZXQsIC0xLCB0eXBlLCBjb25kaXRpb24sIGlzNjRCaXQsIGNvbXBhcmVSZWdpc3Rlcikp
OworICAgIH0KKworICAgIHZvaWQgYWRkVW5saW5rZWRKdW1wKEFzc2VtYmxlckxhYmVsIGZyb20s
IEp1bXBUeXBlIHR5cGUsIENvbmRpdGlvbiBjb25kaXRpb24sIHVuc2lnbmVkIGJpdE51bWJlciwg
UmVnaXN0ZXJJRCBjb21wYXJlUmVnaXN0ZXIpCisgICAgeworICAgICAgICBtX3VubGlua2VkSnVt
cHMuYWRkKGZyb20ubV9vZmZzZXQsIExpbmtSZWNvcmQoZnJvbS5tX29mZnNldCwgLTEsIHR5cGUs
IGNvbmRpdGlvbiwgYml0TnVtYmVyLCBjb21wYXJlUmVnaXN0ZXIpKTsKKyAgICB9CisKKyAgICB2
b2lkIHJlbW92ZVVubGlua2VkSnVtcChBc3NlbWJsZXJMYWJlbCBmcm9tKQorICAgIHsKKyAgICAg
ICAgbV91bmxpbmtlZEp1bXBzLnJlbW92ZShmcm9tLm1fb2Zmc2V0KTsKKyAgICB9CisjZW5kaWYK
KwogICAgIC8vIExpbmtpbmcgJiBwYXRjaGluZzoKICAgICAvLwogICAgIC8vICdsaW5rJyBhbmQg
J3BhdGNoJyBtZXRob2RzIGFyZSBmb3IgdXNlIG9uIHVucHJvdGVjdGVkIGNvZGUgLSBzdWNoIGFz
IHRoZSBjb2RlCkBAIC0yNTIzLDYgKzI2NDgsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBB
U1NFUlQodG8uaXNTZXQoKSk7CiAgICAgICAgIEFTU0VSVChmcm9tLmlzU2V0KCkpOworI2lmIEVO
QUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmVtb3ZlVW5saW5rZWRKdW1wKGZyb20pOworI2VuZGlm
CiAgICAgICAgIG1fanVtcHNUb0xpbmsuYXBwZW5kKExpbmtSZWNvcmQoZnJvbS5tX29mZnNldCwg
dG8ubV9vZmZzZXQsIHR5cGUsIGNvbmRpdGlvbikpOwogICAgIH0KIApAQCAtMjUzMCw2ICsyNjU4
LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOwogICAgICAg
ICBBU1NFUlQoZnJvbS5pc1NldCgpKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIHJl
bW92ZVVubGlua2VkSnVtcChmcm9tKTsKKyNlbmRpZgogICAgICAgICBtX2p1bXBzVG9MaW5rLmFw
cGVuZChMaW5rUmVjb3JkKGZyb20ubV9vZmZzZXQsIHRvLm1fb2Zmc2V0LCB0eXBlLCBjb25kaXRp
b24sIGlzNjRCaXQsIGNvbXBhcmVSZWdpc3RlcikpOwogICAgIH0KIApAQCAtMjUzNyw2ICsyNjY4
LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOwogICAgICAg
ICBBU1NFUlQoZnJvbS5pc1NldCgpKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIHJl
bW92ZVVubGlua2VkSnVtcChmcm9tKTsKKyNlbmRpZgogICAgICAgICBtX2p1bXBzVG9MaW5rLmFw
cGVuZChMaW5rUmVjb3JkKGZyb20ubV9vZmZzZXQsIHRvLm1fb2Zmc2V0LCB0eXBlLCBjb25kaXRp
b24sIGJpdE51bWJlciwgY29tcGFyZVJlZ2lzdGVyKSk7CiAgICAgfQogCkBAIC0yODEyLDcgKzI5
NDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVvZihpbnQpKTsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmRl
YnVnT2Zmc2V0KCk7IH0KKyAgICB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0KCkgeyByZXR1cm4gbV9i
dWZmZXIuY3VycmVudE9mZnNldCgpOyB9CiAKICNpZiBPUyhMSU5VWCkgJiYgQ09NUElMRVIoR0ND
X0NPTVBBVElCTEUpCiAgICAgc3RhdGljIGlubGluZSB2b2lkIGxpbnV4UGFnZUZsdXNoKHVpbnRw
dHJfdCBiZWdpbiwgdWludHB0cl90IGVuZCkKQEAgLTI4NTEsNyArMjk4NSw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIEFzc2VtYmxlciBhZG1pbiBtZXRob2RzOgogCi0gICAgc3RhdGljIGludCBqdW1w
U2l6ZURlbHRhKEp1bXBUeXBlIGp1bXBUeXBlLCBKdW1wTGlua1R5cGUganVtcExpbmtUeXBlKSB7
IHJldHVybiBKVU1QX0VOVU1fU0laRShqdW1wVHlwZSkgLSBKVU1QX0VOVU1fU0laRShqdW1wTGlu
a1R5cGUpOyB9CisgICAgc3RhdGljIGludCBqdW1wU2l6ZURlbHRhKEp1bXBUeXBlIGp1bXBUeXBl
LCBKdW1wTGlua1R5cGUganVtcExpbmtUeXBlKSB7IHJldHVybiBKVU1QX0VOVU1fU0laRShqdW1w
TGlua1R5cGUpIC0gSlVNUF9FTlVNX1NJWkUoanVtcFR5cGUpOyB9CiAKICAgICBzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGxpbmtSZWNvcmRTb3VyY2VDb21wYXJhdG9yKGNvbnN0IExpbmtSZWNv
cmQmIGEsIGNvbnN0IExpbmtSZWNvcmQmIGIpCiAgICAgewpAQCAtMjg5MiwxMSArMzAyNiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSnVtcENvbXBhcmVBbmRCcmFuY2g6ICB7CiAgICAgICAg
ICAgICBBU1NFUlQoaXM0Qnl0ZUFsaWduZWQoZnJvbSkpOwogICAgICAgICAgICAgQVNTRVJUKGlz
NEJ5dGVBbGlnbmVkKHRvKSk7Ci0gICAgICAgICAgICBpbnRwdHJfdCByZWxhdGl2ZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihm
cm9tKSk7Ci0KLSAgICAgICAgICAgIGlmIChpc0ludDwyMT4ocmVsYXRpdmUpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBMaW5rSnVtcENvbXBhcmVBbmRCcmFuY2hEaXJlY3Q7CisgICAgICAgICAg
ICBpZiAodG8pIHsKKyAgICAgICAgICAgICAgICBpbnRwdHJfdCByZWxhdGl2ZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIChyZWludGVycHJldF9jYXN0PGludHB0cl90Pihmcm9t
KSk7CiAKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQ8MjE+KHJlbGF0aXZlKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIExpbmtKdW1wQ29tcGFyZUFuZEJyYW5jaERpcmVjdDsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBMaW5rSnVtcENvbXBhcmVBbmRCcmFuY2g7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBKdW1wVGVzdEJpdDogICB7CkBAIC0yOTA0LDkgKzMwMzks
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQoaXM0Qnl0ZUFsaWduZWQodG8pKTsKICAg
ICAgICAgICAgIGludHB0cl90IHJlbGF0aXZlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
dG8pIC0gKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pKTsKIAotICAgICAgICAgICAg
aWYgKGlzSW50PDE0PihyZWxhdGl2ZSkpCisgICAgICAgICAgICBpZiAoaXNJbnQ8MTY+KHJlbGF0
aXZlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTGlua0p1bXBUZXN0Qml0RGlyZWN0OwotCiAg
ICAgICAgICAgICByZXR1cm4gTGlua0p1bXBUZXN0Qml0OwogICAgICAgICB9CiAgICAgICAgIGRl
ZmF1bHQ6CkBAIC0yOTIwLDE1ICszMDU0LDEyMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBK
dW1wTGlua1R5cGUgbGlua1R5cGUgPSBjb21wdXRlSnVtcFR5cGUocmVjb3JkLnR5cGUoKSwgZnJv
bSwgdG8pOwogICAgICAgICByZWNvcmQuc2V0TGlua1R5cGUobGlua1R5cGUpOworCiAgICAgICAg
IHJldHVybiBsaW5rVHlwZTsKICAgICB9CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgc3Rh
dGljIGJvb2wgcmVxdWlyZXNBbGlnbmluZyhKdW1wTGlua1R5cGUganVtcExpbmtUeXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGp1bXBMaW5rVHlwZSA9PSBMaW5rSnVtcENvbXBhcmVBbmRCcmFu
Y2ggfHwganVtcExpbmtUeXBlID09IExpbmtKdW1wVGVzdEJpdCB8fCBqdW1wTGlua1R5cGUgPT0g
TGlua0p1bXBDb25kaXRpb247CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIGZpbGxlcklu
c25OZWVkZWRGb3JJbmRpcmVjdEp1bXBBbGlnbm1lbnQoY29uc3QgdWludDMyX3QqIGZyb20sIHVu
c2lnbmVkIGp1bXBTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuICgoMzIgLSBzdGF0aWNfY2Fz
dDxpbnQ+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pICUgMTYpIC0ganVtcFNpemUp
ICUgMTYpIC8gaW5zdHJ1Y3Rpb25TaXplOworICAgIH0KKworICAgIHN0YXRpYyBpbnQgbGF5b3V0
SnVtcChMaW5rUmVjb3JkJiByZWNvcmQsIHVpbnQzMl90KiBkZXN0LCBjb25zdCB1aW50OF90KiBm
cm9tLCBjb25zdCB1aW50OF90KiB0bykKKyAgICB7CisgICAgICAgIEp1bXBMaW5rVHlwZSBqdW1w
TGlua1R5cGUgPSBjb21wdXRlSnVtcFR5cGUocmVjb3JkLCBmcm9tIC0gaW5zdHJ1Y3Rpb25TaXpl
LCB0byk7CisKKyAgICAgICAgdW5zaWduZWQgbGlua2VkSnVtcFNpemUgPSBKVU1QX0VOVU1fU0la
RShqdW1wTGlua1R5cGUpOworCisgICAgICAgIGlmIChyZXF1aXJlc0FsaWduaW5nKGp1bXBMaW5r
VHlwZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBub3BzTmVlZGVkID0gZmlsbGVySW5z
bk5lZWRlZEZvckluZGlyZWN0SnVtcEFsaWdubWVudChyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oZnJvbSkgLSAxLCBsaW5rZWRKdW1wU2l6ZSk7CisgICAgICAgICAgICBmaWxsTm9w
cyhkZXN0LCBub3BzTmVlZGVkICsgMSk7IC8vIEFkZCBhIG5vcCBmb3IgdGhlIHBvc3NpYmxlIGlu
ZGlyZWN0IGJyYW5jaC4KKyAgICAgICAgICAgIGxpbmtlZEp1bXBTaXplICs9IG5vcHNOZWVkZWQg
KiBpbnN0cnVjdGlvblNpemU7CisgICAgICAgIH0KKworICAgICAgICBpbnQzMl90IGRlbHRhID0g
bGlua2VkSnVtcFNpemUgLSBKVU1QX0VOVU1fU0laRShyZWNvcmQudHlwZSgpKTsKKyAgICAgICAg
cmV0dXJuIGRlbHRhOworICAgIH0KKworICAgIHN0YXRpYyBib29sIHJldmVydGVkSnVtcFRvRml4
ZWRTaXplKExpbmtSZWNvcmQmIHJlY29yZCwgdWludDhfdCogZnJvbSwgdWludDhfdCogdG8pCisg
ICAgeworICAgICAgICBBU1NFUlQocmVjb3JkLmlzTGlua2VkKCkpOworICAgICAgICBKdW1wTGlu
a1R5cGUgY29tcHV0ZWRMaW5rVHlwZSA9IGNvbXB1dGVKdW1wVHlwZShyZWNvcmQudHlwZSgpLCBm
cm9tLCB0byk7CisKKyAgICAgICAgaWYgKGNvbXB1dGVkTGlua1R5cGUgIT0gcmVjb3JkLmxpbmtU
eXBlKCkgJiYgSlVNUF9FTlVNX1NJWkUoY29tcHV0ZWRMaW5rVHlwZSkgPiAgSlVNUF9FTlVNX1NJ
WkUocmVjb3JkLmxpbmtUeXBlKCkpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvbXB1dGVkTGlu
a1R5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgTGlua0p1bXBDb25kaXRpb246CisgICAgICAgICAg
ICAgICAgcmVjb3JkLnNldFR5cGUoSnVtcENvbmRpdGlvbkZpeGVkU2l6ZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExpbmtKdW1wQ29tcGFyZUFuZEJyYW5jaDoK
KyAgICAgICAgICAgICAgICByZWNvcmQuc2V0VHlwZShKdW1wQ29tcGFyZUFuZEJyYW5jaEZpeGVk
U2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExpbmtKdW1w
VGVzdEJpdDoKKyAgICAgICAgICAgICAgICByZWNvcmQuc2V0VHlwZShKdW1wVGVzdEJpdEZpeGVk
U2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIAorI2VuZGlmCisK
ICAgICBWZWN0b3I8TGlua1JlY29yZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBqdW1wc1Rv
TGluaygpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKG1fdW5saW5r
ZWRKdW1wcy5zaXplKCkpIHsKKyAgICAgICAgICAgIGF1dG8gdW5saW5rZWRKdW1wcyA9IG1fdW5s
aW5rZWRKdW1wcy52YWx1ZXMoKTsKKyAgICAgICAgICAgIG1fanVtcHNUb0xpbmsuYXBwZW5kUmFu
Z2UodW5saW5rZWRKdW1wcy5iZWdpbigpLCB1bmxpbmtlZEp1bXBzLmVuZCgpKTsKKyAgICAgICAg
fQorI2VuZGlmCiAgICAgICAgIHN0ZDo6c29ydChtX2p1bXBzVG9MaW5rLmJlZ2luKCksIG1fanVt
cHNUb0xpbmsuZW5kKCksIGxpbmtSZWNvcmRTb3VyY2VDb21wYXJhdG9yKTsKICAgICAgICAgcmV0
dXJuIG1fanVtcHNUb0xpbms7CiAgICAgfQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIHZv
aWQgYWRkQWxpZ25tZW50UG9pbnQoQWxpZ25tZW50UG9pbnQ6OkFsaWdubWVudE9mZnNldCBhbGln
bm1lbnQgPSBBbGlnbm1lbnRQb2ludDo6QWxpZ25tZW50T2Zmc2V0OjpBbGlnbjAwKQorICAgIHsK
KyAgICAgICAgaWYgKG1fYWxpZ25tZW50UG9pbnRzLnNpemUoKSkgeworICAgICAgICAgICAgQWxp
Z25tZW50UG9pbnQgbGFzdEFsaWdubWVudFBvaW50ID0gbV9hbGlnbm1lbnRQb2ludHMubGFzdCgp
OworICAgICAgICAgICAgaWYgKGxhc3RBbGlnbm1lbnRQb2ludC5vZmZzZXQoKSA9PSBjdXJyZW50
T2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobGFzdEFsaWdubWVudFBvaW50LmFsaWdu
bWVudCgpID09IGFsaWdubWVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIEFTU0VSVChsYXN0QWxpZ25tZW50UG9pbnQuYWxpZ25tZW50KCkgPCBhbGlnbm1l
bnQpOworICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBhbGlnbm1lbnQgb2Zmc2V0cyBvZiB0
aGUgcHJpb3IgYWxpZ25tZW50UG9pbnQgaXMgYmVmb3JlIHRoZSBvbmUgd2Ugd2FudCB0byBhZGQs
CisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHRoZSBuZXcgb25lIGRpc3RpY3Qg
YnkgYWRkaW5nIGEgbm9wLiBXaGVuIHdlIGxpbmssIHdlJ2xsIGxpa2VseSBhZGQgbW9yZSBub3Bz
IGhlcmUgYW55d2F5LgorICAgICAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgQVNTRVJUKCFtX2FsaWdubWVudFBvaW50cy5jb250YWlucyhBbGln
bm1lbnRQb2ludChjdXJyZW50T2Zmc2V0KCksIGFsaWdubWVudCkpKTsKKyAgICAgICAgbV9hbGln
bm1lbnRQb2ludHMuYXBwZW5kKEFsaWdubWVudFBvaW50KGN1cnJlbnRPZmZzZXQoKSwgYWxpZ25t
ZW50KSk7CisgICAgfQorCisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBhbGlnbm1lbnRQ
b2ludENvbXBhcmF0b3IoY29uc3QgQWxpZ25tZW50UG9pbnQmIGEsIGNvbnN0IEFsaWdubWVudFBv
aW50JiBiKQorICAgIHsKKyAgICAgICAgaWYgKGEub2Zmc2V0KCkgPT0gYi5vZmZzZXQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBhLmFsaWdubWVudCgpIDwgYi5hbGlnbm1lbnQoKTsKKyAgICAgICAg
cmV0dXJuIGEub2Zmc2V0KCkgPCBiLm9mZnNldCgpOworICAgIH0KKworICAgIFZlY3RvcjxBbGln
bm1lbnRQb2ludCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBhbGlnbm1lbnRQb2ludHMoKQor
ICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBhbGlnbm1l
bnQgcG9pbnQgbGlzdCBpcyB1bmlxdWUgYW5kIHNvcnRlZC4KKyAgICAgICAgaWYgKG1fYWxpZ25t
ZW50UG9pbnRzLnNpemUoKSA+IDEpIHsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gbV9hbGlnbm1l
bnRQb2ludHMuZW5kKCk7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2FsaWdubWVudFBvaW50
cy5iZWdpbigpOworICAgICAgICAgICAgZm9yIChhdXRvIHByaW9yID0gaXRlcisrOyBpdGVyICE9
IGVuZDsgKytwcmlvciwgKytpdGVyKQorICAgICAgICAgICAgICAgIEFTU0VSVCgqcHJpb3IgPCAq
aXRlcik7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICByZXR1cm4gbV9hbGlnbm1lbnRQb2lu
dHM7CisgICAgfQorI2VuZGlmCisKICAgICB0ZW1wbGF0ZTxDb3B5RnVuY3Rpb24gY29weT4KICAg
ICBzdGF0aWMgdm9pZCBBTFdBWVNfSU5MSU5FIGxpbmsoTGlua1JlY29yZCYgcmVjb3JkLCB1aW50
OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiBmcm9tSW5zdHJ1Y3Rpb244LCB1aW50OF90KiB0bykK
ICAgICB7CkBAIC0zMDUzLDcgKzMyOTMsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAg
IGNvcHkoZnJvbSArIDEsICZpbnNuLCBzaXplb2YoaW50KSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnQgaW5zbiA9IGNvbXBhcmVBbmRCcmFuY2hJbW1l
ZGlhdGUoaXM2NEJpdCA/IERhdGFzaXplXzY0IDogRGF0YXNpemVfMzIsIGludmVydChjb25kaXRp
b24pID09IENvbmRpdGlvbk5FLCAyLCBydCk7CisgICAgICAgICAgICBpbnQzMl90IGNvbnRpbnVl
T2Zmc2V0ID0gMjsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBjb250aW51ZU9m
ZnNldCArPSBmaWxsZXJJbnNuTmVlZGVkRm9ySW5kaXJlY3RKdW1wQWxpZ25tZW50KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihmcm9tSW5zdHJ1Y3Rpb24pLCAyICogaW5zdHJ1Y3Rp
b25TaXplKTsKKyNlbmRpZgorICAgICAgICAgICAgaW50IGluc24gPSBjb21wYXJlQW5kQnJhbmNo
SW1tZWRpYXRlKGlzNjRCaXQgPyBEYXRhc2l6ZV82NCA6IERhdGFzaXplXzMyLCBpbnZlcnQoY29u
ZGl0aW9uKSA9PSBDb25kaXRpb25ORSwgY29udGludWVPZmZzZXQsIHJ0KTsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8aW5zdHJ1Y3Rpb25TaXplPihmcm9t
KSA9PSBmcm9tKTsKICAgICAgICAgICAgIGNvcHkoZnJvbSwgJmluc24sIHNpemVvZihpbnQpKTsK
ICAgICAgICAgICAgIGxpbmtKdW1wT3JDYWxsPEJyYW5jaFR5cGVfSk1QLCBjb3B5Pihmcm9tICsg
MSwgZnJvbUluc3RydWN0aW9uICsgMSwgdG8pOwpAQCAtMzA4MSw3ICszMzI1LDExIEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgICAgICAgICBjb3B5KGZyb20gKyAxLCAmaW5zbiwgc2l6ZW9mKGludCkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW50IGluc24g
PSBjb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSgyLCBpbnZlcnQoY29uZGl0aW9uKSk7CisgICAg
ICAgICAgICBpbnQzMl90IGNvbnRpbnVlT2Zmc2V0ID0gMjsKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgICAgICAgICBjb250aW51ZU9mZnNldCArPSBmaWxsZXJJbnNuTmVlZGVkRm9ySW5kaXJl
Y3RKdW1wQWxpZ25tZW50KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihmcm9tSW5z
dHJ1Y3Rpb24pLCAyICogaW5zdHJ1Y3Rpb25TaXplKTsKKyNlbmRpZgorICAgICAgICAgICAgaW50
IGluc24gPSBjb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZShjb250aW51ZU9mZnNldCwgaW52ZXJ0
KGNvbmRpdGlvbikpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlw
bGVPZjxpbnN0cnVjdGlvblNpemU+KGZyb20pID09IGZyb20pOwogICAgICAgICAgICAgY29weShm
cm9tLCAmaW5zbiwgc2l6ZW9mKGludCkpOwogICAgICAgICAgICAgbGlua0p1bXBPckNhbGw8QnJh
bmNoVHlwZV9KTVAsIGNvcHk+KGZyb20gKyAxLCBmcm9tSW5zdHJ1Y3Rpb24gKyAxLCB0byk7CkBA
IC0zMTEwLDcgKzMzNTgsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgICAgIGNvcHkoZnJv
bSArIDEsICZpbnNuLCBzaXplb2YoaW50KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpbnQgaW5zbiA9IHRlc3RBbmRCcmFuY2hJbW1lZGlhdGUoaW52ZXJ0
KGNvbmRpdGlvbikgPT0gQ29uZGl0aW9uTkUsIHN0YXRpY19jYXN0PGludD4oYml0TnVtYmVyKSwg
MiwgcnQpOworICAgICAgICAgICAgaW50MzJfdCBjb250aW51ZU9mZnNldCA9IDI7CisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgY29udGludWVPZmZzZXQgKz0gZmlsbGVySW5zbk5l
ZWRlZEZvckluZGlyZWN0SnVtcEFsaWdubWVudChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz
Ml90Kj4oZnJvbUluc3RydWN0aW9uKSwgMiAqIGluc3RydWN0aW9uU2l6ZSk7CisjZW5kaWYKKyAg
ICAgICAgICAgIGludCBpbnNuID0gdGVzdEFuZEJyYW5jaEltbWVkaWF0ZShpbnZlcnQoY29uZGl0
aW9uKSA9PSBDb25kaXRpb25ORSwgc3RhdGljX2Nhc3Q8aW50PihiaXROdW1iZXIpLCBjb250aW51
ZU9mZnNldCwgcnQpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlw
bGVPZjxpbnN0cnVjdGlvblNpemU+KGZyb20pID09IGZyb20pOwogICAgICAgICAgICAgY29weShm
cm9tLCAmaW5zbiwgc2l6ZW9mKGludCkpOwogICAgICAgICAgICAgbGlua0p1bXBPckNhbGw8QnJh
bmNoVHlwZV9KTVAsIGNvcHk+KGZyb20gKyAxLCBmcm9tSW5zdHJ1Y3Rpb24gKyAxLCB0byk7CkBA
IC0zMTMwLDggKzMzODIsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgaWYgKGlzQ29uZGl0
aW9uYWxCcmFuY2hJbW1lZGlhdGUpIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKG9w
MDEsICFvcDAxKTsKICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBCcmFuY2hUeXBlX0pN
UCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaW1tMTkgPT0gOCkKKyAgICAgICAgICAgICAgICBp
bnQgYnl0ZXNUb0p1bXBPdmVyRGlyZWN0QnJhbmNoID0gODsKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgICAgICAgICAgICAgYnl0ZXNUb0p1bXBPdmVyRGlyZWN0QnJhbmNoICs9IGZpbGxlcklu
c25OZWVkZWRGb3JJbmRpcmVjdEp1bXBBbGlnbm1lbnQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGZyb20pIC0gMSwgYnl0ZXNUb0p1bXBPdmVyRGlyZWN0QnJhbmNoKSAqIGluc3Ry
dWN0aW9uU2l6ZTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGlmIChpbW0xOSA9PSBieXRlc1Rv
SnVtcE92ZXJEaXJlY3RCcmFuY2gpCiAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGlu
dmVydChjb25kaXRpb24pOwogCiAgICAgICAgICAgICAgICAgbGlua0NvbmRpdGlvbmFsQnJhbmNo
PEluZGlyZWN0QnJhbmNoPihjb25kaXRpb24sIGZyb20gLSAxLCBmcm9tSW5zdHJ1Y3Rpb24gLSAx
LCB0byk7CkBAIC0zMTQ0LDcgKzMzOTksMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgYm9v
bCBpc0NvbXBhcmVBbmRCcmFuY2hJbW1lZGlhdGUgPSBkaXNhc3NlbWJsZUNvbXBhcmVBbmRCcmFu
Y2hJbW1lZGlhdGUoZnJvbSAtIDEsIG9wU2l6ZSwgb3AsIGltbTE5LCBydCk7CiAKICAgICAgICAg
ICAgIGlmIChpc0NvbXBhcmVBbmRCcmFuY2hJbW1lZGlhdGUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaW1tMTkgPT0gOCkKKyAgICAgICAgICAgICAgICBpbnQgYnl0ZXNUb0p1bXBPdmVyRGlyZWN0
QnJhbmNoID0gODsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICAgICAgYnl0ZXNU
b0p1bXBPdmVyRGlyZWN0QnJhbmNoICs9IGZpbGxlckluc25OZWVkZWRGb3JJbmRpcmVjdEp1bXBB
bGlnbm1lbnQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGZyb20pIC0gMSwgYnl0
ZXNUb0p1bXBPdmVyRGlyZWN0QnJhbmNoKSAqIGluc3RydWN0aW9uU2l6ZTsKKyNlbmRpZgorICAg
ICAgICAgICAgICAgIGlmIChpbW0xOSA9PSBieXRlc1RvSnVtcE92ZXJEaXJlY3RCcmFuY2gpCiAg
ICAgICAgICAgICAgICAgICAgIG9wID0gIW9wOwogCiAgICAgICAgICAgICAgICAgbGlua0NvbXBh
cmVBbmRCcmFuY2g8SW5kaXJlY3RCcmFuY2g+KG9wID8gQ29uZGl0aW9uTkUgOiBDb25kaXRpb25F
USwgb3BTaXplID09IERhdGFzaXplXzY0LCBydCwgZnJvbSAtIDEsIGZyb21JbnN0cnVjdGlvbiAt
IDEsIHRvKTsKQEAgLTMxNTYsNyArMzQxNSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBi
b29sIGlzVGVzdEFuZEJyYW5jaEltbWVkaWF0ZSA9IGRpc2Fzc2VtYmxlVGVzdEFuZEJyYW5jaElt
bWVkaWF0ZShmcm9tIC0gMSwgb3AsIGJpdE51bWJlciwgaW1tMTQsIHJ0KTsKIAogICAgICAgICAg
ICAgaWYgKGlzVGVzdEFuZEJyYW5jaEltbWVkaWF0ZSkgewotICAgICAgICAgICAgICAgIGlmIChp
bW0xNCA9PSA4KQorICAgICAgICAgICAgICAgIGludCBieXRlc1RvSnVtcE92ZXJEaXJlY3RCcmFu
Y2ggPSA4OworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgICAgICBieXRlc1RvSnVt
cE92ZXJEaXJlY3RCcmFuY2ggKz0gZmlsbGVySW5zbk5lZWRlZEZvckluZGlyZWN0SnVtcEFsaWdu
bWVudChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZnJvbSkgLSAxLCBieXRlc1Rv
SnVtcE92ZXJEaXJlY3RCcmFuY2gpICogaW5zdHJ1Y3Rpb25TaXplOworI2VuZGlmCisgICAgICAg
ICAgICAgICAgaWYgKGltbTE0ID09IGJ5dGVzVG9KdW1wT3ZlckRpcmVjdEJyYW5jaCkKICAgICAg
ICAgICAgICAgICAgICAgb3AgPSAhb3A7CiAKICAgICAgICAgICAgICAgICBsaW5rVGVzdEFuZEJy
YW5jaDxJbmRpcmVjdEJyYW5jaD4ob3AgPyBDb25kaXRpb25ORSA6IENvbmRpdGlvbkVRLCBiaXRO
dW1iZXIsIHJ0LCBmcm9tIC0gMSwgZnJvbUluc3RydWN0aW9uIC0gMSwgdG8pOwpAQCAtMzY3Nyw2
ICszOTQwLDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGhpbnRQc2V1ZG8oMCk7CiAg
ICAgfQogCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgaW50IGJya0luc24odWludDE2X3QgaW1t
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4Y2VwbkdlbmVyYXRpb24oRXhjZXBuT3BfQlJFQUtQ
T0lOVCwgaW1tLCAwKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBpbnQgZGF0
YUNhY2hlWmVyb1ZpcnR1YWxBZGRyZXNzKFJlZ2lzdGVySUQgcnQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gc3lzdGVtKDAsIDEsIDB4MywgMHg3LCAweDQsIDB4MSwgcnQpOwpAQCAtMzcyMiw2ICsz
OTkwLDEwIEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAgICBWZWN0b3I8TGlua1JlY29yZCwgMCwg
VW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fanVtcHNUb0xpbms7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorICAgIEhhc2hNYXA8dWludDMyX3QsIExpbmtSZWNvcmQsIEludEhhc2g8dWludDMyX3Q+LCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQzMl90Pj4gbV91bmxpbmtlZEp1
bXBzOworICAgIFZlY3RvcjxBbGlnbm1lbnRQb2ludCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+
IG1fYWxpZ25tZW50UG9pbnRzOworI2VuZGlmCiAgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBv
aW50OwogICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKICAgICBBc3NlbWJs
ZXJCdWZmZXIgbV9idWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTTY0RUFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNNjRFQXNzZW1ibGVyLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRFQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyMyw3ICszMjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChOVU1CRVJfT0ZfQUREUkVT
U19FTkNPRElOR19JTlNUUlVDVElPTlMgPiAzKQogICAgICAgICAgICAgYnVmZmVyWzNdID0gbW92
ZVdpZGVJbWVkaWF0ZShEYXRhc2l6ZV82NCwgTW92ZVdpZGVPcF9LLCAzLCBnZXRIYWxmd29yZCh2
YWx1ZSwgMyksIHJkKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlwbGVP
ZjxpbnN0cnVjdGlvblNpemU+KGFkZHJlc3MpID09IGFkZHJlc3MpOwotICAgICAgICBwZXJmb3Jt
SklUTWVtY3B5KGFkZHJlc3MsIGJ1ZmZlciwgc2l6ZW9mKGludCkgKiA0KTsKKyAgICAgICAgcGVy
Zm9ybUpJVE1lbWNweShhZGRyZXNzLCBidWZmZXIsIHNpemVvZihpbnQpICogTlVNQkVSX09GX0FE
RFJFU1NfRU5DT0RJTkdfSU5TVFJVQ1RJT05TKTsKIAogICAgICAgICBpZiAoZmx1c2gpCiAgICAg
ICAgICAgICBjYWNoZUZsdXNoKGFkZHJlc3MsIHNpemVvZihpbnQpICogNCk7CkBAIC0zNjYsNyAr
MzY2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlYWRQb2ludGVyKHJlaW50ZXJwcmV0
X2Nhc3Q8aW50Kj4oZnJvbSkgLSBjYWxsSW5zdHJ1Y3Rpb24gLSBOVU1CRVJfT0ZfQUREUkVTU19F
TkNPRElOR19JTlNUUlVDVElPTlMpOwogICAgIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAg
ICBzdGF0aWMgY29uc3RleHByIHB0cmRpZmZfdCBNQVhfUE9JTlRFUl9CSVRTID0gNDg7CisjZWxz
ZQogICAgIHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IE1BWF9QT0lOVEVSX0JJVFMgPSA2NDsK
KyNlbmRpZgogICAgIHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IEJJVFNfRU5DT0RFQUJMRV9Q
RVJfSU5TVFJVQ1RJT04gPSAxNjsKICAgICBzdGF0aWMgY29uc3RleHByIHB0cmRpZmZfdCBOVU1C
RVJfT0ZfQUREUkVTU19FTkNPRElOR19JTlNUUlVDVElPTlMgPSBNQVhfUE9JTlRFUl9CSVRTIC8g
QklUU19FTkNPREVBQkxFX1BFUl9JTlNUUlVDVElPTjsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZpc2lvbiAyNjc0
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNjgsNyArMjA2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGIubV9vZmZzZXQgLSBhLm1fb2Zmc2V0OwogICAgIH0KIAotICAgIHN0YXRpYyBpbnQganVt
cFNpemVEZWx0YShKdW1wVHlwZSBqdW1wVHlwZSwgSnVtcExpbmtUeXBlIGp1bXBMaW5rVHlwZSkg
eyByZXR1cm4gSlVNUF9FTlVNX1NJWkUoanVtcFR5cGUpIC0gSlVNUF9FTlVNX1NJWkUoanVtcExp
bmtUeXBlKTsgfQorICAgIHN0YXRpYyBpbnQganVtcFNpemVEZWx0YShKdW1wVHlwZSBqdW1wVHlw
ZSwgSnVtcExpbmtUeXBlIGp1bXBMaW5rVHlwZSkgeyByZXR1cm4gIEpVTVBfRU5VTV9TSVpFKGp1
bXBMaW5rVHlwZSkgLSBKVU1QX0VOVU1fU0laRShqdW1wVHlwZSk7IH0KICAgICAKICAgICAvLyBB
c3NlbWJsZXIgYWRtaW4gbWV0aG9kczoKIApAQCAtMjM3Miw3ICsyMzcyLDcgQEAgcHVibGljOgog
ICAgICAgICB9CiAgICAgfQogCi0gICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBt
X2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9CisgICAgdW5zaWduZWQgY3VycmVudE9mZnNldCgp
IHsgcmV0dXJuIG1fZm9ybWF0dGVyLmN1cnJlbnRPZmZzZXQoKTsgfQogCiAjaWYgT1MoTElOVVgp
CiAgICAgc3RhdGljIGlubGluZSB2b2lkIGxpbnV4UGFnZUZsdXNoKHVpbnRwdHJfdCBiZWdpbiwg
dWludHB0cl90IGVuZCkKQEAgLTI5MjQsNyArMjkyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJv
b2wgaXNBbGlnbmVkKGludCBhbGlnbm1lbnQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzQWxp
Z25lZChhbGlnbm1lbnQpOyB9CiAgICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5kYXRhKCk7IH0KIAotICAgICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0
dXJuIG1fYnVmZmVyLmRlYnVnT2Zmc2V0KCk7IH0KKyAgICAgICAgdW5zaWduZWQgY3VycmVudE9m
ZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmN1cnJlbnRPZmZzZXQoKTsgfQogCiAgICAgICAgIEFz
c2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICB9IG1fZm9ybWF0dGVyOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzgsNiAr
NTc4LDkgQEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgQ2FsbDsKICAgICAgICAgZnJp
ZW5kIHN0cnVjdCBERkc6Ok9TUkV4aXQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVy
OworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgZnJpZW5kIGNsYXNzIEFSTTY0QXNzZW1i
bGVyOjpMaW5rUmVjb3JkOworI2VuZGlmCiAgICAgcHVibGljOgogICAgICAgICBKdW1wKCkgPSBk
ZWZhdWx0OwogCkBAIC02MzUsNyArNjM4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbWFzbS0+
aW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKIAogI2lmIEVOQUJMRShERkdfUkVHSVNURVJf
QUxMT0NBVElPTl9WQUxJREFUSU9OKQotICAgICAgICAgICAgbWFzbS0+Y2hlY2tSZWdpc3RlckFs
bG9jYXRpb25BZ2FpbnN0QnJhbmNoUmFuZ2UobV9sYWJlbC5tX29mZnNldCwgbWFzbS0+ZGVidWdP
ZmZzZXQoKSk7CisgICAgICAgICAgICBtYXNtLT5jaGVja1JlZ2lzdGVyQWxsb2NhdGlvbkFnYWlu
c3RCcmFuY2hSYW5nZShtX2xhYmVsLm1fb2Zmc2V0LCBtYXNtLT5jdXJyZW50T2Zmc2V0KCkpOwog
I2VuZGlmCiAKICNpZiBDUFUoQVJNX1RIVU1CMikKQEAgLTY3Myw2ICs2NzYsOCBAQCBwdWJsaWM6
CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYWJl
bC5pc1NldCgpOyB9CisgICAgICAgIAorICAgICAgICAKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IEFzc2VtYmxlckxhYmVsIG1fbGFiZWw7CkBAIC03OTQsMTIgKzc5OSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgTGFiZWwgYWxpZ24oKQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWxpZ24oMTYpOwotICAgICAgICByZXR1cm4gTGFiZWwo
dGhpcyk7Ci0gICAgfQotCiAjaWYgRU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElE
QVRJT04pCiAgICAgY2xhc3MgUmVnaXN0ZXJBbGxvY2F0aW9uT2Zmc2V0IHsKICAgICBwdWJsaWM6
CkBAIC04NTAsNyArODQ5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYi50ZW1wbGF0ZSBk
YXRhTG9jYXRpb248cHRyZGlmZl90PigpIC0gYS50ZW1wbGF0ZSBkYXRhTG9jYXRpb248cHRyZGlm
Zl90PigpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9h
c3NlbWJsZXIuZGVidWdPZmZzZXQoKTsgfQorICAgIHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQoKSB7
IHJldHVybiBtX2Fzc2VtYmxlci5jdXJyZW50T2Zmc2V0KCk7IH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVy
QnVmZmVyLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw4ICsxMzUsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAobV9jYXBhY2l0eSA+PSBvdGhlci5t
X2NhcGFjaXR5KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKG1f
YnVmZmVyICYmICFpc0lubGluZUJ1ZmZlcigpKQorICAgICAgICAgICAgaWYgKG1fYnVmZmVyICYm
ICFpc0lubGluZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAgQXNzZW1ibGVyRGF0YU1hbGxv
Yzo6ZnJlZShtX2J1ZmZlcik7CisgICAgICAgICAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwor
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtX2J1ZmZlciA9IG90aGVyLm1fYnVmZmVyOwog
ICAgICAgICAgICAgbV9jYXBhY2l0eSA9IG90aGVyLm1fY2FwYWNpdHk7CkBAIC0xODAsNyArMTgy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7CiAgICAg
fTsKIAotI2lmIENQVShBUk02NEUpCisjaWYgQ1BVKEFSTTY0RSkgJiYgIUVOQUJMRShKSVRfQ0FH
RSkKICAgICBjbGFzcyBBUk02NEVIYXNoIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEFSTTY0RUhh
c2goKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNiArMjM3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuICEobV9pbmRleCAmIChhbGlnbm1lbnQgLSAxKSk7CiAgICAgICAgIH0K
IAorICAgICAgICBib29sIGlzQWxpZ25lZFRvT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbWFzayA9IDB4ZikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChtX2lu
ZGV4ICYgbWFzaykgPT0gb2Zmc2V0OworICAgICAgICB9CisKICNpZiAhQ1BVKEFSTTY0KQogICAg
ICAgICB2b2lkIHB1dEJ5dGVVbmNoZWNrZWQoaW50OF90IHZhbHVlKSB7IHB1dEludGVncmFsVW5j
aGVja2VkKHZhbHVlKTsgfQogICAgICAgICB2b2lkIHB1dEJ5dGUoaW50OF90IHZhbHVlKSB7IHB1
dEludGVncmFsKHZhbHVlKTsgfQpAQCAtMjY3LDcgKzI3NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIEFzc2VtYmxlckxhYmVsKG1faW5kZXgpOwogICAgICAgICB9CiAK
LSAgICAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2luZGV4OyB9CisgICAg
ICAgIHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQoKSB7IHJldHVybiBtX2luZGV4OyB9CiAKICAgICAg
ICAgQXNzZW1ibGVyRGF0YSYmIHJlbGVhc2VBc3NlbWJsZXJEYXRhKCkgeyByZXR1cm4gV1RGTW92
ZShtX3N0b3JhZ2UpOyB9CiAKQEAgLTMyMyw3ICszMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfTsKICNlbmRpZiAvLyAhQ1BVKEFSTTY0KQogCi0jaWYgQ1BVKEFSTTY0RSkKKyNpZiBD
UFUoQVJNNjRFKSAmJiAhRU5BQkxFKEpJVF9DQUdFKQogICAgICAgICBBUk02NEVIYXNoIGhhc2go
KSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KICNlbmRpZgogCkBAIC0zNDcsNyArMzU0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICNpZiBDUFUoQVJNNjQpCiAgICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZih2YWx1ZSkgPT0gNCwgIiIpOwotI2lmIENQVShBUk02NEUpCisj
aWYgQ1BVKEFSTTY0RSkgJiYgIUVOQUJMRShKSVRfQ0FHRSkKICAgICAgICAgICAgIG1faGFzaC51
cGRhdGUodmFsdWUpOwogI2VuZGlmCiAjZW5kaWYKQEAgLTM3NCw3ICszODEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBBc3NlbWJsZXJEYXRhIG1fc3RvcmFnZTsKICAgICAgICAgdW5z
aWduZWQgbV9pbmRleDsKLSNpZiBDUFUoQVJNNjRFKQorI2lmIENQVShBUk02NEUpICYmICFFTkFC
TEUoSklUX0NBR0UpCiAgICAgICAgIEFSTTY0RUhhc2ggbV9oYXNoOwogI2VuZGlmCiAgICAgfTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNw
cAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiRXhl
Y3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJPcHRp
b25zLmgiCiAjaW5jbHVkZSAiV2FzbUNvbXBpbGF0aW9uTW9kZS5oIgpAQCAtMzgsNiArMzksMTAg
QEAKICNpbmNsdWRlICJQZXJmTG9nLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyNkZWZpbmUgRU5BQkxFX0hBU0hfQVNNX0JVRkZFUiAwCisjZW5kaWYKKwogbmFtZXNwYWNlIEpT
QyB7CiAKIGJvb2wgc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKENvZGVCbG9jayogY29kZUJsb2Nr
KQpAQCAtMTE4LDkgKzEyMyw4IEBAIExpbmtCdWZmZXI6OkNvZGVSZWY8TGlua0J1ZmZlclB0clRh
Zz4gTGkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0jaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNU
SU9OKQotCi0jaWYgQ1BVKEFSTTY0RSkKKyNpZiBFTkFCTEUoSklUX0NBR0UpIHx8IEVOQUJMRShC
UkFOQ0hfQ09NUEFDVElPTikKKyNpZiBDUFUoQVJNNjRFKSAmJiAhRU5BQkxFKEpJVF9DQUdFKQog
I2RlZmluZSBFTkFCTEVfVkVSSUZZX0pJVF9IQVNIIDEKICNlbHNlCiAjZGVmaW5lIEVOQUJMRV9W
RVJJRllfSklUX0hBU0ggMApAQCAtMjEzLDcgKzIxNywyODQgQEAgcHJpdmF0ZToKICAgICBzaXpl
X3QgbV9zaXplIHsgMCB9OwogICAgIGJvb2wgbV9idWZmZXJQcm92aWRlZCB7IGZhbHNlIH07CiB9
OworI2VuZGlmCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitzdGF0aWMgQUxXQVlTX0lOTElORSB2
b2lkIHJlY29yZExpbmtPZmZzZXRzKExpbmtCdWZmZXI6Ok9mZnNldFZlY3RvciYgb2Zmc2V0RGF0
YSwgaW50MzJfdCByZWdpb25TdGFydCwgaW50MzJfdCByZWdpb25FbmQsIGludDMyX3Qgb2Zmc2V0
KQoreworICAgIGludDMyX3QgcHRyID0gcmVnaW9uU3RhcnQgLyBzaXplb2YoaW50MzJfdCk7Cisg
ICAgY29uc3QgaW50MzJfdCBlbmQgPSByZWdpb25FbmQgLyBzaXplb2YoaW50MzJfdCk7CisgICAg
aW50MzJfdCogb2Zmc2V0cyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGludDMyX3QqPihvZmZzZXRE
YXRhLmRhdGEoKSk7CisgICAgd2hpbGUgKHB0ciA8IGVuZCkKKyAgICAgICAgb2Zmc2V0c1twdHIr
K10gPSBvZmZzZXQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnN0cnVjdGlvblR5cGU+Cit2
b2lkIExpbmtCdWZmZXI6OmNvcHlBbGlnbkFuZExpbmtDb2RlKE1hY3JvQXNzZW1ibGVyJiBtYWNy
b0Fzc2VtYmxlciwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQoreworICAgIHNpemVfdCBt
YXhDb2RlU2l6ZTsKKyAgICBzaXplX3QgaW5wdXRDb2RlU2l6ZTsKKyAgICBWZWN0b3I8TGlua1Jl
Y29yZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBqdW1wc1RvTGluayA9IG1hY3JvQXNzZW1i
bGVyLmp1bXBzVG9MaW5rKCk7CisgICAgVmVjdG9yPEFsaWdubWVudFBvaW50LCAwLCBVbnNhZmVW
ZWN0b3JPdmVyZmxvdz4mIGFsaWdubWVudFBvaW50cyA9IG1hY3JvQXNzZW1ibGVyLmFsaWdubWVu
dFBvaW50cygpOworICAgIHVuc2lnbmVkIGp1bXBDb3VudCA9IGp1bXBzVG9MaW5rLnNpemUoKTsK
KyAgICB1bnNpZ25lZCBhbGlnbm1lbnRDb3VudCA9IGFsaWdubWVudFBvaW50cy5zaXplKCk7CisK
KyAgICBpZiAobV9jb2RlKSB7CisgICAgICAgIC8vIEV4aXN0aW5nIGNvZGUsIG91ciBtYXggY29k
ZSBzaXplIGhhcyBiZWVuIGRldGVybWluZWQuCisgICAgICAgIGFsbG9jYXRlKG1hY3JvQXNzZW1i
bGVyLCBlZmZvcnQpOworICAgICAgICBtYXhDb2RlU2l6ZSA9IGlucHV0Q29kZVNpemUgPSBtYWNy
b0Fzc2VtYmxlci5tX2Fzc2VtYmxlci5jb2RlU2l6ZSgpOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIENvbnNlcnZhdGl2ZSBtYXhpbXVtIHNpemUgZXN0aW1hdGUsIGFkZCBzcGFjZSBmb3IgYWxs
IGxhYmVscyBhbmQgYWxsIGp1bXBzIG5lZWRpbmcgbWF4aW11bSBhbGlnbm1lbnQuCisgICAgICAg
IGlucHV0Q29kZVNpemUgPSBtYWNyb0Fzc2VtYmxlci5tX2Fzc2VtYmxlci5jb2RlU2l6ZSgpOwor
ICAgICAgICBtYXhDb2RlU2l6ZSA9IGlucHV0Q29kZVNpemUgKyAoanVtcENvdW50ICsgYWxpZ25t
ZW50Q291bnQpICogMyAqIHNpemVvZihJbnN0cnVjdGlvblR5cGUpOworICAgICAgICBtYXhDb2Rl
U2l6ZSA9IHJvdW5kVXBUb011bHRpcGxlT2Y8aml0QWxsb2NhdGlvbkdyYW51bGU+KG1heENvZGVT
aXplKTsKKyAgICAgICAgYWxsb2NhdGUobWFjcm9Bc3NlbWJsZXIsIG1heENvZGVTaXplLCBlZmZv
cnQpOworICAgIH0KKworICAgIGlmIChkaWRGYWlsVG9BbGxvY2F0ZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX29mZnNldHMucmVzaXplVG9GaXQoaW5wdXRDb2RlU2l6ZSk7CisKKyAgICB1
aW50OF90KiBpbkRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtYWNyb0Fzc2VtYmxl
ci5tX2Fzc2VtYmxlci5idWZmZXIoKS5tX3N0b3JhZ2UuYnVmZmVyKCkpOworCisgICAgdWludDhf
dCogY29kZU91dERhdGEgPSBtX2NvZGUuZGF0YUxvY2F0aW9uPHVpbnQ4X3QqPigpOworI2lmIEVO
QUJMRShIQVNIX0FTTV9CVUZGRVIpCisgICAgY29uc3QgdWludDMyX3QgZXhwZWN0ZWRGaW5hbEhh
c2ggPSBtYWNyb0Fzc2VtYmxlci5tX2Fzc2VtYmxlci5idWZmZXIoKS5oYXNoKCkuZmluYWxIYXNo
KCk7CisgICAgQVJNNjRFSGFzaCB2ZXJpZnlVbmNvbXBhY3RlZEhhc2g7CisjZW5kaWYKKworICAg
IEJyYW5jaENvbXBhY3Rpb25MaW5rQnVmZmVyIG91dEJ1ZmZlcihtYXhDb2RlU2l6ZSk7CisgICAg
dWludDhfdCogb3V0RGF0YSA9IG91dEJ1ZmZlci5kYXRhKCk7CisKKyAgICBSRUxFQVNFX0FTU0VS
VChyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZih1bnNpZ25lZCk+KG91dERhdGEpID09IG91dERh
dGEpOworICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHVuc2ln
bmVkKT4oY29kZU91dERhdGEpID09IGNvZGVPdXREYXRhKTsKKworICAgIHVuc2lnbmVkIGN1cnJl
bnRKdW1wID0gMDsKKyAgICB1bnNpZ25lZCBjdXJyZW50QWxpZ25tZW50UG9pbnQgPSAwOworICAg
IHNpemVfdCByZWdpb25FbmQgPSAwOworCisgICAgZW51bSBSZWdpb25UeXBlIHsKKyAgICAgICAg
U3RhcnQgPSAwLAorICAgICAgICBBbGlnblBvaW50ID0gMSwKKyAgICAgICAgSnVtcCA9IDIsCisg
ICAgICAgIEVuZCA9IDMKKyAgICB9IGN1cnJlbnRSZWdpb24gPSB7IFN0YXJ0IH07CisKKyAgICBh
dXRvIG5leHRDb3B5UmVnaW9uID0gWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChjdXJyZW50UmVn
aW9uKSB7CisgICAgICAgIGNhc2UgUmVnaW9uVHlwZTo6U3RhcnQ6CisgICAgICAgICAgICBjdXJy
ZW50SnVtcCA9IDA7CisgICAgICAgICAgICBjdXJyZW50QWxpZ25tZW50UG9pbnQgPSAwOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVnaW9uVHlwZTo6QWxpZ25Qb2ludDoKKyAg
ICAgICAgICAgIGN1cnJlbnRBbGlnbm1lbnRQb2ludCsrOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUmVnaW9uVHlwZTo6SnVtcDoKKyAgICAgICAgICAgIGN1cnJlbnRKdW1wKys7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZWdpb25UeXBlOjpFbmQ6CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudEFs
aWdubWVudFBvaW50IDwgYWxpZ25tZW50Q291bnQgJiYgY3VycmVudEp1bXAgPCBqdW1wQ291bnQp
IHsKKyAgICAgICAgICAgIGlmIChhbGlnbm1lbnRQb2ludHNbY3VycmVudEFsaWdubWVudFBvaW50
XS5vZmZzZXQoKSA8PSBqdW1wc1RvTGlua1tjdXJyZW50SnVtcF0uZnJvbSgpKSB7CisgICAgICAg
ICAgICAgICAgcmVnaW9uRW5kID0gYWxpZ25tZW50UG9pbnRzW2N1cnJlbnRBbGlnbm1lbnRQb2lu
dF0ub2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgY3VycmVudFJlZ2lvbiA9IFJlZ2lvblR5cGU6
OkFsaWduUG9pbnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZWdpb25FbmQgPSBqdW1wc1RvTGlua1tjdXJyZW50SnVtcF0uZnJvbSgp
OworICAgICAgICAgICAgY3VycmVudFJlZ2lvbiA9IFJlZ2lvblR5cGU6Okp1bXA7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjdXJyZW50QWxpZ25t
ZW50UG9pbnQgPCBhbGlnbm1lbnRDb3VudCkgeworICAgICAgICAgICAgcmVnaW9uRW5kID0gYWxp
Z25tZW50UG9pbnRzW2N1cnJlbnRBbGlnbm1lbnRQb2ludF0ub2Zmc2V0KCk7CisgICAgICAgICAg
ICBjdXJyZW50UmVnaW9uID0gUmVnaW9uVHlwZTo6QWxpZ25Qb2ludDsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoY3VycmVudEp1bXAg
PCBqdW1wQ291bnQpIHsKKyAgICAgICAgICAgIHJlZ2lvbkVuZCA9IGp1bXBzVG9MaW5rW2N1cnJl
bnRKdW1wXS5mcm9tKCk7CisgICAgICAgICAgICBjdXJyZW50UmVnaW9uID0gUmVnaW9uVHlwZTo6
SnVtcDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZWdpb25FbmQgPSBpbnB1dENvZGVTaXplOworICAgICAgICBjdXJyZW50UmVnaW9uID0g
UmVnaW9uVHlwZTo6RW5kOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgYm9v
bCBuZWVkQW5vdGhlckxpbmtpbmdQYXNzOworICAgIGludCByZWFkUHRyOworICAgIGludCB3cml0
ZVB0cjsKKworICAgIGRvIHsKKyAgICAgICAgbmVlZEFub3RoZXJMaW5raW5nUGFzcyA9IGZhbHNl
OworICAgICAgICByZWFkUHRyID0gMDsKKyAgICAgICAgd3JpdGVQdHIgPSAwOworCisgICAgICAg
IGlmIChtX3Nob3VsZFBlcmZvcm1CcmFuY2hDb21wYWN0aW9uKSB7CisgICAgICAgICAgICBmb3Ig
KGN1cnJlbnRSZWdpb24gPSBSZWdpb25UeXBlOjpTdGFydDsgbmV4dENvcHlSZWdpb24oKTspIHsK
KyAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gd3JpdGVQdHIgLSByZWFkUHRyOworICAgICAg
ICAgICAgICAgIEFTU0VSVCghKG9mZnNldCAmIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIGVuZCBvZiB0
aGUgbGFzdCBhbGlnbiBwb2ludC9qdW1wIHRvIHRoZSBjdXJyZW50IG9uZS4KKyAgICAgICAgICAg
ICAgICBzaXplX3QgcmVnaW9uU2l6ZSA9IHJlZ2lvbkVuZCAtIHJlYWRQdHI7CisgICAgICAgICAg
ICAgICAgSW5zdHJ1Y3Rpb25UeXBlKiBjb3B5U291cmNlID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8
SW5zdHJ1Y3Rpb25UeXBlKj4oaW5EYXRhICsgcmVhZFB0cik7CisgICAgICAgICAgICAgICAgSW5z
dHJ1Y3Rpb25UeXBlKiBjb3B5RW5kID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8SW5zdHJ1Y3Rpb25U
eXBlKj4oaW5EYXRhICsgcmVhZFB0ciArIHJlZ2lvblNpemUpOworICAgICAgICAgICAgICAgIElu
c3RydWN0aW9uVHlwZSogY29weURzdCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEluc3RydWN0aW9u
VHlwZSo+KG91dERhdGEgKyB3cml0ZVB0cik7CisgICAgICAgICAgICAgICAgQVNTRVJUKCEocmVn
aW9uU2l6ZSAlIDIpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIShyZWFkUHRyICUgMikpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVCghKHdyaXRlUHRyICUgMikpOworICAgICAgICAgICAgICAg
IHdoaWxlIChjb3B5U291cmNlICE9IGNvcHlFbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
dHJ1Y3Rpb25UeXBlIGluc24gPSAqY29weVNvdXJjZSsrOworI2lmIEVOQUJMRShIQVNIX0FTTV9C
VUZGRVIpCisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEluc3RydWN0
aW9uVHlwZSkgPT0gNCwgIiIpOworICAgICAgICAgICAgICAgICAgICB2ZXJpZnlVbmNvbXBhY3Rl
ZEhhc2gudXBkYXRlKGluc24pOworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICpjb3B5RHN0
KysgPSBpbnNuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZWNvcmRMaW5r
T2Zmc2V0cyhtX29mZnNldHMsIHJlYWRQdHIsIHJlZ2lvbkVuZCwgb2Zmc2V0KTsKKyAgICAgICAg
ICAgICAgICByZWFkUHRyICs9IHJlZ2lvblNpemU7CisgICAgICAgICAgICAgICAgd3JpdGVQdHIg
Kz0gcmVnaW9uU2l6ZTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAoY3VycmVudFJlZ2lvbikg
eworICAgICAgICAgICAgICAgIGNhc2UgUmVnaW9uVHlwZTo6U3RhcnQ6CisgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUmVnaW9uVHlwZTo6QWxpZ25Qb2ludDoKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vcHNUb0Fk
ZCA9ICgoMTYgKyBhbGlnbm1lbnRQb2ludHNbY3VycmVudEFsaWdubWVudFBvaW50XS5hbGlnbm1l
bnRBc09mZnNldCgpIC0gKHdyaXRlUHRyICUgMTYpKSAvIHNpemVvZihJbnN0cnVjdGlvblR5cGUp
KSAlIHNpemVvZihJbnN0cnVjdGlvblR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG5vcHNUb0FkZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc2VtYmxlcjo6Zmls
bE5vcHMoY29weURzdCwgbm9wc1RvQWRkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZVB0ciArPSBub3BzVG9BZGQgKiBzaXplb2YoSW5zdHJ1Y3Rpb25UeXBlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb3B5RHN0ICs9IG5vcHNUb0FkZDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWNvcmRMaW5rT2Zmc2V0cyhtX29mZnNldHMsIHJlZ2lvbkVuZCAtIHNp
emVvZihJbnN0cnVjdGlvblR5cGUpLCByZWFkUHRyLCB3cml0ZVB0ciAtIHJlYWRQdHIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUmVnaW9uVHlwZTo6SnVtcDoK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3Vs
YXRlIGFic29sdXRlIGFkZHJlc3Mgb2YgdGhlIGp1bXAgdGFyZ2V0LCBpbiB0aGUgY2FzZSBvZiBi
YWNrd2FyZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJyYW5jaGVzIHdlIG5lZWQgdG8g
YmUgcHJlY2lzZSwgZm9yd2FyZCBicmFuY2hlcyB3ZSBhcmUgcGVzc2ltaXN0aWMKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHRhcmdldCA9IG51bGxwdHI7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChqdW1wc1RvTGlua1tjdXJyZW50SnVtcF0uaXNMaW5rZWQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqdW1wc1RvTGlua1tjdXJyZW50
SnVtcF0udG8oKSA+PSBqdW1wc1RvTGlua1tjdXJyZW50SnVtcF0uZnJvbSgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBjb2RlT3V0RGF0YSArIGp1bXBzVG9MaW5r
W2N1cnJlbnRKdW1wXS50bygpICsgb2Zmc2V0OyAvLyBDb21wZW5zYXRlIGZvciB3aGF0IHdlIGhh
dmUgY29sbGFwc2VkIHNvIGZhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gY29kZU91dERhdGEgKyBqdW1w
c1RvTGlua1tjdXJyZW50SnVtcF0udG8oKSArIGV4ZWN1dGFibGVPZmZzZXRGb3IoanVtcHNUb0xp
bmtbY3VycmVudEp1bXBdLnRvKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhID0gTWFjcm9Bc3NlbWJsZXI6OmxheW91
dEp1bXAoanVtcHNUb0xpbmtbY3VycmVudEp1bXBdLCBjb3B5RHN0LCBjb2RlT3V0RGF0YSArIHdy
aXRlUHRyLCB0YXJnZXQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsdGEpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZVB0ciArPSBkZWx0YTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWNvcmRMaW5rT2Zmc2V0cyhtX29mZnNldHMsIHJlZ2lvbkVu
ZCArIGRlbHRhLCByZWFkUHRyLCB3cml0ZVB0ciAtIHJlYWRQdHIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUmVnaW9uVHlwZTo6RW5kOgorICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBjb3BpZWQgdGhlIHRyYWlsaW5nIGNvZGUgYWJvdmU7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgeworICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBqdW1wQ291bnQ7ICsraSkKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFNYWNyb0Fzc2VtYmxlcjo6Y2FuQ29tcGFjdChqdW1wc1RvTGlu
a1tpXS50eXBlKCkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ29weSBldmVy
eXRoaW5nIGFmdGVyIHRoZSBsYXN0IGp1bXAgLyBhbGlnbiBwb2ludAorICAgICAgICAgICAgSW5z
dHJ1Y3Rpb25UeXBlKiBkc3QgPSBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb25UeXBlKj4ob3V0RGF0
YSArIHdyaXRlUHRyKTsKKyAgICAgICAgICAgIEluc3RydWN0aW9uVHlwZSogc3JjID0gYml0d2lz
ZV9jYXN0PEluc3RydWN0aW9uVHlwZSo+KGluRGF0YSArIHJlYWRQdHIpOworICAgICAgICAgICAg
c2l6ZV90IGJ5dGVzID0gaW5wdXRDb2RlU2l6ZSAtIHJlYWRQdHI7CisKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGRzdCkgJSBzaXplb2YoSW5zdHJ1
Y3Rpb25UeXBlKSA9PSAwKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KHNyYykgJSBzaXplb2YoSW5zdHJ1Y3Rpb25UeXBlKSA9PSAwKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVzICUgc2l6ZW9mKEluc3RydWN0aW9uVHlwZSkgPT0g
MCk7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYnl0ZXM7IGkgKz0gc2l6
ZW9mKEluc3RydWN0aW9uVHlwZSkpIHsKKyAgICAgICAgICAgICAgICBJbnN0cnVjdGlvblR5cGUg
aW5zbiA9ICpzcmMrKzsKKyNpZiBFTkFCTEUoSEFTSF9BU01fQlVGRkVSKQorICAgICAgICAgICAg
ICAgIHZlcmlmeVVuY29tcGFjdGVkSGFzaC51cGRhdGUoaW5zbik7CisjZW5kaWYKKyAgICAgICAg
ICAgICAgICAqZHN0KysgPSBpbnNuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyNpZiBF
TkFCTEUoSEFTSF9BU01fQlVGRkVSKQorICAgICAgICBpZiAodmVyaWZ5VW5jb21wYWN0ZWRIYXNo
LmZpbmFsSGFzaCgpICE9IGV4cGVjdGVkRmluYWxIYXNoKSB7CisgICAgICAgICAgICBkYXRhTG9n
KCJIYXNoZXMgZG9uJ3QgbWF0Y2g6ICIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KHZlcmlmeVVuY29tcGFjdGVkSGFzaC5maW5hbEhhc2goKSkp
KSwgIiAiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PihleHBlY3RlZEZpbmFsSGFzaCkpKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkNyYXNo
aW5nISIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAg
ICAgcmVjb3JkTGlua09mZnNldHMobV9vZmZzZXRzLCByZWFkUHRyLCBpbnB1dENvZGVTaXplLCB3
cml0ZVB0ciAtIHJlYWRQdHIpOworCisgICAgICAgIHNpemVfdCBhZGRpdGlvbmFsU3RyaWRlID0g
MDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0ganVtcENvdW50OyBpLS07KQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoanVtcHNUb0xpbmtbaV0uaXNMaW5rZWQoKSkgeworICAgICAgICAg
ICAgICAgIGludHB0cl90IGFkanVzdGVkRnJvbSA9IGp1bXBzVG9MaW5rW2ldLmZyb20oKSArIGV4
ZWN1dGFibGVPZmZzZXRGb3IoanVtcHNUb0xpbmtbaV0uZnJvbSgpKTsKKyAgICAgICAgICAgICAg
ICBpbnRwdHJfdCBhZGp1c3RlZFRvID0ganVtcHNUb0xpbmtbaV0udG8oKSArIGV4ZWN1dGFibGVP
ZmZzZXRGb3IoanVtcHNUb0xpbmtbaV0udG8oKSk7CisgICAgICAgICAgICAgICAgdWludDhfdCog
bG9jYXRpb24gPSBjb2RlT3V0RGF0YSArIGFkanVzdGVkRnJvbTsKKyAgICAgICAgICAgICAgICB1
aW50OF90KiB0YXJnZXQgPSBjb2RlT3V0RGF0YSArIGFkanVzdGVkVG87CisKKyAgICAgICAgICAg
ICAgICBpZiAobmVlZEFub3RoZXJMaW5raW5nUGFzcyAmJiBsb2NhdGlvbiA8IHRhcmdldCkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHJlYWxseSBhIGhldXJpc3RpYyB0byByZWR1
Y2UgdGhlIHBvc3NpYmlsaXR5IG9mIG11bHRpcGxlIHJlbGlua3MuCisgICAgICAgICAgICAgICAg
ICAgIHRhcmdldCArPSBhZGRpdGlvbmFsU3RyaWRlOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0ZWRKdW1wVG9GaXhlZFNpemUo
anVtcHNUb0xpbmtbaV0sIGxvY2F0aW9uLCB0YXJnZXQpKSB7CisgICAgICAgICAgICAgICAgICAg
IG5lZWRBbm90aGVyTGlua2luZ1Bhc3MgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhZGRp
dGlvbmFsU3RyaWRlICs9IHNpemVvZihJbnN0cnVjdGlvblR5cGUpOworICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6bGluazxtZW1jcHk+
KGp1bXBzVG9MaW5rW2ldLCBvdXREYXRhICsgYWRqdXN0ZWRGcm9tLCBsb2NhdGlvbiwgdGFyZ2V0
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gd2hpbGUgKG5lZWRBbm90aGVyTGlu
a2luZ1Bhc3MpOworCisgICAgc2l6ZV90IGZpbmFsU2l6ZSA9IHdyaXRlUHRyICsgaW5wdXRDb2Rl
U2l6ZSAtIHJlYWRQdHI7CisgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkgJiYgZmluYWxTaXpl
IDwgaW5wdXRDb2RlU2l6ZSkgeworICAgICAgICBzaXplX3Qgbm9wU2l6ZUluQnl0ZXMgPSBpbnB1
dENvZGVTaXplIC0gZmluYWxTaXplOworICAgICAgICBBc3NlbWJsZXI6OmZpbGxOb3BzPG1lbWNw
eT4ob3V0RGF0YSArIGZpbmFsU2l6ZSwgbm9wU2l6ZUluQnl0ZXMpOworICAgIH0KKworICAgIGlm
IChtX2V4ZWN1dGFibGVNZW1vcnkpIHsKKyAgICAgICAgbV9zaXplID0gZmluYWxTaXplOworICAg
ICAgICBtX2V4ZWN1dGFibGVNZW1vcnktPnNocmluayhtX3NpemUpOwogCisgICAgICAgIG1fc2l6
ZSA9IG1fZXhlY3V0YWJsZU1lbW9yeS0+c2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgLy8gQ29weSBh
bnkgdHJhaWxpbmcgYnJlYWtwb2ludHMgdG8gZmlsbCBvdXQgdGhlIGFsbG9jYXRpb24uCisgICAg
ICAgIEluc3RydWN0aW9uVHlwZSogZHN0ID0gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uVHlwZSo+
KG91dERhdGEgKyB3cml0ZVB0cik7CisgICAgICAgIEluc3RydWN0aW9uVHlwZSogc3JjID0gYml0
d2lzZV9jYXN0PEluc3RydWN0aW9uVHlwZSo+KGluRGF0YSArIHJlYWRQdHIpOworICAgICAgICBz
aXplX3QgYnl0ZXMgPSBtX3NpemUgLSBmaW5hbFNpemU7CisKKyAgICAgICAgQVNTRVJUKHdyaXRl
UHRyICsgYnl0ZXMgPD0gbWF4Q29kZVNpemUpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYnl0ZXM7IGkgKz0gc2l6ZW9mKEluc3RydWN0aW9uVHlwZSkpIHsKKyAgICAgICAgICAg
IEluc3RydWN0aW9uVHlwZSBpbnNuID0gKnNyYysrOworICAgICAgICAgICAgKmRzdCsrID0gaW5z
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVChjb2RlT3V0RGF0YSAhPSBvdXREYXRh
KTsKKyAgICBwZXJmb3JtSklUTWVtY3B5KGNvZGVPdXREYXRhLCBvdXREYXRhLCBtX3NpemUpOwor
CisgICAganVtcHNUb0xpbmsuY2xlYXIoKTsKKworI2lmIERVTVBfTElOS19TVEFUSVNUSUNTCisg
ICAgZHVtcExpbmtTdGF0aXN0aWNzKGNvZGVPdXREYXRhLCBpbnB1dENvZGVTaXplLCBtX3NpemUp
OworI2VuZGlmCisjaWYgRFVNUF9DT0RFCisgICAgZHVtcENvZGUoY29kZU91dERhdGEsIG1fc2l6
ZSk7CisjZW5kaWYKK30KKworI2VsaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQogc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCByZWNvcmRMaW5rT2Zmc2V0cyhBc3NlbWJsZXJEYXRhJiBhc3Nl
bWJsZXJEYXRhLCBpbnQzMl90IHJlZ2lvblN0YXJ0LCBpbnQzMl90IHJlZ2lvbkVuZCwgaW50MzJf
dCBvZmZzZXQpCiB7CiAgICAgaW50MzJfdCBwdHIgPSByZWdpb25TdGFydCAvIHNpemVvZihpbnQz
Ml90KTsKQEAgLTI2Niw3ICs1NDcsNyBAQCB2b2lkIExpbmtCdWZmZXI6OmNvcHlDb21wYWN0QW5k
TGlua0NvZGUoCiAKICAgICBpZiAobV9zaG91bGRQZXJmb3JtQnJhbmNoQ29tcGFjdGlvbikgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcENvdW50OyArK2kpIHsKLSAgICAg
ICAgICAgIGludCBvZmZzZXQgPSByZWFkUHRyIC0gd3JpdGVQdHI7CisgICAgICAgICAgICBpbnQg
b2Zmc2V0ID0gd3JpdGVQdHIgLSByZWFkUHRyOwogICAgICAgICAgICAgQVNTRVJUKCEob2Zmc2V0
ICYgMSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQ29weSB0aGUgaW5zdHJ1
Y3Rpb25zIGZyb20gdGhlIGxhc3QganVtcCB0byB0aGUgY3VycmVudCBvbmUuCkBAIC0yOTMsOSAr
NTc0LDkgQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKAogICAgICAg
ICAgICAgLy8gYnJhbmNoZXMgd2UgbmVlZCB0byBiZSBwcmVjaXNlLCBmb3J3YXJkIGJyYW5jaGVz
IHdlIGFyZSBwZXNzaW1pc3RpYwogICAgICAgICAgICAgY29uc3QgdWludDhfdCogdGFyZ2V0Owog
ICAgICAgICAgICAgaWYgKGp1bXBzVG9MaW5rW2ldLnRvKCkgPj0ganVtcHNUb0xpbmtbaV0uZnJv
bSgpKQotICAgICAgICAgICAgICAgIHRhcmdldCA9IGNvZGVPdXREYXRhICsganVtcHNUb0xpbmtb
aV0udG8oKSAtIG9mZnNldDsgLy8gQ29tcGVuc2F0ZSBmb3Igd2hhdCB3ZSBoYXZlIGNvbGxhcHNl
ZCBzbyBmYXIKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBjb2RlT3V0RGF0YSArIGp1bXBzVG9M
aW5rW2ldLnRvKCkgKyBvZmZzZXQ7IC8vIENvbXBlbnNhdGUgZm9yIHdoYXQgd2UgaGF2ZSBjb2xs
YXBzZWQgc28gZmFyCiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0g
Y29kZU91dERhdGEgKyBqdW1wc1RvTGlua1tpXS50bygpIC0gZXhlY3V0YWJsZU9mZnNldEZvcihq
dW1wc1RvTGlua1tpXS50bygpKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBjb2RlT3V0RGF0
YSArIGp1bXBzVG9MaW5rW2ldLnRvKCkgKyBleGVjdXRhYmxlT2Zmc2V0Rm9yKGp1bXBzVG9MaW5r
W2ldLnRvKCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgSnVtcExpbmtUeXBlIGp1
bXBMaW5rVHlwZSA9IE1hY3JvQXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUoanVtcHNUb0xpbmtb
aV0sIGNvZGVPdXREYXRhICsgd3JpdGVQdHIsIHRhcmdldCk7CiAgICAgICAgICAgICAvLyBDb21w
YWN0IGJyYW5jaCBpZiB3ZSBjYW4uLi4KQEAgLTMwMyw4ICs1ODQsOCBAQCB2b2lkIExpbmtCdWZm
ZXI6OmNvcHlDb21wYWN0QW5kTGlua0NvZGUoCiAgICAgICAgICAgICAgICAgLy8gU3RlcCBiYWNr
IGluIHRoZSB3cml0ZSBzdHJlYW0KICAgICAgICAgICAgICAgICBpbnQzMl90IGRlbHRhID0gTWFj
cm9Bc3NlbWJsZXI6Omp1bXBTaXplRGVsdGEoanVtcHNUb0xpbmtbaV0udHlwZSgpLCBqdW1wTGlu
a1R5cGUpOwogICAgICAgICAgICAgICAgIGlmIChkZWx0YSkgewotICAgICAgICAgICAgICAgICAg
ICB3cml0ZVB0ciAtPSBkZWx0YTsKLSAgICAgICAgICAgICAgICAgICAgcmVjb3JkTGlua09mZnNl
dHMobV9hc3NlbWJsZXJTdG9yYWdlLCBqdW1wc1RvTGlua1tpXS5mcm9tKCkgLSBkZWx0YSwgcmVh
ZFB0ciwgcmVhZFB0ciAtIHdyaXRlUHRyKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVQdHIg
Kz0gZGVsdGE7CisgICAgICAgICAgICAgICAgICAgIHJlY29yZExpbmtPZmZzZXRzKG1fYXNzZW1i
bGVyU3RvcmFnZSwganVtcHNUb0xpbmtbaV0uZnJvbSgpIC0gZGVsdGEsIHJlYWRQdHIsIHdyaXRl
UHRyIC0gcmVhZFB0cik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAganVtcHNUb0xpbmtbaV0uc2V0RnJvbSh3cml0ZVB0cik7CkBAIC0zNDUsMTEgKzYyNiwx
MSBAQCB2b2lkIExpbmtCdWZmZXI6OmNvcHlDb21wYWN0QW5kTGlua0NvZGUoCiAgICAgfQogI2Vu
ZGlmCiAKLSAgICByZWNvcmRMaW5rT2Zmc2V0cyhtX2Fzc2VtYmxlclN0b3JhZ2UsIHJlYWRQdHIs
IGluaXRpYWxTaXplLCByZWFkUHRyIC0gd3JpdGVQdHIpOworICAgIHJlY29yZExpbmtPZmZzZXRz
KG1fYXNzZW1ibGVyU3RvcmFnZSwgcmVhZFB0ciwgaW5pdGlhbFNpemUsIHdyaXRlUHRyIC0gcmVh
ZFB0cik7CiAgICAgICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBqdW1wQ291bnQ7
ICsraSkgewogICAgICAgICB1aW50OF90KiBsb2NhdGlvbiA9IGNvZGVPdXREYXRhICsganVtcHNU
b0xpbmtbaV0uZnJvbSgpOwotICAgICAgICB1aW50OF90KiB0YXJnZXQgPSBjb2RlT3V0RGF0YSAr
IGp1bXBzVG9MaW5rW2ldLnRvKCkgLSBleGVjdXRhYmxlT2Zmc2V0Rm9yKGp1bXBzVG9MaW5rW2ld
LnRvKCkpOworICAgICAgICB1aW50OF90KiB0YXJnZXQgPSBjb2RlT3V0RGF0YSArIGp1bXBzVG9M
aW5rW2ldLnRvKCkgKyBleGVjdXRhYmxlT2Zmc2V0Rm9yKGp1bXBzVG9MaW5rW2ldLnRvKCkpOwog
ICAgICAgICBpZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkpCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6bGluazxtZW1jcHlXcmFwcGVyPihqdW1wc1RvTGlua1tpXSwgb3V0RGF0YSArIGp1
bXBzVG9MaW5rW2ldLmZyb20oKSwgbG9jYXRpb24sIHRhcmdldCk7CiAgICAgICAgIGVsc2UKQEAg
LTM3NCwxNCArNjU1LDE0IEBAIHZvaWQgTGlua0J1ZmZlcjo6Y29weUNvbXBhY3RBbmRMaW5rQ29k
ZSgKICAgICAgICAgbV9leGVjdXRhYmxlTWVtb3J5LT5zaHJpbmsobV9zaXplKTsKICAgICB9CiAK
LSAgICBpZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkpIHsKLSAgICAgICAgQVNTRVJUKGNvZGVP
dXREYXRhID09IG91dERhdGEpOwotICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEpJ
VE1lbW9yeVBhdGgoKSkpCi0gICAgICAgICAgICBkdW1wSklUTWVtb3J5KG91dERhdGEsIG91dERh
dGEsIG1fc2l6ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGNvZGVPdXREYXRhICE9
IG91dERhdGEpOwotICAgICAgICBwZXJmb3JtSklUTWVtY3B5KGNvZGVPdXREYXRhLCBvdXREYXRh
LCBtX3NpemUpOwotICAgIH0KKyNpZiAhQ1BVKEFSTTY0RSkgfHwgIUVOQUJMRShGQVNUX0pJVF9Q
RVJNSVNTSU9OUykgfHwgRU5BQkxFKEpJVF9DQUdFKQorICAgIEFTU0VSVChjb2RlT3V0RGF0YSAh
PSBvdXREYXRhKTsKKyAgICBwZXJmb3JtSklUTWVtY3B5KGNvZGVPdXREYXRhLCBvdXREYXRhLCBt
X3NpemUpOworI2Vsc2UKKyAgICBBU1NFUlQoY29kZU91dERhdGEgPT0gb3V0RGF0YSk7CisgICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlQYXRoKCkpKQorICAgICAgICBkdW1w
SklUTWVtb3J5KG91dERhdGEsIG91dERhdGEsIG1fc2l6ZSk7CisjZW5kaWYKIAogICAgIGp1bXBz
VG9MaW5rLmNsZWFyKCk7CiAKQEAgLTM5MiwxMyArNjczLDEzIEBAIHZvaWQgTGlua0J1ZmZlcjo6
Y29weUNvbXBhY3RBbmRMaW5rQ29kZSgKICAgICBkdW1wQ29kZShjb2RlT3V0RGF0YSwgbV9zaXpl
KTsKICNlbmRpZgogfQotI2VuZGlmIC8vIEVOQUJMRShCUkFOQ0hfQ09NUEFDVElPTikKKyNlbmRp
ZiAvLyBlbGlmIEVOQUJMRShCUkFOQ0hfQ09NUEFDVElPTikKIAogCiB2b2lkIExpbmtCdWZmZXI6
OmxpbmtDb2RlKE1hY3JvQXNzZW1ibGVyJiBtYWNyb0Fzc2VtYmxlciwgSklUQ29tcGlsYXRpb25F
ZmZvcnQgZWZmb3J0KQogewogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBlbmQgb2YgdGhlIGxhc3Qg
aW52YWxpZGF0aW9uIHBvaW50IGRvZXMgbm90IGV4dGVuZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUg
YnVmZmVyLgotICAgIG1hY3JvQXNzZW1ibGVyLmxhYmVsKCk7CisgICAgbWFjcm9Bc3NlbWJsZXIu
bGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAKICNpZiAhRU5BQkxFKEJSQU5DSF9DT01QQUNU
SU9OKQogI2lmIGRlZmluZWQoQVNTRU1CTEVSX0hBU19DT05TVEFOVF9QT09MKSAmJiBBU1NFTUJM
RVJfSEFTX0NPTlNUQU5UX1BPT0wKQEAgLTQxNyw2ICs2OTgsOCBAQCB2b2lkIExpbmtCdWZmZXI6
OmxpbmtDb2RlKE1hY3JvQXNzZW1ibGVyCiAjaWYgQ1BVKE1JUFMpCiAgICAgbWFjcm9Bc3NlbWJs
ZXIubV9hc3NlbWJsZXIucmVsb2NhdGVKdW1wcyhidWZmZXIuZGF0YSgpLCBjb2RlKTsKICNlbmRp
ZgorI2VsaWYgRU5BQkxFKEpJVF9DQUdFKSAmJiBDUFUoQVJNNjQpCisgICAgY29weUFsaWduQW5k
TGlua0NvZGU8dWludDMyX3Q+KG1hY3JvQXNzZW1ibGVyLCBlZmZvcnQpOwogI2VsaWYgQ1BVKEFS
TV9USFVNQjIpCiAgICAgY29weUNvbXBhY3RBbmRMaW5rQ29kZTx1aW50MTZfdD4obWFjcm9Bc3Nl
bWJsZXIsIGVmZm9ydCk7CiAjZWxpZiBDUFUoQVJNNjQpCkBAIC00MjYsOSArNzA5LDggQEAgdm9p
ZCBMaW5rQnVmZmVyOjpsaW5rQ29kZShNYWNyb0Fzc2VtYmxlcgogICAgIG1fbGlua1Rhc2tzID0g
V1RGTW92ZShtYWNyb0Fzc2VtYmxlci5tX2xpbmtUYXNrcyk7CiB9CiAKLXZvaWQgTGlua0J1ZmZl
cjo6YWxsb2NhdGUoTWFjcm9Bc3NlbWJsZXImIG1hY3JvQXNzZW1ibGVyLCBKSVRDb21waWxhdGlv
bkVmZm9ydCBlZmZvcnQpCit2b2lkIExpbmtCdWZmZXI6OmFsbG9jYXRlKE1hY3JvQXNzZW1ibGVy
JiBtYWNyb0Fzc2VtYmxlciwgc2l6ZV90IGluaXRpYWxTaXplLCBKSVRDb21waWxhdGlvbkVmZm9y
dCBlZmZvcnQpCiB7Ci0gICAgc2l6ZV90IGluaXRpYWxTaXplID0gbWFjcm9Bc3NlbWJsZXIubV9h
c3NlbWJsZXIuY29kZVNpemUoKTsKICAgICBpZiAobV9jb2RlKSB7CiAgICAgICAgIGlmIChpbml0
aWFsU2l6ZSA+IG1fc2l6ZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQzOSwxMCArNzIxLDEy
IEBAIHZvaWQgTGlua0J1ZmZlcjo6YWxsb2NhdGUoTWFjcm9Bc3NlbWJsZXIKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB3aGlsZSAoaW5pdGlhbFNpemUgJSBqaXRBbGxvY2F0aW9u
R3JhbnVsZSkgeworICAgIGZvciAoc2l6ZV90IGN1cnJlbnRTaXplID0gbWFjcm9Bc3NlbWJsZXIu
bV9hc3NlbWJsZXIuY29kZVNpemUoKTsKKyAgICAgICAgIGN1cnJlbnRTaXplIDwgaW5pdGlhbFNp
emUgfHwgY3VycmVudFNpemUgJSBqaXRBbGxvY2F0aW9uR3JhbnVsZTsKKyAgICAgICAgIGN1cnJl
bnRTaXplID0gbWFjcm9Bc3NlbWJsZXIubV9hc3NlbWJsZXIuY29kZVNpemUoKSkKICAgICAgICAg
bWFjcm9Bc3NlbWJsZXIuYnJlYWtwb2ludCgpOwotICAgICAgICBpbml0aWFsU2l6ZSA9IG1hY3Jv
QXNzZW1ibGVyLm1fYXNzZW1ibGVyLmNvZGVTaXplKCk7Ci0gICAgfQorCisgICAgaW5pdGlhbFNp
emUgPSBtYWNyb0Fzc2VtYmxlci5tX2Fzc2VtYmxlci5jb2RlU2l6ZSgpOwogCiAgICAgbV9leGVj
dXRhYmxlTWVtb3J5ID0gRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2luZ2xldG9uKCkuYWxsb2NhdGUo
aW5pdGlhbFNpemUsIGVmZm9ydCk7CiAgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCkBAIC00
NTIsNiArNzM2LDExIEBAIHZvaWQgTGlua0J1ZmZlcjo6YWxsb2NhdGUoTWFjcm9Bc3NlbWJsZXIK
ICAgICBtX2RpZEFsbG9jYXRlID0gdHJ1ZTsKIH0KIAordm9pZCBMaW5rQnVmZmVyOjphbGxvY2F0
ZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVm
Zm9ydCkKK3sKKyAgICBhbGxvY2F0ZShtYWNyb0Fzc2VtYmxlciwgbWFjcm9Bc3NlbWJsZXIubV9h
c3NlbWJsZXIuY29kZVNpemUoKSwgZWZmb3J0KTsKK30KKwogdm9pZCBMaW5rQnVmZmVyOjpwZXJm
b3JtRmluYWxpemF0aW9uKCkKIHsKICAgICBmb3IgKGF1dG8mIHRhc2sgOiBtX2xpbmtUYXNrcykK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShy
ZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTIgKzc3LDE3IEBAIGNsYXNzIExpbmtCdWZm
ZXIgewogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbDMyIERhdGFMYWJlbDMy
OwogICAgIHR5cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBEYXRhTGFiZWxQdHI7
CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgQ29udmVy
dGlibGVMb2FkTGFiZWw7Ci0jaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQorI2lmIEVOQUJM
RShCUkFOQ0hfQ09NUEFDVElPTikgfHwgRU5BQkxFKEpJVF9DQUdFKQogICAgIHR5cGVkZWYgTWFj
cm9Bc3NlbWJsZXI6OkxpbmtSZWNvcmQgTGlua1JlY29yZDsKICAgICB0eXBlZGVmIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlua1R5cGUgSnVtcExpbmtUeXBlOworICAgIHR5cGVkZWYgTWFjcm9Bc3Nl
bWJsZXI6OkFsaWdubWVudFBvaW50IEFsaWdubWVudFBvaW50OwogI2VuZGlmCiAKIHB1YmxpYzoK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgdHlwZWRlZiBWZWN0b3I8aW50MzJfdCwgMTY+IE9m
ZnNldFZlY3RvcjsKKyNlbmRpZgorCiAgICAgTGlua0J1ZmZlcihNYWNyb0Fzc2VtYmxlciYgbWFj
cm9Bc3NlbWJsZXIsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQg
PSBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKQogICAgICAgICA6IG1fc2l6ZSgwKQogICAgICAg
ICAsIG1fZGlkQWxsb2NhdGUoZmFsc2UpCkBAIC0yMDMsOCArMjA4LDIwIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIEFTU0VSVChjYWxsLmlzRmxhZ1NldChDYWxsOjpMaW5rYWJsZSkpOwogICAg
ICAgICBBU1NFUlQoY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpOworI2lmIDEKKyAgICAgICAg
Ly8gRklYTUU6IEpJVF9DQUdFIC0gTmVlZCB0byByZWZhY3RvciBuZWFyIGNhbGxzIHRvIHVzZSBh
IGxhYmVsIGJlZm9yZSB0aGUgYnJhbmNoIGFuZCBub3QgYWZ0ZXIuCisgICAgICAgIGlmIChjYWxs
LmlzRmxhZ1NldChDYWxsOjpUYWlsKSkKKyAgICAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25O
ZWFyQ2FsbDx0YWc+KE1hY3JvQXNzZW1ibGVyOjpnZXRMaW5rZXJBZGRyZXNzPHRhZz4oY29kZSgp
LCBhcHBseU9mZnNldChjYWxsLm1fbGFiZWwpKSwKKyAgICAgICAgICAgICAgICBOZWFyQ2FsbE1v
ZGU6OlRhaWwpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNhbGwubV9sYWJlbC5tX29m
ZnNldCArPSBleGVjdXRhYmxlT2Zmc2V0Rm9yKGNhbGwubV9sYWJlbC5tX29mZnNldCAtIDQpOwor
ICAgICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbk5lYXJDYWxsPHRhZz4oTWFjcm9Bc3NlbWJs
ZXI6OmdldExpbmtlckFkZHJlc3M8dGFnPihjb2RlKCksIGNhbGwubV9sYWJlbCksCisgICAgICAg
ICAgICAgICAgTmVhckNhbGxNb2RlOjpSZWd1bGFyKTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAg
ICAgcmV0dXJuIENvZGVMb2NhdGlvbk5lYXJDYWxsPHRhZz4oTWFjcm9Bc3NlbWJsZXI6OmdldExp
bmtlckFkZHJlc3M8dGFnPihjb2RlKCksIGFwcGx5T2Zmc2V0KGNhbGwubV9sYWJlbCkpLAogICAg
ICAgICAgICAgY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6VGFpbCkgPyBOZWFyQ2FsbE1vZGU6OlRhaWwg
OiBOZWFyQ2FsbE1vZGU6OlJlZ3VsYXIpOworI2VuZGlmCiAgICAgfQogCiAgICAgdGVtcGxhdGU8
UHRyVGFnIHRhZz4KQEAgLTI4NSw3ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8UHRy
VGFnIHRhZz4KICAgICBDb2RlUHRyPHRhZz4gdHJhbXBvbGluZUF0KExhYmVsIGxhYmVsKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIENvZGVQdHI8dGFnPihNYWNyb0Fzc2VtYmxlcjo6QXNzZW1ibGVy
VHlwZV9UOjpnZXRSZWxvY2F0ZWRBZGRyZXNzKGNvZGUoKSwgYXBwbHlPZmZzZXQobGFiZWwubV9s
YWJlbCkpKTsKKyAgICAgICAgcmV0dXJuIENvZGVQdHI8dGFnPihNYWNyb0Fzc2VtYmxlcjo6Z2V0
TGlua2VyQWRkcmVzczx0YWc+KGNvZGUoKSwgYXBwbHlPZmZzZXQobGFiZWwubV9sYWJlbCkpKTsK
ICAgICB9CiAKICAgICB2b2lkKiBkZWJ1Z0FkZHJlc3MoKQpAQCAtMzExLDE0ICszMjgsMTggQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gd2l0aGluIHRoaXMgc3BhY2UgdGhhdCByZXF1aXJlZCBjb21w
YWN0aW9uLgogICAgICAgICBpZiAobG9jYXRpb24gPCBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihp
bnQzMl90KSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgICAgIHJldHVybiBtX29mZnNldHNbbG9jYXRpb24gLyBzaXplb2YoaW50MzJfdCkgLSAxXTsK
KyNlbHNlCiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8aW50MzJfdCo+KG1fYXNzZW1ibGVy
U3RvcmFnZS5idWZmZXIoKSlbbG9jYXRpb24gLyBzaXplb2YoaW50MzJfdCkgLSAxXTsKKyNlbmRp
ZgogICAgIH0KICNlbmRpZgogICAgIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIGFwcGx5
T2Zmc2V0KFQgc3JjKQogICAgIHsKICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCi0gICAg
ICAgIHNyYy5tX29mZnNldCAtPSBleGVjdXRhYmxlT2Zmc2V0Rm9yKHNyYy5tX29mZnNldCk7Cisg
ICAgICAgIHNyYy5tX29mZnNldCArPSBleGVjdXRhYmxlT2Zmc2V0Rm9yKHNyYy5tX29mZnNldCk7
CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHNyYzsKICAgICB9CkBAIC0zMjksMTAgKzM1MCwxNCBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9jb2RlLmRhdGFMb2NhdGlvbigpOwogICAgIH0K
ICAgICAKKyAgICB2b2lkIGFsbG9jYXRlKE1hY3JvQXNzZW1ibGVyJiwgc2l6ZV90LCBKSVRDb21w
aWxhdGlvbkVmZm9ydCk7CiAgICAgdm9pZCBhbGxvY2F0ZShNYWNyb0Fzc2VtYmxlciYsIEpJVENv
bXBpbGF0aW9uRWZmb3J0KTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbGlua0NvZGUo
TWFjcm9Bc3NlbWJsZXImLCBKSVRDb21waWxhdGlvbkVmZm9ydCk7Ci0jaWYgRU5BQkxFKEJSQU5D
SF9DT01QQUNUSU9OKQorI2lmIEVOQUJMRShKSVRfQ0FHRSkgJiYgQ1BVKEFSTTY0KQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBJbnN0cnVjdGlvblR5cGU+CisgICAgdm9pZCBjb3B5QWxpZ25BbmRM
aW5rQ29kZShNYWNyb0Fzc2VtYmxlciYsIEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKKyNlbGlmIEVO
QUJMRShCUkFOQ0hfQ09NUEFDVElPTikKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5zdHJ1Y3Rp
b25UeXBlPgogICAgIHZvaWQgY29weUNvbXBhY3RBbmRMaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYs
IEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKICNlbmRpZgpAQCAtMzUwLDcgKzM3NSwxMSBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBtX2V4ZWN1dGFibGVNZW1v
cnk7CiAgICAgc2l6ZV90IG1fc2l6ZTsKICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIE9mZnNldFZlY3RvciBtX29mZnNldHM7CisjZWxzZQog
ICAgIEFzc2VtYmxlckRhdGEgbV9hc3NlbWJsZXJTdG9yYWdlOworI2VuZGlmCiAgICAgYm9vbCBt
X3Nob3VsZFBlcmZvcm1CcmFuY2hDb21wYWN0aW9uIHsgdHJ1ZSB9OwogI2VuZGlmCiAgICAgYm9v
bCBtX2RpZEFsbG9jYXRlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
SVBTQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NSVBTQXNzZW1ibGVyLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MTYs
NyArNzE2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9idWZmZXIuY29kZVNpemUoKTsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmRl
YnVnT2Zmc2V0KCk7IH0KKyAgICB1bnNpZ25lZCBjdXJyZW50T2Zmc2V0KCkgeyByZXR1cm4gbV9i
dWZmZXIuY3VycmVudE9mZnNldCgpOyB9CiAKICAgICAvLyBBc3NlbWJseSBoZWxwZXJzIGZvciBt
b3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMuCiAgICAgdm9pZCB2bW92KFJlZ2lz
dGVySUQgcmQxLCBSZWdpc3RlcklEIHJkMiwgRlBSZWdpc3RlcklEIHJuKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTTY0KQogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyLmgiCiAKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpT
Q1B0clRhZy5oIgogI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Jbmxp
bmVBU00uaD4KQEAgLTQyLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKE1B
U01fUFJPQkUpCiAKIGV4dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7CitW
QUxJRF9KSVRfVEFSR0VUKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpOwogCiB1c2luZyBuYW1lc3Bh
Y2UgQVJNNjRSZWdpc3RlcnM7CiAKQEAgLTIzNSwyNCArMjM3LDI0IEBAIHN0YXRpY19hc3NlcnQo
IShQUk9CRV9TSVpFX1BMVVNfRVhUUkFTICYKICNkZWZpbmUgRlBSX09GRlNFVChmcHIpIChQUk9C
RV9DUFVfIyNmcHIjI19PRkZTRVQgLSBQUk9CRV9DUFVfUTBfT0ZGU0VUKQogCiBzdHJ1Y3QgSW5j
b21pbmdQcm9iZVJlY29yZCB7Ci0gICAgVUNQVVJlZ2lzdGVyIHgyNDsKLSAgICBVQ1BVUmVnaXN0
ZXIgeDI1OworICAgIFVDUFVSZWdpc3RlciB4MTY7CisgICAgVUNQVVJlZ2lzdGVyIHgxNzsKICAg
ICBVQ1BVUmVnaXN0ZXIgeDI2OwogICAgIFVDUFVSZWdpc3RlciB4Mjc7CiAgICAgVUNQVVJlZ2lz
dGVyIHgyODsKICAgICBVQ1BVUmVnaXN0ZXIgeDMwOyAvLyBscgogfTsKIAotI2RlZmluZSBJTl9Y
MjRfT0ZGU0VUICgwICogR1BSRUdfU0laRSkKLSNkZWZpbmUgSU5fWDI1X09GRlNFVCAoMSAqIEdQ
UkVHX1NJWkUpCisjZGVmaW5lIElOX1gxNl9PRkZTRVQgKDAgKiBHUFJFR19TSVpFKQorI2RlZmlu
ZSBJTl9YMTdfT0ZGU0VUICgxICogR1BSRUdfU0laRSkKICNkZWZpbmUgSU5fWDI2X09GRlNFVCAo
MiAqIEdQUkVHX1NJWkUpCiAjZGVmaW5lIElOX1gyN19PRkZTRVQgKDMgKiBHUFJFR19TSVpFKQog
I2RlZmluZSBJTl9YMjhfT0ZGU0VUICg0ICogR1BSRUdfU0laRSkKICNkZWZpbmUgSU5fWDMwX09G
RlNFVCAoNSAqIEdQUkVHX1NJWkUpCiAjZGVmaW5lIElOX1NJWkUgICAgICAgKDYgKiBHUFJFR19T
SVpFKQogCi1zdGF0aWNfYXNzZXJ0KElOX1gyNF9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQ
cm9iZVJlY29yZCwgeDI0KSwgIklOX1gyNF9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7Ci1zdGF0aWNf
YXNzZXJ0KElOX1gyNV9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDI1
KSwgIklOX1gyNV9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1gxNl9P
RkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDE2KSwgIklOX1gxNl9PRkZT
RVQgaXMgaW5jb3JyZWN0Iik7CitzdGF0aWNfYXNzZXJ0KElOX1gxN19PRkZTRVQgPT0gb2Zmc2V0
b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDE3KSwgIklOX1gxN19PRkZTRVQgaXMgaW5jb3JyZWN0
Iik7CiBzdGF0aWNfYXNzZXJ0KElOX1gyNl9PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9i
ZVJlY29yZCwgeDI2KSwgIklOX1gyNl9PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CiBzdGF0aWNfYXNz
ZXJ0KElOX1gyN19PRkZTRVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDI3KSwg
IklOX1gyN19PRkZTRVQgaXMgaW5jb3JyZWN0Iik7CiBzdGF0aWNfYXNzZXJ0KElOX1gyOF9PRkZT
RVQgPT0gb2Zmc2V0b2YoSW5jb21pbmdQcm9iZVJlY29yZCwgeDI4KSwgIklOX1gyMl9PRkZTRVQg
aXMgaW5jb3JyZWN0Iik7CkBAIC0zMDUsMzQgKzMwNywzNiBAQCBzdGF0aWNfYXNzZXJ0KEpJVF9Q
Uk9CRV9FWEVDVVRPUl9QVFJfVEFHCiBzdGF0aWNfYXNzZXJ0KEpJVF9QUk9CRV9TVEFDS19JTklU
SUFMSVpBVElPTl9GVU5DVElPTl9QVFJfVEFHID09IEpJVFByb2JlU3RhY2tJbml0aWFsaXphdGlv
bkZ1bmN0aW9uUHRyVGFnKTsKICNlbmRpZgogCisvLyBGSVhNRTogSklUX0NBR0UgLSBEbyB3ZSBu
ZWVkIHRvIHZhbGlkYXRlIHRoZSB0YXJnZXQgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbGxzPworCiAv
LyBXZSB1c2UgeDI5IGFuZCB4MzAgaW5zdGVhZCBvZiBmcCBhbmQgbHIgYmVjYXVzZSBHQ0MncyBp
bmxpbmUgYXNzZW1ibGVyIGRvZXMgbm90IHJlY29nbml6ZSBmcCBhbmQgbHIuCiAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTUxMiBmb3IgZGV0YWlscy4K
IGFzbSAoCiAgICAgIi50ZXh0IiAiXG4iCiAgICAgIi5iYWxpZ24gMTYiICJcbiIKKyAgICAgCiAg
ICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpTWFzbVByb2JlVHJhbXBvbGluZSkgIlxuIgot
ICAgIEhJREVfU1lNQk9MKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICJcbiIKICAgICBTWU1CT0xf
U1RSSU5HKGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpICI6IiAiXG4iCiAKICAgICAvLyBNYWNyb0Fz
c2VtYmxlckFSTTY0Ojpwcm9iZSgpIGhhcyBhbHJlYWR5IGdlbmVyYXRlZCBjb2RlIHRvIHN0b3Jl
IHNvbWUgdmFsdWVzIGluIGFuCiAgICAgLy8gSW5jb21pbmdQcm9iZVJlY29yZC4gc3AgcG9pbnRz
IHRvIHRoZSBJbmNvbWluZ1Byb2JlUmVjb3JkLgogICAgIC8vCiAgICAgLy8gSW5jb21pbmcgcmVn
aXN0ZXIgdmFsdWVzOgotICAgIC8vICAgICB4MjQ6IHByb2JlIGZ1bmN0aW9uCi0gICAgLy8gICAg
IHgyNTogcHJvYmUgYXJnCi0gICAgLy8gICAgIHgyNjogc2NyYXRjaCwgd2FzIGN0aU1hc21Qcm9i
ZVRyYW1wb2xpbmUKLSAgICAvLyAgICAgeDI3OiBzY3JhdGNoCisgICAgLy8gICAgIHgxNjogc2Ny
YXRjaCwgd2FzIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUKKyAgICAvLyAgICAgeDE3OiBzY3JhdGNo
CisgICAgLy8gICAgIHgyNjogcHJvYmUgZnVuY3Rpb24KKyAgICAvLyAgICAgeDI3OiBwcm9iZSBh
cmcKICAgICAvLyAgICAgeDI4OiBQcm9iZTo6ZXhlY3V0ZVByb2JlCiAgICAgLy8gICAgIHgzMDog
cmV0dXJuIGFkZHJlc3MKIAotICAgICJtb3YgICAgICAgeDI2LCBzcCIgIlxuIgotICAgICJtb3Yg
ICAgICAgeDI3LCBzcCIgIlxuIgorICAgICJtb3YgICAgICAgeDE2LCBzcCIgIlxuIgorICAgICJt
b3YgICAgICAgeDE3LCBzcCIgIlxuIgogCi0gICAgInN1YiAgICAgICB4MjcsIHgyNywgIyIgU1RS
SU5HSVpFX1ZBTFVFX09GKFBST0JFX1NJWkVfUExVU19FWFRSQVMgKyBPVVRfU0laRSkgIlxuIgot
ICAgICJiaWMgICAgICAgeDI3LCB4MjcsICMweGYiICJcbiIgLy8gVGhlIEFSTSBFQUJJIHNwZWNp
ZmllcyB0aGF0IHRoZSBzdGFjayBuZWVkcyB0byBiZSAxNiBieXRlIGFsaWduZWQuCi0gICAgIm1v
diAgICAgICBzcCwgeDI3IiAiXG4iIC8vIFNldCB0aGUgc3AgdG8gcHJvdGVjdCB0aGUgUHJvYmU6
OlN0YXRlIGZyb20gaW50ZXJydXB0cyBiZWZvcmUgd2UgaW5pdGlhbGl6ZSBpdC4KKyAgICAic3Vi
ICAgICAgIHgxNywgeDE3LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfU0laRV9QTFVTX0VY
VFJBUyArIE9VVF9TSVpFKSAiXG4iCisgICAgImJpYyAgICAgICB4MTcsIHgxNywgIzB4ZiIgIlxu
IiAvLyBUaGUgQVJNIEVBQkkgc3BlY2lmaWVzIHRoYXQgdGhlIHN0YWNrIG5lZWRzIHRvIGJlIDE2
IGJ5dGUgYWxpZ25lZC4KKyAgICAibW92ICAgICAgIHNwLCB4MTciICJcbiIgLy8gU2V0IHRoZSBz
cCB0byBwcm90ZWN0IHRoZSBQcm9iZTo6U3RhdGUgZnJvbSBpbnRlcnJ1cHRzIGJlZm9yZSB3ZSBp
bml0aWFsaXplIGl0LgogCi0gICAgInN0cCAgICAgICB4MjQsIHgyNSwgW3NwLCAjIiBTVFJJTkdJ
WkVfVkFMVUVfT0YoUFJPQkVfUFJPQkVfRlVOQ1RJT05fT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9y
ZSB0aGUgcHJvYmUgaGFuZGxlciBmdW5jdGlvbiBhbmQgYXJnIChwcmVsb2FkZWQgaW50byB4MjQg
YW5kIHgyNQorICAgICJzdHAgICAgICAgeDI2LCB4MjcsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKFBST0JFX1BST0JFX0ZVTkNUSU9OX09GRlNFVCkgIl0iICJcbiIgLy8gU3RvcmUgdGhlIHBy
b2JlIGhhbmRsZXIgZnVuY3Rpb24gYW5kIGFyZyAocHJlbG9hZGVkIGludG8geDI0IGFuZCB4MjUK
IAogICAgICJzdHAgICAgICAgeDAsIHgxLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9C
RV9DUFVfWDBfT0ZGU0VUKSAiXSIgIlxuIgogICAgICJtcnMgICAgICAgeDAsIG56Y3YiICJcbiIg
Ly8gUHJlbG9hZCBuemN2LgpAQCAtMzQyLDIyICszNDYsMjIgQEAgYXNtICgKICAgICAic3RwICAg
ICAgIHg2LCB4NywgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1g2X09GRlNF
VCkgIl0iICJcbiIKICAgICAic3RwICAgICAgIHg4LCB4OSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFM
VUVfT0YoUFJPQkVfQ1BVX1g4X09GRlNFVCkgIl0iICJcbiIKIAotICAgICJsZHAgICAgICAgeDIs
IHgzLCBbeDI2LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fWDI0X09GRlNFVCkgIl0iICJcbiIg
Ly8gUHJlbG9hZCBzYXZlZCB4MjQgYW5kIHgyNS4KLSAgICAibGRwICAgICAgIHg0LCB4NSwgW3gy
NiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1gyNl9PRkZTRVQpICJdIiAiXG4iIC8vIFByZWxv
YWQgc2F2ZWQgeDI2IGFuZCB4MjcuCi0gICAgImxkcCAgICAgICB4NiwgeDcsIFt4MjYsICMiIFNU
UklOR0laRV9WQUxVRV9PRihJTl9YMjhfT0ZGU0VUKSAiXSIgIlxuIiAvLyBQcmVsb2FkIHNhdmVk
IHgyOCBhbmQgbHIuCi0gICAgImFkZCAgICAgICB4MjYsIHgyNiwgIyIgU1RSSU5HSVpFX1ZBTFVF
X09GKElOX1NJWkUpICJcbiIgLy8gQ29tcHV0ZSB0aGUgc3AgYmVmb3JlIHRoZSBwcm9iZS4KKyAg
ICAibGRwICAgICAgIHgyLCB4MywgW3gxNiwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKElOX1gxNl9P
RkZTRVQpICJdIiAiXG4iIC8vIFByZWxvYWQgc2F2ZWQgeDE2IGFuZCB4MTcuCisgICAgImxkcCAg
ICAgICB4NCwgeDUsIFt4MTYsICMiIFNUUklOR0laRV9WQUxVRV9PRihJTl9YMjZfT0ZGU0VUKSAi
XSIgIlxuIiAvLyBQcmVsb2FkIHNhdmVkIHgyNiBhbmQgeDI3LgorICAgICJsZHAgICAgICAgeDYs
IHg3LCBbeDE2LCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoSU5fWDI4X09GRlNFVCkgIl0iICJcbiIg
Ly8gUHJlbG9hZCBzYXZlZCB4MjggYW5kIGxyLgorICAgICJhZGQgICAgICAgeDE2LCB4MTYsICMi
IFNUUklOR0laRV9WQUxVRV9PRihJTl9TSVpFKSAiXG4iIC8vIENvbXB1dGUgdGhlIHNwIGJlZm9y
ZSB0aGUgcHJvYmUuCiAKICAgICAic3RwICAgICAgIHgxMCwgeDExLCBbc3AsICMiIFNUUklOR0la
RV9WQUxVRV9PRihQUk9CRV9DUFVfWDEwX09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAgICAg
IHgxMiwgeDEzLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDEyX09GRlNF
VCkgIl0iICJcbiIKICAgICAic3RwICAgICAgIHgxNCwgeDE1LCBbc3AsICMiIFNUUklOR0laRV9W
QUxVRV9PRihQUk9CRV9DUFVfWDE0X09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RwICAgICAgIHgx
NiwgeDE3LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDE2X09GRlNFVCkg
Il0iICJcbiIKICAgICAic3RwICAgICAgIHgxOCwgeDE5LCBbc3AsICMiIFNUUklOR0laRV9WQUxV
RV9PRihQUk9CRV9DUFVfWDE4X09GRlNFVCkgIl0iICJcbiIKICAgICAic3RwICAgICAgIHgyMCwg
eDIxLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfWDIwX09GRlNFVCkgIl0i
ICJcbiIKICAgICAic3RwICAgICAgIHgyMiwgeDIzLCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9P
RihQUk9CRV9DUFVfWDIyX09GRlNFVCkgIl0iICJcbiIKLSAgICAic3RwICAgICAgIHgyLCB4Mywg
W3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyNF9PRkZTRVQpICJdIiAiXG4i
IC8vIFN0b3JlIHNhdmVkIHIyNCBhbmQgcjI1IChwcmVsb2FkZWQgaW50byB4MiBhbmQgeDMgYWJv
dmUpLgotICAgICJzdHAgICAgICAgeDQsIHg1LCBbc3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQ
Uk9CRV9DUFVfWDI2X09GRlNFVCkgIl0iICJcbiIgLy8gU3RvcmUgc2F2ZWQgcjI2IGFuZCByMjcg
KHByZWxvYWRlZCBpbnRvIHg0IGFuZCB4NSBhYm92ZSkuCisgICAgInN0cCAgICAgICB4MjQsIHgy
NSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyNF9PRkZTRVQpICJdIiAi
XG4iCisgICAgInN0cCAgICAgICB4MiwgeDMsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFBS
T0JFX0NQVV9YMTZfT0ZGU0VUKSAiXSIgIlxuIiAvLyBTdG9yZSBzYXZlZCB4MTYgYW5kIHgxNyAo
cHJlbG9hZGVkIGludG8geDIgYW5kIHgzIGFib3ZlKS4KKyAgICAic3RwICAgICAgIHg0LCB4NSwg
W3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoUFJPQkVfQ1BVX1gyNl9PRkZTRVQpICJdIiAiXG4i
IC8vIFN0b3JlIHNhdmVkIHgyNiBhbmQgeDI3IChwcmVsb2FkZWQgaW50byB4NCBhbmQgeDUgYWJv
dmUpLgogICAgICJzdHAgICAgICAgeDYsIHgyOSwgW3NwLCAjIiBTVFJJTkdJWkVfVkFMVUVfT0Yo
UFJPQkVfQ1BVX1gyOF9PRkZTRVQpICJdIiAiXG4iCi0gICAgInN0cCAgICAgICB4NywgeDI2LCBb
c3AsICMiIFNUUklOR0laRV9WQUxVRV9PRihQUk9CRV9DUFVfTFJfT0ZGU0VUKSAiXSIgIlxuIiAv
LyBTYXZlIHZhbHVlcyBsciBhbmQgc3AgKG9yaWdpbmFsIHNwIHZhbHVlIGNvbXB1dGVkIGludG8g
eDI2IGFib3ZlKS4KKyAgICAic3RwICAgICAgIHg3LCB4MTYsIFtzcCwgIyIgU1RSSU5HSVpFX1ZB
TFVFX09GKFBST0JFX0NQVV9MUl9PRkZTRVQpICJdIiAiXG4iIC8vIFNhdmUgdmFsdWVzIGxyIGFu
ZCBzcCAob3JpZ2luYWwgc3AgdmFsdWUgY29tcHV0ZWQgaW50byB4MTYgYWJvdmUpLgogCiAgICAg
InN0ciAgICAgICB4MzAsIFtzcCwgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1BST0JFX1JF
VFVSTl9QQ19PRkZTRVQpICJdIiAiXG4iIC8vIFNhdmUgYSBkdXBsaWNhdGUgY29weSBvZiByZXR1
cm4gcGMgKGluIGxyKS4KIApAQCAtNTM4LDE3ICs1NDIsMjIgQEAgdm9pZCBNYWNyb0Fzc2VtYmxl
cjo6cHJvYmUoUHJvYmU6OkZ1bmN0aQogewogICAgIHN1YjY0KFRydXN0ZWRJbW0zMihzaXplb2Yo
SW5jb21pbmdQcm9iZVJlY29yZCkpLCBzcCk7CiAKLSAgICBzdG9yZVBhaXI2NCh4MjQsIHgyNSwg
c3AsIFRydXN0ZWRJbW0zMihvZmZzZXRvZihJbmNvbWluZ1Byb2JlUmVjb3JkLCB4MjQpKSk7Cisg
ICAgc3RvcmVQYWlyNjQoeDE2LCB4MTcsIHNwLCBUcnVzdGVkSW1tMzIob2Zmc2V0b2YoSW5jb21p
bmdQcm9iZVJlY29yZCwgeDE2KSkpOwogICAgIHN0b3JlUGFpcjY0KHgyNiwgeDI3LCBzcCwgVHJ1
c3RlZEltbTMyKG9mZnNldG9mKEluY29taW5nUHJvYmVSZWNvcmQsIHgyNikpKTsKICAgICBzdG9y
ZVBhaXI2NCh4MjgsIHgzMCwgc3AsIFRydXN0ZWRJbW0zMihvZmZzZXRvZihJbmNvbWluZ1Byb2Jl
UmVjb3JkLCB4MjgpKSk7IC8vIE5vdGU6IHgzMCBpcyBsci4KLSAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIodGFnQ0Z1bmN0aW9uPEpJVFByb2JlVHJhbXBvbGluZVB0clRhZz4oY3RpTWFzbVByb2JlVHJh
bXBvbGluZSkpLCB4MjYpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248SklU
UHJvYmVFeGVjdXRvclB0clRhZz4oUHJvYmU6OmV4ZWN1dGVQcm9iZSkpLCB4MjgpOworICAgIG1v
dmUoVHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248SklUUHJvYmVUcmFtcG9saW5lUHRyVGFnPihj
dGlNYXNtUHJvYmVUcmFtcG9saW5lKSksIHgyNik7CisKICNpZiBDUFUoQVJNNjRFKQogICAgIEFT
U0VSVChpc1RhZ2dlZFdpdGgoZnVuY3Rpb24sIEpJVFByb2JlUHRyVGFnKSk7CiAjZW5kaWYKLSAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwg
eDI0KTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJnKSwgeDI1KTsKLSAgICBjYWxsKHgyNiwg
SklUUHJvYmVUcmFtcG9saW5lUHRyVGFnKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSwgeDI2KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoYXJnKSwgeDI3KTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgY2FsbChUcnVzdGVkSW1t
UHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudGFnQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+
KGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUpKSksIE5vUHRyVGFnKTsKKyNlbHNlCisgICAgY2FsbChU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN0aU1hc21Qcm9iZVRyYW1wb2xp
bmUpKSwgSklUUHJvYmVUcmFtcG9saW5lUHRyVGFnKTsKKyNlbmRpZgogCiAgICAgLy8gY3RpTWFz
bVByb2JlVHJhbXBvbGluZSBzaG91bGQgaGF2ZSByZXN0b3JlZCBldmVyeSByZWdpc3RlciBleGNl
cHQgZm9yIGxyIGFuZCB0aGUgc3AuCiAgICAgbG9hZDY0KEFkZHJlc3Moc3AsIG9mZnNldG9mKExS
UmVzdG9yYXRpb25SZWNvcmQsIGxyKSksIGxyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAy
Njc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTAgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHR5cGVkZWYgQXNzZW1ibGVyOjpMaW5rUmVjb3JkIExpbmtSZWNvcmQ7CisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorICAgIHR5cGVkZWYgQXNzZW1ibGVyOjpBbGlnbm1lbnRQb2ludCBBbGln
bm1lbnRQb2ludDsKKyAgICB0eXBlZGVmIEFzc2VtYmxlcjo6QWxpZ25tZW50UG9pbnQ6OkFsaWdu
bWVudE9mZnNldCBBbGlnbm1lbnRPZmZzZXQ7CisjZW5kaWYKICAgICB0eXBlZGVmIEFzc2VtYmxl
cjo6SnVtcFR5cGUgSnVtcFR5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJsZXI6Okp1bXBMaW5rVHlw
ZSBKdW1wTGlua1R5cGU7CiAgICAgdHlwZWRlZiBBc3NlbWJsZXI6OkNvbmRpdGlvbiBDb25kaXRp
b247CkBAIC04MiwxMCArODYsMTcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgQXNz
ZW1ibGVyOjpKdW1wVHlwZSBEZWZhdWx0SnVtcCA9IEFzc2VtYmxlcjo6SnVtcE5vQ29uZGl0aW9u
Rml4ZWRTaXplOwogCiAgICAgVmVjdG9yPExpbmtSZWNvcmQsIDAsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiYganVtcHNUb0xpbmsoKSB7IHJldHVybiBtX2Fzc2VtYmxlci5qdW1wc1RvTGluaygpOyB9
CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIFZlY3RvcjxBbGlnbm1lbnRQb2ludCwgMCwgVW5z
YWZlVmVjdG9yT3ZlcmZsb3c+JiBhbGlnbm1lbnRQb2ludHMoKSB7IHJldHVybiBtX2Fzc2VtYmxl
ci5hbGlnbm1lbnRQb2ludHMoKTsgfQorI2VuZGlmCiAgICAgc3RhdGljIGJvb2wgY2FuQ29tcGFj
dChKdW1wVHlwZSBqdW1wVHlwZSkgeyByZXR1cm4gQXNzZW1ibGVyOjpjYW5Db21wYWN0KGp1bXBU
eXBlKTsgfQogICAgIHN0YXRpYyBKdW1wTGlua1R5cGUgY29tcHV0ZUp1bXBUeXBlKEp1bXBUeXBl
IGp1bXBUeXBlLCBjb25zdCB1aW50OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiB0bykgeyByZXR1
cm4gQXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUoanVtcFR5cGUsIGZyb20sIHRvKTsgfQogICAg
IHN0YXRpYyBKdW1wTGlua1R5cGUgY29tcHV0ZUp1bXBUeXBlKExpbmtSZWNvcmQmIHJlY29yZCwg
Y29uc3QgdWludDhfdCogZnJvbSwgY29uc3QgdWludDhfdCogdG8pIHsgcmV0dXJuIEFzc2VtYmxl
cjo6Y29tcHV0ZUp1bXBUeXBlKHJlY29yZCwgZnJvbSwgdG8pOyB9CiAgICAgc3RhdGljIGludCBq
dW1wU2l6ZURlbHRhKEp1bXBUeXBlIGp1bXBUeXBlLCBKdW1wTGlua1R5cGUganVtcExpbmtUeXBl
KSB7IHJldHVybiBBc3NlbWJsZXI6Omp1bXBTaXplRGVsdGEoanVtcFR5cGUsIGp1bXBMaW5rVHlw
ZSk7IH0KKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgc3RhdGljIGludCBsYXlvdXRKdW1wKExp
bmtSZWNvcmQmIHJlY29yZCwgdWludDMyX3QqIGJhc2UsIGNvbnN0IHVpbnQ4X3QqIGZyb20sIGNv
bnN0IHVpbnQ4X3QqIHRvKSB7IHJldHVybiBBc3NlbWJsZXI6OmxheW91dEp1bXAocmVjb3JkLCBi
YXNlLCBmcm9tLCB0byk7IH0KKyAgICBzdGF0aWMgYm9vbCByZXZlcnRlZEp1bXBUb0ZpeGVkU2l6
ZShMaW5rUmVjb3JkJiByZWNvcmQsIHVpbnQ4X3QqIGZyb20sIHVpbnQ4X3QqIHRvKSB7IHJldHVy
biBBc3NlbWJsZXI6OnJldmVydGVkSnVtcFRvRml4ZWRTaXplKHJlY29yZCwgZnJvbSwgdG8pOyB9
CisjZW5kaWYKIAogICAgIHRlbXBsYXRlIDxBc3NlbWJsZXI6OkNvcHlGdW5jdGlvbiBjb3B5Pgog
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgbGluayhMaW5rUmVjb3JkJiByZWNvcmQsIHVp
bnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIGZyb21JbnN0cnVjdGlvbiwgdWludDhfdCogdG8p
IHsgcmV0dXJuIEFzc2VtYmxlcjo6bGluazxjb3B5PihyZWNvcmQsIGZyb20sIGZyb21JbnN0cnVj
dGlvbiwgdG8pOyB9CkBAIC0zMzksNiArMzUwLDExIEBAIHB1YmxpYzoKICAgICAgICAgYWRkNjQo
aW1tLCBzcmNEZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZFB0clNoaWZ0ZWRSZWcoUmVnaXN0
ZXJJRCBzcmMsIHVuc2lnbmVkIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hZGQ8NjQ+KGRlc3QsIGRlc3QsIHNyYywgQXNzZW1ibGVyOjpM
U0wsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKICAgICB2b2lkIGFkZDY0KEFkZHJlc3Mgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkNjQoc3JjLCBnZXRDYWNoZWREYXRh
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwpAQCAtMzMzMSw2ICszMzQ3LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CiAgICAgfQogCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGNhZ2VUb0pJVFJlZ2lvbihSZWdpc3RlcklEIHRhcmdldCkK
KyAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpbnZhbGlkYXRlQWxsVGVtcFJl
Z2lzdGVycygpOworICAgICAgICBtX2Fzc2VtYmxlci5sYWJlbCgpOworCisgICAgICAgIFJlZ2lz
dGVySUQgdGVtcCA9IHRhcmdldCA9PSBkYXRhVGVtcFJlZ2lzdGVyID8gbWVtb3J5VGVtcFJlZ2lz
dGVyIDogZGF0YVRlbXBSZWdpc3RlcjsKKyAgICAgICAgbV9hc3NlbWJsZXIuY2FnZVRvSklUUmVn
aW9uKHRhcmdldCwgdGVtcCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsK
KyNlbmRpZgorICAgIH0KIAogICAgIC8vIEp1bXBzLCBjYWxscywgcmV0dXJucwogCkBAIC0zMzU5
LDEwICszMzg3LDI1IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdp
c3RlcklEIHRhcmdldCwgUHRyVGFnKQogICAgIHsKICAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBS
ZWdpc3RlcnMoKTsKKyAgICAgICAgY2FnZVRvSklUUmVnaW9uKHRhcmdldCk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmJscih0YXJnZXQpOwogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5s
YWJlbCgpLCBDYWxsOjpOb25lKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2Fs
bChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnIHRhZykKKyAgICB7CisgICAgICAgIGlmICh0
YWcgPT0gTm9QdHJUYWcpIHsKKyAgICAgICAgICAgIGludmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJz
KCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sYWJlbCgpOworCisgICAgICAgICAgICBtb3Zl
V2l0aEZpeGVkV2lkdGgodGFyZ2V0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyKGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9u
ZSk7CisgICAgICAgIH0KKyAgICAgICAgbW92ZSh0YXJnZXQsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVn
aXN0ZXIsIHRhZyk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoQWRkcmVz
cyBhZGRyZXNzLCBQdHJUYWcgdGFnKQogICAgIHsKICAgICAgICAgbG9hZFB0cihhZGRyZXNzLCBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwpAQCAtMzM3NSwzOSAr
MzQxOCw0OSBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbE9wZXJhdGlv
bihjb25zdCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG9wZXJhdGlvbikKICAgICB7Ci0g
ICAgICAgIGF1dG8gdG1wID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIob3BlcmF0aW9uLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpLCB0bXApOwotICAgICAgICBjYWxsKHRtcCwgT3BlcmF0aW9uUHRyVGFnKTsKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgICAgIGNhbGwoVHJ1c3RlZEltbVB0cihvcGVyYXRpb24udGVt
cGxhdGUgcmV0YWdnZWRFeGVjdXRhYmxlQWRkcmVzczxOb1B0clRhZz4oKSksIE5vUHRyVGFnKTsK
KyNlbHNlCisgICAgICAgIGNhbGwoVHJ1c3RlZEltbVB0cihvcGVyYXRpb24uZXhlY3V0YWJsZUFk
ZHJlc3MoKSksIE9wZXJhdGlvblB0clRhZyk7CisjZW5kaWYKICAgICB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIEp1bXAganVtcCgpCiAgICAgewotICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCA9
IG1fYXNzZW1ibGVyLmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsID0gbV9h
c3NlbWJsZXIubGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCk7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmIoKTsKICAgICAgICAgcmV0dXJuIEp1bXAobGFiZWwsIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBB
c3NlbWJsZXI6Okp1bXBOb0NvbmRpdGlvbkZpeGVkU2l6ZSA6IEFzc2VtYmxlcjo6SnVtcE5vQ29u
ZGl0aW9uKTsKICAgICB9CiAKICAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFB0
clRhZykKICAgICB7CisgICAgICAgIGNhZ2VUb0pJVFJlZ2lvbih0YXJnZXQpOwogICAgICAgICBt
X2Fzc2VtYmxlci5icih0YXJnZXQpOwogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBZGRyZXNz
IGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgZ2V0Q2Fj
aGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgY2FnZVRvSklU
UmVnaW9uKGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBtX2Fzc2VtYmxlci5icihkYXRhVGVt
cFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRy
ZXNzLCBQdHJUYWcpCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIGNhZ2VUb0pJVFJlZ2lv
bihkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYnIoZGF0YVRlbXBSZWdp
c3Rlcik7CiAgICAgfQogCiAgICAgdm9pZCBmYXJKdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNz
LCBQdHJUYWcpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkQWxpZ25tZW50UG9pbnQoKTsKKworICAgICAgICBtb3ZlV2l0aEZpeGVkV2lkdGgoVHJ1
c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyNlbHNlCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKKyNlbmRpZgogICAgICAgICBtX2Fzc2VtYmxlci5icihkYXRhVGVtcFJlZ2lzdGVyKTsKICAg
ICB9CiAKQEAgLTM0MTgsOSArMzQ3MSwxMiBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5F
IENhbGwgbmVhckNhbGwoKQogICAgIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIG1f
YXNzZW1ibGVyLmFkZEFsaWdubWVudFBvaW50KEFsaWdubWVudE9mZnNldDo6QWxpZ24wQyk7Cisj
ZW5kaWYKICAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKICAgICAgICAgbV9h
c3NlbWJsZXIuYmwoKTsKLSAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwg
Q2FsbDo6TGlua2FibGVOZWFyKTsKKyAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFi
ZWxJZ25vcmluZ1dhdGNocG9pbnRzKCksIENhbGw6OkxpbmthYmxlTmVhcik7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSBDYWxsIG5lYXJUYWlsQ2FsbCgpCkBAIC0zNDMyLDEzICszNDg4LDE3
IEBAIHB1YmxpYzoKIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCB0aHJlYWRTYWZlUGF0Y2hhYmxl
TmVhckNhbGwoKQogICAgIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIG1fYXNzZW1i
bGVyLmFkZEFsaWdubWVudFBvaW50KEFsaWdubWVudE9mZnNldDo6QWxpZ24wQyk7CisjZW5kaWYK
ICAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuYmwoKTsKLSAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6
TGlua2FibGVOZWFyKTsKKyAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWxJZ25v
cmluZ1dhdGNocG9pbnRzKCksIENhbGw6OkxpbmthYmxlTmVhcik7CiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHJldCgpCiAgICAgeworICAgICAgICBjYWdlVG9KSVRSZWdpb24oQVJN
NjRSZWdpc3RlcnM6OmxyKTsKICAgICAgICAgbV9hc3NlbWJsZXIucmV0KCk7CiAgICAgfQogCkBA
IC00MTI3LDIxICs0MTg3LDMyIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxQdHJUYWcgY2FsbFRh
ZywgUHRyVGFnIGRlc3RUYWc+CiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0
aW9uQ2FsbDxjYWxsVGFnPiBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbDxkZXN0VGFnPiBkZXN0aW5h
dGlvbikKICAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBBc3NlbWJsZXI6OnJl
cGF0Y2hQb2ludGVyKGNhbGwuZGF0YUxhYmVsUHRyQXRPZmZzZXQoUkVQQVRDSF9PRkZTRVRfQ0FM
TF9UT19QT0lOVEVSKS5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24udW50YWdnZWRFeGVjdXRh
YmxlQWRkcmVzcygpKTsKKyNlbHNlCiAgICAgICAgIEFzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIo
Y2FsbC5kYXRhTGFiZWxQdHJBdE9mZnNldChSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIp
LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIHRlbXBsYXRlPFB0clRhZyBjYWxsVGFnLCBQdHJUYWcgZGVzdFRhZz4K
ICAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPGNhbGxUYWc+IGNh
bGwsIEZ1bmN0aW9uUHRyPGRlc3RUYWc+IGRlc3RpbmF0aW9uKQogICAgIHsKKyNpZiBFTkFCTEUo
SklUX0NBR0UpCisgICAgICAgIEFzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIoY2FsbC5kYXRhTGFi
ZWxQdHJBdE9mZnNldChSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpLmRhdGFMb2NhdGlv
bigpLCBkZXN0aW5hdGlvbi50ZW1wbGF0ZSByZXRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPE5vUHRy
VGFnPigpKTsKKyNlbHNlCiAgICAgICAgIEFzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIoY2FsbC5k
YXRhTGFiZWxQdHJBdE9mZnNldChSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpLmRhdGFM
b2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgogICAg
IH0KIAogcHJvdGVjdGVkOgogICAgIEFMV0FZU19JTkxJTkUgSnVtcCBtYWtlQnJhbmNoKEFzc2Vt
Ymxlcjo6Q29uZGl0aW9uIGNvbmQpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5iX2NvbmQo
Y29uZCk7Ci0gICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwo
KTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisjaWYgRU5BQkxF
KEpJVF9DQUdFKQorICAgICAgICBtX2Fzc2VtYmxlci5hZGRVbmxpbmtlZEp1bXAobGFiZWwsIG1f
bWFrZUp1bXBQYXRjaGFibGUgPyBBc3NlbWJsZXI6Okp1bXBDb25kaXRpb25GaXhlZFNpemUgOiBB
c3NlbWJsZXI6Okp1bXBDb25kaXRpb24sIGNvbmQpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBK
dW1wKGxhYmVsLCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQXNzZW1ibGVyOjpKdW1wQ29uZGl0aW9u
Rml4ZWRTaXplIDogQXNzZW1ibGVyOjpKdW1wQ29uZGl0aW9uLCBjb25kKTsKICAgICB9CiAgICAg
QUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFuY2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKSB7
IHJldHVybiBtYWtlQnJhbmNoKEFSTTY0Q29uZGl0aW9uKGNvbmQpKTsgfQpAQCAtNDE1NSw4ICs0
MjI2LDExIEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNiejxkYXRhU2l6
ZT4ocmVnKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuY2JuejxkYXRh
U2l6ZT4ocmVnKTsKLSAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwgPSBtX2Fzc2VtYmxlci5s
YWJlbCgpOworICAgICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVs
SWdub3JpbmdXYXRjaHBvaW50cygpOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgICAgIG1fYXNzZW1ibGVyLmFkZFVubGlua2VkSnVtcChsYWJl
bCwgbV9tYWtlSnVtcFBhdGNoYWJsZSA/IEFzc2VtYmxlcjo6SnVtcENvbXBhcmVBbmRCcmFuY2hG
aXhlZFNpemUgOiBBc3NlbWJsZXI6Okp1bXBDb21wYXJlQW5kQnJhbmNoLCBzdGF0aWNfY2FzdDxB
c3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCksIGRhdGFTaXplID09IDY0LCByZWcpOworI2VuZGlm
CiAgICAgICAgIHJldHVybiBKdW1wKGxhYmVsLCBtX21ha2VKdW1wUGF0Y2hhYmxlID8gQXNzZW1i
bGVyOjpKdW1wQ29tcGFyZUFuZEJyYW5jaEZpeGVkU2l6ZSA6IEFzc2VtYmxlcjo6SnVtcENvbXBh
cmVBbmRCcmFuY2gsIHN0YXRpY19jYXN0PEFzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKSwgZGF0
YVNpemUgPT0gNjQsIHJlZyk7CiAgICAgfQogCkBAIC00MTY4LDggKzQyNDIsMTEgQEAgcHJvdGVj
dGVkOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIudGJ6KHJlZywgYml0KTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIudGJueihyZWcsIGJpdCk7Ci0gICAgICAgIEFzc2Vt
YmxlckxhYmVsIGxhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVy
TGFiZWwgbGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBt
X2Fzc2VtYmxlci5hZGRVbmxpbmtlZEp1bXAobGFiZWwsIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBB
c3NlbWJsZXI6Okp1bXBUZXN0Qml0Rml4ZWRTaXplIDogQXNzZW1ibGVyOjpKdW1wVGVzdEJpdCwg
c3RhdGljX2Nhc3Q8QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpLCBiaXQsIHJlZyk7CisjZW5k
aWYKICAgICAgICAgcmV0dXJuIEp1bXAobGFiZWwsIG1fbWFrZUp1bXBQYXRjaGFibGUgPyBBc3Nl
bWJsZXI6Okp1bXBUZXN0Qml0Rml4ZWRTaXplIDogQXNzZW1ibGVyOjpKdW1wVGVzdEJpdCwgc3Rh
dGljX2Nhc3Q8QXNzZW1ibGVyOjpDb25kaXRpb24+KGNvbmQpLCBiaXQsIHJlZyk7CiAgICAgfQog
CkBAIC00NzYwLDkgKzQ4MzcsMTMgQEAgcHJvdGVjdGVkOgogICAgIHRlbXBsYXRlPFB0clRhZyB0
YWc+CiAgICAgc3RhdGljIHZvaWQgbGlua0NhbGwodm9pZCogY29kZSwgQ2FsbCBjYWxsLCBGdW5j
dGlvblB0cjx0YWc+IGZ1bmN0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKCFjYWxsLmlzRmxhZ1Nl
dChDYWxsOjpOZWFyKSkKKyAgICAgICAgaWYgKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFyKSkg
eworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEFzc2VtYmxlcjo6bGlua1BvaW50
ZXIoY29kZSwgY2FsbC5tX2xhYmVsLmxhYmVsQXRPZmZzZXQoUkVQQVRDSF9PRkZTRVRfQ0FMTF9U
T19QT0lOVEVSKSwgZnVuY3Rpb24udGVtcGxhdGUgcmV0YWdnZWRFeGVjdXRhYmxlQWRkcmVzczxO
b1B0clRhZz4oKSk7CisjZWxzZQogICAgICAgICAgICAgQXNzZW1ibGVyOjpsaW5rUG9pbnRlcihj
b2RlLCBjYWxsLm1fbGFiZWwubGFiZWxBdE9mZnNldChSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BP
SU5URVIpLCBmdW5jdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICAgICAgZWxzZSBpZiAo
Y2FsbC5pc0ZsYWdTZXQoQ2FsbDo6VGFpbCkpCisjZW5kaWYKKyAgICAgICAgfSBlbHNlIGlmIChj
YWxsLmlzRmxhZ1NldChDYWxsOjpUYWlsKSkKICAgICAgICAgICAgIEFzc2VtYmxlcjo6bGlua0p1
bXAoY29kZSwgY2FsbC5tX2xhYmVsLCBmdW5jdGlvbi50ZW1wbGF0ZSByZXRhZ2dlZEV4ZWN1dGFi
bGVBZGRyZXNzPE5vUHRyVGFnPigpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgQXNzZW1i
bGVyOjpsaW5rQ2FsbChjb2RlLCBjYWxsLm1fbGFiZWwsIGZ1bmN0aW9uLnRlbXBsYXRlIHJldGFn
Z2VkRXhlY3V0YWJsZUFkZHJlc3M8Tm9QdHJUYWc+KCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAkocmV2
aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0RS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw0NSArNDQsNzMgQEAgcHVibGlj
OgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHRhZ1JldHVybkFkZHJlc3MoKQogICAgIHsKKyNp
ZiAhRU5BQkxFKEpJVF9DQUdFKQogICAgICAgICB0YWdQdHIoQVJNNjRSZWdpc3RlcnM6OnNwLCBB
Uk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHVudGFnUmV0dXJuQWRkcmVzcygpCiAgICAgeworI2lmICFFTkFCTEUoSklUX0NBR0UpCiAg
ICAgICAgIHVudGFnUHRyKEFSTTY0UmVnaXN0ZXJzOjpzcCwgQVJNNjRSZWdpc3RlcnM6OmxyKTsK
KyNlbmRpZgogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB0YWdQdHIoUHRyVGFnIHRh
ZywgUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKHRhZyk7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworI2Vs
c2UKICAgICAgICAgYXV0byB0YWdHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJ
bnZhbGlkYXRlKCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIHRhZ0dQUik7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnBhY2liKHRhcmdldCwgdGFnR1BSKTsKKyNlbmRpZgogICAgIH0K
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB0YWdQdHIoUmVnaXN0ZXJJRCB0YWcsIFJlZ2lzdGVy
SUQgdGFyZ2V0KQogICAgIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIFVOVVNFRF9Q
QVJBTSh0YWcpOworICAgICAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKKyNlbHNlCiAgICAgICAg
IGlmICh0YXJnZXQgPT0gQVJNNjRSZWdpc3RlcnM6OmxyICYmIHRhZyA9PSBBUk02NFJlZ2lzdGVy
czo6c3ApIHsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnBhY2lic3AoKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX2Fzc2VtYmxlci5wYWNpYih0YXJnZXQsIHRh
Zyk7CisjZW5kaWYKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdW50YWdQdHIoUHRy
VGFnIHRhZywgUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgVU5VU0VEX1BBUkFNKHRhZyk7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQp
OworI2Vsc2UKICAgICAgICAgYXV0byB0YWdHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIHRhZ0dQ
Uik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmF1dGliKHRhcmdldCwgdGFnR1BSKTsKKyNlbmRpZgog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1bnRhZ1B0cihSZWdpc3RlcklEIHRhZywg
UmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAg
VU5VU0VEX1BBUkFNKHRhZyk7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXQpOworI2Vsc2UK
ICAgICAgICAgbV9hc3NlbWJsZXIuYXV0aWIodGFyZ2V0LCB0YWcpOworI2VuZGlmCiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlbW92ZVB0clRhZyhSZWdpc3RlcklEIHRhcmdldCkK
ICAgICB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBVTlVTRURfUEFSQU0odGFyZ2V0
KTsKKyNlbHNlCiAgICAgICAgIG1fYXNzZW1ibGVyLnhwYWNpKHRhcmdldCk7CisjZW5kaWYKICAg
ICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdGFnQXJyYXlQdHIoUmVnaXN0ZXJJRCBsZW5n
dGgsIFJlZ2lzdGVySUQgdGFyZ2V0KQpAQCAtMTE3LDYgKzE0NSwxMCBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8Q2FsbFNpZ25hdHVyZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwg
Y2FsbFRydXN0ZWRQdHIoUmVnaXN0ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQogICAgIHsKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIFVOVVNFRF9QQVJBTSh0YWdHUFIpOworICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbChKSVRDYWdlUHRyVGFnKTsKKyNlbHNl
CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIEFz
c2VtYmxlckxhYmVsIHBvaW50ZXJMYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CiAgICAgICAg
IG1vdmVXaXRoRml4ZWRXaWR0aChUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBnZXRDYWNoZWREYXRh
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwpAQCAtMTI4LDE2ICsxNjAsMjIgQEAgcHVi
bGljOgogICAgICAgICBBc3NlbWJsZXJMYWJlbCBjYWxsTGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJl
bCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXJMYWJlbCwgQVJNNjRBc3NlbWJsZXI6
OmdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKGNhbGxMYWJlbCwgcG9pbnRlckxhYmVsKSA9PSBS
RVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpOwogICAgICAgICByZXR1cm4gQ2FsbChjYWxs
TGFiZWwsIENhbGw6OkxpbmthYmxlKTsKKyNlbmRpZgogICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgQ2FsbCBjYWxsKFB0clRhZyB0YWcpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKHRhZyk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFS
TTY0OjpjYWxsKEpJVENhZ2VQdHJUYWcpOworI2Vsc2UKICAgICAgICAgaWYgKHRhZyA9PSBOb1B0
clRhZykKICAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpjYWxsKHRhZyk7
CiAgICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFnKQogICAgICAgICAgICAgcmV0dXJu
IGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpDRnVuY3Rpb25DYWxsPigpOwogICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBBUk02NFJlZ2lzdGVyczo6bHIpOwogICAgICAg
ICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok90aGVyQ2FsbD4oQVJN
NjRSZWdpc3RlcnM6OmxyKTsKKyNlbmRpZgogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bCBjYWxsKFJlZ2lzdGVySUQgdGFnR1BSKQpAQCAtMTQ4LDYgKzE4NiwxMCBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVyZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENh
bGwgY2FsbFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUiA9
IEludmFsaWRHUFIpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgVU5VU0VE
X1BBUkFNKHRhZ0dQUik7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpjYWxs
KHRhcmdldEdQUiwgSklUQ2FnZVB0clRhZyk7CisjZWxzZQogICAgICAgICBBU1NFUlQodGFnR1BS
ICE9IHRhcmdldEdQUik7CiAgICAgICAgIGludmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIGlmICh0eXBlID09IENhbGxTaWduYXR1cmVUeXBlOjpDRnVuY3Rpb25DYWxsKQpAQCAt
MTU1LDE2ICsxOTcsMjIgQEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5ibHJhYih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgICAgIHJldHVybiBDYWxsKG1f
YXNzZW1ibGVyLmxhYmVsKCksIENhbGw6Ok5vbmUpOworI2VuZGlmCiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFB0clRhZyB0YWcpCiAg
ICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgVU5VU0VEX1BBUkFNKHRhZyk7Cisg
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpjYWxsKHRhcmdldEdQUiwgSklUQ2Fn
ZVB0clRhZyk7CisjZWxzZQogICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQogICAgICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFyZ2V0R1BSLCB0YWcpOwogICAg
ICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKICAgICAgICAgICAgIHJldHVybiBjYWxs
UmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGw+KHRhcmdldEdQUik7CiAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIEFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAg
ICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok90aGVyQ2FsbD4odGFy
Z2V0R1BSLCBBUk02NFJlZ2lzdGVyczo6bHIpOworI2VuZGlmCiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BS
KQpAQCAtMTcyLDYgKzIyMCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjYWxsUmVnaXN0
ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok90aGVyQ2FsbD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAg
IH0KIAorICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQ
dHJUYWcgdGFnKQorICAgIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmICh0YWcg
PT0gTm9QdHJUYWcgfHwgdGFnID09IEpJVENhZ2VQdHJUYWcpCisgICAgICAgICAgICByZXR1cm4g
TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCh0YXJnZXQsIE5vUHRyVGFnKTsKKyNlbmRpZgorICAg
ICAgICBtb3ZlKHRhcmdldCwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpKTsKKyAgICAgICAgcmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKKyAgICB9
CisKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0
YWcpCiAgICAgewogICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQpAQCAtMTkwLDkgKzI0OCwx
MyBAQCBwdWJsaWM6CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2FsbE9wZXJhdGlvbihjb25z
dCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+IG9wZXJhdGlvbikKICAgICB7CisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorICAgICAgICBNYWNyb0Fzc2VtYmxlckFSTTY0OjpjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbik7CisjZWxzZQogICAgICAgICBhdXRvIHRtcCA9IGdldENhY2hlZERhdGFUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9w
ZXJhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKSwgdG1wKTsKLSAgICAgICAgY2FsbCh0bXAsIE9w
ZXJhdGlvblB0clRhZyk7CisgICAgICAgIGNhbGwoVHJ1c3RlZEltbVB0cihvcGVyYXRpb24uZXhl
Y3V0YWJsZUFkZHJlc3MoKSksIE9wZXJhdGlvblB0clRhZyk7CisjZW5kaWYKICAgICB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIEp1bXAganVtcCgpIHsgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6
Omp1bXAoKTsgfQpAQCAtMjAxLDIxICsyNjMsMzEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
aWYgKHRhZyA9PSBOb1B0clRhZykKICAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFS
TTY0OjpmYXJKdW1wKHRhcmdldCwgdGFnKTsKLQorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAodGFyZ2V0LCB0YWcpOworI2Vs
c2UKICAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAgICBSZWdp
c3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsK
ICAgICAgICAgZmFySnVtcCh0YXJnZXQsIGRpdmVyc2l0eUdQUik7CisjZW5kaWYKICAgICB9CiAK
ICAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVySUQgdGFnKQogICAg
IHsKICAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJnZXQpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcCh0YXJnZXQsIHRhZyk7CisjZWxz
ZQogICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldCwgdGFnKTsKKyNlbmRpZgogICAgIH0K
IAogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgewor
I2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyNlbHNlCiAgICAgICAgIGlmICh0YWcgPT0gTm9QdHJU
YWcpCiAgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRy
ZXNzLCB0YWcpOwogCkBAIC0yMjUsMTggKzI5NywyNiBAQCBwdWJsaWM6CiAgICAgICAgIGxvYWQ2
NChhZGRyZXNzLCB0YXJnZXRHUFIpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBk
aXZlcnNpdHlHUFIpOwogICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgZGl2ZXJz
aXR5R1BSKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJl
c3MsIFJlZ2lzdGVySUQgdGFnKQogICAgIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7CisjZWxz
ZQogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOwog
ICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
YnJhYih0YXJnZXRHUFIsIHRhZyk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGZhckp1bXAo
QmFzZUluZGV4IGFkZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywg
dGFnKTsKKyNlbHNlCiAgICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCiAgICAgICAgICAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNzLCB0YWcpOwogCkBAIC0y
NDYsNDEgKzMyNiw0NiBAQCBwdWJsaWM6CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJnZXRH
UFIpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKKyNlbmRpZgog
ICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCB0
YWcpCiAgICAgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyNlbHNlCiAgICAgICAgIFJlZ2lz
dGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpOwogICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChh
ZGRyZXNzLCB0YXJnZXRHUFIpOwogICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwg
dGFnKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7CiAgICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcp
CiAgICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNz
LCB0YWcpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKHRhZyA9PSBKSVRDYWdl
UHRyVGFnKQorICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAo
QWJzb2x1dGVBZGRyZXNzKHVudGFnQ29kZVB0cjxKSVRDYWdlUHRyVGFnPihhZGRyZXNzLm1fcHRy
KSksIE5vUHRyVGFnKTsKIAorICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFy
SnVtcChBYnNvbHV0ZUFkZHJlc3ModW50YWdDb2RlUHRyKGFkZHJlc3MubV9wdHIsIHRhZykpLCBO
b1B0clRhZyk7CisjZWxzZQogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgUmVnaXN0ZXJJRCBk
aXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0YXJnZXRHUFIp
OwotICAgICAgICBsb2FkNjQoQWRkcmVzcyh0YXJnZXRHUFIpLCB0YXJnZXRHUFIpOwogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5icmFiKHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKLSAgICB9Ci0KLSAgICB2b2lkIGZh
ckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQotICAgIHsKLSAg
ICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BSKTsKLSAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0YXJnZXRHUFIpOwotICAgICAg
ICBsb2FkNjQoQWRkcmVzcyh0YXJnZXRHUFIpLCB0YXJnZXRHUFIpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5icmFiKHRhcmdldEdQUiwgdGFnKTsKKyNlbmRpZgogICAgIH0KIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCByZXQoKQogICAgIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OnJldCgpOworI2Vsc2UKICAgICAgICAgbV9hc3NlbWJsZXIucmV0
YWIoKTsKKyNlbmRpZgogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNpb24g
MjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDYgKzM1MywxMiBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhKCEqdGhp
cyk7IH0KICAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIG9wZXJhdG9yPShjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHImIG90aGVyKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IG90
aGVyLm1fdmFsdWU7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBvdGhlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBmYXJKdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBQdHJU
YWcgdGFnKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIp
LCBzY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgIGZhckp1bXAoQWRkcmVzcyhzY3JhdGNoUmVn
aXN0ZXIoKSksIHRhZyk7CisgICAgICAgIGZhckp1bXAoc2NyYXRjaFJlZ2lzdGVyKCksIHRhZyk7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQganVtcFRhZykgeyBVTlVTRURfUEFSQU0oanVtcFRhZyksIGZh
ckp1bXAoYWRkcmVzcywgTm9QdHJUYWcpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5NTMsNyArMzk1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGIubV9vZmZzZXQg
LSBhLm1fb2Zmc2V0OwogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsg
cmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0KCk7IH0KKyAgICB1bnNpZ25lZCBjdXJyZW50
T2Zmc2V0KCkgeyByZXR1cm4gbV9mb3JtYXR0ZXIuY3VycmVudE9mZnNldCgpOyB9CiAKICAgICB2
b2lkIG5vcCgpCiAgICAgewpAQCAtNDc0MCw5ICs0NzQwLDEwIEBAIHByaXZhdGU6CiAgICAgICAg
IHNpemVfdCBjb2RlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvZGVTaXplKCk7IH0K
ICAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5s
YWJlbCgpOyB9CiAgICAgICAgIGJvb2wgaXNBbGlnbmVkKGludCBhbGlnbm1lbnQpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQpOyB9CisgICAgICAgIGJvb2wgaXNB
bGlnbmVkVG9PZmZzZXQodW5zaWduZWQgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5p
c0FsaWduZWRUb09mZnNldChvZmZzZXQpOyB9CiAgICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KIAotICAgICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNl
dCgpIHsgcmV0dXJuIG1fYnVmZmVyLmRlYnVnT2Zmc2V0KCk7IH0KKyAgICAgICAgdW5zaWduZWQg
Y3VycmVudE9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLmN1cnJlbnRPZmZzZXQoKTsgfQogCiAg
ICAgcHVibGljOgogICAgICAgICBBc3NlbWJsZXJCdWZmZXIgbV9idWZmZXI7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYWdlZENDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ2FnZWRDQ2FsbC5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NhZ2VkQ0NhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKworI2luY2x1ZGUgIkFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgorI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJCM0NvbnN0cmFpbmVkVmFsdWUuaCIKKyNpbmNsdWRlICJCM1BhdGNo
cG9pbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCisj
aW5jbHVkZSAiQjNWYWx1ZVJlcC5oIgorI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1
ZGUgIkpTQ1B0clRhZy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1lLi4uIEFyZ3M+CitWYWx1ZSogY2FnZWRD
Q2FsbChQcm9jZWR1cmUmIHByb2NlZHVyZSwgQmFzaWNCbG9jayogYmxvY2ssIE9yaWdpbiBvcmln
aW4sIFR5cGUgdHlwZSwgRnVuY3Rpb24gZnVuY3Rpb24sIEFyZ3MuLi4gYXJncykKK3sKKyAgICBz
dGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3NhbWU8RnVuY3Rpb24sIFZhbHVlKj46OnZhbHVlKTsKKyAg
ICBQYXRjaHBvaW50VmFsdWUqIHJlc3VsdCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZh
bHVlPihwcm9jZWR1cmUsIHR5cGUsIG9yaWdpbik7CisgICAgdW5zaWduZWQgZ3ByQXJnSW5kZXgg
PSAwOworICAgIHVuc2lnbmVkIGZwckFyZ0luZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBzdGFja09m
ZnNldCA9IDA7CisKKyAgICBhdXRvIG1hcnNoYWxTdGFja0FyZyA9IFsmXSAoVmFsdWUqIGFyZykg
eworICAgICAgICB1bnNpZ25lZCBzbG90U2l6ZTsKKworICAgICAgICBpZiAoaXNBUk02NCgpICYm
IGlzSU9TKCkpCisgICAgICAgICAgICBzbG90U2l6ZSA9IHNpemVvZlR5cGUoYXJnLT50eXBlKCkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBzbG90U2l6ZSA9IDg7CisKKyAgICAgICAgc3Rh
Y2tPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc2xvdFNpemUsIHN0YWNrT2Zmc2V0
KTsKKyAgICAgICAgcmVzdWx0LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcsIFZhbHVlUmVw
OjpzdGFja0FyZ3VtZW50KHN0YWNrT2Zmc2V0KSkpOworICAgICAgICBzdGFja09mZnNldCArPSBz
bG90U2l6ZTsKKyAgICB9OworCisgICAgYXV0byBtYXJzaGFsbEdQQXJnID0gWyZdIChWYWx1ZSog
YXJnKSB7CisgICAgICAgIGlmIChncHJBcmdJbmRleCA8IEdQUkluZm86Om51bWJlck9mQXJndW1l
bnRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKENvbnN0cmFpbmVkVmFs
dWUoYXJnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihncHJBcmdJ
bmRleCsrKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1h
cnNoYWxTdGFja0FyZyhhcmcpOworICAgIH07CisKKyAgICBhdXRvIG1hcnNoYWxsRlBBcmcgPSBb
Jl0gKFZhbHVlKiBhcmcpIHsKKyAgICAgICAgaWYgKGZwckFyZ0luZGV4IDwgRlBSSW5mbzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVycykgeworICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoQ29u
c3RyYWluZWRWYWx1ZShhcmcsIFZhbHVlUmVwOjpyZWcoRlBSSW5mbzo6dG9Bcmd1bWVudFJlZ2lz
dGVyKGZwckFyZ0luZGV4KyspKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgbWFyc2hhbFN0YWNrQXJnKGFyZyk7CisgICAgfTsKKworICAgIGlmICh0eXBlLmlz
SW50KCkpCisgICAgICAgIHJlc3VsdC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpy
ZWcoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpIH07CisgICAgZWxzZSBpZiAodHlwZS5pc0Zsb2F0
KCkpCisgICAgICAgIHJlc3VsdC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpyZWco
RlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIpIH07CisKKyAgICByZXN1bHQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICByZXN1bHQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOworCisgICAgZm9yIChWYWx1
ZSogYXJnIDogc3RkOjphcnJheTxWYWx1ZSosIHNpemVvZi4uLihBcmdzKT57YXJncy4uLn0pIHsK
KyAgICAgICAgQVNTRVJUKGFyZy0+dHlwZSgpLmlzSW50KCkgfHwgYXJnLT50eXBlKCkuaXNGbG9h
dCgpKTsKKworICAgICAgICBpZiAoYXJnLT50eXBlKCkuaXNJbnQoKSkKKyAgICAgICAgICAgIG1h
cnNoYWxsR1BBcmcoYXJnKTsKKyAgICAgICAgaWYgKGFyZy0+dHlwZSgpLmlzRmxvYXQoKSkKKyAg
ICAgICAgICAgIG1hcnNoYWxsRlBBcmcoYXJnKTsKKyAgICB9CisKKyAgICByZXN1bHQtPnNldEdl
bmVyYXRvcigKKyAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgaml0LmNhbGwoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihmdW5jdGlvbiwgTm9Q
dHJUYWcpKSwgTm9QdHJUYWcpOworICAgICAgICB9KTsKKyAgICByZXN1bHQtPmVmZmVjdHMgPSBF
ZmZlY3RzOjpmb3JDYWxsKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyAhRU5BQkxFKEpJVF9DQUdFKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjY3NDU0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUu
aCIKKyNpbmNsdWRlICJCM0NhZ2VkQ0NhbGwuaCIKICNpbmNsdWRlICJCM0Nhc2VDb2xsZWN0aW9u
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgogI2luY2x1ZGUgIkIzRmVu
Y2VWYWx1ZS5oIgpAQCAtMTI5LDI0ICsxMzAsNTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBkb3VibGUoKmZtb2REb3VibGUpKGRvdWJsZSwgZG91YmxlKSA9
IGZtb2Q7CiAgICAgICAgICAgICAgICAgZm1vZERvdWJsZSA9IHRhZ0NGdW5jdGlvbjxCM0NDYWxs
UHRyVGFnPihmbW9kRG91YmxlKTsKKwogICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT50eXBl
KCkgPT0gRG91YmxlKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxQYXRjaHBv
aW50VmFsdWU+KG1faW5kZXgsIERvdWJsZSwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6cmVnKEZQUkluZm86OnJl
dHVyblZhbHVlRlBSKSB9OworICAgICAgICAgICAgICAgICAgICByZXN1bHQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZSht
X3ZhbHVlLT5jaGlsZCgwKSwgVmFsdWVSZXA6OnJlZyhGUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0
ZXIoMCkpKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKENvbnN0cmFpbmVk
VmFsdWUobV92YWx1ZS0+Y2hpbGQoMSksIFZhbHVlUmVwOjpyZWcoRlBSSW5mbzo6dG9Bcmd1bWVu
dFJlZ2lzdGVyKDEpKSkpOworCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+c2V0R2VuZXJh
dG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY2FsbChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihyZXRhZ0NvZGVQdHI8dm9pZCo+KGZtb2REb3VibGUsIEIzQ0NhbGxQdHJUYWcsIE5v
UHRyVGFnKSksIE5vUHRyVGFnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgICAgICByZXN1bHQtPmVmZmVjdHMgPSBFZmZlY3RzOjpmb3JDYWxsKCk7CisjZWxz
ZQogICAgICAgICAgICAgICAgICAgICBWYWx1ZSogZnVuY3Rpb25BZGRyZXNzID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0PENvbnN0UHRyVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCBmbW9kRG91Ymxl
KTsKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxDQ2FsbFZhbHVlPihtX2luZGV4LCBEb3VibGUsIG1fb3JpZ2luLAogICAgICAgICAgICAg
ICAgICAgICAgICAgRWZmZWN0czo6bm9uZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25BZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCks
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgxKSk7CisjZW5kaWYKICAg
ICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyZXN1bHQpOwog
ICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV92YWx1ZS0+dHlwZSgpID09IEZsb2F0KSB7CiAgICAgICAgICAgICAgICAgICAg
IFZhbHVlKiBudW1lcmF0b3JBc0RvdWJsZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4o
bV9pbmRleCwgRmxvYXRUb0RvdWJsZSwgbV9vcmlnaW4sIG1fdmFsdWUtPmNoaWxkKDApKTsKICAg
ICAgICAgICAgICAgICAgICAgVmFsdWUqIGRlbm9taW5hdG9yQXNEb3VibGUgPSBtX2luc2VydGlv
blNldC5pbnNlcnQ8VmFsdWU+KG1faW5kZXgsIEZsb2F0VG9Eb3VibGUsIG1fb3JpZ2luLCBtX3Zh
bHVlLT5jaGlsZCgxKSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIGRvdWJsZU1vZCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxQYXRj
aHBvaW50VmFsdWU+KG1faW5kZXgsIERvdWJsZSwgbV9vcmlnaW4pOworICAgICAgICAgICAgICAg
ICAgICBkb3VibGVNb2QtPnJlc3VsdENvbnN0cmFpbnRzID0geyBWYWx1ZVJlcDo6cmVnKEZQUklu
Zm86OnJldHVyblZhbHVlRlBSKSB9OworICAgICAgICAgICAgICAgICAgICBkb3VibGVNb2QtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZG91YmxlTW9kLT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojp2b2xhdGlsZVJlZ2lzdGVy
c0ZvckpTQ2FsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlTW9kLT5hcHBlbmQobnVt
ZXJhdG9yQXNEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBkb3VibGVNb2QtPmFwcGVuZChk
ZW5vbWluYXRvckFzRG91YmxlKTsKKworICAgICAgICAgICAgICAgICAgICBkb3VibGVNb2QtPnNl
dEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNhbGwoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIocmV0YWdDb2RlUHRyPHZvaWQqPihmbW9kRG91YmxlLCBCM0NDYWxsUHRy
VGFnLCBOb1B0clRhZykpLCBOb1B0clRhZyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICAgICAgZG91YmxlTW9kLT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2Fs
bCgpOworI2Vsc2UKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIGZ1bmN0aW9uQWRkcmVzcyA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdFB0clZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwg
Zm1vZERvdWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBkb3VibGVNb2QgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8Q0NhbGxWYWx1ZT4obV9pbmRleCwgRG91YmxlLCBtX29yaWdpbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdHM6Om5vbmUoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uQWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVy
YXRvckFzRG91YmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVub21pbmF0b3JBc0RvdWJs
ZSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgRG91YmxlVG9GbG9hdCwgbV9vcmlnaW4sIGRv
dWJsZU1vZCk7CiAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRp
dHkocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKQEAgLTQ3
MCw3ICs1MDQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gc2hpZnQgb2ZmIHRoZSB1bmludGVy
ZXN0aW5nIGJpdHMuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCdzIG5vdCBjbGVhciB0aGF0IHRoaXMg
d291bGQKICAgICAgICAgLy8gYWN0dWFsbHkgYmUgYW55IGJldHRlciB0aGFuIHdoYXQgd2UgaGF2
ZSBkb25lIGhlcmUgYW5kIGl0J3Mgbm90IGNsZWFyIHRoYXQgaXQgd291bGQgYmUKICAgICAgICAg
Ly8gYmV0dGVyIHRoYW4gYSBiaW5hcnkgc3dpdGNoLgorI2lmIEVOQUJMRShKSVRfQ0FHRSkgIC8v
ICBDb25zaWRlciBpbmNyZWFzaW5nIHRoaXMgc2lnbmlmaWNhbnRseSB0byB2aXJ0dWFsbHkgZWxp
bWluYXRlIGluZGlyZWN0IGp1bXAgdGFibGVzIGZvciBKSVRfQ0FHRS4KKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgbWluQ2FzZXNGb3JUYWJsZSA9IDc7CisjZWxzZQogICAgICAgICBjb25zdCB1bnNp
Z25lZCBtaW5DYXNlc0ZvclRhYmxlID0gNzsKKyNlbmRpZgogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBkZW5zaXR5TGltaXQgPSA0OwogICAgICAgICBpZiAoZW5kIC0gc3RhcnQgPj0gbWluQ2FzZXNG
b3JUYWJsZSkgewogICAgICAgICAgICAgaW50NjRfdCBmaXJzdFZhbHVlID0gY2FzZXNbc3RhcnRd
LmNhc2VWYWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWF0aEV4dHJh
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWF0aEV4dHJh
cy5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01h
dGhFeHRyYXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCisjaW5j
bHVkZSAiQjNDYWdlZENDYWxsLmgiCiAjaW5jbHVkZSAiQjNDb25zdDMyVmFsdWUuaCIKICNpbmNs
dWRlICJCM0NvbnN0RG91YmxlVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIK
QEAgLTU3LDEzICs1OCwxOCBAQCBzdGQ6OnBhaXI8QmFzaWNCbG9jayosIFZhbHVlKj4gcG93RG91
YmxlCiAKICAgICAvLyBGdW5jdGlvbiBjYWxsLgogICAgIFZhbHVlKiB5QXNEb3VibGUgPSBmdW5j
dGlvbkNhbGxDYXNlLT5hcHBlbmROZXc8VmFsdWU+KHByb2NlZHVyZSwgSVRvRCwgb3JpZ2luLCB5
KTsKLSAgICBkb3VibGUoKnBvd0RvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gcG93OworICAgIGRv
dWJsZSAoKnBvd0RvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gcG93OworI2lmIEVOQUJMRShKSVRf
Q0FHRSkKKyAgICBWYWx1ZSogcG93UmVzdWx0ID0gY2FnZWRDQ2FsbChwcm9jZWR1cmUsIGZ1bmN0
aW9uQ2FsbENhc2UsIG9yaWdpbiwgRG91YmxlLCBwb3dEb3VibGUsIHgsIHlBc0RvdWJsZSk7Cisg
ICAgVXBzaWxvblZhbHVlKiBwb3dSZXN1bHRVcHNpbG9uID0gZnVuY3Rpb25DYWxsQ2FzZS0+YXBw
ZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvY2VkdXJlLCBvcmlnaW4sIHBvd1Jlc3VsdCk7CisjZWxz
ZQogICAgIHBvd0RvdWJsZSA9IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihwb3dEb3VibGUp
OwogICAgIFZhbHVlKiBwb3dSZXN1bHQgPSBmdW5jdGlvbkNhbGxDYXNlLT5hcHBlbmROZXc8Q0Nh
bGxWYWx1ZT4oCiAgICAgICAgIHByb2NlZHVyZSwgRG91YmxlLCBvcmlnaW4sCiAgICAgICAgIGZ1
bmN0aW9uQ2FsbENhc2UtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jZWR1cmUsIG9yaWdp
biwgYml0d2lzZV9jYXN0PHZvaWQqPihwb3dEb3VibGUpKSwKICAgICAgICAgeCwgeUFzRG91Ymxl
KTsKICAgICBVcHNpbG9uVmFsdWUqIHBvd1Jlc3VsdFVwc2lsb24gPSBmdW5jdGlvbkNhbGxDYXNl
LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jZWR1cmUsIG9yaWdpbiwgcG93UmVzdWx0KTsK
KyNlbmRpZgogICAgIGZ1bmN0aW9uQ2FsbENhc2UtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvY2VkdXJl
LCBKdW1wLCBvcmlnaW4pOwogICAgIGZ1bmN0aW9uQ2FsbENhc2UtPnNldFN1Y2Nlc3NvcnMoRnJl
cXVlbnRlZEJsb2NrKGNvbnRpbnVhdGlvbikpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MDUsNiArMTQwNSwxNyBAQCBvcCA6b3BfaXRlcmF0b3JfbmV4dF9yZXR1cm5fbG9j
YXRpb24KIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9s
b2d1ZV9ub190bHMKIAorb3AgOm9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9j
b25zdHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9vcGVuX3Nsb3df
cmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9zbG93X3JldHVybl9sb2NhdGlv
bgorb3AgOm9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfc2xv
d19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xv
d19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9s
b2NhdGlvbgorb3AgOm9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbgorCisKIGVuZF9z
ZWN0aW9uIDpOYXRpdmVIZWxwZXJzCiAKIGJlZ2luX3NlY3Rpb24gOldhc20sCkBAIC0xNDI5LDYg
KzE0NDAsMTEgQEAgb3AgOmVudGVyCiBvcCA6bm9wCiBvcCA6bG9vcF9oaW50CiAKK29wIDpjYWxs
X3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfbm9fdGxzX3JldHVybl9sb2NhdGlvbgorb3AgOmNh
bGxfaW5kaXJlY3RfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVjdF9ub190bHNfcmV0
dXJuX2xvY2F0aW9uCisKIG9wIDptb3YsCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1
YWxSZWdpc3RlciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVB
Y2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVBY2Nlc3MuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDYgKzMz
MCw3IEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0aCgKIAogICAgIEND
YWxsSGVscGVycyBqaXQ7CiAKKyAgICAvLyBGSVhNRTogSklUX0NBR0UgLSBDYW4gd2UgbWFrZSB0
aGlzIGhhdmUgYSBzbWFsbGVyIGluc3QgY291bnQgZm9yIEFSTTY0PwogICAgIEdQUlJlZyBiYXNl
ID0gc3R1YkluZm8uYmFzZUdQUjsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZSA9IHN0dWJJbmZvLnZh
bHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoID0gZ2V0U2NyYXRjaFJlZ2lzdGVyKHN0dWJJ
bmZvKTsKQEAgLTM0Nyw2ICszNDgsMTMgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU3Ry
aW5nTGVuZ3RoKAogICAgIGlzUm9wZS5saW5rKCZqaXQpOwogICAgIGppdC5sb2FkMzIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSksIHZh
bHVlLnBheWxvYWRHUFIoKSk7CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgLy8gTWFrZSBh
IGxpdHRsZSBzcGFjZQorICAgIGppdC5ub3AoKTsKKyAgICBqaXQubm9wKCk7CisgICAgaml0Lm5v
cCgpOworI2VuZGlmCisKICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgaml0LmJveEludDMyKHZh
bHVlLnBheWxvYWRHUFIoKSwgdmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2VsaWYgQ1BVKFg4NikKICAgICAgICAgc2l6ZV90IHNp
emUgPSAyNzsKICNlbGlmIENQVShBUk02NCkKLSAgICAgICAgc2l6ZV90IHNpemUgPSA0NDsKKyAg
ICAgICAgc2l6ZV90IHNpemUgPSA1MjsKICNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgICAgICBz
aXplX3Qgc2l6ZSA9IDMwOwogI2VsaWYgQ1BVKE1JUFMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlU2l6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGVTaXplLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGVTaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDEyICsyNywxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBPcGNvZGVTaXplIHsK
K2VudW0gT3Bjb2RlU2l6ZSA6IHVuc2lnbmVkIHsKICAgICBOYXJyb3cgPSAxLAogICAgIFdpZGUx
NiA9IDIsCiAgICAgV2lkZTMyID0gNCwKIH07CiAKK0FMV0FZU19JTkxJTkUgdW5zaWduZWQgb3Bj
b2RlU2l6ZUFzSW5kZXgoT3Bjb2RlU2l6ZSBzaXplKSB7IHJldHVybiBzaXplID4+IDE7IH0KKwog
dGVtcGxhdGU8T3Bjb2RlU2l6ZT4KIHN0cnVjdCBUeXBlQnlTaXplOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAkocmV2aXNpb24g
MjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBpbml0aWFsaXplU3VwZXJT
YW1wbGVyKCkKICAgICAgICAgIkpTQyBTdXBlciBTYW1wbGVyIiwKICAgICAgICAgW10gKCkgewog
ICAgICAgICAgICAgY29uc3QgaW50IHNsZWVwUXVhbnR1bSA9IDM7Ci0gICAgICAgICAgICBjb25z
dCBpbnQgcHJpbnRpbmdQZXJpb2QgPSAzMDAwOworICAgICAgICAgICAgY29uc3QgaW50IHByaW50
aW5nUGVyaW9kID0gNTAwOwogICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAg
IGZvciAoaW50IG1zID0gMDsgbXMgPCBwcmludGluZ1BlcmlvZDsgbXMgKz0gc2xlZXBRdWFudHVt
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChnX3N1cGVyU2FtcGxlckVuYWJsZWQpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhNb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAkocmV2aXNpb24gMjY3
NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSB7CiAgICAg
bWFjcm8oQVRhbmgsIGF0YW5oKSBcCiAgICAgbWFjcm8oTG9nLCBsb2cpIFwKICAgICBtYWNybyhM
b2cxMCwgbG9nMTApIFwKLSAgICBtYWNybyhMb2cxcCwgbG9nMXApIFwKKyAgICBtYWNybyhMb2cx
cCwgb3BlcmF0aW9uTG9nMXApIFwKICAgICBtYWNybyhMb2cyLCBsb2cyKSBcCiAgICAgbWFjcm8o
Q2JydCwgY2JydCkgXAogICAgIG1hY3JvKEV4cCwgZXhwKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzMSw2ICszMzEsMTUgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZl
bChPcGNvZGVJRAogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246CiAgICAg
Y2FzZSB3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlvbl9wcm9s
b2d1ZV9ub190bHM6CisgICAgY2FzZSBvcF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfY29uc3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRl
cmF0b3Jfb3Blbl9zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25l
eHRfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfcmV0dXJuX2xv
Y2F0aW9uOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dfcmV0dXJuX2xvY2F0aW9u
OgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246Cisg
ICAgY2FzZSBvcF9jYWxsX2V2YWxfc2xvd19yZXR1cm5fbG9jYXRpb246CiAgICAgICAgIHJldHVy
biBDYW5ub3RDb21waWxlOwogICAgIH0KICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjY3NDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAj
aW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCiAjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCisj
aW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5o
IgogI2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb2JlQ29udGV4dC5o
IgpAQCAtNDYsNiArNDcsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29tcGlsZU9TUkV4aXQpOworVkFMSURfSklUX1RB
UkdFVChvcGVyYXRpb25EZWJ1Z1ByaW50U3BlY3VsYXRpb25GYWlsdXJlKTsKKwogT1NSRXhpdDo6
T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE1ldGhv
ZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgdmFsdWVQcm9maWxlLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCB1bnNpZ25lZCBzdHJlYW1JbmRleCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKICAgICA6IE9T
UkV4aXRCYXNlKGtpbmQsIGppdC0+bV9vcmlnaW4uZm9yRXhpdCwgaml0LT5tX29yaWdpbi5zZW1h
bnRpYywgaml0LT5tX29yaWdpbi53YXNIb2lzdGVkLCBqaXQtPm1fY3VycmVudE5vZGUgPyBqaXQt
Pm1fY3VycmVudE5vZGUtPmluZGV4KCkgOiAwKQogICAgICwgbV9qc1ZhbHVlU291cmNlKGpzVmFs
dWVTb3VyY2UpCkBAIC0xMjQsMTYgKzEyOCwyNSBAQCB2b2lkIE9TUkV4aXQ6OmVtaXRSZXN0b3Jl
QXJndW1lbnRzKENDYWxsCiAgICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAg
ICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAgICAgY2FzZSBEaXJl
Y3RBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICAgICAgaml0LmNhbGwoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVudGFnQ29k
ZVB0cjxDRnVuY3Rpb25QdHJUYWc+KG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50c0R1cmlu
Z0V4aXQpKSwgTm9QdHJUYWcpOworI2Vsc2UKICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVy
YXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHNEdXJpbmdFeGl0KSksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgICAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9u
UHRyVGFnKTsKKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2xvbmVk
QXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAg
ICAgICAgIGppdC5jYWxsKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih1bnRhZ0NvZGVQ
dHI8Q0Z1bmN0aW9uUHRyVGFnPihvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHNEdXJpbmdF
eGl0KSksIE5vUHRyVGFnKTsKKyNlbHNlCiAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0
aW9uQ3JlYXRlQ2xvbmVkQXJndW1lbnRzRHVyaW5nRXhpdCkpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKKyAgICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0
clRhZyk7CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJh
dGlvblB0clRhZyk7CiAgICAgICAgIGppdC5zdG9yZUNlbGwoR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAKICAgICAgICAgYWxy
ZWFkeUFsbG9jYXRlZEFyZ3VtZW50cy5hZGQoaWQsIG9wZXJhbmQudmlydHVhbFJlZ2lzdGVyKCkp
OwpAQCAtODcyLDcgKzg4NSw3IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxw
ZXJzJiAKIAogICAgIC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCiAKLSAgICByZWlmeUlu
bGluZWRDYWxsRnJhbWVzKGppdCwgZXhpdCk7CisgICAgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyh2
bSwgaml0LCBleGl0KTsKIAogICAgIC8vIEFuZCBmaW5pc2guCiAgICAgYWRqdXN0QW5kSnVtcFRv
VGFyZ2V0KHZtLCBqaXQsIGV4aXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkocmV2aXNpb24gMjY3NDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOCArMTA0LDEyIEBAIHZvaWQgaGFuZGxlRXhpdENv
dW50cyhWTSYgdm0sIENDYWxsSGVscGUKICAgICAKICAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uVHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KT4oR1BSSW5mbzo6cmVnVDAs
IEdQUkluZm86OnJlZ1QzLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmV4aXQpKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICBqaXQuY2FsbChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodW50YWdDb2RlUHRy
PENGdW5jdGlvblB0clRhZz4ob3BlcmF0aW9uVHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KSksIE5v
UHRyVGFnKTsKKyNlbHNlCiAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblRyaWdnZXJSZW9wdGlt
aXphdGlvbk5vdykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuY2FsbChHUFJJbmZv
Ojpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOworI2VuZGlmCiAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpKdW1wIGRvbmVBZGp1c3RpbmcgPSBqaXQuanVtcCgpOwogICAgIAogICAgIHRvb0Zld0Zh
aWxzLmxpbmsoJmppdCk7CkBAIC0xNDUsNyArMTQ5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTRW50cnlQdHJUYWc+IGNhbAogICAgIGlmIChjYWxsQnl0ZWNvZGVJbmRleC5jaGVja3BvaW50
KCkpIHsKICAgICAgICAgaWYgKCFjYWxsZXJJc0xMSW50KQogICAgICAgICAgICAgYmFzZWxpbmVD
b2RlQmxvY2tGb3JDYWxsZXItPm1faGFzTGlua2VkT1NSRXhpdCA9IHRydWU7Ci0gICAgICAgIHJl
dHVybiBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0
X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUpOworICAgICAgICByZXR1cm4gTExJbnQ6OmNo
ZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJhbXBvbGluZSgpOwogICAgIH0KIAogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0OwpAQCAtMjU5
LDggKzI2MywxMiBAQCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgY2FsbGVlU2F2ZVNsb3QoSW5sCiAg
ICAgcmV0dXJuIENDYWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OmZyYW1lUG9pbnRl
clJlZ2lzdGVyKTsKIH0KIAotdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKK3ZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZy
YW1lcyhWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkK
IHsKKyNpZiAhRU5BQkxFKEpJVF9DQUdFKQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CisjZW5kaWYK
KwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdo
ZW4gcGVyZm9ybWluZyBhbiBPU1IgZXhpdAogICAgIC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQg
dGFpbCBjYWxscy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ3NTExCkBAIC0yODAsNyArMjg4LDkgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVz
KENDYWxsSGVscGVycwogICAgICAgICBpZiAoIXRydWVDYWxsZXIpIHsKICAgICAgICAgICAgIEFT
U0VSVChpbmxpbmVDYWxsRnJhbWUtPmlzVGFpbCgpKTsKICAgICAgICAgICAgIGppdC5sb2FkUHRy
KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2Fs
bEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDMpOwotI2lmIENQVShBUk02
NEUpCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaml0LmNhZ2VUb0pJVFJlZ2lv
bihHUFJJbmZvOjpyZWdUMyk7CisjZWxpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgaml0LmFk
ZFB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQ
QykpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAg
ICAgICAgaml0LnVudGFnUHRyKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAg
ICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGlubGluZUNh
bGxGcmFtZS0+cmV0dXJuUENPZmZzZXQoKSArIHNpemVvZih2b2lkKikpLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwpAQCAtMzAyLDcgKzMxMiwxMSBAQCB2b2lk
IHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzCiAgICAgICAgICAgICAgICAgY2Fs
bGVyRnJhbWVHUFIgPSBHUFJJbmZvOjpyZWdUMzsKICAgICAgICAgICAgIH0KIAotI2lmIENQVShB
Uk02NEUpCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaWYgKCFpc0pJVFBDKGp1
bXBUYXJnZXQudW50YWdnZWRFeGVjdXRhYmxlQWRkcmVzcygpKSAmJiBPcHRpb25zOjp1c2VKSVQo
KSkKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gdm0ubmF0aXZlVHJhbXBvbGluZUZvcihU
YWdnZWROYXRpdmVGdW5jdGlvbihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGp1bXBUYXJnZXQuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNz
KCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFt
ZS0+cmV0dXJuUENPZmZzZXQoKSkpOworI2VsaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIGpp
dC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5y
ZXR1cm5QQ09mZnNldCgpICsgc2l6ZW9mKHZvaWQqKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldC51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCkp
LCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICAgICAgICAgIGppdC50YWdQdHIoR1BSSW5mbzo6
cmVnVDIsIEdQUkluZm86Om5vbkFyZ0dQUjApOwpAQCAtMzU3LDE0ICszNzEsMjUgQEAgc3RhdGlj
IHZvaWQgb3NyV3JpdGVCYXJyaWVyKFZNJiB2bSwgQ0NhbAogCiAgICAgaml0LnNldHVwQXJndW1l
bnRzPGRlY2x0eXBlKG9wZXJhdGlvbk9TUldyaXRlQmFycmllcik+KCZ2bSwgb3duZXIpOwogICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
IFVOVVNFRF9QQVJBTShzY3JhdGNoKTsKKyAgICBqaXQuY2FsbChNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cih1bnRhZ0NvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPihvcGVyYXRpb25PU1JXcml0
ZUJhcnJpZXIpKSwgTm9QdHJUYWcpOworI2Vsc2UKICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25P
U1JXcml0ZUJhcnJpZXIpKSwgc2NyYXRjaCk7CiAgICAgaml0LmNhbGwoc2NyYXRjaCwgT3BlcmF0
aW9uUHRyVGFnKTsKKyNlbmRpZgogCiAgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5r
KCZqaXQpOwogfQogCiB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgY29uc3QgUHRyVGFnIGRlc3RUYWcgPSBOb1B0clRhZzsKKyNlbHNlCisgICAgY29u
c3QgUHRyVGFnIGRlc3RUYWcgPSBPU1JFeGl0UHRyVGFnOworI2VuZGlmCisKICAgICBqaXQubWVt
b3J5RmVuY2UoKTsKICAgICAKICAgICBqaXQubW92ZSgKQEAgLTQwOCwxNSArNDMzLDI3IEBAIHZv
aWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGwKICAgICAgICAgZWxzZSAKICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4o
Y3VycmVudEluc3RydWN0aW9uKTsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgZGVzdGluYXRpb24gPSB2bS5uYXRpdmVU
cmFtcG9saW5lRm9yKFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4o
ZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbmRpZgorCiAgICAgICAgIGlm
IChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CiAgICAgICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmN1cnJlbnRJbnN0cnVjdGlvbiksIEdQUkluZm86OnJl
Z1QyKTsKICAgICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMiwgJnZtLnRhcmdl
dEludGVycHJldGVyUENGb3JUaHJvdyk7CiAgICAgICAgIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyAgICAgICAgLy8gQ2FnZSBjYWxsZXIncyBMUgorICAgICAgICBqaXQubG9hZFB0cihBc3Nl
bWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFt
ZTo6cmV0dXJuUENPZmZzZXQoKSksIExMSW50OjpSZWdpc3RlcnM6Om1ldGFkYXRhVGFibGVHUFIp
OworICAgICAgICBqaXQuY2FnZVRvSklUUmVnaW9uKExMSW50OjpSZWdpc3RlcnM6Om1ldGFkYXRh
VGFibGVHUFIpOworICAgICAgICBqaXQuc3RvcmVQdHIoTExJbnQ6OlJlZ2lzdGVyczo6bWV0YWRh
dGFUYWJsZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpKTsKKyNlbmRpZgorCiAgICAgICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2tGb3JFeGl0LT5t
ZXRhZGF0YVRhYmxlKCkpLCBMTEludDo6UmVnaXN0ZXJzOjptZXRhZGF0YVRhYmxlR1BSKTsKICAg
ICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVCbG9ja0ZvckV4
aXQtPmluc3RydWN0aW9uc1Jhd1BvaW50ZXIoKSksIExMSW50OjpSZWdpc3RlcnM6OnBiR1BSKTsK
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSksIExMSW50OjpSZWdpc3RlcnM6OnBjR1BSKTsKLSAgICAgICAganVtcFRhcmdl
dCA9IGRlc3RpbmF0aW9uLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLnJldGFnZ2VkPGRlc3RUYWc+
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICB9IGVsc2UgewogICAgICAgICBjb2RlQmxvY2tG
b3JFeGl0LT5tX2hhc0xpbmtlZE9TUkV4aXQgPSB0cnVlOwogCkBAIC00MzEsNyArNDY4LDcgQEAg
dm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbAogCiAgICAgICAgIEFTU0VS
VChkZXN0aW5hdGlvbik7CiAKLSAgICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLnJldGFn
Z2VkPE9TUkV4aXRQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAganVtcFRh
cmdldCA9IGRlc3RpbmF0aW9uLnJldGFnZ2VkPGRlc3RUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKICAgICB9CiAKICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KEpJVDo6c3RhY2tQb2ludGVyT2Zmc2V0Rm9yKGNvZGVCbG9ja0ZvckV4aXQpICogc2l6ZW9mKFJl
Z2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBBc3NlbWJseUhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTQzOSw5ICs0NzYsMTMgQEAgdm9pZCBhZGp1c3RBbmRK
dW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbAogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBqdW1waW5n
IHRvIG9wX2NhdGNoLCB3ZSBuZWVkIHRvIHNldCBjYWxsRnJhbWVGb3JDYXRjaC4KICAgICAgICAg
aml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCB2bS5hZGRyZXNzT2ZDYWxs
RnJhbWVGb3JDYXRjaCgpKTsKICAgICB9Ci0gICAgCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgaml0LmZhckp1bXAoTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcyhqdW1wVGFyZ2V0
KSwgZGVzdFRhZyk7CisjZWxzZQogICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihqdW1wVGFyZ2V0KSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIGppdC5mYXJKdW1wKEdQ
UkluZm86OnJlZ1QyLCBPU1JFeGl0UHRyVGFnKTsKKyAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpy
ZWdUMiwgZGVzdFRhZyk7CisjZW5kaWYKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlckNvbW1vbi5oCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgaGFuZGxlRXhp
dENvdW50cyhWTSYsIENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7Ci12b2lkIHJl
aWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsK
K3ZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhWTSYsIENDYWxsSGVscGVycyYsIGNvbnN0IE9T
UkV4aXRCYXNlJik7CiB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYsIENDYWxsSGVscGVy
cyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0
clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxl
ciwgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5k
IGNhbGxlcktpbmQsIGJvb2wmIGNhbGxlcklzTExJbnQpOwogQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
IGNhbGxlZVNhdmVTbG90KElubGluZUNhbGxGcmFtZSosIENvZGVCbG9jayogYmFzZWxpbmVDb2Rl
QmxvY2ssIEdQUlJlZyBjYWxsZWVTYXZlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsNyBAQAogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgogI2luY2x1ZGUgIkhhc093blByb3Bl
cnR5Q2FjaGUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFZhbGlk
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCkBAIC04NSw2ICs4Niwy
OTEgQEAgSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJmcmFtZS1hZGRyZXNzIikKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblRvVGhp
cyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblRvVGhpc1N0cmljdCk7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvbk9iamVjdEtleXMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25P
YmplY3RLZXlzT2JqZWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uT2JqZWN0R2V0T3du
UHJvcGVydHlOYW1lc09iamVjdCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk9iamVjdENy
ZWF0ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdCk7CitW
QUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkNyZWF0ZVRoaXMpOworVkFMSURfSklUX1RBUkdFVChv
cGVyYXRpb25DcmVhdGVQcm9taXNlKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ3JlYXRl
SW50ZXJuYWxQcm9taXNlKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ3JlYXRlR2VuZXJh
dG9yKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IpOwor
VkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IpOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25Ub09iamVjdCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlv
blZhbHVlTW9kKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uSW5jKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uRGVjKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVCaXRO
b3QpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25WYWx1ZUJpdEFuZCk7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvblZhbHVlQml0T3IpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25W
YWx1ZUJpdFhvcik7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblZhbHVlQml0TFNoaWZ0KTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQpOworVkFMSURfSklUX1RB
UkdFVChvcGVyYXRpb25WYWx1ZUJpdFVSU2hpZnQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25WYWx1ZUFkZE5vdE51bWJlcik7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblZhbHVlRGl2
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVQb3cpOworVkFMSURfSklUX1RBUkdF
VChvcGVyYXRpb25Bcml0aEFicyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkFyaXRoQ2x6
MzIpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Bcml0aEZSb3VuZCk7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvbkFyaXRoQUNvcyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkFy
aXRoQUNvc2gpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Bcml0aEFTaW4pOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25Bcml0aEFTaW5oKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0
aW9uQXJpdGhBVGFuKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQXJpdGhBVGFuaCk7CitW
QUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkFyaXRoQ2JydCk7CitWQUxJRF9KSVRfVEFSR0VUKG9w
ZXJhdGlvbkFyaXRoQ29zKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQXJpdGhDb3NoKTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQXJpdGhFeHApOworVkFMSURfSklUX1RBUkdFVChv
cGVyYXRpb25Bcml0aEV4cG0xKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQXJpdGhMb2cp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Bcml0aExvZzEwKTsKK1ZBTElEX0pJVF9UQVJH
RVQob3BlcmF0aW9uQXJpdGhMb2cxcCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkFyaXRo
TG9nMik7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkFyaXRoU2luKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uQXJpdGhTaW5oKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQXJp
dGhUYW4pOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Bcml0aFRhbmgpOworVkFMSURfSklU
X1RBUkdFVChvcGVyYXRpb25Bcml0aFNxcnQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25B
cml0aFJvdW5kKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQXJpdGhGbG9vcik7CitWQUxJ
RF9KSVRfVEFSR0VUKG9wZXJhdGlvbkFyaXRoQ2VpbCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJh
dGlvbkFyaXRoVHJ1bmMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRCeVZhbENlbGwp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCk7CitWQUxJRF9K
SVRfVEFSR0VUKG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5nSW50KTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25HZXRCeVZhbE9iamVjdFN5bWJvbCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblB1dEJ5
VmFsU3RyaWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3Qp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QpOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25QdXRCeVZhbENlbGxOb25TdHJpY3QpOworVkFMSURfSklUX1RB
UkdFVChvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdTdHJpY3QpOworVkFMSURfSklUX1RBUkdF
VChvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25TdHJpY3QpOworVkFMSURfSklUX1RBUkdF
VChvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTdHJpY3QpOworVkFMSURfSklUX1RBUkdFVChv
cGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xOb25TdHJpY3QpOworVkFMSURfSklUX1RBUkdFVChv
cGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KTsKK1ZBTElEX0pJVF9UQVJH
RVQob3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCk7CitWQUxJRF9K
SVRfVEFSR0VUKG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3Qp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91
bmRzTm9uU3RyaWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUHV0RG91YmxlQnlWYWxE
aXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlv
blB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCk7CitWQUxJRF9KSVRfVEFS
R0VUKG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsTm9uU3RyaWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nU3RyaWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0KTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU3RyaWN0KTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sTm9uU3RyaWN0KTsKK1ZB
TElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJy
YXlCb3VuZHNOb25TdHJpY3QpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25BcnJheVB1c2gp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25BcnJheVB1c2hEb3VibGUpOworVkFMSURfSklU
X1RBUkdFVChvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9w
ZXJhdGlvbkFycmF5UHVzaERvdWJsZU11bHRpcGxlKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0
aW9uQXJyYXlQb3ApOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25BcnJheVBvcEFuZFJlY292
ZXJMZW5ndGgpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25SZWdFeHBFeGVjU3RyaW5nKTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUmVnRXhwRXhlYyk7CitWQUxJRF9KSVRfVEFSR0VU
KG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9u
UmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9u
UmVnRXhwTWF0Y2hGYXN0U3RyaW5nKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUmVnRXhw
TWF0Y2hGYXN0R2xvYmFsU3RyaW5nKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUGFyc2VJ
bnROb1JhZGl4R2VuZXJpYyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblBhcnNlSW50U3Ry
aW5nTm9SYWRpeCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblBhcnNlSW50U3RyaW5nKTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUGFyc2VJbnRHZW5lcmljKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJh
dGlvblJlZ0V4cFRlc3QpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25SZWdFeHBUZXN0R2Vu
ZXJpYyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblN1YkhlYXBCaWdJbnQpOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25CaXROb3RIZWFwQmlnSW50KTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uTXVsSGVhcEJpZ0ludCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk1vZEhl
YXBCaWdJbnQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25EaXZIZWFwQmlnSW50KTsKK1ZB
TElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUG93SGVhcEJpZ0ludCk7CitWQUxJRF9KSVRfVEFSR0VU
KG9wZXJhdGlvbkJpdEFuZEhlYXBCaWdJbnQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25C
aXRMU2hpZnRIZWFwQmlnSW50KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQWRkSGVhcEJp
Z0ludCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQpOwor
VkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQpOworVkFMSURfSklUX1RB
UkdFVChvcGVyYXRpb25CaXRYb3JIZWFwQmlnSW50KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0
aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblNhbWVW
YWx1ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblRvUHJpbWl0aXZlKTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uVG9Qcm9wZXJ0eUtleSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJh
dGlvblRvTnVtYmVyKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVG9OdW1lcmljKTsKK1ZB
TElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ2FsbE51bWJlckNvbnN0cnVjdG9yKTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyk7CitWQUxJRF9KSVRfVEFSR0VUKG9w
ZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlv
blB1dEJ5SWRXaXRoVGhpcyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblB1dEJ5VmFsV2l0
aFRoaXNTdHJpY3QpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5KTsKK1ZBTElE
X0pJVF9UQVJHRVQob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nKTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQpOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wpOworVkFMSURfSklU
X1RBUkdFVChvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5KTsKK1ZBTElEX0pJVF9UQVJH
RVQob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZyk7CitWQUxJRF9KSVRfVEFS
R0VUKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCk7CitWQUxJRF9K
SVRfVEFSR0VUKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wpOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25OZXdBcnJheSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXkpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcik7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhTaXplKTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uTmV3SW50OEFycmF5V2l0aE9uZUFyZ3VtZW50KTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhTaXplKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0
aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJh
dGlvbk5ld0ludDMyQXJyYXlXaXRoU2l6ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5l
d0ludDMyQXJyYXlXaXRoT25lQXJndW1lbnQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25O
ZXdVaW50OEFycmF5V2l0aFNpemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25OZXdVaW50
OEFycmF5V2l0aE9uZUFyZ3VtZW50KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3VWlu
dDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld1Vp
bnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0
aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5l
d1VpbnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9u
TmV3VWludDMyQXJyYXlXaXRoU2l6ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld1Vp
bnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aFNpemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25OZXdG
bG9hdDY0QXJyYXlXaXRoU2l6ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld0Zsb2F0
NjRBcnJheVdpdGhPbmVBcmd1bWVudCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld0Fy
cmF5SXRlcmF0b3IpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25OZXdNYXBJdGVyYXRvcik7
CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld1NldEl0ZXJhdG9yKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCk7CitWQUxJRF9KSVRfVEFSR0VU
KG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJh
dGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkNy
ZWF0ZUNsb25lZEFyZ3VtZW50cyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkNyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkNyZWF0ZURpcmVj
dEFyZ3VtZW50c0R1cmluZ0V4aXQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25DcmVhdGVD
bG9uZWRBcmd1bWVudHNEdXJpbmdFeGl0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ3Jl
YXRlUmVzdCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblR5cGVPZklzT2JqZWN0KTsKK1ZB
TElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVHlwZU9mSXNGdW5jdGlvbik7CitWQUxJRF9KSVRfVEFS
R0VUKG9wZXJhdGlvbk9iamVjdElzQ2FsbGFibGUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25Jc0NvbnN0cnVjdG9yKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVHlwZU9mT2JqZWN0
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQWxsb2NhdGVTaW1wbGVQcm9wZXJ0eVN0b3Jh
Z2VXaXRoSW5pdGlhbENhcGFjaXR5KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQWxsb2Nh
dGVTaW1wbGVQcm9wZXJ0eVN0b3JhZ2UpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25BbGxv
Y2F0ZUNvbXBsZXhQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlhbENhcGFjaXR5KTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uQWxsb2NhdGVDb21wbGV4UHJvcGVydHlTdG9yYWdlKTsKK1ZBTElE
X0pJVF9UQVJHRVQob3BlcmF0aW9uRW5zdXJlSW50MzIpOworVkFMSURfSklUX1RBUkdFVChvcGVy
YXRpb25FbnN1cmVEb3VibGUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25FbnN1cmVDb250
aWd1b3VzKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uSW5TdHJ1Y3R1cmVQcm9wZXJ0eSk7CitWQUxJRF9KSVRfVEFSR0VU
KG9wZXJhdGlvbkhhc093blN0cnVjdHVyZVByb3BlcnR5KTsKK1ZBTElEX0pJVF9UQVJHRVQob3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25HZXRQcm9wZXJ0eUVudW1lcmF0b3IpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRQ
cm9wZXJ0eUVudW1lcmF0b3JDZWxsKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVG9JbmRl
eFN0cmluZyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld1JlZ2V4cFdpdGhMYXN0SW5k
ZXgpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25SZXNvbHZlUm9wZSk7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvblN0cmluZ1ZhbHVlT2YpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25TdHJpbmdTdWJzdHIpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25TdHJpbmdTbGljZSk7
CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblRvTG93ZXJDYXNlKTsKK1ZBTElEX0pJVF9UQVJH
RVQob3BlcmF0aW9uSW50MzJUb1N0cmluZyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbklu
dDUyVG9TdHJpbmcpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Eb3VibGVUb1N0cmluZyk7
CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkludDMyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCk7
CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCk7
CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5nV2l0aFZhbGlkUmFkaXgp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcpOworVkFM
SURfSklUX1RBUkdFVChvcGVyYXRpb25OZXdTeW1ib2wpOworVkFMSURfSklUX1RBUkdFVChvcGVy
YXRpb25OZXdTeW1ib2xXaXRoRGVzY3JpcHRpb24pOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25OZXdTdHJpbmdPYmplY3QpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Ub1N0cmluZ09u
Q2VsbCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblRvU3RyaW5nKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uTWFrZVJvcGUyKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTWFrZVJvcGUz
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uU3RyQ2F0Mik7CitWQUxJRF9KSVRfVEFSR0VU
KG9wZXJhdGlvblN0ckNhdDMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25GaW5kU3dpdGNo
SW1tVGFyZ2V0Rm9yRG91YmxlKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uU3dpdGNoU3Ry
aW5nKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0ltcGxMZXNzKTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0ltcGxMZXNzRXEpOworVkFM
SURfSklUX1RBUkdFVChvcGVyYXRpb25Db21wYXJlU3RyaW5nSW1wbEdyZWF0ZXIpOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25Db21wYXJlU3RyaW5nSW1wbEdyZWF0ZXJFcSk7CitWQUxJRF9K
SVRfVEFSR0VUKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdMZXNzKTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uQ29tcGFyZVN0cmluZ0xlc3NFcSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlv
bkNvbXBhcmVTdHJpbmdHcmVhdGVyKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29tcGFy
ZVN0cmluZ0dyZWF0ZXJFcSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5vdGlmeVdyaXRl
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJn
cyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MpOworVkFMSURfSklU
X1RBUkdFVChvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJh
dGlvbk51bWJlcklzSW50ZWdlcik7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkFycmF5SW5k
ZXhPZlN0cmluZyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVl
SW50MzJPckNvbnRpZ3VvdXMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25BcnJheUluZGV4
T2ZWYWx1ZURvdWJsZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkxvYWRWYXJhcmdzKTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uRk1vZE9uSW50cyk7CisjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUmFuZG9tKTsKKyNlbmRpZgorVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGUpOworVkFMSURfSklUX1RBUkdF
VChvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVkKTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uQ29udmVydEJveGVkRG91YmxlVG9JbnQ1Mik7CitWQUxJRF9KSVRfVEFSR0VUKG9w
ZXJhdGlvbkNvbnZlcnREb3VibGVUb0ludDUyKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9u
TmV3UmF3T2JqZWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1
dHRlcmZseSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJm
bHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgpOworVkFMSURfSklUX1RBUkdFVChv
cGVyYXRpb25OZXdBcnJheVdpdGhTcHJlYWRTbG93KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0
aW9uQ3JlYXRlSW1tdXRhYmxlQnV0dGVyZmx5KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9u
U3ByZWFkR2VuZXJpYyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblNwcmVhZEZhc3RBcnJh
eSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2dERkcp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNE
ZWNsSW5FdmFsKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUmVzb2x2ZVNjb3BlKTsKK1ZB
TElEX0pJVF9UQVJHRVQob3BlcmF0aW9uR2V0RHluYW1pY1Zhcik7CitWQUxJRF9KSVRfVEFSR0VU
KG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25QdXREeW5hbWljVmFyTm9uU3RyaWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTWFw
SGFzaCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldCk7CitWQUxJ
RF9KSVRfVEFSR0VUKG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCk7CitWQUxJRF9KSVRfVEFSR0VU
KG9wZXJhdGlvblNldEFkZCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk1hcFNldCk7CitW
QUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbldlYWtTZXRBZGQpOworVkFMSURfSklUX1RBUkdFVChv
cGVyYXRpb25XZWFrTWFwU2V0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uR2V0UHJvdG90
eXBlT2ZPYmplY3QpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRQcm90b3R5cGVPZik7
CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkRhdGVHZXRGdWxsWWVhcik7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvbkRhdGVHZXRVVENGdWxsWWVhcik7CitWQUxJRF9KSVRfVEFSR0VUKG9w
ZXJhdGlvbkRhdGVHZXRNb250aCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkRhdGVHZXRV
VENNb250aCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkRhdGVHZXREYXRlKTsKK1ZBTElE
X0pJVF9UQVJHRVQob3BlcmF0aW9uRGF0ZUdldFVUQ0RhdGUpOworVkFMSURfSklUX1RBUkdFVChv
cGVyYXRpb25EYXRlR2V0RGF5KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uRGF0ZUdldFVU
Q0RheSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkRhdGVHZXRIb3Vycyk7CitWQUxJRF9K
SVRfVEFSR0VUKG9wZXJhdGlvbkRhdGVHZXRVVENIb3Vycyk7CitWQUxJRF9KSVRfVEFSR0VUKG9w
ZXJhdGlvbkRhdGVHZXRNaW51dGVzKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uRGF0ZUdl
dFVUQ01pbnV0ZXMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25EYXRlR2V0U2Vjb25kcyk7
CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkRhdGVHZXRVVENTZWNvbmRzKTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uRGF0ZUdldFRpbWV6b25lT2Zmc2V0KTsKK1ZBTElEX0pJVF9UQVJH
RVQob3BlcmF0aW9uRGF0ZUdldFllYXIpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25UaHJv
d0RGRyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblRocm93U3RhdGljRXJyb3IpOworVkFM
SURfSklUX1RBUkdFVChvcGVyYXRpb25MaW5rRGlyZWN0Q2FsbCk7CitWQUxJRF9KSVRfVEFSR0VU
KG9wZXJhdGlvblRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyk7CitWQUxJRF9KSVRfVEFSR0VUKG9w
ZXJhdGlvblRyaWdnZXJUaWVyVXBOb3cpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Ucmln
Z2VyVGllclVwTm93SW5Mb29wKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVHJpZ2dlck9T
UkVudHJ5Tm93KTsKKwogdGVtcGxhdGU8Ym9vbCBzdHJpY3QsIGJvb2wgZGlyZWN0Pgogc3RhdGlj
IGlubGluZSB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwgSlNWYWx1ZSBiYXNlVmFsdWUsIHVpbnQzMl90IGluZGV4LCBKU1ZhbHVlIHZhbHVlKQogewpA
QCAtMzA0NCw3ICszMzMwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fy
cmF5VwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQ2VsbCogb3BlcmF0aW9uQ3JlYXRlSW1t
dXRhYmxlQnV0dGVyZmx5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGxl
bmd0aCkKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbW11dGFibGVCdXR0
ZXJmbHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMyw4ICszMDMs
NiBAQCBpbnQ2NF90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydERvCiAKIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk51bWJlcklzSW50ZWdlcihKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlKTsKIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmYXVsdEhh
c0luc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiB2YWx1ZSwgSlNDZWxsKiBwcm90byk7
Ci0KIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmF3T2JqZWN0KFZNKiwgU3RydWN0
dXJlKiwgaW50MzJfdCwgQnV0dGVyZmx5KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHkoVk0qLCBTdHJ1Y3R1cmUqLCBC
dXR0ZXJmbHkqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0aChW
TSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgQnV0dGVyZmx5KikgV1RGX0lOVEVSTkFM
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIzLDcgKzIwMjMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIEFTU0VSVCht
X2N1cnJlbnROb2RlLT5zaG91bGRHZW5lcmF0ZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmICh2
ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIlNwZWN1
bGF0aXZlSklUIGdlbmVyYXRpbmcgTm9kZSBAIiwgKGludCltX2N1cnJlbnROb2RlLT5pbmRleCgp
LCAiICgiLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCgpLm9m
ZnNldCgpLCAiKSBhdCBKSVQgb2Zmc2V0IDB4IiwgbV9qaXQuZGVidWdPZmZzZXQoKSk7CisgICAg
ICAgICAgICBkYXRhTG9nTG4oIlNwZWN1bGF0aXZlSklUIGdlbmVyYXRpbmcgTm9kZSBAIiwgKGlu
dCltX2N1cnJlbnROb2RlLT5pbmRleCgpLCAiICgiLCBtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2Vt
YW50aWMuYnl0ZWNvZGVJbmRleCgpLm9mZnNldCgpLCAiKSBhdCBKSVQgb2Zmc2V0IDB4IiwgbV9q
aXQuY3VycmVudE9mZnNldCgpKTsKIAogICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVERkdF
eGNlcHRpb25IYW5kbGluZygpICYmIChtYXlFeGl0KG1faml0LmdyYXBoKCksIG1fY3VycmVudE5v
ZGUpICE9IERvZXNOb3RFeGl0IHx8IG1fY3VycmVudE5vZGUtPmlzVGVybWluYWwoKSkpCiAgICAg
ICAgICAgICBtX2ppdC5qaXRSZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24obV9qaXQudm0oKSk7CkBA
IC01OTgwLDcgKzU5ODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNb2Qo
Tm9kCiAgICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CiAKICAgICAgICAgdXNpbmcgT3Bl
cmF0aW9uVHlwZSA9IERfSklUT3BlcmF0aW9uX0REOwotICAgICAgICBjYWxsT3BlcmF0aW9uPE9w
ZXJhdGlvblR5cGU+KGpzTW9kLCByZXN1bHQuZnByKCksIG9wMUZQUiwgb3AyRlBSKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbjxPcGVyYXRpb25UeXBlPihvcGVyYXRpb25Nb2QsIHJlc3VsdC5mcHIo
KSwgb3AxRlBSLCBvcDJGUFIpOwogICAgICAgICAKICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3Vs
dC5mcHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAgICBHUFJSZWcgYWxsb2NhdGUoKQogICAg
IHsKICNpZiBFTkFCTEUoREZHX1JFR0lTVEVSX0FMTE9DQVRJT05fVkFMSURBVElPTikKLSAgICAg
ICAgbV9qaXQuYWRkUmVnaXN0ZXJBbGxvY2F0aW9uQXRPZmZzZXQobV9qaXQuZGVidWdPZmZzZXQo
KSk7CisgICAgICAgIG1faml0LmFkZFJlZ2lzdGVyQWxsb2NhdGlvbkF0T2Zmc2V0KG1faml0LmN1
cnJlbnRPZmZzZXQoKSk7CiAjZW5kaWYKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNwaWxsTWU7
CiAgICAgICAgIEdQUlJlZyBncHIgPSBtX2dwcnMuYWxsb2NhdGUoc3BpbGxNZSk7CkBAIC0yNDcs
NyArMjQ3LDcgQEAgcHVibGljOgogICAgIEdQUlJlZyBhbGxvY2F0ZShHUFJSZWcgc3BlY2lmaWMp
CiAgICAgewogI2lmIEVOQUJMRShERkdfUkVHSVNURVJfQUxMT0NBVElPTl9WQUxJREFUSU9OKQot
ICAgICAgICBtX2ppdC5hZGRSZWdpc3RlckFsbG9jYXRpb25BdE9mZnNldChtX2ppdC5kZWJ1Z09m
ZnNldCgpKTsKKyAgICAgICAgbV9qaXQuYWRkUmVnaXN0ZXJBbGxvY2F0aW9uQXRPZmZzZXQobV9q
aXQuY3VycmVudE9mZnNldCgpKTsKICNlbmRpZgogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Bp
bGxNZSA9IG1fZ3Bycy5hbGxvY2F0ZVNwZWNpZmljKHNwZWNpZmljKTsKICAgICAgICAgaWYgKHNw
aWxsTWUuaXNWYWxpZCgpKSB7CkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGljOgogICAgIEZQUlJl
ZyBmcHJBbGxvY2F0ZSgpCiAgICAgewogI2lmIEVOQUJMRShERkdfUkVHSVNURVJfQUxMT0NBVElP
Tl9WQUxJREFUSU9OKQotICAgICAgICBtX2ppdC5hZGRSZWdpc3RlckFsbG9jYXRpb25BdE9mZnNl
dChtX2ppdC5kZWJ1Z09mZnNldCgpKTsKKyAgICAgICAgbV9qaXQuYWRkUmVnaXN0ZXJBbGxvY2F0
aW9uQXRPZmZzZXQobV9qaXQuY3VycmVudE9mZnNldCgpKTsKICNlbmRpZgogICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgc3BpbGxNZTsKICAgICAgICAgRlBSUmVnIGZwciA9IG1fZnBycy5hbGxvY2F0
ZShzcGlsbE1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAJ
KHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IG9zCiAjZW5kaWYKICAgICB9CiAKLSAgICBqaXQuZmFySnVtcChN
YWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZ2bS5vc3JFeGl0SnVtcERlc3RpbmF0aW9u
KSwgT1NSRXhpdFB0clRhZyk7CisgICAgR1BSUmVnIHRlbXAgPSBqaXQuc2NyYXRjaFJlZ2lzdGVy
KCk7CisgICAgaml0LmxvYWRQdHIoJnZtLm9zckV4aXRKdW1wRGVzdGluYXRpb24sIHRlbXApOwor
ICAgIGppdC5mYXJKdW1wKHRlbXAsIE9TUkV4aXRQdHJUYWcpOwogCiAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0RGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0RGlzYXNzZW1ibGVy
LmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2Vt
Ymxlci9BUk02NERpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZVB0ciwgc2l6ZV90IHNpemUs
IGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICBBNjRET3Bjb2Rl
IGFybTY0T3Bjb2RlOwotCiAgICAgdWludDMyX3QqIGN1cnJlbnRQQyA9IGNvZGVQdHIudW50YWdn
ZWRFeGVjdXRhYmxlQWRkcmVzczx1aW50MzJfdCo+KCk7CiAgICAgc2l6ZV90IGJ5dGVDb3VudCA9
IHNpemU7CisgICAgQTY0RE9wY29kZSBhcm02NE9wY29kZShjdXJyZW50UEMsIHNpemUgLyBzaXpl
b2YodWludDMyX3QpKTsKIAogICAgIHdoaWxlIChieXRlQ291bnQpIHsKICAgICAgICAgY2hhciBw
Y1N0cmluZ1syMF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FS
TTY0VmVyaWZpZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNh
c3NlbWJsZXIvQVJNNjRWZXJpZmllci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9BUk02NFZlcmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVJNNjRWZXJpZmllci5o
IgorCisjaWYgRU5BQkxFKEFSTTY0X0RJU0FTU0VNQkxFUikKKworI2luY2x1ZGUgIkRpc2Fzc2Vt
Ymxlci5oIgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitz
dGF0aWMgYm9vbCB2ZXJib3NlID0gdHJ1ZTsKKwordm9pZCBKSVRDb2RlVmVyaWZpZXI6OmNoZWNr
SW5zdHJ1Y3Rpb25BdChBNjRET3Bjb2RlOjpBNjRJbnN0cnVjdGlvbiogYWRkcmVzcykKK3sKKyAg
ICBzaXplX3QgYmFkSW5zdHJ1Y3Rpb25Db3VudCA9IDA7CisKKyAgICBpZiAoIW1fZGlzYXNzZW1i
bGVyLmlzVmFsaWRJbnNuKGFkZHJlc3MsICphZGRyZXNzKSkgeworICAgICAgICAvLyBHaXZlIGVy
cm9yIG1lc3NhZ2UgYW5kIG9wdGlvbmFsbHkgcHJvdmlkZSBkaXNhc3NlbWJseS4KKyAgICAgICAg
KytiYWRJbnN0cnVjdGlvbkNvdW50OworCisgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAg
ICAgICBjaGFyIHBjU3RyaW5nWzIwXTsKKyAgICAgICAgICAgIHNucHJpbnRmKHBjU3RyaW5nLCBz
aXplb2YocGNTdHJpbmcpLCAiMHglbHgiLCByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGxvbmc+
KGFkZHJlc3MpKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJCQUQgSU5TVFJVQ1RJT04gYXQgJTE2
czogJXNcbiIsIHBjU3RyaW5nLCBtX2Rpc2Fzc2VtYmxlci5kaXNhc3NlbWJsZShhZGRyZXNzKSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodmVyYm9zZSkgeworICAgICAgICBpZiAoYmFk
SW5zdHJ1Y3Rpb25Db3VudCkKKyAgICAgICAgZGF0YUxvZygiISEhISAiLCBiYWRJbnN0cnVjdGlv
bkNvdW50LCAiIGJhZCBpbnN0cnVjdGlvbiIsIGJhZEluc3RydWN0aW9uQ291bnQgPT0gMSA/ICIi
IDogInMiLCAiXG4iKTsKKyAgICB9IGVsc2UKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWJhZElu
c3RydWN0aW9uQ291bnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVO
QUJMRShBUk02NF9ESVNBU1NFTUJMRVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjRWZXJpZmllci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUk02NF9ESVNBU1NFTUJM
RVIpCisKKyNpbmNsdWRlICJBNjRET3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOjpBUk02NERpc2Fzc2VtYmxlcjsKKworY2xhc3MgSklUQ29kZVZlcmlm
aWVyIHsKK3B1YmxpYzoKKyAgICBKSVRDb2RlVmVyaWZpZXIoQTY0RE9wY29kZTo6QTY0SW5zdHJ1
Y3Rpb24qIHN0YXJ0QWRkcmVzcywgc2l6ZV90IGNvdW50KQorICAgICAgICA6IG1fZGlzYXNzZW1i
bGVyKHN0YXJ0QWRkcmVzcywgY291bnQpCisgICAgeworICAgIH0KKworICAgIHZvaWQgY2hlY2tJ
bnN0cnVjdGlvbkF0KEE2NERPcGNvZGU6OkE2NEluc3RydWN0aW9uKiBhZGRyZXNzKTsKKworcHJp
dmF0ZToKKyAgICBBNjRET3Bjb2RlIG1fZGlzYXNzZW1ibGVyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoQVJNNjRfRElTQVNTRU1CTEVSKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNvZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvQVJNNjQvQTY0
RE9wY29kZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvQVJNNjQvQTY0RE9wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE2
ICsyNiwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKEFSTTY0X0RJU0FT
U0VNQkxFUikKLQogI2luY2x1ZGUgIkE2NERPcGNvZGUuaCIKIAorI2luY2x1ZGUgIkV4ZWN1dGFi
bGVBbGxvY2F0b3IuaCIKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSAiSklUVmFsaWRU
YXJnZXRMaXN0LmgiCisjZW5kaWYKKyNpbmNsdWRlICJKU0NDb25maWcuaCIKICNpbmNsdWRlIDxz
dGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEFSTTY0RGlzYXNzZW1ibGVyIHsKIAotQTY0RE9wY29kZTo6
T3Bjb2RlR3JvdXAqIEE2NERPcGNvZGU6Om9wY29kZVRhYmxlWzMyXTsKK2NvbnN0IGJvb2wgdmVy
Ym9zZVZhbGlkYXRpb24gPSB0cnVlOwogCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlOjpz
X2NvbmRpdGlvbk5hbWVzWzE2XSA9IHsKICAgICAiZXEiLCAibmUiLCAiaHMiLCAibG8iLCAibWki
LCAicGwiLCAidnMiLCAidmMiLApAQCAtNTQsMTE1ICs1OCwxMDEgQEAgY29uc3QgY2hhciBBNjRE
T3Bjb2RlOjpzX0ZQUmVnaXN0ZXJQcmVmaQogICAgICdiJywgJ2gnLCAncycsICdkJywgJ3EnCiB9
OwogCi1zdHJ1Y3QgT3Bjb2RlR3JvdXBJbml0aWFsaXplciB7Ci0gICAgdW5zaWduZWQgbV9vcGNv
ZGVHcm91cE51bWJlcjsKLSAgICB1aW50MzJfdCBtX21hc2s7Ci0gICAgdWludDMyX3QgbV9wYXR0
ZXJuOwotICAgIGNvbnN0IGNoYXIqICgqbV9mb3JtYXQpKEE2NERPcGNvZGUqKTsKLX07Ci0KLSNk
ZWZpbmUgT1BDT0RFX0dST1VQX0VOVFJZKGdyb3VwSW5kZXgsIGdyb3VwQ2xhc3MpIFwKLXsgZ3Jv
dXBJbmRleCwgZ3JvdXBDbGFzczo6bWFzaywgZ3JvdXBDbGFzczo6cGF0dGVybiwgZ3JvdXBDbGFz
czo6Zm9ybWF0IH0KLQotc3RhdGljIGNvbnN0IE9wY29kZUdyb3VwSW5pdGlhbGl6ZXIgb3Bjb2Rl
R3JvdXBMaXN0W10gPSB7Ci0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MDgsIEE2NERPcGNvZGVM
b2FkU3RvcmVSZWdpc3RlclBhaXIpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDA4LCBBNjRE
T3Bjb2RlTG9hZFN0b3JlRXhjbHVzaXZlKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgwOSwg
QTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyUGFpciksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZ
KDB4MGEsIEE2NERPcGNvZGVMb2dpY2FsU2hpZnRlZFJlZ2lzdGVyKSwKLSAgICBPUENPREVfR1JP
VVBfRU5UUlkoMHgwYiwgQTY0RE9wY29kZUFkZFN1YnRyYWN0RXh0ZW5kZWRSZWdpc3RlciksCi0g
ICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MGIsIEE2NERPcGNvZGVBZGRTdWJ0cmFjdFNoaWZ0ZWRS
ZWdpc3RlciksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTEsIEE2NERPcGNvZGVBZGRTdWJ0
cmFjdEltbWVkaWF0ZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTIsIEE2NERPcGNvZGVN
b3ZlV2lkZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTIsIEE2NERPcGNvZGVMb2dpY2Fs
SW1tZWRpYXRlKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxMywgQTY0RE9wY29kZUJpdGZp
ZWxkKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxMywgQTY0RE9wY29kZUV4dHJhY3QpLAot
ICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE0LCBBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5j
aEltbWVkaWF0ZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTQsIEE2NERPcGNvZGVDb25k
aXRpb25hbEJyYW5jaEltbWVkaWF0ZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTQsIEE2
NERPcGNvZGVDb21wYXJlQW5kQnJhbmNoSW1tZWRpYXRlKSwKLSAgICBPUENPREVfR1JPVVBfRU5U
UlkoMHgxNCwgQTY0T3Bjb2RlRXhjZXB0aW9uR2VuZXJhdGlvbiksCi0gICAgT1BDT0RFX0dST1VQ
X0VOVFJZKDB4MTUsIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlKSwKLSAg
ICBPUENPREVfR1JPVVBfRU5UUlkoMHgxNSwgQTY0RE9wY29kZUNvbmRpdGlvbmFsQnJhbmNoSW1t
ZWRpYXRlKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxNSwgQTY0RE9wY29kZUNvbXBhcmVB
bmRCcmFuY2hJbW1lZGlhdGUpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE1LCBBNjRET3Bj
b2RlSGludCksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTUsIEE2NERPcGNvZGVTeXN0ZW1T
eW5jKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxNSwgQTY0RE9wY29kZU1TUkltbWVkaWF0
ZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTUsIEE2NERPcGNvZGVNU1JPck1SU1JlZ2lz
dGVyKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxNiwgQTY0RE9wY29kZVVuY29uZGl0aW9u
YWxCcmFuY2hJbW1lZGlhdGUpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE2LCBBNjRET3Bj
b2RlVW5jb25kaXRpb25hbEJyYW5jaFJlZ2lzdGVyKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlko
MHgxNiwgQTY0RE9wY29kZVRlc3RBbmRCcmFuY2hJbW1lZGlhdGUpLAotICAgIE9QQ09ERV9HUk9V
UF9FTlRSWSgweDE3LCBBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSksCi0g
ICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTcsIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNo
UmVnaXN0ZXIpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE3LCBBNjRET3Bjb2RlVGVzdEFu
ZEJyYW5jaEltbWVkaWF0ZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MTgsIEE2NERPcGNv
ZGVMb2FkU3RvcmVJbW1lZGlhdGUpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDE4LCBBNjRE
T3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJPZmZzZXQpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgw
eDE4LCBBNjRET3Bjb2RlTG9hZFN0b3JlQXV0aGVudGljYXRlZCksCi0gICAgT1BDT0RFX0dST1VQ
X0VOVFJZKDB4MTksIEE2NERPcGNvZGVMb2FkU3RvcmVVbnNpZ25lZEltbWVkaWF0ZSksCi0gICAg
T1BDT0RFX0dST1VQX0VOVFJZKDB4MWEsIEE2NERPcGNvZGVDb25kaXRpb25hbFNlbGVjdCksCi0g
ICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MWEsIEE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzFTb3Vy
Y2UpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDFhLCBBNjRET3Bjb2RlRGF0YVByb2Nlc3Np
bmcyU291cmNlKSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxYiwgQTY0RE9wY29kZURhdGFQ
cm9jZXNzaW5nM1NvdXJjZSksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MWMsIEE2NERPcGNv
ZGVMb2FkU3RvcmVJbW1lZGlhdGUpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDFjLCBBNjRE
T3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJPZmZzZXQpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgw
eDFkLCBBNjRET3Bjb2RlTG9hZFN0b3JlVW5zaWduZWRJbW1lZGlhdGUpLAotICAgIE9QQ09ERV9H
Uk9VUF9FTlRSWSgweDFlLCBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbXBhcmUpLAotICAgIE9Q
Q09ERV9HUk9VUF9FTlRSWSgweDFlLCBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbmRpdGlvbmFs
U2VsZWN0KSwKLSAgICBPUENPREVfR1JPVVBfRU5UUlkoMHgxZSwgQTY0RE9wY29kZUZsb2F0aW5n
UG9pbnREYXRhUHJvY2Vzc2luZzJTb3VyY2UpLAotICAgIE9QQ09ERV9HUk9VUF9FTlRSWSgweDFl
LCBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZSksCi0gICAgT1BD
T0RFX0dST1VQX0VOVFJZKDB4MWUsIEE2NERPcGNvZGVGbG9hdGluZ0ZpeGVkUG9pbnRDb252ZXJz
aW9ucyksCi0gICAgT1BDT0RFX0dST1VQX0VOVFJZKDB4MWUsIEE2NERPcGNvZGVGbG9hdGluZ1Bv
aW50SW50ZWdlckNvbnZlcnNpb25zKSwKK2NvbnN0IEE2NERPcGNvZGU6Ok9wY29kZUdyb3VwIEE2
NERPcGNvZGU6OnNfb3Bjb2RlR3JvdXBbc19vcGNvZGVHcm91cENvdW50XSA9IHsKKyNkZWZpbmUg
QVJNNjRfT1BHUk9VUF9FTlRSWShncm91cENsYXNzLCBiaXRzMjRUbzI4Li4uKSBcCisgICAgeyBB
NjRET3Bjb2RlOjpPcGNvZGVHcm91cElEOjpncm91cENsYXNzLCB7IGJpdHMyNFRvMjggfSwgZ3Jv
dXBDbGFzczo6bWFzaywgZ3JvdXBDbGFzczo6cGF0dGVybiwgXAorICAgICAgICBncm91cENsYXNz
Ojpmb3JtYXQsIGdyb3VwQ2xhc3M6OmlzVmFsaWQgfSwKKyAgICAgICAgRk9SX0VBQ0hfQVJNNjRf
T1BHUk9VUChBUk02NF9PUEdST1VQX0VOVFJZKQorI3VuZGVmIEFSTTY0X09QR1JPVVBfRU5UUlkK
IH07CiAKIGJvb2wgQTY0RE9wY29kZTo6c19pbml0aWFsaXplZCA9IGZhbHNlOwogCitBNjRET3Bj
b2RlOjpPcGNvZGVHcm91cExpc3ROb2RlKiBBNjRET3Bjb2RlOjpzX29wY29kZVRhYmxlWzMyXTsK
Kwogdm9pZCBBNjRET3Bjb2RlOjppbml0KCkKIHsKICAgICBpZiAoc19pbml0aWFsaXplZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgT3Bjb2RlR3JvdXAqIGxhc3RHcm91cHNbMzJdOworICAgIE9w
Y29kZUdyb3VwTGlzdE5vZGUqIGxhc3RHcm91cHNbMzJdOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDMyOyBpKyspIHsKLSAgICAgICAgb3Bjb2RlVGFibGVbaV0gPSAwOwotICAgICAg
ICBsYXN0R3JvdXBzW2ldID0gMDsKKyAgICAgICAgc19vcGNvZGVUYWJsZVtpXSA9IG51bGxwdHI7
CisgICAgICAgIGxhc3RHcm91cHNbaV0gPSBudWxscHRyOwogICAgIH0KIAotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplb2Yob3Bjb2RlR3JvdXBMaXN0KSAvIHNpemVvZihzdHJ1Y3Qg
T3Bjb2RlR3JvdXBJbml0aWFsaXplcik7IGkrKykgewotICAgICAgICBPcGNvZGVHcm91cCogbmV3
T3Bjb2RlR3JvdXAgPSBuZXcgT3Bjb2RlR3JvdXAob3Bjb2RlR3JvdXBMaXN0W2ldLm1fbWFzaywg
b3Bjb2RlR3JvdXBMaXN0W2ldLm1fcGF0dGVybiwgb3Bjb2RlR3JvdXBMaXN0W2ldLm1fZm9ybWF0
KTsKLSAgICAgICAgdWludDMyX3Qgb3Bjb2RlR3JvdXBOdW1iZXIgPSBvcGNvZGVHcm91cExpc3Rb
aV0ubV9vcGNvZGVHcm91cE51bWJlcjsKLQotICAgICAgICBpZiAoIW9wY29kZVRhYmxlW29wY29k
ZUdyb3VwTnVtYmVyXSkKLSAgICAgICAgICAgIG9wY29kZVRhYmxlW29wY29kZUdyb3VwTnVtYmVy
XSA9IG5ld09wY29kZUdyb3VwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsYXN0R3JvdXBz
W29wY29kZUdyb3VwTnVtYmVyXS0+c2V0TmV4dChuZXdPcGNvZGVHcm91cCk7Ci0gICAgICAgIGxh
c3RHcm91cHNbb3Bjb2RlR3JvdXBOdW1iZXJdID0gbmV3T3Bjb2RlR3JvdXA7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNfb3Bjb2RlR3JvdXBDb3VudDsgaSsrKSB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgZ3JvdXBOdW1iZXJJbmRleCA9IDA7IGdyb3VwTnVtYmVySW5kZXggPCBzX21h
eE9wY29kZUdyb3VwTnVtYmVycyAmJiBzX29wY29kZUdyb3VwW2ldLm1fb3Bjb2RlR3JvdXBOdW1i
ZXJzW2dyb3VwTnVtYmVySW5kZXhdOyArK2dyb3VwTnVtYmVySW5kZXgpIHsKKyAgICAgICAgICAg
IE9wY29kZUdyb3VwTGlzdE5vZGUqIG5ld09wY29kZUdyb3VwTGlzdE5vZGUgPSBuZXcgT3Bjb2Rl
R3JvdXBMaXN0Tm9kZShzX29wY29kZUdyb3VwW2ldLm1fbWFzaywgc19vcGNvZGVHcm91cFtpXS5t
X3BhdHRlcm4sIHNfb3Bjb2RlR3JvdXBbaV0pOworICAgICAgICAgICAgdWludDMyX3Qgb3Bjb2Rl
R3JvdXBOdW1iZXIgPSBzX29wY29kZUdyb3VwW2ldLm1fb3Bjb2RlR3JvdXBOdW1iZXJzW2dyb3Vw
TnVtYmVySW5kZXhdOworCisgICAgICAgICAgICBpZiAoIXNfb3Bjb2RlVGFibGVbb3Bjb2RlR3Jv
dXBOdW1iZXJdKQorICAgICAgICAgICAgICAgIHNfb3Bjb2RlVGFibGVbb3Bjb2RlR3JvdXBOdW1i
ZXJdID0gbmV3T3Bjb2RlR3JvdXBMaXN0Tm9kZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBsYXN0R3JvdXBzW29wY29kZUdyb3VwTnVtYmVyXS0+c2V0TmV4dChuZXdPcGNvZGVH
cm91cExpc3ROb2RlKTsKKyAgICAgICAgICAgIGxhc3RHcm91cHNbb3Bjb2RlR3JvdXBOdW1iZXJd
ID0gbmV3T3Bjb2RlR3JvdXBMaXN0Tm9kZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHNfaW5p
dGlhbGl6ZWQgPSB0cnVlOwogfQogCi12b2lkIEE2NERPcGNvZGU6OnNldFBDQW5kT3Bjb2RlKHVp
bnQzMl90KiBuZXdQQywgdWludDMyX3QgbmV3T3Bjb2RlKQordm9pZCBBNjRET3Bjb2RlOjpzZXRQ
Q0FuZE9wY29kZShBNjRJbnN0cnVjdGlvbiogbmV3UEMsIEE2NEluc3RydWN0aW9uIG5ld09wY29k
ZSkKIHsKICAgICBtX2N1cnJlbnRQQyA9IG5ld1BDOwogICAgIG1fb3Bjb2RlID0gbmV3T3Bjb2Rl
OwotICAgIG1fYnVmZmVyT2Zmc2V0ID0gMDsKLSAgICBtX2Zvcm1hdEJ1ZmZlclswXSA9ICdcMCc7
CiB9CiAKLWNvbnN0IGNoYXIqIEE2NERPcGNvZGU6OmRpc2Fzc2VtYmxlKHVpbnQzMl90KiBjdXJy
ZW50UEMpCitib29sIEE2NERPcGNvZGU6OmlzVmFsaWRKSVRUYXJnZXQodm9pZCogYWRkcikKIHsK
LSAgICBzZXRQQ0FuZE9wY29kZShjdXJyZW50UEMsICpjdXJyZW50UEMpOworICAgIC8vIEEgYnJh
bmNoIHRhcmdldCBhZGRyZXNzIG11c3QgYmUgaW4gdGhlIEpJVCByZWdpb24gYW5kIHBvaW50IHRv
IGEgcGFyYWdyYXBoIGFkZHJlc3MsCisgICAgLy8gaXQgY2FuIHBvaW50IHRvIHRoZSBjdXJyZW50
IGluc3RydWN0aW9uIGlmIGl0IGhhc24ndCBiZWVuIGxpbmtlZCB0byBpdHMgdGFyZ2V0LCBvciB0
byB0aGUgbmV4dCBpbnN0cnVjdGlvbgorICAgIC8vIG1ha2luZyBpdCBhIE5PUC4KKyAgICByZXR1
cm4gaXNKSVRQQyhhZGRyKSAmJiAoIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYWRkcikg
JiAweGYpIHx8IGFkZHIgPT0gY3VycmVudFBDKCkgfHwgYWRkciA9PSAoY3VycmVudFBDKCkgKyAx
KSk7Cit9CisKK0E2NERPcGNvZGU6Ok9wY29kZUdyb3VwSUQgQTY0RE9wY29kZTo6b3Bjb2RlR3Jv
dXBJRChBNjRJbnN0cnVjdGlvbiBpbnNuKQoreworICAgIGlmIChjb25zdCBPcGNvZGVHcm91cCog
b3BHcm91cCA9IG9wY29kZUdyb3VwKGluc24pKQorICAgICAgICByZXR1cm4gb3BHcm91cC0+Z3Jv
dXBJRCgpOwogCi0gICAgT3Bjb2RlR3JvdXAqIG9wR3JvdXAgPSBvcGNvZGVUYWJsZVtvcGNvZGVH
cm91cE51bWJlcihtX29wY29kZSldOworICAgIHJldHVybiBPcGNvZGVHcm91cElEOjpJbnZhbGlk
T3Bjb2RlR3JvdXA7Cit9CiAKLSAgICB3aGlsZSAob3BHcm91cCkgewotICAgICAgICBpZiAob3BH
cm91cC0+bWF0Y2hlcyhtX29wY29kZSkpCi0gICAgICAgICAgICByZXR1cm4gb3BHcm91cC0+Zm9y
bWF0KHRoaXMpOwotICAgICAgICBvcEdyb3VwID0gb3BHcm91cC0+bmV4dCgpOwotICAgIH0KK0E2
NERPcGNvZGU6Ok9wY29kZUdyb3VwSUQgQTY0RE9wY29kZTo6b3Bjb2RlR3JvdXBJREZvclByaW9y
SW5zbih1bnNpZ25lZCBwcmlvck9mZnNldCkKK3sKKyAgICBBNjRJbnN0cnVjdGlvbiogaW5zbkFk
ZHJlc3MgPSBtX2N1cnJlbnRQQyAtIHByaW9yT2Zmc2V0OworICAgIGlmIChpbnNuQWRkcmVzcyA8
IG1fc3RhcnRBZGRyZXNzKQorICAgICAgICByZXR1cm4gT3Bjb2RlR3JvdXBJRDo6SW52YWxpZE9w
Y29kZUdyb3VwOworCisgICAgaWYgKGNvbnN0IE9wY29kZUdyb3VwKiBvcEdyb3VwID0gb3Bjb2Rl
R3JvdXAoKmluc25BZGRyZXNzKSkKKyAgICAgICAgcmV0dXJuIG9wR3JvdXAtPmdyb3VwSUQoKTsK
KworICAgIHJldHVybiBPcGNvZGVHcm91cElEOjpJbnZhbGlkT3Bjb2RlR3JvdXA7Cit9CisKK2Nv
bnN0IGNoYXIqIEE2NERPcGNvZGU6OmRpc2Fzc2VtYmxlKEE2NEluc3RydWN0aW9uKiBjdXJyZW50
UEMpCit7CisgICAgc2V0UENBbmRPcGNvZGUoY3VycmVudFBDLCAqY3VycmVudFBDKTsKKyAgICBy
ZXNldEZvcm1hdCgpOworCisgICAgaWYgKGNvbnN0IE9wY29kZUdyb3VwKiBvcEdyb3VwID0gb3Bj
b2RlR3JvdXAobV9vcGNvZGUpKQorICAgICAgICByZXR1cm4gb3BHcm91cC0+Zm9ybWF0KHRoaXMp
OwogCiAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOwogfQogCitib29sIEE2NERPcGNv
ZGU6OmlzVmFsaWRJbnNuKEE2NEluc3RydWN0aW9uKiBwYywgQTY0SW5zdHJ1Y3Rpb24gaW5zbikK
K3sKKyAgICBzZXRQQ0FuZE9wY29kZShwYywgaW5zbik7CisKKyAgICBpZiAoY29uc3QgT3Bjb2Rl
R3JvdXAqIG9wR3JvdXAgPSBvcGNvZGVHcm91cChpbnNuKSkKKyAgICAgICAgcmV0dXJuIG9wR3Jv
dXAtPmlzVmFsaWQodGhpcyk7CisKKyAgICByZXR1cm4gQTY0RE9wY29kZTo6aXNWYWxpZCgpOwor
fQorCiB2b2lkIEE2NERPcGNvZGU6OmJ1ZmZlclByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikKIHsKICAgICBpZiAobV9idWZmZXJPZmZzZXQgPj0gYnVmZmVyU2l6ZSkKQEAgLTIyOSw2ICsy
MTksMTEgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYQogICAgIHJl
dHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlQWRkU3VidHJhY3RJbW1l
ZGlhdGU6OmlzVmFsaWQoKQoreworICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBB
NjRET3Bjb2RlQWRkU3VidHJhY3RFeHRlbmRlZFJlZ2lzdGVyOjpmb3JtYXQoKQogewogICAgIGlm
IChpbW1lZGlhdGUzKCkgPiA0KQpAQCAtMjU3LDYgKzI1MiwxMSBAQCBjb25zdCBjaGFyKiBBNjRE
T3Bjb2RlQWRkU3VidHJhY3RFeHRlbmRlCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQog
Citib29sIEE2NERPcGNvZGVBZGRTdWJ0cmFjdEV4dGVuZGVkUmVnaXN0ZXI6OmlzVmFsaWQoKQor
eworICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlQWRkU3VidHJh
Y3RTaGlmdGVkUmVnaXN0ZXI6OmZvcm1hdCgpCiB7CiAgICAgaWYgKCFpczY0Qml0KCkgJiYgaW1t
ZWRpYXRlNigpICYgMHgyMCkKQEAgLTI4OSw2ICsyODksMTcgQEAgY29uc3QgY2hhciogQTY0RE9w
Y29kZUFkZFN1YnRyYWN0U2hpZnRlZAogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAor
Ym9vbCBBNjRET3Bjb2RlQWRkU3VidHJhY3RTaGlmdGVkUmVnaXN0ZXI6OmlzVmFsaWQoKQorewor
ICAgIGlmICghaXM2NEJpdCgpICYmIGltbWVkaWF0ZTYoKSAmIDB4MjApCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChzaGlmdCgpID09IDB4MykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVC
aXRmaWVsZDo6c19vcE5hbWVzWzNdID0geyAic2JmbSIsICJiZm0iLCAidWJmbSIgfTsKIGNvbnN0
IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVCaXRmaWVsZDo6c19leHRlbmRQc2V1ZG9PcE5hbWVzWzNd
WzNdID0gewogICAgIHsgInN4dGIiLCAic3h0aCIsICJzeHR3IiB9LCB7IDAsIDAsIDB9ICwgeyAi
dXh0YiIsICJ1eHRoIiwgInV4dHciIH0gfTsKQEAgLTM5Niw2ICs0MDcsMjAgQEAgY29uc3QgY2hh
ciogQTY0RE9wY29kZUJpdGZpZWxkOjpmb3JtYXQoKQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZl
cjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlQml0ZmllbGQ6OmlzVmFsaWQoKQoreworICAgIGlmIChv
cGMoKSA9PSAweDMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpczY0Qml0KCkg
IT0gbkJpdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzNjRCaXQoKSAm
JiAoKGltbWVkaWF0ZVIoKSAmIDB4MjApIHx8IChpbW1lZGlhdGVTKCkgJiAweDIwKSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBB
NjRET3Bjb2RlQ29tcGFyZUFuZEJyYW5jaEltbWVkaWF0ZTo6Zm9ybWF0KCkKIHsKICAgICBhcHBl
bmRJbnN0cnVjdGlvbk5hbWUob3BCaXQoKSA/ICJjYm56IiA6ICJjYnoiKTsKQEAgLTQwNSwxMyAr
NDMwLDM3IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVDb21wYXJlQW5kQnJhbmNoSW0KICAgICBy
ZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZUNvbXBhcmVBbmRCcmFu
Y2hJbW1lZGlhdGU6OmlzVmFsaWQoKQoreworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAo
IWlzVmFsaWRKSVRUYXJnZXQocGNSZWxhdGl2ZUFkZHJlc3Moc3RhdGljX2Nhc3Q8aW50MzJfdD4o
aW1tZWRpYXRlMTkoKSkpKSkgeworICAgICAgICBpZiAodmVyYm9zZVZhbGlkYXRpb24pCisgICAg
ICAgICAgICBkYXRhTG9nRigiICAgIEZvdW5kICVzIHRhcmdldGluZyBpbmNvcnJlY3QgSklUIGFk
ZHJlc3MgKCVwKVxuIiwgb3BCaXQoKSA/ICJjYm56IiA6ICJjYnoiLCBwY1JlbGF0aXZlQWRkcmVz
cyhzdGF0aWNfY2FzdDxpbnQzMl90PihpbW1lZGlhdGUxOSgpKSkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNvbnN0IGNoYXIq
IEE2NERPcGNvZGVDb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZTo6Zm9ybWF0KCkKIHsKLSAgICBi
dWZmZXJQcmludGYoIiAgIGIuJS01LjVzIiwgY29uZGl0aW9uTmFtZShjb25kaXRpb24oKSkpOwor
ICAgIGJ1ZmZlclByaW50ZigiICAgYi4lLTYuNnMiLCBjb25kaXRpb25OYW1lKGNvbmRpdGlvbigp
KSk7CiAgICAgYXBwZW5kUENSZWxhdGl2ZU9mZnNldChtX2N1cnJlbnRQQywgc3RhdGljX2Nhc3Q8
aW50MzJfdD4oaW1tZWRpYXRlMTkoKSkpOwogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0K
IAorYm9vbCBBNjRET3Bjb2RlQ29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGU6OmlzVmFsaWQoKQor
eworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoIWlzVmFsaWRKSVRUYXJnZXQocGNSZWxh
dGl2ZUFkZHJlc3Moc3RhdGljX2Nhc3Q8aW50MzJfdD4oaW1tZWRpYXRlMTkoKSkpKSkgeworICAg
ICAgICBpZiAodmVyYm9zZVZhbGlkYXRpb24pCisgICAgICAgICAgICBkYXRhTG9nRigiICAgIEZv
dW5kIGIuJXMgdGFyZ2V0aW5nIGluY29ycmVjdCBKSVQgYWRkcmVzcyAoJXApXG4iLCBjb25kaXRp
b25OYW1lKGNvbmRpdGlvbigpKSwgcGNSZWxhdGl2ZUFkZHJlc3Moc3RhdGljX2Nhc3Q8aW50MzJf
dD4oaW1tZWRpYXRlMTkoKSkpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRp
ZgorICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlQ29u
ZGl0aW9uYWxTZWxlY3Q6OnNfb3BOYW1lc1s0XSA9IHsKICAgICAiY3NlbCIsICJjc2luYyIsICJj
c2ludiIsICJjc25lZyIKIH07CkBAIC00NTMsNiArNTAyLDE3IEBAIGNvbnN0IGNoYXIqIEE2NERP
cGNvZGVDb25kaXRpb25hbFNlbGVjdDoKIAogfQogCitib29sIEE2NERPcGNvZGVDb25kaXRpb25h
bFNlbGVjdDo6aXNWYWxpZCgpCit7CisgICAgaWYgKHNCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKG9wMigpICYgMHgyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZURhdGFQcm9j
ZXNzaW5nMVNvdXJjZTo6c19vcE5hbWVzWzhdID0gewogICAgICJyYml0IiwgInJldjE2IiwgInJl
djMyIiwgInJldiIsICJjbHoiLCAiY2xzIiwgMCwgMAogfTsKQEAgLTQ2OCwxMSArNTI4LDExIEBA
IGNvbnN0IGNoYXIqIEE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzFTb3UKICAgICBpZiAoc0JpdCgp
KQogICAgICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CiAKLSAgICBpZiAob3BDb2Rl
MigpID09IDEgJiYgaXM2NEJpdCgpICYmIG9wQ29kZSgpIDw9IDB4MTAwMSkgewotICAgICAgICBp
ZiAob3BDb2RlKCkgPD0gMHgwMDExMSB8fCBydCgpID09IDB4MTExMTEpIHsKKyAgICBpZiAob3BD
b2RlMigpID09IDEgJiYgaXM2NEJpdCgpICYmIG9wQ29kZSgpIDw9IDE3KSB7CisgICAgICAgIGlm
IChvcENvZGUoKSA8PSA3IHx8IHJuKCkgPT0gMHgxZikgewogICAgICAgICAgICAgYXBwZW5kSW5z
dHJ1Y3Rpb25OYW1lKHNfcGFjQXV0T3BOYW1lc1tvcENvZGUoKV0pOwogICAgICAgICAgICAgYXBw
ZW5kWlJPclJlZ2lzdGVyTmFtZShyZCgpLCBpczY0Qml0KCkpOwotICAgICAgICAgICAgaWYgKG9w
Q29kZSgpIDw9IDB4MDAxMTEpIHsKKyAgICAgICAgICAgIGlmIChvcENvZGUoKSA8PSA3KSB7CiAg
ICAgICAgICAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgICAgICAgICAgICAgYXBwZW5k
WlJPclJlZ2lzdGVyTmFtZShybigpLCBpczY0Qml0KCkpOwogICAgICAgICAgICAgfQpAQCAtNDg0
LDE2ICs1NDQsMTUgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZURhdGFQcm9jZXNzaW5nMVNvdQog
ICAgIGlmIChvcENvZGUyKCkpCiAgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsK
IAotICAgIGlmIChvcENvZGUoKSAmIDB4MzgpCisgICAgaWYgKG9wQ29kZSgpID4gMHg1KQogICAg
ICAgICByZXR1cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CiAKLSAgICBpZiAoKG9wQ29kZSgpICYg
MHgzZSkgPT0gMHg2KQorICAgIGlmICghaXM2NEJpdCgpICYmIG9wQ29kZSgpID09IDB4MykKICAg
ICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOwogCiAgICAgaWYgKGlzNjRCaXQoKSAm
JiBvcENvZGUoKSA9PSAweDMpCi0gICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsK
LQotICAgIGlmICghaXM2NEJpdCgpICYmIG9wQ29kZSgpID09IDB4MikKKyAgICAgICAgYXBwZW5k
SW5zdHJ1Y3Rpb25OYW1lKCJyZXY2NCIpOworICAgIGVsc2UgaWYgKCFpczY0Qml0KCkgJiYgb3BD
b2RlKCkgPT0gMHgyKQogICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoInJldiIpOwogICAg
IGVsc2UKICAgICAgICAgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lKG9wTmFtZSgpKTsKQEAgLTUwNCw2
ICs1NjMsMzIgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZURhdGFQcm9jZXNzaW5nMVNvdQogICAg
IHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlRGF0YVByb2Nlc3Np
bmcxU291cmNlOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAoc0JpdCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAob3BDb2RlMigpID09IDEgJiYgaXM2NEJpdCgpICYmIG9wQ29kZSgp
IDw9IDE3KSB7CisgICAgICAgIGlmIChvcENvZGUoKSA9PSAzIHx8IG9wQ29kZSgpID09IDcgfHwg
KG9wQ29kZSgpID09IDE3ICYmIHJuKCkgPT0gMHgxZikpIHsKKyAgICAgICAgICAgIC8vIFdlIG9u
bHkgYWxsb3cgdGhlIGRhdGEgc2lnbmluZyBpbnN0cnVjdGlvbnMgcGFjZGIsIGF1dGRiICYgeHBh
Y2QKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG9wQ29kZTIoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKG9wQ29kZSgpID4gMHg1KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIWlzNjRCaXQoKSAmJiBvcENvZGUoKSA9PSAweDMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBjb25zdCBB
NjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcyU291cmNlOjpzX29wTmFtZXNbMTZdID0gewogICAgIC8v
IFdlIHVzZSB0aGUgcHNldWRvLW9wIG5hbWVzIGZvciB0aGUgc2hpZnQvcm90YXRlIGluc3RydWN0
aW9ucwogICAgIDAsIDAsICJ1ZGl2IiwgInNkaXYiLCAwLCAwLCAwLCAwLApAQCAtNTM4LDYgKzYy
MywyNyBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcyU291CiAgICAgcmV0
dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERPcGNvZGVEYXRhUHJvY2Vzc2luZzJT
b3VyY2U6OmlzVmFsaWQoKQoreworICAgIGlmIChzQml0KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghKG9wQ29kZSgpICYgMHgzZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChvcENvZGUoKSAmIDB4MzApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICgob3BDb2RlKCkgJiAweDNjKSA9PSAweDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGNvbnN0IGNoYXIqIG9wY29kZU5hbWUgPSBvcE5hbWUoKTsKKyAgICBpZiAoIW9wY29kZU5h
bWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25z
dCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmczU291cmNlOjpzX29wTmFtZXNb
MTZdID0gewogICAgICJtYWRkIiwgIm1zdWIiLCAic21hZGRsIiwgInNtc3VibCIsICJzbXVsaCIs
IDAsIDAsIDAsCiAgICAgMCwgMCwgInVtYWRkbCIsICJ1bXN1YmwiLCAidW11bGgiLCAwLCAwLCAw
CkBAIC01ODEsNiArNjg3LDI2IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVEYXRhUHJvY2Vzc2lu
ZzNTb3UKICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZURh
dGFQcm9jZXNzaW5nM1NvdXJjZTo6aXNWYWxpZCgpCit7CisgICAgaWYgKG9wNTQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG9wTnVtKCkgPiAxMikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFpczY0Qml0KCkgJiYgb3BOdW0oKSA+IDEpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghb3BOYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICgob3BOdW0oKSAmIDB4NCkgJiYgKHJhKCkgIT0gMzEpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY29uc3QgY2hhciogQTY0T3Bjb2Rl
RXhjZXB0aW9uR2VuZXJhdGlvbjo6Zm9ybWF0KCkKIHsKICAgICBjb25zdCBjaGFyKiBvcG5hbWUg
PSAwOwpAQCAtNjMxLDYgKzc1NywxNCBAQCBjb25zdCBjaGFyKiBBNjRPcGNvZGVFeGNlcHRpb25H
ZW5lcmF0aW9uCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NE9wY29k
ZUV4Y2VwdGlvbkdlbmVyYXRpb246OmlzVmFsaWQoKQoreworICAgIC8vIEFsbG93IGJyayAjMCAu
LiAjMTUgYW5kIG5vdGhpbmcgZWxzZS4KKyAgICBpZiAob3BjKCkgPT0gMHgxICYmICFvcDIoKSAm
JiAhbGwoKSAmJiAhaW1tZWRpYXRlMTYoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRXh0cmFjdDo6Zm9ybWF0KCkK
IHsKICAgICBpZiAob3AyMSgpIHx8IG8wQml0KCkpCkBAIC02NTksNiArNzkzLDIwIEBAIGNvbnN0
IGNoYXIqIEE2NERPcGNvZGVFeHRyYWN0Ojpmb3JtYXQoKQogICAgIHJldHVybiBtX2Zvcm1hdEJ1
ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlRXh0cmFjdDo6aXNWYWxpZCgpCit7CisgICAgaWYg
KG9wMjEoKSB8fCBvMEJpdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaXM2
NEJpdCgpICE9IG5CaXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFpczY0
Qml0KCkgJiYgKGltbWVkaWF0ZVMoKSAmIDB4MjApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY29uc3QgY2hhciogQTY0RE9wY29kZUZsb2F0aW5nUG9p
bnRDb21wYXJlOjpmb3JtYXQoKQogewogICAgIGlmIChtQml0KCkpCkBAIC02ODgsNiArODM2LDI2
IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50Q29tcGEKICAgICByZXR1cm4g
bV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRDb21wYXJl
Ojppc1ZhbGlkKCkKK3sKKyAgICBpZiAobUJpdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoc0JpdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodHlwZSgp
ICYgMHgyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAob3AoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKG9wQ29kZTIoKSAmIDB4NykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVG
bG9hdGluZ1BvaW50Q29uZGl0aW9uYWxTZWxlY3Q6OmZvcm1hdCgpCiB7CiAgICAgaWYgKG1CaXQo
KSkKQEAgLTcxMiw2ICs4ODAsMjAgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUZsb2F0aW5nUG9p
bnRDb25kaQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2Rl
RmxvYXRpbmdQb2ludENvbmRpdGlvbmFsU2VsZWN0Ojppc1ZhbGlkKCkKK3sKKyAgICBpZiAobUJp
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKHNCaXQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICh0eXBlKCkgJiAweDIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBjb25zdCBB
NjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMVNvdXJjZTo6c19vcE5hbWVzWzE2
XSA9IHsKICAgICAiZm1vdiIsICJmYWJzIiwgImZuZWciLCAiZnNxcnQiLCAiZmN2dCIsICJmY3Z0
IiwgMCwgImZjdnQiLAogICAgICJmcmludG4iLCAiZnJpbnRwIiwgImZyaW50bSIsICJmcmludHoi
LCAiZnJpbnRhIiwgMCwgImZyaW50eCIsICJmcmludGkiCkBAIC03NjIsNiArOTQ0LDM3IEBAIGNv
bnN0IGNoYXIqIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50RGF0YVAKICAgICByZXR1cm4gbV9mb3Jt
YXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2lu
ZzFTb3VyY2U6OmlzVmFsaWQoKQoreworICAgIGlmIChtQml0KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChzQml0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChvcE51bSgpID4gMTYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAodHlw
ZSgpKSB7CisgICAgY2FzZSAwOgorICAgICAgICBpZiAoKG9wTnVtKCkgPT0gMHg0KSB8fCAob3BO
dW0oKSA9PSAweDYpIHx8IChvcE51bSgpID09IDB4ZCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgaWYgKChvcE51bSgpID09
IDB4NSkgfHwgKG9wTnVtKCkgPT0gMHg2KSB8fCAob3BOdW0oKSA9PSAweGQpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBjYXNlIDM6CisgICAgICAgIGlmICgob3BOdW0oKSA8IDB4NCkgfHwg
KG9wTnVtKCkgPiAweDUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY29uc3QgY2hhciogY29uc3QgQTY0
RE9wY29kZUZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2luZzJTb3VyY2U6OnNfb3BOYW1lc1sxNl0g
PSB7CiAgICAgImZtdWwiLCAiZmRpdiIsICJmYWRkIiwgImZzdWIiLCAiZm1heCIsICJmbWluIiwg
ImZtYXhubSIsICJmbWlubm0iLCAiZm5tdWwiCiB9OwpAQCAtNzkxLDYgKzEwMDQsMjMgQEAgY29u
c3QgY2hhciogQTY0RE9wY29kZUZsb2F0aW5nUG9pbnREYXRhUAogICAgIHJldHVybiBtX2Zvcm1h
dEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5n
MlNvdXJjZTo6aXNWYWxpZCgpCit7CisgICAgaWYgKG1CaXQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKHNCaXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHR5cGUoKSAmIDB4MikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG9wTnVtKCkg
PiA4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY29u
c3QgY2hhciogY29uc3QgQTY0RE9wY29kZUZsb2F0aW5nRml4ZWRQb2ludENvbnZlcnNpb25zOjpz
X29wTmFtZXNbNF0gPSB7CiAgICAgImZjdnR6cyIsICJmY3Z0enUiLCAic2N2dGYiLCAidWN2dGYi
CiB9OwpAQCAtODQwLDYgKzEwNzAsMzUgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUZsb2F0aW5n
Rml4ZWRQb2ludAogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bj
b2RlRmxvYXRpbmdGaXhlZFBvaW50Q29udmVyc2lvbnM6OmlzVmFsaWQoKQoreworICAgIGlmIChz
Qml0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh0eXBlKCkgJiAweDIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChvcGNvZGUoKSAmIDB4NCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKCEocm1vZGUoKSAmIDB4MSkgJiYgIShvcGNvZGUoKSAm
IDB4NikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgocm1vZGUoKSAmIDB4MSkg
JiYgKG9wY29kZSgpICYgMHg2KSA9PSAweDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghKHJtb2RlKCkgJiAweDIpICYmICEob3Bjb2RlKCkgJiAweDYpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoKHJtb2RlKCkgJiAweDIpICYmIChvcGNvZGUoKSAmIDB4Nikg
PT0gMHgyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzNjRCaXQoKSAmJiBz
Y2FsZSgpID49IDMyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29u
dmVyc2lvbnM6OnNfb3BOYW1lc1szMl0gPSB7CiAgICAgImZjdnRucyIsICJmY3Z0bnUiLCAic2N2
dGYiLCAidWN2dGYiLCAiZmN2dGFzIiwgImZjdnRhdSIsICJmbW92IiwgImZtb3YiLAogICAgICJm
Y3Z0cHMiLCAiZmN2dHB1IiwgMCwgMCwgMCwgMCwgImZtb3YiLCAiZm1vdiIsCkBAIC05MDgsNiAr
MTE2NywzNSBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlRmxvYXRpbmdQb2ludEludGVnCiAgICAg
cmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50
SW50ZWdlckNvbnZlcnNpb25zOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAoc0JpdCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodHlwZSgpID09IDB4MykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCgocm1vZGUoKSAmIDB4MSkgfHwgKHJtb2RlKCkgJiAweDIpKSAm
JiAoKChvcGNvZGUoKSAmIDB4NikgPT0gMHgyKSB8fCAoKG9wY29kZSgpICYgMHg2KSA9PSAweDQp
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCh0eXBlKCkgPT0gMHgyKSAmJiAo
IShvcGNvZGUoKSAmIDB4NCkgfHwgKChvcGNvZGUoKSAmIDB4NikgPT0gMHg0KSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghdHlwZSgpICYmIChybW9kZSgpICYgMHgxKSAmJiAo
KG9wY29kZSgpICYgMHg2KSA9PSAweDYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoaXM2NEJpdCgpICYmIHR5cGUoKSA9PSAweDIgJiYgKChvcE51bSgpICYgMHhlKSA9PSAweDYp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW9wTmFtZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKChvcE51bSgpICYgMHgxZSkgPT0gMHhlKSAmJiAoIWlz
NjRCaXQoKSB8fCAodHlwZSgpICE9IDB4MikpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogY29uc3QgY2hhciogQTY0RE9wY29kZU1TUkltbWVkaWF0ZTo6
Zm9ybWF0KCkKIHsKICAgICBjb25zdCBjaGFyKiBwc3RhdGVGaWVsZCA9IG51bGxwdHI7CkBAIC05
MzUsNiArMTIyMywxMSBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlTVNSSW1tZWRpYXRlOjpmb3Jt
CiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERPcGNvZGVNU1JJbW1l
ZGlhdGU6OmlzVmFsaWQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogY29uc3QgY2hhciog
QTY0RE9wY29kZU1TUk9yTVJTUmVnaXN0ZXI6OmZvcm1hdCgpCiB7CiAgICAgYXBwZW5kSW5zdHJ1
Y3Rpb25OYW1lKG9wTmFtZSgpKTsKQEAgLTk4NCw2ICsxMjc3LDM1IEBAIGNvbnN0IGNoYXIqIEE2
NERPcGNvZGVNU1JPck1SU1JlZ2lzdGVyOjoKICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiB9
CiAKK2Jvb2wgQTY0RE9wY29kZU1TUk9yTVJTUmVnaXN0ZXI6OmlzVmFsaWQoKQoreworICAgIHN3
aXRjaCAoc3lzdGVtUmVnaXN0ZXIoKSkgeworICAgIGNhc2UgMGIxMTAxMTAwMDAwMDAwMDAxOgor
ICAgICAgICAvLyBjdHJfZWwwCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgMGIxMTAx
MTAxMDAwMDEwMDAwOgorICAgICAgICAvLyBuemN2CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgMGIxMTAxMTAxMDAwMDEwMDAxOgorICAgICAgICAvLyBkYWlmCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBjYXNlIDBiMTEwMTEwMTAwMDEwMDAwMDoKKyAgICAgICAgLy8gZnBjcgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIDBiMTEwMTEwMTAwMDEwMDAwMToKKyAgICAg
ICAgLy8gZnBzcgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIDBiMTEwMTExMTAxMDAw
MDAxMDoKKyAgICAgICAgLy8gdHBpZHJfZWwwCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNh
c2UgMGIxMTAxMTExMDEwMDAwMDExOgorICAgICAgICAvLyB0cGlkcnIwX2VsMCAocmVhZCBvbmx5
KQorICAgICAgICByZXR1cm4gbEJpdCgpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KwogY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZUhpbnQ6OnNfb3BOYW1lc1szMl0gPSB7CiAg
ICAgIm5vcCIsICJ5aWVsZCIsICJ3ZmUiLCAid2ZpIiwgInNldiIsICJzZXZsIiwgMCwgInhwYWNs
cmkiLAogICAgICJwYWNpYTE3MTYiLCAwLCAicGFjaWIxNzE2IiwgMCwgImF1dGlhMTcxNiIsIDAs
ICJhdXRpYjE3MTYiLCAwLApAQCAtOTkxLDYgKzEzMTMsMTUgQEAgY29uc3QgY2hhciogY29uc3Qg
QTY0RE9wY29kZUhpbnQ6OnNfb3BOYQogICAgICJwYWNpYXoiLCAicGFjaWFzcCIsICJwYWNpYnoi
LCAicGFjaWJzcCIsICJhdXRpYXoiLCAiYXV0aWFzcCIsICJhdXRpYnoiLCAiYXV0aWJzcCIKIH07
CiAKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVIaW50OjpvcE5hbWUoKQoreworICAgIGNvbnN0IGNo
YXIqIG9wTmFtZSA9IChpbW1lZGlhdGU3KCkgPCAzMiA/IHNfb3BOYW1lc1tpbW1lZGlhdGU3KCld
IDogMCk7CisgICAgaWYgKCFvcE5hbWUpCisgICAgICAgIHJldHVybiAiaGludCI7CisKKyAgICBy
ZXR1cm4gb3BOYW1lOworfQorCiBjb25zdCBjaGFyKiBBNjRET3Bjb2RlSGludDo6Zm9ybWF0KCkK
IHsKICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKCkpOwpAQCAtMTAwMSwxMyArMTMz
MiwyNTAgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUhpbnQ6OmZvcm1hdCgpCiAgICAgcmV0dXJu
IG1fZm9ybWF0QnVmZmVyOwogfQogCi1jb25zdCBjaGFyKiBBNjRET3Bjb2RlSGludDo6b3BOYW1l
KCkKK2Jvb2wgQTY0RE9wY29kZUhpbnQ6OmlzVmFsaWQoKQogewotICAgIGNvbnN0IGNoYXIqIG9w
TmFtZSA9IChpbW1lZGlhdGU3KCkgPCAzMiA/IHNfb3BOYW1lc1tpbW1lZGlhdGU3KCldIDogMCk7
Ci0gICAgaWYgKCFvcE5hbWUpCi0gICAgICAgIHJldHVybiAiaGludCI7CisgICAgLy8gT25seSBh
bGxvdyBub3AuCisgICAgaWYgKCFpbW1lZGlhdGU3KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBmYWxzZTsKK30KIAotICAgIHJldHVybiBvcE5hbWU7Citjb25zdCBjaGFyKiBj
b25zdCBBNjRET3Bjb2RlU0lNRFRocmVlU2FtZTo6c19pbnRPcE5hbWVzWzY0XSA9IHsKKyAgICAi
c2hhZGQiLCAic3FhZGQiLCAic3JoYWRkIiwgMCwgInNoc3ViIiwgInNxc3ViIiwgImNtZ3QiLCAi
Y21nZSIsCisgICAgInNzaGwiLCAic3FzaGwiLCAic3JzaGwiLCAic3Fyc2hsIiwgInNtYXgiLCAi
c21pbiIsICJzYWJkIiwgInNhYmEiLAorICAgICJhZGQiLCAiY210c3QiLCAibWxhIiwgIm11bCIs
ICJzbWF4cCIsICJzbWlucCIsICJzcWRtdWxoIiwgImFkZHAiLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgInVoYWRkIiwgInVxYWRkIiwgInVyaGFkZCIsIDAsICJ1aHN1YiIsICJ1
cXN1YiIsICJjbWhpIiwgImNtaHMiLAorICAgICJ1c2hsIiwgInVxc2hsIiwgInVyc2hsIiwgInVx
cnNobCIsICJ1bWF4IiwgInVtaW4iLCAidWFiZCIsICJ1YWJhIiwKKyAgICAic3ViIiwgImNtZXEi
LCAibWxzIiwgInBtdWwiLCAidW1heHAiLCAidW1pbnAiLCAic3FyZG11bGgiLCAwLAorICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsCit9OworCitjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2Rl
U0lNRFRocmVlU2FtZTo6c19mcE9wTmFtZXNbMzJdID0geworICAgICJmbWF4bm0iLCAiZm1sYSIs
ICJmYWRkIiwgImZtdWx4IiwgImZjbWVxIiwgMCwgImZtYXgiLCAiZnJlY3BzIiwKKyAgICAiZm1p
bm5tIiwgImZtbHMiLCAiZnN1YiIsIDAsIDAsICJmbWxzbCIsICJmbWluIiwgImZyc3FydHMiLAor
ICAgICJmbWF4bm1wIiwgImZtbGFsIiwgImZhZGRwIiwgImZtdWwiLCAiZmNtZ2UiLCAiZm1heHAi
LCAiZmRpdiIsCisgICAgImZtaW5ubXAiLCAiZm1sc2wiLCAiZmFiZCIsIDAsICJmY21ndCIsICJm
YWNndCIsICJmbWlucCIsIDAKK307CisKK2NvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVTSU1E
VGhyZWVTYW1lOjpzX2JpdE9wTmFtZXNbOF0gPSB7CisgICAgImFuZCIsICJiaWMiLCAib3JyIiwg
Im9ybiIsICJlb3IiLCAiYnNsIiwgImJpdCIsICJiaWYiCit9OworCisKK2NvbnN0IGNoYXIqIEE2
NERPcGNvZGVTSU1EVGhyZWVTYW1lOjpvcE5hbWUoKQoreworICAgIGlmIChpc0JpdE9wKCkpCisg
ICAgICAgIHJldHVybiBzX2JpdE9wTmFtZXNbdUJpdCgpIDw8IDIgfCBzaXplKCldOworCisgICAg
aWYgKG9wY29kZSgpID49IDBiMTEwMDApIHsKKyAgICAgICAgaWYgKCF1Qml0KCkgJiYgb3Bjb2Rl
KCkgPT0gMGIxMTEwMSAmJiBzaXplKCkgJiAwYjEpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgaWYgKHVCaXQoKSAmJiBvcGNvZGUoKSA9PSAwYjExMDAxICYmIHNpemUoKSAm
IDBiMSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAodUJpdCgpICYm
IG9wY29kZSgpID09IDBiMTEwMDEpCisgICAgICAgICAgICByZXR1cm4gIXNpemUoKSA/ICJmbWxh
bDIiIDogImZtbHNsMiI7CisgICAgICAgIHJldHVybiBzX2ZwT3BOYW1lc1t1Qml0KCkgPDwgNCB8
IChzaXplKCkgJiAwYjEwKSA8PCAyIHwgKG9wY29kZSgpICYgMGIxMTEpXTsKKyAgICB9CisKKyAg
ICByZXR1cm4gc19pbnRPcE5hbWVzW3VCaXQoKSA8PCA1IHwgb3Bjb2RlKCldOworfQorCitjb25z
dCBjaGFyKiBBNjRET3Bjb2RlU0lNRFRocmVlU2FtZTo6bW9kaWZpZXIoKQoreworICAgIGlmIChp
c0JpdE9wKCkpCisgICAgICAgIHJldHVybiBxQml0KCkgPyAiMTZiIiA6ICI4YiI7CisgICAgCisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVTSU1EVGhyZWVT
YW1lOjpmb3JtYXQoKQoreworICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBvcE5hbWUoKTsKKyAgICBj
b25zdCBjaGFyKiBzaXplTW9kID0gbW9kaWZpZXIoKTsKKyAgICBpZiAoIW5hbWUgfHwgIXNpemVN
b2QpCisgICAgICAgIHJldHVybiBBNjRET3Bjb2RlOjpmb3JtYXQoKTsKKworICAgIGFwcGVuZElu
c3RydWN0aW9uTmFtZVdpdGhNb2RpZmllcihuYW1lLCBzaXplTW9kKTsKKyAgICBhcHBlbmRTSU1E
UmVnaXN0ZXJOYW1lKHJkKCkpOworICAgIGFwcGVuZFNlcGFyYXRvcigpOworICAgIGFwcGVuZFNJ
TURSZWdpc3Rlck5hbWUocm4oKSk7CisgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgYXBwZW5k
U0lNRFJlZ2lzdGVyTmFtZShybSgpKTsKKyAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7Cit9CisK
K2Jvb2wgQTY0RE9wY29kZVNJTURUaHJlZVNhbWU6OmlzVmFsaWQoKQoreworICAgIGlmICghb3BO
YW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1vZGlmaWVyKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworY29uc3QgY2hhciogY29u
c3QgQTY0RE9wY29kZVN5c3RlbUluc3Q6OnNfYXRPcHMxMDAwWzE2XSA9IHsKKyAgICAiczFlMXIi
LCAiczFlMXciLCAiczFlMHIiLCAiczFlMHciLCAiczFlMnIiLCAiczFlMnciLCAwLCAwLAorICAg
ICJzMTJlMXIiLCAiczEyZTFyIiwgInMxMmUwciIsICJzMTJlMHciLCAiczFlM3IiLCAiczFlM3ci
LCAwLCAwCit9OworCitjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlU3lzdGVtSW5zdDo6c19k
Y09wczAwMFsxNl0gPSB7CisgICAgMCwgIml2YWMiLCAiaXN3IiwgImlndmFjIiwgImlnc3ciLCAi
aWdkdmFjIiwgImlnZHN3IiwgMCwKKyAgICAwLCAiY3N3IiwgImNnc3ciLCAiY2dkc3ciLCAwLCAi
Y2lzdyIsICJjaWdzdyIsICJjaWdkc3ciCit9OworCitjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bj
b2RlU3lzdGVtSW5zdDo6c19kY09wczExMVszMl0gPSB7CisgICAgMCwgInp2YSIsIDAsICJndmEi
LCAiZ3p2YSIsIDAsIDAsIDAsCisgICAgImN2YWMiLCAiY2d2YWMiLCAiY2dkdmFjIiwgMCwgImN2
YXUiLCAwLCAwLCAwLAorICAgICJjdmFwIiwgImNndmFwIiwgImNnZHZhcCIsIDAsICJjdmFkcCIs
ICJjZ3ZhZHAiLCAiY2dkdnNhZHAiLCAwLAorICAgICJjaXZhYyIsICJjaWd2YWMiLCAiY2lnZHZh
YyIsIDAsIDAsIDAsIDAsIDAKK307CisKK2NvbnN0IGNoYXIqIEE2NERPcGNvZGVTeXN0ZW1JbnN0
Ojpmb3JtYXQoKQoreworICAgIGF1dG8gZ2VuZXJpY1N5cyA9IFsmXSgpIHsKKyAgICAgICAgYXBw
ZW5kSW5zdHJ1Y3Rpb25OYW1lKCJzeXMiKTsKKyAgICAgICAgYXBwZW5kQ2hhcmFjdGVyKCcjJyk7
CisgICAgICAgIGFwcGVuZFVuc2lnbmVkSW1tZWRpYXRlKG9wMSgpKTsKKyAgICAgICAgYXBwZW5k
U2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVuZENoYXJhY3RlcignQycpOworICAgICAgICBhcHBl
bmRVbnNpZ25lZEltbWVkaWF0ZShjck4oKSk7CisgICAgICAgIGFwcGVuZFNlcGFyYXRvcigpOwor
ICAgICAgICBhcHBlbmRDaGFyYWN0ZXIoJ0MnKTsKKyAgICAgICAgYXBwZW5kVW5zaWduZWRJbW1l
ZGlhdGUoY3JNKCkpOworICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgYXBwZW5k
Q2hhcmFjdGVyKCcjJyk7CisgICAgICAgIGFwcGVuZFVuc2lnbmVkSW1tZWRpYXRlKG9wMigpKTsK
KyAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGFwcGVuZFpST3JSZWdpc3Rlck5h
bWUocnQoKSk7CisgICAgICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKyAgICB9OworCisgICAg
Y29uc3QgY2hhciogb3BOYW1lID0gbnVsbHB0cjsKKworICAgIGlmIChjck4oKSA9PSA3KSB7Cisg
ICAgICAgIGlmIChvcDEoKSA9PSAzICYmIGNyTSgpID09IDMpIHsKKyAgICAgICAgICAgIGlmIChv
cDIoKSA9PSA0KQorICAgICAgICAgICAgICAgIG9wTmFtZSA9ICJjZnAiOworICAgICAgICAgICAg
ZWxzZSBpZiAob3AyKCkgPT0gNSkKKyAgICAgICAgICAgICAgICBvcE5hbWUgPSAiZHZwIjsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKG9wMigpID09IDcpCisgICAgICAgICAgICAgICAgb3BOYW1lID0g
ImNwcCI7CisKKyAgICAgICAgICAgIGlmIChvcE5hbWUpIHsKKyAgICAgICAgICAgICAgICBhcHBl
bmRJbnN0cnVjdGlvbk5hbWUob3BOYW1lKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmco
InJjdHgiKTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmRaUk9yUmVnaXN0ZXJOYW1lKHJ0KCkpOworICAgICAgICAgICAgICAgIHJldHVy
biBtX2Zvcm1hdEJ1ZmZlcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGdl
bmVyaWNTeXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoY3JNKCkpIHsKKyAgICAg
ICAgY2FzZSAxOiAvLyBQb3NzaWJseSBJQyBJQUxMVUlTCisgICAgICAgIGNhc2UgNTogLy8gcG9z
c2libHkgSUMgSUFMTFUgb3IgSUMgSVZBVQorICAgICAgICAgICAgaWYgKCFvcDEoKSAmJiAhb3Ay
KCkpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoImljIik7CisgICAg
ICAgICAgICAgICAgYXBwZW5kU3RyaW5nKGNyTSgpID09IDEgPyAiaWFsbHVpcyIgOiAiaWFsbHUi
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgICAgICBh
cHBlbmRaUk9yUmVnaXN0ZXJOYW1lKHJ0KCkpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2Zv
cm1hdEJ1ZmZlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcDEoKSA9PSAzICYm
IG9wMigpID09IDEpIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoImlj
Iik7CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nKCJpdmF1Iik7CisgICAgICAgICAgICAg
ICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICAgICAgYXBwZW5kWlJPclJlZ2lzdGVy
TmFtZShydCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDQ6CisgICAgICAg
IGNhc2UgNjoKKyAgICAgICAgY2FzZSAxMDoKKyAgICAgICAgY2FzZSAxMToKKyAgICAgICAgY2Fz
ZSAxMjoKKyAgICAgICAgY2FzZSAxMzoKKyAgICAgICAgY2FzZSAxNDoKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAvLyBQb3NzaWJseSBEQyB2YXJpYW50cworICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIGRjT3AgPSBudWxscHRyOworCisgICAgICAgICAgICAgICAgaWYgKCFvcDEo
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY3JNKCkgPT0gMGIwMTEwKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZGNPcCA9IHNfZGNPcHMwMDBbb3AyKCldOworICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChjck0oKSA9PSAwYjEwMTApCisgICAgICAgICAgICAgICAgICAgICAgICBk
Y09wID0gc19kY09wczAwMFs4ICsgb3AyKCldOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGlmIChvcDEoKSA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjck0o
KSA9PSAwYjAxMDApCisgICAgICAgICAgICAgICAgICAgICAgICBkY09wID0gc19kY09wczExMVtv
cDIoKV07CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wMigpICYgMSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRjT3AgPSBzX2RjT3BzMDAwWzggKyAoY3JNKCkgLSAxMCkgKiA0ICsg
KG9wMigpID4+IDEpXTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAo
ZGNPcCkgeworICAgICAgICAgICAgICAgICAgICBhcHBlbmRJbnN0cnVjdGlvbk5hbWUoImRjIik7
CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFN0cmluZyhkY09wKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFpST3JS
ZWdpc3Rlck5hbWUocnQoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2Zvcm1hdEJ1
ZmZlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8g
cG9zc2libHkgQVQgdmFyaWFudHMKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhdE9wID0g
bnVsbHB0cjsKKworICAgICAgICAgICAgICAgIGlmICghb3AxKCkgJiYgb3AyKCkgPCAwYjEwMCkK
KyAgICAgICAgICAgICAgICAgICAgYXRPcCA9IHNfYXRPcHMxMDAwW29wMigpXTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChvcDEoKSA9PSA0KQorICAgICAgICAgICAgICAgICAgICBhdE9wID0g
c19hdE9wczEwMDBbNCArIG9wMigpXTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvcDEoKSA9
PSA2KQorICAgICAgICAgICAgICAgICAgICBhdE9wID0gc19hdE9wczEwMDBbMTIgKyBvcDIoKV07
CisKKyAgICAgICAgICAgICAgICBpZiAoYXRPcCkgeworICAgICAgICAgICAgICAgICAgICBhcHBl
bmRJbnN0cnVjdGlvbk5hbWUoImF0Iik7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZFN0cmlu
ZyhhdE9wKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAg
ICAgICAgICAgICAgIGFwcGVuZFpST3JSZWdpc3Rlck5hbWUocnQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA5OgorICAgICAgICAgICAg
Ly8gcG9zc2libHkgQVQgdmFyaWFudHMKKyAgICAgICAgICAgIGlmICghb3AxKCkgJiYgIShvcDIo
KSAmIDBiMTEwKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZSgiYXQi
KTsKKyAgICAgICAgICAgICAgICBhcHBlbmRTdHJpbmcoIW9wMigpID8gInMxZTFycCIgOiAiczFl
MXdwIik7CisgICAgICAgICAgICAgICAgYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kWlJPclJlZ2lzdGVyTmFtZShydCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bV9mb3JtYXRCdWZmZXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gZ2VuZXJpY1N5cygpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmljU3lzKCk7Cit9
CisKK2Jvb2wgQTY0RE9wY29kZVN5c3RlbUluc3Q6OmlzVmFsaWQoKQoreworICAgIC8vIE9ubHkg
YWxsb3cgZGMgCisgICAgaWYgKG9wMSgpID09IDBiMTEgJiYgY3JOKCkgPT0gMGIwMTExICYmIGNy
TSgpID09IDBiMDEwMCAmJiBvcDIoKSA9PSAwYjAwMSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVTeXN0
ZW1TeW5jOjpzX29wTmFtZXNbOF0gPSB7CkBAIC0xMDQ0LDYgKzE2MTIsMTQgQEAgY29uc3QgY2hh
ciogQTY0RE9wY29kZVN5c3RlbVN5bmM6OmZvcm1hdAogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZl
cjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlU3lzdGVtU3luYzo6aXNWYWxpZCgpCit7CisgICAgaWYg
KCFvcE5hbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVMb2FkU3RvcmVFeGNsdXNpdmU6OnNfb3BO
YW1lc1s2NF0gPSB7CiAgICAgInN0eHJiIiwgInN0bHhyYiIsIDAsIDAsICJsZHhyYiIsICJsZGF4
cmIiLCAwLCAwLAogICAgIDAsICJzdGxyYiIsIDAsIDAsIDAsICJsZGFyYiIsIDAsIDAsCkBAIC0x
MDk3LDYgKzE2NzMsMjkgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2
ZQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlTG9hZFN0
b3JlRXhjbHVzaXZlOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAobzIoKSAmJiAhbzEoKSAmJiAhbzAo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG8yKCkgJiYgbzEoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKChzaXplKCkgPCAyKSAmJiBvMSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobG9hZEJpdCgpICYmIChycygpICE9IDB4MWYpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzUGFpck9wKCkgJiYgKHJ0MigpICE9
IDB4MWYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW9wTmFtZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLy8gQSB6ZXJvIGlu
IGFuIGVudHJ5IG9mIHRoZSB0YWJsZSBtZWFucyB0aGUgaW5zdHJ1Y3Rpb24gaXMgVW5hbGxvY2F0
ZWQKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERPcGNvZGVMb2FkU3RvcmU6OnNfb3BOYW1lc1szMl0g
PSB7CiAgICAgInN0cmIiLCAibGRyYiIsICJsZHJzYiIsICJsZHJzYiIsICJzdHIiLCAibGRyIiwg
InN0ciIsICJsZHIiLApAQCAtMTE4MSw2ICsxNzgwLDIzIEBAIGNvbnN0IGNoYXIqIEE2NERPcGNv
ZGVMb2FkU3RvcmVJbW1lZGlhdGUKICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jv
b2wgQTY0RE9wY29kZUxvYWRTdG9yZUltbWVkaWF0ZTo6aXNWYWxpZCgpCit7CisgICAgc3dpdGNo
ICh0eXBlKCkpIHsKKyAgICBjYXNlIDA6IC8vIFVuc2NhbGVkIEltbWVkaWF0ZQorICAgICAgICBy
ZXR1cm4gISF1bnNjYWxlZE9wTmFtZSgpOworCisgICAgY2FzZSAxOiAvLyBJbW1lZGlhdGUgUG9z
dC1JbmRleGVkCisgICAgY2FzZSAzOiAvLyBJbW1lZGlhdGUgUHJlLUluZGV4ZWQKKyAgICAgICAg
cmV0dXJuICEhb3BOYW1lKCk7CisKKyAgICBjYXNlIDI6IC8vIFVucHJpdmlsZWdlZAorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBjb25zdCBj
aGFyKiBBNjRET3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJPZmZzZXQ6OmZvcm1hdCgpCiB7CiAgICAg
Y29uc3QgY2hhciogdGhpc09wTmFtZSA9IG9wTmFtZSgpOwpAQCAtMTIzMSw2ICsxODQ3LDE3IEBA
IGNvbnN0IGNoYXIqIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3Rlck8KICAgICByZXR1cm4gbV9m
b3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVyT2Zmc2V0
Ojppc1ZhbGlkKCkKK3sKKyAgICBpZiAoIW9wTmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIShvcHRpb24oKSAmIDB4MikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlTG9hZFN0
b3JlQXV0aGVudGljYXRlZDo6c19vcE5hbWVzWzJdID0gewogICAgICJsZHJhYSIsICJsZHJhYiIK
IH07CkBAIC0xMjU1LDYgKzE4ODIsMTEgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUxvYWRTdG9y
ZUF1dGhlbnRpYwogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bj
b2RlTG9hZFN0b3JlQXV0aGVudGljYXRlZDo6aXNWYWxpZCgpCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3RlclBhaXI6Om9wTmFt
ZSgpCiB7CiAgICAgaWYgKCF2Qml0KCkgJiYgbEJpdCgpICYmIHNpemUoKSA9PSAweDEpCkBAIC0x
MzE4LDYgKzE5NTAsMjAgQEAgY29uc3QgY2hhciogQTY0RE9wY29kZUxvYWRTdG9yZVJlZ2lzdGVy
UAogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsKIH0KIAorYm9vbCBBNjRET3Bjb2RlTG9hZFN0
b3JlUmVnaXN0ZXJQYWlyOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAoc2l6ZSgpID09IDB4MykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKChvZmZzZXRNb2RlKCkgPCAweDEpIHx8IChv
ZmZzZXRNb2RlKCkgPiAweDMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKG9m
ZnNldE1vZGUoKSA9PSAweDEpICYmICF2Qml0KCkgJiYgIWxCaXQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVM
b2FkU3RvcmVVbnNpZ25lZEltbWVkaWF0ZTo6Zm9ybWF0KCkKIHsKICAgICBjb25zdCBjaGFyKiB0
aGlzT3BOYW1lID0gb3BOYW1lKCk7CkBAIC0xMzUxLDYgKzE5OTcsMTYgQEAgY29uc3QgY2hhciog
QTY0RE9wY29kZUxvYWRTdG9yZVVuc2lnbmVkSQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsK
IH0KIAorYm9vbCBBNjRET3Bjb2RlTG9hZFN0b3JlVW5zaWduZWRJbW1lZGlhdGU6OmlzVmFsaWQo
KQoreworICAgIGNvbnN0IGNoYXIqIHRoaXNPcE5hbWUgPSBvcE5hbWUoKTsKKworICAgIGlmICgh
dGhpc09wTmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKIC8vIEEgemVybyBpbiBhbiBlbnRyeSBvZiB0aGUgdGFibGUgbWVhbnMgdGhlIGluc3RydWN0
aW9uIGlzIFVuYWxsb2NhdGVkCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlTG9naWNhbDo6
c19vcE5hbWVzWzhdID0gewogICAgICJhbmQiLCAiYmljIiwgIm9yciIsICJvcm4iLCAiZW9yIiwg
ImVvbiIsICJhbmRzIiwgImJpY3MiCkBAIC0xMzg3LDYgKzIwNDMsMTQgQEAgY29uc3QgY2hhciog
QTY0RE9wY29kZUxvZ2ljYWxTaGlmdGVkUmVnaQogICAgIHJldHVybiBtX2Zvcm1hdEJ1ZmZlcjsK
IH0KIAorYm9vbCBBNjRET3Bjb2RlTG9naWNhbFNoaWZ0ZWRSZWdpc3Rlcjo6aXNWYWxpZCgpCit7
CisgICAgaWYgKCFpczY0Qml0KCkgJiYgaW1tZWRpYXRlNigpICYgMHgyMCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBoaWdo
ZXN0Qml0U2V0KHVuc2lnbmVkIHZhbHVlKQogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CkBA
IC0xNDE5LDI0ICsyMDgzLDE0IEBAIHN0YXRpYyB1aW50NjRfdCByZXBsaWNhdGUodWludDY0X3Qg
dmFsdWUKIAogY29uc3QgY2hhciogQTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGU6OmZvcm1hdCgp
CiB7Ci0gICAgaWYgKCFpczY0Qml0KCkgJiYgbkJpdCgpKQotICAgICAgICByZXR1cm4gQTY0RE9w
Y29kZTo6Zm9ybWF0KCk7Ci0KICAgICB1bnNpZ25lZCBsZW4gPSBoaWdoZXN0Qml0U2V0KG5CaXQo
KSA8PCA2IHwgKGltbWVkaWF0ZVMoKSBeIDB4M2YpKTsKICAgICB1bnNpZ25lZCBsZXZlbHMgPSAo
MSA8PCBsZW4pIC0gMTsgLy8gbGVuIG51bWJlciBvZiAxIGJpdHMgc3RhcnRpbmcgYXQgTFNCCiAK
ICAgICBpZiAoKGltbWVkaWF0ZVMoKSAmIGxldmVscykgPT0gbGV2ZWxzKQogICAgICAgICByZXR1
cm4gQTY0RE9wY29kZTo6Zm9ybWF0KCk7CiAKLSAgICB1bnNpZ25lZCByID0gaW1tZWRpYXRlUigp
ICYgbGV2ZWxzOwotICAgIHVuc2lnbmVkIHMgPSBpbW1lZGlhdGVTKCkgJiBsZXZlbHM7Ci0gICAg
dW5zaWduZWQgZVNpemUgPSAxIDw8IGxlbjsKLSAgICB1aW50NjRfdCBwYXR0ZXJuID0gcm90YXRl
UmlnaHQoKDF1bGwgPDwgKHMgKyAxKSkgLSAxLCBlU2l6ZSwgcik7Ci0KLSAgICB1aW50NjRfdCBp
bW1lZGlhdGUgPSByZXBsaWNhdGUocGF0dGVybiwgZVNpemUpOwotCi0gICAgaWYgKCFpczY0Qml0
KCkpCi0gICAgICAgIGltbWVkaWF0ZSAmPSAweGZmZmZmZmZmdWxsOworICAgIGlmICghaXM2NEJp
dCgpICYmIG5CaXQoKSkKKyAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOwogCiAg
ICAgaWYgKGlzVHN0KCkpCiAgICAgICAgIGFwcGVuZEluc3RydWN0aW9uTmFtZSgidHN0Iik7CkBA
IC0xNDUyLDExICsyMTA2LDQ1IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVMb2dpY2FsSW1tZWRp
YXRlOjoKICAgICAgICAgYXBwZW5kUmVnaXN0ZXJOYW1lKHJuKCksIGlzNjRCaXQoKSk7CiAgICAg
ICAgIGFwcGVuZFNlcGFyYXRvcigpOwogICAgIH0KLSAgICBhcHBlbmRVbnNpZ25lZEltbWVkaWF0
ZTY0KGltbWVkaWF0ZSk7CisgICAgYXBwZW5kVW5zaWduZWRJbW1lZGlhdGU2NChjb21wdXRlSW1t
ZWRpYXRlKCkpOwogCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERP
cGNvZGVMb2dpY2FsSW1tZWRpYXRlOjppc1ZhbGlkKCkKK3sKKyAgICBpZiAoIWlzNjRCaXQoKSAm
JiBuQml0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIGxlbiA9IGhp
Z2hlc3RCaXRTZXQobkJpdCgpIDw8IDYgfCAoaW1tZWRpYXRlUygpIF4gMHgzZikpOworICAgIHVu
c2lnbmVkIGxldmVscyA9ICgxIDw8IGxlbikgLSAxOyAvLyBsZW4gbnVtYmVyIG9mIDEgYml0cyBz
dGFydGluZyBhdCBMU0IKKworICAgIGlmICgoaW1tZWRpYXRlUygpICYgbGV2ZWxzKSA9PSBsZXZl
bHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit1aW50
NjRfdCBBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0ZTo6Y29tcHV0ZUltbWVkaWF0ZSgpCit7Cisg
ICAgdW5zaWduZWQgbGVuID0gaGlnaGVzdEJpdFNldChuQml0KCkgPDwgNiB8IChpbW1lZGlhdGVT
KCkgXiAweDNmKSk7CisgICAgdW5zaWduZWQgbGV2ZWxzID0gKDEgPDwgbGVuKSAtIDE7IC8vIGxl
biBudW1iZXIgb2YgMSBiaXRzIHN0YXJ0aW5nIGF0IExTQgorCisgICAgQVNTRVJUKChpbW1lZGlh
dGVTKCkgJiBsZXZlbHMpICE9IGxldmVscyk7CisKKyAgICB1bnNpZ25lZCByID0gaW1tZWRpYXRl
UigpICYgbGV2ZWxzOworICAgIHVuc2lnbmVkIHMgPSBpbW1lZGlhdGVTKCkgJiBsZXZlbHM7Cisg
ICAgdW5zaWduZWQgZVNpemUgPSAxIDw8IGxlbjsKKyAgICB1aW50NjRfdCBwYXR0ZXJuID0gcm90
YXRlUmlnaHQoKDF1bGwgPDwgKHMgKyAxKSkgLSAxLCBlU2l6ZSwgcik7CisKKyAgICB1aW50NjRf
dCBpbW1lZGlhdGUgPSByZXBsaWNhdGUocGF0dGVybiwgZVNpemUpOworCisgICAgaWYgKCFpczY0
Qml0KCkpCisgICAgICAgIGltbWVkaWF0ZSAmPSAweGZmZmZmZmZmdWxsOworCisgICAgcmV0dXJu
IGltbWVkaWF0ZTsKK30KKwogY29uc3QgY2hhciogY29uc3QgQTY0RE9wY29kZU1vdmVXaWRlOjpz
X29wTmFtZXNbNF0gPSB7ICJtb3ZuIiwgMCwgIm1vdnoiLCAibW92ayIgfTsKIAogY29uc3QgY2hh
ciogQTY0RE9wY29kZU1vdmVXaWRlOjpmb3JtYXQoKQpAQCAtMTQ5NSw2ICsyMTgzLDkwIEBAIGNv
bnN0IGNoYXIqIEE2NERPcGNvZGVNb3ZlV2lkZTo6Zm9ybWF0KCkKICAgICByZXR1cm4gbV9mb3Jt
YXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZU1vdmVXaWRlOjppc1ZhbGlkKCkKK3sKKyAg
ICBpZiAob3BjKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghaXM2NEJp
dCgpICYmIGh3KCkgPj0gMikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgQTY0RE9wY29kZU1vdmVXaWRlOjppc01vdm4oKQoreworICAgIEFTU0VS
VChpc01vdmVXaWRlKCkpOworICAgIGlmIChvcGMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQTY0RE9wY29kZU1vdmVXaWRlOjppc01vdnoo
KQoreworICAgIEFTU0VSVChpc01vdmVXaWRlKCkpOworICAgIGlmIChvcGMoKSAhPSAyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBNjRET3Bj
b2RlTW92ZVdpZGU6OmlzTW92aygpCit7CisgICAgQVNTRVJUKGlzTW92ZVdpZGUoKSk7CisgICAg
aWYgKG9wYygpICE9IDMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVl
OworfQorCit1aW50NjRfdCBBNjRET3Bjb2RlTW92ZVdpZGU6OnZhbHVlKHVpbnQ2NF90JiBtYXNr
KQoreworICAgIEFTU0VSVChpc1ZhbGlkKCkpOworCisgICAgdW5zaWduZWQgaCA9IGh3KCk7Cisg
ICAgbWFzayA9IDB4ZmZmZlVMIDw8ICgxNiAqIGgpOworICAgIHVpbnQ2NF90IGFtb3VudCA9IHN0
YXRpY19jYXN0PHVpbnQ2NF90PihpbW1lZGlhdGUxNigpKSA8PCAoMTYgKiBoKTsKKyAgICBpZiAo
IW9wYygpICYmICghaW1tZWRpYXRlMTYoKSB8fCAhaCkgJiYgKGlzNjRCaXQoKSB8fCBpbW1lZGlh
dGUxNigpICE9IDB4ZmZmZikpCisgICAgICAgIGFtb3VudCA9IH5hbW91bnQ7CisKKyAgICBpZiAo
IWlzNjRCaXQoKSkKKyAgICAgICAgcmV0dXJuIGFtb3VudCAmIDB4ZmZmZmZmZmY7CisgICAgcmV0
dXJuIGFtb3VudDsKK30KKwordWludDY0X3QgQTY0RE9wY29kZU1vdmVXaWRlOjpidWlsZEltbWVk
aWF0ZUZyb21Nb3ZlV2lkZVNlcXVlbmNlKHVuc2lnbmVkJiB0YXJnZXRSZWcsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0KQoreworICAgIFNlY29uZGFyeUluc3RydWN0aW9uU2NvcGUgaW5zblNjb3BlKCp0
aGlzKTsKKworICAgIHNldE9wY29kZUZyb21QcmlvcihzdGFydE9mZnNldCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoaXNNb3Z6KCkgfHwgaXNNb3ZuKCkpOworCisgICAgdWludDY0X3QgbWFzazsKKyAg
ICB1aW50NjRfdCByZXN1bHQgPSB2YWx1ZShtYXNrKTsKKyAgICB0YXJnZXRSZWcgPSBydCgpOwor
CisgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RhcnRPZmZzZXQ7CisKKyAgICB3aGlsZSAob2Zmc2V0
ID4gMCkgeworICAgICAgICBvZmZzZXQtLTsKKyAgICAgICAgc2V0T3Bjb2RlRnJvbVByaW9yKG9m
ZnNldCk7CisgICAgICAgIGlmICghaXNNb3ZlV2lkZSgpIHx8IHJ0KCkgIT0gdGFyZ2V0UmVnKQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGlzTW92aygpKSB7CisgICAgICAgICAg
ICB1aW50NjRfdCBzbGljZSA9IHZhbHVlKG1hc2spOworICAgICAgICAgICAgcmVzdWx0ID0gKHJl
c3VsdCAmIH5tYXNrKSB8IHNsaWNlOworICAgICAgICB9IGVsc2UgaWYgKGlzTW92bigpKSB7Cisg
ICAgICAgICAgICB1aW50NjRfdCBzbGljZSA9IHZhbHVlKG1hc2spOworICAgICAgICAgICAgcmVz
dWx0ID0gfihyZXN1bHQgJiB+bWFzaykgfCBzbGljZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBjb25zdCBjaGFy
KiBBNjRET3Bjb2RlVGVzdEFuZEJyYW5jaEltbWVkaWF0ZTo6Zm9ybWF0KCkKIHsKICAgICBhcHBl
bmRJbnN0cnVjdGlvbk5hbWUob3BCaXQoKSA/ICJ0Ym56IiA6ICJ0YnoiKTsKQEAgLTE1MDYsNiAr
MjI3OCwxOCBAQCBjb25zdCBjaGFyKiBBNjRET3Bjb2RlVGVzdEFuZEJyYW5jaEltbWVkCiAgICAg
cmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCitib29sIEE2NERPcGNvZGVUZXN0QW5kQnJhbmNo
SW1tZWRpYXRlOjppc1ZhbGlkKCkKK3sKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKCFp
c1ZhbGlkSklUVGFyZ2V0KHBjUmVsYXRpdmVBZGRyZXNzKHN0YXRpY19jYXN0PGludDMyX3Q+KGlt
bWVkaWF0ZTE0KCkpKSkpIHsKKyAgICAgICAgaWYgKHZlcmJvc2VWYWxpZGF0aW9uKQorICAgICAg
ICAgICAgZGF0YUxvZ0YoIiAgICBGb3VuZCAlcyB0YXJnZXRpbmcgaW5jb3JyZWN0IEpJVCBhZGRy
ZXNzICglcClcbiIsIG9wQml0KCkgPyAidGJueiIgOiAidGJ6IiwgcGNSZWxhdGl2ZUFkZHJlc3Mo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oaW1tZWRpYXRlMTQoKSkpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBB
NjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZTo6Zm9ybWF0KCkKIHsKICAgICBh
cHBlbmRJbnN0cnVjdGlvbk5hbWUob3AoKSA/ICJibCIgOiAiYiIpOwpAQCAtMTUxMyw2ICsyMjk3
LDI0IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmMKICAgICByZXR1
cm4gbV9mb3JtYXRCdWZmZXI7CiB9CiAKK2Jvb2wgQTY0RE9wY29kZVVuY29uZGl0aW9uYWxCcmFu
Y2hJbW1lZGlhdGU6OmlzVmFsaWQoKQoreworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAo
b3AoKSAmJiAhcGNNYXNrZWRPZmZzZXRJcygweGYsIDB4YykpIHsKKyAgICAgICAgaWYgKHZlcmJv
c2VWYWxpZGF0aW9uKQorICAgICAgICAgICAgZGF0YUxvZygiICAgIEZvdW5kIGJsIG5vdCBhdCAw
eFhYWGMgYWRkcmVzc1xuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAoIWlzVmFsaWRKSVRUYXJnZXQocGNSZWxhdGl2ZUFkZHJlc3Moc3RhdGljX2Nhc3Q8aW50MzJf
dD4oaW1tZWRpYXRlMjYoKSkpKSkgeworICAgICAgICBpZiAodmVyYm9zZVZhbGlkYXRpb24pCisg
ICAgICAgICAgICBkYXRhTG9nRigiICAgIEZvdW5kIGJsIHRhcmdldGluZyBpbmNvcnJlY3QgSklU
IGFkZHJlc3MgKCVwKVxuIiwgcGNSZWxhdGl2ZUFkZHJlc3Moc3RhdGljX2Nhc3Q8aW50MzJfdD4o
aW1tZWRpYXRlMjYoKSkpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgor
ICAgIHJldHVybiB0cnVlOworfQorCiBjb25zdCBjaGFyKiBjb25zdCBBNjRET3Bjb2RlVW5jb25k
aXRpb25hbEJyYW5jaFJlZ2lzdGVyOjpzX29wTmFtZXNbOF0gPSB7ICJiciIsICJibHIiLCAicmV0
IiwgIiIsICJlcmV0IiwgImRycHMiLCAiIiwgIiIgfTsKIGNvbnN0IGNoYXIqIGNvbnN0IEE2NERP
cGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXI6OnNfQXV0aE9wTmFtZXNbMjBdID0gewog
ICAgICJicmFheiIsICJicmFieiIsICJibHJhYXoiLCAiYmxyYWJ6IiwgInJldGFhIiwgInJldGFi
IiwgMCwgMCwKQEAgLTE1NDgsNyArMjM1MCw3IEBAIGNvbnN0IGNoYXIqIEE2NERPcGNvZGVVbmNv
bmRpdGlvbmFsQnJhbmMKIAogICAgICAgICByZXR1cm4gbV9mb3JtYXRCdWZmZXI7CiAgICAgfQot
ICAgIGlmIChvcGNWYWx1ZSA9PSAzIHx8IG9wY1ZhbHVlID4gNSkKKyAgICBpZiAob3AyKCkgIT0g
MHgxZiB8fCBvcDMoKSB8fCBvcDQoKSB8fCBvcGNWYWx1ZSA9PSAzIHx8IG9wY1ZhbHVlID4gNSkK
ICAgICAgICAgcmV0dXJuIEE2NERPcGNvZGU6OmZvcm1hdCgpOwogICAgIGlmICgoKG9wY1ZhbHVl
ICYgMHhlKSA9PSAweDQpICYmIHJuKCkgIT0gMHgxZikKICAgICAgICAgcmV0dXJuIEE2NERPcGNv
ZGU6OmZvcm1hdCgpOwpAQCAtMTU1OCw2ICsyMzYwLDEzMiBAQCBjb25zdCBjaGFyKiBBNjRET3Bj
b2RlVW5jb25kaXRpb25hbEJyYW5jCiAgICAgcmV0dXJuIG1fZm9ybWF0QnVmZmVyOwogfQogCiti
b29sIEE2NERPcGNvZGVVbmNvbmRpdGlvbmFsQnJhbmNoUmVnaXN0ZXI6OmlzVmFsaWQoKQorewor
ICAgIHVuc2lnbmVkIG9wY1ZhbHVlID0gb3BjKCk7CisgICAgaWYgKG9wMigpID09IDB4MWYgJiYg
KG9wMygpICYgMHgzZSkgPT0gMHgyKSB7CisgICAgICAgIGlmICghYXV0aE9wTmFtZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAocm4oKSAhPSAweDFmICYmIChvcGNW
YWx1ZSA9PSAweDIgfHwgb3BjVmFsdWUgPT0gMHg0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKHZlcmJvc2VWYWxpZGF0aW9u
KQorICAgICAgICAgICAgZGF0YUxvZygiICAgIEZvdW5kIGF1dGhlbnRpY2F0ZWQgYnJhbmNoXG4i
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZW5kaWYKKyAgICB9CisKKyAgICBpZiAob3AyKCkgIT0gMHgxZiB8fCBvcDMoKSB8fCBvcDQoKSB8
fCBvcGNWYWx1ZSA+IDIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIEVOQUJMRShKSVRf
Q0FHRSkKKyAgICAvLyBWZXJpZnkgdGhhdCB0aGUgYWRkcmVzcyBsZWFzdCBzaWduaWZpY2FudCBu
aWJibGUgaXMgMHhjLgorICAgIGlmICghcGNNYXNrZWRPZmZzZXRJcygweGYsIDB4YykpIHsKKyAg
ICAgICAgaWYgKHZlcmJvc2VWYWxpZGF0aW9uKQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgICBG
b3VuZCAlcyBub3QgYXQgMHhYWFhjIGFkZHJlc3NcbiIsIG9wTmFtZSgpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIENoZWNrIGZvciBleHBsaWNpdCBmYXIgYnJhbmNo
IHNlcXVlbmNlLiBJZiBzbywgY2hlY2sgZm9yIGRlc3RpbmF0aW9uIGluIEpJVCBhbGxvd2VkIHRh
cmdldCBsaXN0LgorICAgIGlmIChvcGNvZGVHcm91cElERm9yUHJpb3JJbnNuKDMpID09IE9wY29k
ZUdyb3VwSUQ6OkE2NERPcGNvZGVNb3ZlV2lkZQorICAgICAgICAmJiBvcGNvZGVHcm91cElERm9y
UHJpb3JJbnNuKDIpID09IE9wY29kZUdyb3VwSUQ6OkE2NERPcGNvZGVNb3ZlV2lkZQorICAgICAg
ICAmJiBvcGNvZGVHcm91cElERm9yUHJpb3JJbnNuKDEpID09IE9wY29kZUdyb3VwSUQ6OkE2NERP
cGNvZGVNb3ZlV2lkZSkgeworCisgICAgICAgIHVuc2lnbmVkIGJyYW5jaFRhcmdldFJlZyA9IHJu
KCk7CisgICAgICAgIHVuc2lnbmVkIG1vdmVXaWRlVGFyZ2V0UmVnOworICAgICAgICB1aW50NjRf
dCB0YXJnZXQgPSByZWludGVycHJldF9jYXN0PGNsYXNzIEE2NERPcGNvZGVNb3ZlV2lkZSo+KHRo
aXMpLT5idWlsZEltbWVkaWF0ZUZyb21Nb3ZlV2lkZVNlcXVlbmNlKG1vdmVXaWRlVGFyZ2V0UmVn
LCAzKTsKKworICAgICAgICBpZiAodGFyZ2V0ICYgMHhmZmZmZmZmMDAwMDAwMDAwVUxMKSB7Cisg
ICAgICAgICAgICBpZiAodmVyYm9zZVZhbGlkYXRpb24pCisgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIEZvdW5kIHRvbyBiaWcgb2YgYSBkZXN0aW5hdGlvbiAiLCBSYXdQb2ludGVyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCAiXG4iKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAobW92ZVdpZGVUYXJnZXRSZWcgIT0gYnJhbmNoVGFyZ2V0UmVnKSB7CisgICAgICAgICAgICBp
ZiAodmVyYm9zZVZhbGlkYXRpb24pCisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEZvdW5k
IGJyYW5jaCB3aXRob3V0IHByaW9yIG1vdmUgd2lkZSBzZXF1ZW5jZVxuIik7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghdGFyZ2V0
KSB7CisgICAgICAgICAgICAvLyBGb3VuZCBicmFuY2ggd2l0aCBudWxscHRyIHRhcmdldC4gVGhp
cyBzaG91bGQgYmUgZml4ZWQgdXAgYmVmb3JlIGl0IGlzIGFjdHVhbGx5IHVzZWQuCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1ZhbGlkSklUVGFy
Z2V0KHJlaW50ZXJwcmV0X2Nhc3Q8QTY0SW5zdHJ1Y3Rpb24qPih0YXJnZXQpKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIEpJVFZhbGlkVGFyZ2V0TGlzdCYgdmFsaWRUYXJn
ZXRMaXN0ID0gSklUVmFsaWRUYXJnZXRMaXN0OjppbnN0YW5jZSgpOworICAgICAgICBpZiAoIXZh
bGlkVGFyZ2V0TGlzdC5hc3NlcnRPbkxpc3QocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGFyZ2V0
KSkpIHsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlVmFsaWRhdGlvbikKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgRm91bmQgYnJhbmNoIHdpdGggdW5rbm93biB0YXJnZXQgIiwgUmF3UG9p
bnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPih0YXJnZXQpKSwgIlxuIik7CisKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIC8vIENoZWNrIGZvciBjYWdpbmcgc2VxdWVuY2UuCisgICAgaWYgKG9wY29kZUdy
b3VwSURGb3JQcmlvckluc24oMykgPT0gT3Bjb2RlR3JvdXBJRDo6QTY0RE9wY29kZUxvZ2ljYWxJ
bW1lZGlhdGUKKyAgICAgICAgJiYgKG9wY29kZUdyb3VwSURGb3JQcmlvckluc24oMikgPT0gT3Bj
b2RlR3JvdXBJRDo6QTY0RE9wY29kZU1vdmVXaWRlIHx8IG9wY29kZUdyb3VwSURGb3JQcmlvcklu
c24oMikgPT0gT3Bjb2RlR3JvdXBJRDo6QTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUpCisgICAg
ICAgICYmIG9wY29kZUdyb3VwSURGb3JQcmlvckluc24oMSkgPT0gT3Bjb2RlR3JvdXBJRDo6QTY0
RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyKSB7CisgICAgICAgIHVuc2lnbmVkIGJy
YW5jaFRhcmdldFJlZyA9IHJuKCk7CisgICAgICAgIHVuc2lnbmVkIGppdEJhc2VSZWcgPSAwOwor
CisgICAgICAgIFNlY29uZGFyeUluc3RydWN0aW9uU2NvcGUgaW5zblNjb3BlKCp0aGlzKTsKKwor
ICAgICAgICBzZXRPcGNvZGVGcm9tUHJpb3IoMyk7CisgICAgICAgIEE2NERPcGNvZGVMb2dpY2Fs
SW1tZWRpYXRlKiBsb2dpY2FsSW1tZWRpYXRlID0gcmVpbnRlcnByZXRfY2FzdDxjbGFzcyBBNjRE
T3Bjb2RlTG9naWNhbEltbWVkaWF0ZSo+KHRoaXMpOworICAgICAgICBpZiAoIWxvZ2ljYWxJbW1l
ZGlhdGUtPmlzNjRCaXQoKSB8fCAhbG9naWNhbEltbWVkaWF0ZS0+aXNBbmQoKQorICAgICAgICAg
ICAgfHwgbG9naWNhbEltbWVkaWF0ZS0+cmQoKSAhPSBicmFuY2hUYXJnZXRSZWcKKyAgICAgICAg
ICAgIHx8IGxvZ2ljYWxJbW1lZGlhdGUtPnJuKCkgIT0gYnJhbmNoVGFyZ2V0UmVnCisgICAgICAg
ICAgICB8fCBsb2dpY2FsSW1tZWRpYXRlLT5jb21wdXRlSW1tZWRpYXRlKCkgIT0gZ19qc2NDb25m
aWcuaml0Q2FnZVBhcmFtcy5tYXNrKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIHVpbnRwdHJfdCBiYXNlQWRkcmVzcyA9IDA7CisKKyAgICAgICAgc2V0T3Bjb2RlRnJvbVBy
aW9yKDIpOworICAgICAgICBpZiAob3Bjb2RlR3JvdXBJREZvclByaW9ySW5zbigyKSA9PSBPcGNv
ZGVHcm91cElEOjpBNjRET3Bjb2RlTW92ZVdpZGUpIHsKKyAgICAgICAgICAgIEE2NERPcGNvZGVN
b3ZlV2lkZSogbW92ZVdpZGUgPSByZWludGVycHJldF9jYXN0PGNsYXNzIEE2NERPcGNvZGVNb3Zl
V2lkZSo+KHRoaXMpOworICAgICAgICAgICAgaWYgKCFtb3ZlV2lkZS0+aXM2NEJpdCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaml0QmFzZVJlZyA9IG1v
dmVXaWRlLT5yZCgpOworICAgICAgICAgICAgYmFzZUFkZHJlc3MgPSBzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KG1vdmVXaWRlLT5pbW1lZGlhdGUxNigpKSA8PCAobW92ZVdpZGUtPmh3KCkgKiAxNik7
CisgICAgICAgIH0gZWxzZSBpZiAob3Bjb2RlR3JvdXBJREZvclByaW9ySW5zbigyKSA9PSBPcGNv
ZGVHcm91cElEOjpBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0ZSkgeworICAgICAgICAgICAgQTY0
RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUqIG1vdmVCaXRtYXNrSW1tZWRpYXRlID0gcmVpbnRlcnBy
ZXRfY2FzdDxjbGFzcyBBNjRET3Bjb2RlTG9naWNhbEltbWVkaWF0ZSo+KHRoaXMpOworICAgICAg
ICAgICAgaWYgKCFtb3ZlQml0bWFza0ltbWVkaWF0ZS0+aXM2NEJpdCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKCFtb3ZlQml0bWFza0ltbWVkaWF0
ZS0+aXNNb3YoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
IGppdEJhc2VSZWcgPSBtb3ZlQml0bWFza0ltbWVkaWF0ZS0+cmQoKTsKKyAgICAgICAgICAgIGJh
c2VBZGRyZXNzID0gbW92ZUJpdG1hc2tJbW1lZGlhdGUtPmNvbXB1dGVJbW1lZGlhdGUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChiYXNlQWRkcmVzcyAhPSAocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKCkpID4+IChnX2pzY0Nv
bmZpZy5qaXRDYWdlUGFyYW1zLmxvZzJTaXplICsgMSkgPDwgMTYpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIHNldE9wY29kZUZyb21QcmlvcigxKTsKKyAgICAgICAgQTY0
RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyKiBhZGRTaGlmdGVkUmVnID0gcmVpbnRl
cnByZXRfY2FzdDxjbGFzcyBBNjRET3Bjb2RlQWRkU3VidHJhY3RTaGlmdGVkUmVnaXN0ZXIqPih0
aGlzKTsKKyAgICAgICAgaWYgKCFhZGRTaGlmdGVkUmVnLT5pczY0Qml0KCkgfHwgIWFkZFNoaWZ0
ZWRSZWctPmlzQW5kKCkKKyAgICAgICAgICAgIHx8IGFkZFNoaWZ0ZWRSZWctPnNoaWZ0KCkgfHwg
YWRkU2hpZnRlZFJlZy0+cmQoKSAhPSBicmFuY2hUYXJnZXRSZWcKKyAgICAgICAgICAgIHx8IGFk
ZFNoaWZ0ZWRSZWctPnJuKCkgIT0gYnJhbmNoVGFyZ2V0UmVnIHx8IGFkZFNoaWZ0ZWRSZWctPnJt
KCkgIT0gaml0QmFzZVJlZworICAgICAgICAgICAgfHwgYWRkU2hpZnRlZFJlZy0+aW1tZWRpYXRl
NigpICE9IHN0YXRpY19jYXN0PGludD4oZ19qc2NDb25maWcuaml0Q2FnZVBhcmFtcy5zaGlmdEFt
b3VudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UgLy8gbm90IEVOQUJMRShKSVRfQ0FH
RSkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QVJNNjREaXNhc3NlbWJsZXIKIAogI2VuZGlmIC8vIEVOQUJMRShBUk02NF9ESVNBU1NFTUJMRVIp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FSTTY0L0E2NERPcGNv
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0FS
TTY0L0E2NERPcGNvZGUuaAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9BUk02NC9BNjRET3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDY1ICsyNywyMTAgQEAKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQVJNNjREaXNhc3NlbWJsZXIgewogCisjZGVmaW5lIEZPUl9FQUNIX0FSTTY0X09QR1JPVVAo
bWFjcm8pIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJQYWlyLCAweDA4
LCAweDA5KSBcCisgICAgbWFjcm8oQTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZSwgMHgwOCkg
XAorICAgIG1hY3JvKEE2NERPcGNvZGVMb2dpY2FsU2hpZnRlZFJlZ2lzdGVyLCAweDBhKSBcCisg
ICAgbWFjcm8oQTY0RE9wY29kZUFkZFN1YnRyYWN0RXh0ZW5kZWRSZWdpc3RlciwgMHgwYikgXAor
ICAgIG1hY3JvKEE2NERPcGNvZGVBZGRTdWJ0cmFjdFNoaWZ0ZWRSZWdpc3RlciwgMHgwYikgXAor
ICAgIG1hY3JvKEE2NERPcGNvZGVTSU1EVGhyZWVTYW1lLCAweDBlKSBcCisgICAgbWFjcm8oQTY0
RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYXRlLCAweDExKSBcCisgICAgbWFjcm8oQTY0RE9wY29k
ZU1vdmVXaWRlLCAweDEyKSBcCisgICAgbWFjcm8oQTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUs
IDB4MTIpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlQml0ZmllbGQsIDB4MTMpIFwKKyAgICBtYWNy
byhBNjRET3Bjb2RlRXh0cmFjdCwgMHgxMykgXAorICAgIG1hY3JvKEE2NERPcGNvZGVVbmNvbmRp
dGlvbmFsQnJhbmNoSW1tZWRpYXRlLCAweDE0LCAweDE1LCAweDE2LCAweDE3KSBcCisgICAgbWFj
cm8oQTY0RE9wY29kZUNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlLCAweDE0LCAweDE1KSBcCisg
ICAgbWFjcm8oQTY0RE9wY29kZUNvbXBhcmVBbmRCcmFuY2hJbW1lZGlhdGUsIDB4MTQsIDB4MTUp
IFwKKyAgICBtYWNybyhBNjRPcGNvZGVFeGNlcHRpb25HZW5lcmF0aW9uLCAweDE0KSBcCisgICAg
bWFjcm8oQTY0RE9wY29kZUhpbnQsIDB4MTUpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlU3lzdGVt
U3luYywgMHgxNSkgXAorICAgIG1hY3JvKEE2NERPcGNvZGVNU1JJbW1lZGlhdGUsIDB4MTUpIFwK
KyAgICBtYWNybyhBNjRET3Bjb2RlTVNST3JNUlNSZWdpc3RlciwgMHgxNSkgXAorICAgIG1hY3Jv
KEE2NERPcGNvZGVTeXN0ZW1JbnN0LCAweDE1KSBcCisgICAgbWFjcm8oQTY0RE9wY29kZVVuY29u
ZGl0aW9uYWxCcmFuY2hSZWdpc3RlciwgMHgxNiwgMHgxNykgXAorICAgIG1hY3JvKEE2NERPcGNv
ZGVUZXN0QW5kQnJhbmNoSW1tZWRpYXRlLCAweDE2LCAweDE3KSBcCisgICAgbWFjcm8oQTY0RE9w
Y29kZUxvYWRTdG9yZUltbWVkaWF0ZSwgMHgxOCwgMHgxYykgXAorICAgIG1hY3JvKEE2NERPcGNv
ZGVMb2FkU3RvcmVSZWdpc3Rlck9mZnNldCwgMHgxOCwgMHgxYykgXAorICAgIG1hY3JvKEE2NERP
cGNvZGVMb2FkU3RvcmVBdXRoZW50aWNhdGVkLCAweDE4KSBcCisgICAgbWFjcm8oQTY0RE9wY29k
ZUxvYWRTdG9yZVVuc2lnbmVkSW1tZWRpYXRlLCAweDE5LCAweDFkKSBcCisgICAgbWFjcm8oQTY0
RE9wY29kZUNvbmRpdGlvbmFsU2VsZWN0LCAweDFhKSBcCisgICAgbWFjcm8oQTY0RE9wY29kZURh
dGFQcm9jZXNzaW5nMVNvdXJjZSwgMHgxYSkgXAorICAgIG1hY3JvKEE2NERPcGNvZGVEYXRhUHJv
Y2Vzc2luZzJTb3VyY2UsIDB4MWEpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlRGF0YVByb2Nlc3Np
bmczU291cmNlLCAweDFiKSBcCisgICAgbWFjcm8oQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRDb21w
YXJlLCAweDFlKSBcCisgICAgbWFjcm8oQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRDb25kaXRpb25h
bFNlbGVjdCwgMHgxZSkgXAorICAgIG1hY3JvKEE2NERPcGNvZGVGbG9hdGluZ1BvaW50RGF0YVBy
b2Nlc3NpbmcyU291cmNlLCAweDFlKSBcCisgICAgbWFjcm8oQTY0RE9wY29kZUZsb2F0aW5nUG9p
bnREYXRhUHJvY2Vzc2luZzFTb3VyY2UsIDB4MWUpIFwKKyAgICBtYWNybyhBNjRET3Bjb2RlRmxv
YXRpbmdGaXhlZFBvaW50Q29udmVyc2lvbnMsIDB4MWUpIFwKKyAgICBtYWNybyhBNjRET3Bjb2Rl
RmxvYXRpbmdQb2ludEludGVnZXJDb252ZXJzaW9ucywgMHgxZSkgXAorCisjZGVmaW5lIEFSTTY0
X09QR1JPVVBfRk9SV0FSRF9DTEFTUyhvcGNvZGVHcm91cCwgYml0czI0VG8yOC4uLikgY2xhc3Mg
b3Bjb2RlR3JvdXA7CisgICAgICAgIEZPUl9FQUNIX0FSTTY0X09QR1JPVVAoQVJNNjRfT1BHUk9V
UF9GT1JXQVJEX0NMQVNTKQorI3VuZGVmIEFSTTY0X09QR1JPVVBfRk9SV0FSRF9DTEFTUworCiBj
bGFzcyBBNjRET3Bjb2RlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHVpbnQzMl90IEE2NEluc3Ry
dWN0aW9uOworCisgICAgZW51bSBjbGFzcyBPcGNvZGVHcm91cElEIDogaW50IHsKKyNkZWZpbmUg
QVJNNjRfT1BHUk9VUF9FTlVNKG9wY29kZUdyb3VwLCBiaXRzMjRUbzI4Li4uKSBvcGNvZGVHcm91
cCwKKyAgICAgICAgRk9SX0VBQ0hfQVJNNjRfT1BHUk9VUChBUk02NF9PUEdST1VQX0VOVU0pCisj
dW5kZWYgQVJNNjRfT1BHUk9VUF9FTlVNCisgICAgICAgIE9wY29kZUdyb3VwQ291bnQsCisgICAg
ICAgIEludmFsaWRPcGNvZGVHcm91cCA9IC0xCisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX29wY29kZUdyb3VwQ291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQTY0RE9w
Y29kZTo6T3Bjb2RlR3JvdXBJRDo6T3Bjb2RlR3JvdXBDb3VudCk7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfbWF4T3Bjb2RlR3JvdXBOdW1iZXJzID0gNDsKKyAgICBzdHJ1Y3QgT3Bjb2Rl
R3JvdXAgeworICAgICAgICBBNjRET3Bjb2RlOjpPcGNvZGVHcm91cElEIG1fZ3JvdXBJRDsKKyAg
ICAgICAgdW5zaWduZWQgbV9vcGNvZGVHcm91cE51bWJlcnNbc19tYXhPcGNvZGVHcm91cE51bWJl
cnNdOworICAgICAgICBBNjRJbnN0cnVjdGlvbiBtX21hc2s7CisgICAgICAgIEE2NEluc3RydWN0
aW9uIG1fcGF0dGVybjsKKyAgICAgICAgY29uc3QgY2hhciogKCptX2Zvcm1hdCkoQTY0RE9wY29k
ZSopOworICAgICAgICBib29sICgqbV9pc1ZhbGlkKShBNjRET3Bjb2RlKik7CisgICAgICAgIAor
ICAgICAgICBPcGNvZGVHcm91cElEIGdyb3VwSUQoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbV9ncm91cElEOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgY2hhciog
Zm9ybWF0KEE2NERPcGNvZGUqIHRoaXNPYmopIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX2Zvcm1hdCh0aGlzT2JqKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaXNW
YWxpZChBNjRET3Bjb2RlKiB0aGlzT2JqKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gbV9pc1ZhbGlkKHRoaXNPYmopOworICAgICAgICB9CisgICAgfTsKKwogcHJpdmF0ZToK
LSAgICBjbGFzcyBPcGNvZGVHcm91cCB7CisgICAgY2xhc3MgT3Bjb2RlR3JvdXBMaXN0Tm9kZSB7
CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAg
T3Bjb2RlR3JvdXAodWludDMyX3Qgb3Bjb2RlTWFzaywgdWludDMyX3Qgb3Bjb2RlUGF0dGVybiwg
Y29uc3QgY2hhciogKCpmb3JtYXQpKEE2NERPcGNvZGUqKSkKKyAgICAgICAgT3Bjb2RlR3JvdXBM
aXN0Tm9kZShBNjRJbnN0cnVjdGlvbiBvcGNvZGVNYXNrLCBBNjRJbnN0cnVjdGlvbiBvcGNvZGVQ
YXR0ZXJuLCBjb25zdCBPcGNvZGVHcm91cCYgb3Bjb2RlR3JvdXApCiAgICAgICAgICAgICA6IG1f
b3Bjb2RlTWFzayhvcGNvZGVNYXNrKQogICAgICAgICAgICAgLCBtX29wY29kZVBhdHRlcm4ob3Bj
b2RlUGF0dGVybikKLSAgICAgICAgICAgICwgbV9mb3JtYXQoZm9ybWF0KQorICAgICAgICAgICAg
LCBtX29wY29kZUdyb3VwKG9wY29kZUdyb3VwKQogICAgICAgICAgICAgLCBtX25leHQoMCkKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXROZXh0KE9wY29kZUdyb3VwKiBu
ZXh0KQorICAgICAgICB2b2lkIHNldE5leHQoT3Bjb2RlR3JvdXBMaXN0Tm9kZSogbmV4dCkKICAg
ICAgICAgewogICAgICAgICAgICAgbV9uZXh0ID0gbmV4dDsKICAgICAgICAgfQogCi0gICAgICAg
IE9wY29kZUdyb3VwKiBuZXh0KCkKKyAgICAgICAgT3Bjb2RlR3JvdXBMaXN0Tm9kZSogbmV4dCgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX25leHQ7CiAgICAgICAgIH0KIAotICAg
ICAgICBib29sIG1hdGNoZXModWludDMyX3Qgb3Bjb2RlKQorICAgICAgICBjb25zdCBPcGNvZGVH
cm91cCogZ3JvdXAoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKG9wY29kZSAmIG1f
b3Bjb2RlTWFzaykgPT0gbV9vcGNvZGVQYXR0ZXJuOworICAgICAgICAgICAgcmV0dXJuICZtX29w
Y29kZUdyb3VwOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgY2hhciogZm9ybWF0KEE2NERP
cGNvZGUqIHRoaXNPYmopCisgICAgICAgIE9wY29kZUdyb3VwSUQgZ3JvdXBJRCgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBtX2Zvcm1hdCh0aGlzT2JqKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX29wY29kZUdyb3VwLm1fZ3JvdXBJRDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wg
bWF0Y2hlcyhBNjRJbnN0cnVjdGlvbiBvcGNvZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiAob3Bjb2RlICYgbV9vcGNvZGVNYXNrKSA9PSBtX29wY29kZVBhdHRlcm47CiAgICAgICAg
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHVpbnQzMl90IG1fb3Bjb2RlTWFzazsKLSAgICAg
ICAgdWludDMyX3QgbV9vcGNvZGVQYXR0ZXJuOwotICAgICAgICBjb25zdCBjaGFyKiAoKm1fZm9y
bWF0KShBNjRET3Bjb2RlKik7Ci0gICAgICAgIE9wY29kZUdyb3VwKiBtX25leHQ7CisgICAgICAg
IEE2NEluc3RydWN0aW9uIG1fb3Bjb2RlTWFzazsKKyAgICAgICAgQTY0SW5zdHJ1Y3Rpb24gbV9v
cGNvZGVQYXR0ZXJuOworICAgICAgICBjb25zdCBPcGNvZGVHcm91cCYgbV9vcGNvZGVHcm91cDsK
KyAgICAgICAgT3Bjb2RlR3JvdXBMaXN0Tm9kZSogbV9uZXh0OwogICAgIH07CiAKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBpbml0KCk7CiAKLSAgICBBNjRET3Bjb2RlKCkKLSAgICAgICAgOiBt
X29wY29kZSgwKQorICAgIEE2NERPcGNvZGUoQTY0SW5zdHJ1Y3Rpb24qIHN0YXJ0QWRkcmVzcywg
c2l6ZV90IGNvdW50KQorICAgICAgICA6IG1fc3RhcnRBZGRyZXNzKHN0YXJ0QWRkcmVzcykKKyAg
ICAgICAgLCBtX29wY29kZSgwKQogICAgICAgICAsIG1fYnVmZmVyT2Zmc2V0KDApCiAgICAgewor
ICAgICAgICBtX2VuZEFkZHJlc3MgPSBtX3N0YXJ0QWRkcmVzcyArIGNvdW50OwogICAgICAgICBp
bml0KCk7Ci0gICAgICAgIG1fZm9ybWF0QnVmZmVyWzBdID0gJ1wwJzsKKyAgICAgICAgcmVzZXRG
b3JtYXQoKTsKICAgICB9CiAKLSAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJsZSh1aW50MzJfdCog
Y3VycmVudFBDKTsKKyAgICBBNjRET3Bjb2RlOjpPcGNvZGVHcm91cElEIG9wY29kZUdyb3VwSUQo
QTY0SW5zdHJ1Y3Rpb24gaW5zbik7CisgICAgQTY0RE9wY29kZTo6T3Bjb2RlR3JvdXBJRCBvcGNv
ZGVHcm91cElERm9yUHJpb3JJbnNuKHVuc2lnbmVkIHByaW9yT2Zmc2V0KTsKKyAgICBjb25zdCBj
aGFyKiBkaXNhc3NlbWJsZShBNjRJbnN0cnVjdGlvbiogY3VycmVudFBDKTsKKyAgICBib29sIGlz
VmFsaWRJbnNuKEE2NEluc3RydWN0aW9uKiBwYywgQTY0SW5zdHJ1Y3Rpb24gaW5zbik7CisKKyAg
ICBib29sIGlzNjRCaXQoKSB7IHJldHVybiBtX29wY29kZSAmIDB4ODAwMDAwMDA7IH0KKyAgICB1
bnNpZ25lZCBzaXplKCkgeyByZXR1cm4gbV9vcGNvZGUgPj4gMzA7IH0KKyAgICB1bnNpZ25lZCBv
cHRpb24oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTMpICYgMHg3OyB9CisgICAgdW5zaWduZWQg
cmQoKSB7IHJldHVybiBtX29wY29kZSAmIDB4MWY7IH0KKyAgICB1bnNpZ25lZCBydCgpIHsgcmV0
dXJuIG1fb3Bjb2RlICYgMHgxZjsgfQorICAgIHVuc2lnbmVkIHJuKCkgeyByZXR1cm4gKG1fb3Bj
b2RlID4+IDUpICYgMHgxZjsgfQorICAgIHVuc2lnbmVkIHJtKCkgeyByZXR1cm4gKG1fb3Bjb2Rl
ID4+IDE2KSAmIDB4MWY7IH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgc2V0UENBbmRPcGNvZGUo
dWludDMyX3QqLCB1aW50MzJfdCk7CisgICAgZnJpZW5kIGNsYXNzIFNlY29uZGFyeUluc3RydWN0
aW9uU2NvcGU7CisKKyAgICB2b2lkIHNldFBDQW5kT3Bjb2RlKEE2NEluc3RydWN0aW9uKiwgQTY0
SW5zdHJ1Y3Rpb24pOworCisgICAgdm9pZCBzZXRPcGNvZGVGcm9tUHJpb3IodW5zaWduZWQgb2Zm
c2V0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChtX2N1cnJlbnRQQyAtIG9mZnNldCkgPj0gbV9z
dGFydEFkZHJlc3MpOworICAgICAgICBzZXRPcGNvZGUoKihtX2N1cnJlbnRQQyAtIG9mZnNldCkp
OworICAgIH0KKworICAgIHZvaWQgc2V0T3Bjb2RlKEE2NEluc3RydWN0aW9uIG9wY29kZSkgeyBt
X29wY29kZSA9IG9wY29kZTsgfQorCisgICAgQTY0SW5zdHJ1Y3Rpb24qIGN1cnJlbnRQQygpIHsg
cmV0dXJuIG1fY3VycmVudFBDOyB9CisKKyAgICBib29sIHBjTWFza2VkT2Zmc2V0SXModWludHB0
cl90IG1hc2ssIHVpbnRwdHJfdCBvZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjdXJyZW50UEMoKSkgJiBtYXNrKSA9PSBvZmZzZXQ7Cisg
ICAgfQorCisgICAgQTY0SW5zdHJ1Y3Rpb24gY3VycmVudE9wY29kZSgpIHsgcmV0dXJuIG1fb3Bj
b2RlOyB9CisKKyAgICBBNjRJbnN0cnVjdGlvbiogcGNSZWxhdGl2ZUFkZHJlc3MoaW50MzJfdCBp
bW1lZGlhdGUpCisgICAgeworICAgICAgICByZXR1cm4gY3VycmVudFBDKCkgKyBpbW1lZGlhdGU7
CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkSklUVGFyZ2V0KHZvaWQqIGFkZHIpOworCisgICAg
dm9pZCByZXNldEZvcm1hdCgpCisgICAgeworICAgICAgICBtX2J1ZmZlck9mZnNldCA9IDA7Cisg
ICAgICAgIG1fZm9ybWF0QnVmZmVyWzBdID0gJ1wwJzsKKyAgICB9CisKKyAgICBjb25zdCBPcGNv
ZGVHcm91cCogb3Bjb2RlR3JvdXAoQTY0SW5zdHJ1Y3Rpb24gaW5zbikKKyAgICB7CisgICAgICAg
IE9wY29kZUdyb3VwTGlzdE5vZGUqIG9wR3JvdXBOb2RlID0gc19vcGNvZGVUYWJsZVtvcGNvZGVH
cm91cE51bWJlcihpbnNuKV07CisKKyAgICAgICAgd2hpbGUgKG9wR3JvdXBOb2RlKSB7CisgICAg
ICAgICAgICBpZiAob3BHcm91cE5vZGUtPm1hdGNoZXMoaW5zbikpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG9wR3JvdXBOb2RlLT5ncm91cCgpOworICAgICAgICAgICAgb3BHcm91cE5vZGUgPSBv
cEdyb3VwTm9kZS0+bmV4dCgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCkg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX2NvbmRp
dGlvbk5hbWVzWzE2XTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19zaGlmdE5hbWVz
WzRdOwpAQCAtMTAyLDE1ICsyNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBzX0ZQ
UmVnaXN0ZXJQcmVmaXhbRlBSZWdpc3RlclNpemVdOwogICAgIH0KIAotICAgIHVuc2lnbmVkIG9w
Y29kZUdyb3VwTnVtYmVyKHVpbnQzMl90IG9wY29kZSkgeyByZXR1cm4gKG9wY29kZSA+PiAyNCkg
JiAweDFmOyB9Ci0KLSAgICBib29sIGlzNjRCaXQoKSB7IHJldHVybiBtX29wY29kZSAmIDB4ODAw
MDAwMDA7IH0KLSAgICB1bnNpZ25lZCBzaXplKCkgeyByZXR1cm4gbV9vcGNvZGUgPj4gMzA7IH0K
LSAgICB1bnNpZ25lZCBvcHRpb24oKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTMpICYgMHg3OyB9
Ci0gICAgdW5zaWduZWQgcmQoKSB7IHJldHVybiBtX29wY29kZSAmIDB4MWY7IH0KLSAgICB1bnNp
Z25lZCBydCgpIHsgcmV0dXJuIG1fb3Bjb2RlICYgMHgxZjsgfQotICAgIHVuc2lnbmVkIHJuKCkg
eyByZXR1cm4gKG1fb3Bjb2RlID4+IDUpICYgMHgxZjsgfQotICAgIHVuc2lnbmVkIHJtKCkgeyBy
ZXR1cm4gKG1fb3Bjb2RlID4+IDE2KSAmIDB4MWY7IH0KKyAgICB1bnNpZ25lZCBvcGNvZGVHcm91
cE51bWJlcihBNjRJbnN0cnVjdGlvbiBvcGNvZGUpIHsgcmV0dXJuIChvcGNvZGUgPj4gMjQpICYg
MHgxZjsgfQogCiAgICAgdm9pZCBidWZmZXJQcmludGYoY29uc3QgY2hhciogZm9ybWF0LCAuLi4p
IFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpOwogCkBAIC0xMTksNiArMjU2LDE0IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgYnVmZmVyUHJpbnRmKCIgICAlLTguOHMiLCBpbnN0cnVjdGlvbk5hbWUp
OwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kSW5zdHJ1Y3Rpb25OYW1lV2l0aE1vZGlmaWVyKGNv
bnN0IGNoYXIqIGluc3RydWN0aW9uTmFtZSwgY29uc3QgY2hhciogbW9kaWZpZXIpCisgICAgewor
ICAgICAgICBidWZmZXJQcmludGYoIiAgICVzLiVzICIsIGluc3RydWN0aW9uTmFtZSwgbW9kaWZp
ZXIpOworICAgICAgICBzaXplX3QgaW5zbldpZHRoID0gc3RybGVuKGluc3RydWN0aW9uTmFtZSkg
KyBzdHJsZW4obW9kaWZpZXIpICsgMjsKKyAgICAgICAgZm9yICg7IGluc25XaWR0aCA8IDg7IGlu
c25XaWR0aCsrKQorICAgICAgICAgICAgYXBwZW5kQ2hhcmFjdGVyKCcgJyk7CisgICAgfQorCiAg
ICAgdm9pZCBhcHBlbmRSZWdpc3Rlck5hbWUodW5zaWduZWQgcmVnaXN0ZXJOdW1iZXIsIGJvb2wg
aXM2NEJpdCA9IHRydWUpOwogICAgIHZvaWQgYXBwZW5kU1BPclJlZ2lzdGVyTmFtZSh1bnNpZ25l
ZCByZWdpc3Rlck51bWJlciwgYm9vbCBpczY0Qml0ID0gdHJ1ZSkKICAgICB7CkBAIC0xNDAsNiAr
Mjg1LDExIEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgYXBwZW5kRlBSZWdpc3Rlck5hbWUodW5z
aWduZWQgcmVnaXN0ZXJOdW1iZXIsIHVuc2lnbmVkIHJlZ2lzdGVyU2l6ZSk7CiAKKyAgICB2b2lk
IGFwcGVuZFNJTURSZWdpc3Rlck5hbWUodW5zaWduZWQgcmVnaXN0ZXJOdW1iZXIpCisgICAgewor
ICAgICAgICBidWZmZXJQcmludGYoInYldSIsIHJlZ2lzdGVyTnVtYmVyKTsKKyAgICB9CisKICAg
ICB2b2lkIGFwcGVuZFNlcGFyYXRvcigpCiAgICAgewogICAgICAgICBidWZmZXJQcmludGYoIiwg
Iik7CkBAIC0xODUsNyArMzM1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBidWZmZXJQcmludGYo
IiMweCUiIFBSSXg2NCwgaW1tZWRpYXRlKTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZFBDUmVs
YXRpdmVPZmZzZXQodWludDMyX3QqIHBjLCBpbnQzMl90IGltbWVkaWF0ZSkKKyAgICB2b2lkIGFw
cGVuZFBDUmVsYXRpdmVPZmZzZXQoQTY0SW5zdHJ1Y3Rpb24qIHBjLCBpbnQzMl90IGltbWVkaWF0
ZSkKICAgICB7CiAgICAgICAgIGJ1ZmZlclByaW50ZigiMHglIiBQUkl4NjQsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDY0X3Q+KHBjICsgaW1tZWRpYXRlKSk7CiAgICAgfQpAQCAtMTk4LDE5ICszNDgs
NDMgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IGJ1ZmZlclNpemUgPSA4
MTsKIAogICAgIGNoYXIgbV9mb3JtYXRCdWZmZXJbYnVmZmVyU2l6ZV07Ci0gICAgdWludDMyX3Qq
IG1fY3VycmVudFBDOwotICAgIHVpbnQzMl90IG1fb3Bjb2RlOworICAgIEE2NEluc3RydWN0aW9u
KiBtX3N0YXJ0QWRkcmVzczsKKyAgICBBNjRJbnN0cnVjdGlvbiogbV9lbmRBZGRyZXNzOworICAg
IEE2NEluc3RydWN0aW9uKiBtX2N1cnJlbnRQQzsKKyAgICBBNjRJbnN0cnVjdGlvbiBtX29wY29k
ZTsKICAgICBpbnQgbV9idWZmZXJPZmZzZXQ7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIE9wY29k
ZUdyb3VwKiBvcGNvZGVUYWJsZVszMl07CisgICAgc3RhdGljIGNvbnN0IE9wY29kZUdyb3VwIHNf
b3Bjb2RlR3JvdXBbc19vcGNvZGVHcm91cENvdW50XTsKKyAgICBzdGF0aWMgT3Bjb2RlR3JvdXBM
aXN0Tm9kZSogc19vcGNvZGVUYWJsZVszMl07CiAKICAgICBzdGF0aWMgYm9vbCBzX2luaXRpYWxp
emVkOwogfTsKIAorY2xhc3MgU2Vjb25kYXJ5SW5zdHJ1Y3Rpb25TY29wZSB7CitwdWJsaWM6Cisg
ICAgU2Vjb25kYXJ5SW5zdHJ1Y3Rpb25TY29wZShBNjRET3Bjb2RlJiBkaXNhc3NlbWJsZXIpCisg
ICAgICAgIDogbV9kaXNhc3NlbWJsZXIoZGlzYXNzZW1ibGVyKQorICAgICAgICAsIG1fc2F2ZWRP
cGNvZGUoZGlzYXNzZW1ibGVyLmN1cnJlbnRPcGNvZGUoKSkKKyAgICB7CisgICAgfQorCisgICAg
flNlY29uZGFyeUluc3RydWN0aW9uU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9kaXNhc3NlbWJs
ZXIuc2V0T3Bjb2RlKG1fZGlzYXNzZW1ibGVyLmN1cnJlbnRPcGNvZGUoKSk7CisgICAgfQorCitw
cml2YXRlOgorICAgIEE2NERPcGNvZGUmIG1fZGlzYXNzZW1ibGVyOworICAgIEE2NERPcGNvZGU6
OkE2NEluc3RydWN0aW9uIG1fc2F2ZWRPcGNvZGU7Cit9OworCiAjZGVmaW5lIERFRklORV9TVEFU
SUNfRk9STUFUKGtsYXNzLCB0aGlzT2JqKSBcCiAgICBzdGF0aWMgY29uc3QgY2hhciogZm9ybWF0
KEE2NERPcGNvZGUqIHRoaXNPYmopIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IGtsYXNzICo+
KHRoaXNPYmopLT5mb3JtYXQoKTsgfQogCisjZGVmaW5lIERFRklORV9TVEFUSUNfSVNfVkFMSUQo
a2xhc3MsIHRoaXNPYmopIFwKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkKEE2NERPcGNvZGUqIHRo
aXNPYmopIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8IGtsYXNzICo+KHRoaXNPYmopLT5pc1Zh
bGlkKCk7IH0KKwogY2xhc3MgQTY0RE9wY29kZUFkZFN1YnRyYWN0IDogcHVibGljIEE2NERPcGNv
ZGUgewogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19vcE5hbWVzWzRd
OwpAQCAtMjI3LDEyICs0MDEsMTQgQEAgcHVibGljOgogCiBjbGFzcyBBNjRET3Bjb2RlQWRkU3Vi
dHJhY3RJbW1lZGlhdGUgOiBwdWJsaWMgQTY0RE9wY29kZUFkZFN1YnRyYWN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAweDFmMDAwMDAwOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4MTEwMDAwMDA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHgxZjAwMDAwMDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweDExMDAwMDAwOwogCiAgICAgREVG
SU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUFkZFN1YnRyYWN0SW1tZWRpYXRlLCB0aGlzT2Jq
KTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVBZGRTdWJ0cmFjdEltbWVk
aWF0ZSwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBib29sIGlz
VmFsaWQoKTsKIAogICAgIGJvb2wgaXNNb3ZTUCgpIHsgcmV0dXJuICghb3BBbmRTKCkgJiYgIWlt
bWVkMTIoKSAmJiAoKHJkKCkgPT0gMzEpIHx8IHJuKCkgPT0gMzEpKTsgfQogICAgIHVuc2lnbmVk
IHNoaWZ0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDIyKSAmIDB4MzsgfQpAQCAtMjQxLDI1ICs0
MTcsMzAgQEAgcHVibGljOgogCiBjbGFzcyBBNjRET3Bjb2RlQWRkU3VidHJhY3RFeHRlbmRlZFJl
Z2lzdGVyIDogcHVibGljIEE2NERPcGNvZGVBZGRTdWJ0cmFjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHgxZmUwMDAwMDsKLSAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDBiMjAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4
cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4MWZlMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgwYjIwMDAwMDsKIAogICAgIERFRklORV9TVEFU
SUNfRk9STUFUKEE2NERPcGNvZGVBZGRTdWJ0cmFjdEV4dGVuZGVkUmVnaXN0ZXIsIHRoaXNPYmop
OworICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZUFkZFN1YnRyYWN0RXh0ZW5k
ZWRSZWdpc3RlciwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBi
b29sIGlzVmFsaWQoKTsKIAogICAgIHVuc2lnbmVkIGltbWVkaWF0ZTMoKSB7IHJldHVybiAobV9v
cGNvZGUgPj4gMTApICYgMHg3OyB9CiB9OwogCiBjbGFzcyBBNjRET3Bjb2RlQWRkU3VidHJhY3RT
aGlmdGVkUmVnaXN0ZXIgOiBwdWJsaWMgQTY0RE9wY29kZUFkZFN1YnRyYWN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAweDFmMjAwMDAwOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4MGIwMDAwMDA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHgxZjIwMDAwMDsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweDBiMDAwMDAwOwogCiAgICAgREVG
SU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUFkZFN1YnRyYWN0U2hpZnRlZFJlZ2lzdGVyLCB0
aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVBZGRTdWJ0cmFj
dFNoaWZ0ZWRSZWdpc3RlciwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsK
KyAgICBib29sIGlzVmFsaWQoKTsKIAorICAgIGJvb2wgaXNBbmQoKSB7IHJldHVybiAhb3BBbmRT
KCk7IH0KICAgICBib29sIGlzTmVnKCkgeyByZXR1cm4gKG9wKCkgJiYgcm4oKSA9PSAzMSk7IH0K
ICAgICBjb25zdCBjaGFyKiBuZWdOYW1lKCkgeyByZXR1cm4gc0JpdCgpID8gIm5lZ3MiIDogIm5l
ZyI7IH0KICAgICB1bnNpZ25lZCBzaGlmdCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAyMikgJiAw
eDM7IH0KQEAgLTI3NCwxMiArNDU1LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IHNfZXh0cmFjdE9wTmFtZXNbM107CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IG1hc2sgPSAweDFmODAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgcGF0dGVybiA9IDB4MTMwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJ
bnN0cnVjdGlvbiBtYXNrID0gMHgxZjgwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NElu
c3RydWN0aW9uIHBhdHRlcm4gPSAweDEzMDAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JN
QVQoQTY0RE9wY29kZUJpdGZpZWxkLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZB
TElEKEE2NERPcGNvZGVCaXRmaWVsZCwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3Jt
YXQoKTsKKyAgICBib29sIGlzVmFsaWQoKTsKIAogICAgIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsg
cmV0dXJuIHNfb3BOYW1lc1tvcGMoKV07IH0KICAgICBjb25zdCBjaGFyKiBleHRlbmRQc2V1ZG9P
cE5hbWVzKHVuc2lnbmVkIG9wU2l6ZSkgeyByZXR1cm4gc19leHRlbmRQc2V1ZG9PcE5hbWVzW29w
YygpXVtvcFNpemVdOyB9CkBAIC0yOTQsMTIgKzQ3NywxNCBAQCBwdWJsaWM6CiAKIGNsYXNzIEE2
NERPcGNvZGVDb21wYXJlQW5kQnJhbmNoSW1tZWRpYXRlIDogcHVibGljIEE2NERPcGNvZGUgewog
cHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4N2UwMDAwMDA7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgzNDAwMDAwMDsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDdlMDAwMDAwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MzQwMDAwMDA7CiAK
ICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlQ29tcGFyZUFuZEJyYW5jaEltbWVk
aWF0ZSwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlQ29t
cGFyZUFuZEJyYW5jaEltbWVkaWF0ZSwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3Jt
YXQoKTsKKyAgICBib29sIGlzVmFsaWQoKTsKIAogICAgIHVuc2lnbmVkIG9wQml0KCkgeyByZXR1
cm4gKG1fb3Bjb2RlID4+IDI0KSAmIDB4MTsgfQogICAgIGludCBpbW1lZGlhdGUxOSgpIHsgcmV0
dXJuIChzdGF0aWNfY2FzdDxpbnQ+KChtX29wY29kZSA+PiA1KSAmIDB4N2ZmZmYpIDw8IDEzKSA+
PiAxMzsgfQpAQCAtMzA3LDEyICs0OTIsMTQgQEAgcHVibGljOgogCiBjbGFzcyBBNjRET3Bjb2Rl
Q29uZGl0aW9uYWxCcmFuY2hJbW1lZGlhdGUgOiBwdWJsaWMgQTY0RE9wY29kZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHhmZjAwMDAxMDsKLSAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDU0MDAwMDAwOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4ZmYwMDAwMTA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHg1NDAwMDAwMDsKIAogICAgIERF
RklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVDb25kaXRpb25hbEJyYW5jaEltbWVkaWF0ZSwg
dGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlQ29uZGl0aW9u
YWxCcmFuY2hJbW1lZGlhdGUsIHRoaXNPYmopOwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7
CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICB1bnNpZ25lZCBjb25kaXRpb24oKSB7IHJldHVy
biBtX29wY29kZSAmIDB4ZjsgfQogICAgIGludCBpbW1lZGlhdGUxOSgpIHsgcmV0dXJuIChzdGF0
aWNfY2FzdDxpbnQ+KChtX29wY29kZSA+PiA1KSAmIDB4N2ZmZmYpIDw8IDEzKSA+PiAxMzsgfQpA
QCAtMzIzLDEyICs1MTAsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19vcE5hbWVzWzRdOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBtYXNrID0gMHgxZmUwMDAwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRl
cm4gPSAweDFhODAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFz
ayA9IDB4MWZlMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0
ZXJuID0gMHgxYTgwMDAwMDsKIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVD
b25kaXRpb25hbFNlbGVjdCwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChB
NjRET3Bjb2RlQ29uZGl0aW9uYWxTZWxlY3QsIHRoaXNPYmopOwogCiAgICAgY29uc3QgY2hhciog
Zm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICBjb25zdCBjaGFyKiBvcE5hbWUo
KSB7IHJldHVybiBzX29wTmFtZXNbb3BOdW0oKV07IH0KICAgICB1bnNpZ25lZCBvcE51bSgpIHsg
cmV0dXJuIChvcCgpIDw8IDEgfCAob3AyKCkgJiAweDEpKTsgfQpAQCAtMzQ0LDEzICs1MzMsMTUg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19wYWNBdXRPcE5hbWVz
WzE4XTsKICAgICAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sg
PSAweDVmZTAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4
NWFjMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHg1
ZmUwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAw
eDVhYzAwMDAwOwogICAgIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVEYXRh
UHJvY2Vzc2luZzFTb3VyY2UsIHRoaXNPYmopOwotICAgIAorICAgIERFRklORV9TVEFUSUNfSVNf
VkFMSUQoQTY0RE9wY29kZURhdGFQcm9jZXNzaW5nMVNvdXJjZSwgdGhpc09iaik7CisKICAgICBj
b25zdCBjaGFyKiBmb3JtYXQoKTsKLSAgICAKKyAgICBib29sIGlzVmFsaWQoKTsKKwogICAgIGNv
bnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuIHNfb3BOYW1lc1tvcE5hbWVJbmRleCgpXTsgfQog
ICAgIHVuc2lnbmVkIHNCaXQoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMjkpICYgMHgxOyB9CiAg
ICAgdW5zaWduZWQgb3BDb2RlKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDB4M2Y7IH0K
QEAgLTM2MywxMiArNTU0LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IHNfb3BOYW1lc1sxNl07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQz
Ml90IG1hc2sgPSAweDVmZTAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0
dGVybiA9IDB4MWFjMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBt
YXNrID0gMHg1ZmUwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBh
dHRlcm4gPSAweDFhYzAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29k
ZURhdGFQcm9jZXNzaW5nMlNvdXJjZSwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19W
QUxJRChBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmcyU291cmNlLCB0aGlzT2JqKTsKIAogICAgIGNv
bnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgY29uc3QgY2hh
ciogb3BOYW1lKCkgeyByZXR1cm4gc19vcE5hbWVzW29wTmFtZUluZGV4KCldOyB9CiAgICAgdW5z
aWduZWQgc0JpdCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAyOSkgJiAweDE7IH0KQEAgLTM4Miwx
MiArNTc1LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfcHNl
dWRvT3BOYW1lc1sxNl07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1hc2sgPSAweDFmMDAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVy
biA9IDB4MWIwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNr
ID0gMHgxZjAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRl
cm4gPSAweDFiMDAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZURh
dGFQcm9jZXNzaW5nM1NvdXJjZSwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJ
RChBNjRET3Bjb2RlRGF0YVByb2Nlc3NpbmczU291cmNlLCB0aGlzT2JqKTsKIAogICAgIGNvbnN0
IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgY29uc3QgY2hhciog
b3BOYW1lKCkgeyByZXR1cm4gcmEoKSA9PSAzMSA/IHNfcHNldWRvT3BOYW1lc1tvcE51bSgpICYg
MHhmXSA6IHNfb3BOYW1lc1tvcE51bSgpICYgMHhmXTsgfQogICAgIHVuc2lnbmVkIHJhKCkgeyBy
ZXR1cm4gKG1fb3Bjb2RlID4+IDEwKSAmIDB4MWY7IH0KQEAgLTM5OSwxMiArNTk0LDE0IEBAIHB1
YmxpYzoKIAogY2xhc3MgQTY0T3Bjb2RlRXhjZXB0aW9uR2VuZXJhdGlvbiA6IHB1YmxpYyBBNjRE
T3Bjb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAw
eGZmMDAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4ZDQw
MDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHhmZjAw
MDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweGQ0
MDAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0T3Bjb2RlRXhjZXB0aW9uR2Vu
ZXJhdGlvbiwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRPcGNvZGVF
eGNlcHRpb25HZW5lcmF0aW9uLCB0aGlzT2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgp
OworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgdW5zaWduZWQgb3BjKCkgeyByZXR1cm4gKG1f
b3Bjb2RlPj4yMSkgJiAweDc7IH0KICAgICB1bnNpZ25lZCBvcDIoKSB7IHJldHVybiAobV9vcGNv
ZGU+PjIpICYgMHg3OyB9CkBAIC00MTQsMTIgKzYxMSwxNCBAQCBwdWJsaWM6CiAKIGNsYXNzIEE2
NERPcGNvZGVFeHRyYWN0IDogcHVibGljIEE2NERPcGNvZGUgewogcHVibGljOgotICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4MWY4MDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxMzgwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDFmODAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIg
QTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MTM4MDAwMDA7CiAKICAgICBERUZJTkVfU1RBVElD
X0ZPUk1BVChBNjRET3Bjb2RlRXh0cmFjdCwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19J
U19WQUxJRChBNjRET3Bjb2RlRXh0cmFjdCwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBm
b3JtYXQoKTsKKyAgICBib29sIGlzVmFsaWQoKTsKIAogICAgIHVuc2lnbmVkIG9wMjEoKSB7IHJl
dHVybiAobV9vcGNvZGUgPj4gMjkpICYgMHgzOyB9CiAgICAgdW5zaWduZWQgbkJpdCgpIHsgcmV0
dXJuIChtX29wY29kZSA+PiAyMikgJiAweDE7IH0KQEAgLTQzOSwxMiArNjM4LDE0IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BOYW1lc1sxNl07CiAgICAgCiBw
dWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHg1ZjIwM2MwMDsK
LSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDFlMjAyMDAwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4NWYyMDNjMDA7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgxZTIwMjAwMDsKICAg
ICAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlRmxvYXRpbmdQb2ludENvbXBh
cmUsIHRoaXNPYmopOwotICAgIAorICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29k
ZUZsb2F0aW5nUG9pbnRDb21wYXJlLCB0aGlzT2JqKTsKKwogICAgIGNvbnN0IGNoYXIqIGZvcm1h
dCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgY29uc3QgY2hhciogb3BOYW1lKCkgeyBy
ZXR1cm4gKG9wTnVtKCkgJiAweDIpID8gImZjbXBlIiA6ICJmY21wIjsgfQogCkBAIC00NTUsMTMg
KzY1NiwxNSBAQCBwdWJsaWM6CiAKIGNsYXNzIEE2NERPcGNvZGVGbG9hdGluZ1BvaW50Q29uZGl0
aW9uYWxTZWxlY3QgOiBwdWJsaWMgQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRPcHMgewogcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4NWYyMDBjMDA7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxZTIwMGMwMDsKKyAgICBzdGF0
aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDVmMjAwYzAwOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MWUyMDBjMDA7CiAgICAgCiAg
ICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRDb25kaXRpb25h
bFNlbGVjdCwgdGhpc09iaik7Ci0gICAgCisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRE
T3Bjb2RlRmxvYXRpbmdQb2ludENvbmRpdGlvbmFsU2VsZWN0LCB0aGlzT2JqKTsKKwogICAgIGNv
bnN0IGNoYXIqIGZvcm1hdCgpOwotICAgIAorICAgIGJvb2wgaXNWYWxpZCgpOworCiAgICAgY29u
c3QgY2hhciogb3BOYW1lKCkgeyByZXR1cm4gImZjc2VsIjsgfQogICAgIAogICAgIHVuc2lnbmVk
IGNvbmRpdGlvbigpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMikgJiAweGY7IH0KQEAgLTQ3Miwx
MiArNjc1LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BO
YW1lc1sxNl07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sg
PSAweDVmMjA3YzAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4
MWUyMDQwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHg1
ZjIwN2MwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAw
eDFlMjA0MDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUZsb2F0aW5n
UG9pbnREYXRhUHJvY2Vzc2luZzFTb3VyY2UsIHRoaXNPYmopOworICAgIERFRklORV9TVEFUSUNf
SVNfVkFMSUQoQTY0RE9wY29kZUZsb2F0aW5nUG9pbnREYXRhUHJvY2Vzc2luZzFTb3VyY2UsIHRo
aXNPYmopOwogCiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7
CiAKICAgICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVybiBzX29wTmFtZXNbb3BOdW0oKV07
IH0KIApAQCAtNDg5LDEyICs2OTQsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3Qgc19vcE5hbWVzWzE2XTsKIAogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgbWFzayA9IDB4NWYyMDA4MDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJf
dCBwYXR0ZXJuID0gMHgxZTIwMDgwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0
aW9uIG1hc2sgPSAweDVmMjAwODAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rp
b24gcGF0dGVybiA9IDB4MWUyMDA4MDA7CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRE
T3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNzaW5nMlNvdXJjZSwgdGhpc09iaik7CisgICAg
REVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlRmxvYXRpbmdQb2ludERhdGFQcm9jZXNz
aW5nMlNvdXJjZSwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3JtYXQoKTsKKyAgICBi
b29sIGlzVmFsaWQoKTsKIAogICAgIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuIHNfb3BO
YW1lc1tvcE51bSgpXTsgfQogCkBAIC01MDYsMTMgKzcxMywxNSBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX29wTmFtZXNbNF07CiAgICAgCiBwdWJsaWM6Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHg1ZjIwMDAwMDsKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDFlMDAwMDAwOworICAgIHN0YXRpYyBjb25z
dGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4NWYyMDAwMDA7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgxZTAwMDAwMDsKICAgICAKICAgICBERUZJ
TkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlRmxvYXRpbmdGaXhlZFBvaW50Q29udmVyc2lvbnMs
IHRoaXNPYmopOwotICAgIAorICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZUZs
b2F0aW5nRml4ZWRQb2ludENvbnZlcnNpb25zLCB0aGlzT2JqKTsKKwogICAgIGNvbnN0IGNoYXIq
IGZvcm1hdCgpOwotICAgIAorICAgIGJvb2wgaXNWYWxpZCgpOworCiAgICAgY29uc3QgY2hhciog
b3BOYW1lKCkgeyByZXR1cm4gc19vcE5hbWVzW29wTnVtKCldOyB9CiAgICAgdW5zaWduZWQgcm1v
ZGUoKSB7IHJldHVybiAobV9vcGNvZGUgPj4gMTkpICYgMHgzOyB9CiAgICAgdW5zaWduZWQgb3Bj
b2RlKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+IDE2KSAmIDB4NzsgfQpAQCAtNTI1LDEyICs3MzQs
MTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc19vcE5hbWVzWzMy
XTsKICAgICAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAw
eDVmMjBmYzAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4MWUy
MDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHg1ZjIw
ZmMwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweDFl
MjAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUZsb2F0aW5nUG9p
bnRJbnRlZ2VyQ29udmVyc2lvbnMsIHRoaXNPYmopOworICAgIERFRklORV9TVEFUSUNfSVNfVkFM
SUQoQTY0RE9wY29kZUZsb2F0aW5nUG9pbnRJbnRlZ2VyQ29udmVyc2lvbnMsIHRoaXNPYmopOwog
CiAgICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICBj
b25zdCBjaGFyKiBvcE5hbWUoKSB7IHJldHVybiBzX29wTmFtZXNbb3BOdW0oKV07IH0KICAgICB1
bnNpZ25lZCBybW9kZSgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxOSkgJiAweDM7IH0KQEAgLTUz
OCw2ICs3NDksMzEgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG9wTnVtKCkgeyByZXR1cm4gKG1f
b3Bjb2RlID4+IDE2KSAmIDB4MWY7IH0KIH07CiAKK2NsYXNzIEE2NERPcGNvZGVTSU1EVGhyZWVT
YW1lIDogcHVibGljIEE2NERPcGNvZGUgeworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBz
X2ludE9wTmFtZXNbNjRdOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX2ZwT3BOYW1l
c1szMl07CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfYml0T3BOYW1lc1s4XTsKKwor
cHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4OWYy
MDA0MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgw
ZTIwMDQwMDsKKworICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVTSU1EVGhyZWVT
YW1lLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVTSU1E
VGhyZWVTYW1lLCB0aGlzT2JqKTsKKworICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJv
b2wgaXNWYWxpZCgpOworCisgICAgY29uc3QgY2hhciogb3BOYW1lKCk7CisgICAgY29uc3QgY2hh
ciogbW9kaWZpZXIoKTsKKyAgICAKKyAgICBib29sIGlzQml0T3AoKSB7IHJldHVybiBvcGNvZGUo
KSA9PSAwYjAwMDExOyB9CisgICAgdW5zaWduZWQgcUJpdCgpIHsgcmV0dXJuIChtX29wY29kZSA+
PiAzMCkgJiAweDE7IH0KKyAgICB1bnNpZ25lZCB1Qml0KCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+
IDI5KSAmIDB4MTsgfQorICAgIHVuc2lnbmVkIHNpemUoKSB7IHJldHVybiAobV9vcGNvZGUgPj4g
MjIpICYgMHgzOyB9CisgICAgdW5zaWduZWQgb3Bjb2RlKCkgeyByZXR1cm4gKG1fb3Bjb2RlID4+
IDExKSAmIDB4MWY7IH0KK307CisKIGNsYXNzIEE2NERPcGNvZGVTeXN0ZW0gOiBwdWJsaWMgQTY0
RE9wY29kZSB7CiBwdWJsaWM6CiAgICAgdW5zaWduZWQgbEJpdCgpIHsgcmV0dXJuIChtX29wY29k
ZSA+PiAyMSkgJiAweDE7IH0KQEAgLTU1MCwyMiArNzg2LDI2IEBAIHB1YmxpYzoKIAogY2xhc3Mg
QTY0RE9wY29kZU1TUkltbWVkaWF0ZSA6IHB1YmxpYyBBNjRET3Bjb2RlU3lzdGVtIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAweGZmZjhmMDFmOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4ZDUwMDQwMWY7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHhmZmY4ZjAxZjsKKyAgICBzdGF0
aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweGQ1MDA0MDFmOwogCiAgICAg
REVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZU1TUkltbWVkaWF0ZSwgdGhpc09iaik7Cisg
ICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlTVNSSW1tZWRpYXRlLCB0aGlzT2Jq
KTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogfTsK
IAogY2xhc3MgQTY0RE9wY29kZU1TUk9yTVJTUmVnaXN0ZXIgOiBwdWJsaWMgQTY0RE9wY29kZVN5
c3RlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHhm
ZmQwMDAwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweGQ1MTAw
MDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4ZmZkMDAw
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHhkNTEw
MDAwMDsKIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVNU1JPck1SU1JlZ2lz
dGVyLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVNU1JP
ck1SU1JlZ2lzdGVyLCB0aGlzT2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAg
IGJvb2wgaXNWYWxpZCgpOwogCiAgICAgY29uc3QgY2hhciogb3BOYW1lKCkgeyByZXR1cm4gbEJp
dCgpID8gIm1ycyIgOiAibXNyIjsgfQogICAgIHVuc2lnbmVkIHN5c3RlbVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gKChvcDAoKSA8PCAxNCkgfCAob3AxKCkgPDwgMTEpIHwgKGNyTigpIDw8IDcpIHwgKGNy
TSgpIDw8IDMpIHwgb3AyKCkpOyB9CkBAIC01NzYsMjggKzgxNiw0OCBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX29wTmFtZXNbMzJdOwogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHhmZmZmZjAxZjsKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweGQ1MDMyMDFmOworICAgIHN0YXRpYyBjb25z
dGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4ZmZmZmYwMWY7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHhkNTAzMjAxZjsKIAogICAgIERFRklORV9T
VEFUSUNfRk9STUFUKEE2NERPcGNvZGVIaW50LCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElD
X0lTX1ZBTElEKEE2NERPcGNvZGVIaW50LCB0aGlzT2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZv
cm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgY29uc3QgY2hhciogb3BOYW1lKCk7
CiAgICAgdW5zaWduZWQgaW1tZWRpYXRlNygpIHsgcmV0dXJuIChtX29wY29kZSA+PiA1KSAmIDB4
N2Y7IH0KIH07CiAKK2NsYXNzIEE2NERPcGNvZGVTeXN0ZW1JbnN0IDogcHVibGljIEE2NERPcGNv
ZGVTeXN0ZW0geworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX2F0T3BzMTAwMFsxNl07
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfZGNPcHMwMDBbMTZdOworICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBjb25zdCBzX2RjT3BzMTExWzMyXTsKKworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4ZmZmODAwMDA7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHhkNTA4MDAwMDsKKworICAgIERF
RklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVTeXN0ZW1JbnN0LCB0aGlzT2JqKTsKKyAgICBE
RUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVTeXN0ZW1JbnN0LCB0aGlzT2JqKTsKKwor
ICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOworfTsKKwogY2xh
c3MgQTY0RE9wY29kZVN5c3RlbVN5bmMgOiBwdWJsaWMgQTY0RE9wY29kZVN5c3RlbSB7CiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BOYW1lc1s4XTsKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3Qgc19vcHRpb25OYW1lc1sxNl07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQzMl90IG1hc2sgPSAweGZmZmZmMDFmOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDMyX3QgcGF0dGVybiA9IDB4ZDUwMzMwMWY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJ
bnN0cnVjdGlvbiBtYXNrID0gMHhmZmZmZjAxZjsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NElu
c3RydWN0aW9uIHBhdHRlcm4gPSAweGQ1MDMzMDFmOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JN
QVQoQTY0RE9wY29kZVN5c3RlbVN5bmMsIHRoaXNPYmopOworICAgIERFRklORV9TVEFUSUNfSVNf
VkFMSUQoQTY0RE9wY29kZVN5c3RlbVN5bmMsIHRoaXNPYmopOwogCiAgICAgY29uc3QgY2hhciog
Zm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICBjb25zdCBjaGFyKiBvcE5hbWUo
KSB7IHJldHVybiBzX29wTmFtZXNbb3AyKCldOyB9CiAgICAgY29uc3QgY2hhciogb3B0aW9uKCkg
eyByZXR1cm4gc19vcHRpb25OYW1lc1tjck0oKV07IH0KQEAgLTYyNSwxMiArODg1LDE0IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BOYW1lc1s2NF07CiAKIHB1
YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAweDNmMDAwMDAwOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4MDgwMDAwMDA7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHgzZjAwMDAwMDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweDA4MDAwMDAwOwogCiAg
ICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUxvYWRTdG9yZUV4Y2x1c2l2ZSwgdGhp
c09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlTG9hZFN0b3JlRXhj
bHVzaXZlLCB0aGlzT2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wg
aXNWYWxpZCgpOwogCiAgICAgY29uc3QgY2hhciogb3BOYW1lKCkKICAgICB7CkBAIC02NTMsMTIg
KzkxNSwxNCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX3Vuc2Nh
bGVkT3BOYW1lc1szMl07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1hc2sgPSAweDNiMjAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVy
biA9IDB4MzgwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNr
ID0gMHgzYjIwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRl
cm4gPSAweDM4MDAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUxv
YWRTdG9yZUltbWVkaWF0ZSwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChB
NjRET3Bjb2RlTG9hZFN0b3JlSW1tZWRpYXRlLCB0aGlzT2JqKTsKIAogICAgIGNvbnN0IGNoYXIq
IGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgY29uc3QgY2hhciogdW5wcml2
aWxlZ2VkT3BOYW1lKCkKICAgICB7CkBAIC02NzQsMTIgKzkzOCwxNCBAQCBwdWJsaWM6CiAKIGNs
YXNzIEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3Rlck9mZnNldCA6IHB1YmxpYyBBNjRET3Bjb2Rl
TG9hZFN0b3JlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IG1hc2sg
PSAweDNiMjAwYzAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVybiA9IDB4
MzgyMDA4MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNrID0gMHgz
YjIwMGMwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRlcm4gPSAw
eDM4MjAwODAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9wY29kZUxvYWRTdG9y
ZVJlZ2lzdGVyT2Zmc2V0LCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2
NERPcGNvZGVMb2FkU3RvcmVSZWdpc3Rlck9mZnNldCwgdGhpc09iaik7CiAKICAgICBjb25zdCBj
aGFyKiBmb3JtYXQoKTsKKyAgICBib29sIGlzVmFsaWQoKTsKIAogICAgIHVuc2lnbmVkIG9wdGlv
bigpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMykgJiAweDc7IH0KICAgICBpbnQgc0JpdCgpIHsg
cmV0dXJuIChtX29wY29kZSA+PiAxMikgJiAweDE7IH0KQEAgLTY5NiwxMiArOTYyLDE0IEBAIHBy
b3RlY3RlZDoKICAgICB9CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90
IG1hc2sgPSAweGZmMjAwNDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgcGF0dGVy
biA9IDB4ZjgyMDA0MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBtYXNr
ID0gMHhmZjIwMDQwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIHBhdHRl
cm4gPSAweGY4MjAwNDAwOwogICAgIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNv
ZGVMb2FkU3RvcmVBdXRoZW50aWNhdGVkLCB0aGlzT2JqKTsKLSAgICAKKyAgICBERUZJTkVfU1RB
VElDX0lTX1ZBTElEKEE2NERPcGNvZGVMb2FkU3RvcmVBdXRoZW50aWNhdGVkLCB0aGlzT2JqKTsK
KwogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAg
dW5zaWduZWQgb3BOdW0oKSB7IHJldHVybiBtQml0KCk7IH0KICAgICB1bnNpZ25lZCBtQml0KCkg
eyByZXR1cm4gKG1fb3Bjb2RlID4+IDIzKSAmIDB4MTsgfQpAQCAtNzEzLDEyICs5ODEsMTUgQEAg
cHVibGljOgogCiBjbGFzcyBBNjRET3Bjb2RlTG9hZFN0b3JlUmVnaXN0ZXJQYWlyIDogcHVibGlj
IEE2NERPcGNvZGVMb2FkU3RvcmUgewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgbWFzayA9IDB4M2EwMDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBw
YXR0ZXJuID0gMHgyODAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9u
IG1hc2sgPSAweDNhMDAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24g
cGF0dGVybiA9IDB4MjgwMDAwMDA7CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bj
b2RlTG9hZFN0b3JlUmVnaXN0ZXJQYWlyLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lT
X1ZBTElEKEE2NERPcGNvZGVMb2FkU3RvcmVSZWdpc3RlclBhaXIsIHRoaXNPYmopOwogCiAgICAg
Y29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CisKICAgICBjb25zdCBj
aGFyKiBvcE5hbWUoKTsKIAogICAgIHVuc2lnbmVkIHJ0MigpIHsgcmV0dXJuIChtX29wY29kZSA+
PiAxMCkgJiAweDFmOyB9CkBAIC03MjksMTIgKzEwMDAsMTQgQEAgcHVibGljOgogCiBjbGFzcyBB
NjRET3Bjb2RlTG9hZFN0b3JlVW5zaWduZWRJbW1lZGlhdGUgOiBwdWJsaWMgQTY0RE9wY29kZUxv
YWRTdG9yZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0g
MHgzYjAwMDAwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDM5
MDAwMDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4M2Iw
MDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgz
OTAwMDAwMDsKIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVMb2FkU3RvcmVV
bnNpZ25lZEltbWVkaWF0ZSwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChB
NjRET3Bjb2RlTG9hZFN0b3JlVW5zaWduZWRJbW1lZGlhdGUsIHRoaXNPYmopOwogCiAgICAgY29u
c3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKICAgICB1bnNpZ25lZCBp
bW1lZGlhdGUxMigpIHsgcmV0dXJuIChtX29wY29kZSA+PiAxMCkgJiAweGZmZjsgfQogfTsKQEAg
LTc1NSwxMyArMTAyOCwxNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEE2NERPcGNvZGVMb2dpY2FsSW1t
ZWRpYXRlIDogcHVibGljIEE2NERPcGNvZGVMb2dpY2FsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVpbnQzMl90IG1hc2sgPSAweDFmODAwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgdWludDMyX3QgcGF0dGVybiA9IDB4MTIwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBB
NjRJbnN0cnVjdGlvbiBtYXNrID0gMHgxZjgwMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2
NEluc3RydWN0aW9uIHBhdHRlcm4gPSAweDEyMDAwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19G
T1JNQVQoQTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUsIHRoaXNPYmopOworICAgIERFRklORV9T
VEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZUxvZ2ljYWxJbW1lZGlhdGUsIHRoaXNPYmopOwogCiAg
ICAgY29uc3QgY2hhciogZm9ybWF0KCk7CisgICAgYm9vbCBpc1ZhbGlkKCk7CiAKKyAgICB1aW50
NjRfdCBjb21wdXRlSW1tZWRpYXRlKCk7CisgICAgYm9vbCBpc0FuZCgpIHsgcmV0dXJuICFvcE51
bWJlcigpOyB9CiAgICAgYm9vbCBpc1RzdCgpIHsgcmV0dXJuICgob3BOdW1iZXIoKSA9PSA2KSAm
JiAocmQoKSA9PSAzMSkpOyB9CiAgICAgYm9vbCBpc01vdigpIHsgcmV0dXJuICgob3BOdW1iZXIo
KSA9PSAyKSAmJiAocm4oKSA9PSAzMSkpOyB9CiAgICAgdW5zaWduZWQgb3BOdW1iZXIoKSB7IHJl
dHVybiBvcGMoKSA8PCAxOyB9CkBAIC03NzIsMTIgKzEwNDksMTQgQEAgcHVibGljOgogCiBjbGFz
cyBBNjRET3Bjb2RlTG9naWNhbFNoaWZ0ZWRSZWdpc3RlciA6IHB1YmxpYyBBNjRET3Bjb2RlTG9n
aWNhbCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHgx
ZjAwMDAwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDBhMDAw
MDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4MWYwMDAw
MDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgwYTAw
MDAwMDsKIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVMb2dpY2FsU2hpZnRl
ZFJlZ2lzdGVyLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNv
ZGVMb2dpY2FsU2hpZnRlZFJlZ2lzdGVyLCB0aGlzT2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZv
cm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgYm9vbCBpc1RzdCgpIHsgcmV0dXJu
ICgob3BOdW1iZXIoKSA9PSA2KSAmJiAocmQoKSA9PSAzMSkpOyB9CiAgICAgYm9vbCBpc01vdigp
IHsgcmV0dXJuICgob3BjKCkgPT0gMSkgJiYgKHJuKCkgPT0gMzEpKTsgfQpAQCAtNzkxLDEyICsx
MDcwLDIxIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNfb3BOYW1l
c1s0XTsKIAogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4
MWY4MDAwMDA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxMjgw
MDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDFmODAw
MDAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MTI4
MDAwMDA7CiAKICAgICBERUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlTW92ZVdpZGUsIHRo
aXNPYmopOworICAgIERFRklORV9TVEFUSUNfSVNfVkFMSUQoQTY0RE9wY29kZU1vdmVXaWRlLCB0
aGlzT2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOworICAgIGJvb2wgaXNWYWxpZCgp
OworCisgICAgYm9vbCBpc01vdmVXaWRlKCkgeyByZXR1cm4gKG1fb3Bjb2RlICYgbWFzaykgPT0g
cGF0dGVybjsgfQorICAgIGJvb2wgaXNNb3ZuKCk7CisgICAgYm9vbCBpc01vdnooKTsKKyAgICBi
b29sIGlzTW92aygpOworICAgIHVpbnQ2NF90IHZhbHVlKHVpbnQ2NF90Jik7CisgICAgdWludDY0
X3QgYnVpbGRJbW1lZGlhdGVGcm9tTW92ZVdpZGVTZXF1ZW5jZSh1bnNpZ25lZCYgdGFyZ2V0UmVn
LCB1bnNpZ25lZCBzdGFydE9mZmVzdCk7CiAKICAgICBjb25zdCBjaGFyKiBvcE5hbWUoKSB7IHJl
dHVybiBzX29wTmFtZXNbb3BjKCldOyB9CiAgICAgdW5zaWduZWQgb3BjKCkgeyByZXR1cm4gKG1f
b3Bjb2RlID4+IDI5KSAmIDB4MzsgfQpAQCAtODA2LDEyICsxMDk0LDE0IEBAIHB1YmxpYzoKIAog
Y2xhc3MgQTY0RE9wY29kZVRlc3RBbmRCcmFuY2hJbW1lZGlhdGUgOiBwdWJsaWMgQTY0RE9wY29k
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBtYXNrID0gMHg3ZTAw
MDAwMDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IHBhdHRlcm4gPSAweDM2MDAwMDAw
OworICAgIHN0YXRpYyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gbWFzayA9IDB4N2UwMDAwMDA7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlvbiBwYXR0ZXJuID0gMHgzNjAwMDAw
MDsKIAogICAgIERFRklORV9TVEFUSUNfRk9STUFUKEE2NERPcGNvZGVUZXN0QW5kQnJhbmNoSW1t
ZWRpYXRlLCB0aGlzT2JqKTsKKyAgICBERUZJTkVfU1RBVElDX0lTX1ZBTElEKEE2NERPcGNvZGVU
ZXN0QW5kQnJhbmNoSW1tZWRpYXRlLCB0aGlzT2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1h
dCgpOworICAgIGJvb2wgaXNWYWxpZCgpOwogCiAgICAgdW5zaWduZWQgYml0TnVtYmVyKCkgeyBy
ZXR1cm4gKChtX29wY29kZSA+PiAyNikgJiAweDIwKSB8ICgobV9vcGNvZGUgPj4gMTkpICYgMHgx
Zik7IH0KICAgICB1bnNpZ25lZCBvcEJpdCgpIHsgcmV0dXJuIChtX29wY29kZSA+PiAyNCkgJiAw
eDE7IH0KQEAgLTgyMCwxMiArMTExMCwxNCBAQCBwdWJsaWM6CiAKIGNsYXNzIEE2NERPcGNvZGVV
bmNvbmRpdGlvbmFsQnJhbmNoSW1tZWRpYXRlIDogcHVibGljIEE2NERPcGNvZGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgbWFzayA9IDB4N2MwMDAwMDA7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBwYXR0ZXJuID0gMHgxNDAwMDAwMDsKKyAgICBzdGF0
aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9uIG1hc2sgPSAweDdjMDAwMDAwOworICAgIHN0YXRp
YyBjb25zdGV4cHIgQTY0SW5zdHJ1Y3Rpb24gcGF0dGVybiA9IDB4MTQwMDAwMDA7CiAKICAgICBE
RUZJTkVfU1RBVElDX0ZPUk1BVChBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaEltbWVkaWF0
ZSwgdGhpc09iaik7CisgICAgREVGSU5FX1NUQVRJQ19JU19WQUxJRChBNjRET3Bjb2RlVW5jb25k
aXRpb25hbEJyYW5jaEltbWVkaWF0ZSwgdGhpc09iaik7CiAKICAgICBjb25zdCBjaGFyKiBmb3Jt
YXQoKTsKKyAgICBib29sIGlzVmFsaWQoKTsKIAogICAgIHVuc2lnbmVkIG9wKCkgeyByZXR1cm4g
KG1fb3Bjb2RlID4+IDMxKSAmIDB4MTsgfQogICAgIGludCBpbW1lZGlhdGUyNigpIHsgcmV0dXJu
IChzdGF0aWNfY2FzdDxpbnQ+KG1fb3Bjb2RlICYgMHgzZmZmZmZmKSA8PCA2KSA+PiA2OyB9CkBA
IC04MzcsMTMgKzExMjksMTUgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgc19BdXRoT3BOYW1lc1syMF07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IG1hc2sgPSAweGZlMWYwMDAwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
cGF0dGVybiA9IDB4ZDYxZjAwMDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBNjRJbnN0cnVjdGlv
biBtYXNrID0gMHhmZTFmMDAwMDsKKyAgICBzdGF0aWMgY29uc3RleHByIEE2NEluc3RydWN0aW9u
IHBhdHRlcm4gPSAweGQ2MWYwMDAwOwogCiAgICAgREVGSU5FX1NUQVRJQ19GT1JNQVQoQTY0RE9w
Y29kZVVuY29uZGl0aW9uYWxCcmFuY2hSZWdpc3RlciwgdGhpc09iaik7CisgICAgREVGSU5FX1NU
QVRJQ19JU19WQUxJRChBNjRET3Bjb2RlVW5jb25kaXRpb25hbEJyYW5jaFJlZ2lzdGVyLCB0aGlz
T2JqKTsKIAogICAgIGNvbnN0IGNoYXIqIGZvcm1hdCgpOwotCisgICAgYm9vbCBpc1ZhbGlkKCk7
CisgICAgCiAgICAgY29uc3QgY2hhciogb3BOYW1lKCkgeyByZXR1cm4gc19vcE5hbWVzW29wYygp
XTsgfQogICAgIGNvbnN0IGNoYXIqIGF1dGhPcE5hbWUoKTsKICAgICB1bnNpZ25lZCBvcGMoKSB7
IHJldHVybiAobV9vcGNvZGUgPj4gMjEpICYgMHhmOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYyOSw2ICs2MjksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHBhdGNocG9pbnQt
PmVmZmVjdHMud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CiAgICAgICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmRTb21lUmVnaXN0ZXIoaW5wdXQpOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgICAg
IC8vIEpJVCBjYWdpbmcgbWlnaHQgdXNlIHNjcmF0Y2ggcmVnaXN0ZXJzIGZvciBtYWtpbmcgYSBj
YWdlZCBjYWxsLgorICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIEdQUlJlZyByZWcg
PSBJbnZhbGlkR1BSUmVnOwogICAgICAgICAgICAgICAgIEZQUlJlZyBmcFJlZyA9IEludmFsaWRG
UFJSZWc7CiAgICAgICAgICAgICAgICAgaWYgKGZsdXNoRm9ybWF0ID09IEZsdXNoZWREb3VibGUp
CkBAIC0yOTU3LDcgKzI5NjEsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3Vi
bGVSZXBVc2UpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBzZXREb3VibGUo
dm1DYWxsKERvdWJsZSwgREZHOjphcml0aFVuYXJ5RnVuY3Rpb24obV9ub2RlLT5hcml0aFVuYXJ5
VHlwZSgpKSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisjZWxzZQogICAgICAgICAg
ICAgc2V0RG91YmxlKG1fb3V0LmRvdWJsZVVuYXJ5KG1fbm9kZS0+YXJpdGhVbmFyeVR5cGUoKSwg
bG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtOTg1Nyw4ICs5ODY1LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgfTsKIAogICAgICAgICAgICAgICAgIGF1dG8gY2FsbFdpdGhFeGNlcHRpb25DaGVjayA9
IFsmXSAodm9pZCgqY2FsbGVlKShKU0dsb2JhbE9iamVjdCopKSB7CisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgICAgICAgICAgICAgICAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIodW50YWdDb2RlUHRyPENGdW5jdGlvblB0clRhZz4oY2FsbGVlKSksIE5vUHRyVGFnKTsK
KyNlbHNlCiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihjYWxsZWUpKSwgR1BSSW5mbzo6
bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwKTsKICAgICAgICAgICAgICAgICAgICAgaml0LmNh
bGwoR1BSSW5mbzo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwLCBPcGVyYXRpb25QdHJUYWcp
OworI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMtPmFwcGVuZChqaXQuZW1p
dEV4Y2VwdGlvbkNoZWNrKCp2bSwgQXNzZW1ibHlIZWxwZXJzOjpOb3JtYWxFeGNlcHRpb25DaGVj
aywgQXNzZW1ibHlIZWxwZXJzOjpGYXJKdW1wV2lkdGgpKTsKICAgICAgICAgICAgICAgICB9Owog
CkBAIC0xMDE5Nyw4ICsxMDIwOSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCFhbGxvY2F0b3IubnVtYmVyT2ZSZXVzZWRSZWdpc3RlcnMoKSk7CiAKICAgICAg
ICAgICAgICAgICBhdXRvIGNhbGxXaXRoRXhjZXB0aW9uQ2hlY2sgPSBbJl0gKHZvaWQoKmNhbGxl
ZSkoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgICAgICAgICAgaml0LmNh
bGwoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVudGFnQ29kZVB0cjxDRnVuY3Rpb25QdHJU
YWc+KGNhbGxlZSkpLCBOb1B0clRhZyk7CisjZWxzZQogICAgICAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0
clRhZz4oY2FsbGVlKSksIEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCk7CiAg
ICAgICAgICAgICAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3Vt
ZW50R1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgICBl
eGNlcHRpb25zLT5hcHBlbmQoaml0LmVtaXRFeGNlcHRpb25DaGVjaygqdm0sIEFzc2VtYmx5SGVs
cGVyczo6Tm9ybWFsRXhjZXB0aW9uQ2hlY2ssIEFzc2VtYmx5SGVscGVyczo6RmFySnVtcFdpZHRo
KSk7CiAgICAgICAgICAgICAgICAgfTsKIApAQCAtMTAzOTEsOCArMTA0MDcsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAgICAgICAg
ICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oZ2xvYmFs
T2JqZWN0LCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgICAg
IGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICAgICAgICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih1bnRhZ0Nv
ZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPihvcGVyYXRpb25DYWxsRXZhbCkpLCBOb1B0clRhZyk7Cisj
ZWxzZQogICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25DYWxsRXZhbCkpLCBHUFJJ
bmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApOwogICAgICAgICAgICAgICAgIGppdC5j
YWxsKEdQUkluZm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMtPmFwcGVuZChqaXQuZW1pdEV4
Y2VwdGlvbkNoZWNrKHN0YXRlLT52bSgpLCBBc3NlbWJseUhlbHBlcnM6Ok5vcm1hbEV4Y2VwdGlv
bkNoZWNrLCBBc3NlbWJseUhlbHBlcnM6OkZhckp1bXBXaWR0aCkpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gaml0LmJyYW5jaFRl
c3Q2NChDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAg
LTE4ODA1LDggKzE4ODI1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNs
b3dQYXRoLCBjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIGNhbGwgPSB2
bUNhbGwoVm9pZCwgb3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgsIG1fdm1WYWx1ZSwgYmFz
ZSk7Ci0gICAgICAgIG1faGVhcHMuZGVjb3JhdGVDQ2FsbFJlYWQoJm1faGVhcHMucm9vdCwgY2Fs
bCk7Ci0gICAgICAgIG1faGVhcHMuZGVjb3JhdGVDQ2FsbFdyaXRlKCZtX2hlYXBzLkpTQ2VsbF9j
ZWxsU3RhdGUsIGNhbGwpOworICAgICAgICBpZiAoY2FsbC0+b3Bjb2RlKCkgPT0gQ0NhbGwpIHsK
KyAgICAgICAgICAgIG1faGVhcHMuZGVjb3JhdGVDQ2FsbFJlYWQoJm1faGVhcHMucm9vdCwgY2Fs
bCk7CisgICAgICAgICAgICBtX2hlYXBzLmRlY29yYXRlQ0NhbGxXcml0ZSgmbV9oZWFwcy5KU0Nl
bGxfY2VsbFN0YXRlLCBjYWxsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VS
VChjYWxsLT5vcGNvZGUoKSA9PSBQYXRjaHBvaW50KTsKKyAgICAgICAgICAgIG1faGVhcHMuZGVj
b3JhdGVQYXRjaHBvaW50UmVhZCgmbV9oZWFwcy5yb290LCBjYWxsKTsKKyAgICAgICAgICAgIG1f
aGVhcHMuZGVjb3JhdGVQYXRjaHBvaW50V3JpdGUoJm1faGVhcHMuSlNDZWxsX2NlbGxTdGF0ZSwg
Y2FsbCk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKIApAQCAtMTg4ODcsNyArMTg5MTMsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
X2Fzc2VydCghc3RkOjppc19zYW1lPE9wZXJhdGlvblR5cGUsIExWYWx1ZT46OnZhbHVlKTsKICAg
ICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxB
cml0eSgpID09IHNpemVvZi4uLihBcmdzKSwgIlNhbml0eSBjaGVjayIpOwogICAgICAgICBjYWxs
UHJlZmxpZ2h0KCk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gY2FnZWRDQ2FsbChtX291dC5tX3Byb2MsIG1fb3V0Lm1fYmxvY2ssIG1fb3V0Lm9yaWdpbigp
LCB0eXBlLCBmdW5jdGlvbiwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyNlbHNlCiAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5jYWxsKHR5cGUsIG1fb3V0Lm9wZXJhdGlvbihm
dW5jdGlvbiksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisjZW5kaWYKICAgICAgICAg
aWYgKG1heUV4aXQobV9ncmFwaCwgbV9ub2RlKSkKICAgICAgICAgICAgIGNhbGxDaGVjaygpOwog
ICAgICAgICBlbHNlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIkZUTE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJGVExTYXZl
UmVzdG9yZS5oIgogI2luY2x1ZGUgIkZUTFN0YXRlLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJn
ZXQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgpAQCAtNDks
NiArNTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBERkc7CiAKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29tcGlsZUZUTE9TUkV4aXQp
OworCiBzdGF0aWMgdm9pZCByZWJveEFjY29yZGluZ1RvRm9ybWF0KAogICAgIERhdGFGb3JtYXQg
Zm9ybWF0LCBBc3NlbWJseUhlbHBlcnMmIGppdCwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2NyYXRj
aDEsIEdQUlJlZyBzY3JhdGNoMikKIHsKQEAgLTM0MCw4ICszNDMsMTIgQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZAogICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb24pLAogICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb25Bcmd1bWVudHMpKTsKICAgICAg
ICAgICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorICAgICAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVudGFn
Q29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1Ip
KSwgTm9QdHJUYWcpOworI2Vsc2UKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25NYXRl
cmlhbGl6ZU9iamVjdEluT1NSKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgICAgICAgICAg
aml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbmRpZgog
ICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBtYXRlcmlh
bGl6YXRpb25Ub1BvaW50ZXIuZ2V0KG1hdGVyaWFsaXphdGlvbikpOwogCiAgICAgICAgICAgICAv
LyBMZXQgZXZlcnlvbmUga25vdyB0aGF0IHdlJ3JlIGRvbmUuCkBAIC0zNzAsOCArMzc3LDEyIEBA
IHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQKICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtYXRlcmlhbGl6YXRpb25Ub1BvaW50ZXIuZ2V0KG1h
dGVyaWFsaXphdGlvbikpLAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KG1hdGVyaWFsaXphdGlvbkFyZ3VtZW50cykpOwogICAgICAgICBqaXQucHJlcGFyZUNhbGxPcGVy
YXRpb24odm0pOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaml0LmNhbGwoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVudGFnQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KG9wZXJh
dGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpKSwgTm9QdHJUYWcpOworI2Vsc2UKICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25Q
dHJUYWc+KG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpKSwgR1BSSW5mbzo6bm9uQXJnR1BS
MCk7CiAgICAgICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRh
Zyk7CisjZW5kaWYKICAgICB9CiAKICAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIHdoZXJldmVy
IHRoZSBleGl0IGRhdGEgdGVsbHMgdXMgaXQgd2FzLCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBwbGFj
ZSBpbgpAQCAtNTM1LDcgKzU0Niw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKFZNJiB2bSwg
dW5zaWduZWQKICAgICB9CiAgICAgCiAgICAgaGFuZGxlRXhpdENvdW50cyh2bSwgaml0LCBleGl0
KTsKLSAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKGppdCwgZXhpdCk7CisgICAgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyh2bSwgaml0LCBleGl0KTsKICAgICBhZGp1c3RBbmRKdW1wVG9UYXJnZXQo
dm0sIGppdCwgZXhpdCk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIGNv
ZGVCbG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiRlRMTGF6eVNsb3dQYXRoLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCiAjaW5jbHVk
ZSAiSW5saW5lQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNs
dWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTUyLDYgKzUzLDEyIEBAIElH
Tk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKIAorVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Qb3B1bGF0ZU9iamVj
dEluT1NSKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9T
Uik7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblN3aXRjaFN0cmluZ0FuZEdldEJyYW5jaE9m
ZnNldCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblR5cGVPZk9iamVjdEFzVHlwZW9mVHlw
ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkNvbXBpbGVGVExMYXp5U2xvd1BhdGgpOwor
CiBleHRlcm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdElu
T1NSKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxp
emF0aW9uKiBtYXRlcmlhbGl6YXRpb24sIEVuY29kZWRKU1ZhbHVlKiBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlKiB2YWx1ZXMpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIERGRzsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMjY3NDU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTAgKzI5LDEzIEBACiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAorI2luY2x1ZGUgIkFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGlu
ZXMuaCIKICNpbmNsdWRlICJCM0NDYWxsVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NhZ2VkQ0NhbGwu
aCIKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiQjNGcmVxdWVudGVkQmxv
Y2suaCIKKyNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUHJvY2Vk
dXJlLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5oIgogI2luY2x1ZGUgIkIzV2lkdGguaCIK
QEAgLTM5NCwxNCArMzk3LDI1IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgY2FsbFdpdGhvdXRTaWRl
RWZmZWN0cyhCMzo6VHlwZSB0eXBlLCBGdW5jdGlvbiBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIEFy
Z3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfc2FtZTxG
dW5jdGlvbiwgTFZhbHVlPjo6dmFsdWUpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAg
cmV0dXJuIGNhZ2VkQ0NhbGwobV9wcm9jLCBtX2Jsb2NrLCBvcmlnaW4oKSwgdHlwZSwgZnVuY3Rp
b24sIGFyZzEsIGFyZ3MuLi4pOworI2Vsc2UKICAgICAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6Q0NhbGxWYWx1ZT4obV9wcm9jLCB0eXBlLCBvcmlnaW4oKSwgQjM6OkVmZmVjdHM6
Om5vbmUoKSwKICAgICAgICAgICAgIGNvbnN0SW50UHRyKHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
ZnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKSwgYXJnMSwgYXJncy4uLik7CisjZW5kaWYKICAgICB9
Ci0KKyAgICAKICAgICAvLyBGSVhNRTogQ29uc2lkZXIgZW5oYW5jaW5nIHRoaXMgdG8gYWxsb3cg
dGhlIGNsaWVudCB0byBjaG9vc2UgdGhlIHRhcmdldCBQdHJUYWcgdG8gdXNlLgogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQzMjQKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+Ci0gICAgTFZhbHVlIG9wZXJhdGlvbihGdW5jdGlvblR5
cGUgZnVuY3Rpb24pIHsgcmV0dXJuIGNvbnN0SW50UHRyKHRhZ0NGdW5jdGlvblB0cjx2b2lkKj4o
ZnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKTsgfQorICAgIExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rp
b25UeXBlIGZ1bmN0aW9uKQorICAgIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIHJl
dHVybiBjb25zdEludFB0cih0YWdDRnVuY3Rpb25QdHI8dm9pZCo+KGZ1bmN0aW9uLCBOb1B0clRh
ZykpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGNvbnN0SW50UHRyKHRhZ0NGdW5jdGlvblB0cjx2
b2lkKj4oZnVuY3Rpb24sIEIzQ0NhbGxQdHJUYWcpKTsKKyNlbmRpZgorICAgIH0KIAogICAgIHZv
aWQganVtcChMQmFzaWNCbG9jayk7CiAgICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwg
TEJhc2ljQmxvY2sgdGFrZW4sIFdlaWdodCB0YWtlbldlaWdodCwgTEJhc2ljQmxvY2sgbm90VGFr
ZW4sIFdlaWdodCBub3RUYWtlbldlaWdodCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExUaHVua3MuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyCiAKICAgICByZXN0b3JlQWxs
UmVnaXN0ZXJzKGppdCwgYnVmZmVyKTsKIAotI2lmIENQVShBUk02NEUpCisjaWYgQ1BVKEFSTTY0
RSkgJiYgIUVOQUJMRShKSVRfQ0FHRSkKICAgICBqaXQudW50YWdQdHIocmVzdWx0VGFnLCBBc3Nl
bWJseUhlbHBlcnM6OmxpbmtSZWdpc3Rlcik7CiAgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsK
ICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZS5oIgogCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNJbmplY3RlZFNjcmlwdEhvc3QuaCIKIApAQCAtMzMsMjQgKzM0LDI0
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uU3VidHlwZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvbkdldEludGVybmFsUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JOYW1lKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVj
dGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzUHJv
bWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblByb3h5VGFyZ2V0VmFsdWUoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtNYXBFbnRyaWVzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmll
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9y
RW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblF1
ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uUXVlcnlIb2xkZXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBlLCBKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoanNJ
bmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscywgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0Nf
SE9TVF9DQUxMKGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5h
bFByb3BlcnRpZXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbiwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0Nf
SE9TVF9DQUxMKGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25Jc1Byb21pc2VS
ZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUHJveHlUYXJnZXRWYWx1ZSwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9T
VF9DQUxMKGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZSwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFr
TWFwRW50cmllcywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBl
RnVuY3Rpb25XZWFrU2V0U2l6ZSwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25XZWFrU2V0RW50cmllcywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJpZXMsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1Rf
Q0FMTChqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVlcnlJbnN0YW5jZXMs
IEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFM
SURfSlNDX0hPU1RfQ0FMTChqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uUXVl
cnlIb2xkZXJzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoanNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uLCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVzdWx0QWxpYXMoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlQXR0cmlidXRlRXZhbHVhdGUsIEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlND
X0hPU1RfQ0FMTChqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZVNhdmVkUmVz
dWx0QWxpYXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5m
byBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZTo6c19pbmZvID0geyAiSW5qZWN0ZWRTY3Jp
cHRIb3N0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZSkgfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIK
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC0zNCwxOSArMzUsMTkgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiAvLyBGdW5jdGlvbnMuCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5
cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3Jp
cHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1Rf
Q0FMTChqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoanNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKIAogLy8gQXR0cmlidXRlcy4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZUxpbmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0
ZUNvbHVtbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25O
YW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTY29wZUNoYWluKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlzT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3Jp
cHRDYWxsRnJhbWVJc1RhaWxEZWxldGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChqc0phdmFTY3JpcHRDYWxs
RnJhbWVBdHRyaWJ1dGVDYWxsZXIsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChqc0phdmFTY3JpcHRDYWxsRnJh
bWVBdHRyaWJ1dGVTb3VyY2VJRCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZUxpbmUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRy
aWJ1dGVDb2x1bW4sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1
dGVGdW5jdGlvbk5hbWUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRy
aWJ1dGVTY29wZUNoYWluLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoanNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0
cmlidXRlVGhpc09iamVjdCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0
dHJpYnV0ZVR5cGUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChqc0phdmFTY3JpcHRDYWxsRnJhbWVJc1RhaWxE
ZWxldGVkLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8g
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlOjpzX2luZm8gPSB7ICJKYXZhU2NyaXB0Q2Fs
bEZyYW1lIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUpIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI2NzQ1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjUyLDkgKzI1MiwxMiBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2Fs
bEV4Y2VwdGlvbkZ1enooCiAKICAgICAvLyBTZXQgdXAgb25lIGFyZ3VtZW50LgogICAgIG1vdmUo
VHJ1c3RlZEltbVB0cigmdm0pLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworI2lmIEVOQUJMRShK
SVRfQ0FHRSkKKyAgICBjYWxsKFRydXN0ZWRJbW1QdHIodW50YWdDb2RlUHRyPENGdW5jdGlvblB0
clRhZz4ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eldpdGhDYWxsRnJhbWUpKSwgTm9QdHJUYWcpOwor
I2Vsc2UKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eldpdGhDYWxsRnJhbWUpKSwgR1BSSW5mbzo6bm9uUHJl
c2VydmVkTm9uUmV0dXJuR1BSKTsKLSAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CiAgICAg
Y2FsbChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIsIE9wZXJhdGlvblB0clRhZyk7
CisjZW5kaWYKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVyczsgKytpKSB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIgKyBH
UFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyArIGkpLCBHUFJJbmZvOjpyZWdUMCk7CkBAIC05Njcs
MTMgKzk3MCwxOSBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKFZNJiB2bSwgCiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
ICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworI2lmICFFTkFCTEUoSklUX0NBR0UpCiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBzZWxlY3RT
Y3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBH
UFJJbmZvOjphcmd1bWVudEdQUjIpOworI2VuZGlmCiAjZWxzZQogI2Vycm9yICJKSVQgbm90IHN1
cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgogICAgIHByZXBhcmVDYWxsT3BlcmF0
aW9uKHZtKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgY2FsbChUcnVzdGVkSW1tUHRyKHVu
dGFnQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KGZ1bmN0aW9uKSksIE5vUHRyVGFnKTsKKyNlbHNl
CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+
KGZ1bmN0aW9uKSksIHNjcmF0Y2gpOwogICAgIGNhbGwoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFn
KTsKKyNlbmRpZgogCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFkZHJl
c3NPZkFjdGl2ZUxlbmd0aCgpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIHN0b3JlUHRyKFRydXN0
ZWRJbW1QdHIobnVsbHB0ciksIEdQUkluZm86OnJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjIsOCArNjIsMTIgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OmVuc3VyZVNoYWRvd0NoaWNrZW5QYQog
ICAgIEp1bXAgb2sgPSBicmFuY2hQdHIoQmVsb3csIHNoYWRvd1BhY2tldCwgVHJ1c3RlZEltbVB0
cihzaGFkb3dDaGlja2VuLT5sb2dFbmQoKSkpOwogICAgIHNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2VuTG9nKT4oVHJ1c3RlZEltbVB0cigmdm0pKTsK
ICAgICBwcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
IGNhbGwoVHJ1c3RlZEltbVB0cih1bnRhZ0NvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFnPihvcGVyYXRp
b25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxvZykpLCBOb1B0clRhZyk7CisjZWxzZQogICAgIG1vdmUo
VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25Qcm9j
ZXNzU2hhZG93Q2hpY2tlbkxvZykpLCBzY3JhdGNoMU5vbkFyZ0dQUik7CiAgICAgY2FsbChzY3Jh
dGNoMU5vbkFyZ0dQUiwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbmRpZgogICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihzaGFkb3dDaGlja2VuLT5hZGRyZXNzT2ZMb2dDdXJzb3IoKSksIHNjcmF0Y2gxTm9u
QXJnR1BSKTsKICAgICBsb2FkUHRyKEFkZHJlc3Moc2NyYXRjaDFOb25BcmdHUFIpLCBzaGFkb3dQ
YWNrZXQpOwogICAgIG9rLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3OSw3ICs3NzksNyBA
QCBwdWJsaWM6CiAjaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk02NCkKICAgICAgICAgbG9h
ZFB0cihBZGRyZXNzKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zm
c2V0KCkpLCBsaW5rUmVnaXN0ZXIpOwogICAgICAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKDIgKiBz
aXplb2Yodm9pZCopKSwgbmV3RnJhbWVTaXplR1BSKTsKLSNpZiBDUFUoQVJNNjRFKQorI2lmIENQ
VShBUk02NEUpICYmICFFTkFCTEUoSklUX0NBR0UpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1t
MzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRl
clJlZ2lzdGVyLCB0ZW1wR1BSKTsKICAgICAgICAgdW50YWdQdHIodGVtcEdQUiwgbGlua1JlZ2lz
dGVyKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxs
RnJhbWVTaHVmZmxlci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyAr
NDQyLDcgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUZvclRhaWxDYQogI2lmIENQ
VShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNNjQpCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIENhbGxG
cmFtZTo6cmV0dXJuUENPZmZzZXQoKSksCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpsaW5rUmVn
aXN0ZXIpOwotI2lmIENQVShBUk02NEUpCisjaWYgQ1BVKEFSTTY0RSkgJiYgIUVOQUJMRShKSVRf
Q0FHRSkKICAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzaXpl
b2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0
ZXIpOwogICAgIG1faml0LnVudGFnUHRyKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdp
c3RlciwgTWFjcm9Bc3NlbWJsZXI6OmxpbmtSZWdpc3Rlcik7CiAgICAgbV9qaXQuc3ViUHRyKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgTWFj
cm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjY3
NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsMTIgQEAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgZml4ZWRFeGVjdXRhYmxlTQogc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVnaW9uU2l6ZSA9
IDExMiAqIE1COwogc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaXNsYW5kUmVnaW9uU2l6ZSA9IDE2
ICogTUI7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBudW1iZXJPZlJlZ2lvbnMgPSBmaXhlZEV4
ZWN1dGFibGVNZW1vcnlQb29sU2l6ZSAvIHJlZ2lvblNpemU7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorLy8gV2UgbmVlZCA0IGluc3RydWN0aW9uIGlzbGFuZHMgc2luY2UgdGhleSBhcmUgYWx3YXlz
IGJyYW5jaCB0YXJnZXRzIHdoaWNoIG5lZWQgdG8gYmUgMTYgYnl0ZSBhbGlnbmVkLgorc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgaXNsYW5kU2l6ZUluQnl0ZXMgPSAxNjsKKyNlbHNlCiBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBpc2xhbmRTaXplSW5CeXRlcyA9IDQ7CisjZW5kaWYKIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IG1heElzbGFuZHNQZXJSZWdpb24gPSBpc2xhbmRSZWdpb25TaXplIC8g
aXNsYW5kU2l6ZUluQnl0ZXM7CiAjZWxzZQogc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZml4ZWRF
eGVjdXRhYmxlTWVtb3J5UG9vbFNpemUgPSAxMjggKiBNQjsKQEAgLTI0NSw2ICsyNTAsMzUgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0cgogfQogI2VuZGlmIC8vIFVT
RShFWEVDVVRFX09OTFlfSklUX1dSSVRFX0ZVTkNUSU9OKQogCisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBjcmVhdGVKSVRDYWdpbmdUZW1wbGF0ZSh2b2lk
KiBiYXNlQWRkcmVzcywgc2l6ZV90IGFsbG9jYXRpb25TaXplKQoreworI2lmIENQVShBUk02NCkK
KyAgICB1c2luZyBuYW1lc3BhY2UgQVJNNjRSZWdpc3RlcnM7CisgICAgdXNpbmcgVHJ1c3RlZElt
bVB0ciA9IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyOworCisgICAgc2l6ZV90IG1hc2sg
PSBXVEY6OnJvdW5kVXBUb1Bvd2VyT2ZUd28oYWxsb2NhdGlvblNpemUgPDwgMSkgLSAxNjsKKyAg
ICB1bnNpZ25lZCBsb2cyU2l6ZSA9IGZhc3RMb2cyKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhbGxv
Y2F0aW9uU2l6ZSkpOworICAgIHVuc2lnbmVkIHNoaWZ0QW1vdW50ID0gbG9nMlNpemUgLSAxNTsK
KyAgICBnX2pzY0NvbmZpZy5qaXRDYWdlUGFyYW1zLm1hc2sgPSBtYXNrOworICAgIGdfanNjQ29u
ZmlnLmppdENhZ2VQYXJhbXMubG9nMlNpemUgPSBsb2cyU2l6ZTsKKyAgICBnX2pzY0NvbmZpZy5q
aXRDYWdlUGFyYW1zLnNoaWZ0QW1vdW50ID0gc2hpZnRBbW91bnQ7CisKKyAgICBNYWNyb0Fzc2Vt
YmxlciBqaXQ7CisKKyAgICBqaXQuYW5kUHRyKFRydXN0ZWRJbW1QdHIobWFzayksIHgwKTsKKyAg
ICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGJhc2VB
ZGRyZXNzKSA+PiAobG9nMlNpemUgKyAxKSA8PCAxNiksIHgwKTsKKyAgICBqaXQuYWRkUHRyU2hp
ZnRlZFJlZyh4MCwgc2hpZnRBbW91bnQsIHgwKTsKKworICAgIGF1dG8gdGVtcGxhdGVCYXNlQ29k
ZVB0ciA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxMaW5rQnVmZmVyUHRyVGFnPih0YWdDb2RlUHRy
PExpbmtCdWZmZXJQdHJUYWc+KCZnX2pzY0NvbmZpZy5qaXRDYWdlVGVtcGxhdGUpKTsKKyAgICBM
aW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCB0ZW1wbGF0ZUJhc2VDb2RlUHRyLCBzaXplb2YoQ29u
ZmlnOjpqaXRDYWdlVGVtcGxhdGUpKTsKKyAgICBsaW5rQnVmZmVyLmZpbmFsaXplQ29kZVdpdGhv
dXREaXNhc3NlbWJseTxKSVRUaHVua1B0clRhZz4oKTsKKyNlbHNlCisjZXJyb3IgKCJKSVQgQ2Fn
aW5nIG5vdCBzdXBwb3J0ZWQgb24gQ1BVIik7CisjZW5kaWYKK30KKyNlbmRpZgorCiBzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIGluaXRpYWxpemVTZXBhcmF0ZWRXWEhlYXBzKHZvaWQqIHN0dWJC
YXNlLCBzaXplX3Qgc3R1YlNpemUsIHZvaWQqIGppdEJhc2UsIHNpemVfdCBqaXRTaXplKQogewog
ICAgIG1hY2hfdm1fYWRkcmVzc190IHdyaXRhYmxlQWRkciA9IDA7CkBAIC0zMjYsNyArMzYwLDEx
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpJVFJlc2VydmF0aW9uIGluaXQKICAgICAgICAgaWYg
KE9wdGlvbnM6OmxvZ0pJVENvZGVGb3JQZXJmKCkpCiAgICAgICAgICAgICByZXR1cm4gUGFnZVJl
c2VydmF0aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXpl
LCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwg
dHJ1ZSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIHJldHVybiBQYWdl
UmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRSZWdpb25zKHJlc2VydmF0aW9u
U2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBFWEVDVVRBQkxFX1BPT0xfV1JJVEFC
TEUsIHRydWUpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2
ZVdpdGhHdWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBh
Z2VzLCBFWEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUpOworI2VuZGlmCiAgICAgfTsKIAog
ICAgIHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbiA9IHRyeUNyZWF0ZVBhZ2VSZXNlcnZhdGlv
bihyZXNlcnZhdGlvbi5zaXplKTsKQEAgLTM1MSw2ICszODksOSBAQCBzdGF0aWMgQUxXQVlTX0lO
TElORSBKSVRSZXNlcnZhdGlvbiBpbml0CiAgICAgICAgIHZvaWQqIHJlc2VydmF0aW9uRW5kID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVzZXJ2YXRpb24uYmFzZSkgKyByZXNlcnZhdGlv
bi5zaXplOwogICAgICAgICBnX2pzY0NvbmZpZy5zdGFydEV4ZWN1dGFibGVNZW1vcnkgPSB0YWdD
b2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KHJlc2VydmF0aW9uLmJhc2UpOwogICAgICAg
ICBnX2pzY0NvbmZpZy5lbmRFeGVjdXRhYmxlTWVtb3J5ID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxl
TWVtb3J5UHRyVGFnPihyZXNlcnZhdGlvbkVuZCk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICBjcmVhdGVKSVRDYWdpbmdUZW1wbGF0ZShyZXNlcnZhdGlvbi5iYXNlLCByZXNlcnZhdGlv
bi5zaXplKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJldHVybiByZXNlcnZhdGlvbjsKQEAgLTU5
Niw2ICs2MzcsMTEgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
IGppdDsKICAgICAgICAgICAgICAgICBhdXRvIGp1bXAgPSBqaXQuanVtcCgpOworI2lmIEVOQUJM
RShKSVRfQ0FHRSkKKyAgICAgICAgICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworICAgICAgICAg
ICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgICAgICAgICAgICAgaml0LmJyZWFrcG9pbnQo
KTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4oY3VycmVudElzbGFuZCksIGlzbGFuZFNpemVJ
bkJ5dGVzLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkLCBmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOwogCkBAIC02MDgsNyArNjU0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLnNldElzSnVtcElzbGFu
ZCgpOwogCiAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIENvZGVMb2NhdGlv
bkxhYmVsPE5vUHRyVGFnPih0YXJnZXQpKTsKLSAgICAgICAgICAgICAgICBGSU5BTElaRV9DT0RF
KGxpbmtCdWZmZXIsIE5vUHRyVGFnLCAiSnVtcCBJc2xhbmQ6ICVsdSIsIGp1bXBMb2NhdGlvbik7
CisgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBOb1B0clRhZywgIkp1
bXAgSXNsYW5kOiAlbHgiLCBqdW1wTG9jYXRpb24pOwogICAgICAgICAgICAgfTsKIAogICAgICAg
ICAgICAgaWYgKEFSTTY0QXNzZW1ibGVyOjpjYW5FbWl0SnVtcChiaXR3aXNlX2Nhc3Q8dm9pZCo+
KGp1bXBMb2NhdGlvbiksIGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSkpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCShyZXZp
c2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRmFz
dEpJVFBlcm1pc3Npb25zLmgiCiAjaW5jbHVkZSAiSklUQ29tcGlsYXRpb25FZmZvcnQuaCIKKyNp
bmNsdWRlICJKSVRWZXJpZmllZENvcHkuaCIKICNpbmNsdWRlICJKU0NDb25maWcuaCIKICNpbmNs
dWRlICJKU0NQdHJUYWcuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCkBAIC0xMjcsNyArMTI4LDEx
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQqIHBlcmZvcm1KSVRNZW0KIAogICAgICAgICBp
ZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkpIHsKICAgICAgICAgICAgIHRocmVhZFNlbGZSZXN0
cmljdFJXWFRvUlcoKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBwZXJmb3Jt
VmVyaWZpZWRKSVRDb3B5KGRzdCwgc3JjLCBuKTsKKyNlbHNlCiAgICAgICAgICAgICBtZW1jcHko
ZHN0LCBzcmMsIG4pOworI2VuZGlmCiAgICAgICAgICAgICB0aHJlYWRTZWxmUmVzdHJpY3RSV1hU
b1JYKCk7CiAgICAgICAgICAgICByZXR1cm4gZHN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSw2ICs0NjUsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0
dXJuR1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9
IFg4NlJlZ2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBYODZSZWdp
c3RlcnM6OmVheDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtQ2FsbGVlRnJvbUlu
dGVycHJldGVyID0gWDg2UmVnaXN0ZXJzOjplYXg7CisKIAogICAgIC8vIEZJWE1FOiBJIGJlbGll
dmUgdGhhdCBhbGwgdXNlcyBvZiB0aGlzIGFyZSBkZWFkIGluIHRoZSBzZW5zZSB0aGF0IGl0IGp1
c3QgY2F1c2VzIHRoZSBzY3JhdGNoCiAgICAgLy8gcmVnaXN0ZXIgYWxsb2NhdG9yIHRvIHNlbGVj
dCBhIGRpZmZlcmVudCByZWdpc3RlciBhbmQgcG90ZW50aWFsbHkgc3BpbGwgdGhpbmdzLiBJdCB3
b3VsZCBiZSBiZXR0ZXIKQEAgLTY1NCw2ICs2NTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwID0gQVJNNjRSZWdpc3Rl
cnM6Ong4OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3Vt
ZW50R1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmlwMDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtQ2FsbGVlRnJvbUludGVycHJldGVyID0gQVJNNjRS
ZWdpc3RlcnM6Ong5OwogCiAgICAgLy8gR1BSUmVnIG1hcHBpbmcgaXMgZGlyZWN0LCB0aGUgbWFj
aGluZSByZWdpc3RlciBudW1iZXJzIGNhbgogICAgIC8vIGJlIHVzZWQgZGlyZWN0bHkgYXMgaW5k
aWNlcyBpbnRvIHRoZSBHUFIgUmVnaXN0ZXJCYW5rLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAyNjc0NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiAhRU5BQkxFKENfTE9PUCkKIAogI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIApAQCAtNDUsNiArNDYs
OCBAQCBleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPmRlcHJlY2F0ZWRWTSgpLmhvc3RDYWxsUmV0dXJu
VmFsdWUpOwogfQogCitWQUxJRF9KSVRfVEFSR0VUKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKTsKKwogI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKSAmJiBDUFUoWDg2XzY0
KQogYXNtICgKICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI2NzQ1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTcsNyArOTcsMTEgQEAgdm9pZCBKSVQ6OmVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCkKIAog
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT3B0aW1pemUsICZ2bSgpLCBtX2J5dGVjb2RlSW5k
ZXguYXNCaXRzKCkpOwogICAgIHNraXBPcHRpbWl6ZS5hcHBlbmQoYnJhbmNoVGVzdFB0cihaZXJv
LCByZXR1cm5WYWx1ZUdQUikpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBmYXJKdW1wKHJl
dHVyblZhbHVlR1BSLCBKSVRDYWdlUHRyVGFnKTsKKyNlbHNlCiAgICAgZmFySnVtcChyZXR1cm5W
YWx1ZUdQUiwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworI2VuZGlmCiAgICAgc2tpcE9w
dGltaXplLmxpbmsodGhpcyk7CiB9CiAjZW5kaWYKQEAgLTI1NCw3ICsyNTgsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIG1fbGFiZWxzW21fYnl0ZWNvZGVJ
bmRleC5vZmZzZXQoKV0gPSBsYWJlbCgpOwogCiAgICAgICAgIGlmIChKSVRJbnRlcm5hbDo6dmVy
Ym9zZSkKLSAgICAgICAgICAgIGRhdGFMb2dMbigiQmFzZWxpbmUgSklUIGVtaXR0aW5nIGNvZGUg
Zm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxvbmcpZGVidWdPZmZzZXQo
KSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0dGluZyBjb2RlIGZv
ciAiLCBtX2J5dGVjb2RlSW5kZXgsICIgYXQgb2Zmc2V0ICIsIChsb25nKWN1cnJlbnRPZmZzZXQo
KSk7CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9w
Y29kZUlEKCk7CiAKQEAgLTUyOSw3ICs1MzMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICAgICAgcmFyZUNhc2VQcm9maWxlID0gJnJhcmVDYXNlUHJvZmls
ZXMuYXQoYnl0ZWNvZGVDb3VudEhhdmluZ1Nsb3dDYXNlKTsKIAogICAgICAgICBpZiAoSklUSW50
ZXJuYWw6OnZlcmJvc2UpCi0gICAgICAgICAgICBkYXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBlbWl0
dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwgKGxv
bmcpZGVidWdPZmZzZXQoKSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkJhc2VsaW5lIEpJVCBl
bWl0dGluZyBzbG93IGNvZGUgZm9yICIsIG1fYnl0ZWNvZGVJbmRleCwgIiBhdCBvZmZzZXQgIiwg
KGxvbmcpY3VycmVudE9mZnNldCgpKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAg
ICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0Rm9yQnl0ZWNvZGVTbG93UGF0aChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCksIGxhYmVsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2
ICs3OSwxMSBAQCB2b2lkIGdlbmVyaWNVbndpbmQoVk0mIHZtLCBDYWxsRnJhbWUqIGNhCiAgICAg
fSBlbHNlCiAgICAgICAgIGNhdGNoUm91dGluZSA9IExMSW50OjpnZXRDb2RlUHRyPEV4Y2VwdGlv
bkhhbmRsZXJQdHJUYWc+KGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uKS5leGVjdXRhYmxlQWRkcmVz
cygpOwogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGlmICghaXNKSVRQQyh1bnRhZ0NvZGVQ
dHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oY2F0Y2hSb3V0aW5lKSkgJiYgT3B0aW9uczo6dXNl
SklUKCkpCisgICAgICAgIGNhdGNoUm91dGluZSA9IHZtLm5hdGl2ZVRyYW1wb2xpbmVGb3IoVGFn
Z2VkTmF0aXZlRnVuY3Rpb24oYml0d2lzZV9jYXN0PGludHB0cl90PihyZXRhZ0NvZGVQdHI8RXhj
ZXB0aW9uSGFuZGxlclB0clRhZywgSlNFbnRyeVB0clRhZz4oY2F0Y2hSb3V0aW5lKSkpKS5yZXRh
Z2dlZEV4ZWN1dGFibGVBZGRyZXNzPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KCk7CisjZW5kaWYK
KwogICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihjYWxsRnJhbWUpIDwgYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4odm0udG9wRW50cnlGcmFtZSkpOwogCiAgICAgYXNzZXJ0SXNUYWdn
ZWRXaXRoKGNhdGNoUm91dGluZSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyMDMsNyArMTIwMywxMSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNv
bnN0IEluCiAgICAgICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklUVW5yZWFzb25hYmxlTG9vcEhp
bnRKdW1wVGFyZ2V0KTsKICAgICAgICAgICAgIG9rLmxpbmsodGhpcyk7CiAgICAgICAgIH0KKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEpJVENh
Z2VQdHJUYWcpOworI2Vsc2UKICAgICAgICAgZmFySnVtcChyZXR1cm5WYWx1ZUdQUiwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworI2VuZGlmCiAgICAgICAgIG5vT3B0aW1pemVkRW50cnku
bGluayh0aGlzKTsKIAogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChqdW1wKCksIGN1cnJlbnRJ
bnN0cnVjdGlvbi0+c2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBA
QAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRl
ICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpJVFZh
bGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNB
c3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgpA
QCAtNzIsNiArNzMsMTQ4IEBAIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIp
CiAKIG5hbWVzcGFjZSBKU0MgewogCitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVGhyb3dTdGFja092
ZXJmbG93RXJyb3JGcm9tVGh1bmspOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25UaHJvd0l0
ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25DYWxs
QXJpdHlDaGVjayk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hl
Y2spOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25UcnlHZXRCeUlkKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMpOworVkFMSURfSklUX1RBUkdFVChvcGVy
YXRpb25UcnlHZXRCeUlkT3B0aW1pemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRC
eUlkRGlyZWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uR2V0QnlJZERpcmVjdEdlbmVy
aWMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRCeUlkRGlyZWN0T3B0aW1pemUpOwor
VkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRCeUlkKTsKK1ZBTElEX0pJVF9UQVJHRVQob3Bl
cmF0aW9uR2V0QnlJZEdlbmVyaWMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMpOwor
VkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNHZW5lcmljKTsKK1ZBTElE
X0pJVF9UQVJHRVQob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUpOworVkFMSURfSklU
X1RBUkdFVChvcGVyYXRpb25JbkJ5SWQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25JbkJ5
SWRHZW5lcmljKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOwor
VkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25JbkJ5VmFsKTsKK1ZBTElEX0pJVF9UQVJHRVQob3Bl
cmF0aW9uUHV0QnlJZFN0cmljdCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3QpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdCk7CitW
QUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZSk7CitWQUxJRF9K
SVRfVEFSR0VUKG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZSk7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZSk7CitWQUxJRF9K
SVRfVEFSR0VUKG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3QpOworVkFM
SURfSklUX1RBUkdFVChvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0
aW1pemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxk
U3RyaWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVs
ZFN0cmljdE9wdGltaXplKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUHV0QnlWYWxPcHRp
bWl6ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpOworVkFMSURfSklU
X1RBUkdFVChvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpOworVkFMSURfSklUX1RBUkdF
VChvcGVyYXRpb25DYWxsRXZhbCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkxpbmtDYWxs
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCk7CitWQUxJ
RF9KSVRfVEFSR0VUKG9wZXJhdGlvblZpcnR1YWxDYWxsKTsKK1ZBTElEX0pJVF9UQVJHRVQob3Bl
cmF0aW9uQ29tcGFyZUxlc3MpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Db21wYXJlTGVz
c0VxKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIpOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxKTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uQ29tcGFyZUVxKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29tcGFyZVN0
cmluZ0VxKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKTsKKyNp
ZiBVU0UoQklHSU5UMzIpCitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkNvbXBhcmVFcUhlYXBC
aWdJbnRUb0ludDMyKTsKKyNlbmRpZgorVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25OZXdBcnJh
eVdpdGhQcm9maWxlKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6
ZUFuZFByb2ZpbGUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25OZXdGdW5jdGlvbik7CitW
QUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld0dlbmVyYXRv
ckZ1bmN0aW9uKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rp
b25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KTsKK1ZBTElEX0pJVF9UQVJH
RVQob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbik7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlv
bk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbik7CitW
QUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52
YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0
aW9uU2V0RnVuY3Rpb25OYW1lKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3T2JqZWN0
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3UHJvbWlzZSk7CitWQUxJRF9KSVRfVEFS
R0VUKG9wZXJhdGlvbk5ld0ludGVybmFsUHJvbWlzZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJh
dGlvbk5ld0dlbmVyYXRvcik7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk5ld0FzeW5jR2Vu
ZXJhdG9yKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTmV3UmVnZXhwKTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uSGFuZGxlVHJhcHMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25EZWJ1Zyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbk9wdGltaXplKTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoKTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uUHV0QnlJbmRleCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblB1
dEdldHRlckJ5SWQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25QdXRTZXR0ZXJCeUlkKTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUHV0R2V0dGVyQnlWYWwpOworVkFMSURfSklUX1RB
UkdFVChvcGVyYXRpb25QdXRTZXR0ZXJCeVZhbCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlv
blB1dEdldHRlclNldHRlcik7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblBvcFNjb3BlKTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSk7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJh
dGlvbkdldEJ5VmFsT3B0aW1pemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRCeVZh
bCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lT3B0aW1pemUpOwor
VkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25HZXRQcml2YXRlTmFtZSk7CitWQUxJRF9KSVRfVEFS
R0VUKG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eURlZmF1bHQpOworVkFMSURfSklUX1RBUkdF
VChvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9u
RGVsZXRlQnlJZEdlbmVyaWMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uUHVzaFdpdGhTY29wZSk7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QpOworVkFMSURfSklUX1RBUkdFVChv
cGVyYXRpb25JbnN0YW5jZU9mKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uSW5zdGFuY2VP
ZkdlbmVyaWMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUp
OworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25TaXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRz
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyk7CitWQUxJ
RF9KSVRfVEFSR0VUKG9wZXJhdGlvblNldHVwRm9yd2FyZEFyZ3VtZW50c0ZyYW1lKTsKK1ZBTElE
X0pJVF9UQVJHRVQob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUpOworVkFMSURfSklUX1RBUkdF
VChvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBlKTsKK1ZBTElEX0pJVF9UQVJH
RVQob3BlcmF0aW9uU3dpdGNoSW1tV2l0aFVua25vd25LZXlUeXBlKTsKK1ZBTElEX0pJVF9UQVJH
RVQob3BlcmF0aW9uU3dpdGNoU3RyaW5nV2l0aFVua25vd25LZXlUeXBlKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uR2V0RnJvbVNjb3BlKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9u
UHV0VG9TY29wZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblRocm93KTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uUmVhbGxvY2F0ZUJ1dHRlcmZseVRvSGF2ZVByb3BlcnR5U3RvcmFn
ZVdpdGhJbml0aWFsQ2FwYWNpdHkpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25SZWFsbG9j
YXRlQnV0dGVyZmx5VG9Hcm93UHJvcGVydHlTdG9yYWdlKTsKK1ZBTElEX0pJVF9UQVJHRVQob3Bl
cmF0aW9uT1NSV3JpdGVCYXJyaWVyKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uV3JpdGVC
YXJyaWVyU2xvd1BhdGgpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Mb29rdXBFeGNlcHRp
b25IYW5kbGVyKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFu
ZGxlckZyb21DYWxsZXJGcmFtZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblZNSGFuZGxl
RXhjZXB0aW9uKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uRXhjZXB0aW9uRnV6eik7CitW
QUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enpXaXRoQ2FsbEZyYW1lKTsKK1ZB
TElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVBZGQpOworVkFMSURfSklUX1RBUkdFVChvcGVy
YXRpb25WYWx1ZUFkZFByb2ZpbGVkKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVB
ZGRQcm9maWxlZE9wdGltaXplKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVBZGRQ
cm9maWxlZE5vT3B0aW1pemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25WYWx1ZUFkZE9w
dGltaXplKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVBZGROb09wdGltaXplKTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVNdWwpOworVkFMSURfSklUX1RBUkdFVChv
cGVyYXRpb25WYWx1ZU11bE5vT3B0aW1pemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25W
YWx1ZU11bE9wdGltaXplKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVNdWxQcm9m
aWxlZCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWRPcHRpbWl6
ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblZhbHVlTXVsUHJvZmlsZWROb09wdGltaXpl
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQXJpdGhOZWdhdGUpOworVkFMSURfSklUX1RB
UkdFVChvcGVyYXRpb25Bcml0aE5lZ2F0ZVByb2ZpbGVkKTsKK1ZBTElEX0pJVF9UQVJHRVQob3Bl
cmF0aW9uQXJpdGhOZWdhdGVQcm9maWxlZE9wdGltaXplKTsKK1ZBTElEX0pJVF9UQVJHRVQob3Bl
cmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblZh
bHVlU3ViKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uVmFsdWVTdWJQcm9maWxlZCk7CitW
QUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblZhbHVlU3ViT3B0aW1pemUpOworVkFMSURfSklUX1RB
UkdFVChvcGVyYXRpb25WYWx1ZVN1Yk5vT3B0aW1pemUpOworVkFMSURfSklUX1RBUkdFVChvcGVy
YXRpb25WYWx1ZVN1YlByb2ZpbGVkT3B0aW1pemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25WYWx1ZVN1YlByb2ZpbGVkTm9PcHRpbWl6ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlv
blByb2Nlc3NUeXBlUHJvZmlsZXJMb2cpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Qcm9j
ZXNzU2hhZG93Q2hpY2tlbkxvZyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkNoZWNrSWZF
eGNlcHRpb25Jc1VuY2F0Y2hhYmxlQW5kTm90aWZ5UHJvZmlsZXIpOworCiBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgcHJvZmlsZWRBZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBvcDEsIEpTVmFsdWUgb3AyLCBCaW5hcnlBcml0aFByb2ZpbGUmIGFyaXRoUHJvZmlsZSkKIHsK
ICAgICBhcml0aFByb2ZpbGUub2JzZXJ2ZUxIU0FuZFJIUyhvcDEsIG9wMik7CkBAIC0xMTU3LDcg
KzEzMDAsMTEgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorI2lmIEVOQUJM
RShKSVRfQ0FHRSkKKyAgICAgICAgICAgICAgICB2bS5nZXRDVElTdHViKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKS5leGVjdXRhYmxlQWRk
cmVzcygpLAorI2Vsc2UKICAgICAgICAgICAgICAgICB0YWdDRnVuY3Rpb248dm9pZCosIEpTRW50
cnlQdHJUYWc+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpLAorI2VuZGlmCiAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENh
bGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkpOwogICAgICAgICB9
CiAgICAgCkBAIC0xMTgzLDcgKzEzMzAsMTMgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBo
YW5kbGVIb3N0Q2FsbAogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtl
ZXBUaGVGcmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh0
YWdDRnVuY3Rpb248dm9pZCosIEpTRW50cnlQdHJUYWc+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKKyAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCgKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICB2bS5nZXRD
VElTdHViKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0
clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLAorI2Vsc2UKKyAgICAgICAgICAgIHRhZ0NGdW5j
dGlvblB0cjx2b2lkKiwgSlNFbnRyeVB0clRhZz4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksCisj
ZW5kaWYKKyAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkp
OwogICAgIH0KIAogICAgIEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5
cGU6Ok5vbmUpOwpAQCAtMTIxNiw3ICsxMzY5LDExIEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBsaW5r
Rm9yKHZtLCBjYWxsZWVGcmFtZSwgKmNhbGxMaW5rSW5mbywgbnVsbHB0ciwgaW50ZXJuYWxGdW5j
dGlvbiwgY29kZVB0cik7CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICB2b2lk
KiBsaW5rZWRUYXJnZXQgPSBjb2RlUHRyLnVudGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3MoKTsKKyNl
bHNlCiAgICAgICAgICAgICB2b2lkKiBsaW5rZWRUYXJnZXQgPSBjb2RlUHRyLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQobGlua2Vk
VGFyZ2V0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkg
PT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiAgICAg
ICAgIH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIGhhbmRsZUhvc3RD
YWxsKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5m
bykpOwpAQCAtMTIzNiw3ICsxMzkzLDExIEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGkKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAg
ICAgICBhdXRvIGhhbmRsZVRocm93RXhjZXB0aW9uID0gWyZdICgpIHsKKyNpZiBFTkFCTEUoSklU
X0NBR0UpCisgICAgICAgICAgICB2b2lkKiB0aHJvd1RhcmdldCA9IHZtLmdldENUSVN0dWIodGhy
b3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8SlNFbnRy
eVB0clRhZz4oKS51bnRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzKCk7CisjZWxzZQogICAgICAgICAg
ICAgdm9pZCogdGhyb3dUYXJnZXQgPSB2bS5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNh
bGxTbG93UGF0aEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh0
aHJvd1RhcmdldCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CiAgICAg
ICAgIH07CiAKQEAgLTEyNjQsNyArMTQyNSwxMSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpCiAgICAgZWxzZQogICAgICAgICBsaW5rRm9yKHZtLCBjYWxsZWVGcmFt
ZSwgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxsZWUsIGNvZGVQdHIpOwogCisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY29kZVB0ci51bnRhZ2dlZEV4
ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+
Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJh
bWUpKTsKKyNlbHNlCiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChjb2RlUHRyLmV4ZWN1dGFibGVB
ZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1vZGUo
KSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsKKyNl
bmRpZgogfQogCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoRnVuY3Rp
b24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8sIEpTQ2VsbComIGNhbGxlZUFzRnVuY3Rpb25DZWxs
KQpAQCAtMTQxOSw3ICsxNTg0LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZUVxSAogfQogI2VuZGlmCiAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3QXJyYXlXaXRoUHJvZmlsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludCBz
aXplKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhQ
cm9maWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUqIHByb2ZpbGUsIGNvbnN0IEpTVmFsdWUqIHZhbHVlcywgaW50MzJfdCBzaXplKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0xODA0LDcgKzE5NjksMTEgQEAgU2xvd1BhdGhS
ZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICBjb2RlQmxvY2stPm9wdGlt
aXplU29vbigpOwogICAgICAgICBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPnNldERp
ZE9wdGltaXplKFRyaVN0YXRlOjpUcnVlKTsKICAgICAgICAgdm9pZCogdGFyZ2V0UEMgPSB2bS5n
ZXRDVElTdHViKERGRzo6b3NyRW50cnlUaHVua0dlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICB0YXJnZXRQQyA9IHVudGFn
Q29kZVB0cih0YXJnZXRQQywgSklUVGh1bmtQdHJUYWcpOworI2Vsc2UKICAgICAgICAgdGFyZ2V0
UEMgPSByZXRhZ0NvZGVQdHIodGFyZ2V0UEMsIEpJVFRodW5rUHRyVGFnLCBiaXR3aXNlX2Nhc3Q8
UHRyVGFnPihjYWxsRnJhbWUpKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KHRhcmdldFBDLCBkYXRhQnVmZmVyKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcg
KzI1MSw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJTZXQKICNlbHNl
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IGF0dHJpYnV0ZSwgSlND
ZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogI2VuZGlmCi12b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHVzaEZ1bmN0aW9uTmFtZVNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgaW50MzJfdCwg
U3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblBvcFNjb3BlKEpTR2xvYmFsT2JqZWN0KiwgaW50MzJfdCkgV1RGX0lO
VEVSTkFMOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFs
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmls
ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vi
c2NyaXB0KSBXVEZfSU5URVJOQUw7CkBAIC0yNjUsNyArMjY0LDYgQEAgc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYQogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVsZXRlQnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSB0YXJnZXQsIEVDTUFNb2RlKSBXVEZf
SU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVzaFdpdGhTY29wZShK
U0dsb2JhbE9iamVjdCosIEpTQ2VsbCogY3VycmVudFNjb3BlQ2VsbCwgRW5jb2RlZEpTVmFsdWUg
b2JqZWN0KSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVz
aFdpdGhTY29wZU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGN1
cnJlbnRTY29wZUNlbGwsIEpTT2JqZWN0KiBvYmplY3QpIFdURl9JTlRFUk5BTDsKLUpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
SW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBwcm90bykgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25JbnN0YW5jZU9mR2VuZXJpYyhKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3RvKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluc3RhbmNl
T2ZPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgdmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3RvKSBXVEZfSU5URVJOQUw7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDEwICsyOCwxNyBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAorI2lmIEVOQUJMRShKSVRf
Q0FHRSkKKyNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkpJ
VENvZGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2lmIEVOQUJMRShKSVRf
Q0FHRSkKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjZW5kaWYKICNpbmNsdWRlICJUaHVua0dl
bmVyYXRvcnMuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTIzMyw2ICsyNDAsMTA0IEBAIE5hdGl2ZUV4ZWN1
dGFibGUqIEpJVFRodW5rczo6aG9zdEZ1bmN0aW8KICAgICByZXR1cm4gaG9zdEZ1bmN0aW9uU3R1
Yih2bSwgZnVuY3Rpb24sIGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yLCBnZW5lcmF0b3Is
IGludHJpbnNpYywgbnVsbHB0ciwgbmFtZSk7CiB9CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCit1
bmlvbiBUcmFtcG9saW5lTG9jYXRpb24geworICAgIFRyYW1wb2xpbmVMb2NhdGlvbigpCisgICAg
ICAgIDogbV9sYWJlbChBc3NlbWJseUhlbHBlcnM6OkxhYmVsKCkpCisgICAgeworICAgIH0KKwor
ICAgIFRyYW1wb2xpbmVMb2NhdGlvbihBc3NlbWJseUhlbHBlcnM6OkxhYmVsIGxhYmVsKQorICAg
ICAgICA6IG1fbGFiZWwobGFiZWwpCisgICAgeworICAgIH0KKworICAgIFRyYW1wb2xpbmVMb2Nh
dGlvbiYgb3BlcmF0b3I9KGNvbnN0IFRyYW1wb2xpbmVMb2NhdGlvbiYgb3RoZXIpCisgICAgewor
ICAgICAgICBtX2xhYmVsID0gb3RoZXIubV9sYWJlbDsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIEFzc2VtYmx5SGVscGVyczo6TGFiZWwgbV9sYWJlbDsKKyAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9jb2RlUHRyOworfTsKKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IEpJVFRodW5rczo6SG9zdEZ1bmN0aW9uU3R1YnM6
Okhvc3RGdW5jdGlvblN0dWJCbG9jazo6bGluayhNYWNyb0Fzc2VtYmxlciYgaml0KQoreworICAg
IHNpemVfdCBjb2RlU2l6ZSA9IGppdC5tX2Fzc2VtYmxlci5jb2RlU2l6ZSgpOworCisjaWYgQ1BV
KEFSTTY0KQorICAgIEFTU0VSVChjb2RlU2l6ZSA9IHJvdW5kVXBUb011bHRpcGxlT2YoMTYsIGNv
ZGVTaXplKSk7CisjZW5kaWYKKworICAgIGlmICghbV9iYXNlKSB7CisgICAgICAgIEFTU0VSVChj
b2RlU2l6ZSA8PSBzX2Jsb2NrU2l6ZSk7CisKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVs
IG5leHRGcmVlTGFiZWwgPSBqaXQubGFiZWwoKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHNp
emVfdCBwYWRDb3VudCA9IChzX2Jsb2NrU2l6ZSAtIGNvZGVTaXplKSAvIEFzc2VtYmxlcjo6aW5z
dHJ1Y3Rpb25TaXplOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhZENvdW50OyBp
KyspCisgICAgICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworI2Vsc2UKKyNlcnJvciAiQ1BVIHR5
cGUgbm90IHN1cHBvcnRlZCIKKyNlbmRpZgorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
ZW5kTGFiZWwgPSBqaXQubGFiZWwoKTsKKyAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lEKTsKKworICAgICAgICBtX25leHRGcmVlT2Zmc2V0ID0gbGlua0J1
ZmZlci5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KG5leHRGcmVlTGFiZWwpOworICAgICAgICBt
X2Jsb2NrRW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KGVuZExhYmVs
KTsKKworICAgICAgICBtX2Jhc2UgPSBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEpTRW50cnlQ
dHJUYWcsICJIb3N0IEZ1bmN0aW9uIFRyYW1wb2xpbmUgVGh1bmsiKTsKKworICAgICAgICByZXR1
cm4gbV9iYXNlLmNvZGUoKTsKKyAgICB9CisKKyAgICBBU1NFUlQoY29kZVNpemUgPD0gZnJlZVNw
YWNlKCkpOworICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG1fbmV4dEZyZWVPZmZzZXQs
IGNvZGVTaXplLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKTsKKyAgICAKKyAgICBtX25leHRG
cmVlT2Zmc2V0ID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KGppdC5sYWJl
bCgpKTsKKworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEpTRW50cnlQdHJU
YWcsICJIb3N0IEZ1bmN0aW9uIFRyYW1wb2xpbmUgVGh1bmsiKS5jb2RlKCk7Cit9CisKK01hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBKSVRUaHVua3M6Okhvc3RGdW5jdGlvblN0
dWJzOjpuYXRpdmVUcmFtcG9saW5lRm9yKGNvbnN0IExvY2tIb2xkZXImIGxvY2ssIFRhZ2dlZE5h
dGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKQoreworICAgIGF1dG8gZW50cnkgPSBtX2hvc3RGdW5jdGlv
blRyYW1wb2xpbmVNYXAtPmZpbmQoZnVuY3Rpb24pOworICAgIGlmIChlbnRyeSAhPSBtX2hvc3RG
dW5jdGlvblRyYW1wb2xpbmVNYXAtPmVuZCgpKQorICAgICAgICByZXR1cm4gZW50cnktPnZhbHVl
OworCisgICAgcmV0dXJuIGFkZFN0dWJGb3IobG9jaywgZnVuY3Rpb24pOworfQorCitNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gSklUVGh1bmtzOjpIb3N0RnVuY3Rpb25TdHVi
czo6YWRkU3R1YkZvcihjb25zdCBMb2NrSG9sZGVyJiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gZnVu
Y3Rpb24pCit7CisgICAgQXNzZW1ibHlIZWxwZXJzIGppdChudWxscHRyKTsKKworICAgIEFTU0VS
VCghaXNKSVRQQyh1bnRhZ0NvZGVQdHIoZnVuY3Rpb24ucmF3UG9pbnRlcigpLCBKU0VudHJ5UHRy
VGFnKSkpOworICAgIAorICAgIGppdC5mYXJKdW1wKEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKHVudGFnQ29kZVB0cihmdW5jdGlvbi5yYXdQb2ludGVyKCksIEpTRW50cnlQdHJUYWcp
KSwgTm9QdHJUYWcpOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBy
ZXN1bHQgPSBnZXRDdXJyZW50QmxvY2soKS0+bGluayhqaXQpOworICAgIG1faG9zdEZ1bmN0aW9u
VHJhbXBvbGluZU1hcC0+YWRkKGZ1bmN0aW9uLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK0pJVFRodW5rczo6SG9zdEZ1bmN0aW9uU3R1YnM6Okhvc3RGdW5jdGlvblN0dWJCbG9j
ayogSklUVGh1bmtzOjpIb3N0RnVuY3Rpb25TdHViczo6Z2V0Q3VycmVudEJsb2NrKCkKK3sKKyAg
ICBpZiAoIW1fdGFpbCB8fCAhbV90YWlsLT5oYXNGcmVlU3BhY2UoKSkgeworICAgICAgICBIb3N0
RnVuY3Rpb25TdHViQmxvY2sqIG5ld0Jsb2NrID0gbmV3IEhvc3RGdW5jdGlvblN0dWJCbG9jaygp
OworCisgICAgICAgIGlmICghbV9oZWFkKQorICAgICAgICAgICAgbV9oZWFkID0gbmV3QmxvY2s7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdGFpbC0+bGluayhuZXdCbG9jayk7CisKKyAg
ICAgICAgbV90YWlsID0gbmV3QmxvY2s7CisgICAgfQorCisgICAgcmV0dXJuIG1fdGFpbDsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHJldmlzaW9uIDI2NzQ1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiSW50
cmluc2ljLmgiCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
LmgiCisjZW5kaWYKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRl
ICJUaHVua0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIldlYWsuaCIKQEAgLTY2LDYgKzY5LDE0IEBA
IHB1YmxpYzoKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBob3N0RnVuY3Rpb25TdHViKFZNJiwgVGFn
Z2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBUaHVu
a0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSosIGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogaG9zdEZ1bmN0aW9uU3R1YihWTSYs
IFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUaHVua0dlbmVyYXRvciwgSW50cmluc2ljLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBuYXRpdmVUcmFtcG9saW5lRm9yKFRhZ2dlZE5hdGl2ZUZ1
bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICAgICAgcmV0dXJuIG1faG9zdEZ1bmN0aW9uU3R1YnMubmF0aXZlVHJhbXBvbGluZUZv
cihsb2NrZXIsIGZ1bmN0aW9uKTsKKyAgICB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lk
IGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7CiAgICAgCkBA
IC0xMDcsNiArMTE4LDYyIEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEhvc3RLZXlTZWFyY2hlcjsK
ICAgICBzdHJ1Y3QgTmF0aXZlRXhlY3V0YWJsZVRyYW5zbGF0b3I7CiAKKyNpZiBFTkFCTEUoSklU
X0NBR0UpCisgICAgY2xhc3MgSG9zdEZ1bmN0aW9uU3R1YnMgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgY2xhc3MgSG9zdEZ1bmN0aW9uU3R1YkJsb2NrIHsKKyAgICAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2Jsb2NrU2l6
ZSA9IDIwNDg7CisKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgSG9zdEZ1bmN0aW9uU3R1
YkJsb2NrKCkKKyAgICAgICAgICAgICAgICA6IG1fbmV4dChudWxscHRyKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4gbGluayhNYWNyb0Fzc2VtYmxlciYgaml0KTsKKworICAgICAgICAgICAgc2l6
ZV90IGZyZWVTcGFjZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYmxvY2tFbmQuZGF0YUxvY2F0aW9uKCkpIC0gcmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9uZXh0RnJlZU9mZnNldC5kYXRhTG9jYXRpb24oKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2wgaGFzRnJlZVNwYWNlKCkgeyByZXR1
cm4gISFmcmVlU3BhY2UoKTsgfQorCisgICAgICAgICAgICB2b2lkIGxpbmsoSG9zdEZ1bmN0aW9u
U3R1YkJsb2NrKiBuZXh0KSB7IG1fbmV4dCA9IG5leHQ7IH0KKworICAgICAgICBwcml2YXRlOgor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG1fYmFzZTsK
KyAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IG1fbmV4dEZyZWVP
ZmZzZXQ7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiBtX2Js
b2NrRW5kOworICAgICAgICAgICAgSG9zdEZ1bmN0aW9uU3R1YkJsb2NrKiBtX25leHQ7CisgICAg
ICAgIH07CisKKyAgICAgICAgSG9zdEZ1bmN0aW9uU3R1YnMoKQorICAgICAgICAgICAgOiBtX2hl
YWQobnVsbHB0cikKKyAgICAgICAgICAgICwgbV90YWlsKG51bGxwdHIpCisgICAgICAgICAgICAs
IG1faG9zdEZ1bmN0aW9uVHJhbXBvbGluZU1hcChtYWtlVW5pcXVlPEhvc3RGdW5jdGlvblRyYW1w
b2xpbmVNYXA+KCkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBuYXRpdmVUcmFtcG9saW5lRm9yKGNvbnN0IExvY2tI
b2xkZXImLCBUYWdnZWROYXRpdmVGdW5jdGlvbik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gYWRkU3R1YkZvcihjb25zdCBMb2Nr
SG9sZGVyJiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24pOworCisgICAgICAgIEhvc3RGdW5jdGlvblN0
dWJCbG9jayogZ2V0Q3VycmVudEJsb2NrKCk7CisKKyAgICAgICAgSG9zdEZ1bmN0aW9uU3R1YkJs
b2NrKiBtX2hlYWQ7CisgICAgICAgIEhvc3RGdW5jdGlvblN0dWJCbG9jayogbV90YWlsOworCisg
ICAgICAgIHR5cGVkZWYgSGFzaE1hcDxUYWdnZWROYXRpdmVGdW5jdGlvbiwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+LCBUYWdnZWROYXRpdmVGdW5jdGlvbkhhc2gsIEhhc2hU
cmFpdHM8SlNDOjpUYWdnZWROYXRpdmVGdW5jdGlvbj4+IEhvc3RGdW5jdGlvblRyYW1wb2xpbmVN
YXA7CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhvc3RGdW5jdGlvblRyYW1wb2xpbmVNYXA+
IG1faG9zdEZ1bmN0aW9uVHJhbXBvbGluZU1hcDsKKyAgICB9OworCisgICAgSG9zdEZ1bmN0aW9u
U3R1YnMgbV9ob3N0RnVuY3Rpb25TdHViczsKKyNlbmRpZgorCiAgICAgdXNpbmcgV2Vha05hdGl2
ZUV4ZWN1dGFibGVTZXQgPSBIYXNoU2V0PFdlYWs8TmF0aXZlRXhlY3V0YWJsZT4sIFdlYWtOYXRp
dmVFeGVjdXRhYmxlSGFzaD47CiAgICAgV2Vha05hdGl2ZUV4ZWN1dGFibGVTZXQgbV9uYXRpdmVF
eGVjdXRhYmxlU2V0OwogICAgIExvY2sgbV9sb2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRWYWxpZFRhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUVmFsaWRUYXJnZXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFZhbGlkVGFyZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShKSVQpCisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgRU5B
QkxFKEpJVF9DQUdFKQordHlwZWRlZiB2b2lkKiBSYXdKSVRUYXJnZXRQdHI7CisKKyNkZWZpbmUg
VkFMSURfVEFSR0VUX1NFQ1RJT04gc2VjdGlvbigiX19EQVRBX0NPTlNULF9faml0X3RhcmdldHMi
KQorCisjZGVmaW5lIFZBTElEX1RBUkdFVF9UQUcgX19hdHRyaWJ1dGVfXygodXNlZCwgVkFMSURf
VEFSR0VUX1NFQ1RJT04pKQorCisjZGVmaW5lIFZBTElEX0pJVF9UQVJHRVQoZnVuYykgdm9pZCog
X0pJVFRhcmdldF8gIyMgZnVuYyBWQUxJRF9UQVJHRVRfVEFHID0gcmVpbnRlcnByZXRfY2FzdDxS
YXdKSVRUYXJnZXRQdHI+KCBmdW5jICkKKyNkZWZpbmUgVkFMSURfSklUX1RBUkdFVF9FWFBMSUNJ
VElEKGlkLCBmdW5jKSB2b2lkKiBfSklUVGFyZ2V0XyAjIyBpZCBWQUxJRF9UQVJHRVRfVEFHID0g
cmVpbnRlcnByZXRfY2FzdDxSYXdKSVRUYXJnZXRQdHI+KCBmdW5jICkKKworI2RlZmluZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKGZ1bmMsIC4uLikgXAorICAgIEpTQ19IT1NUX0NBTEwgZnVuYyhfX1ZB
X0FSR1NfXyk7IFwKKyAgICB2b2lkKiBfSklUVGFyZ2V0XyAjIyBmdW5jIFZBTElEX1RBUkdFVF9U
QUcgPSByZWludGVycHJldF9jYXN0PFJhd0pJVFRhcmdldFB0cj4oc3RhdGljX2Nhc3Q8RW5jb2Rl
ZEpTVmFsdWUgKCopKF9fVkFfQVJHU19fKT4oZnVuYykpCisjZWxzZQorI2RlZmluZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKGZ1bmMsIC4uLikgXAorICAgIEpTQ19IT1NUX0NBTEwgZnVuYyhfX1ZBX0FS
R1NfXykKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwordXNpbmcgSlNDOjpSYXdKSVRU
YXJnZXRQdHI7CisKKyNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRW
YWxpZFRhcmdldExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVmFsaWRUYXJnZXRMaXN0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFZhbGlkVGFyZ2V0TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXRMaXN0
LmgiCisKKyNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSklUX0NBR0UpCisKKyNpbmNsdWRlICJt
YXRoLmgiCisjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNs
dWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXIuaD4gLy8gRklYTUU6IEpJ
VF9DQUdFIC0gQWRkZWQgdG8gdXNlIHN5c3RlbSBsb2dnaW5nLgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIkpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0RhdGFW
aWV3LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCisjaW5j
bHVkZSAiTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkVycm9yVHlwZS5oIgor
CisvLyBVc2UgdHlwZWQgdGVtcG9yYXJpZXMgdG8gd29yayBhcm91bmQgb3ZlcmxvYWRlZCBtYXRo
IGZ1bmN0aW9ucywKK2V4dGVybiBkb3VibGUgYWNvcyhkb3VibGUpOworc3RhdGljIGRvdWJsZSAo
JmFjb3NGUHRyKShkb3VibGUpID0gYWNvczsKK2V4dGVybiBkb3VibGUgYWNvc2goZG91YmxlKTsK
K3N0YXRpYyBkb3VibGUgKCZhY29zaEZQdHIpKGRvdWJsZSkgPSBhY29zaDsKK2V4dGVybiBkb3Vi
bGUgYXNpbihkb3VibGUpOworc3RhdGljIGRvdWJsZSAoJmFzaW5GUHRyKShkb3VibGUpID0gYXNp
bjsKK2V4dGVybiBkb3VibGUgYXNpbmgoZG91YmxlKTsKK3N0YXRpYyBkb3VibGUgKCZhc2luaEZQ
dHIpKGRvdWJsZSkgPSBhc2luaDsKK2V4dGVybiBkb3VibGUgYXRhbihkb3VibGUpOworc3RhdGlj
IGRvdWJsZSAoJmF0YW5GUHRyKShkb3VibGUpID0gYXRhbjsKK2V4dGVybiBkb3VibGUgYXRhbmgo
ZG91YmxlKTsKK3N0YXRpYyBkb3VibGUgKCZhdGFuaEZQdHIpKGRvdWJsZSkgPSBhdGFuaDsKK2V4
dGVybiBkb3VibGUgY2JydChkb3VibGUpOworc3RhdGljIGRvdWJsZSAoJmNicnRGUHRyKShkb3Vi
bGUpID0gY2JydDsKK2V4dGVybiBkb3VibGUgY2VpbChkb3VibGUpOworc3RhdGljIGRvdWJsZSAo
JmNlaWxGUHRyKShkb3VibGUpID0gY2VpbDsKK2V4dGVybiBmbG9hdCBjZWlsZihmbG9hdCk7Citz
dGF0aWMgZmxvYXQgKCZjZWlsZkZQdHIpKGZsb2F0KSA9IGNlaWxmOworZXh0ZXJuIGRvdWJsZSBj
b3MoZG91YmxlKTsKK3N0YXRpYyBkb3VibGUgKCZjb3NGUHRyKShkb3VibGUpID0gY29zOworZXh0
ZXJuIGRvdWJsZSBjb3NoKGRvdWJsZSk7CitzdGF0aWMgZG91YmxlICgmY29zaEZQdHIpKGRvdWJs
ZSkgPSBjb3NoOworZXh0ZXJuIGRvdWJsZSBleHAoZG91YmxlKTsKK3N0YXRpYyBkb3VibGUgKCZl
eHBGUHRyKShkb3VibGUpID0gZXhwOworZXh0ZXJuIGRvdWJsZSBleHBtMShkb3VibGUpOworc3Rh
dGljIGRvdWJsZSAoJmV4cG0xRlB0cikoZG91YmxlKSA9IGV4cG0xOworZXh0ZXJuIGRvdWJsZSBm
bG9vcihkb3VibGUpOworc3RhdGljIGRvdWJsZSAoJmZsb29yRlB0cikoZG91YmxlKSA9IGZsb29y
OworZXh0ZXJuIGZsb2F0IGZsb29yZihmbG9hdCk7CitzdGF0aWMgZmxvYXQgKCZmbG9vcmZGUHRy
KShmbG9hdCkgPSBmbG9vcmY7CitleHRlcm4gZG91YmxlIGZtb2QoZG91YmxlLCBkb3VibGUpOwor
c3RhdGljIGRvdWJsZSAoJmZtb2RGUHRyKShkb3VibGUsIGRvdWJsZSkgPSBmbW9kOworZXh0ZXJu
IGRvdWJsZSBsb2coZG91YmxlKTsKK3N0YXRpYyBkb3VibGUgKCZsb2dGUHRyKShkb3VibGUpID0g
bG9nOworZXh0ZXJuIGRvdWJsZSBsb2cxMChkb3VibGUpOworc3RhdGljIGRvdWJsZSAoJmxvZzEw
RlB0cikoZG91YmxlKSA9IGxvZzEwOworZXh0ZXJuIGRvdWJsZSBsb2cyKGRvdWJsZSk7CitzdGF0
aWMgZG91YmxlICgmbG9nMkZQdHIpKGRvdWJsZSkgPSBsb2cyOworZXh0ZXJuIGRvdWJsZSBwb3co
ZG91YmxlLCBkb3VibGUpOworc3RhdGljIGRvdWJsZSAoJnBvd0ZQdHIpKGRvdWJsZSwgZG91Ymxl
KSA9IHBvdzsKK2V4dGVybiBkb3VibGUgc2luKGRvdWJsZSk7CitzdGF0aWMgZG91YmxlICgmc2lu
RlB0cikoZG91YmxlKSA9IHNpbjsKK2V4dGVybiBkb3VibGUgc2luaChkb3VibGUpOworc3RhdGlj
IGRvdWJsZSAoJnNpbmhGUHRyKShkb3VibGUpID0gc2luaDsKK2V4dGVybiBkb3VibGUgc3FydChk
b3VibGUpOworc3RhdGljIGRvdWJsZSAoJnNxcnRGUHRyKShkb3VibGUpID0gc3FydDsKK2V4dGVy
biBkb3VibGUgdGFuKGRvdWJsZSk7CitzdGF0aWMgZG91YmxlICgmdGFuRlB0cikoZG91YmxlKSA9
IHRhbjsKK2V4dGVybiBkb3VibGUgdGFuaChkb3VibGUpOworc3RhdGljIGRvdWJsZSAoJnRhbmhG
UHRyKShkb3VibGUpID0gdGFuaDsKKworbmFtZXNwYWNlIEpTQyB7CisKK1Jhd0pJVFRhcmdldFB0
ciBqaXRWYWxpZFRhcmdldHNFbmQgVkFMSURfVEFSR0VUX1RBRyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KDB4ZmZmZmZmZmYwMDAwMDBlZEwpOworCitzdGF0aWMgYm9vbCB2ZXJib3NlID0gZmFs
c2U7CisKKyNpZiAwCisjZGVmaW5lIEpWVExfTE9HKC4uLikgZGF0YUxvZ0YoX19WQV9BUkdTX18p
CisjZWxpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyNkZWZpbmUgTE9HX0NIQU5ORUxfUFJFRklY
IExvZworCisjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwgTG9nSklUVGFy
Z2V0TGlzdCA9IHsgV1RGTG9nQ2hhbm5lbFN0YXRlOjpPbiwgIkpJVFRhcmdldExpc3QiLCBXVEZM
b2dMZXZlbDo6RXJyb3IgfTsKKyNlbmRpZgorI2lmIFVTRShPU19MT0cpICYmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCBMb2dKSVRUYXJnZXRMaXN0ID0geyBXVEZMb2dDaGFu
bmVsU3RhdGU6Ok9uLCAiSklUVGFyZ2V0TGlzdCIsIFdURkxvZ0xldmVsOjpFcnJvciwgTE9HX0NI
QU5ORUxfV0VCS0lUX1NVQlNZU1RFTSwgT1NfTE9HX0RFRkFVTFQgfTsKKyNlbmRpZgorI2lmIFVT
RShKT1VSTkFMRCkgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsIExvZ0pJ
VFRhcmdldExpc3QgPSB7IFdURkxvZ0NoYW5uZWxTdGF0ZTo6T24sICJKSVRUYXJnZXRMaXN0Iiwg
V1RGTG9nTGV2ZWw6OkVycm9yLCBMT0dfQ0hBTk5FTF9XRUJLSVRfU1VCU1lTVEVNIH07CisjZW5k
aWYKKworI2RlZmluZSBKVlRMX0xPRyguLi4pIFJFTEVBU0VfTE9HKEpJVFRhcmdldExpc3QsIF9f
VkFfQVJHU19fKQorI2VuZGlmCisKK0pJVFZhbGlkVGFyZ2V0TGlzdDo6RnVuY3Rpb25QdHJTZXQq
IEpJVFZhbGlkVGFyZ2V0TGlzdDo6dmFsaWRGdW5jUHRycygpCit7CisgICAgRnVuY3Rpb25QdHJT
ZXQqIHRoZVRhYmxlID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvblB0clNldCo+KG1fcHRyU2V0
U3BhY2UuZGF0YSgpKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBuZXcgKHRoZVRhYmxlKSBGdW5j
dGlvblB0clNldCgpOworICAgIH0pOworICAgIAorICAgIHJldHVybiB0aGVUYWJsZTsKK30KKwor
SklUVmFsaWRUYXJnZXRMaXN0JiBKSVRWYWxpZFRhcmdldExpc3Q6Omluc3RhbmNlKCkKK3sKKyAg
ICByZXR1cm4gZ19qc2NDb25maWcuaml0VGFyZ2V0TGlzdDsKK30KKworYm9vbCBKSVRWYWxpZFRh
cmdldExpc3Q6OmlzVGFibGVGcm96ZW4oKQoreworICAgIHJldHVybiBnX2pzY0NvbmZpZy5pc1Bl
cm1hbmVudGx5RnJvemVuKCk7Cit9CisKK3ZvaWQgSklUVmFsaWRUYXJnZXRMaXN0OjphZGRFbnRy
eShSYXdKSVRUYXJnZXRQdHIgZnVuY3Rpb25QdHIpCit7CisgICAgQVNTRVJUKCFpc1RhYmxlRnJv
emVuKCkpOworICAgIC8vIFBvb3IgbWFuJ3MgdW50YWcKKyAgICBmdW5jdGlvblB0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UmF3SklUVGFyZ2V0UHRyKj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
ZnVuY3Rpb25QdHIpICYgMHhmZmZmZmZmZmZVTCk7CisKKyAgICBib29sIGlzTmV3ID0gdmFsaWRG
dW5jUHRycygpLT5hZGQoZnVuY3Rpb25QdHIpOworICAgIGlmIChpc05ldykKKyAgICAgICAgbV9j
b3VudCsrOworCisgICAgaWYgICh2ZXJib3NlICYmICFpc05ldykKKyAgICAgICAgZGF0YUxvZygi
QWRkaW5nIGR1cGxpY2F0ZSB0YXJnZXQ6ICIsIFJhd1BvaW50ZXIoZnVuY3Rpb25QdHIpLCAiIHRv
IEpJVCB0YXJnZXQgbGlzdFxuIik7Cit9CisKK2Jvb2wgSklUVmFsaWRUYXJnZXRMaXN0Ojppc09u
TGlzdChSYXdKSVRUYXJnZXRQdHIgZnVuY3Rpb25QdHIpCit7CisgICAgaWYgKCFmdW5jdGlvblB0
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHZhbGlkRnVuY1B0cnMoKS0+
Y29udGFpbnMoZnVuY3Rpb25QdHIpOworfQorCitib29sIEpJVFZhbGlkVGFyZ2V0TGlzdDo6YXNz
ZXJ0T25MaXN0KFJhd0pJVFRhcmdldFB0ciBmdW5jdGlvblB0cikKK3sKKyAgICBpZiAodmVyYm9z
ZSkgeworICAgICAgICBpZiAoIWlzT25MaXN0KGZ1bmN0aW9uUHRyKSkKKyAgICAgICAgICAgIEpW
VExfTE9HKCJOb3Qgb24gSklUVmFsaWRUYXJnZXRMaXN0OiAlcCAlc1xuIiwgZnVuY3Rpb25QdHIs
IGZ1bmN0aW9uTmFtZShmdW5jdGlvblB0cikpOworICAgIH0gZWxzZQorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoaXNPbkxpc3QoZnVuY3Rpb25QdHIpLCAiRnVuY3Rpb24gbm90
IG9uIEpJVCB0YXJnZXQgbGlzdDogJXMiLCBmdW5jdGlvbk5hbWUoZnVuY3Rpb25QdHIpKTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEpJVFZhbGlkVGFyZ2V0TGlzdDo6c3RhdHMoY29u
c3QgY2hhciogcHJlZml4KQoreworICAgIFVOVVNFRF9QQVJBTShwcmVmaXgpOworCisgICAgSlZU
TF9MT0coIiVzSklUVmFsaWRUYXJnZXRMaXN0ICV1LyV1IGVudHJpZXMuXG4iLCBwcmVmaXggPyBw
cmVmaXggOiAiIiwgbV9jb3VudCwgSklUVGFyZ2V0TGlzdFNpemUpOworfQorCitjb25zdCBjaGFy
KiBKSVRWYWxpZFRhcmdldExpc3Q6OmZ1bmN0aW9uTmFtZShSYXdKSVRUYXJnZXRQdHIgZnVuY3Rp
b25QdHIpCit7CisgICAgY29uc3RleHByIHNpemVfdCBidWZmZXJTaXplID0gMTAwOworICAgIHN0
YXRpYyBjaGFyIGJ1ZmZlcltidWZmZXJTaXplXTsKKyAgICBEbF9pbmZvIGRsSW5mbzsKKworICAg
IGlmICghZnVuY3Rpb25QdHIpCisgICAgICAgIHJldHVybiAiPG51bGxwdHI+XG4iOworCisgICAg
aW50IGRsTG9va3VwUmVzdWx0ID0gZGxhZGRyKGZ1bmN0aW9uUHRyLCAmZGxJbmZvKTsKKyAgICBp
ZiAoIWRsTG9va3VwUmVzdWx0KSB7CisgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgYnVmZmVyU2l6
ZSwgIj8/PzogJXAiLCBmdW5jdGlvblB0cik7CisgICAgICAgIHJldHVybiBidWZmZXI7CisgICAg
fQorCisgICAgY29uc3QgY2hhciogbGliTmFtZSA9IHN0cnJjaHIoZGxJbmZvLmRsaV9mbmFtZSwg
Jy8nKTsKKyAgICBpZiAobGliTmFtZSkKKyAgICAgICAgbGliTmFtZSsrOyAvLyBza2lwIG92ZXIg
dGhlICcvJworICAgIGVsc2UKKyAgICAgICAgbGliTmFtZSA9IGRsSW5mby5kbGlfZm5hbWU7Cisg
ICAgc25wcmludGYoYnVmZmVyLCBidWZmZXJTaXplLCAiJXM6JXMiLCBsaWJOYW1lLCBkbEluZm8u
ZGxpX3NuYW1lKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIHBvcHVsYXRlSklUVmFs
aWRUYXJnZXRMaXN0KCkKK3sKKyAgICBKSVRWYWxpZFRhcmdldExpc3QmIHZhbGlkVGFyZ2V0TGlz
dCA9IEpJVFZhbGlkVGFyZ2V0TGlzdDo6aW5zdGFuY2UoKTsKKworICAgIHZvaWQqKiBmcHRyID0g
JmppdFZhbGlkVGFyZ2V0c1N0YXJ0OworCisgICAgQVNTRVJUKCpmcHRyID09IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KDB4ZmZmZmZmZmYwMDAwMDA1N0wpKTsKKworICAgIGZvciAoZnB0cisrOyAq
ZnB0ciAhPSBqaXRWYWxpZFRhcmdldHNFbmQ7IGZwdHIrKykKKyAgICAgICAgdmFsaWRUYXJnZXRM
aXN0LmFkZEVudHJ5KCpmcHRyKTsKKyAgICAKKyAgICB2YWxpZFRhcmdldExpc3Quc3RhdHMoIkFm
dGVyIEpTQyBwb3B1bGF0ZUpJVFZhbGlkVGFyZ2V0TGlzdCgpIGF1dG9tYXRpYyBlbnRyaWVzOiAi
KTsKKworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9jYXN0PHZvaWQq
PihhY29zRlB0cikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9j
YXN0PHZvaWQqPihhY29zaEZQdHIpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oYXNpbkZQdHIpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRk
RW50cnkocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oYXNpbmhGUHRyKSk7CisgICAgdmFsaWRUYXJn
ZXRMaXN0LmFkZEVudHJ5KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGF0YW5GUHRyKSk7CisgICAg
dmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGF0YW5oRlB0
cikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9jYXN0PHZvaWQq
PihjYnJ0RlB0cikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9j
YXN0PHZvaWQqPihjZWlsRlB0cikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihjZWlsZkZQdHIpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRk
RW50cnkocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29zRlB0cikpOworICAgIHZhbGlkVGFyZ2V0
TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9jYXN0PHZvaWQqPihjb3NoRlB0cikpOworICAgIHZh
bGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9jYXN0PHZvaWQqPihleHBGUHRyKSk7
CisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGV4
cG0xRlB0cikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9jYXN0
PHZvaWQqPihmbG9vckZQdHIpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oZmxvb3JmRlB0cikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRF
bnRyeShyZWludGVycHJldF9jYXN0PHZvaWQqPihmbW9kRlB0cikpOworICAgIHZhbGlkVGFyZ2V0
TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9jYXN0PHZvaWQqPihsb2dGUHRyKSk7CisgICAgdmFs
aWRUYXJnZXRMaXN0LmFkZEVudHJ5KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGxvZzEwRlB0cikp
OworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9jYXN0PHZvaWQqPihs
b2cyRlB0cikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9jYXN0
PHZvaWQqPihwb3dGUHRyKSk7CisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHNpbkZQdHIpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnko
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2luaEZQdHIpKTsKKyAgICB2YWxpZFRhcmdldExpc3Qu
YWRkRW50cnkocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3FydEZQdHIpKTsKKyAgICB2YWxpZFRh
cmdldExpc3QuYWRkRW50cnkocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGFuRlB0cikpOworICAg
IHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeShyZWludGVycHJldF9jYXN0PHZvaWQqPih0YW5oRlB0
cikpOworCisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KEpTRnVuY3Rpb246OmFyZ3VtZW50c0dldHRlcikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5h
ZGRFbnRyeShyZWludGVycHJldF9jYXN0PHZvaWQqPihKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIp
KTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkoKHZvaWQqKXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpjdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbkNhbGwpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkoKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yPEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ+Ojpjb25zdHJ1Y3RBcnJheUJ1
ZmZlcikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY0FycmF5QnVmZmVyQ29uc3RydWN0b3I8QXJyYXlC
dWZmZXJTaGFyaW5nTW9kZTo6U2hhcmVkPjo6Y29uc3RydWN0QXJyYXlCdWZmZXIpKTsKKyAgICB2
YWxpZFRhcmdldExpc3QuYWRkRW50cnkoKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTRGF0YVZpZXc+OjpjYWxs
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KSk7CisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KCh2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcjxKU0ludDhBcnJheT46OmNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcpKTsK
KyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkoKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTSW50MTZBcnJh
eT46OmNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRk
RW50cnkoKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTSW50MzJBcnJheT46OmNhbGxHZW5lcmljVHlwZWRBcnJh
eVZpZXcpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkoKHZvaWQqKXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpT
VWludDhBcnJheT46OmNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcpKTsKKyAgICB2YWxpZFRhcmdl
dExpc3QuYWRkRW50cnkoKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTVWludDhDbGFtcGVkQXJyYXk+OjpjYWxs
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KSk7CisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KCh2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcjxKU1VpbnQxNkFycmF5Pjo6Y2FsbEdlbmVyaWNUeXBlZEFycmF5Vmlldykp
OworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8SlNVaW50MzJB
cnJheT46OmNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcpKTsKKyAgICB2YWxpZFRhcmdldExpc3Qu
YWRkRW50cnkoKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTRmxvYXQzMkFycmF5Pjo6Y2FsbEdlbmVyaWNUeXBl
ZEFycmF5VmlldykpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGlj
X2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3I8SlNGbG9hdDY0QXJyYXk+OjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KSk7CisgICAgdmFs
aWRUYXJnZXRMaXN0LmFkZEVudHJ5KCh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0RhdGFWaWV3Pjo6Y29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KSk7CisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5
KCh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcjxKU0ludDhBcnJheT46OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
VmlldykpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8SlNJ
bnQxNkFycmF5Pjo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KSk7CisgICAgdmFsaWRU
YXJnZXRMaXN0LmFkZEVudHJ5KCh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjxKU0ludDMyQXJyYXk+Ojpjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnko
KHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yPEpTVWludDhBcnJheT46OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
VmlldykpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8SlNV
aW50OENsYW1wZWRBcnJheT46OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldykpOworICAg
IHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8SlNVaW50MTZBcnJheT46
OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldykpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5h
ZGRFbnRyeSgodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8SlNVaW50MzJBcnJheT46OmNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5VmlldykpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3Ry
dWN0b3I8SlNGbG9hdDMyQXJyYXk+Ojpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcpKTsK
KyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkoKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yPEpTRmxvYXQ2NEFy
cmF5Pjo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KSk7CisgICAgdmFsaWRUYXJnZXRM
aXN0LmFkZEVudHJ5KCh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6OkV2YWxFcnJvcj46OmNhbGxOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKSk7CisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KCh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6
OlJhbmdlRXJyb3I+OjpjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcikpOworICAgIHZhbGlkVGFy
Z2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpSZWZlcmVuY2VFcnJvcj46OmNhbGxOYXRp
dmVFcnJvckNvbnN0cnVjdG9yKSk7CisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KCh2b2lk
KilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxF
cnJvclR5cGU6OlN5bnRheEVycm9yPjo6Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpKTsKKyAg
ICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkoKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihOYXRpdmVFcnJvckNvbnN0cnVjdG9yPEVycm9yVHlwZTo6VHlwZUVycm9yPjo6Y2Fs
bE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnko
KHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihOYXRpdmVFcnJvckNvbnN0cnVj
dG9yPEVycm9yVHlwZTo6VVJJRXJyb3I+OjpjYWxsTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcikpOwor
ICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpFdmFsRXJyb3I+Ojpj
b25zdHJ1Y3ROYXRpdmVFcnJvckNvbnN0cnVjdG9yKSk7CisgICAgdmFsaWRUYXJnZXRMaXN0LmFk
ZEVudHJ5KCh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcjxFcnJvclR5cGU6OlJhbmdlRXJyb3I+Ojpjb25zdHJ1Y3ROYXRpdmVFcnJvckNv
bnN0cnVjdG9yKSk7CisgICAgdmFsaWRUYXJnZXRMaXN0LmFkZEVudHJ5KCh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxFcnJvclR5cGU6
OlJlZmVyZW5jZUVycm9yPjo6Y29uc3RydWN0TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcikpOworICAg
IHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpTeW50YXhFcnJvcj46OmNv
bnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpKTsKKyAgICB2YWxpZFRhcmdldExpc3QuYWRk
RW50cnkoKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihOYXRpdmVFcnJvckNv
bnN0cnVjdG9yPEVycm9yVHlwZTo6VHlwZUVycm9yPjo6Y29uc3RydWN0TmF0aXZlRXJyb3JDb25z
dHJ1Y3RvcikpOworICAgIHZhbGlkVGFyZ2V0TGlzdC5hZGRFbnRyeSgodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8RXJyb3JUeXBlOjpV
UklFcnJvcj46OmNvbnN0cnVjdE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpKTsKKyAgICAKKyAgICB2
YWxpZFRhcmdldExpc3Quc3RhdHMoIkFmdGVyIEpTQyBwb3B1bGF0ZUpJVFZhbGlkVGFyZ2V0TGlz
dCgpIG1hbnVhbCBlbnRyaWVzOiAiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRWYWxp
ZFRhcmdldExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFZhbGlkVGFyZ2V0TGlzdC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVmFsaWRUYXJnZXRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKEpJVF9DQUdFKQorCisjaW5j
bHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL1N0YXRpY1B0ckhh
c2hTZXQuaD4KKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY29uc3RleHByIHVuc2lnbmVkIEpJVFRhcmdldExpc3RTaXplID0gMTYzODQ7CisKK2V4dGVy
biBSYXdKSVRUYXJnZXRQdHIgX19hdHRyaWJ1dGVfXygoVkFMSURfVEFSR0VUX1NFQ1RJT04pKSBq
aXRWYWxpZFRhcmdldHNTdGFydDsKKworY2xhc3MgSklUVmFsaWRUYXJnZXRMaXN0IHsKKyAgICB0
eXBlZGVmIFN0YXRpY1B0ckhhc2hTZXQ8SklUVGFyZ2V0TGlzdFNpemU+IEZ1bmN0aW9uUHRyU2V0
OworICAgIAorcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKSVRWYWxpZFRh
cmdldExpc3QmIGluc3RhbmNlKCk7CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEVu
dHJ5KFJhd0pJVFRhcmdldFB0cik7CisgICAgYm9vbCBpc09uTGlzdChSYXdKSVRUYXJnZXRQdHIp
OworICAgIGJvb2wgYXNzZXJ0T25MaXN0KFJhd0pJVFRhcmdldFB0cik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzdGF0cyhjb25zdCBjaGFyKiBwcmVmaXggPSBudWxscHRyKTsKKworcHJp
dmF0ZToKKyAgICBGdW5jdGlvblB0clNldCogdmFsaWRGdW5jUHRycygpOworICAgIGJvb2wgaXNU
YWJsZUZyb3plbigpOworCisgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKFJhd0pJVFRhcmdl
dFB0cik7CisKKyAgICB1bnNpZ25lZCBtX2NvdW50IHsgMCB9OworICAgIHN0ZDo6YXJyYXk8dm9p
ZCosIHNpemVvZihGdW5jdGlvblB0clNldCkgLyBzaXplb2Yodm9pZCopPiBtX3B0clNldFNwYWNl
OworfTsKKwordm9pZCBwb3B1bGF0ZUpJVFZhbGlkVGFyZ2V0TGlzdCgpOworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFZh
bGlkVGFyZ2V0TGlzdFN0YXJ0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFZhbGlkVGFyZ2V0TGlzdFN0YXJ0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFZhbGlkVGFyZ2V0TGlzdFN0YXJ0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShKSVRfQ0FHRSkKKworI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCit2b2lkKiBqaXRWYWxpZFRhcmdldHNTdGFydCBWQUxJRF9UQVJHRVRfVEFH
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhmZmZmZmZmZjAwMDAwMDU3TCk7CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVmVyaWZpZWRDb3B5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFZlcmlmaWVkQ29weS5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRWZXJpZmllZENvcHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQor
I2luY2x1ZGUgIkpJVFZlcmlmaWVkQ29weS5oIgorCisjaW5jbHVkZSAiQVJNNjRWZXJpZmllci5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordXNpbmcgSW5zdHJ1Y3Rpb25UeXBlID0gQTY0RE9wY29k
ZTo6QTY0SW5zdHJ1Y3Rpb247CisKK3ZvaWQgcGVyZm9ybVZlcmlmaWVkSklUQ29weSh2b2lkICpk
c3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pCit7CisjaWYgQ1BVKEFSTTY0KQorICAgIEpJ
VENvZGVWZXJpZmllciBqaXRDb2RlVmVyaWZpZXIocmVpbnRlcnByZXRfY2FzdF9wdHI8SW5zdHJ1
Y3Rpb25UeXBlKj4oZHN0KSwgbik7CisKKyAgICBjaGFyKiBzcmNQdHIgPSByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdF9jYXN0PHZvaWQqPihzcmMpKTsKKyAgICBJbnN0cnVjdGlvblR5cGUq
IGNvcHlTb3VyY2UgPSByZWludGVycHJldF9jYXN0X3B0cjxJbnN0cnVjdGlvblR5cGUqPihzcmNQ
dHIpOworICAgIGNvbnN0IEluc3RydWN0aW9uVHlwZSogY29weUVuZCA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPEluc3RydWN0aW9uVHlwZSo+KHNyY1B0ciArIG4pOworICAgIEluc3RydWN0aW9uVHlw
ZSogY29weURzdCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEluc3RydWN0aW9uVHlwZSo+KGRzdCk7
CisKKyAgICB3aGlsZSAoY29weVNvdXJjZSAhPSBjb3B5RW5kKSB7CisgICAgICAgICpjb3B5RHN0
ID0gKmNvcHlTb3VyY2UrKzsKKworICAgICAgICBqaXRDb2RlVmVyaWZpZXIuY2hlY2tJbnN0cnVj
dGlvbkF0KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPEluc3RydWN0aW9uVHlwZSo+KGNvcHlEc3QpKTsK
KworICAgICAgICArK2NvcHlEc3Q7CisgICAgfQorCisgICAgaWYgKChyZWludGVycHJldF9jYXN0
PGludHB0cl90Pihjb3B5RHN0KSAmIDB4ZikgIT0gMCkgeworICAgICAgICAvLyBQYXJ0aWFsIHBh
cmFncmFwaCBjb3B5LiBWZXJpZnkgdG8gdGhlIGVuZCBvZiB0aGUgcGFyYWdyYXBoIGluIGNhc2Ug
d2UgYXJlIHBhdGNoaW5nIGEgYnJhbmNoIHRhcmdldCBhZGRyZXNzLgorICAgICAgICBjb25zdCBJ
bnN0cnVjdGlvblR5cGUqIHZlcmlmeUVuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rpb25U
eXBlKj4oKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGNvcHlEc3QpICsgMHgxMCkgJiAweGZm
ZmZmZmZmZmZmZmZmZjApOworICAgICAgICBJbnN0cnVjdGlvblR5cGUqIHZlcmlmeVB0ciA9IHJl
aW50ZXJwcmV0X2Nhc3RfcHRyPEluc3RydWN0aW9uVHlwZSo+KGNvcHlEc3QpOworICAgICAgICB3
aGlsZSAodmVyaWZ5UHRyICE9IHZlcmlmeUVuZCkgeworICAgICAgICAgICAgaml0Q29kZVZlcmlm
aWVyLmNoZWNrSW5zdHJ1Y3Rpb25BdChyZWludGVycHJldF9jYXN0X3B0cjxJbnN0cnVjdGlvblR5
cGUqPih2ZXJpZnlQdHIpKTsKKyAgICAgICAgICAgICsrdmVyaWZ5UHRyOworICAgICAgICB9Cisg
ICAgfQorI2Vsc2UKKyNlcnJvciAiVW5zdXBwb3J0ZWQgQ1BVIGZvciBwZXJmb3JtVmVyaWZpZWRK
SVRDb3B5KCkiCisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
TkFCTEUoSklUX0NBR0UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFZlcmlm
aWVkQ29weS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVmVy
aWZpZWRDb3B5LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRWZXJpZmllZENvcHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKworSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBwZXJmb3JtVmVyaWZpZWRKSVRDb3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3Jj
LCBzaXplX3Qgbik7CisgICAgCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDEyICs3MSwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkK
K3N0YXRpYyBjb25zdGV4cHIgUHRyVGFnIGppdFB0clRhZyA9IE5vUHRyVGFnOworI2Vsc2UKK3N0
YXRpYyBjb25zdGV4cHIgUHRyVGFnIGppdFB0clRhZyA9IE9wZXJhdGlvblB0clRhZzsKKyNlbmRp
ZgorCiBzdGF0aWMgRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPiByZWFkUHV0SUNDYWxsVGFy
Z2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXRpb25DYWxsPEpTSW50ZXJuYWxQdHJU
YWc+IGNhbGwpCiB7Ci0gICAgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPiB0YXJnZXQgPSBN
YWNyb0Fzc2VtYmxlcjo6cmVhZENhbGxUYXJnZXQ8T3BlcmF0aW9uUHRyVGFnPihjYWxsKTsKKyAg
ICBGdW5jdGlvblB0cjxqaXRQdHJUYWc+IHRhcmdldCA9IE1hY3JvQXNzZW1ibGVyOjpyZWFkQ2Fs
bFRhcmdldDxqaXRQdHJUYWc+KGNhbGwpOwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIGlmIChj
b2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBlOjpGVExKSVQpIHsKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiB0aHVuayA9IE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxPcGVyYXRpb25QdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3ModGFyZ2V0
LmV4ZWN1dGFibGVBZGRyZXNzKCkpLnJldGFnZ2VkPEpJVFRodW5rUHRyVGFnPigpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUVGh1bmtQdHJUYWc+IHRodW5rID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPGppdFB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyh0YXJn
ZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkucmV0YWdnZWQ8SklUVGh1bmtQdHJUYWc+KCk7CiAgICAg
ICAgIHJldHVybiBjb2RlQmxvY2stPnZtKCkuZnRsVGh1bmtzLT5rZXlGb3JTbG93UGF0aENhbGxU
aHVuayh0aHVuaykuY2FsbFRhcmdldCgpLnJldGFnZ2VkPENGdW5jdGlvblB0clRhZz4oKTsKICAg
ICB9CiAjZWxzZQpAQCAtOTEsMTEgKzk3LDExIEBAIHZvaWQgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKENvZGVCbG9jayoKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6
RlRMSklUKSB7CiAgICAgICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKICAgICAgICAgRlRM
OjpUaHVua3MmIHRodW5rcyA9ICp2bS5mdGxUaHVua3M7Ci0gICAgICAgIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4gdGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PE9w
ZXJhdGlvblB0clRhZz4oY2FsbCk7CisgICAgICAgIEZ1bmN0aW9uUHRyPGppdFB0clRhZz4gdGFy
Z2V0ID0gTWFjcm9Bc3NlbWJsZXI6OnJlYWRDYWxsVGFyZ2V0PGppdFB0clRhZz4oY2FsbCk7CiAg
ICAgICAgIGF1dG8gc2xvd1BhdGhUaHVuayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKSVRUaHVu
a1B0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyh0YXJnZXQucmV0YWdnZWRFeGVj
dXRhYmxlQWRkcmVzczxKSVRUaHVua1B0clRhZz4oKSk7CiAgICAgICAgIEZUTDo6U2xvd1BhdGhD
YWxsS2V5IGtleSA9IHRodW5rcy5rZXlGb3JTbG93UGF0aENhbGxUaHVuayhzbG93UGF0aFRodW5r
KTsKICAgICAgICAga2V5ID0ga2V5LndpdGhDYWxsVGFyZ2V0KG5ld0NhbGxlZUZ1bmN0aW9uKTsK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKGNhbGwsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4odGh1bmtzLmdldFNsb3dQYXRoQ2FsbFRodW5rKHZtLCBrZXkpLnJldGFn
Z2VkQ29kZTxPcGVyYXRpb25QdHJUYWc+KCkpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJl
cGF0Y2hDYWxsKGNhbGwsIEZ1bmN0aW9uUHRyPGppdFB0clRhZz4odGh1bmtzLmdldFNsb3dQYXRo
Q2FsbFRodW5rKHZtLCBrZXkpLnJldGFnZ2VkQ29kZTxqaXRQdHJUYWc+KCkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjY3NDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKSVRUaHVua3MuaCIKKyNp
bmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3Bl
Y2lhbGl6ZWRUaHVua0pJVC5oIgpAQCAtNDgsNyArNTAsMTIgQEAgaW5saW5lIHZvaWQgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKENDYWxsSAogICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlk
UG9pbnRlcik7CiAgICAgaXNOb25aZXJvLmxpbmsoJmppdCk7CiAgICAgaml0LnB1c2hUb1NhdmUo
cG9pbnRlckdQUik7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIFVOVVNFRF9QQVJBTSh0YWcp
OworICAgIGppdC5hbmQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoMHhmZmZmZmZmZjAp
LCBwb2ludGVyR1BSKTsKKyNlbHNlCiAgICAgaml0LnVudGFnUHRyKHRhZywgcG9pbnRlckdQUik7
CisjZW5kaWYKICAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQUik7CiAgICAgaml0
LnBvcFRvUmVzdG9yZShwb2ludGVyR1BSKTsKIH0KQEAgLTY3LDE1ICs3NCw0MCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRoCiAKICAgICBqaXQuc2V0dXBBcmd1bWVu
dHM8ZGVjbHR5cGUob3BlcmF0aW9uTG9va3VwRXhjZXB0aW9uSGFuZGxlcik+KENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cigmdm0pKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIodW50YWdDb2RlUHRyPENGdW5jdGlvblB0clRhZz4ob3BlcmF0aW9uTG9va3VwRXhj
ZXB0aW9uSGFuZGxlcikpLCBOb1B0clRhZyk7CisjZWxzZQogICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRp
b25Mb29rdXBFeGNlcHRpb25IYW5kbGVyKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGVt
aXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0
clRhZyk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFn
KTsKKyNlbmRpZgogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlRocm93IGV4Y2VwdGlv
biBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5rIik7CiB9CiAKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVHZW5lcmF0b3IoVk0mKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQu
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKKyNpZiBDUFUoQVJNNjQpIHx8IChDT01QSUxFUihHQ0Nf
Q09NUEFUSUJMRSkgJiYgQ1BVKFg4Nl82NCkpCisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyNlbHNlCisjZXJy
b3IgIk5vIHN1cHBvcnQgZm9yIENQVSB0eXBlIGluIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVHZW5l
cmF0b3IiCisjZW5kaWYKKworICAgIGppdC5jYWxsKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHVudGFnQ29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZSwgQ0Z1bmN0aW9uUHRyVGFnKSkpLCBOb1B0clRhZyk7CisgICAgaml0
LmVtaXRGdW5jdGlvbkVwaWxvZ3VlV2l0aEVtcHR5RnJhbWUoKTsKKyAgICBqaXQucmV0KCk7CisK
KyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJHZXQgSG9z
dCBDYWxsIFJldHVybiBWYWx1ZSB0aHVuayIpOworfQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIHNs
b3dQYXRoRm9yKENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIFNwcnRfSklUT3BlcmF0aW9uX0VH
Q2xpIHNsb3dQYXRoRnVuY3Rpb24pCiB7CiAgICAgaml0LnNhbml0aXplU3RhY2tJbmxpbmUodm0s
IEdQUkluZm86Om5vbkFyZ0dQUjApOwpAQCAtMTA0LDkgKzEzNiwxMyBAQCBzdGF0aWMgdm9pZCBz
bG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsKQogICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KC1tYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShzbG93UGF0aEZ1
bmN0aW9uKT4oR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyKTsKKyNpZiBFTkFCTEUoSklU
X0NBR0UpCisgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHVudGFnQ29k
ZVB0cjxDRnVuY3Rpb25QdHJUYWc+KHNsb3dQYXRoRnVuY3Rpb24pKSwgTm9QdHJUYWcpOworI2Vs
c2UKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9u
PE9wZXJhdGlvblB0clRhZz4oc2xvd1BhdGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25BcmdHUFIw
KTsKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBP
cGVyYXRpb25QdHJUYWcpOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJh
dGlvblB0clRhZyk7CisjZW5kaWYKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwpCiAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKICNlbmRpZgpAQCAtMzMwLDggKzM2NiwxMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyCiAgICAgaml0LnN1YlB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMigxNiksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogI2VuZGlmCiAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZ2bSksIEpTSW50ZXJmYWNl
SklUOjphcmd1bWVudEdQUjApOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBqaXQuY2FsbChK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih1bnRhZ0NvZGVQdHI8Q0Z1bmN0aW9uUHRyVGFn
PihvcGVyYXRpb25WTUhhbmRsZUV4Y2VwdGlvbikpLCBOb1B0clRhZyk7CisjZWxzZQogICAgIGpp
dC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRp
b25QdHJUYWc+KG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uKSksIEpTSW50ZXJmYWNlSklUOjpy
ZWdUMyk7CiAgICAgaml0LmNhbGwoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzLCBPcGVyYXRpb25QdHJU
YWcpOworI2VuZGlmCisKICNpZiBPUyhXSU5ET1dTKQogICAgIGppdC5hZGRQdHIoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW0zMig0ICogc2l6ZW9mKGludDY0X3QpKSwgSlNJbnRlcmZhY2VKSVQ6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICNlbGlmIENQVShNSVBTKQpAQCAtMzkwLDcgKzQzMSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYXIKICAgICBqaXQucG9w
KEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CiAjICBlbmRpZgogICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7Ci0jaWYgQ1BVKEFSTTY0RSkKKyNpZiBDUFUoQVJNNjRFKSAmJiAhRU5BQkxFKEpJVF9D
QUdFKQogICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBHUFJJbmZvOjpy
ZWdUMyk7CiAgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKHNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBleHRyYVRl
bXApOwogICAgIGppdC51bnRhZ1B0cihleHRyYVRlbXAsIEdQUkluZm86OnJlZ1QzKTsKQEAgLTQ0
Niw3ICs0ODcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGFyCiAg
ICAgCiAgICAgZG9uZS5saW5rKCZqaXQpOwogCi0jaWYgQ1BVKEFSTTY0RSkKKyNpZiBDUFUoQVJN
NjRFKSAmJiAhRU5BQkxFKEpJVF9DQUdFKQogICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklU
OjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBD
T2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6
OlRydXN0ZWRJbW1QdHIodGVtcFJldHVyblBDVGFnKSwgZXh0cmFUZW1wKTsKICAgICBqaXQudW50
YWdQdHIoZXh0cmFUZW1wLCBHUFJJbmZvOjpyZWdUMyk7CkBAIC04NjksNyArOTEwLDE0IEBAIGRl
ZmluZVVuYXJ5RG91YmxlT3BXcmFwcGVyKGxvZyk7CiBkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBl
cihmbG9vcik7CiBkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBlcihjZWlsKTsKIGRlZmluZVVuYXJ5
RG91YmxlT3BXcmFwcGVyKHRydW5jKTsKLSAgICAKKworVkFMSURfSklUX1RBUkdFVChqc1JvdW5k
VGh1bmspOworVkFMSURfSklUX1RBUkdFVChleHBUaHVuayk7CitWQUxJRF9KSVRfVEFSR0VUKGxv
Z1RodW5rKTsKK1ZBTElEX0pJVF9UQVJHRVQoZmxvb3JUaHVuayk7CitWQUxJRF9KSVRfVEFSR0VU
KGNlaWxUaHVuayk7CitWQUxJRF9KSVRfVEFSR0VUKHRydW5jVGh1bmspOworCiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGZsb29yVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQog
ewogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKQEAgLTExODYsOSArMTIzNCwx
MyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvCiAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0JvdW5kRnVuY3Rp
b246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5zZXR1
cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvckZyb21U
aHVuayk+KEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0p
OworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBqaXQuY2FsbChDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIodW50YWdDb2RlUHRyPENGdW5jdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwgTm9QdHJUYWcpOworI2Vsc2UKICAgICBqaXQubW92
ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3JGcm9tVGh1bmspKSwgR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CiAgICAgZW1pdFBvaW50ZXJWYWxpZGF0aW9uKGppdCwgR1BSSW5mbzo6bm9u
QXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdH
UFIwLCBPcGVyYXRpb25QdHJUYWcpOworI2VuZGlmCiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhh
bmRsZXIodm0pOwogCiAgICAgaGF2ZVN0YWNrU3BhY2UubGluaygmaml0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkocmV2aXNpb24gMjY3NDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgY2xhc3MgVk07CiAKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gdGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJh
dG9yKFZNJik7CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVHZW5lcmF0b3IoVk0mKTsKKyNl
bmRpZgorCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxpbmtDYWxsVGh1
bmtHZW5lcmF0b3IoVk0mKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4g
bGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNJik7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsOCArMjgsMTAgQEAKIAogI2luY2x1ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0TGlzdC5oIgogI2luY2x1ZGUg
IkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKKyNpbmNsdWRlICJMTEludFRo
dW5rcy5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgog
CkBAIC00MCw2ICs0MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsK
IAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK3ZvaWQqIGdfSklUVHJhbXBvbGluZXNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6TnVtVHlwZXMpXSA9IHt9Owordm9pZCog
Z192bUVudHJ5VG9KU1RyYW1wb2xpbmUgPSB7IH07Cit2b2lkKiBnX2xsaW50Q2FnZWRSZXR1cm5U
aHVuayA9IHsgfTsKK3ZvaWQqIGdfdm1FbnRyeVJldHVybiA9IHsgfTsKK3ZvaWQqIGdfY2hlY2tw
b2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUaHVuayA9IHsgfTsKK3ZvaWQqIGdfbGxpbnRUaHJv
d0R1cmluZ0NhbGxUcmFtcG9saW5lID0geyB9Owordm9pZCogZ19yZWdFeHBKSVRUcmFtcG9saW5l
ID0geyB9Owordm9pZCogZ19yZWdFeHBKSVRSZXR1cm4gPSB7IH07CisjaWYgRU5BQkxFKENTU19T
RUxFQ1RPUl9KSVQpCit2b2lkKiBnX2Nzc1NlbGVjdG9ySklUVHJhbXBvbGluZSA9IHsgfTsKK3Zv
aWQqIGdfY3NzU2VsZWN0b3JKSVRSZXR1cm4gPSB7IH07CisjZW5kaWYKKyNlbmRpZgorCiAjaWYg
IUVOQUJMRShDX0xPT1ApCiBleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW50cnkodm9pZCosIHZvaWQq
LCB2b2lkKik7CiAKQEAgLTYxLDcgKzc4LDI3IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgd2Fz
bV9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwW251bU9wY29kZUlEc10sICZnX2pz
Y0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVtT3Bjb2RlSURzXSwgJmdfanNjQ29uZmln
LmxsaW50Lm9wY29kZU1hcFdpZGUzMltudW1PcGNvZGVJRHNdKTsKICNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgSklUVmFsaWRUYXJnZXRM
aXN0JiB2YWxpZFRhcmdldExpc3QgPSBKSVRWYWxpZFRhcmdldExpc3Q6Omluc3RhbmNlKCk7CisK
KyAgICBhdXRvIGFkZE9wY29kZUVudHJ5cG9pbnRUb0pJVFRhcmdldExpc3QgPSBbJl0odm9pZCog
bGxpbnRFbnRyeVBvaW50KSB7CisgICAgICAgIGlmIChsbGludEVudHJ5UG9pbnQpCisgICAgICAg
ICAgICB2YWxpZFRhcmdldExpc3QuYWRkRW50cnkobGxpbnRFbnRyeVBvaW50KTsKKyAgICB9Owor
CisgICAgYWRkT3Bjb2RlRW50cnlwb2ludFRvSklUVGFyZ2V0TGlzdChnX3ZtRW50cnlSZXR1cm4p
OworICAgIGFkZE9wY29kZUVudHJ5cG9pbnRUb0pJVFRhcmdldExpc3QoZ19yZWdFeHBKSVRSZXR1
cm4pOworI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorICAgIGFkZE9wY29kZUVudHJ5cG9p
bnRUb0pJVFRhcmdldExpc3QoZ19jc3NTZWxlY3RvckpJVFJldHVybik7CisjZW5kaWYKKyNlbmRp
ZgorCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2Rl
SURzOyArK2kpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGFkZE9wY29kZUVudHJ5
cG9pbnRUb0pJVFRhcmdldExpc3QoZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwW2ldKTsKKyAg
ICAgICAgYWRkT3Bjb2RlRW50cnlwb2ludFRvSklUVGFyZ2V0TGlzdChnX2pzY0NvbmZpZy5sbGlu
dC5vcGNvZGVNYXBXaWRlMTZbaV0pOworICAgICAgICBhZGRPcGNvZGVFbnRyeXBvaW50VG9KSVRU
YXJnZXRMaXN0KGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltpXSk7CisjZW5kaWYK
ICAgICAgICAgZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwW2ldID0gdGFnQ29kZVB0cihnX2pz
Y0NvbmZpZy5sbGludC5vcGNvZGVNYXBbaV0sIEJ5dGVjb2RlUHRyVGFnKTsKICAgICAgICAgZ19q
c2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2W2ldID0gdGFnQ29kZVB0cihnX2pzY0NvbmZp
Zy5sbGludC5vcGNvZGVNYXBXaWRlMTZbaV0sIEJ5dGVjb2RlUHRyVGFnKTsKICAgICAgICAgZ19q
c2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTMyW2ldID0gdGFnQ29kZVB0cihnX2pzY0NvbmZp
Zy5sbGludC5vcGNvZGVNYXBXaWRlMzJbaV0sIEJ5dGVjb2RlUHRyVGFnKTsKQEAgLTcyLDYgKzEw
OSwxMiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5leGNl
cHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lOwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
W2ldID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KKworI2lm
IEVOQUJMRShKSVRfQ0FHRSkKKyAgICBDcmVhdGVMTGludFRvSklUVHJhbXBvbGluZXMoKTsKKwor
ICAgIHZhbGlkVGFyZ2V0TGlzdC5zdGF0cygiQWZ0ZXIgTExJbnQgZW50cmllcyBhZGRlZDogIik7
CisjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoQ19MT09QKQogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDEyNyBAQCB0eXBlZGVmIHZvaWQgKCpMTEludENvZGUpKCk7CiAKIG5hbWVzcGFjZSBMTElu
dCB7CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitlbnVtIGNsYXNzIEpJVFRyYW1wb2xpbmVUeXBl
cyA6IHVuc2lnbmVkIHsKKyAgICBMTEludF9vcF9jYWxsLAorICAgIExMSW50X29wX3RhaWxfY2Fs
bCwKKyAgICBMTEludF9vcF9jb25zdHJ1Y3QsCisgICAgTExJbnRfb3BfaXRlcmF0b3Jfb3BlbiwK
KyAgICBMTEludF9vcF9pdGVyYXRvcl9uZXh0LAorICAgIExMSW50X29wX2NhbGxfc2xvd1BhdGgs
CisgICAgTExJbnRfb3BfdGFpbF9jYWxsX3Nsb3dQYXRoLAorICAgIExMSW50X29wX2NvbnN0cnVj
dF9zbG93UGF0aCwKKyAgICBMTEludF9vcF9pdGVyYXRvcl9vcGVuX3Nsb3dQYXRoLAorICAgIExM
SW50X29wX2l0ZXJhdG9yX25leHRfc2xvd1BhdGgsCisgICAgTExJbnRfb3BfY2FsbF9ldmFsX3Ns
b3dQYXRoLAorICAgIExMSW50X29wX2NhbGxfdmFyYXJnc19zbG93UGF0aCwKKyAgICBMTEludF9v
cF90YWlsX2NhbGxfdmFyYXJnc19zbG93UGF0aCwKKyAgICBMTEludF9vcF90YWlsX2NhbGxfZm9y
d2FyZF9hcmd1bWVudHNfc2xvd1BhdGgsCisgICAgTExJbnRfb3BfY29uc3RydWN0X3ZhcmFyZ3Nf
c2xvd1BhdGgsCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIFdhc21fd2FzbV9jYWxsLAor
ICAgIFdhc21fd2FzbV9jYWxsX25vX3RscywKKyAgICBXYXNtX3dhc21fY2FsbF9pbmRpcmVjdCwK
KyAgICBXYXNtX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHMsCisjZW5kaWYKKyAgICBUeXBlUGVy
U2l6ZSwKKyAgICBOYXJyb3dCYXNlID0gMCwKKyAgICBXaWRlMTZCYXNlID0gVHlwZVBlclNpemUs
CisgICAgV2lkZTMyQmFzZSA9IFR5cGVQZXJTaXplICogMiwKKyAgICBOdW1UeXBlcyA9IFR5cGVQ
ZXJTaXplICogMywKKyAgICBVbnVzZWQgPSBVSU5UX01BWAorfTsKKworY29uc3RleHByIHVuc2ln
bmVkIEpJVFRyYW1wb2xpbmVCYXNlSW5kZXhGb3IoT3Bjb2RlU2l6ZSBvcGNvZGVTaXplKQorewor
ICAgIHN3aXRjaCAob3Bjb2RlU2l6ZSkgeworICAgIGNhc2UgT3Bjb2RlU2l6ZTo6TmFycm93Ogor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6
TmFycm93QmFzZSk7CisgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMTY6CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVzOjpXaWRlMTZCYXNlKTsK
KyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUzMjoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKSVRUcmFtcG9saW5lVHlwZXM6OldpZGUzMkJhc2UpOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVz
OjpVbnVzZWQpOworICAgIH0KK30KKworY29uc3RleHByIHVuc2lnbmVkIEpJVFRyYW1wb2xpbmVJ
bmRleEZvcihPcGNvZGVJRCBvcCwgT3Bjb2RlU2l6ZSBvcGNvZGVTaXplID0gT3Bjb2RlU2l6ZTo6
TmFycm93KQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIG9wX2NhbGw6CisgICAgICAg
IHJldHVybiBKSVRUcmFtcG9saW5lQmFzZUluZGV4Rm9yKG9wY29kZVNpemUpICsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6TExJbnRfb3BfY2FsbCk7CisgICAgY2Fz
ZSBvcF9jb25zdHJ1Y3Q6CisgICAgICAgIHJldHVybiBKSVRUcmFtcG9saW5lQmFzZUluZGV4Rm9y
KG9wY29kZVNpemUpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6
TExJbnRfb3BfY29uc3RydWN0KTsKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46CisgICAgICAg
IHJldHVybiBKSVRUcmFtcG9saW5lQmFzZUluZGV4Rm9yKG9wY29kZVNpemUpICsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6TExJbnRfb3BfaXRlcmF0b3Jfb3Blbik7
CisgICAgY2FzZSBvcF9pdGVyYXRvcl9uZXh0OgorICAgICAgICByZXR1cm4gSklUVHJhbXBvbGlu
ZUJhc2VJbmRleEZvcihvcGNvZGVTaXplKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRUcmFt
cG9saW5lVHlwZXM6OkxMSW50X29wX2l0ZXJhdG9yX25leHQpOworICAgIGNhc2Ugb3BfdGFpbF9j
YWxsOgorICAgICAgICByZXR1cm4gSklUVHJhbXBvbGluZUJhc2VJbmRleEZvcihvcGNvZGVTaXpl
KSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRUcmFtcG9saW5lVHlwZXM6OkxMSW50X29wX3Rh
aWxfY2FsbCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKSVRUcmFtcG9saW5lVHlwZXM6OlVudXNlZCk7CisgICAgfQorfQorCitjb25zdGV4cHIg
dW5zaWduZWQgSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhPcGNvZGVJRCBvcCwgT3Bjb2RlU2l6
ZSBvcGNvZGVTaXplID0gT3Bjb2RlU2l6ZTo6TmFycm93KQoreworICAgIHN3aXRjaCAob3ApIHsK
KyAgICBjYXNlIG9wX2NhbGw6CisgICAgICAgIHJldHVybiBKSVRUcmFtcG9saW5lQmFzZUluZGV4
Rm9yKG9wY29kZVNpemUpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBl
czo6TExJbnRfb3BfY2FsbF9zbG93UGF0aCk7CisgICAgY2FzZSBvcF9jYWxsX2V2YWw6CisgICAg
ICAgIHJldHVybiBKSVRUcmFtcG9saW5lQmFzZUluZGV4Rm9yKG9wY29kZVNpemUpICsgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xpbmVUeXBlczo6TExJbnRfb3BfY2FsbF9ldmFsX3Ns
b3dQYXRoKTsKKyAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKKyAgICAgICAgcmV0dXJuIEpJVFRy
YW1wb2xpbmVCYXNlSW5kZXhGb3Iob3Bjb2RlU2l6ZSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SklUVHJhbXBvbGluZVR5cGVzOjpMTEludF9vcF9jYWxsX3ZhcmFyZ3Nfc2xvd1BhdGgpOworICAg
IGNhc2Ugb3BfY29uc3RydWN0OgorICAgICAgICByZXR1cm4gSklUVHJhbXBvbGluZUJhc2VJbmRl
eEZvcihvcGNvZGVTaXplKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRUcmFtcG9saW5lVHlw
ZXM6OkxMSW50X29wX2NvbnN0cnVjdF9zbG93UGF0aCk7CisgICAgY2FzZSBvcF9pdGVyYXRvcl9v
cGVuOgorICAgICAgICByZXR1cm4gSklUVHJhbXBvbGluZUJhc2VJbmRleEZvcihvcGNvZGVTaXpl
KSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRUcmFtcG9saW5lVHlwZXM6OkxMSW50X29wX2l0
ZXJhdG9yX29wZW5fc2xvd1BhdGgpOworICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dDoKKyAgICAg
ICAgcmV0dXJuIEpJVFRyYW1wb2xpbmVCYXNlSW5kZXhGb3Iob3Bjb2RlU2l6ZSkgKyBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVzOjpMTEludF9vcF9pdGVyYXRvcl9uZXh0
X3Nsb3dQYXRoKTsKKyAgICBjYXNlIG9wX3RhaWxfY2FsbDoKKyAgICAgICAgcmV0dXJuIEpJVFRy
YW1wb2xpbmVCYXNlSW5kZXhGb3Iob3Bjb2RlU2l6ZSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SklUVHJhbXBvbGluZVR5cGVzOjpMTEludF9vcF90YWlsX2NhbGxfc2xvd1BhdGgpOworICAgIGNh
c2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CisgICAgICAgIHJldHVybiBKSVRUcmFtcG9saW5lQmFz
ZUluZGV4Rm9yKG9wY29kZVNpemUpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xp
bmVUeXBlczo6TExJbnRfb3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd1BhdGgpOworICAgIGNhc2Ug
b3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgorICAgICAgICByZXR1cm4gSklUVHJhbXBv
bGluZUJhc2VJbmRleEZvcihvcGNvZGVTaXplKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRU
cmFtcG9saW5lVHlwZXM6OkxMSW50X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93
UGF0aCk7CisgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczoKKyAgICAgICAgcmV0dXJuIEpJ
VFRyYW1wb2xpbmVCYXNlSW5kZXhGb3Iob3Bjb2RlU2l6ZSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSklUVHJhbXBvbGluZVR5cGVzOjpMTEludF9vcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93UGF0
aCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
SVRUcmFtcG9saW5lVHlwZXM6OlVudXNlZCk7CisgICAgfQorfQorCitjb25zdGV4cHIgdW5zaWdu
ZWQgSklUVHJhbXBvbGluZUluZGV4Rm9yKFdhc21PcGNvZGVJRCBvcCwgT3Bjb2RlU2l6ZSBvcGNv
ZGVTaXplID0gT3Bjb2RlU2l6ZTo6TmFycm93KQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBj
YXNlIHdhc21fY2FsbDoKKyAgICAgICAgcmV0dXJuIEpJVFRyYW1wb2xpbmVCYXNlSW5kZXhGb3Io
b3Bjb2RlU2l6ZSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVzOjpX
YXNtX3dhc21fY2FsbCk7CisgICAgY2FzZSB3YXNtX2NhbGxfbm9fdGxzOgorICAgICAgICByZXR1
cm4gSklUVHJhbXBvbGluZUJhc2VJbmRleEZvcihvcGNvZGVTaXplKSArIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKSVRUcmFtcG9saW5lVHlwZXM6Oldhc21fd2FzbV9jYWxsX25vX3Rscyk7CisgICAg
Y2FzZSB3YXNtX2NhbGxfaW5kaXJlY3Q6CisgICAgICAgIHJldHVybiBKSVRUcmFtcG9saW5lQmFz
ZUluZGV4Rm9yKG9wY29kZVNpemUpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpJVFRyYW1wb2xp
bmVUeXBlczo6V2FzbV93YXNtX2NhbGxfaW5kaXJlY3QpOworICAgIGNhc2Ugd2FzbV9jYWxsX2lu
ZGlyZWN0X25vX3RsczoKKyAgICAgICAgcmV0dXJuIEpJVFRyYW1wb2xpbmVCYXNlSW5kZXhGb3Io
b3Bjb2RlU2l6ZSkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVzOjpX
YXNtX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHMpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSklUVHJhbXBvbGluZVR5cGVzOjpVbnVzZWQpOwor
ICAgIH0KK30KKworZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBnX0pJVFRyYW1w
b2xpbmVzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKSVRUcmFtcG9saW5lVHlwZXM6Ok51bVR5cGVz
KV07CitleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGdfdm1FbnRyeVRvSlNUcmFt
cG9saW5lOworZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBnX2xsaW50Q2FnZWRS
ZXR1cm5UaHVuazsKK2V4dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogZ192bUVudHJ5
UmV0dXJuOworZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBnX2NoZWNrcG9pbnRP
U1JFeGl0RnJvbUlubGluZWRDYWxsVGh1bms7CitleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQqIGdfbGxpbnRUaHJvd0R1cmluZ0NhbGxUcmFtcG9saW5lOworZXh0ZXJuICJDIiBKU19F
WFBPUlRfUFJJVkFURSB2b2lkKiBnX3JlZ0V4cEpJVFRyYW1wb2xpbmU7CitleHRlcm4gIkMiIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQqIGdfcmVnRXhwSklUUmV0dXJuOworI2lmIEVOQUJMRShDU1Nf
U0VMRUNUT1JfSklUKQorZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBnX2Nzc1Nl
bGVjdG9ySklUVHJhbXBvbGluZTsKK2V4dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCog
Z19jc3NTZWxlY3RvckpJVFJldHVybjsKKyNlbmRpZgorI2VuZGlmCisKIGNsYXNzIERhdGEgewog
CiBwdWJsaWM6CkBAIC05Miw2ICsyMTMsMTEgQEAgaW5saW5lIE9wY29kZSogb3Bjb2RlTWFwV2lk
ZTMyKCkKICAgICByZXR1cm4gZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTMyOwogfQog
CitpbmxpbmUgT3Bjb2RlSUQgZ2V0T3Bjb2RlSURGcm9tKFdhc21PcGNvZGVJRCBpZCkKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KG51bU9wY29kZUlEcyArIHN0YXRpY19jYXN0
PE9wY29kZUlEPihpZCkpOworfQorCiBpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBp
ZCkKIHsKICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDI2
NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1NywxMCBAQCB2b2lkKiBjYWxsVG9UaHJvdyhWTSYg
dm0pCiAgICAgICAgIGRhdGFMb2coIlRocm93aW5nIGV4Y2VwdGlvbiAiLCBKU1ZhbHVlKHNjb3Bl
LmV4Y2VwdGlvbigpKSwgIiAoY2FsbFRvVGhyb3cpLlxuIik7CiAgICAgfQogI2VuZGlmCisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgcmV0
dXJuIGdfbGxpbnRUaHJvd0R1cmluZ0NhbGxUcmFtcG9saW5lOworI2VuZGlmCiAgICAgcmV0dXJu
IExMSW50OjpnZXRDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KGxsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZmxpbmVBc21Db25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxOCBAQAog
I2RlZmluZSBPRkZMSU5FX0FTTV9BUk02NEUgMAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9DQUdFIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0pJVF9DQUdFIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQp
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0NTU19TRUxFQ1RPUl9KSVQgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fQ1NTX1NFTEVDVE9SX0pJVCAwCisjZW5kaWYKKwogI2lmIENQVShNSVBTKQog
I2lmZGVmIFdURl9NSVBTX1BJQwogI2RlZmluZSBTKHgpICN4CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI2NzQ1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNp
bmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCisjaW5j
bHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFt
Lmg+CkBAIC05Myw2ICs5NCwxOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsK
IGlubGluZSBKU1ZhbHVlIGdldE5vbkNvbnN0YW50T3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dW5jaGVja2Vk
UihvcGVyYW5kKS5qc1ZhbHVlKCk7IH0KIGlubGluZSBKU1ZhbHVlIGdldE9wZXJhbmQoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7IHJldHVybiBjYWxsRnJh
bWUtPnIob3BlcmFuZCkuanNWYWx1ZSgpOyB9CiAKK2lubGluZSBXVEY6OlB0clRhZyBleGNlcHRp
b25UYWcoKQoreworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklU
KCkpCisgICAgICAgIHJldHVybiBOb1B0clRhZzsKKyAgICByZXR1cm4gRXhjZXB0aW9uSGFuZGxl
clB0clRhZzsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICByZXR1cm4gRXhjZXB0
aW9uSGFuZGxlclB0clRhZzsKKyNlbmRpZgorfQorCiAjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08o
Zmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCiAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
Zmlyc3QsIHNlY29uZCk7ICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCkBAIC0xNjAsMTQg
KzE3MywxNCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsCiAjZGVm
aW5lIExMSU5UX0NBTExfVEhST1coZ2xvYmFsT2JqZWN0LCBleGNlcHRpb25Ub1Rocm93KSBkbyB7
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIF9fY3RfZ2xvYmFs
T2JqZWN0ID0gKGdsb2JhbE9iamVjdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgdGhyb3dFeGNlcHRpb24oX19jdF9nbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgXAotICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBM
KG51bGxwdHIsIGNhbGxUb1Rocm93KHZtKSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7ICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwobnVsbHB0ciwgY2FsbFRv
VGhyb3codm0pLCBleGNlcHRpb25UYWcoKSk7ICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGls
ZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZ2xvYmFsT2Jq
ZWN0KSBkbyB7ICAgICAgICAgICAgICAgXAogICAgICAgICBKU0dsb2JhbE9iamVjdCogX19jY2Vf
Z2xvYmFsT2JqZWN0ID0gKGdsb2JhbE9iamVjdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICBkb0V4Y2VwdGlvbkZ1enppbmdJZkVuYWJsZWQoX19jY2VfZ2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCAiTExJbnRTbG93UGF0aHMvY2FsbCIsIG51bGxwdHIpOyBcCiAg
ICAgICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKG51bGxwdHIs
IGNhbGxUb1Rocm93KHZtKSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7IFwKKyAgICAgICAgICAg
IExMSU5UX0NBTExfRU5EX0lNUEwobnVsbHB0ciwgY2FsbFRvVGhyb3codm0pLCBleGNlcHRpb25U
YWcoKSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9DQUxMX1JFVFVS
TihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBk
byB7IFwKQEAgLTE1OTMsNiArMTYwNiwxMCBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhh
bmRsZUhvc3RDYWxsCiAgICAgICAgICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbGVlRnJhbWUpOwogICAgICAgICAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlZShhc09iamVj
dChjYWxsZWUpKTsKICAgICAgICAgICAgIHZtLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmdsb2Jh
bE9iamVjdCh2bSksIGNhbGxlZUZyYW1lKSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgICAgIExMSU5UX0NBTExf
UkVUVVJOKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIHZtLmdldENUSVN0dWIoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZUdlbmVyYXRvcikudGVtcGxhdGUgcmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
LmV4ZWN1dGFibGVBZGRyZXNzKCksIE5vUHRyVGFnKTsKKyNlbmRpZgogICAgICAgICAgICAgTExJ
TlRfQ0FMTF9SRVRVUk4oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgTExJbnQ6OmdldENvZGVQ
dHIoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRhZyk7CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0xNjExLDYgKzE2MjgsMTAgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlw
ZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICBTbG93UGF0aEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbGVlRnJhbWUpOwogICAgICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVlKGFzT2JqZWN0KGNh
bGxlZSkpOwogICAgICAgICB2bS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNhbGxlZSktPmdsb2JhbE9i
amVjdCh2bSksIGNhbGxlZUZyYW1lKSk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9i
YWxPYmplY3QsIGNhbGxlZUZyYW1lLCB2bS5nZXRDVElTdHViKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVHZW5lcmF0b3IpLnRlbXBsYXRlIHJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKS5leGVjdXRhYmxl
QWRkcmVzcygpLCBOb1B0clRhZyk7CisjZW5kaWYKICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4o
Z2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgTExJbnQ6OmdldENvZGVQdHIoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSksIENGdW5jdGlvblB0clRhZyk7CiAgICAgfQogICAgIApAQCAtMTg4MSw2ICsx
OTAyLDEwIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwKICAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIHNldFVwQ2FsbChjYWxsZWVGcmFtZSwg
Q29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpKTsKICAgICAKICAgICB2bS5ob3N0Q2FsbFJldHVy
blZhbHVlID0gZXZhbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBieXRlY29kZS5tX2VjbWFN
b2RlKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQor
ICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCB2bS5n
ZXRDVElTdHViKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVHZW5lcmF0b3IpLnRlbXBsYXRlIHJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpLCBOb1B0clRhZyk7CisjZW5k
aWYKICAgICBMTElOVF9DQUxMX1JFVFVSTihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBMTElu
dDo6Z2V0Q29kZVB0cihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSwgQ0Z1bmN0aW9uUHRyVGFnKTsK
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyCiAgICAgTExJbnRDb2RlIHRhcmdldCA9IExM
SW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3Bjb2RlSUQpOwogICAgIGFz
c2VydElzVGFnZ2VkV2l0aCh0YXJnZXQsIEpTRW50cnlQdHJUYWcpOwogCisjaWYgRU5BQkxFKEpJ
VF9DQUdFKQorICAgIGppdC5mYXJKdW1wKEpTSW50ZXJmYWNlSklUOjpBYnNvbHV0ZUFkZHJlc3Mo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmV0YWdDb2RlUHRyPEpTRW50cnlQdHJUYWcsIEpJVENh
Z2VQdHJUYWc+KHRhcmdldCkpKSwgSklUQ2FnZVB0clRhZyk7CisjZWxzZQogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IFdhc206
Ondhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CiAjZWxzZQpA
QCAtNjIsNiArNjUsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
CiAjZW5kaWYKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0YXJn
ZXQpLCBzY3JhdGNoKTsKICAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBKU0VudHJ5UHRyVGFnKTsK
KyNlbmRpZgogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiTExJbnQgJXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpOwpAQCAtMTM3LDYgKzE0MSwz
OTkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBtbwogICAgIHJldHVy
biBjb2RlUmVmOwogfQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZW51bSBUaHVua1ZhcmlhbnQg
eworICAgIEZhc3RQYXRoLAorICAgIFNsb3dQYXRoCit9OworCitzdGF0aWMgY29uc3QgY2hhciog
b3Bjb2RlV2lkdGhOYW1lWzNdID0geyJuYXJyb3ciLCAid2lkZTE2IiwgIndpZGUzMiJ9OworCitz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZVZNRW50
cnlUb0pJVFRyYW1wb2xpbmUoKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKworICAgIGpp
dC5jYWxsKEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEpJVENhZ2VQdHJUYWcpOworCisg
ICAgaml0LmZhckp1bXAoSlNJbnRlcmZhY2VKSVQ6OkFic29sdXRlQWRkcmVzcyhnX3ZtRW50cnlS
ZXR1cm4pLCBOb1B0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklU
VGh1bmtQdHJUYWcsICJWTUVudHJ5VG9KUyB0cmFtcG9saW5lIik7Cit9CisKK3N0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdlbmVyYXRlTExJbnRDYWdlZFJldHVy
blRodW5rKCkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisKKyAgICAvLyBUaGUgbWFjcm9B
c3NlbWJsZXIgcmV0KCkgcGVyZm9ybXMgdGhlIGNhZ2luZyBmb3IgdXMuCisgICAgaml0LnJldCgp
OworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Cisg
ICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiTExp
bnQgUmV0dXJuIFRodW5rIik7Cit9CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4gZ2VuZXJhdGVDaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRodW5r
KCkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4gdGFyZ2V0ID0gZ2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVj
a3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUpOworCisgICAgaml0
LmZhckp1bXAoSlNJbnRlcmZhY2VKSVQ6OkFic29sdXRlQWRkcmVzcyh0YXJnZXQucmV0YWdnZWRF
eGVjdXRhYmxlQWRkcmVzczxOb1B0clRhZz4oKSksIE5vUHRyVGFnKTsKKworICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBKU0VudHJ5UHRyVGFnLCAiQ2hlY2twb2ludCBPU1IgRXhpdCBG
cm9tIElubGluZWQgQ2FsbCBUaHVuayIpOworfQorCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZVJlZ0V4cEpJVFRyYW1wb2xpbmUoKQoreworICAg
IEpTSW50ZXJmYWNlSklUIGppdDsKKworICAgIGppdC5jYWxsKEpTSW50ZXJmYWNlSklUOjphcmd1
bWVudEdQUjUsIEpJVENhZ2VQdHJUYWcpOworCisgICAgaml0LmZhckp1bXAoSlNJbnRlcmZhY2VK
SVQ6OkFic29sdXRlQWRkcmVzcyhnX3JlZ0V4cEpJVFJldHVybiksIE5vUHRyVGFnKTsKKworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlJlZ0V4cCBKSVQg
dHJhbXBvbGluZSIpOworfQorCisjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCitzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZUNTU1NlbGVjdG9y
SklUVHJhbXBvbGluZSgpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgLy8gQXJn
dW1lbnRzIGFyZSBDU1NTZWxlY3RvckpJVFRyYW1wb2xpbmUoSklURnVuY3Rpb25QdHIsIGFyZzAs
IC4uLikKKyAgICAvLyBzbyB3ZSBuZWVkIHRvIHNoaWZ0IHRoZSBhcmd1bWVudHMgYmVmb3JlIGNh
bGxpbmcgdGhlIEpJVCdlZCBmdW5jdGlvbi4KKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6
YXJndW1lbnRHUFIwLCBKU0ludGVyZmFjZUpJVDo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIw
KTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIxLCBKU0ludGVyZmFj
ZUpJVDo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6YXJndW1l
bnRHUFIyLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQubW92ZShKU0lu
dGVyZmFjZUpJVDo6YXJndW1lbnRHUFIzLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsK
KyAgICBqaXQuY2FsbChKU0ludGVyZmFjZUpJVDo6bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIw
LCBKSVRDYWdlUHRyVGFnKTsKKworICAgIGppdC5mYXJKdW1wKEpTSW50ZXJmYWNlSklUOjpBYnNv
bHV0ZUFkZHJlc3MoZ19jc3NTZWxlY3RvckpJVFJldHVybiksIE5vUHRyVGFnKTsKKworICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIkNTUyBTZWxlY3RvciBK
SVQgdHJhbXBvbGluZSIpOworfQorI2VuZGlmCisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZ2VuZXJhdGVMTEludFRocm93RHVyaW5nQ2FsbFRy
YW1wb2xpbmUoKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKworICAgIGppdC5tb3ZlKEpT
SW50ZXJmYWNlSklUOjpsaW5rUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QyKTsKKyAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+IHRhcmdldCA9IGdldENvZGVQdHI8Qnl0ZWNv
ZGVQdHJUYWc+KGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpOworICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4gcmF3VGFyZ2V0ID0gdGFyZ2V0LnJldGFnZ2Vk
PE5vUHRyVGFnPigpOworCisgICAgaml0LmZhckp1bXAoSlNJbnRlcmZhY2VKSVQ6OkFic29sdXRl
QWRkcmVzcyhyYXdUYXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSksIE5vUHRyVGFnKTsKKworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnLCAiTExJ
bnQgVGhyb3cgRHVyaW5nIENhbGwgdHJhbXBvbGluZSIpOworfQorCitzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0ZUxMSW50VG9KSVRUcmFtcG9saW5l
KE9wY29kZUlEIG9wY29kZUlELCBPcGNvZGVJRCByZXR1cm5PcGNvZGVJRCwgT3Bjb2RlU2l6ZSBv
cGNvZGVTaXplID0gT3Bjb2RlU2l6ZTo6TmFycm93LCBUaHVua1ZhcmlhbnQgdGh1bmtWYXJpYW50
ID0gRmFzdFBhdGgpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgaml0LmNhbGwo
SlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSklUQ2FnZVB0clRhZyk7CisKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+IHRhcmdldDsKKyAgICBzd2l0Y2ggKG9w
Y29kZVNpemUpIHsKKyAgICBjYXNlIE5hcnJvdzoKKyAgICAgICAgdGFyZ2V0ID0gZ2V0Q29kZVB0
cjxCeXRlY29kZVB0clRhZz4ocmV0dXJuT3Bjb2RlSUQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdpZGUxNjoKKyAgICAgICAgdGFyZ2V0ID0gZ2V0V2lkZTE2Q29kZVB0cjxCeXRlY29kZVB0
clRhZz4ocmV0dXJuT3Bjb2RlSUQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdpZGUzMjoK
KyAgICAgICAgdGFyZ2V0ID0gZ2V0V2lkZTMyQ29kZVB0cjxCeXRlY29kZVB0clRhZz4ocmV0dXJu
T3Bjb2RlSUQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8Tm9QdHJU
YWc+IHJhd1RhcmdldCA9IHRhcmdldC5yZXRhZ2dlZDxOb1B0clRhZz4oKTsKKworICAgIGppdC5m
YXJKdW1wKEpTSW50ZXJmYWNlSklUOjpBYnNvbHV0ZUFkZHJlc3MocmF3VGFyZ2V0LmV4ZWN1dGFi
bGVBZGRyZXNzKCkpLCBOb1B0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGpp
dCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgSklUVGh1bmtQdHJUYWcsICJMTEludCB0byBKSVQgJXMlcyAlcyB0cmFtcG9saW5lIiwgb3Bj
b2RlTmFtZXNbb3Bjb2RlSURdLAorICAgICAgICB0aHVua1ZhcmlhbnQgPT0gRmFzdFBhdGggPyAi
IiA6ICIgc2xvdyBwYXRoIiwgb3Bjb2RlV2lkdGhOYW1lW29wY29kZVNpemVBc0luZGV4KG9wY29k
ZVNpemUpXSk7Cit9CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IGdlbmVyYXRlV2FzbUxMSW50VG9KSVRUcmFtcG9saW5lKFdhc21PcGNvZGVJRCBvcGNvZGVJ
RCwgV2FzbU9wY29kZUlEIHJldHVybk9wY29kZUlELCBPcGNvZGVTaXplIG9wY29kZVNpemUgPSBP
cGNvZGVTaXplOjpOYXJyb3cpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgaml0
LmNhbGwoSlNJbnRlcmZhY2VKSVQ6Ondhc21DYWxsZWVGcm9tSW50ZXJwcmV0ZXIsIEpJVENhZ2VQ
dHJUYWcpOworCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnPiB0YXJn
ZXQ7CisgICAgc3dpdGNoIChvcGNvZGVTaXplKSB7CisgICAgY2FzZSBOYXJyb3c6CisgICAgICAg
IHRhcmdldCA9IGdldENvZGVQdHI8Qnl0ZWNvZGVQdHJUYWc+KGdldE9wY29kZUlERnJvbShyZXR1
cm5PcGNvZGVJRCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdpZGUxNjoKKyAgICAgICAg
dGFyZ2V0ID0gZ2V0V2lkZTE2Q29kZVB0cjxCeXRlY29kZVB0clRhZz4oZ2V0T3Bjb2RlSURGcm9t
KHJldHVybk9wY29kZUlEKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2lkZTMyOgorICAg
ICAgICB0YXJnZXQgPSBnZXRXaWRlMzJDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnPihnZXRPcGNvZGVJ
REZyb20ocmV0dXJuT3Bjb2RlSUQpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPE5vUHRyVGFnPiByYXdUYXJnZXQgPSB0YXJnZXQucmV0YWdnZWQ8Tm9QdHJUYWc+KCk7
CisKKyAgICBqaXQuZmFySnVtcChKU0ludGVyZmFjZUpJVDo6QWJzb2x1dGVBZGRyZXNzKHJhd1Rh
cmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSwgTm9QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiV2FzbSB0byBKSVQgJXMgJXMgdHJhbXBv
bGluZSIsIHdhc21PcGNvZGVOYW1lc1tvcGNvZGVJRF0sCisgICAgICAgIG9wY29kZVdpZHRoTmFt
ZVtvcGNvZGVTaXplQXNJbmRleChvcGNvZGVTaXplKV0pOworfQorCitlbnVtIE9wY29kZVJldHVy
bnMgeworICAgIE5vbmUgPSAwLAorICAgIEZhc3RSZXR1cm4gPSAxLAorICAgIFNsb3dSZXR1cm4g
PSAyLAorICAgIEZhc3RBbmRTbG93UmV0dXJucyA9IDMKK307CisKK3N0cnVjdCBPcGNvZGVXaXRo
SklUVHJhbXBvbGluZXMgeworICAgIE9wY29kZUlEIG9wOworICAgIE9wY29kZVJldHVybnMgcmV0
dXJuVHlwZXM7CisgICAgT3Bjb2RlSUQgcmV0dXJuT3A7CisgICAgT3Bjb2RlSUQgc2xvd1JldHVy
bk9wOworfTsKKworY29uc3RleHByIHVuc2lnbmVkIG51bU9wY29kZXNXaXRoSml0VHJhbXBvbGlu
ZXMgPSAxMDsKKworc3RhdGljIE9wY29kZVdpdGhKSVRUcmFtcG9saW5lcyBvcGNvZGVzV2l0aFRy
YW1wb2xpbmVzW251bU9wY29kZXNXaXRoSml0VHJhbXBvbGluZXNdID0geworICAgIHsgb3BfY2Fs
bCwgRmFzdEFuZFNsb3dSZXR1cm5zLCBvcF9jYWxsX3JldHVybl9sb2NhdGlvbiwgb3BfY2FsbF9z
bG93X3JldHVybl9sb2NhdGlvbiB9LAorICAgIHsgb3BfdGFpbF9jYWxsLCBGYXN0QW5kU2xvd1Jl
dHVybnMsIG9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24sIG9wX3RhaWxfY2FsbF9zbG93X3Jl
dHVybl9sb2NhdGlvbiB9LAorICAgIHsgb3BfY29uc3RydWN0LCBGYXN0QW5kU2xvd1JldHVybnMs
IG9wX2NvbnN0cnVjdF9yZXR1cm5fbG9jYXRpb24sIG9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9s
b2NhdGlvbiB9LAorICAgIHsgb3BfaXRlcmF0b3Jfb3BlbiwgRmFzdEFuZFNsb3dSZXR1cm5zLCBv
cF9pdGVyYXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbiwgb3BfaXRlcmF0b3Jfb3Blbl9zbG93X3Jl
dHVybl9sb2NhdGlvbiB9LAorICAgIHsgb3BfaXRlcmF0b3JfbmV4dCwgRmFzdEFuZFNsb3dSZXR1
cm5zLCBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbiwgb3BfaXRlcmF0b3JfbmV4dF9z
bG93X3JldHVybl9sb2NhdGlvbiB9LAorICAgIHsgb3BfY2FsbF9ldmFsLCBTbG93UmV0dXJuLCAo
T3Bjb2RlSUQpMCwgb3BfY2FsbF9ldmFsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uIH0sCisgICAgeyBv
cF9jYWxsX3ZhcmFyZ3MsIFNsb3dSZXR1cm4sIChPcGNvZGVJRCkwLCBvcF9jYWxsX3ZhcmFyZ3Nf
c2xvd19yZXR1cm5fbG9jYXRpb24gfSwKKyAgICB7IG9wX3RhaWxfY2FsbF92YXJhcmdzLCBTbG93
UmV0dXJuLCAoT3Bjb2RlSUQpMCwgb3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9j
YXRpb24gfSwKKyAgICB7IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywgU2xvd1JldHVy
biwgKE9wY29kZUlEKTAsIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93X3JldHVy
bl9sb2NhdGlvbiB9LAorICAgIHsgb3BfY29uc3RydWN0X3ZhcmFyZ3MsIFNsb3dSZXR1cm4sIChP
cGNvZGVJRCkwLCBvcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbiB9Cit9
OworCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorc3RydWN0IFdhc21PcGNvZGVXaXRoSklUVHJh
bXBvbGluZXMgeworICAgIFdhc21PcGNvZGVJRCBvcDsKKyAgICBXYXNtT3Bjb2RlSUQgcmV0dXJu
T3A7Cit9OworCitjb25zdGV4cHIgdW5zaWduZWQgbnVtV2FzbU9wY29kZXNXaXRoSml0VHJhbXBv
bGluZXMgPSA0OworCitzdGF0aWMgV2FzbU9wY29kZVdpdGhKSVRUcmFtcG9saW5lcyB3YXNtT3Bj
b2Rlc1dpdGhUcmFtcG9saW5lc1tudW1XYXNtT3Bjb2Rlc1dpdGhKaXRUcmFtcG9saW5lc10gPSB7
CisgICAgeyB3YXNtX2NhbGwsIHdhc21fY2FsbF9yZXR1cm5fbG9jYXRpb24gfSwKKyAgICB7IHdh
c21fY2FsbF9ub190bHMsIHdhc21fY2FsbF9ub190bHNfcmV0dXJuX2xvY2F0aW9uIH0sCisgICAg
eyB3YXNtX2NhbGxfaW5kaXJlY3QsIHdhc21fY2FsbF9pbmRpcmVjdF9yZXR1cm5fbG9jYXRpb24g
fSwKKyAgICB7IHdhc21fY2FsbF9pbmRpcmVjdF9ub190bHMsIHdhc21fY2FsbF9pbmRpcmVjdF9u
b190bHNfcmV0dXJuX2xvY2F0aW9uIH0sCit9OworI2VuZGlmCisKK2V4dGVybiAiQyIgdm9pZCB2
bUVudHJ5VG9KSVRUcmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgcmV0dXJuVGh1bmsoKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9jYWxsX3RyYW1wb2xpbmVfbmFycm93KCk7CitleHRl
cm4gIkMiIHZvaWQgbGxpbnRfb3BfY2FsbF90cmFtcG9saW5lX3dpZGUxNigpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X29wX2NhbGxfdHJhbXBvbGluZV93aWRlMzIoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9vcF90YWlsX2NhbGxfdHJhbXBvbGluZV9uYXJyb3coKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9vcF90YWlsX2NhbGxfdHJhbXBvbGluZV93aWRlMTYoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9vcF90YWlsX2NhbGxfdHJhbXBvbGluZV93aWRlMzIoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9vcF9jb25zdHJ1Y3RfdHJhbXBvbGluZV9uYXJyb3coKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9vcF9jb25zdHJ1Y3RfdHJhbXBvbGluZV93aWRlMTYoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9vcF9jb25zdHJ1Y3RfdHJhbXBvbGluZV93aWRlMzIoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9vcF9pdGVyYXRvcl9vcGVuX3RyYW1wb2xpbmVfbmFycm93KCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfb3BfaXRlcmF0b3Jfb3Blbl90cmFtcG9saW5lX3dpZGUxNigpOworZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X29wX2l0ZXJhdG9yX29wZW5fdHJhbXBvbGluZV93aWRlMzIoKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF9vcF9pdGVyYXRvcl9uZXh0X3RyYW1wb2xpbmVfbmFycm93KCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfaXRlcmF0b3JfbmV4dF90cmFtcG9saW5lX3dpZGUx
NigpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X29wX2l0ZXJhdG9yX25leHRfdHJhbXBvbGluZV93
aWRlMzIoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9jYWxsX3Nsb3dQYXRoX3RyYW1wb2xp
bmVfbmFycm93KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfY2FsbF9zbG93UGF0aF90cmFt
cG9saW5lX3dpZGUxNigpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X29wX2NhbGxfc2xvd1BhdGhf
dHJhbXBvbGluZV93aWRlMzIoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF90YWlsX2NhbGxf
c2xvd1BhdGhfdHJhbXBvbGluZV9uYXJyb3coKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF90
YWlsX2NhbGxfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMTYoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9vcF90YWlsX2NhbGxfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIoKTsKK2V4dGVybiAi
QyIgdm9pZCBsbGludF9vcF9jb25zdHJ1Y3Rfc2xvd1BhdGhfdHJhbXBvbGluZV9uYXJyb3coKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9jb25zdHJ1Y3Rfc2xvd1BhdGhfdHJhbXBvbGluZV93
aWRlMTYoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9jb25zdHJ1Y3Rfc2xvd1BhdGhfdHJh
bXBvbGluZV93aWRlMzIoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9pdGVyYXRvcl9vcGVu
X3Nsb3dQYXRoX3RyYW1wb2xpbmVfbmFycm93KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3Bf
aXRlcmF0b3Jfb3Blbl9zbG93UGF0aF90cmFtcG9saW5lX3dpZGUxNigpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X29wX2l0ZXJhdG9yX29wZW5fc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIoKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9pdGVyYXRvcl9uZXh0X3Nsb3dQYXRoX3RyYW1wb2xp
bmVfbmFycm93KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfaXRlcmF0b3JfbmV4dF9zbG93
UGF0aF90cmFtcG9saW5lX3dpZGUxNigpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X29wX2l0ZXJh
dG9yX25leHRfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9vcF9jYWxsX2V2YWxfc2xvd1BhdGhfdHJhbXBvbGluZV9uYXJyb3coKTsKK2V4dGVybiAi
QyIgdm9pZCBsbGludF9vcF9jYWxsX2V2YWxfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMTYoKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9jYWxsX2V2YWxfc2xvd1BhdGhfdHJhbXBvbGluZV93
aWRlMzIoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9jYWxsX3ZhcmFyZ3Nfc2xvd1BhdGhf
dHJhbXBvbGluZV9uYXJyb3coKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9jYWxsX3ZhcmFy
Z3Nfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMTYoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9v
cF9jYWxsX3ZhcmFyZ3Nfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIoKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93UGF0aF90cmFtcG9saW5lX25hcnJv
dygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X29wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dQYXRo
X3RyYW1wb2xpbmVfd2lkZTE2KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfb3BfdGFpbF9jYWxs
X3ZhcmFyZ3Nfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd1BhdGhfdHJhbXBvbGluZV9u
YXJyb3coKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHNfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMTYoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGlu
dF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRl
MzIoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9vcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93UGF0
aF90cmFtcG9saW5lX25hcnJvdygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X29wX2NvbnN0cnVj
dF92YXJhcmdzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2KCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIoKTsK
Kwordm9pZCBDcmVhdGVMTGludFRvSklUVHJhbXBvbGluZXMoKQoreworICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5vUHRyVGFnPj4gVk1FbnRyeVRv
SklUVHJhbXBvbGluZUNvZGVSZWY7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8Tm9QdHJUYWc+PiBsbGludENhZ2VkUmV0dXJuVGh1bmtDb2RlUmVm
OworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5v
UHRyVGFnPj4gcmVnRXhwSklUVHJhbXBvbGluZUNvZGVSZWY7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8Tm9QdHJUYWc+PiBsbGludFRocm93RHVy
aW5nQ2FsbFRyYW1wb2xpbmVDb2RlUmVmOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5vUHRyVGFnPj4gaml0VHJhbXBvbGluZUNvZGVSZWZzW251
bU9wY29kZXNXaXRoSml0VHJhbXBvbGluZXNdWzZdOworI2lmIEVOQUJMRShDU1NfU0VMRUNUT1Jf
SklUKQorICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE5vUHRyVGFnPj4gY3NzU2VsZWN0b3JKSVRUcmFtcG9saW5lQ29kZVJlZjsKKyNlbmRpZgorI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOb1B0clRhZz4+IHdhc21UcmFtcG9saW5lQ29kZVJlZnNbbnVtV2Fz
bU9wY29kZXNXaXRoSml0VHJhbXBvbGluZXNdWzNdOworI2VuZGlmCisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7CisgICAgICAgICAgICBWTUVudHJ5VG9KSVRU
cmFtcG9saW5lQ29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVWTUVudHJ5VG9KSVRUcmFtcG9saW5l
KCkucmV0YWdnZWQ8Tm9QdHJUYWc+KCkpOworICAgICAgICAgICAgZ192bUVudHJ5VG9KU1RyYW1w
b2xpbmUgPSBWTUVudHJ5VG9KSVRUcmFtcG9saW5lQ29kZVJlZi0+Y29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisKKyAgICAgICAgICAgIGxsaW50Q2FnZWRSZXR1cm5UaHVua0NvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlTExJbnRDYWdlZFJldHVyblRodW5rKCkucmV0YWdnZWQ8Tm9QdHJUYWc+
KCkpOworICAgICAgICAgICAgZ19sbGludENhZ2VkUmV0dXJuVGh1bmsgPSBsbGludENhZ2VkUmV0
dXJuVGh1bmtDb2RlUmVmLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKworICAgICAgICAg
ICAgcmVnRXhwSklUVHJhbXBvbGluZUNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlUmVnRXhwSklU
VHJhbXBvbGluZSgpLnJldGFnZ2VkPE5vUHRyVGFnPigpKTsKKyAgICAgICAgICAgIGdfcmVnRXhw
SklUVHJhbXBvbGluZSA9IHJlZ0V4cEpJVFRyYW1wb2xpbmVDb2RlUmVmLT5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKworI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorICAgICAgICAg
ICAgY3NzU2VsZWN0b3JKSVRUcmFtcG9saW5lQ29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVDU1NT
ZWxlY3RvckpJVFRyYW1wb2xpbmUoKS5yZXRhZ2dlZDxOb1B0clRhZz4oKSk7CisgICAgICAgICAg
ICBnX2Nzc1NlbGVjdG9ySklUVHJhbXBvbGluZSA9IGNzc1NlbGVjdG9ySklUVHJhbXBvbGluZUNv
ZGVSZWYtPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworI2VuZGlmCisKKyAgICAgICAgICAg
IGxsaW50VGhyb3dEdXJpbmdDYWxsVHJhbXBvbGluZUNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRl
TExJbnRUaHJvd0R1cmluZ0NhbGxUcmFtcG9saW5lKCkucmV0YWdnZWQ8Tm9QdHJUYWc+KCkpOwor
ICAgICAgICAgICAgZ19sbGludFRocm93RHVyaW5nQ2FsbFRyYW1wb2xpbmUgPSBsbGludFRocm93
RHVyaW5nQ2FsbFRyYW1wb2xpbmVDb2RlUmVmLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
KworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU9wY29kZXNXaXRoSml0
VHJhbXBvbGluZXM7ICsraSkgeworICAgICAgICAgICAgICAgIE9wY29kZUlEIG9wID0gb3Bjb2Rl
c1dpdGhUcmFtcG9saW5lc1tpXS5vcDsKKworICAgICAgICAgICAgICAgIGlmIChvcGNvZGVzV2l0
aFRyYW1wb2xpbmVzW2ldLnJldHVyblR5cGVzICYgT3Bjb2RlUmV0dXJuczo6RmFzdFJldHVybikg
eworICAgICAgICAgICAgICAgICAgICBPcGNvZGVJRCByZXR1cm5PcCA9IG9wY29kZXNXaXRoVHJh
bXBvbGluZXNbaV0ucmV0dXJuT3A7CisKKyAgICAgICAgICAgICAgICAgICAgaml0VHJhbXBvbGlu
ZUNvZGVSZWZzW2ldW29wY29kZVNpemVBc0luZGV4KE5hcnJvdyldLmNvbnN0cnVjdChnZW5lcmF0
ZUxMSW50VG9KSVRUcmFtcG9saW5lKG9wLCByZXR1cm5PcCwgTmFycm93KS5yZXRhZ2dlZDxOb1B0
clRhZz4oKSk7CisgICAgICAgICAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBv
bGluZUluZGV4Rm9yKG9wKV0gPSBqaXRUcmFtcG9saW5lQ29kZVJlZnNbaV1bb3Bjb2RlU2l6ZUFz
SW5kZXgoTmFycm93KV0tPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworCisgICAgICAgICAg
ICAgICAgICAgIGppdFRyYW1wb2xpbmVDb2RlUmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChXaWRl
MTYpXS5jb25zdHJ1Y3QoZ2VuZXJhdGVMTEludFRvSklUVHJhbXBvbGluZShvcCwgcmV0dXJuT3As
IFdpZGUxNikucmV0YWdnZWQ8Tm9QdHJUYWc+KCkpOworICAgICAgICAgICAgICAgICAgICBnX0pJ
VFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihvcCwgV2lkZTE2KV0gPSBqaXRUcmFt
cG9saW5lQ29kZVJlZnNbaV1bb3Bjb2RlU2l6ZUFzSW5kZXgoV2lkZTE2KV0tPmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpOworCisgICAgICAgICAgICAgICAgICAgIGppdFRyYW1wb2xpbmVDb2Rl
UmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChXaWRlMzIpXS5jb25zdHJ1Y3QoZ2VuZXJhdGVMTElu
dFRvSklUVHJhbXBvbGluZShvcCwgcmV0dXJuT3AsIFdpZGUzMikucmV0YWdnZWQ8Tm9QdHJUYWc+
KCkpOworICAgICAgICAgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJ
bmRleEZvcihvcCwgV2lkZTMyKV0gPSBqaXRUcmFtcG9saW5lQ29kZVJlZnNbaV1bb3Bjb2RlU2l6
ZUFzSW5kZXgoV2lkZTMyKV0tPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChvcGNvZGVzV2l0aFRyYW1wb2xpbmVzW2ld
LnJldHVyblR5cGVzICYgT3Bjb2RlUmV0dXJuczo6U2xvd1JldHVybikgeworICAgICAgICAgICAg
ICAgICAgICBPcGNvZGVJRCByZXR1cm5PcCA9IG9wY29kZXNXaXRoVHJhbXBvbGluZXNbaV0uc2xv
d1JldHVybk9wOworCisgICAgICAgICAgICAgICAgICAgIGppdFRyYW1wb2xpbmVDb2RlUmVmc1tp
XVtvcGNvZGVTaXplQXNJbmRleChOYXJyb3cpICsgM10uY29uc3RydWN0KGdlbmVyYXRlTExJbnRU
b0pJVFRyYW1wb2xpbmUob3AsIHJldHVybk9wLCBOYXJyb3csIFNsb3dQYXRoKS5yZXRhZ2dlZDxO
b1B0clRhZz4oKSk7CisgICAgICAgICAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJh
bXBvbGluZUluZGV4Rm9yU2xvdyhvcCldID0gaml0VHJhbXBvbGluZUNvZGVSZWZzW2ldW29wY29k
ZVNpemVBc0luZGV4KE5hcnJvdykgKyAzXS0+Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgaml0VHJhbXBvbGluZUNvZGVSZWZzW2ldW29wY29kZVNpemVB
c0luZGV4KFdpZGUxNikgKyAzXS5jb25zdHJ1Y3QoZ2VuZXJhdGVMTEludFRvSklUVHJhbXBvbGlu
ZShvcCwgcmV0dXJuT3AsIFdpZGUxNiwgU2xvd1BhdGgpLnJldGFnZ2VkPE5vUHRyVGFnPigpKTsK
KyAgICAgICAgICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhG
b3JTbG93KG9wLCBXaWRlMTYpXSA9IGppdFRyYW1wb2xpbmVDb2RlUmVmc1tpXVtvcGNvZGVTaXpl
QXNJbmRleChXaWRlMTYpICsgM10tPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworCisgICAg
ICAgICAgICAgICAgICAgIGppdFRyYW1wb2xpbmVDb2RlUmVmc1tpXVtvcGNvZGVTaXplQXNJbmRl
eChXaWRlMzIpICsgM10uY29uc3RydWN0KGdlbmVyYXRlTExJbnRUb0pJVFRyYW1wb2xpbmUob3As
IHJldHVybk9wLCBXaWRlMzIsIFNsb3dQYXRoKS5yZXRhZ2dlZDxOb1B0clRhZz4oKSk7CisgICAg
ICAgICAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xv
dyhvcCwgV2lkZTMyKV0gPSBqaXRUcmFtcG9saW5lQ29kZVJlZnNbaV1bb3Bjb2RlU2l6ZUFzSW5k
ZXgoV2lkZTMyKSArIDNdLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtV2FzbU9wY29kZXNXaXRoSml0VHJhbXBv
bGluZXM7ICsraSkgeworICAgICAgICAgICAgICAgIFdhc21PcGNvZGVJRCBvcCA9IHdhc21PcGNv
ZGVzV2l0aFRyYW1wb2xpbmVzW2ldLm9wOworICAgICAgICAgICAgICAgIFdhc21PcGNvZGVJRCBy
ZXR1cm5PcCA9IHdhc21PcGNvZGVzV2l0aFRyYW1wb2xpbmVzW2ldLnJldHVybk9wOworCisgICAg
ICAgICAgICAgICAgd2FzbVRyYW1wb2xpbmVDb2RlUmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChO
YXJyb3cpXS5jb25zdHJ1Y3QoZ2VuZXJhdGVXYXNtTExJbnRUb0pJVFRyYW1wb2xpbmUob3AsIHJl
dHVybk9wLCBOYXJyb3cpLnJldGFnZ2VkPE5vUHRyVGFnPigpKTsKKyAgICAgICAgICAgICAgICBn
X0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihvcCldID0gd2FzbVRyYW1wb2xp
bmVDb2RlUmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChOYXJyb3cpXS0+Y29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisKKyAgICAgICAgICAgICAgICB3YXNtVHJhbXBvbGluZUNvZGVSZWZzW2ld
W29wY29kZVNpemVBc0luZGV4KFdpZGUxNildLmNvbnN0cnVjdChnZW5lcmF0ZVdhc21MTEludFRv
SklUVHJhbXBvbGluZShvcCwgcmV0dXJuT3AsIFdpZGUxNikucmV0YWdnZWQ8Tm9QdHJUYWc+KCkp
OworICAgICAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9y
KG9wLCBXaWRlMTYpXSA9IHdhc21UcmFtcG9saW5lQ29kZVJlZnNbaV1bb3Bjb2RlU2l6ZUFzSW5k
ZXgoV2lkZTE2KV0tPmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworCisgICAgICAgICAgICAg
ICAgd2FzbVRyYW1wb2xpbmVDb2RlUmVmc1tpXVtvcGNvZGVTaXplQXNJbmRleChXaWRlMzIpXS5j
b25zdHJ1Y3QoZ2VuZXJhdGVXYXNtTExJbnRUb0pJVFRyYW1wb2xpbmUob3AsIHJldHVybk9wLCBX
aWRlMzIpLnJldGFnZ2VkPE5vUHRyVGFnPigpKTsKKyAgICAgICAgICAgICAgICBnX0pJVFRyYW1w
b2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihvcCwgV2lkZTMyKV0gPSB3YXNtVHJhbXBvbGlu
ZUNvZGVSZWZzW2ldW29wY29kZVNpemVBc0luZGV4KFdpZGUzMildLT5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gTm8gSklUCisgICAgICAgICAgICBnX3ZtRW50cnlUb0pTVHJhbXBvbGluZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcodm1FbnRyeVRvSklUVHJh
bXBvbGluZSkpOworICAgICAgICAgICAgZ19sbGludENhZ2VkUmV0dXJuVGh1bmsgPSByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKHJldHVyblRodW5rKSk7CisgICAgICAg
ICAgICBnX2NoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVGh1bmsgPSBnZXRDb2RlUHRy
PE5vUHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xp
bmUpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisKKyAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNb
SklUVHJhbXBvbGluZUluZGV4Rm9yKG9wX2NhbGwpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfY2FsbF90cmFtcG9saW5lX25hcnJvdykpOworICAg
ICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3Iob3BfY2FsbCwg
V2lkZTE2KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50
X29wX2NhbGxfdHJhbXBvbGluZV93aWRlMTYpKTsKKyAgICAgICAgICAgIGdfSklUVHJhbXBvbGlu
ZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yKG9wX2NhbGwsIFdpZGUzMildID0gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF9jYWxsX3RyYW1wb2xpbmVfd2lk
ZTMyKSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZv
cihvcF90YWlsX2NhbGwpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJU
YWcobGxpbnRfb3BfdGFpbF9jYWxsX3RyYW1wb2xpbmVfbmFycm93KSk7CisgICAgICAgICAgICBn
X0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihvcF90YWlsX2NhbGwsIFdpZGUx
NildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF90
YWlsX2NhbGxfdHJhbXBvbGluZV93aWRlMTYpKTsKKyAgICAgICAgICAgIGdfSklUVHJhbXBvbGlu
ZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yKG9wX3RhaWxfY2FsbCwgV2lkZTMyKV0gPSByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX3RhaWxfY2FsbF90cmFt
cG9saW5lX3dpZGUzMikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9s
aW5lSW5kZXhGb3Iob3BfY29uc3RydWN0KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1v
dmVDb2RlUHRyVGFnKGxsaW50X29wX2NvbnN0cnVjdF90cmFtcG9saW5lX25hcnJvdykpOworICAg
ICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3Iob3BfY29uc3Ry
dWN0LCBXaWRlMTYpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWco
bGxpbnRfb3BfY29uc3RydWN0X3RyYW1wb2xpbmVfd2lkZTE2KSk7CisgICAgICAgICAgICBnX0pJ
VFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihvcF9jb25zdHJ1Y3QsIFdpZGUzMild
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF9jb25z
dHJ1Y3RfdHJhbXBvbGluZV93aWRlMzIpKTsKKyAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNb
SklUVHJhbXBvbGluZUluZGV4Rm9yKG9wX2l0ZXJhdG9yX29wZW4pXSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfaXRlcmF0b3Jfb3Blbl90cmFtcG9s
aW5lX25hcnJvdykpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5l
SW5kZXhGb3Iob3BfaXRlcmF0b3Jfb3BlbiwgV2lkZTE2KV0gPSByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX2l0ZXJhdG9yX29wZW5fdHJhbXBvbGluZV93
aWRlMTYpKTsKKyAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4
Rm9yKG9wX2l0ZXJhdG9yX29wZW4sIFdpZGUzMildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF9pdGVyYXRvcl9vcGVuX3RyYW1wb2xpbmVfd2lkZTMy
KSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihv
cF9pdGVyYXRvcl9uZXh0KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRy
VGFnKGxsaW50X29wX2l0ZXJhdG9yX25leHRfdHJhbXBvbGluZV9uYXJyb3cpKTsKKyAgICAgICAg
ICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yKG9wX2l0ZXJhdG9yX25l
eHQsIFdpZGUxNildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhs
bGludF9vcF9pdGVyYXRvcl9uZXh0X3RyYW1wb2xpbmVfd2lkZTE2KSk7CisgICAgICAgICAgICBn
X0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvcihvcF9pdGVyYXRvcl9uZXh0LCBX
aWRlMzIpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRf
b3BfaXRlcmF0b3JfbmV4dF90cmFtcG9saW5lX3dpZGUzMikpOworICAgICAgICAgICAgZ19KSVRU
cmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2NhbGwpXSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfY2FsbF9zbG93UGF0aF90
cmFtcG9saW5lX25hcnJvdykpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFt
cG9saW5lSW5kZXhGb3JTbG93KG9wX2NhbGwsIFdpZGUxNildID0gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF9jYWxsX3Nsb3dQYXRoX3RyYW1wb2xpbmVf
d2lkZTE2KSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRl
eEZvclNsb3cob3BfY2FsbCwgV2lkZTMyKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1v
dmVDb2RlUHRyVGFnKGxsaW50X29wX2NhbGxfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIpKTsK
KyAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhv
cF90YWlsX2NhbGwpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWco
bGxpbnRfb3BfdGFpbF9jYWxsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfbmFycm93KSk7CisgICAgICAg
ICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfdGFpbF9j
YWxsLCBXaWRlMTYpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWco
bGxpbnRfb3BfdGFpbF9jYWxsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2KSk7CisgICAgICAg
ICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfdGFpbF9j
YWxsLCBXaWRlMzIpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWco
bGxpbnRfb3BfdGFpbF9jYWxsX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTMyKSk7CisgICAgICAg
ICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY29uc3Ry
dWN0KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29w
X2NvbnN0cnVjdF9zbG93UGF0aF90cmFtcG9saW5lX25hcnJvdykpOworICAgICAgICAgICAgZ19K
SVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2NvbnN0cnVjdCwgV2lk
ZTE2KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29w
X2NvbnN0cnVjdF9zbG93UGF0aF90cmFtcG9saW5lX3dpZGUxNikpOworICAgICAgICAgICAgZ19K
SVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2NvbnN0cnVjdCwgV2lk
ZTMyKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29w
X2NvbnN0cnVjdF9zbG93UGF0aF90cmFtcG9saW5lX3dpZGUzMikpOworICAgICAgICAgICAgZ19K
SVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2l0ZXJhdG9yX29wZW4p
XSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfaXRl
cmF0b3Jfb3Blbl9zbG93UGF0aF90cmFtcG9saW5lX25hcnJvdykpOworICAgICAgICAgICAgZ19K
SVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2l0ZXJhdG9yX29wZW4s
IFdpZGUxNildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGlu
dF9vcF9pdGVyYXRvcl9vcGVuX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTE2KSk7CisgICAgICAg
ICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfaXRlcmF0
b3Jfb3BlbiwgV2lkZTMyKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRy
VGFnKGxsaW50X29wX2l0ZXJhdG9yX29wZW5fc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMzIpKTsK
KyAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhv
cF9pdGVyYXRvcl9uZXh0KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRy
VGFnKGxsaW50X29wX2l0ZXJhdG9yX25leHRfc2xvd1BhdGhfdHJhbXBvbGluZV9uYXJyb3cpKTsK
KyAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhv
cF9pdGVyYXRvcl9uZXh0LCBXaWRlMTYpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92
ZUNvZGVQdHJUYWcobGxpbnRfb3BfaXRlcmF0b3JfbmV4dF9zbG93UGF0aF90cmFtcG9saW5lX3dp
ZGUxNikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhG
b3JTbG93KG9wX2l0ZXJhdG9yX25leHQsIFdpZGUzMildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ocmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF9pdGVyYXRvcl9uZXh0X3Nsb3dQYXRoX3RyYW1w
b2xpbmVfd2lkZTMyKSk7CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xp
bmVJbmRleEZvclNsb3cob3BfY2FsbF9ldmFsKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihy
ZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX2NhbGxfZXZhbF9zbG93UGF0aF90cmFtcG9saW5lX25h
cnJvdykpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhG
b3JTbG93KG9wX2NhbGxfZXZhbCwgV2lkZTE2KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihy
ZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX2NhbGxfZXZhbF9zbG93UGF0aF90cmFtcG9saW5lX3dp
ZGUxNikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhG
b3JTbG93KG9wX2NhbGxfZXZhbCwgV2lkZTMyKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihy
ZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX2NhbGxfZXZhbF9zbG93UGF0aF90cmFtcG9saW5lX3dp
ZGUzMikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhG
b3JTbG93KG9wX2NhbGxfdmFyYXJncyldID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3Zl
Q29kZVB0clRhZyhsbGludF9vcF9jYWxsX3ZhcmFyZ3Nfc2xvd1BhdGhfdHJhbXBvbGluZV9uYXJy
b3cpKTsKKyAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9y
U2xvdyhvcF9jYWxsX3ZhcmFyZ3MsIFdpZGUxNildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF9jYWxsX3ZhcmFyZ3Nfc2xvd1BhdGhfdHJhbXBvbGlu
ZV93aWRlMTYpKTsKKyAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUlu
ZGV4Rm9yU2xvdyhvcF9jYWxsX3ZhcmFyZ3MsIFdpZGUzMildID0gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF9jYWxsX3ZhcmFyZ3Nfc2xvd1BhdGhfdHJh
bXBvbGluZV93aWRlMzIpKTsKKyAgICAgICAgICAgIGdfSklUVHJhbXBvbGluZXNbSklUVHJhbXBv
bGluZUluZGV4Rm9yU2xvdyhvcF90YWlsX2NhbGxfdmFyYXJncyldID0gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ocmVtb3ZlQ29kZVB0clRhZyhsbGludF9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93
UGF0aF90cmFtcG9saW5lX25hcnJvdykpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tK
SVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX3RhaWxfY2FsbF92YXJhcmdzLCBXaWRlMTYpXSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfdGFpbF9j
YWxsX3ZhcmFyZ3Nfc2xvd1BhdGhfdHJhbXBvbGluZV93aWRlMTYpKTsKKyAgICAgICAgICAgIGdf
SklUVHJhbXBvbGluZXNbSklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF90YWlsX2NhbGxfdmFy
YXJncywgV2lkZTMyKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFn
KGxsaW50X29wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfd2lkZTMyKSk7
CisgICAgICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3co
b3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQq
PihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19z
bG93UGF0aF90cmFtcG9saW5lX25hcnJvdykpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5l
c1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
cywgV2lkZTE2KV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxs
aW50X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93UGF0aF90cmFtcG9saW5lX3dp
ZGUxNikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhG
b3JTbG93KG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cywgV2lkZTMyKV0gPSByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50X29wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50c19zbG93UGF0aF90cmFtcG9saW5lX3dpZGUzMikpOworICAgICAgICAgICAg
Z19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2NvbnN0cnVjdF92
YXJhcmdzKV0gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZW1vdmVDb2RlUHRyVGFnKGxsaW50
X29wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3dQYXRoX3RyYW1wb2xpbmVfbmFycm93KSk7CisgICAg
ICAgICAgICBnX0pJVFRyYW1wb2xpbmVzW0pJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY29u
c3RydWN0X3ZhcmFyZ3MsIFdpZGUxNildID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVtb3Zl
Q29kZVB0clRhZyhsbGludF9vcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93UGF0aF90cmFtcG9saW5l
X3dpZGUxNikpOworICAgICAgICAgICAgZ19KSVRUcmFtcG9saW5lc1tKSVRUcmFtcG9saW5lSW5k
ZXhGb3JTbG93KG9wX2NvbnN0cnVjdF92YXJhcmdzLCBXaWRlMzIpXSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHJlbW92ZUNvZGVQdHJUYWcobGxpbnRfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xv
d1BhdGhfdHJhbXBvbGluZV93aWRlMzIpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICB9KTsK
K30KKyNlbmRpZgorCitNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2hlY2tw
b2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lKCkKK3sKKyNpZiBFTkFCTEUoSklU
X0NBR0UpCisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVDaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRodW5r
KCkpOworICAgICAgICBnX2NoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVGh1bmsgPSBj
b2RlUmVmLT50ZW1wbGF0ZSByZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICB9KTsKKworICAgIHJldHVybiBjb2RlUmVmLT5jb2RlKCk7CisjZWxzZQorICAg
IHJldHVybiBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUpOworI2VuZGlmCit9CisKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHdh
c21GdW5jdGlvbkVudHJ5VGh1bmsoKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCwxMiBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGV2CiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCk7CiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCk7CiAK
K01hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdEZy
b21JbmxpbmVkQ2FsbFRyYW1wb2xpbmUoKTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKK3ZvaWQg
Q3JlYXRlTExpbnRUb0pJVFRyYW1wb2xpbmVzKCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gd2FzbUZ1bmN0
aW9uRW50cnlUaHVuaygpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzA2LDYgKzMwNiwx
MCBAQCBtYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHByb3RvQ2FsCiAgICAgYWRkcCAx
Niwgc3AKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1
bmN0aW9uIGVudHJ5CisgICAgZWxzaWYgSklUX0NBR0UKKyAgICAgICAgbGVhcCBfZ192bUVudHJ5
VG9KU1RyYW1wb2xpbmUsIHRlbXAxCisgICAgICAgIGptcCBbdGVtcDFdLCBOb1B0clRhZworX3Zt
RW50cnlUb0pTUmV0dXJuOgogICAgIGVsc2UKICAgICAgICAgY2FsbCBlbnRyeSwgSlNFbnRyeVB0
clRhZwogICAgIGVuZApAQCAtMjEyMyw3ICsyMTI3LDggQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNv
ZGVOYW1lLCBzbG93UGF0aCwgbwogICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgIG1vdmUgdDMsIHNwCiAgICAgcHJlcGFyZUNh
bGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICBjYWxsVGFyZ2V0RnVu
Y3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorICAg
IGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5l
Q29kZVRhcmdldFt0NV0sIHQwCisgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNp
emUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBk
aXNwYXRjaCwgdDAsIEpTRW50cnlQdHJUYWcpCiAKIC5vcENhbGxTbG93OgogICAgIHNsb3dQYXRo
Rm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDggKzEwMSw4
IEBACiAjICAtIGEzLCB0MiwgdDMsIHQ0IGFuZCB0NSBhcmUgbmV2ZXIgcmV0dXJuIHJlZ2lzdGVy
czsgdDAsIHQxLCBhMCwgYTEgYW5kIGEyCiAjICBjYW4gYmUgcmV0dXJuIHJlZ2lzdGVycy4KICMK
LSMgIC0gdDQgYW5kIHQ1IGFyZSBuZXZlciBhcmd1bWVudCByZWdpc3RlcnMsIHQzIGNhbiBvbmx5
IGJlIGEzLCB0MSBjYW4gb25seSBiZQotIyAgYTE7IGJ1dCB0MCBhbmQgdDIgY2FuIGJlIGVpdGhl
ciBhMCBvciBhMi4KKyMgIC0gdDMsIHQ0LCB0NSBjYW4gb25seSBiZSBhMywgYTQsIGE1IHJlc3Bl
Y3RpdmVseQorIyAgLSB0MSBjYW4gb25seSBiZSBhMTsgYnV0IHQwIGFuZCB0MiBjYW4gYmUgZWl0
aGVyIGEwIG9yIGEyLgogIwogIyAgLSBUaGVyZSBhcmUgY2FsbGVlLXNhdmUgcmVnaXN0ZXJzIG5h
bWVkIGNzcjAsIGNzcjEsIC4uLiBjc3JOLgogIyAgVGhlIGxhc3QgdGhyZWUgY3NyIHJlZ2lzdGVy
cyBhcmUgdXNlZCB1c2VkIHRvIHN0b3JlIHRoZSBQQyBiYXNlIGFuZApAQCAtMjMzLDcgKzIzMyw2
IEBAIGVuZAogCiBjb25zdCBDYWxsZWVTYXZlU3BhY2VTdGFja0FsaWduZWQgPSAoQ2FsbGVlU2F2
ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzICogU2xvdFNpemUgKyBTdGFja0FsaWdubWVudCAtIDEp
ICYgflN0YWNrQWxpZ25tZW50TWFzawogCi0KICMgV2F0Y2hwb2ludCBzdGF0ZXMKIGNvbnN0IENs
ZWFyV2F0Y2hwb2ludCA9IGNvbnN0ZXhwciBDbGVhcldhdGNocG9pbnQKIGNvbnN0IElzV2F0Y2hl
ZCA9IGNvbnN0ZXhwciBJc1dhdGNoZWQKQEAgLTI1OSw2ICsyNTgsMzMgQEAgY29uc3QgRXhjZXB0
aW9uSGFuZGxlclB0clRhZyA9IGNvbnN0ZXhwcgogY29uc3QgTm9QdHJUYWcgPSBjb25zdGV4cHIg
Tm9QdHJUYWcKIGNvbnN0IFNsb3dQYXRoUHRyVGFnID0gY29uc3RleHByIFNsb3dQYXRoUHRyVGFn
CiAKK2lmIEpJVF9DQUdFCisgICAgY29uc3QgTExJbnRfb3BfY2FsbCA9IGNvbnN0ZXhwciAoTExJ
bnQ6OkpJVFRyYW1wb2xpbmVJbmRleEZvcihvcF9jYWxsKSkKKyAgICBjb25zdCBMTEludF9vcF90
YWlsX2NhbGwgPSBjb25zdGV4cHIgKExMSW50OjpKSVRUcmFtcG9saW5lSW5kZXhGb3Iob3BfdGFp
bF9jYWxsKSkKKyAgICBjb25zdCBMTEludF9vcF9jb25zdHJ1Y3QgPSBjb25zdGV4cHIgKExMSW50
OjpKSVRUcmFtcG9saW5lSW5kZXhGb3Iob3BfY29uc3RydWN0KSkKKyAgICBjb25zdCBMTEludF9v
cF9pdGVyYXRvcl9vcGVuID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBvbGluZUluZGV4Rm9y
KG9wX2l0ZXJhdG9yX29wZW4pKQorICAgIGNvbnN0IExMSW50X29wX2l0ZXJhdG9yX25leHQgPSBj
b25zdGV4cHIgKExMSW50OjpKSVRUcmFtcG9saW5lSW5kZXhGb3Iob3BfaXRlcmF0b3JfbmV4dCkp
CisgICAgY29uc3QgTExJbnRfb3BfY2FsbF9zbG93UGF0aCA9IGNvbnN0ZXhwciAoTExJbnQ6OkpJ
VFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY2FsbCkpCisgICAgY29uc3QgTExJbnRfb3BfdGFp
bF9jYWxsX3Nsb3dQYXRoID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBvbGluZUluZGV4Rm9y
U2xvdyhvcF90YWlsX2NhbGwpKQorICAgIGNvbnN0IExMSW50X29wX2NvbnN0cnVjdF9zbG93UGF0
aCA9IGNvbnN0ZXhwciAoTExJbnQ6OkpJVFRyYW1wb2xpbmVJbmRleEZvclNsb3cob3BfY29uc3Ry
dWN0KSkKKyAgICBjb25zdCBMTEludF9vcF9pdGVyYXRvcl9vcGVuX3Nsb3dQYXRoID0gY29uc3Rl
eHByIChMTEludDo6SklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9pdGVyYXRvcl9vcGVuKSkK
KyAgICBjb25zdCBMTEludF9vcF9pdGVyYXRvcl9uZXh0X3Nsb3dQYXRoID0gY29uc3RleHByIChM
TEludDo6SklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9pdGVyYXRvcl9uZXh0KSkKKyAgICBj
b25zdCBMTEludF9vcF9jYWxsX2V2YWxfc2xvd1BhdGggPSBjb25zdGV4cHIgKExMSW50OjpKSVRU
cmFtcG9saW5lSW5kZXhGb3JTbG93KG9wX2NhbGxfZXZhbCkpCisgICAgY29uc3QgTExJbnRfb3Bf
Y2FsbF92YXJhcmdzX3Nsb3dQYXRoID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBvbGluZUlu
ZGV4Rm9yU2xvdyhvcF9jYWxsX3ZhcmFyZ3MpKQorICAgIGNvbnN0IExMSW50X29wX3RhaWxfY2Fs
bF92YXJhcmdzX3Nsb3dQYXRoID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBvbGluZUluZGV4
Rm9yU2xvdyhvcF90YWlsX2NhbGxfdmFyYXJncykpCisgICAgY29uc3QgTExJbnRfb3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dQYXRoID0gY29uc3RleHByIChMTEludDo6SklUVHJh
bXBvbGluZUluZGV4Rm9yU2xvdyhvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpKQorICAg
IGNvbnN0IExMSW50X29wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3dQYXRoID0gY29uc3RleHByIChM
TEludDo6SklUVHJhbXBvbGluZUluZGV4Rm9yU2xvdyhvcF9jb25zdHJ1Y3RfdmFyYXJncykpCisK
KyAgICBjb25zdCBXYXNtX3dhc21fY2FsbCA9IGNvbnN0ZXhwciAoTExJbnQ6OkpJVFRyYW1wb2xp
bmVJbmRleEZvcih3YXNtX2NhbGwpKQorICAgIGNvbnN0IFdhc21fd2FzbV9jYWxsX25vX3RscyA9
IGNvbnN0ZXhwciAoTExJbnQ6OkpJVFRyYW1wb2xpbmVJbmRleEZvcih3YXNtX2NhbGxfbm9fdGxz
KSkKKyAgICBjb25zdCBXYXNtX3dhc21fY2FsbF9pbmRpcmVjdCA9IGNvbnN0ZXhwciAoTExJbnQ6
OkpJVFRyYW1wb2xpbmVJbmRleEZvcih3YXNtX2NhbGxfaW5kaXJlY3QpKQorICAgIGNvbnN0IFdh
c21fd2FzbV9jYWxsX2luZGlyZWN0X25vX3RscyA9IGNvbnN0ZXhwciAoTExJbnQ6OkpJVFRyYW1w
b2xpbmVJbmRleEZvcih3YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzKSkKKworICAgIGNvbnN0IE5h
cnJvd0Jhc2UgPSBjb25zdGV4cHIgKExMSW50OjpKSVRUcmFtcG9saW5lQmFzZUluZGV4Rm9yKE9w
Y29kZVNpemU6Ok5hcnJvdykpCisgICAgY29uc3QgV2lkZTE2QmFzZSA9IGNvbnN0ZXhwciAoTExJ
bnQ6OkpJVFRyYW1wb2xpbmVCYXNlSW5kZXhGb3IoT3Bjb2RlU2l6ZTo6V2lkZTE2KSkKKyAgICBj
b25zdCBXaWRlMzJCYXNlID0gY29uc3RleHByIChMTEludDo6SklUVHJhbXBvbGluZUJhc2VJbmRl
eEZvcihPcGNvZGVTaXplOjpXaWRlMzIpKQorZW5kCisKICMgU29tZSByZWdpc3RlciBjb252ZW50
aW9ucy4KICMgLSBXZSB1c2UgYSBwYWlyIG9mIHJlZ2lzdGVycyB0byByZXByZXNlbnQgdGhlIFBD
OiBvbmUgcmVnaXN0ZXIgZm9yIHRoZQogIyAgIGJhc2Ugb2YgdGhlIGJ5dGVjb2RlcywgYW5kIG9u
ZSByZWdpc3RlciBmb3IgdGhlIGluZGV4LgpAQCAtNTAyLDYgKzUyOCw1OCBAQCBtYWNybyBsbGlu
dE9wV2l0aFByb2ZpbGUob3Bjb2RlTmFtZSwgb3BjCiAgICAgZW5kKQogZW5kCiAKK21hY3JvIGpz
UmV0dXJuUG9pbnQodGh1bmtMYWJlbFByZWZpeCwgc2l6ZSkKKyAgICBtYWNybyBqc1JldHVyblBv
aW50TmFycm93KCkKKyAgICAgICAgXyV0aHVua0xhYmVsUHJlZml4JV9yZXR1cm5fbG9jYXRpb246
CisgICAgZW5kCisKKyAgICBtYWNybyBqc1JldHVyblBvaW50V2lkZTE2KCkKKyAgICAgICAgXyV0
aHVua0xhYmVsUHJlZml4JV9yZXR1cm5fbG9jYXRpb25fd2lkZTE2OgorICAgIGVuZAorCisgICAg
bWFjcm8ganNSZXR1cm5Qb2ludFdpZGUzMigpCisgICAgICAgIF8ldGh1bmtMYWJlbFByZWZpeCVf
cmV0dXJuX2xvY2F0aW9uX3dpZGUzMjoKKyAgICBlbmQKKworICAgIHNpemUoanNSZXR1cm5Qb2lu
dE5hcnJvdywganNSZXR1cm5Qb2ludFdpZGUxNiwganNSZXR1cm5Qb2ludFdpZGUzMiwgbWFjcm8g
KGpzUmV0dXJuUG9pbnQpIGpzUmV0dXJuUG9pbnQoKSBlbmQpCitlbmQKKworbWFjcm8ganVtcFRv
VHJhbXBvbGluZShvcGNvZGVOYW1lLCBzaXplKQorICAgIG1hY3JvIGdldE5hcnJvd1RyYW1wb2xp
bmVJbmRleCgpCisgICAgICAgIG1vdmUgKExMSW50XyVvcGNvZGVOYW1lJSArIE5hcnJvd0Jhc2Up
LCB0MworICAgIGVuZAorCisgICAgbWFjcm8gZ2V0V2lkZTE2VHJhbXBvbGluZUluZGV4KCkKKyAg
ICAgICAgbW92ZSAoTExJbnRfJW9wY29kZU5hbWUlICsgV2lkZTE2QmFzZSksIHQzCisgICAgZW5k
CisKKyAgICBtYWNybyBnZXRXaWRlMzJUcmFtcG9saW5lSW5kZXgoKQorICAgICAgICBtb3ZlIChM
TEludF8lb3Bjb2RlTmFtZSUgKyBXaWRlMzJCYXNlKSwgdDMKKyAgICBlbmQKKworICAgIHNpemUo
Z2V0TmFycm93VHJhbXBvbGluZUluZGV4LCBnZXRXaWRlMTZUcmFtcG9saW5lSW5kZXgsIGdldFdp
ZGUxNlRyYW1wb2xpbmVJbmRleCwgbWFjcm8gKGp1bXBUb1RyYW1wb2xpbmUpIGp1bXBUb1RyYW1w
b2xpbmUoKSBlbmQpCisgICAgbGVhcCBfZ19KSVRUcmFtcG9saW5lcywgdDUKKyAgICBqbXAgW3Q1
LCB0MywgUHRyU2l6ZV0sIE5vUHRyVGFnCitlbmQKKworbWFjcm8ganVtcFRvU2xvd1RyYW1wb2xp
bmUob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICBtYWNybyBnZXROYXJyb3dTbG93VHJhbXBvbGluZUlu
ZGV4KCkKKyAgICAgICAgbW92ZSAoTExJbnRfJW9wY29kZU5hbWUlX3Nsb3dQYXRoICsgTmFycm93
QmFzZSksIHQzCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRXaWRlMTZTbG93VHJhbXBvbGluZUlu
ZGV4KCkKKyAgICAgICAgbW92ZSAoTExJbnRfJW9wY29kZU5hbWUlX3Nsb3dQYXRoICsgV2lkZTE2
QmFzZSksIHQzCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRXaWRlMzJTbG93VHJhbXBvbGluZUlu
ZGV4KCkKKyAgICAgICAgbW92ZSAoTExJbnRfJW9wY29kZU5hbWUlX3Nsb3dQYXRoICsgV2lkZTMy
QmFzZSksIHQzCisgICAgZW5kCisKKyAgICBzaXplKGdldE5hcnJvd1Nsb3dUcmFtcG9saW5lSW5k
ZXgsIGdldFdpZGUxNlNsb3dUcmFtcG9saW5lSW5kZXgsIGdldFdpZGUzMlNsb3dUcmFtcG9saW5l
SW5kZXgsIG1hY3JvIChqdW1wVG9TbG93VHJhbXBvbGluZSkganVtcFRvU2xvd1RyYW1wb2xpbmUo
KSBlbmQpCisgICAgbGVhcCBfZ19KSVRUcmFtcG9saW5lcywgdDUKKyAgICBqbXAgW3Q1LCB0Mywg
UHRyU2l6ZV0sIE5vUHRyVGFnCitlbmQKKwogCiBpZiBYODZfNjRfV0lOCiAgICAgY29uc3QgZXh0
cmFUZW1wUmVnID0gdDAKQEAgLTEwMjUsNyArMTEwMyw3IEBAIG1hY3JvIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBlbmQKIGVuZAogCi1tYWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2Rl
TmFtZSwgc2l6ZSkKK21hY3JvIGRlZmluZVJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAg
ICAgbWFjcm8gZGVmaW5lTmFycm93KCkKICAgICAgICAgaWYgbm90IENfTE9PUF9XSU4KICAgICAg
ICAgICAgIF8lb3Bjb2RlTmFtZSVfcmV0dXJuX2xvY2F0aW9uOgpAQCAtMTA0Nyw5ICsxMTI1LDM1
IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW0KICAgICBzaXplKGRl
ZmluZU5hcnJvdywgZGVmaW5lV2lkZTE2LCBkZWZpbmVXaWRlMzIsIG1hY3JvIChmKSBmKCkgZW5k
KQogZW5kCiAKK21hY3JvIGNhbGxTbG93cGF0aEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRj
aCwgY2FsbGVlLCBjYWxsUHRyVGFnKQorICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCisgICAg
ICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gY2FsbGVlCisgICAgZWxzaWYgSklUX0NBR0UKKyAgICAg
ICAgbW92ZSBjYWxsZWUsIGEwCisgICAgICAgIGp1bXBUb1Nsb3dUcmFtcG9saW5lKG9wY29kZU5h
bWUsIHNpemUpCisgICAgZWxzZQorICAgICAgICBjYWxsIGNhbGxlZSwgY2FsbFB0clRhZworICAg
IGVuZAorCisgICAgaWYgQVJNdjcgb3IgTUlQUworICAgICAgICAjIEl0IGlzIHJlcXVpcmVkIGlu
IEFSTXY3IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCisgICAgICAg
ICMgZm9yIHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJhdGVzIGEgc2V0IG9mIGluc3RydWN0aW9u
cworICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0aW9uLCByZXN1bHRpbmcg
aW4gdW5leHBlY3RlZAorICAgICAgICAjIGNyYXNoZXMuCisgICAgICAgIHJlc3RvcmVTdGFja1Bv
aW50ZXJBZnRlckNhbGwoKQorICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCisg
ICAgZW5kCisgICAgZGVmaW5lUmV0dXJuTGFiZWwoJW9wY29kZU5hbWUlX3Nsb3csIHNpemUpCisg
ICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwo
c2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIs
IGRpc3BhdGNoKQorZW5kCisKIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJ
TgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQorICAgIGVsc2lmIEpJVF9DQUdF
CisgICAgICAgIG1vdmUgY2FsbGVlLCBhMAorICAgICAgICBqdW1wVG9UcmFtcG9saW5lKG9wY29k
ZU5hbWUsIHNpemUpCiAgICAgZWxzZQogICAgICAgICBjYWxsIGNhbGxlZSwgY2FsbFB0clRhZwog
ICAgIGVuZApAQCAtMTA2Miw3ICsxMTY2LDcgQEAgbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9w
Y29kZU5hbWUsIHNpegogICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKICAg
ICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogICAgIGVuZAotICAgIGRlZmluZU9T
UkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQorICAgIGRlZmluZVJldHVybkxhYmVs
KG9wY29kZU5hbWUsIHNpemUpCiAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAg
ICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogZW5kCkBAIC0xMTQ1LDE0ICsxMjQ5LDE0
IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCAKICAgICAgICAgICAg
IG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCiAgICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUs
IHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgotICAg
ICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gs
IGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAgICAgICBjYWxsU2xvd3BhdGhGdW5jdGlv
bihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
cnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCiAgICAgICAg
IGVuZCkKIGVuZAogCiBtYWNybyBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOYW1l
LCBzaXplKQogICAgIGNyYXNoKCkgIyBXZSBkb24ndCByZWFjaCB0aGlzIGluIHN0cmFpZ2h0IGxp
bmUgY29kZS4gV2Ugb25seSByZWFjaCBpdCB2aWEgcmV0dXJuaW5nIHRvIHRoZSBjb2RlIGJlbG93
IHdoZW4gcmVjb25zdHJ1Y3Rpbmcgc3RhY2sgZnJhbWVzIGR1cmluZyBPU1IgZXhpdC4KIAotICAg
IGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcE5hbWUsIHNpemUpCisgICAgZGVmaW5lUmV0dXJu
TGFiZWwob3BOYW1lLCBzaXplKQogCiAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgp
CiAgICAgbG9hZGkgTExJbnRSZXR1cm5QQ1tjZnJdLCBQQwpAQCAtMTQ5Myw4ICsxNTk3LDEzIEBA
IGVuZAogbWFjcm8gZG9SZXR1cm4oKQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50
KCkKICAgICByZXN0b3JlQ2FsbGVyUENBbmRDRlIoKQoraWYgSklUX0NBR0UKKyAgICBsZWFwIF9n
X2xsaW50Q2FnZWRSZXR1cm5UaHVuaywgdDMKKyAgICBqbXAgW3QzXSwgTm9QdHJUYWcKK2Vsc2UK
ICAgICByZXQKIGVuZAorZW5kCiAKICMgVGhpcyBicmVhayBpbnN0cnVjdGlvbiBpcyBuZWVkZWQg
c28gdGhhdCB0aGUgc3ludGhlc2l6ZWQgbGxpbnRQQ1JhbmdlU3RhcnQgbGFiZWwKICMgZG9lc24n
dCBwb2ludCB0byB0aGUgZXhhY3Qgc2FtZSBsb2NhdGlvbiBhcyB2bUVudHJ5VG9KYXZhU2NyaXB0
IHdoaWNoIGNvbWVzIGFmdGVyIGl0LgpAQCAtMTY0NCw3ICsxNzUzLDYxIEBAIGVsc2UKICAgICBl
bmQKIAogCi1tYWNybyBlbnRyeShraW5kLCBpbml0aWFsaXplKQoraWYgSklUX0NBR0UKKyAgICBp
ZiBBUk02NCBvciBBUk02NEUKKyAgICBnbG9iYWwgX2NhbGxUb1JlZ0V4cEpJVENvZGUKK19jYWxs
VG9SZWdFeHBKSVRDb2RlOgorICAgICAgICBmdW5jdGlvblByb2xvZ3VlKCkKKyAgICAgICAgLy8g
QXJndW1lbnRzIGFyZSBpbiBhMCAuLiBhNCwgZGVzdGluYXRpb24gSklUIFJlZ0V4cCBmdW5jdGlv
biBpcyBpbiBhNS4KKyAgICAgICAgbGVhcCBfZ19yZWdFeHBKSVRUcmFtcG9saW5lLCB0NworICAg
ICAgICBqbXAgW3Q3XSwgTm9QdHJUYWcKK19yZWdFeHBKSVRSZXR1cm46CisgICAgICAgIGZ1bmN0
aW9uRXBpbG9ndWUoKQorICAgICAgICByZXQKKyAgICBlbmQKKworaWYgQ1NTX1NFTEVDVE9SX0pJ
VAorICAgIGlmIEFSTTY0IG9yIEFSTTY0RQorICAgICMgV2UgZW1pdCB0aGUgZ2xvYmFsIGRpcmVj
dGl2ZXMgYW5kIGxhYmVscyBvdXJzZWx2ZXMgc28gdGhhdCBpdCBpcyBleHRlcm5hbGx5IHZpc2li
bGUuCisgICAgZW1pdCAiLmdsb2JsIF9jYWxsUnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hl
Y2tlckNTU0pJVENvZGUiCisgICAgZW1pdCAiX2NhbGxSdWxlQ29sbGVjdG9yU2ltcGxlU2VsZWN0
b3JDaGVja2VyQ1NTSklUQ29kZToiCisgICAgZW1pdCAiLmdsb2JsIF9jYWxsUXVlcnlTZWxlY3Rv
clNpbXBsZVNlbGVjdG9yQ2hlY2tlckNTU0pJVENvZGUiCisgICAgZW1pdCAiX2NhbGxRdWVyeVNl
bGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2VyQ1NTSklUQ29kZToiCisgICAgZW1pdCAiLmdsb2Js
IF9jYWxsUnVsZUNvbGxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHRDU1NK
SVRDb2RlIgorICAgIGVtaXQgIl9jYWxsUnVsZUNvbGxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhD
aGVja2luZ0NvbnRleHRDU1NKSVRDb2RlOiIKKyAgICBlbWl0ICIuZ2xvYmwgX2NhbGxRdWVyeVNl
bGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dENTU0pJVENvZGUiCisgICAg
ZW1pdCAiX2NhbGxRdWVyeVNlbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4
dENTU0pJVENvZGU6IgorICAgICAgICBmdW5jdGlvblByb2xvZ3VlKCkKKyAgICAgICAgLy8gRGVz
dGluYXRpb24gZnVuY3Rpb24gcHRyIGlzIGluIGEwIGFuZCB0aGUgcmVtYWluaW5nIGFyZ3MgYXJl
IGExIC4uIGEzCisgICAgICAgIGxlYXAgX2dfY3NzU2VsZWN0b3JKSVRUcmFtcG9saW5lLCB0Nwor
ICAgICAgICBqbXAgW3Q3XSwgTm9QdHJUYWcKK19jc3NTZWxlY3RvckpJVFJldHVybjoKKyAgICAg
ICAgZnVuY3Rpb25FcGlsb2d1ZSgpCisgICAgICAgIHJldAorICAgIGVuZAorZW5kCisKKyAgICBt
YWNybyBpbml0VHJhbXBvbGluZVJldHVybnModGVtcDEsIHRlbXAyKQorICAgICAgICBpZiBBUk02
NCBvciBBUk02NEUKKyAgICAgICAgICAgIHBjcnRvYWRkciBfdm1FbnRyeVRvSlNSZXR1cm4sIHRl
bXAxCisgICAgICAgICAgICBsZWFwIF9nX3ZtRW50cnlSZXR1cm4sIHRlbXAyCisgICAgICAgICAg
ICBzdG9yZXAgdGVtcDEsIFt0ZW1wMl0KKyAgICAgICAgICAgIHBjcnRvYWRkciBfcmVnRXhwSklU
UmV0dXJuLCB0ZW1wMQorICAgICAgICAgICAgbGVhcCBfZ19yZWdFeHBKSVRSZXR1cm4sIHRlbXAy
CisgICAgICAgICAgICBzdG9yZXAgdGVtcDEsIFt0ZW1wMl0KKyAgICAgICAgICAgIGlmIENTU19T
RUxFQ1RPUl9KSVQKKyAgICAgICAgICAgICAgICBwY3J0b2FkZHIgX2Nzc1NlbGVjdG9ySklUUmV0
dXJuLCB0ZW1wMQorICAgICAgICAgICAgICAgIGxlYXAgX2dfY3NzU2VsZWN0b3JKSVRSZXR1cm4s
IHRlbXAyCisgICAgICAgICAgICAgICAgc3RvcmVwIHRlbXAxLCBbdGVtcDJdCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgZW5kCisgICAgZW5kCitlbHNlCisgICAgbWFjcm8gaW5pdFRyYW1wb2xp
bmVSZXR1cm5zKHRlbXAxLCB0ZW1wMikKKyAgICBlbmQKK2VuZAorCittYWNybyBlbnRyeShraW5k
LCBpbml0aWFsaXplLCBleHRyYUluaXQpCiAgICAgZ2xvYmFsIF8la2luZCVfZW50cnkKICAgICBf
JWtpbmQlX2VudHJ5OgogICAgICAgICBmdW5jdGlvblByb2xvZ3VlKCkKQEAgLTE2NTYsNyArMTgx
OSw3IEBAIG1hY3JvIGVudHJ5KGtpbmQsIGluaXRpYWxpemUpCiAgICAgICAgIGVuZAogCiAgICAg
ICAgIGluaXRQQ1JlbGF0aXZlKGtpbmQsIHQzKQotCisgICAgICAgIGV4dHJhSW5pdCh0MywgdDQp
CiAgICAgICAgICMgSW5jbHVkZSBnZW5lcmF0ZWQgYnl0ZWNvZGUgaW5pdGlhbGl6YXRpb24gZmls
ZS4KICAgICAgICAgaW5jbHVkZUVudHJpZXNBdE9mZnNldChraW5kLCBpbml0aWFsaXplKQogICAg
ICAgICBwb3BDYWxsZWVTYXZlcygpCkBAIC0xNjY3LDcgKzE4MzAsOCBAQCBlbmQKICMgRW50cnkg
cG9pbnQgZm9yIHRoZSBsbGludCB0byBpbml0aWFsaXplLgogZW50cnkobGxpbnQsIG1hY3JvKCkK
ICAgICBpbmNsdWRlIEluaXRCeXRlY29kZXMKLWVuZCkKKyAgICBlbmQsCisgICAgaW5pdFRyYW1w
b2xpbmVSZXR1cm5zKQogCiBlbmQgLy8gbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKIApAQCAt
MjEwOCw3ICsyMjcyLDcgQEAgZW5kKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsOgogICAgIHNsb3dQ
YXRoRm9yQ29tbW9uQ2FsbCgKLSAgICAgICAgb3BfY2FsbF9ldmFsX25hcnJvdywKKyAgICAgICAg
b3BfY2FsbF9ldmFsLAogICAgICAgICBuYXJyb3csCiAgICAgICAgIE9wQ2FsbEV2YWwsCiAgICAg
ICAgIG1hY3JvICgpIGRpc3BhdGNoT3AobmFycm93LCBvcF9jYWxsX2V2YWwpIGVuZCwKQEAgLTIx
MTcsNyArMjI4MSw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWw6CiAKIF9sbGludF9vcF9jYWxsX2V2
YWxfd2lkZTE2OgogICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKLSAgICAgICAgb3BfY2FsbF9l
dmFsX3dpZGUxNiwKKyAgICAgICAgb3BfY2FsbF9ldmFsLAogICAgICAgICB3aWRlMTYsCiAgICAg
ICAgIE9wQ2FsbEV2YWwsCiAgICAgICAgIG1hY3JvICgpIGRpc3BhdGNoT3Aod2lkZTE2LCBvcF9j
YWxsX2V2YWwpIGVuZCwKQEAgLTIxMjYsNyArMjI5MCw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWxf
d2lkZTE2OgogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKICAgICBzbG93UGF0aEZvckNv
bW1vbkNhbGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCisgICAgICAgIG9wX2NhbGxf
ZXZhbCwKICAgICAgICAgd2lkZTMyLAogICAgICAgICBPcENhbGxFdmFsLAogICAgICAgICBtYWNy
byAoKSBkaXNwYXRjaE9wKHdpZGUzMiwgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0yMjU4LDcgKzI0
MjIsOCBAQCBpZiBXRUJBU1NFTUJMWSBhbmQgbm90IFg4Nl82NF9XSU4KIAogZW50cnkod2FzbSwg
bWFjcm8oKQogICAgIGluY2x1ZGUgSW5pdFdhc20KLWVuZCkKKyAgICBlbmQsCisgICAgbWFjcm8o
dGVtcDEsIHRlbXAyKSBlbmQpCiAKIG1hY3JvIHdhc21TY29wZSgpCiAgICAgIyBXcmFwIHRoZSBz
Y3JpcHQgaW4gYSBtYWNybyBzaW5jZSBpdCBvdmVyd3JpdGVzIHNvbWUgb2YgdGhlIExMSW50IG1h
Y3JvcywKQEAgLTIyNzksMyArMjQ0NCw4MSBAQCBvcCh3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25v
X3RscywgbWFjcm8gCiBlbmQpCiAKIGVuZAorCitpZiBKSVRfQ0FHRQorICAgICMgTExJbnQgdHJh
bXBvbGluZXMgZm9yIEpJVCBDYWdpbmcgd2hlbiBKSVQgaXNuJ3QgcnVudGltZSBlbmFibGVkLgor
ICAgIGdsb2JhbCBfdm1FbnRyeVRvSklUVHJhbXBvbGluZQorICAgIF92bUVudHJ5VG9KSVRUcmFt
cG9saW5lOgorICAgICAgICBjYWxsIGEwLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGptcCBfdm1F
bnRyeVRvSlNSZXR1cm4KKworICAgIGdsb2JhbCBfcmV0dXJuVGh1bmsKKyAgICBfcmV0dXJuVGh1
bms6CisgICAgICAgIHJldAorCisgICAgIyBMTEludCB0cmFtcG9saW5lcworICAgIG1hY3JvIG1h
a2VUcmFtcG9saW5lTGFiZWwodHJhbXBvbGluZVR5cGUsIHNpemUpCisgICAgICAgIG1hY3JvIG1h
a2VUcmFtcG9saW5lTGFiZWxOYXJyb3coKQorICAgICAgICAgICAgZ2xvYmFsIF9sbGludF8ldHJh
bXBvbGluZVR5cGUlX3RyYW1wb2xpbmVfbmFycm93CisgICAgICAgICAgICBfbGxpbnRfJXRyYW1w
b2xpbmVUeXBlJV90cmFtcG9saW5lX25hcnJvdzoKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFj
cm8gbWFrZVRyYW1wb2xpbmVMYWJlbFdpZGUxNigpCisgICAgICAgICAgICBnbG9iYWwgX2xsaW50
XyV0cmFtcG9saW5lVHlwZSVfdHJhbXBvbGluZV93aWRlMTYKKyAgICAgICAgICAgIF9sbGludF8l
dHJhbXBvbGluZVR5cGUlX3RyYW1wb2xpbmVfd2lkZTE2OgorICAgICAgICBlbmQKKworICAgICAg
ICBtYWNybyBtYWtlVHJhbXBvbGluZUxhYmVsV2lkZTMyKCkKKyAgICAgICAgICAgIGdsb2JhbCBf
bGxpbnRfJXRyYW1wb2xpbmVUeXBlJV90cmFtcG9saW5lX3dpZGUzMgorICAgICAgICAgICAgX2xs
aW50XyV0cmFtcG9saW5lVHlwZSVfdHJhbXBvbGluZV93aWRlMzI6CisgICAgICAgIGVuZAorCisg
ICAgICAgIHNpemUobWFrZVRyYW1wb2xpbmVMYWJlbE5hcnJvdywgbWFrZVRyYW1wb2xpbmVMYWJl
bFdpZGUxNiwgbWFrZVRyYW1wb2xpbmVMYWJlbFdpZGUzMiwgbWFjcm8gKG1ha2VUcmFtcG9saW5l
TGFiZWwpIG1ha2VUcmFtcG9saW5lTGFiZWwoKSBlbmQpCisgICAgZW5kCisKKyAgICBtYWNybyBq
dW1wVG9SZXR1cm5Qb2ludChyZXR1cm5MYWJlbFByZWZpeCwgc2l6ZSkKKyAgICAgICAgbWFjcm8g
anVtcFRvUmV0dXJuUG9pbnROYXJyb3coKQorICAgICAgICAgICAgam1wIF8lcmV0dXJuTGFiZWxQ
cmVmaXglCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGp1bXBUb1JldHVyblBvaW50V2lk
ZTE2KCkKKyAgICAgICAgICAgIGptcCBfJXJldHVybkxhYmVsUHJlZml4JV93aWRlMTYKKyAgICAg
ICAgZW5kCisKKyAgICAgICAgbWFjcm8ganVtcFRvUmV0dXJuUG9pbnRXaWRlMzIoKQorICAgICAg
ICAgICAgam1wIF8lcmV0dXJuTGFiZWxQcmVmaXglX3dpZGUzMgorICAgICAgICBlbmQKKworICAg
ICAgICBzaXplKGp1bXBUb1JldHVyblBvaW50TmFycm93LCBqdW1wVG9SZXR1cm5Qb2ludFdpZGUx
NiwganVtcFRvUmV0dXJuUG9pbnRXaWRlMzIsIG1hY3JvIChqdW1wVG9SZXR1cm5Qb2ludCkganVt
cFRvUmV0dXJuUG9pbnQoKSBlbmQpCisgICAgZW5kCisKKyAgICBtYWNybyB0cmFtcG9saW5lRm9y
KG9wLCByZXR1cm5PcCwgdGFnKQorICAgICAgICBtYWtlVHJhbXBvbGluZUxhYmVsKG9wLCBuYXJy
b3cpCisgICAgICAgIGNhbGwgYTAsIHRhZworICAgICAgICBqdW1wVG9SZXR1cm5Qb2ludChyZXR1
cm5PcCwgbmFycm93KQorCisgICAgICAgIG1ha2VUcmFtcG9saW5lTGFiZWwob3AsIHdpZGUxNikK
KyAgICAgICAgY2FsbCBhMCwgdGFnCisgICAgICAgIGp1bXBUb1JldHVyblBvaW50KHJldHVybk9w
LCB3aWRlMTYpCisKKyAgICAgICAgbWFrZVRyYW1wb2xpbmVMYWJlbChvcCwgd2lkZTMyKQorICAg
ICAgICBjYWxsIGEwLCB0YWcKKyAgICAgICAganVtcFRvUmV0dXJuUG9pbnQocmV0dXJuT3AsIHdp
ZGUzMikKKyAgICBlbmQKKworICAgIHRyYW1wb2xpbmVGb3Iob3BfY2FsbCwgb3BfY2FsbF9yZXR1
cm5fbG9jYXRpb24sIEpTRW50cnlQdHJUYWcpCisgICAgdHJhbXBvbGluZUZvcihvcF90YWlsX2Nh
bGwsIG9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24sIEpTRW50cnlQdHJUYWcpCisgICAgdHJh
bXBvbGluZUZvcihvcF9jb25zdHJ1Y3QsIG9wX2NvbnN0cnVjdF9yZXR1cm5fbG9jYXRpb24sIEpT
RW50cnlQdHJUYWcpCisgICAgdHJhbXBvbGluZUZvcihvcF9pdGVyYXRvcl9vcGVuLCBvcF9pdGVy
YXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbiwgSlNFbnRyeVB0clRhZykKKyAgICB0cmFtcG9saW5l
Rm9yKG9wX2l0ZXJhdG9yX25leHQsIG9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9uLCBK
U0VudHJ5UHRyVGFnKQorICAgIHRyYW1wb2xpbmVGb3Iob3BfY2FsbF9zbG93UGF0aCwgb3BfY2Fs
bF9zbG93X3JldHVybl9sb2NhdGlvbiwgU2xvd1BhdGhQdHJUYWcpCisgICAgdHJhbXBvbGluZUZv
cihvcF90YWlsX2NhbGxfc2xvd1BhdGgsIG9wX3RhaWxfY2FsbF9zbG93X3JldHVybl9sb2NhdGlv
biwgU2xvd1BhdGhQdHJUYWcpCisgICAgdHJhbXBvbGluZUZvcihvcF9jb25zdHJ1Y3Rfc2xvd1Bh
dGgsIG9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9sb2NhdGlvbiwgU2xvd1BhdGhQdHJUYWcpCisg
ICAgdHJhbXBvbGluZUZvcihvcF9pdGVyYXRvcl9vcGVuX3Nsb3dQYXRoLCBvcF9pdGVyYXRvcl9v
cGVuX3Nsb3dfcmV0dXJuX2xvY2F0aW9uLCBTbG93UGF0aFB0clRhZykKKyAgICB0cmFtcG9saW5l
Rm9yKG9wX2l0ZXJhdG9yX25leHRfc2xvd1BhdGgsIG9wX2l0ZXJhdG9yX25leHRfc2xvd19yZXR1
cm5fbG9jYXRpb24sIFNsb3dQYXRoUHRyVGFnKQorICAgIHRyYW1wb2xpbmVGb3Iob3BfY2FsbF9l
dmFsX3Nsb3dQYXRoLCBvcF9jYWxsX2V2YWxfc2xvd19yZXR1cm5fbG9jYXRpb24sIFNsb3dQYXRo
UHRyVGFnKQorICAgIHRyYW1wb2xpbmVGb3Iob3BfY2FsbF92YXJhcmdzX3Nsb3dQYXRoLCBvcF9j
YWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb24sIFNsb3dQYXRoUHRyVGFnKQorICAgIHRy
YW1wb2xpbmVGb3Iob3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd1BhdGgsIG9wX3RhaWxfY2FsbF92
YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uLCBTbG93UGF0aFB0clRhZykKKyAgICB0cmFtcG9s
aW5lRm9yKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93UGF0aCwgb3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uLCBTbG93UGF0aFB0clRh
ZykKKyAgICB0cmFtcG9saW5lRm9yKG9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3dQYXRoLCBvcF9j
b25zdHJ1Y3RfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbiwgU2xvd1BhdGhQdHJUYWcpCitl
bmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQko
cmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2Vt
Ymx5LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNjcxLDcgKzY3MSw0MSBAQCB3YXNtT3Aoc2V0X2ds
b2JhbF9wb3J0YWJsZV9iaW5kaW5nLCBXYXNtCiAgICAgZGlzcGF0Y2goY3R4KQogZW5kKQogCi1t
YWNybyBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgc2xvd1BhdGgsIHN0b3JlV2FzbUluc3RhbmNl
KQorbWFjcm8ganVtcFRvV2FzbVRyYW1wb2xpbmUob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICBtYWNy
byBnZXRUcmFtcG9saW5lTmFycm93KCkKKyAgICAgICAgYWRkcSAoV2FzbV8lb3Bjb2RlTmFtZSUg
KyBOYXJyb3dCYXNlKSAqIFB0clNpemUsIHdzMQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0VHJh
bXBvbGluZVdpZGUxNigpCisgICAgICAgIGFkZHEgKFdhc21fJW9wY29kZU5hbWUlICsgV2lkZTE2
QmFzZSkgKiBQdHJTaXplLCB3czEKKyAgICBlbmQKKworICAgIG1hY3JvIGdldFRyYW1wb2xpbmVX
aWRlMzIoKQorICAgICAgICBhZGRxIChXYXNtXyVvcGNvZGVOYW1lJSArIFdpZGUzMkJhc2UpICog
UHRyU2l6ZSwgd3MxCisgICAgZW5kCisKKyAgICBsZWFwIF9nX0pJVFRyYW1wb2xpbmVzLCB3czEK
KyAgICBzaXplKGdldFRyYW1wb2xpbmVOYXJyb3csIGdldFRyYW1wb2xpbmVXaWRlMTYsIGdldFRy
YW1wb2xpbmVXaWRlMzIsIG1hY3JvIChqdW1wVG9XYXNtVHJhbXBvbGluZSkganVtcFRvV2FzbVRy
YW1wb2xpbmUoKSBlbmQpCisgICAgam1wIFt3czFdLCBOb1B0clRhZworZW5kCisKK21hY3JvIGRl
ZmluZVdhc21DYWxsUmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICBtYWNybyBkZWZp
bmVXYXNtQ2FsbFJldHVybkxhYmVsTmFycm93KCkKKyAgICAgICAgXyVvcGNvZGVOYW1lJV9yZXR1
cm5fbG9jYXRpb246CisgICAgZW5kCisKKyAgICBtYWNybyBkZWZpbmVXYXNtQ2FsbFJldHVybkxh
YmVsV2lkZTE2KCkKKyAgICAgICAgXyVvcGNvZGVOYW1lJV9yZXR1cm5fbG9jYXRpb25fd2lkZTE2
OgorICAgIGVuZAorCisgICAgbWFjcm8gZGVmaW5lV2FzbUNhbGxSZXR1cm5MYWJlbFdpZGUzMigp
CisgICAgICAgIF8lb3Bjb2RlTmFtZSVfcmV0dXJuX2xvY2F0aW9uX3dpZGUzMjoKKyAgICBlbmQK
KworICAgIHNpemUoZGVmaW5lV2FzbUNhbGxSZXR1cm5MYWJlbE5hcnJvdywgZGVmaW5lV2FzbUNh
bGxSZXR1cm5MYWJlbFdpZGUxNiwgZGVmaW5lV2FzbUNhbGxSZXR1cm5MYWJlbFdpZGUzMiwgbWFj
cm8gKGRlZmluZVdhc21DYWxsUmV0dXJuTGFiZWwpIGRlZmluZVdhc21DYWxsUmV0dXJuTGFiZWwo
KSBlbmQpCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIHNsb3dQYXRoLCBj
YWxsVHlwZSwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgY2FsbFdhc21DYWxsU2xvd1BhdGgoCiAg
ICAgICAgIHNsb3dQYXRoLAogICAgICAgICAjIGNhbGxlZSBpcyByMCBhbmQgdGFyZ2V0V2FzbUlu
c3RhbmNlIGlzIHIxCkBAIC03MDUsOCArNzM5LDE3IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNh
bGwoY3R4LCBzbG93UGF0aCwKICAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAgICAgYWRkcCBD
YWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKLSAgICAgICAgICAgIGNhbGwgd3MwLCBTbG93UGF0aFB0
clRhZworICAgICAgICAgICAgaWYgSklUX0NBR0UKKyAgICAgICAgICAgICAgICBjdHgobWFjcm8o
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzaXplKQorICAgICAgICAgICAgICAgICAgICBqdW1w
VG9XYXNtVHJhbXBvbGluZShvcGNvZGVOYW1lLCBzaXplKQorICAgICAgICAgICAgICAgIGVuZCkK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQdHJU
YWcKKyAgICAgICAgICAgIGVuZAogCisgICAgICAgICAgICBjdHgobWFjcm8ob3Bjb2RlTmFtZSwg
b3Bjb2RlU3RydWN0LCBzaXplKQorICAgICAgICAgICAgICAgIGRlZmluZVdhc21DYWxsUmV0dXJu
TGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICAgICAgICAgIGVuZCkKICAgICAgICAgICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB3czEKICAgICAgICAgICAgIGxvYWRpIFdhc206OkZ1bmN0aW9u
Q29kZUJsb2NrOjptX251bUNhbGxlZUxvY2Fsc1t3czFdLCB3czEKICAgICAgICAgICAgIGxzaGlm
dHAgMywgd3MxCkBAIC03NTgsMTkgKzgwMSwxOSBAQCBtYWNybyBzbG93UGF0aEZvcldhc21DYWxs
KGN0eCwgc2xvd1BhdGgsCiBlbmQKIAogdW5wcmVmaXhlZFdhc21PcCh3YXNtX2NhbGwsIFdhc21D
YWxsLCBtYWNybyhjdHgpCi0gICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhf
d2FzbV9jYWxsLCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQorICAgIHNsb3dQYXRoRm9yV2FzbUNh
bGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbCwgQ2FsbCwgc3RvcmVXYXNtSW5zdGFuY2VUb1RM
UykKIGVuZCkKIAogdW5wcmVmaXhlZFdhc21PcCh3YXNtX2NhbGxfbm9fdGxzLCBXYXNtQ2FsbE5v
VGxzLCBtYWNybyhjdHgpCi0gICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhf
d2FzbV9jYWxsX25vX3RscywgbWFjcm8odGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFu
Y2UsIHdhc21JbnN0YW5jZSBlbmQpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93
X3BhdGhfd2FzbV9jYWxsX25vX3RscywgQ2FsbE5vVExTLCBtYWNybyh0YXJnZXRJbnN0YW5jZSkg
bW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNlIGVuZCkKIGVuZCkKIAogd2FzbU9wKGNh
bGxfaW5kaXJlY3QsIFdhc21DYWxsSW5kaXJlY3QsIG1hY3JvKGN0eCkKLSAgICBzbG93UGF0aEZv
cldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX2NhbGxfaW5kaXJlY3QsIHN0b3JlV2FzbUlu
c3RhbmNlVG9UTFMpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2Fz
bV9jYWxsX2luZGlyZWN0LCBDYWxsSW5kaXJlY3QsIHN0b3JlV2FzbUluc3RhbmNlVG9UTFMpCiBl
bmQpCiAKIHdhc21PcChjYWxsX2luZGlyZWN0X25vX3RscywgV2FzbUNhbGxJbmRpcmVjdE5vVGxz
LCBtYWNybyhjdHgpCi0gICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2Fz
bV9jYWxsX2luZGlyZWN0X25vX3RscywgbWFjcm8odGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0
SW5zdGFuY2UsIHdhc21JbnN0YW5jZSBlbmQpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgs
IF9zbG93X3BhdGhfd2FzbV9jYWxsX2luZGlyZWN0X25vX3RscywgQ2FsbEluZGlyZWN0Tm9UTFMs
IG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2Ug
ZW5kKQogZW5kKQogCiB3YXNtT3AoY3VycmVudF9tZW1vcnksIFdhc21DdXJyZW50TWVtb3J5LCBt
YWNybyhjdHgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5y
YgkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtNjQucmIJKHdvcmtpbmcgY29weSkKQEAgLTM3LDIxICszNywyNCBAQCByZXF1aXJlICJyaXNj
IgogIwogIyBHUFIgY29udmVudGlvbnMsIHRvIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQ6CiAjCi0j
ICB4MCAgPT4gdDAsIGEwLCByMAotIyAgeDEgID0+IHQxLCBhMSwgcjEKLSMgIHgyICA9PiB0Miwg
YTIKLSMgIHgzICA9PiB0MywgYTMKLSMgIHg0ICA9PiB0NAotIyAgeDUgID0+IHQ1CisjICB4MCAg
PT4gdDAsIGEwLCB3YTAsIHIwCisjICB4MSAgPT4gdDEsIGExLCB3YTEsIHIxCisjICB4MiAgPT4g
dDIsIGEyLCB3YTIKKyMgIHgzICA9PiB0MywgYTMsIHdhMworIyAgeDQgID0+IHQ0LCBhNCwgd2E0
CisjICB4NSAgPT4gdDUsIGE1LCB3YTUKKyMgIHg2ICA9PiB0NiwgYTYsIHdhNgorIyAgeDcgID0+
IHQ3LCBhNywgd2E3CiAjIHgxMyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKICMgeDE2
ICA9PiAgICAgICAgICAgICAgICAgIChzY3JhdGNoKQogIyB4MTcgID0+ICAgICAgICAgICAgICAg
ICAgKHNjcmF0Y2gpCisjIHgyNSAgPT4gICAgICAgICAgICAgbWV0YWRhdGFUYWJsZQogIyB4MjYg
ID0+ICAgICAgICAgICAgIGNzcjAgKFBCKQogIyB4MjcgID0+ICAgICAgICAgICAgIGNzcjEgKG51
bWJlclRhZykKICMgeDI4ICA9PiAgICAgICAgICAgICBjc3IyIChub3RDZWxsTWFzaykKICMgeDI5
ICA9PiBjZnIKLSMgIHNwICA9PiBzcAogIyAgbHIgID0+IGxyCisjICBzcCAgPT4gc3AKICMKICMg
RlBSIGNvbnZlbnRpb25zLCB0byBtYXRjaCB0aGUgYmFzZWxpbmUgSklUOgogIwpAQCAtMTI4LDEz
ICsxMzEsMTMgQEAgY2xhc3MgUmVnaXN0ZXJJRAogICAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4
MicsIGtpbmQpCiAgICAgICAgIHdoZW4gJ3QzJywgJ2EzJywgJ3dhMycKICAgICAgICAgICAgIGFy
bTY0R1BSTmFtZSgneDMnLCBraW5kKQotICAgICAgICB3aGVuICd0NCcsICd3YTQnCisgICAgICAg
IHdoZW4gJ3Q0JywgJ2E0JywgJ3dhNCcKICAgICAgICAgICAgIGFybTY0R1BSTmFtZSgneDQnLCBr
aW5kKQotICAgICAgICB3aGVuICd0NScsICd3YTUnCisgICAgICAgIHdoZW4gJ3Q1JywgJ2E1Jywg
J3dhNScKICAgICAgICAgICBhcm02NEdQUk5hbWUoJ3g1Jywga2luZCkKLSAgICAgICAgd2hlbiAn
dDYnLCAnd2E2JworICAgICAgICB3aGVuICd0NicsICdhNicsICd3YTYnCiAgICAgICAgICAgYXJt
NjRHUFJOYW1lKCd4NicsIGtpbmQpCi0gICAgICAgIHdoZW4gJ3Q3JywgJ3dhNycKKyAgICAgICAg
d2hlbiAndDcnLCAnYTcnLCAnd2E3JwogICAgICAgICAgIGFybTY0R1BSTmFtZSgneDcnLCBraW5k
KQogICAgICAgICB3aGVuICd3czAnCiAgICAgICAgICAgYXJtNjRHUFJOYW1lKCd4OScsIGtpbmQp
CkBAIC04NjUsNyArODY4LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgd2hlbiAibW92
ZSIKICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmltbWVkaWF0ZT8KICAgICAgICAgICAgICAg
ICBlbWl0QVJNNjRNb3ZlSW1tZWRpYXRlKG9wZXJhbmRzWzBdLnZhbHVlLCBvcGVyYW5kc1sxXSkK
LSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzWzBdLmFybTY0T3Bl
cmFuZCg6cXVhZCkgIT0gb3BlcmFuZHNbMV0uYXJtNjRPcGVyYW5kKDpxdWFkKQogICAgICAgICAg
ICAgICAgIGVtaXRBUk02NCgibW92Iiwgb3BlcmFuZHMsIDpxdWFkKQogICAgICAgICAgICAgZW5k
CiAgICAgICAgIHdoZW4gIm1vdmVkIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXJtNjRlLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FybTY0ZS5yYgkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXJtNjRlLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw4IEBA
CiAKIGNsYXNzIEFSTTY0RQogICAgICMgRklYTUU6IFRoaXMgaXMgZnJhZ2lsZSBhbmQgbmVlZHMg
dG8gbWF0Y2ggdGhlIGVudW0gdmFsdWUgaW4gUHRyVGFnLmguCi0gICAgQ0Z1bmN0aW9uUHRyVGFn
ID0gMgorICAgIE5vUHRyVGFnID0gMAorICAgIENGdW5jdGlvblB0clRhZyA9IDEKIGVuZAogCiBj
bGFzcyBTZXF1ZW5jZQpAQCAtNDUsNiArNDYsOCBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAg
ICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA+IDEKICAgICAgICAgICAgICAgICAgICAg
aWYgbm9kZS5vcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECiAgICAgICAgICAgICAgICAgICAg
ICAgICB0YWcgPSByaXNjTG93ZXJPcGVyYW5kVG9SZWdpc3Rlcihub2RlLCBuZXdMaXN0LCBwb3N0
SW5zdHJ1Y3Rpb25zLCAxLCAicCIsIGZhbHNlKQorICAgICAgICAgICAgICAgICAgICBlbHNpZiBu
b2RlLm9wZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgbm9kZS5vcGVyYW5kc1sxXS52YWx1
ZSA9PSBBUk02NEU6Ok5vUHRyVGFnCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2UsIG5ld0xpc3QKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgdGFnID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQogICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9k
ZS5vcGVyYW5kc1sxXSwgdGFnXSwgYW5ub3RhdGlvbikKQEAgLTg2LDcgKzg5LDcgQEAgY2xhc3Mg
SW5zdHJ1Y3Rpb24KICAgICAgICAgICAgICAgICBlbWl0QVJNNjRVbmZsaXBwZWQoImJscmFiIiwg
b3BlcmFuZHMsIDpwdHIpCiAgICAgICAgICAgICBlbmQKICAgICAgICAgd2hlbiAiam1wIgotICAg
ICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDEgb3Igb3BlcmFuZHNbMF0ubGFiZWw/CiAgICAgICAgICAgICAgICAgbG93ZXJBUk02
NAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVtaXRBUk02NFVuZmxpcHBlZCgi
YnJhYiIsIG9wZXJhbmRzLCA6cHRyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVy
cm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uU2NvcGUuaCIKICNpbmNsdWRl
ICJHQ0Fzc2VydGlvbnMuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJSdW50aW1lVHlwZS5oIgogCkBAIC0zOSw4ICs0MCw4
IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIAogY29uc3QgQ2xh
c3NJbmZvIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yKSB9OwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
QWdncmVnYXRlRXJyb3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbEFnZ3JlZ2F0ZUVy
cm9yQ29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJvckNv
bnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBBZ2dyZWdhdGVFcnJv
ckNvbnN0cnVjdG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxBZ2dyZWdhdGVFcnJv
ckNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0MywxMCBAQCBjb25z
dCBDbGFzc0luZm8gQXJyYXlDb25zdHJ1Y3Rvcjo6c19pbmZvCiBAZW5kCiAqLwogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxBcnJh
eUNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc3RydWN0V2l0aEFycmF5Q29uc3RydWN0
b3IsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK1ZBTElEX0pJVF9UQVJHRVQoYXJy
YXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheVNsb3cpOwogCiBBcnJheUNvbnN0cnVjdG9y
OjpBcnJheUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBJ
bnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxBcnJheUNvbnN0cnVjdG9yLCBjb25z
dHJ1Y3RXaXRoQXJyYXlDb25zdHJ1Y3RvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0FycmF5SW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCkBA
IC00MCwxOSArNDEsMjUgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVu
Y0pvaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNLZXlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRW50cmllcyhKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1BvcChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNS
ZXZlcnNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jU2hpZnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1NwbGljZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0Z1bmNJbmRleE9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KGFycmF5UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChhcnJheVByb3Rv
RnVuY0pvaW4sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChhcnJheVByb3RvRnVuY0tleXMsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1Rf
Q0FMTChhcnJheVByb3RvRnVuY0VudHJpZXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChhcnJheVByb3RvRnVu
Y1BvcCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGFycmF5UHJvdG9GdW5jUHVzaCwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KGFycmF5UHJvdG9GdW5jUmV2ZXJzZSwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGFycmF5UHJvdG9GdW5jU2hp
ZnQsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
VkFMSURfSlNDX0hPU1RfQ0FMTChhcnJheVByb3RvRnVuY1NsaWNlLCBKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwo
YXJyYXlQcm90b0Z1bmNTcGxpY2UsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChhcnJheVByb3RvRnVuY1VuU2hp
ZnQsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
VkFMSURfSlNDX0hPU1RfQ0FMTChhcnJheVByb3RvRnVuY0luZGV4T2YsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FM
TChhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworCitWQUxJRF9KSVRfVEFSR0VUKGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZSk7CitWQUxJ
RF9KSVRfVEFSR0VUKGFycmF5UHJvdG9GdW5jVG9TdHJpbmcpOworVkFMSURfSklUX1RBUkdFVChh
cnJheVByb3RvRnVuY1ZhbHVlcyk7CitWQUxJRF9KSVRfVEFSR0VUKGFycmF5UHJvdG9Qcml2YXRl
RnVuY0NvbmNhdE1lbWNweSk7CitWQUxJRF9KSVRfVEFSR0VUKGFycmF5UHJvdG9Qcml2YXRlRnVu
Y0FwcGVuZE1lbWNweSk7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJh
eVByb3RvdHlwZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRw
QGlnYWxpYS5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNiw2ICszOCw5IEBAIFNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIAogY29uc3QgQ2xhc3NJbmZv
IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yKSB9OwogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlND
X0hPU1RfQ0FMTChjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwo
Y29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNyBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
QXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29u
c3RydWN0b3IuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNiw2ICszOCw5IEBAIFNUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIAogY29uc3QgQ2xhc3NJbmZvIEFzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OwogCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc3RydWN0QXN5bmNHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewogICAgIEFyZ0xpc3QgYXJncyhjYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAJKHJldmlzaW9uIDI2NzQ1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkF0b21pY3NPYmplY3QuaCIK
IAogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNp
bmNsdWRlICJSZWxlYXNlSGVhcEFjY2Vzc1Njb3BlLmgiCkBAIC01NSw2ICs1NiwxNyBAQCBTVEFU
SUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoCiBGT1JfRUFDSF9BVE9NSUNTX0ZV
TkMoREVDTEFSRV9GVU5DX1BST1RPKQogI3VuZGVmIERFQ0xBUkVfRlVOQ19QUk9UTwogCitWQUxJ
RF9KSVRfVEFSR0VUKG9wZXJhdGlvbkF0b21pY3NBZGQpOworVkFMSURfSklUX1RBUkdFVChvcGVy
YXRpb25BdG9taWNzQW5kKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQXRvbWljc0NvbXBh
cmVFeGNoYW5nZSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkF0b21pY3NFeGNoYW5nZSk7
CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkF0b21pY3NJc0xvY2tGcmVlKTsKK1ZBTElEX0pJ
VF9UQVJHRVQob3BlcmF0aW9uQXRvbWljc0xvYWQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25BdG9taWNzT3IpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25BdG9taWNzU3RvcmUpOwor
VkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25BdG9taWNzU3ViKTsKK1ZBTElEX0pJVF9UQVJHRVQo
b3BlcmF0aW9uQXRvbWljc1hvcik7CisKIGNvbnN0IENsYXNzSW5mbyBBdG9taWNzT2JqZWN0Ojpz
X2luZm8gPSB7ICJBdG9taWNzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShBdG9taWNzT2JqZWN0KSB9OwogCiBBdG9taWNzT2JqZWN0OjpBdG9t
aWNzT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE0ICsyOCwxNSBAQAogI2luY2x1ZGUg
IkJpZ0ludENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJCaWdJbnRQcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlSW50LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3Rv
ckZ1bmNBc1VpbnROKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc0ludE4oSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0Nf
SE9TVF9DQUxMKGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4sIEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChi
aWdJbnRDb25zdHJ1Y3RvckZ1bmNBc0ludE4sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC01NCw3ICs1NSw3IEBAIGNvbnN0IENsYXNzSW5m
byBCaWdJbnRDb25zdHJ1Y3Rvcjo6c19pbmYKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwo
Y2FsbEJpZ0ludENvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBC
aWdJbnRDb25zdHJ1Y3Rvcjo6QmlnSW50Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEJpZ0lu
dENvbnN0cnVjdG9yLCBudWxscHRyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQmlnSW50UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw5ICszOCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1Zh
bHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nLCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NU
X0NBTEwoYmlnSW50UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcsIEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChiaWdJ
bnRQcm90b0Z1bmNWYWx1ZU9mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYg
KzIyLDcgQEAKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkJv
b2xlYW5Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zMCw2ICszMSw5IEBAIFNUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRSgKIAogY29uc3QgQ2xhc3NJbmZvIEJv
b2xlYW5Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEJvb2xlYW5Db25zdHJ1Y3Rvcikg
fTsKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbEJvb2xl
YW5Db25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdFdpdGhCb29sZWFuQ29uc3Ry
dWN0b3IsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKIC8vIEVDTUEgMTUuNi4xCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQm9vbGVhbkNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMiArMjIsMTMg
QEAKICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJJbnRlZ3JpdHlJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1
bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcsIEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlND
X0hPU1RfQ0FMTChib29sZWFuUHJvdG9GdW5jVmFsdWVPZiwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25GdXp6LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCisjaW5jbHVkZSAi
SklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtNTMsNiAr
NTQsMTAyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0
aF9jYWxsX2FyaXR5Q2hlY2spOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfY29uc3RydWN0
X2FyaXR5Q2hlY2spOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfY3JlYXRlX2RpcmVjdF9h
cmd1bWVudHMpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHMpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfY3JlYXRlX2Nsb25lZF9hcmd1bWVu
dHMpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJm
bHkpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfY3JlYXRlX3RoaXMpOworVkFMSURfSklU
X1RBUkdFVChzbG93X3BhdGhfZW50ZXIpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfdG9f
dGhpcyk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpOworVkFM
SURfSklUX1RBUkdFVChzbG93X3BhdGhfY2hlY2tfdGR6KTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xv
d19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsK
K1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX25vdCk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3df
cGF0aF9lcSk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9uZXEpOworVkFMSURfSklUX1RB
UkdFVChzbG93X3BhdGhfc3RyaWN0ZXEpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfbnN0
cmljdGVxKTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX2xlc3MpOworVkFMSURfSklUX1RB
UkdFVChzbG93X3BhdGhfbGVzc2VxKTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX2dyZWF0
ZXIpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfZ3JlYXRlcmVxKTsKK1ZBTElEX0pJVF9U
QVJHRVQoc2xvd19wYXRoX2luYyk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9kZWMpOwor
VkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfdG9fbnVtYmVyKTsKK1ZBTElEX0pJVF9UQVJHRVQo
c2xvd19wYXRoX3RvX251bWVyaWMpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfdG9fc3Ry
aW5nKTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX3RvX29iamVjdCk7CitWQUxJRF9KSVRf
VEFSR0VUKHNsb3dfcGF0aF9uZWdhdGUpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfYWRk
KTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX211bCk7CitWQUxJRF9KSVRfVEFSR0VUKHNs
b3dfcGF0aF9zdWIpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfZGl2KTsKK1ZBTElEX0pJ
VF9UQVJHRVQoc2xvd19wYXRoX21vZCk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9wb3cp
OworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfbHNoaWZ0KTsKK1ZBTElEX0pJVF9UQVJHRVQo
c2xvd19wYXRoX3JzaGlmdCk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF91cnNoaWZ0KTsK
K1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX3Vuc2lnbmVkKTsKK1ZBTElEX0pJVF9UQVJHRVQo
c2xvd19wYXRoX2JpdG5vdCk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9iaXRhbmQpOwor
VkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfYml0b3IpOworVkFMSURfSklUX1RBUkdFVChzbG93
X3BhdGhfYml0eG9yKTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX3R5cGVvZik7CitWQUxJ
RF9KSVRfVEFSR0VUKHNsb3dfcGF0aF90eXBlb2ZfaXNfb2JqZWN0KTsKK1ZBTElEX0pJVF9UQVJH
RVQoc2xvd19wYXRoX3R5cGVvZl9pc19mdW5jdGlvbik7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3df
cGF0aF9pc19jYWxsYWJsZSk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9pc19jb25zdHJ1
Y3Rvcik7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9pbl9ieV9pZCk7CitWQUxJRF9KSVRf
VEFSR0VUKHNsb3dfcGF0aF9pbl9ieV92YWwpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhf
ZGVsX2J5X3ZhbCk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9zdHJjYXQpOworVkFMSURf
SklUX1RBUkdFVChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xv
d19wYXRoX3RvX3Byb3BlcnR5X2tleSk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9nZXRf
ZW51bWVyYWJsZV9sZW5ndGgpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfaGFzX2dlbmVy
aWNfcHJvcGVydHkpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfaGFzX3N0cnVjdHVyZV9w
cm9wZXJ0eSk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9oYXNfb3duX3N0cnVjdHVyZV9w
cm9wZXJ0eSk7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9pbl9zdHJ1Y3R1cmVfcHJvcGVy
dHkpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfaGFzX2luZGV4ZWRfcHJvcGVydHkpOwor
VkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfZ2V0X2RpcmVjdF9wbmFtZSk7CitWQUxJRF9KSVRf
VEFSR0VUKHNsb3dfcGF0aF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcik7CitWQUxJRF9KSVRfVEFS
R0VUKHNsb3dfcGF0aF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSk7CitWQUxJRF9KSVRfVEFS
R0VUKHNsb3dfcGF0aF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUpOworVkFMSURfSklUX1RBUkdF
VChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRo
X3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfdW5y
ZWFjaGFibGUpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsK
K1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOworVkFMSURfSklUX1RB
UkdFVChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2
YWwpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfY3JlYXRlX3Byb21pc2UpOworVkFMSURf
SklUX1RBUkdFVChzbG93X3BhdGhfY3JlYXRlX2dlbmVyYXRvcik7CitWQUxJRF9KSVRfVEFSR0VU
KHNsb3dfcGF0aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xv
d19wYXRoX2NyZWF0ZV9yZXN0KTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX2dldF9ieV9p
ZF93aXRoX3RoaXMpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRo
X3RoaXMpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CitW
QUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9nZXRfcHJvdG90eXBlX29mKTsKK1ZBTElEX0pJVF9U
QVJHRVQoc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOworVkFMSURfSklUX1RBUkdFVChz
bG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOworVkFMSURfSklUX1RBUkdFVChzbG93X3Bh
dGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOworVkFMSURfSklUX1RBUkdFVChzbG93X3BhdGhfZGVm
aW5lX2FjY2Vzc29yX3Byb3BlcnR5KTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRoX3Rocm93
X3N0YXRpY19lcnJvcik7CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9uZXdfcHJvbWlzZSk7
CitWQUxJRF9KSVRfVEFSR0VUKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yKTsKK1ZBTElEX0pJVF9U
QVJHRVQoc2xvd19wYXRoX25ld19hcnJheV93aXRoX3NwcmVhZCk7CitWQUxJRF9KSVRfVEFSR0VU
KHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKK1ZBTElEX0pJVF9UQVJHRVQoc2xvd19wYXRo
X3NwcmVhZCk7CitWQUxJRF9KSVRfVEFSR0VUKGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93
KTsKK1ZBTElEX0pJVF9UQVJHRVQoaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpOworVkFM
SURfSklUX1RBUkdFVChpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMik7CitWQUxJRF9KSVRf
VEFSR0VUKGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93KTsKK1ZBTElEX0pJVF9UQVJHRVQo
aXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpOworVkFMSURfSklUX1RBUkdFVChpdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUzMik7CisKKwogI2RlZmluZSBCRUdJTl9OT19TRVRfUEMoKSBc
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOyBcCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCk7IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDcgKzIxNSw2IEBA
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2MKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50c19idXR0ZXJmbHkpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2VudGVyKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0
X2NhbGxlZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja190ZHopOwpAQCAtMjc3LDcgKzI3Niw2IEBAIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdW5yZWFjaGEKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfaXNfdmFyX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVz
b2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcHJvbWlzZSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9nZW5lcmF0b3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvbnNvbGVPYmplY3QuaCIKIAog
I2luY2x1ZGUgIkNvbnNvbGVDbGllbnQuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJTY3JpcHRBcmd1bWVudHMuaCIKICNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCkBAIC00NywzMiArNDgsMzIgQEAgc3Rh
dGljIFN0cmluZyB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKAogCiBTVEFUSUNfQVNTRVJUX0lT
X1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQ29uc29sZU9iamVjdCk7CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNEZWJ1ZyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY0Vycm9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jTG9nKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zb2xlUHJvdG9GdW5jSW5mbyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY1dhcm4oSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0Rp
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0RpclhNTChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3Rv
RnVuY1RhYmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVHJhY2UoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNv
bGVQcm90b0Z1bmNBc3NlcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNDb3VudChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc29sZVByb3RvRnVuY0NvdW50UmVzZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNQ
cm9maWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jUHJvZmlsZUVuZChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c29sZVByb3RvRnVuY1Rha2VIZWFwU25hcHNob3QoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNU
aW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jVGltZUxvZyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVBy
b3RvRnVuY1RpbWVFbmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNUaW1lU3RhbXAoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnNvbGVQcm90b0Z1bmNHcm91cChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc29sZVByb3RvRnVuY0dyb3Vw
Q29sbGFwc2VkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zb2xlUHJvdG9GdW5jR3JvdXBFbmQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnNvbGVQcm90b0Z1bmNSZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNSZWNvcmRFbmQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnNvbGVQcm90b0Z1bmNTY3JlZW5zaG90KEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25z
b2xlUHJvdG9GdW5jRGVidWcsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zb2xlUHJvdG9GdW5jRXJyb3Is
IEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFM
SURfSlNDX0hPU1RfQ0FMTChjb25zb2xlUHJvdG9GdW5jTG9nLCBKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29u
c29sZVByb3RvRnVuY0luZm8sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zb2xlUHJvdG9GdW5jV2Fybiwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKGNvbnNvbGVQcm90b0Z1bmNDbGVhciwgSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNv
bnNvbGVQcm90b0Z1bmNEaXIsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zb2xlUHJvdG9GdW5jRGlyWE1M
LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZB
TElEX0pTQ19IT1NUX0NBTEwoY29uc29sZVByb3RvRnVuY1RhYmxlLCBKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwo
Y29uc29sZVByb3RvRnVuY1RyYWNlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc29sZVByb3RvRnVuY0Fz
c2VydCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnNvbGVQcm90b0Z1bmNDb3VudCwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKGNvbnNvbGVQcm90b0Z1bmNDb3VudFJlc2V0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc29sZVBy
b3RvRnVuY1Byb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zb2xlUHJvdG9GdW5jUHJvZmlsZUVu
ZCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBW
QUxJRF9KU0NfSE9TVF9DQUxMKGNvbnNvbGVQcm90b0Z1bmNUYWtlSGVhcFNuYXBzaG90LCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pT
Q19IT1NUX0NBTEwoY29uc29sZVByb3RvRnVuY1RpbWUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zb2xl
UHJvdG9GdW5jVGltZUxvZywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnNvbGVQcm90b0Z1bmNUaW1lRW5k
LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZB
TElEX0pTQ19IT1NUX0NBTEwoY29uc29sZVByb3RvRnVuY1RpbWVTdGFtcCwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKGNvbnNvbGVQcm90b0Z1bmNHcm91cCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnNvbGVQcm90b0Z1
bmNHcm91cENvbGxhcHNlZCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnNvbGVQcm90b0Z1bmNHcm91cEVu
ZCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBW
QUxJRF9KU0NfSE9TVF9DQUxMKGNvbnNvbGVQcm90b0Z1bmNSZWNvcmQsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FM
TChjb25zb2xlUHJvdG9GdW5jUmVjb3JkRW5kLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc29sZVByb3Rv
RnVuY1NjcmVlbnNob3QsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENs
YXNzSW5mbyBDb25zb2xlT2JqZWN0OjpzX2luZm8gPSB7ICJjb25zb2xlIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShDb25zb2xlT2JqZWN0KSB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE0ICsyNSwx
NSBAQAogI2luY2x1ZGUgIkRhdGVDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNl
LmgiCiAjaW5jbHVkZSAiRGF0ZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBhcnNl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVVVEMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZU5vdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRlUGFyc2UsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRhdGVV
VEMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKGRhdGVOb3csIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0K
IApAQCAtNTIsOCArNTMsOCBAQCBjb25zdCBDbGFzc0luZm8gRGF0ZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gCiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShEYXRlQ29uc3Ry
dWN0b3IpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRGF0ZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2Fs
bERhdGUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zdHJ1Y3RXaXRoRGF0ZUNvbnN0cnVjdG9yLCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBEYXRlQ29uc3RydWN0b3I6OkRhdGVDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlv
bih2bSwgc3RydWN0dXJlLCBjYWxsRGF0ZSwgY29uc3RydWN0V2l0aERhdGVDb25zdHJ1Y3RvcikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkRhdGVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiSW50ZWdy
aXR5SW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlND
QnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0
aC5oIgpAQCAtMzgsNDcgKzM5LDQ5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXREYXkoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRIb3Vy
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0TWlsbGlTZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51
dGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNb250aChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZzZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Rh
dGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RheShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRnVsbFll
YXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaWxs
aXNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dl
dFVUQ01vbnRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRZZWFyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXREYXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRGdWxsWWVh
cihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jU2V0SG91cnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldE1pbGxpU2Vjb25k
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jU2V0TWludXRlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0TW9udGgoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldFNlY29uZHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFRpbWUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnVuY1NldFVUQ0RhdGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1NldFVUQ0Z1bGxZZWFyKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRVVENIb3VycyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VVRDTWlsbGlzZWNvbmRzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNTZXRVVENNaW51dGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRVVENNb250aChK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jU2V0VVRDU2Vjb25kcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJv
bChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jVG9VVENTdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNUb0pTT04oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0ZVByb3RvRnVuY0dldERhdGUsIEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKGRhdGVQcm90b0Z1bmNHZXREYXksIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRhdGVQcm90b0Z1bmNHZXRGdWxsWWVh
ciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pT
Q19IT1NUX0NBTEwoZGF0ZVByb3RvRnVuY0dldEhvdXJzLCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRlUHJvdG9GdW5j
R2V0TWlsbGlTZWNvbmRzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRlUHJvdG9GdW5jR2V0TWludXRlcywgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NB
TEwoZGF0ZVByb3RvRnVuY0dldE1vbnRoLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRlUHJvdG9GdW5jR2V0U2Vjb25k
cywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pT
Q19IT1NUX0NBTEwoZGF0ZVByb3RvRnVuY0dldFRpbWV6b25lT2Zmc2V0LCBKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRl
UHJvdG9GdW5jR2V0VVRDRGF0ZSwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0ZVByb3RvRnVuY0dldFVUQ0RheSwgSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NU
X0NBTEwoZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyLCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRlUHJvdG9GdW5j
R2V0VVRDSG91cnMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMsIEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9T
VF9DQUxMKGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzLCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRlUHJvdG9GdW5j
R2V0VVRDTW9udGgsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzLCBKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FM
TChkYXRlUHJvdG9GdW5jR2V0WWVhciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0ZVByb3RvRnVuY1NldERhdGUsIEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9T
VF9DQUxMKGRhdGVQcm90b0Z1bmNTZXRGdWxsWWVhciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0ZVByb3RvRnVuY1Nl
dEhvdXJzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFM
SURfSlNDX0hPU1RfQ0FMTChkYXRlUHJvdG9GdW5jU2V0TWlsbGlTZWNvbmRzLCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChk
YXRlUHJvdG9GdW5jU2V0TWludXRlcywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0ZVByb3RvRnVuY1NldE1vbnRoLCBK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hP
U1RfQ0FMTChkYXRlUHJvdG9GdW5jU2V0U2Vjb25kcywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0ZVByb3RvRnVuY1Nl
dFRpbWUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKGRhdGVQcm90b0Z1bmNTZXRVVENEYXRlLCBKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRlUHJv
dG9GdW5jU2V0VVRDRnVsbFllYXIsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRhdGVQcm90b0Z1bmNTZXRVVENIb3Vycywg
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19I
T1NUX0NBTEwoZGF0ZVByb3RvRnVuY1NldFVUQ01pbGxpc2Vjb25kcywgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0ZVBy
b3RvRnVuY1NldFVUQ01pbnV0ZXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRhdGVQcm90b0Z1bmNTZXRVVENNb250aCwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19I
T1NUX0NBTEwoZGF0ZVByb3RvRnVuY1NldFVUQ1NlY29uZHMsIEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRhdGVQcm90b0Z1
bmNTZXRZZWFyLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUg
VkFMSURfSlNDX0hPU1RfQ0FMTChkYXRlUHJvdG9GdW5jVG9EYXRlU3RyaW5nLCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChk
YXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRhdGVQcm90b0Z1bmNUb1N0
cmluZywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElE
X0pTQ19IT1NUX0NBTEwoZGF0ZVByb3RvRnVuY1RvVGltZVN0cmluZywgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0ZVBy
b3RvRnVuY1RvVVRDU3RyaW5nLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcsIEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9T
VF9DQUxMKGRhdGVQcm90b0Z1bmNUb0pTT04sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CisKK1ZBTElEX0pJVF9UQVJHRVQoZGF0ZVByb3RvRnVuY0dldFRpbWUpOwogCiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUg
IkVycm9yQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMzAsOCArMzEsOCBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoCiAKIGNvbnN0IENsYXNzSW5mbyBFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoRXJyb3JDb25zdHJ1Y3RvcikgfTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbEVycm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEVy
cm9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxFcnJvckNvbnN0cnVjdG9yLCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pT
Q19IT1NUX0NBTEwoY29uc3RydWN0RXJyb3JDb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogRXJyb3JDb25zdHJ1Y3Rvcjo6RXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0
dXJlLCBjYWxsRXJyb3JDb25zdHJ1Y3RvciwgY29uc3RydWN0RXJyb3JDb25zdHJ1Y3RvcikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShFcnJvclBy
b3RvdHlwZUJhc2UpOwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEVy
cm9yUHJvdG90eXBlKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJy
b3JQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZXJyb3JQcm90b0Z1bmNUb1N0cmlu
ZywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1
ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JP
cGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGaW5hbGl6YXRpb25SZWdpc3RyeS5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCkBAIC00NSw4ICs0Niw4IEBAIHZvaWQgRmluYWxpemF0aW9uUmVn
aXN0cnlDb25zdHJ1Y3Rvcjo6ZmkKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RGaW5hbGl6YXRp
b25SZWdpc3RyeShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5LCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pT
Q19IT1NUX0NBTEwoY29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnksIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3I6OkZpbmFs
aXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbEZpbmFsaXphdGlvblJlZ2lzdHJ5LCBjb25z
dHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmgiCiAK
ICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRmluYWxpemF0aW9uUmVnaXN0cnkuaCIKIApA
QCAtMzQsOCArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEZpbmFs
aXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJGaW5hbGl6YXRpb25SZWdpc3Ry
eSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
RmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5yZWdpc3RlcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NU
X0NBTEwocHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlSZWdpc3RlciwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5VW5yZWdpc3RlciwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBGaW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMyw2ICsyMyw3
IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Q
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQXN5
bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM3LDYgKzM4LDkgQEAgU1RBVElDX0FTU0VSVF9JU19U
UklWSUFMTFlfREVTVFJVQ1RJQkxFKAogCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CiAKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdFdpdGhGdW5jdGlv
bkNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbEZ1bmN0aW9uQ29uc3RydWN0b3IsIEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIEFyZ0xpc3QgYXJn
cyhjYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTMyLDcgKzMzLDggQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKAogCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShGdW5jdGlvblByb3RvdHlwZSkgfTsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NB
TEwoY2FsbEZ1bmN0aW9uUHJvdG90eXBlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZnVuY3Rpb25Qcm90b0Z1
bmNUb1N0cmluZywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogLy8gaHR0cHM6Ly90
YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1mdW5jdGlvbi1wcm90b3R5cGUt
b2JqZWN0CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsRnVuY3Rpb25Q
cm90b3R5cGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjgsNiArMjksNyBAQAogCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSklUVmFsaWRU
YXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
MzYsNiArMzgsOSBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoCiAK
IGNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJHZW5lcmF0b3JGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKIAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zdHJ1Y3RHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBBcmdMaXN0IGFyZ3MoY2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAy
Njc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkluaXRp
YWxpemVUaHJlYWRpbmcuaCIKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNp
bmNsdWRlICJKSVRWYWxpZFRhcmdldExpc3QuaCIKICNpbmNsdWRlICJKU0NDb25maWcuaCIKICNp
bmNsdWRlICJKU0NQdHJUYWcuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKQEAgLTc3LDYgKzc4
LDEwIEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgICAgICAgICBlbmFibGVTaWdpbGxDcmFzaEFu
YWx5emVyKCk7CiAKICAgICAgICAgTExJbnQ6OmluaXRpYWxpemUoKTsKKyNpZiBFTkFCTEUoSklU
X0NBR0UpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIHBvcHVs
YXRlSklUVmFsaWRUYXJnZXRMaXN0KCk7CisjZW5kaWYKICAgICAgICAgRGlzYWxsb3dHQzo6aW5p
dGlhbGl6ZSgpOwogCiAgICAgICAgIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDExICsyNywxMiBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5oIgogCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uT2JqZWN0TG9nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdExvZywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDEyIEBAIEludGVybmFs
RnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oVk0mIHYKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKG1fZnVuY3Rpb25Gb3JDYWxsLCAiW1tDYWxsXV0gbXVzdCBiZSBpbXBsZW1lbnRlZCIpOwog
ICAgIEFTU0VSVChtX2Z1bmN0aW9uRm9yQ29uc3RydWN0KTsKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7CisgICAgICAgIG1fZnVuY3Rpb25Gb3JDYWxs
VHJhbXBvbGluZSA9IFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uKHZtLm5hdGl2ZVRyYW1wb2xpbmVGb3Io
bV9mdW5jdGlvbkZvckNhbGwpLmV4ZWN1dGFibGVBZGRyZXNzPGludHB0cl90PigpKTsKKyAgICAg
ICAgbV9mdW5jdGlvbkZvckNvbnN0cnVjdFRyYW1wb2xpbmUgPSAgVGFnZ2VkTmF0aXZlRnVuY3Rp
b24odm0ubmF0aXZlVHJhbXBvbGluZUZvcihtX2Z1bmN0aW9uRm9yQ29uc3RydWN0KS5leGVjdXRh
YmxlQWRkcmVzczxpbnRwdHJfdD4oKSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgSW50ZXJu
YWxGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgbmFtZSwgUHJvcGVydHlBZGRpdGlvbk1vZGUgbmFtZUFkZGl0aW9uTW9kZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9u
LmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGVybmFsRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMjAgKzYwLDE5IEBAIHB1Ymxp
YzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdWJjbGFz
c1N0cnVjdHVyZShKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBuZXdUYXJnZXQsIFN0cnVjdHVy
ZSopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBJbnRlcm5hbEZ1bmN0aW9uKiBjcmVh
dGVGdW5jdGlvblRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVuY3Rpb24pOwog
Ci0gICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb25Gb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOYXRpdmVGdW5j
dGlvbkZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgeworI2lmIEVOQUJMRShK
SVRfQ0FHRSkKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCi0gICAgICAgICAgICBy
ZXR1cm4gbV9mdW5jdGlvbkZvckNhbGw7CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEludGVybmFsRnVuY3Rpb24sIG1fZnVuY3Rpb25Gb3JDYWxsVHJhbXBvbGluZSk7CiAgICAg
ICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwotICAgICAgICByZXR1cm4gbV9m
dW5jdGlvbkZvckNvbnN0cnVjdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mTmF0aXZlRnVuY3Rpb25Gb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQotICAgIHsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnRlcm5hbEZ1bmN0aW9uLCBtX2Z1bmN0
aW9uRm9yQ29uc3RydWN0VHJhbXBvbGluZSk7CisjZWxzZQogICAgICAgICBpZiAoa2luZCA9PSBD
b2RlRm9yQ2FsbCkKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSW50ZXJuYWxG
dW5jdGlvbiwgbV9mdW5jdGlvbkZvckNhbGwpOwogICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0KTsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihJbnRlcm5hbEZ1
bmN0aW9uLCBtX2Z1bmN0aW9uRm9yQ29uc3RydWN0KTsKKyNlbmRpZgogICAgIH0KIAogICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxPYmplY3QoKQpAQCAtOTQsNiArOTMsMTAgQEAg
cHJvdGVjdGVkOgogCiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9mdW5jdGlvbkZvckNhbGw7
CiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9mdW5jdGlvbkZvckNvbnN0cnVjdDsKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9mdW5jdGlvbkZvckNh
bGxUcmFtcG9saW5lOworICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RUcmFtcG9saW5lOworI2VuZGlmCiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX29y
aWdpbmFsTmFtZTsKICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2Jq
ZWN0OwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
ckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiSW50bENvbGxhdG9y
LmgiCiAjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bE9i
amVjdC5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKEludGxDb2xsYXRvckNvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yQ29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9j
YWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgVkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0
ZWRMb2NhbGVzT2YsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNDUs
OCArNDYsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsCiAKIG5h
bWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SW50bENvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsQ29sbGF0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKGNhbGxJbnRsQ29sbGF0b3IsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zdHJ1Y3RJbnRsQ29sbGF0
b3IsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIGNvbnN0IENsYXNzSW5mbyBJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5j
dGlvbjo6c19pbmZvLCAmY29sbGF0b3JDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxDb2xsYXRvckNvbnN0cnVjdG9yKSB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdv
bmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
MTMgKzI4LDE1IEBACiAjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCiAKICNpbmNs
dWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xs
YXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvclByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKEludGxDb2xsYXRvckZ1bmNDb21w
YXJlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKEludGxDb2xsYXRvclByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMs
IEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldh
Z29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQu
aCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJ
bnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19U
UklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKTsKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApAQCAtNjQsOCArNjUsOCBAQCBTdHJ1Y3R1cmUqIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50
bERhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsSW50bERhdGVUaW1lRm9ybWF0LCBK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElE
X0pTQ19IT1NUX0NBTEwoY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0LCBKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogCiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bERh
dGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbEludGxEYXRlVGltZUZvcm1h
dCwgY29uc3RydWN0SW50bERhdGVUaW1lRm9ybWF0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlA
dmFud2Fnb25lci5mYW1pbHkpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMwLDE2ICszMCwxOCBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUg
IkRhdGVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdElubGluZXMu
aCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1l
Rm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bERh
dGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlLCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvclN1cHBvcnRlZExv
Y2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yU3VwcG9y
dGVkTG9jYWxlc09mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTYy
LDggKzYyLDggQEAgU3RydWN0dXJlKiBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OgogICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9
CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsRGlzcGxheU5h
bWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChj
YWxsSW50bERpc3BsYXlOYW1lcywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdEludGxEaXNwbGF5
TmFtZXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEludGxEaXNwbGF5TmFtZXND
b25zdHJ1Y3Rvcjo6SW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxJbnRsRGlzcGxheU5h
bWVzLCBjb25zdHJ1Y3RJbnRsRGlzcGxheU5hbWVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcs
MTMgQEAKICNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAKICNpbmNsdWRl
ICJJbnRsRGlzcGxheU5hbWVzLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY09mKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19I
T1NUX0NBTEwoSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNPZiwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkludGxM
b2NhbGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSklU
VmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtNDgsOCArNTAsOCBAQCBTdHJ1Y3R1cmUqIEludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxM
b2NhbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxMb2NhbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxJ
bnRsTG9jYWxlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc3RydWN0SW50bExvY2FsZSwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogSW50bExvY2FsZUNvbnN0cnVjdG9yOjpJbnRsTG9jYWxl
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSwgY2FsbEludGxMb2NhbGUsIGNvbnN0cnVjdEludGxMb2NhbGUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywyMyArMjgsMjQgQEAK
ICNpbmNsdWRlICJJbnRsTG9jYWxlUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJJbnRsTG9jYWxl
LmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01heGltaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJv
dG90eXBlRnVuY01pbmltaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVBy
b3RvdHlwZUdldHRlckNhc2VGaXJzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNvbGxhdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZShK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0oSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJMYW5ndWFnZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
clNjcmlwdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19I
T1NUX0NBTEwoSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNYXhpbWl6ZSwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KEludGxMb2NhbGVQcm90b3R5cGVGdW5jTWluaW1pemUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsTG9j
YWxlUHJvdG90eXBlRnVuY1RvU3RyaW5nLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlckJhc2VOYW1lLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckNhbGVuZGFyLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNh
c2VGaXJzdCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRp
b24sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
VkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlLCBK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElE
X0pTQ19IT1NUX0NBTEwoSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMsIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hP
U1RfQ0FMTChJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtLCBKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19I
T1NUX0NBTEwoSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlLCBKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NB
TEwoSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjc0NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bE51bWJlckZv
cm1hdENvbnN0cnVjdG9yKTsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19I
T1NUX0NBTEwoSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNP
ZiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC02NCw4ICs2NCw4IEBA
IFN0cnVjdHVyZSogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjoKICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRl
cm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bE51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SW50bE51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbEludGxOdW1i
ZXJGb3JtYXQsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zdHJ1Y3RJbnRsTnVtYmVyRm9ybWF0LCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6
OkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsSW50bE51bWJlckZv
cm1hdCwgY29uc3RydWN0SW50bE51bWJlckZvcm1hdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndh
Z29uZXIuZmFtaWx5KQotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSwxNCArMjksMTYgQEAKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIklu
dGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNp
bmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
TnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsTnVt
YmVyRm9ybWF0RnVuY0Zvcm1hdCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAko
cmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsT2JqZWN0KTsK
IAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaW50bE9iamVjdEZ1bmNHZXRD
YW5vbmljYWxMb2NhbGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChpbnRsT2JqZWN0RnVuY0dldENhbm9uaWNh
bExvY2FsZXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0YXRpYyBKU1ZhbHVl
IGNyZWF0ZUNvbGxhdG9yQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJJbnRsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IpOwogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvckZ1bmNT
dXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKEludGxQbHVyYWxSdWxlc0NvbnN0cnVj
dG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
IAogfQogCkBAIC02NCw4ICs2NSw4IEBAIFN0cnVjdHVyZSogSW50bFBsdXJhbFJ1bGVzQ29uc3Ry
dWN0b3I6OmMKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxs
SW50bFBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0Nf
SE9TVF9DQUxMKGNhbGxJbnRsUGx1cmFsUnVsZXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zdHJ1Y3RJ
bnRsUGx1cmFsUnVsZXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEludGxQbHVy
YWxSdWxlc0NvbnN0cnVjdG9yOjpJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3RvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJl
LCBjYWxsSW50bFBsdXJhbFJ1bGVzLCBjb25zdHJ1Y3RJbnRsUGx1cmFsUnVsZXMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25l
ciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDEyICsyOCwxMyBAQAogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5oIgogCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCisjaW5jbHVkZSAiSklUVmFsaWRU
YXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGVGdW5jU2VsZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jUmVzb2x2
ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2Vs
ZWN0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IFZBTElEX0pTQ19IT1NUX0NBTEwoSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJJbnRsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogI2luY2x1ZGUgIklu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdl
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIFNUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IpOwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlND
X0hPU1RfQ0FMTChJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVk
TG9jYWxlc09mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTYzLDgg
KzY1LDggQEAgU3RydWN0dXJlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydQogICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hP
U1RfQ0FMTChjYWxsSW50bFJlbGF0aXZlVGltZUZvcm1hdCwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0
cnVjdEludGxSZWxhdGl2ZVRpbWVGb3JtYXQsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUsIGNhbGxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LCBjb25zdHJ1Y3RJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5
ICszMSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZB
TElEX0pTQ19IT1NUX0NBTEwoSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3Jt
YXQsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
VkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zv
cm1hdFRvUGFydHMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJh
dG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjY3NDU0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMiBAQAogI2luY2x1ZGUgIklu
dGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkludGxTZWdtZW50SXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NB
TEwoSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCBKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlckNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDE0IEBACiAKICNpbmNs
dWRlICJJbnRsU2VnbWVudGVyLmgiCiAjaW5jbHVkZSAiSW50bFNlZ21lbnRlclByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJ
QkxFKEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxTZWdtZW50ZXJDb25zdHJ1Y3RvclN1cHBvcnRlZExvY2FsZXNPZihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElE
X0pTQ19IT1NUX0NBTEwoSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yU3VwcG9ydGVkTG9jYWxlc09m
LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTYyLDggKzYzLDggQEAg
U3RydWN0dXJlKiBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3I6OmNyZQogICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVy
bmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsU2VnbWVudGVyKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RJbnRsU2VnbWVudGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsSW50bFNlZ21lbnRlciwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdEludGxTZWdtZW50ZXIsIEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6SW50bFNlZ21lbnRlckNv
bnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUsIGNhbGxJbnRsU2VnbWVudGVyLCBjb25zdHJ1Y3RJbnRsU2VnbWVudGVyKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21l
bnRlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNywxMiArMjcsMTMgQEAKICNpbmNsdWRlICJJbnRsU2VnbWVudGVyUHJvdG90eXBlLmgiCiAK
ICNpbmNsdWRlICJJbnRsU2VnbWVudGVyLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1NlZ21l
bnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURf
SlNDX0hPU1RfQ0FMTChJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1NlZ21lbnQsIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hP
U1RfQ0FMTChJbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
c1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMyBAQAogI2luY2x1
ZGUgIkludGxTZWdtZW50c1Byb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgi
CisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsU2VnbWVudHNQcm90b3R5cGVGdW5jQ29udGFpbmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFNlZ21lbnRz
UHJvdG90eXBlRnVuY0l0ZXJhdG9yKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChJbnRsU2VnbWVudHNQcm90b3R5
cGVGdW5jQ29udGFpbmluZywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKEludGxTZWdtZW50c1Byb3RvdHlwZUZ1
bmNJdGVyYXRvciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjcsMTQgKzI3LDE1IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
LmgiCiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdl
dC5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVy
Vmlldy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyRnVuY0lzVmlldyhK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY2FsbEFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChhcnJheUJ1ZmZlckZ1bmNJ
c1ZpZXcsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsQXJyYXlCdWZmZXIsIEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIHRlbXBsYXRlPD4KIGNvbnN0IENsYXNzSW5mbyBKU0FycmF5QnVmZmVy
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAy
Njc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCBjbGFzcyBHZXR0ZXJT
ZXR0ZXI7CiAKIHRlbXBsYXRlPEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGU+CiBj
bGFzcyBKU0dlbmVyaWNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworICAgIGZyaWVuZCB2b2lkIHBvcHVsYXRlSklUVmFsaWRUYXJnZXRMaXN0
KCk7CisKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsMTEgKzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlclByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNs
dWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoYXJy
YXlCdWZmZXJQcm90b0Z1bmNTbGljZSwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGFycmF5QnVmZmVyUHJvdG9H
ZXR0ZXJGdW5jQnl0ZUxlbmd0aCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHNoYXJlZEFycmF5QnVmZmVyUHJv
dG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNT
bGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI2
NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMCArMjcsMTggQEAKICNpbmNs
dWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAorVkFMSURfSklUX1RBUkdFVChib3VuZFRoaXNOb0FyZ3NG
dW5jdGlvbkNhbGwpOworVkFMSURfSklUX1RBUkdFVChib3VuZEZ1bmN0aW9uQ2FsbCk7CitWQUxJ
RF9KSVRfVEFSR0VUKGJvdW5kVGhpc05vQXJnc0Z1bmN0aW9uQ29uc3RydWN0KTsKK1ZBTElEX0pJ
VF9UQVJHRVQoYm91bmRGdW5jdGlvbkNvbnN0cnVjdCk7CitWQUxJRF9KSVRfVEFSR0VUKGlzQm91
bmRGdW5jdGlvbik7CitWQUxJRF9KSVRfVEFSR0VUKGhhc0luc3RhbmNlQm91bmRGdW5jdGlvbik7
CisKIGNvbnN0IENsYXNzSW5mbyBKU0JvdW5kRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9u
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U0JvdW5kRnVuY3Rpb24pIH07CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRU
aGlzTm9BcmdzRnVuY3Rpb25DYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
Q29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
Q29uZmlnLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXRMaXN0LmgiCiAjaW5jbHVkZSAiT3Bj
b2RlLmgiCiAjaW5jbHVkZSAiT3B0aW9uc0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvV1RGQ29uZmln
Lmg+CkBAIC04Miw2ICs4MywxOSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICBKSVRXcml0ZVNlcGFy
YXRlSGVhcHNGdW5jdGlvbiBqaXRXcml0ZVNlcGFyYXRlSGVhcHM7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShKSVRfQ0FHRSkKKyAgICBzdHJ1Y3QgeworICAgICAgICBzaXplX3QgbWFzazsKKyAgICAg
ICAgdW5zaWduZWQgbG9nMlNpemU7CisgICAgICAgIHVuc2lnbmVkIHNoaWZ0QW1vdW50OworICAg
IH0gaml0Q2FnZVBhcmFtczsKKyAgICBzdHJ1Y3QgeworICAgICAgICBpbnQgbWFza0luc247Cisg
ICAgICAgIGludCBqaXRCYXNlSW5zbjsKKyAgICAgICAgaW50IG1lcmdlSW5zbjsKKyAgICB9IGpp
dENhZ2VUZW1wbGF0ZTsKKyAgICBKSVRWYWxpZFRhcmdldExpc3Qgaml0VGFyZ2V0TGlzdDsKKyNl
bmRpZgogICAgIE9wdGlvbnNTdG9yYWdlIG9wdGlvbnM7CiAKICAgICB2b2lkICgqc2hlbGxUaW1l
b3V0Q2hlY2tDYWxsYmFjaykoVk0mKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmgJKHJl
dmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIEN1c3RvbUdldHRlclNldHRlcjsKIAogY2xhc3MgSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBm
cmllbmQgdm9pZCBwb3B1bGF0ZUpJVFZhbGlkVGFyZ2V0TGlzdCgpOworCiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNjc0
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJKU0RhdGFWaWV3UHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJKSVRWYWxp
ZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNEYXRhVmlldy5oIgpAQCAtNTksMjUgKzYwLDI1IEBAIG5hbWVz
cGFjZSBKU0MgewogQGVuZAogKi8KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRh
Vmlld1Byb3RvRnVuY0dldEludDgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQxNihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRh
Vmlld1Byb3RvRnVuY0dldEludDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDgoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MzIoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0YVZpZXdQcm90b0Z1bmNHZXRGbG9hdDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2
NChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEludDgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQx
NihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRhVmlld1Byb3RvRnVuY1NldEludDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5jU2V0VWlu
dDgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MTYoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRV
aW50MzIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0YVZpZXdQcm90b0Z1bmNTZXRGbG9hdDMyKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9GdW5j
U2V0RmxvYXQ2NChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9H
ZXR0ZXJCeXRlTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KGRhdGFWaWV3UHJvdG9GdW5jR2V0SW50OCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0YVZpZXdQcm90b0Z1bmNHZXRJ
bnQxNiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElE
X0pTQ19IT1NUX0NBTEwoZGF0YVZpZXdQcm90b0Z1bmNHZXRJbnQzMiwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0YVZp
ZXdQcm90b0Z1bmNHZXRVaW50OCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0YVZpZXdQcm90b0Z1bmNHZXRVaW50MTYs
IEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0Nf
SE9TVF9DQUxMKGRhdGFWaWV3UHJvdG9GdW5jR2V0VWludDMyLCBKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRhVmlld1By
b3RvRnVuY0dldEZsb2F0MzIsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRhdGFWaWV3UHJvdG9GdW5jR2V0RmxvYXQ2NCwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19I
T1NUX0NBTEwoZGF0YVZpZXdQcm90b0Z1bmNTZXRJbnQ4LCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRhVmlld1Byb3Rv
RnVuY1NldEludDE2LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRhVmlld1Byb3RvRnVuY1NldEludDMyLCBKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FM
TChkYXRhVmlld1Byb3RvRnVuY1NldFVpbnQ4LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRhVmlld1Byb3RvRnVuY1Nl
dFVpbnQxNiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZB
TElEX0pTQ19IT1NUX0NBTEwoZGF0YVZpZXdQcm90b0Z1bmNTZXRVaW50MzIsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGRh
dGFWaWV3UHJvdG9GdW5jU2V0RmxvYXQzMiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0YVZpZXdQcm90b0Z1bmNTZXRG
bG9hdDY0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFM
SURfSlNDX0hPU1RfQ0FMTChkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyLCBKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkYXRh
Vmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGF0YVZpZXdQcm90b0dldHRlckJ5
dGVPZmZzZXQsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI2
NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JQcm90b3R5
cGUuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgpAQCAtNDUsNiArNDYsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorVkFMSURfSklUX1RB
UkdFVChjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CisKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNz
IEpTRnVuY3Rpb24gOiBwdWJsaWMgSlNDYWxsZWUgewogICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJ
VENvbXBpbGVyOwogICAgIGZyaWVuZCBjbGFzcyBWTTsKICAgICBmcmllbmQgY2xhc3MgSW50ZXJu
YWxGdW5jdGlvbjsKKyAgICBmcmllbmQgdm9pZCBwb3B1bGF0ZUpJVFZhbGlkVGFyZ2V0TGlzdCgp
OwogCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgcmFyZURhdGFUYWcg
PSAweDE7CkBAIC0yMTcsOCArMjE4LDggQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJndW1l
bnRzR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7
Ci0gICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxlckdldHRlcihKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFyZ3VtZW50c0dldHRlcihKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxlckdldHRlcihKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpOwogCiAgICAgdWludHB0cl90IG1fZXhlY3V0YWJsZU9yUmFyZURhdGE7CiB9OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjY3NDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBjbGFzcyBKU0dlbmVyaWNU
eXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
eworICAgIGZyaWVuZCB2b2lkIHBvcHVsYXRlSklUVmFsaWRUYXJnZXRMaXN0KCk7CisKIHB1Ymxp
YzoKICAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKIApAQCAtNDQsOSArNDYsMTIg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAKLXByaXZhdGU6Citwcm90ZWN0
ZWQ6CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVy
ZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0KiBwcm90b3R5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBw
cml2YXRlQWxsb2NhdG9yKTsKKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
Y2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE0ICszOCwxNCBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZp
ZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1
ZSBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcjxWaWV3Q2xhc3M+OjpKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUsIGNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXc8Vmlld0NsYXNzPiwgY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PFZpZXdDbGFzcz4pCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUs
IGNhbGxHZW5lcmljVHlwZWRBcnJheVZpZXcsIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
dykKIHsKIH0KIApAQCAtMjA2LDcgKzIwNiw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0
R2VuZXJpY1R5cGVkQXIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8
Vmlld0NsYXNzPjo6Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RHZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8Vmlld0NsYXNzPjo6Y2Fs
bEdlbmVyaWNUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBpbmxpbmUgdW5z
aWduZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZp
ZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU2V0KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTZXQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhp
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdp
dGhpbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApA
QCAtMTc5LDcgKzE3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5j
b2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTIyNCw3ICsy
MjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApAQCAtMjYxLDcgKzI2MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNKb2luKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNKb2luKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCkBAIC0zMDAsNyArMzAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xh
c3RJbmRleE9mKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNMYXN0SW5kZXhPZihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIApAQCAtMzUwLDcgKzM1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNC
dWZmZXIoVk0mLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK0VuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVu
Y0J1ZmZlcihWTSYsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIC8vIDIyLjIuMy4zCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFZpZXdDbGFzcyo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwpAQCAtMzU5LDcgKzM1
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoVk0mLCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICAvLyAyMi4yLjMuMTcKICAgICBWaWV3Q2xhc3MqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CkBA
IC0zNjgsNyArMzY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlw
ZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKQorRW5jb2RlZEpTVmFs
dWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgLy8gMjIuMi4zLjIK
ICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CkBAIC0zNzcsNyArMzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY0J5dGVPZmZzZXQoVk0mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSogY2FsbEZy
YW1lKQorRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5j
Qnl0ZU9mZnNldChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CiAgICAgLy8gMjIuMi4zLjMKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmll
d0NsYXNzKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CkBAIC0zODYsNyArMzg2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKIC8vICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtNDAzLDcgKzQwMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK0VuY29k
ZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogLy8g
ICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC00MTksNyArNDE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY1NsaWNlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCitFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNTbGljZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IApAQCAtNTA4LDcgKzUwOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJp
Y1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3Jl
YXRlKFZNJnZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK0VuY29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3Vi
YXJyYXlDcmVhdGUoVk0mdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBA
CiAjaW5jbHVkZSAiSW50bFNlZ21lbnRzLmgiCiAjaW5jbHVkZSAiSW50bFNlZ21lbnRzUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKSVRWYWxp
ZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKQEAg
LTI0Miw2ICsyNDMsMjAgQEAgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRShDSEVDS19GRUFU
VQogRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ0hFQ0tfRkVBVFVSRV9G
TEFHX1RZUEUpCiBGT1JfRUFDSF9MQVpZX0JVSUxUSU5fVFlQRShDSEVDS19GRUFUVVJFX0ZMQUdf
VFlQRSkKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWFrZUJv
dW5kRnVuY3Rpb24sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChoYXNPd25MZW5ndGhQcm9wZXJ0eSwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoYXNzZXJ0Q2FsbCwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGVuYWJsZVNhbXBsaW5nUHJv
ZmlsZXIsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgVkFMSURfSlNDX0hPU1RfQ0FMTChkaXNhYmxlU2FtcGxpbmdQcm9maWxlciwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKKyNlbmRpZgorc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElE
X0pTQ19IT1NUX0NBTEwoZW5hYmxlU3VwZXJTYW1wbGVyLCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoZGlzYWJs
ZVN1cGVyU2FtcGxlciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGVucXVldWVKb2IsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FM
TChjcmVhdGVQcml2YXRlU3ltYm9sLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqKTsKKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlUHJveHlQcm9wZXJ0eShWTSYgdm0sIEpT
T2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbCA9IGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lv
biAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9v
LmNhKQogICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKgpAQCAtNDcsNiAr
NDcsMjkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1ZBTElEX0pJVF9UQVJHRVQoZ2xvYmFsRnVu
Y0V2YWwpOworVkFMSURfSklUX1RBUkdFVChnbG9iYWxGdW5jUGFyc2VJbnQpOworVkFMSURfSklU
X1RBUkdFVChnbG9iYWxGdW5jUGFyc2VGbG9hdCk7CitWQUxJRF9KSVRfVEFSR0VUKGdsb2JhbEZ1
bmNEZWNvZGVVUkkpOworVkFMSURfSklUX1RBUkdFVChnbG9iYWxGdW5jRGVjb2RlVVJJQ29tcG9u
ZW50KTsKK1ZBTElEX0pJVF9UQVJHRVQoZ2xvYmFsRnVuY0VuY29kZVVSSSk7CitWQUxJRF9KSVRf
VEFSR0VUKGdsb2JhbEZ1bmNFbmNvZGVVUklDb21wb25lbnQpOworVkFMSURfSklUX1RBUkdFVChn
bG9iYWxGdW5jRXNjYXBlKTsKK1ZBTElEX0pJVF9UQVJHRVQoZ2xvYmFsRnVuY1VuZXNjYXBlKTsK
K1ZBTElEX0pJVF9UQVJHRVQoZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yKTsKK1ZBTElEX0pJVF9U
QVJHRVQoZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKTsK
K1ZBTElEX0pJVF9UQVJHRVQoZ2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpOworVkFMSURfSklUX1RB
UkdFVChnbG9iYWxGdW5jUHJvdG9HZXR0ZXIpOworVkFMSURfSklUX1RBUkdFVChnbG9iYWxGdW5j
UHJvdG9TZXR0ZXIpOworVkFMSURfSklUX1RBUkdFVChnbG9iYWxGdW5jU2V0UHJvdG90eXBlRGly
ZWN0KTsKK1ZBTElEX0pJVF9UQVJHRVQoZ2xvYmFsRnVuY0hvc3RQcm9taXNlUmVqZWN0aW9uVHJh
Y2tlcik7CitWQUxJRF9KSVRfVEFSR0VUKGdsb2JhbEZ1bmNCdWlsdGluTG9nKTsKK1ZBTElEX0pJ
VF9UQVJHRVQoZ2xvYmFsRnVuY0J1aWx0aW5EZXNjcmliZSk7CitWQUxJRF9KSVRfVEFSR0VUKGds
b2JhbEZ1bmNJbXBvcnRNb2R1bGUpOworVkFMSURfSklUX1RBUkdFVChnbG9iYWxGdW5jUHJvcGVy
dHlJc0VudW1lcmFibGUpOworVkFMSURfSklUX1RBUkdFVChnbG9iYWxGdW5jT3duS2V5cyk7CitW
QUxJRF9KSVRfVEFSR0VUKGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk7CisKIGNvbnN0IEFTQ0lJ
TGl0ZXJhbCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IgeyAiT2JqZWN0
LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkIl9zIH07CiAK
IHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnNDb3VudD4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2NzQ1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2lu
Y2x1ZGUgIkNhdGNoU2NvcGUuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgogI2luY2x1
ZGUgIkpTTWFwLmgiCkBAIC00NCwxNCArNDUsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclBhcnNlTW9kdWxl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRNb2R1bGVzKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFyYXRpb25JbnN0
YW50aWF0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZXJSZXNvbHZlU3luYyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobW9kdWxl
TG9hZGVyUGFyc2VNb2R1bGUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChtb2R1bGVMb2FkZXJSZXF1ZXN0ZWRN
b2R1bGVzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobW9kdWxlTG9hZGVyRXZhbHVhdGUsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1Rf
Q0FMTChtb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24sIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hP
U1RfQ0FMTChtb2R1bGVMb2FkZXJSZXNvbHZlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobW9kdWxlTG9hZGVy
UmVzb2x2ZVN5bmMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChtb2R1bGVMb2FkZXJGZXRjaCwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9T
VF9DQUxMKG1vZHVsZUxvYWRlckdldE1vZHVsZU5hbWVzcGFjZU9iamVjdCwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjY3NDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogCisjaW5jbHVkZSAiSklUVmFsaWRU
YXJnZXQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNLmgi
CiAKQEAgLTMzLDYgKzM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBK
U05hdGl2ZVN0ZEZ1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNOYXRpdmVTdGRGdW5jdGlv
bikgfTsKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocnVuU3Rk
RnVuY3Rpb24sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKIEpTTmF0aXZlU3RkRnVu
Y3Rpb246OkpTTmF0aXZlU3RkRnVuY3Rpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgTmF0aXZlU3RkRnVuY3Rpb24mJiBmdW5jdGlvbikKICAgICA6IEJhc2Uodm0sIGV4ZWN1dGFi
bGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9mdW5jdGlvbihXVEZNb3ZlKGZ1
bmN0aW9uKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09OT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTT05P
YmplY3QpOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJz
ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChKU09OUHJvdG9GdW5j
UGFyc2UsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgVkFMSURfSlNDX0hPU1RfQ0FMTChKU09OUHJvdG9GdW5jU3RyaW5naWZ5LCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXBBbmFseXplci5o
IgogI2luY2x1ZGUgIkluZGV4aW5nSGVhZGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVFZhbGlk
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC03Miw2ICs3
Myw4IEBAIGNvbnN0IENsYXNzSW5mbyBKU09iamVjdDo6c19pbmZvID0geyAiT2IKIAogY29uc3Qg
Q2xhc3NJbmZvIEpTRmluYWxPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGaW5hbE9iamVjdCkg
fTsKIAorVkFMSURfSklUX1RBUkdFVChvYmplY3RQcml2YXRlRnVuY0luc3RhbmNlT2YpOworCiBz
dGF0aWMgaW5saW5lIHZvaWQgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RUeXBlZEFycmF5VmlldyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc3RydWN0VHlwZWRBcnJh
eVZpZXcsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIEpTVHlwZWRBcnJheVZpZXdD
b25zdHJ1Y3Rvcjo6SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNvbnN0cnVjdFR5cGVkQXJy
YXlWaWV3LCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgiCkBAIC02Miw2ICs2MywyOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0gd2hp
bGUgKGZhbHNlKQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCh0
eXBlZEFycmF5Vmlld1Byb3RvRnVuY1ZhbHVlcywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHR5cGVkQXJyYXlQ
cm90b1ZpZXdGdW5jRW50cmllcywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jS2V5cywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0LCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pT
Q19IT1NUX0NBTEwodHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluLCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NU
X0NBTEwodHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcywgSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCh0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0luZGV4T2YsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCh0eXBlZEFycmF5Vmlld1By
b3RvRnVuY0pvaW4sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCh0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVu
Y0J1ZmZlciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVu
Z3RoLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IFZBTElEX0pTQ19IT1NUX0NBTEwodHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVu
Z3RoLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IFZBTElEX0pTQ19IT1NUX0NBTEwodHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zm
c2V0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IFZBTElEX0pTQ19IT1NUX0NBTEwodHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlLCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pT
Q19IT1NUX0NBTEwodHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CisKK1ZBTElEX0pJVF9UQVJHRVQodHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY0lzVHlwZWRBcnJheVZpZXcpOworVkFMSURfSklUX1RBUkdFVCh0eXBlZEFycmF5Vmlld1By
aXZhdGVGdW5jU29ydCk7CitWQUxJRF9KSVRfVEFSR0VUKHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNMZW5ndGgpOworVkFMSURfSklUX1RBUkdFVCh0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jR2V0
T3JpZ2luYWxDb25zdHJ1Y3Rvcik7CitWQUxJRF9KSVRfVEFSR0VUKHR5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0lzVHlwZWRBcnJheVZpZXcoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjc0
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFwQ29uc3RydWN0
b3IuaCIKIAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIkpJVFZh
bGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgi
CiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCkBAIC0zNSw2ICszNiwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIE1hcENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoTWFwQ29uc3RydWN0b3IpIH07CiAKK1ZBTElEX0pJVF9UQVJHRVQobWFwUHJpdmF0ZUZ1bmNN
YXBCdWNrZXRIZWFkKTsKK1ZBTElEX0pJVF9UQVJHRVQobWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRO
ZXh0KTsKK1ZBTElEX0pJVF9UQVJHRVQobWFwUHJpdmF0ZUZ1bmNNYXBCdWNrZXRLZXkpOworVkFM
SURfSklUX1RBUkdFVChtYXBQcml2YXRlRnVuY01hcEJ1Y2tldFZhbHVlKTsKKwogdm9pZCBNYXBD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBNYXBQcm90b3R5cGUqIG1hcFByb3Rv
dHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAwLCAiTWFwIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVj
dHVyZVRyYW5zaXRpb24pOwpAQCAtNDIsOCArNDgsOCBAQCB2b2lkIE1hcENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgCiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU3lt
Ym9sLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RNYXAoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKGNhbGxNYXAsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zdHJ1Y3RNYXAsIEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIE1hcENvbnN0cnVjdG9yOjpNYXBDb25zdHJ1Y3Rv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
LCBjYWxsTWFwLCBjb25zdHJ1Y3RNYXApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJC
dWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3Iu
aCIKQEAgLTQzLDE2ICs0NCwxNiBAQCBjb25zdCBDbGFzc0luZm8gTWFwUHJvdG90eXBlOjpzX2lu
Zm8gPSB7CiBAZW5kCiAqLwogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXBQcm90b0Z1bmNDbGVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXBQcm90b0Z1bmNHZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0hhcyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3Rv
RnVuY0tleXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0VudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG1h
cFByb3RvRnVuY0NsZWFyLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWFwUHJvdG9GdW5jRGVsZXRlLCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pT
Q19IT1NUX0NBTEwobWFwUHJvdG9GdW5jR2V0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWFwUHJvdG9GdW5j
SGFzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IFZBTElEX0pTQ19IT1NUX0NBTEwobWFwUHJvdG9GdW5jU2V0LCBKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWFw
UHJvdG9GdW5jVmFsdWVzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWFwUHJvdG9GdW5jS2V5cywgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0Nf
SE9TVF9DQUxMKG1hcFByb3RvRnVuY0VudHJpZXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1Np
emUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBW
QUxJRF9KU0NfSE9TVF9DQUxMKG1hcFByb3RvRnVuY1NpemUsIEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAgICAgCiB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNywxMyBAQCB1c2luZyBFbmNvZGVkTWF0Y2hSZXN1bHQgPSB1aW50NjRfdDsKIHVz
aW5nIEVuY29kZWRNYXRjaFJlc3VsdCA9IE1hdGNoUmVzdWx0OwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoSklUX0NBR0UpCitzdHJ1Y3QgUE9ETWF0Y2hSZXN1bHQgeworICAgIHNpemVfdCBzdGFydDsK
KyAgICBzaXplX3QgZW5kOworfTsKKyNlbmRpZgorCiBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewogICAg
IE1hdGNoUmVzdWx0KCkKICAgICAgICAgOiBzdGFydChXVEY6Om5vdEZvdW5kKQpAQCAtNDQsNiAr
NTEsMTQgQEAgc3RydWN0IE1hdGNoUmVzdWx0IHsKICAgICB7CiAgICAgfQogICAgIAorI2lmIEVO
QUJMRShKSVRfQ0FHRSkKKyAgICBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0KFBPRE1hdGNoUmVz
dWx0IG90aGVyKQorICAgICAgICA6IHN0YXJ0KG90aGVyLnN0YXJ0KQorICAgICAgICAsIGVuZChv
dGhlci5lbmQpCisgICAgeworICAgIH0KKyNlbmRpZgorCiAgICAgQUxXQVlTX0lOTElORSBNYXRj
aFJlc3VsdChzaXplX3Qgc3RhcnQsIHNpemVfdCBlbmQpCiAgICAgICAgIDogc3RhcnQoc3RhcnQp
CiAgICAgICAgICwgZW5kKGVuZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGhDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hdGhDb21tb24uY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2
LDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlB1cmVOYU4uaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTWF0aFBvdyk7CitWQUxJRF9KSVRf
VEFSR0VUKG9wZXJhdGlvblRvSW50MzIpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Ub0lu
dDMyU2Vuc2libGVTbG93KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uTW9kKTsKKworbmFt
ZXNwYWNlIE1hdGggeworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Mb2cxcCk7Cit9CisKICNp
ZiBPUyhEQVJXSU4pICYmIENQVShBUk1fVEhVTUIyKQogCiAvLyBUaGUgZm9sbG93aW5nIGNvZGUg
aXMgdGFrZW4gZnJvbSBuZXRsaWIub3JnOgpAQCAtNDgyLDggKzQ5Miw3IEBAIGRvdWJsZSBqc1Jv
dW5kKGRvdWJsZSB2YWx1ZSkKICAgICByZXR1cm4gaW50ZWdlciAtIChpbnRlZ2VyIC0gMC41ID4g
dmFsdWUpOwogfQogCi0jaWYgQ0FMTElOR19DT05WRU5USU9OX0lTX1NURENBTEwgfHwgQ1BVKEFS
TV9USFVNQjIpCi1kb3VibGUganNNb2QoZG91YmxlIHgsIGRvdWJsZSB5KQorZG91YmxlIG9wZXJh
dGlvbk1vZChkb3VibGUgeCwgZG91YmxlIHkpCiB7CiAjaWYgSEFWRShBUk1fSURJVl9JTlNUUlVD
VElPTlMpCiAgICAgLy8gZm1vZCgpIGRvZXMgbm90IGhhdmUgZXhhY3QgcmVzdWx0cyBmb3IgaW50
ZWdlciBvbiBBUk12Ny4KQEAgLTUwNiwxMiArNTE1LDExIEBAIGRvdWJsZSBqc01vZChkb3VibGUg
eCwgZG91YmxlIHkpCiAjZW5kaWYKICAgICByZXR1cm4gZm1vZCh4LCB5KTsKIH0KLSNlbmRpZgog
fSAvLyBleHRlcm4gIkMiCiAKIG5hbWVzcGFjZSBNYXRoIHsKIAotZG91YmxlIEpJVF9PUEVSQVRJ
T04gbG9nMXAoZG91YmxlIHZhbHVlKQorZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTG9n
MXAoZG91YmxlIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAwLjApCiAgICAgICAgIHJldHVy
biB2YWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9u
LmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDExICsyMjQsNyBAQCBkb3VibGUgSklU
X09QRVJBVElPTiBqc1JvdW5kKGRvdWJsZSB2YWx1CiAKIC8vIE9uIFdpbmRvd3Mgd2UgbmVlZCB0
byB3cmFwIGZtb2Q7IG9uIG90aGVyIHBsYXRmb3JtcyB3ZSBjYW4gY2FsbCBpdCBkaXJlY3RseS4K
IC8vIE9uIEFSTXY3IHdlIGFzc2VydCB0aGF0IGFsbCBmdW5jdGlvbiBwb2ludGVycyBoYXZlIHRv
IGxvdyBiaXQgc2V0IChwb2ludCB0byB0aHVtYiBjb2RlKS4KLSNpZiBDQUxMSU5HX0NPTlZFTlRJ
T05fSVNfU1REQ0FMTCB8fCBDUFUoQVJNX1RIVU1CMikKLWRvdWJsZSBKSVRfT1BFUkFUSU9OIGpz
TW9kKGRvdWJsZSB4LCBkb3VibGUgeSkgUkVGRVJFTkNFRF9GUk9NX0FTTSBXVEZfSU5URVJOQUw7
Ci0jZWxzZQotI2RlZmluZSBqc01vZCBmbW9kCi0jZW5kaWYKK2RvdWJsZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk1vZChkb3VibGUgeCwgZG91YmxlIHkpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RG
X0lOVEVSTkFMOwogfQogCiBuYW1lc3BhY2UgTWF0aCB7CkBAIC0yNTIsNyArMjQ4LDcgQEAgdXNp
bmcgc3RkOjpjYnJ0OwogdXNpbmcgc3RkOjpleHA7CiB1c2luZyBzdGQ6OmV4cG0xOwogCi1kb3Vi
bGUgSklUX09QRVJBVElPTiBsb2cxcChkb3VibGUpIFdURl9JTlRFUk5BTDsKK2RvdWJsZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkxvZzFwKGRvdWJsZSkgV1RGX0lOVEVSTkFMOwogCiB9IC8vIG5h
bWVzcGFjZSBNYXRoCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzEs
MzggKzMxLDQxIEBAIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoTWF0aE9iamVjdCk7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY0FDb3MoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3NoKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNBU2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBU2luaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jQVRhbihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRo
UHJvdG9GdW5jQVRhbmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW4yKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDYnJ0
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNDZWlsKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDbHozMihKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9G
dW5jQ29zKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNDb3NoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNFeHAoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY0V4cG0xKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNGcm91bmQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0h5cG90
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNMb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzFwKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1
bmNMb2cxMChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTG9nMihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWF4KEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQ
cm90b0Z1bmNNaW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1BvdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jUmFuZG9tKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hdGhQcm90b0Z1bmNSb3VuZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jU2lnbihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
U2luKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hdGhQcm90b0Z1bmNTaW5oKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNTcXJ0KEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90
b0Z1bmNUYW4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1RhbmgoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0lNdWwoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NB
TEwobWF0aFByb3RvRnVuY0FicywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY0FDb3MsIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KG1hdGhQcm90b0Z1bmNBQ29zaCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY0FTaW4sIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KG1hdGhQcm90b0Z1bmNBU2luaCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY0FUYW4sIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KG1hdGhQcm90b0Z1bmNBVGFuaCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY0FUYW4yLCBKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FM
TChtYXRoUHJvdG9GdW5jQ2JydCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY0NlaWwsIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KG1hdGhQcm90b0Z1bmNDbHozMiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY0NvcywgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwo
bWF0aFByb3RvRnVuY0Nvc2gsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG1hdGhQcm90b0Z1bmNFeHAsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG1h
dGhQcm90b0Z1bmNFeHBtMSwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY0Zsb29yLCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCht
YXRoUHJvdG9GdW5jRnJvdW5kLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChtYXRoUHJvdG9GdW5jSHlwb3QsIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KG1hdGhQcm90b0Z1bmNMb2csIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVk
SlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG1hdGhQcm90b0Z1bmNMb2cxcCwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwo
bWF0aFByb3RvRnVuY0xvZzEwLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChtYXRoUHJvdG9GdW5jTG9nMiwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwo
bWF0aFByb3RvRnVuY01heCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY01pbiwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0
aFByb3RvRnVuY1BvdywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY1JhbmRvbSwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0
aFByb3RvRnVuY1JvdW5kLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChtYXRoUHJvdG9GdW5jU2lnbiwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0
aFByb3RvRnVuY1NpbiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1Zh
bHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY1NpbmgsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG1hdGhQ
cm90b0Z1bmNTcXJ0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgVkFMSURfSlNDX0hPU1RfQ0FMTChtYXRoUHJvdG9GdW5jVGFuLCBKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChtYXRoUHJv
dG9GdW5jVGFuaCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVl
IFZBTElEX0pTQ19IT1NUX0NBTEwobWF0aFByb3RvRnVuY0lNdWwsIEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG1hdGhQcm90
b0Z1bmNUcnVuYywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogY29uc3QgQ2xhc3NJ
bmZvIE1hdGhPYmplY3Q6OnNfaW5mbyA9IHsgIk1hdGgiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE1hdGhPYmplY3QpIH07CiAKQEAgLTM1Miw3
ICszNTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0xvZzFwKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6bG9nMXAoY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNEb3VibGVOdW1iZXIoTWF0aDo6b3BlcmF0aW9uTG9nMXAoY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNMb2cxMChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI2
NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3Ry
dWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwcm90ZWN0ZWQ6CiAKIHRl
bXBsYXRlPEVycm9yVHlwZSBlcnJvclR5cGU+CiBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
IGZpbmFsIDogcHVibGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3JCYXNlIHsKKyAgICBmcmllbmQg
dm9pZCBwb3B1bGF0ZUpJVFZhbGlkVGFyZ2V0TGlzdCgpOworCiBwdWJsaWM6CiAgICAgc3RhdGlj
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJvdG90eXBlKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCShy
ZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOSBAQAogI2luY2x1ZGUg
Ik5hdGl2ZUV4ZWN1dGFibGUuaCIKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlSW5saW5lcy5o
IgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlICJKSVRUaHVua3MuaCIKKyNlbmRpZgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC03MSw2ICs3NCwx
MiBAQCBOYXRpdmVFeGVjdXRhYmxlOjpOYXRpdmVFeGVjdXRhYmxlKFZNJiB2CiAgICAgLCBtX2Z1
bmN0aW9uKGZ1bmN0aW9uKQogICAgICwgbV9jb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikKIHsKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7CisgICAgICAg
IG1fZnVuY3Rpb25UcmFtcG9saW5lID0gVGFnZ2VkTmF0aXZlRnVuY3Rpb24odm0ubmF0aXZlVHJh
bXBvbGluZUZvcihtX2Z1bmN0aW9uKS5leGVjdXRhYmxlQWRkcmVzczxpbnRwdHJfdD4oKSk7Cisg
ICAgICAgIG1fY29uc3RydWN0b3JUcmFtcG9saW5lID0gIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uKHZt
Lm5hdGl2ZVRyYW1wb2xpbmVGb3IobV9jb25zdHJ1Y3RvcikuZXhlY3V0YWJsZUFkZHJlc3M8aW50
cHRyX3Q+KCkpOworICAgIH0KKyNlbmRpZgogfQogCiBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSog
TmF0aXZlRXhlY3V0YWJsZTo6c2lnbmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1
dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFeGVjdXRhYmxlLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSBmaW5hbCA6IHB1
YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQg
Y2xhc3MgSklUVGh1bmtzOwogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNlOwpAQCAtNjEsMTAgKzYy
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk5h
dGl2ZUZ1bmN0aW9uRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKICAgICB7CisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKKyAgICAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTmF0aXZlRXhlY3V0YWJsZSwgbV9mdW5jdGlv
blRyYW1wb2xpbmUpOworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOYXRpdmVFeGVjdXRhYmxlLCBtX2NvbnN0
cnVjdG9yVHJhbXBvbGluZSk7CisjZWxzZQogICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2Fs
bCkKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTmF0aXZlRXhlY3V0YWJsZSwg
bV9mdW5jdGlvbik7CiAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwog
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5hdGl2ZUV4ZWN1dGFibGUsIG1fY29uc3Ry
dWN0b3IpOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvKTsKQEAgLTgyLDYgKzkw
LDEwIEBAIHByaXZhdGU6CiAKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uOwog
ICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG1fY29uc3RydWN0b3I7CisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb25UcmFtcG9saW5lOworICAg
IFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG1fY29uc3RydWN0b3JUcmFtcG9saW5lOworI2VuZGlmCiAK
ICAgICBTdHJpbmcgbV9uYW1lOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENhbGxGcmFtZTsKK2NsYXNz
IFZNOwogCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKU0NfSE9TVF9DQUxMICpSYXdOYXRpdmVG
dW5jdGlvbikoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIApAQCAtODEsNiArODIsMTEg
QEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3I9PShUYWdnZWROYXRpdmVGdW5jdGlvbiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3RoZXIubV9wdHI7IH0KICAgICBib29sIG9wZXJh
dG9yIT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyICE9
IG90aGVyLm1fcHRyOyB9CiAKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBJbnRIYXNoPHVpbnRwdHJfdD46Omhhc2goYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4obV9wdHIpKTsKKyAgICB9CisKICAgICBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRvcigpKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBO
YXRpdmVGdW5jdGlvbigqdGhpcykoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOyB9CiAKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBOYXRpdmVGdW5jdGlvbigpCkBAIC05MCwxMyArOTYsMzUgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIHZvaWQqIHJhd1BvaW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3B0
cjsgfQorICAgIAorICAgIHZvaWQqIHVudGFnZ2VkUG9pbnRlcigpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gdW50YWdDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG1fcHRyKTsKKyAgICB9CisK
KyAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVlIH07CisgICAgZW51bSBEZWxldGVk
VmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKKworICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uKEVt
cHR5VmFsdWVUYWcpCisgICAgICAgIDogbV9wdHIoZW1wdHlWYWx1ZSgpKQorICAgIHsgfQorICAg
IAorICAgIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uKERlbGV0ZWRWYWx1ZVRhZykKKyAgICAgICAgOiBt
X3B0cihkZWxldGVkVmFsdWUoKSkKKyAgICB7IH0KKworICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9wdHIgPT0gZW1wdHlWYWx1ZSgpOyB9CisgICAgYm9vbCBpc0RlbGV0
ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IGRlbGV0ZWRWYWx1ZSgpOyB9CiAKIHBy
aXZhdGU6CisgICAgc3RhdGljIHZvaWQqIGVtcHR5VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigwKSk7IH0KKyAgICBzdGF0aWMgdm9pZCog
ZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oLTEpKTsgfQorCiAgICAgdm9pZCogbV9wdHI7CiB9OwogCiBzdHJ1Y3QgVGFnZ2Vk
TmF0aXZlRnVuY3Rpb25IYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChUYWdnZWROYXRp
dmVGdW5jdGlvbiBrZXkpIHsgcmV0dXJuIEludEhhc2g8dWludHB0cl90Pjo6aGFzaChiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihrZXkpKTsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFRhZ2dl
ZE5hdGl2ZUZ1bmN0aW9uIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQogICAgIHN0YXRpYyBi
b29sIGVxdWFsKFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGEsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwpAQCAtMTE0LDUgKzE0Miw4IEBAIHRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6TmF0aXYKIHRlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgRGVmYXVsdEhhc2g7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OlRh
Z2dlZE5hdGl2ZUZ1bmN0aW9uPiA6IEpTQzo6VGFnZ2VkTmF0aXZlRnVuY3Rpb25IYXNoIHsgfTsK
IAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBIYXNoVHJhaXRzPEpTQzo6VGFnZ2VkTmF0aXZlRnVuY3Rpb24+IDogcHVibGljIEN1c3Rv
bUhhc2hUcmFpdHM8SlNDOjpUYWdnZWROYXRpdmVGdW5jdGlvbj4geyB9OworCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbEdldHRl
ckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdWxsR2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOdWxsR2V0dGVy
RnVuY3Rpb24uaCIKIAorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTMzLDYgKzM0LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjb25zdCBDbGFzc0luZm8gTnVsbEdldHRlckZ1bmN0aW9uOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoTnVsbEdldHRlckZ1bmN0aW9uKSB9OwogCiBuYW1lc3BhY2UgTnVsbEdldHRlckZ1bmN0
aW9uSW50ZXJuYWwgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FM
TChjYWxsUmV0dXJuVW5kZWZpbmVkLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmV0dXJuVW5kZWZpbmVkKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVs
bFNldHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk51bGxTZXR0ZXJGdW5jdGlvbi5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNzUsNiArNzYs
OSBAQCBzdGF0aWMgYm9vbCBjYWxsZXJJc1N0cmljdChWTSYgdm0sIENhbGxGCiAKIG5hbWVzcGFj
ZSBOdWxsU2V0dGVyRnVuY3Rpb25JbnRlcm5hbCB7CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBW
QUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxSZXR1cm5VbmRlZmluZWQsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxUaHJvd0Vycm9yLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqKTsKKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICNpZiAhQVNTRVJUX0VOQUJMRUQKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDAsMjAwMyBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMiwxNCArMjIsMTUgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOdW1iZXJDb25zdHJ1Y3Rvci5oIgogCisjaW5jbHVk
ZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TnVtYmVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiTnVtYmVyUHJvdG90eXBlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJDb25z
dHJ1Y3RvckZ1bmNJc0ludGVnZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2Fm
ZUludGVnZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG51bWJlckNvbnN0cnVjdG9yRnVuY0lzSW50ZWdlciwg
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKG51bWJlckNvbnN0cnVjdG9yRnVuY0lzU2FmZUludGVnZXIsIEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC00OSw4
ICs1MCw4IEBAIGNvbnN0IENsYXNzSW5mbyBOdW1iZXJDb25zdHJ1Y3Rvcjo6c19pbmYKIEBlbmQK
ICovCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxOdW1iZXJDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TnVtYmVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKGNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdE51bWJl
ckNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBOdW1iZXJDb25z
dHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbE51bWJlckNvbnN0cnVj
dG9yLCBjb25zdHJ1Y3ROdW1iZXJDb25zdHJ1Y3RvcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjY3NDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkJpZ0ludGVnZXIuaCIK
ICNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dC5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZUludC5oIgpAQCAtNDAs
MTAgKzQxLDEyIEBAIHR5cGVkZWYgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nQnUKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51
bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0Zp
eGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1i
ZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobnVtYmVyUHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChudW1iZXJQcm90b0Z1bmNUb0ZpeGVkLCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pT
Q19IT1NUX0NBTEwobnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbCwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChudW1iZXJQcm90b0Z1bmNUb1N0
cmluZywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElE
X0pTQ19IT1NUX0NBTEwobnVtYmVyUHJvdG9GdW5jVmFsdWVPZiwgSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogCiAjaW5j
bHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW1t
dXRhYmxlQnV0dGVyZmx5LmgiCkBAIC0zMSwyMCArMzIsMjkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JBc3NpZ24o
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5
cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckNyZWF0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNlYWwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVl
emUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1
Y3RvcklzU2VhbGVkKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JJc0V4dGVuc2libGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwob2JqZWN0Q29uc3RydWN0b3JBc3NpZ24sIEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
OworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChvYmplY3RDb25zdHJ1Y3Rvckdl
dFByb3RvdHlwZU9mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFs
dWUgVkFMSURfSlNDX0hPU1RfQ0FMTChvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9mLCBK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hP
U1RfQ0FMTChvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG9i
amVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHksIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG9iamVjdENvbnN0cnVjdG9y
RGVmaW5lUHJvcGVydGllcywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwob2JqZWN0Q29uc3RydWN0b3JDcmVhdGUsIEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKG9iamVjdENvbnN0cnVjdG9yU2VhbCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwob2JqZWN0Q29uc3RydWN0b3JGcmVl
emUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKG9iamVjdENvbnN0cnVjdG9yUHJldmVudEV4dGVuc2lvbnMsIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KG9iamVjdENvbnN0cnVjdG9ySXNTZWFsZWQsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG9iamVjdENvbnN0cnVjdG9ySXNG
cm96ZW4sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKG9iamVjdENvbnN0cnVjdG9ySXNFeHRlbnNpYmxlLCBKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworCisvLyBXZSBuZWVkIHRvIGNhc3QgdG8gYSB0eXBlZCB0ZW1w
b3JhcnkgdmFyaWFibGUgdG8gZGlzYW1iaWd1YXRlIHRoZSBvdmVybG9hZGVkIGZ1bmN0aW9uLgor
RW5jb2RlZEpTVmFsdWUgKCZvYmpDdG9yQ29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JGUHRyKShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopID0gb2JqZWN0Q29uc3RydWN0b3JH
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CitWQUxJRF9KSVRfVEFSR0VUKG9iakN0b3JDb25zdHJ1
Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvckZQdHIpOworRW5jb2RlZEpTVmFsdWUgKCZvYmpD
dG9yQ29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzRlB0cikoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKSA9IG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yczsKK1ZBTElEX0pJVF9UQVJHRVQob2JqQ3RvckNvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yc0ZQdHIpOworVkFMSURfSklUX1RBUkdFVChvYmplY3RDb25zdHJ1Y3RvckdldE93
blByb3BlcnR5U3ltYm9scyk7CitWQUxJRF9KSVRfVEFSR0VUKG9iamVjdENvbnN0cnVjdG9yS2V5
cyk7CitWQUxJRF9KSVRfVEFSR0VUKG9iamVjdENvbnN0cnVjdG9ySXMpOwogCiB9CiAKQEAgLTgz
LDggKzkzLDggQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZgogKi8K
IAogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqZWN0Q29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhPYmplY3RDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NU
X0NBTEwoY2FsbE9iamVjdENvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc3RydWN0V2l0
aE9iamVjdENvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBPYmpl
Y3RDb25zdHJ1Y3Rvcjo6T2JqZWN0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbE9iamVjdENv
bnN0cnVjdG9yLCBjb25zdHJ1Y3RXaXRoT2JqZWN0Q29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDIxICsyMywyMyBAQAogCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJvcGVydHlDYWNoZS5oIgorI2luY2x1
ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNJc1Byb3RvdHlwZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNEZWZpbmVHZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
b0Z1bmNMb29rdXBTZXR0ZXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVt
ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NU
X0NBTEwob2JqZWN0UHJvdG9GdW5jVmFsdWVPZiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG9iamVjdFByb3Rv
RnVuY0hhc093blByb3BlcnR5LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwob2JqZWN0UHJvdG9GdW5jSXNQcm90
b3R5cGVPZiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciwgSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG9iamVjdFByb3Rv
RnVuY0xvb2t1cFNldHRlciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKG9iamVjdFByb3RvRnVuY1Byb3BlcnR5
SXNFbnVtZXJhYmxlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwob2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJp
bmcsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKG9iamVjdFByb3RvRnVuY1RvU3RyaW5nLCBKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogCiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoT2Jq
ZWN0UHJvdG90eXBlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NDgsNyArNjQ4LDcgQEAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIGpzRGl2KEpTR2xvYmFsT2JqZQogQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzUmVtYWluZGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpCiB7CiAgICAgYXV0byBkb3VibGVPcCA9IFtdIChkb3VibGUgbGVmdCwgZG91
YmxlIHJpZ2h0KSAtPiBkb3VibGUgewotICAgICAgICByZXR1cm4ganNNb2QobGVmdCwgcmlnaHQp
OworICAgICAgICByZXR1cm4gb3BlcmF0aW9uTW9kKGxlZnQsIHJpZ2h0KTsKICAgICB9OwogCiAg
ICAgYXV0byBiaWdJbnRPcCA9IFtdIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBhdXRv
IGxlZnQsIGF1dG8gcmlnaHQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJveHlD
b25zdHJ1Y3Rvci5oIgogCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJQ
cm94eU9iamVjdC5oIgpAQCAtNDQsOCArNDUsOSBAQCBQcm94eUNvbnN0cnVjdG9yKiBQcm94eUNv
bnN0cnVjdG9yOjpjcmVhCiAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogfQogCi1zdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUHJveHkoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFBy
b3h5T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChtYWtlUmV2b2NhYmxlUHJveHksIEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1Rf
Q0FMTChjYWxsUHJveHksIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zdHJ1Y3RQcm94eU9iamVjdCwgSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogUHJveHlDb25zdHJ1Y3Rvcjo6UHJveHlDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlLCBjYWxsUHJveHksIGNvbnN0cnVjdFByb3h5T2JqZWN0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjY3NDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUHJveHlPYmplY3QuaCIKIAorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiVk1JbmxpbmVzLmgiCkBAIC00MCw2ICs0MSw5IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklB
TExZX0RFU1RSVUNUSUJMRSgKIAogY29uc3QgQ2xhc3NJbmZvIFByb3h5T2JqZWN0OjpzX2luZm8g
PSB7ICJQcm94eU9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUHJveHlPYmplY3QpIH07CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBW
QUxJRF9KU0NfSE9TVF9DQUxMKHBlcmZvcm1Qcm94eUNhbGwsIEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChwZXJm
b3JtUHJveHlDb25zdHJ1Y3QsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKIFByb3h5
T2JqZWN0OjpQcm94eU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlSZXZva2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5UmV2b2tlLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVJldm9rZS5oIgogCisj
aW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiUHJveHlPYmplY3QuaCIKIApAQCAtNDIsNyArNDMsNyBAQCBQcm94eVJldm9rZSogUHJv
eHlSZXZva2U6OmNyZWF0ZShWTSYgdm0sCiAgICAgcmV0dXJuIHJldm9rZTsKIH0KIAotc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5UmV2b2tlKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hP
U1RfQ0FMTChwZXJmb3JtUHJveHlSZXZva2UsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CiAKIFByb3h5UmV2b2tlOjpQcm94eVJldm9rZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBwZXJmb3JtUHJveHlSZXZva2UsIG51bGxwdHIp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0
LmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVmbGVjdE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwyMSArMjYsMjIgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZWZsZWN0T2JqZWN0LmgiCiAKKyNpbmNsdWRl
ICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJP
YmplY3RDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdENvbnN0cnVjdChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamVjdERlZmluZVByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RJc0V4dGVuc2li
bGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
UHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocmVmbGVjdE9iamVjdENv
bnN0cnVjdCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eSwgSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKHJlZmxlY3RPYmplY3RHZXQsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChyZWZsZWN0T2Jq
ZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocmVmbGVjdE9iamVj
dEdldFByb3RvdHlwZU9mLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocmVmbGVjdE9iamVjdElzRXh0ZW5zaWJs
ZSwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBW
QUxJRF9KU0NfSE9TVF9DQUxMKHJlZmxlY3RPYmplY3RPd25LZXlzLCBKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwo
cmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocmVmbGVjdE9i
amVjdFNldCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZiwgSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAy
Njc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE3ICsyOSwzMyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENv
bnN0cnVjdG9yTGFzdE1hdGNoKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSk7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgcmVnRXhwQ29uc3RydWN0b3JMYXN0UGFy
ZW4oSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSByZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0KEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgcmVnRXhwQ29uc3RydWN0b3JSaWdodENvbnRleHQoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0Nf
SE9TVF9DQUxMKHJlZ0V4cENvbnN0cnVjdG9ySW5wdXQsIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlND
X0hPU1RfQ0FMTChyZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZSwgSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKHJlZ0V4cENvbnN0cnVjdG9yTGFzdE1hdGNoLCBKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IFZBTElEX0pTQ19IT1NUX0NBTEwocmVnRXhwQ29uc3RydWN0b3JMYXN0UGFyZW4sIEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0LCBK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocmVnRXhwQ29uc3RydWN0b3JSaWdodENv
bnRleHQsIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CisK
K3N0YXRpYyBib29sIEpTQ19IT1NUX0NBTEwgc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CitWQUxJRF9KSVRf
VEFSR0VUKHNldFJlZ0V4cENvbnN0cnVjdG9ySW5wdXQpOworc3RhdGljIGJvb2wgSlNDX0hPU1Rf
Q0FMTCBzZXRSZWdFeHBDb25zdHJ1Y3Rvck11bHRpbGluZShKU0dsb2JhbE9iamVjdCosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CisKK1ZBTElEX0pJVF9UQVJHRVQoc2V0UmVnRXhw
Q29uc3RydWN0b3JNdWx0aWxpbmUpOworVkFMSURfSklUX1RBUkdFVChlc1NwZWNSZWdFeHBDcmVh
dGUpOworVkFMSURfSklUX1RBUkdFVChlc1NwZWNJc1JlZ0V4cCk7CisKIHRlbXBsYXRlPGludCBO
Pgotc3RhdGljIEVuY29kZWRKU1ZhbHVlIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBDb25zdHJ1Y3RvckRvbGxhcihKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCi1zdGF0aWMgYm9vbCBzZXRSZWdF
eHBDb25zdHJ1Y3RvcklucHV0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlKTsKLXN0YXRpYyBib29sIHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKK1ZBTElEX0pJ
VF9UQVJHRVRfRVhQTElDSVRJRChyZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjEsIHJlZ0V4cENvbnN0
cnVjdG9yRG9sbGFyPDE+KTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChyZWdFeHBDb25z
dHJ1Y3RvckRvbGxhcjIsIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyPDI+KTsKK1ZBTElEX0pJVF9U
QVJHRVRfRVhQTElDSVRJRChyZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjMsIHJlZ0V4cENvbnN0cnVj
dG9yRG9sbGFyPDM+KTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChyZWdFeHBDb25zdHJ1
Y3RvckRvbGxhcjQsIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyPDQ+KTsKK1ZBTElEX0pJVF9UQVJH
RVRfRVhQTElDSVRJRChyZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjUsIHJlZ0V4cENvbnN0cnVjdG9y
RG9sbGFyPDU+KTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChyZWdFeHBDb25zdHJ1Y3Rv
ckRvbGxhcjYsIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyPDY+KTsKK1ZBTElEX0pJVF9UQVJHRVRf
RVhQTElDSVRJRChyZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjcsIHJlZ0V4cENvbnN0cnVjdG9yRG9s
bGFyPDc+KTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChyZWdFeHBDb25zdHJ1Y3RvckRv
bGxhcjgsIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFyPDg+KTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQ
TElDSVRJRChyZWdFeHBDb25zdHJ1Y3RvckRvbGxhcjksIHJlZ0V4cENvbnN0cnVjdG9yRG9sbGFy
PDk+KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKQEAgLTc2LDggKzkyLDggQEAgY29uc3QgQ2xh
c3NJbmZvIFJlZ0V4cENvbnN0cnVjdG9yOjpzX2luZgogKi8KIAogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUmVnRXhwQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdpdGhSZWdFeHBDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbFJlZ0V4cENvbnN0
cnVjdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc3RydWN0V2l0aFJlZ0V4cENvbnN0cnVjdG9yLCBK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBSZWdFeHBDb25zdHJ1Y3Rvcjo6UmVnRXhw
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEludGVybmFs
RnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbFJlZ0V4cENvbnN0cnVjdG9yLCBjb25zdHJ1Y3RX
aXRoUmVnRXhwQ29uc3RydWN0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDEwICsy
MSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgog
CisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3RJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIHJlZ0V4cE9iamVjdFNldExhc3RJbmRl
eFN0cmljdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7
Citib29sIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5vblN0cmljdChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CitWQUxJRF9KSVRfVEFSR0VUKHJlZ0V4
cE9iamVjdFNldExhc3RJbmRleFN0cmljdCk7CitWQUxJRF9KSVRfVEFSR0VUKHJlZ0V4cE9iamVj
dFNldExhc3RJbmRleE5vblN0cmljdCk7CisKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RF
U1RSVUNUSUJMRShSZWdFeHBPYmplY3QpOwogCiBjb25zdCBDbGFzc0luZm8gUmVnRXhwT2JqZWN0
OjpzX2luZm8gPSB7ICJSZWdFeHAiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFJlZ0V4cE9iamVjdCkgfTsKQEAgLTEzMiwxMiArMTM4LDEyIEBA
IGJvb2wgUmVnRXhwT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU08KICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KSk7CiB9CiAKLXN0YXRp
YyBib29sIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleFN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVl
KQorYm9vbCByZWdFeHBPYmplY3RTZXRMYXN0SW5kZXhTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1
ZSkKIHsKICAgICByZXR1cm4ganNDYXN0PFJlZ0V4cE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHZh
bHVlKSwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBib29sIHJlZ0V4cE9iamVjdFNldExhc3RJbmRleE5v
blN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQorYm9vbCByZWdFeHBPYmplY3RTZXRMYXN0SW5k
ZXhOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4ganNDYXN0PFJl
Z0V4cE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKS0+c2V0TGFzdEluZGV4KGds
b2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgZmFsc2UpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi
UmVnRXhwUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCkBAIC0zNiwxNyArMzcsMjMg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dl
dHRlckdsb2JhbChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWdFeHBQcm90b0dldHRlck11bHRpbGluZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJE
b3RBbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlclVuaWNvZGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU291cmNlKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChyZWdFeHBQcm90b0Z1
bmNFeGVjLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocmVnRXhwUHJvdG9GdW5jQ29tcGlsZSwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9T
VF9DQUxMKHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocmVnRXhwUHJv
dG9HZXR0ZXJHbG9iYWwsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChyZWdFeHBQcm90b0dldHRlcklnbm9yZUNh
c2UsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
VkFMSURfSlNDX0hPU1RfQ0FMTChyZWdFeHBQcm90b0dldHRlck11bHRpbGluZSwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9T
VF9DQUxMKHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocmVnRXhwUHJv
dG9HZXR0ZXJTdGlja3ksIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChyZWdFeHBQcm90b0dldHRlclVuaWNvZGUs
IEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFM
SURfSlNDX0hPU1RfQ0FMTChyZWdFeHBQcm90b0dldHRlclNvdXJjZSwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisK
K1ZBTElEX0pJVF9UQVJHRVQocmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0KTsKK1ZBTElEX0pJVF9U
QVJHRVQocmVnRXhwUHJvdG9GdW5jU2VhcmNoRmFzdCk7CitWQUxJRF9KSVRfVEFSR0VUKHJlZ0V4
cFByb3RvRnVuY1NwbGl0RmFzdCk7CitWQUxJRF9KSVRfVEFSR0VUKHJlZ0V4cFByb3RvRnVuY1Rl
c3RGYXN0KTsKKwogCiBjb25zdCBDbGFzc0luZm8gUmVnRXhwUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFJlZ0V4cFByb3RvdHlwZSkgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlNldENvbnN0cnVjdG9yLmgiCiAK
ICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdl
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1NldC5oIgogI2luY2x1
ZGUgIlNldFByb3RvdHlwZS5oIgpAQCAtMzUsNiArMzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
IGNvbnN0IENsYXNzSW5mbyBTZXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNldENv
bnN0cnVjdG9yKSB9OwogCitWQUxJRF9KSVRfVEFSR0VUKHNldFByaXZhdGVGdW5jU2V0QnVja2V0
SGVhZCk7CitWQUxJRF9KSVRfVEFSR0VUKHNldFByaXZhdGVGdW5jU2V0QnVja2V0TmV4dCk7CitW
QUxJRF9KSVRfVEFSR0VUKHNldFByaXZhdGVGdW5jU2V0QnVja2V0S2V5KTsKKwogdm9pZCBTZXRD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTZXRQcm90b3R5cGUqIHNldFByb3Rv
dHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVzU3ltYm9sKQogewogICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5TZXQuc3RyaW5nKCksIFByb3BlcnR5QWRk
aXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CkBAIC00Miw4ICs0Nyw4IEBA
IHZvaWQgU2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiAKICAgICBwdXREaXJlY3RO
b25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNw
ZWNpZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTZXQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdFNldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbFNldCwgSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9D
QUxMKGNvbnN0cnVjdFNldCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogU2V0Q29u
c3RydWN0b3I6OlNldENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxTZXQsIGNvbnN0cnVjdFNldCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTZXRQcm90
b3R5cGUuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkpJVFZhbGlk
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCiAj
aW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgpAQCAtNDMsMTQgKzQ0LDEzIEBAIGNvbnN0IENsYXNz
SW5mbyBTZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsKIEBlbmQKICovCiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0FkZChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9G
dW5jQ2xlYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9G
dW5jSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
Y0VudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLQotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc2V0
UHJvdG9GdW5jQWRkLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc2V0UHJvdG9GdW5jQ2xlYXIsIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hP
U1RfQ0FMTChzZXRQcm90b0Z1bmNEZWxldGUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChzZXRQcm90b0Z1bmNI
YXMsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
VkFMSURfSlNDX0hPU1RfQ0FMTChzZXRQcm90b0Z1bmNTaXplLCBKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc2V0
UHJvdG9GdW5jVmFsdWVzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc2V0UHJvdG9GdW5jRW50cmllcywgSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMTQgKzIxLDE1IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKIAorI2luY2x1ZGUg
IkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlN0
cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ0Zyb21DaGFyQ29kZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNvZGVQb2ludChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NU
X0NBTEwoc3RyaW5nRnJvbUNoYXJDb2RlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc3RyaW5nRnJvbUNvZGVQ
b2ludCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCkBAIC00OSw4ICs1MCw4
IEBAIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdDb25zdHJ1Y3Rvcjo6c19pbmYKIFNUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTdHJpbmdDb25zdHJ1Y3Rvcik7CiAKIAotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN0cmluZ0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNh
bGxTdHJpbmdDb25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdFdpdGhTdHJpbmdD
b25zdHJ1Y3RvciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogU3RyaW5nQ29uc3Ry
dWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUsIGNhbGxTdHJpbmdDb25zdHJ1Y3Rv
ciwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKQpAQCAtMTAwLDcgKzEwMSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmkKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgV1RGTW92ZShpbXBsOEJp
dCkpKSk7CiB9CiAKLUpTU3RyaW5nKiBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQzMl90IGFyZykKK0pTU3RyaW5nKiBzdHJp
bmdGcm9tQ2hhckNvZGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50MzJfdCBhcmcp
CiB7CiAgICAgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbE9iamVjdC0+dm0o
KSwgYXJnKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0Nv
bnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NyArNTIsNyBAQCBwcml2YXRlOgogfTsKIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJB
QkxFKFN0cmluZ0NvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKIAotSlNTdHJpbmcqIEpT
Q19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEpTR2xvYmFsT2JqZWN0KiwgaW50MzJfdCk7
CitKU1N0cmluZyogc3RyaW5nRnJvbUNoYXJDb2RlKEpTR2xvYmFsT2JqZWN0KiwgaW50MzJfdCk7
CiBKU1N0cmluZyogc3RyaW5nQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKICNpbmNsdWRl
ICJJbnRsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVENvZGVJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKQEAgLTUzLDMxICs1
NCw0MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKFN0cmluZ1Byb3RvdHlwZSk7CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50QXQoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jSW5kZXhPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNSZXBsYWNlVXNpbmdSZWdFeHAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jUmVwbGFj
ZVVzaW5nU3RyaW5nU2VhcmNoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGxhY2VBbGxVc2luZ1N0cmlu
Z1NlYXJjaChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGljZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNv
bXBhcmUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jVG9Mb2NhbGVVcHBlckNhc2UoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJpbShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNUcmltU3RhcnQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVHJpbUVuZChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNTdGFydHNXaXRoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0luY2x1ZGVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY05vcm1hbGl6ZShKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJ
dGVyYXRvcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFM
SURfSlNDX0hPU1RfQ0FMTChzdHJpbmdQcm90b0Z1bmNUb1N0cmluZywgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc3RyaW5n
UHJvdG9GdW5jQ2hhckF0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0LCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1Rf
Q0FMTChzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc3RyaW5nUHJvdG9GdW5j
SW5kZXhPZiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZB
TElEX0pTQ19IT1NUX0NBTEwoc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHN0
cmluZ1Byb3RvRnVuY1JlcGxhY2VVc2luZ1JlZ0V4cCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc3RyaW5nUHJvdG9GdW5j
UmVwbGFjZVVzaW5nU3RyaW5nU2VhcmNoLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
RW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChzdHJpbmdQcm90b0Z1bmNSZXBsYWNl
QWxsVXNpbmdTdHJpbmdTZWFyY2gsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNv
ZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHN0cmluZ1Byb3RvRnVuY1NsaWNlLCBKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1Rf
Q0FMTChzdHJpbmdQcm90b0Z1bmNTdWJzdHIsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHN0cmluZ1Byb3RvRnVuY1N1YnN0
cmluZywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElE
X0pTQ19IT1NUX0NBTEwoc3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHN0cmlu
Z1Byb3RvRnVuY1RvVXBwZXJDYXNlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5j
b2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21w
YXJlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURf
SlNDX0hPU1RfQ0FMTChzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZUxvd2VyQ2FzZSwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwo
c3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHN0cmluZ1Byb3RvRnVu
Y1RyaW0sIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKHN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydCwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc3RyaW5n
UHJvdG9GdW5jVHJpbUVuZCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRK
U1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0aCwgSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NU
X0NBTEwoc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHN0cmluZ1Byb3RvRnVuY0lu
Y2x1ZGVzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFM
SURfSlNDX0hPU1RfQ0FMTChzdHJpbmdQcm90b0Z1bmNOb3JtYWxpemUsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHN0cmlu
Z1Byb3RvRnVuY0l0ZXJhdG9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCitWQUxJ
RF9KSVRfVEFSR0VUKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0
cik7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdF
eHBTdHJpbmcpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBs
YWNlR2VuZXJpYyk7CisKK1ZBTElEX0pJVF9UQVJHRVQoc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hh
cmFjdGVyKTsKK1ZBTElEX0pJVF9UQVJHRVQoc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KTsKKwor
VkFMSURfSklUX1RBUkdFVChidWlsdGluU3RyaW5nU3Vic3RyaW5nSW50ZXJuYWwpOworVkFMSURf
SklUX1RBUkdFVChidWlsdGluU3RyaW5nSW5jbHVkZXNJbnRlcm5hbCk7CitWQUxJRF9KSVRfVEFS
R0VUKGJ1aWx0aW5TdHJpbmdJbmRleE9mSW50ZXJuYWwpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDE0ICsyNywxNSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlN5bWJvbENvbnN0cnVjdG9yLmgiCiAKKyNpbmNsdWRlICJKSVRWYWxp
ZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJTeW1ib2xQcm90
b3R5cGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29u
c3RydWN0b3JGb3IoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1Rf
Q0FMTChzeW1ib2xDb25zdHJ1Y3RvckZvciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHN5bWJvbENvbnN0cnVj
dG9yS2V5Rm9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiB9CiAKQEAgLTUzLDgg
KzU0LDggQEAgY29uc3QgQ2xhc3NJbmZvIFN5bWJvbENvbnN0cnVjdG9yOjpzX2luZgogQGVuZAog
Ki8KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFN5bWJvbChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0U3ltYm9sKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsU3ltYm9sLCBKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19I
T1NUX0NBTEwoY29uc3RydWN0U3ltYm9sLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwog
CiBTeW1ib2xDb25zdHJ1Y3Rvcjo6U3ltYm9sQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSwgY2FsbFN5
bWJvbCwgY29uc3RydWN0U3ltYm9sKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw5ICszMyw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG9GdW5jVmFs
dWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IFZBTElEX0pTQ19IT1NUX0NBTEwoc3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbiwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0Nf
SE9TVF9DQUxMKHN5bWJvbFByb3RvRnVuY1RvU3RyaW5nLCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoc3ltYm9s
UHJvdG9GdW5jVmFsdWVPZiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyNjc0NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5j
bHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFRodW5rcy5oIgorI2luY2x1ZGUgIkpJVFZh
bGlkVGFyZ2V0TGlzdC5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCiAjaW5jbHVkZSAiSlNB
UElHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgpAQCAtODA1
LDYgKzgwNiwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IFZNCiAg
ICAgcmV0dXJuIGppdFN0dWJzLT5jdGlTdHViKCp0aGlzLCBnZW5lcmF0b3IpOwogfQogCisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFZN
OjpuYXRpdmVUcmFtcG9saW5lRm9yKFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uKQorewor
ICAgIHJldHVybiBqaXRTdHVicy0+bmF0aXZlVHJhbXBvbGluZUZvcihmdW5jdGlvbik7Cit9Cisj
ZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiBOYXRpdmVFeGVjdXRhYmxlKiBWTTo6Z2V0
SG9zdEZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRpdmVGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgY29uc3QgU3RyaW5nJiBuYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MjcsNiArODI3LDkgQEAgcHVibGljOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxKSVRUaHVua3M+IGppdFN0dWJzOwogICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gZ2V0Q1RJU3R1YihUaHVua0dlbmVyYXRvcik7CiAKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
IG5hdGl2ZVRyYW1wb2xpbmVGb3IoVGFnZ2VkTmF0aXZlRnVuY3Rpb24pOworI2VuZGlmCiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RlRMOjpUaHVua3M+IGZ0bFRodW5rczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY3NDU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYWtNYXBD
b25zdHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCisjaW5jbHVk
ZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNXZWFrTWFwLmgiCiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlwZS5oIgpAQCAtNDEsOCArNDIs
OCBAQCB2b2lkIFdlYWtNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oCiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJv
dG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrTWFwKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RXZWFrTWFwKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsV2Vha01hcCwgSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNv
bnN0cnVjdFdlYWtNYXAsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFdlYWtNYXBD
b25zdHJ1Y3Rvcjo6V2Vha01hcENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxXZWFrTWFwLCBjb25zdHJ1Y3RXZWFr
TWFwKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vha01hcFByb3RvdHlw
ZS5oIgogCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCiAKQEAgLTMzLDEwICszNCwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYWtNYXBQcm90b3R5cGU6OnNfaW5mbyA9IHsg
IldlYWtNYXAiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFdlYWtNYXBQcm90b3R5cGUpIH07CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBEZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtN
YXBHZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBIYXMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dl
YWtNYXBTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHByb3RvRnVuY1dlYWtNYXBEZWxldGUsIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hP
U1RfQ0FMTChwcm90b0Z1bmNXZWFrTWFwR2V0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocHJvdG9GdW5jV2Vh
a01hcEhhcywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHByb3RvRnVuY1dlYWtNYXBTZXQsIEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHZvaWQgV2Vha01hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUsIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYWtPYmplY3RSZWZD
b25zdHJ1Y3Rvci5oIgogCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWFrT2JqZWN0UmVmLmgiCiAjaW5jbHVkZSAiV2Vh
a09iamVjdFJlZlByb3RvdHlwZS5oIgpAQCAtNDAsOCArNDEsOCBAQCB2b2lkIFdlYWtPYmplY3RS
ZWZDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrUmVmKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1Rf
Q0FMTChjYWxsV2Vha1JlZiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdFdlYWtSZWYsIEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvcjo6V2Vh
a09iamVjdFJlZkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxXZWFrUmVmLCBjb25zdHJ1Y3RXZWFrUmVmKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVj
dFJlZlByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYWtPYmplY3RS
ZWZQcm90b3R5cGUuaCIKIAorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2Vha09iamVjdFJlZi5oIgogCkBAIC0zMyw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2Vha09iamVjdFJlZlBy
b3RvdHlwZTo6c19pbmZvID0geyAiV2Vha1JlZiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2Vha09iamVjdFJlZlByb3RvdHlwZSkgfTsKIAot
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1JlZkRlcmVm
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFM
SURfSlNDX0hPU1RfQ0FMTChwcm90b0Z1bmNXZWFrUmVmRGVyZWYsIEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CiAKIHZvaWQgV2Vha09iamVjdFJlZlByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
U2V0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiV2Vha1NldENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJJdGVyYXRvck9wZXJh
dGlvbnMuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJXZWFrU2V0UHJvdG90eXBl
LmgiCkBAIC00MSw4ICs0Miw4IEBAIHZvaWQgV2Vha1NldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbigKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtTZXQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxXZWFrU2V0LCBK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElE
X0pTQ19IT1NUX0NBTEwoY29uc3RydWN0V2Vha1NldCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKIAogV2Vha1NldENvbnN0cnVjdG9yOjpXZWFrU2V0Q29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFdlYWtT
ZXQsIGNvbnN0cnVjdFdlYWtTZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrU2V0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBw
bGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIw
IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWFrU2V0UHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKIApAQCAtMzMsOSAr
MzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYWtTZXRQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIldlYWtTZXQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYWtTZXRQcm90b3R5cGUpIH07CiAKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXREZWxldGUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtTZXRIYXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRBZGQoSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0Nf
SE9TVF9DQUxMKHByb3RvRnVuY1dlYWtTZXREZWxldGUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChwcm90b0Z1
bmNXZWFrU2V0SGFzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwocHJvdG9GdW5jV2Vha1NldEFkZCwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBXZWFrU2V0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCShyZXZpc2lvbiAyNjc0
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwMSw3ICs1MDEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICB9CiAKLXByaXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIGN1c3RvbUdldHRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAgIERvbGxhclZNQXNz
ZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CkBAIC0xMTcxLDkgKzExNzAsNiBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB9OwogCi1wcml2YXRlOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0ds
b2JhbE9iamVjdCopOwotCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25FbmFibGVFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFz
c2VydFNjb3BlOwpAQCAtMTE4NCw2ICsxMTgwLDkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKK3ByaXZhdGU6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisKICAgICBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAg
RG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKQEAgLTM0MDcsNiArMzQwNiwxNDcgQEAg
dm9pZCBKU0RvbGxhclZNOjphZGRDb25zdHJ1Y3RpYmxlRnVuY3RpbwogICAgIHB1dERpcmVjdCh2
bSwgaWRlbnRpZmllciwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50cywgaWRlbnRpZmllci5zdHJpbmcoKSwgZnVuY3Rpb24sIE5vSW50cmluc2ljLCBmdW5jdGlv
biksIGpzRG9sbGFyVk1Qcm9wZXJ0eUF0dHJpYnV0ZXMpOwogfQogCisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorc3RhdGljIHZvaWQqIGhvc3RDYWxsRW50cnlwb2ludHNbXSA9IHsKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KERPTUpJVEZ1bmN0aW9uT2JqZWN0OjpmdW5j
dGlvbldpdGhUeXBlQ2hlY2spLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oRE9NSklUR2V0dGVyQ29tcGxleDo6ZnVuY3Rpb25FbmFibGVFeGNlcHRpb24pLAorI2lm
IEVOQUJMRShKSVQpCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRE9NSklURnVuY3Rpb25P
YmplY3Q6OmZ1bmN0aW9uV2l0aG91dFR5cGVDaGVjayksCisgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3Q6OmZ1bmN0aW9uV2l0aG91dFR5cGVDaGVjayks
CisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRE9NSklUQ2hlY2tKU0Nhc3RPYmplY3Q6OmZ1
bmN0aW9uV2l0aFR5cGVDaGVjayksCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oRE9NSklU
R2V0dGVyOjpET01KSVRBdHRyaWJ1dGU6OnNsb3dDYWxsKSwKKyAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPihET01KSVRHZXR0ZXJCYXNlSlNPYmplY3Q6OkRPTUpJVEF0dHJpYnV0ZTo6c2xvd0Nh
bGwpLAorICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KERPTUpJVEdldHRlck5vRWZmZWN0czo6
RE9NSklUQXR0cmlidXRlOjpzbG93Q2FsbCksCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
RE9NSklUR2V0dGVyQ29tcGxleDo6RE9NSklUQXR0cmlidXRlOjpzbG93Q2FsbCksCisjZW5kaWYK
KyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZVdhc21TdHJlYW1pbmdQYXJzZXIpLAorICAgICh2b2lk
KilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFy
c2VyQWRkQnl0ZXMpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
ZnVuY3Rpb25XYXNtU3RyZWFtaW5nUGFyc2VyRmluYWxpemUpLAorI2VuZGlmCisgICAgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY3VzdG9tR2V0QWNjZXNzb3IpLAorICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGN1c3RvbUdldFZhbHVlKSwKKyAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihj
dXN0b21HZXRWYWx1ZUdsb2JhbE9iamVjdCksCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
Y3VzdG9tR2V0QWNjZXNzb3JHbG9iYWxPYmplY3QpLAorICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGN1c3RvbVNldEFjY2Vzc29yKSwKKyAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjdXN0
b21TZXRWYWx1ZSksCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oQ3VzdG9tR2V0dGVyOjpj
dXN0b21HZXR0ZXIpLAorICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEN1c3RvbUdldHRlcjo6
Y3VzdG9tR2V0dGVyQWNlc3NvciksCisKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KEpTRG9sbGFyVk1IZWxwZXI6OmZ1bmN0aW9uR2V0U3RydWN0dXJlVHJhbnNpdGlv
bkxpc3QpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rp
b25JQ1VIZWFkZXJWZXJzaW9uKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGZ1bmN0aW9uSUNVVmVyc2lvbiksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkFzc2VydEVuYWJsZWQpLAorICAgICh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25CYXNlbGluZUpJVFRydWUpLAorICAgICh2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25CYXNpY0Jsb2NrRXhl
Y3V0aW9uQ291bnQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
ZnVuY3Rpb25CcmVha3BvaW50KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVu
Y3Rpb24+KGZ1bmN0aW9uQ2FsbEZyYW1lKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ2FsbFdpdGhTdGFja1NpemUpLAorICAgICh2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Db2RlQmxvY2tGb3IpLAorICAgICh2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Db2RlQmxvY2tGb3JG
cmFtZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlv
bkNwdUNsZmx1c2gpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
ZnVuY3Rpb25DcHVDcHVpZCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihmdW5jdGlvbkNwdU1mZW5jZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihmdW5jdGlvbkNwdVBhdXNlKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3B1UmR0c2MpLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcmFzaCksCisgICAgKHZvaWQqKXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZUJ1aWx0aW4pLAorICAgICh2b2lk
KilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcmVhdGVFbXB0eUZ1bmN0
aW9uV2l0aE5hbWUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
ZnVuY3Rpb25DcmVhdGVTdGF0aWNDdXN0b21WYWx1ZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZU9iamVjdERvaW5nU2lkZUVmZmVjdFB1
dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1cyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZUN1c3RvbUdldHRlck9iamVjdCksCisgICAgKHZv
aWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZUN1c3RvbVRl
c3RHZXR0ZXJTZXR0ZXIpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oZnVuY3Rpb25DcmVhdGVET01KSVRDaGVja0pTQ2FzdE9iamVjdCksCisgICAgKHZvaWQqKXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZURPTUpJVEZ1bmN0aW9u
T2JqZWN0KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0
aW9uQ3JlYXRlRE9NSklUR2V0dGVyQmFzZUpTT2JqZWN0KSwKKyAgICAodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRlRE9NSklUR2V0dGVyQ29tcGxleE9i
amVjdCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlv
bkNyZWF0ZURPTUpJVEdldHRlck5vRWZmZWN0c09iamVjdCksCisgICAgKHZvaWQqKXN0YXRpY19j
YXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZURPTUpJVEdldHRlck9iamVjdCks
CisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0
ZURPTUpJVE5vZGVPYmplY3QpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oZnVuY3Rpb25DcmVhdGVFbGVtZW50KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRlR2xvYmFsT2JqZWN0KSwKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3JlYXRlSW1wdXJlR2V0dGVy
KSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uQ3Jl
YXRlTnVsbFJvcGVTdHJpbmcpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oZnVuY3Rpb25DcmVhdGVQcm94eSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkNyZWF0ZVJvb3QpLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcmVhdGVSdW50aW1lQXJyYXkpLAorICAgICh2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25DcmVhdGVTaW1wbGVP
YmplY3QpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rp
b25DcmVhdGVTdGF0aWNDdXN0b21BY2Nlc3NvciksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkN1cnJlbnRDUFVUaW1lKSwKKyAgICAodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uREZHVHJ1ZSksCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRhdGFMb2cpLAorICAgICh2
b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25EZWxldGVBbGxDb2Rl
V2hlbklkbGUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVu
Y3Rpb25EZWx0YUJldHdlZW5CdXR0ZXJmbGllcyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkRpc2FibGVEZWJ1Z2dlck1vZGVXaGVuSWRsZSksCisg
ICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkR1bXBCYXNp
Y0Jsb2NrRXhlY3V0aW9uUmFuZ2VzKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZl
RnVuY3Rpb24+KGZ1bmN0aW9uRHVtcEJ5dGVjb2RlRm9yKSwKKyAgICAodm9pZCopc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRHVtcENhbGxGcmFtZSksCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkR1bXBDZWxsKSwKKyAgICAo
dm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uRHVtcFJlZ2lzdGVy
cyksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkR1
bXBTb3VyY2VGb3IpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4o
ZnVuY3Rpb25EdW1wU3RhY2spLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oZnVuY3Rpb25EdW1wU3Vic3BhY2VIYXNoZXMpLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25FZGVuR0MpLAorICAgICh2b2lkKilzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25FbmFibGVEZWJ1Z2dlck1vZGVXaGVuSWRs
ZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkZU
TFRydWUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rp
b25GaW5kVHlwZUZvckV4cHJlc3Npb24pLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oZnVuY3Rpb25GbGF0dGVuRGljdGlvbmFyeU9iamVjdCksCisgICAgKHZvaWQq
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkdDKSwKKyAgICAodm9pZCop
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uR2V0Q29uY3VycmVudGx5KSwK
KyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSGFzT3du
TGVuZ3RoUHJvcGVydHkpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oZnVuY3Rpb25HQ1N3ZWVwQXN5bmNocm9ub3VzbHkpLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25HZXRFbGVtZW50KSwKKyAgICAodm9pZCopc3Rh
dGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uR2V0R2V0dGVyU2V0dGVyKSwKKyAg
ICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uR2V0SGlkZGVu
VmFsdWUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rp
b25HZXRQSUQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVu
Y3Rpb25HZXRQcml2YXRlUHJvcGVydHkpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRp
dmVGdW5jdGlvbj4oZnVuY3Rpb25HbG9iYWxPYmplY3RDb3VudCksCisgICAgKHZvaWQqKXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkdsb2JhbE9iamVjdEZvck9iamVjdCks
CisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbkhhc0Jh
c2ljQmxvY2tFeGVjdXRlZCksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0
aW9uPihmdW5jdGlvbkhhdmVBQmFkVGltZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05h
dGl2ZUZ1bmN0aW9uPihmdW5jdGlvbklDVVZlcnNpb24pLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25JbmRleGluZ01vZGUpLAorICAgICh2b2lkKilz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25JbmxpbmVDYXBhY2l0eSksCisg
ICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvbklzSGF2aW5n
QUJhZFRpbWUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVu
Y3Rpb25Jc01lbW9yeUxpbWl0ZWQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVG
dW5jdGlvbj4oZnVuY3Rpb25Jc1dhc21TdXBwb3J0ZWQpLAorICAgICh2b2lkKilzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25MTGludFRydWUpLAorICAgICh2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Mb2FkR2V0dGVyRnJvbUdldHRlclNl
dHRlciksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlv
bk1ha2UxNkJpdFN0cmluZ0lmUG9zc2libGUpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Ob0lubGluZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0
PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvblBhcnNlQ291bnQpLAorICAgICh2b2lkKilzdGF0
aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25QcmludCksCisgICAgKHZvaWQqKXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlvblJlamVjdFByb21pc2VBc0hhbmRs
ZWQpLAorICAgICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25S
ZXR1cm5UeXBlRm9yKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGZ1bmN0aW9uU2V0R2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkTm90VGhyb3cpLAorICAg
ICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25TZXRIaWRkZW5W
YWx1ZSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5jdGlv
blNldEltcHVyZUdldHRlckRlbGVnYXRlKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGZ1bmN0aW9uU2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyksICAgIAorICAg
ICh2b2lkKilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25TaGFkb3dDaGlj
a2VuRnVuY3Rpb25zT25TdGFjayksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihmdW5jdGlvblRvdGFsR0NUaW1lKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8UmF3
TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uVXNlSklUKSwKKyAgICAodm9pZCopc3RhdGljX2Nhc3Q8
UmF3TmF0aXZlRnVuY3Rpb24+KGZ1bmN0aW9uSXNHaWdhY2FnZUVuYWJsZWQpLAorICAgICh2b2lk
KilzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oZnVuY3Rpb25Ub1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSksCisgICAgKHZvaWQqKXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihmdW5j
dGlvblZhbHVlKSwKKyAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih0ZXN0U3RhdGljVmFsdWVH
ZXR0ZXIpLAorICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRlc3RTdGF0aWNWYWx1ZVB1dHRl
ciksCisgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGVzdFN0YXRpY0FjY2Vzc29yR2V0dGVy
KSwKKyAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih0ZXN0U3RhdGljQWNjZXNzb3JQdXR0ZXIp
LAorICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRlc3RTdGF0aWNWYWx1ZUdldHRlciksCisg
ICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGVzdFN0YXRpY1ZhbHVlUHV0dGVyKSwKK307CisK
K3ZvaWQgSlNEb2xsYXJWTTo6cG9wdWxhdGVKSVRWYWxpZFRhcmdldExpc3QoKQoreworICAgIEpJ
VFZhbGlkVGFyZ2V0TGlzdCYgdmFsaWRUYXJnZXRMaXN0ID0gSklUVmFsaWRUYXJnZXRMaXN0Ojpp
bnN0YW5jZSgpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihob3N0Q2Fs
bEVudHJ5cG9pbnRzKSAvIHNpemVvZih2b2lkKik7IGkrKykKKyAgICAgICAgdmFsaWRUYXJnZXRM
aXN0LmFkZEVudHJ5KGhvc3RDYWxsRW50cnlwb2ludHNbaV0pOworICAgIAorICAgIHZhbGlkVGFy
Z2V0TGlzdC5zdGF0cygiQWZ0ZXIgSlNEb2xsYXJWTTo6cG9wdWxhdGVKSVRWYWxpZFRhcmdldExp
c3QoKTogIik7Cit9CisjZW5kaWYKKwogdm9pZCBKU0RvbGxhclZNOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNEb2xsYXJWTSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0RvbGxhclZNKj4oY2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYg
KzYxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAorI2lm
IEVOQUJMRShKSVRfQ0FHRSkKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwb3B1
bGF0ZUpJVFZhbGlkVGFyZ2V0TGlzdCgpOworI2VuZGlmCisKICAgICBTdHJ1Y3R1cmUqIG9iamVj
dERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xvdFN0YXR1c1N0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fb2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVz
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAkocmV2aXNpb24g
MjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMCArNTgsNiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFNpZ2lsbENyYXNoQW5hbHl6ZXIoKSB7IH0KICAgICB2b2lkIGR1bXBDb2RlQmxvY2so
Q29kZUJsb2NrKiwgdm9pZCogbWFjaGluZVBDKTsKLQotI2lmIEVOQUJMRShBUk02NF9ESVNBU1NF
TUJMRVIpCi0gICAgQTY0RE9wY29kZSBtX2FybTY0T3Bjb2RlOwotI2VuZGlmCiB9OwogCiAjaWYg
T1MoREFSV0lOKQpAQCAtMzIxLDE0ICszMTcsMTYgQEAgdm9pZCBTaWdpbGxDcmFzaEFuYWx5emVy
OjpkdW1wQ29kZUJsb2NrKAogICAgIGxvZygiRGlzYXNzZW1ibHk6Iik7CiAgICAgdWludDMyX3Qq
IGN1cnJlbnRQQyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihqaXRDb2RlLT5leGVjdXRh
YmxlQWRkcmVzcygpKTsKICAgICBzaXplX3QgYnl0ZUNvdW50ID0gaml0Q29kZS0+c2l6ZSgpOwor
ICAgIEE2NERPcGNvZGUgYXJtNjRPcGNvZGUoY3VycmVudFBDLCBieXRlQ291bnQpOworCiAgICAg
d2hpbGUgKGJ5dGVDb3VudCkgewogICAgICAgICBjaGFyIHBjU3RyaW5nWzI0XTsKICAgICAgICAg
aWYgKGN1cnJlbnRQQyA9PSBtYWNoaW5lUEMpIHsKICAgICAgICAgICAgIHNucHJpbnRmKHBjU3Ry
aW5nLCBzaXplb2YocGNTdHJpbmcpLCAiKiAweCVseCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihjdXJyZW50UEMpKTsKLSAgICAgICAgICAgIGxvZygiJTIwczogJXMgICAgPD09PT09PT09
PT09PT09PT09PT09PT09PT0iLCBwY1N0cmluZywgbV9hcm02NE9wY29kZS5kaXNhc3NlbWJsZShj
dXJyZW50UEMpKTsKKyAgICAgICAgICAgIGxvZygiJTIwczogJXMgICAgPD09PT09PT09PT09PT09
PT09PT09PT09PT0iLCBwY1N0cmluZywgYXJtNjRPcGNvZGUuZGlzYXNzZW1ibGUoY3VycmVudFBD
KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbnByaW50ZihwY1N0cmluZywgc2l6
ZW9mKHBjU3RyaW5nKSwgIjB4JWx4IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGN1cnJl
bnRQQykpOwotICAgICAgICAgICAgbG9nKCIlMjBzOiAlcyIsIHBjU3RyaW5nLCBtX2FybTY0T3Bj
b2RlLmRpc2Fzc2VtYmxlKGN1cnJlbnRQQykpOworICAgICAgICAgICAgbG9nKCIlMjBzOiAlcyIs
IHBjU3RyaW5nLCBhcm02NE9wY29kZS5kaXNhc3NlbWJsZShjdXJyZW50UEMpKTsKICAgICAgICAg
fQogICAgICAgICBjdXJyZW50UEMrKzsKICAgICAgICAgYnl0ZUNvdW50IC09IHNpemVvZih1aW50
MzJfdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4Miw5ICs1
ODIsNDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisjaWYgRU5BQkxF
KEpJVF9DQUdFKQorICAgICAgICBhdXRvKiBwYXRjaCA9IGFkZFBhdGNocG9pbnQocmVzdWx0VHlw
ZSk7CisgICAgICAgIEIzOjpFZmZlY3RzIGVmZmVjdHMgPSBCMzo6RWZmZWN0czo6bm9uZSgpOwor
ICAgICAgICBlZmZlY3RzLnJlYWRzID0gQjM6OkhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIGVm
ZmVjdHMud3JpdGVzID0gQjM6OkhlYXBSYW5nZTo6dG9wKCk7CisgICAgICAgIHBhdGNoLT5lZmZl
Y3RzID0gZWZmZWN0czsKKworICAgICAgICBpZiAocmVzdWx0VHlwZS5pc0ludCgpKQorICAgICAg
ICAgICAgcGF0Y2gtPnJlc3VsdENvbnN0cmFpbnRzID0geyBCMzo6VmFsdWVSZXA6OnJlZyhHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUikgfTsKKyAgICAgICAgZWxzZSBpZiAocmVzdWx0VHlwZS5pc0Zs
b2F0KCkpCisgICAgICAgICAgICBwYXRjaC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IEIzOjpWYWx1
ZVJlcDo6cmVnKEZQUkluZm86OnJldHVyblZhbHVlRlBSKSB9OworCisgICAgICAgIHBhdGNoLT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBh
dGNoLT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwo
KSk7CisKKyAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBwYXRjaEFyZ3M7CisKKyAgICAg
ICAgc2l6ZV90IGdwQXJndW1lbnRDb3VudCA9IDA7CisgICAgICAgIHNpemVfdCBmcEFyZ3VtZW50
Q291bnQgPSAwOworCisgICAgICAgIGZvciAoVHlwZWRUbXAgYXJnIDogVmVjdG9yPFR5cGVkVG1w
LCBzaXplb2YuLi4oQXJncyk+e3RoZUFyZ3MuLi59KSB7CisgICAgICAgICAgICBpZiAoYXJnLnR5
cGUoKSA9PSBUeXBlOjpGNjQgfHwgYXJnLnR5cGUoKSA9PSBUeXBlOjpGMzIpCisgICAgICAgICAg
ICAgICAgcGF0Y2hBcmdzLmFwcGVuZChDb25zdHJhaW5lZFRtcChhcmcsIEFyZ3VtZW50TG9jYXRp
b246OnJlZyhGUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoZnBBcmd1bWVudENvdW50KyspKSkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhdGNoQXJncy5hcHBlbmQoQ29u
c3RyYWluZWRUbXAoYXJnLCBBcmd1bWVudExvY2F0aW9uOjpyZWcoR1BSSW5mbzo6dG9Bcmd1bWVu
dFJlZ2lzdGVyKGdwQXJndW1lbnRDb3VudCsrKSkpKTsKKyAgICAgICAgfQorCisgICAgICAgIEFT
U0VSVChncEFyZ3VtZW50Q291bnQgPD0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
cyk7CisgICAgICAgIEFTU0VSVChmcEFyZ3VtZW50Q291bnQgPD0gRlBSSW5mbzo6bnVtYmVyT2ZB
cmd1bWVudFJlZ2lzdGVycyk7CisKKyAgICAgICAgcGF0Y2gtPnNldEdlbmVyYXRvcihbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewor
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOworICAgICAgICAgICAgaml0LmNhbGwoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
dGFnQ0Z1bmN0aW9uUHRyPHZvaWQqPihmdW5jLCBOb1B0clRhZykpLCBOb1B0clRhZyk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGVtaXRQYXRjaHBvaW50KGJsb2NrLCBwYXRjaCwgVmVjdG9yPFR5
cGVkVG1wLCA4PiB7IHJlc3VsdCB9LCBXVEZNb3ZlKHBhdGNoQXJncykpOworI2Vsc2UKICAgICAg
ICAgYXV0byBtYWtlRHVtbXlWYWx1ZSA9IFsmXSAoVG1wIHRtcCkgewogICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgaXMgbGVzcyB0aGFuIGlkZWFsIHRvIGNyZWF0ZSBkdW1teSB2YWx1ZXMganVz
dCB0byBzYXRpc2Z5IEFpcidzCi0gICAgICAgICAgICAvLyB2YWxpZGF0aW9uLiBXZSBzaG91bGQg
YWJzdHJjYXQgQ0NhbGwgZW5vdWdoIHNvIHdlJ3JlIG5vdCByZWxpYW50IG9uIGFyZ3VtZW50cwor
ICAgICAgICAgICAgLy8gdmFsaWRhdGlvbi4gV2Ugc2hvdWxkIGFic3RyYWN0IENDYWxsIGVub3Vn
aCBzbyB3ZSdyZSBub3QgcmVsaWFudCBvbiBhcmd1bWVudHMKICAgICAgICAgICAgIC8vIHRvIHRo
ZSBCMzo6Q0NhbGxWYWx1ZS4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAKICAgICAgICAgICAgIGlmICh0bXAuaXNHUCgpKQpAQCAt
NjA4LDYgKzY0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpbnN0LmFyZ3MuYXBwZW5kKHRt
cCk7CiAKICAgICAgICAgYmxvY2stPmFwcGVuZChXVEZNb3ZlKGluc3QpKTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHN0YXRpYyBCMzo6QWlyOjpPcGNvZGUgbW92ZU9wRm9yVmFsdWVUeXBlKFR5cGUg
dHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmgiCiAjaW5jbHVk
ZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ0NhbGxWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkIzQ2FnZWRDQ2FsbC5oIgogI2luY2x1ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzRml4U1NBLmgiCiAjaW5jbHVkZSAiQjNHZW5lcmF0ZS5oIgpAQCAtMjc0LDYgKzI3
NSw4IEBAIHB1YmxpYzoKICAgICBCMzo6VHlwZSB0b0IzUmVzdWx0VHlwZShCbG9ja1NpZ25hdHVy
ZSk7CiAKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24sIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgVmFsdWUqIGVtaXRDYWxsT3BlcmF0aW9uKEIzOjpUeXBlLCBGdW5jdGlv
biwgQXJncy4uLiBhcmdzKTsKICAgICB2b2lkIGVtaXRFeGNlcHRpb25DaGVjayhDQ2FsbEhlbHBl
cnMmLCBFeGNlcHRpb25UeXBlKTsKIAogICAgIHZvaWQgZW1pdEVudHJ5VGllclVwQ2hlY2soKTsK
QEAgLTU4NSw2ICs1ODgsMTggQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1i
bHlHbAogICAgIH0KIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uLCB0eXBlbmFtZS4u
LiBBcmdzPgorVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRDYWxsT3BlcmF0aW9uKEIzOjpUeXBl
IHR5cGUsIE9wZXJhdGlvbiBvcGVyYXRpb24sIEFyZ3MuLi4gYXJncykKK3sKKyNpZiBFTkFCTEUo
SklUX0NBR0UpCisgICAgcmV0dXJuIGNhZ2VkQ0NhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywg
b3JpZ2luKCksIHR5cGUsIG9wZXJhdGlvbiwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
KyNlbHNlCisgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4o
bV9wcm9jLCB0eXBlLCBvcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb25QdHI8QjNDQ2Fs
bFB0clRhZz5vcGVyYXRpb24sIEIzQ0NhbGxQdHJUYWcpKSwKKyAgICAgICAgc3RkOjpmb3J3YXJk
PEFyZ3M+KGFyZ3MpLi4uKTsKKyNlbmRpZgorfQorCiB2b2lkIEIzSVJHZW5lcmF0b3I6OmVtaXRF
eGNlcHRpb25DaGVjayhDQ2FsbEhlbHBlcnMmIGppdCwgRXhjZXB0aW9uVHlwZSB0eXBlKQogewog
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQz
Ml90Pih0eXBlKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC02OTMsMTAgKzcwOCw5IEBA
IGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3MKIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkVGFibGVHZXQodW5zaWduZWQgdGFibGVJbmRleCwgRXhwcmVzc2lvblR5cGUgaW5k
ZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBG
SVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODUwNj4uCi0gICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
Q2FsbFZhbHVlPihtX3Byb2MsIHRvQjNUeXBlKEFueXJlZiksIG9yaWdpbigpLAotICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25HZXRXYXNtVGFibGVFbGVtZW50
KSksCisgICAgcmVzdWx0ID0gZW1pdENhbGxPcGVyYXRpb24odG9CM1R5cGUoQW55cmVmKSwgb3Bl
cmF0aW9uR2V0V2FzbVRhYmxlRWxlbWVudCwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFi
bGVJbmRleCksIGluZGV4KTsKLQorICAgIAogICAgIHsKICAgICAgICAgQ2hlY2tWYWx1ZSogY2hl
Y2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ss
IG9yaWdpbigpLAogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIHJlc3VsdCwgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIDApKSk7CkBAIC03MTIsOCArNzI2LDcg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUdldCh1bnNpZ25lZAogYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRUYWJsZVNldCh1bnNpZ25lZCB0YWJsZUluZGV4LCBFeHByZXNzaW9uVHlwZSBp
bmRleCwgRXhwcmVzc2lvblR5cGUgdmFsdWUpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBG
SVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5ODUwNj4uCi0gICAgYXV0byBzaG91bGRUaHJvdyA9IG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBCMzo6SW50MzIsIG9yaWdpbigpLAotICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25TZXRXYXNtVGFibGVFbGVt
ZW50KSksCisgICAgYXV0byBzaG91bGRUaHJvdyA9IGVtaXRDYWxsT3BlcmF0aW9uKEIzOjpJbnQz
Miwgb3BlcmF0aW9uU2V0V2FzbVRhYmxlRWxlbWVudCwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgp
LCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4o
KSwgdGFibGVJbmRleCksIGluZGV4LCB2YWx1ZSk7CiAKICAgICB7CkBAIC03MzEsOSArNzQ0LDcg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZVNldCh1bnNpZ25lZAogYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgotCi0gICAgcmVz
dWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpJ
bnQ2NCwgb3JpZ2luKCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQ
dHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9w
ZXJhdGlvbldhc21SZWZGdW5jKSksCisgICAgcmVzdWx0ID0gZW1pdENhbGxPcGVyYXRpb24oQjM6
OkludDY0LCBvcGVyYXRpb25XYXNtUmVmRnVuYywKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBh
ZGRDb25zdGFudChUeXBlOjpJMzIsIGluZGV4KSk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtNzQy
LDggKzc1Myw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50MzJfdCAKIGF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVTaXplKHVuc2lnbmVkIHRhYmxlSW5kZXgsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1p
dCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODUwNj4uCi0gICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVl
PihtX3Byb2MsIHRvQjNUeXBlKEkzMiksIG9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlv
bjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25HZXRXYXNtVGFibGVTaXplKSksCisgICAgcmVzdWx0
ID0gZW1pdENhbGxPcGVyYXRpb24odG9CM1R5cGUoSTMyKSwgb3BlcmF0aW9uR2V0V2FzbVRhYmxl
U2l6ZSwKICAgICAgICAgaW5zdGFuY2VWYWx1ZSgpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdGFibGVJbmRleCkpOwogCiAgICAgcmV0
dXJuIHsgfTsKQEAgLTc1MSw4ICs3NjEsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxl
U2l6ZSh1bnNpZ25lCiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVGFibGVHcm93KHVuc2lnbmVk
IHRhYmxlSW5kZXgsIEV4cHJlc3Npb25UeXBlIGZpbGwsIEV4cHJlc3Npb25UeXBlIGRlbHRhLCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgcmVzdWx0ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIHRvQjNUeXBlKEkz
MiksIG9yaWdpbigpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRy
VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVy
YXRpb25XYXNtVGFibGVHcm93KSksCisgICAgcmVzdWx0ID0gZW1pdENhbGxPcGVyYXRpb24odG9C
M1R5cGUoSTMyKSwgb3BlcmF0aW9uV2FzbVRhYmxlR3JvdywKICAgICAgICAgaW5zdGFuY2VWYWx1
ZSgpLCBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmln
aW4oKSwgdGFibGVJbmRleCksIGZpbGwsIGRlbHRhKTsKIAogICAgIHJldHVybiB7IH07CkBAIC03
NjAsOCArNzY5LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRUYWJsZUdyb3codW5zaWduZQog
CiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFRhYmxlRmlsbCh1bnNpZ25lZCB0YWJsZUluZGV4LCBF
eHByZXNzaW9uVHlwZSBvZmZzZXQsIEV4cHJlc3Npb25UeXBlIGZpbGwsIEV4cHJlc3Npb25UeXBl
IGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgdG9CM1R5cGUoSTMyKSwgb3JpZ2lu
KCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9w
cm9jLCBvcmlnaW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9wZXJhdGlvbldhc21U
YWJsZUZpbGwpKSwKKyAgICBhdXRvIHJlc3VsdCA9IGVtaXRDYWxsT3BlcmF0aW9uKHRvQjNUeXBl
KEkzMiksIG9wZXJhdGlvbldhc21UYWJsZUZpbGwsCiAgICAgICAgIGluc3RhbmNlVmFsdWUoKSwg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IHRhYmxlSW5kZXgpLCBvZmZzZXQsIGZpbGwsIGNvdW50KTsKIAogICAgIHsKQEAgLTc5NSwxMCAr
ODAzLDggQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRVbnJlYWNoYWJsZSgpIC0+IAogCiBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICByZXN1bHQgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50MzIsIG9yaWdpbigp
LAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25Hcm93TWVt
b3J5KSksCi0gICAgICAgIGZyYW1lUG9pbnRlcigpLCBpbnN0YW5jZVZhbHVlKCksIGRlbHRhKTsK
LQorICAgIHJlc3VsdCA9IGVtaXRDYWxsT3BlcmF0aW9uKEludDMyLCBvcGVyYXRpb25Hcm93TWVt
b3J5LCBmcmFtZVBvaW50ZXIoKSwgaW5zdGFuY2VWYWx1ZSgpLCBkZWx0YSk7CisgICAgCiAgICAg
cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6Ok5v
LCBtX2luZm8ubWVtb3J5LCBpbnN0YW5jZVZhbHVlKCksIG1fcHJvYywgbV9jdXJyZW50QmxvY2sp
OwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTkwMCw4ICs5MDYsNyBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6OnNldEdsb2JhbCh1aW50MzJfdCBpCiAgICAgICAgICAgICBjb250aW51YXRpb24tPmFkZFBy
ZWRlY2Vzc29yKG1fY3VycmVudEJsb2NrKTsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0g
ZG9TbG93UGF0aDsKIAotICAgICAgICAgICAgVmFsdWUqIHdyaXRlQmFycmllckFkZHJlc3MgPSBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihvcGVyYXRpb25XYXNtV3JpdGVCYXJyaWVyU2xv
d1BhdGgpKTsKLSAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1
ZT4obV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luKCksIHdyaXRlQmFycmllckFkZHJlc3MsIGNlbGws
IHZtKTsKKyAgICAgICAgICAgIGVtaXRDYWxsT3BlcmF0aW9uKEIzOjpWb2lkLCBvcGVyYXRpb25X
YXNtV3JpdGVCYXJyaWVyU2xvd1BhdGgsIGNlbGwsIHZtKTsKICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29u
dGludWF0aW9uKTsKIAogICAgICAgICAgICAgY29udGludWF0aW9uLT5hZGRQcmVkZWNlc3Nvciht
X2N1cnJlbnRCbG9jayk7CkBAIC05NTMsOCArOTU4LDcgQEAgaW5saW5lIHZvaWQgQjNJUkdlbmVy
YXRvcjo6ZW1pdFdyaXRlQmFycgogICAgIGNvbnRpbnVhdGlvbi0+YWRkUHJlZGVjZXNzb3IobV9j
dXJyZW50QmxvY2spOwogICAgIG1fY3VycmVudEJsb2NrID0gZG9TbG93UGF0aDsKIAotICAgIFZh
bHVlKiB3cml0ZUJhcnJpZXJBZGRyZXNzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25z
dFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0YWdDRnVuY3Rpb248QjNDQ2FsbFB0clRhZz4o
b3BlcmF0aW9uV2FzbVdyaXRlQmFycmllclNsb3dQYXRoKSk7Ci0gICAgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEIzOjpWb2lkLCBvcmlnaW4oKSwgd3JpdGVC
YXJyaWVyQWRkcmVzcywgY2VsbCwgdm0pOworICAgIGVtaXRDYWxsT3BlcmF0aW9uKEIzOjpWb2lk
LCBvcGVyYXRpb25XYXNtV3JpdGVCYXJyaWVyU2xvd1BhdGgsIGNlbGwsIHZtKTsKICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCks
IGNvbnRpbnVhdGlvbik7CiAKICAgICBjb250aW51YXRpb24tPmFkZFByZWRlY2Vzc29yKG1fY3Vy
cmVudEJsb2NrKTsKQEAgLTIxNDYsOCArMjE1MCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
T3A8T3BUeXBlOjpJMzJQb3AKICAgICB9CiAjZW5kaWYKIAotICAgIFZhbHVlKiBmdW5jQWRkcmVz
cyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmln
aW4oKSwgdGFnQ0Z1bmN0aW9uPEIzQ0NhbGxQdHJUYWc+KG9wZXJhdGlvblBvcGNvdW50MzIpKTsK
LSAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJv
YywgSW50MzIsIG9yaWdpbigpLCBFZmZlY3RzOjpub25lKCksIGZ1bmNBZGRyZXNzLCBhcmcpOwor
ICAgIHJlc3VsdCA9IGVtaXRDYWxsT3BlcmF0aW9uKEIzOjpJbnQzMiwgb3BlcmF0aW9uUG9wY291
bnQzMiwgYXJnKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0yMTY3LDggKzIxNzAsNyBAQCBh
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0UG9wCiAgICAgfQogI2VuZGlmCiAK
LSAgICBWYWx1ZSogZnVuY0FkZHJlc3MgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0
UHRyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHRhZ0NGdW5jdGlvbjxCM0NDYWxsUHRyVGFnPihv
cGVyYXRpb25Qb3Bjb3VudDY0KSk7Ci0gICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEludDY0LCBvcmlnaW4oKSwgRWZmZWN0czo6bm9uZSgp
LCBmdW5jQWRkcmVzcywgYXJnKTsKKyAgICByZXN1bHQgPSBlbWl0Q2FsbE9wZXJhdGlvbihCMzo6
SW50NjQsIG9wZXJhdGlvblBvcGNvdW50NjQsIGFyZyk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRnJh
bWVUcmFjZXJzLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
SklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdElubGluZXMuaCIK
ICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgpAQCAtNTUsNiArNTYsMjcgQEAgSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJmcmFtZS1hZGRyZXNzIikKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBXYXNtIHsKIAorVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25XYXNtVGhyb3dCYWRJ
NjQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25XYXNtVHJpZ2dlck9TUkVudHJ5Tm93KTsK
K1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uV2FzbVRyaWdnZXJUaWVyVXBOb3cpOworVkFMSURf
SklUX1RBUkdFVChvcGVyYXRpb25XYXNtVW53aW5kKTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0
aW9uQ29udmVydFRvRjY0KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29udmVydFRvSTMy
KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uQ29udmVydFRvRjMyKTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uSXRlcmF0ZVJlc3VsdHMpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRp
b25BbGxvY2F0ZVJlc3VsdHNBcnJheSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbldhc21X
cml0ZUJhcnJpZXJTbG93UGF0aCk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvblBvcGNvdW50
MzIpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25Qb3Bjb3VudDY0KTsKK1ZBTElEX0pJVF9U
QVJHRVQob3BlcmF0aW9uR3Jvd01lbW9yeSk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkdl
dFdhc21UYWJsZUVsZW1lbnQpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25TZXRXYXNtVGFi
bGVFbGVtZW50KTsKK1ZBTElEX0pJVF9UQVJHRVQob3BlcmF0aW9uV2FzbVRhYmxlR3Jvdyk7CitW
QUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbldhc21UYWJsZUZpbGwpOworVkFMSURfSklUX1RBUkdF
VChvcGVyYXRpb25XYXNtUmVmRnVuYyk7CitWQUxJRF9KSVRfVEFSR0VUKG9wZXJhdGlvbkdldFdh
c21UYWJsZVNpemUpOworVkFMSURfSklUX1RBUkdFVChvcGVyYXRpb25XYXNtVG9KU0V4Y2VwdGlv
bik7CisKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25XYXNtVGhyb3dCYWRJNjQoSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKIHsKICAgICBWTSYgdm0gPSBpbnN0YW5jZS0+dm0o
KTsKQEAgLTIxOCw3ICsyNDAsNyBAQCBzdGF0aWMgdm9pZCBkb09TUkVudHJ5KEluc3RhbmNlKiBp
bnN0YW5jCiAgICAgY29udGV4dC5ncHIoQVJNNjRSZWdpc3RlcnM6OmxyKSA9IGJpdHdpc2VfY2Fz
dDxVQ1BVUmVnaXN0ZXI+KCooZnJhbWVQb2ludGVyICsgMSkpOwogICAgIGNvbnRleHQuc3AoKSA9
IGZyYW1lUG9pbnRlciArIDI7CiAgICAgc3RhdGljX2Fzc2VydChBc3NlbWJseUhlbHBlcnM6OnBy
b2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKSA9PSBzaXplb2Yodm9pZCopICogMik7Ci0jaWYgQ1BV
KEFSTTY0RSkKKyNpZiBDUFUoQVJNNjRFKSAmJiAhRU5BQkxFKEpJVF9DQUdFKQogICAgIC8vIExS
IG5lZWRzIHRvIGJlIHVudGFnZ2VkIHNpbmNlIE9TUiBlbnRyeSBmdW5jdGlvbiBwcm9sb2d1ZSB3
aWxsIHRhZyBpdCB3aXRoIFNQLiBUaGlzIGlzIHNpbWlsYXIgdG8gdGFpbC1jYWxsLgogICAgIGNv
bnRleHQuZ3ByKEFSTTY0UmVnaXN0ZXJzOjpscikgPSBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVy
Pih1bnRhZ0NvZGVQdHIoY29udGV4dC5ncHI8dm9pZCo+KEFSTTY0UmVnaXN0ZXJzOjpsciksIGJp
dHdpc2VfY2FzdDxQdHJUYWc+KGNvbnRleHQuc3AoKSkpKTsKICNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UaHVua3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw4ICs4NSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHRyCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdGFja0J5dGVzVXNlZEZvclJlZ2lzdGVyUHJlc2Vy
dmF0aW9uID0gU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVJlZ2lzdGVyc1RvU3Rh
Y2tGb3JDYWxsKGppdCwgcmVnaXN0ZXJzVG9TcGlsbCwgZXh0cmFQYWRkaW5nQnl0ZXMpOwogCiAg
ICAgaml0LmxvYWRXYXNtQ29udGV4dEluc3RhbmNlKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGppdC5jYWxsKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKHVudGFnQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+KG9wZXJhdGlvbldhc21UcmlnZ2Vy
VGllclVwTm93KSksIE5vUHRyVGFnKTsKKyNlbHNlCiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9u
V2FzbVRyaWdnZXJUaWVyVXBOb3cpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICBqaXQu
Y2FsbChHUFJJbmZvOjphcmd1bWVudEdQUjIsIE9wZXJhdGlvblB0clRhZyk7CisjZW5kaWYKIAog
ICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVzdG9yZVJlZ2lzdGVyc0Zyb21TdGFja0Zv
ckNhbGwoaml0LCByZWdpc3RlcnNUb1NwaWxsLCBSZWdpc3RlclNldCgpLCBudW1iZXJPZlN0YWNr
Qnl0ZXNVc2VkRm9yUmVnaXN0ZXJQcmVzZXJ2YXRpb24sIGV4dHJhUGFkZGluZ0J5dGVzKTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5j
cHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkNhdGNoU2NvcGUuaCIKICNpbmNsdWRlICJEZWZlcnJlZFdvcmtUaW1lci5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAi
SlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdElubGluZXMuaCIKICNpbmNs
dWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgpAQCAtNjIsOSArNjMsOSBAQCBGT1JfRUFD
SF9XRUJBU1NFTUJMWV9DT05TVFJVQ1RPUl9UWVBFKERFCiAKICN1bmRlZiBERUZJTkVfQ0FMTEJB
Q0tfRk9SX0NPTlNUUlVDVE9SCiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVG
dW5jKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwod2Vi
QXNzZW1ibHlDb21waWxlRnVuYywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHdlYkFzc2VtYmx5SW5zdGFudGlh
dGVGdW5jLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIFZBTElEX0pTQ19IT1NUX0NBTEwod2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMsIEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
CisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvci5oIgogI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgiCkBAIC0zOCw2ICszOSwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFi
bGVXZWJBc3NlbWJseUNvbXBpbGVFcnJvciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShX
ZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yKSB9OwogCisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlDb21waWxl
RXJyb3IsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJvciwgSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwogLyogU291cmNlIGZvciBXZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oCiAgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJB
c3NlbWJseUNvbXBpbGVFcnJvcgogIEBlbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyNjc0
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKIAorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
SW5saW5lcy5oIgpAQCAtNTYsNiArNTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xh
c3NJbmZvIFdlYkFzc2VtYmx5RnVuY3Rpb246OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5RnVuY3Rp
b24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFdlYkFzc2VtYmx5RnVuY3Rpb24pIH07CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uLCBKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vi
QXNzZW1ibHlGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC00MTMs
NyArNDE2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYgogICAg
IGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIodGhpcyksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKLSNpZiBDUFUoQVJNNjRFKQorI2lmIENQVShBUk02NEUpICYmICFFTkFCTEUo
SklUX0NBR0UpCiAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogI2VuZGlmCiAgICAgYXV0
byBqdW1wVG9Ib3N0Q2FsbFRodW5rID0gaml0Lmp1bXAoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJKSVRW
YWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5R2xvYmFsLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuaCIK
QEAgLTM4LDYgKzM5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJB
c3NlbWJseUdsb2JhbENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sICZjb25zdHJ1Y3Rvckdsb2JhbFdlYkFzc2VtYmx5R2xvYmFsLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5R2xvYmFsQ29uc3RydWN0b3IpIH07CiAKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdEpTV2ViQXNzZW1i
bHlHbG9iYWwsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsSlNXZWJBc3NlbWJseUdsb2JhbCwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwogLyogU291cmNlIGZvciBXZWJBc3NlbWJseUdsb2Jh
bENvbnN0cnVjdG9yLmx1dC5oCiAgQGJlZ2luIGNvbnN0cnVjdG9yR2xvYmFsV2ViQXNzZW1ibHlH
bG9iYWwKICBAZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUdsb2JhbFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNjc0
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwxNCBAQAogI2luY2x1ZGUg
IkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlHbG9iYWwu
aCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseUdsb2JhbFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
R2xvYmFsUHJvdG9HZXR0ZXJGdW5jVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5R2xvYmFsUHJv
dG9TZXR0ZXJGdW5jVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHdlYkFzc2VtYmx5R2xvYmFsUHJvdG9G
dW5jVmFsdWVPZiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHdlYkFzc2VtYmx5R2xvYmFsUHJvdG9HZXR0ZXJG
dW5jVmFsdWUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCh3ZWJBc3NlbWJseUdsb2JhbFByb3RvU2V0dGVyRnVu
Y1ZhbHVlLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogfQogCiAjaW5jbHVkZSAiV2Vi
QXNzZW1ibHlHbG9iYWxQcm90b3R5cGUubHV0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRl
ICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgi
CkBAIC0zOSw2ICs0MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2Vi
QXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlJbnN0YW5jZSwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IpIH07CiAK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKIC8qIFNvdXJjZSBmb3IgV2ViQXNz
ZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmx1dC5oCiAgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVX
ZWJBc3NlbWJseUluc3RhbmNlCiAgQGVuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTIg
KzI5LDEzIEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5
QmFycmllcklubGluZXMuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1
bmNFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCh3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhw
b3J0cywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIH0KIAogI2luY2x1ZGUgIldlYkFz
c2VtYmx5SW5zdGFuY2VQcm90b3R5cGUubHV0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNs
dWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlMaW5rRXJy
b3JQcm90b3R5cGUuaCIKQEAgLTM4LDYgKzM5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0
IENsYXNzSW5mbyBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlMaW5r
RXJyb3IsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlMaW5rRXJyb3JD
b25zdHJ1Y3RvcikgfTsKIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NB
TEwoY29uc3RydWN0SlNXZWJBc3NlbWJseUxpbmtFcnJvciwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxK
U1dlYkFzc2VtYmx5TGlua0Vycm9yLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiAv
KiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TGlua0Vycm9yQ29uc3RydWN0b3IubHV0LmgKICBAYmVn
aW4gY29uc3RydWN0b3JUYWJsZVdlYkFzc2VtYmx5TGlua0Vycm9yCiAgQGVuZApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNZW1vcnlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
CisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0SW5saW5lcy5oIgpAQCAtNDQsNiArNDUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3Qg
Q2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseU1lbW9yeSwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9y
KSB9OwogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjb25zdHJ1
Y3RKU1dlYkFzc2VtYmx5TWVtb3J5LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbEpTV2ViQXNzZW1ibHlN
ZW1vcnksIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKIC8qIFNvdXJjZSBmb3IgV2Vi
QXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5sdXQuaAogIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxl
V2ViQXNzZW1ibHlNZW1vcnkKICBAZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5QmFycmllcklu
bGluZXMuaCIKKyNpbmNsdWRlICJKSVRWYWxpZFRhcmdldC5oIgogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXIuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0SW5saW5lcy5oIgpAQCAtMzgsOCArMzksOCBAQAogI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCh3ZWJBc3NlbWJseU1l
bW9yeVByb3RvRnVuY0dyb3csIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCh3ZWJBc3NlbWJseU1lbW9yeVByb3Rv
RnVuY0J1ZmZlciwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIH0KIAogI2luY2x1ZGUg
IldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oIgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJC
dXR0ZXJmbHlJbmxpbmVzLmgiCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdElubGluZXMuaCIKQEAgLTQyLDkgKzQzLDEyIEBACiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1
bGVFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTCh3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25z
LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZB
TElEX0pTQ19IT1NUX0NBTEwod2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzLCBKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NB
TEwod2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY29uc3RydWN0SlNX
ZWJBc3NlbWJseU1vZHVsZSwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxKU1dlYkFzc2VtYmx5TW9kdWxl
LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiB9CiAKICNpbmNsdWRlICJXZWJBc3Nl
bWJseU1vZHVsZUNvbnN0cnVjdG9yLmx1dC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
CisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5UnVudGltZUVycm9yUHJvdG90eXBlLmgiCkBAIC0zOCw2ICszOSw5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmY29uc3RydWN0b3JUYWJs
ZVdlYkFzc2VtYmx5UnVudGltZUVycm9yLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdl
YkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IpIH07CiAKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlSdW50aW1lRXJy
b3IsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
VkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciwgSlNHbG9i
YWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKwogLyogU291cmNlIGZvciBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oCiAgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvcgogIEBlbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5VGFibGVDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlUYWJsZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkpJVFZhbGlkVGFyZ2V0
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKQEAgLTQwLDYgKzQx
LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlUYWJsZSwgSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxM
KGNhbGxKU1dlYkFzc2VtYmx5VGFibGUsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisK
IGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsg
IkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJmNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJseVRh
YmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5VGFibGVDb25zdHJ1
Y3RvcikgfTsKIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0
LmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAKICNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpJVFZh
bGlkVGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKQEAg
LTM3LDEwICszOCwxMCBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7Ci1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eVRhYmxlUHJvdG9GdW5jTGVuZ3RoKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci1zdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5j
R3JvdyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwod2ViQXNzZW1ibHlUYWJs
ZVByb3RvRnVuY0xlbmd0aCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1
bmNHcm93LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIFZBTElEX0pTQ19IT1NUX0NBTEwod2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCwgSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9K
U0NfSE9TVF9DQUxMKHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBl
Lmx1dC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjY3NDU0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogCisjaW5jbHVkZSAiSklUVmFsaWRUYXJnZXQuaCIKICNpbmNsdWRlICJKU09i
amVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNs
dWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgpAQCAtMzYsNiArMzcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpzX2lu
Zm8gPSB7ICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24pIH07CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
Kwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5V3Jh
cHBlckZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYs
MTAgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVy
biAiQyIgUE9ETWF0Y2hSZXN1bHQgY2FsbFRvUmVnRXhwSklUQ29kZShjb25zdCB2b2lkKiBpbnB1
dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5n
Q29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0LCB2b2lkKik7CisjZW5kaWYKKwogY2xhc3Mg
WWFyckNvZGVCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoWWFyckNvZGVCbG9jayk7CkBAIC0xMDksMjUgKzExMyw0MCBAQCBwdWJs
aWM6CiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xk
ZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXM4Qml0Q29kZSgp
KTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdChjYWxs
VG9SZWdFeHBKSVRDb2RlKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIG1hdGNoaW5nQ29u
dGV4dCwgbV9yZWY4LmNvZGUoKS5yZXRhZ2dlZEV4ZWN1dGFibGVBZGRyZXNzPE5vUHRyVGFnPigp
KSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8
WWFyckpJVENvZGU4LCBZYXJyOEJpdFB0clRhZz4obV9yZWY4LmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCBtYXRjaGluZ0NvbnRleHQpKTsK
KyNlbmRpZgogICAgIH0KIAogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgVUNoYXIqIGlu
cHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hp
bmdDb250ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQo
aGFzMTZCaXRDb2RlKCkpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmV0dXJuIE1h
dGNoUmVzdWx0KGNhbGxUb1JlZ0V4cEpJVENvZGUoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1
dCwgbWF0Y2hpbmdDb250ZXh0LCBtX3JlZjE2LmNvZGUoKS5yZXRhZ2dlZEV4ZWN1dGFibGVBZGRy
ZXNzPE5vUHRyVGFnPigpKSk7CiAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5j
dGlvblB0cjxZYXJySklUQ29kZTE2LCBZYXJyMTZCaXRQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIG1hdGNoaW5n
Q29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25z
dCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE1hdGNoaW5n
Q29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhh
czhCaXRDb2RlTWF0Y2hPbmx5KCkpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmV0
dXJuIE1hdGNoUmVzdWx0KGNhbGxUb1JlZ0V4cEpJVENvZGUoaW5wdXQsIHN0YXJ0LCBsZW5ndGgs
IG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCwgbV9tYXRjaE9ubHk4LmNvZGUoKS5yZXRhZ2dlZEV4
ZWN1dGFibGVBZGRyZXNzPE5vUHRyVGFnPigpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0
Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHk4LCBZYXJyTWF0
Y2hPbmx5OEJpdFB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5k
aWYKICAgICB9CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBt
YXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzMTZCaXRDb2RlTWF0Y2hP
bmx5KCkpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0
KGNhbGxUb1JlZ0V4cEpJVENvZGUoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNo
aW5nQ29udGV4dCwgbV9tYXRjaE9ubHkxNi5jb2RlKCkucmV0YWdnZWRFeGVjdXRhYmxlQWRkcmVz
czxOb1B0clRhZz4oKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFn
Q0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5MTYsIFlhcnJNYXRjaE9ubHkxNkJpdFB0
clRhZz4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0
YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQog
CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzQ1NCkKKysr
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIw
MjAtMDktMjIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gQ2FnZSBKSVQgcG9pbnRlcnMgdG8gdGhlIEpJVCByZWdpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBwYWdlIHJlc2VydmF0aW9uIGZ1
bmN0aW9uIHRvIGluY2x1ZGUgZ3VhcmQgcmVnaW9ucy4KKworICAgICAgICBBZGRlZCBhIG5ldyBz
dGF0aWMgcG9pbnRlciBoYXNoIGNsYXNzIGZvciB0YWJsZXMgaW4gbWVtb3J5IHRoYXQgY2Fubm90
IGdyb3cuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiB3dGYvT1NBbGxvY2F0b3IuaDoKKyAgICAgICAgKiB3dGYvUGFnZUJsb2NrLmg6CisgICAg
ICAgIChXVEY6OlBhZ2VCbG9jazo6UGFnZUJsb2NrKToKKyAgICAgICAgKiB3dGYvUGFnZVJlc2Vy
dmF0aW9uLmg6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZSk6CisgICAg
ICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKToKKyAgICAg
ICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMp
OgorICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3Vh
cmRSZWdpb25zKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpQYWdlUmVzZXJ2YXRp
b24pOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUNhbGxpbmdDb252ZW50aW9ucy5oOgorICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICAqIHd0Zi9QdHJUYWcuaDoKKyAgICAg
ICAgKFdURjo6dGFnQ29kZVB0ckltcGwpOgorICAgICAgICAoV1RGOjp1bnRhZ0NvZGVQdHJJbXBs
SGVscGVyKToKKyAgICAgICAgKFdURjo6dW50YWdDb2RlUHRySW1wbCk6CisgICAgICAgIChXVEY6
OnJldGFnQ29kZVB0ckltcGxIZWxwZXIpOgorICAgICAgICAqIHd0Zi9TdGF0aWNQdHJIYXNoU2V0
Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpTdGF0aWNQdHJIYXNoU2V0OjpTdGF0aWNQdHJIYXNo
U2V0KToKKyAgICAgICAgKFdURjo6U3RhdGljUHRySGFzaFNldDo6Y29udGFpbnMpOgorICAgICAg
ICAoV1RGOjpTdGF0aWNQdHJIYXNoU2V0OjphZGQpOgorICAgICAgICAoV1RGOjpTdGF0aWNQdHJI
YXNoU2V0OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RhdGljUHRySGFzaFNldDo6aGFz
aCk6CisgICAgICAgIChXVEY6OlN0YXRpY1B0ckhhc2hTZXQ6Om1heExvYWQgY29uc3QpOgorICAg
ICAgICAoV1RGOjpTdGF0aWNQdHJIYXNoU2V0OjpjYXN0KToKKyAgICAgICAgKiB3dGYvV1RGQ29u
ZmlnLmNwcDoKKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmg6CisgICAgICAgICogd3RmL3Bvc2l4
L09TQWxsb2NhdG9yUE9TSVguY3BwOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2
ZVVuY29tbWl0dGVkKToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21t
aXQpOgorCiAyMDIwLTA5LTIxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gQmlnSW50IHNob3VsZCB3b3JrIHdpdGggTWFwIC8gU2V0CkluZGV4OiBT
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NzQ1NCkK
KysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTQzNSw2ICs0MzUsNyBAQAogCQk1RkFEM0FFMTIxQjk2MzY2MDBCRUUxNzggLyogVVJM
SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkxIZWxw
ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU0MUNBRjQxNjMwREIyNjAw
NkQwREVDIC8qIENvcHlXVEZIZWFkZXJzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IENvcHlXVEZIZWFkZXJzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTkzQ0RFOTIyRkE0QTUyMDA4NzcxNEIgLyogUHJvY2Vzc01lbW9yeUZvb3Rwcmlu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzTWVtb3J5Rm9vdHBy
aW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1RTdGNUMzMjNDRDNFRUMwMDA0
RURFMSAvKiBTdGF0aWNQdHJIYXNoU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0YXRpY1B0ckhhc2hTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBB
OTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzBBOTkzRkQxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lz
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbFJlZ2lzdHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwRUNBNjBBMUIwMjQyNjgwMDQ0OTczOSAv
KiBBdG9tU3RyaW5nSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBdG9tU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjQ1
LDcgKzEyNDYsNyBAQAogCQkJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmggKi8sCiAJCQkJMzEzRURFQzk3NzhFNDlDOUJFQTkxQ0ZDIC8qIFN0YWNrVHJhY2UuY3BwICov
LAogCQkJCUVGN0Q2Q0Q1OUQ4NjQyQThBMERBODZBRCAvKiBTdGFja1RyYWNlLmggKi8sCi0JCQkJ
RkU5N0Y2QTgyNDVDRTVERDAwQzYzRkM2IC8qIFN0ZEludEV4dHJhcy5oICovLAorCQkJCTY1RTdG
NUMzMjNDRDNFRUMwMDA0RURFMSAvKiBTdGF0aWNQdHJIYXNoU2V0LmggKi8sCiAJCQkJQThBNDcz
MTExNTFBODI1QjAwNDEyM0ZGIC8qIFN0ZExpYkV4dHJhcy5oICovLAogCQkJCUZGMEE0MzY1ODg5
NTRGM0NCMDdEQkVDQSAvKiBTdGRMaXN0LmggKi8sCiAJCQkJMzkxQkQ2QkE0RDE2NEZEMjk0RjlB
OTNEIC8qIFN0ZE1hcC5oICovLApJbmRleDogU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCShyZXZpc2lvbiAyNjc0
NTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCwxMiArMzgsMTggQEAgcHVibGljOgogICAgICAgICBGYXN0TWFsbG9jUGFnZXMgPSBWTV9UQUdf
Rk9SX1RDTUFMTE9DX01FTU9SWSwKICAgICAgICAgSlNKSVRDb2RlUGFnZXMgPSBWTV9UQUdfRk9S
X0VYRUNVVEFCTEVBTExPQ0FUT1JfTUVNT1JZLAogICAgIH07CisgICAgCisgICAgZW51bSBHdWFy
ZHMgeworICAgICAgICBOb0d1YXJkcyA9IDAsCisgICAgICAgIEd1YXJkUGFnZXMsCisgICAgICAg
IEd1YXJkUmVnaW9ucworICAgIH07CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRy
aWM7IHJlc2VydmVVbmNvbW1pdHRlZCBhbGxvY2F0ZXMgVk0gaW4gYW4gdW5jb21taXR0ZWQgc3Rh
dGUsCiAgICAgLy8gcmVsZWFzZURlY29tbWl0dGVkIHNob3VsZCBiZSBjYWxsZWQgb24gYSByZWdp
b24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9uLAogICAgIC8vIHRoZSBt
ZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgZGVjb21taXR0ZWQgc3RhdGUuIHJlc2Vy
dmVVbmNvbW1pdHRlZCByZXR1cm5zIHRvCiAgICAgLy8geW91IG1lbW9yeSB0aGF0IGlzIHplcm9l
ZC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRl
ZChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9v
bCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNp
emVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4
ZWN1dGFibGUgPSBmYWxzZSwgR3VhcmRzIGd1YXJkcyA9IE5vR3VhcmRzKTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcmVsZWFzZURlY29tbWl0dGVkKHZvaWQqLCBzaXplX3Qp
OwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyB0aGV5IGNvbW1pdCBvciBk
ZWNvbW1pdCBhIHJlZ2lvbiBvZiBWTSAodW5jb21taXR0ZWQgVk0gc2hvdWxkCkBAIC01NSw3ICs2
MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2Vy
dmVBbmRDb21taXQgYWxsb2NhdGVzIFZNIGluIGFuIGNvbW1pdHRlZCBzdGF0ZSwKICAgICAvLyBk
ZWNvbW1pdEFuZFJlbGVhc2Ugc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxv
Y2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFs
bCBjdXJyZW50bHkgYmUgaW4gYSBjb21taXR0ZWQgc3RhdGUuCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3du
VXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9v
bCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2Us
IGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgR3VhcmRzIGd1
YXJkcyA9IE5vR3VhcmRzLCBzaXplX3QgZ3VhcmRTaXplID0gMCk7CiAgICAgc3RhdGljIHZvaWQg
ZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIGFraW4gdG8gcmVzZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJlbGVh
c2UsIGFib3ZlIC0gaG93ZXZlciByYXRoZXIgdGhhbgpJbmRleDogU291cmNlL1dURi93dGYvUGFn
ZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFnZUJsb2NrLmgJKHJldmlz
aW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BhZ2VCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw3ICs2OCw4IEBAIGNsYXNzIFBhZ2VCbG9jayB7CiBwdWJsaWM6CiAgICAgUGFnZUJs
b2NrKCkgPSBkZWZhdWx0OwogICAgIFBhZ2VCbG9jayh2b2lkKiwgc2l6ZV90LCBib29sIGhhc0d1
YXJkUGFnZXMpOwotICAgIAorICAgIFBhZ2VCbG9jayh2b2lkKiwgdm9pZCosIHNpemVfdCk7CisK
ICAgICB2b2lkKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIApAQCAtOTMsNiArOTQsMTMgQEAgaW5saW5l
IFBhZ2VCbG9jazo6UGFnZUJsb2NrKHZvaWQqIGJhc2UsIAogewogfQogCitpbmxpbmUgUGFnZUJs
b2NrOjpQYWdlQmxvY2sodm9pZCogcmVhbEJhc2UsIHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQor
ICAgIDogbV9yZWFsQmFzZShyZWFsQmFzZSkKKyAgICAsIG1fYmFzZShiYXNlKQorICAgICwgbV9z
aXplKHNpemUpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkNlaWxp
bmdPblBhZ2VTaXplOwpJbmRleDogU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0aW9uLmgJKHJldmlzaW9uIDI2
NzQ1NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvUGFnZUFsbG9jYXRpb24uaD4KIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC05NiwyMSArOTcsNDAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRp
b24gcmVzZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxv
Y2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkpOwot
ICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21t
aXR0ZWQoc2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKSwgc2l6ZSwgd3JpdGFibGUs
IGV4ZWN1dGFibGUsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBPU0FsbG9jYXRvcjo6Tm9HdWFyZHMp
OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVXaXRoR3Vh
cmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0
b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9
IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkpOwotICAg
ICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0
ZWQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRy
dWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBQ
YWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplICsgcGFn
ZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgT1NBbGxvY2F0b3I6Okd1
YXJkUGFnZXMpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMo
c2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtu
b3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0
dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsg
cGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSksIHNpemUs
IHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZh
dGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIs
IHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgT1NBbGxvY2F0b3I6Okd1YXJkUGFnZXMpLCBz
aXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSk7CiAgICAgfQogCisjaWYgRU5BQkxFKEpJ
VF9DQUdFKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZUFuZENvbW1pdFdpdGhH
dWFyZFJlZ2lvbnMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxs
b2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFi
bGUgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsK
KyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHNpemVfdCBndWFyZFNpemUgPSBzdGQ6Om1heChzaXpl
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KDEyOCAqIDEwMjQgKiAxMDI0KSk7CisgICAgICAgIHVuc2ln
bmVkIGxvZzJTaXplID0gZmFzdExvZzIoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpKTsKKyAg
ICAgICAgCisjZWxzZQorI2Vycm9yKCJVbmtub3duIGd1YXJkIHNpemUgZm9yIENQVSBpbiByZXNl
cnZlQW5kQ29tbWl0V2l0aEd1YXJkUmVnaW9ucygpIikKKyNlbmRpZgorICAgICAgICBBU1NFUlQo
c2l6ZSA8PSBndWFyZFNpemUpOworICAgICAgICB2b2lkKiByZWFsQmFzZSA9IE9TQWxsb2NhdG9y
OjpyZXNlcnZlQW5kQ29tbWl0KHNpemUgKyBndWFyZFNpemUgKiAzLCB1c2FnZSwgd3JpdGFibGUs
IGV4ZWN1dGFibGUsIE9TQWxsb2NhdG9yOjpHdWFyZFJlZ2lvbnMsIGd1YXJkU2l6ZSk7CisgICAg
ICAgIGludHB0cl90IHJlYWxCYXNlQXNJbnQgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pihy
ZWFsQmFzZSk7CisgICAgICAgIHZvaWQqIGJhc2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihy
ZWFsQmFzZUFzSW50ICsgKHJlYWxCYXNlQXNJbnQgJiAoMSA8PCBsb2cyU2l6ZSkgPyAxIDogMikg
KiBndWFyZFNpemUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKHJlYWxCYXNlLCBi
YXNlLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7CisgICAgfQorI2VuZGlmCisKICAgICB2
b2lkIGRlYWxsb2NhdGUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2NvbW1pdHRlZCk7CkBA
IC0xMzUsNiArMTU1LDE0IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAorICAgIFBhZ2VSZXNl
cnZhdGlvbih2b2lkKiByZWFsQmFzZSwgdm9pZCogYmFzZSwgc2l6ZV90IHNpemUsIGJvb2wgd3Jp
dGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKKyAgICAgICAgOiBQYWdlQmxvY2socmVhbEJhc2UsIGJh
c2UsIHNpemUpCisgICAgICAgICwgbV9jb21taXR0ZWQoMCkKKyAgICAgICAgLCBtX3dyaXRhYmxl
KHdyaXRhYmxlKQorICAgICAgICAsIG1fZXhlY3V0YWJsZShleGVjdXRhYmxlKQorICAgIHsKKyAg
ICB9CisKICAgICBzaXplX3QgbV9jb21taXR0ZWQ7CiAgICAgYm9vbCBtX3dyaXRhYmxlOwogICAg
IGJvb2wgbV9leGVjdXRhYmxlOwpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1DYWxsaW5n
Q29udmVudGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUNhbGxp
bmdDb252ZW50aW9ucy5oCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUNhbGxpbmdDb252ZW50aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBA
CiAvKiBNYWNyb3MgZm9yIHNwZWNpZmluZyBzcGVjaWZpYyBjYWxsaW5nIGNvbnZlbnRpb25zLiAq
LwogCiAKKyNpZm5kZWYgSlNDX0hPU1RfQ0FMTAogI2lmIENQVShYODYpICYmIENPTVBJTEVSKE1T
VkMpCiAjZGVmaW5lIEpTQ19IT1NUX0NBTEwgX19mYXN0Y2FsbAogI2VsaWYgQ1BVKFg4NikgJiYg
Q09NUElMRVIoR0NDX0NPTVBBVElCTEUpCkBAIC00MSw2ICs0Miw3IEBACiAjZWxzZQogI2RlZmlu
ZSBKU0NfSE9TVF9DQUxMCiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgQ1BVKFg4NikgJiYgT1MoV0lO
RE9XUykKICNkZWZpbmUgQ0FMTElOR19DT05WRU5USU9OX0lTX1NURENBTEwgMQpAQCAtNjgsOCAr
NzAsMTAgQEAKICNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX0ZBU1RDQUxMX0NBTExJTkdf
Q09OVkVOVElPTiAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEpJVF9PUEVSQVRJT04pCiAjaWYg
RU5BQkxFKEpJVCkgJiYgQ0FMTElOR19DT05WRU5USU9OX0lTX1NURENBTEwKICNkZWZpbmUgSklU
X09QRVJBVElPTiBDREVDTAogI2Vsc2UKICNkZWZpbmUgSklUX09QRVJBVElPTgogI2VuZGlmCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAkocmV2aXNpb24gMjY3NDU0KQorKysg
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzEyLDYg
KzcxMiwxMCBAQAogI2RlZmluZSBFTkFCTEVfREZHX1JFR0lTVEVSX0FMTE9DQVRJT05fVkFMSURB
VElPTiAxCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIENQVShBUk02NCkg
JiYgIWRlZmluZWQoRU5BQkxFX0pJVF9DQUdFKQorI2RlZmluZSBFTkFCTEVfSklUX0NBR0UgMQor
I2VuZGlmCisKIC8qIERldGVybWluZSBpZiB3ZSBuZWVkIHRvIGVuYWJsZSBDb21wdXRlZCBHb3Rv
IE9wY29kZXMgb3Igbm90OiAqLwogI2lmIEhBVkUoQ09NUFVURURfR09UTykgfHwgIUVOQUJMRShD
X0xPT1ApCiAjZGVmaW5lIEVOQUJMRV9DT01QVVRFRF9HT1RPX09QQ09ERVMgMQpJbmRleDogU291
cmNlL1dURi93dGYvUHRyVGFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHRyVGFn
LmgJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9XVEYvd3RmL1B0clRhZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw5ICszMCwxNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorI2lmIEVOQUJM
RShKSVRfQ0FHRSkKICNkZWZpbmUgRk9SX0VBQ0hfQkFTRV9XVEZfUFRSVEFHKHYpIFwKICAgICB2
KE5vUHRyVGFnKSBcCiAgICAgdihDRnVuY3Rpb25QdHJUYWcpIFwKKyAgICB2KEpJVENhZ2VQdHJU
YWcpCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9CQVNFX1dURl9QVFJUQUcodikgXAorICAgIHYo
Tm9QdHJUYWcpIFwKKyAgICB2KENGdW5jdGlvblB0clRhZykKKyNlbmRpZgogCiAjZGVmaW5lIEZP
Ul9FQUNIX0FERElUSU9OQUxfV1RGX1BUUlRBRyh2KSBcCiAgICAgdihGcmVlU3BhY2VQdHJUYWcp
IFwKQEAgLTQ3LDggKzU0LDE1IEBAIG5hbWVzcGFjZSBXVEYgewogZW51bSBQdHJUYWcgOiB1aW50
cHRyX3QgewogICAgIE5vUHRyVGFnLAogICAgIENGdW5jdGlvblB0clRhZywKKyNpZiBFTkFCTEUo
SklUX0NBR0UpCisgICAgSklUQ2FnZVB0clRhZyA9IDB4Y2FjOTc4MDAwMDAwMDAwMFVMCisjZW5k
aWYKIH07CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitjb25zdCBpbnRwdHJfdCBKSVRDYWdlUHRy
VGFnTWFzayA9IDB4MDAwMDAwZmZmZmZmZmZmZlVMOworI2VuZGlmCisKICNpZiBDUFUoQVJNNjRF
KQogI2RlZmluZSBXVEZfUFRSVEFHX0hBU0godGFnKSBwdHJhdXRoX3N0cmluZ19kaXNjcmltaW5h
dG9yKCN0YWcpCiAKQEAgLTY2LDkgKzgwLDE1IEBAIGNvbnN0ZXhwciB1aW50cHRyX3QgbWFrZVB0
clRhZ0hhc2goY29uc3QKICNkZWZpbmUgV1RGX1BUUlRBR19IQVNIKHRhZykgV1RGOjptYWtlUHRy
VGFnSGFzaCgjdGFnKQogI2VuZGlmIC8vIG5vdCBDUFUoQVJNNjRFKQogCisjaWYgRU5BQkxFKEpJ
VF9DQUdFKQorI2RlZmluZSBXVEZfREVDTEFSRV9QVFJUQUcodGFnKSBcCisgICAgY29uc3RleHBy
IFB0clRhZyB0YWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+KFdURl9QVFJUQUdfSEFTSCgjdGFnKSk7
IFwKKyAgICBzdGF0aWNfYXNzZXJ0KHRhZyAhPSBOb1B0clRhZyAmJiB0YWcgIT0gQ0Z1bmN0aW9u
UHRyVGFnICYmIHRhZyAhPSBKSVRDYWdlUHRyVGFnLCAiIik7CisjZWxzZQogI2RlZmluZSBXVEZf
REVDTEFSRV9QVFJUQUcodGFnKSBcCiAgICAgY29uc3RleHByIFB0clRhZyB0YWcgPSBzdGF0aWNf
Y2FzdDxQdHJUYWc+KFdURl9QVFJUQUdfSEFTSCgjdGFnKSk7IFwKICAgICBzdGF0aWNfYXNzZXJ0
KHRhZyAhPSBOb1B0clRhZyAmJiB0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnLCAiIik7CisjZW5kaWYK
IAogc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KE5vUHRyVGFnKSA9PSBzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDApLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oQ0Z1bmN0aW9uUHRyVGFnKSA9PSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpLCAi
Iik7CkBAIC0xOTAsNiArMjEwLDEwIEBAIGlubGluZSBQdHJUeXBlIHRhZ0NvZGVQdHJJbXBsKFB0
clR5cGUgcHQKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICBpZiAodGFnID09IENGdW5jdGlvblB0
clRhZykKICAgICAgICAgcmV0dXJuIHB0cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQocHRyLCBw
dHJhdXRoX2tleV9mdW5jdGlvbl9wb2ludGVyLCAwKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgaWYgKHRhZyA9PSBKSVRDYWdlUHRyVGFnKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxQdHJUeXBlPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSB8IEpJVENhZ2VQ
dHJUYWcpOworI2VuZGlmCiAgICAgcmV0dXJuIHB0cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQo
cHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCB0YWcpOwogfQogCkBAIC0y
MjEsNiArMjQ1LDEwIEBAIGlubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0ckltcGxIZWxwZXIoUHQK
ICAgICAgICAgcmV0dXJuIHB0cjsKICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKICAg
ICAgICAgcmV0dXJuIF9fYnVpbHRpbl9wdHJhdXRoX2F1dGgocHRyLCBwdHJhdXRoX2tleV9mdW5j
dGlvbl9wb2ludGVyLCAwKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKHRhZyA9PSBK
SVRDYWdlUHRyVGFnKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxQdHJUeXBlPihy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSAmIEpJVENhZ2VQdHJUYWdNYXNrKTsKKyNl
bmRpZgogICAgIHJldHVybiBfX2J1aWx0aW5fcHRyYXV0aF9hdXRoKHB0ciwgcHRyYXV0aF9rZXlf
cHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgdGFnKTsKIH0KIApAQCAtMjMwLDcgKzI1OCwxMiBAQCBp
bmxpbmUgUHRyVHlwZSB1bnRhZ0NvZGVQdHJJbXBsKFB0clR5cGUgCiAgICAgaWYgKCFwdHIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFB0clR5cGUgcmVzdWx0ID0gdW50YWdDb2RlUHRy
SW1wbEhlbHBlcihwdHIsIHRhZyk7Ci0gICAgV1RGX1BUUlRBR19BU1NFUlQodGFnQWN0aW9uLCBw
dHIsIHRhZywgcmVtb3ZlQ29kZVB0clRhZyhwdHIpID09IHJlc3VsdCk7CisjaWYgRU5BQkxFKEpJ
VF9DQUdFKQorICAgIGlmICh0YWcgPT0gSklUQ2FnZVB0clRhZykKKyAgICAgICAgV1RGX1BUUlRB
R19BU1NFUlQodGFnQWN0aW9uLCBwdHIsIHRhZywgcmVpbnRlcnByZXRfY2FzdDxQdHJUeXBlPihy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSAmIEpJVENhZ2VQdHJUYWdNYXNrKSA9PSBy
ZXN1bHQpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBXVEZfUFRSVEFHX0FTU0VSVCh0YWdB
Y3Rpb24sIHB0ciwgdGFnLCByZW1vdmVDb2RlUHRyVGFnKHB0cikgPT0gcmVzdWx0KTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNjQsNiArMjk3LDEwIEBAIGlubGluZSBQdHJUeXBlIHJl
dGFnQ29kZVB0ckltcGxIZWxwZXIoUHQKICAgICAgICAgcmV0dXJuIHVudGFnQ29kZVB0ckltcGw8
dGFnQWN0aW9uPihwdHIsIG9sZFRhZyk7CiAgICAgaWYgKG9sZFRhZyA9PSBOb1B0clRhZykKICAg
ICAgICAgcmV0dXJuIHRhZ0NvZGVQdHJJbXBsPHRhZ0FjdGlvbj4ocHRyLCBuZXdUYWcpOworI2lm
IEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAob2xkVGFnID09IEpJVENhZ2VQdHJUYWcgfHwgbmV3
VGFnID09IEpJVENhZ2VQdHJUYWcpCisgICAgICAgIHJldHVybiB0YWdDb2RlUHRySW1wbDx0YWdB
Y3Rpb24+KHVudGFnQ29kZVB0ckltcGw8dGFnQWN0aW9uPihwdHIsIG9sZFRhZyksIG5ld1RhZyk7
CisjZW5kaWYKICAgICBpZiAob2xkVGFnID09IENGdW5jdGlvblB0clRhZykKICAgICAgICAgcmV0
dXJuIHB0cmF1dGhfYXV0aF9hbmRfcmVzaWduKHB0ciwgcHRyYXV0aF9rZXlfZnVuY3Rpb25fcG9p
bnRlciwgMCwgcHRyYXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgbmV3VGFnKTsKICAg
ICBpZiAobmV3VGFnID09IENGdW5jdGlvblB0clRhZykKQEAgLTU5Nyw2ICs2MzQsOSBAQCBpbmxp
bmUgYm9vbCB1c2VzUG9pbnRlclRhZ2dpbmcoKSB7IHJldHVyCiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQordXNpbmcgV1RGOjpKSVRDYWdlUHRyVGFnOworI2Vu
ZGlmCiB1c2luZyBXVEY6OkNGdW5jdGlvblB0clRhZzsKIHVzaW5nIFdURjo6Tm9QdHJUYWc7CiB1
c2luZyBXVEY6OlBsYXRmb3JtUmVnaXN0ZXJzTFJQdHJUYWc7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9TdGF0aWNQdHJIYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhdGlj
UHRySGFzaFNldC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1N0YXRpY1B0ckhh
c2hTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCisvLyBUaGlzIGlzIGEgZml4ZWQgc2l6ZWQgaGFzaC1iYXNlZCBzZXQg
Zm9yIHBvaW50ZXJzLiBJdCdzIG9wdGltaXplZCBmb3I6CisvLworLy8gLSBBZGRpbmcgZW50cmll
cyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHRoZW4gY2hlY2tpbmcgZm9yIHNldCBtZW1iZXJz
aGlwIHF1aWNrbHkuCisvLyAtIEhpZ2ggcmF0ZSBvZiBjb250YWlucygpIGNhbGxzLgorLy8gLSBJ
dCBjYW4gYmUgZnJvemVuLCBpLmUuIG1hZGUgaW1tdXRhYmxlIGJ5IGxvY2tpbmcgZG93biBpdHMg
bWVtb3J5LgorLy8gLSBJdCBpcyB0aHJlYWRzYWZlIGZvciBjb250YWlucygpIG9ubHkgY2FsbHMu
CisvLworLy8gU3RhdGljUHRySGFzaFNldCdzIGluaXRpYWwgbWFpbiB1c2VyLCBpcyB0aGUgSklU
IHBvaW50ZXIgd2hpdGUgbGlzdC4KK3RlbXBsYXRlIDx1bnNpZ25lZCBTaXplPgorY2xhc3MgU3Rh
dGljUHRySGFzaFNldCAgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0YXRpY1B0ckhhc2hT
ZXQpOworCitwdWJsaWM6CisgICAgU3RhdGljUHRySGFzaFNldCgpCisgICAgICAgIDogbV9zaXpl
KFNpemUpCisgICAgICAgICwgbV9tYXNrKFNpemUgLSAxKQorICAgICAgICAsIG1fY291bnQoMCkK
KyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBib29sIGNvbnRh
aW5zKFQgdmFsdWUpCisgICAgeworICAgICAgICB2b2lkKiBwdHIgPSBjYXN0KHZhbHVlKTsKKwor
ICAgICAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gaGFzaChwdHIpICYgbV9tYXNrOworICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAg
ICAgICAgIHZvaWQqIGVudHJ5ID0gbV90YWJsZVtpbmRleF07CisgICAgICAgICAgICBpZiAoIWVu
dHJ5KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChlbnRy
eSA9PSBwdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBpbmRl
eCA9IChpbmRleCArIDEpICYgbV9tYXNrOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5k
ZXggIT0gc3RhcnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBib29sIGFkZChUIHZhbHVlKQorICAgIHsKKyAgICAgICAgdm9pZCog
cHRyID0gY2FzdCh2YWx1ZSk7CisKKyAgICAgICAgdW5zaWduZWQgc3RhcnRJbmRleCA9IGhhc2go
cHRyKSAmIG1fbWFzazsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBzdGFydEluZGV4OworICAg
ICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICB2b2lkKiBlbnRyeSA9IG1fdGFibGVbaW5kZXhd
OworICAgICAgICAgICAgaWYgKCFlbnRyeSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCgrK21f
Y291bnQgPCBtYXhMb2FkKCkpOworCisgICAgICAgICAgICAgICAgbV90YWJsZVtpbmRleF0gPSBw
dHI7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IAorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGVudHJ5ID09IHB0cikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBpbmRleCA9IChpbmRleCArIDEpICYgbV9tYXNrOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaW5kZXggIT0gc3RhcnRJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICAKK3ByaXZh
dGU6CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2godm9pZCogcHRyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFB0ckhhc2g8dm9pZCo+OjpoYXNoKHB0cik7CisgICAgfQorICAgIAorICAgIHVuc2ln
bmVkIG1heExvYWQoKSBjb25zdCB7IHJldHVybiBtX3NpemUgLyAyOyB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQqIGNhc3QoVCB2YWx1ZSkKKyAgICB7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKFQpIDw9IHNpemVvZih2b2lkKiksICJ0eXBlIHRvbyBiaWciKTsK
KyAgICAgICAgdW5pb24geworICAgICAgICAgICAgdm9pZCogcHRyOworICAgICAgICAgICAgVCB2
YWx1ZTsKKyAgICAgICAgfSB1OworICAgICAgICB1LnB0ciA9IG51bGxwdHI7CisgICAgICAgIHUu
dmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHUucHRyOworICAgIH0KKworICAgIGJvb2wg
YWRkU2xvdyh1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBpbmRleCwgdm9pZCogcHRyKTsK
KworICAgIHZvaWQqIG1fdGFibGVbU2l6ZV0gPSB7IG51bGxwdHIgfTsKKyAgICAgICAgCisgICAg
dW5zaWduZWQgbV9zaXplOworICAgIHVuc2lnbmVkIG1fbWFzazsKKyAgICB1bnNpZ25lZCBtX2Nv
dW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3RhdGljUHRySGFz
aFNldDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNl
L1dURi93dGYvV1RGQ29uZmlnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29uZmlnIHsKIAogYWxpZ25hcyhXVEY6OkNvbmZpZ0FsaWdubWVudCkgU2xv
dCBnX2NvbmZpZ1tXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QgLyBzaXplb2YoU2xvdCldOwogCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvbmZpZwogCiAjZWxzZSAvLyBub3QgRU5BQkxFKFVOSUZJRURf
QU5EX0ZSRUVaQUJMRV9DT05GSUdfUkVDT1JEKQpJbmRleDogU291cmNlL1dURi93dGYvV1RGQ29u
ZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmgJKHJldmlzaW9u
IDI2NzQ1NCkKKysrIFNvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCwxMiBAQCBleHRlcm4gIkMiIFdURl9FWFBPUlRfUFJJVkFURSBTbG90IGdfY29u
CiBuYW1lc3BhY2UgV1RGIHsKIAogY29uc3RleHByIHNpemVfdCBDb25maWdBbGlnbm1lbnQgPSBD
ZWlsaW5nT25QYWdlU2l6ZTsKKyNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSklUX0NBR0UpCisv
LyBGSVhNRTogSklUX0NBR0UgLSBXZSBuZWVkIGEgd2F5IHRvIGNhbGN1bGF0ZSB0aGUgc3BhY2Ug
bmVlZGVkIGZvciB0aGUgSklUIHZhbGlkIHRhcmdldCBoYXNoIHRhYmxlCitjb25zdGV4cHIgc2l6
ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSBzdGQ6Om1heChDZWlsaW5nT25QYWdlU2l6ZSwgMTYg
KiBLQikgKyAxNjM4NCAqIHNpemVvZih2b2lkKik7CisjZWxzZQogY29uc3RleHByIHNpemVfdCBD
b25maWdTaXplVG9Qcm90ZWN0ID0gc3RkOjptYXgoQ2VpbGluZ09uUGFnZVNpemUsIDE2ICogS0Ip
OworI2VuZGlmCiAKIHN0cnVjdCBDb25maWcgewogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBwZXJtYW5lbnRseUZyZWV6ZSgpOwpJbmRleDogU291cmNlL1dURi93dGYvcG9zaXgv
T1NBbGxvY2F0b3JQT1NJWC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvcG9zaXgv
T1NBbGxvY2F0b3JQT1NJWC5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9XVEYvd3Rm
L3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNCArMjks
MjYgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9QYWdlQmxvY2suaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQqIE9TQWxsb2Nh
dG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3
cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKK3ZvaWQq
IE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2Fn
ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBHdWFyZHMgZ3VhcmRzKQogeworICAg
IEFTU0VSVChndWFyZHMgIT0gR3VhcmRSZWdpb25zKTsKICNpZiBPUyhMSU5VWCkKICAgICBVTlVT
RURfUEFSQU0odXNhZ2UpOwogICAgIFVOVVNFRF9QQVJBTSh3cml0YWJsZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGV4ZWN1dGFibGUpOwotICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlc0d1YXJkUGFnZXMp
OworICAgIFVOVVNFRF9QQVJBTShndWFyZHMpOwogCiAgICAgdm9pZCogcmVzdWx0ID0gbW1hcCgw
LCBieXRlcywgUFJPVF9OT05FLCBNQVBfTk9SRVNFUlZFIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5P
TiwgLTEsIDApOwogICAgIGlmIChyZXN1bHQgPT0gTUFQX0ZBSUxFRCkKICAgICAgICAgQ1JBU0go
KTsKICAgICBtYWR2aXNlKHJlc3VsdCwgYnl0ZXMsIE1BRFZfRE9OVE5FRUQpOwogI2Vsc2UKLSAg
ICB2b2lkKiByZXN1bHQgPSByZXNlcnZlQW5kQ29tbWl0KGJ5dGVzLCB1c2FnZSwgd3JpdGFibGUs
IGV4ZWN1dGFibGUsIGluY2x1ZGVzR3VhcmRQYWdlcyk7CisgICAgdm9pZCogcmVzdWx0ID0gcmVz
ZXJ2ZUFuZENvbW1pdChieXRlcywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBndWFyZHMp
OwogI2lmIEhBVkUoTUFEVl9GUkVFX1JFVVNFKQogICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAg
Ly8gVG8gc3VwcG9ydCB0aGUgInJlc2VydmUgdGhlbiBjb21taXQiIG1vZGVsLCB3ZSBoYXZlIHRv
IGluaXRpYWxseSBkZWNvbW1pdC4KQEAgLTU5LDggKzYxLDkgQEAgdm9pZCogT1NBbGxvY2F0b3I6
OnJlc2VydmVVbmNvbW1pdHRlZChzaQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQqIE9T
QWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJv
b2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCit2
b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVz
YWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIEd1YXJkcyBndWFyZHMsIHNpemVf
dCBndWFyZFNpemUpCiB7CisgICAgVU5VU0VEX1BBUkFNKGd1YXJkU2l6ZSk7CiAgICAgLy8gQWxs
IFBPU0lYIHJlc2VydmF0aW9ucyBzdGFydCBvdXQgbG9naWNhbGx5IGNvbW1pdHRlZC4KICAgICBp
bnQgcHJvdGVjdGlvbiA9IFBST1RfUkVBRDsKICAgICBpZiAod3JpdGFibGUpCkBAIC04NCw3ICs4
Nyw3IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemUKICAgICB2b2lk
KiByZXN1bHQgPSAwOwogI2lmIChPUyhEQVJXSU4pICYmIENQVShYODZfNjQpKQogICAgIGlmIChl
eGVjdXRhYmxlKSB7Ci0gICAgICAgIEFTU0VSVChpbmNsdWRlc0d1YXJkUGFnZXMpOworICAgICAg
ICBBU1NFUlQoZ3VhcmRzID09IE9TQWxsb2NhdG9yOjpHdWFyZFBhZ2VzKTsKICAgICAgICAgLy8g
Q29vayB1cCBhbiBhZGRyZXNzIHRvIGFsbG9jYXRlIGF0LCB1c2luZyB0aGUgZm9sbG93aW5nIHJl
Y2lwZToKICAgICAgICAgLy8gICAxNyBiaXRzIG9mIHplcm8sIHN0YXkgaW4gdXNlcnNwYWNlIGtp
ZHMuCiAgICAgICAgIC8vICAgMjYgYml0cyBvZiByYW5kb21uZXNzIGZvciBBU0xSLgpAQCAtMTA5
LDEzICsxMTIsMzggQEAgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZQog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgIH0KLSAgICBpZiAocmVzdWx0
ICYmIGluY2x1ZGVzR3VhcmRQYWdlcykgewotICAgICAgICAvLyBXZSB1c2UgbW1hcCB0byByZW1h
cCB0aGUgZ3VhcmRwYWdlcyByYXRoZXIgdGhhbiB1c2luZyBtcHJvdGVjdCBhcwotICAgICAgICAv
LyBtcHJvdGVjdCByZXN1bHRzIGluIG11bHRpcGxlIHJlZmVyZW5jZXMgdG8gdGhlIGNvZGUgcmVn
aW9uLiBUaGlzCi0gICAgICAgIC8vIGJyZWFrcyB0aGUgbWFkdmlzZSBiYXNlZCBtZWNoYW5pc20g
d2UgdXNlIHRvIHJldHVybiBwaHlzaWNhbCBtZW1vcnkKLSAgICAgICAgLy8gdG8gdGhlIE9TLgot
ICAgICAgICBtbWFwKHJlc3VsdCwgcGFnZVNpemUoKSwgUFJPVF9OT05FLCBNQVBfRklYRUQgfCBN
QVBfUFJJVkFURSB8IE1BUF9BTk9OLCBmZCwgMCk7Ci0gICAgICAgIG1tYXAoc3RhdGljX2Nhc3Q8
Y2hhcio+KHJlc3VsdCkgKyBieXRlcyAtIHBhZ2VTaXplKCksIHBhZ2VTaXplKCksIFBST1RfTk9O
RSwgTUFQX0ZJWEVEIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgZmQsIDApOworICAgIGlmIChy
ZXN1bHQpIHsKKyAgICAgICAgaWYgKGd1YXJkcyA9PSBHdWFyZFBhZ2VzKSB7CisgICAgICAgICAg
ICAvLyBXZSB1c2UgbW1hcCB0byByZW1hcCB0aGUgZ3VhcmRwYWdlcyByYXRoZXIgdGhhbiB1c2lu
ZyBtcHJvdGVjdCBhcworICAgICAgICAgICAgLy8gbXByb3RlY3QgcmVzdWx0cyBpbiBtdWx0aXBs
ZSByZWZlcmVuY2VzIHRvIHRoZSBjb2RlIHJlZ2lvbi4gVGhpcworICAgICAgICAgICAgLy8gYnJl
YWtzIHRoZSBtYWR2aXNlIGJhc2VkIG1lY2hhbmlzbSB3ZSB1c2UgdG8gcmV0dXJuIHBoeXNpY2Fs
IG1lbW9yeQorICAgICAgICAgICAgLy8gdG8gdGhlIE9TLgorICAgICAgICAgICAgbW1hcChyZXN1
bHQsIHBhZ2VTaXplKCksIFBST1RfTk9ORSwgTUFQX0ZJWEVEIHwgTUFQX1BSSVZBVEUgfCBNQVBf
QU5PTiwgZmQsIDApOworICAgICAgICAgICAgbW1hcChzdGF0aWNfY2FzdDxjaGFyKj4ocmVzdWx0
KSArIGJ5dGVzIC0gcGFnZVNpemUoKSwgcGFnZVNpemUoKSwgUFJPVF9OT05FLCBNQVBfRklYRUQg
fCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCBmZCwgMCk7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQor
ICAgICAgICB9IGVsc2UgaWYgKGd1YXJkcyA9PSBHdWFyZFJlZ2lvbnMpIHsKKyAgICAgICAgICAg
IHZvaWQqIGJhc2U7CisgICAgICAgICAgICB2b2lkKiBwb3N0R3VhcmRTdGFydDsKKyAgICAgICAg
ICAgIHNpemVfdCBwcmVHdWFyZFNpemU7CisgICAgICAgICAgICBzaXplX3QgcG9zdEd1YXJkU2l6
ZTsKKyAgICAgICAgICAgIGludHB0cl90IHJlc3VsdEFzSW50ID0gcmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4ocmVzdWx0KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvZzJHdWFyZFNpemUgPSBm
YXN0TG9nMihzdGF0aWNfY2FzdDx1aW50NjRfdD4oZ3VhcmRTaXplKSk7CisKKyAgICAgICAgICAg
IGlmIChyZXN1bHRBc0ludCAmICgxIDw8IGxvZzJHdWFyZFNpemUpKSB7CisgICAgICAgICAgICAg
ICAgYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlc3VsdEFzSW50ICsgZ3VhcmRTaXpl
KTsKKyAgICAgICAgICAgICAgICBwcmVHdWFyZFNpemUgPSBndWFyZFNpemU7CisgICAgICAgICAg
ICAgICAgcG9zdEd1YXJkU3RhcnQgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihyZXN1bHRBc0lu
dCArIDIgKiBndWFyZFNpemUpOworICAgICAgICAgICAgICAgIHBvc3RHdWFyZFNpemUgPSBndWFy
ZFNpemUgKiAyOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBiYXNlID0g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVzdWx0QXNJbnQgKyAyICogZ3VhcmRTaXplKTsKKyAg
ICAgICAgICAgICAgICBwcmVHdWFyZFNpemUgPSAyICogZ3VhcmRTaXplOworICAgICAgICAgICAg
ICAgIHBvc3RHdWFyZFN0YXJ0ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVzdWx0QXNJbnQg
KyAzICogZ3VhcmRTaXplKTsKKyAgICAgICAgICAgICAgICBwb3N0R3VhcmRTaXplID0gZ3VhcmRT
aXplOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbW1hcChyZXN1bHQsIHByZUd1YXJkU2l6
ZSwgUFJPVF9OT05FLCBNQVBfRklYRUQgfCBNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCBmZCwgMCk7
CisgICAgICAgICAgICBtbWFwKHBvc3RHdWFyZFN0YXJ0LCBwb3N0R3VhcmRTaXplLCBQUk9UX05P
TkUsIE1BUF9GSVhFRCB8IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIGZkLCAwKTsKKyNlbmRpZgor
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw1NiBAQAorMjAyMC0wOS0yMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDYWdlIEpJVCBwb2ludGVycyB0byB0aGUgSklU
IHJlZ2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA4NjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgYW5ub3RhdGlvbmUgZm9yIHZhbGlkIEpJVCB0YXJnZXRzLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvU3Ry
dWN0dXJlZENsb25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW50ZXJmYWNlKToKKyAgICAgICAgKEdlbmVyYXRl
SGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2Vu
ZXJhdGVPcGVyYXRpb25UcmFtcG9saW5lRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUl0
ZXJhYmxlRGVmaW5pdGlvbik6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6CisgICAgICAgICogYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6Cisg
ICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDb21waWxlcjo6YWRkU3R5bGVSZWxhdGlvbkZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OmVsZW1lbnRJc0FjdGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNvbXBpbGVyOjplbGVtZW50SXNIb3ZlcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yQ29tcGlsZXI6Om1ha2VDb250ZXh0U3R5bGVVbmlxdWVJZk5lY2Vzc2FyeUFu
ZFRlc3RJc1BsYWNlaG9sZGVyU2hvd24pOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21w
aWxlcjo6aXNQbGFjZWhvbGRlclNob3duKToKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21w
aWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6cnVsZUNvbGxlY3Rv
clNpbXBsZVNlbGVjdG9yQ2hlY2tlckZ1bmN0aW9uKToKKyAgICAgICAgKiBkb20vU2VsZWN0b3JR
dWVyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlQ29t
cGlsZWRTaW1wbGVTZWxlY3RvckNoZWNrZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5n
Q29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVj
dXRlQ29tcGlsZWRTaW5nbGVNdWx0aVNlbGVjdG9yRGF0YSBjb25zdCk6CisgICAgICAgICogZG9t
aml0L0pTRG9jdW1lbnRET01KSVQuY3BwOgorICAgICAgICAqIGRvbWppdC9KU05vZGVET01KSVQu
Y3BwOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlTG9nZ2luZzo6ZGlkUmVhY2hQb2ludE9mSW50ZXJlc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL1ZhbGlkSklUVGFyZ2V0TGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6cG9wdWxhdGVWYWxpZEpJVFRhcmdldExpc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L1ZhbGlkSklUVGFyZ2V0TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9WYWxpZEpJ
VFRhcmdldExpc3RTdGFydC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKFJ1bldlYlRocmVhZCk6CisgICAgICAgICogc3R5
bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkVs
ZW1lbnRSdWxlQ29sbGVjdG9yOjpydWxlTWF0Y2hlcyk6CisgICAgICAgICogc3ZnL1NWR0VsZW1l
bnQuaDoKKwogMjAyMC0wOS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFNsaWdodGx5IGltcHJvdmUgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIHJlc2FtcGxpbmcK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5MSw2ICsxOTkxLDkgQEAK
IAkJNjU5RERDODMwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OUREQzgxMDlFMTk4QkEwMDFCRjND
NiAvKiBKU0RvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNjVBMjE0NjgwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDY3MDk3QTMyOTEwMEI5
MDUwQSAvKiBQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTY1QjdBNDNBMjREMEU2MEYwMDQ4RDkwRSAvKiBWYWxpZEpJVFRhcmdl
dExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
QjdBNDM2MjREMEU2MEUwMDQ4RDkwRSAvKiBWYWxpZEpJVFRhcmdldExpc3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2NUI3QTQzQjI0RDBFNjBG
MDA0OEQ5MEUgLyogVmFsaWRKSVRUYXJnZXRMaXN0U3RhcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCN0E0MzgyNEQwRTYwRjAwNDhEOTBFIC8q
IFZhbGlkSklUVGFyZ2V0TGlzdFN0YXJ0LmNwcCAqLzsgfTsKKwkJNjVCN0E0M0MyNEQwRTYwRjAw
NDhEOTBFIC8qIFZhbGlkSklUVGFyZ2V0TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI3QTQzOTI0RDBFNjBGMDA0OEQ5MEUgLyogVmFsaWRK
SVRUYXJnZXRMaXN0LmNwcCAqLzsgfTsKIAkJNjVCRjAyMkYwOTc0ODE2MzAwQzQzMTk2IC8qIEZy
YW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJG
MDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUM5N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyogY29u
ZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUM5
N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi87IH07CiAJCTY1Q0JGRUZBMDk3NEY2
MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY4MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQyNyw2
ICs5NDMwLDkgQEAKIAkJNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjVBMjE0ODIwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVUcmVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJl
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1QjdBNDM2MjREMEU2MEUwMDQ4RDkwRSAvKiBWYWxp
ZEpJVFRhcmdldExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsaWRK
SVRUYXJnZXRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1QjdBNDM4MjRE
MEU2MEYwMDQ4RDkwRSAvKiBWYWxpZEpJVFRhcmdldExpc3RTdGFydC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWxpZEpJVFRhcmdldExpc3RTdGFydC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1QjdBNDM5MjREMEU2MEYwMDQ4RDkwRSAvKiBW
YWxpZEpJVFRhcmdldExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVmFsaWRKSVRUYXJnZXRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjVCRjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07CkBAIC0yNzA2Myw2ICsyNzA2
OSw5IEBACiAJCQkJODY4MTYwRDIxODc2NjlDNDAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5oICov
LAogCQkJCUEzQUY5RDgyMjAzMjUzMjQwMDZDQUQwNiAvKiBVc2VyQWdlbnQuaCAqLywKIAkJCQk3
MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5o
ICovLAorCQkJCTY1QjdBNDM5MjREMEU2MEYwMDQ4RDkwRSAvKiBWYWxpZEpJVFRhcmdldExpc3Qu
Y3BwICovLAorCQkJCTY1QjdBNDM2MjREMEU2MEUwMDQ4RDkwRSAvKiBWYWxpZEpJVFRhcmdldExp
c3QuaCAqLywKKwkJCQk2NUI3QTQzODI0RDBFNjBGMDA0OEQ5MEUgLyogVmFsaWRKSVRUYXJnZXRM
aXN0U3RhcnQuY3BwICovLAogCQkJCTgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0
aW9uQnViYmxlLmggKi8sCiAJCQkJNTE1Rjc5NTExQ0ZDQTNDNzAwQ0NFRDkzIC8qIFdlYkNvcmVD
cm9zc1RocmVhZENvcGllci5jcHAgKi8sCiAJCQkJNTE1Rjc5NTIxQ0ZDQTNDNzAwQ0NFRDkzIC8q
IFdlYkNvcmVDcm9zc1RocmVhZENvcGllci5oICovLApAQCAtMzAyNjYsNiArMzAyNzUsNyBAQAog
CQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNjVCN0E0M0EyNEQwRTYwRjAwNDhEOTBFIC8qIFZh
bGlkSklUVGFyZ2V0TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAw
MTZBNENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYx
RjgwQTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5
NTE5NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICov
LApAQCAtMzUwNjIsNiArMzUwNzIsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNjVC
N0E0M0IyNEQwRTYwRjAwNDhEOTBFIC8qIFZhbGlkSklUVGFyZ2V0TGlzdFN0YXJ0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE5Nzg3Q0I0MUY1RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmlsaXR5
TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzFGN0I3MzEyNDQ4RjJBQzAwMTI0
NTU3IC8qIEFHWENvbXBpbGVyU2VydmljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDBFRUUw
RTE0NzQzRjM5MDAzRUFGQTIgLyogQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTM1ODM0LDYgKzM1ODQ1LDcgQEAKIAkJCQlFMUVFOEJBNzI0MTMxOTYzMDBFNzk0RDYg
LyogWFJJbnB1dFNvdXJjZXNDaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVF
OEI5NTI0MTMxOTUwMDBFNzk0RDYgLyogWFJSZWZlcmVuY2VTcGFjZUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxRUU4Qjg1MjQxMzE5MUYwMEU3OTRENiAvKiBYUlNlc3Npb25FdmVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk2NUI3QTQzQzI0RDBFNjBGMDA0OEQ5MEUgLyogVmFsaWRK
SVRUYXJnZXRMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JCYXNlLmNwcAkocmV2aXNpb24gMjY3
NDU0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvckJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiSlNET01Db25z
dHJ1Y3Rvci5oIgogCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pJVFZhbGlkVGFyZ2V0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMCw2ICszMSw4IEBA
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShKU0RPTUNvbnN0cnVjdG9yQmFzZSk7CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBW
QUxJRF9KU0NfSE9TVF9DQUxMKGNhbGxUaHJvd1R5cGVFcnJvciwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKik7CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTggKzUwLDE5IEBACiAjaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFt
ZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db2RlQmxvY2suaD4KKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KSVRWYWxpZFRhcmdldC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTSW50ZXJuYWxQcm9taXNlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3RydWN0dXJl
SW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VUaGlzVHlwZUVycm9yRm9yQnVpbHRp
bnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0aW5zKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VET01FeGNlcHRpb25G
b3JCdWlsdGlucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBpc1JlYWRhYmxlQnl0ZVN0cmVhbUFQSUVuYWJsZWQoSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaXNXcml0YWJs
ZVN0cmVhbUFQSUVuYWJsZWQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2hlblNpZ25hbEFib3J0ZWQoSlNHbG9iYWxPYmplY3QqLCBD
YWxsRnJhbWUqKTsKK0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWFrZVRoaXNU
eXBlRXJyb3JGb3JCdWlsdGlucywgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK0VuY29k
ZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwobWFrZUdldHRlclR5cGVFcnJvckZvckJ1aWx0
aW5zLCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgVkFMSURf
SlNDX0hPU1RfQ0FMTChtYWtlRE9NRXhjZXB0aW9uRm9yQnVpbHRpbnMsIEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9TVF9DQUxMKGlzUmVh
ZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K0VuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoaXNXcml0YWJsZVN0cmVhbUFQSUVu
YWJsZWQsIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJ
RF9KU0NfSE9TVF9DQUxMKHdoZW5TaWduYWxBYm9ydGVkLCBKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOwogCiBjb25zdCBDbGFzc0luZm8gSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsg
IkRPTUdsb2JhbE9iamVjdCIsICZKU0dsb2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NR2xvYmFsT2JqZWN0KSB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShy
ZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnVpbHRpbk5h
bWVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSklUVmFsaWRUYXJnZXQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbnRlcm5hbEZ1bmN0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KQEAgLTY0LDcg
KzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25TaG93
TW9kYWxEaWFsb2coSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uT3BlbkRhdGFiYXNlKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitFbmNvZGVkSlNWYWx1ZSBWQUxJRF9KU0NfSE9T
VF9DQUxMKGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbk9wZW5EYXRhYmFzZSwgSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIAogdm9pZCBKU0RPTVdpbmRvdzo6dmlzaXRBZGRpdGlvbmFs
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJl
dmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNs
dWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQuaCIKICNp
bmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pJVFZh
bGlkVGFyZ2V0Lmg+CiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzYsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiAvLyBKYXZhU2NyaXB0IGFjY2VzcyB0byBwbHVn
LWluLWV4cG9ydGVkIHByb3BlcnRpZXMgZm9yIEpTSFRNTEFwcGxldEVsZW1lbnQsIEpTSFRNTEVt
YmVkRWxlbWVudCBhbmQgSlNIVE1MT2JqZWN0RWxlbWVudC4KIAorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbFBsdWdpbiwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKKwogSW5zdGFuY2UqIHBsdWdpbkluc3RhbmNlKEhUTUxFbGVtZW50JiBlbGVtZW50
KQogewogICAgIC8vIFRoZSBwbHVnaW4gZWxlbWVudCBob2xkcyBhbiBvd25pbmcgcmVmZXJlbmNl
LCBzbyB3ZSBkb24ndCBoYXZlIHRvLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U3RydWN0dXJlZENsb25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSklUVmFsaWRU
YXJnZXQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1R5cGVkQXJyYXlzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDYgKzQwLDEwIEBAIGVudW0gY2xhc3MgQ2xvbmVNb2Rl
IHsKICAgICBQYXJ0aWFsLAogfTsKIAorVkFMSURfSklUX1RBUkdFVChjbG9uZUFycmF5QnVmZmVy
KTsKK1ZBTElEX0pJVF9UQVJHRVQoc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXIpOworVkFMSURf
SklUX1RBUkdFVChzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcpOworCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgY2xvbmVBcnJheUJ1ZmZlckltcGwoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBDbG9uZU1vZGUgbW9kZSkKIHsKICAg
ICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDI2NzQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIG15IEBpbXBsQ29udGVudCA9
ICgpOwogbXkgJWltcGxJbmNsdWRlcyA9ICgpOwogbXkgQGRlcHNDb250ZW50ID0gKCk7CiBteSAk
bnVtQ2FjaGVkQXR0cmlidXRlcyA9IDA7CitteSAkaml0Q2FnZUVuYWJsZWQgPSAwOworbXkgJGpp
dENhZ2VFbmFibGVkU2V0ID0gMDsKIAogbXkgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJG
aWxlcyA9IDw8RU5EOwogLy8gLS0tLS0tLSBCZWdpbiBBcHBsZSBDb3B5cmlnaHQgLS0tLS0tLQpA
QCAtMTYxLDYgKzE2MywxMSBAQCBzdWIgR2VuZXJhdGVJbnRlcmZhY2UKIHsKICAgICBteSAoJG9i
amVjdCwgJGludGVyZmFjZSwgJGRlZmluZXMsICRlbnVtZXJhdGlvbnMsICRkaWN0aW9uYXJpZXMp
ID0gQF87CiAKKyAgICBpZiAoaW5kZXgoJGRlZmluZXMsICJFTkFCTEVfSklUX0NBR0UiKSAhPSAt
MSkgeworICAgICAgICAkaml0Q2FnZUVuYWJsZWQgPSAxOworICAgICAgICAkaml0Q2FnZUVuYWJs
ZWRTZXQgPSAxOworICAgIH0KKwogICAgICRjb2RlR2VuZXJhdG9yLT5MaW5rT3ZlcmxvYWRlZE9w
ZXJhdGlvbnMoJGludGVyZmFjZSk7CiAKICAgICBBZGRJdGVyYWJsZU9wZXJhdGlvbklmTmVlZGVk
KCRpbnRlcmZhY2UpOwpAQCAtMzI3MCw3ICszMjc3LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgJHtnZXR0ZXJ9KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIGlmICghSXNSZWFkb25s
eSgkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1
dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJib29sICR7c2V0dGVyfShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7XG4i
KTsKQEAgLTQyMTIsNiArNDIxOSw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
bXkgJG5hbWVkR2V0dGVyT3BlcmF0aW9uID0gR2V0TmFtZWRHZXR0ZXJPcGVyYXRpb24oJGludGVy
ZmFjZSk7CiAgICAgbXkgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24gPSBHZXRJbmRleGVkR2V0dGVy
T3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogCisgICAgYXNzZXJ0KCJqaXRDYWdlRW5hYmxlZCBoYXNu
J3QgYmVlbiBzZXQiKSB1bmxlc3MgJGppdENhZ2VFbmFibGVkU2V0OworCiAgICAgIyAtIEFkZCBk
ZWZhdWx0IGhlYWRlciB0ZW1wbGF0ZQogICAgIHB1c2goQGltcGxDb250ZW50SGVhZGVyLCBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uQ29udGVudEhlYWRlcigkaW50ZXJmYWNlKSk7CiAKQEAgLTQyMjQs
NiArNDIzMyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIjxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPiIpIGlmICRpbmRleGVk
R2V0dGVyT3BlcmF0aW9uOwogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTU1hcExpa2UuaCIp
IGlmICRpbnRlcmZhY2UtPm1hcExpa2U7CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NU2V0
TGlrZS5oIikgaWYgJGludGVyZmFjZS0+c2V0TGlrZTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygi
PEphdmFTY3JpcHRDb3JlL0pJVFZhbGlkVGFyZ2V0Lmg+Iik7CiAgICAgQWRkSlNCdWlsdGluSW5j
bHVkZXNJZk5lZWRlZCgkaW50ZXJmYWNlKTsKIAogICAgIG15ICRpbXBsVHlwZSA9IEdldEltcGxD
bGFzc05hbWUoJGludGVyZmFjZSk7CkBAIC00MjYzLDYgKzQyNzMsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15
ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JG9wZXJhdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6Q2FsbEZyYW1lKik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiVkFMSURfSklUX1RBUkdFVCgke2Z1bmN0aW9uTmFtZX0pO1xuIikgaWYgJGppdENhZ2VFbmFi
bGVkICYmICRvcGVyYXRpb24tPm5hbWUgbmUgIltTeW1ib2wuSXRlcmF0b3JdIjsKICAgICAgICAg
ICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9KSB7CiAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZS5oIn0gPSAxOwogICAgICAg
ICAgICAgICAgIG15ICRuYW1lT2ZGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2sgPSAkY29kZUdlbmVy
YXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb25OYW1lKSAuICJXaXRob3V0VHlwZUNoZWNrIjsKQEAg
LTQyNzMsNiArNDI4NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICRmdW5jdGlvblNpZ25hdHVyZSAuPSAiLCAke2FyZ3VtZW50VHlwZX0iOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGZ1bmN0
aW9uU2lnbmF0dXJlIC4gIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlZBTElEX0pJVF9UQVJHRVQoJHtuYW1lT2ZGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2t9KTtc
biIpIGlmICRqaXRDYWdlRW5hYmxlZCAmJiAkb3BlcmF0aW9uLT5uYW1lIG5lICJbU3ltYm9sLkl0
ZXJhdG9yXSI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CkBAIC00Mjg3LDkg
KzQyOTksMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgaWYgKE5lZWRz
Q29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewogICAgICAgICAgICAgbXkgJGNvbnN0
cnVjdG9yR2V0dGVyID0gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gIkNvbnN0cnVjdG9yIjsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2NvbnN0
cnVjdG9yR2V0dGVyfShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlZBTElEX0pJVF9UQVJHRVQoJHtjb25zdHJ1Y3RvckdldHRlcn0pO1xuIikgaWYgJGppdENhZ2VF
bmFibGVkOwogCiAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JTZXR0ZXIgPSAic2V0SlMiIC4g
JGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IiOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJib29sICR7Y29uc3RydWN0b3JTZXR0ZXJ9KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJWQUxJRF9KSVRfVEFSR0VUKCR7Y29uc3RydWN0b3JTZXR0
ZXJ9KTtcbiIpIGlmICRqaXRDYWdlRW5hYmxlZDsKICAgICAgICAgfQogCiAgICAgICAgIGZvcmVh
Y2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewpAQCAtNDMwMCw2
ICs0MzE0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFt
ZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2dldHRlcn0oSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJWQUxJRF9KSVRfVEFSR0VUKCR7Z2V0dGVy
fSk7XG4iKSBpZiAkaml0Q2FnZUVuYWJsZWQ7CiAgICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHko
JGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgICAgICBteSAkcmVhZFdyaXRlQ29uZGl0aW9uYWwg
PSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbGx5UmVhZFdyaXRl
fTsKICAgICAgICAgICAgICAgICBpZiAoJHJlYWRXcml0ZUNvbmRpdGlvbmFsKSB7CkBAIC00MzA4
LDYgKzQzMjMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgImJvb2wgJHtzZXR0ZXJ9KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiVkFMSURfSklUX1RBUkdFVCgke3NldHRlcn0pO1xuIikg
aWYgJGppdENhZ2VFbmFibGVkOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2VuZGlmXG4iKSBpZiAkcmVhZFdyaXRlQ29uZGl0aW9uYWw7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwpAQCAtNDg2NCw3ICs0ODgwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICBpZiAoTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIG15
ICRjb25zdHJ1Y3RvckdldHRlciA9ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3Rv
ciI7CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0
cnVjdG9yR2V0dGVyfShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JHZXR0
ZXJ9KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CkBA
IC01NTY0LDYgKzU1ODAsOCBAQCBzdWIgR2VuZXJhdGVPcGVyYXRpb25UcmFtcG9saW5lRGVmaW5p
dGlvCiAgICAgbXkgJGlkbE9wZXJhdGlvblR5cGUgPSAkaGFzUHJvbWlzZVJldHVyblR5cGUgPyAi
SURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZSIgOiAiSURMT3BlcmF0aW9uIjsKICAgICBteSAk
ZXhwb3N1cmVTY29wZSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9
ID8gIldpbmRvd09yV29ya2VyIiA6ICJXaW5kb3dPbmx5IjsKIAorICAgIGFzc2VydCgiaml0Q2Fn
ZUVuYWJsZWQgaGFzbid0IGJlZW4gc2V0IikgdW5sZXNzICRqaXRDYWdlRW5hYmxlZFNldDsKKwog
ICAgIG15ICRjYWxsRnVuY3Rpb25OYW1lID0gImNhbGwiOwogICAgICRjYWxsRnVuY3Rpb25OYW1l
IC49ICJTdGF0aWMiIGlmICRvcGVyYXRpb24tPmlzU3RhdGljOwogICAgICRjYWxsRnVuY3Rpb25O
YW1lIC49ICJSZXR1cm5pbmdPd25Qcm9taXNlIiBpZiAkaGFzUHJvbWlzZVJldHVyblR5cGUgJiYg
JG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmV0dXJuc093blByb21pc2V9OwpAQCAt
NTU3Niw2ICs1NTk0LDcgQEAgc3ViIEdlbmVyYXRlT3BlcmF0aW9uVHJhbXBvbGluZURlZmluaXRp
bwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICByZXR1cm4gJHtpZGxPcGVyYXRpb25UeXBlfTwke2NsYXNzTmFtZX0+Ojoke2NhbGxG
dW5jdGlvbk5hbWV9PCIgLiBqb2luKCIsICIsIEBjYWxsRnVuY3Rpb25UZW1wbGF0ZUFyZ3VtZW50
cykgLiAiPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgXCIiIC4gJG9wZXJhdGlv
bi0+bmFtZSAuICJcIik7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwor
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlZBTElEX0pJVF9UQVJHRVQoJHtmdW5jdGlvbk5hbWV9
KTtcblxuIikgaWYgJGppdENhZ2VFbmFibGVkICYmICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogfQogCiBzdWIgR2VuZXJhdGVPcGVyYXRp
b25Cb2R5RGVmaW5pdGlvbgpAQCAtNjg2MCw2ICs2ODc5LDggQEAgcHJpdmF0ZToKIH07CiAKIHVz
aW5nICR7aXRlcmF0b3JQcm90b3R5cGVOYW1lfSA9IEpTRE9NSXRlcmF0b3JQcm90b3R5cGU8JHtj
bGFzc05hbWV9LCAke2l0ZXJhdG9yVHJhaXRzTmFtZX0+OworICAgIAorVkFMSURfSklUX1RBUkdF
VF9FWFBMSUNJVElEKCR7aXRlcmF0b3JQcm90b3R5cGVOYW1lfU5leHQsICR7aXRlcmF0b3JQcm90
b3R5cGVOYW1lfTo6bmV4dCk7CiAKIHRlbXBsYXRlPD4KIGNvbnN0IEpTQzo6Q2xhc3NJbmZvICR7
aXRlcmF0b3JOYW1lfUJhc2U6OnNfaW5mbyA9IHsgIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9IEl0
ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRSgke2l0ZXJhdG9yTmFtZX1CYXNlKSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfbWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAicnVudGltZV9vYmplY3QuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9F
cnJvci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSklUVmFsaWRUYXJnZXQuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdElubGluZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC00Myw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBCaW5kaW5nczsKIAogV0VC
Q09SRV9FWFBPUlQgY29uc3QgQ2xhc3NJbmZvIFJ1bnRpbWVNZXRob2Q6OnNfaW5mbyA9IHsgIlJ1
bnRpbWVNZXRob2QiLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFJ1bnRpbWVNZXRob2QpIH07CiAKLXN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChj
YWxsUnVudGltZU1ldGhvZCwgSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogUnVudGlt
ZU1ldGhvZDo6UnVudGltZU1ldGhvZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBNZXRo
b2QqIG1ldGhvZCkKICAgICAvLyBDYWxsZXJzIHdpbGwgbmVlZCB0byBwYXNzIGluIHRoZSByaWdo
dCBnbG9iYWwgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBuYXRpdmUgb2JqZWN0ICJtZXRo
b2QiLgpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCShyZXZp
c2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgogI2luY2x1ZGUgInJ1bnRpbWVfbWV0aG9kLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRXJyb3IuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KSVRWYWxpZFRhcmdl
dC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzgsNiArMzksOSBAQCBuYW1l
c3BhY2UgQmluZGluZ3MgewogCiBXRUJDT1JFX0VYUE9SVCBjb25zdCBDbGFzc0luZm8gUnVudGlt
ZU9iamVjdDo6c19pbmZvID0geyAiUnVudGltZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoUnVudGltZU9iamVjdCkgfTsKIAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIFZBTElEX0pTQ19IT1NUX0NBTEwoY2FsbFJ1bnRpbWVPYmplY3Qs
IEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFM
SURfSlNDX0hPU1RfQ0FMTChjYWxsUnVudGltZUNvbnN0cnVjdG9yLCBKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworCiBSdW50aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxJbnN0YW5jZT4mJiBpbnN0YW5jZSkKICAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShpbnN0YW5jZSkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZpc2lv
biAyNjc0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgInJ1bnRpbWVfb2JqZWN0
LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9FcnJvci5oPgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSXNvU3Vic3BhY2VQZXJWTS5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSklUVmFs
aWRUYXJnZXQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5o
PgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC00NSw2ICs0Niw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGlu
Z3MgewogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgVkFMSURfSlNDX0hPU1RfQ0FMTChjYWxsT2Jq
Q0ZhbGxiYWNrT2JqZWN0LCBKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCiBDbGFzc1N0
cnVjdFB0ciB3ZWJTY3JpcHRPYmplY3RDbGFzcygpCiB7CiAgICAgc3RhdGljIENsYXNzU3RydWN0
UHRyPFdlYlNjcmlwdE9iamVjdD4gd2ViU2NyaXB0T2JqZWN0Q2xhc3MgPSBOU0NsYXNzRnJvbVN0
cmluZyhAIldlYlNjcmlwdE9iamVjdCIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVj
dG9yQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuaAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIHN0cnVjdCBTdHlsZVNj
cm9sbGJhclN0YXRlIHsKIAogY2xhc3MgU2VsZWN0b3JDaGVja2VyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTZWxlY3RvckNoZWNrZXIpOworICAgIGZyaWVuZCB2b2lkIHBvcHVsYXRlSklU
VmFsaWRUYXJnZXRMaXN0KCk7CisKICAgICBlbnVtIGNsYXNzIE1hdGNoIHsgU2VsZWN0b3JNYXRj
aGVzLCBTZWxlY3RvckZhaWxzTG9jYWxseSwgU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzLCBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseSB9OwogCiAgICAgZW51bSBjbGFzcyBNYXRjaFR5cGUgeyBWaXJ0
dWFsUHNldWRvRWxlbWVudE9ubHksIEVsZW1lbnQgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NiArNTEsNyBAQAogI2luY2x1ZGUgIlN0eWxlUmVsYXRpb25zLmgiCiAjaW5jbHVkZSAiU3R5bGVk
RWxlbWVudC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dQUkluZm8uaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KSVRWYWxpZFRhcmdldC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0xpbmtCdWZmZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NYWNyb0Fzc2VtYmxl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CkBAIC0xNTksNiArMTYwLDE4IEBA
IHByaXZhdGU6CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZEhlaWdodCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZh
bGlkV2lkdGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CiAKK3N0YXRp
YyB2b2lkIEpTQ19IT1NUX0NBTEwgYWRkU3R5bGVSZWxhdGlvbkZ1bmN0aW9uKFNlbGVjdG9yQ2hl
Y2tlcjo6Q2hlY2tpbmdDb250ZXh0KiwgY29uc3QgRWxlbWVudCopOworc3RhdGljIGJvb2wgSlND
X0hPU1RfQ0FMTCBlbGVtZW50SXNBY3RpdmUoY29uc3QgRWxlbWVudCopOworc3RhdGljIGJvb2wg
SlNDX0hPU1RfQ0FMTCBlbGVtZW50SXNIb3ZlcmVkKGNvbnN0IEVsZW1lbnQqKTsKK3N0YXRpYyBi
b29sIEpTQ19IT1NUX0NBTEwgaXNQbGFjZWhvbGRlclNob3duKGNvbnN0IEVsZW1lbnQqKTsKK3N0
YXRpYyBib29sIEpTQ19IT1NUX0NBTEwgbWFrZUNvbnRleHRTdHlsZVVuaXF1ZUlmTmVjZXNzYXJ5
QW5kVGVzdElzUGxhY2Vob2xkZXJTaG93bihjb25zdCBFbGVtZW50KiwgU2VsZWN0b3JDaGVja2Vy
OjpDaGVja2luZ0NvbnRleHQqKTsKK1ZBTElEX0pJVF9UQVJHRVQoYWRkU3R5bGVSZWxhdGlvbkZ1
bmN0aW9uKTsKK1ZBTElEX0pJVF9UQVJHRVQoZWxlbWVudElzQWN0aXZlKTsKK1ZBTElEX0pJVF9U
QVJHRVQoZWxlbWVudElzSG92ZXJlZCk7CitWQUxJRF9KSVRfVEFSR0VUKGlzUGxhY2Vob2xkZXJT
aG93bik7CitWQUxJRF9KSVRfVEFSR0VUKG1ha2VDb250ZXh0U3R5bGVVbmlxdWVJZk5lY2Vzc2Fy
eUFuZFRlc3RJc1BsYWNlaG9sZGVyU2hvd24pOworCisKIHN0cnVjdCBTZWxlY3RvckZyYWdtZW50
OwogY2xhc3MgU2VsZWN0b3JGcmFnbWVudExpc3Q7CiAKQEAgLTUyNyw2ICs1NDAsMzcgQEAgc3Rh
dGljIEZ1bmN0aW9uVHlwZSBhZGROdGhDaGlsZFR5cGUoY29ucwogICAgIHJldHVybiBGdW5jdGlv
blR5cGU6OlNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQ7CiB9CiAKK1ZBTElEX0pJ
VF9UQVJHRVQoaXNBdXRvZmlsbGVkKTsKK1ZBTElEX0pJVF9UQVJHRVQoaXNBdXRvZmlsbGVkU3Ry
b25nUGFzc3dvcmQpOworVkFMSURfSklUX1RBUkdFVChpc0F1dG9maWxsZWRTdHJvbmdQYXNzd29y
ZFZpZXdhYmxlKTsKK1ZBTElEX0pJVF9UQVJHRVQoaXNDaGVja2VkKTsKK1ZBTElEX0pJVF9UQVJH
RVQobWF0Y2hlc0RlZmF1bHRQc2V1ZG9DbGFzcyk7CitWQUxJRF9KSVRfVEFSR0VUKG1hdGNoZXNE
aXNhYmxlZFBzZXVkb0NsYXNzKTsKK1ZBTElEX0pJVF9UQVJHRVQobWF0Y2hlc0VuYWJsZWRQc2V1
ZG9DbGFzcyk7CitWQUxJRF9KSVRfVEFSR0VUKGlzRGVmaW5lZEVsZW1lbnQpOworVkFMSURfSklU
X1RBUkdFVChpc01lZGlhRG9jdW1lbnQpOworVkFMSURfSklUX1RBUkdFVChpc0luUmFuZ2UpOwor
VkFMSURfSklUX1RBUkdFVChtYXRjaGVzSW5kZXRlcm1pbmF0ZVBzZXVkb0NsYXNzKTsKK1ZBTElE
X0pJVF9UQVJHRVQoaXNJbnZhbGlkKTsKK1ZBTElEX0pJVF9UQVJHRVQoaXNPcHRpb25hbEZvcm1D
b250cm9sKTsKK1ZBTElEX0pJVF9UQVJHRVQoaXNPdXRPZlJhbmdlKTsKK1ZBTElEX0pJVF9UQVJH
RVQobWF0Y2hlc1JlYWRPbmx5UHNldWRvQ2xhc3MpOworVkFMSURfSklUX1RBUkdFVChtYXRjaGVz
UmVhZFdyaXRlUHNldWRvQ2xhc3MpOworVkFMSURfSklUX1RBUkdFVChpc1JlcXVpcmVkRm9ybUNv
bnRyb2wpOworVkFMSURfSklUX1RBUkdFVChpc1ZhbGlkKTsKK1ZBTElEX0pJVF9UQVJHRVQoaXNX
aW5kb3dJbmFjdGl2ZSk7CitWQUxJRF9KSVRfVEFSR0VUKG1hdGNoZXNGdWxsU2NyZWVuUHNldWRv
Q2xhc3MpOworVkFMSURfSklUX1RBUkdFVChtYXRjaGVzRnVsbFNjcmVlbkRvY3VtZW50UHNldWRv
Q2xhc3MpOworVkFMSURfSklUX1RBUkdFVChtYXRjaGVzRnVsbFNjcmVlbkFuY2VzdG9yUHNldWRv
Q2xhc3MpOworVkFMSURfSklUX1RBUkdFVChtYXRjaGVzRnVsbFNjcmVlbkFuaW1hdGluZ0Z1bGxT
Y3JlZW5UcmFuc2l0aW9uUHNldWRvQ2xhc3MpOworVkFMSURfSklUX1RBUkdFVChtYXRjaGVzRnVs
bFNjcmVlbkNvbnRyb2xzSGlkZGVuUHNldWRvQ2xhc3MpOworVkFMSURfSklUX1RBUkdFVChtYXRj
aGVzUGljdHVyZUluUGljdHVyZVBzZXVkb0NsYXNzKTsKK1ZBTElEX0pJVF9UQVJHRVQobWF0Y2hl
c0Z1dHVyZUN1ZVBzZXVkb0NsYXNzKTsKK1ZBTElEX0pJVF9UQVJHRVQobWF0Y2hlc1Bhc3RDdWVQ
c2V1ZG9DbGFzcyk7CitWQUxJRF9KSVRfVEFSR0VUKGhhc0F0dGFjaG1lbnQpOworVkFMSURfSklU
X1RBUkdFVF9FWFBMSUNJVElEKFNlbGVjdG9yQ2hlY2tlck1hdGNoZXNEaXJlY3RGb2N1c1BzZXVk
b0NsYXNzLCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXNEaXJlY3RGb2N1c1BzZXVkb0NsYXNzKTsK
K1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChTZWxlY3RvckNoZWNrZXJNYXRjaGVzRm9jdXNQ
c2V1ZG9DbGFzcywgU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyk7CisK
IHN0YXRpYyBpbmxpbmUgRnVuY3Rpb25UeXBlIGFkZFBzZXVkb0NsYXNzVHlwZShjb25zdCBDU1NT
ZWxlY3RvciYgc2VsZWN0b3IsIFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50LCBTZWxlY3RvckNv
bnRleHQgc2VsZWN0b3JDb250ZXh0LCBGcmFnbWVudHNMZXZlbCBmcmFnbWVudExldmVsLCBGcmFn
bWVudFBvc2l0aW9uSW5Sb290RnJhZ21lbnRzIHBvc2l0aW9uSW5Sb290RnJhZ21lbnRzLCBib29s
IHZpc2l0ZWRNYXRjaEVuYWJsZWQsIFZpc2l0ZWRNb2RlJiB2aXNpdGVkTW9kZSwgUHNldWRvRWxl
bWVudE1hdGNoaW5nQmVoYXZpb3IgcHNldWRvRWxlbWVudE1hdGNoaW5nQmVoYXZpb3IpCiB7CiAg
ICAgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSB0eXBlID0gc2VsZWN0b3IucHNldWRvQ2xh
c3NUeXBlKCk7CkBAIC0yMjEzLDcgKzIyNTcsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVBZGRTCiAgICAgbm90UmVzb2x2aW5nU3R5bGUubGluaygmbV9hc3NlbWJsZXIp
OwogfQogCi1zdGF0aWMgdm9pZCBhZGRTdHlsZVJlbGF0aW9uRnVuY3Rpb24oU2VsZWN0b3JDaGVj
a2VyOjpDaGVja2luZ0NvbnRleHQqIGNoZWNraW5nQ29udGV4dCwgY29uc3QgRWxlbWVudCogZWxl
bWVudCkKK3N0YXRpYyB2b2lkIEpTQ19IT1NUX0NBTEwgYWRkU3R5bGVSZWxhdGlvbkZ1bmN0aW9u
KFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiBjaGVja2luZ0NvbnRleHQsIGNvbnN0
IEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgY2hlY2tpbmdDb250ZXh0LT5zdHlsZVJlbGF0aW9u
cy5hcHBlbmQoeyAqZWxlbWVudCwgeyB9LCAxIH0pOwogfQpAQCAtMjM2NCw2ICsyNDA4LDggQEAg
c3RhdGljIGludCBtb2R1bG9IZWxwZXIoaW50IGRpdmlkZW5kLCBpbgogewogICAgIHJldHVybiBk
aXZpZGVuZCAlIGRpdmlzb3I7CiB9CisKK1ZBTElEX0pJVF9UQVJHRVQobW9kdWxvSGVscGVyKTsK
ICNlbmRpZgogCiAvLyBUaGUgdmFsdWUgaW4gaW5wdXREaXZpZGVuZCBpcyBkZXN0cm95ZWQgYnkg
dGhlIG1vZHVsbyBvcGVyYXRpb24uCkBAIC0yNzAxLDYgKzI3NDcsOSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgY2FuTWF0Y2hTdHlsZUF0dHJpYnV0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0
aWMgdm9pZCAoJnN5bmNocm9uaXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbEZwdHIpKFN0eWxlZEVs
ZW1lbnQqKSA9IFN0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5h
bDsKK1ZBTElEX0pJVF9UQVJHRVQoc3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsRnB0
cik7CisKIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVN5bmNocm9uaXplU3R5
bGVBdHRyaWJ1dGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnREYXRhQXJyYXlTaXplQW5k
RmxhZ3MpCiB7CiAgICAgLy8gVGhlIHN0eWxlIGF0dHJpYnV0ZSBpcyB1cGRhdGVkIGxhemlseSBi
YXNlZCBvbiB0aGUgZmxhZyBzdHlsZUF0dHJpYnV0ZUlzRGlydHkuCkBAIC0yNzM1LDYgKzI3ODQs
OCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuTWF0Y2hBbmltYXRhYmxlU1ZHCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitWQUxJRF9KSVRfVEFSR0VUX0VYUExJQ0lUSUQoU1ZHRWxlbWVudFN5bmNo
cm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRyaWJ1dGUsIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplQWxs
QW5pbWF0ZWRTVkdBdHRyaWJ1dGUpOworCiB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGVTeW5jaHJvbml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRlKEFzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBlbGVtZW50RGF0YUFycmF5U2l6ZUFuZEZsYWdzKQogewogICAgIC8vIFNWRyBhdHRyaWJ1
dGVzIGNhbiBiZSB1cGRhdGVkIGxhemlseSBkZXBlbmRpbmcgb24gdGhlIGZsYWcgQW5pbWF0ZWRT
VkdBdHRyaWJ1dGVzQXJlRGlydHkuIFdlIG5lZWQgdG8gY2hlY2sKQEAgLTI4OTEsNiArMjk0Miw5
IEBAIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlQmVnaW5zV2l0aChjb24KICAgICByZXR1cm4g
dmFsdWVJbXBsLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqZXhwZWN0ZWRTdHJpbmcpOwog
fQogCitWQUxJRF9KSVRfVEFSR0VUX0VYUExJQ0lUSUQoYXR0cmlidXRlVmFsdWVCZWdpbnNXaXRo
Q2FzZVNlbnNpdGl2ZSwgYXR0cmlidXRlVmFsdWVCZWdpbnNXaXRoPENhc2VTZW5zaXRpdmU+KTsK
K1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChhdHRyaWJ1dGVWYWx1ZUJlZ2luc1dpdGhDYXNl
SW5zZW5zaXRpdmUsIGF0dHJpYnV0ZVZhbHVlQmVnaW5zV2l0aDxDYXNlSW5zZW5zaXRpdmU+KTsK
KwogdGVtcGxhdGU8Q2FzZVNlbnNpdGl2aXR5IGNhc2VTZW5zaXRpdml0eT4KIHN0YXRpYyBib29s
IGF0dHJpYnV0ZVZhbHVlQ29udGFpbnMoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0b21T
dHJpbmdJbXBsKiBleHBlY3RlZFN0cmluZykKIHsKQEAgLTI5MDAsNiArMjk1NCw5IEBAIHN0YXRp
YyBib29sIGF0dHJpYnV0ZVZhbHVlQ29udGFpbnMoY29uc3QKICAgICByZXR1cm4gdmFsdWVJbXBs
LmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShleHBlY3RlZFN0cmluZykgIT0gbm90Rm91bmQ7CiB9CiAK
K1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChhdHRyaWJ1dGVWYWx1ZUNvbnRhaW5zQ2FzZVNl
bnNpdGl2ZSwgYXR0cmlidXRlVmFsdWVDb250YWluczxDYXNlU2Vuc2l0aXZlPik7CitWQUxJRF9K
SVRfVEFSR0VUX0VYUExJQ0lUSUQoYXR0cmlidXRlVmFsdWVDb250YWluc0Nhc2VJbnNlbnNpdGl2
ZSwgYXR0cmlidXRlVmFsdWVDb250YWluczxDYXNlSW5zZW5zaXRpdmU+KTsKKwogdGVtcGxhdGU8
Q2FzZVNlbnNpdGl2aXR5IGNhc2VTZW5zaXRpdml0eT4KIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZh
bHVlRW5kc1dpdGgoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0b21TdHJpbmdJbXBsKiBl
eHBlY3RlZFN0cmluZykKIHsKQEAgLTI5MTEsNiArMjk2OCw5IEBAIHN0YXRpYyBib29sIGF0dHJp
YnV0ZVZhbHVlRW5kc1dpdGgoY29uc3QKICAgICByZXR1cm4gdmFsdWVJbXBsLmVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoKmV4cGVjdGVkU3RyaW5nKTsKIH0KIAorVkFMSURfSklUX1RBUkdFVF9F
WFBMSUNJVElEKGF0dHJpYnV0ZVZhbHVlRW5kc1dpdGhDYXNlU2Vuc2l0aXZlLCBhdHRyaWJ1dGVW
YWx1ZUVuZHNXaXRoPENhc2VTZW5zaXRpdmU+KTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJ
RChhdHRyaWJ1dGVWYWx1ZUVuZHNXaXRoQ2FzZUluc2Vuc2l0aXZlLCBhdHRyaWJ1dGVWYWx1ZUVu
ZHNXaXRoPENhc2VJbnNlbnNpdGl2ZT4pOworCiB0ZW1wbGF0ZTxDYXNlU2Vuc2l0aXZpdHkgY2Fz
ZVNlbnNpdGl2aXR5Pgogc3RhdGljIGJvb2wgYXR0cmlidXRlVmFsdWVNYXRjaEh5cGhlblJ1bGUo
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUsIEF0b21TdHJpbmdJbXBsKiBleHBlY3RlZFN0cmlu
ZykKIHsKQEAgLTI5MzIsNiArMjk5Miw5IEBAIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlTWF0
Y2hIeXBoZW5SdWwKICAgICByZXR1cm4gdmFsdWVJbXBsLmxlbmd0aCgpID09IGV4cGVjdGVkU3Ry
aW5nLT5sZW5ndGgoKSB8fCB2YWx1ZUltcGxbZXhwZWN0ZWRTdHJpbmctPmxlbmd0aCgpXSA9PSAn
LSc7CiB9CiAKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChhdHRyaWJ1dGVWYWx1ZU1hdGNo
SHlwaGVuUnVsZUNhc2VTZW5zaXRpdmUsIGF0dHJpYnV0ZVZhbHVlTWF0Y2hIeXBoZW5SdWxlPENh
c2VTZW5zaXRpdmU+KTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChhdHRyaWJ1dGVWYWx1
ZU1hdGNoSHlwaGVuUnVsZUNhc2VJbnNlbnNpdGl2ZSwgYXR0cmlidXRlVmFsdWVNYXRjaEh5cGhl
blJ1bGU8Q2FzZUluc2Vuc2l0aXZlPik7CisKIHRlbXBsYXRlPENhc2VTZW5zaXRpdml0eSBjYXNl
U2Vuc2l0aXZpdHk+CiBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZVNwYWNlU2VwYXJldGVkTGlz
dENvbnRhaW5zKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlLCBBdG9tU3RyaW5nSW1wbCogZXhw
ZWN0ZWRTdHJpbmcpCiB7CkBAIC0yOTU2LDYgKzMwMTksOSBAQCBzdGF0aWMgYm9vbCBhdHRyaWJ1
dGVWYWx1ZVNwYWNlU2VwYXJldGVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitWQUxJRF9KSVRf
VEFSR0VUX0VYUExJQ0lUSUQoYXR0cmlidXRlVmFsdWVTcGFjZVNlcGFyZXRlZExpc3RDb250YWlu
c0Nhc2VTZW5zaXRpdmUsIGF0dHJpYnV0ZVZhbHVlU3BhY2VTZXBhcmV0ZWRMaXN0Q29udGFpbnM8
Q2FzZVNlbnNpdGl2ZT4pOworVkFMSURfSklUX1RBUkdFVF9FWFBMSUNJVElEKGF0dHJpYnV0ZVZh
bHVlU3BhY2VTZXBhcmV0ZWRMaXN0Q29udGFpbnNDYXNlSW5zZW5zaXRpdmUsIGF0dHJpYnV0ZVZh
bHVlU3BhY2VTZXBhcmV0ZWRMaXN0Q29udGFpbnM8Q2FzZUluc2Vuc2l0aXZlPik7CisKIHZvaWQg
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZU1hdGNo
aW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3Rl
cklEIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzLCBjb25zdCBBdHRyaWJ1dGVNYXRjaGluZ0luZm8m
IGF0dHJpYnV0ZUluZm8pCiB7CiAgICAgY29uc3QgQ1NTU2VsZWN0b3ImIGF0dHJpYnV0ZVNlbGVj
dG9yID0gYXR0cmlidXRlSW5mby5zZWxlY3RvcigpOwpAQCAtMjk5Miw2ICszMDU4LDggQEAgc3Rh
dGljIGlubGluZSBBc3NlbWJsZXI6Okp1bXAgdGVzdElzSFRNTAogICAgIHJldHVybiBhc3NlbWJs
ZXIuYnJhbmNoVGVzdDMyKGNvbmRpdGlvbiwgQXNzZW1ibGVyOjpBZGRyZXNzKGRvY3VtZW50QWRk
cmVzcywgRG9jdW1lbnQ6OmRvY3VtZW50Q2xhc3Nlc01lbW9yeU9mZnNldCgpKSwgQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoRG9jdW1lbnQ6OmlzSFRNTERvY3VtZW50Q2xhc3NGbGFnKCkpKTsKIH0K
IAorVkFMSURfSklUX1RBUkdFVF9FWFBMSUNJVElEKFdURkVxdWFsSWdub3JpbmdBU0NJSUNhc2VO
b25OdWxsLCBXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2VOb25OdWxsKTsKKwogdm9pZCBTZWxl
Y3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZVZhbHVlRXhhY3RNYXRj
aGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0
ZXJJRCBjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgY29uc3QgQXRvbVN0cmluZyYgZXhwZWN0ZWRW
YWx1ZSwgQXR0cmlidXRlQ2FzZVNlbnNpdGl2aXR5IHZhbHVlQ2FzZVNlbnNpdGl2aXR5KQogewog
ICAgIExvY2FsUmVnaXN0ZXJXaXRoUHJlZmVyZW5jZSBleHBlY3RlZFZhbHVlUmVnaXN0ZXIobV9y
ZWdpc3RlckFsbG9jYXRvciwgSlNDOjpHUFJJbmZvOjphcmd1bWVudEdQUjEpOwpAQCAtMzExOSw3
ICszMTg3LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlQ29udAogICAg
IGZhaWx1cmVDYXNlcy5hcHBlbmQoZnVuY3Rpb25DYWxsLmNhbGxBbmRCcmFuY2hPbkJvb2xlYW5S
ZXR1cm5WYWx1ZShBc3NlbWJsZXI6Olplcm8pKTsKIH0KIAotc3RhdGljIGJvb2wgZWxlbWVudElz
QWN0aXZlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgYm9vbCBKU0NfSE9TVF9DQUxM
IGVsZW1lbnRJc0FjdGl2ZShjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewogICAgIHJldHVybiBl
bGVtZW50LT5hY3RpdmUoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRv
U3RhdGUoKmVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0FjdGl2ZSk7CiB9CkBAIC0z
MjMwLDcgKzMyOTgsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVt
CiAgICAgc3VjY2Vzc0Nhc2UubGluaygmbV9hc3NlbWJsZXIpOwogfQogCi1zdGF0aWMgYm9vbCBl
bGVtZW50SXNIb3ZlcmVkKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgYm9vbCBKU0Nf
SE9TVF9DQUxMIGVsZW1lbnRJc0hvdmVyZWQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKICAg
ICByZXR1cm4gZWxlbWVudC0+aG92ZXJlZCgpIHx8IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
Zm9yY2VQc2V1ZG9TdGF0ZSgqZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzSG92ZXIp
OwogfQpAQCAtMzI1MSw2ICszMzE5LDggQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlRWxlbQogICAgICAgICBnZW5lcmF0ZUVsZW1lbnRJc0luTGFuZ3VhZ2UoZmFpbHVyZUNh
c2VzLCBsYW5ndWFnZUFyZ3VtZW50cyk7CiB9CiAKK1ZBTElEX0pJVF9UQVJHRVQobWF0Y2hlc0xh
bmdQc2V1ZG9DbGFzcyk7CisKIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVs
ZW1lbnRJc0luTGFuZ3VhZ2UoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25z
dCBWZWN0b3I8QXRvbVN0cmluZz4qIGxhbmd1YWdlQXJndW1lbnRzKQogewogICAgIExvY2FsUmVn
aXN0ZXJXaXRoUHJlZmVyZW5jZSBsYW5nUmFuZ2VSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9y
LCBKU0M6OkdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC0zMzg5LDcgKzM0NTksNyBAQCB2b2lk
IFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtCiAgICAgc3VjY2Vzc0Nhc2UubGlu
aygmbV9hc3NlbWJsZXIpOwogfQogCi1zdGF0aWMgYm9vbCBtYWtlQ29udGV4dFN0eWxlVW5pcXVl
SWZOZWNlc3NhcnlBbmRUZXN0SXNQbGFjZWhvbGRlclNob3duKGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQsIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiBjaGVja2luZ0NvbnRleHQpCitz
dGF0aWMgYm9vbCBKU0NfSE9TVF9DQUxMIG1ha2VDb250ZXh0U3R5bGVVbmlxdWVJZk5lY2Vzc2Fy
eUFuZFRlc3RJc1BsYWNlaG9sZGVyU2hvd24oY29uc3QgRWxlbWVudCogZWxlbWVudCwgU2VsZWN0
b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQqIGNoZWNraW5nQ29udGV4dCkKIHsKICAgICBpZiAo
aXM8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCplbGVtZW50KSAmJiBlbGVtZW50LT5pc1Rl
eHRGaWVsZCgpKSB7CiAgICAgICAgIGlmIChjaGVja2luZ0NvbnRleHQtPnJlc29sdmluZ01vZGUg
PT0gU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpSZXNvbHZpbmdTdHlsZSkKQEAgLTMzOTksNyArMzQ2
OSw3IEBAIHN0YXRpYyBib29sIG1ha2VDb250ZXh0U3R5bGVVbmlxdWVJZk5lY2UKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGlzUGxhY2Vob2xkZXJTaG93bihjb25zdCBFbGVt
ZW50KiBlbGVtZW50KQorc3RhdGljIGJvb2wgSlNDX0hPU1RfQ0FMTCBpc1BsYWNlaG9sZGVyU2hv
d24oY29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICByZXR1cm4gaXM8SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ+KCplbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oKmVsZW1lbnQpLmlzUGxhY2Vob2xkZXJWaXNpYmxlKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmgJKHJldmlzaW9uIDI2NzQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDE1IEBACiAKICNpbmNsdWRlICJDb21waWxlZFNlbGVjdG9yLmgiCiAjaW5j
bHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisKKwor
I2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVybiAiQyIgdW5zaWduZWQgY2FsbFJ1bGVDb2xsZWN0
b3JTaW1wbGVTZWxlY3RvckNoZWNrZXJDU1NKSVRDb2RlKHZvaWQqLCBjb25zdCBXZWJDb3JlOjpF
bGVtZW50KiwgdW5zaWduZWQqKTsKK2V4dGVybiAiQyIgdW5zaWduZWQgY2FsbFF1ZXJ5U2VsZWN0
b3JTaW1wbGVTZWxlY3RvckNoZWNrZXJDU1NKSVRDb2RlKHZvaWQqLCBjb25zdCBXZWJDb3JlOjpF
bGVtZW50Kik7CitleHRlcm4gIkMiIHVuc2lnbmVkIGNhbGxSdWxlQ29sbGVjdG9yU2VsZWN0b3JD
aGVja2VyV2l0aENoZWNraW5nQ29udGV4dENTU0pJVENvZGUodm9pZCosIGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnQqLCBXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCosIHVu
c2lnbmVkKik7CitleHRlcm4gIkMiIHVuc2lnbmVkIGNhbGxRdWVyeVNlbGVjdG9yU2VsZWN0b3JD
aGVja2VyV2l0aENoZWNraW5nQ29udGV4dENTU0pJVENvZGUodm9pZCosIGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4
dCopOworI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsMTMgKzYwLDMyIEBA
IHR5cGVkZWYgdW5zaWduZWQgKCpRdWVyeVNlbGVjdG9yU2ltcGxlU2UKIHR5cGVkZWYgdW5zaWdu
ZWQgKCpSdWxlQ29sbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCkoY29u
c3QgRWxlbWVudCosIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiwgdW5zaWduZWQq
KTsKIHR5cGVkZWYgdW5zaWduZWQgKCpRdWVyeVNlbGVjdG9yU2VsZWN0b3JDaGVja2VyV2l0aENo
ZWNraW5nQ29udGV4dCkoY29uc3QgRWxlbWVudCosIGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6Q2hl
Y2tpbmdDb250ZXh0Kik7CiAKKyNpZiAwICAvLyAgJiYmJiBFTkFCTEUoSklUX0NBR0UpCit0eXBl
ZGVmIHVuc2lnbmVkICgqR2VuZXJpY1NlbGVjdG9yQ2hlY2tlcikoY29uc3QgRWxlbWVudCosIHZv
aWQqIGFyZ3MuLi4pOworZXh0ZXJuICJDIiB1bnNpZ25lZCBKU0M6OmNhbGxUb0NTU1NlbGVjdG9y
SklUQ29kZSh2b2lkKiwgY29uc3QgRWxlbWVudCosIHZvaWQqIGFyZ3MuLi4pOworCit1c2luZyBS
dWxlQ29sbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2VyV3JhcHBlciA9IFdURjo6RnVuY3Rpb248
UnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlcj47CisjZW5kaWYKKwogdm9pZCBjb21w
aWxlU2VsZWN0b3IoQ29tcGlsZWRTZWxlY3RvciYsIGNvbnN0IENTU1NlbGVjdG9yKiwgU2VsZWN0
b3JDb250ZXh0KTsKIAorI2lmIDAgIC8vICAmJiYmIEVOQUJMRShKSVRfQ0FHRSkKK1J1bGVDb2xs
ZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXJXcmFwcGVyIHJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxl
Y3RvckNoZWNrZXJGdW5jdGlvbihDb21waWxlZFNlbGVjdG9yJiBjb21waWxlZFNlbGVjdG9yKQor
eworICAgIEFTU0VSVChjb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9PSBTZWxlY3RvckNvbXBpbGF0
aW9uU3RhdHVzOjpTaW1wbGVTZWxlY3RvckNoZWNrZXIpOworICAgIEdlbmVyaWNTZWxlY3RvckNo
ZWNrZXIgc2VsZWN0b3JDaGVja2VyID0gV1RGOjp1bnRhZ0NGdW5jdGlvblB0cjxnZW5lcmljU2Vs
ZWN0b3JDaGVja2VyLAorICAgIENTU1NlbGVjdG9yUHRyVGFnPihjb21waWxlZFNlbGVjdG9yLmNv
ZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIHJldHVybiBbJiwgc2VsZWN0
b3JDaGVja2VyID0gV1RGTW92ZShzZWxlY3RvckNoZWNrZXIpXShjb25zdCBFbGVtZW50KiBlbGVt
LCB1bnNpZ25lZCogc3BlY2lmaWNpdHkpIHsKKyAgICAgICAgcmV0dXJuIGNhbGxUb0NTU1NlbGVj
dG9ySklUQ29kZShzZWxlY3RvckNoZWNrZXIsIGVsZW0sIHNwZWNpZmljaXR5KTsKKyAgICB9Cit9
CisjZWxzZQogaW5saW5lIFJ1bGVDb2xsZWN0b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgcnVsZUNv
bGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlckZ1bmN0aW9uKENvbXBpbGVkU2VsZWN0b3ImIGNv
bXBpbGVkU2VsZWN0b3IpCiB7CiAgICAgQVNTRVJUKGNvbXBpbGVkU2VsZWN0b3Iuc3RhdHVzID09
IFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXM6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcik7CiAgICAg
cmV0dXJuIFdURjo6dW50YWdDRnVuY3Rpb25QdHI8UnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9y
Q2hlY2tlciwgQ1NTU2VsZWN0b3JQdHJUYWc+KGNvbXBpbGVkU2VsZWN0b3IuY29kZVJlZi5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiB9CisjZW5kaWYKIAogaW5saW5lIFF1ZXJ5U2VsZWN0
b3JTaW1wbGVTZWxlY3RvckNoZWNrZXIgcXVlcnlTZWxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tl
ckZ1bmN0aW9uKENvbXBpbGVkU2VsZWN0b3ImIGNvbXBpbGVkU2VsZWN0b3IpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5OSwx
MCArMzk5LDIwIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGUKIHRl
bXBsYXRlIDx0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ+CiBBTFdBWVNfSU5MSU5FIHZvaWQg
U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyKGNv
bnN0IENvbnRhaW5lck5vZGUmIHNlYXJjaFJvb3ROb2RlLCBTZWxlY3RvckNvbXBpbGVyOjpRdWVy
eVNlbGVjdG9yU2ltcGxlU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlciwgdHlwZW5hbWUg
U2VsZWN0b3JRdWVyeVRyYWl0OjpPdXRwdXRUeXBlJiBvdXRwdXQsIGNvbnN0IFNlbGVjdG9yRGF0
YSYgc2VsZWN0b3JEYXRhKSBjb25zdAogeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBhdXRv
IGNhbGxRdWVyeVNlbGVjdG9yQ2hlY2tlciA9IFsmXShjb25zdCBFbGVtZW50KiBlbGVtKSB7Cisg
ICAgICAgIHJldHVybiBjYWxsUXVlcnlTZWxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tlckNTU0pJ
VENvZGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2VsZWN0b3JDaGVja2VyKSwgZWxlbSk7Cisg
ICAgfTsKKyNlbHNlCisgICAgYXV0byBjYWxsUXVlcnlTZWxlY3RvckNoZWNrZXIgPSBbJl0oY29u
c3QgRWxlbWVudCogZWxlbSkgeworICAgICAgICByZXR1cm4gc2VsZWN0b3JDaGVja2VyKGVsZW0p
OworICAgIH07CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRz
T2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2Rl
KSkpIHsKICAgICAgICAgc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwog
Ci0gICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQpKSB7CisgICAgICAgIGlmIChj
YWxsUXVlcnlTZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQpKSB7CiAgICAgICAgICAgICBTZWxlY3Rv
clF1ZXJ5VHJhaXQ6OmFwcGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7CiAg
ICAgICAgICAgICBpZiAoU2VsZWN0b3JRdWVyeVRyYWl0OjpzaG91bGRPbmx5TWF0Y2hGaXJzdEVs
ZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDE2LDEwICs0MjYsMjAgQEAgQUxX
QVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZQogICAgIFNlbGVjdG9yQ2hlY2tl
cjo6Q2hlY2tpbmdDb250ZXh0IGNoZWNraW5nQ29udGV4dChTZWxlY3RvckNoZWNrZXI6Ok1vZGU6
OlF1ZXJ5aW5nUnVsZXMpOwogICAgIGNoZWNraW5nQ29udGV4dC5zY29wZSA9IHJvb3ROb2RlLmlz
RG9jdW1lbnROb2RlKCkgPyBudWxscHRyIDogJnJvb3ROb2RlOwogCisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgIGF1dG8gY2FsbFF1ZXJ5U2VsZWN0b3JDaGVja2VyV2l0aENvbnRleHQgPSBbJl0o
Y29uc3QgRWxlbWVudCogZWxlbSwgY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRl
eHQqIGNvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuIGNhbGxRdWVyeVNlbGVjdG9yU2VsZWN0b3JD
aGVja2VyV2l0aENoZWNraW5nQ29udGV4dENTU0pJVENvZGUocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oc2VsZWN0b3JDaGVja2VyKSwgZWxlbSwgY29udGV4dCk7CisgICAgfTsKKyNlbHNlCisgICAg
YXV0byBjYWxsUXVlcnlTZWxlY3RvckNoZWNrZXJXaXRoQ29udGV4dCA9IFsmXShjb25zdCBFbGVt
ZW50KiBlbGVtLCBjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCogY29udGV4
dCkgeworICAgICAgICByZXR1cm4gc2VsZWN0b3JDaGVja2VyKGVsZW0sIGNvbnRleHQpOworICAg
IH07CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBl
PEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29udGFpbmVyTm9kZSY+KHNlYXJjaFJvb3ROb2RlKSkpIHsK
ICAgICAgICAgc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3Iud2FzVXNlZCgpOwogCi0gICAg
ICAgIGlmIChzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQsICZjaGVja2luZ0NvbnRleHQpKSB7Cisg
ICAgICAgIGlmIChjYWxsUXVlcnlTZWxlY3RvckNoZWNrZXJXaXRoQ29udGV4dCgmZWxlbWVudCwg
JmNoZWNraW5nQ29udGV4dCkpIHsKICAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBw
ZW5kT3V0cHV0Rm9yRWxlbWVudChvdXRwdXQsICZlbGVtZW50KTsKICAgICAgICAgICAgIGlmIChT
ZWxlY3RvclF1ZXJ5VHJhaXQ6OnNob3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC00MzIsNiArNDUyLDI1IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBT
ZWxlY3RvckRhdGFMaXN0OjpleGUKIHsKICAgICBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29u
dGV4dCBjaGVja2luZ0NvbnRleHQoU2VsZWN0b3JDaGVja2VyOjpNb2RlOjpRdWVyeWluZ1J1bGVz
KTsKICAgICBjaGVja2luZ0NvbnRleHQuc2NvcGUgPSByb290Tm9kZS5pc0RvY3VtZW50Tm9kZSgp
ID8gbnVsbHB0ciA6ICZyb290Tm9kZTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBhdXRv
IGNhbGxRdWVyeVNlbGVjdG9yQ2hlY2tlciA9IFsmXShhdXRvIHNlbGVjdG9yQ2hlY2tlciwgY29u
c3QgRWxlbWVudCogZWxlbSkgeworICAgICAgICByZXR1cm4gY2FsbFF1ZXJ5U2VsZWN0b3JTaW1w
bGVTZWxlY3RvckNoZWNrZXJDU1NKSVRDb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNlbGVj
dG9yQ2hlY2tlciksIGVsZW0pOworICAgIH07CisKKyAgICBhdXRvIGNhbGxRdWVyeVNlbGVjdG9y
Q2hlY2tlcldpdGhDb250ZXh0ID0gWyZdKGF1dG8gc2VsZWN0b3JDaGVja2VyLCBjb25zdCBFbGVt
ZW50KiBlbGVtLCBjb25zdCBTZWxlY3RvckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCogY29udGV4
dCkgeworICAgICAgICByZXR1cm4gY2FsbFF1ZXJ5U2VsZWN0b3JTZWxlY3RvckNoZWNrZXJXaXRo
Q2hlY2tpbmdDb250ZXh0Q1NTSklUQ29kZShyZWludGVycHJldF9jYXN0PHZvaWQqPihzZWxlY3Rv
ckNoZWNrZXIpLCBlbGVtLCBjb250ZXh0KTsKKyAgICB9OworI2Vsc2UKKyAgICBhdXRvIGNhbGxR
dWVyeVNlbGVjdG9yQ2hlY2tlciA9IFsmXShhdXRvIHNlbGVjdG9yQ2hlY2tlciwgY29uc3QgRWxl
bWVudCogZWxlbSkgeworICAgICAgICByZXR1cm4gc2VsZWN0b3JDaGVja2VyKGVsZW0pOworICAg
IH07CisKKyAgICBhdXRvIGNhbGxRdWVyeVNlbGVjdG9yQ2hlY2tlcldpdGhDb250ZXh0ID0gWyZd
KGF1dG8gc2VsZWN0b3JDaGVja2VyLCBjb25zdCBFbGVtZW50KiBlbGVtLCBjb25zdCBTZWxlY3Rv
ckNoZWNrZXI6OkNoZWNraW5nQ29udGV4dCogY29udGV4dCkgeworICAgICAgICByZXR1cm4gc2Vs
ZWN0b3JDaGVja2VyKGVsZW0sIGNvbnRleHQpOworICAgIH07CisjZW5kaWYKKwogICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8Q29u
dGFpbmVyTm9kZSY+KHJvb3ROb2RlKSkpIHsKICAgICAgICAgZm9yIChhdXRvJiBzZWxlY3RvciA6
IG1fc2VsZWN0b3JzKSB7CiAgICAgICAgICAgICBzZWxlY3Rvci5jb21waWxlZFNlbGVjdG9yLndh
c1VzZWQoKTsKQEAgLTQzOSwxMSArNDc4LDExIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3Rv
ckRhdGFMaXN0OjpleGUKICAgICAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwogICAgICAg
ICAgICAgaWYgKHNlbGVjdG9yLmNvbXBpbGVkU2VsZWN0b3Iuc3RhdHVzID09IFNlbGVjdG9yQ29t
cGlsYXRpb25TdGF0dXM6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlcikgewogICAgICAgICAgICAgICAg
IGF1dG8gc2VsZWN0b3JDaGVja2VyID0gU2VsZWN0b3JDb21waWxlcjo6cXVlcnlTZWxlY3RvclNp
bXBsZVNlbGVjdG9yQ2hlY2tlckZ1bmN0aW9uKHNlbGVjdG9yLmNvbXBpbGVkU2VsZWN0b3IpOwot
ICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQpOworICAg
ICAgICAgICAgICAgIG1hdGNoZWQgPSBjYWxsUXVlcnlTZWxlY3RvckNoZWNrZXIoc2VsZWN0b3JD
aGVja2VyLCAmZWxlbWVudCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IEFTU0VSVChzZWxlY3Rvci5jb21waWxlZFNlbGVjdG9yLnN0YXR1cyA9PSBTZWxlY3RvckNvbXBp
bGF0aW9uU3RhdHVzOjpTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0KTsKICAgICAg
ICAgICAgICAgICBhdXRvIHNlbGVjdG9yQ2hlY2tlciA9IFNlbGVjdG9yQ29tcGlsZXI6OnF1ZXJ5
U2VsZWN0b3JTZWxlY3RvckNoZWNrZXJGdW5jdGlvbldpdGhDaGVja2luZ0NvbnRleHQoc2VsZWN0
b3IuY29tcGlsZWRTZWxlY3Rvcik7Ci0gICAgICAgICAgICAgICAgbWF0Y2hlZCA9IHNlbGVjdG9y
Q2hlY2tlcigmZWxlbWVudCwgJmNoZWNraW5nQ29udGV4dCk7CisgICAgICAgICAgICAgICAgbWF0
Y2hlZCA9IGNhbGxRdWVyeVNlbGVjdG9yQ2hlY2tlcldpdGhDb250ZXh0KHNlbGVjdG9yQ2hlY2tl
ciwgJmVsZW1lbnQsICZjaGVja2luZ0NvbnRleHQpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKG1hdGNoZWQpIHsKICAgICAgICAgICAgICAgICBTZWxlY3RvclF1ZXJ5VHJhaXQ6OmFw
cGVuZE91dHB1dEZvckVsZW1lbnQob3V0cHV0LCAmZWxlbWVudCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDEyICszNSwxOCBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgogI2luY2x1ZGUg
IkpTRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KSVRWYWxpZFRhcmdldC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nu
aXBwZXQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbmlwcGV0UGFyYW1zLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKK1ZBTElEX0pJVF9UQVJH
RVRfRVhQTElDSVRJRChET01KSVRUb1dyYXBwZXJTbG93Q29udGFpbmVyTm9kZSwgRE9NSklUOjp0
b1dyYXBwZXJTbG93PENvbnRhaW5lck5vZGU+KTsKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJ
RChET01KSVRUb1dyYXBwZXJTbG93RG9jdW1lbnQsIERPTUpJVDo6dG9XcmFwcGVyU2xvdzxEb2N1
bWVudD4pOworVkFMSURfSklUX1RBUkdFVF9FWFBMSUNJVElEKERPTUpJVFRvV3JhcHBlclNsb3dF
bGVtZW50LCBET01KSVQ6OnRvV3JhcHBlclNsb3c8RWxlbWVudD4pOworVkFMSURfSklUX1RBUkdF
VF9FWFBMSUNJVElEKERPTUpJVFRvV3JhcHBlclNsb3dIVE1MRWxlbWVudCwgRE9NSklUOjp0b1dy
YXBwZXJTbG93PEhUTUxFbGVtZW50Pik7CisKIFJlZjxKU0M6OlNuaXBwZXQ+IGNoZWNrU3ViQ2xh
c3NTbmlwcGV0Rm9ySlNEb2N1bWVudCgpCiB7CiAgICAgcmV0dXJuIERPTUpJVDo6Y2hlY2tET008
RG9jdW1lbnQ+KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNOb2RlRE9NSklULmNwcAko
cmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL1dlYkNvcmUvZG9taml0L0pTTm9kZURPTUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxNSBAQAogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFt
ZVRyYWNlcnMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KSVRWYWxpZFRhcmdldC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NuaXBwZXQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TbmlwcGV0UGFyYW1zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKK1ZBTElEX0pJVF9UQVJHRVRfRVhQTElDSVRJRChET01KSVRUb1dyYXBwZXJT
bG93Tm9kZSwgRE9NSklUOjp0b1dyYXBwZXJTbG93PE5vZGU+KTsKKwogUmVmPEpTQzo6U25pcHBl
dD4gY2hlY2tTdWJDbGFzc1NuaXBwZXRGb3JKU05vZGUoKQogewogICAgIHJldHVybiBET01KSVQ6
OmNoZWNrRE9NPE5vZGU+KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TG9nZ2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZUxvZ2dpbmcuY3BwCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTG9nZ2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICNp
bmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCisvLyBGSVhNRTogSklUX0NBR0UgLSBXZSBjYW4gcmVtb3ZlIHRoaXMgaW5jbHVkZSBh
ZnRlciB3ZSBlbGltaW5hdGUgdGhlIHNpemUgbG9nZ2luZyBiZWxvdy4KKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KSVRWYWxpZFRhcmdldExpc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMDMsNiArMTA1LDggQEAgdm9pZCBQZXJmb3JtYW5jZUxvZ2dpbmc6OmRpZFJlYWNoUG9p
bnRPZgogICAgIFJFTEVBU0VfTE9HKFBlcmZvcm1hbmNlTG9nZ2luZywgIk1lbW9yeSB1c2FnZSBp
bmZvIGR1bXAgYXQgJXM6IiwgdG9TdHJpbmcocG9pKSk7CiAgICAgZm9yIChhdXRvJiBpdCA6IHN0
YXRzKQogICAgICAgICBSRUxFQVNFX0xPRyhQZXJmb3JtYW5jZUxvZ2dpbmcsICIgICVzOiAlenUi
LCBpdC5rZXksIGl0LnZhbHVlKTsKKyAgICAKKyAgICBKU0M6OkpJVFZhbGlkVGFyZ2V0TGlzdDo6
aW5zdGFuY2UoKS5zdGF0cygiSW4gZGlkUmVhY2hQb2ludE9mSW50ZXJlc3QoKTogIik7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmFsaWRKSVRUYXJnZXRMaXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WYWxpZEpJVFRhcmdl
dExpc3QuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZhbGlk
SklUVGFyZ2V0TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVmFsaWRKSVRUYXJnZXRMaXN0LmgiCisKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KSVRWYWxpZFRhcmdldExpc3QuaD4KKworI2lmIEVOQUJMRShKSVQpICYmIEVOQUJM
RShKSVRfQ0FHRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSYXdKSVRUYXJnZXRQdHIgdmFs
aWRKSVRUYXJnZXRzRW5kIFZBTElEX1RBUkdFVF9UQUcgPSByZWludGVycHJldF9jYXN0PHZvaWQq
PigweGZmZmZmZmZmMDAwMDAwZWRMKTsKKwordm9pZCBwb3B1bGF0ZVZhbGlkSklUVGFyZ2V0TGlz
dCgpCit7CisgICAgSlNDOjpKSVRWYWxpZFRhcmdldExpc3QmIHZhbGlkVGFyZ2V0TGlzdCA9IEpT
Qzo6SklUVmFsaWRUYXJnZXRMaXN0OjppbnN0YW5jZSgpOworCisgICAgdm9pZCoqIGZwdHIgPSAm
dmFsaWRKSVRUYXJnZXRzU3RhcnQ7CisKKyAgICBBU1NFUlQoKmZwdHIgPT0gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oMHhmZmZmZmZmZjAwMDAwMDU3TCkpOworCisgICAgZm9yIChmcHRyKys7ICpm
cHRyICE9IHZhbGlkSklUVGFyZ2V0c0VuZDsgZnB0cisrKQorICAgICAgICB2YWxpZFRhcmdldExp
c3QuYWRkRW50cnkoKmZwdHIpOworCisgICAgdmFsaWRUYXJnZXRMaXN0LnN0YXRzKCJBZnRlciBX
ZWJDb3JlOjpwb3B1bGF0ZVZhbGlkSklUVGFyZ2V0TGlzdCgpOiAiKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ZhbGlkSklUVGFyZ2V0TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ZhbGlkSklUVGFyZ2V0TGlzdC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZhbGlkSklUVGFyZ2V0TGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSklUX0NB
R0UpCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KSVRWYWxpZFRhcmdldC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2V4dGVybiBSYXdKSVRUYXJnZXRQdHIgX19hdHRyaWJ1dGVfXygo
VkFMSURfVEFSR0VUX1NFQ1RJT04pKSB2YWxpZEpJVFRhcmdldHNTdGFydDsKKworV0VCQ09SRV9F
WFBPUlQgdm9pZCBwb3B1bGF0ZVZhbGlkSklUVGFyZ2V0TGlzdCgpOworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmFsaWRK
SVRUYXJnZXRMaXN0U3RhcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ZhbGlkSklUVGFyZ2V0TGlzdFN0YXJ0LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9WYWxpZEpJVFRhcmdldExpc3RTdGFydC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoSklUKSAmJiBFTkFC
TEUoSklUX0NBR0UpCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9WYWxpZEpJVFRhcmdldExpc3QuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkKiB2YWxpZEpJVFRhcmdldHNTdGFydCBWQUxJ
RF9UQVJHRVRfVEFHID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHhmZmZmZmZmZjAwMDAwMDU3
TCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
Lm1tCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBv
cnQgIldlYkNvcmVUaHJlYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ29yZVRocmVhZE1lc3Nh
Z2UuaCIKICNpbXBvcnQgIldlYkNvcmVUaHJlYWRSdW4uaCIKKyNpbXBvcnQgInBsYXRmb3JtL1Zh
bGlkSklUVGFyZ2V0TGlzdC5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0ludm9jYXRpb24uaD4K
ICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtNTk0LDYgKzU5NSw5IEBAIHN0YXRpYyB2b2lk
KiBSdW5XZWJUaHJlYWQodm9pZCopCiAgICAgLy8gY29kZSBpbnZva2VkIGJ5IHRoZSBsYXR0ZXIg
bmVlZHMgdG8ga25vdyBpZiBpdCdzIHJ1bm5pbmcgb24gdGhlIFdlYlRocmVhZC4gU2VlCiAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzg1MDI0ODc+LgogICAgIFdURjo6aW5pdGlhbGl6ZVdlYlRocmVh
ZCgpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBXZWJDb3JlOjpwb3B1bGF0ZVZhbGlkSklU
VGFyZ2V0TGlzdCgpOworI2VuZGlmCiAgICAgSlNDOjppbml0aWFsaXplKCk7CiAgICAgCiAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhlIFdlYlRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkIHNoYXJl
IHRoZSBzYW1lIFRocmVhZEdsb2JhbERhdGEgb2JqZWN0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDI2NzQ1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDU3LDExICs0NTcsMjEgQEAgaW5saW5lIGJvb2wgRWxlbWVudFJ1bGVDb2xsZWN0
b3I6OnJ1bGVNYQogICAgICAgICBjb21waWxlZFNlbGVjdG9yLndhc1VzZWQoKTsKIAogICAgICAg
ICBhdXRvIHNlbGVjdG9yQ2hlY2tlciA9IFNlbGVjdG9yQ29tcGlsZXI6OnJ1bGVDb2xsZWN0b3JT
aW1wbGVTZWxlY3RvckNoZWNrZXJGdW5jdGlvbihjb21waWxlZFNlbGVjdG9yKTsKKyNpZiBFTkFC
TEUoSklUX0NBR0UpCisgICAgICAgIGF1dG8gY2FsbFNlbGVjdG9yQ2hlY2tlciA9IFsmc2VsZWN0
b3JDaGVja2VyXShjb25zdCBFbGVtZW50KiBlbGVtLCB1bnNpZ25lZCogc3BlY2lmaWNpdHkpIHsK
KyAgICAgICAgICAgIHJldHVybiBjYWxsUnVsZUNvbGxlY3RvclNpbXBsZVNlbGVjdG9yQ2hlY2tl
ckNTU0pJVENvZGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc2VsZWN0b3JDaGVja2VyKSwgZWxl
bSwgc3BlY2lmaWNpdHkpOworICAgICAgICB9OworI2Vsc2UKKyAgICAgICAgYXV0byBjYWxsU2Vs
ZWN0b3JDaGVja2VyID0gWyZzZWxlY3RvckNoZWNrZXJdKGNvbnN0IEVsZW1lbnQqIGVsZW0sIHVu
c2lnbmVkKiBzcGVjaWZpY2l0eSkgeworICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yQ2hlY2tl
cihlbGVtLCBzcGVjaWZpY2l0eSk7CisgICAgICAgIH07CisjZW5kaWYKKwogI2lmICFBU1NFUlRf
TVNHX0RJU0FCTEVECiAgICAgICAgIHVuc2lnbmVkIGlnbm9yZVNwZWNpZmljaXR5OwotICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFzZWxlY3RvckNoZWNrZXIoJmVsZW1lbnQoKSwgJmlnbm9y
ZVNwZWNpZmljaXR5KSB8fCBtX3BzZXVkb0VsZW1lbnRSZXF1ZXN0LnBzZXVkb0lkID09IFBzZXVk
b0lkOjpOb25lLCAiV2hlbiBtYXRjaGluZyBwc2V1ZG8gZWxlbWVudHMsIHdlIHNob3VsZCBuZXZl
ciBjb21waWxlIGEgc2VsZWN0b3IgY2hlY2tlciB3aXRob3V0IGNvbnRleHQgdW5sZXNzIGl0IGNh
bm5vdCBtYXRjaCBhbnl0aGluZy4iKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghY2Fs
bFNlbGVjdG9yQ2hlY2tlcigmZWxlbWVudCgpLCAmaWdub3JlU3BlY2lmaWNpdHkpIHx8IG1fcHNl
dWRvRWxlbWVudFJlcXVlc3QucHNldWRvSWQgPT0gUHNldWRvSWQ6Ok5vbmUsICJXaGVuIG1hdGNo
aW5nIHBzZXVkbyBlbGVtZW50cywgd2Ugc2hvdWxkIG5ldmVyIGNvbXBpbGUgYSBzZWxlY3RvciBj
aGVja2VyIHdpdGhvdXQgY29udGV4dCB1bmxlc3MgaXQgY2Fubm90IG1hdGNoIGFueXRoaW5nLiIp
OwogI2VuZGlmCi0gICAgICAgIGJvb2wgc2VsZWN0b3JNYXRjaGVzID0gc2VsZWN0b3JDaGVja2Vy
KCZlbGVtZW50KCksICZzcGVjaWZpY2l0eSk7CisgICAgICAgIGJvb2wgc2VsZWN0b3JNYXRjaGVz
ID0gY2FsbFNlbGVjdG9yQ2hlY2tlcigmZWxlbWVudCgpLCAmc3BlY2lmaWNpdHkpOwogCiAgICAg
ICAgIGlmIChzZWxlY3Rvck1hdGNoZXMgJiYgcnVsZURhdGEuY29udGFpbnNVbmNvbW1vbkF0dHJp
YnV0ZVNlbGVjdG9yKCkpCiAgICAgICAgICAgICBtX2RpZE1hdGNoVW5jb21tb25BdHRyaWJ1dGVT
ZWxlY3RvciA9IHRydWU7CkBAIC00ODMsNyArNDkzLDE4IEBAIGlubGluZSBib29sIEVsZW1lbnRS
dWxlQ29sbGVjdG9yOjpydWxlTWEKICAgICAgICAgY29tcGlsZWRTZWxlY3Rvci53YXNVc2VkKCk7
CiAKICAgICAgICAgYXV0byBzZWxlY3RvckNoZWNrZXIgPSBTZWxlY3RvckNvbXBpbGVyOjpydWxl
Q29sbGVjdG9yU2VsZWN0b3JDaGVja2VyRnVuY3Rpb25XaXRoQ2hlY2tpbmdDb250ZXh0KGNvbXBp
bGVkU2VsZWN0b3IpOwotICAgICAgICBzZWxlY3Rvck1hdGNoZXMgPSBzZWxlY3RvckNoZWNrZXIo
JmVsZW1lbnQoKSwgJmNvbnRleHQsICZzcGVjaWZpY2l0eSk7CisKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgICAgIGF1dG8gY2FsbFNlbGVjdG9yQ2hlY2tlcldpdGhDb250ZXh0ID0gWyZzZWxl
Y3RvckNoZWNrZXJdKGNvbnN0IEVsZW1lbnQqIGVsZW0sIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tp
bmdDb250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCogc3BlY2lmaWNpdHkpIHsKKyAgICAgICAgICAg
IHJldHVybiBjYWxsUnVsZUNvbGxlY3RvclNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRl
eHRDU1NKSVRDb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNlbGVjdG9yQ2hlY2tlciksIGVs
ZW0sIGNvbnRleHQsIHNwZWNpZmljaXR5KTsKKyAgICAgICAgfTsKKyNlbHNlCisgICAgICAgIGF1
dG8gY2FsbFNlbGVjdG9yQ2hlY2tlcldpdGhDb250ZXh0ID0gWyZzZWxlY3RvckNoZWNrZXJdKGNv
bnN0IEVsZW1lbnQqIGVsZW0sIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0KiBjb250
ZXh0LCB1bnNpZ25lZCogc3BlY2lmaWNpdHkpIHsKKyAgICAgICAgICAgIHJldHVybiBzZWxlY3Rv
ckNoZWNrZXIoZWxlbSwgY29udGV4dCwgc3BlY2lmaWNpdHkpOworICAgICAgICB9OworI2VuZGlm
CisKKyAgICAgICAgc2VsZWN0b3JNYXRjaGVzID0gY2FsbFNlbGVjdG9yQ2hlY2tlcldpdGhDb250
ZXh0KCZlbGVtZW50KCksICZjb250ZXh0LCAmc3BlY2lmaWNpdHkpOwogICAgIH0gZWxzZQogI2Vu
ZGlmIC8vIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaAkocmV2aXNpb24gMjY3NDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCB2b2lkIG1hcEF0dHJpYnV0
ZVRvQ1NTUHJvcGVydHkoSGFzaE1hcDxBCiAKIGNsYXNzIFNWR0VsZW1lbnQgOiBwdWJsaWMgU3R5
bGVkRWxlbWVudCwgcHVibGljIFNWR1Byb3BlcnR5T3duZXIgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoU1ZHRWxlbWVudCk7CisgICAgZnJpZW5kIHZvaWQgcG9wdWxhdGVKSVRWYWxpZFRh
cmdldExpc3QoKTsKKwogcHVibGljOgogICAgIGJvb2wgaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50
KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjc0NTQpCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA5LTIy
ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIENh
Z2UgSklUIHBvaW50ZXJzIHRvIHRoZSBKSVQgcmVnaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg2NzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjYWxsIHRvIHBvcHVsYXRlIHRoZSBWYWxp
ZCBKSVQgVGFyZ2V0IExpc3Qgd2l0aCB2YWxpZCBXZWJDb3JlIGVudHJ5cG9pbnRzLgorCisgICAg
ICAgICogU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OnJ1bkluaXRpYWxpemF0aW9uQ29kZSk6CisKIDIwMjAtMDktMjIgIExhdXJvIE1vdXJh
ICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUkVHUkVTU0lPTihyMjY3Mzk4
KTogc2V2ZXJhbCBoaWRwaSB0ZXN0cyBhcmUgZmFpbGluZwpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tCShyZXZpc2lv
biAyNjc0NTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6
ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIlZl
cnNpb25DaGVja3MuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRp
bmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVmFsaWRKSVRUYXJnZXRMaXN0Lmg+CiAjaW1wb3J0IDxt
dXRleD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRl
ZC5oPgpAQCAtNTAsNiArNTEsOSBAQCBzdGF0aWMgdm9pZCBydW5Jbml0aWFsaXphdGlvbkNvZGUo
dm9pZCogCiAgICAgSW5pdFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UoKTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIFdlYkNvcmU6OnBvcHVsYXRlVmFsaWRKSVRUYXJn
ZXRMaXN0KCk7CisjZW5kaWYKICAgICBKU0M6OmluaXRpYWxpemUoKTsKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAK
</data>
<flag name="commit-queue"
          id="425160"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>