<?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>195905</bug_id>
          
          <creation_ts>2019-03-18 13:08:51 -0700</creation_ts>
          <short_desc>Remove the SVG tear off objects for SVGPoint, SVGPointList and SVGAnimatedPointList</short_desc>
          <delta_ts>2019-03-24 10:17:09 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>196065</dependson>
          <blocked>191237</blocked>
    
    <blocked>196084</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1517860</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-18 13:08:51 -0700</bug_when>
    <thetext>This requires adding new classes for the SVG property and SVG property list types. It also requires new accessor, new animator and new animation function for accessing and animating the SVGAnimatedPointList. SVGPointList will not be backed by SVGPointListValues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517866</commentid>
    <comment_count>1</comment_count>
      <attachid>365048</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-18 13:11:31 -0700</bug_when>
    <thetext>Created attachment 365048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517869</commentid>
    <comment_count>2</comment_count>
      <attachid>365050</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-18 13:13:12 -0700</bug_when>
    <thetext>Created attachment 365050
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519097</commentid>
    <comment_count>3</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2019-03-20 12:44:06 -0700</bug_when>
    <thetext>Is a new patch going to be uploaded?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519564</commentid>
    <comment_count>4</comment_count>
      <attachid>365520</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-21 01:57:58 -0700</bug_when>
    <thetext>Created attachment 365520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519868</commentid>
    <comment_count>5</comment_count>
      <attachid>365520</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-21 13:17:22 -0700</bug_when>
    <thetext>Comment on attachment 365520
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=365520&amp;action=review

&gt; Source/WebCore/svg/SVGPointList.h:82
&gt; +            append(SVGPoint::create(FloatPoint(xPos, yPos)));

append(SVGPoint::create({ xPos, yPos }));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519888</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-21 13:42:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/49121824&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519981</commentid>
    <comment_count>7</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-21 15:22:30 -0700</bug_when>
    <thetext>Committed r243336: &lt;https://trac.webkit.org/changeset/243336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520725</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-24 10:11:00 -0700</bug_when>
    <thetext>It introduced a warning spam. Please remember to be careful about pessimizing move:

DerivedSources/ForwardingHeaders/wtf/StdLibExtras.h:572:64: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]
  572 | #define WTFMove(value) std::move&lt;WTF::CheckMoveParameter&gt;(value)
      |                                                                ^
../../Source/WebCore/svg/properties/SVGPropertyList.h:120:16: note: in expansion of macro ‘WTFMove’
  120 |         return WTFMove(item);
      |                ^~~~~~~
DerivedSources/ForwardingHeaders/wtf/StdLibExtras.h:572:64: note: remove ‘std::move’ call
  572 | #define WTFMove(value) std::move&lt;WTF::CheckMoveParameter&gt;(value)
      |                                                                ^
../../Source/WebCore/svg/properties/SVGPropertyList.h:120:16: note: in expansion of macro ‘WTFMove’
  120 |         return WTFMove(item);
      |                ^~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520726</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-24 10:17:09 -0700</bug_when>
    <thetext>Committed r243421: &lt;https://trac.webkit.org/changeset/243421&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365048</attachid>
            <date>2019-03-18 13:11:31 -0700</date>
            <delta_ts>2019-03-18 20:56:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195905-20190318131130.patch</filename>
            <type>text/plain</type>
            <size>314679</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3OTdlODJkZjg2MzIz
ZGJiYjQwZjVlN2ViYjFjMmY1YTVjNzcyMy4uYjkzOTA0Njc5OTQ1NjMxNjE3NDBlOWFhZjliNDYz
Yzk1YmFjZDc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2MiBAQAorMjAxOS0wMy0xOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1BvaW50IGFuZCBTVkdQb2ludExpc3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTkwNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHJlbW92
ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1BvaW50LCB0aGVzZSBjaGFuZ2VzIGFy
ZSBuZWVkZWQ6CisKKyAgICAgICAgLS0gU1ZHUHJvcGVydHkgaXMgZGVmaW5lZCB0byBiZSB0aGUg
YmFzZSBjbGFzcyBmb3IgYWxsIHRoZSBTVkcgdHlwZXMgaW5jbHVkaW5nCisgICAgICAgICAgIHRo
ZSBsaXN0IHR5cGVzLiBJdCBpcyBhbiBhYnN0cmFjdCBjbGFzcyB3aGljaCBkZWZpbmVzIHRoZSBy
ZWxhdGlvbnNoaXAKKyAgICAgICAgICAgd2l0aCB0aGUgb3duZXIuIEl0IGFsc28gZGVmaW5lcyB0
aGUgRE9NIGFjY2VzcyByaWdodHMgdG8gdGhpcyBwcm9wZXJ0eS4KKworICAgICAgICAtLSBTVkdQ
cm9wZXJ0eVZhbHVlIGlzIHRoZSBiYXNlIGNsYXNzIG9mIGEgc2luZ2xlIHR5cGUgcHJvcGVydHks
IGkuZS4gdGhlCisgICAgICAgICAgIG5vbmUgbGlzdCB0eXBlcyBsaWtlIFNWR1BvaW50IGZvciBl
eGFtcGxlLgorCisgICAgICAgIC0tIFNWR1Byb3BlcnR5TGlzdCBpcyBhIHN1cGVyY2xhc3Mgb2Yg
U1ZHTGlzdC4gSXQgZGVmaW5lcyBpdHMgaXRlbXMgdG8gYmUKKyAgICAgICAgICAgUmVmQ291bnRl
ZC4gSXQgaXMgYmFzZSBjbGFzcyBvZiBTVkdWYWx1ZVByb3BlcnR5TGlzdCBhbmQgaXQgd2lsbCBi
ZSAKKyAgICAgICAgICAgdGhlIGJhc2UgY2xhc3Mgb2YgU1ZHUGF0aFNlZ0xpc3QuCisKKyAgICAg
ICAgLS0gU1ZHVmFsdWVQcm9wZXJ0eUxpc3QgaXMgdGhlIGJhc2UgY2xhc3Mgb2YgYWxsIHRoZSBs
aXN0cyB3aG9zZSBpdGVtcworICAgICAgICAgICBhcmUgYmFja2VkIGJ5IGEgdmFsdWUgb2JqZWN0
cyBsaWtlIFNWR1BvaW50IHdob3NlIHZhbHVlIGlzIEZsb2F0UG9pbnQuCisgICAgICAgICAgIFRo
ZSBkaWZmZXJlbmNlIGJldHdlZW4gU1ZHUHJvcGVydHlMaXN0IGFuZCBTVkdWYWx1ZVByb3BlcnR5
TGlzdCBpcyB0aGUKKyAgICAgICAgICAgZm9ybWVyIGNhbiBzdG9yZSBhIFJlZiBmb3IgYSBiYXNl
IGNsYXNzIGxpa2UgU1ZHUGF0aFNlZyB3aGlsZSB0aGUgbGF0ZXIKKyAgICAgICAgICAgaGFzIHRv
IHN0b3JlIHRoZSBzYW1lIHR5cGUgZm9yIGFsbCB0aGUgaXRlbXMuCisKKyAgICAgICAgLS0gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGFsbCB0aGUgYW5pbWF0
ZWQgbGlzdHMuCisgICAgICAgICAgIE5vdGUgdGhlIG93bmVyIHJlbGF0aW9uc2hpcCBvZiB0aGUg
YW5pbWF0ZWQgbGlzdCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAxKSBTVkdFbGVtZW50
IG93bnMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QKKyAgICAgICAgICAgMikgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUxpc3Qgb3ducyBtX2Jhc2VWYWwgd2hvc2UgdHlwZSBpcyBTVkdMaXN0CisgICAgICAg
ICAgIDMpIG1fYmFzZVZhbCBvd25zIHRoZSBpdGVtcyB3aG9zZSB0eXBlIGlzIFNWR1Byb3BlcnR5
CisgICAgICAgICAgIFNvIHdoZW4gY2hhbmdpbmcgYW4gaXRlbSwgaXQgY2FsbHMgaXRzIG93bmVy
IHdoaWNoIGlzIHRoZSBTVkdMaXN0LgorICAgICAgICAgICBTVkdMaXN0IGNhbGxzIGl0cyBvd25l
ciB3aGljaCBpcyAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuCisgICAgICAgICAgIFNWR0FuaW1h
dGVkUHJvcGVydHlMaXN0IGNhbGxzIGl0cyBvd25lciB3aGljaCBTVkdFbGVtZW50IHRvIGNvbW1p
dAorICAgICAgICAgICB0aGUgY2hhbmdlLiBTbyB3ZSBlbmQgY2FsbGluZyBTVkdFbGVtZW50Ojpj
b21taXRQcm9wZXJ0eUNoYW5nZSgpLgorICAgICAgICAgICBMYXRlciBTVkdBbmltYXRlZFByb3Bl
cnR5TGlzdDo6c3luY2hyb25pemUoKSB3aGljaCByZXR1cm5zIHRoZSBwcm9wZXJ0eQorICAgICAg
ICAgICB2YWx1ZUFzU3RyaW5nKCkgdG8gdXBkYXRlIHRoZSByZWZsZWN0aW5nIGF0dHJpYnV0ZS4g
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbUNpcmNsZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cGF0aEZyb21FbGxpcHNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJv
bUxpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tUGF0aEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6cGF0aEZyb21Qb2x5Z29uRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpwYXRoRnJvbVBvbHlsaW5lRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJv
bVJlY3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tR3JhcGhpY3NFbGVtZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmg6CisgICAgICAgIFRoZSBJ
REwgb2YgU1ZHUG9seUVsZW1lbnQgaW50ZXJmYWNlIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgYXR0
cmlidXRlOgorICAgICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50TGlzdCBwb2lu
dHM7CisgICAgICAgIEZvciB3aGljaCB3ZSByZXR1cm46CisgICAgICAgICAgICBTVkdQb2ludExp
c3QmIHBvaW50cygpIHsgcmV0dXJuIG1fcG9pbnRzLT5iYXNlVmFsKCk7IH0KKyAgICAgICAgQnV0
IGZvciBhbGwgdGhlIG90aGVyIHByb3BlcnRpZXMgd2UgcmV0dXJuIHRoZSBjdXJyZW50VmFsdWUo
KS4gU28gdG8gaGF2ZQorICAgICAgICB0aGUgdHdvIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIG5h
bWUsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgYWRkZWQ6CisgICAgICAgICAgICBjb25zdCBT
VkdQb2ludExpc3QmIHBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzLT5jdXJyZW50VmFs
dWUoKTsgfQorICAgICAgICBUaGlzIGRlZmluaXRpb24gcmVxdWlyZXMgY2hhbmdpbmcgYWxsIGNh
bGxlcnMgdG8gYmUgY29uc3QuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRy
ZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRQb2ludExpc3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRU
eXBlLmg6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gaGFkIGEgYmFkIGRlc2lnbi4gSXQgd2FzIGRl
c2lnbmVkIHRvIHVzZSB0aGUgaW5kZXggb2YgdGhlCisgICAgICAgIHZhcmlhbnQgYXMgdGhlIEFu
aW1hdGVkUHJvcGVydHlUeXBlLiBCdXQgd2hlbiBzb21lIG9mIHRoZSB0eXBlcyBhcmUgcmVtb3Zl
ZAorICAgICAgICBmcm9tIFNWR1ZhbHVlVmFyaWFudCwgdGhpcyBicm9rZSB0aGluZ3MuIFRoaXMg
Zml4IGlzIHRlbXBvcmFyeSB0aWxsIHRoZSAKKyAgICAgICAgY2xhc3MgU1ZHVmFsdWVWYXJpYW50
IGlzIHJlbW92ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6dHlwZSBj
b25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9TVkdBdHRy
aWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJp
YnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAg
ICBUaGlzIGlzIGEgYnVnIGluIHIyNDMwMzYuIFRoZSA8c2V0PiB0YWcgYmVsb25ncyB0aGUgYW5p
bWF0aW9uIGVsZW1lbnQgYW5kCisgICAgICAgIG5vdCB0aGUgdGFyZ2V0IGVsZW1lbnQuCisKKyAg
ICAgICAgKiBzdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBv
aW50c0xpc3RGcm9tU1ZHRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BhcnNlclV0
aWxpdGllcy5oOgorICAgICAgICAqIHN2Zy9TVkdQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9pbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludDo6Y2xvbmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OngpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9pbnQ6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OnkpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6
Om1hdHJpeFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludDo6bWF0
cml4VHJhbnNmb3JtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50OjpTVkdQ
b2ludCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BvaW50LmlkbDoKKyAgICAgICAgbWF0
cml4VHJhbnNmb3JtKCkgc2hvdWxkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uCisKKyAgICAgICAg
KiBzdmcvU1ZHUG9pbnRMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludExpc3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludExpc3Q6OnBhcnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BvaW50TGlzdDo6U1ZHUG9pbnRMaXN0KTogRGVsZXRlZC4KKyAgICAgICAg
TW92ZSB0aGUgcGFyc2UoKSBhbmQgdmFsdWVBc1N0cmluZygpIG1ldGhvZHMgdG8gU1ZHUG9pbnRM
aXN0LiBJdCBpcyBub3cKKyAgICAgICAgYSBzdXBlcmNsYXNzIG9mIFNWR1ZhbHVlUHJvcGVydHlM
aXN0LiBJdHMgaXRlbXMgYXJlIG9mIHR5cGUgUmVmPFNWR1BvaW50Pi4KKworICAgICAgICAqIHN2
Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdQb2lu
dExpc3RWYWx1ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OlNWR1BvbHlFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlDb3N0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBvaW50cyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YW5pbWF0ZWRQb2ludHMpOiBE
ZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUG9seUVsZW1lbnQ6OnBvaW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
b2x5RWxlbWVudDo6cG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojph
bmltYXRlZFBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6cG9pbnRM
aXN0IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRUcmFuc2xhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFRyYW5zbGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU1ZH
RWxlbWVudC5pZGw6CisgICAgICAgIERlZmluZSBjdXJyZW50VHJhbnNsYXRlIHByb3BlcnR5IHRv
IGJlIG9mIHR5cGUgUmVmPFNWR1BvaW50Pi4gV2hlbiByZXF1ZXN0aW5nCisgICAgICAgIGl0IGp1
c3QgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGl0LgorCisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xp
c3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVmFsdWUu
aDoKKworICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3Nv
ckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUltcGwuaDoKKyAgICAgICAgRGVmaW5lIHRoZSBhY2Nlc3NvciwgdGhlIGFuaW1hdG9yIGFuZCB0
aGUgYW5pbWF0ZWQgdHlwZSBvZiBTVkdQb2ludExpc3QuCisKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkUHJvcGVydHlMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRQcm9wZXJ0eUxpc3Q6On5TVkdBbmltYXRlZFByb3BlcnR5TGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6YmFzZVZhbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6YmFzZVZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6YW5pbVZhbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6YW5pbVZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6Y3VycmVudFZhbHVlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlMaXN0OjpTVkdBbmltYXRlZFBy
b3BlcnR5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6
ZW5zdXJlQW5pbVZhbCk6CisKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25B
ZGRpdGl2ZUxpc3RGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uOjpTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbjo6
dG9BdEVuZE9mRHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
QWRkaXRpdmVMaXN0RnVuY3Rpb246OmFkanVzdEFuaW1hdGVkTGlzdCk6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uUG9pbnRMaXN0RnVuY3Rpb246OnByb2dy
ZXNzKToKKyAgICAgICAgRGVmaW5lIHRoZSBhbmltYXRpb24gZnVuY3Rpb24gZm9yIGFuaW1hdGlu
ZyBTVkdQb2ludExpc3QuCisKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVS
ZWdpc3RyeS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNBdHRhY2hlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQcm9wZXJ0eTo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3Bl
cnR5OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OmNvbnRleHRFbGVt
ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojpjb21taXRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OmFjY2VzcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNSZWFkT25seSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQcm9wZXJ0eTo6aXNEaXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
cm9wZXJ0eTo6c2V0RGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OnN5bmNo
cm9uaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojp2YWx1ZUFzU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjpTVkdQcm9wZXJ0eSk6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlMaXN0Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUHJvcGVydHlMaXN0OjpTVkdQcm9wZXJ0eUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUHJvcGVydHlMaXN0Ojp+U1ZHUHJvcGVydHlMaXN0KToKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmg6IFJlbW92ZWQuCisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR1ZhbHVlUHJvcGVydHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdWYWx1ZVByb3BlcnR5Ojp2YWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1
ZVByb3BlcnR5OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZVByb3BlcnR5
Ojp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZVByb3BlcnR5OjpTVkdWYWx1ZVBy
b3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlUHJvcGVydHlMaXN0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVQcm9wZXJ0eUxpc3Q6Om9wZXJhdG9yIFZl
Y3Rvcjx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU6OlZhbHVlVHlwZT4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVmFsdWVQcm9wZXJ0eUxpc3Q6OnJlc2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdWYWx1ZVByb3BlcnR5TGlzdDo6U1ZHVmFsdWVQcm9wZXJ0eUxpc3QpOgorCisyMDE5LTAz
LTE3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBTVkcgcHJvcGVydHkgdGVhciBvZmYgb2JqZWN0cyBmb3IgU1ZHU3RyaW5n
TGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1
ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU1ZH
U3RyaW5nTGlzdCBpcyBub3QgYW5pbWF0ZWQgbGlzdC4gU28gd2UgbmVlZCB0byBpbnRyb2R1Y2Ug
dHdvIG5ldyBjbGFzc2VzOgorCisgICAgICAgIC0tIFNWR1Byb3BlcnR5OiBUaGlzIHdpbGwgYmUg
dGhlIGJhc2Ugb2YgYWxsIHRoZSBub24tYW5pbWF0ZWQgcHJvcGVydGllcy4KKyAgICAgICAgICAg
TGlrZSB0aGUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHkgd2lsbCBiZSByZWdpc3Rl
cmVkIHdpdGggdGhlCisgICAgICAgICAgIGF0dHJpYnV0ZSBuYW1lIGluIFNWR1Byb3BlcnR5UmVn
aXN0ZXJ5LiBJdCB3aWxsIGFsc28gY29tbWl0cyBjaGFuZ2VzCisgICAgICAgICAgIHRvIHRoZSBy
ZWZsZWN0aW5nIGF0dHJpYnV0ZS4gQW5kIGl0IHdpbGwgcHJvdmlkZSBhIHN5bmNocm9uaXplIHN0
cmluZworICAgICAgICAgICBmb3IgbGF6eSBhdHRyaWJ1dGUgdXBkYXRlLgorCisgICAgICAgIC0t
IFNWR0xpc3Q6IEl0IHdpbGwgYmUgdGhlIGJhc2Ugb2YgYWxsIHRoZSBsaXN0IHByb3BlcnRpZXMu
IEl0IGNhbiBob2xkCisgICAgICAgICAgIHByaW1pdGl2ZSB0eXBlcyBvciBTVkcgdHlwZXMuIElu
IHRoaXMgcGF0Y2ggcHJpbWl0aXZlIHR5cGVzIHdpbGwgYmUgCisgICAgICAgICAgIHN1cHBvcnRl
ZCBvbmx5LiBUbyBkbyB0aGF0LCBhIHN1cGVyY2xhc3MgY2FsbGVkIFNWR1ByaW1pdGl2ZUxpc3Qg
aXMKKyAgICAgICAgICAgYWRkZWQuIEl0cyBpdGVtcyBhcmUgb2YgcHJpbWl0aXZlIHR5cGUgb25s
eS4KKworICAgICAgICBOb3RlIHRoYXQgU1ZHTGlzdCBpbXBsZW1lbnRzIHRoZSBTVkcyIHNwZWNz
IHJlZ2FyZGluZyBhZGRpbmcgYSBuZXcgaXRlbQorICAgICAgICB0byB0aGUgbGlzdCB3aGljaCBz
dGF0ZSB0aGF0IGEgY29weSBvZiB0aGUgaXRlbSBpcyBhZGRlZCB0byB0aGUgbGlzdCBpZgorICAg
ICAgICB0aGUgaXRlbSBpcyBhdHRhY2hlZCB0byBhbm90aGVyIGxpc3QuCisKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxl
bWVudDo6c3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5nZSk6CisgICAgICAgICogc3Zn
L1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RyaW5nTGlzdC5oOgorICAgICAgICAq
IHN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZH
U3RyaW5nTGlzdFZhbHVlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6U1ZHVGVzdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVz
dHM6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZWdpc3RlckF0dHJpYnV0ZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6
OnJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3lzdGVt
TGFuZ3VhZ2UpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMu
aWRsOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVt
ZW50OjpTVkdWaWV3RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnZpZXdU
YXJnZXQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHk6OnNldEJhc2VWYWwp
OgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0UHJvcGVydHlDaGFuZ2Up
OgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaDoKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0xpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0
OjpudW1iZXJPZkl0ZW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmNsZWFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmdldEl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGlzdDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjppbnNl
cnRJdGVtQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OnJlcGxhY2VJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGlzdDo6YXBwZW5kSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjppdGVt
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjppdGVtcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMaXN0OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6
OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2xlYXJJdGVtcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpjYW5BbHRlckxpc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2FuR2V0SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
aXN0OjpjYW5SZXBsYWNlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpjYW5SZW1v
dmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmRldGFjaEl0ZW1zKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTWVtYmVyQWNjZXNzb3I6Om1hdGNoZXMgY29uc3QpOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1ByaW1pdGl2ZUxpc3QuaDogQWRkZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojppc0F0dGFj
aGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjphdHRhY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQcm9wZXJ0eTo6Y29udGV4dEVsZW1lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UHJvcGVydHk6OmNvbW1pdENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6
YWNjZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojppc1JlYWRPbmx5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojppc0RpcnR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjpzZXREaXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQcm9wZXJ0eTo6c3luY2hyb25pemUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJv
cGVydHk6OnZhbHVlQXNTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHk6OlNWR1Byb3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFj
Y2Vzc29yLmg6IEFkZGVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNj
ZXNzb3JJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
T3duZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5T3duZXI6OmNvbW1pdFByb3Bl
cnR5Q2hhbmdlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdp
c3RyeS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRl
YXJPZmYuaDogUmVtb3ZlZC4KKworMjAxOS0wMy0xNyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0aGUgU1ZHIHByb3BlcnR5IHRl
YXIgb2ZmIG9iamVjdHMgZm9yIFNWR0FuaW1hdGVkQm9vbGVhbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1ODYyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU1ZHQW5pbWF0ZWRCb29sZWFuIHdpbGwgYmUg
ZGVmaW5lZCBhcyBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5PGJvb2w+LgorICAgICAgICAt
LSBTVkdBbmltYXRlZEJvb2xlYW5BY2Nlc3NvciBpcyBhZGRlZCB0byB0aGlzIGFjY2VzcyB0aGUg
bmV3IHR5cGUuCisgICAgICAgIC0tIEEgZnVuY3Rpb24gcmVnaXN0ZXJQcm9wZXJ0eSgpIGlzIGFk
ZGVkIHRvIFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeQorICAgICAgICAgICB0byByZWdpc3RlciB0
aGlzIG5ldyB0eXBlLgorICAgICAgICAtLSBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciBpcyBh
ZGRlZCB0byBhbmltYXRlIHRoZSBuZXcgdHlwZQorICAgICAgICAtLSBTVkdBbmltYXRpb25Cb29s
ZWFuRnVuY3Rpb24gaXMgYWRkZWQgdG8gaGFuZGxlIHRoZSBwcm9ncmVzcyBvZiB0aGlzCisgICAg
ICAgICAgIG5ldyB0eXBlIG92ZXIgYSBwZXJpb2Qgb2YgdGltZS4KKworICAgICAgICBTVkdBbmlt
YXRpb25Cb29sZWFuRnVuY3Rpb24gaXMgYSBzdXBlcmNsYXNzIG9mIFNWR0FuaW1hdGlvbkRpc2Ny
ZXRlRnVuY3Rpb24KKyAgICAgICAgd2hpY2ggd2lsbCBiZSB0aGUgYmFzZSBjbGFzcyBvZiB0aGUg
ZGlzY3JldGUgYW5pbWF0aW9uIHR5cGVzOiBzdHJpbmcsIGJvb2wsCisgICAgICAgIGVudW0gYW5k
IFByZXNlcnZlQXNwZWN0UmF0aW8gdHlwZXMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkQm9vbGVhbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkQm9vbGVhbi5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0
aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdEZWZzRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cmVnaXN0ZXJBdHRyaWJ1dGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQW5pbWF0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
OjpzZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9u
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdTd2l0Y2hFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5QWNjZXNzb3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0aW9uRGlzY3JldGVGdW5jdGlvbi5oOiBBZGRlZAorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0aW9uRGlzY3JldGVGdW5jdGlvbjo6U1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uOjpwcm9ncmVzcyk6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbklt
cGwuaDogQWRkZWQKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3Ry
eS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5OjpyZWdpc3RlclBy
b3BlcnR5KToKKworMjAxOS0wMy0xNiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FA
YXBwbGUuY29tPgorCisgICAgICAgIERlZmluZSB0aGUgdHlwZSBvZiBTVkdQcm9wZXJ0eU93bmVy
UmVnaXN0cnkgZm9yIGFsbCBTVkcgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeSB3aWxsIGV2ZW50
dWFsbHkgcmVwbGFjZSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbC4KKworICAgICAgICAqIHN2
Zy9TVkdBRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDaXJj
bGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50Ojppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAq
IHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUlt
YWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmF0dHJpYnV0ZVJlZ2lzdHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmlzS25vd25BdHRyaWJ1dGUpOgorICAg
ICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRv
Vmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0dFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHR2VvbWV0cnlFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKToK
KyAgICAgICAgKiBzdmcvU1ZHR2x5cGhSZWZFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50Ojpp
c0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUpOgor
ICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1BhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1BvbHlFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxl
bWVudDo6YXR0cmlidXRlUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1l
bnQ6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1N0b3BFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N3aXRjaEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdUUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5oOgorICAgICAgICAqIHN2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250
ZW50RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojppc0tub3duQXR0cmli
dXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmg6CisgICAgICAgICogc3ZnL1NW
R1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHVmlld1NwZWMuaDoKKyAgICAgICAgKiBzdmcvU1ZHWm9vbUFuZFBhbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHWm9vbUFuZFBhbjo6U1ZHWm9vbUFuZFBhbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdab29tQW5kUGFuOjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdab29tQW5kUGFuLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5k
UGFuOjp6b29tQW5kUGFuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46
OnNldFpvb21BbmRQYW4pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6cmVzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6YXR0cmlidXRlUmVnaXN0cnkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6aXNLbm93bkF0dHJpYnV0
ZSk6IERlbGV0ZWQuCisgICAgICAgIFNWR1pvb21BbmRQYW4gaG9sZHMgbmVpdGhlciBTVkcgYW5p
bWF0ZWQgcHJvcGVydGllcyBub3IgU1ZHIHR5cGUgZWxlbWVudC4KKyAgICAgICAgU28gcmVtb3Zl
IGl0IGZyb20gaXRzIGF0dHJpYnV0ZSByZWdpc3RyeS4KKwogMjAxOS0wMy0xNiAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgdGVzdHMgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvKi1leGNlcHRpb24tb3JkZXIuaHRtbCBh
cmUgZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1ZTI5NWFjNDE0NzBmOTk3MzRhMzRlOTU1Mzlh
YjI0ZDdkYTg3OGZiLi4wNzI4NmE2NDg0ZWJlNGE4NTRkNGY2NDcyZDExODM2M2E3ZjhmM2UxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMjI3MCw3ICsyMjcwLDYgQEAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50
QmFzZS5jcHAKIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKIHN2Zy9TVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudC5jcHAKIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcAotc3ZnL1NWR0Fu
aW1hdGVkQm9vbGVhbi5jcHAKIHN2Zy9TVkdBbmltYXRlZENvbG9yLmNwcAogc3ZnL1NWR0FuaW1h
dGVkRW51bWVyYXRpb24uY3BwCiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCkBAIC0yMjc5LDcg
KzIyNzgsNiBAQCBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCiBzdmcvU1ZHQW5pbWF0ZWROdW1i
ZXJMaXN0LmNwcAogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwCiBzdmcv
U1ZHQW5pbWF0ZWRQYXRoLmNwcAotc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAogc3ZnL1NW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3Bw
CiBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwCkBAIC0yMzc0LDcgKzIzNzIsNiBAQCBzdmcvU1ZH
UGF0aFN0cmluZ1NvdXJjZS5jcHAKIHN2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNw
cAogc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCi1z
dmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAogc3ZnL1NW
R1BvbHlnb25FbGVtZW50LmNwcAogc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5jcHAKQEAgLTIzODUs
NyArMjM4Miw2IEBAIHN2Zy9TVkdTVkdFbGVtZW50LmNwcAogc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCiBzdmcvU1ZHU2V0RWxlbWVudC5jcHAKIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHAKLXN2Zy9T
VkdTdHJpbmdMaXN0VmFsdWVzLmNwcAogc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAKIHN2Zy9TVkdT
d2l0Y2hFbGVtZW50LmNwcAogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWNjNmU3ODhi
MmEzODE0MTQ5Yjk4M2EwNjk0ZDU1Nzk3ZThiNTBhNi4uMGQ3N2ZjNTFlZjBlMTEyOGRlZDBmOTI0
YTRkNGViZmUwZWVlYTVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjU4LDcgKzI1OCw2IEBACiAJCTA4NTRCMDIxMTI1NUU0
RTYwMEI5Q0REMCAvKiBTVkdJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAwRjEyNTVFNEU2MDBCOUNERDAgLyogU1ZHSW5s
aW5lVGV4dEJveC5oICovOyB9OwogCQkwODU0QjAyMzEyNTVFNEU2MDBCOUNERDAgLyogU1ZHUm9v
dElubGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg1NEIwMTExMjU1RTRFNjAwQjlDREQwIC8qIFNWR1Jvb3RJbmxpbmVCb3guaCAqLzsgfTsK
IAkJMDg1NEIwMjUxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1RleHRRdWVyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1NEIwMTMxMjU1RTRFNjAwQjlD
REQwIC8qIFNWR1RleHRRdWVyeS5oICovOyB9OwotCQkwODU3OTcwOTEyNzgzOTRDMDBBOEVDNUYg
LyogU1ZHQW5pbWF0ZWRCb29sZWFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODU3OTcwODEyNzgzOTRDMDBBOEVDNUYgLyogU1ZHQW5pbWF0ZWRCb29s
ZWFuLmggKi87IH07CiAJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUExNTkyMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKIAkJMDg1QjkyQkIwRUZERTcz
RDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRh
QnVpbGRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTA4NjM5
NTE2MTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NjM5NTE0MTNCNUZFNTcwMEJCMzQ0RCAv
KiBTVkdBbmltYXRlZFBhdGguaCAqLzsgfTsKQEAgLTI2Nyw3ICsyNjYsNiBAQAogCQkwODczQjg2
QjEzNjA2NEVBMDBBNTIyQzIgLyogR2x5cGhQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODczQjg2QTEzNjA2NEVBMDBBNTIyQzIgLyogR2x5cGhQ
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDg3NTU4QzYxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3NTU4
QzQxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4N0I4NDk2
MTI3MkNFQzgwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODdCODQ5NTEyNzJDRUM3MDBBMTQ0MTcgLyog
U1ZHQW5pbWF0ZWRBbmdsZS5oICovOyB9OwotCQkwODgwRjcwRTEyODJCNDZEMDA5NDg1MDUgLyog
U1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRp
Y0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKIAkJMDg4NTA2N0YxMURBMDQ1QjAwMTgyQjk4
IC8qIFBhaW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDg4NTA2N0QxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4ODUwNjgwMTFEQTA0NUIw
MDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4OEEwRTA0
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEwREZCMTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKQEAg
LTEyMjksNyArMTIyNyw2IEBACiAJCTQzOUQzMzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmlt
YXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAqLzsg
fTsKIAkJNDNBNjI1RjgxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQTYyNUY2MTNCMzMw
NDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmggKi87IH07CiAJCTQzQjg1RUQ0MThDQkVD
NTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRN
YXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNC
ODVFRDIxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmls
aXR5RWxlbWVudE1hcC5jcHAgKi87IH07Ci0JCTQzQjkzMzY5MTNCMjYxQjEwMDQ1ODRCRiAvKiBT
VkdBbmltYXRlZFBvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDNCOTMzNjcxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRM
aXN0LmggKi87IH07CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0M0MwOTJCQTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICov
OyB9OwogCQk0M0VERDY3RjFCNDg1REJGMDA2NDBFNzUgLyogQ29tYmluZWRGaWx0ZXJzQWxwaGFi
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzRURE
NjdEMUI0ODVEQkYwMDY0MEU3NSAvKiBDb21iaW5lZEZpbHRlcnNBbHBoYWJldC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0MTUyOTJFMEUxQUU4
QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDE1MjkyQzBFMUFFOEEwMDBDNEEyRDAgLyog
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMTM4LDYgKzIxMzUsMTAgQEAKIAkJNzFFQURDRDgyMjA4N0U3
MjAwNjVBNDVGIC8qIFBvaW50ZXJJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzFFQURDRDYyMjA4N0U2RDAwNjVBNDVGIC8qIFBvaW50ZXJJRC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxRUZDRURD
MjAyQjM4QTkwMEQ3QzQxMSAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRUZDRUQ3MjAyQjM4OEQwMEQ3QzQxMSAvKiBB
bmltYXRpb25FZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MUZCOTY3QjEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvblByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzFGQjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLzsgfTsKKwkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3
IC8qIFNWR1ByaW1pdGl2ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcyMTQ0MzJDMjIzRUIyMkUwMEYxMkZGNyAvKiBTVkdQcmltaXRpdmVMaXN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIx
NDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIFNWR0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTQ0MzJFMjIzRUIyRkUwMEYxMkZGNyAvKiBTVkdM
aXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzIxNDQzMzMyMjNFQzhCMDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBGQkE5NDQg
LyogU1ZHUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAy
MjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRDMyQzFBM0E3RTU0MDBGNUYxM0Mg
LyogRVhUQmxlbmRNaW5NYXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI0RUQzMjkxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNw
cCAqLzsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXgu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMw
MUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVFNTUw
MURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0yMjM0LDcgKzIyMzUsNiBAQAogCQk3QzMzMEEwMjFERjhGQUM2MDBEMzM5NUMgLyog
R3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzMEEwMTFERjhGQUM2MDBEMzM5NUMgLyogR3JhcGhpY3ND
b250ZXh0M0RBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0MzMzBBMDgxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMz
MEEwNjFERjlGOTUxMDBEMzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAqLzsgfTsKIAkJN0Mz
OUMzNjUxRERBODY1MjAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzYzMUREQTg2NDkwMEZF
RkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmggKi87IH07Ci0JCTdDMzlDMzc3MUREQkUxNzAw
MEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5QzM2NzFEREI4MkNGMDBGRUZCMjkgLyogU1ZHU3Ry
aW5nTGlzdFZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdDM0E5MUU2MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xp
Y3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0E5
MUU1MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNCNzk3MTE5MDg3NTdC
MDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2Vy
TWVzc2FnZUhhbmRsZXIuY3BwICovOyB9OwogCQk3QzNCNzk3MjE5MDg3NTdCMDBCNDdBMkQgLyog
VXNlck1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzNCNzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU2
MjksNyArNTYyOSw2IEBACiAJCTA4NTRCMDExMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdSb290SW5s
aW5lQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jvb3RJbmxpbmVC
b3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1NEIwMTIxMjU1RTRFNjAwQjlD
REQwIC8qIFNWR1RleHRRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdUZXh0UXVlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODU0
QjAxMzEyNTVFNEU2MDBCOUNERDAgLyogU1ZHVGV4dFF1ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR1RleHRRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwODU3OTcwODEyNzgzOTRDMDBBOEVDNUYgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkQm9vbGVhbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVBMTU5MjEyODlBOEREMDAyNzEwRTMgLyogU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJCODBFRkRFNzNEMDBFNjEyM0Mg
LyogRm9ybURhdGFCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZvcm1EYXRhQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01NjQyLDcgKzU2NDEsNiBAQAogCQkwODc1NThDMzEzQjRBNTdEMDBGNDkz
MDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAv
KiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRl
ZEFuZ2xlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkQW5n
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4
NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODg1MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50SW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQ
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWludFBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEEwREZCMTI2RUYxREIwMDk3OEY3QSAvKiBT
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NTgwLDcgKzc1NzgsNiBAQAogCQk0MzFBMkY5QjEzQjZGMkIwMDA3
NzkxRTQgLyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMxQTJGRDYxM0I3NzA3QTAwNzc5
MUU0IC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZExlbmd0aExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MzFBMzAyMDEzQjg5RENDMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQzMUEzMDg3MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmltYXRlZEJvb2xlYW4u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRCb29s
ZWFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMyRDNGRTcxOEE4NjU4NDAw
RDdEQzAzIC8qIFNlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MzMxQUM3NzEzQjY4NzAwMDBBOUU1QUUgLyogU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzNThFODdBMTM2MEEyRUUwMEU0NzQ4QyAvKiBKU1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2ODIsOCArNzY3OSw2
IEBACiAJCTQzQjg1RUQyMThDQkVDNTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5k
Q29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLmNw
cDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENv
bXBhdGliaWxpdHlFbGVtZW50TWFwLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJNDNCODVFRDMxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5ncGVyZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBT
ZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuZ3BlcmY7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1NlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmls
aXR5RWxlbWVudE1hcC5ncGVyZjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJNDNCODVFRDYxOENCRUM5NzAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21w
YXRpYmlsaXR5RWxlbWVudE1hcC5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZWxlY3RvclBz
ZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQzQjkzMzY3MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFBvaW50
TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0M0I5MzM2ODEzQjI2MUIxMDA0
NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0M0MwOTJCOTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNDMDky
QkExMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VC
dWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTUwNiw2ICs5NTAxLDE4IEBA
CiAJCTcxRUZDRURFMjAyQjM5QzcwMEQ3QzQxMSAvKiBKU0FuaW1hdGlvbkVmZmVjdEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FuaW1hdGlvbkVmZmVj
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRjkzNkY3MURENEY5
OUIwMDkyMkNDNyAvKiB0cmFja3Mtc3VwcG9ydC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2
YXNjcmlwdDsgcGF0aCA9ICJ0cmFja3Mtc3VwcG9ydC5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcxRkI5NjdBMTM4M0Q2NDYwMEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0
aW9uUHJvcGVydHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzIxNDQzMjkyMjNFM0RDNTAwRjEyRkY3IC8qIFNWR0FuaW1hdGlvbkRpc2Ny
ZXRlRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMyQTIyM0UzREU0MDBGMTJG
RjcgLyogU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzIxNDQzMkMyMjNFQjIyRTAwRjEyRkY3IC8qIFNWR1ByaW1pdGl2ZUxpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MjE0NDMyRTIyM0VCMkZFMDBGMTJGRjcgLyogU1ZHTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTQ0MzJGMjIz
RUI2RTgwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MjE0NDMzMDIyM0VCN0M3MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlBY2Nlc3Nvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFjY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyMTQ0MzM5MjIzRjc3NUYwMEYxMkZGNyAvKiBTVkdWYWx1ZVByb3BlcnR5TGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MjE0NDMzQTIyM0Y3RDkwMDBGMTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyMTQ0MzNCMjIzRjgwOUMwMEYxMkZGNyAvKiBTVkdBbmltYXRlZFByb3Bl
cnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMzRDIyM0Y4MzE3MDBGMTJGRjcgLyogU1ZH
UHJvcGVydHlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5TGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMzRTIyM0ZFQ0E5MDBGMTJGRjcgLyogU1ZHQW5p
bWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1h
dGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MjE0NDMzRjIyM0ZFREI4MDBGMTJGRjcgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0
RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkMyMjM4RUUwODAwN0Yw
NzlDIC8qIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyM0Y5N0JEMjIzOEVFMDgwMDdGMDc5QyAvKiBTVkdBdHRyaWJ1dGVB
bmltYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZUFuaW1hdGlv
bkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkUyMjM5
NTEyRDAwN0YwNzlDIC8qIFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzMxLDEyICs5NzM4LDggQEAK
IAkJN0MzM0YzNjAxQjRBMDUwNDAwNTAyQ0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50RnJhZ21l
bnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM2MjFEREE4
NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0MzOUMzNjMxRERBODY0OTAwRkVGQjI5IC8qIFNWR0xlbmd0aExp
c3RWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzM5QzM2NjFEREI4MkNG
MDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJN0MzOUMzNjcxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RW
YWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHU3RyaW5nTGlzdFZh
bHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM2ODFEREI4NkQzMDBG
RUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdOdW1iZXJMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0MzOUMzNjkxRERCODZEMzAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTnVtYmVyTGlzdFZhbHVl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzM5QzM2QTFEREI4NzFDMDBGRUZC
MjkgLyogU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNWR1BvaW50TGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTdDMzlDMzZCMUREQjg3MUMwMEZFRkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUG9pbnRMaXN0VmFsdWVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZDMUREQjhCQjAwMEZFRkIyOSAvKiBT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzM5QzM2RDFEREI4QkIwMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUcmFuc2Zvcm1MaXN0VmFs
dWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZFMUREQkEzRTAwMEZF
RkIyOSAvKiBTVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjIxOSw2ICsxNjIyMiw3IEBACiAJCQkJNTVFRTUzNTYyMjNCMjlGNzAw
RkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCAqLywKIAkJCQkwODhB
MERGRDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgg
Ki8sCiAJCQkJNTVFRTUzNUMyMjNCMkEwRDAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlJ
bXBsLmggKi8sCisJCQkJNzIxNDQzM0IyMjNGODA5QzAwRjEyRkY3IC8qIFNWR0FuaW1hdGVkUHJv
cGVydHlMaXN0LmggKi8sCiAJCQkJNTVCRTAyNUUyMjNCMjlDNDAwMzJGMDhBIC8qIFNWR0FuaW1h
dGVkUHJvcGVydHlQYWlyQWNjZXNzb3IuaCAqLywKIAkJCQk1NUVFNTM1RDIyM0IyQTBEMDBGQkE5
NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaCAqLywKIAkJCQk1NUVF
NTM1RjIyM0IyQTBGMDBGQkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5o
ICovLApAQCAtMTYyMjgsOCArMTYyMzIsMTIgQEAKIAkJCQkwODUyNUU2MjEyNzhDMDAxMDBBODQ3
NzggLyogU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODVBMTU5
MjEyODlBOEREMDAyNzEwRTMgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFy
T2ZmLmggKi8sCiAJCQkJNTVCRTAyNUYyMjNCMjlDNTAwMzJGMDhBIC8qIFNWR0FuaW1hdGlvbkFk
ZGl0aXZlRnVuY3Rpb24uaCAqLywKKwkJCQk3MjE0NDMzRjIyM0ZFREI4MDBGMTJGRjcgLyogU1ZH
QW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCAqLywKKwkJCQk3MjE0NDMzRTIyM0ZFQ0E5
MDBGMTJGRjcgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmggKi8sCiAJ
CQkJNTVFRTUzNUUyMjNCMkEwRTAwRkJBOTQ0IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVG
dW5jdGlvbi5oICovLAogCQkJCTU1QkUwMjU5MjIzQjI5QzEwMDMyRjA4QSAvKiBTVkdBbmltYXRp
b25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggKi8sCisJCQkJNzIxNDQzMjkyMjNFM0RDNTAw
RjEyRkY3IC8qIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24uaCAqLywKKwkJCQk3MjE0NDMy
QTIyM0UzREU0MDBGMTJGRjcgLyogU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaCAq
LywKIAkJCQk1NUJFMDI1QjIyM0IyOUMyMDAzMkYwOEEgLyogU1ZHQW5pbWF0aW9uRnVuY3Rpb24u
aCAqLywKIAkJCQk1NUZBN0ZFRjIxMEZBMzg2MDA1QUVGRTcgLyogU1ZHQXR0cmlidXRlLmggKi8s
CiAJCQkJNTVGQTdGRjQyMTBGQjY4ODAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgg
Ki8sCkBAIC0xNjI0MiwxOSArMTYyNTAsMjUgQEAKIAkJCQk1NUQ3MEQyMTIyM0IwMEJCMDAwNDRC
OEUgLyogU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5jcHAgKi8sCiAJCQkJNTVENzBEMjAyMjNC
MDA5MTAwMDQ0QjhFIC8qIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCAqLywKIAkJCQk1NUQ3
MEQyMjIyM0IwMEVBMDAwNDRCOEUgLyogU1ZHTGVnYWN5UHJvcGVydHkuaCAqLywKKwkJCQk3MjE0
NDMyRTIyM0VCMkZFMDBGMTJGRjcgLyogU1ZHTGlzdC5oICovLAogCQkJCTA4MTA3NjQzMTI4Mjg1
NTYwMDdDNjNCQSAvKiBTVkdMaXN0UHJvcGVydHkuaCAqLywKIAkJCQkwODhBMEUwMDEyNkVGMURC
MDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4Q0EzRDQzMTI4
OTRBMzgwMEZGRjI2MCAvKiBTVkdNYXRyaXhUZWFyT2ZmLmggKi8sCiAJCQkJNTVFRTUzNTQyMjNC
MjlFOTAwRkJBOTQ0IC8qIFNWR01lbWJlckFjY2Vzc29yLmggKi8sCiAJCQkJNTVCRTAyNUEyMjNC
MjlDMjAwMzJGMDhBIC8qIFNWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oICovLAorCQkJCTcyMTQ0
MzJDMjIzRUIyMkUwMEYxMkZGNyAvKiBTVkdQcmltaXRpdmVMaXN0LmggKi8sCiAJCQkJNTVFRTUz
NjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi8sCisJCQkJNzIxNDQzMzAyMjNF
QjdDNzAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5QWNjZXNzb3IuaCAqLywKKwkJCQk3MjE0NDMyRjIy
M0VCNkU4MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaCAqLywKKwkJCQk3MjE0
NDMzRDIyM0Y4MzE3MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlMaXN0LmggKi8sCiAJCQkJNTVFRTUz
NjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLywKIAkJCQk1NUJFMDI1
QzIyM0IyOUMzMDAzMkYwOEEgLyogU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmggKi8sCiAJCQkJ
NTVCRTAyNTcyMjNCMjlDMDAwMzJGMDhBIC8qIFNWR1Byb3BlcnR5UmVnaXN0cnkuaCAqLywKIAkJ
CQkwODhBMEUwMjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJ
CQkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggKi8sCi0J
CQkJMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCAqLywKIAkJCQkwODEzQTRFOTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVy
dHlUZWFyT2ZmLmggKi8sCisJCQkJNzIxNDQzM0EyMjNGN0Q5MDAwRjEyRkY3IC8qIFNWR1ZhbHVl
UHJvcGVydHkuaCAqLywKKwkJCQk3MjE0NDMzOTIyM0Y3NzVGMDBGMTJGRjcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eUxpc3QuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcHJvcGVydGllczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDExMyw4ICsyNDEyNyw2IEBACiAJCQkJNDM2MkM3Qjgx
M0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0FuaW1hdGVkQW5nbGUuY3BwICovLAogCQkJCTA4N0I4NDk1
MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggKi8sCiAJCQkJQjIyMjc3RTYw
RDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkQW5nbGUuaWRsICovLAotCQkJCTQzMUEzMDg3
MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmltYXRlZEJvb2xlYW4uY3BwICovLAotCQkJCTA4NTc5
NzA4MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmltYXRlZEJvb2xlYW4uaCAqLywKIAkJCQlCMjIy
NzdFNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmlkbCAqLywKIAkJCQk0
M0E2MjVGNzEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5jcHAgKi8sCiAJCQkJ
NDNBNjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCAqLywKQEAgLTI0
MTM4LDggKzI0MTUwLDYgQEAKIAkJCQk0MzFBMkY5QTEzQjZGMkIwMDA3NzkxRTQgLyogU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oICovLAogCQkJCTA4NjM5NTEzMTNCNUZFNTcwMEJC
MzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovLAogCQkJCTA4NjM5NTE0MTNCNUZFNTcwMEJC
MzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCAqLywKLQkJCQk0M0I5MzM2ODEzQjI2MUIxMDA0NTg0
QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovLAotCQkJCTQzQjkzMzY3MTNCMjYxQjEw
MDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oICovLAogCQkJCTQzMUEzMDIwMTNCODlE
Q0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uY3BwICovLAogCQkJ
CTA4RkUwQkM0MTI3RTJBQzEwMDBDNEZCNSAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uaCAqLywKIAkJCQlCMjIyNzdGNDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmlkbCAqLywKQEAgLTI0NDc4LDggKzI0NDg4LDYgQEAKIAkJCQlCMjIy
NzhGNDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9pbnQuaWRsICovLAogCQkJCUIyMjI3OEY2MEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuaCAqLywKIAkJCQlCMjIyNzhGNzBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmlkbCAqLywKLQkJCQk3QzM5QzM2QTFEREI4NzFDMDBG
RUZCMjkgLyogU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcCAqLywKLQkJCQk3QzM5QzM2QjFEREI4NzFD
MDBGRUZCMjkgLyogU1ZHUG9pbnRMaXN0VmFsdWVzLmggKi8sCiAJCQkJQjIyMjc4RjgwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzhGOTBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzhGQTBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHUG9seWdvbkVsZW1lbnQuY3BwICovLApAQCAtMjQ1MTMsOCArMjQ1MjEsNiBA
QAogCQkJCUIyMjI3OTE0MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdG9wRWxlbWVudC5pZGwgKi8s
CiAJCQkJQjIyMjc5MTYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaCAqLywKIAkJ
CQlCMjIyNzkxNzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5pZGwgKi8sCi0JCQkJ
N0MzOUMzNjYxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwICovLAot
CQkJCTdDMzlDMzY3MUREQjgyQ0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggKi8s
CiAJCQkJQjIyMjc5MjEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5jcHAgKi8s
CiAJCQkJQjIyMjc5MjIwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5oICovLAog
CQkJCUIyMjI3OTIzMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaWRsICovLApA
QCAtMzA4NjMsNiArMzA4NjksOCBAQAogCQkJCTQ5RTkxMUM3MEVGODZENDcwMDlEMENBRiAvKiBN
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQkM4REFEMUFB
QTMwMjIwMEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMxQkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RDQzlCQ0YyMjM4N0U5QTAwRkZCNTFDIC8qIE1lZGlh
Q2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRENDOUJEMTIy
Mzg3RUFBMDBGRkI1MUMgLyogTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3OEUwOTNBMTdEMTZFMUMwMDQyMEFBMSAvKiBNZWRpYUNvbnN0cmFpbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFD
b250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCURFQkNDREQ0MTY2NDZFQUYwMEE0
NTJFMSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMzE5
MDgsNyArMzE5MTYsNiBAQAogCQkJCUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmds
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0Fu
aW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4N0I4NDk2MTI3MkNFQzgw
MEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwODU3OTcw
OTEyNzgzOTRDMDBBOEVDNUYgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0M0E2MjVGODEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDhENDZDRTMxMjdBRDVGQzAwODk2OTRCIC8qIFNWR0FuaW1hdGVkRW51
bWVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTcxRkI5NjdCMTM4M0Q2NDYwMEFDOEE0QyAv
KiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywK
QEAgLTMxOTIwLDcgKzMxOTI3LDYgQEAKIAkJCQk0MzFBMkY5QzEzQjZGMkIwMDA3NzkxRTQgLyog
U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg2
Mzk1MTYxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDg5QThFMDcxMjhEOEIzRDAwRTdBNTM0IC8qIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAotCQkJCTQzQjkzMzY5MTNCMjYxQjEwMDQ1
ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGRTBC
QzUxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDgxMjZFRjFE
QjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywK
QEAgLTMyMDE3LDYgKzMyMDIzLDcgQEAKIAkJCQk3Q0NFQkZDMDFERDhGNkFCMDAyQzQwQjggLyog
U1ZHTGVuZ3RoVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTM5MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTNDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdMaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIFNWR0xpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4MTA3NjQ0MTI4Mjg1NTYwMDdDNjNCQSAvKiBTVkdMaXN0UHJvcGVydHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4OEEwRTA5MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0MTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTG9jYXRhYmxlLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMDg0LDYgKzMyMDkxLDkgQEAK
IAkJCQlCMjIyN0E5MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWdvbkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTk0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5bGluZUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTk3MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjE0NDMzMTIyM0VD
ODU0MDBGMTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIx
NDQzMzMyMjNFQzhCMDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg4QTBFMEIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VGVhck9m
Zi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMEMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1By
b3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5QTBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTAy
LDExICszMjExMiw5IEBACiAJCQkJQjIyMjdBQTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Njcmlw
dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUE2MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFGRDAxMDBEQUYzMzU1MDBG
NUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4ODBGNzBFMTI4
MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwODEzQTRFQTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FBOTBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHU3RvcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUFDMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzM5QzM3NzFEREJF
MTcwMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjdBQjgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBQkIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1NWR0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QUJFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTd2l0Y2hFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTY2LDcgKzMyMTc0LDYgQEAKIAkJCQlDNjUwNDZB
OTE2N0JGQjU1MDBDQzJBNEQgLyogVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjZFOTQ0REQxQUM0QjRFQTAwN0I4NUI1IC8qIFRlcm0uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1NTBCNkE2MDk5REYwMjcwMDkwRDc4MSAvKiBUZXh0LmggaW4gSGVh
ZGVycyAqLywKLQkJCQlDRENDOUJEMTIyMzg3RUFBMDBGRkI1MUMgLyogTWVkaWFDYXBhYmlsaXRp
ZXNFbmNvZGluZ0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTE3MDk5RTY0OTIwMDU2
RTU4MSAvKiBUZXh0QWZmaW5pdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0IyREI1MTU4NkFC
QUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTREQ0U2MTg4MTA1MUQwMDNFRURCQiAvKiBUZXh0QXV0b1NpemluZy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjI2MCw3ICszMjI2Nyw2IEBACiAJCQkJNDlFOTExQzQwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQjQ4NEY0
RDE3MUY4MjFFMDAwNDA3NTUgLyogVHJhbnNmb3JtRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUU5MTFDRTBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLywKLQkJCQlDRENDOUJDRjIyMzg3RTlBMDBGRkI1MUMgLyogTWVkaWFDYXBhYmls
aXRpZXNEZWNvZGluZ0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUQwMEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1REIx
QkM2QTEwNzE1QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTQ1QkZENDEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRo
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcApp
bmRleCA1YmE5MjgxZTJlMGM3ZTcyYWIxOWI2NTA4MzAxYjMwNmNkMDc1YmIyLi4wMjg0NGI5MTJj
ZDBiMTE3MDQ4YzkyZGM5ODAxZjJiNjA0MmMwNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBQYXRoIHBhdGhGcm9tQ2lyY2xlRWxlbWVudChTVkdFbGVtZW50
JiBlbGVtZW50KQorc3RhdGljIFBhdGggcGF0aEZyb21DaXJjbGVFbGVtZW50KGNvbnN0IFNWR0Vs
ZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGlzPFNWR0NpcmNsZUVsZW1lbnQ+KGVsZW1l
bnQpKTsKIApAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgUGF0aCBwYXRoRnJvbUNpcmNsZUVsZW1l
bnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gcGF0aDsKIH0KIAotc3RhdGljIFBh
dGggcGF0aEZyb21FbGxpcHNlRWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50KQorc3RhdGljIFBh
dGggcGF0aEZyb21FbGxpcHNlRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwogICAgIGlm
ICghcmVuZGVyZXIpCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tRWxsaXBz
ZUVsZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gcGF0aDsKIH0KIAotc3Rh
dGljIFBhdGggcGF0aEZyb21MaW5lRWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50KQorc3RhdGlj
IFBhdGggcGF0aEZyb21MaW5lRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIFBhdGggcGF0aDsKICAgICBjb25zdCBhdXRvJiBsaW5lID0gZG93bmNhc3Q8U1ZHTGluZUVs
ZW1lbnQ+KGVsZW1lbnQpOwpAQCAtOTMsNDQgKzkzLDQ0IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9t
TGluZUVsZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gcGF0aDsKIH0KIAot
c3RhdGljIFBhdGggcGF0aEZyb21QYXRoRWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50KQorc3Rh
dGljIFBhdGggcGF0aEZyb21QYXRoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQog
ewogICAgIHJldHVybiBkb3duY2FzdDxTVkdQYXRoRWxlbWVudD4oZWxlbWVudCkucGF0aEZvckJ5
dGVTdHJlYW0oKTsKIH0KIAotc3RhdGljIFBhdGggcGF0aEZyb21Qb2x5Z29uRWxlbWVudChTVkdF
bGVtZW50JiBlbGVtZW50KQorc3RhdGljIFBhdGggcGF0aEZyb21Qb2x5Z29uRWxlbWVudChjb25z
dCBTVkdFbGVtZW50JiBlbGVtZW50KQogewotICAgIGF1dG8mIHBvaW50cyA9IGRvd25jYXN0PFNW
R1BvbHlnb25FbGVtZW50PihlbGVtZW50KS5hbmltYXRlZFBvaW50cygpLT52YWx1ZXMoKTsKKyAg
ICBhdXRvJiBwb2ludHMgPSBkb3duY2FzdDxTVkdQb2x5Z29uRWxlbWVudD4oZWxlbWVudCkucG9p
bnRzKCkuaXRlbXMoKTsKICAgICBpZiAocG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLm1vdmVUbyhwb2ludHMuZmlyc3QoKSk7
CisgICAgcGF0aC5tb3ZlVG8ocG9pbnRzLmZpcnN0KCktPnZhbHVlKCkpOwogCiAgICAgdW5zaWdu
ZWQgc2l6ZSA9IHBvaW50cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgcGF0aC5hZGRMaW5lVG8ocG9pbnRzLmF0KGkpKTsKKyAgICAgICAg
cGF0aC5hZGRMaW5lVG8ocG9pbnRzLmF0KGkpLT52YWx1ZSgpKTsKIAogICAgIHBhdGguY2xvc2VT
dWJwYXRoKCk7CiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKLXN0YXRpYyBQYXRoIHBhdGhGcm9tUG9s
eWxpbmVFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgUGF0aCBwYXRoRnJvbVBv
bHlsaW5lRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogewotICAgIGF1dG8mIHBv
aW50cyA9IGRvd25jYXN0PFNWR1BvbHlsaW5lRWxlbWVudD4oZWxlbWVudCkuYW5pbWF0ZWRQb2lu
dHMoKS0+dmFsdWVzKCk7CisgICAgYXV0byYgcG9pbnRzID0gZG93bmNhc3Q8U1ZHUG9seWxpbmVF
bGVtZW50PihlbGVtZW50KS5wb2ludHMoKS5pdGVtcygpOwogICAgIGlmIChwb2ludHMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGgubW92
ZVRvKHBvaW50cy5maXJzdCgpKTsKKyAgICBwYXRoLm1vdmVUbyhwb2ludHMuZmlyc3QoKS0+dmFs
dWUoKSk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gcG9pbnRzLnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2lu
dHMuYXQoaSkpOworICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXQoaSktPnZhbHVlKCkp
OwogICAgIHJldHVybiBwYXRoOwogfQogCi1zdGF0aWMgUGF0aCBwYXRoRnJvbVJlY3RFbGVtZW50
KFNWR0VsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgUGF0aCBwYXRoRnJvbVJlY3RFbGVtZW50KGNv
bnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIg
PSBlbGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKQEAgLTE2OSwxMSArMTY5
LDExIEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tUmVjdEVsZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVu
dCkKICAgICByZXR1cm4gcGF0aDsKIH0KIAotUGF0aCBwYXRoRnJvbUdyYXBoaWNzRWxlbWVudChT
VkdFbGVtZW50KiBlbGVtZW50KQorUGF0aCBwYXRoRnJvbUdyYXBoaWNzRWxlbWVudChjb25zdCBT
VkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKIAotICAgIHR5cGVk
ZWYgUGF0aCAoKlBhdGhGcm9tRnVuY3Rpb24pKFNWR0VsZW1lbnQmKTsKKyAgICB0eXBlZGVmIFBh
dGggKCpQYXRoRnJvbUZ1bmN0aW9uKShjb25zdCBTVkdFbGVtZW50Jik7CiAgICAgc3RhdGljIEhh
c2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIFBhdGhGcm9tRnVuY3Rpb24+KiBtYXAgPSAwOwogICAg
IGlmICghbWFwKSB7CiAgICAgICAgIG1hcCA9IG5ldyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCBQYXRoRnJvbUZ1bmN0aW9uPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUGF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0
aERhdGEuaAppbmRleCA2MmRkODE5ODMzY2I1MTljZDZkMDFiZWU1MGQ4NDgyZTI4MThkY2JjLi40
NmZmODE1Y2I4NGJmOGQ0MDhlYTZkMjU2YzA5ZGE2OWZhMmE3ZjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5oCkBAIC0yNCw2ICsyNCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNWR0VsZW1lbnQ7CiBjbGFzcyBQYXRoOwogCi1QYXRoIHBhdGhG
cm9tR3JhcGhpY3NFbGVtZW50KFNWR0VsZW1lbnQqKTsKK1BhdGggcGF0aEZyb21HcmFwaGljc0Vs
ZW1lbnQoY29uc3QgU1ZHRWxlbWVudCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNw
cAppbmRleCAxNTU3NDRkM2ZkZGI3MDQ0MTNiN2EwNjljYWY1NmJlMzU4NGRjMzAxLi4zMDE4MzRm
MWYwNDRjNjdhZDcyMWU4OWQyYjFmMDFiYzA1ZDA0NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTI3MSw3ICsy
NzEsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgUmVuZGVyU1ZHU2hhcGUmIHNoYXBlKQogICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMs
ICJyIiwgZWxlbWVudC5yKCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOwogICAgIH0gZWxzZSBpZiAo
aXM8U1ZHUG9seUVsZW1lbnQ+KHN2Z0VsZW1lbnQpKSB7CiAgICAgICAgIGNvbnN0IFNWR1BvbHlF
bGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8U1ZHUG9seUVsZW1lbnQ+KHN2Z0VsZW1lbnQpOwot
ICAgICAgICB3cml0ZU5hbWVBbmRRdW90ZWRWYWx1ZSh0cywgInBvaW50cyIsIGVsZW1lbnQucG9p
bnRMaXN0KCkudmFsdWVBc1N0cmluZygpKTsKKyAgICAgICAgd3JpdGVOYW1lQW5kUXVvdGVkVmFs
dWUodHMsICJwb2ludHMiLCBlbGVtZW50LnBvaW50cygpLnZhbHVlQXNTdHJpbmcoKSk7CiAgICAg
fSBlbHNlIGlmIChpczxTVkdQYXRoRWxlbWVudD4oc3ZnRWxlbWVudCkpIHsKICAgICAgICAgY29u
c3QgU1ZHUGF0aEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxTVkdQYXRoRWxlbWVudD4oc3Zn
RWxlbWVudCk7CiAgICAgICAgIFN0cmluZyBwYXRoU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1l
bnQuaAppbmRleCBkNDFhZDBiMzUyMmRiOWQ3MTNkMzliMWU0NDhmZTU5OWFlNjc0YjA1Li4wNTc3
OTRiMGU3Y2YzMTQ0ZWI0OGJlZjIwZWE0ODkwMzBiZTM0YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVs
ZW1lbnQuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC00Miw4ICs0MiwxMSBAQCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkg
PSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdBRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+OwogICAg
IHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRl
UmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3Ry
eSgpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25z
dCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0
eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0FFbGVtZW50LCBTVkdHcmFw
aGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5j
ZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmlu
YWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBm
aW5hbDsKIApAQCAtNjQsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgd2lsbFJlc3BvbmRU
b01vdXNlQ2xpY2tFdmVudHMoKSBmaW5hbDsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9h
dHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUg
bV90YXJnZXQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5
cGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKaW5k
ZXggM2I0ZTg2MWEzMDFjMDEwZWViZTM3YWUwMzNjZjExMzRhYTFiYzc5Zi4uZDM0ZjllZDA2NjIw
NDFhNWM3YzQzZjA4ZTQ0NWJjMzUwYzRkZGJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRH
bHlwaEVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDgsMTAgKzQ4LDE0IEBAIHByaXZhdGU6CiAgICAg
dXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNW
R0FsdEdseXBoRWxlbWVudCwgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVVJJUmVmZXJl
bmNlPjsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclBy
b3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKKyAg
ICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0Fs
dEdseXBoRWxlbWVudCwgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVVJJUmVmZXJlbmNl
PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKICAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBdHRyaWJ1dGVP
d25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9v
bGVhbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM3NTE5YmZlMzBmYmFjZTQwN2ZlZDljNmFkNzM1
ODI4YWI0MGE4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlRWxl
bWVudEJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdBbmltYXRlZEJvb2xlYW5B
bmltYXRvcjo6U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCi0gICAgOiBTVkdB
bmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZEJvb2xlYW4sIGFuaW1hdGlvbkVsZW1lbnQsIGNv
bnRleHRFbGVtZW50KQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBT
VkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKLXsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGUoU1ZHUHJv
cGVydHlUcmFpdHM8Ym9vbD46OmZyb21TdHJpbmcoc3RyaW5nKSk7Ci19Ci0KLXN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpzdGFydEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmlt
YXRlZFR5cGVzKQotewotICAgIHJldHVybiBjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1h
dGVkQm9vbGVhbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRCb29sZWFu
QW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBzdG9wQW5pbVZhbEFuaW1hdGlvbkZv
clR5cGU8U1ZHQW5pbWF0ZWRCb29sZWFuPihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdB
bmltYXRlZEJvb2xlYW5BbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZHQW5pbWF0ZWRUeXBl
JiB0eXBlKQotewotICAgIHJlc2V0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZEJvb2xlYW4+KGFu
aW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9y
OjphbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
IGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgYW5pbVZhbFdpbGxDaGFuZ2VGb3JUeXBlPFNWR0FuaW1h
dGVkQm9vbGVhbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRCb29sZWFu
QW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVy
dHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNW
R0FuaW1hdGVkQm9vbGVhbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRC
b29sZWFuQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5p
bWF0ZWRUeXBlKikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBTVkdB
bmltYXRlZEJvb2xlYW5BbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJj
ZW50YWdlLCB1bnNpZ25lZCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUq
IHRvLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQotewotICAg
IEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50
KTsKLQotICAgIGNvbnN0IGF1dG8gZnJvbUJvb2xlYW4gPSAobV9hbmltYXRpb25FbGVtZW50LT5h
bmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6IGZyb20pLT5h
czxib29sPigpOwotICAgIGNvbnN0IGF1dG8gdG9Cb29sZWFuID0gdG8tPmFzPGJvb2w+KCk7Ci0g
ICAgYXV0byYgYW5pbWF0ZWRCb29sZWFuID0gYW5pbWF0ZWQtPmFzPGJvb2w+KCk7Ci0KLSAgICBt
X2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVEaXNjcmV0ZVR5cGU8Ym9vbD4ocGVyY2VudGFnZSwg
ZnJvbUJvb2xlYW4sIHRvQm9vbGVhbiwgYW5pbWF0ZWRCb29sZWFuKTsKLX0KLQotZmxvYXQgU1ZH
QW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpCi17Ci0gICAgLy8gTm8gcGFjZWQgYW5pbWF0aW9ucyBmb3IgYm9vbGVh
bi4KLSAgICByZXR1cm4gLTE7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZEJvb2xlYW4uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc1OTA5ZjA3NmI0YjFhODQ2
Yzc1Nzg4NWMyZWFjZDU5NzRiYTUyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlICJTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgotI2luY2x1
ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgiCi0jaW5jbHVkZSAiU1ZHQXR0cmlidXRlQWNj
ZXNzb3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTVkdBbmltYXRpb25FbGVt
ZW50OwotCi11c2luZyBTVkdBbmltYXRlZEJvb2xlYW4gPSBTVkdBbmltYXRlZFN0YXRpY1Byb3Bl
cnR5VGVhck9mZjxib29sPjsKLXVzaW5nIFNWR0FuaW1hdGVkQm9vbGVhbkF0dHJpYnV0ZSA9IFNW
R0FuaW1hdGVkQXR0cmlidXRlPFNWR0FuaW1hdGVkQm9vbGVhbj47Ci0KLXRlbXBsYXRlPHR5cGVu
YW1lIE93bmVyVHlwZT4KLXVzaW5nIFNWR0FuaW1hdGVkQm9vbGVhbkF0dHJpYnV0ZUFjY2Vzc29y
ID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkQm9v
bGVhbkF0dHJpYnV0ZSwgQW5pbWF0ZWRCb29sZWFuPjsKLQotY2xhc3MgU1ZHQW5pbWF0ZWRCb29s
ZWFuQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewotcHVi
bGljOgotICAgIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
LCBTVkdFbGVtZW50Kik7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBj
b25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBhZGRBbmltYXRlZFR5cGVz
KFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZvaWQg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRD
b3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBl
KiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFu
Y2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVy
cmlkZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
ZmZlMGMxMDVjM2RhODE3YmZjOTUzZDM4YmIwZDk5MmEyZWY5OWFiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBvaW50TGlzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMSwgMjAxMi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1h
dGVkUG9pbnRMaXN0LmgiCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudEJhc2UuaCIKLSNp
bmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTVkdQb2ludC5oIgotI2lu
Y2x1ZGUgIlNWR1BvaW50TGlzdFZhbHVlcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNW
R0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OlNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3Io
U1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpCi0gICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZFBvaW50cywg
YW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCi17Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNvbnN0cnVj
dEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIFNWR0FuaW1h
dGVkVHlwZTo6Y3JlYXRlKFNWR1Byb3BlcnR5VHJhaXRzPFNWR1BvaW50TGlzdFZhbHVlcz46OmZy
b21TdHJpbmcoc3RyaW5nKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+
IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAg
cmV0dXJuIGNvbnN0cnVjdEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+KGFuaW1h
dGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OnN0b3BB
bmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5p
bWF0ZWRUeXBlcykKLXsKLSAgICBzdG9wQW5pbVZhbEFuaW1hdGlvbkZvclR5cGU8U1ZHQW5pbWF0
ZWRQb2ludExpc3Q+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkUG9pbnRM
aXN0QW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1hdGVkVHlwZSYgdHlwZSkKLXsK
LSAgICByZXNldEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+KGFuaW1hdGVkVHlw
ZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmFuaW1W
YWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0
ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsV2lsbENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRQb2lu
dExpc3Q+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5p
bWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0Fu
aW1hdGVkUG9pbnRMaXN0PihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFBv
aW50TGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwg
U1ZHQW5pbWF0ZWRUeXBlKiB0bykKLXsKLSAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1h
dGVkUG9pbnRzKTsKLSAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwotCi0g
ICAgY29uc3QgYXV0byYgZnJvbVBvaW50TGlzdCA9IGZyb20tPmFzPFNWR1BvaW50TGlzdFZhbHVl
cz4oKTsKLSAgICBhdXRvJiB0b1BvaW50TGlzdCA9IHRvLT5hczxTVkdQb2ludExpc3RWYWx1ZXM+
KCk7Ci0KLSAgICB1bnNpZ25lZCBmcm9tUG9pbnRMaXN0U2l6ZSA9IGZyb21Qb2ludExpc3Quc2l6
ZSgpOwotICAgIGlmICghZnJvbVBvaW50TGlzdFNpemUgfHwgZnJvbVBvaW50TGlzdFNpemUgIT0g
dG9Qb2ludExpc3Quc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZnJvbVBvaW50TGlzdFNpemU7ICsraSkKLSAgICAgICAgdG9Qb2ludExpc3Rb
aV0gKz0gZnJvbVBvaW50TGlzdFtpXTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFu
aW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8s
IFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9mRHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5p
bWF0ZWQpCi17Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0KLSAgICBjb25zdCBh
dXRvJiBmcm9tUG9pbnRMaXN0ID0gKG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgp
ID09IEFuaW1hdGlvbk1vZGU6OlRvID8gYW5pbWF0ZWQgOiBmcm9tKS0+YXM8U1ZHUG9pbnRMaXN0
VmFsdWVzPigpOwotICAgIGNvbnN0IGF1dG8mIHRvUG9pbnRMaXN0ID0gdG8tPmFzPFNWR1BvaW50
TGlzdFZhbHVlcz4oKTsKLSAgICBjb25zdCBhdXRvJiB0b0F0RW5kT2ZEdXJhdGlvblBvaW50TGlz
dCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5hczxTVkdQb2ludExpc3RWYWx1ZXM+KCk7Ci0gICAgYXV0
byYgYW5pbWF0ZWRQb2ludExpc3QgPSBhbmltYXRlZC0+YXM8U1ZHUG9pbnRMaXN0VmFsdWVzPigp
OwotICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNW
R1BvaW50TGlzdFZhbHVlcz4oZnJvbVBvaW50TGlzdCwgdG9Qb2ludExpc3QsIGFuaW1hdGVkUG9p
bnRMaXN0LCBwZXJjZW50YWdlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQgZnJv
bVBvaW50TGlzdFNpemUgPSBmcm9tUG9pbnRMaXN0LnNpemUoKTsKLSAgICB1bnNpZ25lZCB0b1Bv
aW50TGlzdFNpemUgPSB0b1BvaW50TGlzdC5zaXplKCk7Ci0gICAgdW5zaWduZWQgdG9BdEVuZE9m
RHVyYXRpb25TaXplID0gdG9BdEVuZE9mRHVyYXRpb25Qb2ludExpc3Quc2l6ZSgpOwotCi0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvUG9pbnRMaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAg
IEZsb2F0UG9pbnQgZWZmZWN0aXZlRnJvbTsKLSAgICAgICAgaWYgKGZyb21Qb2ludExpc3RTaXpl
KQotICAgICAgICAgICAgZWZmZWN0aXZlRnJvbSA9IGZyb21Qb2ludExpc3RbaV07Ci0gICAgICAg
IEZsb2F0UG9pbnQgZWZmZWN0aXZlVG9BdEVuZCA9IGkgPCB0b0F0RW5kT2ZEdXJhdGlvblNpemUg
PyB0b0F0RW5kT2ZEdXJhdGlvblBvaW50TGlzdFtpXSA6IEZsb2F0UG9pbnQoKTsKLQotICAgICAg
ICBmbG9hdCBhbmltYXRlZFggPSBhbmltYXRlZFBvaW50TGlzdFtpXS54KCk7Ci0gICAgICAgIGZs
b2F0IGFuaW1hdGVkWSA9IGFuaW1hdGVkUG9pbnRMaXN0W2ldLnkoKTsKLSAgICAgICAgbV9hbmlt
YXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291
bnQsIGVmZmVjdGl2ZUZyb20ueCgpLCB0b1BvaW50TGlzdFtpXS54KCksIGVmZmVjdGl2ZVRvQXRF
bmQueCgpLCBhbmltYXRlZFgpOwotICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVB
ZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJvbS55KCks
IHRvUG9pbnRMaXN0W2ldLnkoKSwgZWZmZWN0aXZlVG9BdEVuZC55KCksIGFuaW1hdGVkWSk7Ci0g
ICAgICAgIGFuaW1hdGVkUG9pbnRMaXN0W2ldID0gRmxvYXRQb2ludChhbmltYXRlZFgsIGFuaW1h
dGVkWSk7Ci0gICAgfQotfQotCi1mbG9hdCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpj
YWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQotewotICAgIC8v
IEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNWR1BvaW50
TGlzdFZhbHVlcyByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIG9mIGZvciBldmVyeSBz
aW5nbGUgdmFsdWUuCi0gICAgcmV0dXJuIC0xOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFBvaW50TGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmJk
MjVjNDBhNWI4ZjYxMWQ3ZDY5NzliZTZmZWQyYTBlMWVjMTBiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFBvaW50TGlzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKLSNpbmNsdWRlICJT
VkdBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oIgotI2luY2x1
ZGUgIlNWR1BvaW50TGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ7Ci0KLXVzaW5nIFNWR0FuaW1hdGVkUG9pbnRMaXN0ID0gU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdFZhbHVlcz47Ci11c2luZyBTVkdBbmlt
YXRlZFBvaW50TGlzdEF0dHJpYnV0ZSA9IFNWR0FuaW1hdGVkQXR0cmlidXRlTGlzdDxTVkdBbmlt
YXRlZFBvaW50TGlzdD47Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KLXVzaW5nIFNW
R0FuaW1hdGVkUG9pbnRMaXN0QXR0cmlidXRlQWNjZXNzb3IgPSBTVkdBbmltYXRlZEF0dHJpYnV0
ZUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRQb2ludExpc3RBdHRyaWJ1dGUsIEFuaW1h
dGVkUG9pbnRzPjsKLQotY2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7Ci1wdWJsaWM6Ci0gICAgU1ZHQW5pbWF0
ZWRQb2ludExpc3RBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwot
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJv
cGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJl
c2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
LCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdl
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZv
aWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
KSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUq
LCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVk
VHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlw
ZSopIG92ZXJyaWRlOwotICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKaW5kZXgg
YzZkNzhhY2M5ZDcxMzgwNWExODQyNTE5ODc0NmUxNDRiNjhlNWRiYy4uNmZmN2VkMzdjOGE4MTJj
NDhhODg1YWRjNTU1NzljYjFlMTdkOGZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5
cGUuaApAQCAtMTEwLDggKzExMCwyNCBAQCBwdWJsaWM6CiAKICAgICBBbmltYXRlZFByb3BlcnR5
VHlwZSB0eXBlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZhbHVlLmluZGV4KCkg
Pj0gQW5pbWF0ZWRQcm9wZXJ0eVR5cGVNaW4gJiYgbV92YWx1ZS5pbmRleCgpIDwgQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGVNYXgpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRQcm9w
ZXJ0eVR5cGU+KG1fdmFsdWUuaW5kZXgoKSk7CisgICAgICAgIHN0YXRpYyBBbmltYXRlZFByb3Bl
cnR5VHlwZSBhbmltYXRlZFR5cGVzW10gPSB7CisgICAgICAgICAgICBBbmltYXRlZEFuZ2xlLAor
ICAgICAgICAgICAgQW5pbWF0ZWRDb2xvciwKKyAgICAgICAgICAgIEFuaW1hdGVkRW51bWVyYXRp
b24sCisgICAgICAgICAgICBBbmltYXRlZExlbmd0aCwKKyAgICAgICAgICAgIEFuaW1hdGVkTGVu
Z3RoTGlzdCwKKyAgICAgICAgICAgIEFuaW1hdGVkTnVtYmVyLAorICAgICAgICAgICAgQW5pbWF0
ZWROdW1iZXJMaXN0LAorICAgICAgICAgICAgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlciwK
KyAgICAgICAgICAgIEFuaW1hdGVkUGF0aCwKKyAgICAgICAgICAgIEFuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpbywKKyAgICAgICAgICAgIEFuaW1hdGVkUmVjdCwKKyAgICAgICAgICAgIEFuaW1h
dGVkU3RyaW5nLAorICAgICAgICAgICAgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0CisgICAgICAgIH07
CisKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4obV92YWx1ZS5pbmRleCgpKSA8
IHNpemVvZihhbmltYXRlZFR5cGVzKSAvIHNpemVvZihhbmltYXRlZFR5cGVzWzBdKSk7CisgICAg
ICAgIHJldHVybiBhbmltYXRlZFR5cGVzW21fdmFsdWUuaW5kZXgoKV07CiAgICAgfQogCiAgICAg
U3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmgKaW5kZXggM2Y0YTU3NmVhMzlkNzgzODk5ZDVmYzJiMDM4NjFkYmIyNGE2ZWE0
NC4uNzczMDg4YjY3YjE0MTdlMzY1OTE2OWY5OGJiMGQyYmNmYmFhYzdlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2MuaWQuYXU+
CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjQsNyArMjQsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdTTUlMRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1Rlc3RzLmgiCkBAIC0xNDcsNiArMTQ2LDkgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBB
dHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnko
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9CiAg
ICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCisgICAgdXNp
bmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdBbmltYXRp
b25FbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdU
ZXN0cz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAgdmly
dHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CkBAIC0yMDcsNiArMjA5LDcgQEAgcHJp
dmF0ZToKICAgICBDYWxjTW9kZSBtX2NhbGNNb2RlIHsgQ2FsY01vZGU6OkxpbmVhciB9OwogICAg
IEFuaW1hdGlvbk1vZGUgbV9hbmltYXRpb25Nb2RlIHsgQW5pbWF0aW9uTW9kZTo6Tm9uZSB9Owog
ICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsK
KyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0
b3J5LmgKaW5kZXggMGY0NTc2MzMxNGEwYWE4OWQwYWIzNzNjMzE4ZGJlYTA2NjU1NDljNS4uOWZk
OTE3ZmExNDRhNWYxMDhmNjNjODI5ZjUzMjQyM2EwYmQ5ZmM1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRvckZhY3RvcnkuaApAQCAtMjAsNyArMjAsNiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29s
ZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRDb2xvci5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgpAQCAtMjks
NyArMjgsNiBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFBhdGguaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVj
dC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCkBAIC01MCw3ICs0OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50
LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRCb29sZWFuOgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+
KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I+KCphbmltYXRpb25FbGVt
ZW50LCAqY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkRW51bWVyYXRpb246
CkBAIC03Miw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBbmltYXRlZFBhdGg6CiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhBbmltYXRv
cj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1h
dGVkUG9pbnRzOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRQb2ludExpc3RBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcmVzZXJ2
ZUFzcGVjdFJhdGlvOgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRl
eHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXgg
Njc3N2Y3MzhjNDc5ZDkxOGE0MTM3NThiMGQyZTQwZTQ1MGI4YzQ3Ni4uNGNhMzYyZDc1MmNhOGRj
MDZiYzgzZWJkYTliYTk5NWYzYjhmMDJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTA5LDcgKzEwOSw3
IEBAIHZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVzZXRBbmltYXRlZFR5
cGUoKQogdm9pZCBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyOjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlM
RWxlbWVudCopCiB7CiAgICAgQVNTRVJUKHBlcmNlbnRhZ2UgPj0gMCAmJiBwZXJjZW50YWdlIDw9
IDEpOwotICAgIGlmIChtX3RhcmdldEVsZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFn
KSkKKyAgICBpZiAobV9hbmltYXRpb25FbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRh
ZykpCiAgICAgICAgIHBlcmNlbnRhZ2UgPSAxOwogCiAgICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVu
dC5jYWxjTW9kZSgpID09IENhbGNNb2RlOjpEaXNjcmV0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5oCmluZGV4IDY1YzdiNDY1YjUxMjg4NDAxYTM0M2M5ODBjMDJjZTcwOTY4NTEw
MDguLjVhMGViNzAzMmI1ZTMxNGE1ZGJiYTIwMDQ3YWQyODc1NmY2N2FiM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaApAQCAtNDYsMTAgKzQ2LDE3IEBAIHByaXZhdGU6CiAK
ICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUlt
cGw8U1ZHQ2lyY2xlRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkPjsKICAgICBzdGF0aWMgYXV0byYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAg
ICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQ
cm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0NpcmNsZUVsZW1l
bnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47Cisg
ICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC01OSw2ICs2Niw3IEBA
IHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAog
ICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsK
KyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAg
U1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9jeCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAg
IFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fY3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9yIHsgTGVuZ3RoTW9kZU90aGVyIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKaW5kZXggNjNiNmJkZTBlMjQzM2I2
ZWM1ZGFhMmYwZWVhNjZlMzdhZTNhZGZmNy4uMDNjMWFkZGY3ZTBlMmYyZDg2YzgzODU4NTExM2M4
MDQzMTA4ZmYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaApAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdB
bmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAj
aW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0dy
YXBoaWNzRWxlbWVudC5oIgpAQCAtNDQsMTAgKzQzLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHQ2xp
cFBhdGhFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclBy
b3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5
JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlP
d25lclJlZ2lzdHJ5PFNWR0NsaXBQYXRoRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5
JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lz
dHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JikgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBm
aW5hbDsKQEAgLTU5LDYgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0
ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+IG1fY2xpcFBhdGhVbml0cyB7IFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAppbmRl
eCA5ZjQ2YmVjZGZiNGI5YzE5YTA1YTRkOTNiYWJiYTVmMzU5MzZiYzJkLi45ZDJiNmRlNmZmYTY2
NmM4YzQzMzljOGY0ODNkMWEyZDgzZWQzZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaApAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTk2
LDEwICs5NiwxNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5
ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQsIFNWR0VsZW1lbnQ+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpB
dHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBB
dHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRy
aWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lz
dHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LCBTVkdFbGVtZW50PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBw
cm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lz
dHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAKQEAgLTEwNyw2ICsxMTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgCiBw
cml2YXRlOgogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsg
KnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxDb21wb25lbnRUcmFuc2Zl
clR5cGU+IG1fdHlwZSB7IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9JREVOVElUWSB9OwogICAg
IFNWR0FuaW1hdGVkTnVtYmVyTGlzdEF0dHJpYnV0ZSBtX3RhYmxlVmFsdWVzOwogICAgIFNWR0Fu
aW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc2xvcGUgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1
cnNvckVsZW1lbnQuaAppbmRleCAyYTcxYzYyYzBiNmQ4N2Q0ZmJlMTMwNzU3NWU2Mzc2MjM2ZGZm
ZjMxLi44ZDY5NWNhZjEzMTQ0ZmYxMWZiZjk4YmM3Y2VlNjk5NzdhNTdjYzQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw3ICsyMSw2IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgog
I2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTU0LDEwICs1MywxNyBAQCBwcml2YXRlOgogCiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0N1cnNvckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR1Rlc3RzLCBTVkdVUklSZWZlcmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25l
clByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBB
dHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJv
b2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25z
dCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0
eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0N1cnNvckVsZW1lbnQsIFNW
R0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1Rlc3RzLCBTVkdVUklS
ZWZlcmVuY2U+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0
cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKyAgICAKKyAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAg
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAK
QEAgLTY3LDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3QgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVP
d25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIG1feSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBIYXNoU2V0PENTU0N1
cnNvckltYWdlVmFsdWUqPiBtX2NsaWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRGVmc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5o
CmluZGV4IGRmM2MwNDAzZWNmNWI1NjgyYWZjYTcyZTlmN2EyN2EwNTczZTQ1MWYuLjNhYjRlOTll
M2M1OGFlY2YyMGE4NjNjN2VkOWYyNDMzNzc0MzJkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZz
RWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKIApAQCAtMzcsNiArMzYsOSBA
QCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHlJbXBsPFNWR0RlZnNFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJv
eHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0
ZU93bmVyUHJveHk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJv
cGVydHlPd25lclJlZ2lzdHJ5PFNWR0RlZnNFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0
cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVn
aXN0cnk7IH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNGb2N1cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC00NCw2ICs0Niw3
IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsK
IAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMg
fTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5k
ZXggYjY2NGQzZDBiMGM4NTQ4NDI0ZmUzMDRkNjNhZTk3MzU0OTk5OWQ2Ny4uMGM4NjU5ODgyMWI5
M2ZhYTdhZGZjZDQyMGJkNzUzOTliMmM0MDAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cApAQCAtNzIwLDEyICs3MjAsMjQgQEAgdm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZUFuaW1h
dGVkU1ZHQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnMKICAgICBTVkdF
bGVtZW50KiBub25Db25zdFRoaXMgPSBjb25zdF9jYXN0PFNWR0VsZW1lbnQqPih0aGlzKTsKICAg
ICBpZiAobmFtZSA9PSBhbnlRTmFtZSgpKQogICAgICAgICBzeW5jaHJvbml6ZUFsbEFuaW1hdGVk
U1ZHQXR0cmlidXRlKG5vbkNvbnN0VGhpcyk7Ci0gICAgZWxzZSBpZiAoaXNBbmltYXRlZFByb3Bl
cnR5QXR0cmlidXRlKG5hbWUpKSB7CisgICAgZWxzZSB7CiAgICAgICAgIC8vIElmIHRoZSB2YWx1
ZSBvZiB0aGUgcHJvcGVydHkgaGFzIGNoYW5nZWQsIHNlcmlhbGl6ZSB0aGUgbmV3IHZhbHVlIHRv
IHRoZSBhdHRyaWJ1dGUuCiAgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJvcGVydHlSZWdpc3Ry
eSgpLnN5bmNocm9uaXplKG5hbWUpKQogICAgICAgICAgICAgbm9uQ29uc3RUaGlzLT5zZXRTeW5j
aHJvbml6ZWRMYXp5QXR0cmlidXRlKG5hbWUsICp2YWx1ZSk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IG5vbkNvbnN0VGhpcy0+c3luY2hyb25pemVBdHRyaWJ1dGUobmFtZSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG5vbkNvbnN0VGhpcy0+c3luY2hyb25pemVBdHRyaWJ1dGUobmFtZSk7Cisg
ICAgfQorfQorICAgIAordm9pZCBTVkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdQ
cm9wZXJ0eSogcHJvcGVydHkpCit7CisgICAgLy8gV2Ugd2FudCB0byBkaXJ0eSB0aGUgdG9wLWxl
dmVsIHByb3BlcnR5IHdoZW4gYSBkZXNjZW5kYW50IGNoYW5nZXMuIEZvciBleGFtcGxlCisgICAg
Ly8gYSBjaGFuZ2UgaW4gYW4gU1ZHTGVuZ3RoIGl0ZW0gaW4gU1ZHTGVuZ3RoTGlzdCBzaG91bGQg
c2V0IHRoZSBkaXJ0eSBmbGFnIG9uCisgICAgLy8gU1ZHTGVuZ3RoTGlzdCBhbmQgbm90IHRoZSBT
VkdMZW5ndGguCisgICAgcHJvcGVydHktPnNldERpcnR5KCk7CisKKyAgICBpbnZhbGlkYXRlU1ZH
QXR0cmlidXRlcygpOworICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQocHJvcGVydHlSZWdpc3RyeSgp
LnByb3BlcnR5QXR0cmlidXRlTmFtZSgqcHJvcGVydHkpKTsKIH0KIAogdm9pZCBTVkdFbGVtZW50
Ojpjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3Bl
cnR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggOTI5NmNiYTFlMTFhZDRlMzAzNjAzMWQ0
MzliOGZkMDU0YzdhOTA3OS4uOGE4ODQ3NDVkNDU0NTVlNmI3MDM1MmYwZTM0MDNlMGQ2N2VhYTcw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0xNTcsNyArMTU3LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNBbmltYXRlZFByb3BlcnR5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKICAgICBib29sIGlzQW5pbWF0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OwogCi0gICAgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5nZSgpIG92ZXJyaWRlIHsg
fQorICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR0FuaW1hdGVkUHJvcGVydHkmKTsKIAog
ICAgIGNvbnN0IFNWR0VsZW1lbnQqIGF0dHJpYnV0ZUNvbnRleHRFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdGhpczsgfQpAQCAtMjE2LDkgKzIxNiw4IEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDxTVkdFbGVtZW50Kj4gbV9lbGVtZW50c1dpdGhSZWxhdGl2ZUxlbmd0aHM7CiAKICAg
ICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07Ci0g
ICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9jbGFzc05hbWU7Ci0gICAgCiAgICAgUHJv
cGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OworICAgIFNWR0FuaW1h
dGVkU3RyaW5nQXR0cmlidXRlIG1fY2xhc3NOYW1lOwogfTsKIAogY2xhc3MgU1ZHRWxlbWVudDo6
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxsaXBzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5oCmluZGV4IDlkYWFlYThjZjhiYWFlMWYyM2Y3MjZhNTY5OTQzNjI4ZDJjYTgzYTAuLjNj
OWJjZmM3ZDliYTFjZWYxYTRjMjVjOWM3MWFmNTc4NGJjNDExNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGxpcHNlRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDgsMTAgKzQ4LDE3IEBAIHByaXZh
dGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQ
cm94eUltcGw8U1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0
dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lz
dHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0VsbGlwc2VFbGVtZW50LCBTVkdHZW9t
ZXRyeUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OworICAgIGNvbnN0IFNW
R1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
IHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNjEsNiArNjgsNyBAQCBwcml2YXRlOgog
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1
dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fY3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZSBtX2N5IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlIG1fcnggeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcAppbmRleCAz
YTFlNTZkZDYyM2E2YjI0ZWI3NTgwODY0MGViMTM3N2NkZjdkYzNmLi5hZjI2MWI2ODYxMjhlMjcw
MDIzZTAyZGY4OTZhNjU5NmM5NjQ1NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCkBAIC0yOSwyMiArMjksMTggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIDog
bV9jb250ZXh0RWxlbWVudCgqY29udGV4dEVsZW1lbnQpCisgICAgLCBtX2V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoU1ZHQW5pbWF0ZWRCb29sZWFuOjpjcmVhdGUoY29udGV4dEVsZW1lbnQpKQog
ewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotfQotCi12b2lkIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkg
PSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCAmU1ZHRWxsaXBzZUVsZW1lbnQ6Om1fZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZD4oKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZs
YWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlS
ZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsICZTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjptX2V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ+KCk7CisgICAgfSk7CiB9CiAKIHZvaWQgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIpCi0gICAgICAgIHNldEV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQodmFsdWUgPT0gInRydWUiKTsKKyAgICAgICAgbV9leHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLT5zZXRCYXNlVmFsSW50ZXJuYWwodmFsdWUgPT0gInRydWUiKTsKIH0KIAogdm9pZCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLmgKaW5kZXggZDI1NTA3YWQwN2UyMGYwNmViMmE5OTk2NTc0ZDAw
YmMwMjIyOWZkNS4uZWFlYjIyYWFiZWJlZDliZTM4Y2E4Y2YwYjNkNGI2Y2Y1YTYxOTBiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5o
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUg
IlNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsLmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlPd25l
clJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDcsMTUgKzQ4LDE4IEBAIHB1YmxpYzoKICAgICB1c2luZyBBdHRyaWJ1dGVPd25l
clByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZD47CiAgICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogCi0gICAgYXV0byBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQW5pbWF0ZWQoKSB7IHJldHVybiBtX2V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
CisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKIAotICAgIGJvb2wgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC52
YWx1ZSgpOyB9Ci0gICAgdm9pZCBzZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKGJvb2wgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgeyBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuc2V0
VmFsdWUoZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCk7IH0KKyAgICBib29sIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKSBjb25zdCB7IHJldHVybiBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQtPmN1cnJlbnRWYWx1ZSgpOyB9CisgICAgU1ZHQW5pbWF0ZWRCb29sZWFuJiBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkQW5pbWF0ZWQoKSB7IHJldHVybiBtX2V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ7IH0KIAogcHJvdGVjdGVkOgogICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRy
aWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0SGF2
ZUZpcmVkTG9hZEV2ZW50KGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1BhcnNlckluc2Vy
dGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTY3LDExICs3MSwxMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBBdHRyaWJ1
dGVPd25lclByb3h5IGF0dHJpYnV0ZU93bmVyUHJveHkoKSB7IHJldHVybiB7ICp0aGlzLCBtX2Nv
bnRleHRFbGVtZW50IH07IH0KICAgICAKICAgICBTVkdFbGVtZW50JiBtX2NvbnRleHRFbGVtZW50
OwotICAgIFNWR0FuaW1hdGVkQm9vbGVhbkF0dHJpYnV0ZSBtX2V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ7CisgICAgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4gbV9leHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuaAppbmRleCBkNjdiYWZmY2FhOTY4ZWFlNGNmMmFkMGQ1Mjk4ZTg4YThj
M2FkMDRjLi5hMTZiMWQyYmY0MWUxMDUxODBkMjVhMGYwOTEzOTdjOGIwOGJkZTFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTksMTAg
KzU5LDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZH
QXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVCbGVuZEVsZW1lbnQsIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6
OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0
ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0K
ICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVCbGVuZEVsZW1lbnQsIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdp
c3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlS
ZWdpc3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0
ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC03MCw2ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0
dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBt
X2luMTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMjsKICAgICBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPEJsZW5kTW9kZT4gbV9tb2RlIHsgQmxlbmRNb2RlOjpO
b3JtYWwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgK
aW5kZXggNDc2ODhlYzg2OWQzZmNmMTM1MTk0OThjOGU4MDAwYjU0ZTY5YzFmOC4uNGUxZjMzYTI3
M2E1Y2RmYzJkMGU4ODk3YmUyNGM5MDgzMTlmN2FkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC04MywxMCArODMsMTcgQEAgcHJpdmF0
ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5SW1wbDxTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRl
UmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3du
ZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0
cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1By
b3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5
JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lz
dHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAKQEAgLTk0LDYgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRl
OwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhp
cyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
ICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKICAgICBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uQXR0cmlidXRlPENvbG9yTWF0cml4VHlwZT4gbV90eXBlIHsgRkVDT0xPUk1BVFJJ
WF9UWVBFX01BVFJJWCB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEF0dHJpYnV0ZSBtX3Zh
bHVlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmgKaW5kZXggYmQ2MmIzNDgxYzVlZTQ2NTM0MWQ0M2RiYzQ0YmY4ODcyZjRiNmU3ZS4u
MjU3YTk1NmQ4ODRkMDFlOTRkMDM2MDc3M2M1YWZhZTBjNmE0YTNhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKQEAgLTIsNiAr
Miw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM5LDE0ICs0MCwx
OCBAQCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1
dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQ
cm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0
cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQXR0cmlidXRlcygpOworICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkm
IGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93
bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93
bmVyUmVnaXN0cnk8U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYg
cHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Ry
eTsgfQogCiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KLSAgICBj
b25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJp
ZGU7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwg
RmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRl
T3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCmluZGV4IGEx
MjNjYzZhNzE0NDA1MWM4MzM2ODhmNWQ1ZWIwMjBjZmQ5OWZjM2QuLjBmMTE3M2IxNTk0NmUyMzFj
NTIxMGJhMjk1ZjgxMWNjMDhlYWEyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMDYsMTAgKzEwNiwxNyBAQCBwcml2YXRlOgogCiAgICAg
dXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNW
R0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
PjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0
dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRl
UmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0
cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQ
cm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC0xMTcsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBBdHRy
aWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJv
cGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1h
dGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRl
IG1faW4yOwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8Q29tcG9zaXRlT3Bl
cmF0aW9uVHlwZT4gbV9zdmdPcGVyYXRvciB7IEZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3Bw
CmluZGV4IGY5YzQxZmRmOTJiYjZmMTRiNTEwOGQ0OWRkNjNjY2Q5Zjc4ZWM0MTYuLmRhNzI2ZDZj
ZDkwMWI1NTc2NDEzMDM1YTVmODBiMWZlMzdlY2RkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAtNDYsNiArNDYsNyBAQCBp
bmxpbmUgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbQogICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3Rl
clByb3BlcnR5PFNWR05hbWVzOjpvcmRlckF0dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6bV9vcmRlclgsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV9vcmRlclk+KCk7CiAg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnRhcmdl
dFhBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fdGFyZ2V0WD4oKTsKICAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6dGFyZ2V0WUF0
dHIsICZTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6bV90YXJnZXRZPigpOworICAgICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhh
QXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjptX3ByZXNlcnZlQWxwaGE+KCk7CiAg
ICAgfSk7CiB9CiAKQEAgLTc5LDcgKzgwLDYgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0
ZTxTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsCiAgICAgICAgICZTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyLCAmU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6Om1fa2VybmVsVW5pdExlbmd0aFgsCiAgICAgICAgICZTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyLCAmU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fa2VybmVsVW5pdExlbmd0aFk+KCk7Ci0gICAgcmVnaXN0cnku
cmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCAmU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fcHJlc2VydmVBbHBoYT4oKTsKIH0KIAogdm9pZCBTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTE1Miw5ICsxNTIsOSBAQCB2b2lk
IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdAogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZl
QWxwaGFBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAidHJ1ZSIpCi0gICAgICAgICAgICBt
X3ByZXNlcnZlQWxwaGEuc2V0VmFsdWUodHJ1ZSk7CisgICAgICAgICAgICBtX3ByZXNlcnZlQWxw
aGEtPnNldEJhc2VWYWxJbnRlcm5hbCh0cnVlKTsKICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0g
ImZhbHNlIikKLSAgICAgICAgICAgIG1fcHJlc2VydmVBbHBoYS5zZXRWYWx1ZShmYWxzZSk7Cisg
ICAgICAgICAgICBtX3ByZXNlcnZlQWxwaGEtPnNldEJhc2VWYWxJbnRlcm5hbChmYWxzZSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygp
LnJlcG9ydFdhcm5pbmcoImZlQ29udm9sdmVNYXRyaXg6IHByb2JsZW0gcGFyc2luZyBwcmVzZXJ2
ZUFscGhhQXR0cj1cIiIgKyB2YWx1ZSAgKyAiXCIuIEZpbHRlcmVkIGVsZW1lbnQgd2lsbCBub3Qg
YmUgZGlzcGxheWVkLiIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCmluZGV4IGQzMDRjYzQxYjkyMjczNzIyZGY4
Zjc2MmRiNTZjMjMyNTViMmExYWMuLjcwZmI5ZDczNTA2NGZhMmQ2YTA1MzI3OTkxNWJhODk3Yzc3
ZTk5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBFZGdlTW9kZVR5cGUgZWRnZU1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2VkZ2VNb2RlLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgoKSBjb25zdCB7IHJldHVy
biBtX2tlcm5lbFVuaXRMZW5ndGhYLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9CiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFkoKSBjb25zdCB7IHJldHVybiBtX2tlcm5l
bFVuaXRMZW5ndGhZLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAg
Ym9vbCBwcmVzZXJ2ZUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUFscGhhLmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgYm9vbCBwcmVzZXJ2ZUFscGhh
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUFscGhhLT5jdXJyZW50VmFsdWUoKTsgfQogCiAg
ICAgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBpbjFBbmltYXRlZCgpIHsgcmV0dXJuIG1faW4x
LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIFNWR0FuaW1h
dGVkSW50ZWdlciYgb3JkZXJYQW5pbWF0ZWQoKSB7IHJldHVybiBtX29yZGVyWDsgfQpAQCAtOTEs
MjAgKzkxLDI0IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4g
ZWRnZU1vZGVBbmltYXRlZCgpIHsgcmV0dXJuIG1fZWRnZU1vZGUuYW5pbWF0ZWRQcm9wZXJ0eShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVyPiBr
ZXJuZWxVbml0TGVuZ3RoWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWC5h
bmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZH
QW5pbWF0ZWROdW1iZXI+IGtlcm5lbFVuaXRMZW5ndGhZQW5pbWF0ZWQoKSB7IHJldHVybiBtX2tl
cm5lbFVuaXRMZW5ndGhZLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQotICAgIFJlZlB0cjxTVkdBbmltYXRlZEJvb2xlYW4+IHByZXNlcnZlQWxwaGFBbmltYXRlZCgp
IHsgcmV0dXJuIG1fcHJlc2VydmVBbHBoYS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVy
UHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZEJvb2xlYW4mIHByZXNlcnZlQWxwaGFBbmltYXRl
ZCgpIHsgcmV0dXJuIG1fcHJlc2VydmVBbHBoYTsgfQogCiBwcml2YXRlOgogICAgIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdp
c3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgCisgICAgY29uc3QgU1ZHQXR0cmlidXRlT3du
ZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0
cmlidXRlT3duZXJQcm94eTsgfQorCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1By
b3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCwgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lz
dHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJl
Z2lzdHJ5OyB9CiAKLSAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
CisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogCkBAIC0xMTYsNyArMTIwLDYgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93
bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0KICAgICBTVkdBbmltYXRlZFN0
cmluZ0F0dHJpYnV0ZSBtX2luMTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBtX29yZGVy
WCB7IFNWR0FuaW1hdGVkSW50ZWdlcjo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1h
dGVkSW50ZWdlcj4gbV9vcmRlclkgeyBTVkdBbmltYXRlZEludGVnZXI6OmNyZWF0ZSh0aGlzKSB9
OwpAQCAtMTI4LDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bkF0dHJpYnV0ZTxFZGdlTW9kZVR5cGU+IG1fZWRnZU1vZGUgeyBFREdFTU9ERV9EVVBMSUNBVEUg
fTsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2tlcm5lbFVuaXRMZW5ndGhYOwog
ICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fa2VybmVsVW5pdExlbmd0aFk7Ci0gICAg
U1ZHQW5pbWF0ZWRCb29sZWFuQXR0cmlidXRlIG1fcHJlc2VydmVBbHBoYTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRCb29sZWFuPiBtX3ByZXNlcnZlQWxwaGEgeyBTVkdBbmltYXRlZEJvb2xlYW46OmNy
ZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCmluZGV4IDBiOGFlOGIw
MWVmNGFjZWY3OWFiYjFhYTY5MjE4YTdiYThmNGE2YTguLjk1YzlkNzRhMjg2YTZlMzE5Njc3MmUz
MWEzMDU1MzJhOTk4ZWQ4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2xpdmVyQG5lcmdldC5jb20+Ci0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC01MywxMCArNTMsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0
dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47
CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKyAg
ICAKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKQEAgLTY3LDYgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKIAogICAgIEF0dHJp
YnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0
ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUg
bV9kaWZmdXNlQ29uc3RhbnQgeyAxIH07CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUg
bV9zdXJmYWNlU2NhbGUgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmgKaW5kZXggNTFiZWQ1M2RmNjZiMDVjNDg0MGFkMTVhNmM0NDJh
ZGRmOTE3NzQ3Yi4uM2MwOTJkNGY2M2ZlOTBlZTc3ODA0YTUyNTIxNDViODUwMGU2OTk1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaApA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9s
aXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODgsMTAgKzg4LDE3IEBA
IHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRl
T3duZXJQcm94eUltcGw8U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5
OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9
CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdB
dHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lz
dHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsK
KyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC05OSw2ICsxMDYsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1
dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7
CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjI7CiAgICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkF0dHJpYnV0ZTxDaGFubmVsU2VsZWN0b3JUeXBlPiBtX3hDaGFubmVsU2VsZWN0
b3IgeyBDSEFOTkVMX0EgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxl
bWVudC5oCmluZGV4IDM2NjIxOWUwMmM2OTMzNzQ2ODI1YTc5MmU4MzY1YmUwZjUyZDAxNzkuLjcx
MTYzNDJkODRhY2QwMTY5YTFkNWU4ODQ1YmIyMWJiNGE4Y2IyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01MCwxMCArNTAsMTcgQEAgcHJpdmF0
ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5SW1wbDxTVkdGRURyb3BTaGFkb3dFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVS
ZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25l
clByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRy
aWJ1dGVPd25lclByb3h5OyB9CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNW
R1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRURyb3BTaGFkb3dFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0
cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVn
aXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtNjMsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZERldmlhdGlvbllJZGVudGlmaWVyKCk7CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmli
dXRlIG1fZHggeyAyIH07CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9keSB7IDIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAppbmRl
eCA5M2I2MWFjYTQ2YTNjZGIxOTAzZDU1OWZmOGJjY2UxODFiNGNjNGM5Li4wZjQzY2M2NjdlMTY0
NmJmYjU0OGNjOWI0MTY0Y2UzNjhlMTEzYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTEsMTAgKzUxLDE3IEBAIHByaXZhdGU6
CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94
eUltcGw8U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVS
ZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25l
clByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRy
aWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJv
cGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5
JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lz
dHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CiAKQEAgLTY0LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpOwogCiAgICAgQXR0
cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFBy
b3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmlt
YXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0
ZSBtX3N0ZERldmlhdGlvblg7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zdGRE
ZXZpYXRpb25ZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAppbmRleCA2YzRm
ZDYzNTBiOTg3MjBiNTg5NGJlNjY4ODIyM2M2MDRiMzQyNDA5Li41NTBiZjkwOWViMzM1MWJmNzM4
MjE3ZWRhNDljMzM3NGUyYjllNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJv
b2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHRkVJ
bWFnZS5oIgpAQCAtNDksMTAgKzQ4LDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1
dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVJbWFnZUVsZW1l
bnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3du
ZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkg
eyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29u
c3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorICAgIAorICAgIHVzaW5nIFBy
b3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVJbWFnZUVsZW1l
bnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJl
Z2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0
eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmli
dXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0
eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAgLTcxLDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVy
cmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsg
KnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cmlidXRlIG1fcHJlc2Vy
dmVBc3BlY3RSYXRpbzsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9j
YWNoZWRJbWFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdo
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCmluZGV4
IDg0YTY3OGZmYjBlNzkyM2Y5MThhZDNjODdhY2MzNWIyNjZmMjcxZjIuLjliZTJiZmE0NmVjOGNm
YTA0MjYxODc3YWNjOGM2ZWQ4MDljYmMyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDUgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNjYsMTUgKzY2LDIzIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdXNpbmcgQXR0
cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFTGlnaHRF
bGVtZW50LCBTVkdFbGVtZW50PjsKICAgICBzdGF0aWMgYXV0byYgYXR0cmlidXRlUmVnaXN0cnko
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7
Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1
c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFTGln
aHRFbGVtZW50LCBTVkdFbGVtZW50PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBw
cm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5
OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
KSBvdmVycmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclBy
b3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9hemltdXRoOwogICAg
IFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZWxldmF0aW9uOwogICAgIFNWR0FuaW1hdGVk
TnVtYmVyQXR0cmlidXRlIG1feDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1lcmdlTm9kZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVs
ZW1lbnQuaAppbmRleCA5YzU1NGVlMTEyNTg2M2Y3NDVjYzFhOTRiMGEzMjE0ZDYyNTBjMDViLi43
MjZmYjYyMzYxMjY4MTlhNDFlNDQxMzg2ZWViYjU3ZWM5MGRjY2VkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzksMTYgKzM5LDI0IEBAIHByaXZhdGU6
CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94
eUltcGw8U1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBTVkdFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0
cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkg
eyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAg
IHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwot
CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNp
bmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRU1lcmdl
Tm9kZUVsZW1lbnQsIFNWR0VsZW1lbnQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkm
IHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0
cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBmaW5hbDsKIAogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYp
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1f
aW4xOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgK
aW5kZXggYWY2ZjE1ZThmNzMxOTVhMDc4YzRkZTExZjMxZGU5YjVmNDg0YWU5Yy4uMGI2YmEyYzIx
N2FlZDQzNzFlYTRjYjBkYWYwODk0Zjk1MzFlMDJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCkBAIC03OCwxMCArNzgsMTcgQEAgcHJpdmF0ZToKIAog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclBy
b3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5
JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlP
d25lclJlZ2lzdHJ5PFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVy
dHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQor
CisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogCkBAIC05Miw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgcmFkaXVzWUlkZW50aWZpZXIoKTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRy
aWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxNb3JwaG9s
b2d5T3BlcmF0b3JUeXBlPiBtX3N2Z09wZXJhdG9yIHsgRkVNT1JQSE9MT0dZX09QRVJBVE9SX0VS
T0RFIH07CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9yYWRpdXNYOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCmluZGV4IGJkYjBlNGYwYjhmZmE4OTk1MmRi
OTNkMDdmNGRiOWIwYWFmMjNiZmUuLjE0MzZiYWU4ZDdhYjRkMDA4YzQ3OTJmZDAzYmY3ZmQ1OGRh
NGU3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKQEAgLTQ0LDE2
ICs0NCwyNCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94
eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmli
dXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsg
fQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZH
QXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdp
c3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRU9mZnNldEVsZW1lbnQsIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlS
ZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVy
dHlSZWdpc3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3du
ZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVn
aXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmlu
Z0F0dHJpYnV0ZSBtX2luMTsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2R4Owog
ICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZHk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAppbmRleCA3Y2VkYWY4NTk5YjQx
OWJkNGQ4MWJiNDdkNTc0YjE1YTcyOGNhZWNhLi45NDg3N2I0NmY3YTYzNzk5MzAxYzFiNzk3NDhk
Y2UyNzBkODcxY2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmgKQEAgLTU0LDEwICs1NCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNp
bmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5
JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJp
YnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkm
IGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93
bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93
bmVyUmVnaXN0cnk8U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBw
cm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5
OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7CiAKQEAgLTY4LDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKIAogICAgIEF0
dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5p
bWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1
dGUgbV9zcGVjdWxhckNvbnN0YW50IHsgMSB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmli
dXRlIG1fc3BlY3VsYXJFeHBvbmVudCB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxl
bWVudC5oCmluZGV4IDc1NGRmNDA5OTFlODVjOTg3ZWFhOGQ1Y2NmMjg5NTAwZWQwOWM2ZDEuLjlh
MDMzZDIwZGVhNjVlNGM3YTE5NDQ2NjFkYTk1YWEwOTMwNzgxZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuaApAQCAtMzgsMTYgKzM4LDI0IEBAIHByaXZhdGU6CiAKICAgICB1
c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZH
RkVUaWxlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0
cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsg
fQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3Ry
eTxTVkdGRVRpbGVFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+
OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVy
cmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsg
KnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKaW5kZXggMjcwNzFjMDhk
MzUwMmQxNzhiZWRmNGI0ZDM2NGRiZDlkNGI5OGM1OC4uN2Q3ZmY0MjJkYzA4MzQ2ZmI5YzdjZDA3
MDNhYjc2MjU2OGU5YTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25z
CiAKIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKKyAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAppbmRleCAzNmI0NzJiMmE4YjUzNmNhMGVjMzJh
MjhjNjA2ZTQwYjcyMDA2N2ViLi40ZmEyM2FkMTk1OWFhODY1OTUyMmRlMDA5OTJmZWI5MzEwNGVl
Y2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKQEAg
LTExNiwxMyArMTE2LDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclBy
b3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVUdXJidWxlbmNlRWxlbWVudCwg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBzdGF0aWMgQXR0cmli
dXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0
YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotICAg
IAorICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKwogICAgIHVz
aW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVUdXJi
dWxlbmNlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAg
ICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBjb25zdCBTVkdBdHRyaWJ1
dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkg
fHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAg
ICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuaAppbmRleCBjZWRhOWY1ZDVjMDA4ZjQ0Yzk2MzY1NTlkMjg4MjFmYTgwM2IzNWEz
Li4zMzBkYjI4MzIxYzdjNTgxOTg0NzY3OWExOGJlNzE2MDI1ZGU1NDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKQEAgLTU2LDExICs1NiwxOSBAQCBwcml2YXRlOgogCiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0ZpbHRlckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0
dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KLSAg
ICBzdGF0aWMgYm9vbCBpc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzQW5pbWF0
ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdp
c3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0
dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVy
UHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVy
UmVnaXN0cnk8U1ZHRmlsdGVyRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lz
dHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJl
Z2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKworICAgIHN0
YXRpYyBib29sIGlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAg
ICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwpAQCAtNzMs
NiArODEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9h
dHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJp
YnV0ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPiBtX2ZpbHRlclVuaXRzIHsgU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YIH07CiAgICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPiBtX3ByaW1pdGl2
ZVVuaXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFIH07CiAg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoLCAiLTEw
JSIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCBlMDk0NmY1NTJlYTU0N2ViZjg2NjAzZmI2ZjZi
N2E1M2FiNTliMTc2Li5hZDIxYjMyM2FjODUyNTZhODE4NzJmY2FmMDhkNWNiNGU3YmFjM2NhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBB
dHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0
cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkg
eyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogCisg
ICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0VsZW1lbnQ+OworCiAgICAgY29u
c3QgU1ZHTGVuZ3RoVmFsdWUmIHgoKSBjb25zdCB7IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0
dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSgpIGNv
bnN0IHsgcmV0dXJuIG1feS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGgu
Y3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KQEAgLTcxLDcgKzczLDEyIEBA
IHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0
ZXMoKTsKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRy
aWJ1dGVPd25lclByb3h5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0K
IAogICAgIGJvb2wgaXNGaWx0ZXJFZmZlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKQEAgLTc5LDEwICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQotCiAg
ICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9Owot
CiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhl
IGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgLy8g
U3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhl
IGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KICAgICBT
VkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGgsICIwJSIgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAppbmRleCBmNTFhN2U5Y2FkYWMwNTZjNTgy
MDRlNWUxM2M3MGU3ZjdkNTE4N2ZmLi41YWJjNWEwZTlhM2VmMWM2MDEzOWFmNTcyZjMxYjE0YTEx
YTAwN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCkBAIC00MCw2ICs0MCw4
IEBAIHB1YmxpYzoKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRl
T3duZXJQcm94eUltcGw8U1ZHRml0VG9WaWV3Qm94PjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3du
ZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogCisgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGaXRUb1ZpZXdC
b3g+OworCiAgICAgY29uc3QgRmxvYXRSZWN0JiB2aWV3Qm94KCkgY29uc3QgeyByZXR1cm4gbV92
aWV3Qm94LmN1cnJlbnRWYWx1ZShtX2F0dHJpYnV0ZU93bmVyUHJveHkpOyB9CiAgICAgY29uc3Qg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLmN1cnJlbnRWYWx1ZShtX2F0dHJpYnV0ZU93
bmVyUHJveHkpOyB9CiAKQEAgLTYxLDcgKzYzLDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBTVkdGaXRUb1ZpZXdCb3goU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEFuaW1hdGVkUHJv
cGVydHlTdGF0ZSA9IFByb3BlcnR5SXNSZWFkV3JpdGUpOwogCi0gICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CiAKICAgICB2b2lkIHJlc2V0KCk7
CiAgICAgYm9vbCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCmluZGV4IDgyYTQzMmFi
ZjJmNWNlNjk4Zjk3MjE4YzE2Y2M1ZmYzMDU3NTk2N2MuLjc1MjFjY2E4MGJkZDlhYzE1YzRjODgy
ODA0Zjc2ZTUyZDBhMTkyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCkBAIC0y
NCw3ICsyNCw2IEBACiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogCi0jaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKQEAgLTU2LDcgKzU1LDExIEBAIHByaXZhdGU6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZvbnRFbGVtZW50LCBTVkdFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdBdHRyaWJ1
dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0g
U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZvbnRFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5
JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lz
dHJ5OyB9CisKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7
ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAppbmRleCAzMDZlMTE3MGVmOTM3OGE3NzViMGRlNDVi
NGI1MjQ3MDllYzkwODA1Li43OTlmYzgyM2FhOTMxNTQ1NzkwMWRlYjZkMzVjMmJhNzUzOGI1ODNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaApAQCAt
MTksNyArMTksNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9v
bGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0dyYXBoaWNzRWxlbWVudC5o
IgpAQCAtNDgsMTAgKzQ3LDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25l
clByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAg
ICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1
dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lz
dHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0
dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0
ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7
IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0
cnk8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsg
fQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5h
bDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZp
bmFsOwogCkBAIC02Myw2ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRp
dmVMZW5ndGhzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R0VsZW1lbnQuaAppbmRleCBiYTNhY2MzYzYyZTJhYTI5Mzk0N2Y2ZWNhZDI5MTk3MmQ3ZmNhODU3
Li41MGU0MjI3NmI2ZDhlNGNhNzkyZWYzZTBjZGM5OWY2MDA5ZmEwYjZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR0VsZW1lbnQuaApAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKIApAQCAtMzksOCAr
MzgsMTEgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZp
bmFsOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHlJbXBsPFNWR0dFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ+OwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0
cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQ
cm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdHRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGZpbmFsOwogCkBAIC00OCw2ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWw7CiAKICAgICBBdHRyaWJ1
dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5oCmluZGV4
IDgyNGZlZmM1MGZiMjU3MmMxZWZiYjk5ZGFmMmNkZWE3YmMyMGYwMWYuLjNkNjI1MDE5MGFiNWU2
MWJhMDJjN2UzOTBkZjRmNmY3NDliMGYyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0
cnlFbGVtZW50LmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHVzaW5nIEF0dHJpYnV0
ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdHZW9tZXRyeUVsZW1l
bnQsIFNWR0dyYXBoaWNzRWxlbWVudD47CiAgICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lz
dHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsg
fQogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3Ry
eTxTVkdHZW9tZXRyeUVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudD47CisKICAgICBhdXRvIHBh
dGhMZW5ndGhBbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0aExlbmd0aC5hbmltYXRlZFByb3BlcnR5
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KIAogcHJvdGVjdGVkOgpAQCAtNTUsMTAgKzU3LDE0
IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBib29sIGlzU1ZHR2VvbWV0cnlFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAorICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0
dHJpYnV0ZU93bmVyUHJveHk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
IHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Cisg
ICAgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAq
dGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fcGF0aExlbmd0aDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaAppbmRleCA4ODEwZDViMDkyNjIwZGNk
ZDM0YTk3MGNkOTU0YjFmMWFhMjM2MWY3Li5mYWM4MDI5Mzc2YjViNGY4YjkyYWEyOTc4YzYzOGVj
NDdiMjgyY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5oCkBAIC00
OCw4ICs0OCwxMSBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0dseXBoUmVmRWxlbWVudCwgU1ZHRWxlbWVu
dCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBh
dHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25l
clByb3h5OyB9Ci0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5
ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0dseXBoUmVmRWxlbWVudCwgU1ZHRWxlbWVu
dCwgU1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9w
ZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9
CisKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgZmxvYXQgbV94IHsgMCB9
OwpAQCAtNTcsNiArNjAsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZHggeyAwIH07CiAgICAg
ZmxvYXQgbV9keSB7IDAgfTsKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3du
ZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0
cnkgeyAqdGhpcyB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVu
dC5oCmluZGV4IGI0YzM5MmIzNTQ5Nzk2MDRjOTUxZTZlNzllMGNmNzRjZDgxZDY4NDcuLjk0ZTVi
MTQ2Mzg4NTg2MWJiMjhhNzdiNzI2N2Q1NTE5Yzg5MTIwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiR3JhZGllbnQuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtODgsNiArODcsOCBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93
bmVyUHJveHlJbXBsPFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRl
T3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogCisgICAgdXNp
bmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdHcmFkaWVu
dEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1VS
SVJlZmVyZW5jZT47CisKICAgICBTVkdTcHJlYWRNZXRob2RUeXBlIHNwcmVhZE1ldGhvZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9kLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkg
Y29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFVuaXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyYgZ3JhZGllbnRU
cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VHJhbnNmb3JtLmN1cnJlbnRWYWx1
ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC05OSw3ICsxMDAsMTEgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIFNWR0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCmluZGV4IDA2ZWU0YjMwNzkyYjRmZjk2MWI2OWZmMzk2
NjQ3YWMzNTcyYjgyY2MuLjAwOThhODJmNmFlZDEyYmNiOThlMzgwZjcwNGM4NTBhMGQ3YjVhZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKQEAgLTY1LDYgKzY1LDgg
QEAgcHVibGljOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHlJbXBsPFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHVGVzdHM+
OwogICAgIHN0YXRpYyBhdXRvJiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0
ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9w
ZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0dyYXBoaWNzRWxlbWVu
dCwgU1ZHRWxlbWVudCwgU1ZHVGVzdHM+OwogCiAgICAgY29uc3QgYXV0byYgdHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0uY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSk7IH0KICAgICBhdXRvIHRyYW5zZm9ybUFuaW1hdGVkKCkgeyByZXR1cm4gbV90cmFuc2Zv
cm0uYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC04MSw5ICs4
MywxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRy
aWJ1dGVPd25lclByb3h5OyB9Ci0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
IHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Cisg
ICAgfQogCiAgICAgLy8gVXNlZCBieSA8YW5pbWF0ZU1vdGlvbj4KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QWZmaW5lVHJhbnNmb3JtPiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCA1MjNiZTYwMTIxNzUxZTk2YTllYjY5NDQwYTczYTNj
MGY5MGEyMDY5Li4xNzJiZDcxYjBiMTFlNGYzMmFjYWZkNDc4Y2U5MzBiOTkzNGFlYWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC01NSwxMCArNTUsMTcgQEAgcHJpdmF0
ZToKICAgICAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3du
ZXJQcm94eUltcGw8U1ZHSW1hZ2VFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJp
YnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsg
cmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBz
dGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQog
ICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHSW1hZ2VFbGVt
ZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNW
R1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisg
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwog
CkBAIC03NCw2ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVu
dChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAK
ICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07
CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAg
IFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAg
ICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCmluZGV4IGYxZWJjNGVjYmY3NWE0NTMxM2Q0
MzZkZTVmOGE4MzllYzdiNjlhZjEuLjgwNTRmMzA2YzgzNjI0NzY3ZWRjYmM5MTA1NzE3MDJlYWRh
NGQ2MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCkBAIC00OCwxMCArNDgsMTcg
QEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1
dGVPd25lclByb3h5SW1wbDxTVkdMaW5lRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94
eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmli
dXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsg
fQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZH
QXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdp
c3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdMaW5lRWxlbWVudCwgU1ZHR2VvbWV0
cnlFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8
fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAg
IH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAKQEAgLTYwLDYgKzY3LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbDsKIAogICAgIEF0dHJp
YnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0
ZWRMZW5ndGhBdHRyaWJ1dGUgbV94MSB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlIG1feTEgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgU1ZHQW5p
bWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV94MiB7IExlbmd0aE1vZGVXaWR0aCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCmluZGV4IDlmNjcwYzlkYWE0
ODI4MTk5YTFmNTJiMzRhMmY3OTZkZTZhZTEyNzYuLjIyNDhkNWNkYzRkNmEwMTk4MTNhYzdkNmU4
MGFlYjM0ZWQ4Y2U3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmgKQEAgLTUxLDEwICs1MSwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0
cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCwgU1ZHR3JhZGllbnRFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmlidXRl
T3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAg
Y29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJv
cGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQsIFNWR0dyYWRpZW50RWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdp
c3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlS
ZWdpc3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0
ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC02Myw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBdHRyaWJ1
dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1feDEgeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZSBtX3kxIHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlIG1feDIgeyBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCmluZGV4IDM5YzllYTA0NTE4MjA4ZWQ5MjM0YTAy
NGVlMDc4NDA3MmMzMDhjZWQuLjZlYzhiZDhiMzA5NTM3ZjQzN2E4YmQyNjBiZmRkYWY3Y2U2NWQ5
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKQEAgLTIwLDcgKzIwLDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC00Niw4ICs0NSwxMSBAQCBw
cml2YXRlOgogICAgIFNWR01QYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25l
clByb3h5SW1wbDxTVkdNUGF0aEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVP
d25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9h
dHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZH
UHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR01QYXRoRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC02Miw2ICs2
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlQYXJlbnRPZlBhdGhDaGFuZ2UoQ29udGFp
bmVyTm9kZSopOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJv
eHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5oCmluZGV4IDM3YzE4MGEwMWZhNGQyM2I4ZDQyZjVkYmE3NWEyOTVlMjY1
NTU2ODQuLmI4OWUwOWMzNjJmZDA0NzhjZDdmYjcxYmQ4MjZhY2RjMmU1NWVjOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaApAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmgiCkBAIC03OSwxMSArNzgsMTggQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0
dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdNYXJrZXJF
bGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRU
b1ZpZXdCb3g+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdp
c3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0gICAgc3RhdGljIGJv
b2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R01hcmtlckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IFNWR0ZpdFRvVmlld0JveD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVy
dHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQor
CisgICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CisgICAgc3RhdGljIGJvb2wg
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CkBAIC0xMjYsNiAr
MTMyLDcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIFNWR0FuaW1hdGVkQ3VzdG9tQW5nbGVBdHRy
aWJ1dGVBY2Nlc3NvciA9IFNWR0FuaW1hdGVkUGFpckF0dHJpYnV0ZUFjY2Vzc29yPFNWR01hcmtl
ckVsZW1lbnQsIFNWR0FuaW1hdGVkQW5nbGVBdHRyaWJ1dGUsIEFuaW1hdGVkQW5nbGUsIFNWR0Fu
aW1hdGVkQ3VzdG9tT3JpZW50VHlwZUF0dHJpYnV0ZSwgQW5pbWF0ZWRFbnVtZXJhdGlvbj47CiAK
KyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAg
U1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9yZWZYIHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9yZWZZIHsgTGVuZ3RoTW9kZUhlaWdodCB9
OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fbWFya2VyV2lkdGggeyBMZW5ndGhN
b2RlV2lkdGgsICIzIiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAppbmRleCAzMGJl
NzdlODBhZTQ4YTBhYmZiYzJmNGNkYzYzMjNhMGViZGQ4YWI4Li45YjkzZGQ0YzRjNmFlNjAzZDE5
ZDk2MDE4OWMyZDI5NTMyZGMyNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaApA
QCAtMjAsNyArMjAsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVk
Qm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRl
ICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTU1LDEx
ICs1NCwxOCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR01hc2tFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdUZXN0cz47CiAgICAgc3RhdGljIEF0dHJpYnV0
ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0
dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0
aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTWFza0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1Rlc3RzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0
eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9w
ZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0
ZU93bmVyUHJveHk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0K
KyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwog
ICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7
CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKQEAg
LTcxLDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5n
dGhBdHRyaWJ1dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiIH07CiAgICAgU1ZHQW5p
bWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCmluZGV4IDE0MDY5ZWNl
OTAzZGVkN2M1YTY5ZmM4YTZmMzNmNzAzMzI5NjAzM2QuLjk4MjQzZmRjMTgyNWRiOTU3OTBhNDMx
YjkyMzUyNDlkNTNhNTk1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJz
ZXJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRp
ZXMuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIlNWR1BvaW50TGlzdFZhbHVlcy5oIgogI2luY2x1
ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTI2MCw0MCArMjU5LDYgQEAgYm9vbCBwYXJzZVJlY3QoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIEZsb2F0UmVjdCYgcmVjdCkKICAgICByZXR1cm4gdmFsaWQ7CiB9
CiAKLWJvb2wgcG9pbnRzTGlzdEZyb21TVkdEYXRhKFNWR1BvaW50TGlzdFZhbHVlcyYgcG9pbnRz
TGlzdCwgY29uc3QgU3RyaW5nJiBwb2ludHMpCi17Ci0gICAgaWYgKHBvaW50cy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0g
U3RyaW5nVmlldyhwb2ludHMpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVD
aGFyKiBjdXIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7Ci0gICAgY29uc3QgVUNoYXIqIGVuZCA9
IGN1ciArIHBvaW50cy5sZW5ndGgoKTsKLQotICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXIs
IGVuZCk7Ci0KLSAgICBib29sIGRlbGltUGFyc2VkID0gZmFsc2U7Ci0gICAgd2hpbGUgKGN1ciA8
IGVuZCkgewotICAgICAgICBkZWxpbVBhcnNlZCA9IGZhbHNlOwotICAgICAgICBmbG9hdCB4UG9z
ID0gMC4wZjsKLSAgICAgICAgaWYgKCFwYXJzZU51bWJlcihjdXIsIGVuZCwgeFBvcykpCi0gICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBmbG9hdCB5UG9zID0gMC4wZjsKLSAgICAg
ICAgaWYgKCFwYXJzZU51bWJlcihjdXIsIGVuZCwgeVBvcywgZmFsc2UpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXIsIGVuZCk7
Ci0KLSAgICAgICAgaWYgKGN1ciA8IGVuZCAmJiAqY3VyID09ICcsJykgewotICAgICAgICAgICAg
ZGVsaW1QYXJzZWQgPSB0cnVlOwotICAgICAgICAgICAgY3VyKys7Ci0gICAgICAgIH0KLSAgICAg
ICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1ciwgZW5kKTsKLQotICAgICAgICBwb2ludHNMaXN0
LmFwcGVuZChGbG9hdFBvaW50KHhQb3MsIHlQb3MpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGN1ciA9
PSBlbmQgJiYgIWRlbGltUGFyc2VkOwotfQotCiBib29sIHBhcnNlR2x5cGhOYW1lKGNvbnN0IFN0
cmluZyYgaW5wdXQsIEhhc2hTZXQ8U3RyaW5nPiYgdmFsdWVzKQogewogICAgIC8vIEZJWE1FOiBQ
YXJzaW5nIGVycm9yIGRldGVjdGlvbiBpcyBtaXNzaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
cnNlclV0aWxpdGllcy5oCmluZGV4IDY3N2RiY2M5MzRkMDE3MGNjYWQ0NjcyYTg4Yjg0Y2Y4ZmIz
NzkzYjkuLjNmMTMyMWRhYzNhZTg0ZjQ0ZTUwN2NkNWMyNGFmYTI2NjkyYTg4OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmgKQEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRSZWN0OwotY2xh
c3MgU1ZHUG9pbnRMaXN0VmFsdWVzOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KIGJvb2wgcGFyc2VTVkdOdW1iZXIoQ2hhcmFjdGVyVHlwZSogcHRyLCBzaXplX3QgbGVuZ3Ro
LCBkb3VibGUmIG51bWJlcik7CkBAIC04Miw3ICs4MSw2IEBAIGlubGluZSBib29sIHNraXBPcHRp
b25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKGNvbnN0IENoYXJhY3RlclR5cGUqJiBwdHIsIGNvbnN0
IENoCiAgICAgcmV0dXJuIHB0ciA8IGVuZDsKIH0KIAotYm9vbCBwb2ludHNMaXN0RnJvbVNWR0Rh
dGEoU1ZHUG9pbnRMaXN0VmFsdWVzJiwgY29uc3QgU3RyaW5nJiBwb2ludHMpOwogVmVjdG9yPFN0
cmluZz4gcGFyc2VEZWxpbWl0ZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBpbnB1dCwgY29uc3QgY2hh
ciBzZXBlcmF0b3IpOwogYm9vbCBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgaW5wdXQsIFVuaWNvZGVSYW5nZXMmLCBIYXNoU2V0PFN0cmluZz4mIHN0cmluZ0xpc3QpOwog
Ym9vbCBwYXJzZUdseXBoTmFtZShjb25zdCBTdHJpbmcmIGlucHV0LCBIYXNoU2V0PFN0cmluZz4m
IHZhbHVlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCmluZGV4IDk4MWRlODY1MWMx
ZTZjNmMzNjk1ODYxNDE3YmQ1YmU2ZmRjOWRmNjcuLmY4MDAwN2UyODA1MjhlOTg4YzhlNzUyNjBi
NzI4ZDFmMWI0YjFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCkBAIC0yMiw3
ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBhdGguaCIKLSNpbmNsdWRlICJT
VkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkUGF0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaCIKQEAgLTExMSwxMCArMTEwLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBB
dHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHUGF0aEVs
ZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47
CiAgICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQog
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdQYXRoRWxlbWVudCwgU1ZHR2VvbWV0cnlF
bGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9w
ZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
cm9wZXJ0eVJlZ2lzdHJ5OyB9CisgICAgCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkg
fHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAg
ICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC0xNTYsNiArMTYyLDcgQEAgcHJpdmF0ZToK
ICAgICB1c2luZyBTVkdBbmltYXRlZEN1c3RvbVBhdGhTZWdMaXN0QXR0cmlidXRlQWNjZXNzb3Ig
PSBTVkdBbmltYXRlZEF0dHJpYnV0ZUFjY2Vzc29yPFNWR1BhdGhFbGVtZW50LCBTVkdBbmltYXRl
ZEN1c3RvbVBhdGhTZWdMaXN0QXR0cmlidXRlLCBBbmltYXRlZFBhdGg+OwogCiAgICAgQXR0cmli
dXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3Bl
cnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRl
ZEN1c3RvbVBhdGhTZWdMaXN0QXR0cmlidXRlIG1fcGF0aFNlZ0xpc3QgeyAqdGhpcyB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAppbmRleCAwM2E2MDZmMGEwNTgy
MjIyZjJhZjkxMDc1NDA4MTAxMDhkOTYzN2E4Li4xOWQ5YjkxZDc1ZjE4YzBmMTdhOGJhNGJjZTZk
OWZiOGZiN2UwYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaApAQCAt
MjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9v
bGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJT
VkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RS
YXRpby5oIgpAQCAtNjksMTEgKzY4LDE4IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1
dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHUGF0dGVybkVsZW1l
bnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmll
d0JveCwgU1ZHVGVzdHMsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93
bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMg
Ym9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0
aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93
bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0
dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQ
cm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHUGF0dGVybkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveCwgU1ZHVGVzdHMsIFNWR1VS
SVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CkBAIC04NSw2ICs5MSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkg
eyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lk
dGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVp
Z2h0IH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1v
ZGVXaWR0aCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAppbmRleCA4MDBjZWFlMzA0NjA3MzU2NTM3OThm
ODkwOTU5ZWU3MWY4MTM2NjkxLi41MjY1MjliZGE2ZDg3ZGNmYzUzNTc5MWViZDVmYjMwMGJkNDg3
ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDg2ICsyOCw2OSBAQAogCiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR01hdHJpeC5oIgotI2luY2x1ZGUgIlNW
R1Byb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdQb2ludCA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRl
YXJPZmY8RmxvYXRQb2ludD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHUG9pbnQ+IGNy
ZWF0ZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9w
ZXJ0eVJvbGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdQb2ludChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOwot
ICAgIH0KK2NsYXNzIFNWR1BvaW50IDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHk8RmxvYXRQb2lu
dD4geworICAgIHVzaW5nIEJhc2UgPSBTVkdWYWx1ZVByb3BlcnR5PEZsb2F0UG9pbnQ+OworICAg
IHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdXNpbmcgQmFzZTo6bV92YWx1ZTsKIAotICAgIHN0YXRp
YyBSZWY8U1ZHUG9pbnQ+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsVmFsdWUgPSB7
IH0pCitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTVkdQb2ludD4gY3JlYXRlKGNvbnN0IEZsb2F0
UG9pbnQmIHZhbHVlID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U1ZHUG9pbnQoaW5pdGlhbFZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNW
R1BvaW50KHZhbHVlKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IEV4Y2VwdGlvbk9yPFJlZjxTVkdQb2ludD4+IGNyZWF0ZShFeGNlcHRpb25PcjxUPiYmIGluaXRp
YWxWYWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBFeGNlcHRpb25P
cjxSZWY8U1ZHUG9pbnQ+PiBjcmVhdGUoRXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKICAgICB7Ci0g
ICAgICAgIGlmIChpbml0aWFsVmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1
cm4gaW5pdGlhbFZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZShpbml0aWFsVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICBpZiAodmFsdWUu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZUV4Y2VwdGlv
bigpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQb2ludCh2YWx1ZS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSkpOwogICAgIH0KIAotICAgIGZsb2F0IHgoKQorICAgIFJlZjxTVkdQb2lu
dD4gY2xvbmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNl
KCkueCgpOworICAgICAgICByZXR1cm4gU1ZHUG9pbnQ6OmNyZWF0ZShtX3ZhbHVlKTsKICAgICB9
CisgICAgCisgICAgZmxvYXQgeCgpIHsgcmV0dXJuIG1fdmFsdWUueCgpOyB9CiAKLSAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRYKGZsb2F0IHhWYWx1ZSkKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRYKGZsb2F0IHgpCiAgICAgewogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAg
ICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRYKHhWYWx1ZSk7CisgICAgICAgIG1fdmFsdWUu
c2V0WCh4KTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7CiAKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKLSAgICBmbG9hdCB5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0eVJl
ZmVyZW5jZSgpLnkoKTsKLSAgICB9CisgICAgZmxvYXQgeSgpIHsgcmV0dXJuIG1fdmFsdWUueSgp
OyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRZKGZsb2F0IHhWYWx1ZSkKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRZKGZsb2F0IHkpCiAgICAgewogICAgICAgICBpZiAoaXNSZWFkT25s
eSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dl
ZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRZKHhWYWx1ZSk7Cisg
ICAgICAgIG1fdmFsdWUuc2V0WSh5KTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8U1ZHUG9pbnQ+PiBt
YXRyaXhUcmFuc2Zvcm0oU1ZHTWF0cml4JiBtYXRyaXgpCi0gICAgewotICAgICAgICBpZiAoaXNS
ZWFkT25seSgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9u
QWxsb3dlZEVycm9yIH07Ci0KLSAgICAgICAgYXV0byBuZXdQb2ludCA9IHByb3BlcnR5UmVmZXJl
bmNlKCkubWF0cml4VHJhbnNmb3JtKG1hdHJpeC5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKLSAgICAg
ICAgY29tbWl0Q2hhbmdlKCk7Ci0KLSAgICAgICAgcmV0dXJuIFNWR1BvaW50OjpjcmVhdGUobmV3
UG9pbnQpOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIFNWR1BvaW50KFNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9h
dFBvaW50JiB2YWx1ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4o
JmFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBTVkdQ
b2ludChTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCi0gICAgICAgIDog
U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+KG51bGxwdHIsIHJvbGUsIHZhbHVlKQorICAg
IFJlZjxTVkdQb2ludD4gbWF0cml4VHJhbnNmb3JtKFNWR01hdHJpeCYgbWF0cml4KSBjb25zdAog
ICAgIHsKKyAgICAgICAgYXV0byBuZXdQb2ludCA9IG1fdmFsdWUubWF0cml4VHJhbnNmb3JtKG1h
dHJpeC5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U1ZHUG9pbnQobmV3UG9pbnQpKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBTVkdQb2ludChjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsVmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2Zm
PEZsb2F0UG9pbnQ+KGluaXRpYWxWYWx1ZSkKK3ByaXZhdGU6CisgICAgU3RyaW5nIHZhbHVlQXNT
dHJpbmcoKSBjb25zdCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1Byb3BlcnR5
VHJhaXRzPEZsb2F0UG9pbnQ+Ojp0b1N0cmluZyhtX3ZhbHVlKTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BvaW50LmlkbAppbmRleCA3Yzg0NTE1YjVhYTkxYjU4NTcwMDgzMTMxMGE3MDlmNTk3
YzNmMzk0Li41ZDgyMjQ5MGRiYmUyMjE4YTI1MWFhOGIxYzliYTZhOTczMTNkZDY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2ludC5pZGwKQEAgLTI2LDYgKzI2LDYgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0
cmljdGVkIGZsb2F0IHg7CiAgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB5OwogCi0g
ICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIFNWR1BvaW50IG1hdHJpeFRyYW5zZm9y
bShTVkdNYXRyaXggbWF0cml4KTsKKyAgICBbTmV3T2JqZWN0XSBTVkdQb2ludCBtYXRyaXhUcmFu
c2Zvcm0oU1ZHTWF0cml4IG1hdHJpeCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9pbnRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgK
aW5kZXggYjBjMmExMDMxMWVmNDVhMWY2MTFkNGZiMjk3ODY1YjBmNTZhODQwMi4uNmNkMTFjMWQy
MTJlMGU3ZjM5Y2MyMjRjYmZjMGM0NzRkYjA1MTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BvaW50TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExp
c3QuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNSwyOCArMjUsODEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFy
T2ZmLmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKLSNpbmNsdWRlICJTVkdQb2ludExpc3RWYWx1
ZXMuaCIKKyNpbmNsdWRlICJTVkdWYWx1ZVByb3BlcnR5TGlzdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNWR1BvaW50TGlzdCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHlUZWFy
T2ZmPFNWR1BvaW50TGlzdFZhbHVlcz4geworY2xhc3MgU1ZHUG9pbnRMaXN0IDogcHVibGljIFNW
R1ZhbHVlUHJvcGVydHlMaXN0PFNWR1BvaW50PiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVl
UHJvcGVydHlMaXN0PFNWR1BvaW50PjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCiBwdWJsaWM6
Ci0gICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdFZhbHVlcz47Ci0gICAgdXNpbmcgTGlzdFdyYXBw
ZXJDYWNoZSA9IEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsK
KyAgICBzdGF0aWMgUmVmPFNWR1BvaW50TGlzdD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR1BvaW50TGlzdCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
UmVmPFNWR1BvaW50TGlzdD4gY3JlYXRlKFNWR1Byb3BlcnR5T3duZXIqIG93bmVyLCBTVkdQcm9w
ZXJ0eUFjY2VzcyBhY2Nlc3MpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
VkdQb2ludExpc3Qob3duZXIsIGFjY2VzcykpOworICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZH
UG9pbnRMaXN0PiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFBy
b3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUG9pbnRMaXN0VmFsdWVzJiB2YWx1ZXMs
IExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQorICAgIHN0YXRpYyBSZWY8U1ZHUG9pbnRMaXN0
PiBjcmVhdGUoY29uc3QgU1ZHUG9pbnRMaXN0JiBvdGhlciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNj
ZXNzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUG9pbnRMaXN0KGFu
aW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU1ZHUG9pbnRMaXN0KG90aGVyLCBhY2Nlc3MpKTsKKyAgICB9CisKKyAg
ICBib29sIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICBjbGVhckl0
ZW1zKCk7CisKKyAgICAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3
KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICAgICAgY29uc3QgVUNoYXIqIGN1
ciA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAgICAgICAgY29uc3QgVUNoYXIqIGVuZCA9IGN1
ciArIHZhbHVlLmxlbmd0aCgpOworCisgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXIs
IGVuZCk7CisKKyAgICAgICAgYm9vbCBkZWxpbVBhcnNlZCA9IGZhbHNlOworICAgICAgICB3aGls
ZSAoY3VyIDwgZW5kKSB7CisgICAgICAgICAgICBkZWxpbVBhcnNlZCA9IGZhbHNlOworICAgICAg
ICAgICAgZmxvYXQgeFBvcyA9IDAuMGY7CisgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyKGN1
ciwgZW5kLCB4UG9zKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ICAgIGZsb2F0IHlQb3MgPSAwLjBmOworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlcihjdXIs
IGVuZCwgeVBvcywgZmFsc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1ciwgZW5kKTsKKworICAgICAgICAgICAg
aWYgKGN1ciA8IGVuZCAmJiAqY3VyID09ICcsJykgeworICAgICAgICAgICAgICAgIGRlbGltUGFy
c2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjdXIrKzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXIsIGVuZCk7CisKKyAgICAgICAgICAgIGFw
cGVuZChTVkdQb2ludDo6Y3JlYXRlKEZsb2F0UG9pbnQoeFBvcywgeVBvcykpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiAhZGVsaW1QYXJzZWQ7CiAgICAgfQogCi1wcml2YXRlOgotICAg
IFNWR1BvaW50TGlzdChBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmIGFuaW1hdGVkUHJvcGVy
dHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQb2ludExpc3RWYWx1ZXMmIHZhbHVlcywgTGlz
dFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCi0gICAgICAgIDogU1ZHTGlzdFByb3BlcnR5VGVhck9m
ZjxTVkdQb2ludExpc3RWYWx1ZXM+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3Jh
cHBlcnMpCisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZQogICAgIHsK
KyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworCisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgcG9pbnQgOiBtX2l0ZW1zKSB7CisgICAgICAgICAgICBpZiAoYnVpbGRlci5sZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworCisgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZE51bWJlcihwb2ludC0+eCgpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcgJyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihwb2ludC0+eSgpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogfTsK
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0VmFsdWVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU2NmEyN2ZkMWEx
NGE2M2RkZTRlMjNkOTdiYWU4MDdlZDc5Yjg2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVz
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1BvaW50TGlzdFZhbHVlcy5oIgot
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0cmluZyBTVkdQb2ludExp
c3RWYWx1ZXM6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAotewotICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKLQotICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoaSA+IDApCi0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnICcpOyAvLyBGSVhNRTogU2hvdWxkbid0IHdlIHVzZSBjb21t
YXMgdG8gc2VwZXJhdGU/Ci0KLSAgICAgICAgY29uc3QgYXV0byYgcG9pbnQgPSBhdChpKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihwb2ludC54KCkpOwotICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJl
Y2lzaW9uTnVtYmVyKHBvaW50LnkoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50
TGlzdFZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTA3NWIzYjk2YTUwYTM1OGI2OWViMzJmMzYy
MzhiNWE0NDYxNGRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaAorKysgL2Rldi9udWxs
CkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNW
R1BvaW50OwotY2xhc3MgU1ZHUG9pbnRMaXN0OwotCi1jbGFzcyBTVkdQb2ludExpc3RWYWx1ZXMg
ZmluYWwgOiBwdWJsaWMgVmVjdG9yPEZsb2F0UG9pbnQ+IHsKLXB1YmxpYzoKLSAgICBTdHJpbmcg
dmFsdWVBc1N0cmluZygpIGNvbnN0OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1BvaW50TGlzdFZhbHVlcz4gewotICAgIHN0YXRpYyBTVkdQb2ludExpc3RW
YWx1ZXMgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgc3RhdGljIFNWR1BvaW50
TGlzdFZhbHVlcyBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotICAgIHsKLSAgICAg
ICAgU1ZHUG9pbnRMaXN0VmFsdWVzIGxpc3Q7Ci0gICAgICAgIHBvaW50c0xpc3RGcm9tU1ZHRGF0
YShsaXN0LCBzdHJpbmcpOwotICAgICAgICByZXR1cm4gbGlzdDsKLSAgICB9Ci0gICAgc3RhdGlj
IE9wdGlvbmFsPFNWR1BvaW50TGlzdFZhbHVlcz4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiB7IH07IH0KLSAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1BvaW50TGlzdFZhbHVlcyYgbGlzdCkg
eyByZXR1cm4gbGlzdC52YWx1ZUFzU3RyaW5nKCk7IH0KLQotICAgIHVzaW5nIExpc3RJdGVtVHlw
ZSA9IEZsb2F0UG9pbnQ7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUG9pbnQ7Ci0g
ICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR1BvaW50TGlzdDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCmluZGV4
IGFmNmRiNTZiY2IwZThlZjhhNTczMDdhZGUwMTI4M2FmZjQyYWIxNGUuLmMyZmUyZWFhODk3ZDc4
YjY5YjA5NWM2ZGNmMzUwYzI5ZjBmY2JiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2x5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVt
ZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM3LDI4ICszNywxNyBAQCBTVkdQb2x5RWxlbWVu
dDo6U1ZHUG9seUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIDogU1ZHR2VvbWV0cnlFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzKQogewotICAgIHJlZ2lzdGVy
QXR0cmlidXRlcygpOwotfQotCi12b2lkIFNWR1BvbHlFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0
ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBp
ZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJl
Z2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpwb2ludHNBdHRyLCAmU1ZHUG9seUVsZW1lbnQ6Om1f
cG9pbnRzPigpOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjpwb2ludHNBdHRyLCAmU1ZHUG9seUVsZW1lbnQ6Om1fcG9p
bnRzPigpOworICAgIH0pOwogfQogCiB2b2lkIFNWR1BvbHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwb2ludHNBdHRyKSB7Ci0gICAgICAgIFNWR1Bv
aW50TGlzdFZhbHVlcyBuZXdMaXN0OwotICAgICAgICBpZiAoIXBvaW50c0xpc3RGcm9tU1ZHRGF0
YShuZXdMaXN0LCB2YWx1ZSkpCisgICAgICAgIGlmICghbV9wb2ludHMtPmJhc2VWYWwoKS0+cGFy
c2UodmFsdWUpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCku
cmVwb3J0RXJyb3IoIlByb2JsZW0gcGFyc2luZyBwb2ludHM9XCIiICsgdmFsdWUgKyAiXCIiKTsK
LQotICAgICAgICBpZiAoYXV0byB3cmFwcGVyID0gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdBbmlt
YXRlZFBvaW50TGlzdD4obG9va3VwQW5pbWF0ZWRQcm9wZXJ0eShtX3BvaW50cykpKQotICAgICAg
ICAgICAgd3JhcHBlci0+ZGV0YWNoTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKLQotICAg
ICAgICBtX3BvaW50cy5zZXRWYWx1ZShXVEZNb3ZlKG5ld0xpc3QpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtODEsMjEgKzcwLDkgQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0K
IAotUmVmPFNWR1BvaW50TGlzdD4gU1ZHUG9seUVsZW1lbnQ6OnBvaW50cygpCi17Ci0gICAgbV9w
b2ludHMuc2V0U2hvdWxkU3luY2hyb25pemUodHJ1ZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19wb2lu
dGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+KGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9w
ZXJ0eShtX3BvaW50cykpLT5iYXNlVmFsKCk7Ci19Ci0KLVJlZjxTVkdQb2ludExpc3Q+IFNWR1Bv
bHlFbGVtZW50OjphbmltYXRlZFBvaW50cygpCi17Ci0gICAgbV9wb2ludHMuc2V0U2hvdWxkU3lu
Y2hyb25pemUodHJ1ZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0
ZWRQb2ludExpc3Q+KGxvb2t1cE9yQ3JlYXRlQW5pbWF0ZWRQcm9wZXJ0eShtX3BvaW50cykpLT5h
bmltVmFsKCk7Ci19Ci0KIHNpemVfdCBTVkdQb2x5RWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlD
b3N0KCkgY29uc3QKIHsKLSAgICBzaXplX3QgcG9pbnRzQ29zdCA9IHBvaW50TGlzdCgpLnNpemUo
KSAqIHNpemVvZihGbG9hdFBvaW50KTsKKyAgICBzaXplX3QgcG9pbnRzQ29zdCA9IG1fcG9pbnRz
LT5iYXNlVmFsKCktPml0ZW1zKCkuc2l6ZSgpICogc2l6ZW9mKEZsb2F0UG9pbnQpOwogICAgIC8v
IFdlIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhlIG1lbW9yeSB3aGljaCBpcyBhbGxvY2F0ZWQgYnkg
dGhlIFJlbmRlclNWR1BhdGg6Om1fcGF0aC4KICAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKSArIChy
ZW5kZXJlcigpID8gcG9pbnRzQ29zdCAqIDIgKyBzaXplb2YoUmVuZGVyU1ZHUGF0aCkgOiBwb2lu
dHNDb3N0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKaW5kZXggMDMyMGMwNDc4
MDhjYmEzM2Y4Y2NlMzRjZjdlNDBkMzNkNjQ3YmJhMi4uNTdlZTVkYTUyNGExM2RmNTE3YWE2YjRi
Y2FjODJhMTRhODM3NmY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKQEAgLTEs
NyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR2VvbWV0cnlFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKQEAgLTMxLDEwICszMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
VkdQb2x5RWxlbWVudCA6IHB1YmxpYyBTVkdHZW9tZXRyeUVsZW1lbnQsIHB1YmxpYyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR1Bv
bHlFbGVtZW50KTsKIHB1YmxpYzoKLSAgICBSZWY8U1ZHUG9pbnRMaXN0PiBwb2ludHMoKTsKLSAg
ICBSZWY8U1ZHUG9pbnRMaXN0PiBhbmltYXRlZFBvaW50cygpOworICAgIGNvbnN0IFNWR1BvaW50
TGlzdCYgcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHMtPmN1cnJlbnRWYWx1ZSgpOyB9
CiAKLSAgICBjb25zdCBTVkdQb2ludExpc3RWYWx1ZXMmIHBvaW50TGlzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pbnRzLnZhbHVlKCk7IH0KKyAgICBTVkdQb2ludExpc3QmIHBvaW50cygpIHsgcmV0
dXJuIG1fcG9pbnRzLT5iYXNlVmFsKCk7IH0KKyAgICBTVkdQb2ludExpc3QmIGFuaW1hdGVkUG9p
bnRzKCkgeyByZXR1cm4gKm1fcG9pbnRzLT5hbmltVmFsKCk7IH0KIAogICAgIHNpemVfdCBhcHBy
b3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNDQsMTAgKzQzLDE3IEBA
IHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1BvbHlFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1l
bnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVP
d25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBj
b25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9w
ZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1BvbHlFbGVtZW50LCBT
VkdHZW9tZXRyeUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OworICAgIGNv
bnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7IAogICAgIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAgLTU1LDcgKzYxLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzTWFya2VycygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25l
clByb3h5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmltYXRlZFBvaW50TGlzdEF0dHJpYnV0ZSBtX3Bv
aW50czsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkUG9pbnRMaXN0PiBtX3BvaW50cyB7IFNWR0FuaW1hdGVkUG9p
bnRMaXN0OjpjcmVhdGUodGhpcykgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAppbmRleCBmOTkx
ZjNkMDJkOTViNmI3ZTI4OGVkMGI2M2Q3Y2UwOWViOTI2NmUwLi5iNzJjNzE1OTc5N2YzYmQwYTU5
ODY2ZGFhYTIyZmUxZGIxYTJhZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5oCkBAIC01Niw4ICs1NiwxMSBAQCBwcml2YXRlOgogICAgIHVzaW5n
IEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQsIFNWR0dyYWRpZW50RWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJp
YnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsg
cmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KICAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5
ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZH
R3JhZGllbnRFbGVtZW50PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisK
ICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC02Niw2ICs2OSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fY3ggeyBMZW5ndGhNb2RlV2lkdGgsICI1MCUiIH07CiAg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9jeSB7IExlbmd0aE1vZGVIZWlnaHQsICI1
MCUiIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9yIHsgTGVuZ3RoTW9kZU90
aGVyLCAiNTAlIiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAppbmRleCBlNGNkYWIx
YWZmYTUyYzlmNTQ0NGIzNWIzMzdjZDM2ZTA2ZTAxZjE1Li41OGNlMWQ5MDM1YjVkZWJmY2FkZGY0
Yjk1M2NjMjc3NTg5ZjM1NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaApAQCAt
MjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9v
bGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0dlb21ldHJ5RWxlbWVudC5o
IgpAQCAtNTMsMTAgKzUyLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25l
clByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHUmVjdEVsZW1lbnQsIFNWR0dl
b21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgc3RhdGlj
IGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQ
cm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmli
dXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdSZWN0RWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5
JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lz
dHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JikgZmluYWw7CiAKQEAgLTY2LDYgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0
dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUg
bV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCmluZGV4IDRkMTQ0MTVjZDU5YTdlMmMwNjVhOGVhYzE2ZGQ5NTUyYWU3YzU2OGYuLjYyMTk5
NmUzMjFiZDI3MWUyNmFhY2FmZjA3NzJlZDJhYmI4NDEzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAKQEAgLTE3MSwxNiArMTcxLDExIEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6
c2V0Q3VycmVudFNjYWxlKGZsb2F0IHNjYWxlKQogICAgICAgICBmcmFtZS0+c2V0UGFnZVpvb21G
YWN0b3Ioc2NhbGUpOwogfQogCi1SZWY8U1ZHUG9pbnQ+IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRU
cmFuc2xhdGUoKQotewotICAgIHJldHVybiBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8U1ZHU1ZH
RWxlbWVudCwgU1ZHUG9pbnQ+OjpjcmVhdGUoKnRoaXMsIG1fY3VycmVudFRyYW5zbGF0ZSwgJlNW
R1NWR0VsZW1lbnQ6OnVwZGF0ZUN1cnJlbnRUcmFuc2xhdGUpOwotfQotCiB2b2lkIFNWR1NWR0Vs
ZW1lbnQ6OnNldEN1cnJlbnRUcmFuc2xhdGUoY29uc3QgRmxvYXRQb2ludCYgdHJhbnNsYXRpb24p
CiB7Ci0gICAgaWYgKG1fY3VycmVudFRyYW5zbGF0ZSA9PSB0cmFuc2xhdGlvbikKKyAgICBpZiAo
bV9jdXJyZW50VHJhbnNsYXRlLT52YWx1ZSgpID09IHRyYW5zbGF0aW9uKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9jdXJyZW50VHJhbnNsYXRlID0gdHJhbnNsYXRpb247CisgICAgbV9jdXJyZW50
VHJhbnNsYXRlLT5zZXRWYWx1ZSh0cmFuc2xhdGlvbik7CiAgICAgdXBkYXRlQ3VycmVudFRyYW5z
bGF0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCA5YmNmMjg2ODU2
NDhiNTM4MTZiMjI1N2NkZGMwNDJmNGM3MjBhODcxLi4yZTM0YzRmMDdlZjZlYjM0OTFhYTljYjYy
Y2EyNWY1ZjczMWE2MmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDEwIFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRSZWN0LmgiCkBAIC02NCw4ICs2Myw4IEBA
IHB1YmxpYzogLy8gRE9NCiAgICAgZmxvYXQgY3VycmVudFNjYWxlKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRDdXJyZW50U2NhbGUoZmxvYXQpOwogCi0gICAgUmVmPFNWR1BvaW50PiBjdXJyZW50VHJh
bnNsYXRlKCk7Ci0gICAgRmxvYXRQb2ludCBjdXJyZW50VHJhbnNsYXRlVmFsdWUoKSB7IHJldHVy
biBtX2N1cnJlbnRUcmFuc2xhdGU7IH0KKyAgICBTVkdQb2ludCYgY3VycmVudFRyYW5zbGF0ZSgp
IHsgcmV0dXJuIG1fY3VycmVudFRyYW5zbGF0ZTsgfQorICAgIEZsb2F0UG9pbnQgY3VycmVudFRy
YW5zbGF0ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VHJhbnNsYXRlLT52YWx1ZSgp
OyB9CiAKICAgICB1bnNpZ25lZCBzdXNwZW5kUmVkcmF3KHVuc2lnbmVkIG1heFdhaXRNaWxsaXNl
Y29uZHMpOwogICAgIHZvaWQgdW5zdXNwZW5kUmVkcmF3KHVuc2lnbmVkIHN1c3BlbmRIYW5kbGVJ
ZCk7CkBAIC0xMDksNyArMTA4LDcgQEAgcHVibGljOgogICAgIFNNSUxUaW1lQ29udGFpbmVyJiB0
aW1lQ29udGFpbmVyKCkgeyByZXR1cm4gbV90aW1lQ29udGFpbmVyLmdldCgpOyB9CiAKICAgICB2
b2lkIHNldEN1cnJlbnRUcmFuc2xhdGUoY29uc3QgRmxvYXRQb2ludCYpOyAvLyBVc2VkIHRvIHBh
bi4KLSAgICB2b2lkIHVwZGF0ZUN1cnJlbnRUcmFuc2xhdGUoKTsgLy8gVXNlZCBmcm9tIERPTSBi
aW5kaW5ncyB0byBjcmVhdGUgYW4gU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmIGZvciBjdXJyZW50
VHJhbnNsYXRlLgorICAgIHZvaWQgdXBkYXRlQ3VycmVudFRyYW5zbGF0ZSgpOwogCiAgICAgYm9v
bCBoYXNJbnRyaW5zaWNXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgaGFzSW50cmluc2ljSGVpZ2h0
KCkgY29uc3Q7CkBAIC0xMzUsMTIgKzEzNCwxOSBAQCBwcml2YXRlOgogICAgIFNWR1NWR0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+U1ZHU1ZH
RWxlbWVudCgpOwogCi0gICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHlJbXBsPFNWR1NWR0VsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94LCBTVkdab29tQW5kUGFuPjsK
KyAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUlt
cGw8U1ZHU1ZHRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclBy
b3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRy
aWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wg
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
OyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBT
VkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisgICAgCisgICAgdXNpbmcgUHJvcGVy
dHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdTVkdFbGVtZW50LCBTVkdH
cmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmll
d0JveD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorICAgIAorICAgIHN0
YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
ICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE2
NSwxMSArMTcxLDEzIEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fdXNlQ3VycmVudFZpZXcgeyBm
YWxzZSB9OwogICAgIFJlZjxTTUlMVGltZUNvbnRhaW5lcj4gbV90aW1lQ29udGFpbmVyOwotICAg
IEZsb2F0UG9pbnQgbV9jdXJyZW50VHJhbnNsYXRlOwogICAgIFJlZlB0cjxTVkdWaWV3U3BlYz4g
bV92aWV3U3BlYzsKICAgICBTdHJpbmcgbV9jdXJyZW50Vmlld0ZyYWdtZW50SWRlbnRpZmllcjsK
IAorICAgIFJlZjxTVkdQb2ludD4gbV9jdXJyZW50VHJhbnNsYXRlIHsgU1ZHUG9pbnQ6OmNyZWF0
ZSgpIH07CisKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7
ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0
aCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1feSB7IExlbmd0aE1vZGVIZWln
aHR9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2Rl
V2lkdGgsICIxMDAlIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5pZGwKaW5kZXgg
ZDk2ODdkMjM5YzMwZDRjNjBmNzc5MDM2OWE0YmU4MzMxZjcwY2NmZC4uM2RlYjA1ZWExODQ2OWEz
NjIyNDdjYmE2MThjYzg1ODEyZmRhOGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmlkbApAQCAtNDIsNyArNDIsNyBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVz
ZUN1cnJlbnRWaWV3OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdWaWV3U3BlYyBjdXJyZW50
VmlldzsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IGN1cnJlbnRTY2FsZTsKLSAg
ICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgY3VycmVudFRyYW5zbGF0
ZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgY3VycmVudFRyYW5zbGF0ZTsKIAog
ICAgIHVuc2lnbmVkIGxvbmcgc3VzcGVuZFJlZHJhdyhvcHRpb25hbCB1bnNpZ25lZCBsb25nIG1h
eFdhaXRNaWxsaXNlY29uZHMgPSAwKTsKICAgICB2b2lkIHVuc3VzcGVuZFJlZHJhdyhvcHRpb25h
bCB1bnNpZ25lZCBsb25nIHN1c3BlbmRIYW5kbGVJZCA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmgKaW5kZXggZjhjZWQyMmEzMjcyODFiMDExODAzNWE5YjcxODA3ZjE1YTgx
NWQyOC4uNjc2MGNjZDMxOTJmNzk3ZWFiZWU0ZmVmMDUwNWY3OTlhNGRjMDBmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDMsOCArNDIsMTEgQEAgcHJpdmF0ZToKICAg
ICBTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wg
d2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCk7CiAKICAgICB1c2luZyBB
dHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHU2NyaXB0
RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJ
UmVmZXJlbmNlPjsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0
ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7
IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0
cnk8U1ZHU2NyaXB0RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBw
cm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5
OyB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC04NSw2ICs4Nyw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsg
KnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgVGltZXIgbV9zdmdMb2FkRXZlbnRUaW1lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0b3BFbGVtZW50LmgKaW5kZXggZDg0M2I3NmFmZWRhM2ZhNTA3MDNmYjE3Zjc2ODZhNjJjMDEw
YTc5Zi4uZmQzOTlhYmFkZTI4OWU2NWY1NzZiMDljYzZiNTEyN2Y5MGNlZjAzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKQEAgLTQxLDEwICs0MSwxNyBAQCBwcml2YXRlOgogCiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR1N0b3BFbGVtZW50LCBTVkdFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQ
cm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0
cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3Qg
U1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlS
ZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdTdG9wRWxlbWVudCwgU1ZHRWxl
bWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC01NCw2
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3du
ZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0
cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fb2Zmc2V0IHsg
MCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgKaW5kZXggN2ZlN2YwMGZjNTJh
NThiY2QwMDFmMmZhYmM1YjJmYTM4YTM3ZWU4NS4uZDFlMDEwNjliMTJjN2U5MDYwMmFmMDAyZmUy
OTNjNDBkNGI3MGVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDMzICsyNSw2
NCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRl
ICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiU1ZHUHJpbWl0aXZlTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdTdHJpbmdMaXN0
IGZpbmFsIDogcHVibGljIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlz
dFZhbHVlcz4geworY2xhc3MgU1ZHU3RyaW5nTGlzdCBmaW5hbCA6IHB1YmxpYyBTVkdQcmltaXRp
dmVMaXN0PFN0cmluZz4geworICAgIHVzaW5nIEJhc2UgPSBTVkdQcmltaXRpdmVMaXN0PFN0cmlu
Zz47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB1c2luZyBCYXNlOjptX2l0ZW1zOworCiBw
dWJsaWM6Ci0gICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1N0cmluZ0xpc3RWYWx1ZXM+OwotICAgIHVzaW5nIExp
c3RXcmFwcGVyQ2FjaGUgPSBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6Okxpc3RXcmFwcGVy
Q2FjaGU7CisgICAgc3RhdGljIFJlZjxTVkdTdHJpbmdMaXN0PiBjcmVhdGUoU1ZHUHJvcGVydHlP
d25lciogb3duZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdTdHJp
bmdMaXN0KG93bmVyKSk7CisgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdTdHJpbmdMaXN0PiBj
cmVhdGUoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIFNWR1N0cmluZ0xpc3RWYWx1ZXMmIHZh
bHVlcykKKyAgICB2b2lkIHJlc2V0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHU3RyaW5nTGlzdCgmY29udGV4dEVsZW1lbnQsIHZh
bHVlcykpOworICAgICAgICBwYXJzZShzdHJpbmcsICcgJyk7CisKKyAgICAgICAgLy8gQWRkIGVt
cHR5IHN0cmluZywgaWYgbGlzdCBpcyBlbXB0eS4KKyAgICAgICAgaWYgKG1faXRlbXMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgfQog
Ci0gICAgc3RhdGljIFJlZjxTVkdTdHJpbmdMaXN0PiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmJiwgU1ZHUHJvcGVydHlSb2xlLCBTVkdTdHJpbmdMaXN0VmFsdWVzJiB2YWx1ZXMs
IExpc3RXcmFwcGVyQ2FjaGUmKQorICAgIGJvb2wgcGFyc2UoY29uc3QgU3RyaW5nJiBkYXRhLCBV
Q2hhciBkZWxpbWl0ZXIpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBy
ZW1vdmUgdGhpcy4gSXQncyBvbmx5IG5lZWRlZCB0byBrZWVwIFdpbmRvd3MgY29tcGlsaW5nLgot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHU3RyaW5nTGlzdChudWxscHRyLCB2YWx1ZXMpKTsKKyAgICAgICAgY2xlYXJJdGVtcygp
OworCisgICAgICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhkYXRh
KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICAgICAgY29uc3QgVUNoYXIqIHB0ciA9IHVw
Y29udmVydGVkQ2hhcmFjdGVyczsKKyAgICAgICAgY29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIGRh
dGEubGVuZ3RoKCk7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKKyAgICAgICAgICAgIGNv
bnN0IFVDaGFyKiBzdGFydCA9IHB0cjsKKyAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYg
KnB0ciAhPSBkZWxpbWl0ZXIgJiYgIWlzU1ZHU3BhY2UoKnB0cikpCisgICAgICAgICAgICAgICAg
cHRyKys7CisgICAgICAgICAgICBpZiAocHRyID09IHN0YXJ0KQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoU3RyaW5nKHN0YXJ0LCBwdHIgLSBzdGFy
dCkpOworICAgICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIocHRyLCBl
bmQsIGRlbGltaXRlcik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcHRyID09IGVuZDsK
ICAgICB9CiAKLXByaXZhdGU6Ci0gICAgU1ZHU3RyaW5nTGlzdChTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCwgU1ZHU3RyaW5nTGlzdFZhbHVlcyYgdmFsdWVzKQotICAgICAgICA6IFNWR1N0YXRp
Y0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdFZhbHVlcz4oY29udGV4dEVsZW1lbnQs
IHZhbHVlcykKKyAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCiAgICAg
eworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICAgICAgZm9yIChhdXRvIHN0
cmluZyA6IG1faXRlbXMpIHsKKyAgICAgICAgICAgIGlmIChidWlsZGVyLmxlbmd0aCgpKQorICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHN0cmluZyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHJpbmdMaXN0VmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFs
dWVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZmODk4YTkxMmI2MjAxODBl
ZDMzNmQxMzg3ZGVhYmI1MzdkOTQ3OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCi0KLSNp
bmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXZvaWQgU1ZHU3RyaW5nTGlzdFZhbHVlczo6Y29tbWl0Q2hhbmdlKFNWR0VsZW1lbnQmIGNv
bnRleHRFbGVtZW50KQotewotICAgIGNvbnRleHRFbGVtZW50LmludmFsaWRhdGVTVkdBdHRyaWJ1
dGVzKCk7Ci0gICAgY29udGV4dEVsZW1lbnQuc3ZnQXR0cmlidXRlQ2hhbmdlZChtX2F0dHJpYnV0
ZU5hbWUpOwotfQotCi12b2lkIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnJlc2V0KGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQotewotICAgIHBhcnNlKHN0cmluZywgJyAnKTsKLQotICAgIC8vIEFkZCBlbXB0
eSBzdHJpbmcsIGlmIGxpc3QgaXMgZW1wdHkuCi0gICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAg
YXBwZW5kKGVtcHR5U3RyaW5nKCkpOwotfQotCi12b2lkIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnBh
cnNlKGNvbnN0IFN0cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyKQotewotICAgIC8vIFRPRE8g
OiBtb3JlIGVycm9yIGNoZWNraW5nL3JlcG9ydGluZwotICAgIGNsZWFyKCk7Ci0KLSAgICBhdXRv
IHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcoZGF0YSkudXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIqIHB0ciA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsK
LSAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgZGF0YS5sZW5ndGgoKTsKLSAgICB3aGlsZSAo
cHRyIDwgZW5kKSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHB0cjsKLSAgICAgICAg
d2hpbGUgKHB0ciA8IGVuZCAmJiAqcHRyICE9IGRlbGltaXRlciAmJiAhaXNTVkdTcGFjZSgqcHRy
KSkKLSAgICAgICAgICAgIHB0cisrOwotICAgICAgICBpZiAocHRyID09IHN0YXJ0KQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGFwcGVuZChTdHJpbmcoc3RhcnQsIHB0ciAtIHN0YXJ0KSk7
Ci0gICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKHB0ciwgZW5kLCBkZWxp
bWl0ZXIpOwotICAgIH0KLX0KLQotU3RyaW5nIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OnZhbHVlQXNT
dHJpbmcoKSBjb25zdAotewotICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQotICAgIHVuc2ln
bmVkIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewotICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnICcpOwotCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGF0KGkpKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
cmluZ0xpc3RWYWx1ZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5YTI3NDIy
MTkwMDEwYTBjY2FiZGVhMzU0YTMzNTg2Y2UwOTA1OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZh
bHVlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5j
bHVkZSAiU1ZHQXR0cmlidXRlQWNjZXNzb3IuaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0
cy5oIgotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFNWR0VsZW1lbnQ7Ci1jbGFzcyBTVkdTdHJpbmdMaXN0OwotY2xhc3MgU1ZHU3RyaW5n
TGlzdFZhbHVlczsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1jbGFzcyBTVkdQcm9wZXJ0eVRl
YXJPZmY7Ci0KLXVzaW5nIFNWR1N0cmluZ0xpc3RWYWx1ZXNBdHRyaWJ1dGUgPSBTVkdQcm9wZXJ0
eUF0dHJpYnV0ZTxTVkdTdHJpbmdMaXN0VmFsdWVzPjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgT3du
ZXJUeXBlPgotdXNpbmcgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZUFjY2Vzc29yID0gU1ZH
UHJvcGVydHlBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0cmluZ0xpc3RWYWx1ZXNB
dHRyaWJ1dGU+OwotCi1jbGFzcyBTVkdTdHJpbmdMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZl
Y3RvcjxTdHJpbmc+IHsKLXB1YmxpYzoKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0
dHJpYnV0ZU5hbWUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgcmVzZXQoY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmLCBVQ2hhciBkZWxpbWl0ZXIgPSAnLCcp
OwotCi0gICAgLy8gT25seSB1c2VkIGJ5IFNWR1N0cmluZ0xpc3QuCi0gICAgdm9pZCBjb21taXRD
aGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpOwotCi0gICAgU3RyaW5nIHZhbHVlQXNT
dHJpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBtX2F0
dHJpYnV0ZU5hbWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdTdHJpbmdMaXN0VmFsdWVzPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBT
VkdTdHJpbmdMaXN0VmFsdWVzJiBsaXN0KSB7IHJldHVybiBsaXN0LnZhbHVlQXNTdHJpbmcoKTsg
fQotCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU3RyaW5nOwotICAgIHVzaW5nIExpc3RJdGVt
VGVhck9mZiA9IFNWR1Byb3BlcnR5VGVhck9mZjxTdHJpbmc+OwotICAgIHVzaW5nIExpc3RQcm9w
ZXJ0eVRlYXJPZmYgPSBTVkdTdHJpbmdMaXN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKaW5kZXggMWU0NDY2N2RiNGUyYzBm
NTQ0ZGUyZWIzMTgxM2E5OGQxOGUyZmZlNS4uYzNkMzMyY2Q4NWVmNDE4ZTlmOGJmNjIzMjEwMzg3
OGIzODg0NDAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCkBAIC0yMSw3
ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFu
LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUg
IlNWR0dyYXBoaWNzRWxlbWVudC5oIgogCkBAIC0zOCwxMiArMzcsMTYgQEAgcHJpdmF0ZToKICAg
ICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8
U1ZHU3dpdGNoRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
CiAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
PFNWR1N3aXRjaEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsg
fQogCiAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25z
dCBmaW5hbDsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAg
ICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9Owor
ICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTeW1ib2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5o
CmluZGV4IGQ3NjgzZTE5MjM4NWZlZTg0ODZmMDk5YmRhNjc3NTBiMjUwOWVmMmQuLmUxZjI4ZjE0
Yzg4YTQ2NTVlYzRjNGZhZmU3MmI0YjFiNDU4NTkxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5
bWJvbEVsZW1lbnQuaApAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5oIgogI2luY2x1ZGUgIlNW
R0VsZW1lbnQuaCIKQEAgLTQxLDYgKzQwLDkgQEAgcHJpdmF0ZToKICAgICB1c2luZyBBdHRyaWJ1
dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHU3ltYm9sRWxlbWVu
dCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3
Qm94PjsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclBy
b3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKKyAg
ICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1N5
bWJvbEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNW
R0ZpdFRvVmlld0JveD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOwpAQCAtNDgsNiArNTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQ
cm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKaW5kZXggYmExN2NjYWFlN2UwMWFh
ZTAyMGE3M2QyMWQyYmM4NGE0YWQ3MWIyYi4uMGViM2Q2YTA2YjVmMmUyZDc1ZmE5OGNhNTJlNjg2
N2FiNzI3MDQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKQEAgLTQwLDggKzQw
LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB+U1ZHVFJlZkVsZW1lbnQoKTsKIAogICAgIHVz
aW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdU
UmVmRWxlbWVudCwgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVVJJUmVmZXJlbmNlPjsK
LQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVz
aW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVFJlZkVs
ZW1lbnQsIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1VSSVJlZmVyZW5jZT47CisKICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC01OSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3du
ZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVn
aXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHVFJlZlRhcmdl
dEV2ZW50TGlzdGVuZXI+IG1fdGFyZ2V0TGlzdGVuZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3Rz
LmNwcAppbmRleCA3MTM0Y2U3YjhlNmVmYzE2ZTliZGY0OWYxZTRjZGU0MjE0ZTExYzQxLi5mNDRm
OTBlM2ZmMTk3ODEzNDNhNjNlNThlMzk3ZWNjODllNjI2MmExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0
cy5jcHAKQEAgLTEwOSwxOCArMTA5LDE2IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkU1ZHRmVhdHVyZXMoKQogCiBTVkdU
ZXN0czo6U1ZHVGVzdHMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgOiBtX2NvbnRl
eHRFbGVtZW50KCpjb250ZXh0RWxlbWVudCkKKyAgICAsIG1fcmVxdWlyZWRGZWF0dXJlcyhTVkdT
dHJpbmdMaXN0OjpjcmVhdGUoY29udGV4dEVsZW1lbnQpKQorICAgICwgbV9yZXF1aXJlZEV4dGVu
c2lvbnMoU1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKGNvbnRleHRFbGVtZW50KSkKKyAgICAsIG1fc3lz
dGVtTGFuZ3VhZ2UoU1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKGNvbnRleHRFbGVtZW50KSkKIHsKLSAg
ICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdUZXN0czo6cmVnaXN0ZXJBdHRy
aWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0g
ICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIsICZTVkdU
ZXN0czo6bV9yZXF1aXJlZEZlYXR1cmVzPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLCAmU1ZHVGVzdHM6Om1fcmVxdWly
ZWRFeHRlbnNpb25zPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjpzeXN0ZW1MYW5ndWFnZUF0dHIsICZTVkdUZXN0czo6bV9zeXN0ZW1MYW5ndWFnZT4oKTsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxT
VkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIsICZTVkdUZXN0czo6bV9yZXF1aXJlZEZlYXR1
cmVzPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05h
bWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLCAmU1ZHVGVzdHM6Om1fcmVxdWlyZWRFeHRlbnNp
b25zPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05h
bWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsICZTVkdUZXN0czo6bV9zeXN0ZW1MYW5ndWFnZT4oKTsK
KyAgICB9KTsKIH0KIAogU1ZHVGVzdHM6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBTVkdUZXN0czo6YXR0
cmlidXRlUmVnaXN0cnkoKQpAQCAtMTMwLDcgKzEyOCw3IEBAIFNWR1Rlc3RzOjpBdHRyaWJ1dGVS
ZWdpc3RyeSYgU1ZHVGVzdHM6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCkKIAogYm9vbCBTVkdUZXN0czo6
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewot
ICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOworICAgIHJldHVybiBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpOwogfQogCiBib29sIFNWR1Rlc3RzOjpoYXNFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24pCkBAIC0xNDUsMTUgKzE0MywxNSBAQCBib29sIFNWR1Rlc3RzOjpoYXNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAKIGJvb2wgU1ZHVGVzdHM6OmlzVmFs
aWQoKSBjb25zdAogewotICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1fcmVxdWlyZWRGZWF0dXJl
cy52YWx1ZSgpKSB7CisgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogbV9yZXF1aXJlZEZlYXR1cmVz
LT5pdGVtcygpKSB7CiAgICAgICAgIGlmIChmZWF0dXJlLmlzRW1wdHkoKSB8fCAhc3VwcG9ydGVk
U1ZHRmVhdHVyZXMoKS5jb250YWlucyhmZWF0dXJlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IG1fc3lzdGVtTGFuZ3VhZ2UudmFs
dWUoKSkgeworICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBtX3N5c3RlbUxhbmd1YWdlLT5pdGVt
cygpKSB7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSBkZWZhdWx0TGFuZ3VhZ2UoKS5zdWJzdHJp
bmcoMCwgMikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGZvciAoYXV0
byYgZXh0ZW5zaW9uIDogbV9yZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUoKSkgeworICAgIGZvciAo
YXV0byYgZXh0ZW5zaW9uIDogbV9yZXF1aXJlZEV4dGVuc2lvbnMtPml0ZW1zKCkpIHsKICAgICAg
ICAgaWYgKCFoYXNFeHRlbnNpb24oZXh0ZW5zaW9uKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC0xNjMsMTEgKzE2MSwxMSBAQCBib29sIFNWR1Rlc3RzOjppc1ZhbGlkKCkg
Y29uc3QKIHZvaWQgU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKGF0
dHJpYnV0ZU5hbWUgPT0gcmVxdWlyZWRGZWF0dXJlc0F0dHIpCi0gICAgICAgIG1fcmVxdWlyZWRG
ZWF0dXJlcy52YWx1ZSgpLnJlc2V0KHZhbHVlKTsKKyAgICAgICAgbV9yZXF1aXJlZEZlYXR1cmVz
LT5yZXNldCh2YWx1ZSk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVxdWlyZWRFeHRlbnNp
b25zQXR0cikKLSAgICAgICAgbV9yZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUoKS5yZXNldCh2YWx1
ZSk7CisgICAgICAgIG1fcmVxdWlyZWRFeHRlbnNpb25zLT5yZXNldCh2YWx1ZSk7CiAgICAgaWYg
KGF0dHJpYnV0ZU5hbWUgPT0gc3lzdGVtTGFuZ3VhZ2VBdHRyKQotICAgICAgICBtX3N5c3RlbUxh
bmd1YWdlLnZhbHVlKCkucmVzZXQodmFsdWUpOworICAgICAgICBtX3N5c3RlbUxhbmd1YWdlLT5y
ZXNldCh2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHVGVzdHM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xODcsMjQgKzE4NSw2IEBAIHZvaWQgU1ZH
VGVzdHM6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxRdWFsaWZpZWROYW1lPiYgc3Vw
cG9ydGVkQXR0cmlidXRlCiAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5hZGQoc3lzdGVtTGFuZ3Vh
Z2VBdHRyKTsKIH0KIAotUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1
cmVzKCkKLXsKLSAgICBtX3JlcXVpcmVkRmVhdHVyZXMuc2V0U2hvdWxkU3luY2hyb25pemUodHJ1
ZSk7Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShtX2NvbnRleHRFbGVtZW50LCBt
X3JlcXVpcmVkRmVhdHVyZXMudmFsdWUoKSk7Ci19Ci0KLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdU
ZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKCkKLXsKLSAgICBtX3JlcXVpcmVkRXh0ZW5zaW9ucy5z
ZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICByZXR1cm4gU1ZHU3RyaW5nTGlzdDo6Y3Jl
YXRlKG1fY29udGV4dEVsZW1lbnQsIG1fcmVxdWlyZWRFeHRlbnNpb25zLnZhbHVlKCkpOwotfQot
Ci1SZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlKCkKLXsKLSAgICBt
X3N5c3RlbUxhbmd1YWdlLnNldFNob3VsZFN5bmNocm9uaXplKHRydWUpOwotICAgIHJldHVybiBT
VkdTdHJpbmdMaXN0OjpjcmVhdGUobV9jb250ZXh0RWxlbWVudCwgbV9zeXN0ZW1MYW5ndWFnZS52
YWx1ZSgpKTsKLX0KLQogYm9vbCBTVkdUZXN0czo6aGFzRmVhdHVyZUZvckxlZ2FjeUJpbmRpbmdz
KGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewogICAgIC8v
IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIGhlcmUgb25seSB0byBiZSBleHBvc2VkIGluIHRoZSBP
YmplY3RpdmUtQyBhbmQgR09iamVjdCBiaW5kaW5ncyBmb3IgYm90aCBOb2RlIGFuZCBET01JbXBs
ZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgKaW5kZXggNzlkZGU5YjYwYTQ4OTdhNTFhY2I4
ODMwOWU5MWM5NGFkN2VmZTZmZC4uOTZjNTdmNGMyOTM4NDI3NjJhMTJjOTgxODQ3MmZhMTU4ZjM5
OGE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEwIFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw4ICsyMSw4IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiU1ZH
U3RyaW5nTGlzdFZhbHVlcy5oIgorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRl
ICJTVkdTdHJpbmdMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzUsNiArMzUs
OSBAQCBjbGFzcyBTVkdBdHRyaWJ1dGVSZWdpc3RyeTsKIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVy
VHlwZSwgdHlwZW5hbWUuLi4gQmFzZVR5cGVzPgogY2xhc3MgU1ZHQXR0cmlidXRlT3duZXJQcm94
eUltcGw7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUuLi4gQmFzZVR5
cGVzPgorY2xhc3MgU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5OworCiBjbGFzcyBTVkdUZXN0cyB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1ZHVGVzdHMpOwogcHVibGljOgpAQCAtNDMsNyAr
NDYsMTAgQEAgcHVibGljOgogCiAgICAgdXNpbmcgQXR0cmlidXRlUmVnaXN0cnkgPSBTVkdBdHRy
aWJ1dGVSZWdpc3RyeTxTVkdUZXN0cz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZVJlZ2lzdHJ5JiBh
dHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CisKKyAgICB1c2luZyBQcm9wZXJ0eVJl
Z2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1Rlc3RzPjsKKworICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
QEAgLTUzLDIxICs1OSwyMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgaGFzRmVhdHVyZUZvckxlZ2FjeUJpbmRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCBm
cm9tIERPTSB0aHJvdWdoIHRoZSBzdXBlciBjbGFzc2VzLgotICAgIFJlZjxTVkdTdHJpbmdMaXN0
PiByZXF1aXJlZEZlYXR1cmVzKCk7Ci0gICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHJlcXVpcmVkRXh0
ZW5zaW9ucygpOwotICAgIFJlZjxTVkdTdHJpbmdMaXN0PiBzeXN0ZW1MYW5ndWFnZSgpOworICAg
IFNWR1N0cmluZ0xpc3QmIHJlcXVpcmVkRmVhdHVyZXMoKSB7IHJldHVybiBtX3JlcXVpcmVkRmVh
dHVyZXM7IH0KKyAgICBTVkdTdHJpbmdMaXN0JiByZXF1aXJlZEV4dGVuc2lvbnMoKSB7IHJldHVy
biBtX3JlcXVpcmVkRXh0ZW5zaW9uczsgfQorICAgIFNWR1N0cmluZ0xpc3QmIHN5c3RlbUxhbmd1
YWdlKCkgeyByZXR1cm4gbV9zeXN0ZW1MYW5ndWFnZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZH
VGVzdHMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwogCiBwcml2YXRlOgogICAgIHVzaW5n
IEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdUZXN0
cz47Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAKICAgICBTVkdFbGVt
ZW50JiBtX2NvbnRleHRFbGVtZW50OwotICAgIFNWR1N0cmluZ0xpc3RWYWx1ZXNBdHRyaWJ1dGUg
bV9yZXF1aXJlZEZlYXR1cmVzIHsgU1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVyZXNBdHRyIH07Ci0g
ICAgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZSBtX3JlcXVpcmVkRXh0ZW5zaW9ucyB7IFNW
R05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyIH07Ci0gICAgU1ZHU3RyaW5nTGlzdFZhbHVl
c0F0dHJpYnV0ZSBtX3N5c3RlbUxhbmd1YWdlIHsgU1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0
ciB9OworICAgIFJlZjxTVkdTdHJpbmdMaXN0PiBtX3JlcXVpcmVkRmVhdHVyZXM7CisgICAgUmVm
PFNWR1N0cmluZ0xpc3Q+IG1fcmVxdWlyZWRFeHRlbnNpb25zOworICAgIFJlZjxTVkdTdHJpbmdM
aXN0PiBtX3N5c3RlbUxhbmd1YWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXN0cy5pZGwKaW5kZXggYTQ0ZjA3M2U5NDQ3NTFjYzNhNzY3MGZmODU4OTlmOWY4
YzdlNDRmNS4uM2I3YTljNzg4MDk1ODJiOGY3ZDUxM2Q3ODU0ZmIwYzAxZDEwYzIwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuaWRsCkBAIC0yOCw5ICsyOCw5IEBACiAgICAgTm9JbnRlcmZhY2VPYmpl
Y3QsCiAgICAgU3VwcHJlc3NUb0pTT2JqZWN0LAogXSBpbnRlcmZhY2UgU1ZHVGVzdHMgewotICAg
IFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHJlcXVpcmVkRmVh
dHVyZXM7Ci0gICAgW05ld09iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0cmluZ0xpc3Qg
cmVxdWlyZWRFeHRlbnNpb25zOwotICAgIFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBT
VkdTdHJpbmdMaXN0IHN5c3RlbUxhbmd1YWdlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdT
dHJpbmdMaXN0IHJlcXVpcmVkRmVhdHVyZXM7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0
cmluZ0xpc3QgcmVxdWlyZWRFeHRlbnNpb25zOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdT
dHJpbmdMaXN0IHN5c3RlbUxhbmd1YWdlOwogCiAgICAgLy8gRklYTUU6IFVzaW5nICJ1bmRlZmlu
ZWQiIGFzIGRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlIGlzIHdyb25nLgogICAgIGJvb2xlYW4gaGFz
RXh0ZW5zaW9uKG9wdGlvbmFsIERPTVN0cmluZyBleHRlbnNpb24gPSAidW5kZWZpbmVkIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKaW5kZXggMTU3YzNkN2E3
ODY2NzM2YTY2NjMwMGNkYjExNzAxNmU2MmQ5YTM3My4uOGRjYWM2NDVjYmExZTYwODVkZDc3MTQ2
OGUyYWI3MTExYWM1M2RmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVs
ZW1lbnQuaApAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIK
ICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuaCIKQEAgLTg5LDYgKzg4LDggQEAgcHVibGljOgogCiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1RleHRD
b250ZW50RWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0
cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0
cmlidXRlUmVnaXN0cnkoKTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogCiAgICAgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3RleHRMZW5ndGguY3Vy
cmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBTVkdMZW5ndGhBZGp1c3RU
eXBlIGxlbmd0aEFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoQWRqdXN0LmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC0xMTAsMTAgKzExMSwxNCBAQCBwcm90
ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1RleHRDb250ZW50KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVy
UHJveHk7IH0KIAorICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93
bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7
IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLSAgICBzdGF0aWMgYm9v
bCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsg
cmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQogCiAgICAgY2xhc3Mg
U1ZHQW5pbWF0ZWRDdXN0b21MZW5ndGhBdHRyaWJ1dGUgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRMZW5n
dGhBdHRyaWJ1dGUgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuaAppbmRleCA2OWIzODU1ZDYzMzI0MDIxOTRkZTg4YTU2MTU2NmFlYjk4ZmM4MWVhLi5l
NGZhNjgzYWU1Zjk3NDQ5YTI3ZDI2ZDMwNGVmNTc5MTNhZDU5MDBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC0xMjgsMTAgKzEyOCwxNyBAQCBwcml2YXRlOgog
CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJ
bXBsPFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdVUklSZWZl
cmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclBy
b3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5
JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlP
d25lclJlZ2lzdHJ5PFNWR1RleHRQYXRoRWxlbWVudCwgU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBT
VkdVUklSZWZlcmVuY2U+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwor
ICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApAQCAtMTQ3LDYgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlIG1fc3RhcnRPZmZzZXQgeyBMZW5ndGhNb2RlT3RoZXIgfTsKICAgICBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uQXR0cmlidXRlPFNWR1RleHRQYXRoTWV0aG9kVHlwZT4gbV9tZXRob2QgeyBTVkdU
ZXh0UGF0aE1ldGhvZEFsaWduIH07CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0
ZTxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPiBtX3NwYWNpbmcgeyBTVkdUZXh0UGF0aFNwYWNpbmdF
eGFjdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmgKaW5kZXggMWIxYjgxYmIyODliMTQzMjUxOTIxYTc1ZmE0YzgyMzZlYmVjMjNhMS4uM2YyOGRm
ZGQ3YWU5OTlkZjMwNWFjYzI5MzdhNmVlNDJkMzQxYmNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCkBAIC0zNCw2ICszNCw4IEBAIHB1Ymxp
YzoKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5SW1wbDxTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdUZXh0Q29udGVudEVsZW1lbnQ+
OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0
cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVS
ZWdpc3RyeSgpOyB9CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ+OwogCiAgICAgY29uc3QgU1ZHTGVuZ3RoTGlzdFZhbHVlcyYgeCgpIGNvbnN0IHsg
cmV0dXJuIG1feC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIGNv
bnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMmIHkoKSBjb25zdCB7IHJldHVybiBtX3kuY3VycmVudFZh
bHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KQEAgLTU4LDExICs2MCwxNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
JikgZmluYWw7CiAKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5
OyB9Ci0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLSAgICBzdGF0aWMg
Ym9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7IH0KKworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0
cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAg
IHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94
eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aExpc3RB
dHRyaWJ1dGUgbV94OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZSBtX3k7CiAg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QXR0cmlidXRlIG1fZHg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VVJJUmVmZXJlbmNlLmgKaW5kZXggNjYwYzI2MjYzMDc0MmE5Y2EyOGZlYmJjN2RhYWE3ZTgxZTJh
NWVkOS4uMzE3MjAzNmZlMzQzMDMxMTliNWJmM2QwYjA4ZGQxNzA0MTdmMDAxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDgsIDIwMDkgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZFN0cmluZy5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDYgKzY3LDggQEAgcHVibGljOgogICAgIHVz
aW5nIEF0dHJpYnV0ZVJlZ2lzdHJ5ID0gU1ZHQXR0cmlidXRlUmVnaXN0cnk8U1ZHVVJJUmVmZXJl
bmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7
CiAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
PFNWR1VSSVJlZmVyZW5jZT47CisKICAgICBjb25zdCBTdHJpbmcmIGhyZWYoKSBjb25zdDsKICAg
ICBSZWZQdHI8U1ZHQW5pbWF0ZWRTdHJpbmc+IGhyZWZBbmltYXRlZCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuaAppbmRleCAzMWUwYzA5ZmI4YzVmZjQ5OWE5OGRlMDQzZWIwOWZlZGE0
NzZhMzg4Li5kNmVkYWZlYzdkYTY3OWZlNTFlZGExYjE3MWQ5NDE2YTkxODAxNTBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQu
aCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNp
bmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKQEAgLTY3LDEwICs2NiwxNyBAQCBwcml2YXRl
OgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJv
eHlJbXBsPFNWR1VzZUVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3du
ZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkg
eyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29u
c3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVy
dHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdVc2VFbGVtZW50LCBTVkdH
cmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNWR1VSSVJlZmVy
ZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBA
IC0xMDEsNiArMTA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVEZXBlbmRlbnRT
aGFkb3dUcmVlcygpOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVy
UHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhN
b2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhN
b2RlSGVpZ2h0IH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExl
bmd0aE1vZGVXaWR0aCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaAppbmRleCBiZjkwNjE3OTg1MzBlYTUy
YmQ0NmNhNzg4NDExYjI1MTVlYmQ4OGE2Li5jNmUxMDFkZDJjNTZkYjdmZjhlZTRmY2Y4ZmNkZWMx
YjM0YmQxYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1
ZGUgIlNWR01hcmtlclR5cGVzLmgiCiAjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdFZhbHVlcy5oIgog
I2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFs
dWVzLmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVz
LmgiCkBAIC00NCwxOCArNDMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBTVkdW
YWx1ZVZhcmlhbnQgPSBWYXJpYW50PAogICAgIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNp
Z25lZD4qLAotICAgIGJvb2wqLAogICAgIENvbG9yKiwKICAgICB1bnNpZ25lZCosCi0gICAgaW50
KiwKLSAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+KiwKICAgICBTVkdMZW5ndGhWYWx1ZSosCiAgICAg
U1ZHTGVuZ3RoTGlzdFZhbHVlcyosCiAgICAgZmxvYXQqLAogICAgIFNWR051bWJlckxpc3RWYWx1
ZXMqLAogICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+KiwKICAgICBTVkdQYXRoQnl0ZVN0cmVh
bSosCi0gICAgU1ZHUG9pbnRMaXN0VmFsdWVzKiwKICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUqLAogICAgIEZsb2F0UmVjdCosCiAgICAgU3RyaW5nKiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuY3BwCmluZGV4IDUzYmY0YTM0ZmYxN2UwZDYwODY3MTg1ZWViZTVlOTE4NTE2
Y2U1YjcuLjMzOTZjNmU5ODIzNmI2NGU4Njk1ZmYwNDE5ZTgwMjY5NTc3YjQ3M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDkgKzM0LDEzIEBAIGlubGlu
ZSBTVkdWaWV3RWxlbWVudDo6U1ZHVmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmIGRvCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCh0aGlzKQogICAgICwgU1ZHRml0VG9W
aWV3Qm94KHRoaXMpCi0gICAgLCBtX3ZpZXdUYXJnZXQoU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRy
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjp2aWV3VGFnKSk7CisgICAgCisg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8
U1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyLCAmU1ZHVmlld0VsZW1lbnQ6Om1fdmlld1RhcmdldD4o
KTsKKyAgICB9KTsKIH0KIAogUmVmPFNWR1ZpZXdFbGVtZW50PiBTVkdWaWV3RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAg
LTQ0LDE1ICs0OCwxMiBAQCBSZWY8U1ZHVmlld0VsZW1lbnQ+IFNWR1ZpZXdFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNWR1ZpZXdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZjxT
VkdTdHJpbmdMaXN0PiBTVkdWaWV3RWxlbWVudDo6dmlld1RhcmdldCgpCi17Ci0gICAgcmV0dXJu
IFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZSgqdGhpcywgbV92aWV3VGFyZ2V0KTsKLX0KLQogdm9pZCBT
VkdWaWV3RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
dmlld1RhcmdldEF0dHIpCi0gICAgICAgIG1fdmlld1RhcmdldC5yZXNldCh2YWx1ZSk7CisgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKSB7CisgICAgICAgIG1fdmlld1Rh
cmdldC0+cmVzZXQodmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgU1ZHRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1ZpZXdFbGVtZW50LmgKaW5kZXggYTU3NzMxMDRkY2EzNDU4YjE3ZDBmYTEzNTU5MjE1ODZlZDJh
NDY2NS4uZjNmNzk1ZDMxOWU2ZDk4YWFiZmQ2MDBmYTJjMDBiNTMxMWFhNDYyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwxMiArMjQsMTEgQEAKICNpbmNsdWRl
ICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5o
IgogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3Qu
aCIKICNpbmNsdWRlICJTVkdab29tQW5kUGFuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU1ZHU3RyaW5nTGlzdDsKLQogY2xhc3MgU1ZHVmlld0VsZW1lbnQgZmluYWwgOiBwdWJs
aWMgU1ZHRWxlbWVudCwgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIHB1Ymxp
YyBTVkdGaXRUb1ZpZXdCb3gsIHB1YmxpYyBTVkdab29tQW5kUGFuIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFNWR1ZpZXdFbGVtZW50KTsKIHB1YmxpYzoKQEAgLTM4LDIwICszNywyNSBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgU1ZHRWxlbWVudDo6cmVmOwogICAgIHVzaW5nIFNWR0VsZW1l
bnQ6OmRlcmVmOwogCi0gICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHZpZXdUYXJnZXQoKTsKKyAgICBS
ZWY8U1ZHU3RyaW5nTGlzdD4gdmlld1RhcmdldCgpIHsgcmV0dXJuIG1fdmlld1RhcmdldC5jb3B5
UmVmKCk7IH0KIAogcHJpdmF0ZToKICAgICBTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1p
c3NpbmcuCi0gICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHlJbXBsPFNWR1ZpZXdFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3gsIFNWR1pvb21BbmRQYW4+OworICAgIHVzaW5nIEF0
dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdWaWV3RWxl
bWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9W
aWV3Qm94PjsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R1ZpZXdFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBT
VkdGaXRUb1ZpZXdCb3g+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIGZpbmFsOwogCiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKLSAgICBTVkdTdHJpbmdMaXN0VmFs
dWVzIG1fdmlld1RhcmdldDsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNWR1N0
cmluZ0xpc3Q6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVmlld1NwZWMuaAppbmRleCBiNmZkN2JjNDVjNGI5ZjdlY2U0NmIwYWVmNDU4
MWM4YTNlNGU2MGJjLi42NmFiMjVhN2Y3YjdiOGQxNzYyNzQxOTk1OTRlNmQ0ZTAxNGZiZjVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTU0LDEyICs1NCwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNWR1Zp
ZXdTcGVjKFNWR0VsZW1lbnQmKTsKIAotICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBT
VkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdWaWV3U3BlYywgU1ZHRml0VG9WaWV3Qm94LCBT
Vkdab29tQW5kUGFuPjsKKyAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmli
dXRlT3duZXJQcm94eUltcGw8U1ZHVmlld1NwZWMsIFNWR0ZpdFRvVmlld0JveD47CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAKICAgICBzdGF0aWMgQXR0cmlidXRlT3du
ZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkg
eyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lKTsgfQogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdWaWV3U3BlYywgU1ZHRml0VG9WaWV3Qm94PjsKKwogICAgIFdlYWtQdHI8U1ZH
RWxlbWVudD4gbV9jb250ZXh0RWxlbWVudDsKICAgICBTdHJpbmcgbV92aWV3VGFyZ2V0U3RyaW5n
OwogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCmluZGV4IGVmYWRkNGIyMjUxNDExNjA0NjM3MGRkOWY5
ZjFiMTNmMDgxOWEzY2QuLjE0ZDhmY2I3N2VhNTgwMWQ2NTEwOWY0NTNkYTI1MDM2MjMxMTI3NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwzMCAr
MjQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdab29tQW5kUGFuOjpTVkdab29t
QW5kUGFuKCkKLXsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdab29t
QW5kUGFuOjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0
cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp6b29tQW5k
UGFuQXR0ciwgJlNWR1pvb21BbmRQYW46Om1fem9vbUFuZFBhbj4oKTsKLX0KLQogYm9vbCBTVkda
b29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oY29uc3QgVUNoYXIqJiBzdGFydCwgY29uc3QgVUNo
YXIqIGVuZCkKIHsKICAgICBzdGF0aWMgY29uc3QgVUNoYXIgZGlzYWJsZVtdID0geyAnZCcsICdp
JywgJ3MnLCAnYScsICdiJywgJ2wnLCAnZScgfTsKICAgICBpZiAoc2tpcFN0cmluZyhzdGFydCwg
ZW5kLCBkaXNhYmxlLCBXVEZfQVJSQVlfTEVOR1RIKGRpc2FibGUpKSkgewotICAgICAgICBtX3pv
b21BbmRQYW4uc2V0VmFsdWUoU1ZHWm9vbUFuZFBhbkRpc2FibGUpOworICAgICAgICBtX3pvb21B
bmRQYW4gPSBTVkdab29tQW5kUGFuRGlzYWJsZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCiAgICAgc3RhdGljIGNvbnN0IFVDaGFyIG1hZ25pZnlbXSA9IHsgJ20nLCAnYScsICdnJywg
J24nLCAnaScsICdmJywgJ3knIH07CiAgICAgaWYgKHNraXBTdHJpbmcoc3RhcnQsIGVuZCwgbWFn
bmlmeSwgV1RGX0FSUkFZX0xFTkdUSChtYWduaWZ5KSkpIHsKLSAgICAgICAgbV96b29tQW5kUGFu
LnNldFZhbHVlKFNWR1pvb21BbmRQYW5NYWduaWZ5KTsKKyAgICAgICAgbV96b29tQW5kUGFuID0g
U1ZHWm9vbUFuZFBhbk1hZ25pZnk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
NTgsNyArNDUsNyBAQCB2b2lkIFNWR1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0bwogewogICAgIGlmIChhdHRyaWJ1
dGVOYW1lICE9IFNWR05hbWVzOjp6b29tQW5kUGFuQXR0cikKICAgICAgICAgcmV0dXJuOwotICAg
IG1fem9vbUFuZFBhbi5zZXRWYWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdab29tQW5kUGFuVHlw
ZT46OmZyb21TdHJpbmcodmFsdWUpKTsKKyAgICBtX3pvb21BbmRQYW4gPSBTVkdQcm9wZXJ0eVRy
YWl0czxTVkdab29tQW5kUGFuVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1pvb21BbmRQYW4uaAppbmRleCAzNWQ4ODI4ZWM1N2M0ZGNiYzBhNWI3NjgwZTQz
ZGNiZWEyZDZhODE0Li4zOTJmNDNlZmI3YzhhOWEyMTY3MjJmODQxNjQzMjcxNGY3NzcyYWU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNywyNiArMzcsMjAg
QEAgcHVibGljOgogICAgICAgICBTVkdfWk9PTUFORFBBTl9NQUdOSUZZID0gU1ZHWm9vbUFuZFBh
bk1hZ25pZnkKICAgICB9OwogCi0gICAgU1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbigpIGNv
bnN0IHsgcmV0dXJuIG1fem9vbUFuZFBhbi52YWx1ZSgpOyB9Ci0gICAgdm9pZCBzZXRab29tQW5k
UGFuKFNWR1pvb21BbmRQYW5UeXBlIHpvb21BbmRQYW4pIHsgbV96b29tQW5kUGFuLnNldFZhbHVl
KHpvb21BbmRQYW4pOyB9CisgICAgU1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbigpIGNvbnN0
IHsgcmV0dXJuIG1fem9vbUFuZFBhbjsgfQorICAgIHZvaWQgc2V0Wm9vbUFuZFBhbihTVkdab29t
QW5kUGFuVHlwZSB6b29tQW5kUGFuKSB7IG1fem9vbUFuZFBhbiA9IHpvb21BbmRQYW47IH0KICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRab29tQW5kUGFuKHVuc2lnbmVkKSB7IHJldHVybiBFeGNl
cHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OyB9Ci0gICAgdm9pZCByZXNldCgp
IHsgbV96b29tQW5kUGFuLnNldFZhbHVlKFNWR1pvb21BbmRQYW5NYWduaWZ5KTsgfQotCi0gICAg
dXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNW
R1pvb21BbmRQYW4+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVS
ZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9CisgICAgdm9pZCByZXNldCgpIHsgbV96b29tQW5kUGFu
ID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHWm9vbUFuZFBhblR5cGU+Ojppbml0aWFsVmFsdWUoKTsg
fQogCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKLSAgICBTVkdab29tQW5kUGFuKCk7CisgICAg
U1ZHWm9vbUFuZFBhbigpID0gZGVmYXVsdDsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmli
dXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIGJv
b2wgcGFyc2Vab29tQW5kUGFuKGNvbnN0IFVDaGFyKiYsIGNvbnN0IFVDaGFyKik7CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KLSAgICBTVkdQcm9w
ZXJ0eUF0dHJpYnV0ZTxTVkdab29tQW5kUGFuVHlwZT4gbV96b29tQW5kUGFuOworICAgIFNWR1pv
b21BbmRQYW5UeXBlIG1fem9vbUFuZFBhbiB7IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1pvb21BbmRQ
YW5UeXBlPjo6aW5pdGlhbFZhbHVlKCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgKaW5kZXggOTA1MTMwZjlhYjQwMmRiM2QwNTNhYWFj
NDU1ZjU4OWI5Y2U2ZDA0Ny4uMDk3M2QyYmRkYjgyZDM1OWZhN2I3N2RjZGNiMjI0NmNmMzA4Yjk5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRM
aXN0UHJvcGVydHlUZWFyT2ZmLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgKQEAgLTIyLDcgKzIyLDYgQEAKIAogI2lu
Y2x1ZGUgIlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdMaXN0UHJv
cGVydHlUZWFyT2ZmLmgiCi0jaW5jbHVkZSAiU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaAppbmRleCBh
MGE0MzEyNDhkNmFkNDI0ZmVlZTE4ODExM2FmNjU4MTFjYWE4NTJhLi5jNDI1NjE5MjAwZGYwNDg1
NjcxYmM3MzE5ZWI1N2Y2ZDNjYThhZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCYXNlVmFsKGNv
bnN0IFByb3BlcnR5VHlwZSYgYmFzZVZhbCkKICAgICB7CiAgICAgICAgIG1fYmFzZVZhbCA9IGJh
c2VWYWw7Ci0gICAgICAgIGNvbW1pdFByb3BlcnR5Q2hhbmdlKCk7CisgICAgICAgIGNvbW1pdFBy
b3BlcnR5Q2hhbmdlKG51bGxwdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
LmNwcAppbmRleCA0N2JjNGNiMTQxOWNiZjFkYTUzZGM4Y2JlMDcyODMwZmMzMDhkOTAyLi5lYzJm
M2E0ODdmODMwZjFjNzI2ZDBmNmJlNGM5NDIyZWM4ZjMwMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcApAQCAtMzUs
NyArMzUsNyBAQCBTVkdQcm9wZXJ0eU93bmVyKiBTVkdBbmltYXRlZFByb3BlcnR5Ojpvd25lcigp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dEVsZW1lbnQ7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTo6Y29tbWl0UHJvcGVydHlDaGFuZ2UoKQordm9pZCBTVkdBbmltYXRlZFByb3Bl
cnR5Ojpjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdQcm9wZXJ0eSopCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHRFbGVtZW50KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKaW5kZXggMDRjOTM0YjFjMTM1ODQy
ZjU4YTkzNjJiMjBjZmI4ZWUwMGRkYzNjZi4uYzZmOTMyZTZkZjY5Y2NlZmFmYzk2NWUzMmNkNTY2
MjBhMWZjMzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHkuaApAQCAtMjYsOCArMjYsMTMgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiU1ZHUHJvcGVydHlPd25lci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFNWR0VsZW1lbnQ7CiAKIGNs
YXNzIFNWR0FuaW1hdGVkUHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdBbmltYXRlZFBy
b3BlcnR5PiwgcHVibGljIFNWR1Byb3BlcnR5T3duZXIgewogcHVibGljOgpAQCAtNjIsNyArNjcs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogICAgIAogICAgIFNWR1Byb3BlcnR5T3duZXIqIG93bmVy
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5nZSgpIG92ZXJy
aWRlOworICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqKSBvdmVycmlk
ZTsKICAgICAKICAgICBTVkdFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50IHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9pc0FuaW1hdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJ
bXBsLmgKaW5kZXggYTgxZmZjM2ZhOTIwNDFjMTNlYzE1OGJhMmFkOWQ5Y2Q2NWQ2NzU0Ni4uYTRl
ZjRiNDc2ODI4Njg1ZjNlZGVmNzRmYTNjMzdlZWFlYjczMTEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlB
Y2Nlc3NvckltcGwuaApAQCAtMzIsNiArMzIsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5B
Y2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJU
eXBlLCBTVkdBbmltYXRlZEJvb2xlYW4+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRCb29sZWFuPjsKKyAgICB1c2lu
ZyBCYXNlOjpwcm9wZXJ0eTsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAg
dGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4gT3duZXJUeXBlOjoqcHJvcGVydHk+Cisg
ICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBz
aW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHQW5pbWF0ZWRC
b29sZWFuQWNjZXNzb3IsIHByb3BlcnR5PigpOyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlx
dWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5cGUmIG93
bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wg
aXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdBbmltYXRl
ZEJvb2xlYW5BbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5KG93bmVyKSwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
IH0KKworICAgIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShPd25lclR5cGUmIG93bmVyLCBT
VkdBdHRyaWJ1dGVBbmltYXRvciYgYW5pbWF0b3IpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAg
ICBzdGF0aWNfY2FzdDxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciY+KGFuaW1hdG9yKS5hcHBl
bmRBbmltYXRlZEluc3RhbmNlKHByb3BlcnR5KG93bmVyKSk7CisgICAgfQorfTsKKyAgICAKIHRl
bXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFjY2Vz
c29yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUs
IFNWR0FuaW1hdGVkSW50ZWdlcj4gewogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3Bl
cnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEludGVnZXI+OwpAQCAtNTMsNSArNzUs
MjcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5p
bWF0b3ImPihhbmltYXRvcikuYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShwcm9wZXJ0eShvd25lcikp
OwogICAgIH0KIH07CisgICAgCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBT
VkdBbmltYXRlZFBvaW50TGlzdEFjY2Vzc29yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJv
cGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkUG9pbnRMaXN0PiB7CisgICAgdXNp
bmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1h
dGVkUG9pbnRMaXN0PjsKKyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKKworcHVibGljOgorICAg
IHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkUG9pbnRMaXN0
PiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFNWR01l
bWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRvbigpIHsgcmV0dXJuIEJhc2U6OnRlbXBs
YXRlIHNpbmdsZXRvbjxTVkdBbmltYXRlZFBvaW50TGlzdEFjY2Vzc29yLCBwcm9wZXJ0eT4oKTsg
fQorCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4g
Y3JlYXRlQW5pbWF0b3IoT3duZXJUeXBlJiBvd25lciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9k
ZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpIGNvbnN0IGZpbmFsCisgICAg
eworICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y3JlYXRlKGF0
dHJpYnV0ZU5hbWUsIHByb3BlcnR5KG93bmVyKSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQW5pbWF0
ZWRJbnN0YW5jZShPd25lclR5cGUmIG93bmVyLCBTVkdBdHRyaWJ1dGVBbmltYXRvciYgYW5pbWF0
b3IpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxTVkdBbmltYXRlZFBv
aW50TGlzdEFuaW1hdG9yJj4oYW5pbWF0b3IpLmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UocHJvcGVy
dHkob3duZXIpKTsKKyAgICB9Cit9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgK
aW5kZXggNWJiMTU3ODk4YTQxMTlmYjIzNGJmMjJkNGQ5ZDI4NzVjOTkyYjEwYS4uNTNhZTRmOTBm
ZjgwOGY2MjU2YTk4YjQ3ZjdjMmExMzY2YjI3NmMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
ckltcGwuaApAQCAtMjcsNyArMjcsOSBAQAogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaCIKKyNpbmNs
dWRlICJTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCIKICNpbmNsdWRlICJT
VkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgiCisjaW5jbHVkZSAiU1ZHQW5p
bWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zNiw2ICszOCwyNCBAQCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLCB0eXBlbmFtZSBBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3IyPgogY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmlt
YXRvcjsKIAorY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkQm9vbGVhbiwgU1ZHQW5pbWF0
aW9uQm9vbGVhbkZ1bmN0aW9uPiAgeworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRCb29sZWFuLCBTVkdBbmltYXRpb25Cb29sZWFuRnVuY3Rp
b24+OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
Qm9vbGVhbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+
KG5ldyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAgICB7
CisgICAgICAgIGJvb2wmIGFuaW1hdGVkID0gbV9hbmltYXRlZC0+YW5pbVZhbCgpOworICAgICAg
ICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdldEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENv
dW50LCBhbmltYXRlZCk7CisgICAgfQorfTsKKwogY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1h
dGVkSW50ZWdlciwgU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uPiB7CiAgICAgZnJpZW5kIGNs
YXNzIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5p
bWF0b3IsIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPjsKICAgICBmcmllbmQgY2xhc3MgU1ZH
QW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yOwpAQCAtNTQsNSArNzQsMjIgQEAgcHJpdmF0ZToK
ICAgICAgICAgbV9mdW5jdGlvbi5wcm9ncmVzcyh0YXJnZXRFbGVtZW50LCBwZXJjZW50YWdlLCBy
ZXBlYXRDb3VudCwgbV9hbmltYXRlZC0+YW5pbVZhbCgpKTsKICAgICB9CiB9OworICAgIAorY2xh
c3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRQb2ludExpc3QsIFNWR0FuaW1hdGlvblBvaW50
TGlzdEZ1bmN0aW9uPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvcjxTVkdBbmltYXRlZFBvaW50TGlzdCwgU1ZHQW5pbWF0aW9uUG9pbnRMaXN0RnVuY3Rpb24+
OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUG9p
bnRMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9y
PihuZXcgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRF
bGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAg
ICB7CisgICAgICAgIG1fZnVuY3Rpb24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2VudGFn
ZSwgcmVwZWF0Q291bnQsIG1fYW5pbWF0ZWQtPmFuaW1WYWwoKSk7CisgICAgfQorfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlJbXBsLmgKaW5kZXggMDEyOTE1NDZiNDQzM2UwZDg4OTczZWVkM2FlNWIzMDdiZDQzMjY4
NC4uZTY2NmVjMjJjM2QzNjYyZjdiNGY5MjEyOGI0YTg2OGNiMGQyNzkwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1w
bC5oCkBAIC0yNiwyMSArMjYsMjQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5o
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkTnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgiCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5Lmgi
CisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaCIKICNpbmNsdWRlICJTVkdBbmlt
YXRlZFJlY3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgorI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIFNWR0FuaW1hdGVkQm9vbGVhbiA9IFNWR0FuaW1h
dGVkUHJpbWl0aXZlUHJvcGVydHk8Ym9vbD47CiB1c2luZyBTVkdBbmltYXRlZEludGVnZXIgPSBT
VkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5PGludD47CiAKK3VzaW5nIFNWR0FuaW1hdGVkUG9p
bnRMaXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q8U1ZHUG9pbnRMaXN0PjsKKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZhYzA4NTkwNjM1ZWZhYmU2NzM4ZDRjNGNmMzM4YjlkZWIz
YzdmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlMaXN0LmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0VHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0
IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHkgeworcHVibGljOgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgUmVmPFNWR0FuaW1hdGVkUHJvcGVydHlM
aXN0PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEFyZ3VtZW50cyYmLi4uIGFy
Z3VtZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVk
UHJvcGVydHlMaXN0KGNvbnRleHRFbGVtZW50LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1
bWVudHMpLi4uKSk7CisgICAgfQorCisgICAgflNWR0FuaW1hdGVkUHJvcGVydHlMaXN0KCkKKyAg
ICB7CisgICAgICAgIG1fYmFzZVZhbC0+ZGV0YWNoKCk7CisgICAgICAgIGlmIChtX2FuaW1WYWwp
CisgICAgICAgICAgICBtX2FuaW1WYWwtPmRldGFjaCgpOworICAgIH0KKworICAgIC8vIFVzZWQg
YnkgdGhlIERPTS4KKyAgICBjb25zdCBSZWY8TGlzdFR5cGU+JiBiYXNlVmFsKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYXNlVmFsOyB9CisKKyAgICAvLyBVc2VkIGJ5IFNWR0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKCkuCisgICAgUmVmPExpc3RUeXBlPiYgYmFzZVZhbCgpIHsgcmV0dXJuIG1fYmFzZVZh
bDsgfQorCisgICAgLy8gVXNlZCBieSB0aGUgRE9NLgorICAgIGNvbnN0IFJlZlB0cjxMaXN0VHlw
ZT4mIGFuaW1WYWwoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFNWR0FuaW1hdGVkUHJvcGVy
dHlMaXN0Kj4odGhpcyktPmVuc3VyZUFuaW1WYWwoKTsgfQorCisgICAgLy8gQ2FsbGVkIGJ5IFNW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvciB0byBwYXNzIHRoZSBhbmltVmFsIHRvIHRoZSBTVkdB
bmltYXRpb25GdW5jdGlvbjo6cHJvZ3Jlc3MuCisgICAgUmVmUHRyPExpc3RUeXBlPiYgYW5pbVZh
bCgpIHsgcmV0dXJuIGVuc3VyZUFuaW1WYWwoKTsgfQorCisgICAgLy8gVXNlZCB3aGVuIGNvbW1p
dHRpbmcgYSBjaGFuZ2UgZnJvbSB0aGUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB0byB0aGUgYXR0cmli
dXRlLgorICAgIFN0cmluZyBiYXNlVmFsQXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2Jhc2VWYWwtPnZhbHVlQXNTdHJpbmcoKTsgfQorCisgICAgLy8gVXNlZCB0byBhcHBseSB0
aGUgU1ZHQW5pbWF0b3IgY2hhbmdlIHRvIHRoZSB0YXJnZXQgZWxlbWVudC4KKyAgICBTdHJpbmcg
YW5pbVZhbEFzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVChp
c0FuaW1hdGluZygpKTsKKyAgICAgICAgcmV0dXJuIG1fYW5pbVZhbC0+dmFsdWVBc1N0cmluZygp
OworICAgIH0KKworICAgIC8vIE1hbmFnaW5nIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgb3du
ZXIuCisgICAgdm9pZCBzZXREaXJ0eSgpIG92ZXJyaWRlIHsgbV9iYXNlVmFsLT5zZXREaXJ0eSgp
OyB9CisgICAgYm9vbCBpc0RpcnR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9iYXNlVmFs
LT5pc0RpcnR5KCk7IH0KKyAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9iYXNlVmFsLT5zeW5jaHJvbml6ZSgpOyB9CisKKyAgICAvLyBVc2VkIGJ5
IFJlbmRlclNWR0VsZW1lbnRzIGFuZCBEdW1wUmVuZGVyVHJlZS4KKyAgICBjb25zdCBMaXN0VHlw
ZSYgY3VycmVudFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVF9JTVBMSUVTKGlz
QW5pbWF0aW5nKCksIG1fYW5pbVZhbCk7CisgICAgICAgIHJldHVybiBpc0FuaW1hdGluZygpID8g
Km1fYW5pbVZhbCA6IG1fYmFzZVZhbC5nZXQoKTsKKyAgICB9CisKKyAgICAvLyBDb250cm9sbGlu
ZyB0aGUgYW5pbWF0aW9uLgorICAgIHZvaWQgc3RhcnRBbmltYXRpb24oKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKG1fYW5pbVZhbCkKKyAgICAgICAgICAgICptX2FuaW1WYWwgPSBtX2Jh
c2VWYWw7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVuc3VyZUFuaW1WYWwoKTsKKyAgICAg
ICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6c3RhcnRBbmltYXRpb24oKTsKKyAgICB9CisKKyAgICB2
b2lkIHN0b3BBbmltYXRpb24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fYW5pbVZh
bCkKKyAgICAgICAgICAgICptX2FuaW1WYWwgPSBtX2Jhc2VWYWw7CisgICAgICAgIFNWR0FuaW1h
dGVkUHJvcGVydHk6OnN0b3BBbmltYXRpb24oKTsKKyAgICB9CisKKyAgICAvLyBDb250cm9sbGlu
ZyB0aGUgaW5zdGFuY2UgYW5pbWF0aW9uLgorICAgIHZvaWQgaW5zdGFuY2VTdGFydEFuaW1hdGlv
bihTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IG1fYW5pbVZhbCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0Jj4oYW5pbWF0
ZWQpLmFuaW1WYWwoKTsKKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6aW5zdGFuY2VTdGFy
dEFuaW1hdGlvbihhbmltYXRlZCk7CisgICAgfQorCisgICAgdm9pZCBpbnN0YW5jZVN0b3BBbmlt
YXRpb24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9hbmltVmFsID0gbnVsbHB0cjsKKyAg
ICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6aW5zdGFuY2VTdG9wQW5pbWF0aW9uKCk7CisgICAg
fQorCitwcm90ZWN0ZWQ6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAg
IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgICAgIDogU1ZHQW5pbWF0ZWRQcm9wZXJ0eShjb250
ZXh0RWxlbWVudCkKKyAgICAgICAgLCBtX2Jhc2VWYWwoTGlzdFR5cGU6OmNyZWF0ZSh0aGlzLCBT
VkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlLCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1
bWVudHMpLi4uKSkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPExpc3RUeXBlPiYgZW5zdXJl
QW5pbVZhbCgpCisgICAgeworICAgICAgICBpZiAoIW1fYW5pbVZhbCkKKyAgICAgICAgICAgIG1f
YW5pbVZhbCA9IExpc3RUeXBlOjpjcmVhdGUobV9iYXNlVmFsLCBTVkdQcm9wZXJ0eUFjY2Vzczo6
UmVhZE9ubHkpOworICAgICAgICByZXR1cm4gbV9hbmltVmFsOworICAgIH0KKworICAgIC8vIENh
bGxlZCB3aGVuIG1fYmFzZVZhbCBjaGFuZ2VzIG9yIGFuIGl0ZW0gaW4gbV9iYXNlVmFsIGNoYW5n
ZXMuCisgICAgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdQcm9wZXJ0eSogcHJvcGVydHkp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9hbmltVmFsKQorICAgICAgICAgICAgKm1f
YW5pbVZhbCA9IG1fYmFzZVZhbDsKKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0
UHJvcGVydHlDaGFuZ2UocHJvcGVydHkpOworICAgIH0KKworICAgIFJlZjxMaXN0VHlwZT4gbV9i
YXNlVmFsOworICAgIG11dGFibGUgUmVmUHRyPExpc3RUeXBlPiBtX2FuaW1WYWw7Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25B
ZGRpdGl2ZUxpc3RGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmNlNTg2MGIxYTcx
MWVlZmVkNTVjMDRmZjc1MmQ0ODA4ODljODgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaApA
QCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdBbmltYXRpb25BZGRpdGl2
ZUZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
TGlzdFR5cGU+CitjbGFzcyBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbiA6IHB1Ymxp
YyBTVkdBbmltYXRpb25BZGRpdGl2ZUZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rp
b24oQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBp
c0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykK
KyAgICAgICAgOiBTVkdBbmltYXRpb25BZGRpdGl2ZUZ1bmN0aW9uKGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKQorICAgICAgICAsIG1fZnJvbShMaXN0
VHlwZTo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKQorICAg
ICAgICAsIG1fdG8oTGlzdFR5cGU6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1
bWVudHMpLi4uKSkKKyAgICAgICAgLCBtX3RvQXRFbmRPZkR1cmF0aW9uKExpc3RUeXBlOjpjcmVh
dGUoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpCisgICAgeworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIGNvbnN0IFJlZjxMaXN0VHlwZT4mIHRvQXRFbmRPZkR1cmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gIW1fdG9BdEVuZE9mRHVyYXRpb24tPmlzRW1wdHkoKSA/IG1fdG9B
dEVuZE9mRHVyYXRpb24gOiBtX3RvOyB9CisKKyAgICBib29sIGFkanVzdEFuaW1hdGVkTGlzdChB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIGZsb2F0IHBlcmNlbnRhZ2UsIFJlZlB0cjxMaXN0
VHlwZT4mIGFuaW1hdGVkLCBib29sIHJlc2l6ZUFuaW1hdGVkSWZOZWVkZWQgPSB0cnVlKQorICAg
IHsKKyAgICAgICAgaWYgKCFtX3RvLT5udW1iZXJPZkl0ZW1zKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKG1fZnJvbS0+bnVtYmVyT2ZJdGVtcygpICYmIG1fZnJv
bS0+c2l6ZSgpICE9IG1fdG8tPnNpemUoKSkgeworICAgICAgICAgICAgaWYgKHBlcmNlbnRhZ2Ug
Pj0gMC41KQorICAgICAgICAgICAgICAgICphbmltYXRlZCA9IG1fdG87CisgICAgICAgICAgICBl
bHNlIGlmIChhbmltYXRpb25Nb2RlICE9IEFuaW1hdGlvbk1vZGU6OlRvKQorICAgICAgICAgICAg
ICAgICphbmltYXRlZCA9IG1fZnJvbTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChyZXNpemVBbmltYXRlZElmTmVlZGVkICYmIGFuaW1hdGVkLT5z
aXplKCkgPCBtX3RvLT5zaXplKCkpCisgICAgICAgICAgICBhbmltYXRlZC0+cmVzaXplKG1fdG8t
PnNpemUoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFJlZjxMaXN0VHlw
ZT4gbV9mcm9tOworICAgIFJlZjxMaXN0VHlwZT4gbV90bzsKKyAgICBSZWY8TGlzdFR5cGU+IG1f
dG9BdEVuZE9mRHVyYXRpb247Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0
aW9uSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3NmEwNDE1NTIwMmE3YjkyMTZkYzI1OTZhN2FlNGM3MGUx
M2FhNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaApAQCAtMCwwICsxLDg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitj
bGFzcyBTVkdFbGVtZW50OworCitjbGFzcyBTVkdBbmltYXRpb25Qb2ludExpc3RGdW5jdGlvbiA6
IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbjxTVkdQb2ludExpc3Q+IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rp
b248U1ZHUG9pbnRMaXN0PjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCisgICAgdm9pZCBzZXRG
cm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3Ry
aW5nJiB0bykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fZnJvbS0+cGFyc2UoZnJvbSk7Cisg
ICAgICAgIG1fdG8tPnBhcnNlKHRvKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFRvQXRFbmRPZkR1
cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvbikgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIG1fdG9BdEVuZE9mRHVyYXRpb24tPnBhcnNlKHRvQXRFbmRPZkR1cmF0aW9u
KTsKKyAgICB9CisKKyAgICB2b2lkIHByb2dyZXNzKFNWR0VsZW1lbnQqLCBmbG9hdCBwZXJjZW50
YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgUmVmUHRyPFNWR1BvaW50TGlzdD4mIGFuaW1hdGVk
KQorICAgIHsKKyAgICAgICAgaWYgKCFhZGp1c3RBbmltYXRlZExpc3QobV9hbmltYXRpb25Nb2Rl
LCBwZXJjZW50YWdlLCBhbmltYXRlZCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Y29uc3QgVmVjdG9yPFJlZjxTVkdQb2ludD4+JiBmcm9tSXRlbXMgPSBtX2FuaW1hdGlvbk1vZGUg
PT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZC0+aXRlbXMoKSA6IG1fZnJvbS0+aXRlbXMo
KTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxTVkdQb2ludD4+JiB0b0l0ZW1zID0gbV90by0+
aXRlbXMoKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxTVkdQb2ludD4+JiB0b0F0RW5kT2ZE
dXJhdGlvbkl0ZW1zID0gdG9BdEVuZE9mRHVyYXRpb24oKS0+aXRlbXMoKTsKKyAgICAgICAgVmVj
dG9yPFJlZjxTVkdQb2ludD4+JiBhbmltYXRlZEl0ZW1zID0gYW5pbWF0ZWQtPml0ZW1zKCk7CisK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvSXRlbXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIEZsb2F0UG9pbnQgZnJvbSA9IGkgPCBmcm9tSXRlbXMuc2l6ZSgpID8gZnJv
bUl0ZW1zW2ldLT52YWx1ZSgpIDogRmxvYXRQb2ludCgpOworICAgICAgICAgICAgRmxvYXRQb2lu
dCB0byA9IHRvSXRlbXNbaV0tPnZhbHVlKCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IHRvQXRF
bmRPZkR1cmF0aW9uID0gaSA8IHRvQXRFbmRPZkR1cmF0aW9uSXRlbXMuc2l6ZSgpID8gdG9BdEVu
ZE9mRHVyYXRpb25JdGVtc1tpXS0+dmFsdWUoKSA6IEZsb2F0UG9pbnQoKTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQmIGFuaW1hdGVkID0gYW5pbWF0ZWRJdGVtc1tpXS0+dmFsdWUoKTsKKworICAg
ICAgICAgICAgZmxvYXQgYW5pbWF0ZWRYID0gQmFzZTo6cHJvZ3Jlc3MocGVyY2VudGFnZSwgcmVw
ZWF0Q291bnQsIGZyb20ueCgpLCB0by54KCksIHRvQXRFbmRPZkR1cmF0aW9uLngoKSwgYW5pbWF0
ZWQueCgpKTsKKyAgICAgICAgICAgIGZsb2F0IGFuaW1hdGVkWSA9IEJhc2U6OnByb2dyZXNzKHBl
cmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tLnkoKSwgdG8ueSgpLCB0b0F0RW5kT2ZEdXJhdGlv
bi55KCksIGFuaW1hdGVkLnkoKSk7CisKKyAgICAgICAgICAgIGFuaW1hdGVkID0geyBhbmltYXRl
ZFgsIGFuaW1hdGVkWSB9OworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQg
YWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
Y29uc3QgVmVjdG9yPFJlZjxTVkdQb2ludD4+JiBmcm9tSXRlbXMgPSBtX2Zyb20tPml0ZW1zKCk7
CisgICAgICAgIFZlY3RvcjxSZWY8U1ZHUG9pbnQ+PiYgdG9JdGVtcyA9IG1fdG8tPml0ZW1zKCk7
CisKKyAgICAgICAgaWYgKCFmcm9tSXRlbXMuc2l6ZSgpIHx8IGZyb21JdGVtcy5zaXplKCkgIT0g
dG9JdGVtcy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGZyb21JdGVtcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHRvSXRl
bXNbaV0tPnNldFZhbHVlKGZyb21JdGVtc1tpXS0+dmFsdWUoKSArIHRvSXRlbXNbaV0tPnZhbHVl
KCkpOworICAgIH0KK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NjcwN2JkNzdmZmYxZTA1NWU4OWUwYmFmYThmZTUxODFlMGQ0YTA2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5j
dGlvbi5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+CitjbGFzcyBTVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uIDogcHVibGljIFNWR0FuaW1hdGlvbkZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICBT
VkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uKEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUsIGJvb2wsIGJvb2wpCisgICAgICAgIDogU1ZHQW5pbWF0aW9uRnVuY3Rpb24oYW5p
bWF0aW9uTW9kZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0Rpc2NyZXRlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlv
blZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEZyb21BbmRCeVZhbHVlcyhTVkdFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHZvaWQgcHJvZ3Jlc3MoU1ZH
RWxlbWVudCosIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLCBWYWx1ZVR5cGUmIGFuaW1hdGVk
KQorICAgIHsKKyAgICAgICAgaWYgKChtX2FuaW1hdGlvbk1vZGUgPT0gQW5pbWF0aW9uTW9kZTo6
RnJvbVRvICYmIHBlcmNlbnRhZ2UgPiAwLjUpIHx8IG1fYW5pbWF0aW9uTW9kZSA9PSBBbmltYXRp
b25Nb2RlOjpUbyB8fCBwZXJjZW50YWdlID09IDEpCisgICAgICAgICAgICBhbmltYXRlZCA9IG1f
dG87CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFuaW1hdGVkID0gbV9mcm9tOworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIFZhbHVlVHlwZSBtX2Zyb207CisgICAgVmFsdWVUeXBlIG1fdG87
Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzYw
OWQ3Y2EyNWQ2NDk1NWIxNmM0ZmRkMjdmMjA3OGNkYzZjNDk3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlv
bkltcGwuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdBbmltYXRp
b25EaXNjcmV0ZUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdBbmltYXRpb25Cb29sZWFuRnVuY3Rpb24g
OiBwdWJsaWMgU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbjxib29sPiB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb248Ym9vbD47CisgICAg
dXNpbmcgQmFzZTo6QmFzZTsKKworICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1l
bnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlCisgICAg
eworICAgICAgICBtX2Zyb20gPSBTVkdQcm9wZXJ0eVRyYWl0czxib29sPjo6ZnJvbVN0cmluZyhm
cm9tKTsKKyAgICAgICAgbV90byA9IFNWR1Byb3BlcnR5VHJhaXRzPGJvb2w+Ojpmcm9tU3RyaW5n
KHRvKTsKKyAgICB9Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaAppbmRleCBiMGIzMzAyMDljZTY1ZTgxMjc2ODVl
MzJhZGZhMDY4ZDA2NmM5MGEyLi4wMTdiMDU2MGM5YWFlZTQzZDg1MTNlMGYzZjgyYmIwYjU0YjZj
MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJp
YnV0ZVJlZ2lzdHJ5LmgKQEAgLTI1LDIwICsyNSwxNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVy
YXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2lu
dExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFJlY3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5o
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0F0
dHJpYnV0ZUFjY2Vzc29yLmgiCiAjaW5jbHVkZSAiU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5o
IgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdab29tQW5k
UGFuVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTUzLDEzICs1MCw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9CiAKLSAgICAvLyBOb24gYW5pbWF0
YWJsZSBhdHRyaWJ1dGVzCi0gICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNv
bnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0
cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KLSAgICB2b2lkIHJlZ2lzdGVyQXR0cmlidXRl
KCkKLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyQXR0cmlidXRlKFNWR1N0cmluZ0xpc3RWYWx1ZXNB
dHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0cmlidXRl
TmFtZSwgYXR0cmlidXRlPigpKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR1pvb21B
bmRQYW5UeXBlQXR0cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KICAgICB2b2lkIHJlZ2lz
dGVyQXR0cmlidXRlKCkKICAgICB7CkBAIC02NywxMiArNTcsNiBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgLy8gQW5pbWF0YWJsZSBhdHRyaWJ1dGVzCi0gICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdBbmlt
YXRlZEJvb2xlYW5BdHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0cmlidXRlPgotICAgIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGUoKQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5p
bWF0ZWRCb29sZWFuQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xl
dG9uPGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8
Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVO
YW1lLCB0eXBlbmFtZSBFbnVtVHlwZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxF
bnVtVHlwZT4gT3duZXJUeXBlOjoqYXR0cmlidXRlPgogICAgIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGUoKQogICAgIHsKQEAgLTExMSwxMiArOTUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJlZ2lzdGVy
QXR0cmlidXRlKFNWR0FuaW1hdGVkT3B0aW9uYWxOdW1iZXJBdHRyaWJ1dGVBY2Nlc3NvcjxPd25l
clR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0cmlidXRlTmFtZSwgaWRlbnRpZmllciwgYXR0
cmlidXRlLCBvcHRpb25hbElkZW50aWZpZXIsIG9wdGlvbmFsQXR0cmlidXRlPigpKTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVk
TmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkUG9pbnRMaXN0QXR0cmlidXRlIE93bmVy
VHlwZTo6KmF0dHJpYnV0ZT4KLSAgICB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlKCkKLSAgICB7Ci0g
ICAgICAgIHJlZ2lzdGVyQXR0cmlidXRlKFNWR0FuaW1hdGVkUG9pbnRMaXN0QXR0cmlidXRlQWNj
ZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPGF0dHJpYnV0ZU5hbWUsIGF0dHJp
YnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVk
PGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0cmlidXRlPgogICAgIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xp
c3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yOTNhNTRmNWQ0ODU0Y2EzZDVlY2M0NjI4MjMzZWI0NGY5NmRmMzQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlz
dC5oCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgSXRlbVR5cGU+CitjbGFzcyBTVkdMaXN0IDogcHVibGljIFNWR1Byb3Bl
cnR5IHsKK3B1YmxpYzoKKyAgICB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2l0ZW1zLnNpemUoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBjbGVhcigpCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlz
dCgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIGNsZWFySXRlbXMoKTsKKyAgICAgICAgY29t
bWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgRXhjZXB0aW9u
T3I8SXRlbVR5cGU+IGdldEl0ZW0odW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBhdXRv
IHJlc3VsdCA9IGNhbkdldEl0ZW0oaW5kZXgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Cisg
ICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIHJl
dHVybiBhdChpbmRleCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRlbVR5cGU+IGluaXRp
YWxpemUoSXRlbVR5cGUmJiBuZXdJdGVtKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBj
YW5BbHRlckxpc3QoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgICAgIC8vIFNw
ZWM6IENsZWFycyBhbGwgZXhpc3RpbmcgY3VycmVudCBpdGVtcyBmcm9tIHRoZSBsaXN0LgorICAg
ICAgICBjbGVhckl0ZW1zKCk7CisKKyAgICAgICAgYXV0byBpdGVtID0gYXBwZW5kKFdURk1vdmUo
bmV3SXRlbSkpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoaXRlbSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRlbVR5cGU+IGluc2VydEl0ZW1C
ZWZvcmUoSXRlbVR5cGUmJiBuZXdJdGVtLCB1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsK
KyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAg
Ly8gU3BlYzogSWYgdGhlIGluZGV4IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBudW1iZXJP
Zkl0ZW1zLAorICAgICAgICAvLyB0aGVuIHRoZSBuZXcgaXRlbSBpcyBhcHBlbmRlZCB0byB0aGUg
ZW5kIG9mIHRoZSBsaXN0LgorICAgICAgICBpZiAoaW5kZXggPiBudW1iZXJPZkl0ZW1zKCkpCisg
ICAgICAgICAgICBpbmRleCA9IG51bWJlck9mSXRlbXMoKTsKKworICAgICAgICBhdXRvIGl0ZW0g
PSBpbnNlcnQoaW5kZXgsIFdURk1vdmUobmV3SXRlbSkpOworICAgICAgICBjb21taXRDaGFuZ2Uo
KTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaXRlbSk7CisgICAgfQorCisgICAgRXhjZXB0aW9u
T3I8SXRlbVR5cGU+IHJlcGxhY2VJdGVtKEl0ZW1UeXBlJiYgbmV3SXRlbSwgdW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhblJlcGxhY2VJdGVtKGluZGV4KTsK
KyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSByZXBsYWNlKGluZGV4LCBXVEZN
b3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGl0ZW0pOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBlPiByZW1vdmVJ
dGVtKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5SZW1v
dmVJdGVtKGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQo
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSByZW1v
dmUoaW5kZXgpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoaXRlbSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRlbVR5cGU+IGFwcGVuZEl0ZW0o
SXRlbVR5cGUmJiBuZXdJdGVtKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRl
ckxpc3QoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSBhcHBlbmQoV1RG
TW92ZShuZXdJdGVtKSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4g
V1RGTW92ZShpdGVtKTsKKyAgICB9CisKKyAgICAvLyBQYXJzZXJzIGFuZCBhbmltYXRvcnMgbmVl
ZCB0byBoYXZlIGEgZGlyZWN0IGFjY2VzcyB0byB0aGUgaXRlbXMuCisgICAgVmVjdG9yPEl0ZW1U
eXBlPiYgaXRlbXMoKSB7IHJldHVybiBtX2l0ZW1zOyB9CisgICAgY29uc3QgVmVjdG9yPEl0ZW1U
eXBlPiYgaXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1zOyB9CisgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX2l0ZW1zLnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1faXRlbXMuaXNFbXB0eSgpOyB9CisKKyAgICB2b2lkIGNsZWFySXRlbXMo
KQorICAgIHsKKyAgICAgICAgZGV0YWNoSXRlbXMoKTsKKyAgICAgICAgbV9pdGVtcy5jbGVhcigp
OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHVzaW5nIFNWR1Byb3BlcnR5OjpTVkdQcm9wZXJ0
eTsKKworICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNhbkFsdGVyTGlzdCgpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoaXNSZWFkT25seSgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNhbkdldEl0ZW0odW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBpZiAoaW5kZXggPj0gbV9pdGVtcy5zaXplKCkpCisgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2FuUmVwbGFjZUl0ZW0odW5zaWduZWQg
aW5kZXgpCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOworICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCkpOworCisgICAgICAgIGlmIChpbmRleCA+PSBtX2l0ZW1zLnNpemUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjxib29sPiBjYW5SZW1vdmVJdGVtKHVu
c2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRlckxpc3Qo
KTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICBpZiAoaW5kZXggPj0gbV9pdGVtcy5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRldGFjaEl0ZW1zKCkg
eyB9CisgICAgdmlydHVhbCBJdGVtVHlwZSBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgSXRlbVR5cGUgaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBJdGVtVHlwZSYmKSA9
IDA7CisgICAgdmlydHVhbCBJdGVtVHlwZSByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCBJdGVtVHlw
ZSYmKSA9IDA7CisgICAgdmlydHVhbCBJdGVtVHlwZSByZW1vdmUodW5zaWduZWQgaW5kZXgpID0g
MDsKKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIGFwcGVuZChJdGVtVHlwZSYmKSA9IDA7CisKKyAgICBW
ZWN0b3I8SXRlbVR5cGU+IG1faXRlbXM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaAppbmRleCBkYjIxMzRkMzY3M2Y5ZjNh
MDQ3ZGNmMjhkNDdkNDJhOGYxNzU2MDM4Li43ZGM0Y2FhOGJjNmNlMGZmYjczZThmZDVmNTEwNTcx
ZDE1M2MyNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdN
ZW1iZXJBY2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01l
bWJlckFjY2Vzc29yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKK2NsYXNzIFNWR1Byb3BlcnR5OwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPd25lclR5cGU+CiBjbGFzcyBTVkdNZW1iZXJBY2Nlc3NvciB7CkBAIC00Miw2
ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZFByb3BlcnR5KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZExlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlcyhj
b25zdCBPd25lclR5cGUmLCBjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBP
cHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYpIGNvbnN0IHsgcmV0
dXJuIFdURjo6bnVsbG9wdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcmltaXRpdmVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcmltaXRpdmVMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2YmZiNjdhZDgwYjBhOTk5MmM4NjYy
NzdiMjIxZmNmYWYzZmM3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZUxpc3QuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJTVkdMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgUHJvcGVydHlUeXBlPgorY2xhc3MgU1ZHUHJpbWl0aXZlTGlzdCA6IHB1YmxpYyBT
VkdMaXN0PFByb3BlcnR5VHlwZT4geworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2UgPSBTVkdM
aXN0PFByb3BlcnR5VHlwZT47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB1c2luZyBCYXNl
OjpzaXplOworICAgIHVzaW5nIEJhc2U6Om1faXRlbXM7CisKKyAgICBQcm9wZXJ0eVR5cGUgYXQo
dW5zaWduZWQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoaW5k
ZXggPCBzaXplKCkpOworICAgICAgICByZXR1cm4gbV9pdGVtcy5hdChpbmRleCk7CisgICAgfQor
CisgICAgUHJvcGVydHlUeXBlIGluc2VydCh1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlUeXBlJiYg
bmV3SXRlbSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8PSBzaXplKCkp
OworICAgICAgICBtX2l0ZW1zLmluc2VydChpbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CisgICAg
ICAgIHJldHVybiBhdChpbmRleCk7CisgICAgfQorCisgICAgUHJvcGVydHlUeXBlIHJlcGxhY2Uo
dW5zaWduZWQgaW5kZXgsIFByb3BlcnR5VHlwZSYmIG5ld0l0ZW0pIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBBU1NFUlQoaW5kZXggPCBzaXplKCkpOworICAgICAgICBtX2l0ZW1zLmF0KGluZGV4
KSA9IFdURk1vdmUobmV3SXRlbSk7CisgICAgICAgIHJldHVybiBhdChpbmRleCk7CisgICAgfQor
CisgICAgUHJvcGVydHlUeXBlIHJlbW92ZSh1bnNpZ25lZCBpbmRleCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmRleCA8IHNpemUoKSk7CisgICAgICAgIFByb3BlcnR5VHlwZSBp
dGVtID0gYXQoaW5kZXgpOworICAgICAgICBtX2l0ZW1zLnJlbW92ZShpbmRleCk7CisgICAgICAg
IHJldHVybiBXVEZNb3ZlKGl0ZW0pOworICAgIH0KKworICAgIFByb3BlcnR5VHlwZSBhcHBlbmQo
UHJvcGVydHlUeXBlJiYgbmV3SXRlbSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1faXRlbXMu
YXBwZW5kKFdURk1vdmUobmV3SXRlbSkpOworICAgICAgICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7
CisgICAgfQorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5LmgKaW5kZXggZmRhMjgwYTdhZGZjMThhMjI5Mjg5YWRmNzQ3ZGJhZDRlNmM4ZDc0YS4uY2Nm
MTI2MWUxYTlmMDM1ODRlMzc1MzMwN2QxMDA3NGU4MGE0ZGRlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCkBAIC0yMCwxMCArMjAsNzggQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eU93bmVyLmgiCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIFNWR1By
b3BlcnR5QWNjZXNzIDogdWludDhfdCB7IFJlYWRXcml0ZSwgUmVhZE9ubHkgfTsKIGVudW0gY2xh
c3MgU1ZHUHJvcGVydHlTdGF0ZSA6IHVpbnQ4X3QgeyBDbGVhbiwgRGlydHkgfTsKIAorY2xhc3Mg
U1ZHUHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQcm9wZXJ0eT4geworcHVibGljOgor
ICAgIHZpcnR1YWwgflNWR1Byb3BlcnR5KCkgPSBkZWZhdWx0OworCisgICAgLy8gTWFuYWdpbmcg
dGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBvd25lci4KKyAgICBib29sIGlzQXR0YWNoZWQoKSBj
b25zdCB7IHJldHVybiBtX293bmVyOyB9CisgICAgdm9pZCBhdHRhY2goU1ZHUHJvcGVydHlPd25l
ciogb3duZXIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcykKKyAgICB7CisgICAgICAgIEFTU0VS
VCghbV9vd25lcik7CisgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6
OkNsZWFuKTsKKyAgICAgICAgbV9vd25lciA9IG93bmVyOworICAgICAgICBtX2FjY2VzcyA9IGFj
Y2VzczsKKyAgICB9CisKKyAgICB2b2lkIGRldGFjaCgpCisgICAgeworICAgICAgICBtX293bmVy
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9hY2Nlc3MgPSBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdy
aXRlOworICAgICAgICBtX3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CisgICAgfQor
CisgICAgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKCFtX293bmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBtX293bmVyLT5hdHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpOworICAgIH0KKworICAg
IHZvaWQgY29tbWl0Q2hhbmdlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9vd25lcikKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9vd25lci0+Y29tbWl0UHJvcGVydHlDaGFuZ2UodGhp
cyk7CisgICAgfQorCisgICAgLy8gRE9NIGFjY2Vzcy4KKyAgICBTVkdQcm9wZXJ0eUFjY2VzcyBh
Y2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2FjY2VzczsgfQorICAgIGJvb2wgaXNSZWFkT25seSgp
IGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzID09IFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFkT25seTsg
fQorCisgICAgLy8gU3luY2hyb25pemluZyB0aGUgU1ZHIGF0dHJpYnV0ZSBhbmQgaXRzIHJlZmxl
Y3Rpb24gaGVyZS4KKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09
IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9CisgICAgdm9pZCBzZXREaXJ0eSgpIHsgbV9zdGF0
ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5j
aHJvbml6ZSgpCisgICAgeworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRl
OjpDbGVhbikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fc3Rh
dGUgPSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbjsKKyAgICAgICAgcmV0dXJuIHZhbHVlQXNTdHJp
bmcoKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIHVzZWQgd2hlbiBjYWxsaW5nIHNldEF0dHJp
YnV0ZSgpLgorICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCB7IHJldHVy
biBlbXB0eVN0cmluZygpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTVkdQcm9wZXJ0eShTVkdQcm9w
ZXJ0eU93bmVyKiBvd25lciA9IG51bGxwdHIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcyA9IFNW
R1Byb3BlcnR5QWNjZXNzOjpSZWFkV3JpdGUpCisgICAgICAgIDogbV9vd25lcihvd25lcikKKyAg
ICAgICAgLCBtX2FjY2VzcyhhY2Nlc3MpCisgICAgeworICAgIH0KKworICAgIFNWR1Byb3BlcnR5
T3duZXIqIG1fb3duZXIgeyBudWxscHRyIH07CisgICAgU1ZHUHJvcGVydHlBY2Nlc3MgbV9hY2Nl
c3MgeyBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlIH07CisgICAgU1ZHUHJvcGVydHlTdGF0
ZSBtX3N0YXRlIHsgU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW4gfTsKK307CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJvcGVydHlBY2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHlBY2Nlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmOGM0Y2RlNmRkMGYzY2FmYmM4ZjI3YjI3
MDI5NzBlMzVmNDg3NjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiU1ZHUG9pbnRlck1lbWJlckFjY2Vzc29yLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5
cGU+CitjbGFzcyBTVkdQcm9wZXJ0eUFjY2Vzc29yIDogcHVibGljIFNWR1BvaW50ZXJNZW1iZXJB
Y2Nlc3NvcjxPd25lclR5cGUsIFByb3BlcnR5VHlwZT4geworICAgIHVzaW5nIEJhc2UgPSBTVkdQ
b2ludGVyTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlLCBQcm9wZXJ0eVR5cGU+OworCitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2U6OnBy
b3BlcnR5OworICAgIHVzaW5nIEJhc2U6OnNpbmdsZXRvbjsKKworICAgIGJvb2wgbWF0Y2hlcyhj
b25zdCBPd25lclR5cGUmIG93bmVyLCBjb25zdCBTVkdQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy0+cHJvcGVydHkob3duZXIpLnB0
cigpID09ICZwcm9wZXJ0eTsKKyAgICB9Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zN2Q2MzE4NDM3NWIyOGJhM2NhOTU5MzVlYmEwNmM2MTE4YzliNWFkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvcklt
cGwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eUFj
Y2Vzc29yLmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KK2NsYXNzIFNWR1N0cmluZ0xpc3RB
Y2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZH
U3RyaW5nTGlzdD4geworICAgIHVzaW5nIEJhc2UgPSBTVkdQcm9wZXJ0eUFjY2Vzc29yPE93bmVy
VHlwZSwgU1ZHU3RyaW5nTGlzdD47CisKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlOjpCYXNlOwor
ICAgIHRlbXBsYXRlPFJlZjxTVkdTdHJpbmdMaXN0PiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAg
ICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNp
bmdsZXRvbigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdTdHJpbmdMaXN0
QWNjZXNzb3IsIHByb3BlcnR5PigpOyB9Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5TGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhMTFhMDVkZmNlYjM4
ZDI4NDcwMjU2YTc5OTk0NjYwYzgwYzZjZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUxpc3QuaApAQCAtMCwwICsxLDEzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiU1ZHTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KK2NsYXNzIFNWR1Byb3BlcnR5TGlzdCA6
IHB1YmxpYyBTVkdMaXN0PFJlZjxQcm9wZXJ0eVR5cGU+PiwgcHVibGljIFNWR1Byb3BlcnR5T3du
ZXIgeworcHVibGljOgorICAgIHVzaW5nIEJhc2VMaXN0ID0gU1ZHTGlzdDxSZWY8UHJvcGVydHlU
eXBlPj47CisgICAgdXNpbmcgQmFzZUxpc3Q6OmlzRW1wdHk7CisgICAgdXNpbmcgQmFzZUxpc3Q6
OnNpemU7CisgICAgdXNpbmcgQmFzZUxpc3Q6OmFwcGVuZDsKKworcHJvdGVjdGVkOgorICAgIHVz
aW5nIFNWR1Byb3BlcnR5T3duZXI6OlNWR1Byb3BlcnR5T3duZXI7CisgICAgdXNpbmcgQmFzZUxp
c3Q6Om1faXRlbXM7CisgICAgdXNpbmcgQmFzZUxpc3Q6Om1fYWNjZXNzOworICAgIHVzaW5nIEJh
c2VMaXN0OjptX293bmVyOworCisgICAgU1ZHUHJvcGVydHlMaXN0KFNWR1Byb3BlcnR5T3duZXIq
IG93bmVyID0gbnVsbHB0ciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzID0gU1ZHUHJvcGVydHlB
Y2Nlc3M6OlJlYWRXcml0ZSkKKyAgICAgICAgOiBCYXNlTGlzdChvd25lciwgYWNjZXNzKQorICAg
IHsKKyAgICB9CisKKyAgICB+U1ZHUHJvcGVydHlMaXN0KCkKKyAgICB7CisgICAgICAgIC8vIERl
dGFjaCB0aGUgaXRlbXMgZnJvbSB0aGUgbGlzdCBiZWZvcmUgaXQgaXMgZGVsZXRlZC4KKyAgICAg
ICAgZGV0YWNoSXRlbXMoKTsKKyAgICB9CisKKyAgICB2b2lkIGRldGFjaEl0ZW1zKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IG1faXRlbXMpCisgICAgICAgICAg
ICBpdGVtLT5kZXRhY2goKTsKKyAgICB9CisKKyAgICBTVkdQcm9wZXJ0eU93bmVyKiBvd25lcigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb3duZXI7IH0KKworICAgIHZvaWQgY29tbWl0UHJv
cGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG93
bmVyKCkpCisgICAgICAgICAgICBvd25lcigpLT5jb21taXRQcm9wZXJ0eUNoYW5nZSh0aGlzKTsK
KyAgICB9CisKKyAgICBSZWY8UHJvcGVydHlUeXBlPiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IHNpemUoKSk7CisgICAgICAg
IHJldHVybiBtX2l0ZW1zLmF0KGluZGV4KS5jb3B5UmVmKCk7CisgICAgfQorCisgICAgUmVmPFBy
b3BlcnR5VHlwZT4gaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBSZWY8UHJvcGVydHlUeXBlPiYmIG5l
d0l0ZW0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPD0gc2l6ZSgpKTsK
KworICAgICAgICAvLyBTcGVjOiBpZiBuZXdJdGVtIGlzIG5vdCBhIGRldGFjaGVkIG9iamVjdCwg
dGhlbiBzZXQgbmV3SXRlbSB0byBiZQorICAgICAgICAvLyBhIGNsb25lIG9iamVjdCBvZiBuZXdJ
dGVtLgorICAgICAgICBpZiAobmV3SXRlbS0+aXNBdHRhY2hlZCgpKQorICAgICAgICAgICAgbmV3
SXRlbSA9IG5ld0l0ZW0tPmNsb25lKCk7CisKKyAgICAgICAgLy8gU3BlYzogQXR0YWNoIG5ld0l0
ZW0gdG8gdGhlIGxpc3Qgb2JqZWN0LgorICAgICAgICBuZXdJdGVtLT5hdHRhY2godGhpcywgbV9h
Y2Nlc3MpOworICAgICAgICBtX2l0ZW1zLmluc2VydChpbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7
CisgICAgICAgIHJldHVybiBhdChpbmRleCk7CisgICAgfQorCisgICAgUmVmPFByb3BlcnR5VHlw
ZT4gcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgUmVmPFByb3BlcnR5VHlwZT4mJiBuZXdJdGVtKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAg
UmVmPFByb3BlcnR5VHlwZT4mIGl0ZW0gPSBtX2l0ZW1zW2luZGV4XTsKKworICAgICAgICAvLyBT
cGVjOiBEZXRhY2ggaXRlbS4KKyAgICAgICAgaXRlbS0+ZGV0YWNoKCk7CisKKyAgICAgICAgLy8g
U3BlYzogaWYgbmV3SXRlbSBpcyBub3QgYSBkZXRhY2hlZCBvYmplY3QsIHRoZW4gc2V0IG5ld0l0
ZW0gdG8gYmUKKyAgICAgICAgLy8gYSBjbG9uZSBvYmplY3Qgb2YgbmV3SXRlbS4KKyAgICAgICAg
aWYgKG5ld0l0ZW0tPmlzQXR0YWNoZWQoKSkKKyAgICAgICAgICAgIGl0ZW0gPSBuZXdJdGVtLT5j
bG9uZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpdGVtID0gV1RGTW92ZShuZXdJdGVt
KTsKKworICAgICAgICAvLyBTcGVjOiBBdHRhY2ggbmV3SXRlbSB0byB0aGUgbGlzdCBvYmplY3Qu
CisgICAgICAgIGl0ZW0tPmF0dGFjaCh0aGlzLCBtX2FjY2Vzcyk7CisgICAgICAgIHJldHVybiBh
dChpbmRleCk7CisgICAgfQorCisgICAgUmVmPFByb3BlcnR5VHlwZT4gcmVtb3ZlKHVuc2lnbmVk
IGluZGV4KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgpKTsK
KyAgICAgICAgUmVmPFByb3BlcnR5VHlwZT4gaXRlbSA9IGF0KGluZGV4KTsKKworICAgICAgICAv
LyBTcGVjOiBEZXRhY2ggaXRlbS4KKyAgICAgICAgaXRlbS0+ZGV0YWNoKCk7CisgICAgICAgIG1f
aXRlbXMucmVtb3ZlKGluZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaXRlbSk7CisgICAg
fQorCisgICAgUmVmPFByb3BlcnR5VHlwZT4gYXBwZW5kKFJlZjxQcm9wZXJ0eVR5cGU+JiYgbmV3
SXRlbSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIFNwZWM6IGlmIG5ld0l0ZW0gaXMgbm90
IGEgZGV0YWNoZWQgb2JqZWN0LCB0aGVuIHNldCBuZXdJdGVtIHRvIGJlCisgICAgICAgIC8vIGEg
Y2xvbmUgb2JqZWN0IG9mIG5ld0l0ZW0uCisgICAgICAgIGlmIChuZXdJdGVtLT5pc0F0dGFjaGVk
KCkpCisgICAgICAgICAgICBuZXdJdGVtID0gbmV3SXRlbS0+Y2xvbmUoKTsKKworICAgICAgICAv
LyBTcGVjOiBBdHRhY2ggbmV3SXRlbSB0byB0aGUgbGlzdCBvYmplY3QuCisgICAgICAgIG5ld0l0
ZW0tPmF0dGFjaCh0aGlzLCBtX2FjY2Vzcyk7CisgICAgICAgIG1faXRlbXMuYXBwZW5kKFdURk1v
dmUobmV3SXRlbSkpOworICAgICAgICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7CisgICAgfQorfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25l
ci5oCmluZGV4IGI0MmE1NzhhMTUxYWYyOTljZTc4NTQ3ZjVmNWEwZGU5YjQ0OWU4MjQuLmM5ODE4
YmU5Zjg0MGM3NjQ1Mzk4ZTYxYjQ4OTM4MTg2MmEzNDY4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyLmgKQEAgLTI2LDYgKzI2LDkgQEAK
ICNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBTVkdFbGVt
ZW50OworY2xhc3MgU1ZHUHJvcGVydHk7CiAKIGNsYXNzIFNWR1Byb3BlcnR5T3duZXIgewogcHVi
bGljOgpAQCAtNDAsMTEgKzQzLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG93bmVyKCkt
PmF0dHJpYnV0ZUNvbnRleHRFbGVtZW50KCk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRQcm9wZXJ0eUNoYW5nZSgpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdFByb3BlcnR5
Q2hhbmdlKFNWR1Byb3BlcnR5KiBwcm9wZXJ0eSkKICAgICB7CiAgICAgICAgIGlmICghb3duZXIo
KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgb3duZXIoKS0+Y29tbWl0UHJvcGVydHlD
aGFuZ2UoKTsKKyAgICAgICAgb3duZXIoKS0+Y29tbWl0UHJvcGVydHlDaGFuZ2UocHJvcGVydHkp
OwogICAgIH0KICAgICAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmgKaW5kZXggZWY1NDZmZmZj
NTIwZDMwNGNiZTI1YTU5ZTkxZTQ4MDRhMTIxNDJmZC4uZDQ1ZDExZTc0MDRhZmZmYTY2MzI0Njc2
OGViODUyOWE1NjFlMTc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaCIKICNpbmNsdWRlICJT
VkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oIgorI2luY2x1ZGUgIlNWR1Byb3Bl
cnR5QWNjZXNzb3JJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTQyLDYgKzQzLDE4IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1
YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHU3RyaW5nTGlzdD4gT3duZXJUeXBl
OjoqcHJvcGVydHk+CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAgewor
ICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR1N0cmluZ0xpc3RBY2Nl
c3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWRO
YW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4gT3duZXJUeXBlOjoq
cHJvcGVydHk+CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAgeworICAg
ICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkQm9vbGVhbkFj
Y2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7CisgICAg
fQorCiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmll
ZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBPd25lclR5cGU6
Oipwcm9wZXJ0eT4KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3BlcnR5KCkKICAgICB7CkBA
IC01Myw2ICs2NiwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWdpc3RlclByb3BlcnR5
KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBY2Nlc3NvcjxPd25lclR5cGU+
Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHkxLCBwcm9wZXJ0eTI+KCkpOwogICAgIH0KKwor
ICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1l
PiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUG9pbnRMaXN0PiBPd25lclR5cGU6Oipw
cm9wZXJ0eT4KKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3BlcnR5KCkKKyAgICB7CisgICAg
ICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWRQb2ludExpc3RB
Y2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAg
IH0KKwogICAgIC8vIEVudW1lcmF0ZSBhbGwgdGhlIFNWR01lbWJlckFjY2Vzc29ycyByZWN1cnNp
dmVseS4gVGhlIGZ1bmN0b3Igd2lsbCBiZSBjYWxsZWQgYW5kIHdpbGwKICAgICAvLyBiZSBnaXZl
biB0aGUgcGFpcjxRdWFsaWZpZWROYW1lLCBTVkdNZW1iZXJBY2Nlc3Nvcj4gdGlsbCB0aGUgZnVu
Y3RvciByZXR1cm5zIGZhbHNlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CkBAIC03
MSw2ICs5MSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmaW5kQWNjZXNzb3IoYXR0cmli
dXRlTmFtZSk7CiAgICAgfQogCisgICAgUXVhbGlmaWVkTmFtZSBwcm9wZXJ0eUF0dHJpYnV0ZU5h
bWUoY29uc3QgU1ZHUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lID0gbnVsbFFOYW1lKCk7CisgICAgICAg
IGVudW1lcmF0ZVJlY3Vyc2l2ZWx5KFsmXShjb25zdCBhdXRvJiBlbnRyeSkgLT4gYm9vbCB7Cisg
ICAgICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLT5tYXRjaGVzKG1fb3duZXIsIHByb3BlcnR5KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWUg
PSBlbnRyeS5rZXk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0pOworICAg
ICAgICByZXR1cm4gYXR0cmlidXRlTmFtZTsKKyAgICB9CisKICAgICBRdWFsaWZpZWROYW1lIGFu
aW1hdGVkUHJvcGVydHlBdHRyaWJ1dGVOYW1lKGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHkmIGFu
aW1hdGVkUHJvcGVydHkpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBRdWFsaWZpZWRO
YW1lIGF0dHJpYnV0ZU5hbWUgPSBudWxsUU5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaAppbmRleCA3YzI4ZmQ3YmQ4MWU0
YTEwYmI1NzQzZDE5MzY1NDc3ODgxMWUxYTYyLi41M2EwMzQ1NWZhZGU1MmFjNmNlZjlmNDI1YTNk
OWUxMDhiYTdjZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJvcGVydHlSZWdpc3RyeS5oCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5TVkdQcm9wZXJ0eVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lk
IGRldGFjaEFsbFByb3BlcnRpZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRdWFsaWZpZWRO
YW1lIHByb3BlcnR5QXR0cmlidXRlTmFtZShjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFF1YWxpZmllZE5hbWUgYW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZU5hbWUo
Y29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlv
bmFsPFN0cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgU3RyaW5nPiBzeW5jaHJvbml6ZUFs
bEF0dHJpYnV0ZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Njg3NGRjYTAxMTY4YzJlYzRjNDcwYTJkNzM3MGEyNmZi
MjJjYzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5LmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPiAKLWNsYXNzIFNWR1N0YXRp
Y0xpc3RQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlw
ZT4gewotcHVibGljOgotICAgIHVzaW5nIFNlbGYgPSBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFy
T2ZmPFByb3BlcnR5VHlwZT47Ci0gICAgdXNpbmcgQmFzZSA9IFNWR0xpc3RQcm9wZXJ0eTxQcm9w
ZXJ0eVR5cGU+OwotCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gdHlwZW5hbWUgU1ZHUHJvcGVy
dHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1UeXBlOwotICAgIHVzaW5nIExpc3RJdGVt
VGVhck9mZiA9IHR5cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46Okxpc3RJ
dGVtVGVhck9mZjsKLQotICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsKLSAgICB1c2luZyBCYXNlOjpt
X3ZhbHVlczsKLQotICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKFNWR0VsZW1lbnQmIGNvbnRl
eHRFbGVtZW50LCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNlbGYoY29udGV4dEVsZW1lbnQsIHZhbHVlcykpOwotICAgIH0KLQotICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpj
bGVhclZhbHVlcygpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPExpc3RJdGVtVHlwZT4gaW5p
dGlhbGl6ZShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0pCi0gICAgewotICAgICAgICByZXR1
cm4gQmFzZTo6aW5pdGlhbGl6ZVZhbHVlcyhuZXdJdGVtKTsKLSAgICB9Ci0KLSAgICBFeGNlcHRp
b25PcjxMaXN0SXRlbVR5cGU+IGdldEl0ZW0odW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAg
ICByZXR1cm4gQmFzZTo6Z2V0SXRlbVZhbHVlcyhpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0
aW9uT3I8TGlzdEl0ZW1UeXBlPiBpbnNlcnRJdGVtQmVmb3JlKGNvbnN0IExpc3RJdGVtVHlwZSYg
bmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6aW5z
ZXJ0SXRlbUJlZm9yZVZhbHVlcyhuZXdJdGVtLCBpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0
aW9uT3I8TGlzdEl0ZW1UeXBlPiByZXBsYWNlSXRlbShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0
ZW0sIHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OnJlcGxhY2VJ
dGVtVmFsdWVzKG5ld0l0ZW0sIGluZGV4KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxMaXN0
SXRlbVR5cGU+IHJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1
cm4gQmFzZTo6cmVtb3ZlSXRlbVZhbHVlcyhpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9u
T3I8TGlzdEl0ZW1UeXBlPiBhcHBlbmRJdGVtKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjphcHBlbmRJdGVtVmFsdWVzKG5ld0l0ZW0pOwot
ICAgIH0KLQotcHJvdGVjdGVkOgotICAgIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQotICAgICAgICA6
IEJhc2UoVW5kZWZpbmVkUm9sZSwgdmFsdWVzLCBudWxscHRyKQotICAgICAgICAsIG1fY29udGV4
dEVsZW1lbnQoKmNvbnRleHRFbGVtZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzUmVh
ZE9ubHkoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcm9sZSA9PSBB
bmltVmFsUm9sZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbW1pdENoYW5nZSgpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBBU1NFUlQobV92YWx1ZXMpOwotICAgICAgICBtX3ZhbHVlcy0+Y29tbWl0
Q2hhbmdlKG1fY29udGV4dEVsZW1lbnQpOwotICAgIH0KLQotICAgIGJvb2wgcHJvY2Vzc0luY29t
aW5nTGlzdEl0ZW1WYWx1ZShjb25zdCBMaXN0SXRlbVR5cGUmLCB1bnNpZ25lZCopIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICAvLyBuby1vcCBmb3Igc3RhdGljIGxpc3RzCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVy
KFJlZjxMaXN0SXRlbVRlYXJPZmY+JiwgdW5zaWduZWQqKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIFJlZjxTVkdFbGVtZW50PiBtX2NvbnRleHRFbGVtZW50OwotfTsKLQotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFlMjUyNDNhMWE4ZjRjYjY3N2FiMDZhYTcwYjlhOTc0MDc4OGZjZGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5LmgKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUHJvcGVydHkuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CitjbGFz
cyBTVkdWYWx1ZVByb3BlcnR5IDogcHVibGljIFNWR1Byb3BlcnR5IHsKK3B1YmxpYzoKKyAgICB1
c2luZyBWYWx1ZVR5cGUgPSBQcm9wZXJ0eVR5cGU7CisKKyAgICBzdGF0aWMgUmVmPFNWR1ZhbHVl
UHJvcGVydHk+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
VkdWYWx1ZVByb3BlcnR5KCkpOworICAgIH0KKworICAgIC8vIEdldHRlci9TZXR0ZXIgZm9yIHRo
ZSB2YWx1ZS4KKyAgICBjb25zdCBQcm9wZXJ0eVR5cGUmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQorICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgUHJvcGVydHlUeXBlJiB2YWx1ZSkg
eyBtX3ZhbHVlID0gdmFsdWU7IH0KKworICAgIC8vIFVzZWQgdGhlIFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvciB0byBwYXNzIG1fdmFsdWUgdG8gU1ZHQW5pbWF0aW9uRnVuY3Rpb24uCisgICAg
UHJvcGVydHlUeXBlJiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KKworcHJvdGVjdGVkOgor
ICAgIC8vIENyZWF0ZSBhbiBpbml0aWFsaXplZCBwcm9wZXJ0eSwgZS5nIGNyZWF0aW5nIGFuIGl0
ZW0gdG8gYmUgYXBwZW5kZWQgaW4gYW4gU1ZHTGlzdC4KKyAgICBTVkdWYWx1ZVByb3BlcnR5KGNv
bnN0IFByb3BlcnR5VHlwZSYgdmFsdWUpCisgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICB7
CisgICAgfQorCisgICAgLy8gTmVlZGVkIHdoZW4gdmFsdWUgc2hvdWxkIG5vdCBiZSBjb3BpZWQs
IGUuZy4gU1ZHVHJhbnNmcm9tVmFsdWUuCisgICAgU1ZHVmFsdWVQcm9wZXJ0eShQcm9wZXJ0eVR5
cGUmJiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQorICAgIHsKKyAg
ICB9CisKKyAgICAgICAgLy8gQmFzZSBhbmQgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gRG8gbm90IHVz
ZSAidXNpbmcgU1ZHUHJvcGVydHk6OlNWR1Byb3BlcnR5IiBiZWNhdXNlIG9mIFdpbmRvd3MgYW5k
IEdUSyBwb3J0cy4KKyAgICBTVkdWYWx1ZVByb3BlcnR5KFNWR1Byb3BlcnR5T3duZXIqIG93bmVy
ID0gbnVsbHB0ciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzID0gU1ZHUHJvcGVydHlBY2Nlc3M6
OlJlYWRXcml0ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0eShvd25lciwgYWNjZXNzKQorICAgIHsK
KyAgICB9CisKKyAgICAvLyBDcmVhdGUgYW4gaW5pdGlhbGl6ZWQgYW5kIGF0dGFjaGVkIHByb3Bl
cnR5LgorICAgIFNWR1ZhbHVlUHJvcGVydHkoU1ZHUHJvcGVydHlPd25lciogb3duZXIsIFNWR1By
b3BlcnR5QWNjZXNzIGFjY2VzcywgY29uc3QgUHJvcGVydHlUeXBlJiB2YWx1ZSkKKyAgICAgICAg
OiBTVkdQcm9wZXJ0eShvd25lciwgYWNjZXNzKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisg
ICAgeworICAgIH0KKworICAgIFByb3BlcnR5VHlwZSBtX3ZhbHVlOworfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjA2Y2VkNmE0MWU4Y2I4N2VjZjY2Y2VhM2ZhZTk1YTdlYzljZjUzOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJv
cGVydHlMaXN0LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUHJv
cGVydHlMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
UHJvcGVydHlUeXBlPgorY2xhc3MgU1ZHVmFsdWVQcm9wZXJ0eUxpc3QgOiBwdWJsaWMgU1ZHUHJv
cGVydHlMaXN0PFByb3BlcnR5VHlwZT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBTVkdQ
cm9wZXJ0eUxpc3Q8UHJvcGVydHlUeXBlPjsKKyAgICB1c2luZyBCYXNlOjpjbGVhckl0ZW1zOwor
ICAgIHVzaW5nIEJhc2U6Oml0ZW1zOworICAgIHVzaW5nIEJhc2U6OnNpemU7CisKKyAgICBTVkdW
YWx1ZVByb3BlcnR5TGlzdCYgb3BlcmF0b3I9KGNvbnN0IFNWR1ZhbHVlUHJvcGVydHlMaXN0JiBv
dGhlcikKKyAgICB7CisgICAgICAgIGNsZWFySXRlbXMoKTsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBpdGVtIDogb3RoZXIuaXRlbXMoKSkKKyAgICAgICAgICAgIGFwcGVuZChQcm9wZXJ0eVR5
cGU6OmNyZWF0ZShpdGVtLT52YWx1ZSgpKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisKKyAgICAvLyBUaGlzIGNhc3Rpbmcgb3BlcmF0b3IgcmV0dXJucyBhIFZlY3RvciBvZiB0aGUg
dW5kZXJseWluZyBWYWx1ZVR5cGUsCisgICAgLy8gZm9yIGV4YW1wbGUgVmVjdG9yPGZsb2F0PiBm
cm9tIFNWR051bWJlckxpc3QuCisgICAgb3BlcmF0b3IgVmVjdG9yPHR5cGVuYW1lIFByb3BlcnR5
VHlwZTo6VmFsdWVUeXBlPigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8dHlwZW5hbWUg
UHJvcGVydHlUeXBlOjpWYWx1ZVR5cGU+IHZhbHVlczsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBpdGVtIDogaXRlbXMoKSkKKyAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoaXRlbS0+dmFsdWUo
KSk7CisgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgfQorCisgICAgdm9pZCByZXNpemUoc2l6
ZV90IG5ld1NpemUpCisgICAgeworICAgICAgICAvLyBBZGQgbmV3IGl0ZW1zLgorICAgICAgICB3
aGlsZSAoc2l6ZSgpIDwgbmV3U2l6ZSkKKyAgICAgICAgICAgIGFwcGVuZChQcm9wZXJ0eVR5cGU6
OmNyZWF0ZSgpKTsKKworICAgICAgICAvLyBSZW1vdmUgZXhpc3RpbmcgaXRlbXMuCisgICAgICAg
IHdoaWxlIChzaXplKCkgPiBuZXdTaXplKQorICAgICAgICAgICAgcmVtb3ZlKHNpemUoKSAtIDEp
OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2U6OmFwcGVuZDsKKyAgICB1c2lu
ZyBCYXNlOjpyZW1vdmU7CisKKyAgICAvLyBCYXNlIGFuZCBkZWZhdWx0IGNvbnN0cnVjdG9yLiBE
byBub3QgdXNlICJ1c2luZyBCYXNlOjpCYXNlIiBiZWNhdXNlIG9mIFdpbmRvd3MgYW5kIEdUSyBw
b3J0cy4KKyAgICBTVkdWYWx1ZVByb3BlcnR5TGlzdChTVkdQcm9wZXJ0eU93bmVyKiBvd25lciA9
IG51bGxwdHIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcyA9IFNWR1Byb3BlcnR5QWNjZXNzOjpS
ZWFkV3JpdGUpCisgICAgICAgIDogQmFzZShvd25lciwgYWNjZXNzKQorICAgIHsKKyAgICB9CisK
KyAgICAvLyBVc2VkIGJ5IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0IHdoZW4gY3JlYXRpbmcgaXQg
YW5pbVZhbCBmcm9tIGJhc2VWYWwuCisgICAgU1ZHVmFsdWVQcm9wZXJ0eUxpc3QoY29uc3QgU1ZH
VmFsdWVQcm9wZXJ0eUxpc3QmIG90aGVyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MgPSBTVkdQ
cm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlKQorICAgICAgICA6IEJhc2Uob3RoZXIub3duZXIoKSwg
YWNjZXNzKQorICAgIHsKKyAgICAgICAgLy8gQ2xvbmUgYWxsIGl0ZW1zLgorICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGl0ZW0gOiBvdGhlci5pdGVtcygpKQorICAgICAgICAgICAgYXBwZW5kKFBy
b3BlcnR5VHlwZTo6Y3JlYXRlKGl0ZW0tPnZhbHVlKCkpKTsKKyAgICB9Cit9OworCit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOGNhNDg2NTZiYTRiMDUzNTMyNTIyZDM0ODM3ZmQ1Yzk0YzgzNDkzYy4uZjg5MTlhZWU5OWEw
OTIxMjBjZDE3OTI4MzM0NWY3N2E3OTc1MDBmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5
LTAzLTE4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIHRoZSBTVkcgdGVhciBvZmYgb2JqZWN0cyBmb3IgU1ZHUG9pbnQgYW5kIFNW
R1BvaW50TGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk1OTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdmcvZG9tL1NWR1BvaW50TGlzdC1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN2Zy9kb20vU1ZHUG9pbnRMaXN0LWJhc2ljcy54aHRtbDoKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aXMgcmVxdWlyZWQgYmVjYXVzZSBTVkdQb2ludExpc3Qgd2lsbCBiZSBmb2xsb3dpbmcgdGhlIFNW
RzIKKyAgICAgICAgc3BlY3MgcmVnYXJkaW5nIGFkZGluZyBuZXcgaXRlbXMgdG8gdGhlIGxpc3Qu
IAorCisgICAgICAgIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvU1ZHL3R5cGVzLmh0bWwjVGVy
bUxpc3RJbnRlcmZhY2UuCisKIDIwMTktMDMtMTUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBIQVIgRXh0ZW5zaW9uIGZvciBS
ZXNvdXJjZSBQcmlvcml0eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdQb2lu
dExpc3QtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHUG9pbnRM
aXN0LWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggNmY2ZWZkZDkzOTRjOTFjZGRmNDA1ZTQ5OGQ2
NGU0YWM0MWI4MGMxZS4uZjEyNDc3Zjk4ODAxOGNjOWM1Yjc3YzljYjNmM2JmOGFkMGMzZjhhOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdQb2ludExpc3QtYmFzaWNzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1BvaW50TGlzdC1iYXNpY3MtZXhw
ZWN0ZWQudHh0CkBAIC00NSw2ICs0NSw3IEBAIFBBU1MgcG9seTEucG9pbnRzLmluc2VydEl0ZW1C
ZWZvcmUoJ2FTdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vCiBQQVNT
IHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKHBvbHkxKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgcG9seTEucG9pbnRzLmluc2VydEl0
ZW1CZWZvcmUobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMuCiBQQVNTIGR1bXBQb2ludChwb2x5MS5wb2ludHMuaW5zZXJ0SXRlbUJlZm9yZShwb2x5
MS5wb2ludHMuZ2V0SXRlbSgxKSwgJ2FTdHJpbmcnKSkgaXMgIng9MTAwIHk9MCIKK1BBU1MgZHVt
cFBvaW50KHBvbHkxLnBvaW50cy5yZW1vdmVJdGVtKDIsICdhU3RyaW5nJykpIGlzICJ4PTEwMCB5
PTAiCiBQQVNTIHBvbHkxLnBvaW50cy5udW1iZXJPZkl0ZW1zIGlzIDQKIFBBU1MgZHVtcFBvaW50
KHBvbHkxLnBvaW50cy5nZXRJdGVtKDApKSBpcyAieD0xMDAgeT0wIgogUEFTUyBkdW1wUG9pbnQo
cG9seTEucG9pbnRzLmdldEl0ZW0oMSkpIGlzICJ4PTAgeT0wIgpAQCAtNTIsNiArNTMsNyBAQCBQ
QVNTIGR1bXBQb2ludChwb2x5MS5wb2ludHMuZ2V0SXRlbSgyKSkgaXMgIng9MTAwIHk9MTAwIgog
UEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMykpIGlzICJ4PTAgeT0xMDAiCiBQ
QVNTIHBvbHkxLmdldEF0dHJpYnV0ZSgncG9pbnRzJykuZm9ybWF0UG9pbnRzQXR0cmlidXRlKCkg
aXMgIjEwMCAwIDAgMCAxMDAgMTAwIDAgMTAwIgogUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRz
Lmluc2VydEl0ZW1CZWZvcmUocG9seTEucG9pbnRzLmdldEl0ZW0oMSksIHBvbHkxKSkgaXMgIng9
MCB5PTAiCitQQVNTIGR1bXBQb2ludChwb2x5MS5wb2ludHMucmVtb3ZlSXRlbSgyLCAnYVN0cmlu
ZycpKSBpcyAieD0wIHk9MCIKIFBBU1MgcG9seTEucG9pbnRzLm51bWJlck9mSXRlbXMgaXMgNAog
UEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMCkpIGlzICJ4PTAgeT0wIgogUEFT
UyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMSkpIGlzICJ4PTEwMCB5PTAiCkBAIC01
OSwxMiArNjEsMTQgQEAgUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMikpIGlz
ICJ4PTEwMCB5PTEwMCIKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDMpKSBp
cyAieD0wIHk9MTAwIgogUEFTUyBwb2x5MS5nZXRBdHRyaWJ1dGUoJ3BvaW50cycpLmZvcm1hdFBv
aW50c0F0dHJpYnV0ZSgpIGlzICIwIDAgMTAwIDAgMTAwIDEwMCAwIDEwMCIKIFBBU1MgZHVtcFBv
aW50KHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKHBvbHkxLnBvaW50cy5nZXRJdGVtKDEp
LCBudWxsKSkgaXMgIng9MTAwIHk9MCIKK1BBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5yZW1v
dmVJdGVtKDIsICdhU3RyaW5nJykpIGlzICJ4PTEwMCB5PTAiCiBQQVNTIHBvbHkxLnBvaW50cy5u
dW1iZXJPZkl0ZW1zIGlzIDQKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDAp
KSBpcyAieD0xMDAgeT0wIgogUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMSkp
IGlzICJ4PTAgeT0wIgogUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMikpIGlz
ICJ4PTEwMCB5PTEwMCIKIFBBU1MgcG9seTEuZ2V0QXR0cmlidXRlKCdwb2ludHMnKS5mb3JtYXRQ
b2ludHNBdHRyaWJ1dGUoKSBpcyAiMTAwIDAgMCAwIDEwMCAxMDAgMCAxMDAiCiBQQVNTIGR1bXBQ
b2ludChwb2x5MS5wb2ludHMuaW5zZXJ0SXRlbUJlZm9yZShwb2x5MS5wb2ludHMuZ2V0SXRlbSgx
KSwgMCkpIGlzICJ4PTAgeT0wIgorUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLnJlbW92ZUl0
ZW0oMiwgJ2FTdHJpbmcnKSkgaXMgIng9MCB5PTAiCiBQQVNTIHBvbHkxLnBvaW50cy5udW1iZXJP
Zkl0ZW1zIGlzIDQKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDApKSBpcyAi
eD0wIHk9MCIKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDEpKSBpcyAieD0x
MDAgeT0wIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdQb2ludExpc3QtYmFz
aWNzLnhodG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdQb2ludExpc3QtYmFzaWNzLnhodG1s
CmluZGV4IGEwNjYzOTgzMzE5YzViMDdkYTAwMTRiYzQyNWI1M2VjZjU4NTdjMzMuLjZlZTQyMWNk
NTM1ODYxYTMzMDhhZWM4YThhZTBlY2ZjMTI0OTBhODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N2Zy9kb20vU1ZHUG9pbnRMaXN0LWJhc2ljcy54aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdmcv
ZG9tL1NWR1BvaW50TGlzdC1iYXNpY3MueGh0bWwKQEAgLTc3LDE0ICs3NywxNiBAQAogICAgIHNo
b3VsZFRocm93KCJwb2x5MS5wb2ludHMuaW5zZXJ0SXRlbUJlZm9yZShudWxsKSIpOwogCiAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLmluc2VydEl0ZW1C
ZWZvcmUocG9seTEucG9pbnRzLmdldEl0ZW0oMSksICdhU3RyaW5nJykpIiwgIng9MTAwIHk9MCIp
OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5yZW1v
dmVJdGVtKDIsICdhU3RyaW5nJykpIiwgIng9MTAwIHk9MCIpOwogICAgIHNob3VsZEJlKCJwb2x5
MS5wb2ludHMubnVtYmVyT2ZJdGVtcyIsICI0Iik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMCkpIiwgIng9MTAwIHk9MCIpOwogICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDEp
KSIsICJ4PTAgeT0wIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9s
eTEucG9pbnRzLmdldEl0ZW0oMikpIiwgIng9MTAwIHk9MTAwIik7CiAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMykpIiwgIng9MCB5PTEw
MCIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicG9seTEuZ2V0QXR0cmlidXRlKCdwb2lu
dHMnKS5mb3JtYXRQb2ludHNBdHRyaWJ1dGUoKSIsICIxMDAgMCAwIDAgMTAwIDEwMCAwIDEwMCIp
OwotICAgIAorCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9p
bnRzLmluc2VydEl0ZW1CZWZvcmUocG9seTEucG9pbnRzLmdldEl0ZW0oMSksIHBvbHkxKSkiLCAi
eD0wIHk9MCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBv
aW50cy5yZW1vdmVJdGVtKDIsICdhU3RyaW5nJykpIiwgIng9MCB5PTAiKTsKICAgICBzaG91bGRC
ZSgicG9seTEucG9pbnRzLm51bWJlck9mSXRlbXMiLCAiNCIpOwogICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDApKSIsICJ4PTAgeT0wIik7
CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0
ZW0oMSkpIiwgIng9MTAwIHk9MCIpOwpAQCAtOTMsMTMgKzk1LDE1IEBACiAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJwb2x5MS5nZXRBdHRyaWJ1dGUoJ3BvaW50cycpLmZvcm1hdFBvaW50c0F0
dHJpYnV0ZSgpIiwgIjAgMCAxMDAgMCAxMDAgMTAwIDAgMTAwIik7CiAKICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMuaW5zZXJ0SXRlbUJlZm9yZShwb2x5
MS5wb2ludHMuZ2V0SXRlbSgxKSwgbnVsbCkpIiwgIng9MTAwIHk9MCIpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5yZW1vdmVJdGVtKDIsICdhU3Ry
aW5nJykpIiwgIng9MTAwIHk9MCIpOwogICAgIHNob3VsZEJlKCJwb2x5MS5wb2ludHMubnVtYmVy
T2ZJdGVtcyIsICI0Iik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9s
eTEucG9pbnRzLmdldEl0ZW0oMCkpIiwgIng9MTAwIHk9MCIpOwogICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDEpKSIsICJ4PTAgeT0wIik7
CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0
ZW0oMikpIiwgIng9MTAwIHk9MTAwIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJwb2x5
MS5nZXRBdHRyaWJ1dGUoJ3BvaW50cycpLmZvcm1hdFBvaW50c0F0dHJpYnV0ZSgpIiwgIjEwMCAw
IDAgMCAxMDAgMTAwIDAgMTAwIik7Ci0gICAgCisKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImR1bXBQb2ludChwb2x5MS5wb2ludHMuaW5zZXJ0SXRlbUJlZm9yZShwb2x5MS5wb2ludHMuZ2V0
SXRlbSgxKSwgMCkpIiwgIng9MCB5PTAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1
bXBQb2ludChwb2x5MS5wb2ludHMucmVtb3ZlSXRlbSgyLCAnYVN0cmluZycpKSIsICJ4PTAgeT0w
Iik7CiAgICAgc2hvdWxkQmUoInBvbHkxLnBvaW50cy5udW1iZXJPZkl0ZW1zIiwgIjQiKTsKICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMuZ2V0SXRlbSgw
KSkiLCAieD0wIHk9MCIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFBvaW50KHBv
bHkxLnBvaW50cy5nZXRJdGVtKDEpKSIsICJ4PTEwMCB5PTAiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365050</attachid>
            <date>2019-03-18 13:13:12 -0700</date>
            <delta_ts>2019-03-18 20:56:56 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>SVGPointList.patch</filename>
            <type>text/plain</type>
            <size>100540</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4Y2E0ODY1NmJhNC4uZjg5MTlhZWU5OWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW92ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1BvaW50IGFu
ZCBTVkdQb2ludExpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3ZnL2RvbS9TVkdQb2ludExpc3QtYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzdmcvZG9tL1NWR1BvaW50TGlzdC1iYXNpY3MueGh0bWw6CisgICAgICAgIFRoaXMgY2hh
bmdlIGlzIHJlcXVpcmVkIGJlY2F1c2UgU1ZHUG9pbnRMaXN0IHdpbGwgYmUgZm9sbG93aW5nIHRo
ZSBTVkcyCisgICAgICAgIHNwZWNzIHJlZ2FyZGluZyBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBs
aXN0LiAKKworICAgICAgICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1NWRy90eXBlcy5odG1s
I1Rlcm1MaXN0SW50ZXJmYWNlLgorCiAyMDE5LTAzLTE1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSEFSIEV4dGVuc2lvbiBm
b3IgUmVzb3VyY2UgUHJpb3JpdHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZH
UG9pbnRMaXN0LWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1Bv
aW50TGlzdC1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IDZmNmVmZGQ5Mzk0Li5mMTI0NzdmOTg4
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdQb2ludExpc3QtYmFzaWNzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1BvaW50TGlzdC1iYXNpY3Mt
ZXhwZWN0ZWQudHh0CkBAIC00NSw2ICs0NSw3IEBAIFBBU1MgcG9seTEucG9pbnRzLmluc2VydEl0
ZW1CZWZvcmUoJ2FTdHJpbmcnKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vCiBQ
QVNTIHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKHBvbHkxKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgcG9seTEucG9pbnRzLmluc2Vy
dEl0ZW1CZWZvcmUobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMuCiBQQVNTIGR1bXBQb2ludChwb2x5MS5wb2ludHMuaW5zZXJ0SXRlbUJlZm9yZShw
b2x5MS5wb2ludHMuZ2V0SXRlbSgxKSwgJ2FTdHJpbmcnKSkgaXMgIng9MTAwIHk9MCIKK1BBU1Mg
ZHVtcFBvaW50KHBvbHkxLnBvaW50cy5yZW1vdmVJdGVtKDIsICdhU3RyaW5nJykpIGlzICJ4PTEw
MCB5PTAiCiBQQVNTIHBvbHkxLnBvaW50cy5udW1iZXJPZkl0ZW1zIGlzIDQKIFBBU1MgZHVtcFBv
aW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDApKSBpcyAieD0xMDAgeT0wIgogUEFTUyBkdW1wUG9p
bnQocG9seTEucG9pbnRzLmdldEl0ZW0oMSkpIGlzICJ4PTAgeT0wIgpAQCAtNTIsNiArNTMsNyBA
QCBQQVNTIGR1bXBQb2ludChwb2x5MS5wb2ludHMuZ2V0SXRlbSgyKSkgaXMgIng9MTAwIHk9MTAw
IgogUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMykpIGlzICJ4PTAgeT0xMDAi
CiBQQVNTIHBvbHkxLmdldEF0dHJpYnV0ZSgncG9pbnRzJykuZm9ybWF0UG9pbnRzQXR0cmlidXRl
KCkgaXMgIjEwMCAwIDAgMCAxMDAgMTAwIDAgMTAwIgogUEFTUyBkdW1wUG9pbnQocG9seTEucG9p
bnRzLmluc2VydEl0ZW1CZWZvcmUocG9seTEucG9pbnRzLmdldEl0ZW0oMSksIHBvbHkxKSkgaXMg
Ing9MCB5PTAiCitQQVNTIGR1bXBQb2ludChwb2x5MS5wb2ludHMucmVtb3ZlSXRlbSgyLCAnYVN0
cmluZycpKSBpcyAieD0wIHk9MCIKIFBBU1MgcG9seTEucG9pbnRzLm51bWJlck9mSXRlbXMgaXMg
NAogUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMCkpIGlzICJ4PTAgeT0wIgog
UEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMSkpIGlzICJ4PTEwMCB5PTAiCkBA
IC01OSwxMiArNjEsMTQgQEAgUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMikp
IGlzICJ4PTEwMCB5PTEwMCIKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDMp
KSBpcyAieD0wIHk9MTAwIgogUEFTUyBwb2x5MS5nZXRBdHRyaWJ1dGUoJ3BvaW50cycpLmZvcm1h
dFBvaW50c0F0dHJpYnV0ZSgpIGlzICIwIDAgMTAwIDAgMTAwIDEwMCAwIDEwMCIKIFBBU1MgZHVt
cFBvaW50KHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKHBvbHkxLnBvaW50cy5nZXRJdGVt
KDEpLCBudWxsKSkgaXMgIng9MTAwIHk9MCIKK1BBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5y
ZW1vdmVJdGVtKDIsICdhU3RyaW5nJykpIGlzICJ4PTEwMCB5PTAiCiBQQVNTIHBvbHkxLnBvaW50
cy5udW1iZXJPZkl0ZW1zIGlzIDQKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVt
KDApKSBpcyAieD0xMDAgeT0wIgogUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0o
MSkpIGlzICJ4PTAgeT0wIgogUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMikp
IGlzICJ4PTEwMCB5PTEwMCIKIFBBU1MgcG9seTEuZ2V0QXR0cmlidXRlKCdwb2ludHMnKS5mb3Jt
YXRQb2ludHNBdHRyaWJ1dGUoKSBpcyAiMTAwIDAgMCAwIDEwMCAxMDAgMCAxMDAiCiBQQVNTIGR1
bXBQb2ludChwb2x5MS5wb2ludHMuaW5zZXJ0SXRlbUJlZm9yZShwb2x5MS5wb2ludHMuZ2V0SXRl
bSgxKSwgMCkpIGlzICJ4PTAgeT0wIgorUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLnJlbW92
ZUl0ZW0oMiwgJ2FTdHJpbmcnKSkgaXMgIng9MCB5PTAiCiBQQVNTIHBvbHkxLnBvaW50cy5udW1i
ZXJPZkl0ZW1zIGlzIDQKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDApKSBp
cyAieD0wIHk9MCIKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDEpKSBpcyAi
eD0xMDAgeT0wIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdQb2ludExpc3Qt
YmFzaWNzLnhodG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdQb2ludExpc3QtYmFzaWNzLnho
dG1sCmluZGV4IGEwNjYzOTgzMzE5Li42ZWU0MjFjZDUzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3ZnL2RvbS9TVkdQb2ludExpc3QtYmFzaWNzLnhodG1sCisrKyBiL0xheW91dFRlc3RzL3N2
Zy9kb20vU1ZHUG9pbnRMaXN0LWJhc2ljcy54aHRtbApAQCAtNzcsMTQgKzc3LDE2IEBACiAgICAg
c2hvdWxkVGhyb3coInBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKG51bGwpIik7CiAKICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMuaW5zZXJ0SXRl
bUJlZm9yZShwb2x5MS5wb2ludHMuZ2V0SXRlbSgxKSwgJ2FTdHJpbmcnKSkiLCAieD0xMDAgeT0w
Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLnJl
bW92ZUl0ZW0oMiwgJ2FTdHJpbmcnKSkiLCAieD0xMDAgeT0wIik7CiAgICAgc2hvdWxkQmUoInBv
bHkxLnBvaW50cy5udW1iZXJPZkl0ZW1zIiwgIjQiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMuZ2V0SXRlbSgwKSkiLCAieD0xMDAgeT0wIik7CiAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0o
MSkpIiwgIng9MCB5PTAiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChw
b2x5MS5wb2ludHMuZ2V0SXRlbSgyKSkiLCAieD0xMDAgeT0xMDAiKTsKICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMuZ2V0SXRlbSgzKSkiLCAieD0wIHk9
MTAwIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJwb2x5MS5nZXRBdHRyaWJ1dGUoJ3Bv
aW50cycpLmZvcm1hdFBvaW50c0F0dHJpYnV0ZSgpIiwgIjEwMCAwIDAgMCAxMDAgMTAwIDAgMTAw
Iik7Ci0gICAgCisKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5w
b2ludHMuaW5zZXJ0SXRlbUJlZm9yZShwb2x5MS5wb2ludHMuZ2V0SXRlbSgxKSwgcG9seTEpKSIs
ICJ4PTAgeT0wIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEu
cG9pbnRzLnJlbW92ZUl0ZW0oMiwgJ2FTdHJpbmcnKSkiLCAieD0wIHk9MCIpOwogICAgIHNob3Vs
ZEJlKCJwb2x5MS5wb2ludHMubnVtYmVyT2ZJdGVtcyIsICI0Iik7CiAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMCkpIiwgIng9MCB5PTAi
KTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMuZ2V0
SXRlbSgxKSkiLCAieD0xMDAgeT0wIik7CkBAIC05MywxMyArOTUsMTUgQEAKICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInBvbHkxLmdldEF0dHJpYnV0ZSgncG9pbnRzJykuZm9ybWF0UG9pbnRz
QXR0cmlidXRlKCkiLCAiMCAwIDEwMCAwIDEwMCAxMDAgMCAxMDAiKTsKIAogICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKHBv
bHkxLnBvaW50cy5nZXRJdGVtKDEpLCBudWxsKSkiLCAieD0xMDAgeT0wIik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLnJlbW92ZUl0ZW0oMiwgJ2FT
dHJpbmcnKSkiLCAieD0xMDAgeT0wIik7CiAgICAgc2hvdWxkQmUoInBvbHkxLnBvaW50cy5udW1i
ZXJPZkl0ZW1zIiwgIjQiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChw
b2x5MS5wb2ludHMuZ2V0SXRlbSgwKSkiLCAieD0xMDAgeT0wIik7CiAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0ZW0oMSkpIiwgIng9MCB5PTAi
KTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMuZ2V0
SXRlbSgyKSkiLCAieD0xMDAgeT0xMDAiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInBv
bHkxLmdldEF0dHJpYnV0ZSgncG9pbnRzJykuZm9ybWF0UG9pbnRzQXR0cmlidXRlKCkiLCAiMTAw
IDAgMCAwIDEwMCAxMDAgMCAxMDAiKTsKLSAgICAKKwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKHBvbHkxLnBvaW50cy5n
ZXRJdGVtKDEpLCAwKSkiLCAieD0wIHk9MCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZHVtcFBvaW50KHBvbHkxLnBvaW50cy5yZW1vdmVJdGVtKDIsICdhU3RyaW5nJykpIiwgIng9MCB5
PTAiKTsKICAgICBzaG91bGRCZSgicG9seTEucG9pbnRzLm51bWJlck9mSXRlbXMiLCAiNCIpOwog
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVt
KDApKSIsICJ4PTAgeT0wIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQo
cG9seTEucG9pbnRzLmdldEl0ZW0oMSkpIiwgIng9MTAwIHk9MCIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFh
ZGQ1YzJiYzJhLi5iOTM5MDQ2Nzk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NCBAQAorMjAx
OS0wMy0xOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbW92ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1BvaW50IGFuZCBT
VkdQb2ludExpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NTkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRvIHJlbW92ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1BvaW50LCB0aGVz
ZSBjaGFuZ2VzIGFyZSBuZWVkZWQ6CisKKyAgICAgICAgLS0gU1ZHUHJvcGVydHkgaXMgZGVmaW5l
ZCB0byBiZSB0aGUgYmFzZSBjbGFzcyBmb3IgYWxsIHRoZSBTVkcgdHlwZXMgaW5jbHVkaW5nCisg
ICAgICAgICAgIHRoZSBsaXN0IHR5cGVzLiBJdCBpcyBhbiBhYnN0cmFjdCBjbGFzcyB3aGljaCBk
ZWZpbmVzIHRoZSByZWxhdGlvbnNoaXAKKyAgICAgICAgICAgd2l0aCB0aGUgb3duZXIuIEl0IGFs
c28gZGVmaW5lcyB0aGUgRE9NIGFjY2VzcyByaWdodHMgdG8gdGhpcyBwcm9wZXJ0eS4KKworICAg
ICAgICAtLSBTVkdQcm9wZXJ0eVZhbHVlIGlzIHRoZSBiYXNlIGNsYXNzIG9mIGEgc2luZ2xlIHR5
cGUgcHJvcGVydHksIGkuZS4gdGhlCisgICAgICAgICAgIG5vbmUgbGlzdCB0eXBlcyBsaWtlIFNW
R1BvaW50IGZvciBleGFtcGxlLgorCisgICAgICAgIC0tIFNWR1Byb3BlcnR5TGlzdCBpcyBhIHN1
cGVyY2xhc3Mgb2YgU1ZHTGlzdC4gSXQgZGVmaW5lcyBpdHMgaXRlbXMgdG8gYmUKKyAgICAgICAg
ICAgUmVmQ291bnRlZC4gSXQgaXMgYmFzZSBjbGFzcyBvZiBTVkdWYWx1ZVByb3BlcnR5TGlzdCBh
bmQgaXQgd2lsbCBiZSAKKyAgICAgICAgICAgdGhlIGJhc2UgY2xhc3Mgb2YgU1ZHUGF0aFNlZ0xp
c3QuCisKKyAgICAgICAgLS0gU1ZHVmFsdWVQcm9wZXJ0eUxpc3QgaXMgdGhlIGJhc2UgY2xhc3Mg
b2YgYWxsIHRoZSBsaXN0cyB3aG9zZSBpdGVtcworICAgICAgICAgICBhcmUgYmFja2VkIGJ5IGEg
dmFsdWUgb2JqZWN0cyBsaWtlIFNWR1BvaW50IHdob3NlIHZhbHVlIGlzIEZsb2F0UG9pbnQuCisg
ICAgICAgICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU1ZHUHJvcGVydHlMaXN0IGFuZCBTVkdW
YWx1ZVByb3BlcnR5TGlzdCBpcyB0aGUKKyAgICAgICAgICAgZm9ybWVyIGNhbiBzdG9yZSBhIFJl
ZiBmb3IgYSBiYXNlIGNsYXNzIGxpa2UgU1ZHUGF0aFNlZyB3aGlsZSB0aGUgbGF0ZXIKKyAgICAg
ICAgICAgaGFzIHRvIHN0b3JlIHRoZSBzYW1lIHR5cGUgZm9yIGFsbCB0aGUgaXRlbXMuCisKKyAg
ICAgICAgLS0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGFs
bCB0aGUgYW5pbWF0ZWQgbGlzdHMuCisgICAgICAgICAgIE5vdGUgdGhlIG93bmVyIHJlbGF0aW9u
c2hpcCBvZiB0aGUgYW5pbWF0ZWQgbGlzdCBpcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAx
KSBTVkdFbGVtZW50IG93bnMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QKKyAgICAgICAgICAgMikg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Qgb3ducyBtX2Jhc2VWYWwgd2hvc2UgdHlwZSBpcyBTVkdM
aXN0CisgICAgICAgICAgIDMpIG1fYmFzZVZhbCBvd25zIHRoZSBpdGVtcyB3aG9zZSB0eXBlIGlz
IFNWR1Byb3BlcnR5CisgICAgICAgICAgIFNvIHdoZW4gY2hhbmdpbmcgYW4gaXRlbSwgaXQgY2Fs
bHMgaXRzIG93bmVyIHdoaWNoIGlzIHRoZSBTVkdMaXN0LgorICAgICAgICAgICBTVkdMaXN0IGNh
bGxzIGl0cyBvd25lciB3aGljaCBpcyAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuCisgICAgICAg
ICAgIFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0IGNhbGxzIGl0cyBvd25lciB3aGljaCBTVkdFbGVt
ZW50IHRvIGNvbW1pdAorICAgICAgICAgICB0aGUgY2hhbmdlLiBTbyB3ZSBlbmQgY2FsbGluZyBT
VkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5nZSgpLgorICAgICAgICAgICBMYXRlciBTVkdB
bmltYXRlZFByb3BlcnR5TGlzdDo6c3luY2hyb25pemUoKSB3aGljaCByZXR1cm5zIHRoZSBwcm9w
ZXJ0eQorICAgICAgICAgICB2YWx1ZUFzU3RyaW5nKCkgdG8gdXBkYXRlIHRoZSByZWZsZWN0aW5n
IGF0dHJpYnV0ZS4gCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdQ
YXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbUNpcmNsZUVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6cGF0aEZyb21FbGxpcHNlRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpwYXRoRnJvbUxpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tUGF0
aEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGF0aEZyb21Qb2x5Z29uRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbVBvbHlsaW5lRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpwYXRoRnJvbVJlY3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tR3Jh
cGhpY3NFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmg6Cisg
ICAgICAgIFRoZSBJREwgb2YgU1ZHUG9seUVsZW1lbnQgaW50ZXJmYWNlIHJlcXVpcmVzIHRoZSBm
b2xsb3dpbmcgYXR0cmlidXRlOgorICAgICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1Bv
aW50TGlzdCBwb2ludHM7CisgICAgICAgIEZvciB3aGljaCB3ZSByZXR1cm46CisgICAgICAgICAg
ICBTVkdQb2ludExpc3QmIHBvaW50cygpIHsgcmV0dXJuIG1fcG9pbnRzLT5iYXNlVmFsKCk7IH0K
KyAgICAgICAgQnV0IGZvciBhbGwgdGhlIG90aGVyIHByb3BlcnRpZXMgd2UgcmV0dXJuIHRoZSBj
dXJyZW50VmFsdWUoKS4gU28gdG8gaGF2ZQorICAgICAgICB0aGUgdHdvIGZ1bmN0aW9ucyB3aXRo
IHRoZSBzYW1lIG5hbWUsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgYWRkZWQ6CisgICAgICAg
ICAgICBjb25zdCBTVkdQb2ludExpc3QmIHBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRz
LT5jdXJyZW50VmFsdWUoKTsgfQorICAgICAgICBUaGlzIGRlZmluaXRpb24gcmVxdWlyZXMgY2hh
bmdpbmcgYWxsIGNhbGxlcnMgdG8gYmUgY29uc3QuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZWRUeXBlLmg6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gaGFkIGEgYmFkIGRlc2ln
bi4gSXQgd2FzIGRlc2lnbmVkIHRvIHVzZSB0aGUgaW5kZXggb2YgdGhlCisgICAgICAgIHZhcmlh
bnQgYXMgdGhlIEFuaW1hdGVkUHJvcGVydHlUeXBlLiBCdXQgd2hlbiBzb21lIG9mIHRoZSB0eXBl
cyBhcmUgcmVtb3ZlZAorICAgICAgICBmcm9tIFNWR1ZhbHVlVmFyaWFudCwgdGhpcyBicm9rZSB0
aGluZ3MuIFRoaXMgZml4IGlzIHRlbXBvcmFyeSB0aWxsIHRoZSAKKyAgICAgICAgY2xhc3MgU1ZH
VmFsdWVWYXJpYW50IGlzIHJlbW92ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
VHlwZTo6dHlwZSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorICAgICAgICAq
IHN2Zy9TVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUpOgorICAgICAgICBUaGlzIGlzIGEgYnVnIGluIHIyNDMwMzYuIFRoZSA8c2V0PiB0YWcgYmVs
b25ncyB0aGUgYW5pbWF0aW9uIGVsZW1lbnQgYW5kCisgICAgICAgIG5vdCB0aGUgdGFyZ2V0IGVs
ZW1lbnQuCisKKyAgICAgICAgKiBzdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBvaW50c0xpc3RGcm9tU1ZHRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR1BhcnNlclV0aWxpdGllcy5oOgorICAgICAgICAqIHN2Zy9TVkdQb2ludC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2lu
dDo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OngpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6
OnkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OnNldFkpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUG9pbnQ6Om1hdHJpeFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQb2ludDo6bWF0cml4VHJhbnNmb3JtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BvaW50OjpTVkdQb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1BvaW50LmlkbDoK
KyAgICAgICAgbWF0cml4VHJhbnNmb3JtKCkgc2hvdWxkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24u
CisKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
b2ludExpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludExpc3Q6OnBhcnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50TGlzdDo6U1ZHUG9pbnRMaXN0KTogRGVsZXRl
ZC4KKyAgICAgICAgTW92ZSB0aGUgcGFyc2UoKSBhbmQgdmFsdWVBc1N0cmluZygpIG1ldGhvZHMg
dG8gU1ZHUG9pbnRMaXN0LiBJdCBpcyBub3cKKyAgICAgICAgYSBzdXBlcmNsYXNzIG9mIFNWR1Zh
bHVlUHJvcGVydHlMaXN0LiBJdHMgaXRlbXMgYXJlIG9mIHR5cGUgUmVmPFNWR1BvaW50Pi4KKwor
ICAgICAgICAqIHN2Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHN2Zy9TVkdQb2ludExpc3RWYWx1ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHUG9s
eUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OlNWR1BvbHlF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlD
b3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpyZWdpc3RlckF0
dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBv
aW50cyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YW5pbWF0
ZWRQb2ludHMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBvaW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6cG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bv
bHlFbGVtZW50OjphbmltYXRlZFBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxl
bWVudDo6cG9pbnRMaXN0IGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIHN2Zy9TVkdTVkdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRU
cmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFRyYW5z
bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHU1ZHRWxlbWVudC5pZGw6CisgICAgICAgIERlZmluZSBjdXJyZW50VHJhbnNsYXRl
IHByb3BlcnR5IHRvIGJlIG9mIHR5cGUgUmVmPFNWR1BvaW50Pi4gV2hlbiByZXF1ZXN0aW5nCisg
ICAgICAgIGl0IGp1c3QgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGl0LgorCisgICAgICAgICogc3Zn
L1NWR1N0cmluZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKiBz
dmcvU1ZHVmFsdWUuaDoKKworICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUltcGwuaDoKKyAgICAgICAgRGVmaW5lIHRoZSBhY2Nlc3NvciwgdGhlIGFu
aW1hdG9yIGFuZCB0aGUgYW5pbWF0ZWQgdHlwZSBvZiBTVkdQb2ludExpc3QuCisKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlMaXN0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q6On5TVkdBbmltYXRlZFByb3BlcnR5TGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6YmFzZVZhbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6YmFzZVZh
bCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6YW5pbVZhbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6YW5pbVZh
bCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6Y3VycmVudFZh
bHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlMaXN0OjpT
VkdBbmltYXRlZFByb3BlcnR5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBy
b3BlcnR5TGlzdDo6ZW5zdXJlQW5pbVZhbCk6CisKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uOjpTVkdBbmltYXRpb25BZGRpdGl2
ZUxpc3RGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25BZGRpdGl2ZUxp
c3RGdW5jdGlvbjo6dG9BdEVuZE9mRHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb246OmFkanVzdEFuaW1hdGVkTGlzdCk6Cisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25J
bXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uUG9pbnRMaXN0RnVu
Y3Rpb246OnByb2dyZXNzKToKKyAgICAgICAgRGVmaW5lIHRoZSBhbmltYXRpb24gZnVuY3Rpb24g
Zm9yIGFuaW1hdGluZyBTVkdQb2ludExpc3QuCisKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVSZWdpc3RyeS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNBdHRhY2hlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Byb3BlcnR5OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6
OmNvbnRleHRFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojpj
b21taXRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OmFjY2VzcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNSZWFkT25seSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNEaXJ0eSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQcm9wZXJ0eTo6c2V0RGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJv
cGVydHk6OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojp2YWx1
ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjpTVkdQcm9w
ZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlMaXN0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlMaXN0OjpTVkdQcm9wZXJ0eUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlMaXN0Ojp+U1ZHUHJvcGVydHlMaXN0KToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmg6IFJl
bW92ZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlUHJvcGVydHk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdWYWx1ZVByb3BlcnR5Ojp2YWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdWYWx1ZVByb3BlcnR5OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdW
YWx1ZVByb3BlcnR5Ojp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZVByb3BlcnR5
OjpTVkdWYWx1ZVByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVBy
b3BlcnR5TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZhbHVlUHJvcGVydHlM
aXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVQcm9wZXJ0eUxpc3Q6
Om9wZXJhdG9yIFZlY3Rvcjx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU6OlZhbHVlVHlwZT4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVQcm9wZXJ0eUxpc3Q6OnJlc2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdWYWx1ZVByb3BlcnR5TGlzdDo6U1ZHVmFsdWVQcm9wZXJ0eUxpc3Qp
OgorCiAyMDE5LTAzLTE3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBTVkcgcHJvcGVydHkgdGVhciBvZmYgb2JqZWN0cyBm
b3IgU1ZHU3RyaW5nTGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3MWNmZjFiMTFiMi4uMDcyODZhNjQ4
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjc4LDcgKzIyNzgsNiBAQCBzdmcvU1ZHQW5pbWF0ZWRO
dW1iZXIuY3BwCiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAogc3ZnL1NWR0FuaW1hdGVk
TnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAotc3ZnL1NW
R0FuaW1hdGVkUG9pbnRMaXN0LmNwcAogc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
by5jcHAKIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3Bw
CkBAIC0yMzczLDcgKzIzNzIsNiBAQCBzdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAKIHN2Zy9T
VkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmNwcAogc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3Bw
CiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCi1zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcAog
c3ZnL1NWR1BvbHlFbGVtZW50LmNwcAogc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcAogc3ZnL1NW
R1BvbHlsaW5lRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYmQwYzMwNWFjZS4uMGQ3N2ZjNTFlZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEyMjcsNyArMTIyNyw2IEBACiAJCTQzOUQzMzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmlt
YXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAqLzsg
fTsKIAkJNDNBNjI1RjgxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQTYyNUY2MTNCMzMw
NDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmggKi87IH07CiAJCTQzQjg1RUQ0MThDQkVD
NTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRN
YXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNC
ODVFRDIxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmls
aXR5RWxlbWVudE1hcC5jcHAgKi87IH07Ci0JCTQzQjkzMzY5MTNCMjYxQjEwMDQ1ODRCRiAvKiBT
VkdBbmltYXRlZFBvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDNCOTMzNjcxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRM
aXN0LmggKi87IH07CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0M0MwOTJCQTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICov
OyB9OwogCQk0M0VERDY3RjFCNDg1REJGMDA2NDBFNzUgLyogQ29tYmluZWRGaWx0ZXJzQWxwaGFi
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzRURE
NjdEMUI0ODVEQkYwMDY0MEU3NSAvKiBDb21iaW5lZEZpbHRlcnNBbHBoYWJldC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0MTUyOTJFMEUxQUU4
QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDE1MjkyQzBFMUFFOEEwMDBDNEEyRDAgLyog
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC03NjgwLDggKzc2NzksNiBAQAogCQk0M0I4NUVEMjE4Q0JFQzUy
MDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNlbGVjdG9yUHNldWRv
Q2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL1NlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5j
cHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQzQjg1RUQzMThDQkVD
NTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRN
YXAuZ3BlcmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENv
bXBhdGliaWxpdHlFbGVtZW50TWFwLmdwZXJmOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9TZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuZ3BlcmY7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQzQjg1RUQ2MThDQkVDOTcwMEUz
MUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxp
dHlFbGVtZW50TWFwLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0M0I5MzM2NzEz
QjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQb2ludExpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9p
bnRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1h
dGVkUG9pbnRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNDMDkyQjkx
MkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQzA5MkJBMTJEOUU0RUUwMEE5ODlDMyAvKiBS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTk1MTAsNiArOTUwNywxMiBAQAogCQk3MjE0NDMyRTIyM0VCMkZFMDBG
MTJGRjcgLyogU1ZHTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyMTQ0MzJGMjIzRUI2RTgwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0
eUFjY2Vzc29ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjE0NDMzMDIyM0VCN0M3MDBGMTJGRjcg
LyogU1ZHUHJvcGVydHlBY2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFjY2Vz
c29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTQ0MzM5MjIzRjc3NUYwMEYx
MkZGNyAvKiBTVkdWYWx1ZVByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1ZVBy
b3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMzQTIyM0Y3
RDkwMDBGMTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdWYWx1
ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTQ0MzNCMjIzRjgw
OUMwMEYxMkZGNyAvKiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MjE0NDMzRDIyM0Y4MzE3MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR1Byb3BlcnR5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0
NDMzRTIyM0ZFQ0E5MDBGMTJGRjcgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25J
bXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1w
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMzRjIyM0ZFREI4MDBGMTJG
RjcgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzIzRjk3QkMyMjM4RUUwODAwN0YwNzlDIC8qIFNWR0F0dHJpYnV0ZUFuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQXR0cmlidXRlQW5pbWF0aW9u
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyM0Y5N0JEMjIz
OEVFMDgwMDdGMDc5QyAvKiBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkUyMjM5NTEyRDAwN0YwNzlDIC8qIFNWR0xlZ2FjeUF0
dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGVn
YWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05NzM3LDggKzk3NDAsNiBAQAogCQk3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkg
LyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdMZW5ndGhMaXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MzlDMzY4MUREQjg2RDMwMEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM2OTFEREI4NkQzMDBGRUZCMjkgLyog
U1ZHTnVtYmVyTGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdOdW1iZXJMaXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlD
MzZBMUREQjg3MUMwMEZFRkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0MzOUMzNkIxRERCODcxQzAwRkVGQjI5IC8qIFNWR1Bv
aW50TGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQb2lu
dExpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzOUMzNkMxRERC
OEJCMDAwRkVGQjI5IC8qIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZEMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdU
cmFuc2Zvcm1MaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1RyYW5zZm9ybUxpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Mz
OUMzNkUxRERCQTNFMDAwRkVGQjI5IC8qIFNWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhTZWdMaXN0VmFsdWVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjIxLDYgKzE2MjIyLDcgQEAKIAkJCQk1
NUVFNTM1NjIyM0IyOUY3MDBGQkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1w
bC5oICovLAogCQkJCTA4OEEwREZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3Bl
cnR5RGVzY3JpcHRpb24uaCAqLywKIAkJCQk1NUVFNTM1QzIyM0IyQTBEMDBGQkE5NDQgLyogU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUltcGwuaCAqLywKKwkJCQk3MjE0NDMzQjIyM0Y4MDlDMDBGMTJGRjcg
LyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaCAqLywKIAkJCQk1NUJFMDI1RTIyM0IyOUM0MDAz
MkYwOEEgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3Nvci5oICovLAogCQkJCTU1RUU1
MzVEMjIzQjJBMEQwMEZCQTk0NCAvKiBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1w
bC5oICovLAogCQkJCTU1RUU1MzVGMjIzQjJBMEYwMEZCQTk0NCAvKiBTVkdBbmltYXRlZFByb3Bl
cnR5UGFpckFuaW1hdG9yLmggKi8sCkBAIC0xNjIzMCw2ICsxNjIzMiw4IEBACiAJCQkJMDg1MjVF
NjIxMjc4QzAwMTAwQTg0Nzc4IC8qIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgg
Ki8sCiAJCQkJMDg1QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTU1QkUwMjVGMjIzQjI5QzUwMDMyRjA4QSAv
KiBTVkdBbmltYXRpb25BZGRpdGl2ZUZ1bmN0aW9uLmggKi8sCisJCQkJNzIxNDQzM0YyMjNGRURC
ODAwRjEyRkY3IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmggKi8sCisJCQkJ
NzIxNDQzM0UyMjNGRUNBOTAwRjEyRkY3IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0
aW9uSW1wbC5oICovLAogCQkJCTU1RUU1MzVFMjIzQjJBMEUwMEZCQTk0NCAvKiBTVkdBbmltYXRp
b25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaCAqLywKIAkJCQk1NUJFMDI1OTIyM0IyOUMxMDAzMkYw
OEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oICovLAogCQkJCTcy
MTQ0MzI5MjIzRTNEQzUwMEYxMkZGNyAvKiBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmgg
Ki8sCkBAIC0xNjI1NiwxMiArMTYyNjAsMTUgQEAKIAkJCQk1NUVFNTM2MzIyM0IyQTI0MDBGQkE5
NDQgLyogU1ZHUHJvcGVydHkuaCAqLywKIAkJCQk3MjE0NDMzMDIyM0VCN0M3MDBGMTJGRjcgLyog
U1ZHUHJvcGVydHlBY2Nlc3Nvci5oICovLAogCQkJCTcyMTQ0MzJGMjIzRUI2RTgwMEYxMkZGNyAv
KiBTVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oICovLAorCQkJCTcyMTQ0MzNEMjIzRjgzMTcwMEYx
MkZGNyAvKiBTVkdQcm9wZXJ0eUxpc3QuaCAqLywKIAkJCQk1NUVFNTM2MDIyM0IyQTIxMDBGQkE5
NDQgLyogU1ZHUHJvcGVydHlPd25lci5oICovLAogCQkJCTU1QkUwMjVDMjIzQjI5QzMwMDMyRjA4
QSAvKiBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaCAqLywKIAkJCQk1NUJFMDI1NzIyM0IyOUMw
MDAzMkYwOEEgLyogU1ZHUHJvcGVydHlSZWdpc3RyeS5oICovLAogCQkJCTA4OEEwRTAyMTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODhBMEUwMzEyNkVG
MURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCAqLywKIAkJCQkwODEzQTRFOTEyODQx
MzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8sCisJCQkJNzIxNDQz
M0EyMjNGN0Q5MDAwRjEyRkY3IC8qIFNWR1ZhbHVlUHJvcGVydHkuaCAqLywKKwkJCQk3MjE0NDMz
OTIyM0Y3NzVGMDBGMTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0eUxpc3QuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gcHJvcGVydGllczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDE0
Myw4ICsyNDE1MCw2IEBACiAJCQkJNDMxQTJGOUExM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1h
dGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaCAqLywKIAkJCQkwODYzOTUxMzEzQjVGRTU3MDBCQjM0
NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCAqLywKIAkJCQkwODYzOTUxNDEzQjVGRTU3MDBCQjM0
NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmggKi8sCi0JCQkJNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJG
IC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCAqLywKLQkJCQk0M0I5MzM2NzEzQjI2MUIxMDA0
NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCAqLywKIAkJCQk0MzFBMzAyMDEzQjg5REND
MDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCAqLywKIAkJCQkw
OEZFMEJDNDEyN0UyQUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
LmggKi8sCiAJCQkJQjIyMjc3RjQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUHJlc2Vy
dmVBc3BlY3RSYXRpby5pZGwgKi8sCkBAIC0yNDQ4Myw4ICsyNDQ4OCw2IEBACiAJCQkJQjIyMjc4
RjQwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvaW50LmlkbCAqLywKIAkJCQlCMjIyNzhGNjBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmggKi8sCiAJCQkJQjIyMjc4RjcwRDAwQkYyMTAw
NzFCNzgyIC8qIFNWR1BvaW50TGlzdC5pZGwgKi8sCi0JCQkJN0MzOUMzNkExRERCODcxQzAwRkVG
QjI5IC8qIFNWR1BvaW50TGlzdFZhbHVlcy5jcHAgKi8sCi0JCQkJN0MzOUMzNkIxRERCODcxQzAw
RkVGQjI5IC8qIFNWR1BvaW50TGlzdFZhbHVlcy5oICovLAogCQkJCUIyMjI3OEY4MEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc4RjkwRDAwQkYyMTAw
NzFCNzgyIC8qIFNWR1BvbHlFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc4RkEwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmNwcCAqLywKQEAgLTMxOTI0LDcgKzMxOTI3LDYgQEAK
IAkJCQk0MzFBMkY5QzEzQjZGMkIwMDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg2Mzk1MTYxM0I1RkU1NzAwQkIzNDREIC8q
IFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg5QThFMDcxMjhEOEIzRDAw
RTdBNTM0IC8qIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQzQjkzMzY5MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDhGRTBCQzUxMjdFMkFDMTAwMEM0RkI1IC8qIFNW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBF
MDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDgxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVk
UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKaW5kZXggNWJhOTI4MWUyZTAuLjAyODQ0YjkxMmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcApAQCAtMzks
NyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXRoIHBhdGhGcm9t
Q2lyY2xlRWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50KQorc3RhdGljIFBhdGggcGF0aEZyb21D
aXJjbGVFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGlz
PFNWR0NpcmNsZUVsZW1lbnQ+KGVsZW1lbnQpKTsKIApAQCAtNTksNyArNTksNyBAQCBzdGF0aWMg
UGF0aCBwYXRoRnJvbUNpcmNsZUVsZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1
cm4gcGF0aDsKIH0KIAotc3RhdGljIFBhdGggcGF0aEZyb21FbGxpcHNlRWxlbWVudChTVkdFbGVt
ZW50JiBlbGVtZW50KQorc3RhdGljIFBhdGggcGF0aEZyb21FbGxpcHNlRWxlbWVudChjb25zdCBT
VkdFbGVtZW50JiBlbGVtZW50KQogewogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gZWxl
bWVudC5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC04Miw3ICs4Miw3IEBAIHN0
YXRpYyBQYXRoIHBhdGhGcm9tRWxsaXBzZUVsZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKICAg
ICByZXR1cm4gcGF0aDsKIH0KIAotc3RhdGljIFBhdGggcGF0aEZyb21MaW5lRWxlbWVudChTVkdF
bGVtZW50JiBlbGVtZW50KQorc3RhdGljIFBhdGggcGF0aEZyb21MaW5lRWxlbWVudChjb25zdCBT
VkdFbGVtZW50JiBlbGVtZW50KQogewogICAgIFBhdGggcGF0aDsKICAgICBjb25zdCBhdXRvJiBs
aW5lID0gZG93bmNhc3Q8U1ZHTGluZUVsZW1lbnQ+KGVsZW1lbnQpOwpAQCAtOTMsNDQgKzkzLDQ0
IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tTGluZUVsZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkK
ICAgICByZXR1cm4gcGF0aDsKIH0KIAotc3RhdGljIFBhdGggcGF0aEZyb21QYXRoRWxlbWVudChT
VkdFbGVtZW50JiBlbGVtZW50KQorc3RhdGljIFBhdGggcGF0aEZyb21QYXRoRWxlbWVudChjb25z
dCBTVkdFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBkb3duY2FzdDxTVkdQYXRoRWxl
bWVudD4oZWxlbWVudCkucGF0aEZvckJ5dGVTdHJlYW0oKTsKIH0KIAotc3RhdGljIFBhdGggcGF0
aEZyb21Qb2x5Z29uRWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50KQorc3RhdGljIFBhdGggcGF0
aEZyb21Qb2x5Z29uRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogewotICAgIGF1
dG8mIHBvaW50cyA9IGRvd25jYXN0PFNWR1BvbHlnb25FbGVtZW50PihlbGVtZW50KS5hbmltYXRl
ZFBvaW50cygpLT52YWx1ZXMoKTsKKyAgICBhdXRvJiBwb2ludHMgPSBkb3duY2FzdDxTVkdQb2x5
Z29uRWxlbWVudD4oZWxlbWVudCkucG9pbnRzKCkuaXRlbXMoKTsKICAgICBpZiAocG9pbnRzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhdGggcGF0aDsKLSAgICBwYXRo
Lm1vdmVUbyhwb2ludHMuZmlyc3QoKSk7CisgICAgcGF0aC5tb3ZlVG8ocG9pbnRzLmZpcnN0KCkt
PnZhbHVlKCkpOwogCiAgICAgdW5zaWduZWQgc2l6ZSA9IHBvaW50cy5zaXplKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcGF0aC5hZGRMaW5lVG8o
cG9pbnRzLmF0KGkpKTsKKyAgICAgICAgcGF0aC5hZGRMaW5lVG8ocG9pbnRzLmF0KGkpLT52YWx1
ZSgpKTsKIAogICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CiAgICAgcmV0dXJuIHBhdGg7CiB9CiAK
LXN0YXRpYyBQYXRoIHBhdGhGcm9tUG9seWxpbmVFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQp
CitzdGF0aWMgUGF0aCBwYXRoRnJvbVBvbHlsaW5lRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBl
bGVtZW50KQogewotICAgIGF1dG8mIHBvaW50cyA9IGRvd25jYXN0PFNWR1BvbHlsaW5lRWxlbWVu
dD4oZWxlbWVudCkuYW5pbWF0ZWRQb2ludHMoKS0+dmFsdWVzKCk7CisgICAgYXV0byYgcG9pbnRz
ID0gZG93bmNhc3Q8U1ZHUG9seWxpbmVFbGVtZW50PihlbGVtZW50KS5wb2ludHMoKS5pdGVtcygp
OwogICAgIGlmIChwb2ludHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
UGF0aCBwYXRoOwotICAgIHBhdGgubW92ZVRvKHBvaW50cy5maXJzdCgpKTsKKyAgICBwYXRoLm1v
dmVUbyhwb2ludHMuZmlyc3QoKS0+dmFsdWUoKSk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gcG9p
bnRzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXQoaSkpOworICAgICAgICBwYXRoLmFkZExpbmVU
byhwb2ludHMuYXQoaSktPnZhbHVlKCkpOwogICAgIHJldHVybiBwYXRoOwogfQogCi1zdGF0aWMg
UGF0aCBwYXRoRnJvbVJlY3RFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgUGF0
aCBwYXRoRnJvbVJlY3RFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAg
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYgKCFy
ZW5kZXJlcikKQEAgLTE2OSwxMSArMTY5LDExIEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tUmVjdEVs
ZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gcGF0aDsKIH0KIAotUGF0aCBw
YXRoRnJvbUdyYXBoaWNzRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50KQorUGF0aCBwYXRoRnJv
bUdyYXBoaWNzRWxlbWVudChjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIEFTU0VS
VChlbGVtZW50KTsKIAotICAgIHR5cGVkZWYgUGF0aCAoKlBhdGhGcm9tRnVuY3Rpb24pKFNWR0Vs
ZW1lbnQmKTsKKyAgICB0eXBlZGVmIFBhdGggKCpQYXRoRnJvbUZ1bmN0aW9uKShjb25zdCBTVkdF
bGVtZW50Jik7CiAgICAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIFBhdGhGcm9t
RnVuY3Rpb24+KiBtYXAgPSAwOwogICAgIGlmICghbWFwKSB7CiAgICAgICAgIG1hcCA9IG5ldyBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBQYXRoRnJvbUZ1bmN0aW9uPjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuaAppbmRleCA2MmRkODE5ODMzYy4uNDZmZjgx
NWNiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmgKQEAg
LTI0LDYgKzI0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU1ZHRWxlbWVudDsKIGNs
YXNzIFBhdGg7CiAKLVBhdGggcGF0aEZyb21HcmFwaGljc0VsZW1lbnQoU1ZHRWxlbWVudCopOwor
UGF0aCBwYXRoRnJvbUdyYXBoaWNzRWxlbWVudChjb25zdCBTVkdFbGVtZW50Kik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDE1NTc0NGQzZmRkLi4zMDE4MzRmMWYwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVB
c1RleHQuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlclNWR1NoYXBlJiBzaGFwZSkKICAgICAgICAg
d3JpdGVOYW1lVmFsdWVQYWlyKHRzLCAiciIsIGVsZW1lbnQucigpLnZhbHVlKGxlbmd0aENvbnRl
eHQpKTsKICAgICB9IGVsc2UgaWYgKGlzPFNWR1BvbHlFbGVtZW50PihzdmdFbGVtZW50KSkgewog
ICAgICAgICBjb25zdCBTVkdQb2x5RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PFNWR1BvbHlF
bGVtZW50PihzdmdFbGVtZW50KTsKLSAgICAgICAgd3JpdGVOYW1lQW5kUXVvdGVkVmFsdWUodHMs
ICJwb2ludHMiLCBlbGVtZW50LnBvaW50TGlzdCgpLnZhbHVlQXNTdHJpbmcoKSk7CisgICAgICAg
IHdyaXRlTmFtZUFuZFF1b3RlZFZhbHVlKHRzLCAicG9pbnRzIiwgZWxlbWVudC5wb2ludHMoKS52
YWx1ZUFzU3RyaW5nKCkpOwogICAgIH0gZWxzZSBpZiAoaXM8U1ZHUGF0aEVsZW1lbnQ+KHN2Z0Vs
ZW1lbnQpKSB7CiAgICAgICAgIGNvbnN0IFNWR1BhdGhFbGVtZW50JiBlbGVtZW50ID0gZG93bmNh
c3Q8U1ZHUGF0aEVsZW1lbnQ+KHN2Z0VsZW1lbnQpOwogICAgICAgICBTdHJpbmcgcGF0aFN0cmlu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmZlMGMxMDVjMy4uMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDExLCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIKLQotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVFbGVtZW50QmFzZS5oIgotI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgIlNWR1BvaW50LmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFsdWVzLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6U1ZHQW5p
bWF0ZWRQb2ludExpc3RBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVt
ZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKLSAgICA6IFNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yKEFuaW1hdGVkUG9pbnRzLCBhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkK
LXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQb2lu
dExpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykK
LXsKLSAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGUoU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHUG9pbnRMaXN0VmFsdWVzPjo6ZnJvbVN0cmluZyhzdHJpbmcpKTsKLX0KLQotc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6c3Rh
cnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYg
YW5pbWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZTxTVkdB
bmltYXRlZFBvaW50TGlzdD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRQ
b2ludExpc3RBbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFu
aW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIHN0b3BBbmltVmFsQW5p
bWF0aW9uRm9yVHlwZTxTVkdBbmltYXRlZFBvaW50TGlzdD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0K
LXZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFs
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZH
QW5pbWF0ZWRUeXBlJiB0eXBlKQotewotICAgIHJlc2V0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRl
ZFBvaW50TGlzdD4oYW5pbWF0ZWRUeXBlcywgdHlwZSk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRQ
b2ludExpc3RBbmltYXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxXaWxsQ2hhbmdl
Rm9yVHlwZTxTVkdBbmltYXRlZFBvaW50TGlzdD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQg
U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6YW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgYW5pbVZh
bERpZENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+KGFuaW1hdGVkVHlwZXMpOwot
fQotCi12b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMo
U1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvKQotewotICAgIEFTU0VS
VChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWRQb2ludHMpOwotICAgIEFTU0VSVChmcm9tLT50eXBl
KCkgPT0gdG8tPnR5cGUoKSk7Ci0KLSAgICBjb25zdCBhdXRvJiBmcm9tUG9pbnRMaXN0ID0gZnJv
bS0+YXM8U1ZHUG9pbnRMaXN0VmFsdWVzPigpOwotICAgIGF1dG8mIHRvUG9pbnRMaXN0ID0gdG8t
PmFzPFNWR1BvaW50TGlzdFZhbHVlcz4oKTsKLQotICAgIHVuc2lnbmVkIGZyb21Qb2ludExpc3RT
aXplID0gZnJvbVBvaW50TGlzdC5zaXplKCk7Ci0gICAgaWYgKCFmcm9tUG9pbnRMaXN0U2l6ZSB8
fCBmcm9tUG9pbnRMaXN0U2l6ZSAhPSB0b1BvaW50TGlzdC5zaXplKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcm9tUG9pbnRMaXN0U2l6ZTsgKytp
KQotICAgICAgICB0b1BvaW50TGlzdFtpXSArPSBmcm9tUG9pbnRMaXN0W2ldOwotfQotCi12b2lk
IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSogZnJv
bSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiB0b0F0RW5kT2ZEdXJhdGlv
biwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKLXsKLSAgICBBU1NFUlQobV9hbmltYXRpb25F
bGVtZW50KTsKLQotICAgIGNvbnN0IGF1dG8mIGZyb21Qb2ludExpc3QgPSAobV9hbmltYXRpb25F
bGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6
IGZyb20pLT5hczxTVkdQb2ludExpc3RWYWx1ZXM+KCk7Ci0gICAgY29uc3QgYXV0byYgdG9Qb2lu
dExpc3QgPSB0by0+YXM8U1ZHUG9pbnRMaXN0VmFsdWVzPigpOwotICAgIGNvbnN0IGF1dG8mIHRv
QXRFbmRPZkR1cmF0aW9uUG9pbnRMaXN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPmFzPFNWR1BvaW50
TGlzdFZhbHVlcz4oKTsKLSAgICBhdXRvJiBhbmltYXRlZFBvaW50TGlzdCA9IGFuaW1hdGVkLT5h
czxTVkdQb2ludExpc3RWYWx1ZXM+KCk7Ci0gICAgaWYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmFk
anVzdEZyb21Ub0xpc3RWYWx1ZXM8U1ZHUG9pbnRMaXN0VmFsdWVzPihmcm9tUG9pbnRMaXN0LCB0
b1BvaW50TGlzdCwgYW5pbWF0ZWRQb2ludExpc3QsIHBlcmNlbnRhZ2UpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICB1bnNpZ25lZCBmcm9tUG9pbnRMaXN0U2l6ZSA9IGZyb21Qb2ludExpc3Quc2l6
ZSgpOwotICAgIHVuc2lnbmVkIHRvUG9pbnRMaXN0U2l6ZSA9IHRvUG9pbnRMaXN0LnNpemUoKTsK
LSAgICB1bnNpZ25lZCB0b0F0RW5kT2ZEdXJhdGlvblNpemUgPSB0b0F0RW5kT2ZEdXJhdGlvblBv
aW50TGlzdC5zaXplKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9Qb2ludExp
c3RTaXplOyArK2kpIHsKLSAgICAgICAgRmxvYXRQb2ludCBlZmZlY3RpdmVGcm9tOwotICAgICAg
ICBpZiAoZnJvbVBvaW50TGlzdFNpemUpCi0gICAgICAgICAgICBlZmZlY3RpdmVGcm9tID0gZnJv
bVBvaW50TGlzdFtpXTsKLSAgICAgICAgRmxvYXRQb2ludCBlZmZlY3RpdmVUb0F0RW5kID0gaSA8
IHRvQXRFbmRPZkR1cmF0aW9uU2l6ZSA/IHRvQXRFbmRPZkR1cmF0aW9uUG9pbnRMaXN0W2ldIDog
RmxvYXRQb2ludCgpOwotCi0gICAgICAgIGZsb2F0IGFuaW1hdGVkWCA9IGFuaW1hdGVkUG9pbnRM
aXN0W2ldLngoKTsKLSAgICAgICAgZmxvYXQgYW5pbWF0ZWRZID0gYW5pbWF0ZWRQb2ludExpc3Rb
aV0ueSgpOwotICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJl
cihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJvbS54KCksIHRvUG9pbnRMaXN0
W2ldLngoKSwgZWZmZWN0aXZlVG9BdEVuZC54KCksIGFuaW1hdGVkWCk7Ci0gICAgICAgIG1fYW5p
bWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENv
dW50LCBlZmZlY3RpdmVGcm9tLnkoKSwgdG9Qb2ludExpc3RbaV0ueSgpLCBlZmZlY3RpdmVUb0F0
RW5kLnkoKSwgYW5pbWF0ZWRZKTsKLSAgICAgICAgYW5pbWF0ZWRQb2ludExpc3RbaV0gPSBGbG9h
dFBvaW50KGFuaW1hdGVkWCwgYW5pbWF0ZWRZKTsKLSAgICB9Ci19Ci0KLWZsb2F0IFNWR0FuaW1h
dGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgLy8gRklYTUU6IERpc3RhbmNlIGNhbGN1bGF0aW9uIGlzIG5v
dCBwb3NzaWJsZSBmb3IgU1ZHUG9pbnRMaXN0VmFsdWVzIHJpZ2h0IG5vdy4gV2UgbmVlZCB0aGUg
ZGlzdGFuY2Ugb2YgZm9yIGV2ZXJ5IHNpbmdsZSB2YWx1ZS4KLSAgICByZXR1cm4gLTE7Ci19Ci0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDRmYmQyNWM0MGE1Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yLmgiCi0jaW5jbHVkZSAiU1ZHQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiU1ZHQXR0cmli
dXRlQWNjZXNzb3IuaCIKLSNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwotCi11c2luZyBTVkdBbmltYXRl
ZFBvaW50TGlzdCA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3RW
YWx1ZXM+OwotdXNpbmcgU1ZHQW5pbWF0ZWRQb2ludExpc3RBdHRyaWJ1dGUgPSBTVkdBbmltYXRl
ZEF0dHJpYnV0ZUxpc3Q8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+OwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBPd25lclR5cGU+Ci11c2luZyBTVkdBbmltYXRlZFBvaW50TGlzdEF0dHJpYnV0ZUFjY2Vzc29y
ID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkUG9p
bnRMaXN0QXR0cmlidXRlLCBBbmltYXRlZFBvaW50cz47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkUG9p
bnRMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Igewot
cHVibGljOgotICAgIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxl
bWVudCosIFNWR0VsZW1lbnQqKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3Rv
cEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGFkZEFuaW1hdGVk
VHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJl
cGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICBmbG9hdCBjYWxjdWxhdGVE
aXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
IG92ZXJyaWRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkVHlwZS5oCmluZGV4IGM2ZDc4YWNjOWQ3Li42ZmY3ZWQzN2M4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaApAQCAtMTEwLDggKzExMCwyNCBAQCBwdWJsaWM6CiAK
ICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFT
U0VSVChtX3ZhbHVlLmluZGV4KCkgPj0gQW5pbWF0ZWRQcm9wZXJ0eVR5cGVNaW4gJiYgbV92YWx1
ZS5pbmRleCgpIDwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGVNYXgpOwotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+KG1fdmFsdWUuaW5kZXgoKSk7CisgICAgICAg
IHN0YXRpYyBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmltYXRlZFR5cGVzW10gPSB7CisgICAgICAg
ICAgICBBbmltYXRlZEFuZ2xlLAorICAgICAgICAgICAgQW5pbWF0ZWRDb2xvciwKKyAgICAgICAg
ICAgIEFuaW1hdGVkRW51bWVyYXRpb24sCisgICAgICAgICAgICBBbmltYXRlZExlbmd0aCwKKyAg
ICAgICAgICAgIEFuaW1hdGVkTGVuZ3RoTGlzdCwKKyAgICAgICAgICAgIEFuaW1hdGVkTnVtYmVy
LAorICAgICAgICAgICAgQW5pbWF0ZWROdW1iZXJMaXN0LAorICAgICAgICAgICAgQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlciwKKyAgICAgICAgICAgIEFuaW1hdGVkUGF0aCwKKyAgICAgICAg
ICAgIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywKKyAgICAgICAgICAgIEFuaW1hdGVkUmVj
dCwKKyAgICAgICAgICAgIEFuaW1hdGVkU3RyaW5nLAorICAgICAgICAgICAgQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0CisgICAgICAgIH07CisKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4obV92YWx1ZS5pbmRleCgpKSA8IHNpemVvZihhbmltYXRlZFR5cGVzKSAvIHNpemVvZihhbmlt
YXRlZFR5cGVzWzBdKSk7CisgICAgICAgIHJldHVybiBhbmltYXRlZFR5cGVzW21fdmFsdWUuaW5k
ZXgoKV07CiAgICAgfQogCiAgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCmluZGV4IDJiODI3MTdmNDcwLi45ZmQ5MTdm
YTE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaApAQCAtMjgsNyAr
MjgsNiBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBh
dGguaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5o
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCkBAIC03MSw3ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBBbmltYXRlZFBhdGg6CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29u
dGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYW5p
bWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOgogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
QW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2Fz
ZSBBbmltYXRlZFJlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQXR0cmli
dXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQXR0cmli
dXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNjc3N2Y3MzhjNDcuLjRjYTM2MmQ3NTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0F0dHJpYnV0ZUFuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTVkdBdHRyaWJ1dGVBbmlt
YXRpb25Db250cm9sbGVyOjpyZXNldEFuaW1hdGVkVHlwZSgpCiB2b2lkIFNWR0F0dHJpYnV0ZUFu
aW1hdGlvbkNvbnRyb2xsZXI6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KikKIHsKICAgICBBU1NFUlQo
cGVyY2VudGFnZSA+PSAwICYmIHBlcmNlbnRhZ2UgPD0gMSk7Ci0gICAgaWYgKG1fdGFyZ2V0RWxl
bWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpKQorICAgIGlmIChtX2FuaW1hdGlvbkVs
ZW1lbnQuaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFnKSkKICAgICAgICAgcGVyY2VudGFnZSA9
IDE7CiAKICAgICBpZiAobV9hbmltYXRpb25FbGVtZW50LmNhbGNNb2RlKCkgPT0gQ2FsY01vZGU6
OkRpc2NyZXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAppbmRl
eCAxNDA2OWVjZTkwMy4uOTgyNDNmZGMxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJz
ZXJVdGlsaXRpZXMuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIlNWR1BvaW50TGlzdFZhbHVlcy5o
IgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTI2MCw0MCArMjU5LDYgQEAgYm9vbCBwYXJz
ZVJlY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZsb2F0UmVjdCYgcmVjdCkKICAgICByZXR1cm4g
dmFsaWQ7CiB9CiAKLWJvb2wgcG9pbnRzTGlzdEZyb21TVkdEYXRhKFNWR1BvaW50TGlzdFZhbHVl
cyYgcG9pbnRzTGlzdCwgY29uc3QgU3RyaW5nJiBwb2ludHMpCi17Ci0gICAgaWYgKHBvaW50cy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFy
YWN0ZXJzID0gU3RyaW5nVmlldyhwb2ludHMpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAg
IGNvbnN0IFVDaGFyKiBjdXIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7Ci0gICAgY29uc3QgVUNo
YXIqIGVuZCA9IGN1ciArIHBvaW50cy5sZW5ndGgoKTsKLQotICAgIHNraXBPcHRpb25hbFNWR1Nw
YWNlcyhjdXIsIGVuZCk7Ci0KLSAgICBib29sIGRlbGltUGFyc2VkID0gZmFsc2U7Ci0gICAgd2hp
bGUgKGN1ciA8IGVuZCkgewotICAgICAgICBkZWxpbVBhcnNlZCA9IGZhbHNlOwotICAgICAgICBm
bG9hdCB4UG9zID0gMC4wZjsKLSAgICAgICAgaWYgKCFwYXJzZU51bWJlcihjdXIsIGVuZCwgeFBv
cykpCi0gICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBmbG9hdCB5UG9zID0gMC4w
ZjsKLSAgICAgICAgaWYgKCFwYXJzZU51bWJlcihjdXIsIGVuZCwgeVBvcywgZmFsc2UpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhj
dXIsIGVuZCk7Ci0KLSAgICAgICAgaWYgKGN1ciA8IGVuZCAmJiAqY3VyID09ICcsJykgewotICAg
ICAgICAgICAgZGVsaW1QYXJzZWQgPSB0cnVlOwotICAgICAgICAgICAgY3VyKys7Ci0gICAgICAg
IH0KLSAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1ciwgZW5kKTsKLQotICAgICAgICBw
b2ludHNMaXN0LmFwcGVuZChGbG9hdFBvaW50KHhQb3MsIHlQb3MpKTsKLSAgICB9Ci0gICAgcmV0
dXJuIGN1ciA9PSBlbmQgJiYgIWRlbGltUGFyc2VkOwotfQotCiBib29sIHBhcnNlR2x5cGhOYW1l
KGNvbnN0IFN0cmluZyYgaW5wdXQsIEhhc2hTZXQ8U3RyaW5nPiYgdmFsdWVzKQogewogICAgIC8v
IEZJWE1FOiBQYXJzaW5nIGVycm9yIGRldGVjdGlvbiBpcyBtaXNzaW5nLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oCmluZGV4IDY3N2RiY2M5MzRkLi4zZjEzMjFkYWMzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaApAQCAtMzIsNyArMzIsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFJl
Y3Q7Ci1jbGFzcyBTVkdQb2ludExpc3RWYWx1ZXM7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgogYm9vbCBwYXJzZVNWR051bWJlcihDaGFyYWN0ZXJUeXBlKiBwdHIsIHNpemVf
dCBsZW5ndGgsIGRvdWJsZSYgbnVtYmVyKTsKQEAgLTgyLDcgKzgxLDYgQEAgaW5saW5lIGJvb2wg
c2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHB0
ciwgY29uc3QgQ2gKICAgICByZXR1cm4gcHRyIDwgZW5kOwogfQogCi1ib29sIHBvaW50c0xpc3RG
cm9tU1ZHRGF0YShTVkdQb2ludExpc3RWYWx1ZXMmLCBjb25zdCBTdHJpbmcmIHBvaW50cyk7CiBW
ZWN0b3I8U3RyaW5nPiBwYXJzZURlbGltaXRlZFN0cmluZyhjb25zdCBTdHJpbmcmIGlucHV0LCBj
b25zdCBjaGFyIHNlcGVyYXRvcik7CiBib29sIHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBpbnB1dCwgVW5pY29kZVJhbmdlcyYsIEhhc2hTZXQ8U3RyaW5nPiYgc3RyaW5n
TGlzdCk7CiBib29sIHBhcnNlR2x5cGhOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXQsIEhhc2hTZXQ8
U3RyaW5nPiYgdmFsdWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2lu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmgKaW5kZXggODAwY2VhZTMwNDYuLjUy
NjUyOWJkYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDg2ICsyOCw2OSBAQAog
CiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR01hdHJpeC5oIgotI2luY2x1
ZGUgIlNWR1Byb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdQb2ludCA6IHB1YmxpYyBTVkdQcm9w
ZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHUG9p
bnQ+IGNyZWF0ZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBT
VkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQb2ludChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1
ZSkpOwotICAgIH0KK2NsYXNzIFNWR1BvaW50IDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHk8Rmxv
YXRQb2ludD4geworICAgIHVzaW5nIEJhc2UgPSBTVkdWYWx1ZVByb3BlcnR5PEZsb2F0UG9pbnQ+
OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdXNpbmcgQmFzZTo6bV92YWx1ZTsKIAotICAg
IHN0YXRpYyBSZWY8U1ZHUG9pbnQ+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsVmFs
dWUgPSB7IH0pCitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTVkdQb2ludD4gY3JlYXRlKGNvbnN0
IEZsb2F0UG9pbnQmIHZhbHVlID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU1ZHUG9pbnQoaW5pdGlhbFZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR1BvaW50KHZhbHVlKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTVkdQb2ludD4+IGNyZWF0ZShFeGNlcHRpb25PcjxUPiYm
IGluaXRpYWxWYWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8U1ZHUG9pbnQ+PiBjcmVhdGUoRXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIGlmIChpbml0aWFsVmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICByZXR1cm4gaW5pdGlhbFZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZShpbml0aWFsVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICBpZiAo
dmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZUV4
Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQb2ludCh2YWx1ZS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSkpOwogICAgIH0KIAotICAgIGZsb2F0IHgoKQorICAgIFJlZjxT
VkdQb2ludD4gY2xvbmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVm
ZXJlbmNlKCkueCgpOworICAgICAgICByZXR1cm4gU1ZHUG9pbnQ6OmNyZWF0ZShtX3ZhbHVlKTsK
ICAgICB9CisgICAgCisgICAgZmxvYXQgeCgpIHsgcmV0dXJuIG1fdmFsdWUueCgpOyB9CiAKLSAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRYKGZsb2F0IHhWYWx1ZSkKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRYKGZsb2F0IHgpCiAgICAgewogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07
CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRYKHhWYWx1ZSk7CisgICAgICAgIG1f
dmFsdWUuc2V0WCh4KTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7CiAKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKLSAgICBmbG9hdCB5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcm9w
ZXJ0eVJlZmVyZW5jZSgpLnkoKTsKLSAgICB9CisgICAgZmxvYXQgeSgpIHsgcmV0dXJuIG1fdmFs
dWUueSgpOyB9CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRZKGZsb2F0IHhWYWx1ZSkKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRZKGZsb2F0IHkpCiAgICAgewogICAgICAgICBpZiAoaXNS
ZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9u
QWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRZKHhWYWx1
ZSk7CisgICAgICAgIG1fdmFsdWUuc2V0WSh5KTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0K
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8U1ZHUG9p
bnQ+PiBtYXRyaXhUcmFuc2Zvcm0oU1ZHTWF0cml4JiBtYXRyaXgpCi0gICAgewotICAgICAgICBp
ZiAoaXNSZWFkT25seSgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZp
Y2F0aW9uQWxsb3dlZEVycm9yIH07Ci0KLSAgICAgICAgYXV0byBuZXdQb2ludCA9IHByb3BlcnR5
UmVmZXJlbmNlKCkubWF0cml4VHJhbnNmb3JtKG1hdHJpeC5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsK
LSAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KLSAgICAgICAgcmV0dXJuIFNWR1BvaW50OjpjcmVh
dGUobmV3UG9pbnQpOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIFNWR1BvaW50KFNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xl
LCBGbG9hdFBvaW50JiB2YWx1ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQ
b2ludD4oJmFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBTVkdQb2ludChTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgRmxvYXRQb2ludCYgdmFsdWUpCi0gICAg
ICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+KG51bGxwdHIsIHJvbGUsIHZhbHVl
KQorICAgIFJlZjxTVkdQb2ludD4gbWF0cml4VHJhbnNmb3JtKFNWR01hdHJpeCYgbWF0cml4KSBj
b25zdAogICAgIHsKKyAgICAgICAgYXV0byBuZXdQb2ludCA9IG1fdmFsdWUubWF0cml4VHJhbnNm
b3JtKG1hdHJpeC5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU1ZHUG9pbnQobmV3UG9pbnQpKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBTVkdQb2lu
dChjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsVmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlU
ZWFyT2ZmPEZsb2F0UG9pbnQ+KGluaXRpYWxWYWx1ZSkKK3ByaXZhdGU6CisgICAgU3RyaW5nIHZh
bHVlQXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgcmV0dXJuIFNWR1By
b3BlcnR5VHJhaXRzPEZsb2F0UG9pbnQ+Ojp0b1N0cmluZyhtX3ZhbHVlKTsKICAgICB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvaW50LmlkbAppbmRleCA3Yzg0NTE1YjVhYS4uNWQ4MjI0OTBkYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvaW50LmlkbApAQCAtMjYsNiArMjYsNiBAQAogICAgIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZmxvYXQgeDsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHk7
CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHUG9pbnQgbWF0cml4VHJh
bnNmb3JtKFNWR01hdHJpeCBtYXRyaXgpOworICAgIFtOZXdPYmplY3RdIFNWR1BvaW50IG1hdHJp
eFRyYW5zZm9ybShTVkdNYXRyaXggbWF0cml4KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExp
c3QuaAppbmRleCBiMGMyYTEwMzExZS4uNmNkMTFjMWQyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9p
bnRMaXN0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjUsMjggKzI1LDgxIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCi0jaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5
VGVhck9mZi5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0
VmFsdWVzLmgiCisjaW5jbHVkZSAiU1ZHVmFsdWVQcm9wZXJ0eUxpc3QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTVkdQb2ludExpc3QgOiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5
VGVhck9mZjxTVkdQb2ludExpc3RWYWx1ZXM+IHsKK2NsYXNzIFNWR1BvaW50TGlzdCA6IHB1Ymxp
YyBTVkdWYWx1ZVByb3BlcnR5TGlzdDxTVkdQb2ludD4geworICAgIHVzaW5nIEJhc2UgPSBTVkdW
YWx1ZVByb3BlcnR5TGlzdDxTVkdQb2ludD47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKwogcHVi
bGljOgotICAgIHVzaW5nIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3RWYWx1ZXM+OwotICAgIHVzaW5nIExpc3RX
cmFwcGVyQ2FjaGUgPSBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6Okxpc3RXcmFwcGVyQ2Fj
aGU7CisgICAgc3RhdGljIFJlZjxTVkdQb2ludExpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQb2ludExpc3QoKSk7CisgICAgfQorCisgICAgc3Rh
dGljIFJlZjxTVkdQb2ludExpc3Q+IGNyZWF0ZShTVkdQcm9wZXJ0eU93bmVyKiBvd25lciwgU1ZH
UHJvcGVydHlBY2Nlc3MgYWNjZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHUG9pbnRMaXN0KG93bmVyLCBhY2Nlc3MpKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgUmVm
PFNWR1BvaW50TGlzdD4gY3JlYXRlKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0
ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1BvaW50TGlzdFZhbHVlcyYgdmFs
dWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICBzdGF0aWMgUmVmPFNWR1BvaW50
TGlzdD4gY3JlYXRlKGNvbnN0IFNWR1BvaW50TGlzdCYgb3RoZXIsIFNWR1Byb3BlcnR5QWNjZXNz
IGFjY2VzcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BvaW50TGlz
dChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdyYXBwZXJzKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR1BvaW50TGlzdChvdGhlciwgYWNjZXNzKSk7CisgICAgfQor
CisgICAgYm9vbCBwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHsKKyAgICAgICAgY2xl
YXJJdGVtcygpOworCisgICAgICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5n
Vmlldyh2YWx1ZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgICAgIGNvbnN0IFVDaGFy
KiBjdXIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgICAgIGNvbnN0IFVDaGFyKiBlbmQg
PSBjdXIgKyB2YWx1ZS5sZW5ndGgoKTsKKworICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMo
Y3VyLCBlbmQpOworCisgICAgICAgIGJvb2wgZGVsaW1QYXJzZWQgPSBmYWxzZTsKKyAgICAgICAg
d2hpbGUgKGN1ciA8IGVuZCkgeworICAgICAgICAgICAgZGVsaW1QYXJzZWQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGZsb2F0IHhQb3MgPSAwLjBmOworICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJl
cihjdXIsIGVuZCwgeFBvcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgICAgICBmbG9hdCB5UG9zID0gMC4wZjsKKyAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXIo
Y3VyLCBlbmQsIHlQb3MsIGZhbHNlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXIsIGVuZCk7CisKKyAgICAgICAg
ICAgIGlmIChjdXIgPCBlbmQgJiYgKmN1ciA9PSAnLCcpIHsKKyAgICAgICAgICAgICAgICBkZWxp
bVBhcnNlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgY3VyKys7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3VyLCBlbmQpOworCisgICAgICAgICAg
ICBhcHBlbmQoU1ZHUG9pbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHhQb3MsIHlQb3MpKSk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gIWRlbGltUGFyc2VkOwogICAgIH0KIAotcHJpdmF0ZToK
LSAgICBTVkdQb2ludExpc3QoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFBy
b3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUG9pbnRMaXN0VmFsdWVzJiB2YWx1ZXMs
IExpc3RXcmFwcGVyQ2FjaGUmIHdyYXBwZXJzKQotICAgICAgICA6IFNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmY8U1ZHUG9pbnRMaXN0VmFsdWVzPihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMs
IHdyYXBwZXJzKQorICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIHBvaW50IDogbV9pdGVtcykgeworICAgICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3Ro
KCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIocG9pbnQtPngoKSk7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIocG9pbnQtPnkoKSk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0K
IH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bv
aW50TGlzdFZhbHVlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNjZhMjdm
ZDFhLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFs
dWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1BvaW50TGlzdFZhbHVlcy5o
IgotCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0cmluZyBTVkdQb2lu
dExpc3RWYWx1ZXM6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAotewotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLQotICAgIHVuc2lnbmVkIHNpemUgPSB0aGlzLT5zaXplKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoaSA+IDApCi0gICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOyAvLyBGSVhNRTogU2hvdWxkbid0IHdlIHVzZSBj
b21tYXMgdG8gc2VwZXJhdGU/Ci0KLSAgICAgICAgY29uc3QgYXV0byYgcG9pbnQgPSBhdChpKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihwb2ludC54KCkpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKHBvaW50LnkoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bv
aW50TGlzdFZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTA3NWIzYjk2YS4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIK
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
U1ZHUG9pbnQ7Ci1jbGFzcyBTVkdQb2ludExpc3Q7Ci0KLWNsYXNzIFNWR1BvaW50TGlzdFZhbHVl
cyBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8RmxvYXRQb2ludD4gewotcHVibGljOgotICAgIFN0cmlu
ZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJv
cGVydHlUcmFpdHM8U1ZHUG9pbnRMaXN0VmFsdWVzPiB7Ci0gICAgc3RhdGljIFNWR1BvaW50TGlz
dFZhbHVlcyBpbml0aWFsVmFsdWUoKSB7IHJldHVybiB7IH07IH0KLSAgICBzdGF0aWMgU1ZHUG9p
bnRMaXN0VmFsdWVzIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi0gICAgewotICAg
ICAgICBTVkdQb2ludExpc3RWYWx1ZXMgbGlzdDsKLSAgICAgICAgcG9pbnRzTGlzdEZyb21TVkdE
YXRhKGxpc3QsIHN0cmluZyk7Ci0gICAgICAgIHJldHVybiBsaXN0OwotICAgIH0KLSAgICBzdGF0
aWMgT3B0aW9uYWw8U1ZHUG9pbnRMaXN0VmFsdWVzPiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIHsgfTsgfQot
ICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHUG9pbnRMaXN0VmFsdWVzJiBsaXN0
KSB7IHJldHVybiBsaXN0LnZhbHVlQXNTdHJpbmcoKTsgfQotCi0gICAgdXNpbmcgTGlzdEl0ZW1U
eXBlID0gRmxvYXRQb2ludDsKLSAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdQb2ludDsK
LSAgICB1c2luZyBMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHUG9pbnRMaXN0OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bv
bHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKaW5k
ZXggYWY2ZGI1NmJjYjAuLmMyZmUyZWFhODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxl
bWVudC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNywyOCArMzcsMTcgQEAgU1ZHUG9seUVsZW1l
bnQ6OlNWR1BvbHlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKICAgICA6IFNWR0dlb21ldHJ5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
ICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcykKIHsKLSAgICByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdQb2x5RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1
dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAg
aWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5y
ZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cG9pbnRzQXR0ciwgJlNWR1BvbHlFbGVtZW50Ojpt
X3BvaW50cz4oKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cG9pbnRzQXR0ciwgJlNWR1BvbHlFbGVtZW50OjptX3Bv
aW50cz4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTVkdQb2x5RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cikgewotICAgICAgICBTVkdQ
b2ludExpc3RWYWx1ZXMgbmV3TGlzdDsKLSAgICAgICAgaWYgKCFwb2ludHNMaXN0RnJvbVNWR0Rh
dGEobmV3TGlzdCwgdmFsdWUpKQorICAgICAgICBpZiAoIW1fcG9pbnRzLT5iYXNlVmFsKCktPnBh
cnNlKHZhbHVlKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygp
LnJlcG9ydEVycm9yKCJQcm9ibGVtIHBhcnNpbmcgcG9pbnRzPVwiIiArIHZhbHVlICsgIlwiIik7
Ci0KLSAgICAgICAgaWYgKGF1dG8gd3JhcHBlciA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5p
bWF0ZWRQb2ludExpc3Q+KGxvb2t1cEFuaW1hdGVkUHJvcGVydHkobV9wb2ludHMpKSkKLSAgICAg
ICAgICAgIHdyYXBwZXItPmRldGFjaExpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7Ci0KLSAg
ICAgICAgbV9wb2ludHMuc2V0VmFsdWUoV1RGTW92ZShuZXdMaXN0KSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTgxLDIxICs3MCw5IEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9
CiAKLVJlZjxTVkdQb2ludExpc3Q+IFNWR1BvbHlFbGVtZW50Ojpwb2ludHMoKQotewotICAgIG1f
cG9pbnRzLnNldFNob3VsZFN5bmNocm9uaXplKHRydWUpOwotICAgIHJldHVybiBzdGF0aWNfcG9p
bnRlcl9jYXN0PFNWR0FuaW1hdGVkUG9pbnRMaXN0Pihsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJv
cGVydHkobV9wb2ludHMpKS0+YmFzZVZhbCgpOwotfQotCi1SZWY8U1ZHUG9pbnRMaXN0PiBTVkdQ
b2x5RWxlbWVudDo6YW5pbWF0ZWRQb2ludHMoKQotewotICAgIG1fcG9pbnRzLnNldFNob3VsZFN5
bmNocm9uaXplKHRydWUpOwotICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1h
dGVkUG9pbnRMaXN0Pihsb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydHkobV9wb2ludHMpKS0+
YW5pbVZhbCgpOwotfQotCiBzaXplX3QgU1ZHUG9seUVsZW1lbnQ6OmFwcHJveGltYXRlTWVtb3J5
Q29zdCgpIGNvbnN0CiB7Ci0gICAgc2l6ZV90IHBvaW50c0Nvc3QgPSBwb2ludExpc3QoKS5zaXpl
KCkgKiBzaXplb2YoRmxvYXRQb2ludCk7CisgICAgc2l6ZV90IHBvaW50c0Nvc3QgPSBtX3BvaW50
cy0+YmFzZVZhbCgpLT5pdGVtcygpLnNpemUoKSAqIHNpemVvZihGbG9hdFBvaW50KTsKICAgICAv
LyBXZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBtZW1vcnkgd2hpY2ggaXMgYWxsb2NhdGVkIGJ5
IHRoZSBSZW5kZXJTVkdQYXRoOjptX3BhdGguCiAgICAgcmV0dXJuIHNpemVvZigqdGhpcykgKyAo
cmVuZGVyZXIoKSA/IHBvaW50c0Nvc3QgKiAyICsgc2l6ZW9mKFJlbmRlclNWR1BhdGgpIDogcG9p
bnRzQ29zdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCmluZGV4IDVjNDlmNTY0
OTRhLi41N2VlNWRhNTI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKQEAgLTEs
NyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR2VvbWV0cnlFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKQEAgLTMxLDEwICszMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
VkdQb2x5RWxlbWVudCA6IHB1YmxpYyBTVkdHZW9tZXRyeUVsZW1lbnQsIHB1YmxpYyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR1Bv
bHlFbGVtZW50KTsKIHB1YmxpYzoKLSAgICBSZWY8U1ZHUG9pbnRMaXN0PiBwb2ludHMoKTsKLSAg
ICBSZWY8U1ZHUG9pbnRMaXN0PiBhbmltYXRlZFBvaW50cygpOworICAgIGNvbnN0IFNWR1BvaW50
TGlzdCYgcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHMtPmN1cnJlbnRWYWx1ZSgpOyB9
CiAKLSAgICBjb25zdCBTVkdQb2ludExpc3RWYWx1ZXMmIHBvaW50TGlzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pbnRzLnZhbHVlKCk7IH0KKyAgICBTVkdQb2ludExpc3QmIHBvaW50cygpIHsgcmV0
dXJuIG1fcG9pbnRzLT5iYXNlVmFsKCk7IH0KKyAgICBTVkdQb2ludExpc3QmIGFuaW1hdGVkUG9p
bnRzKCkgeyByZXR1cm4gKm1fcG9pbnRzLT5hbmltVmFsKCk7IH0KIAogICAgIHNpemVfdCBhcHBy
b3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjMsNyArNjIsNyBAQCBw
cml2YXRlOgogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkg
eyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKLSAgICBTVkdBbmltYXRlZFBvaW50TGlzdEF0dHJpYnV0ZSBtX3BvaW50czsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+IG1fcG9pbnRzIHsgU1ZHQW5pbWF0ZWRQb2ludExpc3Q6
OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IDRkMTQ0MTVjZDU5Li42MjE5OTZlMzIxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTcxLDE2ICsxNzEsMTEgQEAgdm9p
ZCBTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgICAgIGZy
YW1lLT5zZXRQYWdlWm9vbUZhY3RvcihzY2FsZSk7CiB9CiAKLVJlZjxTVkdQb2ludD4gU1ZHU1ZH
RWxlbWVudDo6Y3VycmVudFRyYW5zbGF0ZSgpCi17Ci0gICAgcmV0dXJuIFNWR1N0YXRpY1Byb3Bl
cnR5VGVhck9mZjxTVkdTVkdFbGVtZW50LCBTVkdQb2ludD46OmNyZWF0ZSgqdGhpcywgbV9jdXJy
ZW50VHJhbnNsYXRlLCAmU1ZHU1ZHRWxlbWVudDo6dXBkYXRlQ3VycmVudFRyYW5zbGF0ZSk7Ci19
Ci0KIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBv
aW50JiB0cmFuc2xhdGlvbikKIHsKLSAgICBpZiAobV9jdXJyZW50VHJhbnNsYXRlID09IHRyYW5z
bGF0aW9uKQorICAgIGlmIChtX2N1cnJlbnRUcmFuc2xhdGUtPnZhbHVlKCkgPT0gdHJhbnNsYXRp
b24pCiAgICAgICAgIHJldHVybjsKLSAgICBtX2N1cnJlbnRUcmFuc2xhdGUgPSB0cmFuc2xhdGlv
bjsKKyAgICBtX2N1cnJlbnRUcmFuc2xhdGUtPnNldFZhbHVlKHRyYW5zbGF0aW9uKTsKICAgICB1
cGRhdGVDdXJyZW50VHJhbnNsYXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5o
CmluZGV4IDE5ZGM1ZTAwOGM0Li4yZTM0YzRmMDdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02Myw4ICs2Myw4IEBAIHB1YmxpYzogLy8g
RE9NCiAgICAgZmxvYXQgY3VycmVudFNjYWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDdXJyZW50
U2NhbGUoZmxvYXQpOwogCi0gICAgUmVmPFNWR1BvaW50PiBjdXJyZW50VHJhbnNsYXRlKCk7Ci0g
ICAgRmxvYXRQb2ludCBjdXJyZW50VHJhbnNsYXRlVmFsdWUoKSB7IHJldHVybiBtX2N1cnJlbnRU
cmFuc2xhdGU7IH0KKyAgICBTVkdQb2ludCYgY3VycmVudFRyYW5zbGF0ZSgpIHsgcmV0dXJuIG1f
Y3VycmVudFRyYW5zbGF0ZTsgfQorICAgIEZsb2F0UG9pbnQgY3VycmVudFRyYW5zbGF0ZVZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VHJhbnNsYXRlLT52YWx1ZSgpOyB9CiAKICAgICB1
bnNpZ25lZCBzdXNwZW5kUmVkcmF3KHVuc2lnbmVkIG1heFdhaXRNaWxsaXNlY29uZHMpOwogICAg
IHZvaWQgdW5zdXNwZW5kUmVkcmF3KHVuc2lnbmVkIHN1c3BlbmRIYW5kbGVJZCk7CkBAIC0xMDgs
NyArMTA4LDcgQEAgcHVibGljOgogICAgIFNNSUxUaW1lQ29udGFpbmVyJiB0aW1lQ29udGFpbmVy
KCkgeyByZXR1cm4gbV90aW1lQ29udGFpbmVyLmdldCgpOyB9CiAKICAgICB2b2lkIHNldEN1cnJl
bnRUcmFuc2xhdGUoY29uc3QgRmxvYXRQb2ludCYpOyAvLyBVc2VkIHRvIHBhbi4KLSAgICB2b2lk
IHVwZGF0ZUN1cnJlbnRUcmFuc2xhdGUoKTsgLy8gVXNlZCBmcm9tIERPTSBiaW5kaW5ncyB0byBj
cmVhdGUgYW4gU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmIGZvciBjdXJyZW50VHJhbnNsYXRlLgor
ICAgIHZvaWQgdXBkYXRlQ3VycmVudFRyYW5zbGF0ZSgpOwogCiAgICAgYm9vbCBoYXNJbnRyaW5z
aWNXaWR0aCgpIGNvbnN0OwogICAgIGJvb2wgaGFzSW50cmluc2ljSGVpZ2h0KCkgY29uc3Q7CkBA
IC0xNzEsMTAgKzE3MSwxMSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3VzZUN1cnJlbnRWaWV3
IHsgZmFsc2UgfTsKICAgICBSZWY8U01JTFRpbWVDb250YWluZXI+IG1fdGltZUNvbnRhaW5lcjsK
LSAgICBGbG9hdFBvaW50IG1fY3VycmVudFRyYW5zbGF0ZTsKICAgICBSZWZQdHI8U1ZHVmlld1Nw
ZWM+IG1fdmlld1NwZWM7CiAgICAgU3RyaW5nIG1fY3VycmVudFZpZXdGcmFnbWVudElkZW50aWZp
ZXI7CiAKKyAgICBSZWY8U1ZHUG9pbnQ+IG1fY3VycmVudFRyYW5zbGF0ZSB7IFNWR1BvaW50Ojpj
cmVhdGUoKSB9OworCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJv
eHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2Rl
V2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmlkbAppbmRleCBkOTY4N2QyMzlj
My4uM2RlYjA1ZWExODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5pZGwKQEAgLTQy
LDcgKzQyLDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1c2VDdXJyZW50Vmll
dzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHVmlld1NwZWMgY3VycmVudFZpZXc7CiAgICAg
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBjdXJyZW50U2NhbGU7Ci0gICAgW05ld09iamVj
dF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IGN1cnJlbnRUcmFuc2xhdGU7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IGN1cnJlbnRUcmFuc2xhdGU7CiAKICAgICB1bnNpZ25l
ZCBsb25nIHN1c3BlbmRSZWRyYXcob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBtYXhXYWl0TWlsbGlz
ZWNvbmRzID0gMCk7CiAgICAgdm9pZCB1bnN1c3BlbmRSZWRyYXcob3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBzdXNwZW5kSGFuZGxlSWQgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHJpbmdMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCmlu
ZGV4IGVkN2VhNDQ5Njg1Li5kMWUwMTA2OWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0cmluZ0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlz
dC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJTVkdQcmltaXRpdmVMaXN0LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXN0cy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgKaW5k
ZXggMTYyZWMxMjU4NjAuLjk2YzU3ZjRjMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGVzdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaApAQCAtMjEs
NiArMjEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIK
ICNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZhbHVlLmgKaW5kZXggYmY5MDYxNzk4NTMuLmM2ZTEwMWRkMmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VmFsdWUuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlNWR01hcmtlclR5cGVzLmgiCiAj
aW5jbHVkZSAiU1ZHTnVtYmVyTGlzdFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3Ry
ZWFtLmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHUHJl
c2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIK
ICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCkBAIC00NCwxOCArNDMsMTQgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBTVkdWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PAog
ICAgIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4qLAotICAgIGJvb2wqLAogICAg
IENvbG9yKiwKICAgICB1bnNpZ25lZCosCi0gICAgaW50KiwKLSAgICBzdGQ6OnBhaXI8aW50LCBp
bnQ+KiwKICAgICBTVkdMZW5ndGhWYWx1ZSosCiAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVlcyosCiAg
ICAgZmxvYXQqLAogICAgIFNWR051bWJlckxpc3RWYWx1ZXMqLAogICAgIHN0ZDo6cGFpcjxmbG9h
dCwgZmxvYXQ+KiwKICAgICBTVkdQYXRoQnl0ZVN0cmVhbSosCi0gICAgU1ZHUG9pbnRMaXN0VmFs
dWVzKiwKICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUqLAogICAgIEZsb2F0UmVjdCos
CiAgICAgU3RyaW5nKiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaAppbmRleCBlYTQ1N2I1
MzViZi4uYTRlZjRiNDc2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgKQEAgLTc2
LDQgKzc2LDI2IEBAIHByaXZhdGU6CiAgICAgfQogfTsKICAgICAKK3RlbXBsYXRlPHR5cGVuYW1l
IE93bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkUG9pbnRMaXN0QWNjZXNzb3IgZmluYWwgOiBw
dWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRQ
b2ludExpc3Q+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29y
PE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRQb2ludExpc3Q+OworICAgIHVzaW5nIEJhc2U6OnByb3Bl
cnR5OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8
U1ZHQW5pbWF0ZWRQb2ludExpc3Q+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIGNvbnN0ZXhw
ciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYgc2luZ2xldG9uKCkg
eyByZXR1cm4gQmFzZTo6dGVtcGxhdGUgc2luZ2xldG9uPFNWR0FuaW1hdGVkUG9pbnRMaXN0QWNj
ZXNzb3IsIHByb3BlcnR5PigpOyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFNW
R0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5cGUmIG93bmVyLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJp
YnV0ZUFuaW1hdG9yJiBhbmltYXRvcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHN0YXRp
Y19jYXN0PFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3ImPihhbmltYXRvcikuYXBwZW5kQW5p
bWF0ZWRJbnN0YW5jZShwcm9wZXJ0eShvd25lcikpOworICAgIH0KK307CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaAppbmRleCA4NWZmM2JkYmE4YS4uNTNhZTRmOTBmZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlB
bmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTc1LDQgKzc1LDIxIEBAIHByaXZhdGU6CiAg
ICAgfQogfTsKICAgICAKK2NsYXNzIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkUG9pbnRMaXN0
LCBTVkdBbmltYXRpb25Qb2ludExpc3RGdW5jdGlvbj4geworICAgIHVzaW5nIEJhc2UgPSBTVkdB
bmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRQb2ludExpc3QsIFNWR0FuaW1hdGlv
blBvaW50TGlzdEZ1bmN0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCitwdWJsaWM6Cisg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZFBvaW50TGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRQb2ludExpc3RBbmltYXRvcj4obmV3IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IoYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgcHJvZ3Jlc3Mo
U1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVw
ZWF0Q291bnQpIGZpbmFsCisgICAgeworICAgICAgICBtX2Z1bmN0aW9uLnByb2dyZXNzKHRhcmdl
dEVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBtX2FuaW1hdGVkLT5hbmltVmFsKCkp
OworICAgIH0KK307CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCmluZGV4IDhlZjc3MjZiYWIzLi5lNjY2ZWMy
MmMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5SW1wbC5oCkBAIC0zMSwxNiArMzEsMTkgQEAKICNpbmNsdWRlICJTVkdB
bmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkUG9p
bnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkUHJvcGVydHlMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRSZWN0LmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3QuaCIKKyNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBTVkdBbmltYXRlZEJvb2xlYW4gPSBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3Bl
cnR5PGJvb2w+OwogdXNpbmcgU1ZHQW5pbWF0ZWRJbnRlZ2VyID0gU1ZHQW5pbWF0ZWRQcmltaXRp
dmVQcm9wZXJ0eTxpbnQ+OwogCit1c2luZyBTVkdBbmltYXRlZFBvaW50TGlzdCA9IFNWR0FuaW1h
dGVkUHJvcGVydHlMaXN0PFNWR1BvaW50TGlzdD47CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oCmluZGV4IDhi
MTM3ODkxNzkxLi5hNmFjMDg1OTA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oCkBAIC0xICsxLDEzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIExpc3RUeXBlPgorY2xhc3MgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUxpc3QgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7CitwdWJsaWM6Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyBSZWY8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eUxpc3Q+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QoY29udGV4dEVsZW1lbnQsIHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICB9CisKKyAgICB+U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QoKQorICAgIHsKKyAgICAgICAgbV9iYXNlVmFsLT5kZXRhY2goKTsKKyAgICAgICAg
aWYgKG1fYW5pbVZhbCkKKyAgICAgICAgICAgIG1fYW5pbVZhbC0+ZGV0YWNoKCk7CisgICAgfQor
CisgICAgLy8gVXNlZCBieSB0aGUgRE9NLgorICAgIGNvbnN0IFJlZjxMaXN0VHlwZT4mIGJhc2VW
YWwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VWYWw7IH0KKworICAgIC8vIFVzZWQgYnkgU1ZHRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoKS4KKyAgICBSZWY8TGlzdFR5cGU+JiBiYXNlVmFsKCkgeyBy
ZXR1cm4gbV9iYXNlVmFsOyB9CisKKyAgICAvLyBVc2VkIGJ5IHRoZSBET00uCisgICAgY29uc3Qg
UmVmUHRyPExpc3RUeXBlPiYgYW5pbVZhbCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QqPih0aGlzKS0+ZW5zdXJlQW5pbVZhbCgpOyB9CisKKyAgICAv
LyBDYWxsZWQgYnkgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yIHRvIHBhc3MgdGhlIGFuaW1W
YWwgdG8gdGhlIFNWR0FuaW1hdGlvbkZ1bmN0aW9uOjpwcm9ncmVzcy4KKyAgICBSZWZQdHI8TGlz
dFR5cGU+JiBhbmltVmFsKCkgeyByZXR1cm4gZW5zdXJlQW5pbVZhbCgpOyB9CisKKyAgICAvLyBV
c2VkIHdoZW4gY29tbWl0dGluZyBhIGNoYW5nZSBmcm9tIHRoZSBTVkdBbmltYXRlZFByb3BlcnR5
IHRvIHRoZSBhdHRyaWJ1dGUuCisgICAgU3RyaW5nIGJhc2VWYWxBc1N0cmluZygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fYmFzZVZhbC0+dmFsdWVBc1N0cmluZygpOyB9CisKKyAgICAvLyBV
c2VkIHRvIGFwcGx5IHRoZSBTVkdBbmltYXRvciBjaGFuZ2UgdG8gdGhlIHRhcmdldCBlbGVtZW50
LgorICAgIFN0cmluZyBhbmltVmFsQXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzQW5pbWF0aW5nKCkpOworICAgICAgICByZXR1cm4gbV9hbmltVmFsLT52
YWx1ZUFzU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gTWFuYWdpbmcgdGhlIHJlbGF0aW9uc2hp
cCB3aXRoIHRoZSBvd25lci4KKyAgICB2b2lkIHNldERpcnR5KCkgb3ZlcnJpZGUgeyBtX2Jhc2VW
YWwtPnNldERpcnR5KCk7IH0KKyAgICBib29sIGlzRGlydHkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2Jhc2VWYWwtPmlzRGlydHkoKTsgfQorICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hy
b25pemUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPnN5bmNocm9uaXplKCk7IH0KKwor
ICAgIC8vIFVzZWQgYnkgUmVuZGVyU1ZHRWxlbWVudHMgYW5kIER1bXBSZW5kZXJUcmVlLgorICAg
IGNvbnN0IExpc3RUeXBlJiBjdXJyZW50VmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUX0lNUExJRVMoaXNBbmltYXRpbmcoKSwgbV9hbmltVmFsKTsKKyAgICAgICAgcmV0dXJuIGlz
QW5pbWF0aW5nKCkgPyAqbV9hbmltVmFsIDogbV9iYXNlVmFsLmdldCgpOworICAgIH0KKworICAg
IC8vIENvbnRyb2xsaW5nIHRoZSBhbmltYXRpb24uCisgICAgdm9pZCBzdGFydEFuaW1hdGlvbigp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9hbmltVmFsKQorICAgICAgICAgICAgKm1f
YW5pbVZhbCA9IG1fYmFzZVZhbDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW5zdXJlQW5p
bVZhbCgpOworICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5OjpzdGFydEFuaW1hdGlvbigpOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcEFuaW1hdGlvbigpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBpZiAobV9hbmltVmFsKQorICAgICAgICAgICAgKm1fYW5pbVZhbCA9IG1fYmFzZVZhbDsKKyAg
ICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6c3RvcEFuaW1hdGlvbigpOworICAgIH0KKworICAg
IC8vIENvbnRyb2xsaW5nIHRoZSBpbnN0YW5jZSBhbmltYXRpb24uCisgICAgdm9pZCBpbnN0YW5j
ZVN0YXJ0QW5pbWF0aW9uKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgbV9hbmltVmFsID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmPihhbmltYXRlZCkuYW5pbVZhbCgpOworICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5
OjppbnN0YW5jZVN0YXJ0QW5pbWF0aW9uKGFuaW1hdGVkKTsKKyAgICB9CisKKyAgICB2b2lkIGlu
c3RhbmNlU3RvcEFuaW1hdGlvbigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2FuaW1WYWwg
PSBudWxscHRyOworICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5OjppbnN0YW5jZVN0b3BBbmlt
YXRpb24oKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmd1bWVudHM+CisgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBTVkdBbmltYXRl
ZFByb3BlcnR5KGNvbnRleHRFbGVtZW50KQorICAgICAgICAsIG1fYmFzZVZhbChMaXN0VHlwZTo6
Y3JlYXRlKHRoaXMsIFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFkV3JpdGUsIHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKQorICAgIHsKKyAgICB9CisKKyAgICBSZWZQdHI8TGlz
dFR5cGU+JiBlbnN1cmVBbmltVmFsKCkKKyAgICB7CisgICAgICAgIGlmICghbV9hbmltVmFsKQor
ICAgICAgICAgICAgbV9hbmltVmFsID0gTGlzdFR5cGU6OmNyZWF0ZShtX2Jhc2VWYWwsIFNWR1By
b3BlcnR5QWNjZXNzOjpSZWFkT25seSk7CisgICAgICAgIHJldHVybiBtX2FuaW1WYWw7CisgICAg
fQorCisgICAgLy8gQ2FsbGVkIHdoZW4gbV9iYXNlVmFsIGNoYW5nZXMgb3IgYW4gaXRlbSBpbiBt
X2Jhc2VWYWwgY2hhbmdlcy4KKyAgICB2b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3Bl
cnR5KiBwcm9wZXJ0eSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX2FuaW1WYWwpCisg
ICAgICAgICAgICAqbV9hbmltVmFsID0gbV9iYXNlVmFsOworICAgICAgICBTVkdBbmltYXRlZFBy
b3BlcnR5Ojpjb21taXRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eSk7CisgICAgfQorCisgICAgUmVm
PExpc3RUeXBlPiBtX2Jhc2VWYWw7CisgICAgbXV0YWJsZSBSZWZQdHI8TGlzdFR5cGU+IG1fYW5p
bVZhbDsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oCmluZGV4IDhiMTM3
ODkxNzkxLi44YmNlNTg2MGIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oCkBA
IC0xICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KIAorI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdBbmltYXRpb25BZGRpdGl2ZUZ1
bmN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGlz
dFR5cGU+CitjbGFzcyBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbiA6IHB1YmxpYyBT
VkdBbmltYXRpb25BZGRpdGl2ZUZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CisgICAgU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24o
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAg
ICAgICAgOiBTVkdBbmltYXRpb25BZGRpdGl2ZUZ1bmN0aW9uKGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKQorICAgICAgICAsIG1fZnJvbShMaXN0VHlw
ZTo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKQorICAgICAg
ICAsIG1fdG8oTGlzdFR5cGU6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKSkKKyAgICAgICAgLCBtX3RvQXRFbmRPZkR1cmF0aW9uKExpc3RUeXBlOjpjcmVhdGUo
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpCisgICAgeworICAgIH0KKwor
cHJvdGVjdGVkOgorICAgIGNvbnN0IFJlZjxMaXN0VHlwZT4mIHRvQXRFbmRPZkR1cmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gIW1fdG9BdEVuZE9mRHVyYXRpb24tPmlzRW1wdHkoKSA/IG1fdG9BdEVu
ZE9mRHVyYXRpb24gOiBtX3RvOyB9CisKKyAgICBib29sIGFkanVzdEFuaW1hdGVkTGlzdChBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIGZsb2F0IHBlcmNlbnRhZ2UsIFJlZlB0cjxMaXN0VHlw
ZT4mIGFuaW1hdGVkLCBib29sIHJlc2l6ZUFuaW1hdGVkSWZOZWVkZWQgPSB0cnVlKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3RvLT5udW1iZXJPZkl0ZW1zKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgaWYgKG1fZnJvbS0+bnVtYmVyT2ZJdGVtcygpICYmIG1fZnJvbS0+
c2l6ZSgpICE9IG1fdG8tPnNpemUoKSkgeworICAgICAgICAgICAgaWYgKHBlcmNlbnRhZ2UgPj0g
MC41KQorICAgICAgICAgICAgICAgICphbmltYXRlZCA9IG1fdG87CisgICAgICAgICAgICBlbHNl
IGlmIChhbmltYXRpb25Nb2RlICE9IEFuaW1hdGlvbk1vZGU6OlRvKQorICAgICAgICAgICAgICAg
ICphbmltYXRlZCA9IG1fZnJvbTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChyZXNpemVBbmltYXRlZElmTmVlZGVkICYmIGFuaW1hdGVkLT5zaXpl
KCkgPCBtX3RvLT5zaXplKCkpCisgICAgICAgICAgICBhbmltYXRlZC0+cmVzaXplKG1fdG8tPnNp
emUoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFJlZjxMaXN0VHlwZT4g
bV9mcm9tOworICAgIFJlZjxMaXN0VHlwZT4gbV90bzsKKyAgICBSZWY8TGlzdFR5cGU+IG1fdG9B
dEVuZE9mRHVyYXRpb247Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9u
SW1wbC5oCmluZGV4IDhiMTM3ODkxNzkxLi45NzZhMDQxNTUyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25J
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKQEAgLTEgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwogCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU1ZHUG9p
bnRMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFNWR0VsZW1lbnQ7
CisKK2NsYXNzIFNWR0FuaW1hdGlvblBvaW50TGlzdEZ1bmN0aW9uIDogcHVibGljIFNWR0FuaW1h
dGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uPFNWR1BvaW50TGlzdD4geworcHVibGljOgorICAgIHVz
aW5nIEJhc2UgPSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbjxTVkdQb2ludExpc3Q+
OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisKKyAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhT
VkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgbV9mcm9tLT5wYXJzZShmcm9tKTsKKyAgICAgICAgbV90by0+cGFy
c2UodG8pOworICAgIH0KKworICAgIHZvaWQgc2V0VG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25z
dCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV90
b0F0RW5kT2ZEdXJhdGlvbi0+cGFyc2UodG9BdEVuZE9mRHVyYXRpb24pOworICAgIH0KKworICAg
IHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCosIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJl
cGVhdENvdW50LCBSZWZQdHI8U1ZHUG9pbnRMaXN0PiYgYW5pbWF0ZWQpCisgICAgeworICAgICAg
ICBpZiAoIWFkanVzdEFuaW1hdGVkTGlzdChtX2FuaW1hdGlvbk1vZGUsIHBlcmNlbnRhZ2UsIGFu
aW1hdGVkKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjb25zdCBWZWN0b3I8UmVm
PFNWR1BvaW50Pj4mIGZyb21JdGVtcyA9IG1fYW5pbWF0aW9uTW9kZSA9PSBBbmltYXRpb25Nb2Rl
OjpUbyA/IGFuaW1hdGVkLT5pdGVtcygpIDogbV9mcm9tLT5pdGVtcygpOworICAgICAgICBjb25z
dCBWZWN0b3I8UmVmPFNWR1BvaW50Pj4mIHRvSXRlbXMgPSBtX3RvLT5pdGVtcygpOworICAgICAg
ICBjb25zdCBWZWN0b3I8UmVmPFNWR1BvaW50Pj4mIHRvQXRFbmRPZkR1cmF0aW9uSXRlbXMgPSB0
b0F0RW5kT2ZEdXJhdGlvbigpLT5pdGVtcygpOworICAgICAgICBWZWN0b3I8UmVmPFNWR1BvaW50
Pj4mIGFuaW1hdGVkSXRlbXMgPSBhbmltYXRlZC0+aXRlbXMoKTsKKworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdG9JdGVtcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgRmxv
YXRQb2ludCBmcm9tID0gaSA8IGZyb21JdGVtcy5zaXplKCkgPyBmcm9tSXRlbXNbaV0tPnZhbHVl
KCkgOiBGbG9hdFBvaW50KCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IHRvID0gdG9JdGVtc1tp
XS0+dmFsdWUoKTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgdG9BdEVuZE9mRHVyYXRpb24gPSBp
IDwgdG9BdEVuZE9mRHVyYXRpb25JdGVtcy5zaXplKCkgPyB0b0F0RW5kT2ZEdXJhdGlvbkl0ZW1z
W2ldLT52YWx1ZSgpIDogRmxvYXRQb2ludCgpOworICAgICAgICAgICAgRmxvYXRQb2ludCYgYW5p
bWF0ZWQgPSBhbmltYXRlZEl0ZW1zW2ldLT52YWx1ZSgpOworCisgICAgICAgICAgICBmbG9hdCBh
bmltYXRlZFggPSBCYXNlOjpwcm9ncmVzcyhwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbS54
KCksIHRvLngoKSwgdG9BdEVuZE9mRHVyYXRpb24ueCgpLCBhbmltYXRlZC54KCkpOworICAgICAg
ICAgICAgZmxvYXQgYW5pbWF0ZWRZID0gQmFzZTo6cHJvZ3Jlc3MocGVyY2VudGFnZSwgcmVwZWF0
Q291bnQsIGZyb20ueSgpLCB0by55KCksIHRvQXRFbmRPZkR1cmF0aW9uLnkoKSwgYW5pbWF0ZWQu
eSgpKTsKKworICAgICAgICAgICAgYW5pbWF0ZWQgPSB7IGFuaW1hdGVkWCwgYW5pbWF0ZWRZIH07
CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRGcm9tQW5kVG9WYWx1
ZXMoU1ZHRWxlbWVudCopIG92ZXJyaWRlCisgICAgeworICAgICAgICBjb25zdCBWZWN0b3I8UmVm
PFNWR1BvaW50Pj4mIGZyb21JdGVtcyA9IG1fZnJvbS0+aXRlbXMoKTsKKyAgICAgICAgVmVjdG9y
PFJlZjxTVkdQb2ludD4+JiB0b0l0ZW1zID0gbV90by0+aXRlbXMoKTsKKworICAgICAgICBpZiAo
IWZyb21JdGVtcy5zaXplKCkgfHwgZnJvbUl0ZW1zLnNpemUoKSAhPSB0b0l0ZW1zLnNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZnJvbUl0ZW1zLnNpemUoKTsgKytpKQorICAgICAgICAgICAgdG9JdGVtc1tpXS0+c2V0VmFsdWUo
ZnJvbUl0ZW1zW2ldLT52YWx1ZSgpICsgdG9JdGVtc1tpXS0+dmFsdWUoKSk7CisgICAgfQorfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmli
dXRlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0
ZVJlZ2lzdHJ5LmgKaW5kZXggZGE5MTA1MjBhMjguLjAxN2IwNTYwYzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKQEAg
LTk1LDEyICs5NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5p
bWF0ZWRPcHRpb25hbE51bWJlckF0dHJpYnV0ZUFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRl
IHNpbmdsZXRvbjxhdHRyaWJ1dGVOYW1lLCBpZGVudGlmaWVyLCBhdHRyaWJ1dGUsIG9wdGlvbmFs
SWRlbnRpZmllciwgb3B0aW9uYWxBdHRyaWJ1dGU+KCkpOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRl
TmFtZSwgU1ZHQW5pbWF0ZWRQb2ludExpc3RBdHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0cmlidXRl
PgotICAgIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGUoKQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXJB
dHRyaWJ1dGUoU1ZHQW5pbWF0ZWRQb2ludExpc3RBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGU+
Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0cmlidXRlTmFtZSwgYXR0cmlidXRlPigpKTsKLSAgICB9
Ci0KICAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVk
TmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0F0dHJp
YnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+CiAgICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgKaW5k
ZXggMzk1NzNjNjNiZGMuLmNjZjEyNjFlMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5LmgKQEAgLTI4LDUgKzI4LDcwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgU1ZHUHJvcGVydHlBY2Nlc3MgOiB1aW50OF90IHsgUmVhZFdyaXRlLCBS
ZWFkT25seSB9OwogZW51bSBjbGFzcyBTVkdQcm9wZXJ0eVN0YXRlIDogdWludDhfdCB7IENsZWFu
LCBEaXJ0eSB9OwogCitjbGFzcyBTVkdQcm9wZXJ0eSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR1By
b3BlcnR5PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1ZHUHJvcGVydHkoKSA9IGRlZmF1bHQ7
CisKKyAgICAvLyBNYW5hZ2luZyB0aGUgcmVsYXRpb25zaGlwIHdpdGggdGhlIG93bmVyLgorICAg
IGJvb2wgaXNBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXI7IH0KKyAgICB2b2lkIGF0
dGFjaChTVkdQcm9wZXJ0eU93bmVyKiBvd25lciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX293bmVyKTsKKyAgICAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW4pOworICAgICAgICBtX293bmVyID0gb3duZXI7Cisg
ICAgICAgIG1fYWNjZXNzID0gYWNjZXNzOworICAgIH0KKworICAgIHZvaWQgZGV0YWNoKCkKKyAg
ICB7CisgICAgICAgIG1fb3duZXIgPSBudWxscHRyOworICAgICAgICBtX2FjY2VzcyA9IFNWR1By
b3BlcnR5QWNjZXNzOjpSZWFkV3JpdGU7CisgICAgICAgIG1fc3RhdGUgPSBTVkdQcm9wZXJ0eVN0
YXRlOjpDbGVhbjsKKyAgICB9CisKKyAgICBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fb3duZXIpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fb3duZXItPmF0dHJpYnV0ZUNvbnRleHRFbGVt
ZW50KCk7CisgICAgfQorCisgICAgdm9pZCBjb21taXRDaGFuZ2UoKQorICAgIHsKKyAgICAgICAg
aWYgKCFtX293bmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX293bmVyLT5jb21t
aXRQcm9wZXJ0eUNoYW5nZSh0aGlzKTsKKyAgICB9CisKKyAgICAvLyBET00gYWNjZXNzLgorICAg
IFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzOyB9Cisg
ICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3MgPT0gU1ZHUHJvcGVy
dHlBY2Nlc3M6OlJlYWRPbmx5OyB9CisKKyAgICAvLyBTeW5jaHJvbml6aW5nIHRoZSBTVkcgYXR0
cmlidXRlIGFuZCBpdHMgcmVmbGVjdGlvbiBoZXJlLgorICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUgPT0gU1ZHUHJvcGVydHlTdGF0ZTo6RGlydHk7IH0KKyAgICB2b2lk
IHNldERpcnR5KCkgeyBtX3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6RGlydHk7IH0KKyAgICBP
cHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKCkKKyAgICB7CisgICAgICAgIGlmIChtX3N0YXRl
ID09IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuOworICAgICAg
ICByZXR1cm4gdmFsdWVBc1N0cmluZygpOworICAgIH0KKworICAgIC8vIFRoaXMgaXMgdXNlZCB3
aGVuIGNhbGxpbmcgc2V0QXR0cmlidXRlKCkuCisgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVBc1N0
cmluZygpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKworcHJvdGVjdGVkOgorICAg
IFNWR1Byb3BlcnR5KFNWR1Byb3BlcnR5T3duZXIqIG93bmVyID0gbnVsbHB0ciwgU1ZHUHJvcGVy
dHlBY2Nlc3MgYWNjZXNzID0gU1ZHUHJvcGVydHlBY2Nlc3M6OlJlYWRXcml0ZSkKKyAgICAgICAg
OiBtX293bmVyKG93bmVyKQorICAgICAgICAsIG1fYWNjZXNzKGFjY2VzcykKKyAgICB7CisgICAg
fQorCisgICAgU1ZHUHJvcGVydHlPd25lciogbV9vd25lciB7IG51bGxwdHIgfTsKKyAgICBTVkdQ
cm9wZXJ0eUFjY2VzcyBtX2FjY2VzcyB7IFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFkV3JpdGUgfTsK
KyAgICBTVkdQcm9wZXJ0eVN0YXRlIG1fc3RhdGUgeyBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbiB9
OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5TGlzdC5oCmluZGV4IDhiMTM3ODkxNzkxLi4wYTExYTA1
ZGZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlM
aXN0LmgKQEAgLTEgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KIAorI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdMaXN0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgor
Y2xhc3MgU1ZHUHJvcGVydHlMaXN0IDogcHVibGljIFNWR0xpc3Q8UmVmPFByb3BlcnR5VHlwZT4+
LCBwdWJsaWMgU1ZHUHJvcGVydHlPd25lciB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZUxpc3Qg
PSBTVkdMaXN0PFJlZjxQcm9wZXJ0eVR5cGU+PjsKKyAgICB1c2luZyBCYXNlTGlzdDo6aXNFbXB0
eTsKKyAgICB1c2luZyBCYXNlTGlzdDo6c2l6ZTsKKyAgICB1c2luZyBCYXNlTGlzdDo6YXBwZW5k
OworCitwcm90ZWN0ZWQ6CisgICAgdXNpbmcgU1ZHUHJvcGVydHlPd25lcjo6U1ZHUHJvcGVydHlP
d25lcjsKKyAgICB1c2luZyBCYXNlTGlzdDo6bV9pdGVtczsKKyAgICB1c2luZyBCYXNlTGlzdDo6
bV9hY2Nlc3M7CisgICAgdXNpbmcgQmFzZUxpc3Q6Om1fb3duZXI7CisKKyAgICBTVkdQcm9wZXJ0
eUxpc3QoU1ZHUHJvcGVydHlPd25lciogb3duZXIgPSBudWxscHRyLCBTVkdQcm9wZXJ0eUFjY2Vz
cyBhY2Nlc3MgPSBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlKQorICAgICAgICA6IEJhc2VM
aXN0KG93bmVyLCBhY2Nlc3MpCisgICAgeworICAgIH0KKworICAgIH5TVkdQcm9wZXJ0eUxpc3Qo
KQorICAgIHsKKyAgICAgICAgLy8gRGV0YWNoIHRoZSBpdGVtcyBmcm9tIHRoZSBsaXN0IGJlZm9y
ZSBpdCBpcyBkZWxldGVkLgorICAgICAgICBkZXRhY2hJdGVtcygpOworICAgIH0KKworICAgIHZv
aWQgZGV0YWNoSXRlbXMoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBpdGVt
IDogbV9pdGVtcykKKyAgICAgICAgICAgIGl0ZW0tPmRldGFjaCgpOworICAgIH0KKworICAgIFNW
R1Byb3BlcnR5T3duZXIqIG93bmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9vd25lcjsg
fQorCisgICAgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdQcm9wZXJ0eSopIG92ZXJyaWRl
CisgICAgeworICAgICAgICBpZiAob3duZXIoKSkKKyAgICAgICAgICAgIG93bmVyKCktPmNvbW1p
dFByb3BlcnR5Q2hhbmdlKHRoaXMpOworICAgIH0KKworICAgIFJlZjxQcm9wZXJ0eVR5cGU+IGF0
KHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1faXRlbXMuYXQoaW5kZXgpLmNvcHlSZWYo
KTsKKyAgICB9CisKKyAgICBSZWY8UHJvcGVydHlUeXBlPiBpbnNlcnQodW5zaWduZWQgaW5kZXgs
IFJlZjxQcm9wZXJ0eVR5cGU+JiYgbmV3SXRlbSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFT
U0VSVChpbmRleCA8PSBzaXplKCkpOworCisgICAgICAgIC8vIFNwZWM6IGlmIG5ld0l0ZW0gaXMg
bm90IGEgZGV0YWNoZWQgb2JqZWN0LCB0aGVuIHNldCBuZXdJdGVtIHRvIGJlCisgICAgICAgIC8v
IGEgY2xvbmUgb2JqZWN0IG9mIG5ld0l0ZW0uCisgICAgICAgIGlmIChuZXdJdGVtLT5pc0F0dGFj
aGVkKCkpCisgICAgICAgICAgICBuZXdJdGVtID0gbmV3SXRlbS0+Y2xvbmUoKTsKKworICAgICAg
ICAvLyBTcGVjOiBBdHRhY2ggbmV3SXRlbSB0byB0aGUgbGlzdCBvYmplY3QuCisgICAgICAgIG5l
d0l0ZW0tPmF0dGFjaCh0aGlzLCBtX2FjY2Vzcyk7CisgICAgICAgIG1faXRlbXMuaW5zZXJ0KGlu
ZGV4LCBXVEZNb3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKKyAgICB9
CisKKyAgICBSZWY8UHJvcGVydHlUeXBlPiByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCBSZWY8UHJv
cGVydHlUeXBlPiYmIG5ld0l0ZW0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoaW5k
ZXggPCBzaXplKCkpOworICAgICAgICBSZWY8UHJvcGVydHlUeXBlPiYgaXRlbSA9IG1faXRlbXNb
aW5kZXhdOworCisgICAgICAgIC8vIFNwZWM6IERldGFjaCBpdGVtLgorICAgICAgICBpdGVtLT5k
ZXRhY2goKTsKKworICAgICAgICAvLyBTcGVjOiBpZiBuZXdJdGVtIGlzIG5vdCBhIGRldGFjaGVk
IG9iamVjdCwgdGhlbiBzZXQgbmV3SXRlbSB0byBiZQorICAgICAgICAvLyBhIGNsb25lIG9iamVj
dCBvZiBuZXdJdGVtLgorICAgICAgICBpZiAobmV3SXRlbS0+aXNBdHRhY2hlZCgpKQorICAgICAg
ICAgICAgaXRlbSA9IG5ld0l0ZW0tPmNsb25lKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGl0ZW0gPSBXVEZNb3ZlKG5ld0l0ZW0pOworCisgICAgICAgIC8vIFNwZWM6IEF0dGFjaCBuZXdJ
dGVtIHRvIHRoZSBsaXN0IG9iamVjdC4KKyAgICAgICAgaXRlbS0+YXR0YWNoKHRoaXMsIG1fYWNj
ZXNzKTsKKyAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKKyAgICB9CisKKyAgICBSZWY8UHJvcGVy
dHlUeXBlPiByZW1vdmUodW5zaWduZWQgaW5kZXgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBB
U1NFUlQoaW5kZXggPCBzaXplKCkpOworICAgICAgICBSZWY8UHJvcGVydHlUeXBlPiBpdGVtID0g
YXQoaW5kZXgpOworCisgICAgICAgIC8vIFNwZWM6IERldGFjaCBpdGVtLgorICAgICAgICBpdGVt
LT5kZXRhY2goKTsKKyAgICAgICAgbV9pdGVtcy5yZW1vdmUoaW5kZXgpOworICAgICAgICByZXR1
cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBSZWY8UHJvcGVydHlUeXBlPiBhcHBlbmQo
UmVmPFByb3BlcnR5VHlwZT4mJiBuZXdJdGVtKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgLy8g
U3BlYzogaWYgbmV3SXRlbSBpcyBub3QgYSBkZXRhY2hlZCBvYmplY3QsIHRoZW4gc2V0IG5ld0l0
ZW0gdG8gYmUKKyAgICAgICAgLy8gYSBjbG9uZSBvYmplY3Qgb2YgbmV3SXRlbS4KKyAgICAgICAg
aWYgKG5ld0l0ZW0tPmlzQXR0YWNoZWQoKSkKKyAgICAgICAgICAgIG5ld0l0ZW0gPSBuZXdJdGVt
LT5jbG9uZSgpOworCisgICAgICAgIC8vIFNwZWM6IEF0dGFjaCBuZXdJdGVtIHRvIHRoZSBsaXN0
IG9iamVjdC4KKyAgICAgICAgbmV3SXRlbS0+YXR0YWNoKHRoaXMsIG1fYWNjZXNzKTsKKyAgICAg
ICAgbV9pdGVtcy5hcHBlbmQoV1RGTW92ZShuZXdJdGVtKSk7CisgICAgICAgIHJldHVybiBhdChz
aXplKCkgLSAxKTsKKyAgICB9Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Njg3NGRjYTAxLi4wMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2Zm
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHkuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+IAotY2xhc3MgU1ZHU3Rh
dGljTGlzdFByb3BlcnR5VGVhck9mZiA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHk8UHJvcGVydHlU
eXBlPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgU2VsZiA9IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRl
YXJPZmY8UHJvcGVydHlUeXBlPjsKLSAgICB1c2luZyBCYXNlID0gU1ZHTGlzdFByb3BlcnR5PFBy
b3BlcnR5VHlwZT47Ci0KLSAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSB0eXBlbmFtZSBTVkdQcm9w
ZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVR5cGU7Ci0gICAgdXNpbmcgTGlzdEl0
ZW1UZWFyT2ZmID0gdHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlz
dEl0ZW1UZWFyT2ZmOwotCi0gICAgdXNpbmcgQmFzZTo6bV9yb2xlOwotICAgIHVzaW5nIEJhc2U6
Om1fdmFsdWVzOwotCi0gICAgc3RhdGljIFJlZjxTZWxmPiBjcmVhdGUoU1ZHRWxlbWVudCYgY29u
dGV4dEVsZW1lbnQsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2VsZihjb250ZXh0RWxlbWVudCwgdmFsdWVzKSk7Ci0gICAgfQotCi0g
ICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xlYXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6
OmNsZWFyVmFsdWVzKCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiBp
bml0aWFsaXplKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBCYXNlOjppbml0aWFsaXplVmFsdWVzKG5ld0l0ZW0pOwotICAgIH0KLQotICAgIEV4Y2Vw
dGlvbk9yPExpc3RJdGVtVHlwZT4gZ2V0SXRlbSh1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBCYXNlOjpnZXRJdGVtVmFsdWVzKGluZGV4KTsKLSAgICB9Ci0KLSAgICBFeGNl
cHRpb25PcjxMaXN0SXRlbVR5cGU+IGluc2VydEl0ZW1CZWZvcmUoY29uc3QgTGlzdEl0ZW1UeXBl
JiBuZXdJdGVtLCB1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpp
bnNlcnRJdGVtQmVmb3JlVmFsdWVzKG5ld0l0ZW0sIGluZGV4KTsKLSAgICB9Ci0KLSAgICBFeGNl
cHRpb25PcjxMaXN0SXRlbVR5cGU+IHJlcGxhY2VJdGVtKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3
SXRlbSwgdW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6cmVwbGFj
ZUl0ZW1WYWx1ZXMobmV3SXRlbSwgaW5kZXgpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPExp
c3RJdGVtVHlwZT4gcmVtb3ZlSXRlbSh1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBCYXNlOjpyZW1vdmVJdGVtVmFsdWVzKGluZGV4KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRp
b25PcjxMaXN0SXRlbVR5cGU+IGFwcGVuZEl0ZW0oY29uc3QgTGlzdEl0ZW1UeXBlJiBuZXdJdGVt
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmFwcGVuZEl0ZW1WYWx1ZXMobmV3SXRlbSk7
Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZihT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgUHJvcGVydHlUeXBlJiB2YWx1ZXMpCi0gICAgICAg
IDogQmFzZShVbmRlZmluZWRSb2xlLCB2YWx1ZXMsIG51bGxwdHIpCi0gICAgICAgICwgbV9jb250
ZXh0RWxlbWVudCgqY29udGV4dEVsZW1lbnQpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNS
ZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gbV9yb2xlID09
IEFuaW1WYWxSb2xlOwotICAgIH0KLQotICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgICAgIG1fdmFsdWVzLT5jb21t
aXRDaGFuZ2UobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgfQotCi0gICAgYm9vbCBwcm9jZXNzSW5j
b21pbmdMaXN0SXRlbVZhbHVlKGNvbnN0IExpc3RJdGVtVHlwZSYsIHVuc2lnbmVkKikgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIC8vIG5vLW9wIGZvciBzdGF0aWMgbGlzdHMKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBw
ZXIoUmVmPExpc3RJdGVtVGVhck9mZj4mLCB1bnNpZ25lZCopIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgUmVmPFNWR0VsZW1lbnQ+IG1fY29udGV4dEVsZW1lbnQ7Ci19OwotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5LmgKaW5kZXggOGIx
Mzc4OTE3OTEuLjFlMjUyNDNhMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdWYWx1ZVByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eS5oCkBAIC0xICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KIAorI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJTVkdQcm9wZXJ0eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFByb3BlcnR5VHlwZT4KK2NsYXNzIFNWR1ZhbHVlUHJvcGVydHkgOiBwdWJsaWMgU1ZH
UHJvcGVydHkgeworcHVibGljOgorICAgIHVzaW5nIFZhbHVlVHlwZSA9IFByb3BlcnR5VHlwZTsK
KworICAgIHN0YXRpYyBSZWY8U1ZHVmFsdWVQcm9wZXJ0eT4gY3JlYXRlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1ZhbHVlUHJvcGVydHkoKSk7CisgICAgfQorCisg
ICAgLy8gR2V0dGVyL1NldHRlciBmb3IgdGhlIHZhbHVlLgorICAgIGNvbnN0IFByb3BlcnR5VHlw
ZSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgdm9pZCBzZXRWYWx1ZShj
b25zdCBQcm9wZXJ0eVR5cGUmIHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZTsgfQorCisgICAgLy8g
VXNlZCB0aGUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yIHRvIHBhc3MgbV92YWx1ZSB0byBT
VkdBbmltYXRpb25GdW5jdGlvbi4KKyAgICBQcm9wZXJ0eVR5cGUmIHZhbHVlKCkgeyByZXR1cm4g
bV92YWx1ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgLy8gQ3JlYXRlIGFuIGluaXRpYWxpemVkIHBy
b3BlcnR5LCBlLmcgY3JlYXRpbmcgYW4gaXRlbSB0byBiZSBhcHBlbmRlZCBpbiBhbiBTVkdMaXN0
LgorICAgIFNWR1ZhbHVlUHJvcGVydHkoY29uc3QgUHJvcGVydHlUeXBlJiB2YWx1ZSkKKyAgICAg
ICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBOZWVkZWQgd2hlbiB2
YWx1ZSBzaG91bGQgbm90IGJlIGNvcGllZCwgZS5nLiBTVkdUcmFuc2Zyb21WYWx1ZS4KKyAgICBT
VkdWYWx1ZVByb3BlcnR5KFByb3BlcnR5VHlwZSYmIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUo
V1RGTW92ZSh2YWx1ZSkpCisgICAgeworICAgIH0KKworICAgICAgICAvLyBCYXNlIGFuZCBkZWZh
dWx0IGNvbnN0cnVjdG9yLiBEbyBub3QgdXNlICJ1c2luZyBTVkdQcm9wZXJ0eTo6U1ZHUHJvcGVy
dHkiIGJlY2F1c2Ugb2YgV2luZG93cyBhbmQgR1RLIHBvcnRzLgorICAgIFNWR1ZhbHVlUHJvcGVy
dHkoU1ZHUHJvcGVydHlPd25lciogb3duZXIgPSBudWxscHRyLCBTVkdQcm9wZXJ0eUFjY2VzcyBh
Y2Nlc3MgPSBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlKQorICAgICAgICA6IFNWR1Byb3Bl
cnR5KG93bmVyLCBhY2Nlc3MpCisgICAgeworICAgIH0KKworICAgIC8vIENyZWF0ZSBhbiBpbml0
aWFsaXplZCBhbmQgYXR0YWNoZWQgcHJvcGVydHkuCisgICAgU1ZHVmFsdWVQcm9wZXJ0eShTVkdQ
cm9wZXJ0eU93bmVyKiBvd25lciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzLCBjb25zdCBQcm9w
ZXJ0eVR5cGUmIHZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5KG93bmVyLCBhY2Nlc3MpCisg
ICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgUHJvcGVydHlUeXBl
IG1fdmFsdWU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3QuaAppbmRleCA4YjEzNzg5MTc5MS4uNjA2Y2VkNmE0MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVy
dHlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9w
ZXJ0eUxpc3QuaApAQCAtMSArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCiAKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUHJvcGVy
dHlMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgUHJv
cGVydHlUeXBlPgorY2xhc3MgU1ZHVmFsdWVQcm9wZXJ0eUxpc3QgOiBwdWJsaWMgU1ZHUHJvcGVy
dHlMaXN0PFByb3BlcnR5VHlwZT4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBTVkdQcm9w
ZXJ0eUxpc3Q8UHJvcGVydHlUeXBlPjsKKyAgICB1c2luZyBCYXNlOjpjbGVhckl0ZW1zOworICAg
IHVzaW5nIEJhc2U6Oml0ZW1zOworICAgIHVzaW5nIEJhc2U6OnNpemU7CisKKyAgICBTVkdWYWx1
ZVByb3BlcnR5TGlzdCYgb3BlcmF0b3I9KGNvbnN0IFNWR1ZhbHVlUHJvcGVydHlMaXN0JiBvdGhl
cikKKyAgICB7CisgICAgICAgIGNsZWFySXRlbXMoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBpdGVtIDogb3RoZXIuaXRlbXMoKSkKKyAgICAgICAgICAgIGFwcGVuZChQcm9wZXJ0eVR5cGU6
OmNyZWF0ZShpdGVtLT52YWx1ZSgpKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisK
KyAgICAvLyBUaGlzIGNhc3Rpbmcgb3BlcmF0b3IgcmV0dXJucyBhIFZlY3RvciBvZiB0aGUgdW5k
ZXJseWluZyBWYWx1ZVR5cGUsCisgICAgLy8gZm9yIGV4YW1wbGUgVmVjdG9yPGZsb2F0PiBmcm9t
IFNWR051bWJlckxpc3QuCisgICAgb3BlcmF0b3IgVmVjdG9yPHR5cGVuYW1lIFByb3BlcnR5VHlw
ZTo6VmFsdWVUeXBlPigpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8dHlwZW5hbWUgUHJv
cGVydHlUeXBlOjpWYWx1ZVR5cGU+IHZhbHVlczsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBp
dGVtIDogaXRlbXMoKSkKKyAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoaXRlbS0+dmFsdWUoKSk7
CisgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgfQorCisgICAgdm9pZCByZXNpemUoc2l6ZV90
IG5ld1NpemUpCisgICAgeworICAgICAgICAvLyBBZGQgbmV3IGl0ZW1zLgorICAgICAgICB3aGls
ZSAoc2l6ZSgpIDwgbmV3U2l6ZSkKKyAgICAgICAgICAgIGFwcGVuZChQcm9wZXJ0eVR5cGU6OmNy
ZWF0ZSgpKTsKKworICAgICAgICAvLyBSZW1vdmUgZXhpc3RpbmcgaXRlbXMuCisgICAgICAgIHdo
aWxlIChzaXplKCkgPiBuZXdTaXplKQorICAgICAgICAgICAgcmVtb3ZlKHNpemUoKSAtIDEpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2U6OmFwcGVuZDsKKyAgICB1c2luZyBC
YXNlOjpyZW1vdmU7CisKKyAgICAvLyBCYXNlIGFuZCBkZWZhdWx0IGNvbnN0cnVjdG9yLiBEbyBu
b3QgdXNlICJ1c2luZyBCYXNlOjpCYXNlIiBiZWNhdXNlIG9mIFdpbmRvd3MgYW5kIEdUSyBwb3J0
cy4KKyAgICBTVkdWYWx1ZVByb3BlcnR5TGlzdChTVkdQcm9wZXJ0eU93bmVyKiBvd25lciA9IG51
bGxwdHIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcyA9IFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFk
V3JpdGUpCisgICAgICAgIDogQmFzZShvd25lciwgYWNjZXNzKQorICAgIHsKKyAgICB9CisKKyAg
ICAvLyBVc2VkIGJ5IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0IHdoZW4gY3JlYXRpbmcgaXQgYW5p
bVZhbCBmcm9tIGJhc2VWYWwuCisgICAgU1ZHVmFsdWVQcm9wZXJ0eUxpc3QoY29uc3QgU1ZHVmFs
dWVQcm9wZXJ0eUxpc3QmIG90aGVyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MgPSBTVkdQcm9w
ZXJ0eUFjY2Vzczo6UmVhZFdyaXRlKQorICAgICAgICA6IEJhc2Uob3RoZXIub3duZXIoKSwgYWNj
ZXNzKQorICAgIHsKKyAgICAgICAgLy8gQ2xvbmUgYWxsIGl0ZW1zLgorICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGl0ZW0gOiBvdGhlci5pdGVtcygpKQorICAgICAgICAgICAgYXBwZW5kKFByb3Bl
cnR5VHlwZTo6Y3JlYXRlKGl0ZW0tPnZhbHVlKCkpKTsKKyAgICB9Cit9OworCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365520</attachid>
            <date>2019-03-21 01:57:58 -0700</date>
            <delta_ts>2019-03-21 15:22:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195905-20190321015757.patch</filename>
            <type>text/plain</type>
            <size>93487</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA4NTNkMzEzN2Q4NGJh
MGNhNzE1MzQzZDdkZmMzMjEzODEwNmZmYS4uNWYxNjM2YjlhNzY4MzhhZGE2MzEyZjNlZmU5ZGZi
NTAwZTQ5ODJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1OSBAQAorMjAxOS0wMy0yMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNW
RyB0ZWFyIG9mZiBvYmplY3RzIGZvciBTVkdQb2ludCwgU1ZHUG9pbnRMaXN0IGFuZCBTVkdBbmlt
YXRlZFBvaW50TGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk1OTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVG8gcmVtb3ZlIHRoZSBTVkcgdGVhciBvZmYgb2JqZWN0cyBmb3IgU1ZHUG9pbnQsIFNW
R1BvaW50TGlzdCBhbmQgCisgICAgICAgIFNWR0FuaW1hdGVkUG9pbnRMaXN0LCB0aGVzZSBjaGFu
Z2VzIGFyZSBuZWVkZWQ6CisKKyAgICAgICAgLS0gRGVmaW5lIFNWR1BvaW50IHRvIGJlIGEgc3Vw
ZXJjbGFzcyBvZiBTVkdWYWx1ZVByb3BlcnR5PEZsb2F0UG9pbnQ+LgorCisgICAgICAgIC0tIERl
ZmluZSBTVkdBbmltYXRlZFBvaW50TGlzdCB0byBiZSBhIHN1cGVyY2xhc3Mgb2YgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUxpc3Q8U1ZHUG9pbnRMaXN0PgorCisgICAgICAgIC0tIEFkZCBTVkdQcm9wZXJ0
eUxpc3Qgd2hpY2ggaXMgYSBzdXBlcmNsYXNzIG9mIFNWR0xpc3QuIEl0cyBpdGVtcyBhcmUKKyAg
ICAgICAgICAgZGVmaW5lZCB0byBSZWZDb3VudGVkLiBJdCBpcyB0aGUgYmFzZSBjbGFzcyBvZiBT
VkdWYWx1ZVByb3BlcnR5TGlzdAorICAgICAgICAgICBhbmQgaXQgd2lsbCBiZSAgdGhlIGJhc2Ug
Y2xhc3Mgb2YgU1ZHUGF0aFNlZ0xpc3QgaW4gYSBsYXRlciBwYXRjaC4KKworICAgICAgICAtLSBB
ZGQgU1ZHVmFsdWVQcm9wZXJ0eUxpc3Qgd2hpY2ggaXMgdGhlIGJhc2UgY2xhc3Mgb2YgYWxsIHRo
ZSBsaXN0cyB3aG9zZQorICAgICAgICAgICBpdGVtcyBhcmUgYmFja2VkIGJ5IGEgdmFsdWUgb2Jq
ZWN0cyBsaWtlIFNWR1BvaW50LiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuCisgICAgICAgICAgIFNW
R1Byb3BlcnR5TGlzdCBhbmQgU1ZHVmFsdWVQcm9wZXJ0eUxpc3QgaXMgdGhlIGZvcm1lciBjbGFz
cyBjYW4gc3RvcmUKKyAgICAgICAgICAgYSBSZWYgcG9pbnRlciBvZiB0aGUgYmFzZSBjbGFzcyBs
aWtlIFNWR1BhdGhTZWcgd2hpbGUgdGhlIGxhdGVyIHR5cGUKKyAgICAgICAgICAgaGFzIHRvIHN0
b3JlIHRoZSBzYW1lIHR5cGUgZm9yIGFsbCB0aGUgaXRlbXMuCisKKyAgICAgICAgLS0gQWRkIFNW
R0FuaW1hdGVkUHJvcGVydHlMaXN0IHdoaWNoIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBhbGwgdGhl
IGFuaW1hdGVkCisgICAgICAgICAgIGxpc3RzLiBOb3RlIHRoYXQ6CisgICAgICAgICAgIDEpIFNW
R0VsZW1lbnQgb3ducyBTVkdBbmltYXRlZFByb3BlcnR5TGlzdAorICAgICAgICAgICAyKSBTVkdB
bmltYXRlZFByb3BlcnR5TGlzdCBvd25zIG1fYmFzZVZhbCB3aG9zZSB0eXBlIGlzIFNWR0xpc3QK
KyAgICAgICAgICAgMykgbV9iYXNlVmFsIG93bnMgdGhlIGl0ZW1zIHdob3NlIHR5cGUgaXMgYSBz
dXBlcmNsYXNzIG9mIFNWR1Byb3BlcnR5LgorICAgICAgICAgICBXaGVuIGNoYW5naW5nIGFuIGl0
ZW0sIGl0IGNhbGxzIGl0cyBvd25lciB3aGljaCBpcyBhbiBTVkdMaXN0LgorICAgICAgICAgICBT
VkdMaXN0IGNhbGxzIGl0cyBvd25lciB3aGljaCBpcyBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC4K
KyAgICAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QgY2FsbHMgaXRzIG93bmVyIHdoaWNo
IFNWR0VsZW1lbnQgdG8gY29tbWl0CisgICAgICAgICAgIHRoZSBjaGFuZ2UuIExhdGVyIFNWR0Fu
aW1hdGVkUHJvcGVydHlMaXN0OjpzeW5jaHJvbml6ZSgpIGlzIGNhbGxlZCAKKyAgICAgICAgICAg
d2hpY2ggcmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWVBc1N0cmluZygpIHRvIHVwZGF0ZSB0aGUg
cmVmbGVjdGluZworICAgICAgICAgICBhdHRyaWJ1dGUuCisKKyAgICAgICAgLS0gTmV3IGFjY2Vz
c29yLCBhbmltYXRvciBhbmQgYW5pbWF0aW9uIGZ1bmN0aW9uIGFyZSBhZGRlZCB0byBhY2Nlc3MK
KyAgICAgICAgICAgYW5kIGFuaW1hdGUgYSBtZW1iZXIgb2YgdHlwZSBTVkdBbmltYXRlZFByb3Bl
cnR5TGlzdC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1BhdGhE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tQ2lyY2xlRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpwYXRoRnJvbUVsbGlwc2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhdGhGcm9tTGluZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGF0aEZyb21QYXRoRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbVBvbHlnb25FbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhdGhGcm9tUG9seWxpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OnBhdGhGcm9tUmVjdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6cGF0aEZyb21HcmFwaGlj
c0VsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuaDoKKyAgICAg
ICAgVGhlIElETCBvZiBTVkdQb2x5RWxlbWVudCBpbnRlcmZhY2UgcmVxdWlyZXMgdGhlIGZvbGxv
d2luZyBhdHRyaWJ1dGU6CisgICAgICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnRM
aXN0IHBvaW50czsKKyAgICAgICAgRm9yIHdoaWNoIHdlIHJldHVybjoKKyAgICAgICAgICAgIFNW
R1BvaW50TGlzdCYgcG9pbnRzKCkgeyByZXR1cm4gbV9wb2ludHMtPmJhc2VWYWwoKTsgfQorICAg
ICAgICBCdXQgZm9yIGFsbCB0aGUgb3RoZXIgcHJvcGVydGllcyB3ZSByZXR1cm4gdGhlIGN1cnJl
bnRWYWx1ZSgpLiBTbyB0byBoYXZlCisgICAgICAgIHRoZSB0d28gZnVuY3Rpb25zIHdpdGggdGhl
IHNhbWUgbmFtZSwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBhZGRlZDoKKyAgICAgICAgICAg
IGNvbnN0IFNWR1BvaW50TGlzdCYgcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHMtPmN1
cnJlbnRWYWx1ZSgpOyB9CisgICAgICAgIFRoaXMgZGVmaW5pdGlvbiByZXF1aXJlcyBjaGFuZ2lu
ZyBhbGwgY2FsbGVycyB0byBiZSBjb25zdC4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6dHlwZSBj
b25zdCk6CisgICAgICAgIFRoaXMgZnVuY3Rpb24gaGFkIGEgYmFkIGRlc2lnbi4gSXQgd2FzIGRl
c2lnbmVkIHRvIHVzZSB0aGUgaW5kZXggb2YgdGhlCisgICAgICAgIHZhcmlhbnQgYXMgdGhlIEFu
aW1hdGVkUHJvcGVydHlUeXBlLiBCdXQgd2hlbiBzb21lIG9mIHRoZSB0eXBlcyBhcmUgcmVtb3Zl
ZAorICAgICAgICBmcm9tIFNWR1ZhbHVlVmFyaWFudCwgdGhpcyBicm9rZSB0aGluZ3MuIFRoaXMg
Zml4IGlzIHRlbXBvcmFyeSB0aWxsIHRoZSAKKyAgICAgICAgY2xhc3MgU1ZHVmFsdWVWYXJpYW50
IGlzIHJlbW92ZWQuCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisgICAgICAgICogc3Zn
L1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdQYXJz
ZXJVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRzTGlzdEZyb21TVkdEYXRh
KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmg6CisgICAgICAg
ICogc3ZnL1NWR1BvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50OjpjbG9uZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQb2ludDo6eCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludDo6c2V0WCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQb2ludDo6eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2lu
dDo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludDo6bWF0cml4VHJhbnNmb3JtIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50OjptYXRyaXhUcmFuc2Zvcm0pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6OlNWR1BvaW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBzdmcvU1ZHUG9pbnQuaWRsOgorICAgICAgICBtYXRyaXhUcmFuc2Zvcm0oKSBzaG91
bGQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4KKworICAgICAgICAqIHN2Zy9TVkdQb2ludExpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvaW50TGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BvaW50TGlzdDo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnRM
aXN0OjpTVkdQb2ludExpc3QpOiBEZWxldGVkLgorICAgICAgICBNb3ZlIHRoZSBwYXJzZSgpIGFu
ZCB2YWx1ZUFzU3RyaW5nKCkgbWV0aG9kcyB0byBTVkdQb2ludExpc3QuIEl0IGlzIG5vdworICAg
ICAgICBhIHN1cGVyY2xhc3Mgb2YgU1ZHVmFsdWVQcm9wZXJ0eUxpc3QuIEl0cyBpdGVtcyBhcmUg
b2YgdHlwZSBSZWY8U1ZHUG9pbnQ+LgorCisgICAgICAgICogc3ZnL1NWR1BvaW50TGlzdFZhbHVl
cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5oOiBSZW1v
dmVkLgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQb2x5RWxlbWVudDo6U1ZHUG9seUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UG9seUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlF
bGVtZW50OjphcHByb3hpbWF0ZU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9seUVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6cG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BvbHlFbGVtZW50OjphbmltYXRlZFBvaW50cyk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR1BvbHlFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6
cG9pbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludHMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludExpc3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmF0dHJpYnV0ZVJlZ2lzdHJ5KTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50VHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRUcmFuc2xhdGUpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaWRsOgor
ICAgICAgICBEZWZpbmUgY3VycmVudFRyYW5zbGF0ZSBwcm9wZXJ0eSB0byBiZSBvZiB0eXBlIFJl
ZjxTVkdQb2ludD4uIFdoZW4gcmVxdWVzdGluZworICAgICAgICBpdCBqdXN0IHJldHVybiBhIHJl
ZmVyZW5jZSB0byBpdC4KKworICAgICAgICAqIHN2Zy9TVkdWYWx1ZS5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOiBBZGRlZC4KKyAgICAg
ICAgRGVmaW5lIHRoZSBhY2Nlc3NvciwgdGhlIGFuaW1hdG9yIGFuZCB0aGUgYW5pbWF0ZWQgdHlw
ZSBvZiBTVkdQb2ludExpc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVy
dHlMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eUxp
c3Q6On5TVkdBbmltYXRlZFByb3BlcnR5TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFByb3BlcnR5TGlzdDo6YmFzZVZhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFByb3BlcnR5TGlzdDo6YmFzZVZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFByb3BlcnR5TGlzdDo6YW5pbVZhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFByb3BlcnR5TGlzdDo6YW5pbVZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFByb3BlcnR5TGlzdDo6Y3VycmVudFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkUHJvcGVydHlMaXN0OjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5TGlzdDo6ZW5zdXJlQW5pbVZhbCk6Cisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5j
dGlvbjo6U1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb246OnRvQXRFbmRPZkR1cmF0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9u
OjphZGp1c3RBbmltYXRlZExpc3QpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGlvblBvaW50TGlzdEZ1bmN0aW9uOjpwcm9ncmVzcyk6CisgICAgICAgIERlZmlu
ZSB0aGUgYW5pbWF0aW9uIGZ1bmN0aW9uIGZvciBhbmltYXRpbmcgU1ZHUG9pbnRMaXN0LgorCisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUxpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTVkdQcm9wZXJ0eUxpc3Q6OlNWR1Byb3BlcnR5TGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQcm9wZXJ0eUxpc3Q6On5TVkdQcm9wZXJ0eUxpc3QpOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UHJvcGVydHlPd25lclJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5KToKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR1ZhbHVlUHJvcGVydHlMaXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVmFsdWVQcm9wZXJ0eUxpc3Q6Om9wZXJhdG9yIFZlY3Rvcjx0eXBlbmFtZSBQcm9wZXJ0eVR5
cGU6OlZhbHVlVHlwZT4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmFsdWVQcm9wZXJ0
eUxpc3Q6OnJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWYWx1ZVByb3BlcnR5TGlzdDo6
U1ZHVmFsdWVQcm9wZXJ0eUxpc3QpOgorCiAyMDE5LTAzLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNsdWRlIFdBTCBhbmQgU0hNIGZpbGUgc2l6ZSBp
biBJREIgZGF0YWJhc2Ugc2l6ZSBjb21wdXRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA2ZWRjNDYx
Nzg3NTZhMTE4MmIxNWNjZjBlZGZjMGU0MjJlZjY0M2NjLi4yN2E0N2Q3ZTJiNmI3MTFlMWIxNjJj
ZmQyOGZiYzY2NzllNGQwMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjI3NSw3ICsyMjc1LDYgQEAg
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAK
IHN2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAot
c3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAogc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcAog
c3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmlt
YXRvci5jcHAKQEAgLTIzNjgsNyArMjM2Nyw2IEBAIHN2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNw
cAogc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3BwCiBzdmcvU1ZHUGF0aFV0aWxp
dGllcy5jcHAKIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKLXN2Zy9TVkdQb2ludExpc3RWYWx1
ZXMuY3BwCiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwCiBzdmcvU1ZHUG9seWdvbkVsZW1lbnQuY3Bw
CiBzdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUwZjEzYzViZWJiMDI2YWQ4YTQ1ODcz
NDMzNzA2NzRmMzUxMTE4NWIuLjBjNzE1MmJhYTJmMDFhNDBiMzBjYjE0OWQ5OWMzMzMxMmQ1OTI5
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyMjIsNyArMTIyMiw2IEBACiAJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAv
KiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDExM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yLmggKi87IH07CiAJCTQzOUQzMzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdB
bmltYXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAq
LzsgfTsKIAkJNDNCODVFRDQxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0M0I4NUVEMjE4Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQ
c2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLmNwcCAqLzsgfTsKLQkJNDNCOTMz
NjkxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0I5MzM2NzEzQjI2MUIxMDA0NTg0
QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCAqLzsgfTsKIAkJNDNDMDkyQkMxMkQ5RTRFRTAw
QTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQzA5MkJBMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0LmggKi87IH07CiAJCTQzRURENjdGMUI0ODVEQkYwMDY0MEU3NSAv
KiBDb21iaW5lZEZpbHRlcnNBbHBoYWJldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDNFREQ2N0QxQjQ4NURCRjAwNjQwRTc1IC8qIENvbWJpbmVkRmls
dGVyc0FscGhhYmV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDQxNTI5MkUwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MTUy
OTJDMEUxQUU4QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc2NjksOCArNzY2OCw2
IEBACiAJCTQzQjg1RUQyMThDQkVDNTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5k
Q29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLmNw
cDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENv
bXBhdGliaWxpdHlFbGVtZW50TWFwLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJNDNCODVFRDMxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5ncGVyZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBT
ZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuZ3BlcmY7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1NlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmls
aXR5RWxlbWVudE1hcC5ncGVyZjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJNDNCODVFRDYxOENCRUM5NzAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21w
YXRpYmlsaXR5RWxlbWVudE1hcC5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZWxlY3RvclBz
ZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQzQjkzMzY3MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFBvaW50
TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0M0I5MzM2ODEzQjI2MUIxMDA0
NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0M0MwOTJCOTEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNDMDky
QkExMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VC
dWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTUyMyw2ICs5NTIwLDExIEBA
CiAJCTcyNjZGMDE1MjI0MUMwOTgwMDgzMzk3NSAvKiBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTYyMjQxQzBGRTAwODMzOTc1IC8qIFNW
R1Byb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlBbmltYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAxODIyNDI5Q0ZEMDA4MzM5NzUg
LyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2NkYwMjUyMjQzMEY4QzAwODMzOTc1IC8qIFNWR1Zh
bHVlUHJvcGVydHlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlUHJvcGVydHlMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjZGMDI3MjI0MzEwOTIwMDgzMzk3NSAv
KiBTVkdQcm9wZXJ0eUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjZGMDI4MjI0MzEyMDMwMDgzMzk3NSAvKiBT
VkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
QW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyNjZGMDI5MjI0MzEyQjEwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2
ZUxpc3RGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RG
dW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjY2RjAyQTIyNDMxNDlC
MDA4MzM5NzUgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3
QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTcz
Nyw4ICs5NzM5LDYgQEAKIAkJN0MzOUMzNjMxRERBODY0OTAwRkVGQjI5IC8qIFNWR0xlbmd0aExp
c3RWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM2ODFEREI4NkQz
MDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdOdW1iZXJMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MzOUMzNjkxRERCODZEMzAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RW
YWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTnVtYmVyTGlzdFZh
bHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzM5QzM2QTFEREI4NzFDMDBG
RUZCMjkgLyogU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNWR1BvaW50TGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdDMzlDMzZCMUREQjg3MUMwMEZFRkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUG9pbnRMaXN0VmFsdWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZDMUREQjhCQjAwMEZFRkIyOSAv
KiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzM5QzM2RDFEREI4QkIwMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZh
bHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZFMUREQkEzRTAw
MEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoU2VnTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNjIyMCw2ICsxNjIyMCw3IEBACiAJCQkJNTVFRTUzNTYyMjNCMjlG
NzAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCAqLywKIAkJCQkw
ODhBMERGRDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9u
LmggKi8sCiAJCQkJNTVFRTUzNUMyMjNCMkEwRDAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVy
dHlJbXBsLmggKi8sCisJCQkJNzI2NkYwMkEyMjQzMTQ5QjAwODMzOTc1IC8qIFNWR0FuaW1hdGVk
UHJvcGVydHlMaXN0LmggKi8sCiAJCQkJNTVCRTAyNUUyMjNCMjlDNDAwMzJGMDhBIC8qIFNWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3IuaCAqLywKIAkJCQk1NUVFNTM1RDIyM0IyQTBEMDBG
QkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaCAqLywKIAkJCQk1
NUVFNTM1RjIyM0IyQTBGMDBGQkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRv
ci5oICovLApAQCAtMTYyMzAsNiArMTYyMzEsOCBAQAogCQkJCTA4NUExNTkyMTI4OUE4REQwMDI3
MTBFMyAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJ
CQk3MjE0NDM0NTIyNDBDOEJBMDBGMTJGRjcgLyogU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5Lmgg
Ki8sCiAJCQkJNTVCRTAyNUYyMjNCMjlDNTAwMzJGMDhBIC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZl
RnVuY3Rpb24uaCAqLywKKwkJCQk3MjY2RjAyOTIyNDMxMkIxMDA4MzM5NzUgLyogU1ZHQW5pbWF0
aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCAqLywKKwkJCQk3MjY2RjAyODIyNDMxMjAzMDA4MzM5
NzUgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmggKi8sCiAJCQkJNTVF
RTUzNUUyMjNCMkEwRTAwRkJBOTQ0IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlv
bi5oICovLAogCQkJCTcyNjZGMDE4MjI0MjlDRkQwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRp
dGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmNwcCAqLywKIAkJCQk1NUJFMDI1OTIyM0IyOUMxMDAzMkYw
OEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oICovLApAQCAtMTYy
NjEsNiArMTYyNjQsNyBAQAogCQkJCTU1RENDNTI3MjI0MDc1MEIwMEMyNkUzMiAvKiBTVkdQcm9w
ZXJ0eUFjY2Vzc29ySW1wbC5oICovLAogCQkJCTcyNjZGMDE2MjI0MUMwRkUwMDgzMzk3NSAvKiBT
VkdQcm9wZXJ0eUFuaW1hdG9yLmggKi8sCiAJCQkJNzI2NkYwMTMyMjQxQkNFMjAwODMzOTc1IC8q
IFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmggKi8sCisJCQkJNzI2NkYwMjcyMjQzMTA5MjAw
ODMzOTc1IC8qIFNWR1Byb3BlcnR5TGlzdC5oICovLAogCQkJCTU1RUU1MzYwMjIzQjJBMjEwMEZC
QTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi8sCiAJCQkJNTVCRTAyNUMyMjNCMjlDMzAwMzJG
MDhBIC8qIFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oICovLAogCQkJCTU1QkUwMjU3MjIzQjI5
QzAwMDMyRjA4QSAvKiBTVkdQcm9wZXJ0eVJlZ2lzdHJ5LmggKi8sCkBAIC0xNjI2OCw2ICsxNjI3
Miw3IEBACiAJCQkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRz
LmggKi8sCiAJCQkJMDgxM0E0RTkxMjg0MTMyNjAwOTkyNTExIC8qIFNWR1N0YXRpY1Byb3BlcnR5
VGVhck9mZi5oICovLAogCQkJCTcyMTQ0MzQ2MjI0MENBRDIwMEYxMkZGNyAvKiBTVkdWYWx1ZVBy
b3BlcnR5LmggKi8sCisJCQkJNzI2NkYwMjUyMjQzMEY4QzAwODMzOTc1IC8qIFNWR1ZhbHVlUHJv
cGVydHlMaXN0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHByb3BlcnRpZXM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjQxNDYsOCArMjQxNTEsNiBAQAogCQkJCUIyMjI3N0VEMEQw
MEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaWRsICovLAogCQkJCTA4NjM5
NTEzMTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovLAogCQkJCTA4NjM5
NTE0MTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCAqLywKLQkJCQk0M0I5MzM2
ODEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovLAotCQkJCTQz
QjkzMzY3MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oICovLAogCQkJ
CUIyMjI3N0Y0MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uaWRsICovLAogCQkJCUIyMjI3N0Y1MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFJl
Y3QuaWRsICovLAogCQkJCTQzQTYyNjY2MTNCM0QxMTAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZFN0
cmluZy5jcHAgKi8sCkBAIC0yNDQ4Miw4ICsyNDQ4NSw2IEBACiAJCQkJQjIyMjc4RjQwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1BvaW50LmlkbCAqLywKIAkJCQlCMjIyNzhGNjBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHUG9pbnRMaXN0LmggKi8sCiAJCQkJQjIyMjc4RjcwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1BvaW50TGlzdC5pZGwgKi8sCi0JCQkJN0MzOUMzNkExRERCODcxQzAwRkVGQjI5IC8qIFNW
R1BvaW50TGlzdFZhbHVlcy5jcHAgKi8sCi0JCQkJN0MzOUMzNkIxRERCODcxQzAwRkVGQjI5IC8q
IFNWR1BvaW50TGlzdFZhbHVlcy5oICovLAogCQkJCUIyMjI3OEY4MEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdQb2x5RWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc4RjkwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1BvbHlFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc4RkEwRDAwQkYyMTAwNzFCNzgyIC8qIFNW
R1BvbHlnb25FbGVtZW50LmNwcCAqLywKQEAgLTMxOTI0LDcgKzMxOTI1LDYgQEAKIAkJCQkwOEIz
NUIxNzEyN0I2QTg4MDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwODYzOTUxNjEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwODlBOEUwNzEyOEQ4QjNEMDBFN0E1MzQgLyogU1ZHQW5pbWF0
ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDNCOTMz
NjkxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwODhBMEUwNjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURl
c2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwODEyNkVGMURCMDA5NzhGN0Eg
LyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1RkE3
RkZGMjExMTBFNkUwMDVBRUZFNyAvKiBTVkdBbmltYXRlZFByb3BlcnR5VHlwZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCmlu
ZGV4IDViYTkyODFlMmUwYzdlNzJhYjE5YjY1MDgzMDFiMzA2Y2QwNzViYjIuLjAyODQ0YjkxMmNk
MGIxMTcwNDhjOTJkYzk4MDFmMmI2MDQyYzA2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIFBhdGggcGF0aEZyb21DaXJjbGVFbGVtZW50KFNWR0VsZW1lbnQm
IGVsZW1lbnQpCitzdGF0aWMgUGF0aCBwYXRoRnJvbUNpcmNsZUVsZW1lbnQoY29uc3QgU1ZHRWxl
bWVudCYgZWxlbWVudCkKIHsKICAgICBBU1NFUlQoaXM8U1ZHQ2lyY2xlRWxlbWVudD4oZWxlbWVu
dCkpOwogCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tQ2lyY2xlRWxlbWVu
dChTVkdFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiBwYXRoOwogfQogCi1zdGF0aWMgUGF0
aCBwYXRoRnJvbUVsbGlwc2VFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgUGF0
aCBwYXRoRnJvbUVsbGlwc2VFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIFBhdGggcGF0aEZyb21FbGxpcHNl
RWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiBwYXRoOwogfQogCi1zdGF0
aWMgUGF0aCBwYXRoRnJvbUxpbmVFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMg
UGF0aCBwYXRoRnJvbUxpbmVFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgUGF0aCBwYXRoOwogICAgIGNvbnN0IGF1dG8mIGxpbmUgPSBkb3duY2FzdDxTVkdMaW5lRWxl
bWVudD4oZWxlbWVudCk7CkBAIC05Myw0NCArOTMsNDQgQEAgc3RhdGljIFBhdGggcGF0aEZyb21M
aW5lRWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiBwYXRoOwogfQogCi1z
dGF0aWMgUGF0aCBwYXRoRnJvbVBhdGhFbGVtZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCitzdGF0
aWMgUGF0aCBwYXRoRnJvbVBhdGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7
CiAgICAgcmV0dXJuIGRvd25jYXN0PFNWR1BhdGhFbGVtZW50PihlbGVtZW50KS5wYXRoRm9yQnl0
ZVN0cmVhbSgpOwogfQogCi1zdGF0aWMgUGF0aCBwYXRoRnJvbVBvbHlnb25FbGVtZW50KFNWR0Vs
ZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMgUGF0aCBwYXRoRnJvbVBvbHlnb25FbGVtZW50KGNvbnN0
IFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgYXV0byYgcG9pbnRzID0gZG93bmNhc3Q8U1ZH
UG9seWdvbkVsZW1lbnQ+KGVsZW1lbnQpLmFuaW1hdGVkUG9pbnRzKCktPnZhbHVlcygpOworICAg
IGF1dG8mIHBvaW50cyA9IGRvd25jYXN0PFNWR1BvbHlnb25FbGVtZW50PihlbGVtZW50KS5wb2lu
dHMoKS5pdGVtcygpOwogICAgIGlmIChwb2ludHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGgubW92ZVRvKHBvaW50cy5maXJzdCgpKTsK
KyAgICBwYXRoLm1vdmVUbyhwb2ludHMuZmlyc3QoKS0+dmFsdWUoKSk7CiAKICAgICB1bnNpZ25l
ZCBzaXplID0gcG9pbnRzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXQoaSkpOworICAgICAgICBw
YXRoLmFkZExpbmVUbyhwb2ludHMuYXQoaSktPnZhbHVlKCkpOwogCiAgICAgcGF0aC5jbG9zZVN1
YnBhdGgoKTsKICAgICByZXR1cm4gcGF0aDsKIH0KIAotc3RhdGljIFBhdGggcGF0aEZyb21Qb2x5
bGluZUVsZW1lbnQoU1ZHRWxlbWVudCYgZWxlbWVudCkKK3N0YXRpYyBQYXRoIHBhdGhGcm9tUG9s
eWxpbmVFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgYXV0byYgcG9p
bnRzID0gZG93bmNhc3Q8U1ZHUG9seWxpbmVFbGVtZW50PihlbGVtZW50KS5hbmltYXRlZFBvaW50
cygpLT52YWx1ZXMoKTsKKyAgICBhdXRvJiBwb2ludHMgPSBkb3duY2FzdDxTVkdQb2x5bGluZUVs
ZW1lbnQ+KGVsZW1lbnQpLnBvaW50cygpLml0ZW1zKCk7CiAgICAgaWYgKHBvaW50cy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBQYXRoIHBhdGg7Ci0gICAgcGF0aC5tb3Zl
VG8ocG9pbnRzLmZpcnN0KCkpOworICAgIHBhdGgubW92ZVRvKHBvaW50cy5maXJzdCgpLT52YWx1
ZSgpKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBwb2ludHMuc2l6ZSgpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50
cy5hdChpKSk7CisgICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50cy5hdChpKS0+dmFsdWUoKSk7
CiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKLXN0YXRpYyBQYXRoIHBhdGhGcm9tUmVjdEVsZW1lbnQo
U1ZHRWxlbWVudCYgZWxlbWVudCkKK3N0YXRpYyBQYXRoIHBhdGhGcm9tUmVjdEVsZW1lbnQoY29u
c3QgU1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9
IGVsZW1lbnQucmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAtMTY5LDExICsxNjks
MTEgQEAgc3RhdGljIFBhdGggcGF0aEZyb21SZWN0RWxlbWVudChTVkdFbGVtZW50JiBlbGVtZW50
KQogICAgIHJldHVybiBwYXRoOwogfQogCi1QYXRoIHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KFNW
R0VsZW1lbnQqIGVsZW1lbnQpCitQYXRoIHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KGNvbnN0IFNW
R0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogCi0gICAgdHlwZWRl
ZiBQYXRoICgqUGF0aEZyb21GdW5jdGlvbikoU1ZHRWxlbWVudCYpOworICAgIHR5cGVkZWYgUGF0
aCAoKlBhdGhGcm9tRnVuY3Rpb24pKGNvbnN0IFNWR0VsZW1lbnQmKTsKICAgICBzdGF0aWMgSGFz
aE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgUGF0aEZyb21GdW5jdGlvbj4qIG1hcCA9IDA7CiAgICAg
aWYgKCFtYXApIHsKICAgICAgICAgbWFwID0gbmV3IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IFBhdGhGcm9tRnVuY3Rpb24+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdQYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRo
RGF0YS5oCmluZGV4IDYyZGQ4MTk4MzNjYjUxOWNkNmQwMWJlZTUwZDg0ODJlMjgxOGRjYmMuLjQ2
ZmY4MTVjYjg0YmY4ZDQwOGVhNmQyNTZjMDlkYTY5ZmEyYTdmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmgKQEAgLTI0LDYgKzI0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgU1ZHRWxlbWVudDsKIGNsYXNzIFBhdGg7CiAKLVBhdGggcGF0aEZy
b21HcmFwaGljc0VsZW1lbnQoU1ZHRWxlbWVudCopOworUGF0aCBwYXRoRnJvbUdyYXBoaWNzRWxl
bWVudChjb25zdCBTVkdFbGVtZW50Kik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
CmluZGV4IDE1NTc0NGQzZmRkYjcwNDQxM2I3YTA2OWNhZjU2YmUzNTg0ZGMzMDEuLjMwMTgzNGYx
ZjA0NGM2N2FkNzIxZTg5ZDJiMWYwMWJjMDVkMDQ1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMjcxLDcgKzI3
MSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBSZW5kZXJTVkdTaGFwZSYgc2hhcGUpCiAgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywg
InIiLCBlbGVtZW50LnIoKS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgfSBlbHNlIGlmIChp
czxTVkdQb2x5RWxlbWVudD4oc3ZnRWxlbWVudCkpIHsKICAgICAgICAgY29uc3QgU1ZHUG9seUVs
ZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxTVkdQb2x5RWxlbWVudD4oc3ZnRWxlbWVudCk7Ci0g
ICAgICAgIHdyaXRlTmFtZUFuZFF1b3RlZFZhbHVlKHRzLCAicG9pbnRzIiwgZWxlbWVudC5wb2lu
dExpc3QoKS52YWx1ZUFzU3RyaW5nKCkpOworICAgICAgICB3cml0ZU5hbWVBbmRRdW90ZWRWYWx1
ZSh0cywgInBvaW50cyIsIGVsZW1lbnQucG9pbnRzKCkudmFsdWVBc1N0cmluZygpKTsKICAgICB9
IGVsc2UgaWYgKGlzPFNWR1BhdGhFbGVtZW50PihzdmdFbGVtZW50KSkgewogICAgICAgICBjb25z
dCBTVkdQYXRoRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PFNWR1BhdGhFbGVtZW50PihzdmdF
bGVtZW50KTsKICAgICAgICAgU3RyaW5nIHBhdGhTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MmZmZTBjMTA1YzNkYTgxN2JmYzk1M2QzOGJiMGQ5OTJhMmVmOTlhYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRQb2ludExpc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEsIDIwMTIuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZFBvaW50TGlzdC5oIgotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgiCi0j
aW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnQuaCIKLSNp
bmNsdWRlICJTVkdQb2ludExpc3RWYWx1ZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1T
VkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9y
KFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KQotICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRQb2ludHMs
IGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQotewotfQotCi1zdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpjb25zdHJ1
Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHJldHVybiBTVkdBbmlt
YXRlZFR5cGU6OmNyZWF0ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdQb2ludExpc3RWYWx1ZXM+Ojpm
cm9tU3RyaW5nKHN0cmluZykpOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29u
c3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAg
IHJldHVybiBjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVkUG9pbnRMaXN0Pihhbmlt
YXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpzdG9w
QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFu
aW1hdGVkVHlwZXMpCi17Ci0gICAgc3RvcEFuaW1WYWxBbmltYXRpb25Gb3JUeXBlPFNWR0FuaW1h
dGVkUG9pbnRMaXN0PihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFBvaW50
TGlzdEFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzLCBTVkdBbmltYXRlZFR5cGUmIHR5cGUpCi17
Ci0gICAgcmVzZXRGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVkUG9pbnRMaXN0PihhbmltYXRlZFR5
cGVzLCB0eXBlKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjphbmlt
VmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1h
dGVkVHlwZXMpCi17Ci0gICAgYW5pbVZhbFdpbGxDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkUG9p
bnRMaXN0PihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFu
aW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZTxTVkdB
bmltYXRlZFBvaW50TGlzdD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRQ
b2ludExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20s
IFNWR0FuaW1hdGVkVHlwZSogdG8pCi17Ci0gICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmlt
YXRlZFBvaW50cyk7Ci0gICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKLQot
ICAgIGNvbnN0IGF1dG8mIGZyb21Qb2ludExpc3QgPSBmcm9tLT5hczxTVkdQb2ludExpc3RWYWx1
ZXM+KCk7Ci0gICAgYXV0byYgdG9Qb2ludExpc3QgPSB0by0+YXM8U1ZHUG9pbnRMaXN0VmFsdWVz
PigpOwotCi0gICAgdW5zaWduZWQgZnJvbVBvaW50TGlzdFNpemUgPSBmcm9tUG9pbnRMaXN0LnNp
emUoKTsKLSAgICBpZiAoIWZyb21Qb2ludExpc3RTaXplIHx8IGZyb21Qb2ludExpc3RTaXplICE9
IHRvUG9pbnRMaXN0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGZyb21Qb2ludExpc3RTaXplOyArK2kpCi0gICAgICAgIHRvUG9pbnRMaXN0
W2ldICs9IGZyb21Qb2ludExpc3RbaV07Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRv
LCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFu
aW1hdGVkKQotewotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotCi0gICAgY29uc3Qg
YXV0byYgZnJvbVBvaW50TGlzdCA9IChtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUo
KSA9PSBBbmltYXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkIDogZnJvbSktPmFzPFNWR1BvaW50TGlz
dFZhbHVlcz4oKTsKLSAgICBjb25zdCBhdXRvJiB0b1BvaW50TGlzdCA9IHRvLT5hczxTVkdQb2lu
dExpc3RWYWx1ZXM+KCk7Ci0gICAgY29uc3QgYXV0byYgdG9BdEVuZE9mRHVyYXRpb25Qb2ludExp
c3QgPSB0b0F0RW5kT2ZEdXJhdGlvbi0+YXM8U1ZHUG9pbnRMaXN0VmFsdWVzPigpOwotICAgIGF1
dG8mIGFuaW1hdGVkUG9pbnRMaXN0ID0gYW5pbWF0ZWQtPmFzPFNWR1BvaW50TGlzdFZhbHVlcz4o
KTsKLSAgICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxT
VkdQb2ludExpc3RWYWx1ZXM+KGZyb21Qb2ludExpc3QsIHRvUG9pbnRMaXN0LCBhbmltYXRlZFBv
aW50TGlzdCwgcGVyY2VudGFnZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIGZy
b21Qb2ludExpc3RTaXplID0gZnJvbVBvaW50TGlzdC5zaXplKCk7Ci0gICAgdW5zaWduZWQgdG9Q
b2ludExpc3RTaXplID0gdG9Qb2ludExpc3Quc2l6ZSgpOwotICAgIHVuc2lnbmVkIHRvQXRFbmRP
ZkR1cmF0aW9uU2l6ZSA9IHRvQXRFbmRPZkR1cmF0aW9uUG9pbnRMaXN0LnNpemUoKTsKLQotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b1BvaW50TGlzdFNpemU7ICsraSkgewotICAgICAg
ICBGbG9hdFBvaW50IGVmZmVjdGl2ZUZyb207Ci0gICAgICAgIGlmIChmcm9tUG9pbnRMaXN0U2l6
ZSkKLSAgICAgICAgICAgIGVmZmVjdGl2ZUZyb20gPSBmcm9tUG9pbnRMaXN0W2ldOwotICAgICAg
ICBGbG9hdFBvaW50IGVmZmVjdGl2ZVRvQXRFbmQgPSBpIDwgdG9BdEVuZE9mRHVyYXRpb25TaXpl
ID8gdG9BdEVuZE9mRHVyYXRpb25Qb2ludExpc3RbaV0gOiBGbG9hdFBvaW50KCk7Ci0KLSAgICAg
ICAgZmxvYXQgYW5pbWF0ZWRYID0gYW5pbWF0ZWRQb2ludExpc3RbaV0ueCgpOwotICAgICAgICBm
bG9hdCBhbmltYXRlZFkgPSBhbmltYXRlZFBvaW50TGlzdFtpXS55KCk7Ci0gICAgICAgIG1fYW5p
bWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENv
dW50LCBlZmZlY3RpdmVGcm9tLngoKSwgdG9Qb2ludExpc3RbaV0ueCgpLCBlZmZlY3RpdmVUb0F0
RW5kLngoKSwgYW5pbWF0ZWRYKTsKLSAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRl
QWRkaXRpdmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGVmZmVjdGl2ZUZyb20ueSgp
LCB0b1BvaW50TGlzdFtpXS55KCksIGVmZmVjdGl2ZVRvQXRFbmQueSgpLCBhbmltYXRlZFkpOwot
ICAgICAgICBhbmltYXRlZFBvaW50TGlzdFtpXSA9IEZsb2F0UG9pbnQoYW5pbWF0ZWRYLCBhbmlt
YXRlZFkpOwotICAgIH0KLX0KLQotZmxvYXQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6
Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKLXsKLSAgICAv
LyBGSVhNRTogRGlzdGFuY2UgY2FsY3VsYXRpb24gaXMgbm90IHBvc3NpYmxlIGZvciBTVkdQb2lu
dExpc3RWYWx1ZXMgcmlnaHQgbm93LiBXZSBuZWVkIHRoZSBkaXN0YW5jZSBvZiBmb3IgZXZlcnkg
c2luZ2xlIHZhbHVlLgotICAgIHJldHVybiAtMTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRQb2ludExpc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZi
ZDI1YzQwYTViOGY2MTFkN2Q2OTc5YmU2ZmVkMmEwZTFlYzEwYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRQb2ludExpc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZi5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgiCi0jaW5jbHVkZSAi
U1ZHQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiU1ZHQXR0cmlidXRlQWNjZXNzb3IuaCIKLSNpbmNs
dWRlICJTVkdQb2ludExpc3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTVkdB
bmltYXRpb25FbGVtZW50OwotCi11c2luZyBTVkdBbmltYXRlZFBvaW50TGlzdCA9IFNWR0FuaW1h
dGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQb2ludExpc3RWYWx1ZXM+OwotdXNpbmcgU1ZHQW5p
bWF0ZWRQb2ludExpc3RBdHRyaWJ1dGUgPSBTVkdBbmltYXRlZEF0dHJpYnV0ZUxpc3Q8U1ZHQW5p
bWF0ZWRQb2ludExpc3Q+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci11c2luZyBT
VkdBbmltYXRlZFBvaW50TGlzdEF0dHJpYnV0ZUFjY2Vzc29yID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1
dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkUG9pbnRMaXN0QXR0cmlidXRlLCBBbmlt
YXRlZFBvaW50cz47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewotcHVibGljOgotICAgIFNWR0FuaW1h
dGVkUG9pbnRMaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsK
LQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1h
dGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29u
c3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBy
ZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JiwgU1ZHQW5pbWF0ZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhbmltVmFsV2lsbENoYW5n
ZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
Jikgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBl
KiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5
cGUqKSBvdmVycmlkZTsKLSAgICBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCmluZGV4
IGM2ZDc4YWNjOWQ3MTM4MDVhMTg0MjUxOTg3NDZlMTQ0YjY4ZTVkYmMuLjhjYTc2YzcyNGZhYzhk
ODJmZmQyZWNmZTgyODkwOWYxZjQ5MWI1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
eXBlLmgKQEAgLTExMCw4ICsxMTAsMTkgQEAgcHVibGljOgogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgdHlwZSgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV92YWx1ZS5pbmRleCgp
ID49IEFuaW1hdGVkUHJvcGVydHlUeXBlTWluICYmIG1fdmFsdWUuaW5kZXgoKSA8IEFuaW1hdGVk
UHJvcGVydHlUeXBlTWF4KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFuaW1hdGVkUHJv
cGVydHlUeXBlPihtX3ZhbHVlLmluZGV4KCkpOworICAgICAgICBzdGF0aWMgQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUgYW5pbWF0ZWRUeXBlc1tdID0geworICAgICAgICAgICAgQW5pbWF0ZWRBbmdsZSwK
KyAgICAgICAgICAgIEFuaW1hdGVkRW51bWVyYXRpb24sCisgICAgICAgICAgICBBbmltYXRlZExl
bmd0aCwKKyAgICAgICAgICAgIEFuaW1hdGVkTGVuZ3RoTGlzdCwKKyAgICAgICAgICAgIEFuaW1h
dGVkTnVtYmVyTGlzdCwKKyAgICAgICAgICAgIEFuaW1hdGVkUGF0aCwKKyAgICAgICAgICAgIEFu
aW1hdGVkU3RyaW5nLAorICAgICAgICAgICAgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0CisgICAgICAg
IH07CisKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4obV92YWx1ZS5pbmRleCgp
KSA8IHNpemVvZihhbmltYXRlZFR5cGVzKSAvIHNpemVvZihhbmltYXRlZFR5cGVzWzBdKSk7Cisg
ICAgICAgIHJldHVybiBhbmltYXRlZFR5cGVzW21fdmFsdWUuaW5kZXgoKV07CiAgICAgfQogCiAg
ICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dG9yRmFjdG9yeS5oCmluZGV4IDgwZTUwYmQwNDVmNjhlOTVjMTk5NDQyMzQ2NzEwMDc0ODhmZmZj
NzcuLjU4NWYwMTZlMTBjN2MwMzM2MTU3ZDJmM2Y5ODAwMjA3YTAzZDM3YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRl
ICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlckxp
c3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGguaCIKLSNpbmNsdWRlICJTVkdBbmltYXRl
ZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAKQEAgLTQ3LDYgKzQ2LDcgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIEFuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlcjoKICAgICAgICAgY2Fz
ZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgY2FzZSBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyOgorICAgICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgICAgICBjYXNlIEFuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpbzoKICAgICAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYzLDggKzYzLDYgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+
KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRl
ZFBhdGg6CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBh
dGhBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpOwotICAgICAgICBj
YXNlIEFuaW1hdGVkUG9pbnRzOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVs
ZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOgogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYW5pbWF0aW9uRWxl
bWVudCwgY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlz
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLmNwcAppbmRleCBhZjI2MWI2ODYxMjhlMjcwMDIzZTAyZGY4OTZhNjU5NmM5NjQ1NmM1Li5i
ZWY1OTI2ZmVjYjhhYzUxMTkyMjVhODZjZjljMWRiMDhjZGQzOTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCkBAIC0yMiw2
ICsyMiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZC5oIgogCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKKyNpbmNs
dWRlICJSZW5kZXJTVkdTaGFwZS5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdOYW1lcy5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2Vy
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3Bw
CmluZGV4IDE0MDY5ZWNlOTAzZGVkN2M1YTY5ZmM4YTZmMzNmNzAzMzI5NjAzM2QuLjk4MjQzZmRj
MTgyNWRiOTU3OTBhNDMxYjkyMzUyNDlkNTNhNTk1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXJzZXJVdGlsaXRpZXMuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIlNWR1BvaW50TGlzdFZh
bHVlcy5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTI2MCw0MCArMjU5LDYgQEAgYm9v
bCBwYXJzZVJlY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZsb2F0UmVjdCYgcmVjdCkKICAgICBy
ZXR1cm4gdmFsaWQ7CiB9CiAKLWJvb2wgcG9pbnRzTGlzdEZyb21TVkdEYXRhKFNWR1BvaW50TGlz
dFZhbHVlcyYgcG9pbnRzTGlzdCwgY29uc3QgU3RyaW5nJiBwb2ludHMpCi17Ci0gICAgaWYgKHBv
aW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGF1dG8gdXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhwb2ludHMpLnVwY29udmVydGVkQ2hhcmFjdGVycygp
OwotICAgIGNvbnN0IFVDaGFyKiBjdXIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7Ci0gICAgY29u
c3QgVUNoYXIqIGVuZCA9IGN1ciArIHBvaW50cy5sZW5ndGgoKTsKLQotICAgIHNraXBPcHRpb25h
bFNWR1NwYWNlcyhjdXIsIGVuZCk7Ci0KLSAgICBib29sIGRlbGltUGFyc2VkID0gZmFsc2U7Ci0g
ICAgd2hpbGUgKGN1ciA8IGVuZCkgewotICAgICAgICBkZWxpbVBhcnNlZCA9IGZhbHNlOwotICAg
ICAgICBmbG9hdCB4UG9zID0gMC4wZjsKLSAgICAgICAgaWYgKCFwYXJzZU51bWJlcihjdXIsIGVu
ZCwgeFBvcykpCi0gICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBmbG9hdCB5UG9z
ID0gMC4wZjsKLSAgICAgICAgaWYgKCFwYXJzZU51bWJlcihjdXIsIGVuZCwgeVBvcywgZmFsc2Up
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHNraXBPcHRpb25hbFNWR1Nw
YWNlcyhjdXIsIGVuZCk7Ci0KLSAgICAgICAgaWYgKGN1ciA8IGVuZCAmJiAqY3VyID09ICcsJykg
ewotICAgICAgICAgICAgZGVsaW1QYXJzZWQgPSB0cnVlOwotICAgICAgICAgICAgY3VyKys7Ci0g
ICAgICAgIH0KLSAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1ciwgZW5kKTsKLQotICAg
ICAgICBwb2ludHNMaXN0LmFwcGVuZChGbG9hdFBvaW50KHhQb3MsIHlQb3MpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGN1ciA9PSBlbmQgJiYgIWRlbGltUGFyc2VkOwotfQotCiBib29sIHBhcnNlR2x5
cGhOYW1lKGNvbnN0IFN0cmluZyYgaW5wdXQsIEhhc2hTZXQ8U3RyaW5nPiYgdmFsdWVzKQogewog
ICAgIC8vIEZJWE1FOiBQYXJzaW5nIGVycm9yIGRldGVjdGlvbiBpcyBtaXNzaW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5oCmluZGV4IDY3N2RiY2M5MzRkMDE3MGNjYWQ0
NjcyYTg4Yjg0Y2Y4ZmIzNzkzYjkuLjNmMTMyMWRhYzNhZTg0ZjQ0ZTUwN2NkNWMyNGFmYTI2Njky
YTg4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmgKQEAgLTMyLDcg
KzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3Mg
RmxvYXRSZWN0OwotY2xhc3MgU1ZHUG9pbnRMaXN0VmFsdWVzOwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KIGJvb2wgcGFyc2VTVkdOdW1iZXIoQ2hhcmFjdGVyVHlwZSogcHRy
LCBzaXplX3QgbGVuZ3RoLCBkb3VibGUmIG51bWJlcik7CkBAIC04Miw3ICs4MSw2IEBAIGlubGlu
ZSBib29sIHNraXBPcHRpb25hbFNWR1NwYWNlc09yRGVsaW1pdGVyKGNvbnN0IENoYXJhY3RlclR5
cGUqJiBwdHIsIGNvbnN0IENoCiAgICAgcmV0dXJuIHB0ciA8IGVuZDsKIH0KIAotYm9vbCBwb2lu
dHNMaXN0RnJvbVNWR0RhdGEoU1ZHUG9pbnRMaXN0VmFsdWVzJiwgY29uc3QgU3RyaW5nJiBwb2lu
dHMpOwogVmVjdG9yPFN0cmluZz4gcGFyc2VEZWxpbWl0ZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBp
bnB1dCwgY29uc3QgY2hhciBzZXBlcmF0b3IpOwogYm9vbCBwYXJzZUtlcm5pbmdVbmljb2RlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgaW5wdXQsIFVuaWNvZGVSYW5nZXMmLCBIYXNoU2V0PFN0cmluZz4m
IHN0cmluZ0xpc3QpOwogYm9vbCBwYXJzZUdseXBoTmFtZShjb25zdCBTdHJpbmcmIGlucHV0LCBI
YXNoU2V0PFN0cmluZz4mIHZhbHVlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5oCmluZGV4IDgwMGNlYWUz
MDQ2MDczNTY1Mzc5OGY4OTA5NTllZTcxZjgxMzY2OTEuLjUyNjUyOWJkYTZkODdkY2ZjNTM1Nzkx
ZWJkNWZiMzAwYmQ0ODdlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2lu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5oCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsODYgKzI4
LDY5IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiU1ZHTWF0cml4Lmgi
Ci0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHVmFsdWVQcm9w
ZXJ0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR1BvaW50IDogcHVibGlj
IFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTVkdQb2ludD4gY3JlYXRlKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJv
cGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFBvaW50JiB2YWx1ZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BvaW50KGFuaW1hdGVkUHJvcGVydHksIHJv
bGUsIHZhbHVlKSk7Ci0gICAgfQorY2xhc3MgU1ZHUG9pbnQgOiBwdWJsaWMgU1ZHVmFsdWVQcm9w
ZXJ0eTxGbG9hdFBvaW50PiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVlUHJvcGVydHk8Rmxv
YXRQb2ludD47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB1c2luZyBCYXNlOjptX3ZhbHVl
OwogCi0gICAgc3RhdGljIFJlZjxTVkdQb2ludD4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxWYWx1ZSA9IHsgfSkKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNWR1BvaW50PiBjcmVh
dGUoY29uc3QgRmxvYXRQb2ludCYgdmFsdWUgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdQb2ludChpbml0aWFsVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1ZHUG9pbnQodmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNWR1BvaW50Pj4gY3JlYXRlKEV4Y2VwdGlv
bk9yPFQ+JiYgaW5pdGlhbFZhbHVlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFJlZjxTVkdQb2ludD4+IGNyZWF0ZShFeGNlcHRpb25PcjxUPiYmIHZh
bHVlKQogICAgIHsKLSAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5oYXNFeGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgICAg
ICByZXR1cm4gY3JlYXRlKGluaXRpYWxWYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAg
ICAgIGlmICh2YWx1ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5y
ZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BvaW50
KHZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7CiAgICAgfQogCi0gICAgZmxvYXQgeCgpCisg
ICAgUmVmPFNWR1BvaW50PiBjbG9uZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gcHJv
cGVydHlSZWZlcmVuY2UoKS54KCk7CisgICAgICAgIHJldHVybiBTVkdQb2ludDo6Y3JlYXRlKG1f
dmFsdWUpOwogICAgIH0KKyAgICAKKyAgICBmbG9hdCB4KCkgeyByZXR1cm4gbV92YWx1ZS54KCk7
IH0KIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFgoZmxvYXQgeFZhbHVlKQorICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldFgoZmxvYXQgeCkKICAgICB7CiAgICAgICAgIGlmIChpc1JlYWRPbmx5
KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2Vk
RXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldFgoeFZhbHVlKTsKKyAg
ICAgICAgbV92YWx1ZS5zZXRYKHgpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKIAogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGZsb2F0IHkoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkueSgpOwotICAgIH0KKyAgICBmbG9hdCB5KCkgeyByZXR1
cm4gbV92YWx1ZS55KCk7IH0KIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFkoZmxvYXQgeFZh
bHVlKQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFkoZmxvYXQgeSkKICAgICB7CiAgICAgICAg
IGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2Rp
ZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNl
dFkoeFZhbHVlKTsKKyAgICAgICAgbV92YWx1ZS5zZXRZKHkpOwogICAgICAgICBjb21taXRDaGFu
Z2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIEV4Y2VwdGlvbk9yPFJl
ZjxTVkdQb2ludD4+IG1hdHJpeFRyYW5zZm9ybShTVkdNYXRyaXgmIG1hdHJpeCkKLSAgICB7Ci0g
ICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKLQotICAgICAgICBhdXRvIG5ld1BvaW50ID0g
cHJvcGVydHlSZWZlcmVuY2UoKS5tYXRyaXhUcmFuc2Zvcm0obWF0cml4LnByb3BlcnR5UmVmZXJl
bmNlKCkpOwotICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQotICAgICAgICByZXR1cm4gU1ZHUG9p
bnQ6OmNyZWF0ZShuZXdQb2ludCk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgU1ZHUG9pbnQo
U1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlS
b2xlIHJvbGUsIEZsb2F0UG9pbnQmIHZhbHVlKQotICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9m
ZjxGbG9hdFBvaW50PigmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCi0gICAgewotICAg
IH0KLQotICAgIFNWR1BvaW50KFNWR1Byb3BlcnR5Um9sZSByb2xlLCBGbG9hdFBvaW50JiB2YWx1
ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4obnVsbHB0ciwgcm9s
ZSwgdmFsdWUpCisgICAgUmVmPFNWR1BvaW50PiBtYXRyaXhUcmFuc2Zvcm0oU1ZHTWF0cml4JiBt
YXRyaXgpIGNvbnN0CiAgICAgeworICAgICAgICBhdXRvIG5ld1BvaW50ID0gbV92YWx1ZS5tYXRy
aXhUcmFuc2Zvcm0obWF0cml4LnByb3BlcnR5UmVmZXJlbmNlKCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdQb2ludChuZXdQb2ludCkpOwogICAgIH0KIAotICAgIGV4cGxpY2l0
IFNWR1BvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxWYWx1ZSkKLSAgICAgICAgOiBTVkdQ
cm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4oaW5pdGlhbFZhbHVlKQorcHJpdmF0ZToKKyAgICBT
dHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCiAgICAgeworICAgICAgICByZXR1
cm4gU1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQb2ludD46OnRvU3RyaW5nKG1fdmFsdWUpOwogICAg
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaWRsCmluZGV4IDdjODQ1MTViNWFhOTFiNTg1NzAw
ODMxMzEwYTcwOWY1OTdjM2YzOTQuLjVkODIyNDkwZGJiZTIyMThhMjUxYWE4YjFjOWJhNmE5NzMx
M2RkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmlkbApAQCAtMjYsNiArMjYsNiBAQAogICAgIGF0
dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgeDsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGZsb2F0IHk7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHUG9pbnQg
bWF0cml4VHJhbnNmb3JtKFNWR01hdHJpeCBtYXRyaXgpOworICAgIFtOZXdPYmplY3RdIFNWR1Bv
aW50IG1hdHJpeFRyYW5zZm9ybShTVkdNYXRyaXggbWF0cml4KTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQb2ludExpc3QuaAppbmRleCBiMGMyYTEwMzExZWY0NWExZjYxMWQ0ZmIyOTc4NjViMGY1NmE4
NDAyLi42Y2QxMWMxZDIxMmUwZTdmMzljYzIyNGNiZmMwYzQ3NGRiMDUxODM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BvaW50TGlzdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDI4ICsyNSw4MSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgotI2luY2x1ZGUgIlNW
R1BvaW50TGlzdFZhbHVlcy5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHlMaXN0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHUG9pbnRMaXN0IDogcHVibGljIFNWR0xp
c3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0VmFsdWVzPiB7CitjbGFzcyBTVkdQb2ludExp
c3QgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3Q8U1ZHUG9pbnQ+IHsKKyAgICB1c2luZyBC
YXNlID0gU1ZHVmFsdWVQcm9wZXJ0eUxpc3Q8U1ZHUG9pbnQ+OworICAgIHVzaW5nIEJhc2U6OkJh
c2U7CisKIHB1YmxpYzoKLSAgICB1c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBT
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0VmFsdWVzPjsKLSAgICB1
c2luZyBMaXN0V3JhcHBlckNhY2hlID0gQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjpMaXN0
V3JhcHBlckNhY2hlOworICAgIHN0YXRpYyBSZWY8U1ZHUG9pbnRMaXN0PiBjcmVhdGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUG9pbnRMaXN0KCkpOworICAgIH0K
KworICAgIHN0YXRpYyBSZWY8U1ZHUG9pbnRMaXN0PiBjcmVhdGUoU1ZHUHJvcGVydHlPd25lciog
b3duZXIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR1BvaW50TGlzdChvd25lciwgYWNjZXNzKSk7CisgICAgfQogCi0gICAg
c3RhdGljIFJlZjxTVkdQb2ludExpc3Q+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJP
ZmYmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQb2ludExpc3RW
YWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgc3RhdGljIFJl
ZjxTVkdQb2ludExpc3Q+IGNyZWF0ZShjb25zdCBTVkdQb2ludExpc3QmIG90aGVyLCBTVkdQcm9w
ZXJ0eUFjY2VzcyBhY2Nlc3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
VkdQb2ludExpc3QoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFwcGVycykpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdQb2ludExpc3Qob3RoZXIsIGFjY2Vzcykp
OworICAgIH0KKworICAgIGJvb2wgcGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIGNsZWFySXRlbXMoKTsKKworICAgICAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVy
cyA9IFN0cmluZ1ZpZXcodmFsdWUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgICAgICBj
b25zdCBVQ2hhciogY3VyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgICAgICBjb25zdCBV
Q2hhciogZW5kID0gY3VyICsgdmFsdWUubGVuZ3RoKCk7CisKKyAgICAgICAgc2tpcE9wdGlvbmFs
U1ZHU3BhY2VzKGN1ciwgZW5kKTsKKworICAgICAgICBib29sIGRlbGltUGFyc2VkID0gZmFsc2U7
CisgICAgICAgIHdoaWxlIChjdXIgPCBlbmQpIHsKKyAgICAgICAgICAgIGRlbGltUGFyc2VkID0g
ZmFsc2U7CisgICAgICAgICAgICBmbG9hdCB4UG9zID0gMC4wZjsKKyAgICAgICAgICAgIGlmICgh
cGFyc2VOdW1iZXIoY3VyLCBlbmQsIHhQb3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgZmxvYXQgeVBvcyA9IDAuMGY7CisgICAgICAgICAgICBpZiAoIXBh
cnNlTnVtYmVyKGN1ciwgZW5kLCB5UG9zLCBmYWxzZSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3VyLCBlbmQpOwor
CisgICAgICAgICAgICBpZiAoY3VyIDwgZW5kICYmICpjdXIgPT0gJywnKSB7CisgICAgICAgICAg
ICAgICAgZGVsaW1QYXJzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGN1cisrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1ciwgZW5kKTsKKwor
ICAgICAgICAgICAgYXBwZW5kKFNWR1BvaW50OjpjcmVhdGUoRmxvYXRQb2ludCh4UG9zLCB5UG9z
KSkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICFkZWxpbVBhcnNlZDsKICAgICB9CiAK
LXByaXZhdGU6Ci0gICAgU1ZHUG9pbnRMaXN0KEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYg
YW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1BvaW50TGlzdFZhbHVl
cyYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKLSAgICAgICAgOiBTVkdMaXN0
UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdFZhbHVlcz4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9s
ZSwgdmFsdWVzLCB3cmFwcGVycykKKyAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0IG92
ZXJyaWRlCiAgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBwb2ludCA6IG1faXRlbXMpIHsKKyAgICAgICAgICAgIGlmIChidWls
ZGVyLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHBvaW50LT54KCkpOworICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHBv
aW50LT55KCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKICAgICB9CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2ludExpc3RWYWx1ZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhZTY2YTI3ZmQxYTE0YTYzZGRlNGUyM2Q5N2JhZTgwN2VkNzliODYzLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
b2ludExpc3RWYWx1ZXMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRM
aXN0VmFsdWVzLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU3Ry
aW5nIFNWR1BvaW50TGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChp
ID4gMCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7IC8vIEZJWE1FOiBTaG91bGRu
J3Qgd2UgdXNlIGNvbW1hcyB0byBzZXBlcmF0ZT8KLQotICAgICAgICBjb25zdCBhdXRvJiBwb2lu
dCA9IGF0KGkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKHBv
aW50LngoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGJ1aWxkZXIu
YXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIocG9pbnQueSgpKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9pbnRMaXN0VmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0VmFsdWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MDc1YjNiOTZhNTBh
MzU4YjY5ZWIzMmYzNjIzOGI1YTQ0NjE0ZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdFZhbHVlcy5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVy
dHlUcmFpdHMuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgU1ZHUG9pbnQ7Ci1jbGFzcyBTVkdQb2ludExpc3Q7Ci0KLWNsYXNzIFNWR1Bv
aW50TGlzdFZhbHVlcyBmaW5hbCA6IHB1YmxpYyBWZWN0b3I8RmxvYXRQb2ludD4gewotcHVibGlj
OgotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7Ci19OwotCi10ZW1wbGF0ZTw+Ci1z
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUG9pbnRMaXN0VmFsdWVzPiB7Ci0gICAgc3RhdGlj
IFNWR1BvaW50TGlzdFZhbHVlcyBpbml0aWFsVmFsdWUoKSB7IHJldHVybiB7IH07IH0KLSAgICBz
dGF0aWMgU1ZHUG9pbnRMaXN0VmFsdWVzIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcp
Ci0gICAgewotICAgICAgICBTVkdQb2ludExpc3RWYWx1ZXMgbGlzdDsKLSAgICAgICAgcG9pbnRz
TGlzdEZyb21TVkdEYXRhKGxpc3QsIHN0cmluZyk7Ci0gICAgICAgIHJldHVybiBsaXN0OwotICAg
IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8U1ZHUG9pbnRMaXN0VmFsdWVzPiBwYXJzZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIHsgfTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHUG9pbnRMaXN0
VmFsdWVzJiBsaXN0KSB7IHJldHVybiBsaXN0LnZhbHVlQXNTdHJpbmcoKTsgfQotCi0gICAgdXNp
bmcgTGlzdEl0ZW1UeXBlID0gRmxvYXRQb2ludDsKLSAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYg
PSBTVkdQb2ludDsKLSAgICB1c2luZyBMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHUG9pbnRMaXN0
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxl
bWVudC5jcHAKaW5kZXggYWY2ZGI1NmJjYjBlOGVmOGE1NzMwN2FkZTAxMjgzYWZmNDJhYjE0ZS4u
YzJmZTJlYWE4OTdkNzhiNjliMDk1YzZkY2YzNTBjMjlmMGZjYmJiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzcsMjggKzM3LDE3IEBA
IFNWR1BvbHlFbGVtZW50OjpTVkdQb2x5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTVkdHZW9tZXRyeUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMpCiB7
Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci19Ci0KLXZvaWQgU1ZHUG9seUVsZW1lbnQ6OnJl
Z2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdp
c3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnBvaW50c0F0dHIsICZTVkdQ
b2x5RWxlbWVudDo6bV9wb2ludHM+KCk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5
UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnBvaW50c0F0dHIsICZTVkdQb2x5
RWxlbWVudDo6bV9wb2ludHM+KCk7CisgICAgfSk7CiB9CiAKIHZvaWQgU1ZHUG9seUVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpIHsK
LSAgICAgICAgU1ZHUG9pbnRMaXN0VmFsdWVzIG5ld0xpc3Q7Ci0gICAgICAgIGlmICghcG9pbnRz
TGlzdEZyb21TVkdEYXRhKG5ld0xpc3QsIHZhbHVlKSkKKyAgICAgICAgaWYgKCFtX3BvaW50cy0+
YmFzZVZhbCgpLT5wYXJzZSh2YWx1ZSkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKS5yZXBvcnRFcnJvcigiUHJvYmxlbSBwYXJzaW5nIHBvaW50cz1cIiIgKyB2
YWx1ZSArICJcIiIpOwotCi0gICAgICAgIGlmIChhdXRvIHdyYXBwZXIgPSBzdGF0aWNfcG9pbnRl
cl9jYXN0PFNWR0FuaW1hdGVkUG9pbnRMaXN0Pihsb29rdXBBbmltYXRlZFByb3BlcnR5KG1fcG9p
bnRzKSkpCi0gICAgICAgICAgICB3cmFwcGVyLT5kZXRhY2hMaXN0V3JhcHBlcnMobmV3TGlzdC5z
aXplKCkpOwotCi0gICAgICAgIG1fcG9pbnRzLnNldFZhbHVlKFdURk1vdmUobmV3TGlzdCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MSwyMSArNzAsOSBAQCB2b2lkIFNWR1BvbHlF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
YXR0ck5hbWUpOwogfQogCi1SZWY8U1ZHUG9pbnRMaXN0PiBTVkdQb2x5RWxlbWVudDo6cG9pbnRz
KCkKLXsKLSAgICBtX3BvaW50cy5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICByZXR1
cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdBbmltYXRlZFBvaW50TGlzdD4obG9va3VwT3JDcmVh
dGVBbmltYXRlZFByb3BlcnR5KG1fcG9pbnRzKSktPmJhc2VWYWwoKTsKLX0KLQotUmVmPFNWR1Bv
aW50TGlzdD4gU1ZHUG9seUVsZW1lbnQ6OmFuaW1hdGVkUG9pbnRzKCkKLXsKLSAgICBtX3BvaW50
cy5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJf
Y2FzdDxTVkdBbmltYXRlZFBvaW50TGlzdD4obG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnR5
KG1fcG9pbnRzKSktPmFuaW1WYWwoKTsKLX0KLQogc2l6ZV90IFNWR1BvbHlFbGVtZW50OjphcHBy
b3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIHNpemVfdCBwb2ludHNDb3N0ID0gcG9p
bnRMaXN0KCkuc2l6ZSgpICogc2l6ZW9mKEZsb2F0UG9pbnQpOworICAgIHNpemVfdCBwb2ludHND
b3N0ID0gbV9wb2ludHMtPmJhc2VWYWwoKS0+aXRlbXMoKS5zaXplKCkgKiBzaXplb2YoRmxvYXRQ
b2ludCk7CiAgICAgLy8gV2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGUgbWVtb3J5IHdoaWNoIGlz
IGFsbG9jYXRlZCBieSB0aGUgUmVuZGVyU1ZHUGF0aDo6bV9wYXRoLgogICAgIHJldHVybiBzaXpl
b2YoKnRoaXMpICsgKHJlbmRlcmVyKCkgPyBwb2ludHNDb3N0ICogMiArIHNpemVvZihSZW5kZXJT
VkdQYXRoKSA6IHBvaW50c0Nvc3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BvbHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaApp
bmRleCA3ZDBiNDVhMGFhYmMyNzlkMTk4MjQ3ZmMxNzEzMWI3OWY3NjJlZGU1Li42ZTM1NDI1YzFm
MDllMTk4NjkyY2Y4YmI3YjExY2QxMDA1Y2Q2OTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVs
ZW1lbnQuaApAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5oIgogI2luY2x1ZGUgIlNWR0dlb21ldHJ5RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCkBAIC0zMSwxMCArMzAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU1ZH
UG9seUVsZW1lbnQgOiBwdWJsaWMgU1ZHR2VvbWV0cnlFbGVtZW50LCBwdWJsaWMgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChTVkdQb2x5
RWxlbWVudCk7CiBwdWJsaWM6Ci0gICAgUmVmPFNWR1BvaW50TGlzdD4gcG9pbnRzKCk7Ci0gICAg
UmVmPFNWR1BvaW50TGlzdD4gYW5pbWF0ZWRQb2ludHMoKTsKKyAgICBjb25zdCBTVkdQb2ludExp
c3QmIHBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRzLT5jdXJyZW50VmFsdWUoKTsgfQog
Ci0gICAgY29uc3QgU1ZHUG9pbnRMaXN0VmFsdWVzJiBwb2ludExpc3QoKSBjb25zdCB7IHJldHVy
biBtX3BvaW50cy52YWx1ZSgpOyB9CisgICAgU1ZHUG9pbnRMaXN0JiBwb2ludHMoKSB7IHJldHVy
biBtX3BvaW50cy0+YmFzZVZhbCgpOyB9CisgICAgU1ZHUG9pbnRMaXN0JiBhbmltYXRlZFBvaW50
cygpIHsgcmV0dXJuICptX3BvaW50cy0+YW5pbVZhbCgpOyB9CiAKICAgICBzaXplX3QgYXBwcm94
aW1hdGVNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTQzLDggKzQyLDYgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdB
dHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdQb2x5RWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50
LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKLSAgICBzdGF0aWMgQXR0cmlidXRlT3du
ZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJv
eHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0
ZU93bmVyUHJveHk7IH0KIAogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnk8U1ZHUG9seUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CkBAIC02Myw3ICs2MCw3IEBAIHByaXZhdGU6CiAKICAg
ICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAg
ICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNW
R0FuaW1hdGVkUG9pbnRMaXN0QXR0cmlidXRlIG1fcG9pbnRzOworICAgIFJlZjxTVkdBbmltYXRl
ZFBvaW50TGlzdD4gbV9wb2ludHMgeyBTVkdBbmltYXRlZFBvaW50TGlzdDo6Y3JlYXRlKHRoaXMp
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAKaW5kZXggMjc5NGQ5YTlhNmM1MTNjMDc0Mjc2NjFiNTFlNGQ1ODU1ZTA0ZDJhZi4u
NDg0MjVmZDAwY2Q1MDEyZjBlZDgyMzdmZWJhNzIwNWY5MWI2OWVjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTcxLDE2ICsxNzEsMTEgQEAgdm9pZCBTVkdTVkdFbGVt
ZW50OjpzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgICAgIGZyYW1lLT5zZXRQYWdl
Wm9vbUZhY3RvcihzY2FsZSk7CiB9CiAKLVJlZjxTVkdQb2ludD4gU1ZHU1ZHRWxlbWVudDo6Y3Vy
cmVudFRyYW5zbGF0ZSgpCi17Ci0gICAgcmV0dXJuIFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjxT
VkdTVkdFbGVtZW50LCBTVkdQb2ludD46OmNyZWF0ZSgqdGhpcywgbV9jdXJyZW50VHJhbnNsYXRl
LCAmU1ZHU1ZHRWxlbWVudDo6dXBkYXRlQ3VycmVudFRyYW5zbGF0ZSk7Ci19Ci0KIHZvaWQgU1ZH
U1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50JiB0cmFuc2xh
dGlvbikKIHsKLSAgICBpZiAobV9jdXJyZW50VHJhbnNsYXRlID09IHRyYW5zbGF0aW9uKQorICAg
IGlmIChtX2N1cnJlbnRUcmFuc2xhdGUtPnZhbHVlKCkgPT0gdHJhbnNsYXRpb24pCiAgICAgICAg
IHJldHVybjsKLSAgICBtX2N1cnJlbnRUcmFuc2xhdGUgPSB0cmFuc2xhdGlvbjsKKyAgICBtX2N1
cnJlbnRUcmFuc2xhdGUtPnNldFZhbHVlKHRyYW5zbGF0aW9uKTsKICAgICB1cGRhdGVDdXJyZW50
VHJhbnNsYXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCmluZGV4IGVkNTJk
MzZlOWU2N2I5YjI5NjYzMDdkNzhmNTY0NGZhZWRmNzlkMjQuLmIwZDk0ZmM5OTc4ZjcwODA4MDUy
OWI0NDkzZDZkOGQzZWUzYTUzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaApAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMTAgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNjEsOCArNjEsOCBAQCBwdWJsaWM6IC8vIERPTQogICAgIGZs
b2F0IGN1cnJlbnRTY2FsZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q3VycmVudFNjYWxlKGZsb2F0
KTsKIAotICAgIFJlZjxTVkdQb2ludD4gY3VycmVudFRyYW5zbGF0ZSgpOwotICAgIEZsb2F0UG9p
bnQgY3VycmVudFRyYW5zbGF0ZVZhbHVlKCkgeyByZXR1cm4gbV9jdXJyZW50VHJhbnNsYXRlOyB9
CisgICAgU1ZHUG9pbnQmIGN1cnJlbnRUcmFuc2xhdGUoKSB7IHJldHVybiBtX2N1cnJlbnRUcmFu
c2xhdGU7IH0KKyAgICBGbG9hdFBvaW50IGN1cnJlbnRUcmFuc2xhdGVWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudFRyYW5zbGF0ZS0+dmFsdWUoKTsgfQogCiAgICAgdW5zaWduZWQgc3Vz
cGVuZFJlZHJhdyh1bnNpZ25lZCBtYXhXYWl0TWlsbGlzZWNvbmRzKTsKICAgICB2b2lkIHVuc3Vz
cGVuZFJlZHJhdyh1bnNpZ25lZCBzdXNwZW5kSGFuZGxlSWQpOwpAQCAtMTA2LDcgKzEwNiw3IEBA
IHB1YmxpYzoKICAgICBTTUlMVGltZUNvbnRhaW5lciYgdGltZUNvbnRhaW5lcigpIHsgcmV0dXJu
IG1fdGltZUNvbnRhaW5lci5nZXQoKTsgfQogCiAgICAgdm9pZCBzZXRDdXJyZW50VHJhbnNsYXRl
KGNvbnN0IEZsb2F0UG9pbnQmKTsgLy8gVXNlZCB0byBwYW4uCi0gICAgdm9pZCB1cGRhdGVDdXJy
ZW50VHJhbnNsYXRlKCk7IC8vIFVzZWQgZnJvbSBET00gYmluZGluZ3MgdG8gY3JlYXRlIGFuIFNW
R1N0YXRpY1Byb3BlcnR5VGVhck9mZiBmb3IgY3VycmVudFRyYW5zbGF0ZS4KKyAgICB2b2lkIHVw
ZGF0ZUN1cnJlbnRUcmFuc2xhdGUoKTsKIAogICAgIGJvb2wgaGFzSW50cmluc2ljV2lkdGgoKSBj
b25zdDsKICAgICBib29sIGhhc0ludHJpbnNpY0hlaWdodCgpIGNvbnN0OwpAQCAtMTY5LDEwICsx
NjksMTEgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV91c2VDdXJyZW50VmlldyB7IGZhbHNlIH07
CiAgICAgUmVmPFNNSUxUaW1lQ29udGFpbmVyPiBtX3RpbWVDb250YWluZXI7Ci0gICAgRmxvYXRQ
b2ludCBtX2N1cnJlbnRUcmFuc2xhdGU7CiAgICAgUmVmUHRyPFNWR1ZpZXdTcGVjPiBtX3ZpZXdT
cGVjOwogICAgIFN0cmluZyBtX2N1cnJlbnRWaWV3RnJhZ21lbnRJZGVudGlmaWVyOwogCisgICAg
UmVmPFNWR1BvaW50PiBtX2N1cnJlbnRUcmFuc2xhdGUgeyBTVkdQb2ludDo6Y3JlYXRlKCkgfTsK
KwogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMg
fTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAg
ICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5pZGwKaW5kZXggZDk2ODdkMjM5YzMwZDRjNjBmNzc5
MDM2OWE0YmU4MzMxZjcwY2NmZC4uM2RlYjA1ZWExODQ2OWEzNjIyNDdjYmE2MThjYzg1ODEyZmRh
OGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmlkbApAQCAtNDIsNyArNDIsNyBA
QAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVzZUN1cnJlbnRWaWV3OwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBTVkdWaWV3U3BlYyBjdXJyZW50VmlldzsKICAgICBhdHRyaWJ1dGUg
dW5yZXN0cmljdGVkIGZsb2F0IGN1cnJlbnRTY2FsZTsKLSAgICBbTmV3T2JqZWN0XSByZWFkb25s
eSBhdHRyaWJ1dGUgU1ZHUG9pbnQgY3VycmVudFRyYW5zbGF0ZTsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgU1ZHUG9pbnQgY3VycmVudFRyYW5zbGF0ZTsKIAogICAgIHVuc2lnbmVkIGxvbmcgc3Vz
cGVuZFJlZHJhdyhvcHRpb25hbCB1bnNpZ25lZCBsb25nIG1heFdhaXRNaWxsaXNlY29uZHMgPSAw
KTsKICAgICB2b2lkIHVuc3VzcGVuZFJlZHJhdyhvcHRpb25hbCB1bnNpZ25lZCBsb25nIHN1c3Bl
bmRIYW5kbGVJZCA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaAppbmRleCBiZjkwNjE3OTg1MzBlYTUy
YmQ0NmNhNzg4NDExYjI1MTVlYmQ4OGE2Li4yNTNkMTQzNDE5ZGUxZjcwMjAwN2UwNmQ3OTI2NzVk
ZGZiZTZmZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1
ZGUgIlNWR01hcmtlclR5cGVzLmgiCiAjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdFZhbHVlcy5oIgog
I2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCi0jaW5jbHVkZSAiU1ZHUG9pbnRMaXN0VmFs
dWVzLmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVz
LmgiCkBAIC00NCwyMCArNDMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBTVkdW
YWx1ZVZhcmlhbnQgPSBWYXJpYW50PAogICAgIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNp
Z25lZD4qLAotICAgIGJvb2wqLAotICAgIENvbG9yKiwKICAgICB1bnNpZ25lZCosCi0gICAgaW50
KiwKLSAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+KiwKICAgICBTVkdMZW5ndGhWYWx1ZSosCiAgICAg
U1ZHTGVuZ3RoTGlzdFZhbHVlcyosCi0gICAgZmxvYXQqLAogICAgIFNWR051bWJlckxpc3RWYWx1
ZXMqLAotICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+KiwKICAgICBTVkdQYXRoQnl0ZVN0cmVh
bSosCi0gICAgU1ZHUG9pbnRMaXN0VmFsdWVzKiwKLSAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUqLAotICAgIEZsb2F0UmVjdCosCiAgICAgU3RyaW5nKiwKICAgICBTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzKgogPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaAppbmRleCBkMzA0OWJi
Mzc3NTA5M2NkMmUxNzZlNTZmZTI3YTJiODFmM2QxZGYxLi5jYTRmNjI5ZWU4ZTVkZmM2MjExYTA5
ZGQxYTk2NDBmYTNkNjQ5MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCkBAIC05
OCw2ICs5OCwyOCBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE93
bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkUG9pbnRMaXN0QWNjZXNzb3IgZmluYWwgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRQb2lu
dExpc3Q+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93
bmVyVHlwZSwgU1ZHQW5pbWF0ZWRQb2ludExpc3Q+OworICAgIHVzaW5nIEJhc2U6OnByb3BlcnR5
OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZH
QW5pbWF0ZWRQb2ludExpc3Q+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIGNvbnN0ZXhwciBz
dGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYgc2luZ2xldG9uKCkgeyBy
ZXR1cm4gQmFzZTo6dGVtcGxhdGUgc2luZ2xldG9uPFNWR0FuaW1hdGVkUG9pbnRMaXN0QWNjZXNz
b3IsIHByb3BlcnR5PigpOyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0
dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5cGUmIG93bmVyLCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkg
Y29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdBbmltYXRlZFBvaW50TGlzdEFu
aW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCisgICAg
dm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJpYnV0
ZUFuaW1hdG9yJiBhbmltYXRvcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHN0YXRpY19j
YXN0PFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3ImPihhbmltYXRvcikuYXBwZW5kQW5pbWF0
ZWRJbnN0YW5jZShwcm9wZXJ0eShvd25lcikpOworICAgIH0KK307CisgICAgCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBPd25lclR5cGU+CiBjbGFzcyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9B
Y2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJU
eXBlLCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+IHsKICAgICB1c2luZyBCYXNlID0g
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRQcmVzZXJ2
ZUFzcGVjdFJhdGlvPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCA5ODZhOWQ4
YjUxOWI2MTI5ODQ3MjNhNTViZWIyMTM3MjVjY2MwMTdkLi4yZDU0MjVhYWI3ODU2MDNhNjIyM2Ux
ZWYzYWM4NGZjMzUzZjVkY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaCIK
ICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oIgorI2luY2x1ZGUgIlNWR0FuaW1h
dGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkFk
ZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaCIKICNpbmNsdWRlICJTVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uSW1wbC5oIgogCkBAIC05NSw2ICs5NiwyMyBAQCBwcml2YXRlOgogICAgIH0KIH07
CiAKK2NsYXNzIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkUG9pbnRMaXN0LCBTVkdBbmltYXRp
b25Qb2ludExpc3RGdW5jdGlvbj4geworICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRQb2ludExpc3QsIFNWR0FuaW1hdGlvblBvaW50TGlzdEZ1
bmN0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIAorcHVibGljOgorICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
QW5pbWF0ZWRQb2ludExpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUp
CisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkUG9pbnRM
aXN0QW5pbWF0b3I+KG5ldyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSkpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9ncmVzcyhTVkdF
bGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRD
b3VudCkgZmluYWwKKyAgICB7CisgICAgICAgIG1fZnVuY3Rpb24ucHJvZ3Jlc3ModGFyZ2V0RWxl
bWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fYW5pbWF0ZWQtPmFuaW1WYWwoKSk7Cisg
ICAgfQorfTsKKwogY2xhc3MgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3Ig
ZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpbywgU1ZHQW5pbWF0aW9uUHJlc2VydmVBc3BlY3RSYXRpb0Z1bmN0aW9u
PiB7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR0FuaW1hdGlvblByZXNlcnZlQXNwZWN0UmF0aW9G
dW5jdGlvbj47CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCmluZGV4IGVhNTMw
NjQ0MGIzOGM4OTY0MTRlNTBjYWZiZmJlZmVjNjNjN2Q3MmMuLjUxNWFkMjYwYTZiYTc0NjhkMGNj
NmY0MWUzYTA1MTIwOGUzYmQ0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaApAQCAtMzAsMTEgKzMwLDEyIEBA
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExl
bmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlckxpc3QuaCIKLSNpbmNsdWRl
ICJTVkdBbmltYXRlZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJpbWl0aXZl
UHJvcGVydHkuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5LmgiCisjaW5jbHVkZSAi
U1ZHUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgogI2lu
Y2x1ZGUgIlNWR1JlY3QuaCIKIApAQCAtNDcsNCArNDgsNiBAQCB1c2luZyBTVkdBbmltYXRlZE51
bWJlciA9IFNWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHk8ZmxvYXQ+OwogdXNpbmcgU1ZHQW5p
bWF0ZWRSZWN0ID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5PFNWR1JlY3Q+OwogdXNpbmcgU1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5PFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8+OwogCit1c2luZyBTVkdBbmltYXRlZFBvaW50TGlzdCA9IFNW
R0FuaW1hdGVkUHJvcGVydHlMaXN0PFNWR1BvaW50TGlzdD47CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRhZjQ4MWNhMTI3MWE5NTI4YTEyMWUyM2RlY2YwYTJmOTg2ZjZlYWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5TGlzdC5oCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IExpc3RUeXBlPgorY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QgOiBwdWJsaWMgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eSB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1l
bnRzPgorICAgIHN0YXRpYyBSZWY8U1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q+IGNyZWF0ZShTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QoY29u
dGV4dEVsZW1lbnQsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAg
ICB9CisKKyAgICB+U1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QoKQorICAgIHsKKyAgICAgICAgbV9i
YXNlVmFsLT5kZXRhY2goKTsKKyAgICAgICAgaWYgKG1fYW5pbVZhbCkKKyAgICAgICAgICAgIG1f
YW5pbVZhbC0+ZGV0YWNoKCk7CisgICAgfQorCisgICAgLy8gVXNlZCBieSB0aGUgRE9NLgorICAg
IGNvbnN0IFJlZjxMaXN0VHlwZT4mIGJhc2VWYWwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VWYWw7
IH0KKworICAgIC8vIFVzZWQgYnkgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoKS4KKyAgICBS
ZWY8TGlzdFR5cGU+JiBiYXNlVmFsKCkgeyByZXR1cm4gbV9iYXNlVmFsOyB9CisKKyAgICAvLyBV
c2VkIGJ5IHRoZSBET00uCisgICAgY29uc3QgUmVmUHRyPExpc3RUeXBlPiYgYW5pbVZhbCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8U1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QqPih0aGlzKS0+
ZW5zdXJlQW5pbVZhbCgpOyB9CisKKyAgICAvLyBDYWxsZWQgYnkgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yIHRvIHBhc3MgdGhlIGFuaW1WYWwgdG8gdGhlIFNWR0FuaW1hdGlvbkZ1bmN0aW9u
Ojpwcm9ncmVzcy4KKyAgICBSZWZQdHI8TGlzdFR5cGU+JiBhbmltVmFsKCkgeyByZXR1cm4gZW5z
dXJlQW5pbVZhbCgpOyB9CisKKyAgICAvLyBVc2VkIHdoZW4gY29tbWl0dGluZyBhIGNoYW5nZSBm
cm9tIHRoZSBTVkdBbmltYXRlZFByb3BlcnR5IHRvIHRoZSBhdHRyaWJ1dGUuCisgICAgU3RyaW5n
IGJhc2VWYWxBc1N0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFzZVZhbC0+dmFs
dWVBc1N0cmluZygpOyB9CisKKyAgICAvLyBVc2VkIHRvIGFwcGx5IHRoZSBTVkdBbmltYXRvciBj
aGFuZ2UgdG8gdGhlIHRhcmdldCBlbGVtZW50LgorICAgIFN0cmluZyBhbmltVmFsQXNTdHJpbmco
KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQW5pbWF0aW5nKCkpOwor
ICAgICAgICByZXR1cm4gbV9hbmltVmFsLT52YWx1ZUFzU3RyaW5nKCk7CisgICAgfQorCisgICAg
Ly8gTWFuYWdpbmcgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBvd25lci4KKyAgICB2b2lkIHNl
dERpcnR5KCkgb3ZlcnJpZGUgeyBtX2Jhc2VWYWwtPnNldERpcnR5KCk7IH0KKyAgICBib29sIGlz
RGlydHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Jhc2VWYWwtPmlzRGlydHkoKTsgfQor
ICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZSB7IHJldHVybiBtX2Jh
c2VWYWwtPnN5bmNocm9uaXplKCk7IH0KKworICAgIC8vIFVzZWQgYnkgUmVuZGVyU1ZHRWxlbWVu
dHMgYW5kIER1bXBSZW5kZXJUcmVlLgorICAgIGNvbnN0IExpc3RUeXBlJiBjdXJyZW50VmFsdWUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUX0lNUExJRVMoaXNBbmltYXRpbmcoKSwgbV9h
bmltVmFsKTsKKyAgICAgICAgcmV0dXJuIGlzQW5pbWF0aW5nKCkgPyAqbV9hbmltVmFsIDogbV9i
YXNlVmFsLmdldCgpOworICAgIH0KKworICAgIC8vIENvbnRyb2xsaW5nIHRoZSBhbmltYXRpb24u
CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
bV9hbmltVmFsKQorICAgICAgICAgICAgKm1fYW5pbVZhbCA9IG1fYmFzZVZhbDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZW5zdXJlQW5pbVZhbCgpOworICAgICAgICBTVkdBbmltYXRlZFBy
b3BlcnR5OjpzdGFydEFuaW1hdGlvbigpOworICAgIH0KKworICAgIHZvaWQgc3RvcEFuaW1hdGlv
bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9hbmltVmFsKQorICAgICAgICAgICAg
Km1fYW5pbVZhbCA9IG1fYmFzZVZhbDsKKyAgICAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6c3Rv
cEFuaW1hdGlvbigpOworICAgIH0KKworICAgIC8vIENvbnRyb2xsaW5nIHRoZSBpbnN0YW5jZSBh
bmltYXRpb24uCisgICAgdm9pZCBpbnN0YW5jZVN0YXJ0QW5pbWF0aW9uKFNWR0FuaW1hdGVkUHJv
cGVydHkmIGFuaW1hdGVkKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9hbmltVmFsID0gc3Rh
dGljX2Nhc3Q8U1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3QmPihhbmltYXRlZCkuYW5pbVZhbCgpOwor
ICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5OjppbnN0YW5jZVN0YXJ0QW5pbWF0aW9uKGFuaW1h
dGVkKTsKKyAgICB9CisKKyAgICB2b2lkIGluc3RhbmNlU3RvcEFuaW1hdGlvbigpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBtX2FuaW1WYWwgPSBudWxscHRyOworICAgICAgICBTVkdBbmltYXRl
ZFByb3BlcnR5OjppbnN0YW5jZVN0b3BBbmltYXRpb24oKTsKKyAgICB9CisKK3Byb3RlY3RlZDoK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cykKKyAgICAgICAgOiBTVkdBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50KQorICAg
ICAgICAsIG1fYmFzZVZhbChMaXN0VHlwZTo6Y3JlYXRlKHRoaXMsIFNWR1Byb3BlcnR5QWNjZXNz
OjpSZWFkV3JpdGUsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKQorICAg
IHsKKyAgICB9CisKKyAgICBSZWZQdHI8TGlzdFR5cGU+JiBlbnN1cmVBbmltVmFsKCkKKyAgICB7
CisgICAgICAgIGlmICghbV9hbmltVmFsKQorICAgICAgICAgICAgbV9hbmltVmFsID0gTGlzdFR5
cGU6OmNyZWF0ZShtX2Jhc2VWYWwsIFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFkT25seSk7CisgICAg
ICAgIHJldHVybiBtX2FuaW1WYWw7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIHdoZW4gbV9iYXNl
VmFsIGNoYW5nZXMgb3IgYW4gaXRlbSBpbiBtX2Jhc2VWYWwgY2hhbmdlcy4KKyAgICB2b2lkIGNv
bW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5KiBwcm9wZXJ0eSkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmIChtX2FuaW1WYWwpCisgICAgICAgICAgICAqbV9hbmltVmFsID0gbV9iYXNl
VmFsOworICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5Ojpjb21taXRQcm9wZXJ0eUNoYW5nZShw
cm9wZXJ0eSk7CisgICAgfQorCisgICAgUmVmPExpc3RUeXBlPiBtX2Jhc2VWYWw7CisgICAgbXV0
YWJsZSBSZWZQdHI8TGlzdFR5cGU+IG1fYW5pbVZhbDsKK307CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2
ZUxpc3RGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YjA3ZmIxYjM0Mjc0MTI5YjM3YzZmNjkzNmFi
YmI3NmEzY2JmMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJTVkdBbmltYXRpb25BZGRpdGl2ZUZ1bmN0aW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGlzdFR5cGU+CitjbGFzcyBTVkdB
bmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2
ZUZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+
CisgICAgU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24oQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICAgICAgOiBTVkdBbmltYXRp
b25BZGRpdGl2ZUZ1bmN0aW9uKGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKQorICAgICAgICAsIG1fZnJvbShMaXN0VHlwZTo6Y3JlYXRlKHN0ZDo6Zm9y
d2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKQorICAgICAgICAsIG1fdG8oTGlzdFR5cGU6
OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkKKyAgICAgICAg
LCBtX3RvQXRFbmRPZkR1cmF0aW9uKExpc3RUeXBlOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3Vt
ZW50cz4oYXJndW1lbnRzKS4uLikpCisgICAgeworICAgIH0KKworcHJvdGVjdGVkOgorICAgIGNv
bnN0IFJlZjxMaXN0VHlwZT4mIHRvQXRFbmRPZkR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gIW1f
dG9BdEVuZE9mRHVyYXRpb24tPmlzRW1wdHkoKSA/IG1fdG9BdEVuZE9mRHVyYXRpb24gOiBtX3Rv
OyB9CisKKyAgICBib29sIGFkanVzdEFuaW1hdGVkTGlzdChBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIGZsb2F0IHBlcmNlbnRhZ2UsIFJlZlB0cjxMaXN0VHlwZT4mIGFuaW1hdGVkLCBib29s
IHJlc2l6ZUFuaW1hdGVkSWZOZWVkZWQgPSB0cnVlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3Rv
LT5udW1iZXJPZkl0ZW1zKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aWYgKG1fZnJvbS0+bnVtYmVyT2ZJdGVtcygpICYmIG1fZnJvbS0+c2l6ZSgpICE9IG1fdG8tPnNp
emUoKSkgeworICAgICAgICAgICAgaWYgKHBlcmNlbnRhZ2UgPj0gMC41KQorICAgICAgICAgICAg
ICAgICphbmltYXRlZCA9IG1fdG87CisgICAgICAgICAgICBlbHNlIGlmIChhbmltYXRpb25Nb2Rl
ICE9IEFuaW1hdGlvbk1vZGU6OlRvKQorICAgICAgICAgICAgICAgICphbmltYXRlZCA9IG1fZnJv
bTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChy
ZXNpemVBbmltYXRlZElmTmVlZGVkICYmIGFuaW1hdGVkLT5zaXplKCkgPCBtX3RvLT5zaXplKCkp
CisgICAgICAgICAgICBhbmltYXRlZC0+cmVzaXplKG1fdG8tPnNpemUoKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIFJlZjxMaXN0VHlwZT4gbV9mcm9tOworICAgIFJlZjxM
aXN0VHlwZT4gbV90bzsKKyAgICBSZWY8TGlzdFR5cGU+IG1fdG9BdEVuZE9mRHVyYXRpb247Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFiOGVjNjc1MjliYmY4ZTAzZmM0MzFiNWQ4ZTIyZjIzZGFlZmNiNjUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxp
c3RGdW5jdGlvbkltcGwuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHQW5p
bWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdFbGVtZW50OworCitjbGFzcyBTVkdB
bmltYXRpb25Qb2ludExpc3RGdW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25BZGRpdGl2ZUxp
c3RGdW5jdGlvbjxTVkdQb2ludExpc3Q+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gU1ZH
QW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb248U1ZHUG9pbnRMaXN0PjsKKyAgICB1c2luZyBC
YXNlOjpCYXNlOworCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNv
bnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIG1fZnJvbS0+cGFyc2UoZnJvbSk7CisgICAgICAgIG1fdG8tPnBhcnNlKHRvKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldFRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0
RW5kT2ZEdXJhdGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fdG9BdEVuZE9mRHVyYXRp
b24tPnBhcnNlKHRvQXRFbmRPZkR1cmF0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHByb2dyZXNz
KFNWR0VsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgUmVm
UHRyPFNWR1BvaW50TGlzdD4mIGFuaW1hdGVkKQorICAgIHsKKyAgICAgICAgaWYgKCFhZGp1c3RB
bmltYXRlZExpc3QobV9hbmltYXRpb25Nb2RlLCBwZXJjZW50YWdlLCBhbmltYXRlZCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxTVkdQb2ludD4+JiBm
cm9tSXRlbXMgPSBtX2FuaW1hdGlvbk1vZGUgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRl
ZC0+aXRlbXMoKSA6IG1fZnJvbS0+aXRlbXMoKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxT
VkdQb2ludD4+JiB0b0l0ZW1zID0gbV90by0+aXRlbXMoKTsKKyAgICAgICAgY29uc3QgVmVjdG9y
PFJlZjxTVkdQb2ludD4+JiB0b0F0RW5kT2ZEdXJhdGlvbkl0ZW1zID0gdG9BdEVuZE9mRHVyYXRp
b24oKS0+aXRlbXMoKTsKKyAgICAgICAgVmVjdG9yPFJlZjxTVkdQb2ludD4+JiBhbmltYXRlZEl0
ZW1zID0gYW5pbWF0ZWQtPml0ZW1zKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRvSXRlbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgZnJvbSA9
IGkgPCBmcm9tSXRlbXMuc2l6ZSgpID8gZnJvbUl0ZW1zW2ldLT52YWx1ZSgpIDogRmxvYXRQb2lu
dCgpOworICAgICAgICAgICAgRmxvYXRQb2ludCB0byA9IHRvSXRlbXNbaV0tPnZhbHVlKCk7Cisg
ICAgICAgICAgICBGbG9hdFBvaW50IHRvQXRFbmRPZkR1cmF0aW9uID0gaSA8IHRvQXRFbmRPZkR1
cmF0aW9uSXRlbXMuc2l6ZSgpID8gdG9BdEVuZE9mRHVyYXRpb25JdGVtc1tpXS0+dmFsdWUoKSA6
IEZsb2F0UG9pbnQoKTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQmIGFuaW1hdGVkID0gYW5pbWF0
ZWRJdGVtc1tpXS0+dmFsdWUoKTsKKworICAgICAgICAgICAgZmxvYXQgYW5pbWF0ZWRYID0gQmFz
ZTo6cHJvZ3Jlc3MocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb20ueCgpLCB0by54KCksIHRv
QXRFbmRPZkR1cmF0aW9uLngoKSwgYW5pbWF0ZWQueCgpKTsKKyAgICAgICAgICAgIGZsb2F0IGFu
aW1hdGVkWSA9IEJhc2U6OnByb2dyZXNzKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBmcm9tLnko
KSwgdG8ueSgpLCB0b0F0RW5kT2ZEdXJhdGlvbi55KCksIGFuaW1hdGVkLnkoKSk7CisKKyAgICAg
ICAgICAgIGFuaW1hdGVkID0geyBhbmltYXRlZFgsIGFuaW1hdGVkWSB9OworICAgICAgICB9Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQq
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxTVkdQb2ludD4+JiBm
cm9tSXRlbXMgPSBtX2Zyb20tPml0ZW1zKCk7CisgICAgICAgIFZlY3RvcjxSZWY8U1ZHUG9pbnQ+
PiYgdG9JdGVtcyA9IG1fdG8tPml0ZW1zKCk7CisKKyAgICAgICAgaWYgKCFmcm9tSXRlbXMuc2l6
ZSgpIHx8IGZyb21JdGVtcy5zaXplKCkgIT0gdG9JdGVtcy5zaXplKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyb21JdGVtcy5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgIHRvSXRlbXNbaV0tPnNldFZhbHVlKGZyb21JdGVtc1tpXS0+
dmFsdWUoKSArIHRvSXRlbXNbaV0tPnZhbHVlKCkpOworICAgIH0KK307CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oCmlu
ZGV4IGEwZDI1ZWJkZGE1NzkwZDQwYjhjM2RjMmVjMTFkODk4YjIwYjNlZTUuLmYxMDQxMjI1ZmM3
ZjBmYzhiOWNhYzRjNzU3OTQwY2Q3YzUxYjk3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaApAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgiCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5o
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0F0
dHJpYnV0ZUFjY2Vzc29yLmgiCkBAIC03OSwxMiArNzgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
Z2lzdGVyQXR0cmlidXRlKFNWR0FuaW1hdGVkTnVtYmVyTGlzdEF0dHJpYnV0ZUFjY2Vzc29yPE93
bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGU+KCkp
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBR
dWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWRQb2ludExpc3RBdHRyaWJ1
dGUgT3duZXJUeXBlOjoqYXR0cmlidXRlPgotICAgIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGUoKQot
ICAgIHsKLSAgICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5pbWF0ZWRQb2ludExpc3RBdHRy
aWJ1dGVBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0cmlidXRlTmFt
ZSwgYXR0cmlidXRlPigpKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVk
U3RyaW5nQXR0cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KICAgICB2b2lkIHJlZ2lzdGVy
QXR0cmlidXRlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5TGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhMTFhMDVkZmNlYjM4ZDI4NDcwMjU2YTc5OTk0
NjYwYzgwYzZjZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eUxpc3QuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiU1ZHTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFByb3BlcnR5VHlwZT4KK2NsYXNzIFNWR1Byb3BlcnR5TGlzdCA6IHB1YmxpYyBTVkdMaXN0
PFJlZjxQcm9wZXJ0eVR5cGU+PiwgcHVibGljIFNWR1Byb3BlcnR5T3duZXIgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2VMaXN0ID0gU1ZHTGlzdDxSZWY8UHJvcGVydHlUeXBlPj47CisgICAgdXNp
bmcgQmFzZUxpc3Q6OmlzRW1wdHk7CisgICAgdXNpbmcgQmFzZUxpc3Q6OnNpemU7CisgICAgdXNp
bmcgQmFzZUxpc3Q6OmFwcGVuZDsKKworcHJvdGVjdGVkOgorICAgIHVzaW5nIFNWR1Byb3BlcnR5
T3duZXI6OlNWR1Byb3BlcnR5T3duZXI7CisgICAgdXNpbmcgQmFzZUxpc3Q6Om1faXRlbXM7Cisg
ICAgdXNpbmcgQmFzZUxpc3Q6Om1fYWNjZXNzOworICAgIHVzaW5nIEJhc2VMaXN0OjptX293bmVy
OworCisgICAgU1ZHUHJvcGVydHlMaXN0KFNWR1Byb3BlcnR5T3duZXIqIG93bmVyID0gbnVsbHB0
ciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzID0gU1ZHUHJvcGVydHlBY2Nlc3M6OlJlYWRXcml0
ZSkKKyAgICAgICAgOiBCYXNlTGlzdChvd25lciwgYWNjZXNzKQorICAgIHsKKyAgICB9CisKKyAg
ICB+U1ZHUHJvcGVydHlMaXN0KCkKKyAgICB7CisgICAgICAgIC8vIERldGFjaCB0aGUgaXRlbXMg
ZnJvbSB0aGUgbGlzdCBiZWZvcmUgaXQgaXMgZGVsZXRlZC4KKyAgICAgICAgZGV0YWNoSXRlbXMo
KTsKKyAgICB9CisKKyAgICB2b2lkIGRldGFjaEl0ZW1zKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGZvciAoYXV0byYgaXRlbSA6IG1faXRlbXMpCisgICAgICAgICAgICBpdGVtLT5kZXRhY2go
KTsKKyAgICB9CisKKyAgICBTVkdQcm9wZXJ0eU93bmVyKiBvd25lcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fb3duZXI7IH0KKworICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZH
UHJvcGVydHkqKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG93bmVyKCkpCisgICAgICAg
ICAgICBvd25lcigpLT5jb21taXRQcm9wZXJ0eUNoYW5nZSh0aGlzKTsKKyAgICB9CisKKyAgICBS
ZWY8UHJvcGVydHlUeXBlPiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIEFTU0VSVChpbmRleCA8IHNpemUoKSk7CisgICAgICAgIHJldHVybiBtX2l0ZW1z
LmF0KGluZGV4KS5jb3B5UmVmKCk7CisgICAgfQorCisgICAgUmVmPFByb3BlcnR5VHlwZT4gaW5z
ZXJ0KHVuc2lnbmVkIGluZGV4LCBSZWY8UHJvcGVydHlUeXBlPiYmIG5ld0l0ZW0pIG92ZXJyaWRl
CisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPD0gc2l6ZSgpKTsKKworICAgICAgICAvLyBT
cGVjOiBpZiBuZXdJdGVtIGlzIG5vdCBhIGRldGFjaGVkIG9iamVjdCwgdGhlbiBzZXQgbmV3SXRl
bSB0byBiZQorICAgICAgICAvLyBhIGNsb25lIG9iamVjdCBvZiBuZXdJdGVtLgorICAgICAgICBp
ZiAobmV3SXRlbS0+aXNBdHRhY2hlZCgpKQorICAgICAgICAgICAgbmV3SXRlbSA9IG5ld0l0ZW0t
PmNsb25lKCk7CisKKyAgICAgICAgLy8gU3BlYzogQXR0YWNoIG5ld0l0ZW0gdG8gdGhlIGxpc3Qg
b2JqZWN0LgorICAgICAgICBuZXdJdGVtLT5hdHRhY2godGhpcywgbV9hY2Nlc3MpOworICAgICAg
ICBtX2l0ZW1zLmluc2VydChpbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CisgICAgICAgIHJldHVy
biBhdChpbmRleCk7CisgICAgfQorCisgICAgUmVmPFByb3BlcnR5VHlwZT4gcmVwbGFjZSh1bnNp
Z25lZCBpbmRleCwgUmVmPFByb3BlcnR5VHlwZT4mJiBuZXdJdGVtKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAgUmVmPFByb3BlcnR5VHlw
ZT4mIGl0ZW0gPSBtX2l0ZW1zW2luZGV4XTsKKworICAgICAgICAvLyBTcGVjOiBEZXRhY2ggaXRl
bS4KKyAgICAgICAgaXRlbS0+ZGV0YWNoKCk7CisKKyAgICAgICAgLy8gU3BlYzogaWYgbmV3SXRl
bSBpcyBub3QgYSBkZXRhY2hlZCBvYmplY3QsIHRoZW4gc2V0IG5ld0l0ZW0gdG8gYmUKKyAgICAg
ICAgLy8gYSBjbG9uZSBvYmplY3Qgb2YgbmV3SXRlbS4KKyAgICAgICAgaWYgKG5ld0l0ZW0tPmlz
QXR0YWNoZWQoKSkKKyAgICAgICAgICAgIGl0ZW0gPSBuZXdJdGVtLT5jbG9uZSgpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBpdGVtID0gV1RGTW92ZShuZXdJdGVtKTsKKworICAgICAgICAv
LyBTcGVjOiBBdHRhY2ggbmV3SXRlbSB0byB0aGUgbGlzdCBvYmplY3QuCisgICAgICAgIGl0ZW0t
PmF0dGFjaCh0aGlzLCBtX2FjY2Vzcyk7CisgICAgICAgIHJldHVybiBhdChpbmRleCk7CisgICAg
fQorCisgICAgUmVmPFByb3BlcnR5VHlwZT4gcmVtb3ZlKHVuc2lnbmVkIGluZGV4KSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAgUmVmPFBy
b3BlcnR5VHlwZT4gaXRlbSA9IGF0KGluZGV4KTsKKworICAgICAgICAvLyBTcGVjOiBEZXRhY2gg
aXRlbS4KKyAgICAgICAgaXRlbS0+ZGV0YWNoKCk7CisgICAgICAgIG1faXRlbXMucmVtb3ZlKGlu
ZGV4KTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaXRlbSk7CisgICAgfQorCisgICAgUmVmPFBy
b3BlcnR5VHlwZT4gYXBwZW5kKFJlZjxQcm9wZXJ0eVR5cGU+JiYgbmV3SXRlbSkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIC8vIFNwZWM6IGlmIG5ld0l0ZW0gaXMgbm90IGEgZGV0YWNoZWQgb2Jq
ZWN0LCB0aGVuIHNldCBuZXdJdGVtIHRvIGJlCisgICAgICAgIC8vIGEgY2xvbmUgb2JqZWN0IG9m
IG5ld0l0ZW0uCisgICAgICAgIGlmIChuZXdJdGVtLT5pc0F0dGFjaGVkKCkpCisgICAgICAgICAg
ICBuZXdJdGVtID0gbmV3SXRlbS0+Y2xvbmUoKTsKKworICAgICAgICAvLyBTcGVjOiBBdHRhY2gg
bmV3SXRlbSB0byB0aGUgbGlzdCBvYmplY3QuCisgICAgICAgIG5ld0l0ZW0tPmF0dGFjaCh0aGlz
LCBtX2FjY2Vzcyk7CisgICAgICAgIG1faXRlbXMuYXBwZW5kKFdURk1vdmUobmV3SXRlbSkpOwor
ICAgICAgICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7CisgICAgfQorfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0
cnkuaAppbmRleCA5MWJkZGE0MzI0OWEzYTdmYTE1ZDYxZjUxMDJmZDc5ZWU4MzIwZTIyLi4zMjM3
Y2JiNjJiNWFiZjMyZmFmYWYzMDY4NGUxOTNjMzMxNzUyZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaApA
QCAtNjcsNiArNjcsMTIgQEAgcHVibGljOgogICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJp
YnV0ZU5hbWUsIFNWR0FuaW1hdGVkTnVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUg
c2luZ2xldG9uPHByb3BlcnR5PigpKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdBbmltYXRlZFBvaW50TGlzdD4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAgeworICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0
dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkUG9pbnRMaXN0QWNjZXNzb3I8T3duZXJUeXBlPjo6dGVt
cGxhdGUgc2luZ2xldG9uPHByb3BlcnR5PigpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxjb25z
dCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+IE93bmVyVHlwZTo6KnByb3BlcnR5
PgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYwNmNlZDZhNDFlOGNiODdlY2Y2NmNlYTNmYWU5NWE3ZWM5Y2Y1MzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5
TGlzdC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNWR1Byb3BlcnR5
TGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFByb3Bl
cnR5VHlwZT4KK2NsYXNzIFNWR1ZhbHVlUHJvcGVydHlMaXN0IDogcHVibGljIFNWR1Byb3BlcnR5
TGlzdDxQcm9wZXJ0eVR5cGU+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gU1ZHUHJvcGVy
dHlMaXN0PFByb3BlcnR5VHlwZT47CisgICAgdXNpbmcgQmFzZTo6Y2xlYXJJdGVtczsKKyAgICB1
c2luZyBCYXNlOjppdGVtczsKKyAgICB1c2luZyBCYXNlOjpzaXplOworCisgICAgU1ZHVmFsdWVQ
cm9wZXJ0eUxpc3QmIG9wZXJhdG9yPShjb25zdCBTVkdWYWx1ZVByb3BlcnR5TGlzdCYgb3RoZXIp
CisgICAgeworICAgICAgICBjbGVhckl0ZW1zKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
aXRlbSA6IG90aGVyLml0ZW1zKCkpCisgICAgICAgICAgICBhcHBlbmQoUHJvcGVydHlUeXBlOjpj
cmVhdGUoaXRlbS0+dmFsdWUoKSkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgLy8gVGhpcyBjYXN0aW5nIG9wZXJhdG9yIHJldHVybnMgYSBWZWN0b3Igb2YgdGhlIHVuZGVy
bHlpbmcgVmFsdWVUeXBlLAorICAgIC8vIGZvciBleGFtcGxlIFZlY3RvcjxmbG9hdD4gZnJvbSBT
VkdOdW1iZXJMaXN0LgorICAgIG9wZXJhdG9yIFZlY3Rvcjx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU6
OlZhbHVlVHlwZT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgVmVjdG9yPHR5cGVuYW1lIFByb3Bl
cnR5VHlwZTo6VmFsdWVUeXBlPiB2YWx1ZXM7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgaXRl
bSA6IGl0ZW1zKCkpCisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKGl0ZW0tPnZhbHVlKCkpOwor
ICAgICAgICByZXR1cm4gdmFsdWVzOworICAgIH0KKworICAgIHZvaWQgcmVzaXplKHNpemVfdCBu
ZXdTaXplKQorICAgIHsKKyAgICAgICAgLy8gQWRkIG5ldyBpdGVtcy4KKyAgICAgICAgd2hpbGUg
KHNpemUoKSA8IG5ld1NpemUpCisgICAgICAgICAgICBhcHBlbmQoUHJvcGVydHlUeXBlOjpjcmVh
dGUoKSk7CisKKyAgICAgICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGl0ZW1zLgorICAgICAgICB3aGls
ZSAoc2l6ZSgpID4gbmV3U2l6ZSkKKyAgICAgICAgICAgIHJlbW92ZShzaXplKCkgLSAxKTsKKyAg
ICB9CisKK3Byb3RlY3RlZDoKKyAgICB1c2luZyBCYXNlOjphcHBlbmQ7CisgICAgdXNpbmcgQmFz
ZTo6cmVtb3ZlOworCisgICAgLy8gQmFzZSBhbmQgZGVmYXVsdCBjb25zdHJ1Y3Rvci4gRG8gbm90
IHVzZSAidXNpbmcgQmFzZTo6QmFzZSIgYmVjYXVzZSBvZiBXaW5kb3dzIGFuZCBHVEsgcG9ydHMu
CisgICAgU1ZHVmFsdWVQcm9wZXJ0eUxpc3QoU1ZHUHJvcGVydHlPd25lciogb3duZXIgPSBudWxs
cHRyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MgPSBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdy
aXRlKQorICAgICAgICA6IEJhc2Uob3duZXIsIGFjY2VzcykKKyAgICB7CisgICAgfQorCisgICAg
Ly8gVXNlZCBieSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdCB3aGVuIGNyZWF0aW5nIGl0IGFuaW1W
YWwgZnJvbSBiYXNlVmFsLgorICAgIFNWR1ZhbHVlUHJvcGVydHlMaXN0KGNvbnN0IFNWR1ZhbHVl
UHJvcGVydHlMaXN0JiBvdGhlciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzID0gU1ZHUHJvcGVy
dHlBY2Nlc3M6OlJlYWRXcml0ZSkKKyAgICAgICAgOiBCYXNlKG90aGVyLm93bmVyKCksIGFjY2Vz
cykKKyAgICB7CisgICAgICAgIC8vIENsb25lIGFsbCBpdGVtcy4KKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBpdGVtIDogb3RoZXIuaXRlbXMoKSkKKyAgICAgICAgICAgIGFwcGVuZChQcm9wZXJ0
eVR5cGU6OmNyZWF0ZShpdGVtLT52YWx1ZSgpKSk7CisgICAgfQorfTsKKworfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY1
N2QxMDUwYWNjZWEwZmMzMTNlZDAyMjA2ZDNmYTI0YmRmODM4NTkuLjMzODg2ZGRiMDhjMDk5MTQ3
YjE4NjgyYTg2ZjMwOWY5OTE4YTU1MTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wMy0y
MSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbW92ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1BvaW50LCBTVkdQb2ludExp
c3QgYW5kIFNWR0FuaW1hdGVkUG9pbnRMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU5MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9kb20vU1ZHUG9pbnRMaXN0LWJhc2ljcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogc3ZnL2RvbS9TVkdQb2ludExpc3QtYmFzaWNzLnhodG1sOgorICAg
ICAgICBUaGlzIGNoYW5nZSBpcyByZXF1aXJlZCBiZWNhdXNlIFNWR1BvaW50TGlzdCB3aWxsIGJl
IGZvbGxvd2luZyB0aGUgU1ZHMgorICAgICAgICBzcGVjcyByZWdhcmRpbmcgYWRkaW5nIG5ldyBp
dGVtcyB0byB0aGUgbGlzdC4gCisKKyAgICAgICAgU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9T
VkcvdHlwZXMuaHRtbCNUZXJtTGlzdEludGVyZmFjZS4KKwogMjAxOS0wMy0yMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jbHVkZSBXQUwgYW5kIFNITSBm
aWxlIHNpemUgaW4gSURCIGRhdGFiYXNlIHNpemUgY29tcHV0YXRpb24KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N2Zy9kb20vU1ZHUG9pbnRMaXN0LWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdmcvZG9tL1NWR1BvaW50TGlzdC1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IDZm
NmVmZGQ5Mzk0YzkxY2RkZjQwNWU0OThkNjRlNGFjNDFiODBjMWUuLmYxMjQ3N2Y5ODgwMThjYzlj
NWI3N2M5Y2IzZjNiZjhhZDBjM2Y4YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9kb20v
U1ZHUG9pbnRMaXN0LWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9TVkdQb2ludExpc3QtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtNDUsNiArNDUsNyBAQCBQQVNT
IHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKCdhU3RyaW5nJykgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTm90IGVubwogUEFTUyBwb2x5MS5wb2ludHMuaW5zZXJ0SXRlbUJlZm9yZShw
b2x5MSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQ
QVNTIHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBkdW1wUG9pbnQocG9seTEucG9p
bnRzLmluc2VydEl0ZW1CZWZvcmUocG9seTEucG9pbnRzLmdldEl0ZW0oMSksICdhU3RyaW5nJykp
IGlzICJ4PTEwMCB5PTAiCitQQVNTIGR1bXBQb2ludChwb2x5MS5wb2ludHMucmVtb3ZlSXRlbSgy
LCAnYVN0cmluZycpKSBpcyAieD0xMDAgeT0wIgogUEFTUyBwb2x5MS5wb2ludHMubnVtYmVyT2ZJ
dGVtcyBpcyA0CiBQQVNTIGR1bXBQb2ludChwb2x5MS5wb2ludHMuZ2V0SXRlbSgwKSkgaXMgIng9
MTAwIHk9MCIKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDEpKSBpcyAieD0w
IHk9MCIKQEAgLTUyLDYgKzUzLDcgQEAgUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmdldEl0
ZW0oMikpIGlzICJ4PTEwMCB5PTEwMCIKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJ
dGVtKDMpKSBpcyAieD0wIHk9MTAwIgogUEFTUyBwb2x5MS5nZXRBdHRyaWJ1dGUoJ3BvaW50cycp
LmZvcm1hdFBvaW50c0F0dHJpYnV0ZSgpIGlzICIxMDAgMCAwIDAgMTAwIDEwMCAwIDEwMCIKIFBB
U1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKHBvbHkxLnBvaW50cy5n
ZXRJdGVtKDEpLCBwb2x5MSkpIGlzICJ4PTAgeT0wIgorUEFTUyBkdW1wUG9pbnQocG9seTEucG9p
bnRzLnJlbW92ZUl0ZW0oMiwgJ2FTdHJpbmcnKSkgaXMgIng9MCB5PTAiCiBQQVNTIHBvbHkxLnBv
aW50cy5udW1iZXJPZkl0ZW1zIGlzIDQKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJ
dGVtKDApKSBpcyAieD0wIHk9MCIKIFBBU1MgZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVt
KDEpKSBpcyAieD0xMDAgeT0wIgpAQCAtNTksMTIgKzYxLDE0IEBAIFBBU1MgZHVtcFBvaW50KHBv
bHkxLnBvaW50cy5nZXRJdGVtKDIpKSBpcyAieD0xMDAgeT0xMDAiCiBQQVNTIGR1bXBQb2ludChw
b2x5MS5wb2ludHMuZ2V0SXRlbSgzKSkgaXMgIng9MCB5PTEwMCIKIFBBU1MgcG9seTEuZ2V0QXR0
cmlidXRlKCdwb2ludHMnKS5mb3JtYXRQb2ludHNBdHRyaWJ1dGUoKSBpcyAiMCAwIDEwMCAwIDEw
MCAxMDAgMCAxMDAiCiBQQVNTIGR1bXBQb2ludChwb2x5MS5wb2ludHMuaW5zZXJ0SXRlbUJlZm9y
ZShwb2x5MS5wb2ludHMuZ2V0SXRlbSgxKSwgbnVsbCkpIGlzICJ4PTEwMCB5PTAiCitQQVNTIGR1
bXBQb2ludChwb2x5MS5wb2ludHMucmVtb3ZlSXRlbSgyLCAnYVN0cmluZycpKSBpcyAieD0xMDAg
eT0wIgogUEFTUyBwb2x5MS5wb2ludHMubnVtYmVyT2ZJdGVtcyBpcyA0CiBQQVNTIGR1bXBQb2lu
dChwb2x5MS5wb2ludHMuZ2V0SXRlbSgwKSkgaXMgIng9MTAwIHk9MCIKIFBBU1MgZHVtcFBvaW50
KHBvbHkxLnBvaW50cy5nZXRJdGVtKDEpKSBpcyAieD0wIHk9MCIKIFBBU1MgZHVtcFBvaW50KHBv
bHkxLnBvaW50cy5nZXRJdGVtKDIpKSBpcyAieD0xMDAgeT0xMDAiCiBQQVNTIHBvbHkxLmdldEF0
dHJpYnV0ZSgncG9pbnRzJykuZm9ybWF0UG9pbnRzQXR0cmlidXRlKCkgaXMgIjEwMCAwIDAgMCAx
MDAgMTAwIDAgMTAwIgogUEFTUyBkdW1wUG9pbnQocG9seTEucG9pbnRzLmluc2VydEl0ZW1CZWZv
cmUocG9seTEucG9pbnRzLmdldEl0ZW0oMSksIDApKSBpcyAieD0wIHk9MCIKK1BBU1MgZHVtcFBv
aW50KHBvbHkxLnBvaW50cy5yZW1vdmVJdGVtKDIsICdhU3RyaW5nJykpIGlzICJ4PTAgeT0wIgog
UEFTUyBwb2x5MS5wb2ludHMubnVtYmVyT2ZJdGVtcyBpcyA0CiBQQVNTIGR1bXBQb2ludChwb2x5
MS5wb2ludHMuZ2V0SXRlbSgwKSkgaXMgIng9MCB5PTAiCiBQQVNTIGR1bXBQb2ludChwb2x5MS5w
b2ludHMuZ2V0SXRlbSgxKSkgaXMgIng9MTAwIHk9MCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9kb20vU1ZHUG9pbnRMaXN0LWJhc2ljcy54aHRtbCBiL0xheW91dFRlc3RzL3N2Zy9kb20v
U1ZHUG9pbnRMaXN0LWJhc2ljcy54aHRtbAppbmRleCBhMDY2Mzk4MzMxOWM1YjA3ZGEwMDE0YmM0
MjViNTNlY2Y1ODU3YzMzLi42ZWU0MjFjZDUzNTg2MWEzMzA4YWVjOGE4YWUwZWNmYzEyNDkwYTg5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1BvaW50TGlzdC1iYXNpY3MueGh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdQb2ludExpc3QtYmFzaWNzLnhodG1sCkBA
IC03NywxNCArNzcsMTYgQEAKICAgICBzaG91bGRUaHJvdygicG9seTEucG9pbnRzLmluc2VydEl0
ZW1CZWZvcmUobnVsbCkiKTsKIAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFBvaW50
KHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKHBvbHkxLnBvaW50cy5nZXRJdGVtKDEpLCAn
YVN0cmluZycpKSIsICJ4PTEwMCB5PTAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1
bXBQb2ludChwb2x5MS5wb2ludHMucmVtb3ZlSXRlbSgyLCAnYVN0cmluZycpKSIsICJ4PTEwMCB5
PTAiKTsKICAgICBzaG91bGRCZSgicG9seTEucG9pbnRzLm51bWJlck9mSXRlbXMiLCAiNCIpOwog
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVt
KDApKSIsICJ4PTEwMCB5PTAiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2lu
dChwb2x5MS5wb2ludHMuZ2V0SXRlbSgxKSkiLCAieD0wIHk9MCIpOwogICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDIpKSIsICJ4PTEwMCB5
PTEwMCIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50
cy5nZXRJdGVtKDMpKSIsICJ4PTAgeT0xMDAiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
InBvbHkxLmdldEF0dHJpYnV0ZSgncG9pbnRzJykuZm9ybWF0UG9pbnRzQXR0cmlidXRlKCkiLCAi
MTAwIDAgMCAwIDEwMCAxMDAgMCAxMDAiKTsKLSAgICAKKwogICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5pbnNlcnRJdGVtQmVmb3JlKHBvbHkxLnBvaW50
cy5nZXRJdGVtKDEpLCBwb2x5MSkpIiwgIng9MCB5PTAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMucmVtb3ZlSXRlbSgyLCAnYVN0cmluZycpKSIs
ICJ4PTAgeT0wIik7CiAgICAgc2hvdWxkQmUoInBvbHkxLnBvaW50cy5udW1iZXJPZkl0ZW1zIiwg
IjQiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMu
Z2V0SXRlbSgwKSkiLCAieD0wIHk9MCIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVt
cFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDEpKSIsICJ4PTEwMCB5PTAiKTsKQEAgLTkzLDEz
ICs5NSwxNSBAQAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicG9seTEuZ2V0QXR0cmlidXRl
KCdwb2ludHMnKS5mb3JtYXRQb2ludHNBdHRyaWJ1dGUoKSIsICIwIDAgMTAwIDAgMTAwIDEwMCAw
IDEwMCIpOwogCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9p
bnRzLmluc2VydEl0ZW1CZWZvcmUocG9seTEucG9pbnRzLmdldEl0ZW0oMSksIG51bGwpKSIsICJ4
PTEwMCB5PTAiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5w
b2ludHMucmVtb3ZlSXRlbSgyLCAnYVN0cmluZycpKSIsICJ4PTEwMCB5PTAiKTsKICAgICBzaG91
bGRCZSgicG9seTEucG9pbnRzLm51bWJlck9mSXRlbXMiLCAiNCIpOwogICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZHVtcFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDApKSIsICJ4PTEwMCB5
PTAiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMu
Z2V0SXRlbSgxKSkiLCAieD0wIHk9MCIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVt
cFBvaW50KHBvbHkxLnBvaW50cy5nZXRJdGVtKDIpKSIsICJ4PTEwMCB5PTEwMCIpOwogICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygicG9seTEuZ2V0QXR0cmlidXRlKCdwb2ludHMnKS5mb3JtYXRQ
b2ludHNBdHRyaWJ1dGUoKSIsICIxMDAgMCAwIDAgMTAwIDEwMCAwIDEwMCIpOwotICAgIAorCiAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLmluc2VydEl0
ZW1CZWZvcmUocG9seTEucG9pbnRzLmdldEl0ZW0oMSksIDApKSIsICJ4PTAgeT0wIik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9pbnQocG9seTEucG9pbnRzLnJlbW92ZUl0ZW0o
MiwgJ2FTdHJpbmcnKSkiLCAieD0wIHk9MCIpOwogICAgIHNob3VsZEJlKCJwb2x5MS5wb2ludHMu
bnVtYmVyT2ZJdGVtcyIsICI0Iik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wUG9p
bnQocG9seTEucG9pbnRzLmdldEl0ZW0oMCkpIiwgIng9MCB5PTAiKTsKICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImR1bXBQb2ludChwb2x5MS5wb2ludHMuZ2V0SXRlbSgxKSkiLCAieD0xMDAg
eT0wIik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>