<?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>230450</bug_id>
          
          <creation_ts>2021-09-18 16:16:39 -0700</creation_ts>
          <short_desc>Have ScrollAnimation work in terms of offsets, not positions</short_desc>
          <delta_ts>2021-09-19 18:17:15 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>230465</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794818</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-18 16:16:39 -0700</bug_when>
    <thetext>Have ScrollAnimation work in terms of offsets, not positions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794819</commentid>
    <comment_count>1</comment_count>
      <attachid>438569</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-18 16:19:59 -0700</bug_when>
    <thetext>Created attachment 438569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794844</commentid>
    <comment_count>2</comment_count>
      <attachid>438577</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-18 21:57:36 -0700</bug_when>
    <thetext>Created attachment 438577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794892</commentid>
    <comment_count>3</comment_count>
      <attachid>438598</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-19 10:10:43 -0700</bug_when>
    <thetext>Created attachment 438598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794906</commentid>
    <comment_count>4</comment_count>
      <attachid>438598</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-19 11:52:18 -0700</bug_when>
    <thetext>Comment on attachment 438598
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Scroll positions can have negagive values in RTL content. It&apos;s simpler for ScrollAnimation

negagive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794907</commentid>
    <comment_count>5</comment_count>
      <attachid>438598</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-09-19 12:19:42 -0700</bug_when>
    <thetext>Comment on attachment 438598
Patch

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

&gt; Source/WebCore/platform/ScrollAnimationSmooth.cpp:76
&gt; -bool ScrollAnimationSmooth::startAnimatedScrollToDestination(const FloatPoint&amp; fromPosition, const FloatPoint&amp; destinationPosition)
&gt; +bool ScrollAnimationSmooth::startAnimatedScrollToDestination(const FloatPoint&amp; fromOffset, const FloatPoint&amp; destinationOffset)

I think the difference between &quot;position&quot; and &quot;offset&quot; here is too subtle and just changing names doesn&apos;t really make things clear. It would be nice to capture it to a type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794954</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-19 18:16:06 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/282741/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794955</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-19 18:17:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/83289902&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438569</attachid>
            <date>2021-09-18 16:19:59 -0700</date>
            <delta_ts>2021-09-18 21:57:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230450-20210918161958.patch</filename>
            <type>text/plain</type>
            <size>32331</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM2YWViOGNlZjgzMjIz
ZmViZTg0M2E3OWIwMjczMjE3ZWM4NzQ5OC4uOGE5ZTM1YTYzY2E3NjlhZTQwY2RjOTA3OTBiZGQ3
NjY4YWQxOWMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA5LTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0aW9uIHdvcmsgaW4gdGVybXMgb2Ygb2Zmc2V0cywgbm90IHBvc2l0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBTY3JvbGwg
cG9zaXRpb25zIGNhbiBoYXZlIG5lZ2FnaXZlIHZhbHVlcyBpbiBSVEwgY29udGVudC4gSXQncyBz
aW1wbGVyIGZvciBTY3JvbGxBbmltYXRpb24KKyAgICAgICAgdG8gd29yayBvbiB6ZXJvLWJhc2Vk
IHNjcm9sbCBvZmZzZXRzLiBTY3JvbGxBbmltYXRvciBoYW5kbGVzIHRoZSBtYXBwaW5nIGZyb20g
dGhlc2UgdG8KKyAgICAgICAgU2Nyb2xsUG9zaXRpb25zLgorCisgICAgICAgIEFsc28gc2hhcmUg
YSBiaXQgb2Ygc2V0Q3VycmVudFBvc2l0aW9uKCkgY29kZS4gVGhpcyByZXF1aXJlZCBhZGRpbmcg
YW4gZWFybHkgcmV0dXJuIGluCisgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3Np
dGlvbkZyb21BbmltYXRpb24oKSB0byBhdm9pZCByZS1lbnRyYW50IGNhbGxzIGR1cmluZyBzY3Jv
bGxpbmcKKyAgICAgICAgdHJlZSBjb21taXQsIHdoaWNoIHdvdWxkIGNhdXNlIGRlYWRsb2NrcyBv
biB0aGUgc2Nyb2xsaW5nIHRyZWUgbG9jaywgd2hpY2ggaGFwcGVuZWQgd2hlbiBhCisgICAgICAg
IFNjcm9sbEFuaW1hdGlvbiBzZXQgYSBmcmFjdGlvbmFsIG9mZnNldC4KKworICAgICAgICAqIHBs
YXRmb3JtL0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjo6c2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9tUG9zaXRp
b24gY29uc3QpOiBDbGFyaWZ5IG9mZnNldCB2cy4gcG9zaXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOjp1cGRhdGVLZXlib2FyZFNjcm9sbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I6OnNjcm9sbGFi
bGVEaXJlY3Rpb25zRnJvbU9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0Rh
dGE6OlBlckF4aXNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0
aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlvblRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydEFuaW1hdGVkU2Nyb2xsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNjcm9s
bFRvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3Ro
OjpyZXRhcmdldEFjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRpb25TbW9vdGg6OnN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVNjcm9sbEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRlU2Nyb2xsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Q
b3NpdGlvbldpdGhvdXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yOjpvZmZzZXRGcm9tUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnBvc2l0aW9uRnJvbU9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6b2Zmc2V0RnJvbVBvc2l0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpwb3NpdGlvbkZyb21P
ZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzZXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3Np
dGlvbkZyb21BbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6bWluaW11bVNjcm9sbE9mZnNldCBj
b25zdCk6IG1pbmltdW1TY3JvbGxPZmZzZXQgaXMgYWx3YXlzIDAsMCBidXQgYWRkIHRoaXMgZnVu
Y3Rpb24gZm9yIHN5bW1ldHJ5LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppbW1lZGlhdGVT
Y3JvbGxCeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6Y2xhbXBT
Y3JvbGxPZmZzZXQgY29uc3QpOgorCiAyMDIxLTA5LTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIGxvZ2dpbmcgbGVmdCBpbiBi
eSBtaXN0YWtlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmNwcAppbmRleCBkNjA3NzgxZTc5NTk1MDdhNWI4MTgzNzhhZWI3NGI3
ZDdlMmQ1YzBhLi5mZDhmMGZjOTNmN2IwYjAzN2ZmNzUwZjcxMzBmNDQyNWMxMWJkZjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLmNwcApAQCAtMzksMTcgKzM5LDE3IEBAIEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I6Oktl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoU2Nyb2xsQW5pbWF0b3ImIHNjcm9sbEFuaW1hCiB7CiB9
CiAKLVJlY3RFZGdlczxib29sPiBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOjpzY3JvbGxhYmxl
RGlyZWN0aW9uc0Zyb21PZmZzZXQoRmxvYXRQb2ludCBvZmZzZXQpIGNvbnN0CitSZWN0RWRnZXM8
Ym9vbD4gS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjo6c2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9t
UG9zaXRpb24oRmxvYXRQb2ludCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBhdXRvIG1pbmltdW1T
Y3JvbGxQb3NpdGlvbiA9IG1fc2Nyb2xsQW5pbWF0b3Iuc2Nyb2xsYWJsZUFyZWEoKS5taW5pbXVt
U2Nyb2xsUG9zaXRpb24oKTsKICAgICBhdXRvIG1heGltdW1TY3JvbGxQb3NpdGlvbiA9IG1fc2Ny
b2xsQW5pbWF0b3Iuc2Nyb2xsYWJsZUFyZWEoKS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKTsKIAog
ICAgIFJlY3RFZGdlczxib29sPiBlZGdlczsKIAotICAgIGVkZ2VzLnNldFRvcChvZmZzZXQueSgp
ID4gbWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKSk7Ci0gICAgZWRnZXMuc2V0Qm90dG9tKG9mZnNl
dC55KCkgPCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpKTsKLSAgICBlZGdlcy5zZXRMZWZ0KG9m
ZnNldC54KCkgPiBtaW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgpKTsKLSAgICBlZGdlcy5zZXRSaWdo
dChvZmZzZXQueCgpIDwgbWF4aW11bVNjcm9sbFBvc2l0aW9uLngoKSk7CisgICAgZWRnZXMuc2V0
VG9wKHBvc2l0aW9uLnkoKSA+IG1pbmltdW1TY3JvbGxQb3NpdGlvbi55KCkpOworICAgIGVkZ2Vz
LnNldEJvdHRvbShwb3NpdGlvbi55KCkgPCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpKTsKKyAg
ICBlZGdlcy5zZXRMZWZ0KHBvc2l0aW9uLngoKSA+IG1pbmltdW1TY3JvbGxQb3NpdGlvbi54KCkp
OworICAgIGVkZ2VzLnNldFJpZ2h0KHBvc2l0aW9uLngoKSA8IG1heGltdW1TY3JvbGxQb3NpdGlv
bi54KCkpOwogCiAgICAgcmV0dXJuIGVkZ2VzOwogfQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEtl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I6OnVwZGF0ZUtleWJvYXJkU2Nyb2xsUG9zaXRpb24oTW9u
b3RvbmljVGltZSBjdXJyZQogICAgIEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyBwYXJhbXMgPSBL
ZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKTsKIAogICAgIGlmIChtX2N1cnJl
bnRLZXlib2FyZFNjcm9sbCkgewotICAgICAgICBhdXRvIHNjcm9sbGFibGVEaXJlY3Rpb25zID0g
c2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9tT2Zmc2V0KG1fc2Nyb2xsQW5pbWF0b3IuY3VycmVudFBv
c2l0aW9uKCkpOworICAgICAgICBhdXRvIHNjcm9sbGFibGVEaXJlY3Rpb25zID0gc2Nyb2xsYWJs
ZURpcmVjdGlvbnNGcm9tUG9zaXRpb24obV9zY3JvbGxBbmltYXRvci5jdXJyZW50UG9zaXRpb24o
KSk7CiAgICAgICAgIGF1dG8gZGlyZWN0aW9uID0gbV9jdXJyZW50S2V5Ym9hcmRTY3JvbGwtPmRp
cmVjdGlvbjsKIAogICAgICAgICBpZiAoc2Nyb2xsYWJsZURpcmVjdGlvbnMuYXQoYm94U2lkZUZv
ckRpcmVjdGlvbihkaXJlY3Rpb24pKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCmluZGV4IGQzZTZkNGQ4Yjk4MjgyODdhZGNj
MGYxNDY5Yzg0NzFiOTNhMmU4ZTkuLjNjOTgxNGZmODk4YThkNWI1NmJmYTY4OTI1ODk3ODc0N2Ji
ODExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKKyNpbmNs
dWRlICJLZXlib2FyZEV2ZW50LmgiIC8vIEZJWE1FOiBUaGlzIGlzIGEgbGF5ZXJpbmcgdmlvbGF0
aW9uLgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiIC8vIEZJWE1FOiBUaGlzIGlzIGEgbGF5
ZXJpbmcgdmlvbGF0aW9uLgogI2luY2x1ZGUgIlJlY3RFZGdlcy5oIgogI2luY2x1ZGUgIlNjcm9s
bEFuaW1hdG9yLmgiCiAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCk7Ci0gICAgUmVjdEVkZ2VzPGJvb2w+
IHNjcm9sbGFibGVEaXJlY3Rpb25zRnJvbU9mZnNldChGbG9hdFBvaW50KSBjb25zdDsKKyAgICBS
ZWN0RWRnZXM8Ym9vbD4gc2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9tUG9zaXRpb24oRmxvYXRQb2lu
dCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDxLZXlib2FyZFNjcm9sbD4ga2V5Ym9hcmRTY3Jv
bGxGb3JLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmKSBjb25zdDsKICAgICBmbG9hdCBzY3Jv
bGxEaXN0YW5jZShTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAppbmRleCAyMTZlM2IwOTNm
MzNhMzFjOGE5NTQ0Y2M3ZWY2M2IzZjg3YzBkZTlmLi5jODZjZjdmZmUxODRhNGUxYTFhZDMwM2Y3
YTc0ZmJiMGE5ZjUxOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b24uaApAQCAtMzUsOCArMzUsOCBAQCBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgU2Nyb2xsQW5p
bWF0aW9uOwogCiBzdHJ1Y3QgU2Nyb2xsRXh0ZW50cyB7Ci0gICAgU2Nyb2xsUG9zaXRpb24gbWlu
aW11bVNjcm9sbFBvc2l0aW9uOwotICAgIFNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3Np
dGlvbjsKKyAgICBTY3JvbGxPZmZzZXQgbWluaW11bVNjcm9sbE9mZnNldDsKKyAgICBTY3JvbGxP
ZmZzZXQgbWF4aW11bVNjcm9sbE9mZnNldDsKICAgICBJbnRTaXplIHZpc2libGVTaXplOwogfTsK
IApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTY3JvbGxBbmltYXRpb25DbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwg
Y29uc3QgRmxvYXRQb2ludCYgY3VycmVudFBvc2l0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBv
aW50JiBjdXJyZW50T2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEFuaW1hdGlv
bkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCBTY3JvbGxFeHRlbnRz
IHNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgPSAwOwogfTsKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHsgfQogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1h
dGlvbigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgYm9vbCByZXRhcmdldEFjdGl2ZUFuaW1h
dGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5h
dGlvbk9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Ny
b2xsRXh0ZW50cygpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uS2luZXRpYy5jcHAKaW5kZXggMGM1Mjk3NDQ1ZmRlODg0MDM2ZjU0N2ExZmNmNGYw
MWM3MmRkMGE5Ni4uODdmYmE5MmU2ZGUyYWFlMDJjM2U3YjljYWI2MjBjMGRiNTk5NGMxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5j
cHAKQEAgLTc3LDM2ICs3NywzNiBAQCBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc2Nyb2xsQ2Fw
dHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcm9s
bEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNEYXRhOjpQZXJBeGlzRGF0YShkb3VibGUgbG93ZXIs
IGRvdWJsZSB1cHBlciwgZG91YmxlIGluaXRpYWxQb3NpdGlvbiwgZG91YmxlIGluaXRpYWxWZWxv
Y2l0eSkKK1Njcm9sbEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNEYXRhOjpQZXJBeGlzRGF0YShk
b3VibGUgbG93ZXIsIGRvdWJsZSB1cHBlciwgZG91YmxlIGluaXRpYWxPZmZzZXQsIGRvdWJsZSBp
bml0aWFsVmVsb2NpdHkpCiAgICAgOiBtX2xvd2VyKGxvd2VyKQogICAgICwgbV91cHBlcih1cHBl
cikKLSAgICAsIG1fY29lZjEoaW5pdGlhbFZlbG9jaXR5IC8gZGVjZWxGcmljdGlvbiArIGluaXRp
YWxQb3NpdGlvbikKKyAgICAsIG1fY29lZjEoaW5pdGlhbFZlbG9jaXR5IC8gZGVjZWxGcmljdGlv
biArIGluaXRpYWxPZmZzZXQpCiAgICAgLCBtX2NvZWYyKC1pbml0aWFsVmVsb2NpdHkgLyBkZWNl
bEZyaWN0aW9uKQotICAgICwgbV9wb3NpdGlvbihjbGFtcFRvKGluaXRpYWxQb3NpdGlvbiwgbG93
ZXIsIHVwcGVyKSkKLSAgICAsIG1fdmVsb2NpdHkoaW5pdGlhbFBvc2l0aW9uIDwgbG93ZXIgfHwg
aW5pdGlhbFBvc2l0aW9uID4gdXBwZXIgPyAwIDogaW5pdGlhbFZlbG9jaXR5KQorICAgICwgbV9v
ZmZzZXQoY2xhbXBUbyhpbml0aWFsT2Zmc2V0LCBsb3dlciwgdXBwZXIpKQorICAgICwgbV92ZWxv
Y2l0eShpbml0aWFsT2Zmc2V0IDwgbG93ZXIgfHwgaW5pdGlhbE9mZnNldCA+IHVwcGVyID8gMCA6
IGluaXRpYWxWZWxvY2l0eSkKIHsKIH0KIAogYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQ
ZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNvbmRzIHRpbWVEZWx0YSkKIHsKLSAgICBhdXRv
IGxhc3RQb3NpdGlvbiA9IG1fcG9zaXRpb247CisgICAgYXV0byBsYXN0T2Zmc2V0ID0gbV9vZmZz
ZXQ7CiAgICAgYXV0byBsYXN0VGltZSA9IG1fZWxhcHNlZFRpbWU7CiAgICAgbV9lbGFwc2VkVGlt
ZSArPSB0aW1lRGVsdGE7CiAKICAgICBkb3VibGUgZXhwb25lbnRpYWxQYXJ0ID0gZXhwKC1kZWNl
bEZyaWN0aW9uICogbV9lbGFwc2VkVGltZS52YWx1ZSgpKTsKLSAgICBtX3Bvc2l0aW9uID0gbV9j
b2VmMSArIG1fY29lZjIgKiBleHBvbmVudGlhbFBhcnQ7CisgICAgbV9vZmZzZXQgPSBtX2NvZWYx
ICsgbV9jb2VmMiAqIGV4cG9uZW50aWFsUGFydDsKICAgICBtX3ZlbG9jaXR5ID0gLWRlY2VsRnJp
Y3Rpb24gKiBtX2NvZWYyICogZXhwb25lbnRpYWxQYXJ0OwogCi0gICAgaWYgKG1fcG9zaXRpb24g
PCBtX2xvd2VyKSB7Ci0gICAgICAgIG1fdmVsb2NpdHkgPSBtX2xvd2VyIC0gbV9wb3NpdGlvbjsK
LSAgICAgICAgbV9wb3NpdGlvbiA9IG1fbG93ZXI7Ci0gICAgfSBlbHNlIGlmIChtX3Bvc2l0aW9u
ID4gbV91cHBlcikgewotICAgICAgICBtX3ZlbG9jaXR5ID0gbV91cHBlciAtIG1fcG9zaXRpb247
Ci0gICAgICAgIG1fcG9zaXRpb24gPSBtX3VwcGVyOworICAgIGlmIChtX29mZnNldCA8IG1fbG93
ZXIpIHsKKyAgICAgICAgbV92ZWxvY2l0eSA9IG1fbG93ZXIgLSBtX29mZnNldDsKKyAgICAgICAg
bV9vZmZzZXQgPSBtX2xvd2VyOworICAgIH0gZWxzZSBpZiAobV9vZmZzZXQgPiBtX3VwcGVyKSB7
CisgICAgICAgIG1fdmVsb2NpdHkgPSBtX3VwcGVyIC0gbV9vZmZzZXQ7CisgICAgICAgIG1fb2Zm
c2V0ID0gbV91cHBlcjsKICAgICB9CiAKLSAgICBpZiAoZmFicyhtX3ZlbG9jaXR5KSA8IDEgfHwg
KGxhc3RUaW1lICYmIGZhYnMobV9wb3NpdGlvbiAtIGxhc3RQb3NpdGlvbikgPCAxKSkgewotICAg
ICAgICBtX3Bvc2l0aW9uID0gcm91bmQobV9wb3NpdGlvbik7CisgICAgaWYgKGZhYnMobV92ZWxv
Y2l0eSkgPCAxIHx8IChsYXN0VGltZSAmJiBmYWJzKG1fb2Zmc2V0IC0gbGFzdE9mZnNldCkgPCAx
KSkgeworICAgICAgICBtX29mZnNldCA9IHJvdW5kKG1fb2Zmc2V0KTsKICAgICAgICAgbV92ZWxv
Y2l0eSA9IDA7CiAgICAgfQogCkBAIC0xNjksMTIgKzE2OSwxMiBAQCBGbG9hdFBvaW50IFNjcm9s
bEFuaW1hdGlvbktpbmV0aWM6OmNvbXB1dGVWZWxvY2l0eSgpCiAgICAgcmV0dXJuIEZsb2F0UG9p
bnQoYWNjdW1EZWx0YS54KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCksIGFjY3VtRGVs
dGEueSgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52YWx1ZSgpKTsKIH0KIAotYm9vbCBTY3JvbGxB
bmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9j
aXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKK2Jvb2wgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJv
b2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKQogewogICAgIHN0b3AoKTsKIAogICAgIGlm
ICghdmVsb2NpdHkueCgpICYmICF2ZWxvY2l0eS55KCkpIHsKLSAgICAgICAgbV9wb3NpdGlvbiA9
IGluaXRpYWxQb3NpdGlvbjsKKyAgICAgICAgbV9vZmZzZXQgPSBpbml0aWFsT2Zmc2V0OwogICAg
ICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3ZlcnRpY2Fs
RGF0YSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk5LDIwICsx
OTksMjAgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xs
V2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFAKICAgICB9OwogCiAgICAgaWYgKG1heUhT
Y3JvbGwpIHsKLSAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMu
bWluaW11bVNjcm9sbFBvc2l0aW9uLngoKSwKLSAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNj
cm9sbFBvc2l0aW9uLngoKSwKLSAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi54KCksIGFjY3Vt
dWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS54KCksIG1faG9yaXpvbnRhbERhdGEpKTsKKyAgICAgICAg
bV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNl
dC54KCksCisgICAgICAgICAgICBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQueCgpLAorICAg
ICAgICAgICAgaW5pdGlhbE9mZnNldC54KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS54
KCksIG1faG9yaXpvbnRhbERhdGEpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9ob3Jpem9udGFs
RGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtYXlWU2Nyb2xsKSB7Ci0gICAgICAgIG1f
dmVydGljYWxEYXRhID0gUGVyQXhpc0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24u
eSgpLAotICAgICAgICAgICAgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpLAotICAg
ICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnkoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5
LnkoKSwgbV92ZXJ0aWNhbERhdGEpKTsKKyAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlz
RGF0YShleHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQueSgpLAorICAgICAgICAgICAgZXh0ZW50
cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0LnkoKSwKKyAgICAgICAgICAgIGluaXRpYWxPZmZzZXQueSgp
LCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueSgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAg
IH0gZWxzZQogICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIG1f
cG9zaXRpb24gPSBpbml0aWFsUG9zaXRpb247CisgICAgbV9vZmZzZXQgPSBpbml0aWFsT2Zmc2V0
OwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSB0aWNrVGltZSAvIDIu
OwogICAgIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI0MSwx
MCArMjQxLDEwIEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9uVGltZXJG
aXJlZCgpCiAgICAgaWYgKG1faG9yaXpvbnRhbERhdGEgfHwgbV92ZXJ0aWNhbERhdGEpCiAgICAg
ICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6bWF4KG1pbmltdW1UaW1lcklu
dGVydmFsLCBkZWx0YSkpOwogCi0gICAgZG91YmxlIHggPSBtX2hvcml6b250YWxEYXRhID8gbV9o
b3Jpem9udGFsRGF0YS52YWx1ZSgpLnBvc2l0aW9uKCkgOiBtX3Bvc2l0aW9uLngoKTsKLSAgICBk
b3VibGUgeSA9IG1fdmVydGljYWxEYXRhID8gbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5wb3NpdGlv
bigpIDogbV9wb3NpdGlvbi55KCk7Ci0gICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQoeCwgeSk7
Ci0gICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBGbG9hdFBvaW50
KG1fcG9zaXRpb24pKTsKKyAgICBkb3VibGUgeCA9IG1faG9yaXpvbnRhbERhdGEgPyBtX2hvcml6
b250YWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX29mZnNldC54KCk7CisgICAgZG91YmxlIHkg
PSBtX3ZlcnRpY2FsRGF0YSA/IG1fdmVydGljYWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX29m
ZnNldC55KCk7CisgICAgbV9vZmZzZXQgPSBGbG9hdFBvaW50KHgsIHkpOworICAgIG1fY2xpZW50
LnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9vZmZzZXQpOwogfQogCiBTZWNvbmRz
IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmRlbHRhVG9OZXh0RnJhbWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCmluZGV4IDYwNTMzZTM5
NjIyMmI2Y2IxOWZlMGE0ZjVmMTBkOGYwN2U1ZmIxMTUuLjYyYTc0NjFhZWE1YjA0NmUwZjYxYjg0
MGRiMTMyMzMzYTZjNTI2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25LaW5ldGljLmgKQEAgLTM4LDkgKzM4LDkgQEAgY2xhc3MgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHJpdmF0ZToKICAg
ICBjbGFzcyBQZXJBeGlzRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQZXJBeGlzRGF0YShk
b3VibGUgbG93ZXIsIGRvdWJsZSB1cHBlciwgZG91YmxlIGluaXRpYWxQb3NpdGlvbiwgZG91Ymxl
IGluaXRpYWxWZWxvY2l0eSk7CisgICAgICAgIFBlckF4aXNEYXRhKGRvdWJsZSBsb3dlciwgZG91
YmxlIHVwcGVyLCBkb3VibGUgaW5pdGlhbE9mZnNldCwgZG91YmxlIGluaXRpYWxWZWxvY2l0eSk7
CiAKLSAgICAgICAgZG91YmxlIHBvc2l0aW9uKCkgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAg
ICAgICBkb3VibGUgb2Zmc2V0KCkgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAgICAgZG91Ymxl
IHZlbG9jaXR5KCkgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQogCiAgICAgICAgIGJvb2wgYW5pbWF0
ZVNjcm9sbChTZWNvbmRzIHRpbWVEZWx0YSk7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGRvdWJsZSBtX2NvZWYyIHsgMCB9OwogCiAgICAgICAgIFNlY29uZHMgbV9lbGFwc2Vk
VGltZTsKLSAgICAgICAgZG91YmxlIG1fcG9zaXRpb24geyAwIH07CisgICAgICAgIGRvdWJsZSBt
X29mZnNldCB7IDAgfTsKICAgICAgICAgZG91YmxlIG1fdmVsb2NpdHkgeyAwIH07CiAgICAgfTsK
IApAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhT
Y3JvbGxBbmltYXRpb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25LaW5l
dGljKCk7CiAKLSAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5
KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgdmVs
b2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKTsKKyAgICBib29sIHN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJv
b2wgbWF5VlNjcm9sbCk7CiAKLSAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSBmaW5hbDsKKyAgICBib29sIHJldGFyZ2V0QWN0
aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7CiAgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFsOwogCkBAIC04
MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwog
ICAgIFJ1bkxvb3A6OlRpbWVyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fYW5pbWF0aW9uVGlt
ZXI7Ci0gICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQgbV9vZmZzZXQ7
CiAgICAgVmVjdG9yPFBsYXRmb3JtV2hlZWxFdmVudD4gbV9zY3JvbGxIaXN0b3J5OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAK
aW5kZXggODQ5OTIyMjM2ZTJjODRkYTQ1ZTlmYTcyNDljOGYwNWNkMmZiOTE3Ni4uNmUyOTc1MTlk
ODRkZDU0ZWJlYjUzNTIzNTNiMDNjNmQyNGU1MGI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC01NCw0NyArNTQsNDcgQEAg
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsQW5pbWF0
aW9uQ2xpZW50JiBjbGllbnQpCiAKIFNjcm9sbEFuaW1hdGlvblNtb290aDo6flNjcm9sbEFuaW1h
dGlvblNtb290aCgpID0gZGVmYXVsdDsKIAotYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0
YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAs
IGZsb2F0IG11bHRpcGxpZXIpCitib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmlt
YXRlZFNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHksIGNvbnN0IEZsb2F0UG9pbnQmIGZyb21PZmZzZXQsIGZsb2F0IHN0ZXAsIGZsb2F0IG11
bHRpcGxpZXIpCiB7Ci0gICAgbV9zdGFydFBvc2l0aW9uID0gZnJvbVBvc2l0aW9uOwotICAgIGF1
dG8gZGVzdGluYXRpb25Qb3NpdGlvbiA9IGZyb21Qb3NpdGlvbjsKKyAgICBtX3N0YXJ0T2Zmc2V0
ID0gZnJvbU9mZnNldDsKKyAgICBhdXRvIGRlc3RpbmF0aW9uT2Zmc2V0ID0gZnJvbU9mZnNldDsK
ICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CiAgICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsYmFy
OgotICAgICAgICBkZXN0aW5hdGlvblBvc2l0aW9uLnNldFgoZGVzdGluYXRpb25Qb3NpdGlvbi54
KCkgKyBzdGVwICogbXVsdGlwbGllcik7CisgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0LnNldFgo
ZGVzdGluYXRpb25PZmZzZXQueCgpICsgc3RlcCAqIG11bHRpcGxpZXIpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsYmFyOgotICAgICAgICBkZXN0aW5hdGlvblBvc2l0
aW9uLnNldFkoZGVzdGluYXRpb25Qb3NpdGlvbi55KCkgKyBzdGVwICogbXVsdGlwbGllcik7Cisg
ICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0LnNldFkoZGVzdGluYXRpb25PZmZzZXQueSgpICsgc3Rl
cCAqIG11bHRpcGxpZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBtX2R1cmF0aW9u
ID0gZHVyYXRpb25Gcm9tRGlzdGFuY2UoZGVzdGluYXRpb25Qb3NpdGlvbiAtIG1fc3RhcnRQb3Np
dGlvbik7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uRnJvbURpc3RhbmNlKGRlc3RpbmF0aW9u
T2Zmc2V0IC0gbV9zdGFydE9mZnNldCk7CiAKICAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5z
Y3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAgICByZXR1cm4gc3RhcnRPclJldGFy
Z2V0QW5pbWF0aW9uKGV4dGVudHMsIGRlc3RpbmF0aW9uUG9zaXRpb24pOworICAgIHJldHVybiBz
dGFydE9yUmV0YXJnZXRBbmltYXRpb24oZXh0ZW50cywgZGVzdGluYXRpb25PZmZzZXQpOwogfQog
Ci1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGlu
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBk
ZXN0aW5hdGlvblBvc2l0aW9uKQorYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0QW5p
bWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21PZmZzZXQsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIG1fc3RhcnRQb3NpdGlv
biA9IGZyb21Qb3NpdGlvbjsKLSAgICBtX2R1cmF0aW9uID0gZHVyYXRpb25Gcm9tRGlzdGFuY2Uo
ZGVzdGluYXRpb25Qb3NpdGlvbiAtIG1fc3RhcnRQb3NpdGlvbik7CisgICAgbV9zdGFydE9mZnNl
dCA9IGZyb21PZmZzZXQ7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uRnJvbURpc3RhbmNlKGRl
c3RpbmF0aW9uT2Zmc2V0IC0gbV9zdGFydE9mZnNldCk7CiAKICAgICBhdXRvIGV4dGVudHMgPSBt
X2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAgICByZXR1cm4gc3Rh
cnRPclJldGFyZ2V0QW5pbWF0aW9uKGV4dGVudHMsIGRlc3RpbmF0aW9uUG9zaXRpb24pOworICAg
IHJldHVybiBzdGFydE9yUmV0YXJnZXRBbmltYXRpb24oZXh0ZW50cywgZGVzdGluYXRpb25PZmZz
ZXQpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6cmV0YXJnZXRBY3RpdmVBbmlt
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRpb24pCitib29sIFNjcm9sbEFuaW1h
dGlvblNtb290aDo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3
T2Zmc2V0KQogewogICAgIGlmICghaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigq
dGhpcyk7Ci0gICAgcmV0dXJuIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihleHRlbnRzLCBuZXdE
ZXN0aW5hdGlvbik7CisgICAgcmV0dXJuIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihleHRlbnRz
LCBuZXdPZmZzZXQpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRPclJl
dGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uUG9zaXRpb24pCitib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6
c3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIG1fZGVzdGluYXRpb25Q
b3NpdGlvbiA9IGRlc3RpbmF0aW9uUG9zaXRpb24uY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMu
bWluaW11bVNjcm9sbFBvc2l0aW9uLCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbik7Ci0g
ICAgYm9vbCBuZWVkVG9TY3JvbGwgPSBtX3N0YXJ0UG9zaXRpb24gIT0gbV9kZXN0aW5hdGlvblBv
c2l0aW9uOworICAgIG1fZGVzdGluYXRpb25PZmZzZXQgPSBkZXN0aW5hdGlvbk9mZnNldC5jb25z
dHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0LCBleHRlbnRzLm1heGlt
dW1TY3JvbGxPZmZzZXQpOworICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gbV9zdGFydE9mZnNldCAh
PSBtX2Rlc3RpbmF0aW9uT2Zmc2V0OwogCiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhaXNBY3Rp
dmUoKSkgewogICAgICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpAQCAt
MTEyLDggKzExMiw4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9wKCkKIHZvaWQg
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjp1cGRhdGVTY3JvbGxFeHRlbnRzKCkKIHsKICAgICBhdXRv
IGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAg
ICAvLyBGSVhNRTogSWRlYWxseSBmaXggdXAgbV9zdGFydFBvc2l0aW9uIHNvIG1fY3VycmVudFBv
c2l0aW9uIGRvZXNuJ3QgZ28gYmFja3dhcmRzLgotICAgIG1fZGVzdGluYXRpb25Qb3NpdGlvbiA9
IG1fZGVzdGluYXRpb25Qb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVt
U2Nyb2xsUG9zaXRpb24sIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uKTsKKyAgICAvLyBG
SVhNRTogSWRlYWxseSBmaXggdXAgbV9zdGFydE9mZnNldCBzbyBtX2N1cnJlbnRPZmZzZXQgZG9l
c24ndCBnbyBiYWNrd2FyZHMuCisgICAgbV9kZXN0aW5hdGlvbk9mZnNldCA9IG1fZGVzdGluYXRp
b25PZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCwg
ZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KTsKIH0KIAogU2Vjb25kcyBTY3JvbGxBbmltYXRp
b25TbW9vdGg6OmR1cmF0aW9uRnJvbURpc3RhbmNlKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIGNv
bnN0CkBAIC0xMzUsOSArMTM1LDkgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1h
dGVTY3JvbGwoTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkKICAgICBkb3VibGUgZnJhY3Rpb25D
b21wbGV0ZSA9IChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKSAvIG1fZHVyYXRpb247CiAgICAg
ZG91YmxlIHByb2dyZXNzID0gbV9lYXNlSW5PdXRUaW1pbmdGdW5jdGlvbi0+dHJhbnNmb3JtVGlt
ZShmcmFjdGlvbkNvbXBsZXRlLCBtX2R1cmF0aW9uLnZhbHVlKCkpOwogCi0gICAgbV9jdXJyZW50
UG9zaXRpb24gPSB7Ci0gICAgICAgIGxpbmVhckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1fc3Rh
cnRQb3NpdGlvbi54KCksIG1fZGVzdGluYXRpb25Qb3NpdGlvbi54KCkpLAotICAgICAgICBsaW5l
YXJJbnRlcnBvbGF0aW9uKHByb2dyZXNzLCBtX3N0YXJ0UG9zaXRpb24ueSgpLCBtX2Rlc3RpbmF0
aW9uUG9zaXRpb24ueSgpKSwKKyAgICBtX2N1cnJlbnRPZmZzZXQgPSB7CisgICAgICAgIGxpbmVh
ckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1fc3RhcnRPZmZzZXQueCgpLCBtX2Rlc3RpbmF0aW9u
T2Zmc2V0LngoKSksCisgICAgICAgIGxpbmVhckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1fc3Rh
cnRPZmZzZXQueSgpLCBtX2Rlc3RpbmF0aW9uT2Zmc2V0LnkoKSksCiAgICAgfTsKIAogICAgIHJl
dHVybiBjdXJyZW50VGltZSA8IGVuZFRpbWU7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogICAgIGlmIChjb250aW51
ZUFuaW1hdGlvbikKICAgICAgICAgc3RhcnROZXh0VGltZXIoc3RkOjptYXgobWluaW11bVRpbWVy
SW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpKTsKIAotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1h
dGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50UG9zaXRpb24pOworICAgIG1fY2xpZW50LnNj
cm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50T2Zmc2V0KTsKICAgICBpZiAo
IWNvbnRpbnVlQW5pbWF0aW9uKQogICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRF
bmQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaAppbmRleCBjZTBlY2VhMDFmZDFlZDc5YjMzNzVjZDUwYzc3ZDhmZGNlNGJmNjY0
Li4xMzM3ZGZlZmE3Y2QwMmYzMzQ4OTljZDRlNmM5MDE5YmNmMjY3MjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaApAQCAtNDAsMTcgKzQw
LDE3IEBAIHB1YmxpYzoKICAgICBTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsQW5pbWF0aW9u
Q2xpZW50Jik7CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CiAKLSAgICBi
b29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51
bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0
IG11bHRpcGxpZXIpOwotICAgIGJvb2wgc3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5h
dGlvblBvc2l0aW9uKTsKKyAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3Jp
ZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tT2Zmc2V0
LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKKyAgICBib29sIHN0YXJ0QW5pbWF0ZWRT
Y3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21PZmZzZXQsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKIAotICAgIGJvb2wgcmV0YXJnZXRBY3RpdmVB
bmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRpb24pIGZpbmFsOworICAgIGJv
b2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3T2Zmc2V0KSBm
aW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVu
dHMoKSBmaW5hbDsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKIAogcHJpdmF0
ZToKLSAgICBib29sIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihjb25zdCBTY3JvbGxFeHRlbnRz
JiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24pOworICAgIGJvb2wgc3RhcnRPclJldGFy
Z2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbk9mZnNldCk7CiAKICAgICB2b2lkIHJlcXVlc3RBbmltYXRpb25UaW1lckZpcmVkKCk7
CiAgICAgdm9pZCBzdGFydE5leHRUaW1lcihTZWNvbmRzIGRlbGF5KTsKQEAgLTYzLDkgKzYzLDkg
QEAgcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwogICAgIFNlY29uZHMg
bV9kdXJhdGlvbjsKIAotICAgIEZsb2F0UG9pbnQgbV9zdGFydFBvc2l0aW9uOwotICAgIEZsb2F0
UG9pbnQgbV9kZXN0aW5hdGlvblBvc2l0aW9uOwotICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50UG9z
aXRpb247CisgICAgRmxvYXRQb2ludCBtX3N0YXJ0T2Zmc2V0OworICAgIEZsb2F0UG9pbnQgbV9k
ZXN0aW5hdGlvbk9mZnNldDsKKyAgICBGbG9hdFBvaW50IG1fY3VycmVudE9mZnNldDsKICAgICAK
ICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBoYXZlIHRpbWVyIGhlcmUsIGFuZCBpbnN0ZWFkIHVz
ZSBzZXJ2aWNlQW5pbWF0aW9uKCkuCiAgICAgUnVuTG9vcDo6VGltZXI8U2Nyb2xsQW5pbWF0aW9u
U21vb3RoPiBtX2FuaW1hdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuY3BwCmluZGV4IDEwMDdhYjE0M2I4MDZiYmJjZTY1MmM0NjUzYmU0OTAyNTBiNjcw
MmEuLmE2NjE4YmY3MGQxMWYzMzg3MDgxOTNiYWRiOTEwYTRlZWI3MjJmNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgYm9v
bCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
LCBTY3JvbGxHcmFudWxhcml0eQogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1h
dG9yRW5hYmxlZCgpICYmIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCkgJiYgIWJlaGF2
aW9yLmNvbnRhaW5zKFNjcm9sbEJlaGF2aW9yOjpOZXZlckFuaW1hdGUpKQotICAgICAgICByZXR1
cm4gbV9zY3JvbGxBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGwob3JpZW50YXRpb24sIGdy
YW51bGFyaXR5LCBtX2N1cnJlbnRQb3NpdGlvbiwgc3RlcCwgbXVsdGlwbGllcik7CisgICAgICAg
IHJldHVybiBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbChvcmllbnRhdGlv
biwgZ3JhbnVsYXJpdHksIG9mZnNldEZyb21Qb3NpdGlvbihtX2N1cnJlbnRQb3NpdGlvbiksIHN0
ZXAsIG11bHRpcGxpZXIpOwogI2VuZGlmCiAKICAgICByZXR1cm4gc2Nyb2xsVG9Qb3NpdGlvbldp
dGhvdXRBbmltYXRpb24oY3VycmVudFBvc2l0aW9uKCkgKyBkZWx0YSk7CkBAIC0xMDYsOSArMTA2
LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRp
b24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24KIAogICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5z
dG9wKCk7CiAKLSAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IGFkanVzdGVkUG9zaXRpb247Ci0gICAg
bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGFkanVzdGVkUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24p
OwotICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpOworICAgIHNldEN1
cnJlbnRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMTE4LDcgKzExNiw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25X
aXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uCiAgICAgaWYgKCFwb3Np
dGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVhKCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmlt
YXRlZFNjcm9sbFRvRGVzdGluYXRpb24obV9jdXJyZW50UG9zaXRpb24sIG5ld1Bvc2l0aW9uKTsK
KyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24o
b2Zmc2V0RnJvbVBvc2l0aW9uKG1fY3VycmVudFBvc2l0aW9uKSwgb2Zmc2V0RnJvbVBvc2l0aW9u
KG5ld1Bvc2l0aW9uKSk7CiAgICAgc2Nyb2xsYWJsZUFyZWEoKS5zZXRTY3JvbGxCZWhhdmlvclN0
YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25OYXRpdmVBbmltYXRpb24pOwogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtMTMwLDEyICsxMjgsMTIgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6
cmV0YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQog
ICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5yZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihuZXdQb3NpdGlv
bik7CiB9CiAKLUZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Om9mZnNldEZyb21Qb3NpdGlvbihj
b25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK0Zsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Om9m
ZnNldEZyb21Qb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3QKIHsKICAg
ICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihwb3NpdGlv
biwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxPcmlnaW4oKSkpOwogfQogCi1G
bG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjpwb3NpdGlvbkZyb21PZmZzZXQoY29uc3QgRmxvYXRQ
b2ludCYgb2Zmc2V0KQorRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvcjo6cG9zaXRpb25Gcm9tT2Zm
c2V0KGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCkgY29uc3QKIHsKICAgICByZXR1cm4gU2Nyb2xs
YWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKG1f
c2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkpKTsKIH0KQEAgLTIzOSw3ICsyMzcsMTIgQEAg
Ym9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNo
RXZlbnQmKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpzZXRDdXJyZW50UG9zaXRpb24oY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXRpb24pCiB7CisgICAgaWYgKHBvc2l0aW9uID09IG1fY3VycmVudFBv
c2l0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRlbHRhID0gcG9zaXRpb24gLSBt
X2N1cnJlbnRQb3NpdGlvbjsKICAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uOworICAg
IG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7CiAgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25h
cEluZGV4Rm9yT2Zmc2V0KCk7CiB9CiAKQEAgLTI1MSw3ICsyNTQsOCBAQCB2b2lkIFNjcm9sbEFu
aW1hdG9yOjp1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKQogdm9pZCBTY3Jv
bGxBbmltYXRvcjo6bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlbHRhKTsKLSAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNj
cm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihyb3VuZGVkSW50UG9pbnQoY3VycmVudFBvc2l0aW9u
KCkpKTsKKyAgICAKKyAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbFBvc2l0aW9uRnJvbUFu
aW1hdGlvbihyb3VuZGVkSW50UG9pbnQobV9jdXJyZW50UG9zaXRpb24pKTsKICAgICBtX3Njcm9s
bENvbnRyb2xsZXIuc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7CiB9CiAKQEAgLTI3MCw2ICsyNzQs
NyBAQCBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxPZmZzZXQoKSBjb25zdAogICAg
IHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihyb3VuZGVk
SW50UG9pbnQoY3VycmVudFBvc2l0aW9uKCkpKTsKIH0KIAorLy8gRklYTUU6IFVudXNlZC4KIHZv
aWQgU2Nyb2xsQW5pbWF0b3I6OmltbWVkaWF0ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMg
YXhpcywgZmxvYXQgZGVsdGEpCiB7CiAgICAgRmxvYXRTaXplIGRlbHRhU2l6ZTsKQEAgLTM4MSwx
MiArMzg2LDkgQEAgZmxvYXQgU2Nyb2xsQW5pbWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNu
YXBwaW5nSWZOZWVkZWQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMKICAgICByZXR1cm4gbV9zY3JvbGxD
b250cm9sbGVyLmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKGF4aXMsIG5ld09mZnNldCwgdmVsb2Np
dHlJblNjcm9sbEF4aXMsIG9yaWdpbmFsT2Zmc2V0KTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRv
cjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uKQordm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlk
VXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRPZmZzZXQp
CiB7Ci0gICAgRmxvYXRTaXplIGRlbHRhID0gcG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsK
LSAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIG5vdGlmeVBvc2l0aW9uQ2hh
bmdlZChkZWx0YSk7Ci0gICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7
CisgICAgc2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uRnJvbU9mZnNldChjdXJyZW50T2Zmc2V0
KSk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3Jv
bGxBbmltYXRpb24mKQpAQCAtMzk3LDggKzM5OSw4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKQogU2Nyb2xsRXh0ZW50cyBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKQog
ewogICAgIHJldHVybiB7Ci0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBv
c2l0aW9uKCksCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9u
KCksCisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbE9mZnNldCgpLAorICAg
ICAgICBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxPZmZzZXQoKSwKICAgICAgICAgbV9z
Y3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDRhMTI1OWFmNjljNzM5Nzg3ZjhjOTRjNGYwMDJl
N2E1NzM0MjdlYzIuLjBlMmYyYzZmMjU1Yzc2OWM3ZmJjOTQzMDJjNGFhMjFiNjcwN2IyZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtOTcsNyArOTcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50Ci0gICAg
dm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxv
YXRQb2ludCYgY3VycmVudFBvc2l0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbEFuaW1h
dGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBvaW50JiBjdXJyZW50
T2Zmc2V0KSBvdmVycmlkZTsKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxB
bmltYXRpb24mKSBvdmVycmlkZTsKICAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHNGb3JB
bmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKQEAgLTE0NSw5ICsxNDUsOSBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9m
ZnNldCgpOwogCi0gICAgRmxvYXRQb2ludCBvZmZzZXRGcm9tUG9zaXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24pOwotICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gcm9tT2Zmc2V0KGNvbnN0
IEZsb2F0UG9pbnQmIG9mZnNldCk7Ci0gICAgRmxvYXRTaXplIGRlbHRhRnJvbVN0ZXAoU2Nyb2xs
YmFyT3JpZW50YXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpOworICAgIEZsb2F0
UG9pbnQgb2Zmc2V0RnJvbVBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25z
dDsKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uRnJvbU9mZnNldChjb25zdCBGbG9hdFBvaW50JiBv
ZmZzZXQpIGNvbnN0OworICAgIHN0YXRpYyBGbG9hdFNpemUgZGVsdGFGcm9tU3RlcChTY3JvbGxi
YXJPcmllbnRhdGlvbiwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcik7CiAKICAgICBTY3Jv
bGxhYmxlQXJlYSYgbV9zY3JvbGxhYmxlQXJlYTsKICAgICBSZWZQdHI8V2hlZWxFdmVudFRlc3RN
b25pdG9yPiBtX3doZWVsRXZlbnRUZXN0TW9uaXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKaW5kZXggNThjZDJiYTA0MmNjZDY5MWQ1MjBhZDY0ZGU3Y2NhYTQ1ZGQxZjUy
OS4uZGJjYTQzODk2MGJhNWY1MDk5Y2Y5OTM0YWVhNTgzYTRjMzFiNWI4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIFNjcm9s
bFZpZXc6OnNldFNjcm9sbE9mZnNldChjb25zdCBTY3JvbGxPZmZzZXQmIG9mZnNldCkKIAogICAg
IEludFBvaW50IGNvbnN0cmFpbmVkT2Zmc2V0ID0gb2Zmc2V0OwogICAgIGlmIChjb25zdHJhaW5z
U2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpKQotICAgICAgICBjb25zdHJhaW5lZE9mZnNldCA9IGNv
bnN0cmFpbmVkT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihJbnRQb2ludCgpLCBtYXhpbXVtU2Ny
b2xsT2Zmc2V0KCkpOworICAgICAgICBjb25zdHJhaW5lZE9mZnNldCA9IGNvbnN0cmFpbmVkT2Zm
c2V0LmNvbnN0cmFpbmVkQmV0d2VlbihtaW5pbXVtU2Nyb2xsT2Zmc2V0KCksIG1heGltdW1TY3Jv
bGxPZmZzZXQoKSk7CiAKICAgICBzY3JvbGxUbyhzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQoY29u
c3RyYWluZWRPZmZzZXQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmNwcAppbmRleCBhNjMwMTVjYjUyNDNjMWE2MDFmOWMzZjY0NzAyOWU3OWMzYjZkOTcyLi5i
MGU2OTlkNjA2ZjM5NWU1NDg5NTFiNTM2NWY3YjMyOGYxNDBlNWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0yNDAsNiArMjQwLDkgQEAgdm9pZCBT
Y3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFscyhjb25zdCBTY3JvbGxP
ZmZzZXQmIG9mZnNldCkKIAogdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsUG9zaXRpb25G
cm9tQW5pbWF0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKKyAgICBpZiAo
cG9zaXRpb24gPT0gc2Nyb2xsUG9zaXRpb24oKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0
byBzY3JvbGxUeXBlID0gY3VycmVudFNjcm9sbFR5cGUoKTsKICAgICBhdXRvIGNsYW1waW5nID0g
c2Nyb2xsVHlwZSA9PSBTY3JvbGxUeXBlOjpVc2VyID8gU2Nyb2xsQ2xhbXBpbmc6OlVuY2xhbXBl
ZCA6IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkOwogICAgIGlmIChyZXF1ZXN0U2Nyb2xsUG9zaXRp
b25VcGRhdGUocG9zaXRpb24sIHNjcm9sbFR5cGUsIGNsYW1waW5nKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IGMxMDk5ZWMzNDI1NmNjODUzNzk0ZGJhOWE4
ZDlhNGVmM2M4ZTg3OTIuLjc4NDNlMzAzZTVhMjNmNjllMDE2ZGFmOTRlOTlmYzQzMDk1MjNlZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtMjI3LDYgKzIy
Nyw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbE9mZnNldCBzY3JvbGxP
ZmZzZXQoKSBjb25zdDsKIAorICAgIFNjcm9sbE9mZnNldCBtaW5pbXVtU2Nyb2xsT2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4geyB9OyB9CiAgICAgU2Nyb2xsT2Zmc2V0IG1heGltdW1TY3JvbGxPZmZz
ZXQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbFBvc2l0aW9uIHNjcm9sbFBv
c2l0aW9uRnJvbU9mZnNldChTY3JvbGxPZmZzZXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IGNkMzVjODI3OGVkZWFm
YzVjNTQyM2FkM2NhM2NjYWY1NDE1NGI3MGYuLjNkMjY1OTVkZWIyMmE3OGMyZmU5N2Q3MWNlZDk1
MGUwMjNiZGIyMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMubW0KQEAgLTI4NiwxMCArMjg2LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1h
Yzo6aW1tZWRpYXRlU2Nyb2xsQnkoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkKICAgICBpZiAobmV3
UG9zaXRpb24gPT0gY3VycmVudFBvc2l0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9h
dFNpemUgYWRqdXN0ZWREZWx0YSA9IG5ld1Bvc2l0aW9uIC0gY3VycmVudFBvc2l0aW9uOwotICAg
IG1fY3VycmVudFBvc2l0aW9uID0gbmV3UG9zaXRpb247Ci0gICAgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkKGFkanVzdGVkRGVsdGEpOwotICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9m
ZnNldCgpOworICAgIHNldEN1cnJlbnRQb3NpdGlvbihuZXdQb3NpdGlvbik7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuY3BwCmluZGV4IGIwZWQ0NDk0YWE1ZmUwY2Q4ODdhYTI0YjhmM2YyYTJlNzIyNzJi
NGQuLjc2YWM0Nzg0ZDk4MGU1NzUyNjAzZDgzYjBhZWI5NzFjYWQyOWU4MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5j
cHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNl
dFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBwb3NpdGlvbgogCiBTY3JvbGxP
ZmZzZXQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6Y2xhbXBTY3JvbGxPZmZzZXQoY29uc3Qg
U2Nyb2xsT2Zmc2V0JiBzY3JvbGxPZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNjcm9sbE9m
ZnNldC5jb25zdHJhaW5lZEJldHdlZW4oSW50UG9pbnQoKSwgbWF4aW11bVNjcm9sbE9mZnNldCgp
KTsKKyAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihtaW5pbXVtU2Ny
b2xsT2Zmc2V0KCksIG1heGltdW1TY3JvbGxPZmZzZXQoKSk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5
ZXJTY3JvbGxhYmxlQXJlYTo6cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNjcm9s
bFBvc2l0aW9uJiBwb3NpdGlvbiwgU2Nyb2xsVHlwZSBzY3JvbGxUeXBlLCBTY3JvbGxDbGFtcGlu
ZyBjbGFtcGluZykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438577</attachid>
            <date>2021-09-18 21:57:36 -0700</date>
            <delta_ts>2021-09-19 10:10:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230450-20210918215735.patch</filename>
            <type>text/plain</type>
            <size>33215</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM2YWViOGNlZjgzMjIz
ZmViZTg0M2E3OWIwMjczMjE3ZWM4NzQ5OC4uOGE5ZTM1YTYzY2E3NjlhZTQwY2RjOTA3OTBiZGQ3
NjY4YWQxOWMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA5LTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0aW9uIHdvcmsgaW4gdGVybXMgb2Ygb2Zmc2V0cywgbm90IHBvc2l0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBTY3JvbGwg
cG9zaXRpb25zIGNhbiBoYXZlIG5lZ2FnaXZlIHZhbHVlcyBpbiBSVEwgY29udGVudC4gSXQncyBz
aW1wbGVyIGZvciBTY3JvbGxBbmltYXRpb24KKyAgICAgICAgdG8gd29yayBvbiB6ZXJvLWJhc2Vk
IHNjcm9sbCBvZmZzZXRzLiBTY3JvbGxBbmltYXRvciBoYW5kbGVzIHRoZSBtYXBwaW5nIGZyb20g
dGhlc2UgdG8KKyAgICAgICAgU2Nyb2xsUG9zaXRpb25zLgorCisgICAgICAgIEFsc28gc2hhcmUg
YSBiaXQgb2Ygc2V0Q3VycmVudFBvc2l0aW9uKCkgY29kZS4gVGhpcyByZXF1aXJlZCBhZGRpbmcg
YW4gZWFybHkgcmV0dXJuIGluCisgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3Np
dGlvbkZyb21BbmltYXRpb24oKSB0byBhdm9pZCByZS1lbnRyYW50IGNhbGxzIGR1cmluZyBzY3Jv
bGxpbmcKKyAgICAgICAgdHJlZSBjb21taXQsIHdoaWNoIHdvdWxkIGNhdXNlIGRlYWRsb2NrcyBv
biB0aGUgc2Nyb2xsaW5nIHRyZWUgbG9jaywgd2hpY2ggaGFwcGVuZWQgd2hlbiBhCisgICAgICAg
IFNjcm9sbEFuaW1hdGlvbiBzZXQgYSBmcmFjdGlvbmFsIG9mZnNldC4KKworICAgICAgICAqIHBs
YXRmb3JtL0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjo6c2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9tUG9zaXRp
b24gY29uc3QpOiBDbGFyaWZ5IG9mZnNldCB2cy4gcG9zaXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOjp1cGRhdGVLZXlib2FyZFNjcm9sbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I6OnNjcm9sbGFi
bGVEaXJlY3Rpb25zRnJvbU9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0Rh
dGE6OlBlckF4aXNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0
aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlvblRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydEFuaW1hdGVkU2Nyb2xsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNjcm9s
bFRvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3Ro
OjpyZXRhcmdldEFjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRpb25TbW9vdGg6OnN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVNjcm9sbEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRlU2Nyb2xsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Q
b3NpdGlvbldpdGhvdXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yOjpvZmZzZXRGcm9tUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnBvc2l0aW9uRnJvbU9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6b2Zmc2V0RnJvbVBvc2l0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpwb3NpdGlvbkZyb21P
ZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzZXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3Np
dGlvbkZyb21BbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6bWluaW11bVNjcm9sbE9mZnNldCBj
b25zdCk6IG1pbmltdW1TY3JvbGxPZmZzZXQgaXMgYWx3YXlzIDAsMCBidXQgYWRkIHRoaXMgZnVu
Y3Rpb24gZm9yIHN5bW1ldHJ5LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppbW1lZGlhdGVT
Y3JvbGxCeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6Y2xhbXBT
Y3JvbGxPZmZzZXQgY29uc3QpOgorCiAyMDIxLTA5LTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIGxvZ2dpbmcgbGVmdCBpbiBi
eSBtaXN0YWtlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmNwcAppbmRleCBkNjA3NzgxZTc5NTk1MDdhNWI4MTgzNzhhZWI3NGI3
ZDdlMmQ1YzBhLi5mZDhmMGZjOTNmN2IwYjAzN2ZmNzUwZjcxMzBmNDQyNWMxMWJkZjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLmNwcApAQCAtMzksMTcgKzM5LDE3IEBAIEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I6Oktl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoU2Nyb2xsQW5pbWF0b3ImIHNjcm9sbEFuaW1hCiB7CiB9
CiAKLVJlY3RFZGdlczxib29sPiBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOjpzY3JvbGxhYmxl
RGlyZWN0aW9uc0Zyb21PZmZzZXQoRmxvYXRQb2ludCBvZmZzZXQpIGNvbnN0CitSZWN0RWRnZXM8
Ym9vbD4gS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjo6c2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9t
UG9zaXRpb24oRmxvYXRQb2ludCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBhdXRvIG1pbmltdW1T
Y3JvbGxQb3NpdGlvbiA9IG1fc2Nyb2xsQW5pbWF0b3Iuc2Nyb2xsYWJsZUFyZWEoKS5taW5pbXVt
U2Nyb2xsUG9zaXRpb24oKTsKICAgICBhdXRvIG1heGltdW1TY3JvbGxQb3NpdGlvbiA9IG1fc2Ny
b2xsQW5pbWF0b3Iuc2Nyb2xsYWJsZUFyZWEoKS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKTsKIAog
ICAgIFJlY3RFZGdlczxib29sPiBlZGdlczsKIAotICAgIGVkZ2VzLnNldFRvcChvZmZzZXQueSgp
ID4gbWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKSk7Ci0gICAgZWRnZXMuc2V0Qm90dG9tKG9mZnNl
dC55KCkgPCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpKTsKLSAgICBlZGdlcy5zZXRMZWZ0KG9m
ZnNldC54KCkgPiBtaW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgpKTsKLSAgICBlZGdlcy5zZXRSaWdo
dChvZmZzZXQueCgpIDwgbWF4aW11bVNjcm9sbFBvc2l0aW9uLngoKSk7CisgICAgZWRnZXMuc2V0
VG9wKHBvc2l0aW9uLnkoKSA+IG1pbmltdW1TY3JvbGxQb3NpdGlvbi55KCkpOworICAgIGVkZ2Vz
LnNldEJvdHRvbShwb3NpdGlvbi55KCkgPCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpKTsKKyAg
ICBlZGdlcy5zZXRMZWZ0KHBvc2l0aW9uLngoKSA+IG1pbmltdW1TY3JvbGxQb3NpdGlvbi54KCkp
OworICAgIGVkZ2VzLnNldFJpZ2h0KHBvc2l0aW9uLngoKSA8IG1heGltdW1TY3JvbGxQb3NpdGlv
bi54KCkpOwogCiAgICAgcmV0dXJuIGVkZ2VzOwogfQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEtl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I6OnVwZGF0ZUtleWJvYXJkU2Nyb2xsUG9zaXRpb24oTW9u
b3RvbmljVGltZSBjdXJyZQogICAgIEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyBwYXJhbXMgPSBL
ZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKTsKIAogICAgIGlmIChtX2N1cnJl
bnRLZXlib2FyZFNjcm9sbCkgewotICAgICAgICBhdXRvIHNjcm9sbGFibGVEaXJlY3Rpb25zID0g
c2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9tT2Zmc2V0KG1fc2Nyb2xsQW5pbWF0b3IuY3VycmVudFBv
c2l0aW9uKCkpOworICAgICAgICBhdXRvIHNjcm9sbGFibGVEaXJlY3Rpb25zID0gc2Nyb2xsYWJs
ZURpcmVjdGlvbnNGcm9tUG9zaXRpb24obV9zY3JvbGxBbmltYXRvci5jdXJyZW50UG9zaXRpb24o
KSk7CiAgICAgICAgIGF1dG8gZGlyZWN0aW9uID0gbV9jdXJyZW50S2V5Ym9hcmRTY3JvbGwtPmRp
cmVjdGlvbjsKIAogICAgICAgICBpZiAoc2Nyb2xsYWJsZURpcmVjdGlvbnMuYXQoYm94U2lkZUZv
ckRpcmVjdGlvbihkaXJlY3Rpb24pKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCmluZGV4IGQzZTZkNGQ4Yjk4MjgyODdhZGNj
MGYxNDY5Yzg0NzFiOTNhMmU4ZTkuLjNjOTgxNGZmODk4YThkNWI1NmJmYTY4OTI1ODk3ODc0N2Ji
ODExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKKyNpbmNs
dWRlICJLZXlib2FyZEV2ZW50LmgiIC8vIEZJWE1FOiBUaGlzIGlzIGEgbGF5ZXJpbmcgdmlvbGF0
aW9uLgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiIC8vIEZJWE1FOiBUaGlzIGlzIGEgbGF5
ZXJpbmcgdmlvbGF0aW9uLgogI2luY2x1ZGUgIlJlY3RFZGdlcy5oIgogI2luY2x1ZGUgIlNjcm9s
bEFuaW1hdG9yLmgiCiAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCk7Ci0gICAgUmVjdEVkZ2VzPGJvb2w+
IHNjcm9sbGFibGVEaXJlY3Rpb25zRnJvbU9mZnNldChGbG9hdFBvaW50KSBjb25zdDsKKyAgICBS
ZWN0RWRnZXM8Ym9vbD4gc2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9tUG9zaXRpb24oRmxvYXRQb2lu
dCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDxLZXlib2FyZFNjcm9sbD4ga2V5Ym9hcmRTY3Jv
bGxGb3JLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmKSBjb25zdDsKICAgICBmbG9hdCBzY3Jv
bGxEaXN0YW5jZShTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAppbmRleCAyMTZlM2IwOTNm
MzNhMzFjOGE5NTQ0Y2M3ZWY2M2IzZjg3YzBkZTlmLi5jODZjZjdmZmUxODRhNGUxYTFhZDMwM2Y3
YTc0ZmJiMGE5ZjUxOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b24uaApAQCAtMzUsOCArMzUsOCBAQCBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgU2Nyb2xsQW5p
bWF0aW9uOwogCiBzdHJ1Y3QgU2Nyb2xsRXh0ZW50cyB7Ci0gICAgU2Nyb2xsUG9zaXRpb24gbWlu
aW11bVNjcm9sbFBvc2l0aW9uOwotICAgIFNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3Np
dGlvbjsKKyAgICBTY3JvbGxPZmZzZXQgbWluaW11bVNjcm9sbE9mZnNldDsKKyAgICBTY3JvbGxP
ZmZzZXQgbWF4aW11bVNjcm9sbE9mZnNldDsKICAgICBJbnRTaXplIHZpc2libGVTaXplOwogfTsK
IApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTY3JvbGxBbmltYXRpb25DbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwg
Y29uc3QgRmxvYXRQb2ludCYgY3VycmVudFBvc2l0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBv
aW50JiBjdXJyZW50T2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEFuaW1hdGlv
bkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCBTY3JvbGxFeHRlbnRz
IHNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgPSAwOwogfTsKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHsgfQogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1h
dGlvbigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgYm9vbCByZXRhcmdldEFjdGl2ZUFuaW1h
dGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5h
dGlvbk9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Ny
b2xsRXh0ZW50cygpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uS2luZXRpYy5jcHAKaW5kZXggMGM1Mjk3NDQ1ZmRlODg0MDM2ZjU0N2ExZmNmNGYw
MWM3MmRkMGE5Ni4uODdmYmE5MmU2ZGUyYWFlMDJjM2U3YjljYWI2MjBjMGRiNTk5NGMxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5j
cHAKQEAgLTc3LDM2ICs3NywzNiBAQCBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc2Nyb2xsQ2Fw
dHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcm9s
bEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNEYXRhOjpQZXJBeGlzRGF0YShkb3VibGUgbG93ZXIs
IGRvdWJsZSB1cHBlciwgZG91YmxlIGluaXRpYWxQb3NpdGlvbiwgZG91YmxlIGluaXRpYWxWZWxv
Y2l0eSkKK1Njcm9sbEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNEYXRhOjpQZXJBeGlzRGF0YShk
b3VibGUgbG93ZXIsIGRvdWJsZSB1cHBlciwgZG91YmxlIGluaXRpYWxPZmZzZXQsIGRvdWJsZSBp
bml0aWFsVmVsb2NpdHkpCiAgICAgOiBtX2xvd2VyKGxvd2VyKQogICAgICwgbV91cHBlcih1cHBl
cikKLSAgICAsIG1fY29lZjEoaW5pdGlhbFZlbG9jaXR5IC8gZGVjZWxGcmljdGlvbiArIGluaXRp
YWxQb3NpdGlvbikKKyAgICAsIG1fY29lZjEoaW5pdGlhbFZlbG9jaXR5IC8gZGVjZWxGcmljdGlv
biArIGluaXRpYWxPZmZzZXQpCiAgICAgLCBtX2NvZWYyKC1pbml0aWFsVmVsb2NpdHkgLyBkZWNl
bEZyaWN0aW9uKQotICAgICwgbV9wb3NpdGlvbihjbGFtcFRvKGluaXRpYWxQb3NpdGlvbiwgbG93
ZXIsIHVwcGVyKSkKLSAgICAsIG1fdmVsb2NpdHkoaW5pdGlhbFBvc2l0aW9uIDwgbG93ZXIgfHwg
aW5pdGlhbFBvc2l0aW9uID4gdXBwZXIgPyAwIDogaW5pdGlhbFZlbG9jaXR5KQorICAgICwgbV9v
ZmZzZXQoY2xhbXBUbyhpbml0aWFsT2Zmc2V0LCBsb3dlciwgdXBwZXIpKQorICAgICwgbV92ZWxv
Y2l0eShpbml0aWFsT2Zmc2V0IDwgbG93ZXIgfHwgaW5pdGlhbE9mZnNldCA+IHVwcGVyID8gMCA6
IGluaXRpYWxWZWxvY2l0eSkKIHsKIH0KIAogYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQ
ZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNvbmRzIHRpbWVEZWx0YSkKIHsKLSAgICBhdXRv
IGxhc3RQb3NpdGlvbiA9IG1fcG9zaXRpb247CisgICAgYXV0byBsYXN0T2Zmc2V0ID0gbV9vZmZz
ZXQ7CiAgICAgYXV0byBsYXN0VGltZSA9IG1fZWxhcHNlZFRpbWU7CiAgICAgbV9lbGFwc2VkVGlt
ZSArPSB0aW1lRGVsdGE7CiAKICAgICBkb3VibGUgZXhwb25lbnRpYWxQYXJ0ID0gZXhwKC1kZWNl
bEZyaWN0aW9uICogbV9lbGFwc2VkVGltZS52YWx1ZSgpKTsKLSAgICBtX3Bvc2l0aW9uID0gbV9j
b2VmMSArIG1fY29lZjIgKiBleHBvbmVudGlhbFBhcnQ7CisgICAgbV9vZmZzZXQgPSBtX2NvZWYx
ICsgbV9jb2VmMiAqIGV4cG9uZW50aWFsUGFydDsKICAgICBtX3ZlbG9jaXR5ID0gLWRlY2VsRnJp
Y3Rpb24gKiBtX2NvZWYyICogZXhwb25lbnRpYWxQYXJ0OwogCi0gICAgaWYgKG1fcG9zaXRpb24g
PCBtX2xvd2VyKSB7Ci0gICAgICAgIG1fdmVsb2NpdHkgPSBtX2xvd2VyIC0gbV9wb3NpdGlvbjsK
LSAgICAgICAgbV9wb3NpdGlvbiA9IG1fbG93ZXI7Ci0gICAgfSBlbHNlIGlmIChtX3Bvc2l0aW9u
ID4gbV91cHBlcikgewotICAgICAgICBtX3ZlbG9jaXR5ID0gbV91cHBlciAtIG1fcG9zaXRpb247
Ci0gICAgICAgIG1fcG9zaXRpb24gPSBtX3VwcGVyOworICAgIGlmIChtX29mZnNldCA8IG1fbG93
ZXIpIHsKKyAgICAgICAgbV92ZWxvY2l0eSA9IG1fbG93ZXIgLSBtX29mZnNldDsKKyAgICAgICAg
bV9vZmZzZXQgPSBtX2xvd2VyOworICAgIH0gZWxzZSBpZiAobV9vZmZzZXQgPiBtX3VwcGVyKSB7
CisgICAgICAgIG1fdmVsb2NpdHkgPSBtX3VwcGVyIC0gbV9vZmZzZXQ7CisgICAgICAgIG1fb2Zm
c2V0ID0gbV91cHBlcjsKICAgICB9CiAKLSAgICBpZiAoZmFicyhtX3ZlbG9jaXR5KSA8IDEgfHwg
KGxhc3RUaW1lICYmIGZhYnMobV9wb3NpdGlvbiAtIGxhc3RQb3NpdGlvbikgPCAxKSkgewotICAg
ICAgICBtX3Bvc2l0aW9uID0gcm91bmQobV9wb3NpdGlvbik7CisgICAgaWYgKGZhYnMobV92ZWxv
Y2l0eSkgPCAxIHx8IChsYXN0VGltZSAmJiBmYWJzKG1fb2Zmc2V0IC0gbGFzdE9mZnNldCkgPCAx
KSkgeworICAgICAgICBtX29mZnNldCA9IHJvdW5kKG1fb2Zmc2V0KTsKICAgICAgICAgbV92ZWxv
Y2l0eSA9IDA7CiAgICAgfQogCkBAIC0xNjksMTIgKzE2OSwxMiBAQCBGbG9hdFBvaW50IFNjcm9s
bEFuaW1hdGlvbktpbmV0aWM6OmNvbXB1dGVWZWxvY2l0eSgpCiAgICAgcmV0dXJuIEZsb2F0UG9p
bnQoYWNjdW1EZWx0YS54KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCksIGFjY3VtRGVs
dGEueSgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52YWx1ZSgpKTsKIH0KIAotYm9vbCBTY3JvbGxB
bmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9j
aXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKK2Jvb2wgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJv
b2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKQogewogICAgIHN0b3AoKTsKIAogICAgIGlm
ICghdmVsb2NpdHkueCgpICYmICF2ZWxvY2l0eS55KCkpIHsKLSAgICAgICAgbV9wb3NpdGlvbiA9
IGluaXRpYWxQb3NpdGlvbjsKKyAgICAgICAgbV9vZmZzZXQgPSBpbml0aWFsT2Zmc2V0OwogICAg
ICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3ZlcnRpY2Fs
RGF0YSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk5LDIwICsx
OTksMjAgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xs
V2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFAKICAgICB9OwogCiAgICAgaWYgKG1heUhT
Y3JvbGwpIHsKLSAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMu
bWluaW11bVNjcm9sbFBvc2l0aW9uLngoKSwKLSAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNj
cm9sbFBvc2l0aW9uLngoKSwKLSAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi54KCksIGFjY3Vt
dWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS54KCksIG1faG9yaXpvbnRhbERhdGEpKTsKKyAgICAgICAg
bV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNl
dC54KCksCisgICAgICAgICAgICBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQueCgpLAorICAg
ICAgICAgICAgaW5pdGlhbE9mZnNldC54KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS54
KCksIG1faG9yaXpvbnRhbERhdGEpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9ob3Jpem9udGFs
RGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtYXlWU2Nyb2xsKSB7Ci0gICAgICAgIG1f
dmVydGljYWxEYXRhID0gUGVyQXhpc0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24u
eSgpLAotICAgICAgICAgICAgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpLAotICAg
ICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnkoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5
LnkoKSwgbV92ZXJ0aWNhbERhdGEpKTsKKyAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlz
RGF0YShleHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQueSgpLAorICAgICAgICAgICAgZXh0ZW50
cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0LnkoKSwKKyAgICAgICAgICAgIGluaXRpYWxPZmZzZXQueSgp
LCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueSgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAg
IH0gZWxzZQogICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIG1f
cG9zaXRpb24gPSBpbml0aWFsUG9zaXRpb247CisgICAgbV9vZmZzZXQgPSBpbml0aWFsT2Zmc2V0
OwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSB0aWNrVGltZSAvIDIu
OwogICAgIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI0MSwx
MCArMjQxLDEwIEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9uVGltZXJG
aXJlZCgpCiAgICAgaWYgKG1faG9yaXpvbnRhbERhdGEgfHwgbV92ZXJ0aWNhbERhdGEpCiAgICAg
ICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6bWF4KG1pbmltdW1UaW1lcklu
dGVydmFsLCBkZWx0YSkpOwogCi0gICAgZG91YmxlIHggPSBtX2hvcml6b250YWxEYXRhID8gbV9o
b3Jpem9udGFsRGF0YS52YWx1ZSgpLnBvc2l0aW9uKCkgOiBtX3Bvc2l0aW9uLngoKTsKLSAgICBk
b3VibGUgeSA9IG1fdmVydGljYWxEYXRhID8gbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5wb3NpdGlv
bigpIDogbV9wb3NpdGlvbi55KCk7Ci0gICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQoeCwgeSk7
Ci0gICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBGbG9hdFBvaW50
KG1fcG9zaXRpb24pKTsKKyAgICBkb3VibGUgeCA9IG1faG9yaXpvbnRhbERhdGEgPyBtX2hvcml6
b250YWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX29mZnNldC54KCk7CisgICAgZG91YmxlIHkg
PSBtX3ZlcnRpY2FsRGF0YSA/IG1fdmVydGljYWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX29m
ZnNldC55KCk7CisgICAgbV9vZmZzZXQgPSBGbG9hdFBvaW50KHgsIHkpOworICAgIG1fY2xpZW50
LnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9vZmZzZXQpOwogfQogCiBTZWNvbmRz
IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmRlbHRhVG9OZXh0RnJhbWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCmluZGV4IDYwNTMzZTM5
NjIyMmI2Y2IxOWZlMGE0ZjVmMTBkOGYwN2U1ZmIxMTUuLjYyYTc0NjFhZWE1YjA0NmUwZjYxYjg0
MGRiMTMyMzMzYTZjNTI2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25LaW5ldGljLmgKQEAgLTM4LDkgKzM4LDkgQEAgY2xhc3MgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHJpdmF0ZToKICAg
ICBjbGFzcyBQZXJBeGlzRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQZXJBeGlzRGF0YShk
b3VibGUgbG93ZXIsIGRvdWJsZSB1cHBlciwgZG91YmxlIGluaXRpYWxQb3NpdGlvbiwgZG91Ymxl
IGluaXRpYWxWZWxvY2l0eSk7CisgICAgICAgIFBlckF4aXNEYXRhKGRvdWJsZSBsb3dlciwgZG91
YmxlIHVwcGVyLCBkb3VibGUgaW5pdGlhbE9mZnNldCwgZG91YmxlIGluaXRpYWxWZWxvY2l0eSk7
CiAKLSAgICAgICAgZG91YmxlIHBvc2l0aW9uKCkgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAg
ICAgICBkb3VibGUgb2Zmc2V0KCkgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAgICAgZG91Ymxl
IHZlbG9jaXR5KCkgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQogCiAgICAgICAgIGJvb2wgYW5pbWF0
ZVNjcm9sbChTZWNvbmRzIHRpbWVEZWx0YSk7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGRvdWJsZSBtX2NvZWYyIHsgMCB9OwogCiAgICAgICAgIFNlY29uZHMgbV9lbGFwc2Vk
VGltZTsKLSAgICAgICAgZG91YmxlIG1fcG9zaXRpb24geyAwIH07CisgICAgICAgIGRvdWJsZSBt
X29mZnNldCB7IDAgfTsKICAgICAgICAgZG91YmxlIG1fdmVsb2NpdHkgeyAwIH07CiAgICAgfTsK
IApAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhT
Y3JvbGxBbmltYXRpb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25LaW5l
dGljKCk7CiAKLSAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5
KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgdmVs
b2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKTsKKyAgICBib29sIHN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJv
b2wgbWF5VlNjcm9sbCk7CiAKLSAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSBmaW5hbDsKKyAgICBib29sIHJldGFyZ2V0QWN0
aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7CiAgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFsOwogCkBAIC04
MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwog
ICAgIFJ1bkxvb3A6OlRpbWVyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fYW5pbWF0aW9uVGlt
ZXI7Ci0gICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQgbV9vZmZzZXQ7
CiAgICAgVmVjdG9yPFBsYXRmb3JtV2hlZWxFdmVudD4gbV9zY3JvbGxIaXN0b3J5OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAK
aW5kZXggODQ5OTIyMjM2ZTJjODRkYTQ1ZTlmYTcyNDljOGYwNWNkMmZiOTE3Ni4uNmUyOTc1MTlk
ODRkZDU0ZWJlYjUzNTIzNTNiMDNjNmQyNGU1MGI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC01NCw0NyArNTQsNDcgQEAg
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsQW5pbWF0
aW9uQ2xpZW50JiBjbGllbnQpCiAKIFNjcm9sbEFuaW1hdGlvblNtb290aDo6flNjcm9sbEFuaW1h
dGlvblNtb290aCgpID0gZGVmYXVsdDsKIAotYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0
YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAs
IGZsb2F0IG11bHRpcGxpZXIpCitib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmlt
YXRlZFNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHksIGNvbnN0IEZsb2F0UG9pbnQmIGZyb21PZmZzZXQsIGZsb2F0IHN0ZXAsIGZsb2F0IG11
bHRpcGxpZXIpCiB7Ci0gICAgbV9zdGFydFBvc2l0aW9uID0gZnJvbVBvc2l0aW9uOwotICAgIGF1
dG8gZGVzdGluYXRpb25Qb3NpdGlvbiA9IGZyb21Qb3NpdGlvbjsKKyAgICBtX3N0YXJ0T2Zmc2V0
ID0gZnJvbU9mZnNldDsKKyAgICBhdXRvIGRlc3RpbmF0aW9uT2Zmc2V0ID0gZnJvbU9mZnNldDsK
ICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CiAgICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsYmFy
OgotICAgICAgICBkZXN0aW5hdGlvblBvc2l0aW9uLnNldFgoZGVzdGluYXRpb25Qb3NpdGlvbi54
KCkgKyBzdGVwICogbXVsdGlwbGllcik7CisgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0LnNldFgo
ZGVzdGluYXRpb25PZmZzZXQueCgpICsgc3RlcCAqIG11bHRpcGxpZXIpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsYmFyOgotICAgICAgICBkZXN0aW5hdGlvblBvc2l0
aW9uLnNldFkoZGVzdGluYXRpb25Qb3NpdGlvbi55KCkgKyBzdGVwICogbXVsdGlwbGllcik7Cisg
ICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0LnNldFkoZGVzdGluYXRpb25PZmZzZXQueSgpICsgc3Rl
cCAqIG11bHRpcGxpZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBtX2R1cmF0aW9u
ID0gZHVyYXRpb25Gcm9tRGlzdGFuY2UoZGVzdGluYXRpb25Qb3NpdGlvbiAtIG1fc3RhcnRQb3Np
dGlvbik7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uRnJvbURpc3RhbmNlKGRlc3RpbmF0aW9u
T2Zmc2V0IC0gbV9zdGFydE9mZnNldCk7CiAKICAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5z
Y3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAgICByZXR1cm4gc3RhcnRPclJldGFy
Z2V0QW5pbWF0aW9uKGV4dGVudHMsIGRlc3RpbmF0aW9uUG9zaXRpb24pOworICAgIHJldHVybiBz
dGFydE9yUmV0YXJnZXRBbmltYXRpb24oZXh0ZW50cywgZGVzdGluYXRpb25PZmZzZXQpOwogfQog
Ci1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGlu
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBk
ZXN0aW5hdGlvblBvc2l0aW9uKQorYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0QW5p
bWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21PZmZzZXQsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIG1fc3RhcnRQb3NpdGlv
biA9IGZyb21Qb3NpdGlvbjsKLSAgICBtX2R1cmF0aW9uID0gZHVyYXRpb25Gcm9tRGlzdGFuY2Uo
ZGVzdGluYXRpb25Qb3NpdGlvbiAtIG1fc3RhcnRQb3NpdGlvbik7CisgICAgbV9zdGFydE9mZnNl
dCA9IGZyb21PZmZzZXQ7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uRnJvbURpc3RhbmNlKGRl
c3RpbmF0aW9uT2Zmc2V0IC0gbV9zdGFydE9mZnNldCk7CiAKICAgICBhdXRvIGV4dGVudHMgPSBt
X2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAgICByZXR1cm4gc3Rh
cnRPclJldGFyZ2V0QW5pbWF0aW9uKGV4dGVudHMsIGRlc3RpbmF0aW9uUG9zaXRpb24pOworICAg
IHJldHVybiBzdGFydE9yUmV0YXJnZXRBbmltYXRpb24oZXh0ZW50cywgZGVzdGluYXRpb25PZmZz
ZXQpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6cmV0YXJnZXRBY3RpdmVBbmlt
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRpb24pCitib29sIFNjcm9sbEFuaW1h
dGlvblNtb290aDo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3
T2Zmc2V0KQogewogICAgIGlmICghaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigq
dGhpcyk7Ci0gICAgcmV0dXJuIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihleHRlbnRzLCBuZXdE
ZXN0aW5hdGlvbik7CisgICAgcmV0dXJuIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihleHRlbnRz
LCBuZXdPZmZzZXQpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRPclJl
dGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uUG9zaXRpb24pCitib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6
c3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIG1fZGVzdGluYXRpb25Q
b3NpdGlvbiA9IGRlc3RpbmF0aW9uUG9zaXRpb24uY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMu
bWluaW11bVNjcm9sbFBvc2l0aW9uLCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbik7Ci0g
ICAgYm9vbCBuZWVkVG9TY3JvbGwgPSBtX3N0YXJ0UG9zaXRpb24gIT0gbV9kZXN0aW5hdGlvblBv
c2l0aW9uOworICAgIG1fZGVzdGluYXRpb25PZmZzZXQgPSBkZXN0aW5hdGlvbk9mZnNldC5jb25z
dHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0LCBleHRlbnRzLm1heGlt
dW1TY3JvbGxPZmZzZXQpOworICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gbV9zdGFydE9mZnNldCAh
PSBtX2Rlc3RpbmF0aW9uT2Zmc2V0OwogCiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhaXNBY3Rp
dmUoKSkgewogICAgICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpAQCAt
MTEyLDggKzExMiw4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9wKCkKIHZvaWQg
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjp1cGRhdGVTY3JvbGxFeHRlbnRzKCkKIHsKICAgICBhdXRv
IGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAg
ICAvLyBGSVhNRTogSWRlYWxseSBmaXggdXAgbV9zdGFydFBvc2l0aW9uIHNvIG1fY3VycmVudFBv
c2l0aW9uIGRvZXNuJ3QgZ28gYmFja3dhcmRzLgotICAgIG1fZGVzdGluYXRpb25Qb3NpdGlvbiA9
IG1fZGVzdGluYXRpb25Qb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVt
U2Nyb2xsUG9zaXRpb24sIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uKTsKKyAgICAvLyBG
SVhNRTogSWRlYWxseSBmaXggdXAgbV9zdGFydE9mZnNldCBzbyBtX2N1cnJlbnRPZmZzZXQgZG9l
c24ndCBnbyBiYWNrd2FyZHMuCisgICAgbV9kZXN0aW5hdGlvbk9mZnNldCA9IG1fZGVzdGluYXRp
b25PZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCwg
ZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KTsKIH0KIAogU2Vjb25kcyBTY3JvbGxBbmltYXRp
b25TbW9vdGg6OmR1cmF0aW9uRnJvbURpc3RhbmNlKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIGNv
bnN0CkBAIC0xMzUsOSArMTM1LDkgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1h
dGVTY3JvbGwoTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkKICAgICBkb3VibGUgZnJhY3Rpb25D
b21wbGV0ZSA9IChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKSAvIG1fZHVyYXRpb247CiAgICAg
ZG91YmxlIHByb2dyZXNzID0gbV9lYXNlSW5PdXRUaW1pbmdGdW5jdGlvbi0+dHJhbnNmb3JtVGlt
ZShmcmFjdGlvbkNvbXBsZXRlLCBtX2R1cmF0aW9uLnZhbHVlKCkpOwogCi0gICAgbV9jdXJyZW50
UG9zaXRpb24gPSB7Ci0gICAgICAgIGxpbmVhckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1fc3Rh
cnRQb3NpdGlvbi54KCksIG1fZGVzdGluYXRpb25Qb3NpdGlvbi54KCkpLAotICAgICAgICBsaW5l
YXJJbnRlcnBvbGF0aW9uKHByb2dyZXNzLCBtX3N0YXJ0UG9zaXRpb24ueSgpLCBtX2Rlc3RpbmF0
aW9uUG9zaXRpb24ueSgpKSwKKyAgICBtX2N1cnJlbnRPZmZzZXQgPSB7CisgICAgICAgIGxpbmVh
ckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1fc3RhcnRPZmZzZXQueCgpLCBtX2Rlc3RpbmF0aW9u
T2Zmc2V0LngoKSksCisgICAgICAgIGxpbmVhckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1fc3Rh
cnRPZmZzZXQueSgpLCBtX2Rlc3RpbmF0aW9uT2Zmc2V0LnkoKSksCiAgICAgfTsKIAogICAgIHJl
dHVybiBjdXJyZW50VGltZSA8IGVuZFRpbWU7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogICAgIGlmIChjb250aW51
ZUFuaW1hdGlvbikKICAgICAgICAgc3RhcnROZXh0VGltZXIoc3RkOjptYXgobWluaW11bVRpbWVy
SW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpKTsKIAotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1h
dGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50UG9zaXRpb24pOworICAgIG1fY2xpZW50LnNj
cm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50T2Zmc2V0KTsKICAgICBpZiAo
IWNvbnRpbnVlQW5pbWF0aW9uKQogICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRF
bmQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaAppbmRleCBjZTBlY2VhMDFmZDFlZDc5YjMzNzVjZDUwYzc3ZDhmZGNlNGJmNjY0
Li4xMzM3ZGZlZmE3Y2QwMmYzMzQ4OTljZDRlNmM5MDE5YmNmMjY3MjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaApAQCAtNDAsMTcgKzQw
LDE3IEBAIHB1YmxpYzoKICAgICBTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsQW5pbWF0aW9u
Q2xpZW50Jik7CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CiAKLSAgICBi
b29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51
bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0
IG11bHRpcGxpZXIpOwotICAgIGJvb2wgc3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5h
dGlvblBvc2l0aW9uKTsKKyAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3Jp
ZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tT2Zmc2V0
LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKKyAgICBib29sIHN0YXJ0QW5pbWF0ZWRT
Y3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21PZmZzZXQsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKIAotICAgIGJvb2wgcmV0YXJnZXRBY3RpdmVB
bmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRpb24pIGZpbmFsOworICAgIGJv
b2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3T2Zmc2V0KSBm
aW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVu
dHMoKSBmaW5hbDsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKIAogcHJpdmF0
ZToKLSAgICBib29sIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihjb25zdCBTY3JvbGxFeHRlbnRz
JiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24pOworICAgIGJvb2wgc3RhcnRPclJldGFy
Z2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbk9mZnNldCk7CiAKICAgICB2b2lkIHJlcXVlc3RBbmltYXRpb25UaW1lckZpcmVkKCk7
CiAgICAgdm9pZCBzdGFydE5leHRUaW1lcihTZWNvbmRzIGRlbGF5KTsKQEAgLTYzLDkgKzYzLDkg
QEAgcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwogICAgIFNlY29uZHMg
bV9kdXJhdGlvbjsKIAotICAgIEZsb2F0UG9pbnQgbV9zdGFydFBvc2l0aW9uOwotICAgIEZsb2F0
UG9pbnQgbV9kZXN0aW5hdGlvblBvc2l0aW9uOwotICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50UG9z
aXRpb247CisgICAgRmxvYXRQb2ludCBtX3N0YXJ0T2Zmc2V0OworICAgIEZsb2F0UG9pbnQgbV9k
ZXN0aW5hdGlvbk9mZnNldDsKKyAgICBGbG9hdFBvaW50IG1fY3VycmVudE9mZnNldDsKICAgICAK
ICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBoYXZlIHRpbWVyIGhlcmUsIGFuZCBpbnN0ZWFkIHVz
ZSBzZXJ2aWNlQW5pbWF0aW9uKCkuCiAgICAgUnVuTG9vcDo6VGltZXI8U2Nyb2xsQW5pbWF0aW9u
U21vb3RoPiBtX2FuaW1hdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuY3BwCmluZGV4IDEwMDdhYjE0M2I4MDZiYmJjZTY1MmM0NjUzYmU0OTAyNTBiNjcw
MmEuLjViMTU1NjYwZWY4ZGU1Yjk0NWY2YTQ5YTBlZWE2N2U1ZGE4OTNkNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgYm9v
bCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
LCBTY3JvbGxHcmFudWxhcml0eQogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1h
dG9yRW5hYmxlZCgpICYmIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCkgJiYgIWJlaGF2
aW9yLmNvbnRhaW5zKFNjcm9sbEJlaGF2aW9yOjpOZXZlckFuaW1hdGUpKQotICAgICAgICByZXR1
cm4gbV9zY3JvbGxBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGwob3JpZW50YXRpb24sIGdy
YW51bGFyaXR5LCBtX2N1cnJlbnRQb3NpdGlvbiwgc3RlcCwgbXVsdGlwbGllcik7CisgICAgICAg
IHJldHVybiBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbChvcmllbnRhdGlv
biwgZ3JhbnVsYXJpdHksIG9mZnNldEZyb21Qb3NpdGlvbihtX2N1cnJlbnRQb3NpdGlvbiksIHN0
ZXAsIG11bHRpcGxpZXIpOwogI2VuZGlmCiAKICAgICByZXR1cm4gc2Nyb2xsVG9Qb3NpdGlvbldp
dGhvdXRBbmltYXRpb24oY3VycmVudFBvc2l0aW9uKCkgKyBkZWx0YSk7CkBAIC0xMDYsOSArMTA2
LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRp
b24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24KIAogICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5z
dG9wKCk7CiAKLSAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IGFkanVzdGVkUG9zaXRpb247Ci0gICAg
bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGFkanVzdGVkUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24p
OwotICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpOworICAgIHNldEN1
cnJlbnRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uLCBOb3RpZnlTY3JvbGxhYmxlQXJlYTo6WWVz
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTE4LDcgKzExNiw3IEBAIGJvb2wgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IG5ld1Bvc2l0aW9uCiAgICAgaWYgKCFwb3NpdGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVh
KCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBt
X3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24obV9jdXJy
ZW50UG9zaXRpb24sIG5ld1Bvc2l0aW9uKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRB
bmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24ob2Zmc2V0RnJvbVBvc2l0aW9uKG1fY3VycmVudFBv
c2l0aW9uKSwgb2Zmc2V0RnJvbVBvc2l0aW9uKG5ld1Bvc2l0aW9uKSk7CiAgICAgc2Nyb2xsYWJs
ZUFyZWEoKS5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6SW5O
b25OYXRpdmVBbmltYXRpb24pOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTMwLDEyICsxMjgs
MTIgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6cmV0YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQogICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5yZXRhcmdl
dEFjdGl2ZUFuaW1hdGlvbihuZXdQb3NpdGlvbik7CiB9CiAKLUZsb2F0UG9pbnQgU2Nyb2xsQW5p
bWF0b3I6Om9mZnNldEZyb21Qb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK0Zs
b2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Om9mZnNldEZyb21Qb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbikgY29uc3QKIHsKICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9s
bE9mZnNldEZyb21Qb3NpdGlvbihwb3NpdGlvbiwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJl
YS5zY3JvbGxPcmlnaW4oKSkpOwogfQogCi1GbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjpwb3Np
dGlvbkZyb21PZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQorRmxvYXRQb2ludCBTY3Jv
bGxBbmltYXRvcjo6cG9zaXRpb25Gcm9tT2Zmc2V0KGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCkg
Y29uc3QKIHsKICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9m
ZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkp
KTsKIH0KQEAgLTIzNyw5ICsyMzUsMTYgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKQogfQogI2VuZGlmCiAKLXZvaWQgU2Ny
b2xsQW5pbWF0b3I6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
bikKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbiwgTm90aWZ5U2Nyb2xsYWJsZUFyZWEgbm90aWZ5KQogeworICAgIC8vIEZJ
WE1FOiBBbiBlYXJseSByZXR1cm4gaGVyZSBpZiB0aGUgcG9zaXRpb24gaXMgbm90IGNoYW5naW5n
IHRyaWdnZXJzIHRlc3QgZmFpbHVyZXMgYmVjYXVzZSBvZiBhZGp1c3RGb3JJT1NDYXJldFdoZW5T
Y3JvbGxpbmcoKQorICAgIC8vIGNvZGUgaW4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS4gV2Ug
Y2FuIGVhcmx5IHJldHVybiB3aGVuIHdlYmtpdC5vcmcvYi8yMzA0NTQgaXMgZml4ZWQuCisgICAg
YXV0byBkZWx0YSA9IHBvc2l0aW9uIC0gbV9jdXJyZW50UG9zaXRpb247CiAgICAgbV9jdXJyZW50
UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAKKyAgICBpZiAobm90aWZ5ID09IE5vdGlmeVNjcm9s
bGFibGVBcmVhOjpZZXMpCisgICAgICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7Cisg
ICAgCiAgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CiB9CiAKQEAg
LTI1MSw3ICsyNTYsOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjp1cGRhdGVBY3RpdmVTY3JvbGxT
bmFwSW5kZXhGb3JPZmZzZXQoKQogdm9pZCBTY3JvbGxBbmltYXRvcjo6bm90aWZ5UG9zaXRpb25D
aGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlbHRh
KTsKLSAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihy
b3VuZGVkSW50UG9pbnQoY3VycmVudFBvc2l0aW9uKCkpKTsKKyAgICAKKyAgICBtX3Njcm9sbGFi
bGVBcmVhLnNldFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihyb3VuZGVkSW50UG9pbnQobV9j
dXJyZW50UG9zaXRpb24pKTsKICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2Nyb2xsUG9zaXRpb25D
aGFuZ2VkKCk7CiB9CiAKQEAgLTI3MCw2ICsyNzYsNyBAQCBGbG9hdFBvaW50IFNjcm9sbEFuaW1h
dG9yOjpzY3JvbGxPZmZzZXQoKSBjb25zdAogICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnNj
cm9sbE9mZnNldEZyb21Qb3NpdGlvbihyb3VuZGVkSW50UG9pbnQoY3VycmVudFBvc2l0aW9uKCkp
KTsKIH0KIAorLy8gRklYTUU6IFVudXNlZC4KIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmltbWVkaWF0
ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVsdGEpCiB7CiAgICAg
RmxvYXRTaXplIGRlbHRhU2l6ZTsKQEAgLTM4MSwxMiArMzg4LDkgQEAgZmxvYXQgU2Nyb2xsQW5p
bWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMKICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFkanVzdFNjcm9sbERlc3Rp
bmF0aW9uKGF4aXMsIG5ld09mZnNldCwgdmVsb2NpdHlJblNjcm9sbEF4aXMsIG9yaWdpbmFsT2Zm
c2V0KTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRl
KFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQordm9pZCBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNv
bnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRPZmZzZXQpCiB7Ci0gICAgRmxvYXRTaXplIGRlbHRhID0g
cG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKLSAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IHBv
c2l0aW9uOwotICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7Ci0gICAgdXBkYXRlQWN0
aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CisgICAgc2V0Q3VycmVudFBvc2l0aW9uKHBv
c2l0aW9uRnJvbU9mZnNldChjdXJyZW50T2Zmc2V0KSwgTm90aWZ5U2Nyb2xsYWJsZUFyZWE6Olll
cyk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3Jv
bGxBbmltYXRpb24mKQpAQCAtMzk3LDggKzQwMSw4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKQogU2Nyb2xsRXh0ZW50cyBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKQog
ewogICAgIHJldHVybiB7Ci0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBv
c2l0aW9uKCksCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9u
KCksCisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbE9mZnNldCgpLAorICAg
ICAgICBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxPZmZzZXQoKSwKICAgICAgICAgbV9z
Y3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDRhMTI1OWFmNjljNzM5Nzg3ZjhjOTRjNGYwMDJl
N2E1NzM0MjdlYzIuLmIxNjYyNmI4NDgzYmVkNjA0NWYxMTk3NmQxODM0Y2EwYmQyYmI1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtOTcsMTMgKzk3LDE2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBTY3JvbGxBbmltYXRpb25DbGllbnQKLSAg
ICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBG
bG9hdFBvaW50JiBjdXJyZW50UG9zaXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsQW5p
bWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJl
bnRPZmZzZXQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9s
bEFuaW1hdGlvbiYpIG92ZXJyaWRlOwogICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0Zv
ckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29udGVu
dHNTaXplQ2hhbmdlZCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRDdXJyZW50UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYpOworICAgIGVudW0gTm90aWZ5U2Nyb2xsYWJsZUFyZWEgOiBib29sIHsK
KyAgICAgICAgTm8sIFllcworICAgIH07CisgICAgdm9pZCBzZXRDdXJyZW50UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYsIE5vdGlmeVNjcm9sbGFibGVBcmVhID0gTm90aWZ5U2Nyb2xsYWJsZUFy
ZWE6Ok5vKTsKICAgICBjb25zdCBGbG9hdFBvaW50JiBjdXJyZW50UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRQb3NpdGlvbjsgfQogCiAgICAgS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvciAqa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5nZXQoKTsgfQpAQCAtMTQ1LDkgKzE0OCwxMCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9m
ZnNldCgpOwogCi0gICAgRmxvYXRQb2ludCBvZmZzZXRGcm9tUG9zaXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24pOwotICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gcm9tT2Zmc2V0KGNvbnN0
IEZsb2F0UG9pbnQmIG9mZnNldCk7Ci0gICAgRmxvYXRTaXplIGRlbHRhRnJvbVN0ZXAoU2Nyb2xs
YmFyT3JpZW50YXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpOworICAgIEZsb2F0
UG9pbnQgb2Zmc2V0RnJvbVBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25z
dDsKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uRnJvbU9mZnNldChjb25zdCBGbG9hdFBvaW50JiBv
ZmZzZXQpIGNvbnN0OworCisgICAgc3RhdGljIEZsb2F0U2l6ZSBkZWx0YUZyb21TdGVwKFNjcm9s
bGJhck9yaWVudGF0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKIAogICAgIFNj
cm9sbGFibGVBcmVhJiBtX3Njcm9sbGFibGVBcmVhOwogICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVz
dE1vbml0b3I+IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAppbmRleCA1OGNkMmJhMDQyY2NkNjkxZDUyMGFkNjRkZTdjY2FhNDVkZDFm
NTI5Li5kYmNhNDM4OTYwYmE1ZjUwOTljZjk5MzRhZWE1ODNhNGMzMWI1YjhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgU2Ny
b2xsVmlldzo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYgb2Zmc2V0KQogCiAg
ICAgSW50UG9pbnQgY29uc3RyYWluZWRPZmZzZXQgPSBvZmZzZXQ7CiAgICAgaWYgKGNvbnN0cmFp
bnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkpCi0gICAgICAgIGNvbnN0cmFpbmVkT2Zmc2V0ID0g
Y29uc3RyYWluZWRPZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKEludFBvaW50KCksIG1heGltdW1T
Y3JvbGxPZmZzZXQoKSk7CisgICAgICAgIGNvbnN0cmFpbmVkT2Zmc2V0ID0gY29uc3RyYWluZWRP
ZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKG1pbmltdW1TY3JvbGxPZmZzZXQoKSwgbWF4aW11bVNj
cm9sbE9mZnNldCgpKTsKIAogICAgIHNjcm9sbFRvKHNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChj
b25zdHJhaW5lZE9mZnNldCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCmluZGV4IGE2MzAxNWNiNTI0M2MxYTYwMWY5YzNmNjQ3MDI5ZTc5YzNiNmQ5NzIu
LmIwZTY5OWQ2MDZmMzk1ZTU0ODk1MWI1MzY1ZjdiMzI4ZjE0MGU1ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTI0MCw2ICsyNDAsOSBAQCB2b2lk
IFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzKGNvbnN0IFNjcm9s
bE9mZnNldCYgb2Zmc2V0KQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3NpdGlv
bkZyb21BbmltYXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQogeworICAgIGlm
IChwb3NpdGlvbiA9PSBzY3JvbGxQb3NpdGlvbigpKQorICAgICAgICByZXR1cm47CisKICAgICBh
dXRvIHNjcm9sbFR5cGUgPSBjdXJyZW50U2Nyb2xsVHlwZSgpOwogICAgIGF1dG8gY2xhbXBpbmcg
PSBzY3JvbGxUeXBlID09IFNjcm9sbFR5cGU6OlVzZXIgPyBTY3JvbGxDbGFtcGluZzo6VW5jbGFt
cGVkIDogU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQ7CiAgICAgaWYgKHJlcXVlc3RTY3JvbGxQb3Np
dGlvblVwZGF0ZShwb3NpdGlvbiwgc2Nyb2xsVHlwZSwgY2xhbXBpbmcpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggYzEwOTllYzM0MjU2Y2M4NTM3OTRkYmE5
YThkOWE0ZWYzYzhlODc5Mi4uNzg0M2UzMDNlNWEyM2Y2OWUwMTZkYWY5NGU5OWZjNDMwOTUyM2Vm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0yMjcsNiAr
MjI3LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsT2Zmc2V0IHNjcm9s
bE9mZnNldCgpIGNvbnN0OwogCisgICAgU2Nyb2xsT2Zmc2V0IG1pbmltdW1TY3JvbGxPZmZzZXQo
KSBjb25zdCB7IHJldHVybiB7IH07IH0KICAgICBTY3JvbGxPZmZzZXQgbWF4aW11bVNjcm9sbE9m
ZnNldCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gc2Nyb2xs
UG9zaXRpb25Gcm9tT2Zmc2V0KFNjcm9sbE9mZnNldCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggY2QzNWM4Mjc4ZWRl
YWZjNWM1NDIzYWQzY2EzY2NhZjU0MTU0YjcwZi4uOTViN2FlY2IxYjZhM2Q4OGQ2OTcxM2FiZDY5
MzYxYmI5YWRmMmRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQpAQCAtMjg2LDEwICsyODYsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9y
TWFjOjppbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogICAgIGlmIChu
ZXdQb3NpdGlvbiA9PSBjdXJyZW50UG9zaXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIEZs
b2F0U2l6ZSBhZGp1c3RlZERlbHRhID0gbmV3UG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb247Ci0g
ICAgbV9jdXJyZW50UG9zaXRpb24gPSBuZXdQb3NpdGlvbjsKLSAgICBub3RpZnlQb3NpdGlvbkNo
YW5nZWQoYWRqdXN0ZWREZWx0YSk7Ci0gICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9y
T2Zmc2V0KCk7CisgICAgc2V0Q3VycmVudFBvc2l0aW9uKG5ld1Bvc2l0aW9uLCBOb3RpZnlTY3Jv
bGxhYmxlQXJlYTo6WWVzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggYjBlZDQ0OTRh
YTVmZTBjZDg4N2FhMjRiOGYzZjJhMmU3MjI3MmI0ZC4uNzZhYzQ3ODRkOTgwZTU3NTI2MDNkODNi
MGFlYjk3MWNhZDI5ZTgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xs
UG9zaXRpb24mIHBvc2l0aW9uCiAKIFNjcm9sbE9mZnNldCBSZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhOjpjbGFtcFNjcm9sbE9mZnNldChjb25zdCBTY3JvbGxPZmZzZXQmIHNjcm9sbE9mZnNldCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihJbnRQ
b2ludCgpLCBtYXhpbXVtU2Nyb2xsT2Zmc2V0KCkpOworICAgIHJldHVybiBzY3JvbGxPZmZzZXQu
Y29uc3RyYWluZWRCZXR3ZWVuKG1pbmltdW1TY3JvbGxPZmZzZXQoKSwgbWF4aW11bVNjcm9sbE9m
ZnNldCgpKTsKIH0KIAogYm9vbCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpyZXF1ZXN0U2Ny
b2xsUG9zaXRpb25VcGRhdGUoY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uLCBTY3JvbGxU
eXBlIHNjcm9sbFR5cGUsIFNjcm9sbENsYW1waW5nIGNsYW1waW5nKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438598</attachid>
            <date>2021-09-19 10:10:43 -0700</date>
            <delta_ts>2021-09-19 12:15:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230450-20210919101042.patch</filename>
            <type>text/plain</type>
            <size>33272</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM2YWViOGNlZjgzMjIz
ZmViZTg0M2E3OWIwMjczMjE3ZWM4NzQ5OC4uYTk4Y2QxMTZiMTQ4NTljOWUxZDY3ZjVkYWU1Yzdl
ZDBjMzU5N2M5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIxLTA5LTE5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
QW5pbWF0aW9uIHdvcmsgaW4gdGVybXMgb2Ygb2Zmc2V0cywgbm90IHBvc2l0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBTY3JvbGwg
cG9zaXRpb25zIGNhbiBoYXZlIG5lZ2FnaXZlIHZhbHVlcyBpbiBSVEwgY29udGVudC4gSXQncyBz
aW1wbGVyIGZvciBTY3JvbGxBbmltYXRpb24KKyAgICAgICAgdG8gd29yayBvbiB6ZXJvLWJhc2Vk
IHNjcm9sbCBvZmZzZXRzLiBTY3JvbGxBbmltYXRvciBoYW5kbGVzIHRoZSBtYXBwaW5nIGZyb20g
dGhlc2UgdG8KKyAgICAgICAgU2Nyb2xsUG9zaXRpb25zLgorCisgICAgICAgIEFsc28gc2hhcmUg
YSBiaXQgb2Ygc2V0Q3VycmVudFBvc2l0aW9uKCkgY29kZS4gVGhpcyByZXF1aXJlZCBhZGRpbmcg
YW4gZWFybHkgcmV0dXJuIGluCisgICAgICAgIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3Np
dGlvbkZyb21BbmltYXRpb24oKSB0byBhdm9pZCByZS1lbnRyYW50IGNhbGxzIGR1cmluZyBzY3Jv
bGxpbmcKKyAgICAgICAgdHJlZSBjb21taXQsIHdoaWNoIHdvdWxkIGNhdXNlIGRlYWRsb2NrcyBv
biB0aGUgc2Nyb2xsaW5nIHRyZWUgbG9jaywgd2hpY2ggaGFwcGVuZWQgd2hlbiBhCisgICAgICAg
IFNjcm9sbEFuaW1hdGlvbiBzZXQgYSBmcmFjdGlvbmFsIG9mZnNldC4KKworICAgICAgICAqIHBs
YXRmb3JtL0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjo6c2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9tUG9zaXRp
b24gY29uc3QpOiBDbGFyaWZ5IG9mZnNldCB2cy4gcG9zaXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOjp1cGRhdGVLZXlib2FyZFNjcm9sbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I6OnNjcm9sbGFi
bGVEaXJlY3Rpb25zRnJvbU9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0Rh
dGE6OlBlckF4aXNEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0
aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlvblRp
bWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydEFuaW1hdGVkU2Nyb2xsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNjcm9s
bFRvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3Ro
OjpyZXRhcmdldEFjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRpb25TbW9vdGg6OnN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVNjcm9sbEV4dGVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRlU2Nyb2xsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmg6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Q
b3NpdGlvbldpdGhvdXRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yOjpvZmZzZXRGcm9tUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0b3I6OnBvc2l0aW9uRnJvbU9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6b2Zmc2V0RnJvbVBvc2l0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpwb3NpdGlvbkZyb21P
ZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzZXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3Np
dGlvbkZyb21BbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6bWluaW11bVNjcm9sbE9mZnNldCBj
b25zdCk6IG1pbmltdW1TY3JvbGxPZmZzZXQgaXMgYWx3YXlzIDAsMCBidXQgYWRkIHRoaXMgZnVu
Y3Rpb24gZm9yIHN5bW1ldHJ5LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjppbW1lZGlhdGVT
Y3JvbGxCeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6Y2xhbXBT
Y3JvbGxPZmZzZXQgY29uc3QpOgorCiAyMDIxLTA5LTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIGxvZ2dpbmcgbGVmdCBpbiBi
eSBtaXN0YWtlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNj
cm9sbGluZ0FuaW1hdG9yLmNwcAppbmRleCBkNjA3NzgxZTc5NTk1MDdhNWI4MTgzNzhhZWI3NGI3
ZDdlMmQ1YzBhLi5mZDhmMGZjOTNmN2IwYjAzN2ZmNzUwZjcxMzBmNDQyNWMxMWJkZjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLmNwcApAQCAtMzksMTcgKzM5LDE3IEBAIEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I6Oktl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoU2Nyb2xsQW5pbWF0b3ImIHNjcm9sbEFuaW1hCiB7CiB9
CiAKLVJlY3RFZGdlczxib29sPiBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yOjpzY3JvbGxhYmxl
RGlyZWN0aW9uc0Zyb21PZmZzZXQoRmxvYXRQb2ludCBvZmZzZXQpIGNvbnN0CitSZWN0RWRnZXM8
Ym9vbD4gS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcjo6c2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9t
UG9zaXRpb24oRmxvYXRQb2ludCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBhdXRvIG1pbmltdW1T
Y3JvbGxQb3NpdGlvbiA9IG1fc2Nyb2xsQW5pbWF0b3Iuc2Nyb2xsYWJsZUFyZWEoKS5taW5pbXVt
U2Nyb2xsUG9zaXRpb24oKTsKICAgICBhdXRvIG1heGltdW1TY3JvbGxQb3NpdGlvbiA9IG1fc2Ny
b2xsQW5pbWF0b3Iuc2Nyb2xsYWJsZUFyZWEoKS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKTsKIAog
ICAgIFJlY3RFZGdlczxib29sPiBlZGdlczsKIAotICAgIGVkZ2VzLnNldFRvcChvZmZzZXQueSgp
ID4gbWluaW11bVNjcm9sbFBvc2l0aW9uLnkoKSk7Ci0gICAgZWRnZXMuc2V0Qm90dG9tKG9mZnNl
dC55KCkgPCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpKTsKLSAgICBlZGdlcy5zZXRMZWZ0KG9m
ZnNldC54KCkgPiBtaW5pbXVtU2Nyb2xsUG9zaXRpb24ueCgpKTsKLSAgICBlZGdlcy5zZXRSaWdo
dChvZmZzZXQueCgpIDwgbWF4aW11bVNjcm9sbFBvc2l0aW9uLngoKSk7CisgICAgZWRnZXMuc2V0
VG9wKHBvc2l0aW9uLnkoKSA+IG1pbmltdW1TY3JvbGxQb3NpdGlvbi55KCkpOworICAgIGVkZ2Vz
LnNldEJvdHRvbShwb3NpdGlvbi55KCkgPCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpKTsKKyAg
ICBlZGdlcy5zZXRMZWZ0KHBvc2l0aW9uLngoKSA+IG1pbmltdW1TY3JvbGxQb3NpdGlvbi54KCkp
OworICAgIGVkZ2VzLnNldFJpZ2h0KHBvc2l0aW9uLngoKSA8IG1heGltdW1TY3JvbGxQb3NpdGlv
bi54KCkpOwogCiAgICAgcmV0dXJuIGVkZ2VzOwogfQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEtl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3I6OnVwZGF0ZUtleWJvYXJkU2Nyb2xsUG9zaXRpb24oTW9u
b3RvbmljVGltZSBjdXJyZQogICAgIEtleWJvYXJkU2Nyb2xsUGFyYW1ldGVycyBwYXJhbXMgPSBL
ZXlib2FyZFNjcm9sbFBhcmFtZXRlcnM6OnBhcmFtZXRlcnMoKTsKIAogICAgIGlmIChtX2N1cnJl
bnRLZXlib2FyZFNjcm9sbCkgewotICAgICAgICBhdXRvIHNjcm9sbGFibGVEaXJlY3Rpb25zID0g
c2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9tT2Zmc2V0KG1fc2Nyb2xsQW5pbWF0b3IuY3VycmVudFBv
c2l0aW9uKCkpOworICAgICAgICBhdXRvIHNjcm9sbGFibGVEaXJlY3Rpb25zID0gc2Nyb2xsYWJs
ZURpcmVjdGlvbnNGcm9tUG9zaXRpb24obV9zY3JvbGxBbmltYXRvci5jdXJyZW50UG9zaXRpb24o
KSk7CiAgICAgICAgIGF1dG8gZGlyZWN0aW9uID0gbV9jdXJyZW50S2V5Ym9hcmRTY3JvbGwtPmRp
cmVjdGlvbjsKIAogICAgICAgICBpZiAoc2Nyb2xsYWJsZURpcmVjdGlvbnMuYXQoYm94U2lkZUZv
ckRpcmVjdGlvbihkaXJlY3Rpb24pKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5oCmluZGV4IGQzZTZkNGQ4Yjk4MjgyODdhZGNj
MGYxNDY5Yzg0NzFiOTNhMmU4ZTkuLjNjOTgxNGZmODk4YThkNWI1NmJmYTY4OTI1ODk3ODc0N2Ji
ODExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWJvYXJkU2Nyb2xs
aW5nQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXlib2FyZFNjcm9s
bGluZ0FuaW1hdG9yLmgKQEAgLTI1LDggKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiS2V5Ym9hcmRTY3JvbGwuaCIKKyNpbmNs
dWRlICJLZXlib2FyZEV2ZW50LmgiIC8vIEZJWE1FOiBUaGlzIGlzIGEgbGF5ZXJpbmcgdmlvbGF0
aW9uLgorI2luY2x1ZGUgIktleWJvYXJkU2Nyb2xsLmgiIC8vIEZJWE1FOiBUaGlzIGlzIGEgbGF5
ZXJpbmcgdmlvbGF0aW9uLgogI2luY2x1ZGUgIlJlY3RFZGdlcy5oIgogI2luY2x1ZGUgIlNjcm9s
bEFuaW1hdG9yLmgiCiAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IHZvaWQgc3RvcEtleWJvYXJkU2Nyb2xsQW5pbWF0aW9uKCk7Ci0gICAgUmVjdEVkZ2VzPGJvb2w+
IHNjcm9sbGFibGVEaXJlY3Rpb25zRnJvbU9mZnNldChGbG9hdFBvaW50KSBjb25zdDsKKyAgICBS
ZWN0RWRnZXM8Ym9vbD4gc2Nyb2xsYWJsZURpcmVjdGlvbnNGcm9tUG9zaXRpb24oRmxvYXRQb2lu
dCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDxLZXlib2FyZFNjcm9sbD4ga2V5Ym9hcmRTY3Jv
bGxGb3JLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmKSBjb25zdDsKICAgICBmbG9hdCBzY3Jv
bGxEaXN0YW5jZShTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAppbmRleCAyMTZlM2IwOTNm
MzNhMzFjOGE5NTQ0Y2M3ZWY2M2IzZjg3YzBkZTlmLi5jODZjZjdmZmUxODRhNGUxYTFhZDMwM2Y3
YTc0ZmJiMGE5ZjUxOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b24uaApAQCAtMzUsOCArMzUsOCBAQCBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgU2Nyb2xsQW5p
bWF0aW9uOwogCiBzdHJ1Y3QgU2Nyb2xsRXh0ZW50cyB7Ci0gICAgU2Nyb2xsUG9zaXRpb24gbWlu
aW11bVNjcm9sbFBvc2l0aW9uOwotICAgIFNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3Np
dGlvbjsKKyAgICBTY3JvbGxPZmZzZXQgbWluaW11bVNjcm9sbE9mZnNldDsKKyAgICBTY3JvbGxP
ZmZzZXQgbWF4aW11bVNjcm9sbE9mZnNldDsKICAgICBJbnRTaXplIHZpc2libGVTaXplOwogfTsK
IApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTY3JvbGxBbmltYXRpb25DbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbkNsaWVudCgpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwg
Y29uc3QgRmxvYXRQb2ludCYgY3VycmVudFBvc2l0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBv
aW50JiBjdXJyZW50T2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbEFuaW1hdGlv
bkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCBTY3JvbGxFeHRlbnRz
IHNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgPSAwOwogfTsKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHsgfQogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1h
dGlvbigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgYm9vbCByZXRhcmdldEFjdGl2ZUFuaW1h
dGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5h
dGlvbk9mZnNldCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Ny
b2xsRXh0ZW50cygpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uS2luZXRpYy5jcHAKaW5kZXggMGM1Mjk3NDQ1ZmRlODg0MDM2ZjU0N2ExZmNmNGYw
MWM3MmRkMGE5Ni4uODdmYmE5MmU2ZGUyYWFlMDJjM2U3YjljYWI2MjBjMGRiNTk5NGMxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5j
cHAKQEAgLTc3LDM2ICs3NywzNiBAQCBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc2Nyb2xsQ2Fw
dHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcm9s
bEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNEYXRhOjpQZXJBeGlzRGF0YShkb3VibGUgbG93ZXIs
IGRvdWJsZSB1cHBlciwgZG91YmxlIGluaXRpYWxQb3NpdGlvbiwgZG91YmxlIGluaXRpYWxWZWxv
Y2l0eSkKK1Njcm9sbEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNEYXRhOjpQZXJBeGlzRGF0YShk
b3VibGUgbG93ZXIsIGRvdWJsZSB1cHBlciwgZG91YmxlIGluaXRpYWxPZmZzZXQsIGRvdWJsZSBp
bml0aWFsVmVsb2NpdHkpCiAgICAgOiBtX2xvd2VyKGxvd2VyKQogICAgICwgbV91cHBlcih1cHBl
cikKLSAgICAsIG1fY29lZjEoaW5pdGlhbFZlbG9jaXR5IC8gZGVjZWxGcmljdGlvbiArIGluaXRp
YWxQb3NpdGlvbikKKyAgICAsIG1fY29lZjEoaW5pdGlhbFZlbG9jaXR5IC8gZGVjZWxGcmljdGlv
biArIGluaXRpYWxPZmZzZXQpCiAgICAgLCBtX2NvZWYyKC1pbml0aWFsVmVsb2NpdHkgLyBkZWNl
bEZyaWN0aW9uKQotICAgICwgbV9wb3NpdGlvbihjbGFtcFRvKGluaXRpYWxQb3NpdGlvbiwgbG93
ZXIsIHVwcGVyKSkKLSAgICAsIG1fdmVsb2NpdHkoaW5pdGlhbFBvc2l0aW9uIDwgbG93ZXIgfHwg
aW5pdGlhbFBvc2l0aW9uID4gdXBwZXIgPyAwIDogaW5pdGlhbFZlbG9jaXR5KQorICAgICwgbV9v
ZmZzZXQoY2xhbXBUbyhpbml0aWFsT2Zmc2V0LCBsb3dlciwgdXBwZXIpKQorICAgICwgbV92ZWxv
Y2l0eShpbml0aWFsT2Zmc2V0IDwgbG93ZXIgfHwgaW5pdGlhbE9mZnNldCA+IHVwcGVyID8gMCA6
IGluaXRpYWxWZWxvY2l0eSkKIHsKIH0KIAogYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQ
ZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNvbmRzIHRpbWVEZWx0YSkKIHsKLSAgICBhdXRv
IGxhc3RQb3NpdGlvbiA9IG1fcG9zaXRpb247CisgICAgYXV0byBsYXN0T2Zmc2V0ID0gbV9vZmZz
ZXQ7CiAgICAgYXV0byBsYXN0VGltZSA9IG1fZWxhcHNlZFRpbWU7CiAgICAgbV9lbGFwc2VkVGlt
ZSArPSB0aW1lRGVsdGE7CiAKICAgICBkb3VibGUgZXhwb25lbnRpYWxQYXJ0ID0gZXhwKC1kZWNl
bEZyaWN0aW9uICogbV9lbGFwc2VkVGltZS52YWx1ZSgpKTsKLSAgICBtX3Bvc2l0aW9uID0gbV9j
b2VmMSArIG1fY29lZjIgKiBleHBvbmVudGlhbFBhcnQ7CisgICAgbV9vZmZzZXQgPSBtX2NvZWYx
ICsgbV9jb2VmMiAqIGV4cG9uZW50aWFsUGFydDsKICAgICBtX3ZlbG9jaXR5ID0gLWRlY2VsRnJp
Y3Rpb24gKiBtX2NvZWYyICogZXhwb25lbnRpYWxQYXJ0OwogCi0gICAgaWYgKG1fcG9zaXRpb24g
PCBtX2xvd2VyKSB7Ci0gICAgICAgIG1fdmVsb2NpdHkgPSBtX2xvd2VyIC0gbV9wb3NpdGlvbjsK
LSAgICAgICAgbV9wb3NpdGlvbiA9IG1fbG93ZXI7Ci0gICAgfSBlbHNlIGlmIChtX3Bvc2l0aW9u
ID4gbV91cHBlcikgewotICAgICAgICBtX3ZlbG9jaXR5ID0gbV91cHBlciAtIG1fcG9zaXRpb247
Ci0gICAgICAgIG1fcG9zaXRpb24gPSBtX3VwcGVyOworICAgIGlmIChtX29mZnNldCA8IG1fbG93
ZXIpIHsKKyAgICAgICAgbV92ZWxvY2l0eSA9IG1fbG93ZXIgLSBtX29mZnNldDsKKyAgICAgICAg
bV9vZmZzZXQgPSBtX2xvd2VyOworICAgIH0gZWxzZSBpZiAobV9vZmZzZXQgPiBtX3VwcGVyKSB7
CisgICAgICAgIG1fdmVsb2NpdHkgPSBtX3VwcGVyIC0gbV9vZmZzZXQ7CisgICAgICAgIG1fb2Zm
c2V0ID0gbV91cHBlcjsKICAgICB9CiAKLSAgICBpZiAoZmFicyhtX3ZlbG9jaXR5KSA8IDEgfHwg
KGxhc3RUaW1lICYmIGZhYnMobV9wb3NpdGlvbiAtIGxhc3RQb3NpdGlvbikgPCAxKSkgewotICAg
ICAgICBtX3Bvc2l0aW9uID0gcm91bmQobV9wb3NpdGlvbik7CisgICAgaWYgKGZhYnMobV92ZWxv
Y2l0eSkgPCAxIHx8IChsYXN0VGltZSAmJiBmYWJzKG1fb2Zmc2V0IC0gbGFzdE9mZnNldCkgPCAx
KSkgeworICAgICAgICBtX29mZnNldCA9IHJvdW5kKG1fb2Zmc2V0KTsKICAgICAgICAgbV92ZWxv
Y2l0eSA9IDA7CiAgICAgfQogCkBAIC0xNjksMTIgKzE2OSwxMiBAQCBGbG9hdFBvaW50IFNjcm9s
bEFuaW1hdGlvbktpbmV0aWM6OmNvbXB1dGVWZWxvY2l0eSgpCiAgICAgcmV0dXJuIEZsb2F0UG9p
bnQoYWNjdW1EZWx0YS54KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCksIGFjY3VtRGVs
dGEueSgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52YWx1ZSgpKTsKIH0KIAotYm9vbCBTY3JvbGxB
bmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9j
aXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKK2Jvb2wgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJv
b2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKQogewogICAgIHN0b3AoKTsKIAogICAgIGlm
ICghdmVsb2NpdHkueCgpICYmICF2ZWxvY2l0eS55KCkpIHsKLSAgICAgICAgbV9wb3NpdGlvbiA9
IGluaXRpYWxQb3NpdGlvbjsKKyAgICAgICAgbV9vZmZzZXQgPSBpbml0aWFsT2Zmc2V0OwogICAg
ICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3ZlcnRpY2Fs
RGF0YSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk5LDIwICsx
OTksMjAgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xs
V2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFAKICAgICB9OwogCiAgICAgaWYgKG1heUhT
Y3JvbGwpIHsKLSAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMu
bWluaW11bVNjcm9sbFBvc2l0aW9uLngoKSwKLSAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNj
cm9sbFBvc2l0aW9uLngoKSwKLSAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi54KCksIGFjY3Vt
dWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS54KCksIG1faG9yaXpvbnRhbERhdGEpKTsKKyAgICAgICAg
bV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNl
dC54KCksCisgICAgICAgICAgICBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQueCgpLAorICAg
ICAgICAgICAgaW5pdGlhbE9mZnNldC54KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS54
KCksIG1faG9yaXpvbnRhbERhdGEpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9ob3Jpem9udGFs
RGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtYXlWU2Nyb2xsKSB7Ci0gICAgICAgIG1f
dmVydGljYWxEYXRhID0gUGVyQXhpc0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsUG9zaXRpb24u
eSgpLAotICAgICAgICAgICAgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueSgpLAotICAg
ICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnkoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5
LnkoKSwgbV92ZXJ0aWNhbERhdGEpKTsKKyAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlz
RGF0YShleHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQueSgpLAorICAgICAgICAgICAgZXh0ZW50
cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0LnkoKSwKKyAgICAgICAgICAgIGluaXRpYWxPZmZzZXQueSgp
LCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueSgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAg
IH0gZWxzZQogICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIG1f
cG9zaXRpb24gPSBpbml0aWFsUG9zaXRpb247CisgICAgbV9vZmZzZXQgPSBpbml0aWFsT2Zmc2V0
OwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSB0aWNrVGltZSAvIDIu
OwogICAgIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI0MSwx
MCArMjQxLDEwIEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9uVGltZXJG
aXJlZCgpCiAgICAgaWYgKG1faG9yaXpvbnRhbERhdGEgfHwgbV92ZXJ0aWNhbERhdGEpCiAgICAg
ICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6bWF4KG1pbmltdW1UaW1lcklu
dGVydmFsLCBkZWx0YSkpOwogCi0gICAgZG91YmxlIHggPSBtX2hvcml6b250YWxEYXRhID8gbV9o
b3Jpem9udGFsRGF0YS52YWx1ZSgpLnBvc2l0aW9uKCkgOiBtX3Bvc2l0aW9uLngoKTsKLSAgICBk
b3VibGUgeSA9IG1fdmVydGljYWxEYXRhID8gbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5wb3NpdGlv
bigpIDogbV9wb3NpdGlvbi55KCk7Ci0gICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQoeCwgeSk7
Ci0gICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBGbG9hdFBvaW50
KG1fcG9zaXRpb24pKTsKKyAgICBkb3VibGUgeCA9IG1faG9yaXpvbnRhbERhdGEgPyBtX2hvcml6
b250YWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX29mZnNldC54KCk7CisgICAgZG91YmxlIHkg
PSBtX3ZlcnRpY2FsRGF0YSA/IG1fdmVydGljYWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX29m
ZnNldC55KCk7CisgICAgbV9vZmZzZXQgPSBGbG9hdFBvaW50KHgsIHkpOworICAgIG1fY2xpZW50
LnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9vZmZzZXQpOwogfQogCiBTZWNvbmRz
IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmRlbHRhVG9OZXh0RnJhbWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCmluZGV4IDYwNTMzZTM5
NjIyMmI2Y2IxOWZlMGE0ZjVmMTBkOGYwN2U1ZmIxMTUuLjYyYTc0NjFhZWE1YjA0NmUwZjYxYjg0
MGRiMTMyMzMzYTZjNTI2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25LaW5ldGljLmgKQEAgLTM4LDkgKzM4LDkgQEAgY2xhc3MgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxBbmltYXRpb24gewogcHJpdmF0ZToKICAg
ICBjbGFzcyBQZXJBeGlzRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQZXJBeGlzRGF0YShk
b3VibGUgbG93ZXIsIGRvdWJsZSB1cHBlciwgZG91YmxlIGluaXRpYWxQb3NpdGlvbiwgZG91Ymxl
IGluaXRpYWxWZWxvY2l0eSk7CisgICAgICAgIFBlckF4aXNEYXRhKGRvdWJsZSBsb3dlciwgZG91
YmxlIHVwcGVyLCBkb3VibGUgaW5pdGlhbE9mZnNldCwgZG91YmxlIGluaXRpYWxWZWxvY2l0eSk7
CiAKLSAgICAgICAgZG91YmxlIHBvc2l0aW9uKCkgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAg
ICAgICBkb3VibGUgb2Zmc2V0KCkgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAgICAgZG91Ymxl
IHZlbG9jaXR5KCkgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQogCiAgICAgICAgIGJvb2wgYW5pbWF0
ZVNjcm9sbChTZWNvbmRzIHRpbWVEZWx0YSk7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGRvdWJsZSBtX2NvZWYyIHsgMCB9OwogCiAgICAgICAgIFNlY29uZHMgbV9lbGFwc2Vk
VGltZTsKLSAgICAgICAgZG91YmxlIG1fcG9zaXRpb24geyAwIH07CisgICAgICAgIGRvdWJsZSBt
X29mZnNldCB7IDAgfTsKICAgICAgICAgZG91YmxlIG1fdmVsb2NpdHkgeyAwIH07CiAgICAgfTsK
IApAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhT
Y3JvbGxBbmltYXRpb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25LaW5l
dGljKCk7CiAKLSAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5
KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgdmVs
b2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKTsKKyAgICBib29sIHN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJv
b2wgbWF5VlNjcm9sbCk7CiAKLSAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSBmaW5hbDsKKyAgICBib29sIHJldGFyZ2V0QWN0
aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7CiAgICAgdm9p
ZCBzdG9wKCkgZmluYWw7CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFsOwogCkBAIC04
MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwog
ICAgIFJ1bkxvb3A6OlRpbWVyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fYW5pbWF0aW9uVGlt
ZXI7Ci0gICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQgbV9vZmZzZXQ7
CiAgICAgVmVjdG9yPFBsYXRmb3JtV2hlZWxFdmVudD4gbV9zY3JvbGxIaXN0b3J5OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3Ro
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAK
aW5kZXggODQ5OTIyMjM2ZTJjODRkYTQ1ZTlmYTcyNDljOGYwNWNkMmZiOTE3Ni4uNmUyOTc1MTlk
ODRkZDU0ZWJlYjUzNTIzNTNiMDNjNmQyNGU1MGI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC01NCw0NyArNTQsNDcgQEAg
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsQW5pbWF0
aW9uQ2xpZW50JiBjbGllbnQpCiAKIFNjcm9sbEFuaW1hdGlvblNtb290aDo6flNjcm9sbEFuaW1h
dGlvblNtb290aCgpID0gZGVmYXVsdDsKIAotYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0
YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAs
IGZsb2F0IG11bHRpcGxpZXIpCitib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmlt
YXRlZFNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHksIGNvbnN0IEZsb2F0UG9pbnQmIGZyb21PZmZzZXQsIGZsb2F0IHN0ZXAsIGZsb2F0IG11
bHRpcGxpZXIpCiB7Ci0gICAgbV9zdGFydFBvc2l0aW9uID0gZnJvbVBvc2l0aW9uOwotICAgIGF1
dG8gZGVzdGluYXRpb25Qb3NpdGlvbiA9IGZyb21Qb3NpdGlvbjsKKyAgICBtX3N0YXJ0T2Zmc2V0
ID0gZnJvbU9mZnNldDsKKyAgICBhdXRvIGRlc3RpbmF0aW9uT2Zmc2V0ID0gZnJvbU9mZnNldDsK
ICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CiAgICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsYmFy
OgotICAgICAgICBkZXN0aW5hdGlvblBvc2l0aW9uLnNldFgoZGVzdGluYXRpb25Qb3NpdGlvbi54
KCkgKyBzdGVwICogbXVsdGlwbGllcik7CisgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0LnNldFgo
ZGVzdGluYXRpb25PZmZzZXQueCgpICsgc3RlcCAqIG11bHRpcGxpZXIpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsYmFyOgotICAgICAgICBkZXN0aW5hdGlvblBvc2l0
aW9uLnNldFkoZGVzdGluYXRpb25Qb3NpdGlvbi55KCkgKyBzdGVwICogbXVsdGlwbGllcik7Cisg
ICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0LnNldFkoZGVzdGluYXRpb25PZmZzZXQueSgpICsgc3Rl
cCAqIG11bHRpcGxpZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBtX2R1cmF0aW9u
ID0gZHVyYXRpb25Gcm9tRGlzdGFuY2UoZGVzdGluYXRpb25Qb3NpdGlvbiAtIG1fc3RhcnRQb3Np
dGlvbik7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uRnJvbURpc3RhbmNlKGRlc3RpbmF0aW9u
T2Zmc2V0IC0gbV9zdGFydE9mZnNldCk7CiAKICAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5z
Y3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAgICByZXR1cm4gc3RhcnRPclJldGFy
Z2V0QW5pbWF0aW9uKGV4dGVudHMsIGRlc3RpbmF0aW9uUG9zaXRpb24pOworICAgIHJldHVybiBz
dGFydE9yUmV0YXJnZXRBbmltYXRpb24oZXh0ZW50cywgZGVzdGluYXRpb25PZmZzZXQpOwogfQog
Ci1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGlu
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBk
ZXN0aW5hdGlvblBvc2l0aW9uKQorYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0QW5p
bWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21PZmZzZXQsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIG1fc3RhcnRQb3NpdGlv
biA9IGZyb21Qb3NpdGlvbjsKLSAgICBtX2R1cmF0aW9uID0gZHVyYXRpb25Gcm9tRGlzdGFuY2Uo
ZGVzdGluYXRpb25Qb3NpdGlvbiAtIG1fc3RhcnRQb3NpdGlvbik7CisgICAgbV9zdGFydE9mZnNl
dCA9IGZyb21PZmZzZXQ7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uRnJvbURpc3RhbmNlKGRl
c3RpbmF0aW9uT2Zmc2V0IC0gbV9zdGFydE9mZnNldCk7CiAKICAgICBhdXRvIGV4dGVudHMgPSBt
X2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAgICByZXR1cm4gc3Rh
cnRPclJldGFyZ2V0QW5pbWF0aW9uKGV4dGVudHMsIGRlc3RpbmF0aW9uUG9zaXRpb24pOworICAg
IHJldHVybiBzdGFydE9yUmV0YXJnZXRBbmltYXRpb24oZXh0ZW50cywgZGVzdGluYXRpb25PZmZz
ZXQpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6cmV0YXJnZXRBY3RpdmVBbmlt
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRpb24pCitib29sIFNjcm9sbEFuaW1h
dGlvblNtb290aDo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3
T2Zmc2V0KQogewogICAgIGlmICghaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbigq
dGhpcyk7Ci0gICAgcmV0dXJuIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihleHRlbnRzLCBuZXdE
ZXN0aW5hdGlvbik7CisgICAgcmV0dXJuIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihleHRlbnRz
LCBuZXdPZmZzZXQpOwogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRPclJl
dGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uUG9zaXRpb24pCitib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6
c3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIG1fZGVzdGluYXRpb25Q
b3NpdGlvbiA9IGRlc3RpbmF0aW9uUG9zaXRpb24uY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMu
bWluaW11bVNjcm9sbFBvc2l0aW9uLCBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlvbik7Ci0g
ICAgYm9vbCBuZWVkVG9TY3JvbGwgPSBtX3N0YXJ0UG9zaXRpb24gIT0gbV9kZXN0aW5hdGlvblBv
c2l0aW9uOworICAgIG1fZGVzdGluYXRpb25PZmZzZXQgPSBkZXN0aW5hdGlvbk9mZnNldC5jb25z
dHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0LCBleHRlbnRzLm1heGlt
dW1TY3JvbGxPZmZzZXQpOworICAgIGJvb2wgbmVlZFRvU2Nyb2xsID0gbV9zdGFydE9mZnNldCAh
PSBtX2Rlc3RpbmF0aW9uT2Zmc2V0OwogCiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhaXNBY3Rp
dmUoKSkgewogICAgICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpAQCAt
MTEyLDggKzExMiw4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9wKCkKIHZvaWQg
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjp1cGRhdGVTY3JvbGxFeHRlbnRzKCkKIHsKICAgICBhdXRv
IGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsKLSAg
ICAvLyBGSVhNRTogSWRlYWxseSBmaXggdXAgbV9zdGFydFBvc2l0aW9uIHNvIG1fY3VycmVudFBv
c2l0aW9uIGRvZXNuJ3QgZ28gYmFja3dhcmRzLgotICAgIG1fZGVzdGluYXRpb25Qb3NpdGlvbiA9
IG1fZGVzdGluYXRpb25Qb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVt
U2Nyb2xsUG9zaXRpb24sIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9uKTsKKyAgICAvLyBG
SVhNRTogSWRlYWxseSBmaXggdXAgbV9zdGFydE9mZnNldCBzbyBtX2N1cnJlbnRPZmZzZXQgZG9l
c24ndCBnbyBiYWNrd2FyZHMuCisgICAgbV9kZXN0aW5hdGlvbk9mZnNldCA9IG1fZGVzdGluYXRp
b25PZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCwg
ZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KTsKIH0KIAogU2Vjb25kcyBTY3JvbGxBbmltYXRp
b25TbW9vdGg6OmR1cmF0aW9uRnJvbURpc3RhbmNlKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIGNv
bnN0CkBAIC0xMzUsOSArMTM1LDkgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1h
dGVTY3JvbGwoTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkKICAgICBkb3VibGUgZnJhY3Rpb25D
b21wbGV0ZSA9IChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKSAvIG1fZHVyYXRpb247CiAgICAg
ZG91YmxlIHByb2dyZXNzID0gbV9lYXNlSW5PdXRUaW1pbmdGdW5jdGlvbi0+dHJhbnNmb3JtVGlt
ZShmcmFjdGlvbkNvbXBsZXRlLCBtX2R1cmF0aW9uLnZhbHVlKCkpOwogCi0gICAgbV9jdXJyZW50
UG9zaXRpb24gPSB7Ci0gICAgICAgIGxpbmVhckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1fc3Rh
cnRQb3NpdGlvbi54KCksIG1fZGVzdGluYXRpb25Qb3NpdGlvbi54KCkpLAotICAgICAgICBsaW5l
YXJJbnRlcnBvbGF0aW9uKHByb2dyZXNzLCBtX3N0YXJ0UG9zaXRpb24ueSgpLCBtX2Rlc3RpbmF0
aW9uUG9zaXRpb24ueSgpKSwKKyAgICBtX2N1cnJlbnRPZmZzZXQgPSB7CisgICAgICAgIGxpbmVh
ckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1fc3RhcnRPZmZzZXQueCgpLCBtX2Rlc3RpbmF0aW9u
T2Zmc2V0LngoKSksCisgICAgICAgIGxpbmVhckludGVycG9sYXRpb24ocHJvZ3Jlc3MsIG1fc3Rh
cnRPZmZzZXQueSgpLCBtX2Rlc3RpbmF0aW9uT2Zmc2V0LnkoKSksCiAgICAgfTsKIAogICAgIHJl
dHVybiBjdXJyZW50VGltZSA8IGVuZFRpbWU7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogICAgIGlmIChjb250aW51
ZUFuaW1hdGlvbikKICAgICAgICAgc3RhcnROZXh0VGltZXIoc3RkOjptYXgobWluaW11bVRpbWVy
SW50ZXJ2YWwsIGRlbHRhVG9OZXh0RnJhbWUpKTsKIAotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1h
dGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50UG9zaXRpb24pOworICAgIG1fY2xpZW50LnNj
cm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50T2Zmc2V0KTsKICAgICBpZiAo
IWNvbnRpbnVlQW5pbWF0aW9uKQogICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRF
bmQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaAppbmRleCBjZTBlY2VhMDFmZDFlZDc5YjMzNzVjZDUwYzc3ZDhmZGNlNGJmNjY0
Li4xMzM3ZGZlZmE3Y2QwMmYzMzQ4OTljZDRlNmM5MDE5YmNmMjY3MjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaApAQCAtNDAsMTcgKzQw
LDE3IEBAIHB1YmxpYzoKICAgICBTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Nyb2xsQW5pbWF0aW9u
Q2xpZW50Jik7CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CiAKLSAgICBi
b29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51
bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tUG9zaXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0
IG11bHRpcGxpZXIpOwotICAgIGJvb2wgc3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgZnJvbVBvc2l0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5h
dGlvblBvc2l0aW9uKTsKKyAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGwoU2Nyb2xsYmFyT3Jp
ZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBjb25zdCBGbG9hdFBvaW50JiBmcm9tT2Zmc2V0
LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKKyAgICBib29sIHN0YXJ0QW5pbWF0ZWRT
Y3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21PZmZzZXQsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKIAotICAgIGJvb2wgcmV0YXJnZXRBY3RpdmVB
bmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRpb24pIGZpbmFsOworICAgIGJv
b2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3T2Zmc2V0KSBm
aW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVu
dHMoKSBmaW5hbDsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKIAogcHJpdmF0
ZToKLSAgICBib29sIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihjb25zdCBTY3JvbGxFeHRlbnRz
JiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24pOworICAgIGJvb2wgc3RhcnRPclJldGFy
Z2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbk9mZnNldCk7CiAKICAgICB2b2lkIHJlcXVlc3RBbmltYXRpb25UaW1lckZpcmVkKCk7
CiAgICAgdm9pZCBzdGFydE5leHRUaW1lcihTZWNvbmRzIGRlbGF5KTsKQEAgLTYzLDkgKzYzLDkg
QEAgcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwogICAgIFNlY29uZHMg
bV9kdXJhdGlvbjsKIAotICAgIEZsb2F0UG9pbnQgbV9zdGFydFBvc2l0aW9uOwotICAgIEZsb2F0
UG9pbnQgbV9kZXN0aW5hdGlvblBvc2l0aW9uOwotICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50UG9z
aXRpb247CisgICAgRmxvYXRQb2ludCBtX3N0YXJ0T2Zmc2V0OworICAgIEZsb2F0UG9pbnQgbV9k
ZXN0aW5hdGlvbk9mZnNldDsKKyAgICBGbG9hdFBvaW50IG1fY3VycmVudE9mZnNldDsKICAgICAK
ICAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBoYXZlIHRpbWVyIGhlcmUsIGFuZCBpbnN0ZWFkIHVz
ZSBzZXJ2aWNlQW5pbWF0aW9uKCkuCiAgICAgUnVuTG9vcDo6VGltZXI8U2Nyb2xsQW5pbWF0aW9u
U21vb3RoPiBtX2FuaW1hdGlvblRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuY3BwCmluZGV4IDEwMDdhYjE0M2I4MDZiYmJjZTY1MmM0NjUzYmU0OTAyNTBiNjcw
MmEuLjViMTU1NjYwZWY4ZGU1Yjk0NWY2YTQ5YTBlZWE2N2U1ZGE4OTNkNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgYm9v
bCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
LCBTY3JvbGxHcmFudWxhcml0eQogCiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1h
dG9yRW5hYmxlZCgpICYmIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCkgJiYgIWJlaGF2
aW9yLmNvbnRhaW5zKFNjcm9sbEJlaGF2aW9yOjpOZXZlckFuaW1hdGUpKQotICAgICAgICByZXR1
cm4gbV9zY3JvbGxBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGwob3JpZW50YXRpb24sIGdy
YW51bGFyaXR5LCBtX2N1cnJlbnRQb3NpdGlvbiwgc3RlcCwgbXVsdGlwbGllcik7CisgICAgICAg
IHJldHVybiBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbChvcmllbnRhdGlv
biwgZ3JhbnVsYXJpdHksIG9mZnNldEZyb21Qb3NpdGlvbihtX2N1cnJlbnRQb3NpdGlvbiksIHN0
ZXAsIG11bHRpcGxpZXIpOwogI2VuZGlmCiAKICAgICByZXR1cm4gc2Nyb2xsVG9Qb3NpdGlvbldp
dGhvdXRBbmltYXRpb24oY3VycmVudFBvc2l0aW9uKCkgKyBkZWx0YSk7CkBAIC0xMDYsOSArMTA2
LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Qb3NpdGlvbldpdGhvdXRBbmltYXRp
b24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24KIAogICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5z
dG9wKCk7CiAKLSAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IGFkanVzdGVkUG9zaXRpb247Ci0gICAg
bm90aWZ5UG9zaXRpb25DaGFuZ2VkKGFkanVzdGVkUG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb24p
OwotICAgIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9mZnNldCgpOworICAgIHNldEN1
cnJlbnRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uLCBOb3RpZnlTY3JvbGxhYmxlQXJlYTo6WWVz
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTE4LDcgKzExNiw3IEBAIGJvb2wgU2Nyb2xs
QW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IG5ld1Bvc2l0aW9uCiAgICAgaWYgKCFwb3NpdGlvbkNoYW5nZWQgJiYgIXNjcm9sbGFibGVBcmVh
KCkuc2Nyb2xsT3JpZ2luQ2hhbmdlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBt
X3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24obV9jdXJy
ZW50UG9zaXRpb24sIG5ld1Bvc2l0aW9uKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbi0+c3RhcnRB
bmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24ob2Zmc2V0RnJvbVBvc2l0aW9uKG1fY3VycmVudFBv
c2l0aW9uKSwgb2Zmc2V0RnJvbVBvc2l0aW9uKG5ld1Bvc2l0aW9uKSk7CiAgICAgc2Nyb2xsYWJs
ZUFyZWEoKS5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6SW5O
b25OYXRpdmVBbmltYXRpb24pOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTMwLDEyICsxMjgs
MTIgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6cmV0YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQogICAgIG1fc2Nyb2xsQW5pbWF0aW9uLT5yZXRhcmdl
dEFjdGl2ZUFuaW1hdGlvbihuZXdQb3NpdGlvbik7CiB9CiAKLUZsb2F0UG9pbnQgU2Nyb2xsQW5p
bWF0b3I6Om9mZnNldEZyb21Qb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK0Zs
b2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Om9mZnNldEZyb21Qb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbikgY29uc3QKIHsKICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9s
bE9mZnNldEZyb21Qb3NpdGlvbihwb3NpdGlvbiwgdG9GbG9hdFNpemUobV9zY3JvbGxhYmxlQXJl
YS5zY3JvbGxPcmlnaW4oKSkpOwogfQogCi1GbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjpwb3Np
dGlvbkZyb21PZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgb2Zmc2V0KQorRmxvYXRQb2ludCBTY3Jv
bGxBbmltYXRvcjo6cG9zaXRpb25Gcm9tT2Zmc2V0KGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCkg
Y29uc3QKIHsKICAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFBvc2l0aW9uRnJvbU9m
ZnNldChvZmZzZXQsIHRvRmxvYXRTaXplKG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT3JpZ2luKCkp
KTsKIH0KQEAgLTIzNyw5ICsyMzUsMTYgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKQogfQogI2VuZGlmCiAKLXZvaWQgU2Ny
b2xsQW5pbWF0b3I6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
bikKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbiwgTm90aWZ5U2Nyb2xsYWJsZUFyZWEgbm90aWZ5KQogeworICAgIC8vIEZJ
WE1FOiBBbiBlYXJseSByZXR1cm4gaGVyZSBpZiB0aGUgcG9zaXRpb24gaXMgbm90IGNoYW5naW5n
IHRyaWdnZXJzIHRlc3QgZmFpbHVyZXMgYmVjYXVzZSBvZiBhZGp1c3RGb3JJT1NDYXJldFdoZW5T
Y3JvbGxpbmcoKQorICAgIC8vIGNvZGUgaW4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS4gV2Ug
Y2FuIGVhcmx5IHJldHVybiB3aGVuIHdlYmtpdC5vcmcvYi8yMzA0NTQgaXMgZml4ZWQuCisgICAg
YXV0byBkZWx0YSA9IHBvc2l0aW9uIC0gbV9jdXJyZW50UG9zaXRpb247CiAgICAgbV9jdXJyZW50
UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAKKyAgICBpZiAobm90aWZ5ID09IE5vdGlmeVNjcm9s
bGFibGVBcmVhOjpZZXMpCisgICAgICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7Cisg
ICAgCiAgICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CiB9CiAKQEAg
LTI1MSw3ICsyNTYsOCBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjp1cGRhdGVBY3RpdmVTY3JvbGxT
bmFwSW5kZXhGb3JPZmZzZXQoKQogdm9pZCBTY3JvbGxBbmltYXRvcjo6bm90aWZ5UG9zaXRpb25D
aGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlbHRh
KTsKLSAgICBtX3Njcm9sbGFibGVBcmVhLnNldFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihy
b3VuZGVkSW50UG9pbnQoY3VycmVudFBvc2l0aW9uKCkpKTsKKyAgICAKKyAgICBtX3Njcm9sbGFi
bGVBcmVhLnNldFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihyb3VuZGVkSW50UG9pbnQobV9j
dXJyZW50UG9zaXRpb24pKTsKICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2Nyb2xsUG9zaXRpb25D
aGFuZ2VkKCk7CiB9CiAKQEAgLTI3MCw2ICsyNzYsNyBAQCBGbG9hdFBvaW50IFNjcm9sbEFuaW1h
dG9yOjpzY3JvbGxPZmZzZXQoKSBjb25zdAogICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnNj
cm9sbE9mZnNldEZyb21Qb3NpdGlvbihyb3VuZGVkSW50UG9pbnQoY3VycmVudFBvc2l0aW9uKCkp
KTsKIH0KIAorLy8gRklYTUU6IFVudXNlZC4KIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmltbWVkaWF0
ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVsdGEpCiB7CiAgICAg
RmxvYXRTaXplIGRlbHRhU2l6ZTsKQEAgLTM4MSwxMiArMzg4LDkgQEAgZmxvYXQgU2Nyb2xsQW5p
bWF0b3I6OmFkanVzdFNjcm9sbE9mZnNldEZvclNuYXBwaW5nSWZOZWVkZWQoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMKICAgICByZXR1cm4gbV9zY3JvbGxDb250cm9sbGVyLmFkanVzdFNjcm9sbERlc3Rp
bmF0aW9uKGF4aXMsIG5ld09mZnNldCwgdmVsb2NpdHlJblNjcm9sbEF4aXMsIG9yaWdpbmFsT2Zm
c2V0KTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRl
KFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQordm9pZCBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNv
bnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRPZmZzZXQpCiB7Ci0gICAgRmxvYXRTaXplIGRlbHRhID0g
cG9zaXRpb24gLSBtX2N1cnJlbnRQb3NpdGlvbjsKLSAgICBtX2N1cnJlbnRQb3NpdGlvbiA9IHBv
c2l0aW9uOwotICAgIG5vdGlmeVBvc2l0aW9uQ2hhbmdlZChkZWx0YSk7Ci0gICAgdXBkYXRlQWN0
aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CisgICAgc2V0Q3VycmVudFBvc2l0aW9uKHBv
c2l0aW9uRnJvbU9mZnNldChjdXJyZW50T2Zmc2V0KSwgTm90aWZ5U2Nyb2xsYWJsZUFyZWE6Olll
cyk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3Jv
bGxBbmltYXRpb24mKQpAQCAtMzk3LDggKzQwMSw4IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNj
cm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKQogU2Nyb2xsRXh0ZW50cyBTY3Jv
bGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKQog
ewogICAgIHJldHVybiB7Ci0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbFBv
c2l0aW9uKCksCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbFBvc2l0aW9u
KCksCisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWluaW11bVNjcm9sbE9mZnNldCgpLAorICAg
ICAgICBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxPZmZzZXQoKSwKICAgICAgICAgbV9z
Y3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6ZSgpCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IDRhMTI1OWFmNjljNzM5Nzg3ZjhjOTRjNGYwMDJl
N2E1NzM0MjdlYzIuLmIxNjYyNmI4NDgzYmVkNjA0NWYxMTk3NmQxODM0Y2EwYmQyYmI1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtOTcsMTMgKzk3LDE2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBTY3JvbGxBbmltYXRpb25DbGllbnQKLSAg
ICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBG
bG9hdFBvaW50JiBjdXJyZW50UG9zaXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsQW5p
bWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJl
bnRPZmZzZXQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9s
bEFuaW1hdGlvbiYpIG92ZXJyaWRlOwogICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0Zv
ckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29udGVu
dHNTaXplQ2hhbmdlZCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRDdXJyZW50UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYpOworICAgIGVudW0gTm90aWZ5U2Nyb2xsYWJsZUFyZWEgOiBib29sIHsK
KyAgICAgICAgTm8sIFllcworICAgIH07CisgICAgdm9pZCBzZXRDdXJyZW50UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYsIE5vdGlmeVNjcm9sbGFibGVBcmVhID0gTm90aWZ5U2Nyb2xsYWJsZUFy
ZWE6Ok5vKTsKICAgICBjb25zdCBGbG9hdFBvaW50JiBjdXJyZW50UG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRQb3NpdGlvbjsgfQogCiAgICAgS2V5Ym9hcmRTY3JvbGxpbmdBbmlt
YXRvciAqa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fa2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5nZXQoKTsgfQpAQCAtMTQ1LDkgKzE0OCwxMCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvck9m
ZnNldCgpOwogCi0gICAgRmxvYXRQb2ludCBvZmZzZXRGcm9tUG9zaXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24pOwotICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gcm9tT2Zmc2V0KGNvbnN0
IEZsb2F0UG9pbnQmIG9mZnNldCk7Ci0gICAgRmxvYXRTaXplIGRlbHRhRnJvbVN0ZXAoU2Nyb2xs
YmFyT3JpZW50YXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpOworICAgIEZsb2F0
UG9pbnQgb2Zmc2V0RnJvbVBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSBjb25z
dDsKKyAgICBGbG9hdFBvaW50IHBvc2l0aW9uRnJvbU9mZnNldChjb25zdCBGbG9hdFBvaW50JiBv
ZmZzZXQpIGNvbnN0OworCisgICAgc3RhdGljIEZsb2F0U2l6ZSBkZWx0YUZyb21TdGVwKFNjcm9s
bGJhck9yaWVudGF0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKIAogICAgIFNj
cm9sbGFibGVBcmVhJiBtX3Njcm9sbGFibGVBcmVhOwogICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVz
dE1vbml0b3I+IG1fd2hlZWxFdmVudFRlc3RNb25pdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAppbmRleCA1OGNkMmJhMDQyY2NkNjkxZDUyMGFkNjRkZTdjY2FhNDVkZDFm
NTI5Li5kYmNhNDM4OTYwYmE1ZjUwOTljZjk5MzRhZWE1ODNhNGMzMWI1YjhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgU2Ny
b2xsVmlldzo6c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYgb2Zmc2V0KQogCiAg
ICAgSW50UG9pbnQgY29uc3RyYWluZWRPZmZzZXQgPSBvZmZzZXQ7CiAgICAgaWYgKGNvbnN0cmFp
bnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKCkpCi0gICAgICAgIGNvbnN0cmFpbmVkT2Zmc2V0ID0g
Y29uc3RyYWluZWRPZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKEludFBvaW50KCksIG1heGltdW1T
Y3JvbGxPZmZzZXQoKSk7CisgICAgICAgIGNvbnN0cmFpbmVkT2Zmc2V0ID0gY29uc3RyYWluZWRP
ZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKG1pbmltdW1TY3JvbGxPZmZzZXQoKSwgbWF4aW11bVNj
cm9sbE9mZnNldCgpKTsKIAogICAgIHNjcm9sbFRvKHNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChj
b25zdHJhaW5lZE9mZnNldCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCmluZGV4IGE2MzAxNWNiNTI0M2MxYTYwMWY5YzNmNjQ3MDI5ZTc5YzNiNmQ5NzIu
LjA5ZjNhMzE1YWVmZTNiOTkyY2I0ZGVjOTFkOWM2ZjBkZDQ5Njk0ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTI0MCw2ICsyNDAsNyBAQCB2b2lk
IFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzKGNvbnN0IFNjcm9s
bE9mZnNldCYgb2Zmc2V0KQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxQb3NpdGlv
bkZyb21BbmltYXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQogeworICAgIC8v
IEFuIGVhcmx5IHJldHVybiBoZXJlIGlmIHRoZSBwb3NpdGlvbiBoYXNuJ3QgY2hhbmdlZCBicmVh
a3MgYW4gaU9TIFJUTCBzY3JvbGxpbmcgdGVzdDogd2Via2l0Lm9yZy9iLzIzMDQ1MC4KICAgICBh
dXRvIHNjcm9sbFR5cGUgPSBjdXJyZW50U2Nyb2xsVHlwZSgpOwogICAgIGF1dG8gY2xhbXBpbmcg
PSBzY3JvbGxUeXBlID09IFNjcm9sbFR5cGU6OlVzZXIgPyBTY3JvbGxDbGFtcGluZzo6VW5jbGFt
cGVkIDogU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQ7CiAgICAgaWYgKHJlcXVlc3RTY3JvbGxQb3Np
dGlvblVwZGF0ZShwb3NpdGlvbiwgc2Nyb2xsVHlwZSwgY2xhbXBpbmcpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKaW5kZXggYzEwOTllYzM0MjU2Y2M4NTM3OTRkYmE5
YThkOWE0ZWYzYzhlODc5Mi4uNzg0M2UzMDNlNWEyM2Y2OWUwMTZkYWY5NGU5OWZjNDMwOTUyM2Vm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0yMjcsNiAr
MjI3LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsT2Zmc2V0IHNjcm9s
bE9mZnNldCgpIGNvbnN0OwogCisgICAgU2Nyb2xsT2Zmc2V0IG1pbmltdW1TY3JvbGxPZmZzZXQo
KSBjb25zdCB7IHJldHVybiB7IH07IH0KICAgICBTY3JvbGxPZmZzZXQgbWF4aW11bVNjcm9sbE9m
ZnNldCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gc2Nyb2xs
UG9zaXRpb25Gcm9tT2Zmc2V0KFNjcm9sbE9mZnNldCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggY2QzNWM4Mjc4ZWRl
YWZjNWM1NDIzYWQzY2EzY2NhZjU0MTU0YjcwZi4uOTViN2FlY2IxYjZhM2Q4OGQ2OTcxM2FiZDY5
MzYxYmI5YWRmMmRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQpAQCAtMjg2LDEwICsyODYsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9y
TWFjOjppbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogICAgIGlmIChu
ZXdQb3NpdGlvbiA9PSBjdXJyZW50UG9zaXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIEZs
b2F0U2l6ZSBhZGp1c3RlZERlbHRhID0gbmV3UG9zaXRpb24gLSBjdXJyZW50UG9zaXRpb247Ci0g
ICAgbV9jdXJyZW50UG9zaXRpb24gPSBuZXdQb3NpdGlvbjsKLSAgICBub3RpZnlQb3NpdGlvbkNo
YW5nZWQoYWRqdXN0ZWREZWx0YSk7Ci0gICAgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9y
T2Zmc2V0KCk7CisgICAgc2V0Q3VycmVudFBvc2l0aW9uKG5ld1Bvc2l0aW9uLCBOb3RpZnlTY3Jv
bGxhYmxlQXJlYTo6WWVzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggYjBlZDQ0OTRh
YTVmZTBjZDg4N2FhMjRiOGYzZjJhMmU3MjI3MmI0ZC4uNzZhYzQ3ODRkOTgwZTU3NTI2MDNkODNi
MGFlYjk3MWNhZDI5ZTgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xs
UG9zaXRpb24mIHBvc2l0aW9uCiAKIFNjcm9sbE9mZnNldCBSZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhOjpjbGFtcFNjcm9sbE9mZnNldChjb25zdCBTY3JvbGxPZmZzZXQmIHNjcm9sbE9mZnNldCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihJbnRQ
b2ludCgpLCBtYXhpbXVtU2Nyb2xsT2Zmc2V0KCkpOworICAgIHJldHVybiBzY3JvbGxPZmZzZXQu
Y29uc3RyYWluZWRCZXR3ZWVuKG1pbmltdW1TY3JvbGxPZmZzZXQoKSwgbWF4aW11bVNjcm9sbE9m
ZnNldCgpKTsKIH0KIAogYm9vbCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpyZXF1ZXN0U2Ny
b2xsUG9zaXRpb25VcGRhdGUoY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uLCBTY3JvbGxU
eXBlIHNjcm9sbFR5cGUsIFNjcm9sbENsYW1waW5nIGNsYW1waW5nKQo=
</data>
<flag name="review"
          id="462038"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>