<?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>228132</bug_id>
          
          <creation_ts>2021-07-20 16:24:22 -0700</creation_ts>
          <short_desc>Make the &apos;targetElement&apos; argument of the SVG animators to be a reference</short_desc>
          <delta_ts>2021-07-20 20:34:18 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</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>1778306</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-07-20 16:24:22 -0700</bug_when>
    <thetext>It is clear that many SVG animators functions assume the argument &apos;targetElement&apos; is not nullptr. Also the caller SVGAnimateElementBase makes sure its targetElement() is not nullptr before calling any of its animator&apos;s functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778311</commentid>
    <comment_count>1</comment_count>
      <attachid>433907</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-07-20 16:31:10 -0700</bug_when>
    <thetext>Created attachment 433907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778319</commentid>
    <comment_count>2</comment_count>
      <attachid>433907</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-07-20 17:27:14 -0700</bug_when>
    <thetext>Comment on attachment 433907
Patch

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

Non-reviewer&apos;s r=me.

&gt; Source/WebCore/svg/SVGElement.cpp:580
&gt; +        propertyRegistry().setAnimatedPropertyDirty(attributeName, animatedProperty);

(Probably should have been in a separate patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778352</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-20 20:33:51 -0700</bug_when>
    <thetext>Committed r280123 (239835@main): &lt;https://commits.webkit.org/239835@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433907.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778353</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-20 20:34:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/80874381&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433907</attachid>
            <date>2021-07-20 16:31:10 -0700</date>
            <delta_ts>2021-07-20 20:33:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228132-20210720163109.patch</filename>
            <type>text/plain</type>
            <size>71107</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcxYjgwMmI0NDMwZDFl
YjQyZTNjZGNkZmQyM2IyOGE4NTkxNTEyYy4uNWI5MjlkZTc4MGEyMmFjNDNiMWYzYjY2OTliMTA5
MjUxMTNlYTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTA3LTIwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdGhlICd0YXJn
ZXRFbGVtZW50JyBhcmd1bWVudCBvZiB0aGUgU1ZHIGFuaW1hdG9ycyB0byBiZSBhIHJlZmVyZW5j
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXQgaXMg
Y2xlYXIgdGhhdCBtYW55IFNWRyBhbmltYXRvcnMgZnVuY3Rpb25zIGFzc3VtZSB0aGUgYXJndW1l
bnQKKyAgICAgICAgJ3RhcmdldEVsZW1lbnQnIGlzIG5vdCBudWxscHRyLiBBbHNvIHRoZSBjYWxs
ZXIgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlCisgICAgICAgIG1ha2VzIHN1cmUgaXRzIHRhcmdldEVs
ZW1lbnQoKSBpcyBub3QgbnVsbHB0ciBiZWZvcmUgY2FsbGluZyBhbnkgb2YgaXRzCisgICAgICAg
IGFuaW1hdG9yJ3MgZnVuY3Rpb25zLgorCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnNldFRh
cmdldEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpj
YWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjphcHBseVJlc3VsdHNUb1RhcmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0b3BBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVEaXN0
YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yLmg6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUZ1bmN0aW9uLmg6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb246OmFu
aW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uTnVtYmVyTGlzdEZ1bmN0aW9u
OjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvblBvaW50TGlzdEZ1bmN0
aW9uOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvblRyYW5zZm9ybUxp
c3RGdW5jdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRpb25Db2xvckZ1bmN0aW9uOjpjb2xvckZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxhdGVEaXN0YW5jZSBjb25zdCk6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0
aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uQW5nbGVGdW5jdGlvbjo6
YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25Db2xvckZ1bmN0aW9uOjph
bmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkxlbmd0aEZ1bmN0aW9uOjph
bmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbk51bWJlckZ1bmN0aW9uOjph
bmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvblBhdGhTZWdMaXN0RnVuY3Rp
b246OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uUmVjdEZ1bmN0aW9u
OjphbmltYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0
aW9uOjphbmltYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25EaXNj
cmV0ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlv
bkZ1bmN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25GdW5jdGlvbjo6Y2Fs
Y3VsYXRlRGlzdGFuY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRnVu
Y3Rpb246OmFkZEZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlQW5p
bWF0b3I6OmlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QW5pYW10b3IgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQXR0cmlidXRlQW5pbWF0b3I6OmludmFsaWRhdGVTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVBbmltYXRvcjo6YXBwbHlBbmltYXRlZFN0eWxlUHJvcGVy
dHlDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlQW5pbWF0b3I6OnJlbW92
ZUFuaW1hdGVkU3R5bGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBdHRyaWJ1dGVB
bmltYXRvcjo6YXBwbHlBbmltYXRlZFByb3BlcnR5Q2hhbmdlKToKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0
cmlidXRlQW5pbWF0b3I6OnNldEZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBdHRyaWJ1dGVBbmltYXRvcjo6c2V0RnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0F0dHJpYnV0ZUFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSBjb25zdCk6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOgorICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5QW5pbWF0b3I6OmFkanVzdEZvckluaGVyaXRhbmNlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5QW5pbWF0b3I6OmNvbXB1dGVJbmhlcml0ZWRD
U1NQcm9wZXJ0eVZhbHVlIGNvbnN0KToKKworICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5T3duZXJSZWdpc3RyeS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5UmVnaXN0cnkuaDoKKyAgICAgICAgRml4IGEgdHlwbyBpbiB0aGUgbmFtZSBvZiBzZXRBbmlt
YXRlZFByb3BlcnR5RGlydHkoKS4KKworICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVl
UHJvcGVydHlBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVBy
b3BlcnR5TGlzdEFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQ
cm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaDoKKwogMjAyMS0wNy0yMCAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI3MjM3OSk6
IENoYXJhY3RlcnMgd2l0aCBubyBmb250cyB0aGF0IHN1cHBvcnQgdGhlbSBhcmUgZHJhd24gYXMg
dHdvIC5ub3RkZWYgZ2x5cGhzIGluIHRoZSBmYXN0IHRleHQgY29kZXBhdGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKaW5kZXggMGIzOWYwMjYzMTMxMDBi
OGZlN2ZlMDI5NzZmYjhjYTU5NmNlNzMwYi4uNjk5ZTlhM2UyYzJlZTlmNWE5MzA3MTJlMzE3MjFk
MzRhZGU1ZjQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFz
ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODIsOSArODIsOSBAQCBib29sIFNWR0FuaW1hdGVF
bGVtZW50QmFzZTo6aXNEaXNjcmV0ZUFuaW1hdG9yKCkgY29uc3QKICAgICByZXR1cm4gYW5pbWF0
b3IgJiYgYW5pbWF0b3ItPmlzRGlzY3JldGUoKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlRWxlbWVu
dEJhc2U6OnNldFRhcmdldEVsZW1lbnQoU1ZHRWxlbWVudCogdGFyZ2V0KQordm9pZCBTVkdBbmlt
YXRlRWxlbWVudEJhc2U6OnNldFRhcmdldEVsZW1lbnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCkKIHsKLSAgICBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRUYXJnZXRFbGVtZW50KHRhcmdldCk7
CisgICAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0VGFyZ2V0RWxlbWVudCh0YXJnZXRFbGVtZW50
KTsKICAgICByZXNldEFuaW1hdGlvbigpOwogfQogCkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBT
VkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGF1dG8q
IGFuaW1hdG9yID0gdGhpcy0+YW5pbWF0b3IoKSkgewotICAgICAgICBhbmltYXRvci0+c2V0RnJv
bUFuZFRvVmFsdWVzKHRhcmdldEVsZW1lbnQoKSwgYW5pbWF0ZVJhbmdlU3RyaW5nKGZyb21TdHJp
bmcpLCBhbmltYXRlUmFuZ2VTdHJpbmcodG9TdHJpbmcpKTsKKyAgICAgICAgYW5pbWF0b3ItPnNl
dEZyb21BbmRUb1ZhbHVlcygqdGFyZ2V0RWxlbWVudCgpLCBhbmltYXRlUmFuZ2VTdHJpbmcoZnJv
bVN0cmluZyksIGFuaW1hdGVSYW5nZVN0cmluZyh0b1N0cmluZykpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wg
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjCiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxh
dGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJ5U3RyaW5nKQogewotICAgIGlmICghdGhpcy0+dGFyZ2V0RWxlbWVudCgpKQorICAgIGlmICgh
dGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoYW5pbWF0
aW9uTW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OkJ5ICYmICghaXNBZGRpdGl2ZSgpIHx8IGlzRGlz
Y3JldGVBbmltYXRvcigpKSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIFNWR0FuaW1hdGVFbGVt
ZW50QmFzZTo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoYXV0byogYW5pbWF0b3IgPSB0
aGlzLT5hbmltYXRvcigpKSB7Ci0gICAgICAgIGFuaW1hdG9yLT5zZXRGcm9tQW5kQnlWYWx1ZXMo
dGFyZ2V0RWxlbWVudCgpLCBhbmltYXRlUmFuZ2VTdHJpbmcoZnJvbVN0cmluZyksIGFuaW1hdGVS
YW5nZVN0cmluZyhieVN0cmluZykpOworICAgICAgICBhbmltYXRvci0+c2V0RnJvbUFuZEJ5VmFs
dWVzKCp0YXJnZXRFbGVtZW50KCksIGFuaW1hdGVSYW5nZVN0cmluZyhmcm9tU3RyaW5nKSwgYW5p
bWF0ZVJhbmdlU3RyaW5nKGJ5U3RyaW5nKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBTVkdBbmltYXRlRWxl
bWVudEJhc2U6OnN0YXJ0QW5pbWF0aW9uKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1
dG8gcHJvdGVjdGVkQW5pbWF0b3IgPSBtYWtlUmVmUHRyKHRoaXMtPmFuaW1hdG9yKCkpKQotICAg
ICAgICBwcm90ZWN0ZWRBbmltYXRvci0+c3RhcnQodGFyZ2V0RWxlbWVudCgpKTsKKyAgICAgICAg
cHJvdGVjdGVkQW5pbWF0b3ItPnN0YXJ0KCp0YXJnZXRFbGVtZW50KCkpOwogfQogCiB2b2lkIFNW
R0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwcm9ncmVz
cywgdW5zaWduZWQgcmVwZWF0Q291bnQpCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBTVkdBbmlt
YXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcHJvZ3Jlc3MsIHVu
c2lnbmVkIHJlcGUKICAgICAgICAgcHJvZ3Jlc3MgPSBwcm9ncmVzcyA8IDAuNSA/IDAgOiAxOwog
CiAgICAgaWYgKGF1dG8gcHJvdGVjdGVkQW5pbWF0b3IgPSBtYWtlUmVmUHRyKHRoaXMtPmFuaW1h
dG9yKCkpKQotICAgICAgICBwcm90ZWN0ZWRBbmltYXRvci0+YW5pbWF0ZSh0YXJnZXRFbGVtZW50
KCksIHByb2dyZXNzLCByZXBlYXRDb3VudCk7CisgICAgICAgIHByb3RlY3RlZEFuaW1hdG9yLT5h
bmltYXRlKCp0YXJnZXRFbGVtZW50KCksIHByb2dyZXNzLCByZXBlYXRDb3VudCk7CiB9CiAKIHZv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjphcHBseVJlc3VsdHNUb1RhcmdldCgpCkBAIC0xNzcs
NyArMTc3LDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmFwcGx5UmVzdWx0c1RvVGFy
Z2V0KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIGFuaW1hdG9yID0gdGhpcy0+
YW5pbWF0b3IoKSkKLSAgICAgICAgYW5pbWF0b3ItPmFwcGx5KHRhcmdldEVsZW1lbnQoKSk7Cisg
ICAgICAgIGFuaW1hdG9yLT5hcHBseSgqdGFyZ2V0RWxlbWVudCgpKTsKIH0KIAogdm9pZCBTVkdB
bmltYXRlRWxlbWVudEJhc2U6OnN0b3BBbmltYXRpb24oU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCkKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6c3RvcEFu
aW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoYXV0byogYW5pbWF0b3IgPSB0aGlzLT5hbmltYXRvcklmRXhpc3RzKCkpCi0gICAgICAg
IGFuaW1hdG9yLT5zdG9wKHRhcmdldEVsZW1lbnQpOworICAgICAgICBhbmltYXRvci0+c3RvcCgq
dGFyZ2V0RWxlbWVudCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IFNWR0FuaW1hdGVFbGVt
ZW50QmFzZTo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRvU3RyaW5nKQpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiBmcm9tCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoYXV0byogYW5pbWF0b3IgPSB0
aGlzLT5hbmltYXRvcigpKQotICAgICAgICByZXR1cm4gYW5pbWF0b3ItPmNhbGN1bGF0ZURpc3Rh
bmNlKHRhcmdldEVsZW1lbnQoKSwgZnJvbVN0cmluZywgdG9TdHJpbmcpOworICAgICAgICByZXR1
cm4gYW5pbWF0b3ItPmNhbGN1bGF0ZURpc3RhbmNlKCp0YXJnZXRFbGVtZW50KCksIGZyb21TdHJp
bmcsIHRvU3RyaW5nKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKaW5kZXggMDIyZjRhZTI1ZDgwY2U1OGMwNWZkNDU2M2ZkYzI4MzJhNDZlODRjMy4uMjlj
MWI4NDJlZmYyNzY0ODllY2U1NDFkZDQxZjdlZjA2MDUzOTcxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcApAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJv
cGVydHlDaGFuZ2UoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkKICAgICAv
LyBBIGNoYW5nZSBpbiBhIHN0eWxlIHByb3BlcnR5LCBlLmcgU1ZHUmVjdEVsZW1lbnQ6Onggc2hv
dWxkIGJlIHNlcmlhbGl6ZWQgdG8KICAgICAvLyB0aGUgYXR0cmlidXRlIGltbWVkaWF0ZWx5LiBP
dGhlcndpc2UgaXQgaXMgb2theSB0byBiZSBsYXp5IGluIHRoaXMgcmVnYXJkLgogICAgIGlmICgh
cHJvcGVydHlSZWdpc3RyeSgpLmlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpKQotICAgICAgICBwcm9wZXJ0eVJlZ2lzdHJ5KCkuc2V0QW5pbWF0ZWRQcm9wZXJ0
RGlydHkoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eSk7CisgICAgICAgIHByb3BlcnR5
UmVnaXN0cnkoKS5zZXRBbmltYXRlZFByb3BlcnR5RGlydHkoYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWRQcm9wZXJ0eSk7CiAgICAgZWxzZQogICAgICAgICBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHkuYmFzZVZhbEFzU3RyaW5nKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvci5oCmluZGV4IGNiMDcwZDBiNTI0YzIzZTE5YTEzMzRhM2I2ZjAz
YzNhMjFiZGUxNmIuLjAzYjk3OTQ0NjQ2OGRlODYwY2FkNTA4NTNkNDZiZDg5N2Y1ZWJjNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MSwxMiArNTEsMTIgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0Rpc2NyZXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mdW5jdGlvbi5p
c0Rpc2NyZXRlKCk7IH0KIAotICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3Zl
cnJpZGUKKyAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50JiB0YXJnZXRFbGVt
ZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBtX2Z1bmN0aW9uLnNldEZyb21BbmRUb1ZhbHVlcyh0YXJnZXRFbGVtZW50LCBm
cm9tLCB0byk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRGcm9tQW5kQnlWYWx1ZXMoU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIGJ5KSBv
dmVycmlkZQorICAgIHZvaWQgc2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1lbnQmIHRhcmdldEVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiBieSkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIG1fZnVuY3Rpb24uc2V0RnJvbUFuZEJ5VmFsdWVzKHRhcmdldEVsZW1lbnQs
IGZyb20sIGJ5KTsKICAgICB9CkBAIC02NiwyMSArNjYsMjEgQEAgcHVibGljOgogICAgICAgICBt
X2Z1bmN0aW9uLnNldFRvQXRFbmRPZkR1cmF0aW9uVmFsdWUodG9BdEVuZE9mRHVyYXRpb24pOwog
ICAgIH0KIAotICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCopIG92ZXJyaWRlCisgICAgdm9pZCBz
dGFydChTVkdFbGVtZW50Jikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fYW5pbWF0ZWQtPnN0
YXJ0QW5pbWF0aW9uKCp0aGlzKTsKICAgICAgICAgZm9yIChhdXRvJiBpbnN0YW5jZSA6IG1fYW5p
bWF0ZWRJbnN0YW5jZXMpCiAgICAgICAgICAgICBpbnN0YW5jZS0+aW5zdGFuY2VTdGFydEFuaW1h
dGlvbigqdGhpcywgbV9hbmltYXRlZCk7CiAgICAgfQogCi0gICAgdm9pZCBhcHBseShTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQorICAgIHZvaWQgYXBwbHkoU1ZHRWxlbWVudCYg
dGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChpc0FuaW1hdGVkU3R5
bGVQcm9wZXJ0eUFuaWFtdG9yKHRhcmdldEVsZW1lbnQpKQogICAgICAgICAgICAgYXBwbHlBbmlt
YXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UodGFyZ2V0RWxlbWVudCwgbV9hbmltYXRlZC0+YW5pbVZh
bEFzU3RyaW5nKCkpOwogICAgICAgICBhcHBseUFuaW1hdGVkUHJvcGVydHlDaGFuZ2UodGFyZ2V0
RWxlbWVudCk7CiAgICAgfQogCi0gICAgdm9pZCBzdG9wKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1l
bnQpIG92ZXJyaWRlCisgICAgdm9pZCBzdG9wKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fYW5pbWF0ZWQtPmlzQW5pbWF0aW5nKCkpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGluc3RhbmNlLT5pbnN0YW5jZVN0b3BBbmltYXRpb24oKnRoaXMpOwogICAgIH0KIAotICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJp
ZGUKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50
JiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNv
bnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9mdW5jdGlvbi5jYWxjdWxhdGVE
aXN0YW5jZSh0YXJnZXRFbGVtZW50LCBmcm9tLCB0byk7CiAgICAgfQpAQCAtMTA1LDQgKzEwNSw0
IEBAIHByb3RlY3RlZDoKICAgICBBbmltYXRpb25GdW5jdGlvbiBtX2Z1bmN0aW9uOwogfTsKIAot
fQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmlu
ZGV4IDgxZWRjNTM4NzM3YWY0NzM4YjFkMjQ3OGQ5NmQ1M2MzYzJmMTIwNGIuLjIzMzFmYTY2NWNl
MjhmZTgwYjliYjYxM2IwM2I3MTQzMWMwOWQzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJ
bXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3Ms
IHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50
JiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZp
bmFsCiAgICAgewogICAgICAgICBtX2Z1bmN0aW9uLmFuaW1hdGUodGFyZ2V0RWxlbWVudCwgcHJv
Z3Jlc3MsIHJlcGVhdENvdW50LCBtX2FuaW1hdGVkLT5hbmltVmFsKCktPnZhbHVlKCkpOwogICAg
IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lk
IGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2ln
bmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50JiB0YXJn
ZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCiAg
ICAgewogICAgICAgICBib29sJiBhbmltYXRlZCA9IG1fYW5pbWF0ZWQtPmFuaW1WYWwoKTsKICAg
ICAgICAgbV9mdW5jdGlvbi5hbmltYXRlKHRhcmdldEVsZW1lbnQsIHByb2dyZXNzLCByZXBlYXRD
b3VudCwgYW5pbWF0ZWQpOwpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBw
cm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCisgICAgdm9pZCBhbmltYXRlKFNW
R0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRD
b3VudCkgZmluYWwKICAgICB7CiAgICAgICAgIEVudW1UeXBlIGFuaW1hdGVkOwogICAgICAgICBt
X2Z1bmN0aW9uLmFuaW1hdGUodGFyZ2V0RWxlbWVudCwgcHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBh
bmltYXRlZCk7CkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jl
c3MsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVt
ZW50JiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQp
IGZpbmFsCiAgICAgewogICAgICAgICBtX2Z1bmN0aW9uLmFuaW1hdGUodGFyZ2V0RWxlbWVudCwg
cHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBtX2FuaW1hdGVkLT5hbmltVmFsKCkpOwogICAgIH0KQEAg
LTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgYW5p
bWF0ZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQg
cmVwZWF0Q291bnQpIGZpbmFsCisgICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQmIHRhcmdldEVs
ZW1lbnQsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKICAgICB7
CiAgICAgICAgIG1fZnVuY3Rpb24uYW5pbWF0ZSh0YXJnZXRFbGVtZW50LCBwcm9ncmVzcywgcmVw
ZWF0Q291bnQsIG1fYW5pbWF0ZWQtPmFuaW1WYWwoKS0+dmFsdWUoKSk7CiAgICAgfQpAQCAtMTU3
LDcgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhbmltYXRl
KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBl
YXRDb3VudCkgZmluYWwKKyAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVu
dCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAogICAgIHsKICAg
ICAgICAgbV9mdW5jdGlvbi5hbmltYXRlKHRhcmdldEVsZW1lbnQsIHByb2dyZXNzLCByZXBlYXRD
b3VudCwgbV9hbmltYXRlZC0+YW5pbVZhbCgpKTsKICAgICB9CkBAIC0xNzYsNyArMTc2LDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5h
bAorICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9n
cmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCiAgICAgewogICAgICAgICBtX2Z1bmN0
aW9uLmFuaW1hdGUodGFyZ2V0RWxlbWVudCwgcHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBtX2FuaW1h
dGVkLT5hbmltVmFsKCkpOwogICAgIH0KQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHZv
aWQgYW5pbWF0ZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5z
aWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCiAgICAgewogICAgICAgICBtX2Z1bmN0aW9uLmFuaW1h
dGUodGFyZ2V0RWxlbWVudCwgcHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBtX2FuaW1hdGVkLT5hbmlt
VmFsKCkpOwogICAgIH0KQEAgLTIxMCw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBw
cm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCisgICAgdm9pZCBhbmltYXRlKFNW
R0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRD
b3VudCkgZmluYWwKICAgICB7CiAgICAgICAgIG1fYW5pbWF0ZWQtPmFuaW1WYWwoKS0+cGF0aEJ5
dGVTdHJlYW1XaWxsQ2hhbmdlKCk7CiAgICAgICAgIG1fZnVuY3Rpb24uYW5pbWF0ZSh0YXJnZXRF
bGVtZW50LCBwcm9ncmVzcywgcmVwZWF0Q291bnQsIG1fYW5pbWF0ZWQtPmFuaW1WYWwoKS0+cGF0
aEJ5dGVTdHJlYW0oKSk7CkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAK
IHByaXZhdGU6Ci0gICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZs
b2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAgICB2b2lkIGFuaW1h
dGUoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJl
cGVhdENvdW50KSBmaW5hbAogICAgIHsKICAgICAgICAgbV9mdW5jdGlvbi5hbmltYXRlKHRhcmdl
dEVsZW1lbnQsIHByb2dyZXNzLCByZXBlYXRDb3VudCwgbV9hbmltYXRlZC0+YW5pbVZhbCgpKTsK
ICAgICB9CkBAIC0yNDcsNyArMjQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3Ms
IHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50
JiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZp
bmFsCiAgICAgewogICAgICAgICBTVkdNYXJrZXJPcmllbnRUeXBlIGFuaW1hdGVkOwogICAgICAg
ICBtX2Z1bmN0aW9uLmFuaW1hdGUodGFyZ2V0RWxlbWVudCwgcHJvZ3Jlc3MsIHJlcGVhdENvdW50
LCBhbmltYXRlZCk7CkBAIC0yNjYsNyArMjY2LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJv
Z3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHZvaWQgYW5pbWF0ZShTVkdF
bGVtZW50JiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291
bnQpIGZpbmFsCiAgICAgewogICAgICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIGFu
aW1hdGVkID0gbV9hbmltYXRlZC0+YW5pbVZhbCgpLT52YWx1ZSgpOwogICAgICAgICBtX2Z1bmN0
aW9uLmFuaW1hdGUodGFyZ2V0RWxlbWVudCwgcHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBhbmltYXRl
ZCk7CkBAIC0yODUsNyArMjg1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2
b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVu
c2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50JiB0
YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFs
CiAgICAgewogICAgICAgICBtX2Z1bmN0aW9uLmFuaW1hdGUodGFyZ2V0RWxlbWVudCwgcHJvZ3Jl
c3MsIHJlcGVhdENvdW50LCBtX2FuaW1hdGVkLT5hbmltVmFsKCktPnZhbHVlKCkpOwogICAgIH0K
QEAgLTMwNywyMCArMzA3LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2F0dHJpYnV0
ZU5hbWUubWF0Y2hlcyhIVE1MTmFtZXM6OmNsYXNzQXR0cik7CiAgICAgfQogCi0gICAgdm9pZCBh
bmltYXRlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCkgZmluYWwKKyAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCYgdGFyZ2V0
RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAogICAg
IHsKICAgICAgICAgU3RyaW5nJiBhbmltYXRlZCA9IG1fYW5pbWF0ZWQtPmFuaW1WYWwoKTsKICAg
ICAgICAgbV9mdW5jdGlvbi5hbmltYXRlKHRhcmdldEVsZW1lbnQsIHByb2dyZXNzLCByZXBlYXRD
b3VudCwgYW5pbWF0ZWQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGFwcGx5KFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQpIGZpbmFsCisgICAgdm9pZCBhcHBseShTVkdFbGVtZW50JiB0YXJnZXRF
bGVtZW50KSBmaW5hbAogICAgIHsKICAgICAgICAgQmFzZTo6YXBwbHkodGFyZ2V0RWxlbWVudCk7
CiAgICAgICAgIGlmIChpc0FuaW1hdGVkU3R5bGVDbGFzc0FuaWFtdG9yKCkpCiAgICAgICAgICAg
ICBpbnZhbGlkYXRlU3R5bGUodGFyZ2V0RWxlbWVudCk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
c3RvcChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBmaW5hbAorICAgIHZvaWQgc3RvcChTVkdF
bGVtZW50JiB0YXJnZXRFbGVtZW50KSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKCFtX2FuaW1h
dGVkLT5pc0FuaW1hdGluZygpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQyLDEwICszNDIs
MTAgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFuaW1hdGUoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50
KSBmaW5hbAorICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBmbG9h
dCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCiAgICAgewogICAgICAgICBt
X2Z1bmN0aW9uLmFuaW1hdGUodGFyZ2V0RWxlbWVudCwgcHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBt
X2FuaW1hdGVkLT5hbmltVmFsKCkpOwogICAgIH0KIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlQYWlyQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3IuaAppbmRleCA1NWQ1NjkyZmE3ZjJkZmJl
MDNkMzg5MjNjYjZhYmE1YTc5YWQzMmI3Li5mZTMyODlmNzRlZmEzZGQ1MjUwYzQxYmEyNDE5MDdm
ODA0YTZjYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MSwyNCAr
NTEsMjQgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZvaWQgc3RhcnQoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0KFNWR0VsZW1l
bnQmIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2FuaW1hdGVkUHJv
cGVydHlBbmltYXRvcjEtPnN0YXJ0KHRhcmdldEVsZW1lbnQpOwogICAgICAgICBtX2FuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjItPnN0YXJ0KHRhcmdldEVsZW1lbnQpOwogICAgIH0KIAotICAgIHZv
aWQgYW5pbWF0ZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5z
aWduZWQgcmVwZWF0Q291bnQpIG92ZXJyaWRlCisgICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQm
IHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+YW5pbWF0
ZSh0YXJnZXRFbGVtZW50LCBwcm9ncmVzcywgcmVwZWF0Q291bnQpOwogICAgICAgICBtX2FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjItPmFuaW1hdGUodGFyZ2V0RWxlbWVudCwgcHJvZ3Jlc3MsIHJl
cGVhdENvdW50KTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGx5KFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQpIG92ZXJyaWRlCisgICAgdm9pZCBhcHBseShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXBwbHlBbmltYXRlZFByb3BlcnR5Q2hhbmdlKHRh
cmdldEVsZW1lbnQpOwogICAgIH0KIAotICAgIHZvaWQgc3RvcChTVkdFbGVtZW50KiB0YXJnZXRF
bGVtZW50KSBvdmVycmlkZQorICAgIHZvaWQgc3RvcChTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLT5z
dG9wKHRhcmdldEVsZW1lbnQpOwogICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjIt
PnN0b3AodGFyZ2V0RWxlbWVudCk7CkBAIC03OCw0ICs3OCw0IEBAIHByb3RlY3RlZDoKICAgICBS
ZWY8QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMj4gbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3Iy
OwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWly
QW5pbWF0b3JJbXBsLmgKaW5kZXggZmFmOTNmYjgzYmZkMDA1NTcxZjJkZGJkY2VkMGJlMjdiZDJm
NmFlNS4uOWQ0NDY4ZmIyMjM2ZDZhYWIxNzczNzI3MWU1MzU3MGQxMGNkYzhhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJB
bmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxl
bWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgZmluYWwKKyAgICB2
b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBmcm9tLCBj
b25zdCBTdHJpbmcmIHRvKSBmaW5hbAogICAgIHsKICAgICAgICAgYXV0byBwYWlyRnJvbSA9IFNW
R1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCBTVkdNYXJrZXJPcmllbnRU
eXBlPj46OmZyb21TdHJpbmcoZnJvbSk7CiAgICAgICAgIGF1dG8gcGFpclRvID0gU1ZHUHJvcGVy
dHlUcmFpdHM8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIFNWR01hcmtlck9yaWVudFR5cGU+Pjo6
ZnJvbVN0cmluZyh0byk7CkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX3RvID0gcGFpclRvLnNlY29uZDsK
ICAgICB9CiAKLSAgICB2b2lkIHNldEZyb21BbmRCeVZhbHVlcyhTVkdFbGVtZW50KiB0YXJnZXRF
bGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgYnkpIGZpbmFsCisgICAg
dm9pZCBzZXRGcm9tQW5kQnlWYWx1ZXMoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgY29uc3Qg
U3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIGJ5KSBmaW5hbAogICAgIHsKICAgICAgICAgc2V0
RnJvbUFuZFRvVmFsdWVzKHRhcmdldEVsZW1lbnQsIGZyb20sIGJ5KTsKICAgICAgICAgaWYgKG1f
YW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX2Zyb20gIT0gU1ZHTWFya2Vy
T3JpZW50QW5nbGUgfHwgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1f
dG8gIT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMS0+bV9mdW5jdGlvbi5hZGRGcm9tQW5k
VG9WYWx1ZXModGFyZ2V0RWxlbWVudCk7CiAgICAgfQogCi0gICAgdm9pZCBhbmltYXRlKFNWR0Vs
ZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCkgZmluYWwKKyAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgZmxv
YXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAogICAgIHsKICAgICAgICAg
aWYgKG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX2Zyb20gIT0gbV9h
bmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2Z1bmN0aW9uLm1fdG8pIHsKICAgICAgICAgICAg
IC8vIERpc2NyZXRlIGFuaW1hdGlvbiAtIG5vIGxpbmVhciBpbnRlcnBvbGF0aW9uIHBvc3NpYmxl
IGJldHdlZW4gdmFsdWVzIChlLmcuIGF1dG8gdG8gYW5nbGUpLgpAQCAtOTcsNyArOTcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9hbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyLT5tX2FuaW1h
dGVkLT5zZXRBbmltVmFsKFNWR01hcmtlck9yaWVudFVua25vd24pOwogICAgIH0KIAotICAgIHZv
aWQgc3RvcChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBmaW5hbAorICAgIHZvaWQgc3RvcChT
VkdFbGVtZW50JiB0YXJnZXRFbGVtZW50KSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKCFtX2Fu
aW1hdGVkUHJvcGVydHlBbmltYXRvcjEtPm1fYW5pbWF0ZWQtPmlzQW5pbWF0aW5nKCkpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBmaW5hbAorICAgIHZvaWQgc2V0RnJvbUFuZFRv
VmFsdWVzKFNWR0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8p
IGZpbmFsCiAgICAgewogICAgICAgICBhdXRvIHBhaXJGcm9tID0gU1ZHUHJvcGVydHlUcmFpdHM8
c3RkOjpwYWlyPGludCwgaW50Pj46OmZyb21TdHJpbmcoZnJvbSk7CiAgICAgICAgIGF1dG8gcGFp
clRvID0gU1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPGludCwgaW50Pj46OmZyb21TdHJpbmco
dG8pOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9yMi0+bV9mdW5jdGlvbi5tX3RvID0gcGFpclRvLnNlY29uZDsKICAgICB9CiAK
LSAgICB2b2lkIHNldEZyb21BbmRCeVZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBm
cm9tLCBjb25zdCBTdHJpbmcmIGJ5KSBmaW5hbAorICAgIHZvaWQgc2V0RnJvbUFuZEJ5VmFsdWVz
KFNWR0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgYnkpIGZpbmFs
CiAgICAgewogICAgICAgICBhdXRvIHBhaXJGcm9tID0gU1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpw
YWlyPGludCwgaW50Pj46OmZyb21TdHJpbmcoZnJvbSk7CiAgICAgICAgIGF1dG8gcGFpckJ5ID0g
U1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPGludCwgaW50Pj46OmZyb21TdHJpbmcoYnkpOwpA
QCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBz
ZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3Qg
U3RyaW5nJiB0bykgZmluYWwKKyAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50
JiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBmaW5hbAogICAgIHsKICAg
ICAgICAgYXV0byBwYWlyRnJvbSA9IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxmbG9hdCwg
ZmxvYXQ+Pjo6ZnJvbVN0cmluZyhmcm9tKTsKICAgICAgICAgYXV0byBwYWlyVG8gPSBTVkdQcm9w
ZXJ0eVRyYWl0czxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj46OmZyb21TdHJpbmcodG8pOwpAQCAt
MTcyLDcgKzE3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yMi0+bV9mdW5jdGlvbi5tX3RvID0gcGFpclRvLnNlY29uZDsKICAgICB9CiAKLSAgICB2b2lk
IHNldEZyb21BbmRCeVZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25z
dCBTdHJpbmcmIGJ5KSBmaW5hbAorICAgIHZvaWQgc2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1l
bnQmLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgYnkpIGZpbmFsCiAgICAgewog
ICAgICAgICBhdXRvIHBhaXJGcm9tID0gU1ZHUHJvcGVydHlUcmFpdHM8c3RkOjpwYWlyPGZsb2F0
LCBmbG9hdD4+Ojpmcm9tU3RyaW5nKGZyb20pOwogICAgICAgICBhdXRvIHBhaXJCeSA9IFNWR1By
b3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+Pjo6ZnJvbVN0cmluZyhieSk7CkBA
IC0xOTIsNCArMTkyLDQgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi19Cit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRpb25BZGRpdGl2ZUZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRpb25BZGRpdGl2ZUZ1bmN0aW9uLmgKaW5kZXggMTM3YmYzN2RmNjA2MDJjZDMz
MmY2MTljNDQ4YmUzOWM4MTEyMTM5NC4uZGNlMjllNjZlZmUxNTUxZTk1MWJkNGQ3MWY2YzA0ZWNh
YmQ5NzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0aW9uQWRkaXRpdmVGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlRnVuY3Rpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0Vs
ZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiBi
eSkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldEZyb21BbmRCeVZhbHVlcyhTVkdFbGVtZW50JiB0YXJn
ZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgYnkpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBzZXRGcm9tQW5kVG9WYWx1ZXModGFyZ2V0RWxlbWVudCwgZnJvbSwg
YnkpOwogICAgICAgICBhZGRGcm9tQW5kVG9WYWx1ZXModGFyZ2V0RWxlbWVudCk7CkBAIC03Myw0
ICs3Myw0IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faXNBZGRpdGl2ZTsKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBs
LmgKaW5kZXggNjFhMWQwMzZjZmRhNTJiYTRlYThiNzFlNTFiYjJjN2IxN2FkYmNiNi4uZDYyNDQ5
NWQ4NzhjNzU0YmZlNzA4NzgzYjJkMzMxNjliM2NmNmE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRp
dmVMaXN0RnVuY3Rpb25JbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTktMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB2b2lkIHNldEZyb21BbmRU
b1ZhbHVlcyhTVkdFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRv
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9mcm9tLT5wYXJzZShmcm9tKTsKICAgICAgICAg
bV90by0+cGFyc2UodG8pOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdG9B
dEVuZE9mRHVyYXRpb24tPnBhcnNlKHRvQXRFbmRPZkR1cmF0aW9uKTsKICAgICB9CiAKLSAgICB2
b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVu
c2lnbmVkIHJlcGVhdENvdW50LCBSZWZQdHI8U1ZHTGVuZ3RoTGlzdD4mIGFuaW1hdGVkKQorICAg
IHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywg
dW5zaWduZWQgcmVwZWF0Q291bnQsIFJlZlB0cjxTVkdMZW5ndGhMaXN0PiYgYW5pbWF0ZWQpCiAg
ICAgewogICAgICAgICBpZiAoIWFkanVzdEFuaW1hdGVkTGlzdChtX2FuaW1hdGlvbk1vZGUsIHBy
b2dyZXNzLCBhbmltYXRlZCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFJlZjxTVkdMZW5ndGg+PiYgYW5pbWF0ZWRJdGVtcyA9
IGFuaW1hdGVkLT5pdGVtcygpOwogICAgICAgICBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUgPSBh
bmltYXRlZC0+bGVuZ3RoTW9kZSgpOwogCi0gICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3Ro
Q29udGV4dCh0YXJnZXRFbGVtZW50KTsKKyAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhD
b250ZXh0KCZ0YXJnZXRFbGVtZW50KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRvSXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFNWR0xlbmd0aFR5cGUgbGVuZ3Ro
VHlwZSA9IChpIDwgZnJvbUl0ZW1zLnNpemUoKSAmJiBwcm9ncmVzcyA8IDAuNSA/IGZyb21JdGVt
cyA6IHRvSXRlbXMpW2ldLT52YWx1ZSgpLmxlbmd0aFR5cGUoKTsKIApAQCAtODIsNyArODIsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVz
KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCisgICAgdm9pZCBhZGRGcm9tQW5k
VG9WYWx1ZXMoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIGNvbnN0IFZlY3RvcjxSZWY8U1ZHTGVuZ3RoPj4mIGZyb21JdGVtcyA9IG1fZnJvbS0+aXRl
bXMoKTsKICAgICAgICAgY29uc3QgVmVjdG9yPFJlZjxTVkdMZW5ndGg+PiYgdG9JdGVtcyA9IG1f
dG8tPml0ZW1zKCk7CkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghZnJv
bUl0ZW1zLnNpemUoKSB8fCBmcm9tSXRlbXMuc2l6ZSgpICE9IHRvSXRlbXMuc2l6ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4
dCh0YXJnZXRFbGVtZW50KTsKKyAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0
KCZ0YXJnZXRFbGVtZW50KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyb21J
dGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZy
b21WYWx1ZSA9IGZyb21JdGVtc1tpXS0+dmFsdWUoKTsKICAgICAgICAgICAgIFNWR0xlbmd0aFZh
bHVlJiB0b1ZhbHVlID0gdG9JdGVtc1tpXS0+dmFsdWUoKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9u
PFNWR051bWJlckxpc3Q+OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAgICB2b2lkIHNldEZy
b21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJp
bmcmIHRvKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQm
LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICBtX2Zyb20tPnBhcnNlKGZyb20pOwogICAgICAgICBtX3RvLT5wYXJzZSh0byk7CkBA
IC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgICAgICBtX3RvQXRFbmRPZkR1cmF0aW9uLT5w
YXJzZSh0b0F0RW5kT2ZEdXJhdGlvbik7CiAgICAgfQogCi0gICAgdm9pZCBhbmltYXRlKFNWR0Vs
ZW1lbnQqLCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQsIFJlZlB0cjxTVkdO
dW1iZXJMaXN0PiYgYW5pbWF0ZWQpCisgICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQmLCBmbG9h
dCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQsIFJlZlB0cjxTVkdOdW1iZXJMaXN0PiYg
YW5pbWF0ZWQpCiAgICAgewogICAgICAgICBpZiAoIWFkanVzdEFuaW1hdGVkTGlzdChtX2FuaW1h
dGlvbk1vZGUsIHByb2dyZXNzLCBhbmltYXRlZCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFkZEZy
b21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50Kikgb3ZlcnJpZGUKKyAgICB2b2lkIGFkZEZyb21BbmRU
b1ZhbHVlcyhTVkdFbGVtZW50Jikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbnN0IFZlY3Rv
cjxSZWY8U1ZHTnVtYmVyPj4mIGZyb21JdGVtcyA9IG1fZnJvbS0+aXRlbXMoKTsKICAgICAgICAg
VmVjdG9yPFJlZjxTVkdOdW1iZXI+PiYgdG9JdGVtcyA9IG1fdG8tPml0ZW1zKCk7CkBAIC0xNTQs
NyArMTU0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25BZGRpdGl2
ZUxpc3RGdW5jdGlvbjxTVkdQb2ludExpc3Q+OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAg
ICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9t
LCBjb25zdCBTdHJpbmcmIHRvKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVz
KFNWR0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJy
aWRlCiAgICAgewogICAgICAgICBtX2Zyb20tPnBhcnNlKGZyb20pOwogICAgICAgICBtX3RvLT5w
YXJzZSh0byk7CkBAIC0xNjUsNyArMTY1LDcgQEAgcHVibGljOgogICAgICAgICBtX3RvQXRFbmRP
ZkR1cmF0aW9uLT5wYXJzZSh0b0F0RW5kT2ZEdXJhdGlvbik7CiAgICAgfQogCi0gICAgdm9pZCBh
bmltYXRlKFNWR0VsZW1lbnQqLCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQs
IFJlZlB0cjxTVkdQb2ludExpc3Q+JiBhbmltYXRlZCkKKyAgICB2b2lkIGFuaW1hdGUoU1ZHRWxl
bWVudCYsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgUmVmUHRyPFNWR1Bv
aW50TGlzdD4mIGFuaW1hdGVkKQogICAgIHsKICAgICAgICAgaWYgKCFhZGp1c3RBbmltYXRlZExp
c3QobV9hbmltYXRpb25Nb2RlLCBwcm9ncmVzcywgYW5pbWF0ZWQpKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTg5LDcgKzE4OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBhZGRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCopIG92ZXJyaWRlCisgICAgdm9pZCBh
ZGRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCYpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBj
b25zdCBWZWN0b3I8UmVmPFNWR1BvaW50Pj4mIGZyb21JdGVtcyA9IG1fZnJvbS0+aXRlbXMoKTsK
ICAgICAgICAgVmVjdG9yPFJlZjxTVkdQb2ludD4+JiB0b0l0ZW1zID0gbV90by0+aXRlbXMoKTsK
QEAgLTIwNyw3ICsyMDcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlv
bkFkZGl0aXZlTGlzdEZ1bmN0aW9uPFNWR1RyYW5zZm9ybUxpc3Q+OwogICAgIHVzaW5nIEJhc2U6
OkJhc2U7CiAKLSAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RnJv
bUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmlu
ZyYgdG8pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2Zyb20tPnBhcnNlKGZyb20pOwogICAg
ICAgICBtX3RvLT5wYXJzZSh0byk7CkBAIC0yMTgsNyArMjE4LDcgQEAgcHVibGljOgogICAgICAg
ICBtX3RvQXRFbmRPZkR1cmF0aW9uLT5wYXJzZSh0b0F0RW5kT2ZEdXJhdGlvbik7CiAgICAgfQog
Ci0gICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQqLCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQg
cmVwZWF0Q291bnQsIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiYgYW5pbWF0ZWQpCisgICAgdm9p
ZCBhbmltYXRlKFNWR0VsZW1lbnQmLCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291
bnQsIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiYgYW5pbWF0ZWQpCiAgICAgewogICAgICAgICAv
LyBQYXNzIGZhbHNlIHRvICdyZXNpemVBbmltYXRlZElmTmVlZGVkJywgYXMgdGhlIHNwZWNpYWwg
cG9zdC1tdWx0aXBsaWNhdGlvbiBiZWhhdmlvciBvZiA8YW5pbWF0ZVRyYW5zZm9ybT4gbmVlZHMg
dG8gYmUgcmVzcGVjdGVkIGJlbG93LgogICAgICAgICBpZiAoIWFkanVzdEFuaW1hdGVkTGlzdCht
X2FuaW1hdGlvbk1vZGUsIHByb2dyZXNzLCBhbmltYXRlZCwgZmFsc2UpKQpAQCAtMjU1LDcgKzI1
NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhZGRGcm9tQW5kVG9W
YWx1ZXMoU1ZHRWxlbWVudCopIG92ZXJyaWRlCisgICAgdm9pZCBhZGRGcm9tQW5kVG9WYWx1ZXMo
U1ZHRWxlbWVudCYpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb25zdCBWZWN0b3I8UmVmPFNW
R1RyYW5zZm9ybT4+JiBmcm9tSXRlbXMgPSBtX2Zyb20tPml0ZW1zKCk7CiAgICAgICAgIFZlY3Rv
cjxSZWY8U1ZHVHJhbnNmb3JtPj4mIHRvSXRlbXMgPSBtX3RvLT5pdGVtcygpOwpAQCAtMjcxLDQg
KzI3MSw0IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
QWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmNwcAppbmRleCAwMDJh
MjgxNjY3M2RiMzAzNDA5N2EyZjJjYzllNTFjNjA2MzYyMDRhLi43MTljNjM1NjFiMDY5NDdkNDI5
M2FlYTM3MGRjZWJlNWNhOWU3ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVu
Y3Rpb25JbXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0y
MDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDIyICszMiwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNvbG9yIFNWR0FuaW1hdGlvbkNvbG9yRnVuY3Rpb246OmNvbG9yRnJvbVN0cmluZyhTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKK0NvbG9yIFNWR0FuaW1h
dGlvbkNvbG9yRnVuY3Rpb246OmNvbG9yRnJvbVN0cmluZyhTVkdFbGVtZW50JiB0YXJnZXRFbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVy
RGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGN1cnJlbnRDb2xvcigiY3VycmVudENvbG9yIiwg
QXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYgKHN0cmluZyAhPSBj
dXJyZW50Q29sb3IuZ2V0KCkpCiAgICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxDb2xv
cj46OmZyb21TdHJpbmcoc3RyaW5nKTsKIAotICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRhcmdl
dEVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGFyZ2V0RWxl
bWVudC5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotc3RkOjpvcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxj
dWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJp
bmcmIHRvKSBjb25zdAorc3RkOjpvcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0aW9uSW50ZWdlckZ1
bmN0aW9uOjpjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBmcm9t
LCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OmFicyhwYXJzZUlu
dGVnZXI8aW50Pih0bykudmFsdWVfb3IoMCkgLSBwYXJzZUludGVnZXI8aW50Pihmcm9tKS52YWx1
ZV9vcigwKSk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5j
dGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFk
ZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAppbmRleCAwMzdkNzIyODJlMDQ2MTExY2RlMGU0NDJh
ZTA0ZmM1ZTMxZWY3Y2RjLi45ZDJmYjAyY2YwMGIwNmYwYTEwNDRiNTQ0OTE2MDc4NmExMTFlOGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25B
ZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSwx
MyArNDEsMTMgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25BZGRpdGl2
ZVZhbHVlRnVuY3Rpb248U1ZHQW5nbGVWYWx1ZT47CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAot
ICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0Vs
ZW1lbnQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgLy8gVmFsdWVzIHdpbGwgYmUgc2V0IGJ5IFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmlt
YXRvci4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgdm9pZCBh
bmltYXRlKFNWR0VsZW1lbnQqLCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQs
IFNWR0FuZ2xlVmFsdWUmIGFuaW1hdGVkKQorICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50Jiwg
ZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmdsZVZhbHVlJiBhbmlt
YXRlZCkKICAgICB7CiAgICAgICAgIGZsb2F0IG51bWJlciA9IGFuaW1hdGVkLnZhbHVlKCk7CiAg
ICAgICAgIG51bWJlciA9IEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBtX2Zy
b20udmFsdWUoKSwgbV90by52YWx1ZSgpLCB0b0F0RW5kT2ZEdXJhdGlvbigpLnZhbHVlKCksIG51
bWJlcik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcjsKIAotICAgIHZvaWQgYWRkRnJvbUFu
ZFRvVmFsdWVzKFNWR0VsZW1lbnQqKSBvdmVycmlkZQorICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFs
dWVzKFNWR0VsZW1lbnQmKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV90by5zZXRWYWx1ZSht
X3RvLnZhbHVlKCkgKyBtX2Zyb20udmFsdWUoKSk7CiAgICAgfQpAQCAtNjgsNyArNjgsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlv
bjxDb2xvcj47CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIHZvaWQgc2V0RnJvbUFuZFRv
VmFsdWVzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29u
c3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdF
bGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYg
dG8pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2Zyb20gPSBjb2xvckZyb21TdHJpbmcodGFy
Z2V0RWxlbWVudCwgZnJvbSk7CiAgICAgICAgIG1fdG8gPSBjb2xvckZyb21TdHJpbmcodGFyZ2V0
RWxlbWVudCwgdG8pOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdG9BdEVu
ZE9mRHVyYXRpb24gPSBTVkdQcm9wZXJ0eVRyYWl0czxDb2xvcj46OmZyb21TdHJpbmcodG9BdEVu
ZE9mRHVyYXRpb24pOwogICAgIH0KIAotICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50KiwgZmxv
YXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBDb2xvciYgYW5pbWF0ZWQpCisgICAg
dm9pZCBhbmltYXRlKFNWR0VsZW1lbnQmLCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0
Q291bnQsIENvbG9yJiBhbmltYXRlZCkKICAgICB7CiAgICAgICAgIGF1dG8gc2ltcGxlQW5pbWF0
ZWQgPSBhbmltYXRlZC50b1NSR0JBTG9zc3k8dWludDhfdD4oKTsKICAgICAgICAgYXV0byBzaW1w
bGVGcm9tID0gbV9hbmltYXRpb25Nb2RlID09IEFuaW1hdGlvbk1vZGU6OlRvID8gc2ltcGxlQW5p
bWF0ZWQgOiBtX2Zyb20udG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CkBAIC05NCw3ICs5NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgYW5pbWF0ZWQgPSBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZzxT
UkdCQTx1aW50OF90Pj4oc3RkOjpscm91bmQocmVkKSwgc3RkOjpscm91bmQoZ3JlZW4pLCBzdGQ6
Omxyb3VuZChibHVlKSwgc3RkOjpscm91bmQoYWxwaGEpKTsKICAgICB9CiAKLSAgICBzdGQ6Om9w
dGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5n
JiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQorICAgIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBDb2xv
ciBmcm9tQ29sb3IgPSBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoZnJvbS5zdHJpcFdoaXRlU3BhY2Uo
KSk7CiAgICAgICAgIGlmICghZnJvbUNvbG9yLmlzVmFsaWQoKSkKQEAgLTExNCw3ICsxMTQsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVz
KFNWR0VsZW1lbnQqKSBvdmVycmlkZQorICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0Vs
ZW1lbnQmKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byBzaW1wbGVGcm9tID0gbV9mcm9t
LnRvU1JHQkFMb3NzeTx1aW50OF90PigpOwogICAgICAgICBhdXRvIHNpbXBsZVRvID0gbV90by50
b1NSR0JBTG9zc3k8dWludDhfdD4oKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAg
ICAgICBtX3RvID0gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8dWludDhfdD4+KHNp
bXBsZVRvLnJlZCArIHNpbXBsZUZyb20ucmVkLCBzaW1wbGVUby5ncmVlbiArIHNpbXBsZUZyb20u
Z3JlZW4sIHNpbXBsZVRvLmJsdWUgKyBzaW1wbGVGcm9tLmJsdWUpOwogICAgIH0KIAotICAgIHN0
YXRpYyBDb2xvciBjb2xvckZyb21TdHJpbmcoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBDb2xvciBjb2xvckZyb21TdHJpbmcoU1ZHRWxlbWVudCYsIGNvbnN0IFN0cmlu
ZyYpOwogfTsKIAogY2xhc3MgU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbjxpbnQ+IHsKQEAgLTEzMyw3ICsx
MzMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFs
dWVGdW5jdGlvbjxpbnQ+OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAgICB2b2lkIHNldEZy
b21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJp
bmcmIHRvKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQm
LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICBtX2Zyb20gPSBTVkdQcm9wZXJ0eVRyYWl0czxpbnQ+Ojpmcm9tU3RyaW5nKGZyb20p
OwogICAgICAgICBtX3RvID0gU1ZHUHJvcGVydHlUcmFpdHM8aW50Pjo6ZnJvbVN0cmluZyh0byk7
CkBAIC0xNDQsMTUgKzE0NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdG9BdEVuZE9mRHVyYXRp
b24gPSBTVkdQcm9wZXJ0eVRyYWl0czxpbnQ+Ojpmcm9tU3RyaW5nKHRvQXRFbmRPZkR1cmF0aW9u
KTsKICAgICB9CiAKLSAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCosIGZsb2F0IHByb2dyZXNz
LCB1bnNpZ25lZCByZXBlYXRDb3VudCwgaW50JiBhbmltYXRlZCkKKyAgICB2b2lkIGFuaW1hdGUo
U1ZHRWxlbWVudCYsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgaW50JiBh
bmltYXRlZCkKICAgICB7CiAgICAgICAgIGFuaW1hdGVkID0gc3RhdGljX2Nhc3Q8aW50Pihyb3Vu
ZGYoQmFzZTo6YW5pbWF0ZShwcm9ncmVzcywgcmVwZWF0Q291bnQsIG1fZnJvbSwgbV90bywgdG9B
dEVuZE9mRHVyYXRpb24oKSwgYW5pbWF0ZWQpKSk7CiAgICAgfQogCi0gICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNhbGN1
bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBj
b25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGFkZEZyb21BbmRUb1ZhbHVlcyhTVkdF
bGVtZW50KikgZmluYWwKKyAgICB2b2lkIGFkZEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50Jikg
ZmluYWwKICAgICB7CiAgICAgICAgIG1fdG8gKz0gbV9mcm9tOwogICAgIH0KQEAgLTE2OCw3ICsx
NjgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFs
dWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92
ZXJyaWRlCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCYsIGNvbnN0IFN0
cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1f
ZnJvbSA9IFNWR0xlbmd0aFZhbHVlKG1fbGVuZ3RoTW9kZSwgZnJvbSk7CiAgICAgICAgIG1fdG8g
PSBTVkdMZW5ndGhWYWx1ZShtX2xlbmd0aE1vZGUsIHRvKTsKQEAgLTE3OSw5ICsxNzksOSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fdG9BdEVuZE9mRHVyYXRpb24gPSBTVkdMZW5ndGhWYWx1ZShtX2xl
bmd0aE1vZGUsIHRvQXRFbmRPZkR1cmF0aW9uKTsKICAgICB9CiAKLSAgICB2b2lkIGFuaW1hdGUo
U1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVh
dENvdW50LCBTVkdMZW5ndGhWYWx1ZSYgYW5pbWF0ZWQpCisgICAgdm9pZCBhbmltYXRlKFNWR0Vs
ZW1lbnQmIHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgU1ZHTGVuZ3RoVmFsdWUmIGFuaW1hdGVkKQogICAgIHsKLSAgICAgICAgU1ZHTGVuZ3RoQ29u
dGV4dCBsZW5ndGhDb250ZXh0KHRhcmdldEVsZW1lbnQpOworICAgICAgICBTVkdMZW5ndGhDb250
ZXh0IGxlbmd0aENvbnRleHQoJnRhcmdldEVsZW1lbnQpOwogICAgICAgICBTVkdMZW5ndGhUeXBl
IGxlbmd0aFR5cGUgPSBwcm9ncmVzcyA8IDAuNSA/IG1fZnJvbS5sZW5ndGhUeXBlKCkgOiBtX3Rv
Lmxlbmd0aFR5cGUoKTsKIAogICAgICAgICBmbG9hdCBmcm9tID0gKG1fYW5pbWF0aW9uTW9kZSA9
PSBBbmltYXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkIDogbV9mcm9tKS52YWx1ZShsZW5ndGhDb250
ZXh0KTsKQEAgLTE5MywxOCArMTkzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgYW5pbWF0ZWQgPSB7
IGxlbmd0aENvbnRleHQsIHZhbHVlLCBsZW5ndGhUeXBlLCBtX2xlbmd0aE1vZGUgfTsKICAgICB9
CiAKLSAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50
KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNv
bnN0IG92ZXJyaWRlCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2Uo
U1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJp
bmcmIHRvKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBs
ZW5ndGhDb250ZXh0KHRhcmdldEVsZW1lbnQpOworICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxl
bmd0aENvbnRleHQoJnRhcmdldEVsZW1lbnQpOwogICAgICAgICBhdXRvIGZyb21MZW5ndGggPSBT
VkdMZW5ndGhWYWx1ZShtX2xlbmd0aE1vZGUsIGZyb20pOwogICAgICAgICBhdXRvIHRvTGVuZ3Ro
ID0gU1ZHTGVuZ3RoVmFsdWUobV9sZW5ndGhNb2RlLCB0byk7CiAgICAgICAgIHJldHVybiBmYWJz
Zih0b0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSAtIGZyb21MZW5ndGgudmFsdWUobGVuZ3Ro
Q29udGV4dCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFkZEZyb21BbmRUb1ZhbHVl
cyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQorICAgIHZvaWQgYWRkRnJvbUFu
ZFRvVmFsdWVzKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCiAgICAgewotICAg
ICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CisgICAg
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCgmdGFyZ2V0RWxlbWVudCk7CiAgICAg
ICAgIG1fdG8uc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgbV90by52YWx1ZShsZW5ndGhDb250ZXh0
KSArIG1fZnJvbS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgfQogCkBAIC0yMTgsNyArMjE4
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVl
RnVuY3Rpb248ZmxvYXQ+OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKLSAgICB2b2lkIHNldEZy
b21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJp
bmcmIHRvKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQm
LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICBtX2Zyb20gPSBTVkdQcm9wZXJ0eVRyYWl0czxmbG9hdD46OmZyb21TdHJpbmcoZnJv
bSk7CiAgICAgICAgIG1fdG8gPSBTVkdQcm9wZXJ0eVRyYWl0czxmbG9hdD46OmZyb21TdHJpbmco
dG8pOwpAQCAtMjI5LDE5ICsyMjksMTkgQEAgcHVibGljOgogICAgICAgICBtX3RvQXRFbmRPZkR1
cmF0aW9uID0gU1ZHUHJvcGVydHlUcmFpdHM8ZmxvYXQ+Ojpmcm9tU3RyaW5nKHRvQXRFbmRPZkR1
cmF0aW9uKTsKICAgICB9CiAKLSAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCosIGZsb2F0IHBy
b2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgZmxvYXQmIGFuaW1hdGVkKQorICAgIHZvaWQg
YW5pbWF0ZShTVkdFbGVtZW50JiwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50
LCBmbG9hdCYgYW5pbWF0ZWQpCiAgICAgewogICAgICAgICBmbG9hdCBmcm9tID0gbV9hbmltYXRp
b25Nb2RlID09IEFuaW1hdGlvbk1vZGU6OlRvID8gYW5pbWF0ZWQgOiBtX2Zyb207CiAgICAgICAg
IGFuaW1hdGVkID0gQmFzZTo6YW5pbWF0ZShwcm9ncmVzcywgcmVwZWF0Q291bnQsIGZyb20sIG1f
dG8sIHRvQXRFbmRPZkR1cmF0aW9uKCksIGFuaW1hdGVkKTsKICAgICB9CiAKLSAgICBzdGQ6Om9w
dGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5n
JiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQorICAgIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gc3RkOjphYnMocGFyc2VOdW1iZXIodG8pLnZhbHVlX29yKDApIC0gcGFyc2VOdW1iZXIoZnJv
bSkudmFsdWVfb3IoMCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGFkZEZyb21BbmRU
b1ZhbHVlcyhTVkdFbGVtZW50Kikgb3ZlcnJpZGUKKyAgICB2b2lkIGFkZEZyb21BbmRUb1ZhbHVl
cyhTVkdFbGVtZW50Jikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fdG8gKz0gbV9mcm9tOwog
ICAgIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFNWR0Fu
aW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbjxTVkdQYXRoQnl0ZVN0cmVhbT47CiAgICAgdXNp
bmcgQmFzZTo6QmFzZTsKIAotICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQq
LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlCisgICAgdm9p
ZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCYsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29u
c3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fZnJvbSA9IFNWR1BhdGhC
eXRlU3RyZWFtKGZyb20pOwogICAgICAgICBtX3RvID0gU1ZHUGF0aEJ5dGVTdHJlYW0odG8pOwpA
QCAtMjYzLDcgKzI2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgbV90b0F0RW5kT2ZEdXJhdGlvbiA9
IFNWR1BhdGhCeXRlU3RyZWFtKHRvQXRFbmRPZkR1cmF0aW9uKTsKICAgICB9CiAKLSAgICB2b2lk
IGFuaW1hdGUoU1ZHRWxlbWVudCosIGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgU1ZHUGF0aEJ5dGVTdHJlYW0mIGFuaW1hdGVkKQorICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVt
ZW50JiwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdQYXRoQnl0ZVN0
cmVhbSYgYW5pbWF0ZWQpCiAgICAgewogICAgICAgICBTVkdQYXRoQnl0ZVN0cmVhbSB1bmRlcmx5
aW5nUGF0aDsKICAgICAgICAgaWYgKG1fYW5pbWF0aW9uTW9kZSA9PSBBbmltYXRpb25Nb2RlOjpU
bykKQEAgLTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZv
aWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqKSBvdmVycmlkZQorICAgIHZvaWQgYWRk
RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQmKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KCFtX2Zyb20uc2l6ZSgpIHx8IG1fZnJvbS5zaXplKCkgIT0gbV90by5zaXplKCkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zMDEsNyArMzAxLDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2Ug
PSBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb248RmxvYXRSZWN0PjsKICAgICB1c2lu
ZyBCYXNlOjpCYXNlOwogCi0gICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCos
IGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB2b2lk
IHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25z
dCBTdHJpbmcmIHRvKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9mcm9tID0gU1ZHUHJvcGVy
dHlUcmFpdHM8RmxvYXRSZWN0Pjo6ZnJvbVN0cmluZyhmcm9tKTsKICAgICAgICAgbV90byA9IFNW
R1Byb3BlcnR5VHJhaXRzPEZsb2F0UmVjdD46OmZyb21TdHJpbmcodG8pOwpAQCAtMzEyLDcgKzMx
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV90b0F0RW5kT2ZEdXJhdGlvbiA9IFNWR1Byb3BlcnR5
VHJhaXRzPEZsb2F0UmVjdD46OmZyb21TdHJpbmcodG9BdEVuZE9mRHVyYXRpb24pOwogICAgIH0K
IAotICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50KiwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVk
IHJlcGVhdENvdW50LCBGbG9hdFJlY3QmIGFuaW1hdGVkKQorICAgIHZvaWQgYW5pbWF0ZShTVkdF
bGVtZW50JiwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBGbG9hdFJlY3Qm
IGFuaW1hdGVkKQogICAgIHsKICAgICAgICAgRmxvYXRSZWN0IGZyb20gPSBtX2FuaW1hdGlvbk1v
ZGUgPT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6IG1fZnJvbTsKICAgICAgICAgCkBA
IC0zMjUsMTAgKzMyNSwxMCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQg
YWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqKSBvdmVycmlkZQorICAgIHZvaWQgYWRkRnJv
bUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQmKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV90byAr
PSBtX2Zyb207CiAgICAgfQogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVG
dW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlz
Y3JldGVGdW5jdGlvbi5oCmluZGV4IDhjZjFiOTg4NGZlZjEzODFhOTJkMWJhZDIyYzJkZTJhYmUw
ZjRmYWIuLjJlOGM5YWNiNGQwZGIwNWU5MGIwNmJiZTVhYjgzNjM4ODRlMjhkODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVu
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25E
aXNjcmV0ZUZ1bmN0aW9uLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RnJvbUFuZEJ5VmFs
dWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZQor
ICAgIHZvaWQgc2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogCi0gICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQqLCBmbG9hdCBwcm9ncmVz
cywgdW5zaWduZWQsIFZhbHVlVHlwZSYgYW5pbWF0ZWQpCisgICAgdm9pZCBhbmltYXRlKFNWR0Vs
ZW1lbnQmLCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQsIFZhbHVlVHlwZSYgYW5pbWF0ZWQpCiAg
ICAgewogICAgICAgICBpZiAoKG1fYW5pbWF0aW9uTW9kZSA9PSBBbmltYXRpb25Nb2RlOjpGcm9t
VG8gJiYgcHJvZ3Jlc3MgPiAwLjUpIHx8IG1fYW5pbWF0aW9uTW9kZSA9PSBBbmltYXRpb25Nb2Rl
OjpUbyB8fCBwcm9ncmVzcyA9PSAxKQogICAgICAgICAgICAgYW5pbWF0ZWQgPSBtX3RvOwpAQCAt
NjAsNCArNjAsNCBAQCBwcm90ZWN0ZWQ6CiAgICAgVmFsdWVUeXBlIG1fdG87CiB9OwogCi19Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaAppbmRl
eCBhYWVjZDE4N2JiYzFlYWM4MGRhM2RkZmQzOGRhOGRkYjg3Y2Q4NWFkLi5iZmI0MmEwMWU3ZjI3
MGI0NThlZGE1MjVhYzdjYTEzMWNhNmVmNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25J
bXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0
aW9uRGlzY3JldGVGdW5jdGlvbjxib29sPjsKICAgICB1c2luZyBCYXNlOjpCYXNlOwogCi0gICAg
dm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwg
Y29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhT
VkdFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgbV9mcm9tID0gU1ZHUHJvcGVydHlUcmFpdHM8Ym9vbD46OmZyb21T
dHJpbmcoZnJvbSk7CiAgICAgICAgIG1fdG8gPSBTVkdQcm9wZXJ0eVRyYWl0czxib29sPjo6ZnJv
bVN0cmluZyh0byk7CkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFNWR0FuaW1hdGlvbkVudW1lcmF0
aW9uRnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbjxFbnVtCiBw
dWJsaWM6CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsKIAotICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFs
dWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92
ZXJyaWRlCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCYsIGNvbnN0IFN0
cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1f
ZnJvbSA9IFNWR1Byb3BlcnR5VHJhaXRzPEVudW1UeXBlPjo6ZnJvbVN0cmluZyhmcm9tKTsKICAg
ICAgICAgbV90byA9IFNWR1Byb3BlcnR5VHJhaXRzPEVudW1UeXBlPjo6ZnJvbVN0cmluZyh0byk7
CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0aW9u
RGlzY3JldGVGdW5jdGlvbjxTVkdNYXJrZXJPcmllbnRUeXBlPjsKICAgICB1c2luZyBCYXNlOjpC
YXNlOwogCi0gICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1
ZXMoU1ZHRWxlbWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICAvLyBWYWx1ZXMgd2lsbCBiZSBzZXQgYnkgU1ZHQW5pbWF0ZWRBbmdsZU9y
aWVudEFuaW1hdG9yLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTc4LDcgKzc4
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0
aW9uPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZT47CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsK
ICAgICAKLSAgICB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RnJvbUFu
ZFRvVmFsdWVzKFNWR0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYg
dG8pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2Zyb20gPSBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvVmFsdWUoZnJvbSk7CiAgICAgICAgIG1fdG8gPSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWUodG8pOwpAQCAtOTAsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gU1ZH
QW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbjxTdHJpbmc+OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7
CiAgICAgCi0gICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0
cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB2b2lkIHNldEZyb21B
bmRUb1ZhbHVlcyhTVkdFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcm
IHRvKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9mcm9tID0gZnJvbTsKICAgICAgICAgbV90
byA9IHRvOwogICAgIH0KIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkZ1bmN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25GdW5jdGlvbi5oCmlu
ZGV4IGUzYzI4MTk5ZmU4NGEyN2JjYzM5MGUyYzczYThkZWMxMDRiMTc0YjIuLjk0NTkxZTRhYmJi
YTIxY2I2ZjBkYjI2NGJkOGY0NzQ2MDAyYjFkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkZ1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRnVuY3Rpb24uaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMjAgKzM3
LDIwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Rpc2NyZXRlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tQW5kQnlWYWx1ZXMoU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tQW5k
QnlWYWx1ZXMoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVl
KGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxmbG9hdD4g
Y2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxmbG9h
dD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogcHJvdGVjdGVkOgogICAgIFNWR0FuaW1hdGlv
bkZ1bmN0aW9uKEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSkKICAgICAgICAgOiBtX2FuaW1h
dGlvbk1vZGUoYW5pbWF0aW9uTW9kZSkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IGFkZEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGFk
ZEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50JikgeyB9CiAKICAgICBBbmltYXRpb25Nb2RlIG1f
YW5pbWF0aW9uTW9kZTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNw
cAppbmRleCBmNTJhMjUwYTYwNDQzODdhNzU2NTRmOTVmNjk5ZmEzNTc5Y2U4YjE2Li42OTg0NDI3
NjA0YTQ2MGVmNGFlMTY5ZTkzZWRiMDM2NmVhYTRiYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Miw5NyArMzIsOTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFNWR0F0dHJpYnV0
ZUFuaW1hdG9yOjppc0FuaW1hdGVkU3R5bGVQcm9wZXJ0eUFuaWFtdG9yKGNvbnN0IFNWR0VsZW1l
bnQqIHRhcmdldEVsZW1lbnQpIGNvbnN0Citib29sIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppc0Fu
aW1hdGVkU3R5bGVQcm9wZXJ0eUFuaWFtdG9yKGNvbnN0IFNWR0VsZW1lbnQmIHRhcmdldEVsZW1l
bnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRhcmdldEVsZW1lbnQtPmlzQW5pbWF0ZWRTdHlsZUF0
dHJpYnV0ZShtX2F0dHJpYnV0ZU5hbWUpOworICAgIHJldHVybiB0YXJnZXRFbGVtZW50LmlzQW5p
bWF0ZWRTdHlsZUF0dHJpYnV0ZShtX2F0dHJpYnV0ZU5hbWUpOwogfQogCi12b2lkIFNWR0F0dHJp
YnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5bGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkK
K3ZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmludmFsaWRhdGVTdHlsZShTVkdFbGVtZW50JiB0
YXJnZXRFbGVtZW50KQogewotICAgIFNWR0VsZW1lbnQ6Okluc3RhbmNlSW52YWxpZGF0aW9uR3Vh
cmQgZ3VhcmQoKnRhcmdldEVsZW1lbnQpOwotICAgIHRhcmdldEVsZW1lbnQtPmludmFsaWRhdGVT
VkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgIFNWR0VsZW1lbnQ6Okluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQgZ3VhcmQodGFyZ2V0RWxlbWVudCk7CisgICAgdGFyZ2V0RWxlbWVudC5p
bnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKIH0KIAotdm9pZCBTVkdBdHRy
aWJ1dGVBbmltYXRvcjo6YXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UoU1ZHRWxlbWVu
dCogZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQg
U1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKFNW
R0VsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotICAgIEFTU0VSVCghZWxlbWVudC0+bV9kZWxldGlv
bkhhc0JlZ3VuKTsKKyAgICBBU1NFUlQoIWVsZW1lbnQubV9kZWxldGlvbkhhc0JlZ3VuKTsKICAg
ICBBU1NFUlQoaWQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKICAgICAKLSAgICBpZiAoIWVsZW1l
bnQtPmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygpLnNldFByb3BlcnR5KGlkLCB2
YWx1ZSwgZmFsc2UpKQorICAgIGlmICghZWxlbWVudC5lbnN1cmVBbmltYXRlZFNNSUxTdHlsZVBy
b3BlcnRpZXMoKS5zZXRQcm9wZXJ0eShpZCwgdmFsdWUsIGZhbHNlKSkKICAgICAgICAgcmV0dXJu
OwotICAgIGVsZW1lbnQtPmludmFsaWRhdGVTdHlsZSgpOworICAgIGVsZW1lbnQuaW52YWxpZGF0
ZVN0eWxlKCk7CiB9CiAKLXZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0ZWRT
dHlsZVByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjphcHBseUFuaW1hdGVkU3R5bGVQ
cm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogewotICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKICAgICBBU1NFUlQobV9hdHRyaWJ1
dGVOYW1lICE9IGFueVFOYW1lKCkpOwogICAgIAogICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkg
bmVlZCB0byBjaGVjayBib3RoIGlzQ29ubmVjdGVkIGFuZCAhcGFyZW50Tm9kZT8KLSAgICBpZiAo
IXRhcmdldEVsZW1lbnQtPmlzQ29ubmVjdGVkKCkgfHwgIXRhcmdldEVsZW1lbnQtPnBhcmVudE5v
ZGUoKSkKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQuaXNDb25uZWN0ZWQoKSB8fCAhdGFyZ2V0RWxl
bWVudC5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBDU1NQcm9wZXJ0
eUlEIGlkID0gY3NzUHJvcGVydHlJRChtX2F0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpOwogICAg
IAotICAgIFNWR0VsZW1lbnQ6Okluc3RhbmNlVXBkYXRlQmxvY2tlciBibG9ja2VyKCp0YXJnZXRF
bGVtZW50KTsKKyAgICBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcih0
YXJnZXRFbGVtZW50KTsKICAgICBhcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZSh0YXJn
ZXRFbGVtZW50LCBpZCwgdmFsdWUpOwogICAgIAogICAgIC8vIElmIHRoZSB0YXJnZXQgZWxlbWVu
dCBoYXMgaW5zdGFuY2VzLCB1cGRhdGUgdGhlbSBhcyB3ZWxsLCB3L28gcmVxdWlyaW5nIHRoZSA8
dXNlPiB0cmVlIHRvIGJlIHJlYnVpbHQuCi0gICAgZm9yIChhdXRvJiBpbnN0YW5jZSA6IGNvcHlU
b1ZlY3Rvck9mPFJlZjxTVkdFbGVtZW50Pj4odGFyZ2V0RWxlbWVudC0+aW5zdGFuY2VzKCkpKQot
ICAgICAgICBhcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZShpbnN0YW5jZS5wdHIoKSwg
aWQsIHZhbHVlKTsKKyAgICBmb3IgKGF1dG8mIGluc3RhbmNlIDogY29weVRvVmVjdG9yT2Y8UmVm
PFNWR0VsZW1lbnQ+Pih0YXJnZXRFbGVtZW50Lmluc3RhbmNlcygpKSkKKyAgICAgICAgYXBwbHlB
bmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UoaW5zdGFuY2UsIGlkLCB2YWx1ZSk7CiB9CiAgICAg
Ci12b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjpyZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHko
U1ZHRWxlbWVudCogZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBpZCkKK3ZvaWQgU1ZHQXR0cmlidXRl
QW5pbWF0b3I6OnJlbW92ZUFuaW1hdGVkU3R5bGVQcm9wZXJ0eShTVkdFbGVtZW50JiBlbGVtZW50
LCBDU1NQcm9wZXJ0eUlEIGlkKQogewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBBU1NFUlQo
IWVsZW1lbnQtPm1fZGVsZXRpb25IYXNCZWd1bik7CisgICAgQVNTRVJUKCFlbGVtZW50Lm1fZGVs
ZXRpb25IYXNCZWd1bik7CiAgICAgQVNTRVJUKGlkICE9IENTU1Byb3BlcnR5SW52YWxpZCk7CiAK
LSAgICBlbGVtZW50LT5lbnN1cmVBbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMoKS5yZW1vdmVQ
cm9wZXJ0eShpZCk7Ci0gICAgZWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlKCk7CisgICAgZWxlbWVu
dC5lbnN1cmVBbmltYXRlZFNNSUxTdHlsZVByb3BlcnRpZXMoKS5yZW1vdmVQcm9wZXJ0eShpZCk7
CisgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGUoKTsKIH0KIAotdm9pZCBTVkdBdHRyaWJ1dGVB
bmltYXRvcjo6cmVtb3ZlQW5pbWF0ZWRTdHlsZVByb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQpCit2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjpyZW1vdmVBbmltYXRlZFN0eWxlUHJv
cGVydHkoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCkKIHsKLSAgICBBU1NFUlQodGFyZ2V0RWxl
bWVudCk7CiAgICAgQVNTRVJUKG1fYXR0cmlidXRlTmFtZSAhPSBhbnlRTmFtZSgpKTsKIAogICAg
IC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBjaGVjayBib3RoIGlzQ29ubmVjdGVkIGFu
ZCAhcGFyZW50Tm9kZT8KLSAgICBpZiAoIXRhcmdldEVsZW1lbnQtPmlzQ29ubmVjdGVkKCkgfHwg
IXRhcmdldEVsZW1lbnQtPnBhcmVudE5vZGUoKSkKKyAgICBpZiAoIXRhcmdldEVsZW1lbnQuaXND
b25uZWN0ZWQoKSB8fCAhdGFyZ2V0RWxlbWVudC5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENTU1Byb3BlcnR5SUQgaWQgPSBjc3NQcm9wZXJ0eUlEKG1fYXR0cmlidXRlTmFt
ZS5sb2NhbE5hbWUoKSk7CiAKLSAgICBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIg
YmxvY2tlcigqdGFyZ2V0RWxlbWVudCk7CisgICAgU1ZHRWxlbWVudDo6SW5zdGFuY2VVcGRhdGVC
bG9ja2VyIGJsb2NrZXIodGFyZ2V0RWxlbWVudCk7CiAgICAgcmVtb3ZlQW5pbWF0ZWRTdHlsZVBy
b3BlcnR5KHRhcmdldEVsZW1lbnQsIGlkKTsKIAogICAgIC8vIElmIHRoZSB0YXJnZXQgZWxlbWVu
dCBoYXMgaW5zdGFuY2VzLCB1cGRhdGUgdGhlbSBhcyB3ZWxsLCB3L28gcmVxdWlyaW5nIHRoZSA8
dXNlPiB0cmVlIHRvIGJlIHJlYnVpbHQuCi0gICAgZm9yIChhdXRvJiBpbnN0YW5jZSA6IGNvcHlU
b1ZlY3Rvck9mPFJlZjxTVkdFbGVtZW50Pj4odGFyZ2V0RWxlbWVudC0+aW5zdGFuY2VzKCkpKQot
ICAgICAgICByZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHkoaW5zdGFuY2UucHRyKCksIGlkKTsK
KyAgICBmb3IgKGF1dG8mIGluc3RhbmNlIDogY29weVRvVmVjdG9yT2Y8UmVmPFNWR0VsZW1lbnQ+
Pih0YXJnZXRFbGVtZW50Lmluc3RhbmNlcygpKSkKKyAgICAgICAgcmVtb3ZlQW5pbWF0ZWRTdHls
ZVByb3BlcnR5KGluc3RhbmNlLCBpZCk7CiB9CiAgICAgCi12b2lkIFNWR0F0dHJpYnV0ZUFuaW1h
dG9yOjphcHBseUFuaW1hdGVkUHJvcGVydHlDaGFuZ2UoU1ZHRWxlbWVudCogZWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKK3ZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0
b3I6OmFwcGx5QW5pbWF0ZWRQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewotICAgIEFTU0VSVCghZWxlbWVudC0+
bV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICBlbGVtZW50LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJpYnV0ZU5hbWUpOworICAgIEFTU0VSVCghZWxlbWVudC5tX2RlbGV0aW9uSGFzQmVndW4pOwor
ICAgIGVsZW1lbnQuc3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVOYW1lKTsKIH0KIAotdm9p
ZCBTVkdBdHRyaWJ1dGVBbmltYXRvcjo6YXBwbHlBbmltYXRlZFByb3BlcnR5Q2hhbmdlKFNWR0Vs
ZW1lbnQqIHRhcmdldEVsZW1lbnQpCit2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjphcHBseUFu
aW1hdGVkUHJvcGVydHlDaGFuZ2UoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCkKIHsKLSAgICBB
U1NFUlQodGFyZ2V0RWxlbWVudCk7CiAgICAgQVNTRVJUKG1fYXR0cmlidXRlTmFtZSAhPSBhbnlR
TmFtZSgpKTsKIAogICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgbmVlZCB0byBjaGVjayBib3Ro
IGlzQ29ubmVjdGVkIGFuZCAhcGFyZW50Tm9kZT8KLSAgICBpZiAoIXRhcmdldEVsZW1lbnQtPmlz
Q29ubmVjdGVkKCkgfHwgIXRhcmdldEVsZW1lbnQtPnBhcmVudE5vZGUoKSkKKyAgICBpZiAoIXRh
cmdldEVsZW1lbnQuaXNDb25uZWN0ZWQoKSB8fCAhdGFyZ2V0RWxlbWVudC5wYXJlbnROb2RlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNWR0VsZW1lbnQ6Okluc3RhbmNlVXBkYXRlQmxvY2tl
ciBibG9ja2VyKCp0YXJnZXRFbGVtZW50KTsKKyAgICBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0
ZUJsb2NrZXIgYmxvY2tlcih0YXJnZXRFbGVtZW50KTsKICAgICBhcHBseUFuaW1hdGVkUHJvcGVy
dHlDaGFuZ2UodGFyZ2V0RWxlbWVudCwgbV9hdHRyaWJ1dGVOYW1lKTsKIAogICAgIC8vIElmIHRo
ZSB0YXJnZXQgZWxlbWVudCBoYXMgaW5zdGFuY2VzLCB1cGRhdGUgdGhlbSBhcyB3ZWxsLCB3L28g
cmVxdWlyaW5nIHRoZSA8dXNlPiB0cmVlIHRvIGJlIHJlYnVpbHQuCi0gICAgZm9yIChhdXRvJiBp
bnN0YW5jZSA6IGNvcHlUb1ZlY3Rvck9mPFJlZjxTVkdFbGVtZW50Pj4odGFyZ2V0RWxlbWVudC0+
aW5zdGFuY2VzKCkpKQotICAgICAgICBhcHBseUFuaW1hdGVkUHJvcGVydHlDaGFuZ2UoaW5zdGFu
Y2UucHRyKCksIG1fYXR0cmlidXRlTmFtZSk7CisgICAgZm9yIChhdXRvJiBpbnN0YW5jZSA6IGNv
cHlUb1ZlY3Rvck9mPFJlZjxTVkdFbGVtZW50Pj4odGFyZ2V0RWxlbWVudC5pbnN0YW5jZXMoKSkp
CisgICAgICAgIGFwcGx5QW5pbWF0ZWRQcm9wZXJ0eUNoYW5nZShpbnN0YW5jZSwgbV9hdHRyaWJ1
dGVOYW1lKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKaW5kZXggZTY5
ZTE4YzEwMDJjMGIwNmM2M2I0NTQ3Y2ZjNGM1ZWY4N2QxNTZlZC4uY2VhM2I2MTRkM2JkMWYyN2Vi
ZDg0YWRlZjkzZDZjYWY2NTVhNDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCwzMCArNjQsMzAgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzRGlzY3JldGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50
KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEZyb21BbmRCeVZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50Jiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZy
b21BbmRCeVZhbHVlcyhTVkdFbGVtZW50JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3Ry
aW5nJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCopID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50KiwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2ln
bmVkIHJlcGVhdENvdW50KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR0VsZW1lbnQq
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChTVkdFbGVtZW50JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQmLCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVw
ZWF0Q291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoU1ZHRWxlbWVudCYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcChTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50KSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0Vs
ZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBjb25zdCB7IHJldHVybiB7IH07
IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNW
R0VsZW1lbnQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBjb25zdCB7IHJldHVybiB7
IH07IH0KIAogcHJvdGVjdGVkOgotICAgIGJvb2wgaXNBbmltYXRlZFN0eWxlUHJvcGVydHlBbmlh
bXRvcihjb25zdCBTVkdFbGVtZW50KikgY29uc3Q7CisgICAgYm9vbCBpc0FuaW1hdGVkU3R5bGVQ
cm9wZXJ0eUFuaWFtdG9yKGNvbnN0IFNWR0VsZW1lbnQmKSBjb25zdDsKIAotICAgIHN0YXRpYyB2
b2lkIGludmFsaWRhdGVTdHlsZShTVkdFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlB
bmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UoU1ZHRWxlbWVudCosIENTU1Byb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHN0YXRpYyB2b2lkIHJlbW92ZUFuaW1hdGVkU3R5bGVQ
cm9wZXJ0eShTVkdFbGVtZW50KiwgQ1NTUHJvcGVydHlJRCk7Ci0gICAgc3RhdGljIHZvaWQgYXBw
bHlBbmltYXRlZFByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZVN0eWxlKFNWR0VsZW1lbnQmKTsKKyAgICBz
dGF0aWMgdm9pZCBhcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50Jiwg
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgc3RhdGljIHZvaWQgcmVt
b3ZlQW5pbWF0ZWRTdHlsZVByb3BlcnR5KFNWR0VsZW1lbnQmLCBDU1NQcm9wZXJ0eUlEKTsKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseUFuaW1hdGVkUHJvcGVydHlDaGFuZ2UoU1ZHRWxlbWVudCYsIGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZvaWQgYXBwbHlBbmltYXRlZFN0eWxlUHJvcGVy
dHlDaGFuZ2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgcmVt
b3ZlQW5pbWF0ZWRTdHlsZVByb3BlcnR5KFNWR0VsZW1lbnQqKTsKLSAgICB2b2lkIGFwcGx5QW5p
bWF0ZWRQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50Kik7CisgICAgdm9pZCBhcHBseUFuaW1hdGVk
U3R5bGVQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50JiwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Cisg
ICAgdm9pZCByZW1vdmVBbmltYXRlZFN0eWxlUHJvcGVydHkoU1ZHRWxlbWVudCYpOworICAgIHZv
aWQgYXBwbHlBbmltYXRlZFByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQmKTsKIAogICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRlTmFtZTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaAppbmRleCAwMzc0NzU5MjgyZmM4ZDBkMGNj
YWVhNTVjOWQzYmYyZWE1ZTBkNzE1Li4zNWU3YmQ2Mzg3YjMxYWU3YzFjNDhjYjcwN2M2ZDA0NmEw
YzVhNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmlt
aXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsMTkgKzU0LDE5IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50KSBvdmVycmlkZQorICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCkg
b3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIFN0cmluZyBiYXNlVmFsdWUgPSBjb21wdXRlQ1NTUHJv
cGVydHlWYWx1ZSgqdGFyZ2V0RWxlbWVudCwgY3NzUHJvcGVydHlJRChtX2F0dHJpYnV0ZU5hbWUu
bG9jYWxOYW1lKCkpKTsKKyAgICAgICAgU3RyaW5nIGJhc2VWYWx1ZSA9IGNvbXB1dGVDU1NQcm9w
ZXJ0eVZhbHVlKHRhcmdldEVsZW1lbnQsIGNzc1Byb3BlcnR5SUQobV9hdHRyaWJ1dGVOYW1lLmxv
Y2FsTmFtZSgpKSk7CiAgICAgICAgIG1fcHJvcGVydHktPnNldFZhbHVlKFNWR1Byb3BlcnR5VHJh
aXRzPFByb3BlcnR5VHlwZT46OmZyb21TdHJpbmcoYmFzZVZhbHVlKSk7CiAgICAgfQogCi0gICAg
dm9pZCBhbmltYXRlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dyZXNzLCB1
bnNpZ25lZCByZXBlYXRDb3VudCkgb3ZlcnJpZGUKKyAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVu
dCYgdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgUHJvcGVydHlUeXBlJiBhbmltYXRlZCA9IG1fcHJvcGVy
dHktPnZhbHVlKCk7CiAgICAgICAgIG1fZnVuY3Rpb24uYW5pbWF0ZSh0YXJnZXRFbGVtZW50LCBw
cm9ncmVzcywgcmVwZWF0Q291bnQsIGFuaW1hdGVkKTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGx5
KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCisgICAgdm9pZCBhcHBseShTVkdF
bGVtZW50JiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXBwbHlBbmlt
YXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UodGFyZ2V0RWxlbWVudCwgU1ZHUHJvcGVydHlUcmFpdHM8
UHJvcGVydHlUeXBlPjo6dG9TdHJpbmcobV9wcm9wZXJ0eS0+dmFsdWUoKSkpOwogICAgIH0KQEAg
LTc1LDQgKzc1LDQgQEAgcHJvdGVjdGVkOgogICAgIFJlZjxWYWx1ZVByb3BlcnR5VHlwZT4gbV9w
cm9wZXJ0eTsKIH07CiAgICAgCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXgg
NjI5YzYzOTc5ZjFjNmYwYzFjZDJjMGY2Y2U0MGE5ZWFkYWQ5NWYzZi4uMTdmN2M1Yjk1ZTE3ZDhi
ZjMyYWI4YTgzMDA2ZDhiZDU2YTYwMmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDEyICszNywxMiBAQCBjbGFz
cyBTVkdQcm9wZXJ0eUFuaW1hdG9yIDogcHVibGljIFNWR0F0dHJpYnV0ZUFuaW1hdG9yIHsKIHB1
YmxpYzoKICAgICBib29sIGlzRGlzY3JldGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Z1
bmN0aW9uLmlzRGlzY3JldGUoKTsgfQogCi0gICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcm
IHRvKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQmIHRh
cmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIG1fZnVuY3Rpb24uc2V0RnJvbUFuZFRvVmFsdWVzKHRhcmdldEVs
ZW1lbnQsIGFkanVzdEZvckluaGVyaXRhbmNlKHRhcmdldEVsZW1lbnQsIGZyb20pLCBhZGp1c3RG
b3JJbmhlcml0YW5jZSh0YXJnZXRFbGVtZW50LCB0bykpOwogICAgIH0KIAotICAgIHZvaWQgc2V0
RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
ZnJvbSwgY29uc3QgU3RyaW5nJiBieSkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldEZyb21BbmRCeVZh
bHVlcyhTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0
IFN0cmluZyYgYnkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2Z1bmN0aW9uLnNldEZyb21B
bmRCeVZhbHVlcyh0YXJnZXRFbGVtZW50LCBmcm9tLCBieSk7CiAgICAgfQpAQCAtNjAsMTcgKzYw
LDE3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzdG9wKFNWR0VsZW1l
bnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCisgICAgdm9pZCBzdG9wKFNWR0VsZW1lbnQmIHRh
cmdldEVsZW1lbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICByZW1vdmVBbmltYXRlZFN0eWxl
UHJvcGVydHkodGFyZ2V0RWxlbWVudCk7CiAgICAgfQogCi0gICAgc3RkOjpvcHRpb25hbDxmbG9h
dD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3Ry
aW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQorICAgIHN0ZDo6b3B0
aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX2Z1bmN0aW9uLmNhbGN1bGF0ZURpc3RhbmNlKHRhcmdldEVs
ZW1lbnQsIGZyb20sIHRvKTsKICAgICB9CiAKLSAgICBTdHJpbmcgYWRqdXN0Rm9ySW5oZXJpdGFu
Y2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QK
KyAgICBTdHJpbmcgYWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVu
dCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHN0YXRpYyBNYWlu
VGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5oZXJpdCgiaW5oZXJpdCIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgcmV0dXJuIHZhbHVl
ID09IGluaGVyaXQgPyBjb21wdXRlSW5oZXJpdGVkQ1NTUHJvcGVydHlWYWx1ZSh0YXJnZXRFbGVt
ZW50KSA6IHZhbHVlOwpAQCAtODcsMTAgKzg3LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1
cm4gdmFsdWUgPyB2YWx1ZS0+Y3NzVGV4dCgpIDogU3RyaW5nKCk7CiAgICAgfQogCi0gICAgU3Ry
aW5nIGNvbXB1dGVJbmhlcml0ZWRDU1NQcm9wZXJ0eVZhbHVlKFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQpIGNvbnN0CisgICAgU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRDU1NQcm9wZXJ0eVZhbHVl
KFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQo
dGFyZ2V0RWxlbWVudCk7Ci0gICAgICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cih0YXJnZXRF
bGVtZW50LT5wYXJlbnRFbGVtZW50KCkpOworICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQ
dHIodGFyZ2V0RWxlbWVudC5wYXJlbnRFbGVtZW50KCkpOwogICAgICAgICBpZiAoIXBhcmVudCB8
fCAhcGFyZW50LT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogICAgICAgICAKQEAgLTEwMSw0ICsxMDAsNCBAQCBwcm90ZWN0ZWQ6CiAgICAgQW5pbWF0
aW9uRnVuY3Rpb24gbV9mdW5jdGlvbjsKIH07CiAgICAgCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eU93bmVyUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeS5oCmluZGV4IDM4OGJmZDBiMGFlNTZjMmEzZjdlM2E5ODFmMWI2MmRh
NzM1Y2M3ZGIuLjEzNjM2NzQ1NDM4M2M2NjViNTk1NWVhNGVlZTVkNjI1NTc2YWE0NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeS5oCkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YXR0cmlidXRlTmFtZTsKICAgICB9CiAKLSAgICB2b2lkIHNldEFuaW1hdGVkUHJvcGVydERpcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkUHJvcGVydHkm
IGFuaW1hdGVkUHJvcGVydHkpIGNvbnN0IG92ZXJyaWRlCisgICAgdm9pZCBzZXRBbmltYXRlZFBy
b3BlcnR5RGlydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIGVudW1lcmF0ZVJlY3Vyc2l2ZWx5KFsmXShjb25zdCBhdXRvJiBlbnRyeSkgLT4gYm9vbCB7
CiAgICAgICAgICAgICBpZiAoIWVudHJ5LmtleS5tYXRjaGVzKGF0dHJpYnV0ZU5hbWUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5o
CmluZGV4IDczZjJlOGFmMjU2MmM3YjgyNzVhOWRmNjlkZGMwZGY0MjkyNzgyNTMuLmQ4ZjllMWRh
NGZkMjFmZTJlMmIzODk1NTJmODg4MzU5YjY4MmViNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5LmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hBbGxQcm9wZXJ0aWVzKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUXVhbGlmaWVkTmFtZSBwcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29u
c3QgU1ZHUHJvcGVydHkmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRdWFsaWZpZWROYW1lIGFu
aW1hdGVkUHJvcGVydHlBdHRyaWJ1dGVOYW1lKGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHkmKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGVkUHJvcGVydERpcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBTVkdBbmltYXRlZFByb3BlcnR5JikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRBbmltYXRlZFByb3BlcnR5RGlydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IFNWR0FuaW1hdGVkUHJvcGVydHkmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgU3RyaW5nPiBzeW5jaHJvbml6ZUFs
bEF0dHJpYnV0ZXMoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXggZTE2Yzg5MDQ1
MTQyYzE2YmIxMDVkN2ViMzg0YjU0OTEwMTc2MjY2My4uNzBhMDg4NDkzZTgxZmRlY2RlZTZmM2Mz
MzEzNGQ4YmRmNWQ0NDZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxMiBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIG92ZXJy
aWRlCisgICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIGZsb2F0IHBy
b2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1f
ZnVuY3Rpb24uYW5pbWF0ZSh0YXJnZXRFbGVtZW50LCBwcm9ncmVzcywgcmVwZWF0Q291bnQsIG1f
cHJvcGVydHktPnZhbHVlKCkpOwogICAgIH0KIAotICAgIHZvaWQgYXBwbHkoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKKyAgICB2b2lkIGFwcGx5KFNWR0VsZW1lbnQmIHRhcmdl
dEVsZW1lbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBhcHBseUFuaW1hdGVkU3R5bGVQcm9w
ZXJ0eUNoYW5nZSh0YXJnZXRFbGVtZW50LCBtX3Byb3BlcnR5LT52YWx1ZUFzU3RyaW5nKCkpOwog
ICAgIH0KQEAgLTYxLDQgKzYxLDQgQEAgcHJvdGVjdGVkOgogICAgIFJlZjxQcm9wZXJ0eVR5cGU+
IG1fcHJvcGVydHk7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5p
bWF0b3JJbXBsLmgKaW5kZXggNzFiOTkxN2U1ZDQ3YTYyNmUyZWRmMmNjYjVkMWVhNDY3ODAyYmEz
NC4uZDQzZDE3MzRlY2FkZjIyM2ZiZWE5NDJiOTVkNjJiYWViZTY5OTc2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlB
bmltYXRvckltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE4LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsMTQgKzQyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVuZ3RoQW5pbWF0b3IoYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlLCBTVkdMZW5ndGhNb2RlOjpPdGhlcikpOwogICAgIH0KIAotICAgIHZvaWQgc3RhcnQo
U1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKKyAgICB2b2lkIHN0YXJ0KFNWR0Vs
ZW1lbnQmIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBTdHJpbmcgYmFz
ZVZhbHVlID0gY29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUoKnRhcmdldEVsZW1lbnQsIGNzc1Byb3Bl
cnR5SUQobV9hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7CisgICAgICAgIFN0cmluZyBiYXNl
VmFsdWUgPSBjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSh0YXJnZXRFbGVtZW50LCBjc3NQcm9wZXJ0
eUlEKG1fYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkpOwogICAgICAgICBTVkdMZW5ndGhWYWx1
ZSB2YWx1ZShTVkdMZW5ndGhNb2RlOjpPdGhlcik7CiAgICAgICAgIGlmICghdmFsdWUuc2V0VmFs
dWVBc1N0cmluZyhiYXNlVmFsdWUpLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgbV9wcm9w
ZXJ0eS0+c2V0VmFsdWUodmFsdWUpOwogICAgIH0KIH07CiAKLX0KLQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFs
dWVQcm9wZXJ0eUxpc3RBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvci5oCmluZGV4IGFiYWZjNTFmOWY5M2U5ZDg4MWRm
M2QwMWVhYjU1Y2NlZTJmZDk5NTQuLjViZjAwYzc2MzQ5MDQ2ZWE5N2U1MDBjNWM5Yjg1OTI3NDFi
MmJlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVl
UHJvcGVydHlMaXN0QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDEyICs0NCwxMiBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50KiB0YXJn
ZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIG92ZXJyaWRl
CisgICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dy
ZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fZnVu
Y3Rpb24uYW5pbWF0ZSh0YXJnZXRFbGVtZW50LCBwcm9ncmVzcywgcmVwZWF0Q291bnQsIG1fbGlz
dCk7CiAgICAgfQogCi0gICAgdm9pZCBhcHBseShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBv
dmVycmlkZQorICAgIHZvaWQgYXBwbHkoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCkgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIGFwcGx5QW5pbWF0ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKHRhcmdl
dEVsZW1lbnQsIG1fbGlzdC0+dmFsdWVBc1N0cmluZygpKTsKICAgICB9CkBAIC02MSw0ICs2MSw0
IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8TGlzdFR5cGU+IG1fbGlzdDsKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCmluZGV4
IDcxYjI1MWRlNDYzNTljMTY5MzQ5N2YyYmEwNjgxYjc1MTM4ZjEzOTUuLjE3YjZlZjMxNzUxNDE3
YTJjZDk1YzZkY2RhMjEyMjIyNmZhY2RlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcklt
cGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDIsMTIgKzQyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU1ZHTGVuZ3RoTGlzdEFuaW1hdG9yKGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJv
cGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSwgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpKTsKICAgICB9CiAKLSAgICB2b2lkIHN0YXJ0KFNWR0Vs
ZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCisgICAgdm9pZCBzdGFydChTVkdFbGVtZW50
JiB0YXJnZXRFbGVtZW50KSBmaW5hbAogICAgIHsKLSAgICAgICAgU3RyaW5nIGJhc2VWYWx1ZSA9
IGNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlKCp0YXJnZXRFbGVtZW50LCBjc3NQcm9wZXJ0eUlEKG1f
YXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkpOworICAgICAgICBTdHJpbmcgYmFzZVZhbHVlID0g
Y29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUodGFyZ2V0RWxlbWVudCwgY3NzUHJvcGVydHlJRChtX2F0
dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKICAgICAgICAgaWYgKCFtX2xpc3QtPnBhcnNlKGJh
c2VWYWx1ZSkpCiAgICAgICAgICAgICBtX2xpc3QtPmNsZWFySXRlbXMoKTsKICAgICB9CiB9Owog
Ci19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>