<?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>195083</bug_id>
          
          <creation_ts>2019-02-26 18:01:59 -0800</creation_ts>
          <short_desc>[Web GPU] Updates to GPUCommandBuffer for new GPUCommandEncoder concept</short_desc>
          <delta_ts>2019-03-14 16:04:26 -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>WebGPU</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>sroberts</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1510306</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-02-26 18:01:59 -0800</bug_when>
    <thetext>https://github.com/gpuweb/gpuweb/commit/ac744d62850728f347f60f999c212468a22b36f3#diff-7d154c8abbb1fb80041e213976224980

The Web GPU API needs to be updated to match the changes made above before MVP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510307</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-26 18:03:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/48423591&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516115</commentid>
    <comment_count>2</comment_count>
      <attachid>364564</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-13 12:59:43 -0700</bug_when>
    <thetext>Created attachment 364564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516308</commentid>
    <comment_count>3</comment_count>
      <attachid>364601</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-13 18:11:52 -0700</bug_when>
    <thetext>Created attachment 364601
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516323</commentid>
    <comment_count>4</comment_count>
      <attachid>364601</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-13 18:42:17 -0700</bug_when>
    <thetext>Comment on attachment 364601
Patch for landing

Clearing flags on attachment: 364601

Committed r242931: &lt;https://trac.webkit.org/changeset/242931&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516324</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-13 18:42:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516591</commentid>
    <comment_count>6</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-03-14 12:47:47 -0700</bug_when>
    <thetext>rolled out in https://trac.webkit.org/changeset/242956/webkit

Causing internal watch/tv OS build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516692</commentid>
    <comment_count>7</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-14 15:24:55 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516693</commentid>
    <comment_count>8</comment_count>
      <attachid>364700</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-14 15:24:56 -0700</bug_when>
    <thetext>Created attachment 364700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516723</commentid>
    <comment_count>9</comment_count>
      <attachid>364700</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-14 16:04:24 -0700</bug_when>
    <thetext>Comment on attachment 364700
Patch

Clearing flags on attachment: 364700

Committed r242974: &lt;https://trac.webkit.org/changeset/242974&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516724</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-14 16:04:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364564</attachid>
            <date>2019-03-13 12:59:43 -0700</date>
            <delta_ts>2019-03-13 18:11:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195083-20190313125942.patch</filename>
            <type>text/plain</type>
            <size>69568</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVhYzc1NTIxYTcwN2U5
YmJiZTQ2MzE2Zjk1M2I4ODBlODFiZjMxMi4uZGM0MzE0NTAzMzU4MmJiOTI2NGFlMjY0MTNlNWIz
ZDQwZDQxM2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE5LTAzLTEzICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIFVwZGF0
ZXMgdG8gR1BVQ29tbWFuZEJ1ZmZlciBmb3IgbmV3IEdQVUNvbW1hbmRRdWV1ZSBjb25jZXB0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUwODMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NDIzNTkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIgbm93IHJlcHJlc2Vu
dHMgYSBjb21wbGV0ZWQgR1BVQ29tbWFuZEJ1ZmZlciB0aGF0IGNhbiBvbmx5IGJlIHVzZWQgaW4g
cXVldWUgc3VibWl0cy4gVGhlIHByZXZpb3VzIFdlYkdQVUNvbW1hbmRCdWZmZXIKKyAgICAgICAg
aXMgbm93IFdlYkdQVUNvbW1hbmRFbmNvZGVyLgorCisgICAgICAgIEFmZmVjdGVkIFdlYiBHUFUg
dGVzdHMgdXBkYXRlZCB0byBtYXRjaCBuZXcgQVBJLgorCisgICAgICAgIE5ldyBmaWxlcyBhbmQg
c3ltYm9sczoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmg6CisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBXZWJHUFVDb21tYW5kQnVmZmVy
LCBub3cganVzdCBhIERPTSBvYmplY3QgY2FycmllciBmb3IgYSBmaW5pc2hlZCBHUFVDb21tYW5k
QnVmZmVyOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQnVmZmVyQ29weVZpZXc6OnRyeUNyZWF0ZUdQVUJ1ZmZl
ckNvcHlWaWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVRleHR1
cmVDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVm
ZmVyVG9CdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1
ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpjb21tYW5kQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNvbW1hbmRCdWZmZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuaWRsOgorCisgICAgICAgIFJlbmFtZSBvbGQgV2ViR1BVQ29tbWFuZEJ1ZmZlciB0byBXZWJH
UFVDb21tYW5kRW5jb2RlcjoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
RW5jb2Rlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRCdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQnVmZmVyQ29w
eVZpZXc6OnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVVRleHR1cmVDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRFbmNvZGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEVuY29kZXI6OldlYkdQVUNvbW1hbmRFbmNv
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRl
clBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZm
ZXJUb0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29w
eUJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kRW5jb2Rl
cjo6Y29weVRleHR1cmVUb0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5k
RW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
Q29tbWFuZEVuY29kZXI6OmZpbmlzaCk6IEFkZGVkLiAiQ29tcGxldGVzIiB0aGlzIGFuZCBpbnZh
bGlkYXRlcyBpdC4gUmV0dXJucyBpdHMgR1BVQ29tbWFuZEJ1ZmZlciwgcmVhZHkgZm9yIHN1Ym1p
c3Npb24uCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1
ZmZlci5oLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlk
bDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIgY29u
c3QpOiBSZW5hbWVkIGZvbSBjcmVhdGVDb21tYW5kQnVmZmVyLiBOb3cgcmV0dXJucyBub24tbnVs
bGFibGUuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZm
ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OldlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyOjplbmRQYXNzKTogTm8gbG9uZ2VyIHJldHVybnMgdGhlIG9yaWdpbmFsIFdl
YkdQVUNvbW1hbmRCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
UXVldWU6OnN1Ym1pdCk6IFJlcGxhY2UgdW5uZWNlc3NhcnkgcnZhbHVlIHJlZmVyZW5jZSBwYXJh
bWV0ZXIuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
UmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyIGNvbnN0KTogTm93IHJldHVy
bnMgYSBwb2ludGVyIHNpbmNlIGl0IGlzIHByb3Blcmx5IGJhY2tlZCBieSBhIFJlZlB0ci4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHUFVTd2FwQ2hhaW46OmdldEN1cnJlbnRUZXh0dXJlKTogTm8gbG9uZ2VyIGludmFsaWRh
dGVzIG1fY3VycmVudFRleHR1cmUuIERvaCEKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQ29tbWFuZEJ1ZmZlci5oOiBNaXNzaW5nIGluY2x1ZGVzIGZvciB0aGUgKkNvcHlWaWV3
IHN0cnVjdHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OnRyeUNyZWF0ZUNvbW1hbmRCdWZmZXIgY29u
c3QpOiBSZW5hbWVkIGZyb20gY3JlYXRlQ29tbWFuZEJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6
OkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW06CisgICAgICAgIChXZWJDb3Jl
OjpHUFVDb21tYW5kQnVmZmVyOjp0cnlDcmVhdGUpOiBSZW5hbWVkIGZyb20gY3JlYXRlLgorICAg
ICAgICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKwogMjAx
OS0wMy0xMiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWIgR1BVXSBVcGRhdGUgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGFuZCBhZGQgR1BVQ29s
b3JTdGF0ZURlc2NyaXB0b3IuZm9ybWF0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDk1M2ZkYzYx
MjkxMjU3ZjgxODkwM2I3OWE1N2U5NmU1YTY3ODA3NDEuLjVjNjcwNDkzM2QyMjIwODMxZTQ1NDQz
MjdhZWM5YjEzNDg0YzA4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00OTQsNiArNDk0LDcg
QEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVCdWZmZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwK
ICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAorICAgIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggOTdjZGE3NzI4ZTgzNjkwMzA0ZGQ4MTc0NzE3
MjI5ZDczN2IzOTM3Yi4uNzExZGQzZDBjMWY3YzdmNTFlMDlhY2RlMDIxMDU4NjZiNmRkOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00MDQsNiArNDA0LDcgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVm
ZmVyLmNwcAppbmRleCAxMjdlMDMyMWZmNWIzNDQyYmVlNWJmZWFiYjU5Yjg4OTYxZmYwZjY0Li5h
NTEwNTExNzc2ZDg3ZWI1MjcxODc1NTIyNjAzNTM4MDM5ZTFmYzY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAt
MjgsMTEyICsyOCwxOCBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUgIkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIK
LSNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiBXZWJHUFVCdWZmZXJD
b3B5Vmlldzo6dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25zdAotewotICAgIGlmICgh
YnVmZmVyIHx8ICFidWZmZXItPmJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVD
b21tYW5kRW5jb2RlcjogSW52YWxpZCBidWZmZXIgZm9yIGNvcHkhIik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlk
YXRpb24uCi0KLSAgICByZXR1cm4gR1BVQnVmZmVyQ29weVZpZXcgeyBidWZmZXItPmJ1ZmZlcigp
LnJlbGVhc2VOb25OdWxsKCksICp0aGlzIH07Ci19Ci0KLU9wdGlvbmFsPEdQVVRleHR1cmVDb3B5
Vmlldz4gV2ViR1BVVGV4dHVyZUNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXco
KSBjb25zdAotewotICAgIGlmICghdGV4dHVyZSB8fCAhdGV4dHVyZS0+dGV4dHVyZSgpKSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kRW5jb2RlcjogSW52YWxpZCB0ZXh0dXJlIGZv
ciBjb3B5ISIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8v
IEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgcmV0dXJuIEdQVVRleHR1cmVD
b3B5VmlldyB7IHRleHR1cmUtPnRleHR1cmUoKS5yZWxlYXNlTm9uTnVsbCgpLCAqdGhpcyB9Owot
fQotCi1SZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRl
KFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVDb21tYW5kQnVmZmVy
PiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIo
V1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVdlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1h
bmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorV2ViR1BVQ29tbWFuZEJ1
ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQogCi1SZWZQ
dHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVu
ZGVyUGFzcyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCi17Ci0gICAg
YXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci50cnlDcmVhdGVHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvcigpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBpZiAoYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29kZXI6OnRyeUNy
ZWF0ZShtX2NvbW1hbmRCdWZmZXIuY29weVJlZigpLCBXVEZNb3ZlKCpncHVEZXNjcmlwdG9yKSkp
Ci0gICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBl
bmNvZGVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lk
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBXZWJHUFVCdWZm
ZXImIHNyYywgdW5zaWduZWQgbG9uZyBzcmNPZmZzZXQsIGNvbnN0IFdlYkdQVUJ1ZmZlciYgZHN0
LCB1bnNpZ25lZCBsb25nIGRzdE9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQotewotICAgIGlm
ICghc3JjLmJ1ZmZlcigpIHx8ICFkc3QuYnVmZmVyKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIEdQVUJ1ZmZl
ciEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQ
VSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5QnVmZmVyVG9CdWZmZXIo
c3JjLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNyY09mZnNldCwgZHN0LmJ1ZmZlcigpLnJl
bGVhc2VOb25OdWxsKCksIGRzdE9mZnNldCwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFu
ZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYg
c3JjQnVmZmVyLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIGRzdFRleHR1cmUsIGNvbnN0
IEdQVUV4dGVudDNEJiBzaXplKQotewotICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IHNyY0J1ZmZl
ci50cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcg
PSBkc3RUZXh0dXJlLnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotCi0gICAgaWYgKCFn
cHVCdWZmZXJWaWV3IHx8ICFncHVUZXh0dXJlVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXIt
PmNvcHlCdWZmZXJUb1RleHR1cmUoV1RGTW92ZSgqZ3B1QnVmZmVyVmlldyksIFdURk1vdmUoKmdw
dVRleHR1cmVWaWV3KSwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29w
eVRleHR1cmVUb0J1ZmZlcihjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIHNyY1RleHR1cmUs
IGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiBkc3RCdWZmZXIsIGNvbnN0IEdQVUV4dGVudDNE
JiBzaXplKQotewotICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcgPSBzcmNUZXh0dXJlLnRyeUNyZWF0
ZUdQVVRleHR1cmVDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IGRzdEJ1ZmZl
ci50cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOwotCi0gICAgaWYgKCFncHVUZXh0dXJlVmll
dyB8fCAhZ3B1QnVmZmVyVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IEFk
ZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlUZXh0dXJl
VG9CdWZmZXIoV1RGTW92ZSgqZ3B1VGV4dHVyZVZpZXcpLCBXVEZNb3ZlKCpncHVCdWZmZXJWaWV3
KSwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb1Rl
eHR1cmUoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmMsIGNvbnN0IFdlYkdQVVRleHR1
cmVDb3B5VmlldyYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBhdXRvIGdw
dVNyY1ZpZXcgPSBzcmMudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0gICAgYXV0byBn
cHVEc3RWaWV3ID0gZHN0LnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotCi0gICAgaWYg
KCFncHVTcmNWaWV3IHx8ICFncHVEc3RWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBG
SVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29w
eVRleHR1cmVUb1RleHR1cmUoV1RGTW92ZSgqZ3B1U3JjVmlldyksIFdURk1vdmUoKmdwdURzdFZp
ZXcpLCBzaXplKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaAppbmRleCA1NDY0NzA0MDlhNTk4YTVmODllNzlmYjdjZWUyNmViOWM5
M2NkZGMyLi44M2ExZGE0ZWEzYzA5YmNkOTdhN2M4NmQ3NmNlYjhiMDA5YmZlMzQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw0
NiArMjgsMjEgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1
ZmZlci5oIgotCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViR1BVQnVmZmVyOwotY2xh
c3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJHUFVUZXh0dXJlOwotCi1zdHJ1
Y3QgR1BVRXh0ZW50M0Q7Ci1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7Ci0KLXN0
cnVjdCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSB7Ci0gICAg
T3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IHRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkg
Y29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVQnVmZmVyPiBidWZmZXI7Ci19OwotCi1zdHJ1Y3Qg
V2ViR1BVVGV4dHVyZUNvcHlWaWV3IDogR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgT3B0
aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiB0cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKSBj
b25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiB0ZXh0dXJlOwotfTsKLQogY2xhc3Mg
V2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRCdWZm
ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0
ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBHUFVDb21tYW5kQnVmZmVyJiBjb21t
YW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kQnVmZmVyLmdldCgpOyB9CisgICAg
c3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRC
dWZmZXI+JiYpOwogCi0gICAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBiZWdpblJl
bmRlclBhc3MoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJik7Ci0gICAgdm9pZCBjb3B5QnVm
ZmVyVG9CdWZmZXIoY29uc3QgV2ViR1BVQnVmZmVyJiwgdW5zaWduZWQgbG9uZyBzcmNPZmZzZXQs
IGNvbnN0IFdlYkdQVUJ1ZmZlciYsIHVuc2lnbmVkIGxvbmcgZHN0T2Zmc2V0LCB1bnNpZ25lZCBs
b25nIHNpemUpOwotICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXZWJHUFVCdWZm
ZXJDb3B5VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVu
dDNEJik7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdlYkdQVVRleHR1cmVD
b3B5VmlldyYsIGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiwgY29uc3QgR1BVRXh0ZW50M0Qm
KTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5
VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7
CisgICAgR1BVQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG1fY29tbWFu
ZEJ1ZmZlci5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYpOworICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIoUmVmUHRyPEdQ
VUNvbW1hbmRCdWZmZXI+JiYpOwogCi0gICAgUmVmPEdQVUNvbW1hbmRCdWZmZXI+IG1fY29tbWFu
ZEJ1ZmZlcjsKKyAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAppbmRleCAxYmQ2ZjU0NTMzZTgx
YmY5MDAyMTMyMzYyYzJjMDdmZmY1MzNmOWJlLi4yNjcwMTg3MGQwZTJjYzgzNmMxNjE4NGI3ODg1
ODEyMDRmNGE5MzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kQnVmZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNjAgKzI0LDEwIEBACiAgKi8KIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCiAK
LXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1
NjQ7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVCdWZmZXJDb3B5VmlldwotXSBkaWN0aW9u
YXJ5IEdQVUJ1ZmZlckNvcHlWaWV3IHsKLSAgICBXZWJHUFVCdWZmZXIgYnVmZmVyOwotICAgIHU2
NCBvZmZzZXQ7Ci0gICAgdTY0IHJvd1BpdGNoOwotICAgIHUzMiBpbWFnZUhlaWdodDsKLX07Ci0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUs
Ci0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVUZXh0dXJlQ29weVZpZXcKLV0gZGljdGlvbmFyeSBH
UFVUZXh0dXJlQ29weVZpZXcgewotICAgIFdlYkdQVVRleHR1cmUgdGV4dHVyZTsKLSAgICB1MzIg
bWlwTGV2ZWw7Ci0gICAgdTMyIGFycmF5TGF5ZXI7Ci0gICAgR1BVT3JpZ2luM0Qgb3JpZ2luOwot
fTsKLQogWwogICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKICAgICBFbmFibGVkQXRSdW50aW1lPVdl
YkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCisgICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKKyAgICBJbnRlcmZhY2VOYW1lPUdQVUNvbW1hbmRCdWZmZXIKIF0gaW50ZXJm
YWNlIFdlYkdQVUNvbW1hbmRCdWZmZXIgewotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGJl
Z2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQot
ICAgIHZvaWQgY29weUJ1ZmZlclRvQnVmZmVyKAotICAgICAgICBXZWJHUFVCdWZmZXIgc3JjLAot
ICAgICAgICB1NjQgc3JjT2Zmc2V0LAotICAgICAgICBXZWJHUFVCdWZmZXIgZHN0LAotICAgICAg
ICB1NjQgZHN0T2Zmc2V0LAotICAgICAgICB1NjQgc2l6ZSk7Ci0KLSAgICB2b2lkIGNvcHlCdWZm
ZXJUb1RleHR1cmUoCi0gICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAg
R1BVVGV4dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5
U2l6ZSk7Ci0KLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoCi0gICAgICAgIEdQVVRleHR1
cmVDb3B5VmlldyBzb3VyY2UsCi0gICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IGRlc3RpbmF0aW9u
LAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7Ci0KLSAgICB2b2lkIGNvcHlUZXh0dXJl
VG9UZXh0dXJlKAotICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAotICAgICAgICBH
UFVUZXh0dXJlQ29weVZpZXcgZGVzdGluYXRpb24sCi0gICAgICAgIEdQVUV4dGVudDNEIGNvcHlT
aXplKTsKLQotICAgIC8vIE5vdCBZZXQgSW1wbGVtZW50ZWQKLSAgICAvLyBXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXIgYmVnaW5Db21wdXRlUGFzcygpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYzE2NWEzMzUwODgyMmFhZDNiMjBhMjQxMTg1MzUwZjE3NTJkMTY4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIu
Y3BwCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVSZW5k
ZXJQYXNzRW5jb2Rlci5oIgorI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworT3B0aW9uYWw8R1BVQnVmZmVyQ29weVZp
ZXc+IFdlYkdQVUJ1ZmZlckNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpIGNv
bnN0Cit7CisgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKKyAgICAgICAg
TE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIGJ1ZmZlciBmb3IgY29w
eSEiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBGSVhN
RTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIHJldHVybiBHUFVCdWZmZXJDb3B5Vmll
dyB7IGJ1ZmZlci0+YnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgKnRoaXMgfTsKK30KKworT3B0
aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiBXZWJHUFVUZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0
ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0Cit7CisgICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0
dXJlLT50ZXh0dXJlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNv
ZGVyOiBJbnZhbGlkIHRleHR1cmUgZm9yIGNvcHkhIik7CisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgfQorCisgICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisK
KyAgICByZXR1cm4gR1BVVGV4dHVyZUNvcHlWaWV3IHsgdGV4dHVyZS0+dGV4dHVyZSgpLnJlbGVh
c2VOb25OdWxsKCksICp0aGlzIH07Cit9CisKK1JlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gV2Vi
R1BVQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZm
ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEVuY29kZXIoV1RG
TW92ZShidWZmZXIpKSk7Cit9CisKK1dlYkdQVUNvbW1hbmRFbmNvZGVyOjpXZWJHUFVDb21tYW5k
RW5jb2RlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgOiBtX2NvbW1h
bmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQoreworfQorCitSZWY8V2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXI+IFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQoreworICAgIGlmICghbV9jb21tYW5kQnVmZmVy
KSB7CisgICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5k
ZXJQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICByZXR1cm4gV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgbnVsbHB0cik7CisgICAgfQorICAgIGF1dG8g
Z3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IoKTsKKyAgICBpZiAoIWdwdURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBudWxscHRyKTsKKworICAgIGF1dG8gZW5jb2Rl
ciA9IEdQVVJlbmRlclBhc3NFbmNvZGVyOjp0cnlDcmVhdGUobWFrZVJlZigqbV9jb21tYW5kQnVm
ZmVyKSwgV1RGTW92ZSgqZ3B1RGVzY3JpcHRvcikpOworICAgIHJldHVybiBXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGVuY29kZXIpKTsKK30KKwordm9pZCBX
ZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IFdlYkdQVUJ1ZmZl
ciYgc3JjLCB1bnNpZ25lZCBsb25nIHNyY09mZnNldCwgY29uc3QgV2ViR1BVQnVmZmVyJiBkc3Qs
IHVuc2lnbmVkIGxvbmcgZHN0T2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisgICAgaWYg
KCFtX2NvbW1hbmRCdWZmZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRF
bmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24hIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFzcmMuYnVmZmVyKCkgfHwgIWRzdC5idWZmZXIo
KSkgeworICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZm
ZXJUb0J1ZmZlcigpOiBJbnZhbGlkIEdQVUJ1ZmZlciEiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgorCisgICAgbV9jb21t
YW5kQnVmZmVyLT5jb3B5QnVmZmVyVG9CdWZmZXIobWFrZVJlZigqc3JjLmJ1ZmZlcigpKSwgc3Jj
T2Zmc2V0LCBtYWtlUmVmKCpkc3QuYnVmZmVyKCkpLCBkc3RPZmZzZXQsIHNpemUpOworfQorCit2
b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdlYkdQ
VUJ1ZmZlckNvcHlWaWV3JiBzcmNCdWZmZXIsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYg
ZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCit7CisgICAgaWYgKCFtX2NvbW1h
bmRCdWZmZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpj
b3B5QnVmZmVyVG9UZXh0dXJlKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IHNyY0J1ZmZlci50cnlDcmVhdGVH
UFVCdWZmZXJDb3B5VmlldygpOworICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcgPSBkc3RUZXh0dXJl
LnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOworCisgICAgaWYgKCFncHVCdWZmZXJWaWV3
IHx8ICFncHVUZXh0dXJlVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IEFk
ZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlCdWZmZXJU
b1RleHR1cmUoV1RGTW92ZSgqZ3B1QnVmZmVyVmlldyksIFdURk1vdmUoKmdwdVRleHR1cmVWaWV3
KSwgc2l6ZSk7Cit9CisKK3ZvaWQgV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9C
dWZmZXIoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmNUZXh0dXJlLCBjb25zdCBXZWJH
UFVCdWZmZXJDb3B5VmlldyYgZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKK3sK
KyAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgeworICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BV
Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24h
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBncHVUZXh0dXJlVmlldyA9IHNy
Y1RleHR1cmUudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7CisgICAgYXV0byBncHVCdWZm
ZXJWaWV3ID0gZHN0QnVmZmVyLnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCk7CisKKyAgICBp
ZiAoIWdwdVRleHR1cmVWaWV3IHx8ICFncHVCdWZmZXJWaWV3KQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIG1fY29tbWFuZEJ1
ZmZlci0+Y29weVRleHR1cmVUb0J1ZmZlcihXVEZNb3ZlKCpncHVUZXh0dXJlVmlldyksIFdURk1v
dmUoKmdwdUJ1ZmZlclZpZXcpLCBzaXplKTsKK30KKwordm9pZCBXZWJHUFVDb21tYW5kRW5jb2Rl
cjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmMs
IGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6
ZSkKK3sKKyAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgeworICAgICAgICBMT0coV2ViR1BVLCAi
V2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKCk6IEludmFsaWQgb3Bl
cmF0aW9uISIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gZ3B1U3JjVmlldyA9
IHNyYy50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKKyAgICBhdXRvIGdwdURzdFZpZXcg
PSBkc3QudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7CisKKyAgICBpZiAoIWdwdVNyY1Zp
ZXcgfHwgIWdwdURzdFZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBBZGQg
V2ViIEdQVSB2YWxpZGF0aW9uLgorCisgICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5VGV4dHVyZVRv
VGV4dHVyZShXVEZNb3ZlKCpncHVTcmNWaWV3KSwgV1RGTW92ZSgqZ3B1RHN0VmlldyksIHNpemUp
OworfQorICAgIAorUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRFbmNvZGVy
OjpmaW5pc2goKQoreworICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7CisgICAgICAgIExPRyhX
ZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKCk6IEludmFsaWQgb3BlcmF0aW9u
ISIpOworICAgICAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIp
OworICAgIH0KKyAgICAvLyBQYXNzZXMgdGhlIHJlZmVyZW5jZWQgR1BVQ29tbWFuZEJ1ZmZlciB0
byB0aGUgV2ViR1BVQ29tbWFuZEJ1ZmZlciwgaW52YWxpZGF0aW5nIHRoaXMgV2ViR1BVQ29tbWFu
ZEVuY29kZXIuCisgICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShtX2NvbW1h
bmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGQ3MWJhMWQw
MmVkMWNmN2Q1OTI4YWFjYzk1ZmVlYzI3YzA1NWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaApAQCAtMCwwICsx
LDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRC
dWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVCdWZmZXI7CitjbGFz
cyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcjsKK2NsYXNzIFdlYkdQVVRleHR1cmU7CisKK3N0cnVj
dCBHUFVFeHRlbnQzRDsKK3N0cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKKworc3Ry
dWN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3IDogR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsKKyAgICBP
cHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gdHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBj
b25zdDsKKworICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKK307CisKK3N0cnVjdCBX
ZWJHUFVUZXh0dXJlQ29weVZpZXcgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlIHsKKyAgICBPcHRp
b25hbDxHUFVUZXh0dXJlQ29weVZpZXc+IHRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNv
bnN0OworCisgICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IHRleHR1cmU7Cit9OworCitjbGFzcyBX
ZWJHUFVDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRFbmNv
ZGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gY3Jl
YXRlKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKKworICAgIFJlZjxXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4gYmVnaW5SZW5kZXJQYXNzKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYp
OworICAgIHZvaWQgY29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IFdlYkdQVUJ1ZmZlciYsIHVuc2ln
bmVkIGxvbmcgc3JjT2Zmc2V0LCBjb25zdCBXZWJHUFVCdWZmZXImLCB1bnNpZ25lZCBsb25nIGRz
dE9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1
cmUoY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZp
ZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOworICAgIHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihj
b25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYs
IGNvbnN0IEdQVUV4dGVudDNEJik7CisgICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25z
dCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBj
b25zdCBHUFVFeHRlbnQzRCYpOworICAgIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBmaW5pc2go
KTsKKworcHJpdmF0ZToKKyAgICBXZWJHUFVDb21tYW5kRW5jb2RlcihSZWZQdHI8R1BVQ29tbWFu
ZEJ1ZmZlcj4mJik7CisKKyAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVm
ZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRFbmNvZGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjk2YjRhZWFjYWQ4YjdhMjljYzFiOGVlNzc0
OTEwM2JmMjE2NzlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWdu
L3NrZXRjaC53ZWJpZGwKKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKK3R5cGVkZWYgdW5z
aWduZWQgbG9uZyBsb25nIHU2NDsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBF
bmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVUJ1ZmZlckNv
cHlWaWV3CitdIGRpY3Rpb25hcnkgR1BVQnVmZmVyQ29weVZpZXcgeworICAgIFdlYkdQVUJ1ZmZl
ciBidWZmZXI7CisgICAgdTY0IG9mZnNldDsKKyAgICB1NjQgcm93UGl0Y2g7CisgICAgdTMyIGlt
YWdlSGVpZ2h0OworfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVk
QXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVRleHR1cmVDb3B5Vmll
dworXSBkaWN0aW9uYXJ5IEdQVVRleHR1cmVDb3B5VmlldyB7CisgICAgV2ViR1BVVGV4dHVyZSB0
ZXh0dXJlOworICAgIHUzMiBtaXBMZXZlbDsKKyAgICB1MzIgYXJyYXlMYXllcjsKKyAgICBHUFVP
cmlnaW4zRCBvcmlnaW47Cit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVu
YWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisg
ICAgSW50ZXJmYWNlTmFtZT1HUFVDb21tYW5kRW5jb2RlcgorXSBpbnRlcmZhY2UgV2ViR1BVQ29t
bWFuZEVuY29kZXIgeworICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGJlZ2luUmVuZGVyUGFz
cyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKKworICAgIHZvaWQgY29w
eUJ1ZmZlclRvQnVmZmVyKAorICAgICAgICBXZWJHUFVCdWZmZXIgc3JjLAorICAgICAgICB1NjQg
c3JjT2Zmc2V0LAorICAgICAgICBXZWJHUFVCdWZmZXIgZHN0LAorICAgICAgICB1NjQgZHN0T2Zm
c2V0LAorICAgICAgICB1NjQgc2l6ZSk7CisKKyAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1cmUo
CisgICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IHNvdXJjZSwKKyAgICAgICAgR1BVVGV4dHVyZUNv
cHlWaWV3IGRlc3RpbmF0aW9uLAorICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7CisKKyAg
ICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoCisgICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBz
b3VyY2UsCisgICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IGRlc3RpbmF0aW9uLAorICAgICAgICBH
UFVFeHRlbnQzRCBjb3B5U2l6ZSk7CisKKyAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKAor
ICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAorICAgICAgICBHUFVUZXh0dXJlQ29w
eVZpZXcgZGVzdGluYXRpb24sCisgICAgICAgIEdQVUV4dGVudDNEIGNvcHlTaXplKTsKKworICAg
IFdlYkdQVUNvbW1hbmRCdWZmZXIgZmluaXNoKCk7CisKKyAgICAvLyBOb3QgWWV0IEltcGxlbWVu
dGVkCisgICAgLy8gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGJlZ2luQ29tcHV0ZVBhc3MoKTsK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApp
bmRleCAzZDY4OWVjYjAzZmQwYTliYmIzZDhiYmVjNzBlYjMxN2RkNzcwMzdiLi4zNjExMDlmMGE2
NTc4NTRlZmI2NjZlYzNjMjNkZjMyYTU2ZGE2NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRl
ICJXZWJHUFVCaW5kR3JvdXBMYXlvdXQuaCIKICNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKICNp
bmNsdWRlICJXZWJHUFVCdWZmZXJCaW5kaW5nLmgiCi0jaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1
ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVyLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVUGlwZWxpbmVMYXlvdXQuaCIKICNpbmNsdWRlICJXZWJHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgpAQCAt
MTM3LDExICsxMzcsMTAgQEAgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6
OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdlYkdQVVJlbmRlclAKICAgICByZXR1cm4gV2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShXVEZNb3ZlKHBpcGVsaW5lKSk7CiB9CiAKLVJlZlB0
cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIo
KSBjb25zdAorUmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byBjb21tYW5kQnVmZmVyID0gbV9k
ZXZpY2UtPmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFdlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZShjb21tYW5kQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJl
dHVybiBudWxscHRyOworICAgIGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVh
dGVDb21tYW5kQnVmZmVyKCk7CisgICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjcmVh
dGUoV1RGTW92ZShjb21tYW5kQnVmZmVyKSk7CiB9CiAKIFJlZjxXZWJHUFVTd2FwQ2hhaW4+IFdl
YkdQVURldmljZTo6Y3JlYXRlU3dhcENoYWluKGNvbnN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5oCmluZGV4IDg2ZDU3YzMyOWE0OGE3ZDNiNGQ3YTcwMGNlMzUyYzAxNjA3ZmU3
MTUuLjQxZmVhZTBjYTU3ZDc1ZWY5NDY2OGQ4Nzg1MWVkZGQ3ODViMGFhOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCkBAIC00MSw3ICs0MSw3IEBA
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJHUFVCaW5kR3JvdXA7CiBj
bGFzcyBXZWJHUFVCaW5kR3JvdXBMYXlvdXQ7CiBjbGFzcyBXZWJHUFVCdWZmZXI7Ci1jbGFzcyBX
ZWJHUFVDb21tYW5kQnVmZmVyOworY2xhc3MgV2ViR1BVQ29tbWFuZEVuY29kZXI7CiBjbGFzcyBX
ZWJHUFVQaXBlbGluZUxheW91dDsKIGNsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lOwogY2xhc3Mg
V2ViR1BVU2FtcGxlcjsKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJH
UFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yJiYpIGNvbnN0OwogICAgIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVu
ZGVyUGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJikgY29uc3Q7
CiAKLSAgICBSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlQ29tbWFuZEJ1ZmZlcigp
IGNvbnN0OworICAgIFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gY3JlYXRlQ29tbWFuZEVuY29k
ZXIoKSBjb25zdDsKIAogICAgIFJlZjxXZWJHUFVTd2FwQ2hhaW4+IGNyZWF0ZVN3YXBDaGFpbihj
b25zdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCmluZGV4IGY0NjM1YTM0MTgxMWNj
NTg4OWUzYWVjZDAwZTY3Y2EyYWUyMzJlMmUuLjRhYmFhMTg2ZWNjZmQ3YWU2ZTY4ZDlhNTZjMTQx
NGI4MjFjYWE4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmlkbApAQCAtNTQsOCArNTQsOCBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgR1BVVGV4
dHVyZVVzYWdlRmxhZ3M7CiAgICAgV2ViR1BVU2hhZGVyTW9kdWxlIGNyZWF0ZVNoYWRlck1vZHVs
ZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVVJl
bmRlclBpcGVsaW5lIGNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciBkZXNjcmlwdG9yKTsKIAotICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIFdlYkdQVUNv
bW1hbmRCdWZmZXJEZXNjcmlwdG9yIGlzIGFuIGVtcHR5IGRpY3Rpb25hcnkuCi0gICAgV2ViR1BV
Q29tbWFuZEJ1ZmZlciBjcmVhdGVDb21tYW5kQnVmZmVyKC8qV2ViR1BVQ29tbWFuZEJ1ZmZlckRl
c2NyaXB0b3IgZGVzY3JpcHRvciovKTsKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBHUFVDb21t
YW5kRW5jb2RlckRlc2NyaXB0b3IgaXMgYW4gZW1wdHkgZGljdGlvbmFyeS4KKyAgICBXZWJHUFVD
b21tYW5kRW5jb2RlciBjcmVhdGVDb21tYW5kRW5jb2RlcigvKkdQVUNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvciBkZXNjcmlwdG9yKi8pOwogCiAgICAgV2ViR1BVU3dhcENoYWluIGNyZWF0ZVN3YXBD
aGFpbihXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlci5jcHAKaW5kZXggMWViYmE5MjE5ZTJkNmUwZjhlNDcxY2U3ZjQ3Zjc4MGJj
MTNhYmE0My4uMmNkZWNhN2Q3MDYxYmI2MDAxYjY1YzZhYTlhMzdjNGRkZmQyMzA4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcApAQCAtMzUsMzkgKzM1LDUwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OldlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNyZWF0b3IpCitX
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIoUmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiYmIGNyZWF0b3IpCiAgICAgOiBtX2NvbW1hbmRC
dWZmZXIoV1RGTW92ZShjcmVhdG9yKSkKIHsKIH0KIAotUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+
IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKK3ZvaWQgV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3MoKQogewotICAgIHBhc3NFbmNvZGVyKCkuZW5k
UGFzcygpOwotICAgIHJldHVybiBtX2NvbW1hbmRCdWZmZXIuY29weVJlZigpOworICAgIGlmICgh
cGFzc0VuY29kZXIoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXI6OmVuZFBhc3MoKTogSW52YWxpZCBvcGVyYXRpb24hIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgcGFzc0VuY29kZXIoKS0+ZW5kUGFzcygpOwogfQogCiB2b2lkIFdlYkdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAodW5zaWduZWQgaW5kZXgsIFdl
YkdQVUJpbmRHcm91cCYgYmluZEdyb3VwKSBjb25zdAogeworICAgIGlmICghcGFzc0VuY29kZXIo
KSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNl
dEJpbmRHcm91cCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBiaW5kIGdyb3VwcyBzdXBwb3J0ZWQgaW4gV2Vi
IEdQVS4KICAgICBpZiAoaW5kZXggPj0gNCkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCgpOiBJbnZhbGlkIGluZGV4ISIp
OworICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJp
bmRHcm91cCgpOiBJbnZhbGlkIGluZGV4ISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGlmICghYmluZEdyb3VwLmJpbmRHcm91cCgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJXZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgV2ViR1BV
QmluZEdyb3VwISIpOworICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXI6OnNldEJpbmRHcm91cCgpOiBJbnZhbGlkIFdlYkdQVUJpbmRHcm91cCEiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBGSVhNRTogQW55IHZhbGlkYXRpb24gKGUuZy4gaW5k
ZXggZHVwbGljYXRlcywgbm90IGluIHBpcGVsaW5lIGxheW91dCkuCi0gICAgcGFzc0VuY29kZXIo
KS5zZXRCaW5kR3JvdXAoaW5kZXgsICpiaW5kR3JvdXAuYmluZEdyb3VwKCkpOworICAgIHBhc3NF
bmNvZGVyKCktPnNldEJpbmRHcm91cChpbmRleCwgKmJpbmRHcm91cC5iaW5kR3JvdXAoKSk7CiB9
CiAKIHZvaWQgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKGNvbnN0
IFdlYkdQVVJlbmRlclBpcGVsaW5lJiBwaXBlbGluZSkKIHsKKyAgICBpZiAoIXBhc3NFbmNvZGVy
KCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpz
ZXRQaXBlbGluZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICBpZiAoIXBpcGVsaW5lLnJlbmRlclBpcGVsaW5lKCkpIHsKICAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSgpOiBJbnZhbGlk
IHBpcGVsaW5lISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBhc3NFbmNvZGVyKCku
c2V0UGlwZWxpbmUobWFrZVJlZigqcGlwZWxpbmUucmVuZGVyUGlwZWxpbmUoKSkpOworICAgIHBh
c3NFbmNvZGVyKCktPnNldFBpcGVsaW5lKG1ha2VSZWYoKnBpcGVsaW5lLnJlbmRlclBpcGVsaW5l
KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LmgKaW5kZXggNTQwMDQxNDgxNmEwYTU1NzJjOTNlM2U5YzFmOTQ0ZTQ3NzcxZjM4My4uMzU2ZWNi
MzQ0ZWM3MTVhY2M1NDM3NGFkMjYxNzliOWNkY2IxMDAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVk
ZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDAsMTcgKzQwLDE3IEBAIGNsYXNzIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuCiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7CiAKLSAg
ICBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gZW5kUGFzcygpOworICAgIHZvaWQgZW5kUGFzcygp
OwogICAgIHZvaWQgc2V0QmluZEdyb3VwKHVuc2lnbmVkLCBXZWJHUFVCaW5kR3JvdXAmKSBjb25z
dDsKICAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lJik7CiAK
IHByb3RlY3RlZDoKLSAgICBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihSZWY8V2ViR1BV
Q29tbWFuZEJ1ZmZlcj4mJik7CisgICAgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoUmVm
PFdlYkdQVUNvbW1hbmRFbmNvZGVyPiYmKTsKIAotICAgIHZpcnR1YWwgR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXImIHBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOwogCiBwcml2YXRl
OgotICAgIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7CisgICAgUmVm
PFdlYkdQVUNvbW1hbmRFbmNvZGVyPiBtX2NvbW1hbmRCdWZmZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKaW5kZXggM2FjZDYzOTQ1
NjgzYzRlZWQ2ODJmZTUyOGEzMWQyYThjNDdkZDRiNC4uNTc3MThjMjhjODQ0ZWYzZmU2NzQ2NmZi
OTA1MGU3MjRhNTgyZDAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbApAQCAtMzEs
NyArMzEsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwogICAgIEVuYWJsZWRBdFJ1bnRp
bWU9V2ViR1BVLAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBdIGludGVyZmFjZSBXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci0gICAgV2ViR1BVQ29tbWFuZEJ1ZmZlciBlbmRQYXNz
KCk7CisgICAgdm9pZCBlbmRQYXNzKCk7CiAgICAgdm9pZCBzZXRCaW5kR3JvdXAodTMyIGluZGV4
LCBXZWJHUFVCaW5kR3JvdXAgYmluZEdyb3VwLyosIG9wdGlvbmFsIHNlcXVlbmNlPHUzMj4gZHlu
YW1pY09mZnNldHMqLyk7CiAgICAgdm9pZCBzZXRQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGlu
ZSBwaXBlbGluZSk7IC8vIEZJWE1FOiBTdXBwb3J0IFdlYkdQVUNvbXB1dGVQaXBlbGluZXMuCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuY3BwCmluZGV4
IGI3NWRkNzUyZDkxZWE1OGQ1MTAzMjdiY2Q1MzM3NDlkOGJjN2M0MTQuLmI0ZjgzZTRhZjFhNGM2
NzIzMTFlZmRjMGFiNDRhZDUxMzc0MTkyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkdQ
VUNvbW1hbmRCdWZmZXIuaCIKICNpbmNsdWRlICJHUFVRdWV1ZS5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ0LDExICs0NSwxOSBAQCBXZWJHUFVRdWV1ZTo6V2ViR1BVUXVldWUoUmVmPEdQ
VVF1ZXVlPiYmIHF1ZXVlKQogewogfQogCi12b2lkIFdlYkdQVVF1ZXVlOjpzdWJtaXQoVmVjdG9y
PFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPj4mJiBidWZmZXJzKQordm9pZCBXZWJHUFVRdWV1
ZTo6c3VibWl0KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4+JiBidWZm
ZXJzKQogewotICAgIGF1dG8gZ3B1QnVmZmVycyA9IGJ1ZmZlcnMubWFwKFtdIChhdXRvJiBidWZm
ZXIpIC0+IFJlZjxHUFVDb21tYW5kQnVmZmVyPiB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNv
bW1hbmRCdWZmZXIoKTsKLSAgICB9KTsKKyAgICBWZWN0b3I8UmVmPEdQVUNvbW1hbmRCdWZmZXI+
PiBncHVCdWZmZXJzOworICAgIGdwdUJ1ZmZlcnMucmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlcnMuc2l6
ZSgpKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1ZmZlcnMpIHsKKyAgICAgICAg
aWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+Y29tbWFuZEJ1ZmZlcigpKSB7CisgICAgICAgICAgICBM
T0coV2ViR1BVLCAiR1BVUXVldWU6OnN1Ym1pdCgpOiBJbnZhbGlkIEdQVUNvbW1hbmRCdWZmZXIg
aW4gbGlzdCEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBncHVC
dWZmZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlUmVmKCpidWZmZXItPmNvbW1hbmRCdWZmZXIoKSkp
OworICAgIH0KKwogICAgIG1fcXVldWUtPnN1Ym1pdChXVEZNb3ZlKGdwdUJ1ZmZlcnMpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmgKaW5kZXggNDQ2
ZWRmOGU5NTg2YjllOTViMjQ0NGI2MDFkMTBlNGJlYmM0ZTkzMC4uZjBhNzZmODFkZmNhNjFjOGIx
ZTBkODI1N2EzZTY4ODI3NTUzMWJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVRdWV1ZS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFdlYkdQVVF1ZXVlIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViR1BVUXVldWU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRy
PFdlYkdQVVF1ZXVlPiBjcmVhdGUoUmVmUHRyPEdQVVF1ZXVlPiYmKTsKIAotICAgIHZvaWQgc3Vi
bWl0KFZlY3RvcjxSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgc3Vi
bWl0KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4+Jik7CiAKICAgICBT
dHJpbmcgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlLT5sYWJlbCgpOyB9CiAgICAgdm9p
ZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKSB7IG1fcXVldWUtPnNldExhYmVsKGxhYmVs
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVl
dWUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsCmlu
ZGV4IDJmNmE3MDlmOTBhOTc2NDQ0ZDBmMDc2YTlmNGI0ZTcyODY5MDkzMjQuLjVhMWExNWFlZGIy
ZWQzOTY0NmUxODE5YjAyZDg1Y2Y2YmYzNDIyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKQEAgLTM0LDQgKzM0LDQgQEAKICAgICAvLyBGSVhN
RTogVW5pbXBsZW1lbnRlZC4KICAgICAvLyB2b2lkIHNpZ25hbChXZWJHUFVGZW5jZSBmZW5jZSwg
dTY0IHNpZ25hbFZhbHVlKTsKICAgICAvLyB2b2lkIHdhaXQoV2ViR1BVRmVuY2UgZmVuY2UsIHU2
NCB2YWx1ZVRvV2FpdCk7Ci19OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlci5jcHAKaW5kZXggOTg4MzI5YjNlN2NjMGYyODFhZGU2ZGEwZTNiOTk2MmNiNzI3N2Mz
ZC4uZmY1OGFhNDFlM2ZlNGU0NWM1ZmM0OTkyMzEwNTJlZDBjODBjMWRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmNwcApAQCAtMzYsMTIgKzM2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
PFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRl
KFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNvbW1hbmRCdWZmZXIsIFJlZjxHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQorUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJH
UFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4mJiBj
b21tYW5kQnVmZmVyLCBSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3Zl
KGNvbW1hbmRCdWZmZXIpLCBXVEZNb3ZlKGVuY29kZXIpKSk7CiB9CiAKLVdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZl
cj4mJiBjcmVhdG9yLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKK1dlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29t
bWFuZEVuY29kZXI+JiYgY3JlYXRvciwgUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVu
Y29kZXIpCiAgICAgOiBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihXVEZNb3ZlKGNyZWF0
b3IpKQogICAgICwgbV9wYXNzRW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKQogewpAQCAtNTIsMTEg
KzUyLDE0IEBAIHZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnMo
dW5zaWduZWQgbG9uZyBzdGFydFNsb3QsIFZlY3RvcjxSCiAjaWYgIUxPR19ESVNBQkxFRAogICAg
IGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0VmVydGV4QnVmZmVycygpIjsKICNlbmRpZgorICAgIGlmICghbV9wYXNzRW5jb2Rlcikgewor
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgb3BlcmF0aW9uISIsIGZ1bmN0aW9uTmFt
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKGJ1ZmZlcnMuaXNFbXB0eSgpIHx8
IGJ1ZmZlcnMuc2l6ZSgpICE9IG9mZnNldHMuc2l6ZSgpKSB7CiAgICAgICAgIExPRyhXZWJHUFUs
ICIlczogSW52YWxpZCBudW1iZXIgb2YgYnVmZmVycyBvciBvZmZzZXRzISIsIGZ1bmN0aW9uTmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICBpZiAoc3RhcnRTbG90ICsgYnVmZmVy
cy5zaXplKCkgPiBtYXhWZXJ0ZXhCdWZmZXJzKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIlczog
SW52YWxpZCBzdGFydFNsb3QgJWx1IGZvciAlbHUgYnVmZmVycyEiLCBmdW5jdGlvbk5hbWUsIHN0
YXJ0U2xvdCwgYnVmZmVycy5zaXplKCkpOwogICAgICAgICByZXR1cm47CkBAIC04NCwxMSArODcs
MTUgQEAgdm9pZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVycyh1bnNp
Z25lZCBsb25nIHN0YXJ0U2xvdCwgVmVjdG9yPFIKIAogdm9pZCBXZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6ZHJhdyh1bnNpZ25lZCBsb25nIHZlcnRleENvdW50LCB1bnNpZ25lZCBsb25nIGluc3Rh
bmNlQ291bnQsIHVuc2lnbmVkIGxvbmcgZmlyc3RWZXJ0ZXgsIHVuc2lnbmVkIGxvbmcgZmlyc3RJ
bnN0YW5jZSkKIHsKKyAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KCk6IEludmFsaWQgb3BlcmF0aW9uISIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogICAgIC8vIEZJWE1FOiBXaGF0IGtpbmQgb2YgdmFsaWRh
dGlvbiBkbyB3ZSBuZWVkIHRvIGhhbmRsZSBoZXJlPwogICAgIG1fcGFzc0VuY29kZXItPmRyYXco
dmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3RhbmNlKTsK
IH0KIAotR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXImIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpwYXNzRW5jb2RlcigpIGNvbnN0CitHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9w
YXNzRW5jb2Rlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IGQwZGUwZDdkZjRjNTViZDUx
NDI0MGQ4Mzc0MGI4OGI1YTM0YTkzMjAuLjQ3OTI3OWNhODFkYWI3NjU5NWZlNjZkYzE3OGIwZDc0
NTU5NWU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtNDAsMTcgKzQwLDE3IEBAIGNsYXNzIFdlYkdQ
VUJ1ZmZlcjsKIAogY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgZmluYWwgOiBwdWJsaWMg
V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4m
JiwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdQVVJl
bmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiYmLCBSZWZQ
dHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCiAgICAgdm9pZCBzZXRWZXJ0ZXhCdWZmZXJz
KHVuc2lnbmVkIGxvbmcsIFZlY3RvcjxSZWZQdHI8V2ViR1BVQnVmZmVyPj4mJiwgVmVjdG9yPHVu
c2lnbmVkIGxvbmcgbG9uZz4mJik7CiAgICAgdm9pZCBkcmF3KHVuc2lnbmVkIGxvbmcgdmVydGV4
Q291bnQsIHVuc2lnbmVkIGxvbmcgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQgbG9uZyBmaXJzdFZl
cnRleCwgdW5zaWduZWQgbG9uZyBmaXJzdEluc3RhbmNlKTsKIAogcHJpdmF0ZToKLSAgICBXZWJH
UFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiwgUmVmPEdQVVJl
bmRlclBhc3NFbmNvZGVyPiYmKTsKKyAgICBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihSZWY8V2Vi
R1BVQ29tbWFuZEVuY29kZXI+JiYsIFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CiAK
LSAgICBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciYgcGFzc0VuY29kZXIoKSBjb25zdCBmaW5h
bDsKKyAgICBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBjb25zdCBm
aW5hbDsKIAotICAgIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gbV9wYXNzRW5jb2RlcjsKKyAg
ICBSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+IG1fcGFzc0VuY29kZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU3dhcENoYWluLmNwcAppbmRleCBkYjYxZDQ3Y2Y1ZGI2NWQ0MmVhN2VjNDMxMmI2ZjQz
NDY2YzM5MGEzLi4zNjI1OWQ3ZjZlMTNiZDYyNjA2MjA4MDc3YWVjOTdlNDMzZTAyMzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQVVN3YXBDaGFpbjo6Z2V0
Q3VycmVudFRleHR1cmUoKQogICAgICAgICByZXR1cm4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKG51
bGxwdHIpOwogICAgIH0KICAgICBtX2N1cnJlbnRUZXh0dXJlID0gV2ViR1BVVGV4dHVyZTo6Y3Jl
YXRlKG1fc3dhcENoYWluLT50cnlHZXRDdXJyZW50VGV4dHVyZSgpKTsKLSAgICByZXR1cm4gbV9j
dXJyZW50VGV4dHVyZS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBtYWtlUmVmKCptX2N1
cnJlbnRUZXh0dXJlKTsKIH0KIAogdm9pZCBXZWJHUFVTd2FwQ2hhaW46OmRlc3Ryb3koKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCAxNDNkYmYyOGI0ZjdkMGYxNTNjMTAwYWUzNDg3MDI2YmYzY2EwYzU1Li5j
YjcyNmViZTg0ZDZiNTQwMGFiY2U1ZjU3NjU0Zjc2YmU3ZWQ3N2FhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMzUyLDEwICszNTIsMTEgQEAgTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNw
cAogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdy
b3VwLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKK01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kRW5jb2Rlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCdWZmZXIuY3BwCi1Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAog
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVl
dWUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5jcHAKQEAgLTMzMzYs
NiArMzMzNyw3IEBAIEpTV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAogSlNXZWJHUFVCdWZmZXIu
Y3BwCiBKU1dlYkdQVUJ1ZmZlckJpbmRpbmcuY3BwCiBKU1dlYkdQVUNvbW1hbmRCdWZmZXIuY3Bw
CitKU1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAogSlNXZWJHUFVEZXZpY2UuY3BwCiBKU1dlYkdQ
VVF1ZXVlLmNwcAogSlNXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIwNTgw
NGZiODIyODYxZTZmZWVkMDEyMGM3YzkyYjBhYTAzN2FjOWEuLjhmYWM0NjMyZDJkNjNkZWE2ODg5
ODEyZTFiZGRlZmNiOTM2ZThkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MDcyLDYgKzE0MDcyLDkgQEAKIAkJRDA1QTk5
RTYyMUM5QkYyQzAwMDMyQjc1IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFVQaXBlbGluZUxheW91dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNF
RDI3MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI4MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3Jt
YXRCbG9ja0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1h
dEJsb2NrQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDVERDZERDIy
Mzg4NDA2MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRDA1REQ2REUyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlEMDVERDZERjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDYxNUZDQzIx
N0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdQVVNoYWRlck1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxODEs
OSArMTQxODQsOSBAQAogCQlEMERBMEJFNjIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENo
YWluLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW4uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMERFOEZCODIyMkUwOUUyMDA4ODI1NTAgLyogR1BVU2hhZGVyU3RhZ2VCaXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyU3RhZ2VCaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDBERThGQjkyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlQml0Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBHUFVTaGFkZXJTdGFnZUJpdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwRUFDRjc2MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjc4MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVD
b21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBFQUNGNzYyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNv
bW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwRUFDRjc3MjE5MzcyMjgwMDBGQTc1QyAvKiBX
ZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5k
RW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwRUFDRjc4MjE5Mzcy
MjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tbWFu
ZEVuY29kZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVBQ0Y4NDIxOTNC
MDJFMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0
dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRUFDRjg1MjE5M0IwMkUwMDBG
QTc1QyAvKiBXZWJHUFVUZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1
cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVBQ0Y4NjIxOTNCMDJFMDAw
RkE3NUMgLyogV2ViR1BVVGV4dHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZS5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjE1NCw5ICsyNjE1NywxMiBAQAogCQkJCUQwRDg2
NDhFMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJHUFVCdWZmZXIuaWRsICovLAogCQkJCUQwQkUxMDRD
MjFFNjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmggKi8sCiAJCQkJRDBCRTEw
NEQyMUU2OEYxNTAwRTQyQTg5IC8qIFdlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsICovLAotCQkJCUQw
RUFDRjc3MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcCAqLywKLQkJ
CQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovLAot
CQkJCUQwRUFDRjc4MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbCAq
LywKKwkJCQlEMDVERDZERDIyMzg4NDA2MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5j
cHAgKi8sCisJCQkJRDA1REQ2REUyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZm
ZXIuaCAqLywKKwkJCQlEMDVERDZERjIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29tbWFuZEJ1
ZmZlci5pZGwgKi8sCisJCQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1h
bmRFbmNvZGVyLmNwcCAqLywKKwkJCQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BV
Q29tbWFuZEVuY29kZXIuaCAqLywKKwkJCQlEMEVBQ0Y3ODIxOTM3MjI4MDAwRkE3NUMgLyogV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaWRsICovLAogCQkJCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAv
KiBXZWJHUFVEZXZpY2UuY3BwICovLAogCQkJCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBX
ZWJHUFVEZXZpY2UuaCAqLywKIAkJCQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BV
RGV2aWNlLmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaAppbmRleCBlNmYxMDljNmE0ODc3MDhkMmE4MGQ2N2JhOTAzNTA4NDE1ZWIy
MzFhLi5jMzQ5NTkzOGJlM2E5NDJjMjZjYzllMmRhMjBlY2QzOWJiOTJmNjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC04NCw2
ICs4NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhHUFVCdWZmZXJVc2FnZSkg
XAogICAgIG1hY3JvKEdQVUNhbnZhc0NvbnRleHQpIFwKICAgICBtYWNybyhHUFVTaGFkZXJNb2R1
bGUpIFwKKyAgICBtYWNybyhHUFVDb21tYW5kQnVmZmVyKSBcCisgICAgbWFjcm8oR1BVQ29tbWFu
ZEVuY29kZXIpIFwKICAgICBtYWNybyhHUFVTaGFkZXJTdGFnZUJpdCkgXAogICAgIG1hY3JvKEdQ
VVN3YXBDaGFpbikgXAogICAgIG1hY3JvKEdQVVRleHR1cmVVc2FnZSkgXApAQCAtMjAxLDcgKzIw
Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhXZWJHUFVCaW5kR3JvdXApIFwK
ICAgICBtYWNybyhXZWJHUFVCaW5kR3JvdXBMYXlvdXQpIFwKICAgICBtYWNybyhXZWJHUFVCdWZm
ZXIpIFwKLSAgICBtYWNybyhXZWJHUFVDb21tYW5kQnVmZmVyKSBcCiAgICAgbWFjcm8oV2ViR1BV
RGV2aWNlKSBcCiAgICAgbWFjcm8oV2ViR1BVSW5kZXhGb3JtYXQpIFwKICAgICBtYWNybyhXZWJH
UFVJbnB1dFN0ZXBNb2RlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaAppbmRleCAzYTkyOGJiMGFkZTE2ZmQxYmUz
NjYyZGMxMDVjYTVhYmJiZmE0OWVkLi5jYmIyMmI5MWY1OWI2ZWVkMGE0OTk1NmRmN2E5N2UxOWM5
NGRlNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKQEAgLTI3LDcgKzI3LDkgQEAKIAogI2lmIEVOQUJMRShX
RUJHUFUpCiAKKyNpbmNsdWRlICJHUFVCdWZmZXIuaCIKICNpbmNsdWRlICJHUFVPcmlnaW4zRC5o
IgorI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0z
OCw5ICs0MCw3IEBAIE9CSkNfUFJPVE9DT0woTVRMQ29tbWFuZEJ1ZmZlcik7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgR1BVQnVmZmVyOwogY2xhc3MgR1BVRGV2aWNlOwotY2xhc3Mg
R1BVVGV4dHVyZTsKIAogc3RydWN0IEdQVUV4dGVudDNEOwogCkBAIC04MSw3ICs4MSw3IEBAIHN0
cnVjdCBHUFVUZXh0dXJlQ29weVZpZXcgZmluYWwgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlIHsK
IAogY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbW1hbmRC
dWZmZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IGNy
ZWF0ZShHUFVEZXZpY2UmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IHRy
eUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmKTsKIAogICAgIFBsYXRmb3JtQ29tbWFuZEJ1ZmZlciog
cGxhdGZvcm1Db21tYW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUNvbW1hbmRC
dWZmZXIuZ2V0KCk7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmPEdQVUJ1ZmZlcj4+JiB1c2VkQnVm
ZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlZEJ1ZmZlcnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKaW5kZXggOGI3MzUxODA0
YTVhZDViMTUzMzJkYmNiYzFhZjk3NGEwYTJlNzYxMi4uOWJkZjY2NmNkN2YzMDJmNzBiNGYzYzE4
YjMxYmNlOTY3ZjJmNDY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURldmljZS5jcHAKQEAgLTgzLDkgKzgzLDkgQEAgUmVmUHRyPEdQVVJlbmRl
clBpcGVsaW5lPiBHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVs
aW5lRGVzY3IKICAgICByZXR1cm4gR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSgqdGhpcywgV1RG
TW92ZShkZXNjcmlwdG9yKSk7CiB9CiAKLVJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBHUFVEZXZp
Y2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKQorUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVURl
dmljZTo6dHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEdQVUNv
bW1hbmRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuIEdQVUNvbW1hbmRCdWZmZXI6
OnRyeUNyZWF0ZSgqdGhpcyk7CiB9CiAKIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IEdQVURldmljZTo6
dHJ5Q3JlYXRlU3dhcENoYWluKGNvbnN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaAppbmRleCA1Y2Y0ZWI3ZjI1NzJmNzYzYzgw
NzA1YjgwZjgwOWJmYmFiZTE0NjEyLi44ZmU5NjkzNDIxYWIyYmMwZTViZDY5ZmEzNWQ0OTY2M2Y1
NDcxYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VURldmljZS5oCkBAIC0zNyw5ICszNyw2IEBAIE9CSkNfUFJPVE9DT0woTVRMRGV2aWNlKTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBQbGF0Zm9ybURldmljZSA9IE1UTERldmljZTsK
LXVzaW5nIFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMRGV2aWNlPjsKLQog
Y2xhc3MgR1BVQmluZEdyb3VwTGF5b3V0OwogY2xhc3MgR1BVQnVmZmVyOwogY2xhc3MgR1BVQ29t
bWFuZEJ1ZmZlcjsKQEAgLTU4LDYgKzU1LDkgQEAgc3RydWN0IEdQVVJlcXVlc3RBZGFwdGVyT3B0
aW9uczsKIHN0cnVjdCBHUFVTYW1wbGVyRGVzY3JpcHRvcjsKIHN0cnVjdCBHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yOwogc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yOworICAgIAordXNpbmcg
UGxhdGZvcm1EZXZpY2UgPSBNVExEZXZpY2U7Cit1c2luZyBQbGF0Zm9ybURldmljZVNtYXJ0UHRy
ID0gUmV0YWluUHRyPE1UTERldmljZT47CiAKIGNsYXNzIEdQVURldmljZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEdQVURldmljZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxHUFVEZXZpY2U+IHsKIHB1
YmxpYzoKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1
bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0
OwogICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCi0gICAgUmVmUHRyPEdQVUNvbW1h
bmRCdWZmZXI+IGNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKKyAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1
ZmZlcj4gdHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgUmVmUHRyPEdQVVN3
YXBDaGFpbj4gdHJ5Q3JlYXRlU3dhcENoYWluKGNvbnN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0b3Im
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRC
dWZmZXJNZXRhbC5tbQppbmRleCBjOTJjNTQ0ZDE1MWFhYWU5NGI3MWVkZjg2MDI3NzBiNTVjYjU3
YjA2Li5lNGM0MjM5NzlhMzFmMDk0NWFmMmYyMDBmYjAyZDVkMGRkYjU5NWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1
ZmZlck1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KQEAgLTI4LDExICsyOCw5IEBACiAKICNpZiBF
TkFCTEUoV0VCR1BVKQogCi0jaW1wb3J0ICJHUFVCdWZmZXIuaCIKICNpbXBvcnQgIkdQVURldmlj
ZS5oIgogI2ltcG9ydCAiR1BVRXh0ZW50M0QuaCIKICNpbXBvcnQgIkdQVVF1ZXVlLmgiCi0jaW1w
b3J0ICJHUFVUZXh0dXJlLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAKICNpbXBvcnQgPE1ldGFs
L01ldGFsLmg+CkBAIC00MSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShHUFVEZXZpY2Um
IGRldmljZSkKK1JlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBHUFVDb21tYW5kQnVmZmVyOjp0cnlD
cmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UpCiB7CiAgICAgaWYgKCFkZXZpY2UucGxhdGZv
cm1EZXZpY2UoKSkgewogICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIxYTc4OTJiMzcyYjZjMDZmYjgx
NDYyYWE0YmNlNmQ1MjFlMGU1YTguLjZiMWM5Y2RmM2I5ZDEyNzBiYTI0NzgwMDEwZWZhNGRmMjkw
YWM4MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOS0wMy0xMyAgSnVzdGluIEZhbiAgPGp1
c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgR1BVXSBVcGRhdGVzIHRvIEdQVUNv
bW1hbmRCdWZmZXIgZm9yIG5ldyBHUFVDb21tYW5kUXVldWUgY29uY2VwdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MDgzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODQyMzU5MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgZXhpc3RpbmcgV2ViIEdQVSB0ZXN0cyBmb3IgR1BVQ29tbWFu
ZEVuY29kZXIgYW5kIG5ldyBHUFVDb21tYW5kQnVmZmVyLgorCisgICAgICAgICogd2ViZ3B1L2Js
aXQtY29tbWFuZHMuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVy
LXJhY2VzLmh0bWw6CisgICAgICAgICogd2ViZ3B1L2J1ZmZlci1yZXNvdXJjZS10cmlhbmdsZXMu
aHRtbDoKKyAgICAgICAgKiB3ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWw6CisgICAgICAgICogd2ViZ3B1L2Rl
cHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvanMvd2Vi
Z3B1LWZ1bmN0aW9ucy5qczoKKyAgICAgICAgKGJlZ2luQmFzaWNSZW5kZXJQYXNzKToKKyAgICAg
ICAgKiB3ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbDoKKyAgICAgICAgKiB3ZWJn
cHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWw6CisgICAgICAgICogd2ViZ3B1L3RleHR1cmUt
dHJpYW5nbGUtc3RyaXAuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlh
bmdsZS1zdHJpcC5odG1sOgorCiAyMDE5LTAzLTEyICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBHUFVdIFVwZGF0ZSBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgYW5kIGFkZCBHUFVDb2xvclN0YXRlRGVzY3JpcHRvci5mb3JtYXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sCmluZGV4IDE0OTNmNWIwNGQ4ZTQ4OWFmNWUxNzViY2U4
MDBjZTExYTAyNTNmODIuLmQ3MTk0N2VmOGQxNDJhMDdmYzQ1NzVmZDhhOWQ3YjExYzk2ZTg1ZjQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbApAQCAtODUsMTIgKzg1LDEzIEBA
IGFzeW5jIGZ1bmN0aW9uIHRlc3QoaW1hZ2UpIHsKICAgICAgICAgaW1hZ2VIZWlnaHQ6IDAKICAg
ICB9OwogCi0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVDb21tYW5kQnVm
ZmVyKCk7Ci0gICAgY29tbWFuZEJ1ZmZlci5jb3B5QnVmZmVyVG9CdWZmZXIoYnVmZmVyQSwgMCwg
YnVmZmVyQiwgMCwgaW1hZ2VEYXRhLmRhdGEuYnl0ZUxlbmd0aCk7Ci0gICAgY29tbWFuZEJ1ZmZl
ci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlclZpZXdCLCB0ZXh0dXJlVmlld0EsIHRleHR1cmVT
aXplKTsKLSAgICBjb21tYW5kQnVmZmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlKHRleHR1cmVWaWV3
QSwgdGV4dHVyZVZpZXdCLCB0ZXh0dXJlU2l6ZSk7Ci0gICAgY29tbWFuZEJ1ZmZlci5jb3B5VGV4
dHVyZVRvQnVmZmVyKHRleHR1cmVWaWV3QiwgcmVhZEJ1ZmZlclZpZXcsIHRleHR1cmVTaXplKTsK
LSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKKyAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGNv
bW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXJBLCAwLCBidWZmZXJCLCAwLCBp
bWFnZURhdGEuZGF0YS5ieXRlTGVuZ3RoKTsKKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVy
VG9UZXh0dXJlKGJ1ZmZlclZpZXdCLCB0ZXh0dXJlVmlld0EsIHRleHR1cmVTaXplKTsKKyAgICBj
b21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlclZpZXdCLCB0ZXh0dXJlVmll
d0EsIHRleHR1cmVTaXplKTsKKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRvVGV4dHVy
ZSh0ZXh0dXJlVmlld0EsIHRleHR1cmVWaWV3QiwgdGV4dHVyZVNpemUpOworICAgIGNvbW1hbmRF
bmNvZGVyLmNvcHlUZXh0dXJlVG9CdWZmZXIodGV4dHVyZVZpZXdCLCByZWFkQnVmZmVyVmlldywg
dGV4dHVyZVNpemUpOworICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29k
ZXIuZmluaXNoKCldKTsKICAgICBidWZmZXJBLmRlc3Ryb3koKTsKICAgICBidWZmZXJCLmRlc3Ry
b3koKTsKICAgICB0ZXh0dXJlQS5kZXN0cm95KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwKaW5kZXggZDMzMjk2NmYzOGM1Mzlh
OWUyODBmNGE4OWJiMjZkNmEyZjJhNmJmZS4uOTk5NGRlZGNmNzE0N2FlZTczMWEyOTdiYTA3Yzg5
OWE3NTM1MzA3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5k
LWJ1ZmZlci1yYWNlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFu
ZC1idWZmZXItcmFjZXMuaHRtbApAQCAtNzYsMTMgKzc2LDEzIEBAIGZ1bmN0aW9uIGNyZWF0ZUFu
ZFNldFZlcnRleEJ1ZmZlcihkZXZpY2UsIHZlcnRpY2VzKSB7CiB9CiAKIGZ1bmN0aW9uIGRyYXdB
bmRTdWJtaXRDb21tYW5kcyhkZXZpY2UsIHBpcGVsaW5lLCBhdHRhY2htZW50LCB2ZXJ0ZXhCdWZm
ZXIsIGNvbG9yQnVmZmVyKSB7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGRldmljZS5jcmVh
dGVDb21tYW5kQnVmZmVyKCk7Ci0gICAgY29uc3QgZW5jb2RlciA9IGNvbW1hbmRCdWZmZXIuYmVn
aW5SZW5kZXJQYXNzKHsgY29sb3JBdHRhY2htZW50czogW2F0dGFjaG1lbnRdIH0pOworICAgIGNv
bnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAg
Y29uc3QgZW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0
YWNobWVudHM6IFthdHRhY2htZW50XSB9KTsKICAgICBlbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMo
MCwgW3ZlcnRleEJ1ZmZlciwgY29sb3JCdWZmZXJdLCBbMCwgMF0pOwogICAgIGVuY29kZXIuc2V0
UGlwZWxpbmUocGlwZWxpbmUpOwogICAgIGVuY29kZXIuZHJhdygzLCAxLCAwLCAwKTsKICAgICBl
bmNvZGVyLmVuZFBhc3MoKTsKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRC
dWZmZXJdKTsKKyAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZp
bmlzaCgpXSk7CiB9CiAKIGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvYnVmZmVyLXJlc291cmNlLXRyaWFuZ2xlcy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L2J1ZmZlci1yZXNvdXJjZS10cmlhbmdsZXMuaHRtbAppbmRleCA2MGUyN2Q1MTRk
YTY2ZDYzYjNmZWQ2ZWI2NGEwNjBiOGEzNWIzMjBhLi42M2ZiZjNhOTY1Zjg4YTVlOGE1ZmYxMGZi
YzUwZGFjNjVkZGMwYTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLXJl
c291cmNlLXRyaWFuZ2xlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItcmVz
b3VyY2UtdHJpYW5nbGVzLmh0bWwKQEAgLTE5NCw4ICsxOTQsOCBAQCBhc3luYyBmdW5jdGlvbiB0
ZXN0KCkgewogICAgIH0pOwogCiAgICAgUHJvbWlzZS5hbGwoYnVmZmVyUHJvbWlzZXMpLnRoZW4o
KCkgPT4gewotICAgICAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUNvbW1h
bmRCdWZmZXIoKTsKLSAgICAgICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVy
UGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRCdWZmZXIpOworICAgICAgICBjb25zdCBjb21tYW5kRW5j
b2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgICAgICBjb25zdCBwYXNz
RW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIp
OwogICAgICAgICBwYXNzRW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7CiAKICAgICAgICAg
Ly8gVmVydGV4IGRhdGEgZm9yIHVwcGVyIHRyaWFuZ2xlcy4KQEAgLTIwNSw5ICsyMDUsOSBAQCBh
c3luYyBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICBwYXNzRW5jb2Rlci5zZXRWZXJ0ZXhCdWZm
ZXJzKDAsIFt2ZXJ0aWNlc0J1ZmZlcl0sIFswXSk7CiAgICAgICAgIHBhc3NFbmNvZGVyLmRyYXco
OSwgMSwgMCwgMCk7CiAKLSAgICAgICAgY29uc3QgZW5kQ29tbWFuZEJ1ZmZlciA9IHBhc3NFbmNv
ZGVyLmVuZFBhc3MoKTsKKyAgICAgICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwogICAgICAgICBj
b25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOwotICAgICAgICBxdWV1ZS5zdWJtaXQoW2Vu
ZENvbW1hbmRCdWZmZXJdKTsKKyAgICAgICAgcXVldWUuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5m
aW5pc2goKV0pOwogCiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L2NvbW1hbmQtYnVmZmVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFu
ZC1idWZmZXJzLWV4cGVjdGVkLnR4dAppbmRleCBkN2NlMDVkYzk5Yjk3YjU4Y2YxMDIyNWE3NTU5
Mjc3ODljYTlkZjA5Li5lMGNmNDFkZmM4MTY5Y2EwMDg3NDA0NzBjZTMwNWVhMDBmNGI2ZWQ0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dApA
QCAtMSwzICsxLDMgQEAKIAotUEFTUyBDcmVhdGUgYSBkZWZhdWx0IEdQVUNvbW1hbmRCdWZmZXIu
IAorUEFTUyBDcmVhdGUgYSBkZWZhdWx0IEdQVUNvbW1hbmRFbmNvZGVyLiAKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L2NvbW1hbmQtYnVmZmVycy5odG1sCmluZGV4IGJhZjYzNzlhZDA2Nzc0MTFiNTIzZmI4
MGQ1OWUxNGJhNjE2ZjEzMjEuLjgzM2EzODNiMjlkZDM1MzkzY2U4Yzg1NjkwMGM1ODNmMzhjNjQ3
NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWwKQEAgLTYsMTAgKzYs
MTAgQEAKIDxzY3JpcHQ+CiBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgIGNvbnN0IGRl
dmljZSA9IGF3YWl0IGdldEJhc2ljRGV2aWNlKCk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9
IGRldmljZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0gICAgYXNzZXJ0X3RydWUoY29tbWFuZEJ1
ZmZlciBpbnN0YW5jZW9mIFdlYkdQVUNvbW1hbmRCdWZmZXIsICJTdWNjZXNzZnVsbHkgY3JlYXRl
ZCBHUFVDb21tYW5kQnVmZmVyLiIpOwotfSwgIkNyZWF0ZSBhIGRlZmF1bHQgR1BVQ29tbWFuZEJ1
ZmZlci4iKTsKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5k
RW5jb2RlcigpOworICAgIGFzc2VydF90cnVlKGNvbW1hbmRFbmNvZGVyIGluc3RhbmNlb2YgR1BV
Q29tbWFuZEVuY29kZXIsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBHUFVDb21tYW5kRW5jb2Rlci4i
KTsKK30sICJDcmVhdGUgYSBkZWZhdWx0IEdQVUNvbW1hbmRFbmNvZGVyLiIpOwogCi0vLyBGSVhN
RTogY3JlYXRlQ29tbWFuZEJ1ZmZlciBzaG91bGQgdGFrZSBhIEdQVUNvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yLCB3aGljaCBpcyBjdXJyZW50bHkgYW4gZW1wdHkgZGljdGlvbmFyeS4KKy8vIEZJWE1F
OiBjcmVhdGVDb21tYW5kRW5jb2RlciBzaG91bGQgdGFrZSBhIEdQVUNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvciwgd2hpY2ggaXMgY3VycmVudGx5IGFuIGVtcHR5IGRpY3Rpb25hcnkuCiA8L3Njcmlw
dD4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbAppbmRleCA2NjA0
OGU4Y2MzMzQxYWYxMDQzMWM5OTE3NmQwZmI2NDcyMjhhYjlkLi41NDA3MThkNTQ5ZmYyZTc3ODMx
MWQ0ODZiZTQ5MzczZjI2MDlmMzNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvZGVw
dGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9k
ZXB0aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwKQEAgLTg5LDcgKzg5LDcgQEAgYXN5bmMg
ZnVuY3Rpb24gdGVzdCgpIHsKICAgICBjb25zdCBpbnB1dFN0YXRlRGVzY3JpcHRvciA9IGNyZWF0
ZUlucHV0U3RhdGVEZXNjcmlwdG9yKCk7CiAgICAgY29uc3QgZGVwdGhTdGF0ZURlc2NyaXB0b3Ig
PSBjcmVhdGVCYXNpY0RlcHRoU3RhdGVEZXNjcmlwdG9yKCk7CiAgICAgY29uc3QgcGlwZWxpbmUg
PSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBpbnB1dFN0
YXRlRGVzY3JpcHRvciwgZGVwdGhTdGF0ZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEJ1ZmZlcigpOworICAgIGNvbnN0IGNvbW1hbmRF
bmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CiAKICAgICBjb25zdCBiYXNp
Y0F0dGFjaG1lbnQgPSB7CiAgICAgICAgIGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5nZXRDdXJyZW50
VGV4dHVyZSgpLmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpLApAQCAtMTA1LDcgKzEwNSw3IEBA
IGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIGNsZWFyRGVwdGg6IDEuMAogICAgIH07
CiAKLSAgICBjb25zdCBlbmNvZGVyID0gY29tbWFuZEJ1ZmZlci5iZWdpblJlbmRlclBhc3Moewor
ICAgIGNvbnN0IGVuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoewogICAg
ICAgICBjb2xvckF0dGFjaG1lbnRzOiBbYmFzaWNBdHRhY2htZW50XSwKICAgICAgICAgZGVwdGhT
dGVuY2lsQXR0YWNobWVudDogZGVwdGhBdHRhY2htZW50CiAgICAgfSk7CkBAIC0xMTUsNyArMTE1
LDcgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBlbmNvZGVyLmRyYXcoNCwgMiwgMCwg
MCk7CiAgICAgZW5jb2Rlci5lbmRQYXNzKCk7CiAKLSAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJt
aXQoW2NvbW1hbmRCdWZmZXJdKTsKKyAgICBkZXZpY2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1h
bmRFbmNvZGVyLmZpbmlzaCgpXSk7CiAKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMgYi9MYXlvdXRUZXN0cy93ZWJncHUvanMvd2ViZ3B1
LWZ1bmN0aW9ucy5qcwppbmRleCAzY2RhMjhlOTBlMjFlOGE2NDgxZTMyZTMwMWZkNTNhMDc3ZjJj
YmVlLi4yNDE3YmFmMjRkZDYyMTAzMWM5NWY5NTc2N2E5YjI2ZDE3MzIxMmM1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcworKysgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcwpAQCAtNjYsNyArNjYsNyBAQCBmdW5j
dGlvbiBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBwaXBlbGluZUxh
eW91dCwgaW5wdXRTdGF0ZURlcwogICAgIHJldHVybiBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxp
bmUocGlwZWxpbmVEZXNjcmlwdG9yKTsKIH0KIAotZnVuY3Rpb24gYmVnaW5CYXNpY1JlbmRlclBh
c3Moc3dhcENoYWluLCBjb21tYW5kQnVmZmVyKSB7CitmdW5jdGlvbiBiZWdpbkJhc2ljUmVuZGVy
UGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKSB7CiAgICAgY29uc3QgYmFzaWNBdHRhY2ht
ZW50ID0gewogICAgICAgICBhdHRhY2htZW50OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUo
KS5jcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKSwKICAgICAgICAgbG9hZE9wOiAiY2xlYXIiLApA
QCAtNzUsNyArNzUsNyBAQCBmdW5jdGlvbiBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4s
IGNvbW1hbmRCdWZmZXIpIHsKICAgICB9CiAKICAgICAvLyBGSVhNRTogRmxlc2ggb3V0IHRoZSBy
ZXN0IG9mIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLiAKLSAgICByZXR1cm4gY29tbWFuZEJ1
ZmZlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRzIDogW2Jhc2ljQXR0YWNobWVu
dF0gfSk7CisgICAgcmV0dXJuIGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9y
QXR0YWNobWVudHMgOiBbYmFzaWNBdHRhY2htZW50XSB9KTsKIH0KIAogZnVuY3Rpb24gZW5jb2Rl
QmFzaWNDb21tYW5kcyhyZW5kZXJQYXNzRW5jb2RlciwgcmVuZGVyUGlwZWxpbmUsIHZlcnRleEJ1
ZmZlcikgewpAQCAtODMsNSArODMsNSBAQCBmdW5jdGlvbiBlbmNvZGVCYXNpY0NvbW1hbmRzKHJl
bmRlclBhc3NFbmNvZGVyLCByZW5kZXJQaXBlbGluZSwgdmVydGV4QnVmZmVyKSB7CiAgICAgICAg
IHJlbmRlclBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMoMCwgW3ZlcnRleEJ1ZmZlcl0sIFsw
XSk7CiAgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwog
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoNCwgMSwgMCwgMCk7Ci0gICAgcmV0dXJuIHJlbmRl
clBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7
CiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
cmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbAppbmRleCBiY2FhYmI1MzYxNjRjMjczYjI1YTE2
N2Y3NzRhYjY3MzExODdjYTMwLi5jMDNhNDgwYTlhZDI4YTgwMTQxNmNlZTgwZTRhZWZjOWQyNDhh
NWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2Rp
bmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2Rpbmcu
aHRtbApAQCAtMzQsMTUgKzM0LDE0IEBAIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CiAgICAg
Y29uc3Qgc2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNo
YWRlcnMgfSk7CiAgICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRl
ck1vZHVsZSwgZGV2aWNlKTsKIAotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIGFzc2VydF90cnVlKGNvbW1hbmRCdWZmZXIgaW5zdGFu
Y2VvZiBXZWJHUFVDb21tYW5kQnVmZmVyLCAiY3JlYXRlQ29tbWFuZEJ1ZmZlciByZXR1cm5lZCBh
IFdlYkdQVUNvbW1hbmRCdWZmZXIiKTsKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGFzc2VydF90cnVlKGNvbW1hbmRFbmNvZGVy
IGluc3RhbmNlb2YgR1BVQ29tbWFuZEVuY29kZXIsICJjcmVhdGVDb21tYW5kRW5jb2RlciByZXR1
cm5lZCBhIEdQVUNvbW1hbmRFbmNvZGVyIik7CiAKLSAgICBjb25zdCBlbmNvZGVyID0gYmVnaW5C
YXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kQnVmZmVyKTsKKyAgICBjb25zdCBlbmNv
ZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kRW5jb2Rlcik7CiAg
ICAgYXNzZXJ0X3RydWUoZW5jb2RlciBpbnN0YW5jZW9mIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LCAiYmVnaW5SZW5kZXJQYXNzKCkgcmV0dXJuZWQgYSBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciIp
OwogCiAgICAgZW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Ci0gICAgY29uc3QgY29tbWFu
ZEJ1ZmZlckVuZCA9IGVuY29kZXIuZW5kUGFzcygpOwotICAgIGFzc2VydF90cnVlKGNvbW1hbmRC
dWZmZXJFbmQgaW5zdGFuY2VvZiBXZWJHUFVDb21tYW5kQnVmZmVyLCAiZW5kUGFzcygpIHJldHVy
bmVkIGEgV2ViR1BVQ29tbWFuZEJ1ZmZlciIpOworICAgIGVuY29kZXIuZW5kUGFzcygpOwogfSwg
IldlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGNyZWF0ZWQgYW5kIHN1Y2Nlc3NmdWxseSBlbmRlZCIp
OwogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJp
YW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3Ry
aXAuaHRtbAppbmRleCBlMGUyOGM1Nzg4MzRiMzQ0ZDQ2MDdjNmUzMGI4NGRiNzQ0Yzg0MmIzLi4w
ODhlNDkxNWJiOWZkZjlhYTBhNjlhYWJhMmFhNTNmMGIyOGY2NmViIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC5odG1sCkBAIC01MiwxMiArNTIsMTIgQEAg
YXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIG5vbi1N
U0wgc2hhZGVycy4KICAgICBjb25zdCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHsgY29kZTogc2hhZGVyQ29kZSB9KTsKICAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0
ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UpOwotICAgIGNvbnN0IGNvbW1hbmRC
dWZmZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIGNvbnN0IHBhc3NFbmNv
ZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kQnVmZmVyKTsKLSAg
ICBjb25zdCBlbmRDb21tYW5kQnVmZmVyID0gZW5jb2RlQmFzaWNDb21tYW5kcyhwYXNzRW5jb2Rl
ciwgcGlwZWxpbmUpOworICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7CisgICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVy
UGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKKyAgICBlbmNvZGVCYXNpY0NvbW1hbmRz
KHBhc3NFbmNvZGVyLCBwaXBlbGluZSk7CiAgICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVl
dWUoKTsKIAotICAgIHF1ZXVlLnN1Ym1pdChbZW5kQ29tbWFuZEJ1ZmZlcl0pOworICAgIHF1ZXVl
LnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKIAogICAgIHJlcXVlc3RBbmltYXRp
b25GcmFtZSgoKSA9PiB7IAogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbAppbmRleCBjMGY1ODgx
ODRhZGI2YmEwOTVjMTk3OWQ1YzE2MzM2NWUxOGVkNjAyLi5iOWRlYjEyZDc0Mzk1NDNkYTQzODhl
ZDdkMWQ4YmM4MDJjODA5MmEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVy
ZS10cmlhbmdsZS1zdHJpcC5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLXRy
aWFuZ2xlLXN0cmlwLmh0bWwKQEAgLTE4Niw3ICsxODYsNyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0
KCkgewogCiAgICAgLy8gUGlwZWxpbmUgYW5kIHJlbmRlcgogICAgIGNvbnN0IHBpcGVsaW5lID0g
Y3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgcGlwZWxpbmVMYXlvdXQs
IGlucHV0U3RhdGVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2aWNl
LmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwogCiAgICAgY29uc3QgYnVmZmVyQ29weVZpZXcgPSB7
CiAgICAgICAgIGJ1ZmZlcjogdGV4dHVyZUJ1ZmZlciwKQEAgLTIwMCw4ICsyMDAsOCBAQCBhc3lu
YyBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICBhcnJheUxheWVyOiAwLAogICAgICAgICBvcmln
aW46IHsgeDogMCwgeTogMCwgejogMCB9CiAgICAgfTsKLSAgICBjb21tYW5kQnVmZmVyLmNvcHlC
dWZmZXJUb1RleHR1cmUoYnVmZmVyQ29weVZpZXcsIHRleHR1cmVDb3B5VmlldywgdGV4dHVyZVNp
emUpOwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENo
YWluLCBjb21tYW5kQnVmZmVyKTsKKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVyVG9UZXh0
dXJlKGJ1ZmZlckNvcHlWaWV3LCB0ZXh0dXJlQ29weVZpZXcsIHRleHR1cmVTaXplKTsKKyAgICBj
b25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFu
ZEVuY29kZXIpOwogICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKICAgICBw
YXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoYmluZEdyb3VwSW5kZXgsIGJpbmRHcm91cCk7CiAgICAg
cGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycyhwb3NpdGlvbkJ1ZmZlckluZGV4LCBbcG9zaXRp
b25CdWZmZXIsIHRleHR1cmVDb29yZEJ1ZmZlcl0sIFswLCAwXSk7CkBAIC0yMDksNyArMjA5LDcg
QEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7CiAK
ICAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOwotICAgIHF1ZXVlLnN1Ym1pdChb
Y29tbWFuZEJ1ZmZlcl0pOworICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNo
KCldKTsKICAgICBwb3NpdGlvbkJ1ZmZlci5kZXN0cm95KCk7CiAgICAgdGV4dHVyZUNvb3JkQnVm
ZmVyLmRlc3Ryb3koKTsKICAgICB0ZXh0dXJlLmRlc3Ryb3koKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sCmluZGV4IGNhMWJh
OTZlNjBiMDNiOTY4YzQxYmJhMzBlNzI0MGY3NjM3YjJiMjMuLjJhNTBjMWFhMDAxMDA1YjUxYWJk
Yjg5ZThmMzE1YmJkNzNlZWZkYTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0
ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3Zl
cnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbApAQCAtOTEsMTEgKzkxLDExIEBAIGFzeW5j
IGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgY29uc3QgdmVydGV4QnVmZmVyID0gY3JlYXRlVmVydGV4
QnVmZmVyKGRldmljZSk7CiAgICAgY29uc3QgaW5wdXRTdGF0ZURlc2NyaXB0b3IgPSBjcmVhdGVJ
bnB1dFN0YXRlRGVzY3JpcHRvcigpOwogICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQ
aXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgaW5wdXRTdGF0ZURlc2NyaXB0b3Ip
OwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEJ1ZmZlcigp
OwotICAgIGNvbnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWlu
LCBjb21tYW5kQnVmZmVyKTsKLSAgICBjb25zdCBlbmRDb21tYW5kQnVmZmVyID0gZW5jb2RlQmFz
aWNDb21tYW5kcyhwYXNzRW5jb2RlciwgcGlwZWxpbmUsIHZlcnRleEJ1ZmZlcik7CisgICAgY29u
c3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICBj
b25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFu
ZEVuY29kZXIpOworICAgIGVuY29kZUJhc2ljQ29tbWFuZHMocGFzc0VuY29kZXIsIHBpcGVsaW5l
LCB2ZXJ0ZXhCdWZmZXIpOwogICAgIGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7Ci0g
ICAgcXVldWUuc3VibWl0KFtlbmRDb21tYW5kQnVmZmVyXSk7CisgICAgcXVldWUuc3VibWl0KFtj
b21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwogICAgIHZlcnRleEJ1ZmZlci5kZXN0cm95KCk7CiAK
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364601</attachid>
            <date>2019-03-13 18:11:52 -0700</date>
            <delta_ts>2019-03-14 15:24:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-195083-20190313181151.patch</filename>
            <type>text/plain</type>
            <size>69564</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVhYzc1NTIxYTcwN2U5
YmJiZTQ2MzE2Zjk1M2I4ODBlODFiZjMxMi4uZTQ5ZTc5ZmM2YzMyMjBkNDZlMjAyZWI1MTg2MzMy
ODZhMjA4ZDQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE5LTAzLTEzICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIFVwZGF0
ZXMgdG8gR1BVQ29tbWFuZEJ1ZmZlciBmb3IgbmV3IEdQVUNvbW1hbmRRdWV1ZSBjb25jZXB0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUwODMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NDIzNTkxPgorCisgICAgICAgIFJldmlld2VkIGJ5IERl
YW4gSmFja3Nvbi4KKworICAgICAgICBXZWJHUFVDb21tYW5kQnVmZmVyIG5vdyByZXByZXNlbnRz
IGEgY29tcGxldGVkIEdQVUNvbW1hbmRCdWZmZXIgdGhhdCBjYW4gb25seSBiZSB1c2VkIGluIHF1
ZXVlIHN1Ym1pdHMuIFRoZSBwcmV2aW91cyBXZWJHUFVDb21tYW5kQnVmZmVyCisgICAgICAgIGlz
IG5vdyBXZWJHUFVDb21tYW5kRW5jb2Rlci4KKworICAgICAgICBBZmZlY3RlZCBXZWIgR1BVIHRl
c3RzIHVwZGF0ZWQgdG8gbWF0Y2ggbmV3IEFQSS4KKworICAgICAgICBOZXcgZmlsZXMgYW5kIHN5
bWJvbHM6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oOgorCisgICAgICAgIEltcGxlbWVudCBuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlciwg
bm93IGp1c3QgYSBET00gb2JqZWN0IGNhcnJpZXIgZm9yIGEgZmluaXNoZWQgR1BVQ29tbWFuZEJ1
ZmZlcjoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpXZWJHUFVDb21tYW5kQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlckNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVCdWZmZXJD
b3B5VmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVUZXh0dXJl
Q29weVZpZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZl
clRvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZm
ZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29tbWFuZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpjb21tYW5kQnVmZmVyIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVy
LmlkbDoKKworICAgICAgICBSZW5hbWUgb2xkIFdlYkdQVUNvbW1hbmRCdWZmZXIgdG8gV2ViR1BV
Q29tbWFuZEVuY29kZXI6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVu
Y29kZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlckNvcHlW
aWV3Ojp0cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHUFVUZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRFbmNvZGVyOjpXZWJHUFVDb21tYW5kRW5jb2Rl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQ
YXNzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlC
dWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEVuY29kZXI6
OmNvcHlUZXh0dXJlVG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEVu
Y29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNv
bW1hbmRFbmNvZGVyOjpmaW5pc2gpOiBBZGRlZC4gIkNvbXBsZXRlcyIgdGhpcyBhbmQgaW52YWxp
ZGF0ZXMgaXQuIFJldHVybnMgaXRzIEdQVUNvbW1hbmRCdWZmZXIsIHJlYWR5IGZvciBzdWJtaXNz
aW9uLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGw6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRC
dWZmZXIuaWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyIGNvbnN0
KTogUmVuYW1lZCBmb20gY3JlYXRlQ29tbWFuZEJ1ZmZlci4gTm93IHJldHVybnMgbm9uLW51bGxh
YmxlLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kQnVmZmVy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpXZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlcjo6ZW5kUGFzcyk6IE5vIGxvbmdlciByZXR1cm5zIHRoZSBvcmlnaW5hbCBXZWJH
UFVDb21tYW5kQnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXI6OnNldEJpbmRHcm91cCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVF1
ZXVlOjpzdWJtaXQpOiBSZXBsYWNlIHVubmVjZXNzYXJ5IHJ2YWx1ZSByZWZlcmVuY2UgcGFyYW1l
dGVyLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJl
bmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVy
UGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpwYXNzRW5jb2RlciBjb25zdCk6IE5vdyByZXR1cm5z
IGEgcG9pbnRlciBzaW5jZSBpdCBpcyBwcm9wZXJseSBiYWNrZWQgYnkgYSBSZWZQdHIuCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVU3dhcENoYWluOjpnZXRDdXJyZW50VGV4dHVyZSk6IE5vIGxvbmdlciBpbnZhbGlkYXRl
cyBtX2N1cnJlbnRUZXh0dXJlLiBEb2ghCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUNvbW1hbmRCdWZmZXIuaDogTWlzc2luZyBpbmNsdWRlcyBmb3IgdGhlICpDb3B5VmlldyBz
dHJ1Y3RzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjp0cnlDcmVhdGVDb21tYW5kQnVmZmVyIGNvbnN0
KTogUmVuYW1lZCBmcm9tIGNyZWF0ZUNvbW1hbmRCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpH
UFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6
R1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKTogUmVuYW1lZCBmcm9tIGNyZWF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSk6IERlbGV0ZWQuCisKIDIwMTkt
MDMtMTIgIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
IEdQVV0gVXBkYXRlIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBhbmQgYWRkIEdQVUNvbG9y
U3RhdGVEZXNjcmlwdG9yLmZvcm1hdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NTNmZGM2MTI5
MTI1N2Y4MTg5MDNiNzlhNTdlOTZlNWE2NzgwNzQxLi41YzY3MDQ5MzNkMjIyMDgzMWU0NTQ0MzI3
YWVjOWIxMzQ4NGMwODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDk0LDYgKzQ5NCw3IEBA
IHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BV
QnVmZmVyLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlckJpbmRpbmcuaWRsCiAg
ICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKKyAgICBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZS5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dC5pZGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDk3Y2RhNzcyOGU4MzY5MDMwNGRkODE3NDcxNzIy
OWQ3MzdiMzkzN2IuLjcxMWRkM2QwYzFmN2M3ZjUxZTA5YWNkZTAyMTA1ODY2YjZkZDlkODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNDA0LDYgKzQwNCw3IEBAIEpTX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5p
ZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5jcHAKaW5kZXggMTI3ZTAzMjFmZjViMzQ0MmJlZTViZmVhYmI1OWI4ODk2MWZmMGY2NC4uYTUx
MDUxMTc3NmQ4N2ViNTI3MTg3NTUyMjYwMzUzODAzOWUxZmM2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTI4
LDExMiArMjgsMTggQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKLSNpbmNsdWRlICJHUFVSZW5k
ZXJQYXNzRGVzY3JpcHRvci5oIgotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0j
aW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgiCi0jaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgotI2luY2x1ZGUg
IldlYkdQVVRleHR1cmUuaCIKLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1PcHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BVQnVmZmVyQ29w
eVZpZXc6OnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29uc3QKLXsKLSAgICBpZiAoIWJ1
ZmZlciB8fCAhYnVmZmVyLT5idWZmZXIoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29t
bWFuZEVuY29kZXI6IEludmFsaWQgYnVmZmVyIGZvciBjb3B5ISIpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0
aW9uLgotCi0gICAgcmV0dXJuIEdQVUJ1ZmZlckNvcHlWaWV3IHsgYnVmZmVyLT5idWZmZXIoKS5y
ZWxlYXNlTm9uTnVsbCgpLCAqdGhpcyB9OwotfQotCi1PcHRpb25hbDxHUFVUZXh0dXJlQ29weVZp
ZXc+IFdlYkdQVVRleHR1cmVDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCkg
Y29uc3QKLXsKLSAgICBpZiAoIXRleHR1cmUgfHwgIXRleHR1cmUtPnRleHR1cmUoKSkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEVuY29kZXI6IEludmFsaWQgdGV4dHVyZSBmb3Ig
Y29weSEiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci0KLSAgICAvLyBG
SVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIHJldHVybiBHUFVUZXh0dXJlQ29w
eVZpZXcgeyB0ZXh0dXJlLT50ZXh0dXJlKCkucmVsZWFzZU5vbk51bGwoKSwgKnRoaXMgfTsKLX0K
LQotUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShS
ZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4g
V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21tYW5kQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkpOwogfQogCi1XZWJHUFVDb21tYW5kQnVmZmVyOjpXZWJHUFVDb21tYW5k
QnVmZmVyKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKK1dlYkdQVUNvbW1hbmRCdWZm
ZXI6OldlYkdQVUNvbW1hbmRCdWZmZXIoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVy
KQogICAgIDogbV9jb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKIH0KIAotUmVmUHRy
PFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRl
clBhc3MoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQotewotICAgIGF1
dG8gZ3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IoKTsKLSAgICBpZiAoIWdwdURlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgaWYgKGF1dG8gZW5jb2RlciA9IEdQVVJlbmRlclBhc3NFbmNvZGVyOjp0cnlDcmVh
dGUobV9jb21tYW5kQnVmZmVyLmNvcHlSZWYoKSwgV1RGTW92ZSgqZ3B1RGVzY3JpcHRvcikpKQot
ICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgZW5j
b2Rlci5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBX
ZWJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoY29uc3QgV2ViR1BVQnVmZmVy
JiBzcmMsIHVuc2lnbmVkIGxvbmcgc3JjT2Zmc2V0LCBjb25zdCBXZWJHUFVCdWZmZXImIGRzdCwg
dW5zaWduZWQgbG9uZyBkc3RPZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKLXsKLSAgICBpZiAo
IXNyYy5idWZmZXIoKSB8fCAhZHN0LmJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJH
UFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBHUFVCdWZmZXIh
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUg
dmFsaWRhdGlvbi4KLQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29weUJ1ZmZlclRvQnVmZmVyKHNy
Yy5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBzcmNPZmZzZXQsIGRzdC5idWZmZXIoKS5yZWxl
YXNlTm9uTnVsbCgpLCBkc3RPZmZzZXQsIHNpemUpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRC
dWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmIHNy
Y0J1ZmZlciwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBkc3RUZXh0dXJlLCBjb25zdCBH
UFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBhdXRvIGdwdUJ1ZmZlclZpZXcgPSBzcmNCdWZmZXIu
dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKTsKLSAgICBhdXRvIGdwdVRleHR1cmVWaWV3ID0g
ZHN0VGV4dHVyZS50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLQotICAgIGlmICghZ3B1
QnVmZmVyVmlldyB8fCAhZ3B1VGV4dHVyZVZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5j
b3B5QnVmZmVyVG9UZXh0dXJlKFdURk1vdmUoKmdwdUJ1ZmZlclZpZXcpLCBXVEZNb3ZlKCpncHVU
ZXh0dXJlVmlldyksIHNpemUpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlU
ZXh0dXJlVG9CdWZmZXIoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmNUZXh0dXJlLCBj
b25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYgZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQzRCYg
c2l6ZSkKLXsKLSAgICBhdXRvIGdwdVRleHR1cmVWaWV3ID0gc3JjVGV4dHVyZS50cnlDcmVhdGVH
UFVUZXh0dXJlQ29weVZpZXcoKTsKLSAgICBhdXRvIGdwdUJ1ZmZlclZpZXcgPSBkc3RCdWZmZXIu
dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKTsKLQotICAgIGlmICghZ3B1VGV4dHVyZVZpZXcg
fHwgIWdwdUJ1ZmZlclZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBBZGQg
V2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5VGV4dHVyZVRv
QnVmZmVyKFdURk1vdmUoKmdwdVRleHR1cmVWaWV3KSwgV1RGTW92ZSgqZ3B1QnVmZmVyVmlldyks
IHNpemUpOwotfQotCi12b2lkIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9UZXh0
dXJlKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgc3JjLCBjb25zdCBXZWJHUFVUZXh0dXJl
Q29weVZpZXcmIGRzdCwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCi17Ci0gICAgYXV0byBncHVT
cmNWaWV3ID0gc3JjLnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1
RHN0VmlldyA9IGRzdC50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKLQotICAgIGlmICgh
Z3B1U3JjVmlldyB8fCAhZ3B1RHN0VmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklY
TUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlU
ZXh0dXJlVG9UZXh0dXJlKFdURk1vdmUoKmdwdVNyY1ZpZXcpLCBXVEZNb3ZlKCpncHVEc3RWaWV3
KSwgc2l6ZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21tYW5kQnVmZmVyLmgKaW5kZXggNTQ2NDcwNDA5YTU5OGE1Zjg5ZTc5ZmI3Y2VlMjZlYjljOTNj
ZGRjMi4uODNhMWRhNGVhM2MwOWJjZDk3YTdjODZkNzZjZWI4YjAwOWJmZTM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNDYg
KzI4LDIxIEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZm
ZXIuaCIKLQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYkdQVUJ1ZmZlcjsKLWNsYXNz
IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOwotY2xhc3MgV2ViR1BVVGV4dHVyZTsKLQotc3RydWN0
IEdQVUV4dGVudDNEOwotc3RydWN0IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOwotCi1zdHJ1
Y3QgV2ViR1BVQnVmZmVyQ29weVZpZXcgOiBHUFVCdWZmZXJDb3B5Vmlld0Jhc2UgewotICAgIE9w
dGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiB0cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpIGNv
bnN0OwotCi0gICAgUmVmUHRyPFdlYkdQVUJ1ZmZlcj4gYnVmZmVyOwotfTsKLQotc3RydWN0IFdl
YkdQVVRleHR1cmVDb3B5VmlldyA6IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UgewotICAgIE9wdGlv
bmFsPEdQVVRleHR1cmVDb3B5Vmlldz4gdHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCkgY29u
c3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZTsKLX07Ci0KIGNsYXNzIFdl
YkdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kQnVmZmVy
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUo
UmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwotCi0gICAgR1BVQ29tbWFuZEJ1ZmZlciYgY29tbWFu
ZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5nZXQoKTsgfQorICAgIHN0
YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKFJlZlB0cjxHUFVDb21tYW5kQnVm
ZmVyPiYmKTsKIAotICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gYmVnaW5SZW5k
ZXJQYXNzKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYpOwotICAgIHZvaWQgY29weUJ1ZmZl
clRvQnVmZmVyKGNvbnN0IFdlYkdQVUJ1ZmZlciYsIHVuc2lnbmVkIGxvbmcgc3JjT2Zmc2V0LCBj
b25zdCBXZWJHUFVCdWZmZXImLCB1bnNpZ25lZCBsb25nIGRzdE9mZnNldCwgdW5zaWduZWQgbG9u
ZyBzaXplKTsKLSAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV2ViR1BVQnVmZmVy
Q29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBHUFVFeHRlbnQz
RCYpOwotICAgIHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXZWJHUFVUZXh0dXJlQ29w
eVZpZXcmLCBjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7
Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZp
ZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwor
ICAgIEdQVUNvbW1hbmRCdWZmZXIqIGNvbW1hbmRCdWZmZXIoKSB7IHJldHVybiBtX2NvbW1hbmRC
dWZmZXIuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJHUFVDb21tYW5kQnVmZmVyKFJlZjxH
UFVDb21tYW5kQnVmZmVyPiYmKTsKKyAgICBXZWJHUFVDb21tYW5kQnVmZmVyKFJlZlB0cjxHUFVD
b21tYW5kQnVmZmVyPiYmKTsKIAotICAgIFJlZjxHUFVDb21tYW5kQnVmZmVyPiBtX2NvbW1hbmRC
dWZmZXI7CisgICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IG1fY29tbWFuZEJ1ZmZlcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKaW5kZXggMWJkNmY1NDUzM2U4MWJm
OTAwMjEzMjM2MmMyYzA3ZmZmNTMzZjliZS4uMjY3MDE4NzBkMGUyY2M4MzZjMTYxODRiNzg4NTgx
MjA0ZjRhOTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDYwICsyNCwxMCBAQAogICovCiAvLyBodHRwczovL2dpdGh1
Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAogCi10
eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdTY0
OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2Vi
R1BVLAotICAgIEltcGxlbWVudGVkQXM9V2ViR1BVQnVmZmVyQ29weVZpZXcKLV0gZGljdGlvbmFy
eSBHUFVCdWZmZXJDb3B5VmlldyB7Ci0gICAgV2ViR1BVQnVmZmVyIGJ1ZmZlcjsKLSAgICB1NjQg
b2Zmc2V0OwotICAgIHU2NCByb3dQaXRjaDsKLSAgICB1MzIgaW1hZ2VIZWlnaHQ7Ci19OwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAot
ICAgIEltcGxlbWVudGVkQXM9V2ViR1BVVGV4dHVyZUNvcHlWaWV3Ci1dIGRpY3Rpb25hcnkgR1BV
VGV4dHVyZUNvcHlWaWV3IHsKLSAgICBXZWJHUFVUZXh0dXJlIHRleHR1cmU7Ci0gICAgdTMyIG1p
cExldmVsOwotICAgIHUzMiBhcnJheUxheWVyOwotICAgIEdQVU9yaWdpbjNEIG9yaWdpbjsKLX07
Ci0KIFsKICAgICBDb25kaXRpb25hbD1XRUJHUFUsCiAgICAgRW5hYmxlZEF0UnVudGltZT1XZWJH
UFUsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorICAgIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUsCisgICAgSW50ZXJmYWNlTmFtZT1HUFVDb21tYW5kQnVmZmVyCiBdIGludGVyZmFj
ZSBXZWJHUFVDb21tYW5kQnVmZmVyIHsKLSAgICBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBiZWdp
blJlbmRlclBhc3MoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KLSAg
ICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZlcigKLSAgICAgICAgV2ViR1BVQnVmZmVyIHNyYywKLSAg
ICAgICAgdTY0IHNyY09mZnNldCwKLSAgICAgICAgV2ViR1BVQnVmZmVyIGRzdCwKLSAgICAgICAg
dTY0IGRzdE9mZnNldCwKLSAgICAgICAgdTY0IHNpemUpOwotCi0gICAgdm9pZCBjb3B5QnVmZmVy
VG9UZXh0dXJlKAotICAgICAgICBHUFVCdWZmZXJDb3B5VmlldyBzb3VyY2UsCi0gICAgICAgIEdQ
VVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAgICAgICAgR1BVRXh0ZW50M0QgY29weVNp
emUpOwotCi0gICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVyKAotICAgICAgICBHUFVUZXh0dXJl
Q29weVZpZXcgc291cmNlLAotICAgICAgICBHUFVCdWZmZXJDb3B5VmlldyBkZXN0aW5hdGlvbiwK
LSAgICAgICAgR1BVRXh0ZW50M0QgY29weVNpemUpOwotCi0gICAgdm9pZCBjb3B5VGV4dHVyZVRv
VGV4dHVyZSgKLSAgICAgICAgR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAgR1BV
VGV4dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6
ZSk7Ci0KLSAgICAvLyBOb3QgWWV0IEltcGxlbWVudGVkCi0gICAgLy8gV2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGJlZ2luQ29tcHV0ZVBhc3MoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGMxNjVhMzM1MDg4MjJhYWQzYjIwYTI0MTE4NTM1MGYxNzUyZDE2OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNw
cApAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2Rlci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVUmVuZGVy
UGFzc0VuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmgiCisjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK09wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3
PiBXZWJHUFVCdWZmZXJDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25z
dAoreworICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmJ1ZmZlcigpKSB7CisgICAgICAgIExP
RyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2RlcjogSW52YWxpZCBidWZmZXIgZm9yIGNvcHkh
Iik7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgLy8gRklYTUU6
IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICByZXR1cm4gR1BVQnVmZmVyQ29weVZpZXcg
eyBidWZmZXItPmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksICp0aGlzIH07Cit9CisKK09wdGlv
bmFsPEdQVVRleHR1cmVDb3B5Vmlldz4gV2ViR1BVVGV4dHVyZUNvcHlWaWV3Ojp0cnlDcmVhdGVH
UFVUZXh0dXJlQ29weVZpZXcoKSBjb25zdAoreworICAgIGlmICghdGV4dHVyZSB8fCAhdGV4dHVy
ZS0+dGV4dHVyZSgpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rl
cjogSW52YWxpZCB0ZXh0dXJlIGZvciBjb3B5ISIpOworICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIH0KKworICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgorCisg
ICAgcmV0dXJuIEdQVVRleHR1cmVDb3B5VmlldyB7IHRleHR1cmUtPnRleHR1cmUoKS5yZWxlYXNl
Tm9uTnVsbCgpLCAqdGhpcyB9OworfQorCitSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IFdlYkdQ
VUNvbW1hbmRFbmNvZGVyOjpjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVy
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRFbmNvZGVyKFdURk1v
dmUoYnVmZmVyKSkpOworfQorCitXZWJHUFVDb21tYW5kRW5jb2Rlcjo6V2ViR1BVQ29tbWFuZEVu
Y29kZXIoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorICAgIDogbV9jb21tYW5k
QnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKK3sKK30KKworUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyPiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5kZXJQYXNzKFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikg
eworICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmJlZ2luUmVuZGVy
UGFzcygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKKyAgICAgICAgcmV0dXJuIFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpjcmVhdGUoKnRoaXMsIG51bGxwdHIpOworICAgIH0KKyAgICBhdXRvIGdw
dURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
KCk7CisgICAgaWYgKCFncHVEZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gV2ViR1BVUmVuZGVy
UGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgbnVsbHB0cik7CisKKyAgICBhdXRvIGVuY29kZXIg
PSBHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6dHJ5Q3JlYXRlKG1ha2VSZWYoKm1fY29tbWFuZEJ1ZmZl
ciksIFdURk1vdmUoKmdwdURlc2NyaXB0b3IpKTsKKyAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKK3ZvaWQgV2Vi
R1BVQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBXZWJHUFVCdWZmZXIm
IHNyYywgdW5zaWduZWQgbG9uZyBzcmNPZmZzZXQsIGNvbnN0IFdlYkdQVUJ1ZmZlciYgZHN0LCB1
bnNpZ25lZCBsb25nIGRzdE9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQoreworICAgIGlmICgh
bV9jb21tYW5kQnVmZmVyKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5j
b2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmICghc3JjLmJ1ZmZlcigpIHx8ICFkc3QuYnVmZmVyKCkp
IHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9CdWZmZXIoKTogSW52YWxpZCBHUFVCdWZmZXIhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIG1fY29tbWFu
ZEJ1ZmZlci0+Y29weUJ1ZmZlclRvQnVmZmVyKG1ha2VSZWYoKnNyYy5idWZmZXIoKSksIHNyY09m
ZnNldCwgbWFrZVJlZigqZHN0LmJ1ZmZlcigpKSwgZHN0T2Zmc2V0LCBzaXplKTsKK30KKwordm9p
ZCBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXZWJHUFVC
dWZmZXJDb3B5VmlldyYgc3JjQnVmZmVyLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIGRz
dFRleHR1cmUsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQoreworICAgIGlmICghbV9jb21tYW5k
QnVmZmVyKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29w
eUJ1ZmZlclRvVGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBhdXRvIGdwdUJ1ZmZlclZpZXcgPSBzcmNCdWZmZXIudHJ5Q3JlYXRlR1BV
QnVmZmVyQ29weVZpZXcoKTsKKyAgICBhdXRvIGdwdVRleHR1cmVWaWV3ID0gZHN0VGV4dHVyZS50
cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKKworICAgIGlmICghZ3B1QnVmZmVyVmlldyB8
fCAhZ3B1VGV4dHVyZVZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBBZGQg
V2ViIEdQVSB2YWxpZGF0aW9uLgorCisgICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5QnVmZmVyVG9U
ZXh0dXJlKFdURk1vdmUoKmdwdUJ1ZmZlclZpZXcpLCBXVEZNb3ZlKCpncHVUZXh0dXJlVmlldyks
IHNpemUpOworfQorCit2b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVm
ZmVyKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgc3JjVGV4dHVyZSwgY29uc3QgV2ViR1BV
QnVmZmVyQ29weVZpZXcmIGRzdEJ1ZmZlciwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCit7Cisg
ICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNv
bW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcgPSBzcmNU
ZXh0dXJlLnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOworICAgIGF1dG8gZ3B1QnVmZmVy
VmlldyA9IGRzdEJ1ZmZlci50cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOworCisgICAgaWYg
KCFncHVUZXh0dXJlVmlldyB8fCAhZ3B1QnVmZmVyVmlldykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICBtX2NvbW1hbmRCdWZm
ZXItPmNvcHlUZXh0dXJlVG9CdWZmZXIoV1RGTW92ZSgqZ3B1VGV4dHVyZVZpZXcpLCBXVEZNb3Zl
KCpncHVCdWZmZXJWaWV3KSwgc2l6ZSk7Cit9CisKK3ZvaWQgV2ViR1BVQ29tbWFuZEVuY29kZXI6
OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgc3JjLCBj
b25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIGRzdCwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUp
Cit7CisgICAgaWYgKCFtX2NvbW1hbmRCdWZmZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldl
YkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJh
dGlvbiEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGdwdVNyY1ZpZXcgPSBz
cmMudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7CisgICAgYXV0byBncHVEc3RWaWV3ID0g
ZHN0LnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOworCisgICAgaWYgKCFncHVTcmNWaWV3
IHx8ICFncHVEc3RWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogQWRkIFdl
YiBHUFUgdmFsaWRhdGlvbi4KKworICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29weVRleHR1cmVUb1Rl
eHR1cmUoV1RGTW92ZSgqZ3B1U3JjVmlldyksIFdURk1vdmUoKmdwdURzdFZpZXcpLCBzaXplKTsK
K30KKyAgICAKK1JlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6
ZmluaXNoKCkKK3sKKyAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgeworICAgICAgICBMT0coV2Vi
R1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmZpbmlzaCgpOiBJbnZhbGlkIG9wZXJhdGlvbiEi
KTsKKyAgICAgICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShudWxscHRyKTsK
KyAgICB9CisgICAgLy8gUGFzc2VzIHRoZSByZWZlcmVuY2VkIEdQVUNvbW1hbmRCdWZmZXIgdG8g
dGhlIFdlYkdQVUNvbW1hbmRCdWZmZXIsIGludmFsaWRhdGluZyB0aGlzIFdlYkdQVUNvbW1hbmRF
bmNvZGVyLgorICAgIHJldHVybiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUobV9jb21tYW5k
QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRkNzFiYTFkMDJl
ZDFjZjdkNTkyOGFhY2M5NWZlZWMyN2MwNTVlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmgKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVm
ZmVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR1BVQnVmZmVyOworY2xhc3Mg
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI7CitjbGFzcyBXZWJHUFVUZXh0dXJlOworCitzdHJ1Y3Qg
R1BVRXh0ZW50M0Q7CitzdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CisKK3N0cnVj
dCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSB7CisgICAgT3B0
aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IHRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgY29u
c3Q7CisKKyAgICBSZWZQdHI8V2ViR1BVQnVmZmVyPiBidWZmZXI7Cit9OworCitzdHJ1Y3QgV2Vi
R1BVVGV4dHVyZUNvcHlWaWV3IDogR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7CisgICAgT3B0aW9u
YWw8R1BVVGV4dHVyZUNvcHlWaWV3PiB0cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKSBjb25z
dDsKKworICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiB0ZXh0dXJlOworfTsKKworY2xhc3MgV2Vi
R1BVQ29tbWFuZEVuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kRW5jb2Rl
cj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IGNyZWF0
ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7CisKKyAgICBSZWY8V2ViR1BVUmVuZGVyUGFz
c0VuY29kZXI+IGJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmKTsK
KyAgICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBXZWJHUFVCdWZmZXImLCB1bnNpZ25l
ZCBsb25nIHNyY09mZnNldCwgY29uc3QgV2ViR1BVQnVmZmVyJiwgdW5zaWduZWQgbG9uZyBkc3RP
ZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CisgICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJl
KGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3
JiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKKyAgICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoY29u
c3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiwgY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmLCBj
b25zdCBHUFVFeHRlbnQzRCYpOworICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1cmUoY29uc3Qg
V2ViR1BVVGV4dHVyZUNvcHlWaWV3JiwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiwgY29u
c3QgR1BVRXh0ZW50M0QmKTsKKyAgICBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gZmluaXNoKCk7
CisKK3ByaXZhdGU6CisgICAgV2ViR1BVQ29tbWFuZEVuY29kZXIoUmVmUHRyPEdQVUNvbW1hbmRC
dWZmZXI+JiYpOworCisgICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IG1fY29tbWFuZEJ1ZmZl
cjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21t
YW5kRW5jb2Rlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI5NmI0YWVhY2FkOGI3YTI5Y2MxYjhlZTc3NDkx
MDNiZjIxNjc5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
Ky8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9z
a2V0Y2gud2ViaWRsCisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Cit0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyB1NjQ7CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5h
YmxlZEF0UnVudGltZT1XZWJHUFUsCisgICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVCdWZmZXJDb3B5
VmlldworXSBkaWN0aW9uYXJ5IEdQVUJ1ZmZlckNvcHlWaWV3IHsKKyAgICBXZWJHUFVCdWZmZXIg
YnVmZmVyOworICAgIHU2NCBvZmZzZXQ7CisgICAgdTY0IHJvd1BpdGNoOworICAgIHUzMiBpbWFn
ZUhlaWdodDsKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUsCisgICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVUZXh0dXJlQ29weVZpZXcK
K10gZGljdGlvbmFyeSBHUFVUZXh0dXJlQ29weVZpZXcgeworICAgIFdlYkdQVVRleHR1cmUgdGV4
dHVyZTsKKyAgICB1MzIgbWlwTGV2ZWw7CisgICAgdTMyIGFycmF5TGF5ZXI7CisgICAgR1BVT3Jp
Z2luM0Qgb3JpZ2luOworfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFi
bGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAorICAg
IEludGVyZmFjZU5hbWU9R1BVQ29tbWFuZEVuY29kZXIKK10gaW50ZXJmYWNlIFdlYkdQVUNvbW1h
bmRFbmNvZGVyIHsKKyAgICBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBiZWdpblJlbmRlclBhc3Mo
V2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgZGVzY3JpcHRvcik7CisKKyAgICB2b2lkIGNvcHlC
dWZmZXJUb0J1ZmZlcigKKyAgICAgICAgV2ViR1BVQnVmZmVyIHNyYywKKyAgICAgICAgdTY0IHNy
Y09mZnNldCwKKyAgICAgICAgV2ViR1BVQnVmZmVyIGRzdCwKKyAgICAgICAgdTY0IGRzdE9mZnNl
dCwKKyAgICAgICAgdTY0IHNpemUpOworCisgICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKAor
ICAgICAgICBHUFVCdWZmZXJDb3B5VmlldyBzb3VyY2UsCisgICAgICAgIEdQVVRleHR1cmVDb3B5
VmlldyBkZXN0aW5hdGlvbiwKKyAgICAgICAgR1BVRXh0ZW50M0QgY29weVNpemUpOworCisgICAg
dm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVyKAorICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291
cmNlLAorICAgICAgICBHUFVCdWZmZXJDb3B5VmlldyBkZXN0aW5hdGlvbiwKKyAgICAgICAgR1BV
RXh0ZW50M0QgY29weVNpemUpOworCisgICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZSgKKyAg
ICAgICAgR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJjZSwKKyAgICAgICAgR1BVVGV4dHVyZUNvcHlW
aWV3IGRlc3RpbmF0aW9uLAorICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7CisKKyAgICBX
ZWJHUFVDb21tYW5kQnVmZmVyIGZpbmlzaCgpOworCisgICAgLy8gTm90IFlldCBJbXBsZW1lbnRl
ZAorICAgIC8vIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlciBiZWdpbkNvbXB1dGVQYXNzKCk7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKaW5k
ZXggM2Q2ODllY2IwM2ZkMGE5YmJiM2Q4YmJlYzcwZWIzMTdkZDc3MDM3Yi4uMzYxMTA5ZjBhNjU3
ODU0ZWZiNjY2ZWMzYzIzZGYzMmE1NmRhNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSAi
V2ViR1BVQmluZEdyb3VwTGF5b3V0LmgiCiAjaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgiCiAjaW5j
bHVkZSAiV2ViR1BVQnVmZmVyQmluZGluZy5oIgotI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZm
ZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2Rlci5oIgogI2luY2x1ZGUgIldlYkdQ
VVBpcGVsaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKQEAgLTEz
NywxMSArMTM3LDEwIEBAIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpj
cmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQCiAgICAgcmV0dXJuIFdlYkdQ
VVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoV1RGTW92ZShwaXBlbGluZSkpOwogfQogCi1SZWZQdHI8
V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kQnVmZmVyKCkg
Y29uc3QKK1JlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVDb21t
YW5kRW5jb2RlcigpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8gY29tbWFuZEJ1ZmZlciA9IG1fZGV2
aWNlLT5jcmVhdGVDb21tYW5kQnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBXZWJHUFVDb21tYW5k
QnVmZmVyOjpjcmVhdGUoY29tbWFuZEJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBhdXRvIGNvbW1hbmRCdWZmZXIgPSBtX2RldmljZS0+dHJ5Q3JlYXRl
Q29tbWFuZEJ1ZmZlcigpOworICAgIHJldHVybiBXZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y3JlYXRl
KFdURk1vdmUoY29tbWFuZEJ1ZmZlcikpOwogfQogCiBSZWY8V2ViR1BVU3dhcENoYWluPiBXZWJH
UFVEZXZpY2U6OmNyZWF0ZVN3YXBDaGFpbihjb25zdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaAppbmRleCA4NmQ1N2MzMjlhNDhhN2QzYjRkN2E3MDBjZTM1MmMwMTYwN2ZlNzE1
Li40MWZlYWUwY2E1N2Q3NWVmOTQ2NjhkODc4NTFlZGRkNzg1YjBhYTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaApAQCAtNDEsNyArNDEsNyBAQCBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV2ViR1BVQmluZEdyb3VwOwogY2xh
c3MgV2ViR1BVQmluZEdyb3VwTGF5b3V0OwogY2xhc3MgV2ViR1BVQnVmZmVyOwotY2xhc3MgV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjsKK2NsYXNzIFdlYkdQVUNvbW1hbmRFbmNvZGVyOwogY2xhc3MgV2Vi
R1BVUGlwZWxpbmVMYXlvdXQ7CiBjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZTsKIGNsYXNzIFdl
YkdQVVNhbXBsZXI7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR1BV
U2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvciYmKSBjb25zdDsKICAgICBSZWY8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRl
clBpcGVsaW5lKGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpIGNvbnN0Owog
Ci0gICAgUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBj
b25zdDsKKyAgICBSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IGNyZWF0ZUNvbW1hbmRFbmNvZGVy
KCkgY29uc3Q7CiAKICAgICBSZWY8V2ViR1BVU3dhcENoYWluPiBjcmVhdGVTd2FwQ2hhaW4oY29u
c3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAppbmRleCBmNDYzNWEzNDE4MTFjYzU4
ODllM2FlY2QwMGU2N2NhMmFlMjMyZTJlLi40YWJhYTE4NmVjY2ZkN2FlNmU2OGQ5YTU2YzE0MTRi
ODIxY2FhODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZS5pZGwKQEAgLTU0LDggKzU0LDggQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIEdQVVRleHR1
cmVVc2FnZUZsYWdzOwogICAgIFdlYkdQVVNoYWRlck1vZHVsZSBjcmVhdGVTaGFkZXJNb2R1bGUo
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVSZW5k
ZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgZGVzY3JpcHRvcik7CiAKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBXZWJHUFVDb21t
YW5kQnVmZmVyRGVzY3JpcHRvciBpcyBhbiBlbXB0eSBkaWN0aW9uYXJ5LgotICAgIFdlYkdQVUNv
bW1hbmRCdWZmZXIgY3JlYXRlQ29tbWFuZEJ1ZmZlcigvKldlYkdQVUNvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yIGRlc2NyaXB0b3IqLyk7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgR1BVQ29tbWFu
ZEVuY29kZXJEZXNjcmlwdG9yIGlzIGFuIGVtcHR5IGRpY3Rpb25hcnkuCisgICAgV2ViR1BVQ29t
bWFuZEVuY29kZXIgY3JlYXRlQ29tbWFuZEVuY29kZXIoLypHUFVDb21tYW5kRW5jb2RlckRlc2Ny
aXB0b3IgZGVzY3JpcHRvciovKTsKIAogICAgIFdlYkdQVVN3YXBDaGFpbiBjcmVhdGVTd2FwQ2hh
aW4oV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXIuY3BwCmluZGV4IDFlYmJhOTIxOWUyZDZlMGY4ZTQ3MWNlN2Y0N2Y3ODBiYzEz
YWJhNDMuLjJjZGVjYTdkNzA2MWJiNjAwMWI2NWM2YWE5YTM3YzRkZGZkMjMwODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKQEAgLTM1LDM5ICszNSw1MCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpXZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yKQorV2Vi
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
KFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4mJiBjcmVhdG9yKQogICAgIDogbV9jb21tYW5kQnVm
ZmVyKFdURk1vdmUoY3JlYXRvcikpCiB7CiB9CiAKLVJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBX
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCit2b2lkIFdlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKIHsKLSAgICBwYXNzRW5jb2RlcigpLmVuZFBh
c3MoKTsKLSAgICByZXR1cm4gbV9jb21tYW5kQnVmZmVyLmNvcHlSZWYoKTsKKyAgICBpZiAoIXBh
c3NFbmNvZGVyKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyOjplbmRQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHBhc3NFbmNvZGVyKCktPmVuZFBhc3MoKTsKIH0KIAogdm9pZCBXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKHVuc2lnbmVkIGluZGV4LCBXZWJH
UFVCaW5kR3JvdXAmIGJpbmRHcm91cCkgY29uc3QKIHsKKyAgICBpZiAoIXBhc3NFbmNvZGVyKCkp
IHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRC
aW5kR3JvdXAoKTogSW52YWxpZCBvcGVyYXRpb24hIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgYmluZCBncm91cHMgc3VwcG9ydGVkIGluIFdlYiBH
UFUuCiAgICAgaWYgKGluZGV4ID49IDQpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52YWxpZCBpbmRleCEiKTsK
KyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5k
R3JvdXAoKTogSW52YWxpZCBpbmRleCEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAoIWJpbmRHcm91cC5iaW5kR3JvdXAoKSkgewotICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCgpOiBJbnZhbGlkIFdlYkdQVUJp
bmRHcm91cCEiKTsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyOjpzZXRCaW5kR3JvdXAoKTogSW52YWxpZCBXZWJHUFVCaW5kR3JvdXAhIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgLy8gRklYTUU6IEFueSB2YWxpZGF0aW9uIChlLmcuIGluZGV4
IGR1cGxpY2F0ZXMsIG5vdCBpbiBwaXBlbGluZSBsYXlvdXQpLgotICAgIHBhc3NFbmNvZGVyKCku
c2V0QmluZEdyb3VwKGluZGV4LCAqYmluZEdyb3VwLmJpbmRHcm91cCgpKTsKKyAgICBwYXNzRW5j
b2RlcigpLT5zZXRCaW5kR3JvdXAoaW5kZXgsICpiaW5kR3JvdXAuYmluZEdyb3VwKCkpOwogfQog
CiB2b2lkIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShjb25zdCBX
ZWJHUFVSZW5kZXJQaXBlbGluZSYgcGlwZWxpbmUpCiB7CisgICAgaWYgKCFwYXNzRW5jb2Rlcigp
KSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0
UGlwZWxpbmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgaWYgKCFwaXBlbGluZS5yZW5kZXJQaXBlbGluZSgpKSB7CiAgICAgICAgIExPRyhXZWJH
UFUsICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUoKTogSW52YWxpZCBw
aXBlbGluZSEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwYXNzRW5jb2RlcigpLnNl
dFBpcGVsaW5lKG1ha2VSZWYoKnBpcGVsaW5lLnJlbmRlclBpcGVsaW5lKCkpKTsKKyAgICBwYXNz
RW5jb2RlcigpLT5zZXRQaXBlbGluZShtYWtlUmVmKCpwaXBlbGluZS5yZW5kZXJQaXBlbGluZSgp
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5o
CmluZGV4IDU0MDA0MTQ4MTZhMGE1NTcyYzkzZTNlOWMxZjk0NGU0Nzc3MWYzODMuLjM1NmVjYjM0
NGVjNzE1YWNjNTQzNzRhZDI2MTc5YjljZGNiMTAwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUg
IldlYkdQVUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2Rlci5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQwLDE3ICs0MCwxNyBAQCBjbGFzcyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbgogcHVibGljOgogICAgIHZp
cnR1YWwgfldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKCkgPSBkZWZhdWx0OwogCi0gICAg
UmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGVuZFBhc3MoKTsKKyAgICB2b2lkIGVuZFBhc3MoKTsK
ICAgICB2b2lkIHNldEJpbmRHcm91cCh1bnNpZ25lZCwgV2ViR1BVQmluZEdyb3VwJikgY29uc3Q7
CiAgICAgdm9pZCBzZXRQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZSYpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoUmVmPFdlYkdQVUNv
bW1hbmRCdWZmZXI+JiYpOworICAgIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFJlZjxX
ZWJHUFVDb21tYW5kRW5jb2Rlcj4mJik7CiAKLSAgICB2aXJ0dWFsIEdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyJiBwYXNzRW5jb2RlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNzRW5jb2RlcigpIGNvbnN0ID0gMDsKIAogcHJpdmF0ZToK
LSAgICBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOworICAgIFJlZjxX
ZWJHUFVDb21tYW5kRW5jb2Rlcj4gbV9jb21tYW5kQnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCmluZGV4IDNhY2Q2Mzk0NTY4
M2M0ZWVkNjgyZmU1MjhhMzFkMmE4YzQ3ZGQ0YjQuLjU3NzE4YzI4Yzg0NGVmM2ZlNjc0NjZmYjkw
NTBlNzI0YTU4MmQwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKQEAgLTMxLDcg
KzMxLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKICAgICBFbmFibGVkQXRSdW50aW1l
PVdlYkdQVSwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgogXSBpbnRlcmZhY2UgV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIgewotICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIgZW5kUGFzcygp
OworICAgIHZvaWQgZW5kUGFzcygpOwogICAgIHZvaWQgc2V0QmluZEdyb3VwKHUzMiBpbmRleCwg
V2ViR1BVQmluZEdyb3VwIGJpbmRHcm91cC8qLCBvcHRpb25hbCBzZXF1ZW5jZTx1MzI+IGR5bmFt
aWNPZmZzZXRzKi8pOwogICAgIHZvaWQgc2V0UGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZWxpbmUg
cGlwZWxpbmUpOyAvLyBGSVhNRTogU3VwcG9ydCBXZWJHUFVDb21wdXRlUGlwZWxpbmVzLgogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcAppbmRleCBi
NzVkZDc1MmQ5MWVhNThkNTEwMzI3YmNkNTMzNzQ5ZDhiYzdjNDE0Li5iNGY4M2U0YWYxYTRjNjcy
MzExZWZkYzBhYjQ0YWQ1MTM3NDE5MjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUXVldWUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHUFVD
b21tYW5kQnVmZmVyLmgiCiAjaW5jbHVkZSAiR1BVUXVldWUuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00NCwxMSArNDUsMTkgQEAgV2ViR1BVUXVldWU6OldlYkdQVVF1ZXVlKFJlZjxHUFVR
dWV1ZT4mJiBxdWV1ZSkKIHsKIH0KIAotdm9pZCBXZWJHUFVRdWV1ZTo6c3VibWl0KFZlY3RvcjxS
ZWZQdHI8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4+JiYgYnVmZmVycykKK3ZvaWQgV2ViR1BVUXVldWU6
OnN1Ym1pdChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+PiYgYnVmZmVy
cykKIHsKLSAgICBhdXRvIGdwdUJ1ZmZlcnMgPSBidWZmZXJzLm1hcChbXSAoYXV0byYgYnVmZmVy
KSAtPiBSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4gewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb21t
YW5kQnVmZmVyKCk7Ci0gICAgfSk7CisgICAgVmVjdG9yPFJlZjxHUFVDb21tYW5kQnVmZmVyPj4g
Z3B1QnVmZmVyczsKKyAgICBncHVCdWZmZXJzLnJlc2VydmVDYXBhY2l0eShidWZmZXJzLnNpemUo
KSk7CisgICAgCisgICAgZm9yIChhdXRvJiBidWZmZXIgOiBidWZmZXJzKSB7CisgICAgICAgIGlm
ICghYnVmZmVyIHx8ICFidWZmZXItPmNvbW1hbmRCdWZmZXIoKSkgeworICAgICAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVF1ZXVlOjpzdWJtaXQoKTogSW52YWxpZCBHUFVDb21tYW5kQnVmZmVyIGlu
IGxpc3QhIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ3B1QnVm
ZmVycy51bmNoZWNrZWRBcHBlbmQobWFrZVJlZigqYnVmZmVyLT5jb21tYW5kQnVmZmVyKCkpKTsK
KyAgICB9CisKICAgICBtX3F1ZXVlLT5zdWJtaXQoV1RGTW92ZShncHVCdWZmZXJzKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oCmluZGV4IDQ0NmVk
ZjhlOTU4NmI5ZTk1YjI0NDRiNjAxZDEwZTRiZWJjNGU5MzAuLmYwYTc2ZjgxZGZjYTYxYzhiMWUw
ZDgyNTdhM2U2ODgyNzU1MzFiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUXVldWUuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBXZWJHUFVRdWV1ZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYkdQVVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxX
ZWJHUFVRdWV1ZT4gY3JlYXRlKFJlZlB0cjxHUFVRdWV1ZT4mJik7CiAKLSAgICB2b2lkIHN1Ym1p
dChWZWN0b3I8UmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHN1Ym1p
dChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+PiYpOwogCiAgICAgU3Ry
aW5nIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZS0+bGFiZWwoKTsgfQogICAgIHZvaWQg
c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkgeyBtX3F1ZXVlLT5zZXRMYWJlbChsYWJlbCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbAppbmRl
eCAyZjZhNzA5ZjkwYTk3NjQ0NGQwZjA3NmE5ZjRiNGU3Mjg2OTA5MzI0Li41YTFhMTVhZWRiMmVk
Mzk2NDZlMTgxOWIwMmQ4NWNmNmJmMzQyMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUXVldWUuaWRsCkBAIC0zNCw0ICszNCw0IEBACiAgICAgLy8gRklYTUU6
IFVuaW1wbGVtZW50ZWQuCiAgICAgLy8gdm9pZCBzaWduYWwoV2ViR1BVRmVuY2UgZmVuY2UsIHU2
NCBzaWduYWxWYWx1ZSk7CiAgICAgLy8gdm9pZCB3YWl0KFdlYkdQVUZlbmNlIGZlbmNlLCB1NjQg
dmFsdWVUb1dhaXQpOwotfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuY3BwCmluZGV4IDk4ODMyOWIzZTdjYzBmMjgxYWRlNmRhMGUzYjk5NjJjYjcyNzdjM2Qu
LmZmNThhYTQxZTNmZTRlNDVjNWZjNDk5MjMxMDUyZWQwYzgwYzFkY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5jcHAKQEAgLTM2LDEyICszNiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShS
ZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjb21tYW5kQnVmZmVyLCBSZWY8R1BVUmVuZGVyUGFz
c0VuY29kZXI+JiYgZW5jb2RlcikKK1JlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+JiYgY29t
bWFuZEJ1ZmZlciwgUmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoV1RGTW92ZShj
b21tYW5kQnVmZmVyKSwgV1RGTW92ZShlbmNvZGVyKSkpOwogfQogCi1XZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlcjo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+
JiYgY3JlYXRvciwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCitXZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPFdlYkdQVUNvbW1h
bmRFbmNvZGVyPiYmIGNyZWF0b3IsIFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNv
ZGVyKQogICAgIDogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoV1RGTW92ZShjcmVhdG9y
KSkKICAgICAsIG1fcGFzc0VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkKIHsKQEAgLTUyLDExICs1
MiwxNCBAQCB2b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKHVu
c2lnbmVkIGxvbmcgc3RhcnRTbG90LCBWZWN0b3I8UgogI2lmICFMT0dfRElTQUJMRUQKICAgICBj
b25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNl
dFZlcnRleEJ1ZmZlcnMoKSI7CiAjZW5kaWYKKyAgICBpZiAoIW1fcGFzc0VuY29kZXIpIHsKKyAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIG9wZXJhdGlvbiEiLCBmdW5jdGlvbk5hbWUp
OworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGlmIChidWZmZXJzLmlzRW1wdHkoKSB8fCBi
dWZmZXJzLnNpemUoKSAhPSBvZmZzZXRzLnNpemUoKSkgewogICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IEludmFsaWQgbnVtYmVyIG9mIGJ1ZmZlcnMgb3Igb2Zmc2V0cyEiLCBmdW5jdGlvbk5hbWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotCiAgICAgaWYgKHN0YXJ0U2xvdCArIGJ1ZmZlcnMu
c2l6ZSgpID4gbWF4VmVydGV4QnVmZmVycykgewogICAgICAgICBMT0coV2ViR1BVLCAiJXM6IElu
dmFsaWQgc3RhcnRTbG90ICVsdSBmb3IgJWx1IGJ1ZmZlcnMhIiwgZnVuY3Rpb25OYW1lLCBzdGFy
dFNsb3QsIGJ1ZmZlcnMuc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODQsMTEgKzg3LDE1
IEBAIHZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnNldFZlcnRleEJ1ZmZlcnModW5zaWdu
ZWQgbG9uZyBzdGFydFNsb3QsIFZlY3RvcjxSCiAKIHZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXI6OmRyYXcodW5zaWduZWQgbG9uZyB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQgbG9uZyBpbnN0YW5j
ZUNvdW50LCB1bnNpZ25lZCBsb25nIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBsb25nIGZpcnN0SW5z
dGFuY2UpCiB7CisgICAgaWYgKCFtX3Bhc3NFbmNvZGVyKSB7CisgICAgICAgIExPRyhXZWJHUFUs
ICJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdygpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KICAgICAvLyBGSVhNRTogV2hhdCBraW5kIG9mIHZhbGlkYXRp
b24gZG8gd2UgbmVlZCB0byBoYW5kbGUgaGVyZT8KICAgICBtX3Bhc3NFbmNvZGVyLT5kcmF3KHZl
cnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmlyc3RJbnN0YW5jZSk7CiB9
CiAKLUdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyJiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6
cGFzc0VuY29kZXIoKSBjb25zdAorR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIFdlYkdQVVJl
bmRlclBhc3NFbmNvZGVyOjpwYXNzRW5jb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFz
c0VuY29kZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAppbmRleCBkMGRlMGQ3ZGY0YzU1YmQ1MTQy
NDBkODM3NDBiODhiNWEzNGE5MzIwLi40NzkyNzljYTgxZGFiNzY1OTVmZTY2ZGMxNzhiMGQ3NDU1
OTVlNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKQEAgLTQwLDE3ICs0MCwxNyBAQCBjbGFzcyBXZWJHUFVC
dWZmZXI7CiAKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGZpbmFsIDogcHVibGljIFdl
YkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYs
IFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4mJiwgUmVmUHRy
PEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmKTsKIAogICAgIHZvaWQgc2V0VmVydGV4QnVmZmVycyh1
bnNpZ25lZCBsb25nLCBWZWN0b3I8UmVmUHRyPFdlYkdQVUJ1ZmZlcj4+JiYsIFZlY3Rvcjx1bnNp
Z25lZCBsb25nIGxvbmc+JiYpOwogICAgIHZvaWQgZHJhdyh1bnNpZ25lZCBsb25nIHZlcnRleENv
dW50LCB1bnNpZ25lZCBsb25nIGluc3RhbmNlQ291bnQsIHVuc2lnbmVkIGxvbmcgZmlyc3RWZXJ0
ZXgsIHVuc2lnbmVkIGxvbmcgZmlyc3RJbnN0YW5jZSk7CiAKIHByaXZhdGU6Ci0gICAgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5k
ZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIoUmVmPFdlYkdQ
VUNvbW1hbmRFbmNvZGVyPiYmLCBSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOwogCi0g
ICAgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXImIHBhc3NFbmNvZGVyKCkgY29uc3QgZmluYWw7
CisgICAgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIqIHBhc3NFbmNvZGVyKCkgY29uc3QgZmlu
YWw7CiAKLSAgICBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+IG1fcGFzc0VuY29kZXI7CisgICAg
UmVmUHRyPEdQVVJlbmRlclBhc3NFbmNvZGVyPiBtX3Bhc3NFbmNvZGVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVN3YXBDaGFpbi5jcHAKaW5kZXggZGI2MWQ0N2NmNWRiNjVkNDJlYTdlYzQzMTJiNmY0MzQ2
NmMzOTBhMy4uMzYyNTlkN2Y2ZTEzYmQ2MjYwNjIwODA3N2FlYzk3ZTQzM2UwMjM5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCkBA
IC01MCw3ICs1MCw3IEBAIFJlZjxXZWJHUFVUZXh0dXJlPiBXZWJHUFVTd2FwQ2hhaW46OmdldEN1
cnJlbnRUZXh0dXJlKCkKICAgICAgICAgcmV0dXJuIFdlYkdQVVRleHR1cmU6OmNyZWF0ZShudWxs
cHRyKTsKICAgICB9CiAgICAgbV9jdXJyZW50VGV4dHVyZSA9IFdlYkdQVVRleHR1cmU6OmNyZWF0
ZShtX3N3YXBDaGFpbi0+dHJ5R2V0Q3VycmVudFRleHR1cmUoKSk7Ci0gICAgcmV0dXJuIG1fY3Vy
cmVudFRleHR1cmUucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4gbWFrZVJlZigqbV9jdXJy
ZW50VGV4dHVyZSk7CiB9CiAKIHZvaWQgV2ViR1BVU3dhcENoYWluOjpkZXN0cm95KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggMTQzZGJmMjhiNGY3ZDBmMTUzYzEwMGFlMzQ4NzAyNmJmM2NhMGM1NS4uY2I3
MjZlYmU4NGQ2YjU0MDBhYmNlNWY1NzY1NGY3NmJlN2VkNzdhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTM1MiwxMCArMzUyLDExIEBAIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAK
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91
cC5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwCitNb2R1
bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEVuY29kZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAogTW9k
dWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwTGF5b3V0LmNwcAogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQnVmZmVyLmNwcAotTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVl
LmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuY3BwCkBAIC0zMzM2LDYg
KzMzMzcsNyBAQCBKU1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAKIEpTV2ViR1BVQnVmZmVyLmNw
cAogSlNXZWJHUFVCdWZmZXJCaW5kaW5nLmNwcAogSlNXZWJHUFVDb21tYW5kQnVmZmVyLmNwcAor
SlNXZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKIEpTV2ViR1BVRGV2aWNlLmNwcAogSlNXZWJHUFVR
dWV1ZS5jcHAKIEpTV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMDU4MDRm
YjgyMjg2MWU2ZmVlZDAxMjBjN2M5MmIwYWEwMzdhYzlhLi44ZmFjNDYzMmQyZDYzZGVhNjg4OTgx
MmUxYmRkZWZjYjkzNmU4ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDA3Miw2ICsxNDA3Miw5IEBACiAJCUQwNUE5OUU2
MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
UGlwZWxpbmVMYXlvdXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQy
NzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0
QmxvY2tDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXRC
bG9ja0NvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA1REQ2REQyMjM4
ODQwNjAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUQwNURENkRFMjIzODg0MDcwMDk3QTgzNCAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRDA1REQ2REYyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNjBEODg3MjE4MjY5NzAwMDMzOTMxOCAvKiBXZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2MTVGQ0MyMTdG
RTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVTaGFkZXJNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MTgxLDkg
KzE0MTg0LDkgQEAKIAkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFp
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDBERThGQjgyMjJFMDlFMjAwODgyNTUwIC8qIEdQVVNoYWRlclN0YWdlQml0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVVNoYWRlclN0YWdlQml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwREU4RkI5MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVTaGFkZXJTdGFnZUJpdC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gR1BVU2hhZGVyU3RhZ2VCaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMEVBQ0Y3NjIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUQwRUFDRjc3MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y3ODIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29t
bWFuZEJ1ZmZlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUQwRUFDRjc2MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21t
YW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21tYW5kRW5jb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEVBQ0Y3NzIxOTM3MjI4MDAwRkE3NUMgLyogV2Vi
R1BVQ29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQ29tbWFuZEVu
Y29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEVBQ0Y3ODIxOTM3MjI4
MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRF
bmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFQUNGODQyMTkzQjAy
RTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVVGV4dHVy
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVBQ0Y4NTIxOTNCMDJFMDAwRkE3
NUMgLyogV2ViR1BVVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVUZXh0dXJl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFQUNGODYyMTkzQjAyRTAwMEZB
NzVDIC8qIFdlYkdQVVRleHR1cmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYxNTQsOSArMjYxNTcsMTIgQEAKIAkJCQlEMEQ4NjQ4
RTIxQjcwNjc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmlkbCAqLywKIAkJCQlEMEJFMTA0QzIx
RTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGluZy5oICovLAogCQkJCUQwQkUxMDRE
MjFFNjhGMTUwMEU0MkE4OSAvKiBXZWJHUFVCdWZmZXJCaW5kaW5nLmlkbCAqLywKLQkJCQlEMEVB
Q0Y3NzIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8sCi0JCQkJ
RDBFQUNGNzYyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaCAqLywKLQkJ
CQlEMEVBQ0Y3ODIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgKi8s
CisJCQkJRDA1REQ2REQyMjM4ODQwNjAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuY3Bw
ICovLAorCQkJCUQwNURENkRFMjIzODg0MDcwMDk3QTgzNCAvKiBXZWJHUFVDb21tYW5kQnVmZmVy
LmggKi8sCisJCQkJRDA1REQ2REYyMjM4ODQwNzAwOTdBODM0IC8qIFdlYkdQVUNvbW1hbmRCdWZm
ZXIuaWRsICovLAorCQkJCUQwRUFDRjc3MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5k
RW5jb2Rlci5jcHAgKi8sCisJCQkJRDBFQUNGNzYyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNv
bW1hbmRFbmNvZGVyLmggKi8sCisJCQkJRDBFQUNGNzgyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQ
VUNvbW1hbmRFbmNvZGVyLmlkbCAqLywKIAkJCQlEMDBGNTk1MzIxNzAxRDhDMDAwRDcxREIgLyog
V2ViR1BVRGV2aWNlLmNwcCAqLywKIAkJCQlEMDBGNTk1MjIxNzAxRDhDMDAwRDcxREIgLyogV2Vi
R1BVRGV2aWNlLmggKi8sCiAJCQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURl
dmljZS5pZGwgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmgKaW5kZXggZTZmMTA5YzZhNDg3NzA4ZDJhODBkNjdiYTkwMzUwODQxNWViMjMx
YS4uYzM0OTU5MzhiZTNhOTQyYzI2Y2M5ZTJkYTIwZWNkMzliYjkyZjY3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtODQsNiAr
ODQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oR1BVQnVmZmVyVXNhZ2UpIFwK
ICAgICBtYWNybyhHUFVDYW52YXNDb250ZXh0KSBcCiAgICAgbWFjcm8oR1BVU2hhZGVyTW9kdWxl
KSBcCisgICAgbWFjcm8oR1BVQ29tbWFuZEJ1ZmZlcikgXAorICAgIG1hY3JvKEdQVUNvbW1hbmRF
bmNvZGVyKSBcCiAgICAgbWFjcm8oR1BVU2hhZGVyU3RhZ2VCaXQpIFwKICAgICBtYWNybyhHUFVT
d2FwQ2hhaW4pIFwKICAgICBtYWNybyhHUFVUZXh0dXJlVXNhZ2UpIFwKQEAgLTIwMSw3ICsyMDMs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oV2ViR1BVQmluZEdyb3VwKSBcCiAg
ICAgbWFjcm8oV2ViR1BVQmluZEdyb3VwTGF5b3V0KSBcCiAgICAgbWFjcm8oV2ViR1BVQnVmZmVy
KSBcCi0gICAgbWFjcm8oV2ViR1BVQ29tbWFuZEJ1ZmZlcikgXAogICAgIG1hY3JvKFdlYkdQVURl
dmljZSkgXAogICAgIG1hY3JvKFdlYkdQVUluZGV4Rm9ybWF0KSBcCiAgICAgbWFjcm8oV2ViR1BV
SW5wdXRTdGVwTW9kZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKaW5kZXggM2E5MjhiYjBhZGUxNmZkMWJlMzY2
MmRjMTA1Y2E1YWJiYmZhNDllZC4uY2JiMjJiOTFmNTliNmVlZDBhNDk5NTZkZjdhOTdlMTljOTRk
ZTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUNvbW1hbmRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoV0VC
R1BVKQogCisjaW5jbHVkZSAiR1BVQnVmZmVyLmgiCiAjaW5jbHVkZSAiR1BVT3JpZ2luM0QuaCIK
KyNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzgs
OSArNDAsNyBAQCBPQkpDX1BST1RPQ09MKE1UTENvbW1hbmRCdWZmZXIpOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEdQVUJ1ZmZlcjsKIGNsYXNzIEdQVURldmljZTsKLWNsYXNzIEdQ
VVRleHR1cmU7CiAKIHN0cnVjdCBHUFVFeHRlbnQzRDsKIApAQCAtODEsNyArODEsNyBAQCBzdHJ1
Y3QgR1BVVGV4dHVyZUNvcHlWaWV3IGZpbmFsIDogR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7CiAK
IGNsYXNzIEdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb21tYW5kQnVm
ZmVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGUoR1BVRGV2aWNlJik7CisgICAgc3RhdGljIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiB0cnlD
cmVhdGUoY29uc3QgR1BVRGV2aWNlJik7CiAKICAgICBQbGF0Zm9ybUNvbW1hbmRCdWZmZXIqIHBs
YXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Db21tYW5kQnVm
ZmVyLmdldCgpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZjxHUFVCdWZmZXI+PiYgdXNlZEJ1ZmZl
cnMoKSBjb25zdCB7IHJldHVybiBtX3VzZWRCdWZmZXJzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCmluZGV4IDhiNzM1MTgwNGE1
YWQ1YjE1MzMyZGJjYmMxYWY5NzRhMGEyZTc2MTIuLjliZGY2NjZjZDdmMzAyZjcwYjRmM2MxOGIz
MWJjZTk2N2YyZjQ2NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVEZXZpY2UuY3BwCkBAIC04Myw5ICs4Myw5IEBAIFJlZlB0cjxHUFVSZW5kZXJQ
aXBlbGluZT4gR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyCiAgICAgcmV0dXJuIEdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIFdURk1v
dmUoZGVzY3JpcHRvcikpOwogfQogCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVRGV2aWNl
OjpjcmVhdGVDb21tYW5kQnVmZmVyKCkKK1JlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBHUFVEZXZp
Y2U6OnRyeUNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdAogewotICAgIHJldHVybiBHUFVDb21t
YW5kQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBHUFVDb21tYW5kQnVmZmVyOjp0
cnlDcmVhdGUoKnRoaXMpOwogfQogCiBSZWZQdHI8R1BVU3dhcENoYWluPiBHUFVEZXZpY2U6OnRy
eUNyZWF0ZVN3YXBDaGFpbihjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKaW5kZXggNWNmNGViN2YyNTcyZjc2M2M4MDcw
NWI4MGY4MDliZmJhYmUxNDYxMi4uOGZlOTY5MzQyMWFiMmJjMGU1YmQ2OWZhMzVkNDk2NjNmNTQ3
MWE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVE
ZXZpY2UuaApAQCAtMzcsOSArMzcsNiBAQCBPQkpDX1BST1RPQ09MKE1UTERldmljZSk7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgUGxhdGZvcm1EZXZpY2UgPSBNVExEZXZpY2U7Ci11
c2luZyBQbGF0Zm9ybURldmljZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTERldmljZT47Ci0KIGNs
YXNzIEdQVUJpbmRHcm91cExheW91dDsKIGNsYXNzIEdQVUJ1ZmZlcjsKIGNsYXNzIEdQVUNvbW1h
bmRCdWZmZXI7CkBAIC01OCw2ICs1NSw5IEBAIHN0cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnM7CiBzdHJ1Y3QgR1BVU2FtcGxlckRlc2NyaXB0b3I7CiBzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvcjsKIHN0cnVjdCBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKKyAgICAKK3VzaW5nIFBs
YXRmb3JtRGV2aWNlID0gTVRMRGV2aWNlOwordXNpbmcgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciA9
IFJldGFpblB0cjxNVExEZXZpY2U+OwogCiBjbGFzcyBHUFVEZXZpY2UgOiBwdWJsaWMgUmVmQ291
bnRlZDxHUFVEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8R1BVRGV2aWNlPiB7CiBwdWJs
aWM6CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8R1BVU2hhZGVyTW9kdWxl
PiBjcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmKSBjb25zdDsK
ICAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciYmKSBjb25zdDsKIAotICAgIFJlZlB0cjxHUFVDb21tYW5k
QnVmZmVyPiBjcmVhdGVDb21tYW5kQnVmZmVyKCk7CisgICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZm
ZXI+IHRyeUNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25zdDsKIAogICAgIFJlZlB0cjxHUFVTd2Fw
Q2hhaW4+IHRyeUNyZWF0ZVN3YXBDaGFpbihjb25zdCBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVm
ZmVyTWV0YWwubW0KaW5kZXggYzkyYzU0NGQxNTFhYWFlOTRiNzFlZGY4NjAyNzcwYjU1Y2I1N2Iw
Ni4uZTRjNDIzOTc5YTMxZjA5NDVhZjJmMjAwZmIwMmQ1ZDBkZGI1OTViZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZm
ZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCkBAIC0yOCwxMSArMjgsOSBAQAogCiAjaWYgRU5B
QkxFKFdFQkdQVSkKIAotI2ltcG9ydCAiR1BVQnVmZmVyLmgiCiAjaW1wb3J0ICJHUFVEZXZpY2Uu
aCIKICNpbXBvcnQgIkdQVUV4dGVudDNELmgiCiAjaW1wb3J0ICJHUFVRdWV1ZS5oIgotI2ltcG9y
dCAiR1BVVGV4dHVyZS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogCiAjaW1wb3J0IDxNZXRhbC9N
ZXRhbC5oPgpAQCAtNDEsNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxHUFVDb21tYW5kQnVmZmVyPiBHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoR1BVRGV2aWNlJiBk
ZXZpY2UpCitSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQogewogICAgIGlmICghZGV2aWNlLnBsYXRmb3Jt
RGV2aWNlKCkpIHsKICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0
ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMWE3ODkyYjM3MmI2YzA2ZmI4MTQ2
MmFhNGJjZTZkNTIxZTBlNWE4Li4xYzkxOTVjMjMyYTZjYTdjN2U5NTZmODk3ZDM5N2UzYzA2NGEw
ZWExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMDMtMTMgIEp1c3RpbiBGYW4gIDxqdXN0
aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEdQVV0gVXBkYXRlcyB0byBHUFVDb21t
YW5kQnVmZmVyIGZvciBuZXcgR1BVQ29tbWFuZFF1ZXVlIGNvbmNlcHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTA4MworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg0MjM1OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgor
CisgICAgICAgIFVwZGF0ZSBleGlzdGluZyBXZWIgR1BVIHRlc3RzIGZvciBHUFVDb21tYW5kRW5j
b2RlciBhbmQgbmV3IEdQVUNvbW1hbmRCdWZmZXIuCisKKyAgICAgICAgKiB3ZWJncHUvYmxpdC1j
b21tYW5kcy5odG1sOgorICAgICAgICAqIHdlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFj
ZXMuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvYnVmZmVyLXJlc291cmNlLXRyaWFuZ2xlcy5odG1s
OgorICAgICAgICAqIHdlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvZGVwdGgt
ZW5hYmxlZC10cmlhbmdsZS1zdHJpcC5odG1sOgorICAgICAgICAqIHdlYmdwdS9qcy93ZWJncHUt
ZnVuY3Rpb25zLmpzOgorICAgICAgICAoYmVnaW5CYXNpY1JlbmRlclBhc3MpOgorICAgICAgICAq
IHdlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sOgorICAgICAgICAqIHdlYmdwdS9z
aW1wbGUtdHJpYW5nbGUtc3RyaXAuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvdGV4dHVyZS10cmlh
bmdsZS1zdHJpcC5odG1sOgorICAgICAgICAqIHdlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xl
LXN0cmlwLmh0bWw6CisKIDIwMTktMDMtMTIgIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2ViIEdQVV0gVXBkYXRlIEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciBhbmQgYWRkIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yLmZvcm1hdApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS9ibGl0LWNvbW1hbmRzLmh0bWwKaW5kZXggMTQ5M2Y1YjA0ZDhlNDg5YWY1ZTE3NWJjZTgwMGNl
MTFhMDI1M2Y4Mi4uZDcxOTQ3ZWY4ZDE0MmEwN2ZjNDU3NWZkOGE5ZDdiMTFjOTZlODVmNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sCkBAIC04NSwxMiArODUsMTMgQEAgYXN5
bmMgZnVuY3Rpb24gdGVzdChpbWFnZSkgewogICAgICAgICBpbWFnZUhlaWdodDogMAogICAgIH07
CiAKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRCdWZmZXIo
KTsKLSAgICBjb21tYW5kQnVmZmVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXJBLCAwLCBidWZm
ZXJCLCAwLCBpbWFnZURhdGEuZGF0YS5ieXRlTGVuZ3RoKTsKLSAgICBjb21tYW5kQnVmZmVyLmNv
cHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4dHVyZVNpemUp
OwotICAgIGNvbW1hbmRCdWZmZXIuY29weVRleHR1cmVUb1RleHR1cmUodGV4dHVyZVZpZXdBLCB0
ZXh0dXJlVmlld0IsIHRleHR1cmVTaXplKTsKLSAgICBjb21tYW5kQnVmZmVyLmNvcHlUZXh0dXJl
VG9CdWZmZXIodGV4dHVyZVZpZXdCLCByZWFkQnVmZmVyVmlldywgdGV4dHVyZVNpemUpOwotICAg
IGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOworICAgIGNvbnN0IGNv
bW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgY29tbWFu
ZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlckEsIDAsIGJ1ZmZlckIsIDAsIGltYWdl
RGF0YS5kYXRhLmJ5dGVMZW5ndGgpOworICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1Rl
eHR1cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4dHVyZVNpemUpOworICAgIGNvbW1h
bmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwg
dGV4dHVyZVNpemUpOworICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlKHRl
eHR1cmVWaWV3QSwgdGV4dHVyZVZpZXdCLCB0ZXh0dXJlU2l6ZSk7CisgICAgY29tbWFuZEVuY29k
ZXIuY29weVRleHR1cmVUb0J1ZmZlcih0ZXh0dXJlVmlld0IsIHJlYWRCdWZmZXJWaWV3LCB0ZXh0
dXJlU2l6ZSk7CisgICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5m
aW5pc2goKV0pOwogICAgIGJ1ZmZlckEuZGVzdHJveSgpOwogICAgIGJ1ZmZlckIuZGVzdHJveSgp
OwogICAgIHRleHR1cmVBLmRlc3Ryb3koKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9i
dWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRtbAppbmRleCBkMzMyOTY2ZjM4YzUzOWE5ZTI4
MGY0YTg5YmIyNmQ2YTJmMmE2YmZlLi45OTk0ZGVkY2Y3MTQ3YWVlNzMxYTI5N2JhMDdjODk5YTc1
MzUzMDdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVm
ZmVyLXJhY2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1
ZmZlci1yYWNlcy5odG1sCkBAIC03NiwxMyArNzYsMTMgQEAgZnVuY3Rpb24gY3JlYXRlQW5kU2V0
VmVydGV4QnVmZmVyKGRldmljZSwgdmVydGljZXMpIHsKIH0KIAogZnVuY3Rpb24gZHJhd0FuZFN1
Ym1pdENvbW1hbmRzKGRldmljZSwgcGlwZWxpbmUsIGF0dGFjaG1lbnQsIHZlcnRleEJ1ZmZlciwg
Y29sb3JCdWZmZXIpIHsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRCdWZmZXIoKTsKLSAgICBjb25zdCBlbmNvZGVyID0gY29tbWFuZEJ1ZmZlci5iZWdpblJl
bmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRzOiBbYXR0YWNobWVudF0gfSk7CisgICAgY29uc3Qg
Y29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICBjb25z
dCBlbmNvZGVyID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsgY29sb3JBdHRhY2ht
ZW50czogW2F0dGFjaG1lbnRdIH0pOwogICAgIGVuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBb
dmVydGV4QnVmZmVyLCBjb2xvckJ1ZmZlcl0sIFswLCAwXSk7CiAgICAgZW5jb2Rlci5zZXRQaXBl
bGluZShwaXBlbGluZSk7CiAgICAgZW5jb2Rlci5kcmF3KDMsIDEsIDAsIDApOwogICAgIGVuY29k
ZXIuZW5kUGFzcygpOwotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZl
cl0pOworICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNo
KCldKTsKIH0KIAogYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS9idWZmZXItcmVzb3VyY2UtdHJpYW5nbGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJncHUvYnVmZmVyLXJlc291cmNlLXRyaWFuZ2xlcy5odG1sCmluZGV4IDYwZTI3ZDUxNGRhNjZk
NjNiM2ZlZDZlYjY0YTA2MGI4YTM1YjMyMGEuLjYzZmJmM2E5NjVmODhhNWU4YTVmZjEwZmJjNTBk
YWM2NWRkYzBhNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItcmVzb3Vy
Y2UtdHJpYW5nbGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1yZXNvdXJj
ZS10cmlhbmdsZXMuaHRtbApAQCAtMTk0LDggKzE5NCw4IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgfSk7CiAKICAgICBQcm9taXNlLmFsbChidWZmZXJQcm9taXNlcykudGhlbigoKSA9
PiB7Ci0gICAgICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEJ1
ZmZlcigpOwotICAgICAgICBjb25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNz
KHN3YXBDaGFpbiwgY29tbWFuZEJ1ZmZlcik7CisgICAgICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVy
ID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgICAgIGNvbnN0IHBhc3NFbmNv
ZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kRW5jb2Rlcik7CiAg
ICAgICAgIHBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKIAogICAgICAgICAvLyBW
ZXJ0ZXggZGF0YSBmb3IgdXBwZXIgdHJpYW5nbGVzLgpAQCAtMjA1LDkgKzIwNSw5IEBAIGFzeW5j
IGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHBhc3NFbmNvZGVyLnNldFZlcnRleEJ1ZmZlcnMo
MCwgW3ZlcnRpY2VzQnVmZmVyXSwgWzBdKTsKICAgICAgICAgcGFzc0VuY29kZXIuZHJhdyg5LCAx
LCAwLCAwKTsKIAotICAgICAgICBjb25zdCBlbmRDb21tYW5kQnVmZmVyID0gcGFzc0VuY29kZXIu
ZW5kUGFzcygpOworICAgICAgICBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7CiAgICAgICAgIGNvbnN0
IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7Ci0gICAgICAgIHF1ZXVlLnN1Ym1pdChbZW5kQ29t
bWFuZEJ1ZmZlcl0pOworICAgICAgICBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlz
aCgpXSk7CiAKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvY29t
bWFuZC1idWZmZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1
ZmZlcnMtZXhwZWN0ZWQudHh0CmluZGV4IGQ3Y2UwNWRjOTliOTdiNThjZjEwMjI1YTc1NTkyNzc4
OWNhOWRmMDkuLmUwY2Y0MWRmYzgxNjljYTAwODc0MDQ3MGNlMzA1ZWEwMGY0YjZlZDQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CkBAIC0x
LDMgKzEsMyBAQAogCi1QQVNTIENyZWF0ZSBhIGRlZmF1bHQgR1BVQ29tbWFuZEJ1ZmZlci4gCitQ
QVNTIENyZWF0ZSBhIGRlZmF1bHQgR1BVQ29tbWFuZEVuY29kZXIuIAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvY29tbWFuZC1idWZmZXJzLmh0bWwKaW5kZXggYmFmNjM3OWFkMDY3NzQxMWI1MjNmYjgwZDU5
ZTE0YmE2MTZmMTMyMS4uODMzYTM4M2IyOWRkMzUzOTNjZThjODU2OTAwYzU4M2YzOGM2NDc3NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy5odG1sCisrKyBi
L0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMuaHRtbApAQCAtNiwxMCArNiwxMCBA
QAogPHNjcmlwdD4KIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CiAgICAgY29uc3QgZGV2aWNl
ID0gYXdhaXQgZ2V0QmFzaWNEZXZpY2UoKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKLSAgICBhc3NlcnRfdHJ1ZShjb21tYW5kQnVmZmVy
IGluc3RhbmNlb2YgV2ViR1BVQ29tbWFuZEJ1ZmZlciwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIEdQ
VUNvbW1hbmRCdWZmZXIuIik7Ci19LCAiQ3JlYXRlIGEgZGVmYXVsdCBHUFVDb21tYW5kQnVmZmVy
LiIpOworICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKCk7CisgICAgYXNzZXJ0X3RydWUoY29tbWFuZEVuY29kZXIgaW5zdGFuY2VvZiBHUFVDb21t
YW5kRW5jb2RlciwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIEdQVUNvbW1hbmRFbmNvZGVyLiIpOwor
fSwgIkNyZWF0ZSBhIGRlZmF1bHQgR1BVQ29tbWFuZEVuY29kZXIuIik7CiAKLS8vIEZJWE1FOiBj
cmVhdGVDb21tYW5kQnVmZmVyIHNob3VsZCB0YWtlIGEgR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0
b3IsIHdoaWNoIGlzIGN1cnJlbnRseSBhbiBlbXB0eSBkaWN0aW9uYXJ5LgorLy8gRklYTUU6IGNy
ZWF0ZUNvbW1hbmRFbmNvZGVyIHNob3VsZCB0YWtlIGEgR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlw
dG9yLCB3aGljaCBpcyBjdXJyZW50bHkgYW4gZW1wdHkgZGljdGlvbmFyeS4KIDwvc2NyaXB0Pgog
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC5odG1sCmluZGV4IDY2MDQ4ZThj
YzMzNDFhZjEwNDMxYzk5MTc2ZDBmYjY0NzIyOGFiOWQuLjU0MDcxOGQ1NDlmZjJlNzc4MzExZDQ4
NmJlNDkzNzNmMjYwOWYzM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1l
bmFibGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRo
LWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbApAQCAtODksNyArODksNyBAQCBhc3luYyBmdW5j
dGlvbiB0ZXN0KCkgewogICAgIGNvbnN0IGlucHV0U3RhdGVEZXNjcmlwdG9yID0gY3JlYXRlSW5w
dXRTdGF0ZURlc2NyaXB0b3IoKTsKICAgICBjb25zdCBkZXB0aFN0YXRlRGVzY3JpcHRvciA9IGNy
ZWF0ZUJhc2ljRGVwdGhTdGF0ZURlc2NyaXB0b3IoKTsKICAgICBjb25zdCBwaXBlbGluZSA9IGNy
ZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIG51bGwsIGlucHV0U3RhdGVE
ZXNjcmlwdG9yLCBkZXB0aFN0YXRlRGVzY3JpcHRvcik7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7CisgICAgY29uc3QgY29tbWFuZEVuY29k
ZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKIAogICAgIGNvbnN0IGJhc2ljQXR0
YWNobWVudCA9IHsKICAgICAgICAgYXR0YWNobWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0
dXJlKCkuY3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCksCkBAIC0xMDUsNyArMTA1LDcgQEAgYXN5
bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgY2xlYXJEZXB0aDogMS4wCiAgICAgfTsKIAot
ICAgIGNvbnN0IGVuY29kZXIgPSBjb21tYW5kQnVmZmVyLmJlZ2luUmVuZGVyUGFzcyh7CisgICAg
Y29uc3QgZW5jb2RlciA9IGNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7CiAgICAgICAg
IGNvbG9yQXR0YWNobWVudHM6IFtiYXNpY0F0dGFjaG1lbnRdLAogICAgICAgICBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50OiBkZXB0aEF0dGFjaG1lbnQKICAgICB9KTsKQEAgLTExNSw3ICsxMTUsNyBA
QCBhc3luYyBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGVuY29kZXIuZHJhdyg0LCAyLCAwLCAwKTsK
ICAgICBlbmNvZGVyLmVuZFBhc3MoKTsKIAotICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChb
Y29tbWFuZEJ1ZmZlcl0pOworICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEVu
Y29kZXIuZmluaXNoKCldKTsKIAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzCmluZGV4IDNjZGEyOGU5MGUyMWU4YTY0ODFlMzJlMzAxZmQ1M2EwNzdmMmNiZWUu
LjI0MTdiYWYyNGRkNjIxMDMxYzk1Zjk1NzY3YTliMjZkMTczMjEyYzUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCkBAIC02Niw3ICs2Niw3IEBAIGZ1bmN0aW9u
IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBkZXZpY2UsIHBpcGVsaW5lTGF5b3V0
LCBpbnB1dFN0YXRlRGVzCiAgICAgcmV0dXJuIGRldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShw
aXBlbGluZURlc2NyaXB0b3IpOwogfQogCi1mdW5jdGlvbiBiZWdpbkJhc2ljUmVuZGVyUGFzcyhz
d2FwQ2hhaW4sIGNvbW1hbmRCdWZmZXIpIHsKK2Z1bmN0aW9uIGJlZ2luQmFzaWNSZW5kZXJQYXNz
KHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpIHsKICAgICBjb25zdCBiYXNpY0F0dGFjaG1lbnQg
PSB7CiAgICAgICAgIGF0dGFjaG1lbnQ6IHN3YXBDaGFpbi5nZXRDdXJyZW50VGV4dHVyZSgpLmNy
ZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpLAogICAgICAgICBsb2FkT3A6ICJjbGVhciIsCkBAIC03
NSw3ICs3NSw3IEBAIGZ1bmN0aW9uIGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29t
bWFuZEJ1ZmZlcikgewogICAgIH0KIAogICAgIC8vIEZJWE1FOiBGbGVzaCBvdXQgdGhlIHJlc3Qg
b2YgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuIAotICAgIHJldHVybiBjb21tYW5kQnVmZmVy
LmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0YWNobWVudHMgOiBbYmFzaWNBdHRhY2htZW50XSB9
KTsKKyAgICByZXR1cm4gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsgY29sb3JBdHRh
Y2htZW50cyA6IFtiYXNpY0F0dGFjaG1lbnRdIH0pOwogfQogCiBmdW5jdGlvbiBlbmNvZGVCYXNp
Y0NvbW1hbmRzKHJlbmRlclBhc3NFbmNvZGVyLCByZW5kZXJQaXBlbGluZSwgdmVydGV4QnVmZmVy
KSB7CkBAIC04Myw1ICs4Myw1IEBAIGZ1bmN0aW9uIGVuY29kZUJhc2ljQ29tbWFuZHMocmVuZGVy
UGFzc0VuY29kZXIsIHJlbmRlclBpcGVsaW5lLCB2ZXJ0ZXhCdWZmZXIpIHsKICAgICAgICAgcmVu
ZGVyUGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGV4QnVmZmVyXSwgWzBdKTsK
ICAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7CiAgICAg
cmVuZGVyUGFzc0VuY29kZXIuZHJhdyg0LCAxLCAwLCAwKTsKLSAgICByZXR1cm4gcmVuZGVyUGFz
c0VuY29kZXIuZW5kUGFzcygpOworICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKIH0K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5k
ZXItY29tbWFuZC1lbmNvZGluZy5odG1sCmluZGV4IGJjYWFiYjUzNjE2NGMyNzNiMjVhMTY3Zjc3
NGFiNjczMTE4N2NhMzAuLmMwM2E0ODBhOWFkMjhhODAxNDE2Y2VlODBlNGFlZmM5ZDI0OGE1Zjcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1s
CkBAIC0zNCwxNSArMzQsMTQgQEAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKICAgICBjb25z
dCBzaGFkZXJNb2R1bGUgPSBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogc2hhZGVy
cyB9KTsKICAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9k
dWxlLCBkZXZpY2UpOwogCi0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVD
b21tYW5kQnVmZmVyKCk7Ci0gICAgYXNzZXJ0X3RydWUoY29tbWFuZEJ1ZmZlciBpbnN0YW5jZW9m
IFdlYkdQVUNvbW1hbmRCdWZmZXIsICJjcmVhdGVDb21tYW5kQnVmZmVyIHJldHVybmVkIGEgV2Vi
R1BVQ29tbWFuZEJ1ZmZlciIpOworICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgYXNzZXJ0X3RydWUoY29tbWFuZEVuY29kZXIgaW5z
dGFuY2VvZiBHUFVDb21tYW5kRW5jb2RlciwgImNyZWF0ZUNvbW1hbmRFbmNvZGVyIHJldHVybmVk
IGEgR1BVQ29tbWFuZEVuY29kZXIiKTsKIAotICAgIGNvbnN0IGVuY29kZXIgPSBiZWdpbkJhc2lj
UmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRCdWZmZXIpOworICAgIGNvbnN0IGVuY29kZXIg
PSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKICAgICBh
c3NlcnRfdHJ1ZShlbmNvZGVyIGluc3RhbmNlb2YgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIsICJi
ZWdpblJlbmRlclBhc3MoKSByZXR1cm5lZCBhIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIik7CiAK
ICAgICBlbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKLSAgICBjb25zdCBjb21tYW5kQnVm
ZmVyRW5kID0gZW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAgYXNzZXJ0X3RydWUoY29tbWFuZEJ1ZmZl
ckVuZCBpbnN0YW5jZW9mIFdlYkdQVUNvbW1hbmRCdWZmZXIsICJlbmRQYXNzKCkgcmV0dXJuZWQg
YSBXZWJHUFVDb21tYW5kQnVmZmVyIik7CisgICAgZW5jb2Rlci5lbmRQYXNzKCk7CiB9LCAiV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXIgY3JlYXRlZCBhbmQgc3VjY2Vzc2Z1bGx5IGVuZGVkIik7CiAK
IDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NpbXBsZS10cmlhbmds
ZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NpbXBsZS10cmlhbmdsZS1zdHJpcC5o
dG1sCmluZGV4IGUwZTI4YzU3ODgzNGIzNDRkNDYwN2M2ZTMwYjg0ZGI3NDRjODQyYjMuLjA4OGU0
OTE1YmI5ZmRmOWFhMGE2OWFhYmEyYWE1M2YwYjI4ZjY2ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKQEAgLTUyLDEyICs1MiwxMiBAQCBhc3lu
YyBmdW5jdGlvbiB0ZXN0KCkgewogICAgIC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggbm9uLU1TTCBz
aGFkZXJzLgogICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoeyBjb2RlOiBzaGFkZXJDb2RlIH0pOwogICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFz
aWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSk7Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0gICAgY29uc3QgcGFzc0VuY29kZXIg
PSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRCdWZmZXIpOwotICAgIGNv
bnN0IGVuZENvbW1hbmRCdWZmZXIgPSBlbmNvZGVCYXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBw
aXBlbGluZSk7CisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsKKyAgICBjb25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNz
KHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOworICAgIGVuY29kZUJhc2ljQ29tbWFuZHMocGFz
c0VuY29kZXIsIHBpcGVsaW5lKTsKICAgICBjb25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgp
OwogCi0gICAgcXVldWUuc3VibWl0KFtlbmRDb21tYW5kQnVmZmVyXSk7CisgICAgcXVldWUuc3Vi
bWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwogCiAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKCgpID0+IHsgCiAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sCmluZGV4IGMwZjU4ODE4NGFk
YjZiYTA5NWMxOTc5ZDVjMTYzMzY1ZTE4ZWQ2MDIuLmI5ZGViMTJkNzQzOTU0M2RhNDM4OGVkN2Qx
ZDhiYzgwMmM4MDkyYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLXRy
aWFuZ2xlLXN0cmlwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmUtdHJpYW5n
bGUtc3RyaXAuaHRtbApAQCAtMTg2LDcgKzE4Niw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7
CiAKICAgICAvLyBQaXBlbGluZSBhbmQgcmVuZGVyCiAgICAgY29uc3QgcGlwZWxpbmUgPSBjcmVh
dGVCYXNpY1BpcGVsaW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBwaXBlbGluZUxheW91dCwgaW5w
dXRTdGF0ZURlc2NyaXB0b3IpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQ29tbWFuZEJ1ZmZlcigpOworICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CiAKICAgICBjb25zdCBidWZmZXJDb3B5VmlldyA9IHsKICAg
ICAgICAgYnVmZmVyOiB0ZXh0dXJlQnVmZmVyLApAQCAtMjAwLDggKzIwMCw4IEBAIGFzeW5jIGZ1
bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIGFycmF5TGF5ZXI6IDAsCiAgICAgICAgIG9yaWdpbjog
eyB4OiAwLCB5OiAwLCB6OiAwIH0KICAgICB9OwotICAgIGNvbW1hbmRCdWZmZXIuY29weUJ1ZmZl
clRvVGV4dHVyZShidWZmZXJDb3B5VmlldywgdGV4dHVyZUNvcHlWaWV3LCB0ZXh0dXJlU2l6ZSk7
Ci0gICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4s
IGNvbW1hbmRCdWZmZXIpOworICAgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUo
YnVmZmVyQ29weVZpZXcsIHRleHR1cmVDb3B5VmlldywgdGV4dHVyZVNpemUpOworICAgIGNvbnN0
IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kRW5j
b2Rlcik7CiAgICAgcGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOwogICAgIHBhc3NF
bmNvZGVyLnNldEJpbmRHcm91cChiaW5kR3JvdXBJbmRleCwgYmluZEdyb3VwKTsKICAgICBwYXNz
RW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKHBvc2l0aW9uQnVmZmVySW5kZXgsIFtwb3NpdGlvbkJ1
ZmZlciwgdGV4dHVyZUNvb3JkQnVmZmVyXSwgWzAsIDBdKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBh
c3luYyBmdW5jdGlvbiB0ZXN0KCkgewogICAgIHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKIAogICAg
IGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7Ci0gICAgcXVldWUuc3VibWl0KFtjb21t
YW5kQnVmZmVyXSk7CisgICAgcXVldWUuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0p
OwogICAgIHBvc2l0aW9uQnVmZmVyLmRlc3Ryb3koKTsKICAgICB0ZXh0dXJlQ29vcmRCdWZmZXIu
ZGVzdHJveSgpOwogICAgIHRleHR1cmUuZGVzdHJveSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLmh0bWwKaW5kZXggY2ExYmE5NmU2
MGIwM2I5NjhjNDFiYmEzMGU3MjQwZjc2MzdiMmIyMy4uMmE1MGMxYWEwMDEwMDViNTFhYmRiODll
OGYzMTViYmQ3M2VlZmRhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1i
dWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4
LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sCkBAIC05MSwxMSArOTEsMTEgQEAgYXN5bmMgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBjcmVhdGVWZXJ0ZXhCdWZm
ZXIoZGV2aWNlKTsKICAgICBjb25zdCBpbnB1dFN0YXRlRGVzY3JpcHRvciA9IGNyZWF0ZUlucHV0
U3RhdGVEZXNjcmlwdG9yKCk7CiAgICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVs
aW5lKHNoYWRlck1vZHVsZSwgZGV2aWNlLCBudWxsLCBpbnB1dFN0YXRlRGVzY3JpcHRvcik7Ci0g
ICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0g
ICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNv
bW1hbmRCdWZmZXIpOwotICAgIGNvbnN0IGVuZENvbW1hbmRCdWZmZXIgPSBlbmNvZGVCYXNpY0Nv
bW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSwgdmVydGV4QnVmZmVyKTsKKyAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGNvbnN0
IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kRW5j
b2Rlcik7CisgICAgZW5jb2RlQmFzaWNDb21tYW5kcyhwYXNzRW5jb2RlciwgcGlwZWxpbmUsIHZl
cnRleEJ1ZmZlcik7CiAgICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKLSAgICBx
dWV1ZS5zdWJtaXQoW2VuZENvbW1hbmRCdWZmZXJdKTsKKyAgICBxdWV1ZS5zdWJtaXQoW2NvbW1h
bmRFbmNvZGVyLmZpbmlzaCgpXSk7CiAgICAgdmVydGV4QnVmZmVyLmRlc3Ryb3koKTsKIAogICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364700</attachid>
            <date>2019-03-14 15:24:56 -0700</date>
            <delta_ts>2019-03-14 16:04:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195083-20190314152455.patch</filename>
            <type>text/plain</type>
            <size>69773</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyOTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIxOWVmN2QzNjlhYWM3
YTFiN2NjYzIwZDc0ZTRkNmZhZTFiODBjMy4uODE2ZDFhNGJjNmFkZmVkMGY3OGNjMjM3ZjYzOTlm
ZTI2ZjYzZjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE5LTAzLTE0ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIFVwZGF0
ZXMgdG8gR1BVQ29tbWFuZEJ1ZmZlciBmb3IgbmV3IEdQVUNvbW1hbmRFbmNvZGVyIGNvbmNlcHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTA4Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg0MjM1OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGVhbiBKYWNrc29uLgorCisgICAgICAgIEZpeGluZyBidWlsZCBlcnJvciBhbmQgcmUtaW50cm9k
dWNpbmcgcm9sbGVkLW91dCBjaGFuZ2VzLgorICAgICAgICBXZWJHUFVDb21tYW5kQnVmZmVyIG5v
dyByZXByZXNlbnRzIGEgY29tcGxldGVkIEdQVUNvbW1hbmRCdWZmZXIgdGhhdCBjYW4gb25seSBi
ZSB1c2VkIGluIHF1ZXVlIHN1Ym1pdHMuIFRoZSBwcmV2aW91cyBXZWJHUFVDb21tYW5kQnVmZmVy
CisgICAgICAgIGlzIG5vdyBXZWJHUFVDb21tYW5kRW5jb2Rlci4KKworICAgICAgICBBZmZlY3Rl
ZCBXZWIgR1BVIHRlc3RzIHVwZGF0ZWQgdG8gbWF0Y2ggbmV3IEFQSS4KKworICAgICAgICBOZXcg
ZmlsZXMgYW5kIHN5bWJvbHM6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorCisgICAgICAgIEltcGxlbWVudCBuZXcgV2ViR1BVQ29t
bWFuZEJ1ZmZlciwgbm93IGp1c3QgYSBET00gb2JqZWN0IGNhcnJpZXIgZm9yIGEgZmluaXNoZWQg
R1BVQ29tbWFuZEJ1ZmZlcjoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpXZWJHUFVDb21tYW5k
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlckNvcHlWaWV3Ojp0cnlDcmVh
dGVHUFVCdWZmZXJDb3B5VmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVUZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdpblJl
bmRlclBhc3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZl
cjo6Y29weUJ1ZmZlclRvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQ
VUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRv
VGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29tbWFu
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpjb21tYW5k
QnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21tYW5kQnVmZmVyLmlkbDoKKworICAgICAgICBSZW5hbWUgb2xkIFdlYkdQVUNvbW1hbmRCdWZm
ZXIgdG8gV2ViR1BVQ29tbWFuZEVuY29kZXI6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEVuY29kZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQ
VUJ1ZmZlckNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHUFVUZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVD
b3B5VmlldyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kRW5jb2Rlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRFbmNvZGVyOjpXZWJHUFVD
b21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kRW5jb2Rlcjo6
YmVnaW5SZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRFbmNvZGVy
Ojpjb3B5QnVmZmVyVG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEVu
Y29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29t
bWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVUNvbW1hbmRFbmNvZGVyOjpmaW5pc2gpOiBBZGRlZC4gIkNvbXBsZXRlcyIgdGhp
cyBhbmQgaW52YWxpZGF0ZXMgaXQuIFJldHVybnMgaXRzIEdQVUNvbW1hbmRCdWZmZXIsIHJlYWR5
IGZvciBzdWJtaXNzaW9uLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRF
bmNvZGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
RW5jb2Rlci5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRCdWZmZXIuaWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRF
bmNvZGVyIGNvbnN0KTogUmVuYW1lZCBmb20gY3JlYXRlQ29tbWFuZEJ1ZmZlci4gTm93IHJldHVy
bnMgbm9uLW51bGxhYmxlLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVD
b21tYW5kQnVmZmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpX
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcyk6IE5vIGxvbmdlciByZXR1cm5zIHRoZSBv
cmlnaW5hbCBXZWJHUFVDb21tYW5kQnVmZmVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVVF1ZXVlOjpzdWJtaXQpOiBSZXBsYWNlIHVubmVjZXNzYXJ5IHJ2YWx1ZSByZWZl
cmVuY2UgcGFyYW1ldGVyLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpwYXNzRW5jb2RlciBjb25zdCk6
IE5vdyByZXR1cm5zIGEgcG9pbnRlciBzaW5jZSBpdCBpcyBwcm9wZXJseSBiYWNrZWQgYnkgYSBS
ZWZQdHIuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR1BVU3dhcENoYWluOjpnZXRDdXJyZW50VGV4dHVyZSk6IE5vIGxvbmdl
ciBpbnZhbGlkYXRlcyBtX2N1cnJlbnRUZXh0dXJlLiBEb2ghCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDogTWlzc2luZyBpbmNsdWRlcyBmb3IgdGhl
ICpDb3B5VmlldyBzdHJ1Y3RzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVE
ZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjp0cnlDcmVhdGVDb21tYW5k
QnVmZmVyIGNvbnN0KTogUmVuYW1lZCBmcm9tIGNyZWF0ZUNvbW1hbmRCdWZmZXIuCisgICAgICAg
IChXZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKTogUmVuYW1lZCBmcm9tIGNy
ZWF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSk6IERlbGV0
ZWQuCisKIDIwMTktMDMtMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgU3RvcmluZyBhIE5vZGUgaW4gUmVmL1JlZlB0ciBpbnNpZGUgaXRzIGRlc3RydWN0b3Ig
cmVzdWx0cyBpbiBkb3VibGUgZGVsZXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDVjNzNmNDc0
ZjVjODE1ZDdhMzE0MjI3YTA2YjNkNTZmMzE5NjUzMjEuLjZkMWYxMDgyZGI3ZmFlZjMzNGQ2YjNk
MjM2YTQ4MzI0YWI0NDMwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00OTQsNiArNDk0LDcg
QEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVCdWZmZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyQmluZGluZy5pZGwK
ICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAorICAgIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggODU5YWVhMTYwZmFkMzhhODMzOWMzNWIwMDA1
YmVkYmIzNTNkZGJlOS4uZDQxZjYwNzNiMTRiYTc4MTZlMWM1MGQyNTBlMWU2NzAwODhmOTcyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC00MDQsNiArNDA0LDcgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVy
LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXJCaW5kaW5nLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVm
ZmVyLmNwcAppbmRleCAxMjdlMDMyMWZmNWIzNDQyYmVlNWJmZWFiYjU5Yjg4OTYxZmYwZjY0Li5h
NTEwNTExNzc2ZDg3ZWI1MjcxODc1NTIyNjAzNTM4MDM5ZTFmYzY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAt
MjgsMTEyICsyOCwxOCBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUgIkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIK
LSNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oIgotI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCi0jaW5jbHVk
ZSAiV2ViR1BVVGV4dHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiBXZWJHUFVCdWZmZXJD
b3B5Vmlldzo6dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjb25zdAotewotICAgIGlmICgh
YnVmZmVyIHx8ICFidWZmZXItPmJ1ZmZlcigpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVD
b21tYW5kRW5jb2RlcjogSW52YWxpZCBidWZmZXIgZm9yIGNvcHkhIik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlk
YXRpb24uCi0KLSAgICByZXR1cm4gR1BVQnVmZmVyQ29weVZpZXcgeyBidWZmZXItPmJ1ZmZlcigp
LnJlbGVhc2VOb25OdWxsKCksICp0aGlzIH07Ci19Ci0KLU9wdGlvbmFsPEdQVVRleHR1cmVDb3B5
Vmlldz4gV2ViR1BVVGV4dHVyZUNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXco
KSBjb25zdAotewotICAgIGlmICghdGV4dHVyZSB8fCAhdGV4dHVyZS0+dGV4dHVyZSgpKSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kRW5jb2RlcjogSW52YWxpZCB0ZXh0dXJlIGZv
ciBjb3B5ISIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIH0KLQotICAgIC8v
IEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgotCi0gICAgcmV0dXJuIEdQVVRleHR1cmVD
b3B5VmlldyB7IHRleHR1cmUtPnRleHR1cmUoKS5yZWxlYXNlTm9uTnVsbCgpLCAqdGhpcyB9Owot
fQotCi1SZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRl
KFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKK1JlZjxXZWJHUFVDb21tYW5kQnVmZmVy
PiBXZWJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIo
V1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVdlYkdQVUNvbW1hbmRCdWZmZXI6OldlYkdQVUNvbW1h
bmRCdWZmZXIoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQorV2ViR1BVQ29tbWFuZEJ1
ZmZlcjo6V2ViR1BVQ29tbWFuZEJ1ZmZlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgOiBtX2NvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQogCi1SZWZQ
dHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVu
ZGVyUGFzcyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCi17Ci0gICAg
YXV0byBncHVEZXNjcmlwdG9yID0gZGVzY3JpcHRvci50cnlDcmVhdGVHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvcigpOwotICAgIGlmICghZ3B1RGVzY3JpcHRvcikKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBpZiAoYXV0byBlbmNvZGVyID0gR1BVUmVuZGVyUGFzc0VuY29kZXI6OnRyeUNy
ZWF0ZShtX2NvbW1hbmRCdWZmZXIuY29weVJlZigpLCBXVEZNb3ZlKCpncHVEZXNjcmlwdG9yKSkp
Ci0gICAgICAgIHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBl
bmNvZGVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lk
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBXZWJHUFVCdWZm
ZXImIHNyYywgdW5zaWduZWQgbG9uZyBzcmNPZmZzZXQsIGNvbnN0IFdlYkdQVUJ1ZmZlciYgZHN0
LCB1bnNpZ25lZCBsb25nIGRzdE9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQotewotICAgIGlm
ICghc3JjLmJ1ZmZlcigpIHx8ICFkc3QuYnVmZmVyKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIEdQVUJ1ZmZl
ciEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQ
VSB2YWxpZGF0aW9uLgotCi0gICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5QnVmZmVyVG9CdWZmZXIo
c3JjLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNyY09mZnNldCwgZHN0LmJ1ZmZlcigpLnJl
bGVhc2VOb25OdWxsKCksIGRzdE9mZnNldCwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFu
ZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYg
c3JjQnVmZmVyLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIGRzdFRleHR1cmUsIGNvbnN0
IEdQVUV4dGVudDNEJiBzaXplKQotewotICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IHNyY0J1ZmZl
ci50cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcg
PSBkc3RUZXh0dXJlLnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotCi0gICAgaWYgKCFn
cHVCdWZmZXJWaWV3IHx8ICFncHVUZXh0dXJlVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXIt
PmNvcHlCdWZmZXJUb1RleHR1cmUoV1RGTW92ZSgqZ3B1QnVmZmVyVmlldyksIFdURk1vdmUoKmdw
dVRleHR1cmVWaWV3KSwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29w
eVRleHR1cmVUb0J1ZmZlcihjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIHNyY1RleHR1cmUs
IGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiBkc3RCdWZmZXIsIGNvbnN0IEdQVUV4dGVudDNE
JiBzaXplKQotewotICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcgPSBzcmNUZXh0dXJlLnRyeUNyZWF0
ZUdQVVRleHR1cmVDb3B5VmlldygpOwotICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IGRzdEJ1ZmZl
ci50cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpOwotCi0gICAgaWYgKCFncHVUZXh0dXJlVmll
dyB8fCAhZ3B1QnVmZmVyVmlldykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IEFk
ZCBXZWIgR1BVIHZhbGlkYXRpb24uCi0KLSAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlUZXh0dXJl
VG9CdWZmZXIoV1RGTW92ZSgqZ3B1VGV4dHVyZVZpZXcpLCBXVEZNb3ZlKCpncHVCdWZmZXJWaWV3
KSwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb1Rl
eHR1cmUoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmMsIGNvbnN0IFdlYkdQVVRleHR1
cmVDb3B5VmlldyYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKLXsKLSAgICBhdXRvIGdw
dVNyY1ZpZXcgPSBzcmMudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7Ci0gICAgYXV0byBn
cHVEc3RWaWV3ID0gZHN0LnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOwotCi0gICAgaWYg
KCFncHVTcmNWaWV3IHx8ICFncHVEc3RWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBG
SVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KLQotICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29w
eVRleHR1cmVUb1RleHR1cmUoV1RGTW92ZSgqZ3B1U3JjVmlldyksIFdURk1vdmUoKmdwdURzdFZp
ZXcpLCBzaXplKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuaAppbmRleCA1NDY0NzA0MDlhNTk4YTVmODllNzlmYjdjZWUyNmViOWM5
M2NkZGMyLi44M2ExZGE0ZWEzYzA5YmNkOTdhN2M4NmQ3NmNlYjhiMDA5YmZlMzQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw0
NiArMjgsMjEgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1
ZmZlci5oIgotCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViR1BVQnVmZmVyOwotY2xh
c3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI7Ci1jbGFzcyBXZWJHUFVUZXh0dXJlOwotCi1zdHJ1
Y3QgR1BVRXh0ZW50M0Q7Ci1zdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7Ci0KLXN0
cnVjdCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSB7Ci0gICAg
T3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IHRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCkg
Y29uc3Q7Ci0KLSAgICBSZWZQdHI8V2ViR1BVQnVmZmVyPiBidWZmZXI7Ci19OwotCi1zdHJ1Y3Qg
V2ViR1BVVGV4dHVyZUNvcHlWaWV3IDogR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7Ci0gICAgT3B0
aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiB0cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKSBj
b25zdDsKLQotICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlPiB0ZXh0dXJlOwotfTsKLQogY2xhc3Mg
V2ViR1BVQ29tbWFuZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRCdWZm
ZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0
ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJik7Ci0KLSAgICBHUFVDb21tYW5kQnVmZmVyJiBjb21t
YW5kQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21tYW5kQnVmZmVyLmdldCgpOyB9CisgICAg
c3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmUHRyPEdQVUNvbW1hbmRC
dWZmZXI+JiYpOwogCi0gICAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBiZWdpblJl
bmRlclBhc3MoV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJik7Ci0gICAgdm9pZCBjb3B5QnVm
ZmVyVG9CdWZmZXIoY29uc3QgV2ViR1BVQnVmZmVyJiwgdW5zaWduZWQgbG9uZyBzcmNPZmZzZXQs
IGNvbnN0IFdlYkdQVUJ1ZmZlciYsIHVuc2lnbmVkIGxvbmcgZHN0T2Zmc2V0LCB1bnNpZ25lZCBs
b25nIHNpemUpOwotICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXZWJHUFVCdWZm
ZXJDb3B5VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVu
dDNEJik7Ci0gICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdlYkdQVVRleHR1cmVD
b3B5VmlldyYsIGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiwgY29uc3QgR1BVRXh0ZW50M0Qm
KTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5
VmlldyYsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7
CisgICAgR1BVQ29tbWFuZEJ1ZmZlciogY29tbWFuZEJ1ZmZlcigpIHsgcmV0dXJuIG1fY29tbWFu
ZEJ1ZmZlci5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYpOworICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIoUmVmUHRyPEdQ
VUNvbW1hbmRCdWZmZXI+JiYpOwogCi0gICAgUmVmPEdQVUNvbW1hbmRCdWZmZXI+IG1fY29tbWFu
ZEJ1ZmZlcjsKKyAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAppbmRleCAxYmQ2ZjU0NTMzZTgx
YmY5MDAyMTMyMzYyYzJjMDdmZmY1MzNmOWJlLi4yNjcwMTg3MGQwZTJjYzgzNmMxNjE4NGI3ODg1
ODEyMDRmNGE5MzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kQnVmZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNjAgKzI0LDEwIEBACiAgKi8KIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCiAK
LXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1
NjQ7Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJHUFUsCi0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVCdWZmZXJDb3B5VmlldwotXSBkaWN0aW9u
YXJ5IEdQVUJ1ZmZlckNvcHlWaWV3IHsKLSAgICBXZWJHUFVCdWZmZXIgYnVmZmVyOwotICAgIHU2
NCBvZmZzZXQ7Ci0gICAgdTY0IHJvd1BpdGNoOwotICAgIHUzMiBpbWFnZUhlaWdodDsKLX07Ci0K
LVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUs
Ci0gICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVUZXh0dXJlQ29weVZpZXcKLV0gZGljdGlvbmFyeSBH
UFVUZXh0dXJlQ29weVZpZXcgewotICAgIFdlYkdQVVRleHR1cmUgdGV4dHVyZTsKLSAgICB1MzIg
bWlwTGV2ZWw7Ci0gICAgdTMyIGFycmF5TGF5ZXI7Ci0gICAgR1BVT3JpZ2luM0Qgb3JpZ2luOwot
fTsKLQogWwogICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKICAgICBFbmFibGVkQXRSdW50aW1lPVdl
YkdQVSwKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCisgICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKKyAgICBJbnRlcmZhY2VOYW1lPUdQVUNvbW1hbmRCdWZmZXIKIF0gaW50ZXJm
YWNlIFdlYkdQVUNvbW1hbmRCdWZmZXIgewotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGJl
Z2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQot
ICAgIHZvaWQgY29weUJ1ZmZlclRvQnVmZmVyKAotICAgICAgICBXZWJHUFVCdWZmZXIgc3JjLAot
ICAgICAgICB1NjQgc3JjT2Zmc2V0LAotICAgICAgICBXZWJHUFVCdWZmZXIgZHN0LAotICAgICAg
ICB1NjQgZHN0T2Zmc2V0LAotICAgICAgICB1NjQgc2l6ZSk7Ci0KLSAgICB2b2lkIGNvcHlCdWZm
ZXJUb1RleHR1cmUoCi0gICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAg
R1BVVGV4dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9uLAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5
U2l6ZSk7Ci0KLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoCi0gICAgICAgIEdQVVRleHR1
cmVDb3B5VmlldyBzb3VyY2UsCi0gICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IGRlc3RpbmF0aW9u
LAotICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7Ci0KLSAgICB2b2lkIGNvcHlUZXh0dXJl
VG9UZXh0dXJlKAotICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAotICAgICAgICBH
UFVUZXh0dXJlQ29weVZpZXcgZGVzdGluYXRpb24sCi0gICAgICAgIEdQVUV4dGVudDNEIGNvcHlT
aXplKTsKLQotICAgIC8vIE5vdCBZZXQgSW1wbGVtZW50ZWQKLSAgICAvLyBXZWJHUFVDb21wdXRl
UGFzc0VuY29kZXIgYmVnaW5Db21wdXRlUGFzcygpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYzE2NWEzMzUwODgyMmFhZDNiMjBhMjQxMTg1MzUwZjE3NTJkMTY4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIu
Y3BwCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkdQVUNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVSZW5k
ZXJQYXNzRW5jb2Rlci5oIgorI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworT3B0aW9uYWw8R1BVQnVmZmVyQ29weVZp
ZXc+IFdlYkdQVUJ1ZmZlckNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpIGNv
bnN0Cit7CisgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKKyAgICAgICAg
TE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIGJ1ZmZlciBmb3IgY29w
eSEiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBGSVhN
RTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIHJldHVybiBHUFVCdWZmZXJDb3B5Vmll
dyB7IGJ1ZmZlci0+YnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgKnRoaXMgfTsKK30KKworT3B0
aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiBXZWJHUFVUZXh0dXJlQ29weVZpZXc6OnRyeUNyZWF0
ZUdQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0Cit7CisgICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0
dXJlLT50ZXh0dXJlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNv
ZGVyOiBJbnZhbGlkIHRleHR1cmUgZm9yIGNvcHkhIik7CisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgfQorCisgICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisK
KyAgICByZXR1cm4gR1BVVGV4dHVyZUNvcHlWaWV3IHsgdGV4dHVyZS0+dGV4dHVyZSgpLnJlbGVh
c2VOb25OdWxsKCksICp0aGlzIH07Cit9CisKK1JlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gV2Vi
R1BVQ29tbWFuZEVuY29kZXI6OmNyZWF0ZShSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZm
ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEVuY29kZXIoV1RG
TW92ZShidWZmZXIpKSk7Cit9CisKK1dlYkdQVUNvbW1hbmRFbmNvZGVyOjpXZWJHUFVDb21tYW5k
RW5jb2RlcihSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgOiBtX2NvbW1h
bmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQoreworfQorCitSZWY8V2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXI+IFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpiZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQoreworICAgIGlmICghbV9jb21tYW5kQnVmZmVy
KSB7CisgICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6YmVnaW5SZW5k
ZXJQYXNzKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICByZXR1cm4gV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgbnVsbHB0cik7CisgICAgfQorICAgIGF1dG8g
Z3B1RGVzY3JpcHRvciA9IGRlc2NyaXB0b3IudHJ5Q3JlYXRlR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IoKTsKKyAgICBpZiAoIWdwdURlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBudWxscHRyKTsKKworICAgIGF1dG8gZW5jb2Rl
ciA9IEdQVVJlbmRlclBhc3NFbmNvZGVyOjp0cnlDcmVhdGUobWFrZVJlZigqbV9jb21tYW5kQnVm
ZmVyKSwgV1RGTW92ZSgqZ3B1RGVzY3JpcHRvcikpOworICAgIHJldHVybiBXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGVuY29kZXIpKTsKK30KKwordm9pZCBX
ZWJHUFVDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IFdlYkdQVUJ1ZmZl
ciYgc3JjLCB1bnNpZ25lZCBsb25nIHNyY09mZnNldCwgY29uc3QgV2ViR1BVQnVmZmVyJiBkc3Qs
IHVuc2lnbmVkIGxvbmcgZHN0T2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUpCit7CisgICAgaWYg
KCFtX2NvbW1hbmRCdWZmZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRF
bmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24hIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFzcmMuYnVmZmVyKCkgfHwgIWRzdC5idWZmZXIo
KSkgeworICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZm
ZXJUb0J1ZmZlcigpOiBJbnZhbGlkIEdQVUJ1ZmZlciEiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgorCisgICAgbV9jb21t
YW5kQnVmZmVyLT5jb3B5QnVmZmVyVG9CdWZmZXIobWFrZVJlZigqc3JjLmJ1ZmZlcigpKSwgc3Jj
T2Zmc2V0LCBtYWtlUmVmKCpkc3QuYnVmZmVyKCkpLCBkc3RPZmZzZXQsIHNpemUpOworfQorCit2
b2lkIFdlYkdQVUNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdlYkdQ
VUJ1ZmZlckNvcHlWaWV3JiBzcmNCdWZmZXIsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYg
ZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCit7CisgICAgaWYgKCFtX2NvbW1h
bmRCdWZmZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOjpj
b3B5QnVmZmVyVG9UZXh0dXJlKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGF1dG8gZ3B1QnVmZmVyVmlldyA9IHNyY0J1ZmZlci50cnlDcmVhdGVH
UFVCdWZmZXJDb3B5VmlldygpOworICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcgPSBkc3RUZXh0dXJl
LnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpOworCisgICAgaWYgKCFncHVCdWZmZXJWaWV3
IHx8ICFncHVUZXh0dXJlVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IEFk
ZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlCdWZmZXJU
b1RleHR1cmUoV1RGTW92ZSgqZ3B1QnVmZmVyVmlldyksIFdURk1vdmUoKmdwdVRleHR1cmVWaWV3
KSwgc2l6ZSk7Cit9CisKK3ZvaWQgV2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9C
dWZmZXIoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmNUZXh0dXJlLCBjb25zdCBXZWJH
UFVCdWZmZXJDb3B5VmlldyYgZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKK3sK
KyAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgeworICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BV
Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24h
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBncHVUZXh0dXJlVmlldyA9IHNy
Y1RleHR1cmUudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7CisgICAgYXV0byBncHVCdWZm
ZXJWaWV3ID0gZHN0QnVmZmVyLnRyeUNyZWF0ZUdQVUJ1ZmZlckNvcHlWaWV3KCk7CisKKyAgICBp
ZiAoIWdwdVRleHR1cmVWaWV3IHx8ICFncHVCdWZmZXJWaWV3KQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIG1fY29tbWFuZEJ1
ZmZlci0+Y29weVRleHR1cmVUb0J1ZmZlcihXVEZNb3ZlKCpncHVUZXh0dXJlVmlldyksIFdURk1v
dmUoKmdwdUJ1ZmZlclZpZXcpLCBzaXplKTsKK30KKwordm9pZCBXZWJHUFVDb21tYW5kRW5jb2Rl
cjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmMs
IGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6
ZSkKK3sKKyAgICBpZiAoIW1fY29tbWFuZEJ1ZmZlcikgeworICAgICAgICBMT0coV2ViR1BVLCAi
V2ViR1BVQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKCk6IEludmFsaWQgb3Bl
cmF0aW9uISIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gZ3B1U3JjVmlldyA9
IHNyYy50cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZpZXcoKTsKKyAgICBhdXRvIGdwdURzdFZpZXcg
PSBkc3QudHJ5Q3JlYXRlR1BVVGV4dHVyZUNvcHlWaWV3KCk7CisKKyAgICBpZiAoIWdwdVNyY1Zp
ZXcgfHwgIWdwdURzdFZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBBZGQg
V2ViIEdQVSB2YWxpZGF0aW9uLgorCisgICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5VGV4dHVyZVRv
VGV4dHVyZShXVEZNb3ZlKCpncHVTcmNWaWV3KSwgV1RGTW92ZSgqZ3B1RHN0VmlldyksIHNpemUp
OworfQorICAgIAorUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1hbmRFbmNvZGVy
OjpmaW5pc2goKQoreworICAgIGlmICghbV9jb21tYW5kQnVmZmVyKSB7CisgICAgICAgIExPRyhX
ZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKCk6IEludmFsaWQgb3BlcmF0aW9u
ISIpOworICAgICAgICByZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIp
OworICAgIH0KKyAgICAvLyBQYXNzZXMgdGhlIHJlZmVyZW5jZWQgR1BVQ29tbWFuZEJ1ZmZlciB0
byB0aGUgV2ViR1BVQ29tbWFuZEJ1ZmZlciwgaW52YWxpZGF0aW5nIHRoaXMgV2ViR1BVQ29tbWFu
ZEVuY29kZXIuCisgICAgcmV0dXJuIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShtX2NvbW1h
bmRCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGQ3MWJhMWQw
MmVkMWNmN2Q1OTI4YWFjYzk1ZmVlYzI3YzA1NWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaApAQCAtMCwwICsx
LDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRC
dWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVCdWZmZXI7CitjbGFz
cyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcjsKK2NsYXNzIFdlYkdQVVRleHR1cmU7CisKK3N0cnVj
dCBHUFVFeHRlbnQzRDsKK3N0cnVjdCBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjsKKworc3Ry
dWN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3IDogR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsKKyAgICBP
cHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gdHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBj
b25zdDsKKworICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKK307CisKK3N0cnVjdCBX
ZWJHUFVUZXh0dXJlQ29weVZpZXcgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlIHsKKyAgICBPcHRp
b25hbDxHUFVUZXh0dXJlQ29weVZpZXc+IHRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygpIGNv
bnN0OworCisgICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IHRleHR1cmU7Cit9OworCitjbGFzcyBX
ZWJHUFVDb21tYW5kRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVUNvbW1hbmRFbmNv
ZGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4gY3Jl
YXRlKFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKKworICAgIFJlZjxXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlcj4gYmVnaW5SZW5kZXJQYXNzKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYp
OworICAgIHZvaWQgY29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IFdlYkdQVUJ1ZmZlciYsIHVuc2ln
bmVkIGxvbmcgc3JjT2Zmc2V0LCBjb25zdCBXZWJHUFVCdWZmZXImLCB1bnNpZ25lZCBsb25nIGRz
dE9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1
cmUoY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZp
ZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOworICAgIHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihj
b25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYs
IGNvbnN0IEdQVUV4dGVudDNEJik7CisgICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25z
dCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBj
b25zdCBHUFVFeHRlbnQzRCYpOworICAgIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBmaW5pc2go
KTsKKworcHJpdmF0ZToKKyAgICBXZWJHUFVDb21tYW5kRW5jb2RlcihSZWZQdHI8R1BVQ29tbWFu
ZEJ1ZmZlcj4mJik7CisKKyAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gbV9jb21tYW5kQnVm
ZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRFbmNvZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRFbmNvZGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjk2YjRhZWFjYWQ4YjdhMjljYzFiOGVlNzc0
OTEwM2JmMjE2NzlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaWRsCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWdu
L3NrZXRjaC53ZWJpZGwKKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKK3R5cGVkZWYgdW5z
aWduZWQgbG9uZyBsb25nIHU2NDsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBF
bmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVUJ1ZmZlckNv
cHlWaWV3CitdIGRpY3Rpb25hcnkgR1BVQnVmZmVyQ29weVZpZXcgeworICAgIFdlYkdQVUJ1ZmZl
ciBidWZmZXI7CisgICAgdTY0IG9mZnNldDsKKyAgICB1NjQgcm93UGl0Y2g7CisgICAgdTMyIGlt
YWdlSGVpZ2h0OworfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVk
QXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVRleHR1cmVDb3B5Vmll
dworXSBkaWN0aW9uYXJ5IEdQVVRleHR1cmVDb3B5VmlldyB7CisgICAgV2ViR1BVVGV4dHVyZSB0
ZXh0dXJlOworICAgIHUzMiBtaXBMZXZlbDsKKyAgICB1MzIgYXJyYXlMYXllcjsKKyAgICBHUFVP
cmlnaW4zRCBvcmlnaW47Cit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVu
YWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCisg
ICAgSW50ZXJmYWNlTmFtZT1HUFVDb21tYW5kRW5jb2RlcgorXSBpbnRlcmZhY2UgV2ViR1BVQ29t
bWFuZEVuY29kZXIgeworICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGJlZ2luUmVuZGVyUGFz
cyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKKworICAgIHZvaWQgY29w
eUJ1ZmZlclRvQnVmZmVyKAorICAgICAgICBXZWJHUFVCdWZmZXIgc3JjLAorICAgICAgICB1NjQg
c3JjT2Zmc2V0LAorICAgICAgICBXZWJHUFVCdWZmZXIgZHN0LAorICAgICAgICB1NjQgZHN0T2Zm
c2V0LAorICAgICAgICB1NjQgc2l6ZSk7CisKKyAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1cmUo
CisgICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IHNvdXJjZSwKKyAgICAgICAgR1BVVGV4dHVyZUNv
cHlWaWV3IGRlc3RpbmF0aW9uLAorICAgICAgICBHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7CisKKyAg
ICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoCisgICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBz
b3VyY2UsCisgICAgICAgIEdQVUJ1ZmZlckNvcHlWaWV3IGRlc3RpbmF0aW9uLAorICAgICAgICBH
UFVFeHRlbnQzRCBjb3B5U2l6ZSk7CisKKyAgICB2b2lkIGNvcHlUZXh0dXJlVG9UZXh0dXJlKAor
ICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAorICAgICAgICBHUFVUZXh0dXJlQ29w
eVZpZXcgZGVzdGluYXRpb24sCisgICAgICAgIEdQVUV4dGVudDNEIGNvcHlTaXplKTsKKworICAg
IFdlYkdQVUNvbW1hbmRCdWZmZXIgZmluaXNoKCk7CisKKyAgICAvLyBOb3QgWWV0IEltcGxlbWVu
dGVkCisgICAgLy8gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGJlZ2luQ29tcHV0ZVBhc3MoKTsK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApp
bmRleCAzZDY4OWVjYjAzZmQwYTliYmIzZDhiYmVjNzBlYjMxN2RkNzcwMzdiLi5hYjBlN2RhY2Zl
ZGU4MDY4OTY4ZmJkNjg1N2I5MDlhODczNjZmM2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTQ0LDEwICs0NCwxMSBAQAogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKICNpbmNsdWRlICJX
ZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCisjaW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3Jp
cHRvci5oIgogI2luY2x1ZGUgIldlYkdQVUJpbmRHcm91cExheW91dC5oIgogI2luY2x1ZGUgIldl
YkdQVUJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdQVUJ1ZmZlckJpbmRpbmcuaCIKLSNpbmNsdWRl
ICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR1BVQ29tbWFuZEVuY29kZXIu
aCIKICNpbmNsdWRlICJXZWJHUFVQaXBlbGluZUxheW91dC5oIgogI2luY2x1ZGUgIldlYkdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lU3RhZ2VE
ZXNjcmlwdG9yLmgiCkBAIC0xMzcsMTEgKzEzOCwxMCBAQCBSZWY8V2ViR1BVUmVuZGVyUGlwZWxp
bmU+IFdlYkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVy
UAogICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKFdURk1vdmUocGlwZWxp
bmUpKTsKIH0KIAotUmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVURldmljZTo6Y3Jl
YXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0CitSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IFdlYkdQ
VURldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIoKSBjb25zdAogewotICAgIGlmIChhdXRvIGNv
bW1hbmRCdWZmZXIgPSBtX2RldmljZS0+Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpKQotICAgICAgICBy
ZXR1cm4gV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKGNvbW1hbmRCdWZmZXIucmVsZWFzZU5v
bk51bGwoKSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBjb21tYW5kQnVmZmVyID0g
bV9kZXZpY2UtPnRyeUNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKKyAgICByZXR1cm4gV2ViR1BVQ29t
bWFuZEVuY29kZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbW1hbmRCdWZmZXIpKTsKIH0KIAogUmVmPFdl
YkdQVVN3YXBDaGFpbj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVTd2FwQ2hhaW4oY29uc3QgV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKaW5kZXggODZkNTdjMzI5YTQ4YTdkM2I0ZDdh
NzAwY2UzNTJjMDE2MDdmZTcxNS4uNDFmZWFlMGNhNTdkNzVlZjk0NjY4ZDg3ODUxZWRkZDc4NWIw
YWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgK
QEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFdl
YkdQVUJpbmRHcm91cDsKIGNsYXNzIFdlYkdQVUJpbmRHcm91cExheW91dDsKIGNsYXNzIFdlYkdQ
VUJ1ZmZlcjsKLWNsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7CitjbGFzcyBXZWJHUFVDb21tYW5k
RW5jb2RlcjsKIGNsYXNzIFdlYkdQVVBpcGVsaW5lTGF5b3V0OwogY2xhc3MgV2ViR1BVUmVuZGVy
UGlwZWxpbmU7CiBjbGFzcyBXZWJHUFVTYW1wbGVyOwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6
CiAgICAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJikgY29uc3Q7CiAgICAgUmVmPFdlYkdQVVJlbmRlclBp
cGVsaW5lPiBjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3ImKSBjb25zdDsKIAotICAgIFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGVDb21tYW5kQnVmZmVyKCkgY29uc3Q7CisgICAgUmVmPFdlYkdQVUNvbW1hbmRFbmNvZGVyPiBj
cmVhdGVDb21tYW5kRW5jb2RlcigpIGNvbnN0OwogCiAgICAgUmVmPFdlYkdQVVN3YXBDaGFpbj4g
Y3JlYXRlU3dhcENoYWluKGNvbnN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3ImKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKaW5k
ZXggZjQ2MzVhMzQxODExY2M1ODg5ZTNhZWNkMDBlNjdjYTJhZTIzMmUyZS4uNGFiYWExODZlY2Nm
ZDdhZTZlNjhkOWE1NmMxNDE0YjgyMWNhYTgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCkBAIC01NCw4ICs1NCw4IEBAIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyBHUFVUZXh0dXJlVXNhZ2VGbGFnczsKICAgICBXZWJHUFVTaGFkZXJNb2R1bGUg
Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgZGVzY3JpcHRv
cik7CiAgICAgV2ViR1BVUmVuZGVyUGlwZWxpbmUgY3JlYXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogCi0gICAgLy8gRklYTUU6IEN1
cnJlbnRseSwgV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgaXMgYW4gZW1wdHkgZGljdGlv
bmFyeS4KLSAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGNyZWF0ZUNvbW1hbmRCdWZmZXIoLypXZWJH
UFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKi8pOworICAgIC8vIEZJWE1FOiBD
dXJyZW50bHksIEdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciBpcyBhbiBlbXB0eSBkaWN0aW9u
YXJ5LgorICAgIFdlYkdQVUNvbW1hbmRFbmNvZGVyIGNyZWF0ZUNvbW1hbmRFbmNvZGVyKC8qR1BV
Q29tbWFuZEVuY29kZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IqLyk7CiAKICAgICBXZWJHUFVTd2Fw
Q2hhaW4gY3JlYXRlU3dhcENoYWluKFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgZGVzY3JpcHRv
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAppbmRleCAxZWJiYTkyMTllMmQ2ZTBm
OGU0NzFjZTdmNDdmNzgwYmMxM2FiYTQzLi4yY2RlY2E3ZDcwNjFiYjYwMDFiNjVjNmFhOWEzN2M0
ZGRmZDIzMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCkBAIC0zNSwzOSArMzUs
NTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5j
b2Rlcjo6V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoUmVmPFdlYkdQVUNvbW1hbmRCdWZm
ZXI+JiYgY3JlYXRvcikKK1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpXZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+JiYgY3JlYXRvcikK
ICAgICA6IG1fY29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGNyZWF0b3IpKQogewogfQogCi1SZWY8V2Vi
R1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3Mo
KQordm9pZCBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCiB7Ci0gICAg
cGFzc0VuY29kZXIoKS5lbmRQYXNzKCk7Ci0gICAgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5jb3B5
UmVmKCk7CisgICAgaWYgKCFwYXNzRW5jb2RlcigpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpOiBJbnZhbGlkIG9wZXJhdGlvbiEi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwYXNzRW5jb2RlcigpLT5lbmRQYXNzKCk7
CiB9CiAKIHZvaWQgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldEJpbmRHcm91cCh1
bnNpZ25lZCBpbmRleCwgV2ViR1BVQmluZEdyb3VwJiBiaW5kR3JvdXApIGNvbnN0CiB7CisgICAg
aWYgKCFwYXNzRW5jb2RlcigpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGJpbmQgZ3JvdXBz
IHN1cHBvcnRlZCBpbiBXZWIgR1BVLgogICAgIGlmIChpbmRleCA+PSA0KSB7Ci0gICAgICAgIExP
RyhXZWJHUFUsICJXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6
IEludmFsaWQgaW5kZXghIik7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgaW5kZXghIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgaWYgKCFiaW5kR3JvdXAuYmluZEdyb3VwKCkpIHsKLSAgICAgICAg
TE9HKFdlYkdQVSwgIldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRCaW5kR3JvdXAo
KTogSW52YWxpZCBXZWJHUFVCaW5kR3JvdXAhIik7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0QmluZEdyb3VwKCk6IEludmFsaWQgV2ViR1BVQmlu
ZEdyb3VwISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIEZJWE1FOiBBbnkgdmFs
aWRhdGlvbiAoZS5nLiBpbmRleCBkdXBsaWNhdGVzLCBub3QgaW4gcGlwZWxpbmUgbGF5b3V0KS4K
LSAgICBwYXNzRW5jb2RlcigpLnNldEJpbmRHcm91cChpbmRleCwgKmJpbmRHcm91cC5iaW5kR3Jv
dXAoKSk7CisgICAgcGFzc0VuY29kZXIoKS0+c2V0QmluZEdyb3VwKGluZGV4LCAqYmluZEdyb3Vw
LmJpbmRHcm91cCgpKTsKIH0KIAogdm9pZCBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6
c2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVUmVuZGVyUGlwZWxpbmUmIHBpcGVsaW5lKQogeworICAg
IGlmICghcGFzc0VuY29kZXIoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgIGlmICghcGlwZWxpbmUucmVuZGVyUGlwZWxpbmUoKSkg
ewogICAgICAgICBMT0coV2ViR1BVLCAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldFBp
cGVsaW5lKCk6IEludmFsaWQgcGlwZWxpbmUhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgcGFzc0VuY29kZXIoKS5zZXRQaXBlbGluZShtYWtlUmVmKCpwaXBlbGluZS5yZW5kZXJQaXBl
bGluZSgpKSk7CisgICAgcGFzc0VuY29kZXIoKS0+c2V0UGlwZWxpbmUobWFrZVJlZigqcGlwZWxp
bmUucmVuZGVyUGlwZWxpbmUoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuaAppbmRleCA1NDAwNDE0ODE2YTBhNTU3MmM5M2UzZTljMWY5NDRl
NDc3NzFmMzgzLi4zNTZlY2IzNDRlYzcxNWFjYzU0Mzc0YWQyNjE3OWI5Y2RjYjEwMDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQ
YXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShX
RUJHUFUpCiAKLSNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiV2Vi
R1BVQ29tbWFuZEVuY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxNyArNDAsMTcgQEAgY2xhc3MgV2ViR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVQcm9ncmFtbWFibGVQYXNz
RW4KIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcigp
ID0gZGVmYXVsdDsKIAotICAgIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBlbmRQYXNzKCk7Cisg
ICAgdm9pZCBlbmRQYXNzKCk7CiAgICAgdm9pZCBzZXRCaW5kR3JvdXAodW5zaWduZWQsIFdlYkdQ
VUJpbmRHcm91cCYpIGNvbnN0OwogICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3QgV2ViR1BVUmVu
ZGVyUGlwZWxpbmUmKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmKTsKKyAgICBXZWJHUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+JiYpOwogCi0gICAgdmlydHVh
bCBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciYgcGFzc0VuY29kZXIoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciogcGFzc0VuY29kZXIoKSBjb25z
dCA9IDA7CiAKIHByaXZhdGU6Ci0gICAgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IG1fY29tbWFu
ZEJ1ZmZlcjsKKyAgICBSZWY8V2ViR1BVQ29tbWFuZEVuY29kZXI+IG1fY29tbWFuZEJ1ZmZlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlk
bAppbmRleCAzYWNkNjM5NDU2ODNjNGVlZDY4MmZlNTI4YTMxZDJhOGM0N2RkNGI0Li41NzcxOGMy
OGM4NDRlZjNmZTY3NDY2ZmI5MDUwZTcyNGE1ODJkMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaWRsCkBAIC0zMSw3ICszMSw3IEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7CiAg
ICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KIF0g
aW50ZXJmYWNlIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLSAgICBXZWJHUFVDb21t
YW5kQnVmZmVyIGVuZFBhc3MoKTsKKyAgICB2b2lkIGVuZFBhc3MoKTsKICAgICB2b2lkIHNldEJp
bmRHcm91cCh1MzIgaW5kZXgsIFdlYkdQVUJpbmRHcm91cCBiaW5kR3JvdXAvKiwgb3B0aW9uYWwg
c2VxdWVuY2U8dTMyPiBkeW5hbWljT2Zmc2V0cyovKTsKICAgICB2b2lkIHNldFBpcGVsaW5lKFdl
YkdQVVJlbmRlclBpcGVsaW5lIHBpcGVsaW5lKTsgLy8gRklYTUU6IFN1cHBvcnQgV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lcy4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVRdWV1ZS5jcHAKaW5kZXggYjc1ZGQ3NTJkOTFlYTU4ZDUxMDMyN2JjZDUzMzc0OWQ4YmM3YzQx
NC4uYjRmODNlNGFmMWE0YzY3MjMxMWVmZGMwYWI0NGFkNTEzNzQxOTIwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdQVVF1ZXVlLmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsMTEgKzQ1LDE5IEBAIFdlYkdQVVF1ZXVlOjpX
ZWJHUFVRdWV1ZShSZWY8R1BVUXVldWU+JiYgcXVldWUpCiB7CiB9CiAKLXZvaWQgV2ViR1BVUXVl
dWU6OnN1Ym1pdChWZWN0b3I8UmVmUHRyPFdlYkdQVUNvbW1hbmRCdWZmZXI+PiYmIGJ1ZmZlcnMp
Cit2b2lkIFdlYkdQVVF1ZXVlOjpzdWJtaXQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJHUFVDb21t
YW5kQnVmZmVyPj4mIGJ1ZmZlcnMpCiB7Ci0gICAgYXV0byBncHVCdWZmZXJzID0gYnVmZmVycy5t
YXAoW10gKGF1dG8mIGJ1ZmZlcikgLT4gUmVmPEdQVUNvbW1hbmRCdWZmZXI+IHsKLSAgICAgICAg
cmV0dXJuIGJ1ZmZlci0+Y29tbWFuZEJ1ZmZlcigpOwotICAgIH0pOworICAgIFZlY3RvcjxSZWY8
R1BVQ29tbWFuZEJ1ZmZlcj4+IGdwdUJ1ZmZlcnM7CisgICAgZ3B1QnVmZmVycy5yZXNlcnZlQ2Fw
YWNpdHkoYnVmZmVycy5zaXplKCkpOworICAgIAorICAgIGZvciAoYXV0byYgYnVmZmVyIDogYnVm
ZmVycykgeworICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5jb21tYW5kQnVmZmVyKCkp
IHsKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1ZTo6c3VibWl0KCk6IEludmFsaWQg
R1BVQ29tbWFuZEJ1ZmZlciBpbiBsaXN0ISIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGdwdUJ1ZmZlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VSZWYoKmJ1ZmZlci0+
Y29tbWFuZEJ1ZmZlcigpKSk7CisgICAgfQorCiAgICAgbV9xdWV1ZS0+c3VibWl0KFdURk1vdmUo
Z3B1QnVmZmVycykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UXVldWUuaAppbmRleCA0NDZlZGY4ZTk1ODZiOWU5NWIyNDQ0YjYwMWQxMGU0YmViYzRlOTMwLi5m
MGE3NmY4MWRmY2E2MWM4YjFlMGQ4MjU3YTNlNjg4Mjc1NTMxYmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
V2ViR1BVUXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVRdWV1ZT4gewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUXVldWU+IGNyZWF0ZShSZWZQdHI8R1BVUXVldWU+JiYp
OwogCi0gICAgdm9pZCBzdWJtaXQoVmVjdG9yPFJlZlB0cjxXZWJHUFVDb21tYW5kQnVmZmVyPj4m
Jik7CisgICAgdm9pZCBzdWJtaXQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJHUFVDb21tYW5kQnVm
ZmVyPj4mKTsKIAogICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWUtPmxh
YmVsKCk7IH0KICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIHsgbV9xdWV1
ZS0+c2V0TGFiZWwobGFiZWwpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVRdWV1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVRdWV1ZS5pZGwKaW5kZXggMmY2YTcwOWY5MGE5NzY0NDRkMGYwNzZhOWY0YjRlNzI4Njkw
OTMyNC4uNWExYTE1YWVkYjJlZDM5NjQ2ZTE4MTliMDJkODVjZjZiZjM0MjIyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUXVldWUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVF1ZXVlLmlkbApAQCAtMzQsNCArMzQs
NCBAQAogICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVkLgogICAgIC8vIHZvaWQgc2lnbmFsKFdl
YkdQVUZlbmNlIGZlbmNlLCB1NjQgc2lnbmFsVmFsdWUpOwogICAgIC8vIHZvaWQgd2FpdChXZWJH
UFVGZW5jZSBmZW5jZSwgdTY0IHZhbHVlVG9XYWl0KTsKLX07ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAppbmRleCA5ODgzMjliM2U3Y2MwZjI4MWFkZTZk
YTBlM2I5OTYyY2I3Mjc3YzNkLi5mZjU4YWE0MWUzZmU0ZTQ1YzVmYzQ5OTIzMTA1MmVkMGM4MGMx
ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyOjpjcmVhdGUoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYgY29tbWFuZEJ1ZmZl
ciwgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiYmIGVuY29kZXIpCitSZWY8V2ViR1BVUmVuZGVy
UGFzc0VuY29kZXI+IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoUmVmPFdlYkdQVUNv
bW1hbmRFbmNvZGVyPiYmIGNvbW1hbmRCdWZmZXIsIFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rl
cj4mJiBlbmNvZGVyKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyKFdURk1vdmUoY29tbWFuZEJ1ZmZlciksIFdURk1vdmUoZW5jb2RlcikpKTsKIH0K
IAotV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZjxX
ZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNyZWF0b3IsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4m
JiBlbmNvZGVyKQorV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OldlYkdQVVJlbmRlclBhc3NFbmNv
ZGVyKFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4mJiBjcmVhdG9yLCBSZWZQdHI8R1BVUmVuZGVy
UGFzc0VuY29kZXI+JiYgZW5jb2RlcikKICAgICA6IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNv
ZGVyKFdURk1vdmUoY3JlYXRvcikpCiAgICAgLCBtX3Bhc3NFbmNvZGVyKFdURk1vdmUoZW5jb2Rl
cikpCiB7CkBAIC01MiwxMSArNTIsMTQgQEAgdm9pZCBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6
c2V0VmVydGV4QnVmZmVycyh1bnNpZ25lZCBsb25nIHN0YXJ0U2xvdCwgVmVjdG9yPFIKICNpZiAh
TE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVJl
bmRlclBhc3NFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXJzKCkiOwogI2VuZGlmCisgICAgaWYgKCFt
X3Bhc3NFbmNvZGVyKSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBvcGVyYXRp
b24hIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpZiAoYnVm
ZmVycy5pc0VtcHR5KCkgfHwgYnVmZmVycy5zaXplKCkgIT0gb2Zmc2V0cy5zaXplKCkpIHsKICAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIG51bWJlciBvZiBidWZmZXJzIG9yIG9mZnNl
dHMhIiwgZnVuY3Rpb25OYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQogICAgIGlmIChz
dGFydFNsb3QgKyBidWZmZXJzLnNpemUoKSA+IG1heFZlcnRleEJ1ZmZlcnMpIHsKICAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIHN0YXJ0U2xvdCAlbHUgZm9yICVsdSBidWZmZXJzISIs
IGZ1bmN0aW9uTmFtZSwgc3RhcnRTbG90LCBidWZmZXJzLnNpemUoKSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTg0LDExICs4NywxNSBAQCB2b2lkIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRW
ZXJ0ZXhCdWZmZXJzKHVuc2lnbmVkIGxvbmcgc3RhcnRTbG90LCBWZWN0b3I8UgogCiB2b2lkIFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KHVuc2lnbmVkIGxvbmcgdmVydGV4Q291bnQsIHVu
c2lnbmVkIGxvbmcgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQgbG9uZyBmaXJzdFZlcnRleCwgdW5z
aWduZWQgbG9uZyBmaXJzdEluc3RhbmNlKQogeworICAgIGlmICghbV9wYXNzRW5jb2Rlcikgewor
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoKTogSW52YWxp
ZCBvcGVyYXRpb24hIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgLy8gRklYTUU6IFdo
YXQga2luZCBvZiB2YWxpZGF0aW9uIGRvIHdlIG5lZWQgdG8gaGFuZGxlIGhlcmU/CiAgICAgbV9w
YXNzRW5jb2Rlci0+ZHJhdyh2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgs
IGZpcnN0SW5zdGFuY2UpOwogfQogCi1HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciYgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkgY29uc3QKK0dQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyKiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6cGFzc0VuY29kZXIoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3Bhc3NFbmNvZGVyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXgg
ZDBkZTBkN2RmNGM1NWJkNTE0MjQwZDgzNzQwYjg4YjVhMzRhOTMyMC4uNDc5Mjc5Y2E4MWRhYjc2
NTk1ZmU2NmRjMTc4YjBkNzQ1NTk1ZTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCkBAIC00MCwxNyArNDAs
MTcgQEAgY2xhc3MgV2ViR1BVQnVmZmVyOwogCiBjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ciBmaW5hbCA6IHB1YmxpYyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxXZWJH
UFVDb21tYW5kQnVmZmVyPiYmLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOworICAgIHN0
YXRpYyBSZWY8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShSZWY8V2ViR1BVQ29tbWFu
ZEVuY29kZXI+JiYsIFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CiAKICAgICB2b2lk
IHNldFZlcnRleEJ1ZmZlcnModW5zaWduZWQgbG9uZywgVmVjdG9yPFJlZlB0cjxXZWJHUFVCdWZm
ZXI+PiYmLCBWZWN0b3I8dW5zaWduZWQgbG9uZyBsb25nPiYmKTsKICAgICB2b2lkIGRyYXcodW5z
aWduZWQgbG9uZyB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQgbG9uZyBpbnN0YW5jZUNvdW50LCB1bnNp
Z25lZCBsb25nIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBsb25nIGZpcnN0SW5zdGFuY2UpOwogCiBw
cml2YXRlOgotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyKFJlZjxXZWJHUFVDb21tYW5kQnVm
ZmVyPiYmLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOworICAgIFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyKFJlZjxXZWJHUFVDb21tYW5kRW5jb2Rlcj4mJiwgUmVmUHRyPEdQVVJlbmRlclBh
c3NFbmNvZGVyPiYmKTsKIAotICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyJiBwYXNzRW5j
b2RlcigpIGNvbnN0IGZpbmFsOworICAgIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwYXNz
RW5jb2RlcigpIGNvbnN0IGZpbmFsOwogCi0gICAgUmVmPEdQVVJlbmRlclBhc3NFbmNvZGVyPiBt
X3Bhc3NFbmNvZGVyOworICAgIFJlZlB0cjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gbV9wYXNzRW5j
b2RlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCmluZGV4IGRiNjFkNDdjZjVkYjY1
ZDQyZWE3ZWM0MzEyYjZmNDM0NjZjMzkwYTMuLjM2MjU5ZDdmNmUxM2JkNjI2MDYyMDgwNzdhZWM5
N2U0MzNlMDIzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVN3YXBDaGFpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU3dhcENoYWluLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZWY8V2ViR1BVVGV4dHVyZT4gV2Vi
R1BVU3dhcENoYWluOjpnZXRDdXJyZW50VGV4dHVyZSgpCiAgICAgICAgIHJldHVybiBXZWJHUFVU
ZXh0dXJlOjpjcmVhdGUobnVsbHB0cik7CiAgICAgfQogICAgIG1fY3VycmVudFRleHR1cmUgPSBX
ZWJHUFVUZXh0dXJlOjpjcmVhdGUobV9zd2FwQ2hhaW4tPnRyeUdldEN1cnJlbnRUZXh0dXJlKCkp
OwotICAgIHJldHVybiBtX2N1cnJlbnRUZXh0dXJlLnJlbGVhc2VOb25OdWxsKCk7CisgICAgcmV0
dXJuIG1ha2VSZWYoKm1fY3VycmVudFRleHR1cmUpOwogfQogCiB2b2lkIFdlYkdQVVN3YXBDaGFp
bjo6ZGVzdHJveSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVkMTg4ZDM4NmU2YmEwYWRlYjMwZTQ0Mjk1
NTIwMTQ4NjllYmEzMDAuLjY2MzQ1YzYwMzk0MzViNTYyOWIwZTY0YTAwNWJhZmQ2YmQxNTA3ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0zNTIsMTAgKzM1MiwxMSBAQCBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFByZXBhcmUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVCaW5kR3JvdXAuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmNwcAorTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKK01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cExheW91dC5jcHAK
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVRdWV1ZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5
b3V0LmNwcApAQCAtMzMzOSw2ICszMzQwLDcgQEAgSlNXZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3Bw
CiBKU1dlYkdQVUJ1ZmZlci5jcHAKIEpTV2ViR1BVQnVmZmVyQmluZGluZy5jcHAKIEpTV2ViR1BV
Q29tbWFuZEJ1ZmZlci5jcHAKK0pTV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCiBKU1dlYkdQVURl
dmljZS5jcHAKIEpTV2ViR1BVUXVldWUuY3BwCiBKU1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMTgxMmU5MDk3OTMzYTU1ZDFiYjQwOTc0ODc5YzFlMTNlY2NhNGU0MC4uMzQz
NDY3YzNlMDMzOWFjNTFhYjIzOTdkYTA4ZWMxZjIwM2FlYzYwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwODYsNiArMTQw
ODYsOSBAQAogCQlEMDVBOTlFNjIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlv
dXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lTGF5b3V0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFu
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tD
b21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjgwQTQwQkIy
QzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUQwNURENkREMjIzODg0MDYwMDk3QTgzNCAvKiBXZWJHUFVDb21tYW5kQnVmZmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEMDVERDZERTIyMzg4NDA3MDA5N0E4MzQgLyogV2ViR1BVQ29t
bWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNURENkRGMjIzODg0MDcwMDk3QTgzNCAvKiBXZWJH
UFVDb21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2MEQ4ODQyMTgyNUQ1RjAwMzM5MzE4IC8qIFdlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDYwRDg4NzIxODI2OTcw
MDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwNjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDE5NSw5ICsxNDE5OCw5IEBACiAJCUQwREEwQkU2MjE3OTMwRTIwMDdGRTJB
QyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwREU4RkI4MjIyRTA5RTIwMDg4MjU1MCAvKiBHUFVT
aGFkZXJTdGFnZUJpdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJTdGFnZUJpdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMERFOEZCOTIyMkUwOUUyMDA4ODI1NTAgLyogR1BV
U2hhZGVyU3RhZ2VCaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVVNoYWRlclN0YWdlQml0LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGNzYyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNv
bW1hbmRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y3NzIxOTM3MjI4MDAwRkE3NUMgLyogV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVm
ZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGNzgyMTkzNzIyODAw
MEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZm
ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEVBQ0Y3NjIxOTM3MjI4MDAw
RkE3NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29t
bWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBFQUNGNzcyMTkz
NzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRDBFQUNGNzgyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRFbmNvZGVyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQwRUFDRjg0MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVVRleHR1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBF
QUNGODUyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViR1BVVGV4dHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
RUFDRjg2MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVUZXh0dXJlLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVU
ZXh0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MTc2LDkgKzI2MTc5
LDEyIEBACiAJCQkJRDBEODY0OEUyMUI3MDY3NjAwM0M5ODNDIC8qIFdlYkdQVUJ1ZmZlci5pZGwg
Ki8sCiAJCQkJRDBCRTEwNEMyMUU2OEYxNTAwRTQyQTg5IC8qIFdlYkdQVUJ1ZmZlckJpbmRpbmcu
aCAqLywKIAkJCQlEMEJFMTA0RDIxRTY4RjE1MDBFNDJBODkgLyogV2ViR1BVQnVmZmVyQmluZGlu
Zy5pZGwgKi8sCi0JCQkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRC
dWZmZXIuY3BwICovLAotCQkJCUQwRUFDRjc2MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21t
YW5kQnVmZmVyLmggKi8sCi0JCQkJRDBFQUNGNzgyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNv
bW1hbmRCdWZmZXIuaWRsICovLAorCQkJCUQwNURENkREMjIzODg0MDYwMDk3QTgzNCAvKiBXZWJH
UFVDb21tYW5kQnVmZmVyLmNwcCAqLywKKwkJCQlEMDVERDZERTIyMzg4NDA3MDA5N0E4MzQgLyog
V2ViR1BVQ29tbWFuZEJ1ZmZlci5oICovLAorCQkJCUQwNURENkRGMjIzODg0MDcwMDk3QTgzNCAv
KiBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbCAqLywKKwkJCQlEMEVBQ0Y3NzIxOTM3MjI4MDAwRkE3
NUMgLyogV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwICovLAorCQkJCUQwRUFDRjc2MjE5MzcyMjgw
MDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kRW5jb2Rlci5oICovLAorCQkJCUQwRUFDRjc4MjE5Mzcy
MjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kRW5jb2Rlci5pZGwgKi8sCiAJCQkJRDAwRjU5NTMy
MTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5jcHAgKi8sCiAJCQkJRDAwRjU5NTIyMTcw
MUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5oICovLAogCQkJCUQwMEY1OTU0MjE3MDFEOEMw
MDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaWRsICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IGU2ZjEwOWM2YTQ4NzcwOGQyYTgw
ZDY3YmE5MDM1MDg0MTVlYjIzMWEuLmMzNDk1OTM4YmUzYTk0MmMyNmNjOWUyZGEyMGVjZDM5YmI5
MmY2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRp
bk5hbWVzLmgKQEAgLTg0LDYgKzg0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3Jv
KEdQVUJ1ZmZlclVzYWdlKSBcCiAgICAgbWFjcm8oR1BVQ2FudmFzQ29udGV4dCkgXAogICAgIG1h
Y3JvKEdQVVNoYWRlck1vZHVsZSkgXAorICAgIG1hY3JvKEdQVUNvbW1hbmRCdWZmZXIpIFwKKyAg
ICBtYWNybyhHUFVDb21tYW5kRW5jb2RlcikgXAogICAgIG1hY3JvKEdQVVNoYWRlclN0YWdlQml0
KSBcCiAgICAgbWFjcm8oR1BVU3dhcENoYWluKSBcCiAgICAgbWFjcm8oR1BVVGV4dHVyZVVzYWdl
KSBcCkBAIC0yMDEsNyArMjAzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKFdl
YkdQVUJpbmRHcm91cCkgXAogICAgIG1hY3JvKFdlYkdQVUJpbmRHcm91cExheW91dCkgXAogICAg
IG1hY3JvKFdlYkdQVUJ1ZmZlcikgXAotICAgIG1hY3JvKFdlYkdQVUNvbW1hbmRCdWZmZXIpIFwK
ICAgICBtYWNybyhXZWJHUFVEZXZpY2UpIFwKICAgICBtYWNybyhXZWJHUFVJbmRleEZvcm1hdCkg
XAogICAgIG1hY3JvKFdlYkdQVUlucHV0U3RlcE1vZGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCmluZGV4IDNh
OTI4YmIwYWRlMTZmZDFiZTM2NjJkYzEwNWNhNWFiYmJmYTQ5ZWQuLmNiYjIyYjkxZjU5YjZlZWQw
YTQ5OTU2ZGY3YTk3ZTE5Yzk0ZGU3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaApAQCAtMjcsNyArMjcsOSBA
QAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIkdQVUJ1ZmZlci5oIgogI2luY2x1
ZGUgIkdQVU9yaWdpbjNELmgiCisjaW5jbHVkZSAiR1BVVGV4dHVyZS5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTM4LDkgKzQwLDcgQEAgT0JKQ19QUk9UT0NPTChNVExDb21tYW5kQnVm
ZmVyKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHUFVCdWZmZXI7CiBjbGFzcyBH
UFVEZXZpY2U7Ci1jbGFzcyBHUFVUZXh0dXJlOwogCiBzdHJ1Y3QgR1BVRXh0ZW50M0Q7CiAKQEAg
LTgxLDcgKzgxLDcgQEAgc3RydWN0IEdQVVRleHR1cmVDb3B5VmlldyBmaW5hbCA6IEdQVVRleHR1
cmVDb3B5Vmlld0Jhc2UgewogCiBjbGFzcyBHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNv
dW50ZWQ8R1BVQ29tbWFuZEJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BV
Q29tbWFuZEJ1ZmZlcj4gY3JlYXRlKEdQVURldmljZSYpOworICAgIHN0YXRpYyBSZWZQdHI8R1BV
Q29tbWFuZEJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYpOwogCiAgICAgUGxhdGZv
cm1Db21tYW5kQnVmZmVyKiBwbGF0Zm9ybUNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtQ29tbWFuZEJ1ZmZlci5nZXQoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWY8R1BV
QnVmZmVyPj4mIHVzZWRCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV91c2VkQnVmZmVyczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmlj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNw
cAppbmRleCA4YjczNTE4MDRhNWFkNWIxNTMzMmRiY2JjMWFmOTc0YTBhMmU3NjEyLi45YmRmNjY2
Y2Q3ZjMwMmY3MGI0ZjNjMThiMzFiY2U5NjdmMmY0NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcApAQCAtODMsOSArODMsOSBA
QCBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxp
bmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcgogICAgIHJldHVybiBHUFVSZW5kZXJQaXBlbGluZTo6
Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKIH0KIAotUmVmUHRyPEdQVUNvbW1h
bmRCdWZmZXI+IEdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpCitSZWZQdHI8R1BVQ29t
bWFuZEJ1ZmZlcj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4g
R1BVQ29tbWFuZEJ1ZmZlcjo6dHJ5Q3JlYXRlKCp0aGlzKTsKIH0KIAogUmVmUHRyPEdQVVN3YXBD
aGFpbj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVTd2FwQ2hhaW4oY29uc3QgR1BVU3dhcENoYWluRGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCmluZGV4IDVj
ZjRlYjdmMjU3MmY3NjNjODA3MDViODBmODA5YmZiYWJlMTQ2MTIuLjhmZTk2OTM0MjFhYjJiYzBl
NWJkNjlmYTM1ZDQ5NjYzZjU0NzFhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKQEAgLTM3LDkgKzM3LDYgQEAgT0JKQ19QUk9UT0NP
TChNVExEZXZpY2UpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIFBsYXRmb3JtRGV2
aWNlID0gTVRMRGV2aWNlOwotdXNpbmcgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciA9IFJldGFpblB0
cjxNVExEZXZpY2U+OwotCiBjbGFzcyBHUFVCaW5kR3JvdXBMYXlvdXQ7CiBjbGFzcyBHUFVCdWZm
ZXI7CiBjbGFzcyBHUFVDb21tYW5kQnVmZmVyOwpAQCAtNTgsNiArNTUsOSBAQCBzdHJ1Y3QgR1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zOwogc3RydWN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yOwogc3Ry
dWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3I7CiBzdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0
b3I7CisgICAgCit1c2luZyBQbGF0Zm9ybURldmljZSA9IE1UTERldmljZTsKK3VzaW5nIFBsYXRm
b3JtRGV2aWNlU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMRGV2aWNlPjsKIAogY2xhc3MgR1BVRGV2
aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PEdQVURldmljZT4gewogcHVibGljOgpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgUmVm
UHRyPEdQVVNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3ImJikgY29uc3Q7CiAgICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGVS
ZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJikgY29uc3Q7CiAKLSAg
ICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlQ29tbWFuZEJ1ZmZlcigpOworICAgIFJl
ZlB0cjxHUFVDb21tYW5kQnVmZmVyPiB0cnlDcmVhdGVDb21tYW5kQnVmZmVyKCkgY29uc3Q7CiAK
ICAgICBSZWZQdHI8R1BVU3dhcENoYWluPiB0cnlDcmVhdGVTd2FwQ2hhaW4oY29uc3QgR1BVU3dh
cENoYWluRGVzY3JpcHRvciYsIGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21t
YW5kQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCmluZGV4IGM5MmM1NDRkMTUxYWFhZTk0Yjcx
ZWRmODYwMjc3MGI1NWNiNTdiMDYuLmU0YzQyMzk3OWEzMWYwOTQ1YWYyZjIwMGZiMDJkNWQwZGRi
NTk1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQpAQCAtMjgsMTEg
KzI4LDkgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKLSNpbXBvcnQgIkdQVUJ1ZmZlci5oIgog
I2ltcG9ydCAiR1BVRGV2aWNlLmgiCiAjaW1wb3J0ICJHUFVFeHRlbnQzRC5oIgogI2ltcG9ydCAi
R1BVUXVldWUuaCIKLSNpbXBvcnQgIkdQVVRleHR1cmUuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
IAogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KQEAgLTQxLDcgKzM5LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVQ29tbWFuZEJ1ZmZlcjo6
Y3JlYXRlKEdQVURldmljZSYgZGV2aWNlKQorUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVUNv
bW1hbmRCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKIHsKICAgICBp
ZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVD
b21tYW5kQnVmZmVyOjpjcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDdk
ZGZiZjY2OWU2MzhlNDVhZWFmYmE4YjVmOWRlNGIwZTA4YWIwZC4uMGZhYzRlNzcyNDA1M2QwYThl
ZDk4OWUyZjE3NTY2YjZiN2YyYzE5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTAzLTE0
ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVd
IFVwZGF0ZXMgdG8gR1BVQ29tbWFuZEJ1ZmZlciBmb3IgbmV3IEdQVUNvbW1hbmRFbmNvZGVyIGNv
bmNlcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTA4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg0MjM1OTE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIEZpeGluZyBidWlsZCBlcnJvciBhbmQgcmUt
aW50cm9kdWNpbmcgcm9sbGVkLW91dCBjaGFuZ2VzLgorICAgICAgICBVcGRhdGUgZXhpc3Rpbmcg
V2ViIEdQVSB0ZXN0cyBmb3IgR1BVQ29tbWFuZEVuY29kZXIgYW5kIG5ldyBHUFVDb21tYW5kQnVm
ZmVyLgorCisgICAgICAgICogd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbDoKKyAgICAgICAgKiB3
ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWw6CisgICAgICAgICogd2ViZ3B1
L2J1ZmZlci1yZXNvdXJjZS10cmlhbmdsZXMuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvY29tbWFu
ZC1idWZmZXJzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJncHUvY29tbWFuZC1idWZmZXJz
Lmh0bWw6CisgICAgICAgICogd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRt
bDoKKyAgICAgICAgKiB3ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9ucy5qczoKKyAgICAgICAgKGJl
Z2luQmFzaWNSZW5kZXJQYXNzKToKKyAgICAgICAgKiB3ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5j
b2RpbmcuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWw6
CisgICAgICAgICogd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbDoKKyAgICAgICAg
KiB3ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sOgorCiAyMDE5LTAzLTE0
ICBTaGF3biBSb2JlcnRzICA8c3JvYmVydHNAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyNDI5MzEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
YmxpdC1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRt
bAppbmRleCAxNDkzZjViMDRkOGU0ODlhZjVlMTc1YmNlODAwY2UxMWEwMjUzZjgyLi5kNzE5NDdl
ZjhkMTQyYTA3ZmM0NTc1ZmQ4YTlkN2IxMWM5NmU4NWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy93ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0
LWNvbW1hbmRzLmh0bWwKQEAgLTg1LDEyICs4NSwxMyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0KGlt
YWdlKSB7CiAgICAgICAgIGltYWdlSGVpZ2h0OiAwCiAgICAgfTsKIAotICAgIGNvbnN0IGNvbW1h
bmRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAgIGNvbW1hbmRCdWZm
ZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlckEsIDAsIGJ1ZmZlckIsIDAsIGltYWdlRGF0YS5k
YXRhLmJ5dGVMZW5ndGgpOwotICAgIGNvbW1hbmRCdWZmZXIuY29weUJ1ZmZlclRvVGV4dHVyZShi
dWZmZXJWaWV3QiwgdGV4dHVyZVZpZXdBLCB0ZXh0dXJlU2l6ZSk7Ci0gICAgY29tbWFuZEJ1ZmZl
ci5jb3B5VGV4dHVyZVRvVGV4dHVyZSh0ZXh0dXJlVmlld0EsIHRleHR1cmVWaWV3QiwgdGV4dHVy
ZVNpemUpOwotICAgIGNvbW1hbmRCdWZmZXIuY29weVRleHR1cmVUb0J1ZmZlcih0ZXh0dXJlVmll
d0IsIHJlYWRCdWZmZXJWaWV3LCB0ZXh0dXJlU2l6ZSk7Ci0gICAgZGV2aWNlLmdldFF1ZXVlKCku
c3VibWl0KFtjb21tYW5kQnVmZmVyXSk7CisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZp
Y2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5QnVmZmVy
VG9CdWZmZXIoYnVmZmVyQSwgMCwgYnVmZmVyQiwgMCwgaW1hZ2VEYXRhLmRhdGEuYnl0ZUxlbmd0
aCk7CisgICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJWaWV3Qiwg
dGV4dHVyZVZpZXdBLCB0ZXh0dXJlU2l6ZSk7CisgICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZl
clRvVGV4dHVyZShidWZmZXJWaWV3QiwgdGV4dHVyZVZpZXdBLCB0ZXh0dXJlU2l6ZSk7CisgICAg
Y29tbWFuZEVuY29kZXIuY29weVRleHR1cmVUb1RleHR1cmUodGV4dHVyZVZpZXdBLCB0ZXh0dXJl
Vmlld0IsIHRleHR1cmVTaXplKTsKKyAgICBjb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRvQnVm
ZmVyKHRleHR1cmVWaWV3QiwgcmVhZEJ1ZmZlclZpZXcsIHRleHR1cmVTaXplKTsKKyAgICBkZXZp
Y2UuZ2V0UXVldWUoKS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7CiAgICAgYnVm
ZmVyQS5kZXN0cm95KCk7CiAgICAgYnVmZmVyQi5kZXN0cm95KCk7CiAgICAgdGV4dHVyZUEuZGVz
dHJveSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1
ZmZlci1yYWNlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZl
ci1yYWNlcy5odG1sCmluZGV4IGQzMzI5NjZmMzhjNTM5YTllMjgwZjRhODliYjI2ZDZhMmYyYTZi
ZmUuLjk5OTRkZWRjZjcxNDdhZWU3MzFhMjk3YmEwN2M4OTlhNzUzNTMwN2MgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwKQEAg
LTc2LDEzICs3NiwxMyBAQCBmdW5jdGlvbiBjcmVhdGVBbmRTZXRWZXJ0ZXhCdWZmZXIoZGV2aWNl
LCB2ZXJ0aWNlcykgewogfQogCiBmdW5jdGlvbiBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNl
LCBwaXBlbGluZSwgYXR0YWNobWVudCwgdmVydGV4QnVmZmVyLCBjb2xvckJ1ZmZlcikgewotICAg
IGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEJ1ZmZlcigpOwotICAg
IGNvbnN0IGVuY29kZXIgPSBjb21tYW5kQnVmZmVyLmJlZ2luUmVuZGVyUGFzcyh7IGNvbG9yQXR0
YWNobWVudHM6IFthdHRhY2htZW50XSB9KTsKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGNvbnN0IGVuY29kZXIgPSBjb21tYW5k
RW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRzOiBbYXR0YWNobWVudF0g
fSk7CiAgICAgZW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXIsIGNvbG9y
QnVmZmVyXSwgWzAsIDBdKTsKICAgICBlbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKICAg
ICBlbmNvZGVyLmRyYXcoMywgMSwgMCwgMCk7CiAgICAgZW5jb2Rlci5lbmRQYXNzKCk7Ci0gICAg
ZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7CisgICAgZGV2aWNlLmdl
dFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwogfQogCiBhc3luYyBm
dW5jdGlvbiB0ZXN0KCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1y
ZXNvdXJjZS10cmlhbmdsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItcmVzb3Vy
Y2UtdHJpYW5nbGVzLmh0bWwKaW5kZXggNjBlMjdkNTE0ZGE2NmQ2M2IzZmVkNmViNjRhMDYwYjhh
MzViMzIwYS4uNjNmYmYzYTk2NWY4OGE1ZThhNWZmMTBmYmM1MGRhYzY1ZGRjMGE2OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1yZXNvdXJjZS10cmlhbmdsZXMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLXJlc291cmNlLXRyaWFuZ2xlcy5odG1sCkBA
IC0xOTQsOCArMTk0LDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICB9KTsKIAogICAg
IFByb21pc2UuYWxsKGJ1ZmZlclByb21pc2VzKS50aGVuKCgpID0+IHsKLSAgICAgICAgY29uc3Qg
Y29tbWFuZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0gICAgICAgIGNv
bnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5k
QnVmZmVyKTsKKyAgICAgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29t
bWFuZEVuY29kZXIoKTsKKyAgICAgICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdpbkJhc2ljUmVu
ZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKICAgICAgICAgcGFzc0VuY29kZXIu
c2V0UGlwZWxpbmUocGlwZWxpbmUpOwogCiAgICAgICAgIC8vIFZlcnRleCBkYXRhIGZvciB1cHBl
ciB0cmlhbmdsZXMuCkBAIC0yMDUsOSArMjA1LDkgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsK
ICAgICAgICAgcGFzc0VuY29kZXIuc2V0VmVydGV4QnVmZmVycygwLCBbdmVydGljZXNCdWZmZXJd
LCBbMF0pOwogICAgICAgICBwYXNzRW5jb2Rlci5kcmF3KDksIDEsIDAsIDApOwogCi0gICAgICAg
IGNvbnN0IGVuZENvbW1hbmRCdWZmZXIgPSBwYXNzRW5jb2Rlci5lbmRQYXNzKCk7CisgICAgICAg
IHBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKICAgICAgICAgY29uc3QgcXVldWUgPSBkZXZpY2UuZ2V0
UXVldWUoKTsKLSAgICAgICAgcXVldWUuc3VibWl0KFtlbmRDb21tYW5kQnVmZmVyXSk7CisgICAg
ICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKIAogICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbW1hbmQtYnVmZmVycy1leHBlY3RlZC50eHQK
aW5kZXggZDdjZTA1ZGM5OWI5N2I1OGNmMTAyMjVhNzU1OTI3Nzg5Y2E5ZGYwOS4uZTBjZjQxZGZj
ODE2OWNhMDA4NzQwNDcwY2UzMDVlYTAwZjRiNmVkNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2NvbW1hbmQtYnVmZmVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
Z3B1L2NvbW1hbmQtYnVmZmVycy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLVBBU1Mg
Q3JlYXRlIGEgZGVmYXVsdCBHUFVDb21tYW5kQnVmZmVyLiAKK1BBU1MgQ3JlYXRlIGEgZGVmYXVs
dCBHUFVDb21tYW5kRW5jb2Rlci4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9j
b21tYW5kLWJ1ZmZlcnMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21tYW5kLWJ1ZmZlcnMu
aHRtbAppbmRleCBiYWY2Mzc5YWQwNjc3NDExYjUyM2ZiODBkNTllMTRiYTYxNmYxMzIxLi44MzNh
MzgzYjI5ZGQzNTM5M2NlOGM4NTY5MDBjNTgzZjM4YzY0Nzc0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvY29tbWFuZC1idWZmZXJzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L2NvbW1hbmQtYnVmZmVycy5odG1sCkBAIC02LDEwICs2LDEwIEBACiA8c2NyaXB0PgogcHJvbWlz
ZV90ZXN0KGFzeW5jICgpID0+IHsKICAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCBnZXRCYXNpY0Rl
dmljZSgpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEJ1
ZmZlcigpOwotICAgIGFzc2VydF90cnVlKGNvbW1hbmRCdWZmZXIgaW5zdGFuY2VvZiBXZWJHUFVD
b21tYW5kQnVmZmVyLCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgR1BVQ29tbWFuZEJ1ZmZlci4iKTsK
LX0sICJDcmVhdGUgYSBkZWZhdWx0IEdQVUNvbW1hbmRCdWZmZXIuIik7CisgICAgY29uc3QgY29t
bWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICBhc3NlcnRf
dHJ1ZShjb21tYW5kRW5jb2RlciBpbnN0YW5jZW9mIEdQVUNvbW1hbmRFbmNvZGVyLCAiU3VjY2Vz
c2Z1bGx5IGNyZWF0ZWQgR1BVQ29tbWFuZEVuY29kZXIuIik7Cit9LCAiQ3JlYXRlIGEgZGVmYXVs
dCBHUFVDb21tYW5kRW5jb2Rlci4iKTsKIAotLy8gRklYTUU6IGNyZWF0ZUNvbW1hbmRCdWZmZXIg
c2hvdWxkIHRha2UgYSBHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvciwgd2hpY2ggaXMgY3VycmVu
dGx5IGFuIGVtcHR5IGRpY3Rpb25hcnkuCisvLyBGSVhNRTogY3JlYXRlQ29tbWFuZEVuY29kZXIg
c2hvdWxkIHRha2UgYSBHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IsIHdoaWNoIGlzIGN1cnJl
bnRseSBhbiBlbXB0eSBkaWN0aW9uYXJ5LgogPC9zY3JpcHQ+CiA8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVu
YWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFi
bGVkLXRyaWFuZ2xlLXN0cmlwLmh0bWwKaW5kZXggNjYwNDhlOGNjMzM0MWFmMTA0MzFjOTkxNzZk
MGZiNjQ3MjI4YWI5ZC4uNTQwNzE4ZDU0OWZmMmU3NzgzMTFkNDg2YmU0OTM3M2YyNjA5ZjMzZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3Ry
aXAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1z
dHJpcC5odG1sCkBAIC04OSw3ICs4OSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAg
Y29uc3QgaW5wdXRTdGF0ZURlc2NyaXB0b3IgPSBjcmVhdGVJbnB1dFN0YXRlRGVzY3JpcHRvcigp
OwogICAgIGNvbnN0IGRlcHRoU3RhdGVEZXNjcmlwdG9yID0gY3JlYXRlQmFzaWNEZXB0aFN0YXRl
RGVzY3JpcHRvcigpOwogICAgIGNvbnN0IHBpcGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShz
aGFkZXJNb2R1bGUsIGRldmljZSwgbnVsbCwgaW5wdXRTdGF0ZURlc2NyaXB0b3IsIGRlcHRoU3Rh
dGVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRCdWZmZXIoKTsKKyAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVD
b21tYW5kRW5jb2RlcigpOwogCiAgICAgY29uc3QgYmFzaWNBdHRhY2htZW50ID0gewogICAgICAg
ICBhdHRhY2htZW50OiBzd2FwQ2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0
VGV4dHVyZVZpZXcoKSwKQEAgLTEwNSw3ICsxMDUsNyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0KCkg
ewogICAgICAgICBjbGVhckRlcHRoOiAxLjAKICAgICB9OwogCi0gICAgY29uc3QgZW5jb2RlciA9
IGNvbW1hbmRCdWZmZXIuYmVnaW5SZW5kZXJQYXNzKHsKKyAgICBjb25zdCBlbmNvZGVyID0gY29t
bWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsKICAgICAgICAgY29sb3JBdHRhY2htZW50czog
W2Jhc2ljQXR0YWNobWVudF0sCiAgICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ6IGRlcHRo
QXR0YWNobWVudAogICAgIH0pOwpAQCAtMTE1LDcgKzExNSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgZW5jb2Rlci5kcmF3KDQsIDIsIDAsIDApOwogICAgIGVuY29kZXIuZW5kUGFz
cygpOwogCi0gICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7Cisg
ICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwog
CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3dlYmdwdS1mdW5jdGlvbnMuanMKaW5kZXggM2Nk
YTI4ZTkwZTIxZThhNjQ4MWUzMmUzMDFmZDUzYTA3N2YyY2JlZS4uMjQxN2JhZjI0ZGQ2MjEwMzFj
OTVmOTU3NjdhOWIyNmQxNzMyMTJjNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2pz
L3dlYmdwdS1mdW5jdGlvbnMuanMKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3dlYmdwdS1m
dW5jdGlvbnMuanMKQEAgLTY2LDcgKzY2LDcgQEAgZnVuY3Rpb24gY3JlYXRlQmFzaWNQaXBlbGlu
ZShzaGFkZXJNb2R1bGUsIGRldmljZSwgcGlwZWxpbmVMYXlvdXQsIGlucHV0U3RhdGVEZXMKICAg
ICByZXR1cm4gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHBpcGVsaW5lRGVzY3JpcHRvcik7
CiB9CiAKLWZ1bmN0aW9uIGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEJ1
ZmZlcikgeworZnVuY3Rpb24gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5k
RW5jb2RlcikgewogICAgIGNvbnN0IGJhc2ljQXR0YWNobWVudCA9IHsKICAgICAgICAgYXR0YWNo
bWVudDogc3dhcENoYWluLmdldEN1cnJlbnRUZXh0dXJlKCkuY3JlYXRlRGVmYXVsdFRleHR1cmVW
aWV3KCksCiAgICAgICAgIGxvYWRPcDogImNsZWFyIiwKQEAgLTc1LDcgKzc1LDcgQEAgZnVuY3Rp
b24gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5kQnVmZmVyKSB7CiAgICAg
fQogCiAgICAgLy8gRklYTUU6IEZsZXNoIG91dCB0aGUgcmVzdCBvZiBXZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvci4gCi0gICAgcmV0dXJuIGNvbW1hbmRCdWZmZXIuYmVnaW5SZW5kZXJQYXNzKHsg
Y29sb3JBdHRhY2htZW50cyA6IFtiYXNpY0F0dGFjaG1lbnRdIH0pOworICAgIHJldHVybiBjb21t
YW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeyBjb2xvckF0dGFjaG1lbnRzIDogW2Jhc2ljQXR0
YWNobWVudF0gfSk7CiB9CiAKIGZ1bmN0aW9uIGVuY29kZUJhc2ljQ29tbWFuZHMocmVuZGVyUGFz
c0VuY29kZXIsIHJlbmRlclBpcGVsaW5lLCB2ZXJ0ZXhCdWZmZXIpIHsKQEAgLTgzLDUgKzgzLDUg
QEAgZnVuY3Rpb24gZW5jb2RlQmFzaWNDb21tYW5kcyhyZW5kZXJQYXNzRW5jb2RlciwgcmVuZGVy
UGlwZWxpbmUsIHZlcnRleEJ1ZmZlcikgewogICAgICAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRW
ZXJ0ZXhCdWZmZXJzKDAsIFt2ZXJ0ZXhCdWZmZXJdLCBbMF0pOwogICAgIHJlbmRlclBhc3NFbmNv
ZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKICAgICByZW5kZXJQYXNzRW5jb2Rlci5k
cmF3KDQsIDEsIDAsIDApOwotICAgIHJldHVybiByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7
CisgICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOwogfQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1l
bmNvZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5n
Lmh0bWwKaW5kZXggYmNhYWJiNTM2MTY0YzI3M2IyNWExNjdmNzc0YWI2NzMxMTg3Y2EzMC4uYzAz
YTQ4MGE5YWQyOGE4MDE0MTZjZWU4MGU0YWVmYzlkMjQ4YTVmNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLmh0bWwKQEAgLTM0LDE1ICszNCwxNCBA
QCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgIGNvbnN0IHNoYWRlck1vZHVsZSA9IGRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzaGFkZXJzIH0pOwogICAgIGNvbnN0IHBp
cGVsaW5lID0gY3JlYXRlQmFzaWNQaXBlbGluZShzaGFkZXJNb2R1bGUsIGRldmljZSk7CiAKLSAg
ICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKLSAg
ICBhc3NlcnRfdHJ1ZShjb21tYW5kQnVmZmVyIGluc3RhbmNlb2YgV2ViR1BVQ29tbWFuZEJ1ZmZl
ciwgImNyZWF0ZUNvbW1hbmRCdWZmZXIgcmV0dXJuZWQgYSBXZWJHUFVDb21tYW5kQnVmZmVyIik7
CisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIo
KTsKKyAgICBhc3NlcnRfdHJ1ZShjb21tYW5kRW5jb2RlciBpbnN0YW5jZW9mIEdQVUNvbW1hbmRF
bmNvZGVyLCAiY3JlYXRlQ29tbWFuZEVuY29kZXIgcmV0dXJuZWQgYSBHUFVDb21tYW5kRW5jb2Rl
ciIpOwogCi0gICAgY29uc3QgZW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFp
biwgY29tbWFuZEJ1ZmZlcik7CisgICAgY29uc3QgZW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQ
YXNzKHN3YXBDaGFpbiwgY29tbWFuZEVuY29kZXIpOwogICAgIGFzc2VydF90cnVlKGVuY29kZXIg
aW5zdGFuY2VvZiBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciwgImJlZ2luUmVuZGVyUGFzcygpIHJl
dHVybmVkIGEgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIiKTsKIAogICAgIGVuY29kZXIuc2V0UGlw
ZWxpbmUocGlwZWxpbmUpOwotICAgIGNvbnN0IGNvbW1hbmRCdWZmZXJFbmQgPSBlbmNvZGVyLmVu
ZFBhc3MoKTsKLSAgICBhc3NlcnRfdHJ1ZShjb21tYW5kQnVmZmVyRW5kIGluc3RhbmNlb2YgV2Vi
R1BVQ29tbWFuZEJ1ZmZlciwgImVuZFBhc3MoKSByZXR1cm5lZCBhIFdlYkdQVUNvbW1hbmRCdWZm
ZXIiKTsKKyAgICBlbmNvZGVyLmVuZFBhc3MoKTsKIH0sICJXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ciBjcmVhdGVkIGFuZCBzdWNjZXNzZnVsbHkgZW5kZWQiKTsKIAogPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJncHUvc2ltcGxlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKaW5kZXggZTBlMjhjNTc4
ODM0YjM0NGQ0NjA3YzZlMzBiODRkYjc0NGM4NDJiMy4uMDg4ZTQ5MTViYjlmZGY5YWEwYTY5YWFi
YTJhYTUzZjBiMjhmNjZlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NpbXBsZS10
cmlhbmdsZS1zdHJpcC5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9zaW1wbGUtdHJpYW5n
bGUtc3RyaXAuaHRtbApAQCAtNTIsMTIgKzUyLDEyIEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCBub24tTVNMIHNoYWRlcnMuCiAgICAgY29uc3Qg
c2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHNoYWRlckNv
ZGUgfSk7CiAgICAgY29uc3QgcGlwZWxpbmUgPSBjcmVhdGVCYXNpY1BpcGVsaW5lKHNoYWRlck1v
ZHVsZSwgZGV2aWNlKTsKLSAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUNv
bW1hbmRCdWZmZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQ
YXNzKHN3YXBDaGFpbiwgY29tbWFuZEJ1ZmZlcik7Ci0gICAgY29uc3QgZW5kQ29tbWFuZEJ1ZmZl
ciA9IGVuY29kZUJhc2ljQ29tbWFuZHMocGFzc0VuY29kZXIsIHBpcGVsaW5lKTsKKyAgICBjb25z
dCBjb21tYW5kRW5jb2RlciA9IGRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGNv
bnN0IHBhc3NFbmNvZGVyID0gYmVnaW5CYXNpY1JlbmRlclBhc3Moc3dhcENoYWluLCBjb21tYW5k
RW5jb2Rlcik7CisgICAgZW5jb2RlQmFzaWNDb21tYW5kcyhwYXNzRW5jb2RlciwgcGlwZWxpbmUp
OwogICAgIGNvbnN0IHF1ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7CiAKLSAgICBxdWV1ZS5zdWJt
aXQoW2VuZENvbW1hbmRCdWZmZXJdKTsKKyAgICBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVy
LmZpbmlzaCgpXSk7CiAKICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4geyAKICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJl
LXRyaWFuZ2xlLXN0cmlwLmh0bWwKaW5kZXggYzBmNTg4MTg0YWRiNmJhMDk1YzE5NzlkNWMxNjMz
NjVlMThlZDYwMi4uYjlkZWIxMmQ3NDM5NTQzZGE0Mzg4ZWQ3ZDFkOGJjODAyYzgwOTJhMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJpcC5odG1sCkBAIC0x
ODYsNyArMTg2LDcgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKIAogICAgIC8vIFBpcGVsaW5l
IGFuZCByZW5kZXIKICAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hh
ZGVyTW9kdWxlLCBkZXZpY2UsIHBpcGVsaW5lTGF5b3V0LCBpbnB1dFN0YXRlRGVzY3JpcHRvcik7
Ci0gICAgY29uc3QgY29tbWFuZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7
CisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIo
KTsKIAogICAgIGNvbnN0IGJ1ZmZlckNvcHlWaWV3ID0gewogICAgICAgICBidWZmZXI6IHRleHR1
cmVCdWZmZXIsCkBAIC0yMDAsOCArMjAwLDggQEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAg
ICAgICAgYXJyYXlMYXllcjogMCwKICAgICAgICAgb3JpZ2luOiB7IHg6IDAsIHk6IDAsIHo6IDAg
fQogICAgIH07Ci0gICAgY29tbWFuZEJ1ZmZlci5jb3B5QnVmZmVyVG9UZXh0dXJlKGJ1ZmZlckNv
cHlWaWV3LCB0ZXh0dXJlQ29weVZpZXcsIHRleHR1cmVTaXplKTsKLSAgICBjb25zdCBwYXNzRW5j
b2RlciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEJ1ZmZlcik7Cisg
ICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJDb3B5VmlldywgdGV4
dHVyZUNvcHlWaWV3LCB0ZXh0dXJlU2l6ZSk7CisgICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdp
bkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKICAgICBwYXNzRW5j
b2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7CiAgICAgcGFzc0VuY29kZXIuc2V0QmluZEdyb3Vw
KGJpbmRHcm91cEluZGV4LCBiaW5kR3JvdXApOwogICAgIHBhc3NFbmNvZGVyLnNldFZlcnRleEJ1
ZmZlcnMocG9zaXRpb25CdWZmZXJJbmRleCwgW3Bvc2l0aW9uQnVmZmVyLCB0ZXh0dXJlQ29vcmRC
dWZmZXJdLCBbMCwgMF0pOwpAQCAtMjA5LDcgKzIwOSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgcGFzc0VuY29kZXIuZW5kUGFzcygpOwogCiAgICAgY29uc3QgcXVldWUgPSBkZXZp
Y2UuZ2V0UXVldWUoKTsKLSAgICBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKKyAgICBx
dWV1ZS5zdWJtaXQoW2NvbW1hbmRFbmNvZGVyLmZpbmlzaCgpXSk7CiAgICAgcG9zaXRpb25CdWZm
ZXIuZGVzdHJveSgpOwogICAgIHRleHR1cmVDb29yZEJ1ZmZlci5kZXN0cm95KCk7CiAgICAgdGV4
dHVyZS5kZXN0cm95KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1
ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZm
ZXItdHJpYW5nbGUtc3RyaXAuaHRtbAppbmRleCBjYTFiYTk2ZTYwYjAzYjk2OGM0MWJiYTMwZTcy
NDBmNzYzN2IyYjIzLi4yYTUwYzFhYTAwMTAwNWI1MWFiZGI4OWU4ZjMxNWJiZDczZWVmZGE1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJp
cC5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0
cmlwLmh0bWwKQEAgLTkxLDExICs5MSwxMSBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0KCkgewogICAg
IGNvbnN0IHZlcnRleEJ1ZmZlciA9IGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpOwogICAgIGNv
bnN0IGlucHV0U3RhdGVEZXNjcmlwdG9yID0gY3JlYXRlSW5wdXRTdGF0ZURlc2NyaXB0b3IoKTsK
ICAgICBjb25zdCBwaXBlbGluZSA9IGNyZWF0ZUJhc2ljUGlwZWxpbmUoc2hhZGVyTW9kdWxlLCBk
ZXZpY2UsIG51bGwsIGlucHV0U3RhdGVEZXNjcmlwdG9yKTsKLSAgICBjb25zdCBjb21tYW5kQnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKLSAgICBjb25zdCBwYXNzRW5jb2Rl
ciA9IGJlZ2luQmFzaWNSZW5kZXJQYXNzKHN3YXBDaGFpbiwgY29tbWFuZEJ1ZmZlcik7Ci0gICAg
Y29uc3QgZW5kQ29tbWFuZEJ1ZmZlciA9IGVuY29kZUJhc2ljQ29tbWFuZHMocGFzc0VuY29kZXIs
IHBpcGVsaW5lLCB2ZXJ0ZXhCdWZmZXIpOworICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2
aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgY29uc3QgcGFzc0VuY29kZXIgPSBiZWdp
bkJhc2ljUmVuZGVyUGFzcyhzd2FwQ2hhaW4sIGNvbW1hbmRFbmNvZGVyKTsKKyAgICBlbmNvZGVC
YXNpY0NvbW1hbmRzKHBhc3NFbmNvZGVyLCBwaXBlbGluZSwgdmVydGV4QnVmZmVyKTsKICAgICBj
b25zdCBxdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOwotICAgIHF1ZXVlLnN1Ym1pdChbZW5kQ29t
bWFuZEJ1ZmZlcl0pOworICAgIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCld
KTsKICAgICB2ZXJ0ZXhCdWZmZXIuZGVzdHJveSgpOwogCiAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>