<?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>217707</bug_id>
          
          <creation_ts>2020-10-14 07:04:04 -0700</creation_ts>
          <short_desc>Simplify management of LayerPropertyAnimation instances in GraphicsLayerCA</short_desc>
          <delta_ts>2020-10-14 13:38:03 -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>Animations</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>178117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>dino</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1697701</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-14 07:04:04 -0700</bug_when>
    <thetext>Simplify management of LayerPropertyAnimation instances in GraphicsLayerCA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697703</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-14 07:06:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/70291140&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697706</commentid>
    <comment_count>2</comment_count>
      <attachid>411320</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-14 07:14:12 -0700</bug_when>
    <thetext>Created attachment 411320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697707</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-14 07:14:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/70291140&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697724</commentid>
    <comment_count>4</comment_count>
      <attachid>411320</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-14 08:42:16 -0700</bug_when>
    <thetext>Comment on attachment 411320
Patch

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

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:701
&gt; +            &amp;&amp; animation.m_playState == Playing)

I think we&apos;d need to copy paused animations too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697729</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-14 08:55:31 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; Comment on attachment 411320 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411320&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:701
&gt; &gt; +            &amp;&amp; animation.m_playState == Playing)
&gt; 
&gt; I think we&apos;d need to copy paused animations too

Oh yeah, good point! We need to copy any committed animation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697763</commentid>
    <comment_count>6</comment_count>
      <attachid>411341</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-14 10:04:26 -0700</bug_when>
    <thetext>Created attachment 411341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697764</commentid>
    <comment_count>7</comment_count>
      <attachid>411342</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-14 10:05:53 -0700</bug_when>
    <thetext>Created attachment 411342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697766</commentid>
    <comment_count>8</comment_count>
      <attachid>411344</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-14 10:08:57 -0700</bug_when>
    <thetext>Created attachment 411344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697805</commentid>
    <comment_count>9</comment_count>
      <attachid>411344</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-14 11:55:23 -0700</bug_when>
    <thetext>Comment on attachment 411344
Patch

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

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:2885
&gt; -    if (timeOffset)
&gt; -        caAnim.setBeginTime(CACurrentMediaTime() - timeOffset.seconds());
&gt; +    caAnim.setBeginTime(beginTime.seconds());

Why this change? You&apos;re changing behavior from CA implicitly setting the beginTime when it commits the animation to explicitly setting beginTime.

We still have code that seems to care about this: see animationDidStart:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697807</commentid>
    <comment_count>10</comment_count>
      <attachid>411344</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-10-14 11:56:58 -0700</bug_when>
    <thetext>Comment on attachment 411344
Patch

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

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:700
&gt; +        if ((animation.m_property == AnimatedPropertyTransform
&gt; +            || animation.m_property == AnimatedPropertyOpacity
&gt; +            || animation.m_property == AnimatedPropertyBackgroundColor
&gt; +            || animation.m_property == AnimatedPropertyFilter)

Could these be any other properties? Do we need to test?

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:4226
&gt; +        auto caAnimation = animatedLayer(animation.m_property)-&gt;animationForKey(animationIdentifier(animation.m_name, animation.m_property, animation.m_index, animation.m_subIndex));

make an animationIdentifier() override that takes an animation rather than having to list all four properties each time. You still need the one with four parameters for the case where you don&apos;t have an animation object, but a single argument method would be nice.

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:470
&gt; +    enum PlayState { Playing, PlayPending, Paused, PausePending };

enum class

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:486
&gt;          Seconds m_timeOffset;

Make this { 0_s } too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697852</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-10-14 13:38:03 -0700</bug_when>
    <thetext>Committed r268483: &lt;https://trac.webkit.org/changeset/268483&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411320</attachid>
            <date>2020-10-14 07:14:12 -0700</date>
            <delta_ts>2020-10-14 10:04:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217707-20201014161411.patch</filename>
            <type>text/plain</type>
            <size>23016</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA2YTc0ZjMzZjU0MmNk
NjZlY2U4OWIyNjk1NzdlNzg2NDRiZGI1MC4uYWRlMzY0YzQ3NTk0MDY5ODMwYTJhOTI3YWJkMTY2
ZjYyNTU4MDMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTEwLTE0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFNpbXBsaWZ5IG1hbmFn
ZW1lbnQgb2YgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBpbnN0YW5jZXMgaW4gR3JhcGhpY3NMYXll
ckNBCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3
MDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMjkxMTQwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtYW5hZ2VtZW50IG9mIExheWVyUHJv
cGVydHlBbmltYXRpb24gaW5zdGFuY2VzIGluIEdyYXBoaWNzTGF5ZXJDQSBzcHJlYWQKKyAgICAg
ICAgdGhvc2UgYW5pbWF0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBkYXRhIHN0cnVjdHVyZXMuIFdl
IG5vdyBzaW1wbGlmeSB0aGlzIHRvCisgICAgICAgIGJlIGEgc2luZ2xlIFZlY3RvcjxMYXllclBy
b3BlcnR5QW5pbWF0aW9uPiB3aXRoIHR3byBuZXcgcHJvcGVydGllcy4KKworICAgICAgICBUaGUg
bV9wbGF5U3RhdGUgcHJvcGVydHkgaW5kaWNhdGVzOgorICAgICAgICAKKyAgICAgICAgLSB3aGV0
aGVyIHRoZSBhbmltYXRpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGxpc3QgYnV0IGF3YWl0aW5n
IHRoZSBuZXh0IGNvbW1pdAorICAgICAgICB0byBiZSBwbGF5ZWQgKFBsYXlQZW5kaW5nKQorICAg
ICAgICAtIHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBjb21taXR0ZWQgYW5kIHBsYXlp
bmcgKFBsYXlpbmcpCisgICAgICAgIC0gd2hldGhlciB0aGUgYW5pbWF0aW9uIGhhcyBiZWVuIG1h
cmtlZCB0byBiZSBwYXVzZWQgYnV0IGF3YWl0aW5nIHRoZSBuZXh0IGNvbW1pdAorICAgICAgICB0
byBiZSBwYXVzZWQgKFBhdXNlUGVuZGluZykKKyAgICAgICAgLSB3aGV0aGVyIHRoZSBhbmltYXRp
b24gaGFzIGJlZW4gY29tbWl0dGVkIGFuZCBwYXVzZWQgKFBhdXNlZCkKKworICAgICAgICBUaGUg
bV9wZW5kaW5nUmVtb3ZhbCBwcm9wZXJ0eSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgYW5pbWF0aW9u
IGhhcyBiZWVuIG1hcmtlZCBmb3IKKyAgICAgICAgcmVtb3ZhbCB1cG9uIHRoZSBuZXh0IGNvbW1p
dC4KKworICAgICAgICBUaGVuLCB3aGVuIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9u
cygpIGlzIGNhbGxlZCB3ZSByZW1vdmUgYWxsIGFuaW1hdGlvbnMKKyAgICAgICAgZnJvbSB0aGUg
bGF5ZXIsIGZpbHRlciBtX2FuaW1hdGlvbnMgdG8gb25seSBoYXZlIGFuaW1hdGlvbnMgdGhhdCBh
cmUgbm90IG1hcmtlZAorICAgICAgICBhcyBwZW5kaW5nIHJlbW92YWwsIGFuZCBhZGQgdGhlIG5v
dy1jdXJyZW50IGxpc3Qgb2YgYW5pbWF0aW9ucyB0byB0aGUgbGF5ZXIuCisKKyAgICAgICAgTm8g
bmV3IHRlc3Qgc2luY2UgdGhpcyBjaGFuZ2UgaXMgcmVmYWN0b3Jpbmcgb25seSBhbmQgc2hvdWxk
IG5vdCBoYXZlIGFueSBjaGFuZ2UKKyAgICAgICAgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNBOjptb3ZlT3JDb3B5QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6OmFuaW1hdGlvbklzUnVubmluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjphbmltYXRpb25DYW5CZUFjY2VsZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpyZW1vdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6aXNSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uT25MYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5p
bWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5z
Zm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmFkZFByb2Nlc3NpbmdBY3Rpb25Gb3JBbmlt
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjplbnN1
cmVMYXllckFuaW1hdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNB
OjpoYXNBbmltYXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6YW5pbWF0aW9uSXNSdW5uaW5nIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbjo6QW5pbWF0aW9uUHJv
Y2Vzc2luZ0FjdGlvbik6IERlbGV0ZWQuCisKIDIwMjAtMTAtMTMgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbiBpcyBhcHBsaWVk
IG9uIHRvcCBvZiBpbnZpZGl2dWFsIENTUyB0cmFuc2Zvcm0gcHJvcGVydGllcyBvbiBjb21wb3Np
dGVkIGxheWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggNWU5NjQ3ZmZhYzgwMTNmOTI0MzdmNWRhZWIx
MGE4N2I1NWFlNDM2Yy4uNjBjZGU5NDNjNjg0NDA4MDczNDlmOTljYmE2YmI4OGQ2ZDlhZTdhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwCkBAIC02OTMsMjIgKzY5MywxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVPckNvcHkgb3BlcmF0aW9uLCBjb25zdCBT
dHJpbgogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6bW92ZU9yQ29weUFuaW1hdGlvbnMoTW92ZU9y
Q29weSBvcGVyYXRpb24sIFBsYXRmb3JtQ0FMYXllciAqZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5
ZXIgKnRvTGF5ZXIpCiB7Ci0gICAgaWYgKCFoYXNBbmltYXRpb25zKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIExvb2sgZm9yIHJ1bm5pbmcgYW5pbWF0aW9ucyBhZmZlY3RpbmcgdGhpcyBw
cm9wZXJ0eS4KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDogbV9hbmltYXRpb25zLT5ydW5uaW5n
QW5pbWF0aW9ucykgewotICAgICAgICBjb25zdCBhdXRvJiBwcm9wZXJ0eUFuaW1hdGlvbnMgPSBp
dC52YWx1ZTsKLSAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlvbnMgPSBwcm9wZXJ0eUFuaW1hdGlv
bnMuc2l6ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7
ICsraSkgewotICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFu
aW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKLQotICAgICAgICAgICAgaWYgKGN1cnJB
bmltYXRpb24ubV9wcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtCi0gICAgICAg
ICAgICAgICAgfHwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5Ci0gICAgICAgICAgICAgICAgfHwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFu
aW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IKLSAgICAgICAgICAgICAgICB8fCBjdXJyQW5p
bWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlcikKLSAgICAgICAgICAg
ICAgICBtb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24ob3BlcmF0aW9uLCBhbmltYXRpb25JZGVudGlm
aWVyKGN1cnJBbmltYXRpb24ubV9uYW1lLCBjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJB
bmltYXRpb24ubV9pbmRleCwgY3VyckFuaW1hdGlvbi5tX3N1YkluZGV4KSwgZnJvbUxheWVyLCB0
b0xheWVyKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogbV9hbmltYXRp
b25zKSB7CisgICAgICAgIGlmICgoYW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9w
ZXJ0eVRyYW5zZm9ybQorICAgICAgICAgICAgfHwgYW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5p
bWF0ZWRQcm9wZXJ0eU9wYWNpdHkKKyAgICAgICAgICAgIHx8IGFuaW1hdGlvbi5tX3Byb3BlcnR5
ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IKKyAgICAgICAgICAgIHx8IGFuaW1h
dGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlGaWx0ZXIpCisgICAgICAgICAgICAm
JiBhbmltYXRpb24ubV9wbGF5U3RhdGUgPT0gUGxheWluZykKKyAgICAgICAgICAgIG1vdmVPckNv
cHlMYXllckFuaW1hdGlvbihvcGVyYXRpb24sIGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0aW9u
Lm1fbmFtZSwgYW5pbWF0aW9uLm1fcHJvcGVydHksIGFuaW1hdGlvbi5tX2luZGV4LCBhbmltYXRp
b24ubV9zdWJJbmRleCksIGZyb21MYXllciwgdG9MYXllcik7CiAgICAgfQogfQogCkBAIC0xMDI2
LDcgKzEwMTcsMTUgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNob3VsZFJlcGFpbnRPblNpemVD
aGFuZ2UoKSBjb25zdAogICAgIHJldHVybiBkcmF3c0NvbnRlbnQoKSAmJiAhdGlsZWRCYWNraW5n
KCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NMYXllckNBOjphbmltYXRpb25DYW5CZUFjY2VsZXJhdGVk
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5p
bSkgY29uc3QKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjphbmltYXRpb25Jc1J1bm5pbmcoY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lKSBjb25zdAoreworICAgIGF1dG8gaW5kZXggPSBtX2FuaW1h
dGlvbnMuZmluZE1hdGNoaW5nKFsmXShMYXllclByb3BlcnR5QW5pbWF0aW9uIGFuaW1hdGlvbikg
eworICAgICAgICByZXR1cm4gYW5pbWF0aW9uLm1fbmFtZSA9PSBhbmltYXRpb25OYW1lOworICAg
IH0pOworICAgIHJldHVybiBpbmRleCAhPSBub3RGb3VuZCAmJiBtX2FuaW1hdGlvbnNbaW5kZXhd
Lm1fcGxheVN0YXRlID09IFBsYXlpbmc7Cit9CisKK3N0YXRpYyBib29sIGFuaW1hdGlvbkNhbkJl
QWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5p
bWF0aW9uKiBhbmltKQogewogICAgIGlmIChhbmltLT5wbGF5YmFja1JhdGUoKSAhPSAxIHx8ICFh
bmltLT5kaXJlY3Rpb25Jc0ZvcndhcmRzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEw
NDAsMjAgKzEwMzksNiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uQ2FuQmVBY2Nl
bGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaQogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkUHJvY2Vzc2luZ0FjdGlvbkZvckFuaW1h
dGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rp
b24gcHJvY2Vzc2luZ0FjdGlvbikKLXsKLSAgICBlbnN1cmVMYXllckFuaW1hdGlvbnMoKTsKLQot
ICAgIGF1dG8mIHByb2Nlc3NpbmdBY3Rpb25zID0gbV9hbmltYXRpb25zLT5hbmltYXRpb25zVG9Q
cm9jZXNzLmVuc3VyZShhbmltYXRpb25OYW1lLCBbXSB7Ci0gICAgICAgIHJldHVybiBWZWN0b3I8
QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbj4geyB9OwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
LQotICAgIGlmICghcHJvY2Vzc2luZ0FjdGlvbnMuaXNFbXB0eSgpICYmIHByb2Nlc3NpbmdBY3Rp
b25zLmxhc3QoKS5hY3Rpb24gPT0gUmVtb3ZlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9j
ZXNzaW5nQWN0aW9ucy5hcHBlbmQocHJvY2Vzc2luZ0FjdGlvbik7Ci19Ci0KIGJvb2wgR3JhcGhp
Y3NMYXllckNBOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlz
dCwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0
IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgTE9HX1dJ
VEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiR3JhcGhpY3NMYXllckNBICIgPDwgdGhp
cyA8PCAiIGlkICIgPDwgcHJpbWFyeUxheWVySUQoKSA8PCAiIGFkZEFuaW1hdGlvbiAiIDw8IGFu
aW0gPDwgIiAiIDw8IGFuaW1hdGlvbk5hbWUgPDwgIiBkdXJhdGlvbiAiIDw8IGFuaW0tPmR1cmF0
aW9uKCkgPDwgIiAoY2FuIGJlIGFjY2VsZXJhdGVkICIgPDwgYW5pbWF0aW9uQ2FuQmVBY2NlbGVy
YXRlZCh2YWx1ZUxpc3QsIGFuaW0pIDw8ICIpIik7CkBAIC0xMDg5LDggKzEwNzQsMTYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgZG91YmxlIHRpbWVPZmYKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQW5pbWF0aW9ucywg
c3RyZWFtIDw8ICJHcmFwaGljc0xheWVyQ0EgIiA8PCB0aGlzIDw8ICIgaWQgIiA8PCBwcmltYXJ5
TGF5ZXJJRCgpIDw8ICIgcGF1c2VBbmltYXRpb24gIiA8PCBhbmltYXRpb25OYW1lIDw8ICIgKGlz
IHJ1bm5pbmcgIiA8PCBhbmltYXRpb25Jc1J1bm5pbmcoYW5pbWF0aW9uTmFtZSkgPDwgIikiKTsK
IAotICAgIC8vIENhbGwgYWRkIHNpbmNlIGlmIHRoZXJlIGlzIGFscmVhZHkgYSBSZW1vdmUgaW4g
dGhlcmUsIHdlIGRvbid0IHdhbnQgdG8gb3ZlcndyaXRlIGl0IHdpdGggYSBQYXVzZS4KLSAgICBh
ZGRQcm9jZXNzaW5nQWN0aW9uRm9yQW5pbWF0aW9uKGFuaW1hdGlvbk5hbWUsIEFuaW1hdGlvblBy
b2Nlc3NpbmdBY3Rpb24geyBQYXVzZSwgU2Vjb25kcyB7IHRpbWVPZmZzZXQgfSB9KTsKKyAgICBh
dXRvIGluZGV4ID0gbV9hbmltYXRpb25zLmZpbmRNYXRjaGluZyhbJl0oTGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbiBhbmltYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi5tX25hbWUgPT0g
YW5pbWF0aW9uTmFtZSAmJiAhYW5pbWF0aW9uLm1fcGVuZGluZ1JlbW92YWw7CisgICAgfSk7CisK
KyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8m
IGFuaW1hdGlvbiA9IG1fYW5pbWF0aW9uc1tpbmRleF07CisgICAgYW5pbWF0aW9uLm1fcGxheVN0
YXRlID0gUGF1c2VQZW5kaW5nOworICAgIGFuaW1hdGlvbi5tX3RpbWVPZmZzZXQgPSBTZWNvbmRz
IHsgdGltZU9mZnNldCB9OwogCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlv
bkNoYW5nZWQpOwogfQpAQCAtMTA5OSwxMiArMTA5MiwxNSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkKIHsKICAgICBM
T0dfV0lUSF9TVFJFQU0oQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJHcmFwaGljc0xheWVyQ0EgIiA8
PCB0aGlzIDw8ICIgaWQgIiA8PCBwcmltYXJ5TGF5ZXJJRCgpIDw8ICIgcmVtb3ZlQW5pbWF0aW9u
ICIgPDwgYW5pbWF0aW9uTmFtZSA8PCAiIChpcyBydW5uaW5nICIgPDwgYW5pbWF0aW9uSXNSdW5u
aW5nKGFuaW1hdGlvbk5hbWUpIDw8ICIpIik7CiAKLSAgICBpZiAoIWFuaW1hdGlvbklzUnVubmlu
ZyhhbmltYXRpb25OYW1lKSkgewotICAgICAgICByZW1vdmVGcm9tVW5jb21taXR0ZWRBbmltYXRp
b25zKGFuaW1hdGlvbk5hbWUpOworICAgIGF1dG8gaW5kZXggPSBtX2FuaW1hdGlvbnMuZmluZE1h
dGNoaW5nKFsmXShMYXllclByb3BlcnR5QW5pbWF0aW9uIGFuaW1hdGlvbikgeworICAgICAgICBy
ZXR1cm4gYW5pbWF0aW9uLm1fbmFtZSA9PSBhbmltYXRpb25OYW1lICYmICFhbmltYXRpb24ubV9w
ZW5kaW5nUmVtb3ZhbDsKKyAgICB9KTsKKworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGFkZFByb2Nlc3NpbmdBY3Rpb25Gb3JBbmltYXRp
b24oYW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihSZW1vdmUpKTsKKyAg
ICBtX2FuaW1hdGlvbnNbaW5kZXhdLm1fcGVuZGluZ1JlbW92YWwgPSB0cnVlOworCiAgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQgfCBDb3ZlcmFnZVJlY3RDaGFu
Z2VkKTsKIH0KIApAQCAtMjg1Miw4NCArMjg0OCwzOCBAQCBSZWZQdHI8UGxhdGZvcm1DQUxheWVy
PiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJvb3QoUmVwbGljYVN0YXRlJiByZXBs
aQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYg
KCFoYXNBbmltYXRpb25zKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNpemVfdCBudW1Bbmlt
YXRpb25zOwotICAgIGlmICgobnVtQW5pbWF0aW9ucyA9IG1fYW5pbWF0aW9ucy0+dW5jb21pdHRl
ZEFuaW1hdGlvbnMuc2l6ZSgpKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbiYgcGVuZGluZ0FuaW1hdGlvbiA9IG1fYW5pbWF0aW9ucy0+dW5jb21pdHRlZEFuaW1hdGlv
bnNbaV07Ci0gICAgICAgICAgICBzZXRBbmltYXRpb25PbkxheWVyKCpwZW5kaW5nQW5pbWF0aW9u
Lm1fYW5pbWF0aW9uLCBwZW5kaW5nQW5pbWF0aW9uLm1fcHJvcGVydHksIHBlbmRpbmdBbmltYXRp
b24ubV9uYW1lLCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgsIHBlbmRpbmdBbmltYXRpb24ubV9z
dWJJbmRleCwgcGVuZGluZ0FuaW1hdGlvbi5tX3RpbWVPZmZzZXQpOwotCi0gICAgICAgICAgICBB
bmltYXRpb25zTWFwOjppdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlv
bnMuZmluZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXQgPT0g
bV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKSkgewotICAgICAgICAgICAgICAg
IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBhbmltYXRpb25zOwotICAgICAgICAgICAg
ICAgIGFuaW1hdGlvbnMuYXBwZW5kKHBlbmRpbmdBbmltYXRpb24pOwotICAgICAgICAgICAgICAg
IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuYWRkKHBlbmRpbmdBbmltYXRpb24ubV9u
YW1lLCBhbmltYXRpb25zKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
VmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBhbmltYXRpb25zID0gaXQtPnZhbHVlOwot
ICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHBlbmRpbmdBbmltYXRpb24pOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1fYW5pbWF0aW9ucy0+dW5jb21pdHRlZEFu
aW1hdGlvbnMuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBpZiAobV9hbmltYXRpb25zLT5hbmltYXRp
b25zVG9Qcm9jZXNzLnNpemUoKSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDogbV9h
bmltYXRpb25zLT5hbmltYXRpb25zVG9Qcm9jZXNzKSB7Ci0gICAgICAgICAgICBjb25zdCBTdHJp
bmcmIGN1cnJlbnRBbmltYXRpb25OYW1lID0gaXQua2V5OwotICAgICAgICAgICAgYXV0byBhbmlt
YXRpb25JdGVyYXRvciA9IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuZmluZChjdXJy
ZW50QW5pbWF0aW9uTmFtZSk7Ci0gICAgICAgICAgICBpZiAoYW5pbWF0aW9uSXRlcmF0b3IgPT0g
bV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAvLyBSZW1vdmUgYWxsIGFuaW1hdGlvbnMgc28gZmFyLgorICAgIGZvciAo
YXV0byYgYW5pbWF0aW9uIDogbV9hbmltYXRpb25zKQorICAgICAgICByZW1vdmVDQUFuaW1hdGlv
bkZyb21MYXllcihhbmltYXRpb24ubV9wcm9wZXJ0eSwgYW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0
aW9uLm1faW5kZXgsIGFuaW1hdGlvbi5tX3N1YkluZGV4KTsKIAotICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBwcm9jZXNzaW5nSW5mbyA6IGl0LnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBhbmltYXRpb25zID0gYW5pbWF0
aW9uSXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY3Vy
cmVudEFuaW1hdGlvbiA6IGFuaW1hdGlvbnMpIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChwcm9jZXNzaW5nSW5mby5hY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBSZW1v
dmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihj
dXJyZW50QW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJlbnRBbmltYXRpb25OYW1lLCBjdXJyZW50
QW5pbWF0aW9uLm1faW5kZXgsIGN1cnJlbnRBbmltYXRpb24ubV9zdWJJbmRleCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXVzZToK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKGN1cnJlbnRB
bmltYXRpb24ubV9wcm9wZXJ0eSwgY3VycmVudEFuaW1hdGlvbk5hbWUsIGN1cnJlbnRBbmltYXRp
b24ubV9pbmRleCwgY3VycmVudEFuaW1hdGlvbi5tX3N1YkluZGV4LCBwcm9jZXNzaW5nSW5mby50
aW1lT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKHByb2Nl
c3NpbmdJbmZvLmFjdGlvbiA9PSBSZW1vdmUpCi0gICAgICAgICAgICAgICAgICAgIG1fYW5pbWF0
aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMucmVtb3ZlKGN1cnJlbnRBbmltYXRpb25OYW1lKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIC8vIFJlbW92ZSBhbGwgYW5pbWF0aW9ucyBmcm9t
IHRoZSBsaXN0IHRoYXQgd2VyZSBwZW5kaW5nIHJlbW92YWwuCisgICAgbV9hbmltYXRpb25zLnJl
bW92ZUFsbE1hdGNoaW5nKFsmXShMYXllclByb3BlcnR5QW5pbWF0aW9uIGFuaW1hdGlvbikgewor
ICAgICAgICByZXR1cm4gYW5pbWF0aW9uLm1fcGVuZGluZ1JlbW92YWw7CisgICAgfSk7CiAKLSAg
ICAgICAgbV9hbmltYXRpb25zLT5hbmltYXRpb25zVG9Qcm9jZXNzLmNsZWFyKCk7CisgICAgLy8g
QWRkIGFsbCByZW1haW5pbmcgYW5pbWF0aW9ucy4KKyAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6
IG1fYW5pbWF0aW9ucykgeworICAgICAgICBzZXRBbmltYXRpb25PbkxheWVyKCphbmltYXRpb24u
bV9hbmltYXRpb24sIGFuaW1hdGlvbi5tX3Byb3BlcnR5LCBhbmltYXRpb24ubV9uYW1lLCBhbmlt
YXRpb24ubV9pbmRleCwgYW5pbWF0aW9uLm1fc3ViSW5kZXgsIGFuaW1hdGlvbi5tX3RpbWVPZmZz
ZXQpOworICAgICAgICBpZiAoYW5pbWF0aW9uLm1fcGxheVN0YXRlID09IFBhdXNlUGVuZGluZyB8
fCBhbmltYXRpb24ubV9wbGF5U3RhdGUgPT0gUGF1c2VkKSB7CisgICAgICAgICAgICBwYXVzZUNB
QW5pbWF0aW9uT25MYXllcihhbmltYXRpb24ubV9wcm9wZXJ0eSwgYW5pbWF0aW9uLm1fbmFtZSwg
YW5pbWF0aW9uLm1faW5kZXgsIGFuaW1hdGlvbi5tX3N1YkluZGV4LCBhbmltYXRpb24ubV90aW1l
T2Zmc2V0KTsKKyAgICAgICAgICAgIGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9IFBhdXNlZDsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBhbmltYXRpb24ubV9wbGF5U3RhdGUgPSBQbGF5aW5n
OwogICAgIH0KIH0KIAogYm9vbCBHcmFwaGljc0xheWVyQ0E6OmlzUnVubmluZ1RyYW5zZm9ybUFu
aW1hdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKCFoYXNBbmltYXRpb25zKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2FuaW1hdGlvbnMtPnJ1
bm5pbmdBbmltYXRpb25zKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHByb3BlcnR5QW5pbWF0aW9u
cyA9IGl0LnZhbHVlOwotICAgICAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9IHByb3BlcnR5QW5p
bWF0aW9ucy5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0
aW9uczsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBj
dXJyQW5pbWF0aW9uID0gcHJvcGVydHlBbmltYXRpb25zW2ldOwotICAgICAgICAgICAgaWYgKGN1
cnJBbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKQotICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucygp
Ci17Ci0gICAgaWYgKCFtX2FuaW1hdGlvbnMpCi0gICAgICAgIG1fYW5pbWF0aW9ucyA9IG1ha2VV
bmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOworICAgIHJldHVybiBtX2FuaW1hdGlvbnMuZmluZE1h
dGNoaW5nKFsmXShMYXllclByb3BlcnR5QW5pbWF0aW9uIGFuaW1hdGlvbikgeworICAgICAgICBy
ZXR1cm4gYW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybSAm
JiBhbmltYXRpb24ubV9wbGF5U3RhdGUgPT0gUGxheWluZzsKKyAgICB9KSAhPSBub3RGb3VuZDsK
IH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1D
QUFuaW1hdGlvbiYgY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0
cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIFNlY29uZHMgdGlt
ZU9mZnNldCkKIHsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihw
cm9wZXJ0eSk7CiAKKyAgICAvLyBHUkFPVVRTOiBwcm9iYWJseSBuZWVkIHRvIHJlc2V0IHRoaXMg
c2luY2Ugd2UgZG9uJ3Qgd2FudCB0byByZXNldCB0aGUgQ0FDdXJyZW50TWVkaWFUaW1lKCkKICAg
ICBpZiAodGltZU9mZnNldCkKICAgICAgICAgY2FBbmltLnNldEJlZ2luVGltZShDQUN1cnJlbnRN
ZWRpYVRpbWUoKSAtIHRpbWVPZmZzZXQuc2Vjb25kcygpKTsKIApAQCAtMzA2OCw3ICszMDE4LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHUKICAgICBpZiAoIXZhbHVlc09LKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBhcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyhMYXllclBy
b3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5h
bWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkp
OworICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1h
dGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHko
KSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVPZmZzZXQpKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMzA5OSw3ICszMDQ5LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5j
b21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICBpZiAo
IXZhbGlkTWF0cmljZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGFwcGVuZFRvVW5j
b21taXR0ZWRBbmltYXRpb25zKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmltYXRpb24ucmVs
ZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1h
dGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CisgICAgbV9hbmltYXRpb25zLmFwcGVuZChMYXll
clByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlv
bk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgMCwgdGltZU9mZnNl
dCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTU5LDQ5ICszMTA5LDEyIEBAIGJvb2wg
R3JhcGhpY3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsCiAgICAgICAgIAogICAgICAgICBBU1NFUlQodmFsdWVzT0spOwog
Ci0gICAgICAgIGFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKExheWVyUHJvcGVydHlBbmlt
YXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFsdWVM
aXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5k
ZXgsIHRpbWVPZmZzZXQpKTsKKyAgICAgICAgbV9hbmltYXRpb25zLmFwcGVuZChMYXllclByb3Bl
cnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUs
IHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgaW50ZXJuYWxGaWx0ZXJQcm9w
ZXJ0eUluZGV4LCB0aW1lT2Zmc2V0KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgR3JhcGhpY3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyhMYXll
clByb3BlcnR5QW5pbWF0aW9uJiYgYW5pbWF0aW9uKQotewotICAgIGVuc3VyZUxheWVyQW5pbWF0
aW9ucygpOwotCi0gICAgLy8gU2luY2Ugd2UncmUgYWRkaW5nIGEgbmV3IGFuaW1hdGlvbiwgbWFr
ZSBzdXJlIHdlIGNsZWFyIGFueSBwZW5kaW5nIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24gZm9y
IHRoaXMgYW5pbWF0aW9uCi0gICAgLy8gYXMgdGhlc2UgYXJlIGFwcGxpZWQgYWZ0ZXIgd2UndmUg
Y29tbWl0dGVkIG5ldyBhbmltYXRpb25zLiBIb3dldmVyLCB3ZSB3YW50IHRvIGNoZWNrIGlmIHdl
IGhhZCBhIHBlbmRpbmcgcmVtb3ZhbAotICAgIC8vIHN1Y2ggdGhhdCByZW1vdmluZyBhbiBhbmlt
YXRpb24gcHJpb3IgdG8gYWRkaW5nIGEgbmV3IG9uZSBmb3IgdGhlIHNhbWUgbmFtZSB3b3Jrcy4K
LSAgICBhdXRvIHByb2Nlc3NpbmdJbmZvSXRlcmF0b3IgPSBtX2FuaW1hdGlvbnMtPmFuaW1hdGlv
bnNUb1Byb2Nlc3MuZmluZChhbmltYXRpb24ubV9uYW1lKTsKLSAgICBpZiAocHJvY2Vzc2luZ0lu
Zm9JdGVyYXRvciAhPSBtX2FuaW1hdGlvbnMtPmFuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCkpIHsK
LSAgICAgICAgYXV0byBhbmltYXRpb25JdGVyYXRvciA9IG1fYW5pbWF0aW9ucy0+cnVubmluZ0Fu
aW1hdGlvbnMuZmluZChhbmltYXRpb24ubV9uYW1lKTsKLSAgICAgICAgaWYgKGFuaW1hdGlvbkl0
ZXJhdG9yICE9IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpIHsKLSAgICAg
ICAgICAgIGF1dG8mIGFuaW1hdGlvbnMgPSBhbmltYXRpb25JdGVyYXRvci0+dmFsdWU7Ci0gICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHByb2Nlc3NpbmdJbmZvIDogcHJvY2Vzc2luZ0luZm9J
dGVyYXRvci0+dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2luZ0luZm8uYWN0
aW9uID09IFJlbW92ZSkgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGN1
cnJlbnRBbmltYXRpb24gOiBhbmltYXRpb25zKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVt
b3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoY3VycmVudEFuaW1hdGlvbi5tX3Byb3BlcnR5LCBhbmlt
YXRpb24ubV9uYW1lLCBjdXJyZW50QW5pbWF0aW9uLm1faW5kZXgsIGN1cnJlbnRBbmltYXRpb24u
bV9zdWJJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fYW5pbWF0aW9ucy0+cnVubmluZ0Fu
aW1hdGlvbnMucmVtb3ZlKGFuaW1hdGlvbkl0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2Vzcy5yZW1vdmUocHJvY2Vzc2luZ0lu
Zm9JdGVyYXRvcik7Ci0gICAgfQotCi0gICAgbV9hbmltYXRpb25zLT51bmNvbWl0dGVkQW5pbWF0
aW9ucy5hcHBlbmQoV1RGTW92ZShhbmltYXRpb24pKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnJlbW92ZUZyb21VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgU3RyaW5nJiBhbmltYXRp
b25OYW1lKQotewotICAgIGlmICghbV9hbmltYXRpb25zKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtX2FuaW1hdGlvbnMtPnVuY29taXR0ZWRBbmltYXRpb25zLnJlbW92ZUZpcnN0TWF0Y2hpbmco
WyZhbmltYXRpb25OYW1lXSAoYXV0byYgY3VycmVudCkgewotICAgICAgICByZXR1cm4gY3VycmVu
dC5tX25hbWUgPT0gYW5pbWF0aW9uTmFtZTsKLSAgICB9KTsKLX0KLQogYm9vbCBHcmFwaGljc0xh
eWVyQ0E6OmNyZWF0ZUZpbHRlckFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUsIFNlY29uZHMgdGltZU9mZnNldCkKIHsKICNpZiBFTkFCTEUo
RklMVEVSU19MRVZFTF8yKQpAQCAtNDMwOCwxNiArNDIyMSw5IEBAIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBkb3VibGU+PiBHcmFwaGljc0xheWVyQ0E6OmFjY2VsZXJhdGVkQW5pbWF0aW9uc0Zv
clRlc3RpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIGRvdWJsZT4+IGFuaW1hdGlv
bnM7CiAKLSAgICBpZiAoaGFzQW5pbWF0aW9ucygpKSB7Ci0gICAgICAgIGZvciAoYXV0byBpdCA6
IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMpIHsKLSAgICAgICAgICAgIGF1dG8mIHBy
b3BlcnR5QW5pbWF0aW9ucyA9IGl0LnZhbHVlOwotICAgICAgICAgICAgc2l6ZV90IG51bUFuaW1h
dGlvbnMgPSBwcm9wZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOwotICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb25z
dCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBjdXJyQW5pbWF0aW9uID0gcHJvcGVydHlBbmltYXRp
b25zW2ldOwotICAgICAgICAgICAgICAgIGF1dG8gY2FBbmltYXRpb24gPSBhbmltYXRlZExheWVy
KGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSktPmFuaW1hdGlvbkZvcktleShhbmltYXRpb25JZGVu
dGlmaWVyKGN1cnJBbmltYXRpb24ubV9uYW1lLCBjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1
cnJBbmltYXRpb24ubV9pbmRleCwgY3VyckFuaW1hdGlvbi5tX3N1YkluZGV4KSk7Ci0gICAgICAg
ICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoeyBhbmltYXRlZFByb3BlcnR5SURBc1N0cmluZyhj
dXJyQW5pbWF0aW9uLm1fcHJvcGVydHkpLCBjYUFuaW1hdGlvbi0+c3BlZWQoKSB9KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQorICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogbV9hbmltYXRp
b25zKSB7CisgICAgICAgIGF1dG8gY2FBbmltYXRpb24gPSBhbmltYXRlZExheWVyKGFuaW1hdGlv
bi5tX3Byb3BlcnR5KS0+YW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0
aW9uLm1fbmFtZSwgYW5pbWF0aW9uLm1fcHJvcGVydHksIGFuaW1hdGlvbi5tX2luZGV4LCBhbmlt
YXRpb24ubV9zdWJJbmRleCkpOworICAgICAgICBhbmltYXRpb25zLmFwcGVuZCh7IGFuaW1hdGVk
UHJvcGVydHlJREFzU3RyaW5nKGFuaW1hdGlvbi5tX3Byb3BlcnR5KSwgY2FBbmltYXRpb24tPnNw
ZWVkKCkgfSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGFuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4
IGZlN2RjNTZhNDdmM2ZiZTc4ZDEzMWFhYTZkYzI5NjQ2ZTBlYzMyYmQuLjU0N2UwODhjN2I3Njcx
M2EwMmYxZWZkNWVhYTAwNDhiYTJlYzI1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xODMsOCArMTgzLDYg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3BhY2l0
eUludGVybmFsKGZsb2F0KSBvdmVycmlkZTsKICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGFuaW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25z
dCBBbmltYXRpb24qKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBib29sIGlzR3JhcGhpY3NMYXll
ckNBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yNzUsMTEgKzI3Myw4
IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBiYWNraW5nU3RvcmVBdHRhY2hl
ZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYmFja2luZ1N0b3Jl
QXR0YWNoZWRGb3JUZXN0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBib29sIGhhc0FuaW1h
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnMuZ2V0KCk7IH0KLSAgICBib29sIGFu
aW1hdGlvbklzUnVubmluZyhjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9hbmltYXRpb25zICYmIG1fYW5pbWF0aW9ucy0+cnVubmluZ0Fu
aW1hdGlvbnMuY29udGFpbnMoYW5pbWF0aW9uTmFtZSk7Ci0gICAgfQorICAgIGJvb2wgaGFzQW5p
bWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuICFtX2FuaW1hdGlvbnMuaXNFbXB0eSgpOyB9CisgICAg
Ym9vbCBhbmltYXRpb25Jc1J1bm5pbmcoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKSBjb25z
dDsKIAogICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKENvbW1pdFN0
YXRlJiwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvblJl
bGF0aXZlVG9CYXNlLCBib29sJiBsYXllclR5cGVDaGFuZ2VkKTsKICAgICB2b2lkIGNvbW1pdExh
eWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKENvbW1pdFN0YXRlJik7CkBAIC00NTIsOCArNDQ3LDYg
QEAgcHJpdmF0ZToKICAgICB9OwogICAgIGJvb2wgZW5zdXJlU3RydWN0dXJhbExheWVyKFN0cnVj
dHVyYWxMYXllclB1cnBvc2UpOwogICAgIFN0cnVjdHVyYWxMYXllclB1cnBvc2Ugc3RydWN0dXJh
bExheWVyUHVycG9zZSgpIGNvbnN0OwotICAgIAotICAgIHZvaWQgZW5zdXJlTGF5ZXJBbmltYXRp
b25zKCk7CiAKICAgICB2b2lkIHNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlv
biYsIEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQg
aW5kZXgsIGludCBzdWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KTsKICAgICBib29sIHJlbW92
ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJTmRleCk7CkBAIC00NzQsNiArNDY3LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEg
c2luZ2xlIHByb3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlv
bnMgZm9yCiAgICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24s
IHNvIGluZGV4IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCisgICAgZW51bSBQbGF5U3Rh
dGUgeyBQbGF5aW5nLCBQbGF5UGVuZGluZywgUGF1c2VkLCBQYXVzZVBlbmRpbmcgfTsKICAgICBz
dHJ1Y3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiB7CiAgICAgICAgIExheWVyUHJvcGVydHlBbmlt
YXRpb24oUmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+JiYgY2FBbmltYXRpb24sIGNvbnN0IFN0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgs
IGludCBzdWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KQogICAgICAgICAgICAgOiBtX2FuaW1h
dGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSkKQEAgLTQ5MCwxMiArNDg0LDEyIEBAIHByaXZhdGU6
CiAgICAgICAgIGludCBtX2luZGV4OwogICAgICAgICBpbnQgbV9zdWJJbmRleDsKICAgICAgICAg
U2Vjb25kcyBtX3RpbWVPZmZzZXQ7CisgICAgICAgIFBsYXlTdGF0ZSBtX3BsYXlTdGF0ZSB7IFBs
YXlQZW5kaW5nIH07CisgICAgICAgIGJvb2wgbV9wZW5kaW5nUmVtb3ZhbCB7IGZhbHNlIH07CiAg
ICAgfTsKIAogICAgIGJvb2wgYXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBjb25zdCBGbG9hdFNpemUmIGJveFNp
emUsIGludCBhbmltYXRpb25JbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0LCBib29sIGlzTWF0cml4
QW5pbWF0aW9uKTsKICAgICBib29sIGFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiwgY29uc3QgQW5pbWF0
aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgYW5pbWF0aW9uSW5kZXgsIFNl
Y29uZHMgdGltZU9mZnNldCk7Ci0gICAgdm9pZCBhcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9u
cyhMYXllclByb3BlcnR5QW5pbWF0aW9uJiYpOwotICAgIHZvaWQgcmVtb3ZlRnJvbVVuY29tbWl0
dGVkQW5pbWF0aW9ucyhjb25zdCBTdHJpbmcmKTsKIAogICAgIGVudW0gTGF5ZXJDaGFuZ2UgOiB1
aW50NjRfdCB7CiAgICAgICAgIE5vQ2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IDAsCkBAIC01NTksMTggKzU1Myw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlcGFpbnRM
YXllckRpcnR5UmVjdHMoKTsKIAotICAgIGVudW0gQWN0aW9uIHsgUmVtb3ZlLCBQYXVzZSB9Owot
ICAgIHN0cnVjdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uIHsKLSAgICAgICAgQW5pbWF0aW9u
UHJvY2Vzc2luZ0FjdGlvbihBY3Rpb24gYWN0aW9uID0gUmVtb3ZlLCBTZWNvbmRzIHRpbWVPZmZz
ZXQgPSAwX3MpCi0gICAgICAgICAgICA6IGFjdGlvbihhY3Rpb24pCi0gICAgICAgICAgICAsIHRp
bWVPZmZzZXQodGltZU9mZnNldCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIEFjdGlv
biBhY3Rpb247Ci0gICAgICAgIFNlY29uZHMgdGltZU9mZnNldDsgLy8gT25seSB1c2VkIGZvciBw
YXVzZS4KLSAgICB9OwotICAgIHZvaWQgYWRkUHJvY2Vzc2luZ0FjdGlvbkZvckFuaW1hdGlvbihj
b25zdCBTdHJpbmcmLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKTsKLQogICAgIExheWVyQ2hh
bmdlRmxhZ3MgbV91bmNvbW1pdHRlZENoYW5nZXMgeyAwIH07CiAKICAgICBSZWZQdHI8UGxhdGZv
cm1DQUxheWVyPiBtX2xheWVyOyAvLyBUaGUgbWFpbiBsYXllcgpAQCAtNjExLDE2ICs1OTMsNyBA
QCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3VuY29ycmVjdGVkQ29udGVu
dHNJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9wZW5kaW5nQ29udGVudHNJbWFn
ZTsKICAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8QW5pbWF0aW9uUHJv
Y2Vzc2luZ0FjdGlvbj4+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7Ci0gICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+PiBBbmltYXRpb25zTWFw
OwotICAgIHN0cnVjdCBMYXllckFuaW1hdGlvbnMgewotICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiB1
bmNvbWl0dGVkQW5pbWF0aW9uczsKLSAgICAgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcCBhbmlt
YXRpb25zVG9Qcm9jZXNzOwotICAgICAgICBBbmltYXRpb25zTWFwIHJ1bm5pbmdBbmltYXRpb25z
OwotICAgIH07Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPExheWVyQW5pbWF0aW9ucz4gbV9h
bmltYXRpb25zOworICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlv
bnM7CiAKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBtX2RpcnR5UmVjdHM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411341</attachid>
            <date>2020-10-14 10:04:26 -0700</date>
            <delta_ts>2020-10-14 10:05:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217707-20201014190425.patch</filename>
            <type>text/plain</type>
            <size>23960</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA2YTc0ZjMzZjU0MmNk
NjZlY2U4OWIyNjk1NzdlNzg2NDRiZGI1MC4uNTI4NDUzZWI4NzViZWMxYmMwMTQzYmNjNWZjYzQw
ZjA3ZWE5MTJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFNpbXBsaWZ5IG1hbmFn
ZW1lbnQgb2YgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBpbnN0YW5jZXMgaW4gR3JhcGhpY3NMYXll
ckNBCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3
MDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMjkxMTQwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtYW5hZ2VtZW50IG9mIExheWVyUHJv
cGVydHlBbmltYXRpb24gaW5zdGFuY2VzIGluIEdyYXBoaWNzTGF5ZXJDQSBzcHJlYWQKKyAgICAg
ICAgdGhvc2UgYW5pbWF0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBkYXRhIHN0cnVjdHVyZXMuIFdl
IG5vdyBzaW1wbGlmeSB0aGlzIHRvCisgICAgICAgIGJlIGEgc2luZ2xlIFZlY3RvcjxMYXllclBy
b3BlcnR5QW5pbWF0aW9uPiB3aXRoIHRocmVlIG5ldyBwcm9wZXJ0aWVzLgorCisgICAgICAgIFRo
ZSBtX3BsYXlTdGF0ZSBwcm9wZXJ0eSBpbmRpY2F0ZXM6CisgICAgICAgIAorICAgICAgICAtIHdo
ZXRoZXIgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBhZGRlZCB0byB0aGUgbGlzdCBidXQgYXdhaXRp
bmcgdGhlIG5leHQgY29tbWl0CisgICAgICAgIHRvIGJlIHBsYXllZCAoUGxheVBlbmRpbmcpCisg
ICAgICAgIC0gd2hldGhlciB0aGUgYW5pbWF0aW9uIGhhcyBiZWVuIGNvbW1pdHRlZCBhbmQgcGxh
eWluZyAoUGxheWluZykKKyAgICAgICAgLSB3aGV0aGVyIHRoZSBhbmltYXRpb24gaGFzIGJlZW4g
bWFya2VkIHRvIGJlIHBhdXNlZCBidXQgYXdhaXRpbmcgdGhlIG5leHQgY29tbWl0CisgICAgICAg
IHRvIGJlIHBhdXNlZCAoUGF1c2VQZW5kaW5nKQorICAgICAgICAtIHdoZXRoZXIgdGhlIGFuaW1h
dGlvbiBoYXMgYmVlbiBjb21taXR0ZWQgYW5kIHBhdXNlZCAoUGF1c2VkKQorCisgICAgICAgIFRo
ZSBtX3BlbmRpbmdSZW1vdmFsIHByb3BlcnR5IGluZGljYXRlcyB3aGV0aGVyIHRoZSBhbmltYXRp
b24gaGFzIGJlZW4gbWFya2VkIGZvcgorICAgICAgICByZW1vdmFsIHVwb24gdGhlIG5leHQgY29t
bWl0LgorCisgICAgICAgIFRoZSBtX2JlZ2luVGltZSBwcm9wZXJ0eSBpbmRpY2F0ZXMgdGhlIHRp
bWUgYXQgd2hpY2ggdGhlIGFuaW1hdGlvbiB3YXMgZmlyc3QgYWRkZWQsCisgICAgICAgIGVuc3Vy
aW5nIHRoYXQgdGhlIGFuaW1hdGlvbiBjYW4gYmUgcmVtb3ZlZCBhbmQgcmUtYWRkZWQgd2hpbGUg
cHJlc2VydmluZyB0aGUgc2FtZQorICAgICAgICBiZWdpbiB0aW1lLgorCisgICAgICAgIEFzIHN1
Y2gsIHdoZW4gR3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKCkgaXMgY2FsbGVkIHdl
IHJlbW92ZSBhbGwgYW5pbWF0aW9ucworICAgICAgICBmcm9tIHRoZSBsYXllciwgZmlsdGVyIG1f
YW5pbWF0aW9ucyB0byBvbmx5IGhhdmUgYW5pbWF0aW9ucyB0aGF0IGFyZSBub3QgbWFya2VkCisg
ICAgICAgIGFzIHBlbmRpbmcgcmVtb3ZhbCwgYW5kIGFkZCB0aGUgbm93LWN1cnJlbnQgbGlzdCBv
ZiBhbmltYXRpb25zIHRvIHRoZSBsYXllci4KKworICAgICAgICBObyBuZXcgdGVzdCBzaW5jZSB0
aGlzIGNoYW5nZSBpcyByZWZhY3RvcmluZyBvbmx5IGFuZCBzaG91bGQgbm90IGhhdmUgYW55IGNo
YW5nZQorICAgICAgICBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6Om1vdmVPckNvcHlBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6YW5pbWF0aW9uSXNSdW5uaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFuaW1h
dGlvbkNhbkJlQWNjZWxlcmF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNB
OjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnJl
bW92ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0
ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjppc1J1bm5p
bmdUcmFuc2Zvcm1BbmltYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zy
b21LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjphbmltYXRp
b25DYW5CZUFjY2VsZXJhdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDQTo6YWRkUHJvY2Vzc2luZ0FjdGlvbkZvckFuaW1hdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9u
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6Omhhc0FuaW1hdGlvbnMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjphbmltYXRpb25Jc1J1
bm5pbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNB
OjpBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uOjpBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKTog
RGVsZXRlZC4KKwogMjAyMC0xMC0xMyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KIAogICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luIGlzIGFwcGxpZWQgb24gdG9wIG9mIGludmlk
aXZ1YWwgQ1NTIHRyYW5zZm9ybSBwcm9wZXJ0aWVzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcAppbmRleCA1ZTk2NDdmZmFjODAxM2Y5MjQzN2Y1ZGFlYjEwYTg3YjU1YWU0MzZjLi5m
YjQxNGRjN2RkNWFhOGRkMGRhOGM5NjE5NDI0YzUwOTg2ZjkxM2Y5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
QEAgLTY5MywyMiArNjkzLDEzIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjptb3ZlT3JDb3B5TGF5
ZXJBbmltYXRpb24oTW92ZU9yQ29weSBvcGVyYXRpb24sIGNvbnN0IFN0cmluCiAKIHZvaWQgR3Jh
cGhpY3NMYXllckNBOjptb3ZlT3JDb3B5QW5pbWF0aW9ucyhNb3ZlT3JDb3B5IG9wZXJhdGlvbiwg
UGxhdGZvcm1DQUxheWVyICpmcm9tTGF5ZXIsIFBsYXRmb3JtQ0FMYXllciAqdG9MYXllcikKIHsK
LSAgICBpZiAoIWhhc0FuaW1hdGlvbnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gTG9v
ayBmb3IgcnVubmluZyBhbmltYXRpb25zIGFmZmVjdGluZyB0aGlzIHByb3BlcnR5LgotICAgIGZv
ciAoY29uc3QgYXV0byYgaXQgOiBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRpb25zKSB7Ci0g
ICAgICAgIGNvbnN0IGF1dG8mIHByb3BlcnR5QW5pbWF0aW9ucyA9IGl0LnZhbHVlOwotICAgICAg
ICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9IHByb3BlcnR5QW5pbWF0aW9ucy5zaXplKCk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBjdXJyQW5pbWF0aW9uID0gcHJvcGVy
dHlBbmltYXRpb25zW2ldOwotCi0gICAgICAgICAgICBpZiAoY3VyckFuaW1hdGlvbi5tX3Byb3Bl
cnR5ID09IEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0KLSAgICAgICAgICAgICAgICB8fCBjdXJy
QW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkKLSAgICAgICAg
ICAgICAgICB8fCBjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcgotICAgICAgICAgICAgICAgIHx8IGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0
eSA9PSBBbmltYXRlZFByb3BlcnR5RmlsdGVyKQotICAgICAgICAgICAgICAgIG1vdmVPckNvcHlM
YXllckFuaW1hdGlvbihvcGVyYXRpb24sIGFuaW1hdGlvbklkZW50aWZpZXIoY3VyckFuaW1hdGlv
bi5tX25hbWUsIGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1hdGlvbi5tX2luZGV4
LCBjdXJyQW5pbWF0aW9uLm1fc3ViSW5kZXgpLCBmcm9tTGF5ZXIsIHRvTGF5ZXIpOwotICAgICAg
ICB9CisgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiBtX2FuaW1hdGlvbnMpIHsKKyAgICAgICAg
aWYgKChhbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtCisg
ICAgICAgICAgICB8fCBhbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5T3Bh
Y2l0eQorICAgICAgICAgICAgfHwgYW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcgorICAgICAgICAgICAgfHwgYW5pbWF0aW9uLm1fcHJvcGVydHkg
PT0gQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlcikKKyAgICAgICAgICAgICYmIChhbmltYXRpb24ubV9w
bGF5U3RhdGUgPT0gUGxheWluZyB8fCBhbmltYXRpb24ubV9wbGF5U3RhdGUgPT0gUGF1c2VkKSkK
KyAgICAgICAgICAgIG1vdmVPckNvcHlMYXllckFuaW1hdGlvbihvcGVyYXRpb24sIGFuaW1hdGlv
bklkZW50aWZpZXIoYW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9uLm1fcHJvcGVydHksIGFuaW1h
dGlvbi5tX2luZGV4LCBhbmltYXRpb24ubV9zdWJJbmRleCksIGZyb21MYXllciwgdG9MYXllcik7
CiAgICAgfQogfQogCkBAIC0xMDI2LDcgKzEwMTcsMTUgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6
OnNob3VsZFJlcGFpbnRPblNpemVDaGFuZ2UoKSBjb25zdAogICAgIHJldHVybiBkcmF3c0NvbnRl
bnQoKSAmJiAhdGlsZWRCYWNraW5nKCk7CiB9CiAKLWJvb2wgR3JhcGhpY3NMYXllckNBOjphbmlt
YXRpb25DYW5CZUFjY2VsZXJhdGVkKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3Qs
IGNvbnN0IEFuaW1hdGlvbiogYW5pbSkgY29uc3QKK2Jvb2wgR3JhcGhpY3NMYXllckNBOjphbmlt
YXRpb25Jc1J1bm5pbmcoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKSBjb25zdAoreworICAg
IGF1dG8gaW5kZXggPSBtX2FuaW1hdGlvbnMuZmluZE1hdGNoaW5nKFsmXShMYXllclByb3BlcnR5
QW5pbWF0aW9uIGFuaW1hdGlvbikgeworICAgICAgICByZXR1cm4gYW5pbWF0aW9uLm1fbmFtZSA9
PSBhbmltYXRpb25OYW1lOworICAgIH0pOworICAgIHJldHVybiBpbmRleCAhPSBub3RGb3VuZCAm
JiBtX2FuaW1hdGlvbnNbaW5kZXhdLm1fcGxheVN0YXRlID09IFBsYXlpbmc7Cit9CisKK3N0YXRp
YyBib29sIGFuaW1hdGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltKQogewogICAgIGlmIChhbmltLT5wbGF5
YmFja1JhdGUoKSAhPSAxIHx8ICFhbmltLT5kaXJlY3Rpb25Jc0ZvcndhcmRzKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTEwNDAsMjAgKzEwMzksNiBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
QTo6YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFs
dWVMaQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YWRkUHJv
Y2Vzc2luZ0FjdGlvbkZvckFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIEFu
aW1hdGlvblByb2Nlc3NpbmdBY3Rpb24gcHJvY2Vzc2luZ0FjdGlvbikKLXsKLSAgICBlbnN1cmVM
YXllckFuaW1hdGlvbnMoKTsKLQotICAgIGF1dG8mIHByb2Nlc3NpbmdBY3Rpb25zID0gbV9hbmlt
YXRpb25zLT5hbmltYXRpb25zVG9Qcm9jZXNzLmVuc3VyZShhbmltYXRpb25OYW1lLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBWZWN0b3I8QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbj4geyB9OwotICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKLQotICAgIGlmICghcHJvY2Vzc2luZ0FjdGlvbnMuaXNFbXB0
eSgpICYmIHByb2Nlc3NpbmdBY3Rpb25zLmxhc3QoKS5hY3Rpb24gPT0gUmVtb3ZlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBwcm9jZXNzaW5nQWN0aW9ucy5hcHBlbmQocHJvY2Vzc2luZ0FjdGlv
bik7Ci19Ci0KIGJvb2wgR3JhcGhpY3NMYXllckNBOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplLCBjb25zdCBB
bmltYXRpb24qIGFuaW0sIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVP
ZmZzZXQpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiR3Jh
cGhpY3NMYXllckNBICIgPDwgdGhpcyA8PCAiIGlkICIgPDwgcHJpbWFyeUxheWVySUQoKSA8PCAi
IGFkZEFuaW1hdGlvbiAiIDw8IGFuaW0gPDwgIiAiIDw8IGFuaW1hdGlvbk5hbWUgPDwgIiBkdXJh
dGlvbiAiIDw8IGFuaW0tPmR1cmF0aW9uKCkgPDwgIiAoY2FuIGJlIGFjY2VsZXJhdGVkICIgPDwg
YW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZCh2YWx1ZUxpc3QsIGFuaW0pIDw8ICIpIik7CkBAIC0x
MDg5LDggKzEwNzQsMTYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnBhdXNlQW5pbWF0aW9uKGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmYKIHsKICAgICBMT0dfV0lU
SF9TVFJFQU0oQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJHcmFwaGljc0xheWVyQ0EgIiA8PCB0aGlz
IDw8ICIgaWQgIiA8PCBwcmltYXJ5TGF5ZXJJRCgpIDw8ICIgcGF1c2VBbmltYXRpb24gIiA8PCBh
bmltYXRpb25OYW1lIDw8ICIgKGlzIHJ1bm5pbmcgIiA8PCBhbmltYXRpb25Jc1J1bm5pbmcoYW5p
bWF0aW9uTmFtZSkgPDwgIikiKTsKIAotICAgIC8vIENhbGwgYWRkIHNpbmNlIGlmIHRoZXJlIGlz
IGFscmVhZHkgYSBSZW1vdmUgaW4gdGhlcmUsIHdlIGRvbid0IHdhbnQgdG8gb3ZlcndyaXRlIGl0
IHdpdGggYSBQYXVzZS4KLSAgICBhZGRQcm9jZXNzaW5nQWN0aW9uRm9yQW5pbWF0aW9uKGFuaW1h
dGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24geyBQYXVzZSwgU2Vjb25kcyB7IHRp
bWVPZmZzZXQgfSB9KTsKKyAgICBhdXRvIGluZGV4ID0gbV9hbmltYXRpb25zLmZpbmRNYXRjaGlu
ZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBhbmltYXRpb24pIHsKKyAgICAgICAgcmV0dXJu
IGFuaW1hdGlvbi5tX25hbWUgPT0gYW5pbWF0aW9uTmFtZSAmJiAhYW5pbWF0aW9uLm1fcGVuZGlu
Z1JlbW92YWw7CisgICAgfSk7CisKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8mIGFuaW1hdGlvbiA9IG1fYW5pbWF0aW9uc1tpbmRleF07Cisg
ICAgYW5pbWF0aW9uLm1fcGxheVN0YXRlID0gUGF1c2VQZW5kaW5nOworICAgIGFuaW1hdGlvbi5t
X3RpbWVPZmZzZXQgPSBTZWNvbmRzIHsgdGltZU9mZnNldCB9OwogCiAgICAgbm90ZUxheWVyUHJv
cGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOwogfQpAQCAtMTA5OSwxMiArMTA5MiwxNSBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQW5pbWF0aW9ucywgc3RyZWFtIDw8
ICJHcmFwaGljc0xheWVyQ0EgIiA8PCB0aGlzIDw8ICIgaWQgIiA8PCBwcmltYXJ5TGF5ZXJJRCgp
IDw8ICIgcmVtb3ZlQW5pbWF0aW9uICIgPDwgYW5pbWF0aW9uTmFtZSA8PCAiIChpcyBydW5uaW5n
ICIgPDwgYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1hdGlvbk5hbWUpIDw8ICIpIik7CiAKLSAgICBp
ZiAoIWFuaW1hdGlvbklzUnVubmluZyhhbmltYXRpb25OYW1lKSkgewotICAgICAgICByZW1vdmVG
cm9tVW5jb21taXR0ZWRBbmltYXRpb25zKGFuaW1hdGlvbk5hbWUpOworICAgIGF1dG8gaW5kZXgg
PSBtX2FuaW1hdGlvbnMuZmluZE1hdGNoaW5nKFsmXShMYXllclByb3BlcnR5QW5pbWF0aW9uIGFu
aW1hdGlvbikgeworICAgICAgICByZXR1cm4gYW5pbWF0aW9uLm1fbmFtZSA9PSBhbmltYXRpb25O
YW1lICYmICFhbmltYXRpb24ubV9wZW5kaW5nUmVtb3ZhbDsKKyAgICB9KTsKKworICAgIGlmIChp
bmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGFkZFByb2Nl
c3NpbmdBY3Rpb25Gb3JBbmltYXRpb24oYW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2lu
Z0FjdGlvbihSZW1vdmUpKTsKKyAgICBtX2FuaW1hdGlvbnNbaW5kZXhdLm1fcGVuZGluZ1JlbW92
YWwgPSB0cnVlOworCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5n
ZWQgfCBDb3ZlcmFnZVJlY3RDaGFuZ2VkKTsKIH0KIApAQCAtMjg1Miw4NiArMjg0OCw0MSBAQCBS
ZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xheWVyQ0E6OnJlcGxpY2F0ZWRMYXllclJv
b3QoUmVwbGljYVN0YXRlJiByZXBsaQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5p
bWF0aW9ucygpCiB7Ci0gICAgaWYgKCFoYXNBbmltYXRpb25zKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHNpemVfdCBudW1BbmltYXRpb25zOwotICAgIGlmICgobnVtQW5pbWF0aW9ucyA9IG1f
YW5pbWF0aW9ucy0+dW5jb21pdHRlZEFuaW1hdGlvbnMuc2l6ZSgpKSkgewotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29u
c3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgcGVuZGluZ0FuaW1hdGlvbiA9IG1fYW5pbWF0aW9u
cy0+dW5jb21pdHRlZEFuaW1hdGlvbnNbaV07Ci0gICAgICAgICAgICBzZXRBbmltYXRpb25Pbkxh
eWVyKCpwZW5kaW5nQW5pbWF0aW9uLm1fYW5pbWF0aW9uLCBwZW5kaW5nQW5pbWF0aW9uLm1fcHJv
cGVydHksIHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgs
IHBlbmRpbmdBbmltYXRpb24ubV9zdWJJbmRleCwgcGVuZGluZ0FuaW1hdGlvbi5tX3RpbWVPZmZz
ZXQpOwotCi0gICAgICAgICAgICBBbmltYXRpb25zTWFwOjppdGVyYXRvciBpdCA9IG1fYW5pbWF0
aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuZmluZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSk7Ci0g
ICAgICAgICAgICBpZiAoaXQgPT0gbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucy5lbmQo
KSkgewotICAgICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiBhbmlt
YXRpb25zOwotICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHBlbmRpbmdBbmltYXRp
b24pOwotICAgICAgICAgICAgICAgIG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuYWRk
KHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBhbmltYXRpb25zKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+JiBhbmlt
YXRpb25zID0gaXQtPnZhbHVlOwotICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHBl
bmRpbmdBbmltYXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1fYW5p
bWF0aW9ucy0+dW5jb21pdHRlZEFuaW1hdGlvbnMuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBpZiAo
bV9hbmltYXRpb25zLT5hbmltYXRpb25zVG9Qcm9jZXNzLnNpemUoKSkgewotICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGl0IDogbV9hbmltYXRpb25zLT5hbmltYXRpb25zVG9Qcm9jZXNzKSB7Ci0g
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIGN1cnJlbnRBbmltYXRpb25OYW1lID0gaXQua2V5Owot
ICAgICAgICAgICAgYXV0byBhbmltYXRpb25JdGVyYXRvciA9IG1fYW5pbWF0aW9ucy0+cnVubmlu
Z0FuaW1hdGlvbnMuZmluZChjdXJyZW50QW5pbWF0aW9uTmFtZSk7Ci0gICAgICAgICAgICBpZiAo
YW5pbWF0aW9uSXRlcmF0b3IgPT0gbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucy5lbmQo
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAvLyBSZW1vdmUgYWxsIGFuaW1hdGlv
bnMgc28gZmFyLgorICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogbV9hbmltYXRpb25zKQorICAg
ICAgICByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihhbmltYXRpb24ubV9wcm9wZXJ0eSwgYW5p
bWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9uLm1faW5kZXgsIGFuaW1hdGlvbi5tX3N1YkluZGV4KTsK
IAotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwcm9jZXNzaW5nSW5mbyA6IGl0LnZhbHVl
KSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
JiBhbmltYXRpb25zID0gYW5pbWF0aW9uSXRlcmF0b3ItPnZhbHVlOwotICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgY3VycmVudEFuaW1hdGlvbiA6IGFuaW1hdGlvbnMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChwcm9jZXNzaW5nSW5mby5hY3Rpb24pIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBSZW1vdmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVD
QUFuaW1hdGlvbkZyb21MYXllcihjdXJyZW50QW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJlbnRB
bmltYXRpb25OYW1lLCBjdXJyZW50QW5pbWF0aW9uLm1faW5kZXgsIGN1cnJlbnRBbmltYXRpb24u
bV9zdWJJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBQYXVzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhdXNlQ0FBbmlt
YXRpb25PbkxheWVyKGN1cnJlbnRBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VycmVudEFuaW1hdGlv
bk5hbWUsIGN1cnJlbnRBbmltYXRpb24ubV9pbmRleCwgY3VycmVudEFuaW1hdGlvbi5tX3N1Yklu
ZGV4LCBwcm9jZXNzaW5nSW5mby50aW1lT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgaWYgKHByb2Nlc3NpbmdJbmZvLmFjdGlvbiA9PSBSZW1vdmUpCi0gICAgICAg
ICAgICAgICAgICAgIG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMucmVtb3ZlKGN1cnJl
bnRBbmltYXRpb25OYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIC8vIFJlbW92
ZSBhbGwgYW5pbWF0aW9ucyBmcm9tIHRoZSBsaXN0IHRoYXQgd2VyZSBwZW5kaW5nIHJlbW92YWwu
CisgICAgbV9hbmltYXRpb25zLnJlbW92ZUFsbE1hdGNoaW5nKFsmXShMYXllclByb3BlcnR5QW5p
bWF0aW9uIGFuaW1hdGlvbikgeworICAgICAgICByZXR1cm4gYW5pbWF0aW9uLm1fcGVuZGluZ1Jl
bW92YWw7CisgICAgfSk7CiAKLSAgICAgICAgbV9hbmltYXRpb25zLT5hbmltYXRpb25zVG9Qcm9j
ZXNzLmNsZWFyKCk7CisgICAgLy8gQWRkIGFsbCByZW1haW5pbmcgYW5pbWF0aW9ucy4KKyAgICBh
dXRvIGN1cnJlbnRUaW1lID0gQ0FDdXJyZW50TWVkaWFUaW1lKCk7CisgICAgZm9yIChhdXRvJiBh
bmltYXRpb24gOiBtX2FuaW1hdGlvbnMpIHsKKyAgICAgICAgaWYgKCFhbmltYXRpb24ubV9iZWdp
blRpbWUpCisgICAgICAgICAgICBhbmltYXRpb24ubV9iZWdpblRpbWUgPSBTZWNvbmRzKGN1cnJl
bnRUaW1lKTsKKyAgICAgICAgc2V0QW5pbWF0aW9uT25MYXllcigqYW5pbWF0aW9uLm1fYW5pbWF0
aW9uLCBhbmltYXRpb24ubV9wcm9wZXJ0eSwgYW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9uLm1f
aW5kZXgsIGFuaW1hdGlvbi5tX3N1YkluZGV4LCBhbmltYXRpb24ubV9iZWdpblRpbWUgLSBhbmlt
YXRpb24ubV90aW1lT2Zmc2V0KTsKKyAgICAgICAgaWYgKGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9
PSBQYXVzZVBlbmRpbmcgfHwgYW5pbWF0aW9uLm1fcGxheVN0YXRlID09IFBhdXNlZCkgeworICAg
ICAgICAgICAgcGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIoYW5pbWF0aW9uLm1fcHJvcGVydHksIGFu
aW1hdGlvbi5tX25hbWUsIGFuaW1hdGlvbi5tX2luZGV4LCBhbmltYXRpb24ubV9zdWJJbmRleCwg
YW5pbWF0aW9uLm1fdGltZU9mZnNldCk7CisgICAgICAgICAgICBhbmltYXRpb24ubV9wbGF5U3Rh
dGUgPSBQYXVzZWQ7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYW5pbWF0aW9uLm1fcGxh
eVN0YXRlID0gUGxheWluZzsKICAgICB9CiB9CiAKIGJvb2wgR3JhcGhpY3NMYXllckNBOjppc1J1
bm5pbmdUcmFuc2Zvcm1BbmltYXRpb24oKSBjb25zdAogewotICAgIGlmICghaGFzQW5pbWF0aW9u
cygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDog
bV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucykgewotICAgICAgICBjb25zdCBhdXRvJiBw
cm9wZXJ0eUFuaW1hdGlvbnMgPSBpdC52YWx1ZTsKLSAgICAgICAgc2l6ZV90IG51bUFuaW1hdGlv
bnMgPSBwcm9wZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0aW9uc1tpXTsKLSAg
ICAgICAgICAgIGlmIChjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0
eVRyYW5zZm9ybSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVM
YXllckFuaW1hdGlvbnMoKQotewotICAgIGlmICghbV9hbmltYXRpb25zKQotICAgICAgICBtX2Fu
aW1hdGlvbnMgPSBtYWtlVW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKKyAgICByZXR1cm4gbV9h
bmltYXRpb25zLmZpbmRNYXRjaGluZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBhbmltYXRp
b24pIHsKKyAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJv
cGVydHlUcmFuc2Zvcm0gJiYgYW5pbWF0aW9uLm1fcGxheVN0YXRlID09IFBsYXlpbmc7CisgICAg
fSkgIT0gbm90Rm91bmQ7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25P
bkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24mIGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHBy
b3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1Yklu
ZGV4LCBTZWNvbmRzIHRpbWVPZmZzZXQpCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0
aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uJiBjYUFuaW0sIEFuaW1hdGVkUHJvcGVydHlJ
RCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBz
dWJJbmRleCwgU2Vjb25kcyBiZWdpblRpbWUpCiB7CiAgICAgUGxhdGZvcm1DQUxheWVyKiBsYXll
ciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOwogCi0gICAgaWYgKHRpbWVPZmZzZXQpCi0gICAg
ICAgIGNhQW5pbS5zZXRCZWdpblRpbWUoQ0FDdXJyZW50TWVkaWFUaW1lKCkgLSB0aW1lT2Zmc2V0
LnNlY29uZHMoKSk7CisgICAgY2FBbmltLnNldEJlZ2luVGltZShiZWdpblRpbWUuc2Vjb25kcygp
KTsKIAogICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0
aW9uTmFtZSwgcHJvcGVydHksIGluZGV4LCBzdWJJbmRleCk7CiAKQEAgLTMwNjgsNyArMzAxOSw3
IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1CiAgICAgaWYgKCF2YWx1ZXNPSykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoTGF5ZXJQ
cm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25O
YW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVPZmZzZXQp
KTsKKyAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24oY2FBbmlt
YXRpb24ucmVsZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5
KCksIGFuaW1hdGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTMwOTksNyArMzA1MCw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjphcHBlbmRUb1Vu
Y29tbWl0dGVkQW5pbWF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsCiAgICAgaWYg
KCF2YWxpZE1hdHJpY2VzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhcHBlbmRUb1Vu
Y29tbWl0dGVkQW5pbWF0aW9ucyhMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJl
bGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmlt
YXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOworICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoTGF5
ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRp
b25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIDAsIHRpbWVPZmZz
ZXQpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzE1OSw0OSArMzExMCwxMiBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAgICAgICAKICAgICAgICAgQVNTRVJUKHZhbHVlc09LKTsK
IAotICAgICAgICBhcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyhMYXllclByb3BlcnR5QW5p
bWF0aW9uKGNhQW5pbWF0aW9uLnJlbGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVl
TGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUlu
ZGV4LCB0aW1lT2Zmc2V0KSk7CisgICAgICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1l
LCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFsRmlsdGVyUHJv
cGVydHlJbmRleCwgdGltZU9mZnNldCkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoTGF5
ZXJQcm9wZXJ0eUFuaW1hdGlvbiYmIGFuaW1hdGlvbikKLXsKLSAgICBlbnN1cmVMYXllckFuaW1h
dGlvbnMoKTsKLQotICAgIC8vIFNpbmNlIHdlJ3JlIGFkZGluZyBhIG5ldyBhbmltYXRpb24sIG1h
a2Ugc3VyZSB3ZSBjbGVhciBhbnkgcGVuZGluZyBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uIGZv
ciB0aGlzIGFuaW1hdGlvbgotICAgIC8vIGFzIHRoZXNlIGFyZSBhcHBsaWVkIGFmdGVyIHdlJ3Zl
IGNvbW1pdHRlZCBuZXcgYW5pbWF0aW9ucy4gSG93ZXZlciwgd2Ugd2FudCB0byBjaGVjayBpZiB3
ZSBoYWQgYSBwZW5kaW5nIHJlbW92YWwKLSAgICAvLyBzdWNoIHRoYXQgcmVtb3ZpbmcgYW4gYW5p
bWF0aW9uIHByaW9yIHRvIGFkZGluZyBhIG5ldyBvbmUgZm9yIHRoZSBzYW1lIG5hbWUgd29ya3Mu
Ci0gICAgYXV0byBwcm9jZXNzaW5nSW5mb0l0ZXJhdG9yID0gbV9hbmltYXRpb25zLT5hbmltYXRp
b25zVG9Qcm9jZXNzLmZpbmQoYW5pbWF0aW9uLm1fbmFtZSk7Ci0gICAgaWYgKHByb2Nlc3NpbmdJ
bmZvSXRlcmF0b3IgIT0gbV9hbmltYXRpb25zLT5hbmltYXRpb25zVG9Qcm9jZXNzLmVuZCgpKSB7
Ci0gICAgICAgIGF1dG8gYW5pbWF0aW9uSXRlcmF0b3IgPSBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdB
bmltYXRpb25zLmZpbmQoYW5pbWF0aW9uLm1fbmFtZSk7Ci0gICAgICAgIGlmIChhbmltYXRpb25J
dGVyYXRvciAhPSBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRpb25zLmVuZCgpKSB7Ci0gICAg
ICAgICAgICBhdXRvJiBhbmltYXRpb25zID0gYW5pbWF0aW9uSXRlcmF0b3ItPnZhbHVlOwotICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwcm9jZXNzaW5nSW5mbyA6IHByb2Nlc3NpbmdJbmZv
SXRlcmF0b3ItPnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3NpbmdJbmZvLmFj
dGlvbiA9PSBSZW1vdmUpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBj
dXJyZW50QW5pbWF0aW9uIDogYW5pbWF0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
bW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKGN1cnJlbnRBbmltYXRpb24ubV9wcm9wZXJ0eSwgYW5p
bWF0aW9uLm1fbmFtZSwgY3VycmVudEFuaW1hdGlvbi5tX2luZGV4LCBjdXJyZW50QW5pbWF0aW9u
Lm1fc3ViSW5kZXgpOwotICAgICAgICAgICAgICAgICAgICBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdB
bmltYXRpb25zLnJlbW92ZShhbmltYXRpb25JdGVyYXRvcik7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBtX2FuaW1hdGlvbnMtPmFuaW1hdGlvbnNUb1Byb2Nlc3MucmVtb3ZlKHByb2Nlc3NpbmdJ
bmZvSXRlcmF0b3IpOwotICAgIH0KLQotICAgIG1fYW5pbWF0aW9ucy0+dW5jb21pdHRlZEFuaW1h
dGlvbnMuYXBwZW5kKFdURk1vdmUoYW5pbWF0aW9uKSk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXll
ckNBOjpyZW1vdmVGcm9tVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSkKLXsKLSAgICBpZiAoIW1fYW5pbWF0aW9ucykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9hbmltYXRpb25zLT51bmNvbWl0dGVkQW5pbWF0aW9ucy5yZW1vdmVGaXJzdE1hdGNoaW5n
KFsmYW5pbWF0aW9uTmFtZV0gKGF1dG8mIGN1cnJlbnQpIHsKLSAgICAgICAgcmV0dXJuIGN1cnJl
bnQubV9uYW1lID09IGFuaW1hdGlvbk5hbWU7Ci0gICAgfSk7Ci19Ci0KIGJvb2wgR3JhcGhpY3NM
YXllckNBOjpjcmVhdGVGaWx0ZXJBbmltYXRpb25zRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBTZWNvbmRzIHRpbWVPZmZzZXQpCiB7CiAjaWYgRU5BQkxF
KEZJTFRFUlNfTEVWRUxfMikKQEAgLTQzMDgsMTYgKzQyMjIsOSBAQCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgZG91YmxlPj4gR3JhcGhpY3NMYXllckNBOjphY2NlbGVyYXRlZEFuaW1hdGlvbnNG
b3JUZXN0aQogewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBkb3VibGU+PiBhbmltYXRp
b25zOwogCi0gICAgaWYgKGhhc0FuaW1hdGlvbnMoKSkgewotICAgICAgICBmb3IgKGF1dG8gaXQg
OiBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRpb25zKSB7Ci0gICAgICAgICAgICBhdXRvJiBw
cm9wZXJ0eUFuaW1hdGlvbnMgPSBpdC52YWx1ZTsKLSAgICAgICAgICAgIHNpemVfdCBudW1Bbmlt
YXRpb25zID0gcHJvcGVydHlBbmltYXRpb25zLnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7Ci0gICAgICAgICAgICAgICAgY29u
c3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0
aW9uc1tpXTsKLSAgICAgICAgICAgICAgICBhdXRvIGNhQW5pbWF0aW9uID0gYW5pbWF0ZWRMYXll
cihjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkpLT5hbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRl
bnRpZmllcihjdXJyQW5pbWF0aW9uLm1fbmFtZSwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5LCBj
dXJyQW5pbWF0aW9uLm1faW5kZXgsIGN1cnJBbmltYXRpb24ubV9zdWJJbmRleCkpOwotICAgICAg
ICAgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHsgYW5pbWF0ZWRQcm9wZXJ0eUlEQXNTdHJpbmco
Y3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5KSwgY2FBbmltYXRpb24tPnNwZWVkKCkgfSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1fYW5pbWF0
aW9ucykgeworICAgICAgICBhdXRvIGNhQW5pbWF0aW9uID0gYW5pbWF0ZWRMYXllcihhbmltYXRp
b24ubV9wcm9wZXJ0eSktPmFuaW1hdGlvbkZvcktleShhbmltYXRpb25JZGVudGlmaWVyKGFuaW1h
dGlvbi5tX25hbWUsIGFuaW1hdGlvbi5tX3Byb3BlcnR5LCBhbmltYXRpb24ubV9pbmRleCwgYW5p
bWF0aW9uLm1fc3ViSW5kZXgpKTsKKyAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoeyBhbmltYXRl
ZFByb3BlcnR5SURBc1N0cmluZyhhbmltYXRpb24ubV9wcm9wZXJ0eSksIGNhQW5pbWF0aW9uLT5z
cGVlZCgpIH0pOwogICAgIH0KIAogICAgIHJldHVybiBhbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRl
eCBmZTdkYzU2YTQ3ZjNmYmU3OGQxMzFhYWE2ZGMyOTY0NmUwZWMzMmJkLi5jNzBhZTI5YzBjMzc3
ZTkxZDY3MzUwMDM3ZDkxY2NhN2NjMDc5NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTgzLDggKzE4Myw2
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE9wYWNp
dHlJbnRlcm5hbChmbG9hdCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBhbmltYXRpb25DYW5CZUFjY2VsZXJhdGVkKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29u
c3QgQW5pbWF0aW9uKikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBpc0dyYXBoaWNzTGF5
ZXJDQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMjc1LDExICsyNzMs
OCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYmFja2luZ1N0b3JlQXR0YWNo
ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGJhY2tpbmdTdG9y
ZUF0dGFjaGVkRm9yVGVzdGluZygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgYm9vbCBoYXNBbmlt
YXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25zLmdldCgpOyB9Ci0gICAgYm9vbCBh
bmltYXRpb25Jc1J1bm5pbmcoY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fYW5pbWF0aW9ucyAmJiBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdB
bmltYXRpb25zLmNvbnRhaW5zKGFuaW1hdGlvbk5hbWUpOwotICAgIH0KKyAgICBib29sIGhhc0Fu
aW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiAhbV9hbmltYXRpb25zLmlzRW1wdHkoKTsgfQorICAg
IGJvb2wgYW5pbWF0aW9uSXNSdW5uaW5nKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkgY29u
c3Q7CiAKICAgICB2b2lkIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycyhDb21taXRT
dGF0ZSYsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb25S
ZWxhdGl2ZVRvQmFzZSwgYm9vbCYgbGF5ZXJUeXBlQ2hhbmdlZCk7CiAgICAgdm9pZCBjb21taXRM
YXllckNoYW5nZXNBZnRlclN1YmxheWVycyhDb21taXRTdGF0ZSYpOwpAQCAtNDUyLDEwICs0NDcs
OCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgYm9vbCBlbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIoU3Ry
dWN0dXJhbExheWVyUHVycG9zZSk7CiAgICAgU3RydWN0dXJhbExheWVyUHVycG9zZSBzdHJ1Y3R1
cmFsTGF5ZXJQdXJwb3NlKCkgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBlbnN1cmVMYXllckFuaW1h
dGlvbnMoKTsKIAotICAgIHZvaWQgc2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0
aW9uJiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGlu
dCBpbmRleCwgaW50IHN1YkluZGV4LCBTZWNvbmRzIHRpbWVPZmZzZXQpOworICAgIHZvaWQgc2V0
QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uJiwgQW5pbWF0ZWRQcm9wZXJ0eUlE
LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1YkluZGV4LCBT
ZWNvbmRzIGJlZ2luVGltZSk7CiAgICAgYm9vbCByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihB
bmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4
LCBpbnQgc3ViSU5kZXgpOwogICAgIHZvaWQgcGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0
ZWRQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgaW50
IHN1YkluZGV4LCBTZWNvbmRzIHRpbWVPZmZzZXQpOwogCkBAIC00NzQsNiArNDY3LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgYW5pbWF0aW9uIG9mIGEgc2luZ2xl
IHByb3BlcnR5LiBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgdHJhbnNmb3JtIGFuaW1hdGlvbnMgZm9y
CiAgICAgLy8gYSBzaW5nbGUgdHJhbnNpdGlvbiBvciBrZXlmcmFtZSBhbmltYXRpb24sIHNvIGlu
ZGV4IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UuCisgICAgZW51bSBQbGF5U3RhdGUgeyBQ
bGF5aW5nLCBQbGF5UGVuZGluZywgUGF1c2VkLCBQYXVzZVBlbmRpbmcgfTsKICAgICBzdHJ1Y3Qg
TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiB7CiAgICAgICAgIExheWVyUHJvcGVydHlBbmltYXRpb24o
UmVmPFBsYXRmb3JtQ0FBbmltYXRpb24+JiYgY2FBbmltYXRpb24sIGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBpbnQgaW5kZXgsIGludCBz
dWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KQogICAgICAgICAgICAgOiBtX2FuaW1hdGlvbihX
VEZNb3ZlKGNhQW5pbWF0aW9uKSkKQEAgLTQ5MCwxMiArNDg0LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgIGludCBtX2luZGV4OwogICAgICAgICBpbnQgbV9zdWJJbmRleDsKICAgICAgICAgU2Vjb25k
cyBtX3RpbWVPZmZzZXQ7CisgICAgICAgIFBsYXlTdGF0ZSBtX3BsYXlTdGF0ZSB7IFBsYXlQZW5k
aW5nIH07CisgICAgICAgIGJvb2wgbV9wZW5kaW5nUmVtb3ZhbCB7IGZhbHNlIH07CisgICAgICAg
IFNlY29uZHMgbV9iZWdpblRpbWUgeyAwX3MgfTsKICAgICB9OwogCiAgICAgYm9vbCBhcHBlbmRU
b1VuY29tbWl0dGVkQW5pbWF0aW9ucyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbnMqLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSwgaW50IGFuaW1hdGlvbkluZGV4LCBT
ZWNvbmRzIHRpbWVPZmZzZXQsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24pOwogICAgIGJvb2wgYXBw
ZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb24qLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGludCBhbmltYXRpb25JbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KTsKLSAgICB2
b2lkIGFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKExheWVyUHJvcGVydHlBbmltYXRpb24m
Jik7Ci0gICAgdm9pZCByZW1vdmVGcm9tVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgZW51bSBMYXllckNoYW5nZSA6IHVpbnQ2NF90IHsKICAgICAgICAgTm9DaGFu
Z2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMCwKQEAgLTU1OSwxOCArNTU0LDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVwYWludExheWVyRGlydHlSZWN0cygpOwogCi0gICAg
ZW51bSBBY3Rpb24geyBSZW1vdmUsIFBhdXNlIH07Ci0gICAgc3RydWN0IEFuaW1hdGlvblByb2Nl
c3NpbmdBY3Rpb24gewotICAgICAgICBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKEFjdGlvbiBh
Y3Rpb24gPSBSZW1vdmUsIFNlY29uZHMgdGltZU9mZnNldCA9IDBfcykKLSAgICAgICAgICAgIDog
YWN0aW9uKGFjdGlvbikKLSAgICAgICAgICAgICwgdGltZU9mZnNldCh0aW1lT2Zmc2V0KQotICAg
ICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgQWN0aW9uIGFjdGlvbjsKLSAgICAgICAgU2Vjb25k
cyB0aW1lT2Zmc2V0OyAvLyBPbmx5IHVzZWQgZm9yIHBhdXNlLgotICAgIH07Ci0gICAgdm9pZCBh
ZGRQcm9jZXNzaW5nQWN0aW9uRm9yQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYsIEFuaW1hdGlvblBy
b2Nlc3NpbmdBY3Rpb24pOwotCiAgICAgTGF5ZXJDaGFuZ2VGbGFncyBtX3VuY29tbWl0dGVkQ2hh
bmdlcyB7IDAgfTsKIAogICAgIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fbGF5ZXI7IC8vIFRo
ZSBtYWluIGxheWVyCkBAIC02MTEsMTYgKzU5NCw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IG1fdW5jb3JyZWN0ZWRDb250ZW50c0ltYWdlOwogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX3BlbmRpbmdDb250ZW50c0ltYWdlOwogICAgIAotICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFZlY3RvcjxBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPj4gQW5pbWF0aW9u
c1RvUHJvY2Vzc01hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQ
cm9wZXJ0eUFuaW1hdGlvbj4+IEFuaW1hdGlvbnNNYXA7Ci0gICAgc3RydWN0IExheWVyQW5pbWF0
aW9ucyB7Ci0gICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAg
VmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IHVuY29taXR0ZWRBbmltYXRpb25zOwotICAg
ICAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwIGFuaW1hdGlvbnNUb1Byb2Nlc3M7Ci0gICAgICAg
IEFuaW1hdGlvbnNNYXAgcnVubmluZ0FuaW1hdGlvbnM7Ci0gICAgfTsKLSAgICAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJBbmltYXRpb25zPiBtX2FuaW1hdGlvbnM7CisgICAgVmVjdG9yPExh
eWVyUHJvcGVydHlBbmltYXRpb24+IG1fYW5pbWF0aW9uczsKIAogICAgIFZlY3RvcjxGbG9hdFJl
Y3Q+IG1fZGlydHlSZWN0czsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411342</attachid>
            <date>2020-10-14 10:05:53 -0700</date>
            <delta_ts>2020-10-14 10:08:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217707-20201014190551.patch</filename>
            <type>text/plain</type>
            <size>23952</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA2YTc0ZjMzZjU0MmNk
NjZlY2U4OWIyNjk1NzdlNzg2NDRiZGI1MC4uMGNiYTUxNWJmZTBjNDQyZTRlODIyODAzMzAyOGEy
OTlkN2RlOWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFNpbXBsaWZ5IG1hbmFn
ZW1lbnQgb2YgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBpbnN0YW5jZXMgaW4gR3JhcGhpY3NMYXll
ckNBCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3
MDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMjkxMTQwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtYW5hZ2VtZW50IG9mIExheWVyUHJv
cGVydHlBbmltYXRpb24gaW5zdGFuY2VzIGluIEdyYXBoaWNzTGF5ZXJDQSBzcHJlYWQKKyAgICAg
ICAgdGhvc2UgYW5pbWF0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBkYXRhIHN0cnVjdHVyZXMuIFdl
IG5vdyBzaW1wbGlmeSB0aGlzIHRvCisgICAgICAgIGJlIGEgc2luZ2xlIFZlY3RvcjxMYXllclBy
b3BlcnR5QW5pbWF0aW9uPiB3aXRoIHRocmVlIG5ldyBwcm9wZXJ0aWVzLgorCisgICAgICAgIFRo
ZSBtX3BsYXlTdGF0ZSBwcm9wZXJ0eSBpbmRpY2F0ZXM6CisKKyAgICAgICAgLSB3aGV0aGVyIHRo
ZSBhbmltYXRpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGxpc3QgYnV0IGF3YWl0aW5nIHRoZSBu
ZXh0IGNvbW1pdAorICAgICAgICB0byBiZSBwbGF5ZWQgKFBsYXlQZW5kaW5nKQorICAgICAgICAt
IHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBjb21taXR0ZWQgYW5kIHBsYXlpbmcgKFBs
YXlpbmcpCisgICAgICAgIC0gd2hldGhlciB0aGUgYW5pbWF0aW9uIGhhcyBiZWVuIG1hcmtlZCB0
byBiZSBwYXVzZWQgYnV0IGF3YWl0aW5nIHRoZSBuZXh0IGNvbW1pdAorICAgICAgICB0byBiZSBw
YXVzZWQgKFBhdXNlUGVuZGluZykKKyAgICAgICAgLSB3aGV0aGVyIHRoZSBhbmltYXRpb24gaGFz
IGJlZW4gY29tbWl0dGVkIGFuZCBwYXVzZWQgKFBhdXNlZCkKKworICAgICAgICBUaGUgbV9wZW5k
aW5nUmVtb3ZhbCBwcm9wZXJ0eSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgYW5pbWF0aW9uIGhhcyBi
ZWVuIG1hcmtlZCBmb3IKKyAgICAgICAgcmVtb3ZhbCB1cG9uIHRoZSBuZXh0IGNvbW1pdC4KKwor
ICAgICAgICBUaGUgbV9iZWdpblRpbWUgcHJvcGVydHkgaW5kaWNhdGVzIHRoZSB0aW1lIGF0IHdo
aWNoIHRoZSBhbmltYXRpb24gd2FzIGZpcnN0IGFkZGVkLAorICAgICAgICBlbnN1cmluZyB0aGF0
IHRoZSBhbmltYXRpb24gY2FuIGJlIHJlbW92ZWQgYW5kIHJlLWFkZGVkIHdoaWxlIHByZXNlcnZp
bmcgdGhlIHNhbWUKKyAgICAgICAgYmVnaW4gdGltZS4KKworICAgICAgICBBcyBzdWNoLCB3aGVu
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucygpIGlzIGNhbGxlZCB3ZSByZW1vdmUg
YWxsIGFuaW1hdGlvbnMKKyAgICAgICAgZnJvbSB0aGUgbGF5ZXIsIGZpbHRlciBtX2FuaW1hdGlv
bnMgdG8gb25seSBoYXZlIGFuaW1hdGlvbnMgdGhhdCBhcmUgbm90IG1hcmtlZAorICAgICAgICBh
cyBwZW5kaW5nIHJlbW92YWwsIGFuZCBhZGQgdGhlIG5vdy1jdXJyZW50IGxpc3Qgb2YgYW5pbWF0
aW9ucyB0byB0aGUgbGF5ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3Qgc2luY2UgdGhpcyBjaGFu
Z2UgaXMgcmVmYWN0b3Jpbmcgb25seSBhbmQgc2hvdWxkIG5vdCBoYXZlIGFueSBjaGFuZ2UKKyAg
ICAgICAgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjptb3Zl
T3JDb3B5QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmFu
aW1hdGlvbklzUnVubmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphbmltYXRpb25DYW5C
ZUFjY2VsZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VB
bmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpyZW1vdmVBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJhbnNm
b3JtQW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uT25MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJh
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uQ2FuQmVB
Y2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OmFkZFByb2Nlc3NpbmdBY3Rpb25Gb3JBbmltYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpoYXNBbmltYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uSXNSdW5uaW5nIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6QW5pbWF0
aW9uUHJvY2Vzc2luZ0FjdGlvbjo6QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbik6IERlbGV0ZWQu
CisKIDIwMjAtMTAtMTMgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgdHJhbnNmb3JtLW9yaWdpbiBpcyBhcHBsaWVkIG9uIHRvcCBvZiBpbnZpZGl2dWFsIENT
UyB0cmFuc2Zvcm0gcHJvcGVydGllcyBvbiBjb21wb3NpdGVkIGxheWVycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
aW5kZXggNWU5NjQ3ZmZhYzgwMTNmOTI0MzdmNWRhZWIxMGE4N2I1NWFlNDM2Yy4uZmI0MTRkYzdk
ZDVhYThkZDBkYThjOTYxOTQyNGM1MDk4NmY5MTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC02OTMs
MjIgKzY5MywxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6bW92ZU9yQ29weUxheWVyQW5pbWF0
aW9uKE1vdmVPckNvcHkgb3BlcmF0aW9uLCBjb25zdCBTdHJpbgogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6bW92ZU9yQ29weUFuaW1hdGlvbnMoTW92ZU9yQ29weSBvcGVyYXRpb24sIFBsYXRmb3Jt
Q0FMYXllciAqZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKnRvTGF5ZXIpCiB7Ci0gICAgaWYg
KCFoYXNBbmltYXRpb25zKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIExvb2sgZm9yIHJ1
bm5pbmcgYW5pbWF0aW9ucyBhZmZlY3RpbmcgdGhpcyBwcm9wZXJ0eS4KLSAgICBmb3IgKGNvbnN0
IGF1dG8mIGl0IDogbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucykgewotICAgICAgICBj
b25zdCBhdXRvJiBwcm9wZXJ0eUFuaW1hdGlvbnMgPSBpdC52YWx1ZTsKLSAgICAgICAgc2l6ZV90
IG51bUFuaW1hdGlvbnMgPSBwcm9wZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29u
c3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0
aW9uc1tpXTsKLQotICAgICAgICAgICAgaWYgKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBB
bmltYXRlZFByb3BlcnR5VHJhbnNmb3JtCi0gICAgICAgICAgICAgICAgfHwgY3VyckFuaW1hdGlv
bi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5Ci0gICAgICAgICAgICAgICAg
fHwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IKLSAgICAgICAgICAgICAgICB8fCBjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5p
bWF0ZWRQcm9wZXJ0eUZpbHRlcikKLSAgICAgICAgICAgICAgICBtb3ZlT3JDb3B5TGF5ZXJBbmlt
YXRpb24ob3BlcmF0aW9uLCBhbmltYXRpb25JZGVudGlmaWVyKGN1cnJBbmltYXRpb24ubV9uYW1l
LCBjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb24ubV9pbmRleCwgY3VyckFu
aW1hdGlvbi5tX3N1YkluZGV4KSwgZnJvbUxheWVyLCB0b0xheWVyKTsKLSAgICAgICAgfQorICAg
IGZvciAoYXV0byYgYW5pbWF0aW9uIDogbV9hbmltYXRpb25zKSB7CisgICAgICAgIGlmICgoYW5p
bWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybQorICAgICAgICAg
ICAgfHwgYW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkKKyAg
ICAgICAgICAgIHx8IGFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IKKyAgICAgICAgICAgIHx8IGFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1h
dGVkUHJvcGVydHlGaWx0ZXIpCisgICAgICAgICAgICAmJiAoYW5pbWF0aW9uLm1fcGxheVN0YXRl
ID09IFBsYXlpbmcgfHwgYW5pbWF0aW9uLm1fcGxheVN0YXRlID09IFBhdXNlZCkpCisgICAgICAg
ICAgICBtb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24ob3BlcmF0aW9uLCBhbmltYXRpb25JZGVudGlm
aWVyKGFuaW1hdGlvbi5tX25hbWUsIGFuaW1hdGlvbi5tX3Byb3BlcnR5LCBhbmltYXRpb24ubV9p
bmRleCwgYW5pbWF0aW9uLm1fc3ViSW5kZXgpLCBmcm9tTGF5ZXIsIHRvTGF5ZXIpOwogICAgIH0K
IH0KIApAQCAtMTAyNiw3ICsxMDE3LDE1IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzaG91bGRS
ZXBhaW50T25TaXplQ2hhbmdlKCkgY29uc3QKICAgICByZXR1cm4gZHJhd3NDb250ZW50KCkgJiYg
IXRpbGVkQmFja2luZygpOwogfQogCi1ib29sIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uQ2Fu
QmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBB
bmltYXRpb24qIGFuaW0pIGNvbnN0Citib29sIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uSXNS
dW5uaW5nKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIGlu
ZGV4ID0gbV9hbmltYXRpb25zLmZpbmRNYXRjaGluZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
biBhbmltYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi5tX25hbWUgPT0gYW5pbWF0
aW9uTmFtZTsKKyAgICB9KTsKKyAgICByZXR1cm4gaW5kZXggIT0gbm90Rm91bmQgJiYgbV9hbmlt
YXRpb25zW2luZGV4XS5tX3BsYXlTdGF0ZSA9PSBQbGF5aW5nOworfQorCitzdGF0aWMgYm9vbCBh
bmltYXRpb25DYW5CZUFjY2VsZXJhdGVkKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
c3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKIHsKICAgICBpZiAoYW5pbS0+cGxheWJhY2tSYXRl
KCkgIT0gMSB8fCAhYW5pbS0+ZGlyZWN0aW9uSXNGb3J3YXJkcygpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMDQwLDIwICsxMDM5LDYgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFuaW1h
dGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OmFkZFByb2Nlc3NpbmdB
Y3Rpb25Gb3JBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRpb25Q
cm9jZXNzaW5nQWN0aW9uIHByb2Nlc3NpbmdBY3Rpb24pCi17Ci0gICAgZW5zdXJlTGF5ZXJBbmlt
YXRpb25zKCk7Ci0KLSAgICBhdXRvJiBwcm9jZXNzaW5nQWN0aW9ucyA9IG1fYW5pbWF0aW9ucy0+
YW5pbWF0aW9uc1RvUHJvY2Vzcy5lbnN1cmUoYW5pbWF0aW9uTmFtZSwgW10gewotICAgICAgICBy
ZXR1cm4gVmVjdG9yPEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+IHsgfTsKLSAgICB9KS5pdGVy
YXRvci0+dmFsdWU7Ci0KLSAgICBpZiAoIXByb2Nlc3NpbmdBY3Rpb25zLmlzRW1wdHkoKSAmJiBw
cm9jZXNzaW5nQWN0aW9ucy5sYXN0KCkuYWN0aW9uID09IFJlbW92ZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcHJvY2Vzc2luZ0FjdGlvbnMuYXBwZW5kKHByb2Nlc3NpbmdBY3Rpb24pOwotfQot
CiBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9u
KiBhbmltLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQog
ewogICAgIExPR19XSVRIX1NUUkVBTShBbmltYXRpb25zLCBzdHJlYW0gPDwgIkdyYXBoaWNzTGF5
ZXJDQSAiIDw8IHRoaXMgPDwgIiBpZCAiIDw8IHByaW1hcnlMYXllcklEKCkgPDwgIiBhZGRBbmlt
YXRpb24gIiA8PCBhbmltIDw8ICIgIiA8PCBhbmltYXRpb25OYW1lIDw8ICIgZHVyYXRpb24gIiA8
PCBhbmltLT5kdXJhdGlvbigpIDw8ICIgKGNhbiBiZSBhY2NlbGVyYXRlZCAiIDw8IGFuaW1hdGlv
bkNhbkJlQWNjZWxlcmF0ZWQodmFsdWVMaXN0LCBhbmltKSA8PCAiKSIpOwpAQCAtMTA4OSw4ICsx
MDc0LDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2ZmCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFN
KEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiR3JhcGhpY3NMYXllckNBICIgPDwgdGhpcyA8PCAiIGlk
ICIgPDwgcHJpbWFyeUxheWVySUQoKSA8PCAiIHBhdXNlQW5pbWF0aW9uICIgPDwgYW5pbWF0aW9u
TmFtZSA8PCAiIChpcyBydW5uaW5nICIgPDwgYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1hdGlvbk5h
bWUpIDw8ICIpIik7CiAKLSAgICAvLyBDYWxsIGFkZCBzaW5jZSBpZiB0aGVyZSBpcyBhbHJlYWR5
IGEgUmVtb3ZlIGluIHRoZXJlLCB3ZSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSBpdCB3aXRoIGEg
UGF1c2UuCi0gICAgYWRkUHJvY2Vzc2luZ0FjdGlvbkZvckFuaW1hdGlvbihhbmltYXRpb25OYW1l
LCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uIHsgUGF1c2UsIFNlY29uZHMgeyB0aW1lT2Zmc2V0
IH0gfSk7CisgICAgYXV0byBpbmRleCA9IG1fYW5pbWF0aW9ucy5maW5kTWF0Y2hpbmcoWyZdKExh
eWVyUHJvcGVydHlBbmltYXRpb24gYW5pbWF0aW9uKSB7CisgICAgICAgIHJldHVybiBhbmltYXRp
b24ubV9uYW1lID09IGFuaW1hdGlvbk5hbWUgJiYgIWFuaW1hdGlvbi5tX3BlbmRpbmdSZW1vdmFs
OworICAgIH0pOworCisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvJiBhbmltYXRpb24gPSBtX2FuaW1hdGlvbnNbaW5kZXhdOworICAgIGFuaW1h
dGlvbi5tX3BsYXlTdGF0ZSA9IFBhdXNlUGVuZGluZzsKKyAgICBhbmltYXRpb24ubV90aW1lT2Zm
c2V0ID0gU2Vjb25kcyB7IHRpbWVPZmZzZXQgfTsKIAogICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChBbmltYXRpb25DaGFuZ2VkKTsKIH0KQEAgLTEwOTksMTIgKzEwOTIsMTUgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiR3JhcGhp
Y3NMYXllckNBICIgPDwgdGhpcyA8PCAiIGlkICIgPDwgcHJpbWFyeUxheWVySUQoKSA8PCAiIHJl
bW92ZUFuaW1hdGlvbiAiIDw8IGFuaW1hdGlvbk5hbWUgPDwgIiAoaXMgcnVubmluZyAiIDw8IGFu
aW1hdGlvbklzUnVubmluZyhhbmltYXRpb25OYW1lKSA8PCAiKSIpOwogCi0gICAgaWYgKCFhbmlt
YXRpb25Jc1J1bm5pbmcoYW5pbWF0aW9uTmFtZSkpIHsKLSAgICAgICAgcmVtb3ZlRnJvbVVuY29t
bWl0dGVkQW5pbWF0aW9ucyhhbmltYXRpb25OYW1lKTsKKyAgICBhdXRvIGluZGV4ID0gbV9hbmlt
YXRpb25zLmZpbmRNYXRjaGluZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBhbmltYXRpb24p
IHsKKyAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi5tX25hbWUgPT0gYW5pbWF0aW9uTmFtZSAmJiAh
YW5pbWF0aW9uLm1fcGVuZGluZ1JlbW92YWw7CisgICAgfSk7CisKKyAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBhZGRQcm9jZXNzaW5nQWN0
aW9uRm9yQW5pbWF0aW9uKGFuaW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24o
UmVtb3ZlKSk7CisgICAgbV9hbmltYXRpb25zW2luZGV4XS5tX3BlbmRpbmdSZW1vdmFsID0gdHJ1
ZTsKKwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2VkIHwgQ292
ZXJhZ2VSZWN0Q2hhbmdlZCk7CiB9CiAKQEAgLTI4NTIsODYgKzI4NDgsNDEgQEAgUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpyZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxp
Y2FTdGF0ZSYgcmVwbGkKIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUFuaW1hdGlvbnMo
KQogewotICAgIGlmICghaGFzQW5pbWF0aW9ucygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBz
aXplX3QgbnVtQW5pbWF0aW9uczsKLSAgICBpZiAoKG51bUFuaW1hdGlvbnMgPSBtX2FuaW1hdGlv
bnMtPnVuY29taXR0ZWRBbmltYXRpb25zLnNpemUoKSkpIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IExheWVy
UHJvcGVydHlBbmltYXRpb24mIHBlbmRpbmdBbmltYXRpb24gPSBtX2FuaW1hdGlvbnMtPnVuY29t
aXR0ZWRBbmltYXRpb25zW2ldOwotICAgICAgICAgICAgc2V0QW5pbWF0aW9uT25MYXllcigqcGVu
ZGluZ0FuaW1hdGlvbi5tX2FuaW1hdGlvbiwgcGVuZGluZ0FuaW1hdGlvbi5tX3Byb3BlcnR5LCBw
ZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgcGVuZGluZ0FuaW1hdGlvbi5tX2luZGV4LCBwZW5kaW5n
QW5pbWF0aW9uLm1fc3ViSW5kZXgsIHBlbmRpbmdBbmltYXRpb24ubV90aW1lT2Zmc2V0KTsKLQot
ICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnMtPnJ1
bm5pbmdBbmltYXRpb25zLmZpbmQocGVuZGluZ0FuaW1hdGlvbi5tX25hbWUpOwotICAgICAgICAg
ICAgaWYgKGl0ID09IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpIHsKLSAg
ICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gYW5pbWF0aW9uczsK
LSAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChwZW5kaW5nQW5pbWF0aW9uKTsKLSAg
ICAgICAgICAgICAgICBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRpb25zLmFkZChwZW5kaW5n
QW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9ucyA9
IGl0LT52YWx1ZTsKLSAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChwZW5kaW5nQW5p
bWF0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2FuaW1hdGlvbnMt
PnVuY29taXR0ZWRBbmltYXRpb25zLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgaWYgKG1fYW5pbWF0
aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2Vzcy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBpdCA6IG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2VzcykgewotICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBjdXJyZW50QW5pbWF0aW9uTmFtZSA9IGl0LmtleTsKLSAgICAgICAg
ICAgIGF1dG8gYW5pbWF0aW9uSXRlcmF0b3IgPSBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRp
b25zLmZpbmQoY3VycmVudEFuaW1hdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKGFuaW1hdGlv
bkl0ZXJhdG9yID09IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgLy8gUmVtb3ZlIGFsbCBhbmltYXRpb25zIHNvIGZh
ci4KKyAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1fYW5pbWF0aW9ucykKKyAgICAgICAgcmVt
b3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoYW5pbWF0aW9uLm1fcHJvcGVydHksIGFuaW1hdGlvbi5t
X25hbWUsIGFuaW1hdGlvbi5tX2luZGV4LCBhbmltYXRpb24ubV9zdWJJbmRleCk7CiAKLSAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcHJvY2Vzc2luZ0luZm8gOiBpdC52YWx1ZSkgewotICAg
ICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0
aW9ucyA9IGFuaW1hdGlvbkl0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGN1cnJlbnRBbmltYXRpb24gOiBhbmltYXRpb25zKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAocHJvY2Vzc2luZ0luZm8uYWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgUmVtb3ZlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ0FBbmltYXRp
b25Gcm9tTGF5ZXIoY3VycmVudEFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyZW50QW5pbWF0aW9u
TmFtZSwgY3VycmVudEFuaW1hdGlvbi5tX2luZGV4LCBjdXJyZW50QW5pbWF0aW9uLm1fc3ViSW5k
ZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgUGF1c2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXVzZUNBQW5pbWF0aW9uT25M
YXllcihjdXJyZW50QW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJlbnRBbmltYXRpb25OYW1lLCBj
dXJyZW50QW5pbWF0aW9uLm1faW5kZXgsIGN1cnJlbnRBbmltYXRpb24ubV9zdWJJbmRleCwgcHJv
Y2Vzc2luZ0luZm8udGltZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0gUmVtb3ZlKQotICAgICAgICAgICAgICAg
ICAgICBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRpb25zLnJlbW92ZShjdXJyZW50QW5pbWF0
aW9uTmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAvLyBSZW1vdmUgYWxsIGFu
aW1hdGlvbnMgZnJvbSB0aGUgbGlzdCB0aGF0IHdlcmUgcGVuZGluZyByZW1vdmFsLgorICAgIG1f
YW5pbWF0aW9ucy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBh
bmltYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi5tX3BlbmRpbmdSZW1vdmFsOwor
ICAgIH0pOwogCi0gICAgICAgIG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2Vzcy5jbGVh
cigpOworICAgIC8vIEFkZCBhbGwgcmVtYWluaW5nIGFuaW1hdGlvbnMuCisgICAgYXV0byBjdXJy
ZW50VGltZSA9IENBQ3VycmVudE1lZGlhVGltZSgpOworICAgIGZvciAoYXV0byYgYW5pbWF0aW9u
IDogbV9hbmltYXRpb25zKSB7CisgICAgICAgIGlmICghYW5pbWF0aW9uLm1fYmVnaW5UaW1lKQor
ICAgICAgICAgICAgYW5pbWF0aW9uLm1fYmVnaW5UaW1lID0gU2Vjb25kcyhjdXJyZW50VGltZSk7
CisgICAgICAgIHNldEFuaW1hdGlvbk9uTGF5ZXIoKmFuaW1hdGlvbi5tX2FuaW1hdGlvbiwgYW5p
bWF0aW9uLm1fcHJvcGVydHksIGFuaW1hdGlvbi5tX25hbWUsIGFuaW1hdGlvbi5tX2luZGV4LCBh
bmltYXRpb24ubV9zdWJJbmRleCwgYW5pbWF0aW9uLm1fYmVnaW5UaW1lIC0gYW5pbWF0aW9uLm1f
dGltZU9mZnNldCk7CisgICAgICAgIGlmIChhbmltYXRpb24ubV9wbGF5U3RhdGUgPT0gUGF1c2VQ
ZW5kaW5nIHx8IGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9PSBQYXVzZWQpIHsKKyAgICAgICAgICAg
IHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKGFuaW1hdGlvbi5tX3Byb3BlcnR5LCBhbmltYXRpb24u
bV9uYW1lLCBhbmltYXRpb24ubV9pbmRleCwgYW5pbWF0aW9uLm1fc3ViSW5kZXgsIGFuaW1hdGlv
bi5tX3RpbWVPZmZzZXQpOworICAgICAgICAgICAgYW5pbWF0aW9uLm1fcGxheVN0YXRlID0gUGF1
c2VkOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9
IFBsYXlpbmc7CiAgICAgfQogfQogCiBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJh
bnNmb3JtQW5pbWF0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoIWhhc0FuaW1hdGlvbnMoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IG1fYW5pbWF0
aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMpIHsKLSAgICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlB
bmltYXRpb25zID0gaXQudmFsdWU7Ci0gICAgICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gcHJv
cGVydHlBbmltYXRpb25zLnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1BbmltYXRpb25zOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmlt
YXRpb24mIGN1cnJBbmltYXRpb24gPSBwcm9wZXJ0eUFuaW1hdGlvbnNbaV07Ci0gICAgICAgICAg
ICBpZiAoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zv
cm0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJBbmlt
YXRpb25zKCkKLXsKLSAgICBpZiAoIW1fYW5pbWF0aW9ucykKLSAgICAgICAgbV9hbmltYXRpb25z
ID0gbWFrZVVuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CisgICAgcmV0dXJuIG1fYW5pbWF0aW9u
cy5maW5kTWF0Y2hpbmcoWyZdKExheWVyUHJvcGVydHlBbmltYXRpb24gYW5pbWF0aW9uKSB7Cisg
ICAgICAgIHJldHVybiBhbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJh
bnNmb3JtICYmIGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9PSBQbGF5aW5nOworICAgIH0pICE9IG5v
dEZvdW5kOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uT25MYXllcihQ
bGF0Zm9ybUNBQW5pbWF0aW9uJiBjYUFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwg
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRleCwgU2Vj
b25kcyB0aW1lT2Zmc2V0KQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5
ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYgY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVy
dHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgs
IFNlY29uZHMgYmVnaW5UaW1lKQogewogICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBhbmlt
YXRlZExheWVyKHByb3BlcnR5KTsKIAotICAgIGlmICh0aW1lT2Zmc2V0KQotICAgICAgICBjYUFu
aW0uc2V0QmVnaW5UaW1lKENBQ3VycmVudE1lZGlhVGltZSgpIC0gdGltZU9mZnNldC5zZWNvbmRz
KCkpOworICAgIGNhQW5pbS5zZXRCZWdpblRpbWUoYmVnaW5UaW1lLnNlY29uZHMoKSk7CiAKICAg
ICBTdHJpbmcgYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUs
IHByb3BlcnR5LCBpbmRleCwgc3ViSW5kZXgpOwogCkBAIC0zMDY4LDcgKzMwMTksNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdQogICAgIGlmICghdmFsdWVzT0spCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKExheWVyUHJvcGVydHlB
bmltYXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFs
dWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CisgICAg
bV9hbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJl
bGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmlt
YXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0z
MDk5LDcgKzMwNTAsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRl
ZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAgIGlmICghdmFsaWRN
YXRyaWNlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXBwZW5kVG9VbmNvbW1pdHRl
ZEFuaW1hdGlvbnMoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9u
TnVsbCgpLCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5k
ZXgsIDAsIHRpbWVPZmZzZXQpKTsKKyAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVy
dHlBbmltYXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwg
dmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxNTksNDkgKzMxMTAsMTIgQEAgYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1ZXNPSyk7CiAKLSAgICAg
ICAgYXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihj
YUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJv
cGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCwgdGlt
ZU9mZnNldCkpOworICAgICAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmlt
YXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFsdWVM
aXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5k
ZXgsIHRpbWVPZmZzZXQpKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKExheWVyUHJvcGVy
dHlBbmltYXRpb24mJiBhbmltYXRpb24pCi17Ci0gICAgZW5zdXJlTGF5ZXJBbmltYXRpb25zKCk7
Ci0KLSAgICAvLyBTaW5jZSB3ZSdyZSBhZGRpbmcgYSBuZXcgYW5pbWF0aW9uLCBtYWtlIHN1cmUg
d2UgY2xlYXIgYW55IHBlbmRpbmcgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiBmb3IgdGhpcyBh
bmltYXRpb24KLSAgICAvLyBhcyB0aGVzZSBhcmUgYXBwbGllZCBhZnRlciB3ZSd2ZSBjb21taXR0
ZWQgbmV3IGFuaW1hdGlvbnMuIEhvd2V2ZXIsIHdlIHdhbnQgdG8gY2hlY2sgaWYgd2UgaGFkIGEg
cGVuZGluZyByZW1vdmFsCi0gICAgLy8gc3VjaCB0aGF0IHJlbW92aW5nIGFuIGFuaW1hdGlvbiBw
cmlvciB0byBhZGRpbmcgYSBuZXcgb25lIGZvciB0aGUgc2FtZSBuYW1lIHdvcmtzLgotICAgIGF1
dG8gcHJvY2Vzc2luZ0luZm9JdGVyYXRvciA9IG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJv
Y2Vzcy5maW5kKGFuaW1hdGlvbi5tX25hbWUpOwotICAgIGlmIChwcm9jZXNzaW5nSW5mb0l0ZXJh
dG9yICE9IG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2Vzcy5lbmQoKSkgewotICAgICAg
ICBhdXRvIGFuaW1hdGlvbkl0ZXJhdG9yID0gbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9u
cy5maW5kKGFuaW1hdGlvbi5tX25hbWUpOwotICAgICAgICBpZiAoYW5pbWF0aW9uSXRlcmF0b3Ig
IT0gbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKSkgewotICAgICAgICAgICAg
YXV0byYgYW5pbWF0aW9ucyA9IGFuaW1hdGlvbkl0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgcHJvY2Vzc2luZ0luZm8gOiBwcm9jZXNzaW5nSW5mb0l0ZXJhdG9y
LT52YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0g
UmVtb3ZlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY3VycmVudEFu
aW1hdGlvbiA6IGFuaW1hdGlvbnMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDQUFu
aW1hdGlvbkZyb21MYXllcihjdXJyZW50QW5pbWF0aW9uLm1fcHJvcGVydHksIGFuaW1hdGlvbi5t
X25hbWUsIGN1cnJlbnRBbmltYXRpb24ubV9pbmRleCwgY3VycmVudEFuaW1hdGlvbi5tX3N1Yklu
ZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9u
cy5yZW1vdmUoYW5pbWF0aW9uSXRlcmF0b3IpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9h
bmltYXRpb25zLT5hbmltYXRpb25zVG9Qcm9jZXNzLnJlbW92ZShwcm9jZXNzaW5nSW5mb0l0ZXJh
dG9yKTsKLSAgICB9Ci0KLSAgICBtX2FuaW1hdGlvbnMtPnVuY29taXR0ZWRBbmltYXRpb25zLmFw
cGVuZChXVEZNb3ZlKGFuaW1hdGlvbikpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVt
b3ZlRnJvbVVuY29tbWl0dGVkQW5pbWF0aW9ucyhjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUp
Ci17Ci0gICAgaWYgKCFtX2FuaW1hdGlvbnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYW5p
bWF0aW9ucy0+dW5jb21pdHRlZEFuaW1hdGlvbnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJmFuaW1h
dGlvbk5hbWVdIChhdXRvJiBjdXJyZW50KSB7Ci0gICAgICAgIHJldHVybiBjdXJyZW50Lm1fbmFt
ZSA9PSBhbmltYXRpb25OYW1lOwotICAgIH0pOwotfQotCiBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
Y3JlYXRlRmlsdGVyQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgU2Vjb25kcyB0aW1lT2Zmc2V0KQogewogI2lmIEVOQUJMRShGSUxURVJT
X0xFVkVMXzIpCkBAIC00MzA4LDE2ICs0MjIyLDkgQEAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IGRvdWJsZT4+IEdyYXBoaWNzTGF5ZXJDQTo6YWNjZWxlcmF0ZWRBbmltYXRpb25zRm9yVGVzdGkK
IHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4gYW5pbWF0aW9uczsKIAot
ICAgIGlmIChoYXNBbmltYXRpb25zKCkpIHsKLSAgICAgICAgZm9yIChhdXRvIGl0IDogbV9hbmlt
YXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucykgewotICAgICAgICAgICAgYXV0byYgcHJvcGVydHlB
bmltYXRpb25zID0gaXQudmFsdWU7Ci0gICAgICAgICAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9
IHByb3BlcnR5QW5pbWF0aW9ucy5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IExheWVy
UHJvcGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRpb24gPSBwcm9wZXJ0eUFuaW1hdGlvbnNbaV07
Ci0gICAgICAgICAgICAgICAgYXV0byBjYUFuaW1hdGlvbiA9IGFuaW1hdGVkTGF5ZXIoY3VyckFu
aW1hdGlvbi5tX3Byb3BlcnR5KS0+YW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIo
Y3VyckFuaW1hdGlvbi5tX25hbWUsIGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1h
dGlvbi5tX2luZGV4LCBjdXJyQW5pbWF0aW9uLm1fc3ViSW5kZXgpKTsKLSAgICAgICAgICAgICAg
ICBhbmltYXRpb25zLmFwcGVuZCh7IGFuaW1hdGVkUHJvcGVydHlJREFzU3RyaW5nKGN1cnJBbmlt
YXRpb24ubV9wcm9wZXJ0eSksIGNhQW5pbWF0aW9uLT5zcGVlZCgpIH0pOwotICAgICAgICAgICAg
fQotICAgICAgICB9CisgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiBtX2FuaW1hdGlvbnMpIHsK
KyAgICAgICAgYXV0byBjYUFuaW1hdGlvbiA9IGFuaW1hdGVkTGF5ZXIoYW5pbWF0aW9uLm1fcHJv
cGVydHkpLT5hbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb24ubV9u
YW1lLCBhbmltYXRpb24ubV9wcm9wZXJ0eSwgYW5pbWF0aW9uLm1faW5kZXgsIGFuaW1hdGlvbi5t
X3N1YkluZGV4KSk7CisgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHsgYW5pbWF0ZWRQcm9wZXJ0
eUlEQXNTdHJpbmcoYW5pbWF0aW9uLm1fcHJvcGVydHkpLCBjYUFuaW1hdGlvbi0+c3BlZWQoKSB9
KTsKICAgICB9CiAKICAgICByZXR1cm4gYW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggZmU3ZGM1
NmE0N2YzZmJlNzhkMTMxYWFhNmRjMjk2NDZlMGVjMzJiZC4uYzcwYWUyOWMwYzM3N2U5MWQ2NzM1
MDAzN2Q5MWNjYTdjYzA3OTY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE4Myw4ICsxODMsNiBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPcGFjaXR5SW50ZXJu
YWwoZmxvYXQpIG92ZXJyaWRlOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYW5pbWF0
aW9uQ2FuQmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1h
dGlvbiopIGNvbnN0OwotCiBwcml2YXRlOgogICAgIGJvb2wgaXNHcmFwaGljc0xheWVyQ0EoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTI3NSwxMSArMjczLDggQEAgcHJp
dmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGJhY2tpbmdTdG9yZUF0dGFjaGVkKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBiYWNraW5nU3RvcmVBdHRhY2hl
ZEZvclRlc3RpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJvb2wgaGFzQW5pbWF0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9ucy5nZXQoKTsgfQotICAgIGJvb2wgYW5pbWF0aW9u
SXNSdW5uaW5nKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FuaW1hdGlvbnMgJiYgbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9u
cy5jb250YWlucyhhbmltYXRpb25OYW1lKTsKLSAgICB9CisgICAgYm9vbCBoYXNBbmltYXRpb25z
KCkgY29uc3QgeyByZXR1cm4gIW1fYW5pbWF0aW9ucy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGFu
aW1hdGlvbklzUnVubmluZyhjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpIGNvbnN0OwogCiAg
ICAgdm9pZCBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoQ29tbWl0U3RhdGUmLCBm
bG9hdCBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uUmVsYXRpdmVU
b0Jhc2UsIGJvb2wmIGxheWVyVHlwZUNoYW5nZWQpOwogICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFu
Z2VzQWZ0ZXJTdWJsYXllcnMoQ29tbWl0U3RhdGUmKTsKQEAgLTQ1MiwxMCArNDQ3LDggQEAgcHJp
dmF0ZToKICAgICB9OwogICAgIGJvb2wgZW5zdXJlU3RydWN0dXJhbExheWVyKFN0cnVjdHVyYWxM
YXllclB1cnBvc2UpOwogICAgIFN0cnVjdHVyYWxMYXllclB1cnBvc2Ugc3RydWN0dXJhbExheWVy
UHVycG9zZSgpIGNvbnN0OwotICAgIAotICAgIHZvaWQgZW5zdXJlTGF5ZXJBbmltYXRpb25zKCk7
CiAKLSAgICB2b2lkIHNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYsIEFu
aW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgs
IGludCBzdWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KTsKKyAgICB2b2lkIHNldEFuaW1hdGlv
bk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYsIEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRleCwgU2Vjb25kcyBi
ZWdpblRpbWUpOwogICAgIGJvb2wgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1
YklOZGV4KTsKICAgICB2b2lkIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRl
eCwgU2Vjb25kcyB0aW1lT2Zmc2V0KTsKIApAQCAtNDc0LDYgKzQ2Nyw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBUaGlzIHJlcHJlc2VudHMgdGhlIGFuaW1hdGlvbiBvZiBhIHNpbmdsZSBwcm9wZXJ0
eS4gVGhlcmUgbWF5IGJlIG11bHRpcGxlIHRyYW5zZm9ybSBhbmltYXRpb25zIGZvcgogICAgIC8v
IGEgc2luZ2xlIHRyYW5zaXRpb24gb3Iga2V5ZnJhbWUgYW5pbWF0aW9uLCBzbyBpbmRleCBpcyB1
c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZXNlLgorICAgIGVudW0gUGxheVN0YXRlIHsgUGxheWluZywg
UGxheVBlbmRpbmcsIFBhdXNlZCwgUGF1c2VQZW5kaW5nIH07CiAgICAgc3RydWN0IExheWVyUHJv
cGVydHlBbmltYXRpb24gewogICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFJlZjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiYmIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgs
IFNlY29uZHMgdGltZU9mZnNldCkKICAgICAgICAgICAgIDogbV9hbmltYXRpb24oV1RGTW92ZShj
YUFuaW1hdGlvbikpCkBAIC00OTAsMTIgKzQ4NCwxMyBAQCBwcml2YXRlOgogICAgICAgICBpbnQg
bV9pbmRleDsKICAgICAgICAgaW50IG1fc3ViSW5kZXg7CiAgICAgICAgIFNlY29uZHMgbV90aW1l
T2Zmc2V0OworICAgICAgICBQbGF5U3RhdGUgbV9wbGF5U3RhdGUgeyBQbGF5UGVuZGluZyB9Owor
ICAgICAgICBib29sIG1fcGVuZGluZ1JlbW92YWwgeyBmYWxzZSB9OworICAgICAgICBTZWNvbmRz
IG1fYmVnaW5UaW1lIHsgMF9zIH07CiAgICAgfTsKIAogICAgIGJvb2wgYXBwZW5kVG9VbmNvbW1p
dHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zKiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUsIGludCBhbmltYXRpb25JbmRleCwgU2Vjb25kcyB0
aW1lT2Zmc2V0LCBib29sIGlzTWF0cml4QW5pbWF0aW9uKTsKICAgICBib29sIGFwcGVuZFRvVW5j
b21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgRmlsdGVy
T3BlcmF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
LCBpbnQgYW5pbWF0aW9uSW5kZXgsIFNlY29uZHMgdGltZU9mZnNldCk7Ci0gICAgdm9pZCBhcHBl
bmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyhMYXllclByb3BlcnR5QW5pbWF0aW9uJiYpOwotICAg
IHZvaWQgcmVtb3ZlRnJvbVVuY29tbWl0dGVkQW5pbWF0aW9ucyhjb25zdCBTdHJpbmcmKTsKIAog
ICAgIGVudW0gTGF5ZXJDaGFuZ2UgOiB1aW50NjRfdCB7CiAgICAgICAgIE5vQ2hhbmdlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAsCkBAIC01NTksMTggKzU1NCw2IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHJlcGFpbnRMYXllckRpcnR5UmVjdHMoKTsKIAotICAgIGVudW0gQWN0
aW9uIHsgUmVtb3ZlLCBQYXVzZSB9OwotICAgIHN0cnVjdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0
aW9uIHsKLSAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihBY3Rpb24gYWN0aW9uID0g
UmVtb3ZlLCBTZWNvbmRzIHRpbWVPZmZzZXQgPSAwX3MpCi0gICAgICAgICAgICA6IGFjdGlvbihh
Y3Rpb24pCi0gICAgICAgICAgICAsIHRpbWVPZmZzZXQodGltZU9mZnNldCkKLSAgICAgICAgewot
ICAgICAgICB9Ci0gICAgICAgIEFjdGlvbiBhY3Rpb247Ci0gICAgICAgIFNlY29uZHMgdGltZU9m
ZnNldDsgLy8gT25seSB1c2VkIGZvciBwYXVzZS4KLSAgICB9OwotICAgIHZvaWQgYWRkUHJvY2Vz
c2luZ0FjdGlvbkZvckFuaW1hdGlvbihjb25zdCBTdHJpbmcmLCBBbmltYXRpb25Qcm9jZXNzaW5n
QWN0aW9uKTsKLQogICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91bmNvbW1pdHRlZENoYW5nZXMgeyAw
IH07CiAKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX2xheWVyOyAvLyBUaGUgbWFpbiBs
YXllcgpAQCAtNjExLDE2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKICAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBWZWN0b3I8QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbj4+IEFuaW1hdGlvbnNUb1Byb2Nl
c3NNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPExheWVyUHJvcGVydHlB
bmltYXRpb24+PiBBbmltYXRpb25zTWFwOwotICAgIHN0cnVjdCBMYXllckFuaW1hdGlvbnMgewot
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiB1bmNvbWl0dGVkQW5pbWF0aW9uczsKLSAgICAgICAgQW5p
bWF0aW9uc1RvUHJvY2Vzc01hcCBhbmltYXRpb25zVG9Qcm9jZXNzOwotICAgICAgICBBbmltYXRp
b25zTWFwIHJ1bm5pbmdBbmltYXRpb25zOwotICAgIH07Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVf
cHRyPExheWVyQW5pbWF0aW9ucz4gbV9hbmltYXRpb25zOworICAgIFZlY3RvcjxMYXllclByb3Bl
cnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBtX2Rp
cnR5UmVjdHM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411344</attachid>
            <date>2020-10-14 10:08:57 -0700</date>
            <delta_ts>2020-10-14 11:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217707-20201014190856.patch</filename>
            <type>text/plain</type>
            <size>23952</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTA2YTc0ZjMzZjU0MmNk
NjZlY2U4OWIyNjk1NzdlNzg2NDRiZGI1MC4uMGNiYTUxNWJmZTBjNDQyZTRlODIyODAzMzAyOGEy
OTlkN2RlOWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFNpbXBsaWZ5IG1hbmFn
ZW1lbnQgb2YgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBpbnN0YW5jZXMgaW4gR3JhcGhpY3NMYXll
ckNBCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3
MDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwMjkxMTQwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtYW5hZ2VtZW50IG9mIExheWVyUHJv
cGVydHlBbmltYXRpb24gaW5zdGFuY2VzIGluIEdyYXBoaWNzTGF5ZXJDQSBzcHJlYWQKKyAgICAg
ICAgdGhvc2UgYW5pbWF0aW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBkYXRhIHN0cnVjdHVyZXMuIFdl
IG5vdyBzaW1wbGlmeSB0aGlzIHRvCisgICAgICAgIGJlIGEgc2luZ2xlIFZlY3RvcjxMYXllclBy
b3BlcnR5QW5pbWF0aW9uPiB3aXRoIHRocmVlIG5ldyBwcm9wZXJ0aWVzLgorCisgICAgICAgIFRo
ZSBtX3BsYXlTdGF0ZSBwcm9wZXJ0eSBpbmRpY2F0ZXM6CisKKyAgICAgICAgLSB3aGV0aGVyIHRo
ZSBhbmltYXRpb24gaGFzIGJlZW4gYWRkZWQgdG8gdGhlIGxpc3QgYnV0IGF3YWl0aW5nIHRoZSBu
ZXh0IGNvbW1pdAorICAgICAgICB0byBiZSBwbGF5ZWQgKFBsYXlQZW5kaW5nKQorICAgICAgICAt
IHdoZXRoZXIgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBjb21taXR0ZWQgYW5kIHBsYXlpbmcgKFBs
YXlpbmcpCisgICAgICAgIC0gd2hldGhlciB0aGUgYW5pbWF0aW9uIGhhcyBiZWVuIG1hcmtlZCB0
byBiZSBwYXVzZWQgYnV0IGF3YWl0aW5nIHRoZSBuZXh0IGNvbW1pdAorICAgICAgICB0byBiZSBw
YXVzZWQgKFBhdXNlUGVuZGluZykKKyAgICAgICAgLSB3aGV0aGVyIHRoZSBhbmltYXRpb24gaGFz
IGJlZW4gY29tbWl0dGVkIGFuZCBwYXVzZWQgKFBhdXNlZCkKKworICAgICAgICBUaGUgbV9wZW5k
aW5nUmVtb3ZhbCBwcm9wZXJ0eSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgYW5pbWF0aW9uIGhhcyBi
ZWVuIG1hcmtlZCBmb3IKKyAgICAgICAgcmVtb3ZhbCB1cG9uIHRoZSBuZXh0IGNvbW1pdC4KKwor
ICAgICAgICBUaGUgbV9iZWdpblRpbWUgcHJvcGVydHkgaW5kaWNhdGVzIHRoZSB0aW1lIGF0IHdo
aWNoIHRoZSBhbmltYXRpb24gd2FzIGZpcnN0IGFkZGVkLAorICAgICAgICBlbnN1cmluZyB0aGF0
IHRoZSBhbmltYXRpb24gY2FuIGJlIHJlbW92ZWQgYW5kIHJlLWFkZGVkIHdoaWxlIHByZXNlcnZp
bmcgdGhlIHNhbWUKKyAgICAgICAgYmVnaW4gdGltZS4KKworICAgICAgICBBcyBzdWNoLCB3aGVu
IEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucygpIGlzIGNhbGxlZCB3ZSByZW1vdmUg
YWxsIGFuaW1hdGlvbnMKKyAgICAgICAgZnJvbSB0aGUgbGF5ZXIsIGZpbHRlciBtX2FuaW1hdGlv
bnMgdG8gb25seSBoYXZlIGFuaW1hdGlvbnMgdGhhdCBhcmUgbm90IG1hcmtlZAorICAgICAgICBh
cyBwZW5kaW5nIHJlbW92YWwsIGFuZCBhZGQgdGhlIG5vdy1jdXJyZW50IGxpc3Qgb2YgYW5pbWF0
aW9ucyB0byB0aGUgbGF5ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3Qgc2luY2UgdGhpcyBjaGFu
Z2UgaXMgcmVmYWN0b3Jpbmcgb25seSBhbmQgc2hvdWxkIG5vdCBoYXZlIGFueSBjaGFuZ2UKKyAg
ICAgICAgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjptb3Zl
T3JDb3B5QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmFu
aW1hdGlvbklzUnVubmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphbmltYXRpb25DYW5C
ZUFjY2VsZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VB
bmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpyZW1vdmVBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJhbnNm
b3JtQW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uT25MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjphcHBlbmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJh
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uQ2FuQmVB
Y2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OmFkZFByb2Nlc3NpbmdBY3Rpb25Gb3JBbmltYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpoYXNBbmltYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uSXNSdW5uaW5nIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6QW5pbWF0
aW9uUHJvY2Vzc2luZ0FjdGlvbjo6QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbik6IERlbGV0ZWQu
CisKIDIwMjAtMTAtMTMgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgdHJhbnNmb3JtLW9yaWdpbiBpcyBhcHBsaWVkIG9uIHRvcCBvZiBpbnZpZGl2dWFsIENT
UyB0cmFuc2Zvcm0gcHJvcGVydGllcyBvbiBjb21wb3NpdGVkIGxheWVycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
aW5kZXggNWU5NjQ3ZmZhYzgwMTNmOTI0MzdmNWRhZWIxMGE4N2I1NWFlNDM2Yy4uZmI0MTRkYzdk
ZDVhYThkZDBkYThjOTYxOTQyNGM1MDk4NmY5MTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC02OTMs
MjIgKzY5MywxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6bW92ZU9yQ29weUxheWVyQW5pbWF0
aW9uKE1vdmVPckNvcHkgb3BlcmF0aW9uLCBjb25zdCBTdHJpbgogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6bW92ZU9yQ29weUFuaW1hdGlvbnMoTW92ZU9yQ29weSBvcGVyYXRpb24sIFBsYXRmb3Jt
Q0FMYXllciAqZnJvbUxheWVyLCBQbGF0Zm9ybUNBTGF5ZXIgKnRvTGF5ZXIpCiB7Ci0gICAgaWYg
KCFoYXNBbmltYXRpb25zKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIExvb2sgZm9yIHJ1
bm5pbmcgYW5pbWF0aW9ucyBhZmZlY3RpbmcgdGhpcyBwcm9wZXJ0eS4KLSAgICBmb3IgKGNvbnN0
IGF1dG8mIGl0IDogbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucykgewotICAgICAgICBj
b25zdCBhdXRvJiBwcm9wZXJ0eUFuaW1hdGlvbnMgPSBpdC52YWx1ZTsKLSAgICAgICAgc2l6ZV90
IG51bUFuaW1hdGlvbnMgPSBwcm9wZXJ0eUFuaW1hdGlvbnMuc2l6ZSgpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29u
c3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlvbiA9IHByb3BlcnR5QW5pbWF0
aW9uc1tpXTsKLQotICAgICAgICAgICAgaWYgKGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBB
bmltYXRlZFByb3BlcnR5VHJhbnNmb3JtCi0gICAgICAgICAgICAgICAgfHwgY3VyckFuaW1hdGlv
bi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5Ci0gICAgICAgICAgICAgICAg
fHwgY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IKLSAgICAgICAgICAgICAgICB8fCBjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5p
bWF0ZWRQcm9wZXJ0eUZpbHRlcikKLSAgICAgICAgICAgICAgICBtb3ZlT3JDb3B5TGF5ZXJBbmlt
YXRpb24ob3BlcmF0aW9uLCBhbmltYXRpb25JZGVudGlmaWVyKGN1cnJBbmltYXRpb24ubV9uYW1l
LCBjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb24ubV9pbmRleCwgY3VyckFu
aW1hdGlvbi5tX3N1YkluZGV4KSwgZnJvbUxheWVyLCB0b0xheWVyKTsKLSAgICAgICAgfQorICAg
IGZvciAoYXV0byYgYW5pbWF0aW9uIDogbV9hbmltYXRpb25zKSB7CisgICAgICAgIGlmICgoYW5p
bWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybQorICAgICAgICAg
ICAgfHwgYW5pbWF0aW9uLm1fcHJvcGVydHkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkKKyAg
ICAgICAgICAgIHx8IGFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IKKyAgICAgICAgICAgIHx8IGFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1h
dGVkUHJvcGVydHlGaWx0ZXIpCisgICAgICAgICAgICAmJiAoYW5pbWF0aW9uLm1fcGxheVN0YXRl
ID09IFBsYXlpbmcgfHwgYW5pbWF0aW9uLm1fcGxheVN0YXRlID09IFBhdXNlZCkpCisgICAgICAg
ICAgICBtb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24ob3BlcmF0aW9uLCBhbmltYXRpb25JZGVudGlm
aWVyKGFuaW1hdGlvbi5tX25hbWUsIGFuaW1hdGlvbi5tX3Byb3BlcnR5LCBhbmltYXRpb24ubV9p
bmRleCwgYW5pbWF0aW9uLm1fc3ViSW5kZXgpLCBmcm9tTGF5ZXIsIHRvTGF5ZXIpOwogICAgIH0K
IH0KIApAQCAtMTAyNiw3ICsxMDE3LDE1IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpzaG91bGRS
ZXBhaW50T25TaXplQ2hhbmdlKCkgY29uc3QKICAgICByZXR1cm4gZHJhd3NDb250ZW50KCkgJiYg
IXRpbGVkQmFja2luZygpOwogfQogCi1ib29sIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uQ2Fu
QmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBB
bmltYXRpb24qIGFuaW0pIGNvbnN0Citib29sIEdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uSXNS
dW5uaW5nKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkgY29uc3QKK3sKKyAgICBhdXRvIGlu
ZGV4ID0gbV9hbmltYXRpb25zLmZpbmRNYXRjaGluZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
biBhbmltYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi5tX25hbWUgPT0gYW5pbWF0
aW9uTmFtZTsKKyAgICB9KTsKKyAgICByZXR1cm4gaW5kZXggIT0gbm90Rm91bmQgJiYgbV9hbmlt
YXRpb25zW2luZGV4XS5tX3BsYXlTdGF0ZSA9PSBQbGF5aW5nOworfQorCitzdGF0aWMgYm9vbCBh
bmltYXRpb25DYW5CZUFjY2VsZXJhdGVkKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
c3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKIHsKICAgICBpZiAoYW5pbS0+cGxheWJhY2tSYXRl
KCkgIT0gMSB8fCAhYW5pbS0+ZGlyZWN0aW9uSXNGb3J3YXJkcygpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMDQwLDIwICsxMDM5LDYgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFuaW1h
dGlvbkNhbkJlQWNjZWxlcmF0ZWQoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OmFkZFByb2Nlc3NpbmdB
Y3Rpb25Gb3JBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBBbmltYXRpb25Q
cm9jZXNzaW5nQWN0aW9uIHByb2Nlc3NpbmdBY3Rpb24pCi17Ci0gICAgZW5zdXJlTGF5ZXJBbmlt
YXRpb25zKCk7Ci0KLSAgICBhdXRvJiBwcm9jZXNzaW5nQWN0aW9ucyA9IG1fYW5pbWF0aW9ucy0+
YW5pbWF0aW9uc1RvUHJvY2Vzcy5lbnN1cmUoYW5pbWF0aW9uTmFtZSwgW10gewotICAgICAgICBy
ZXR1cm4gVmVjdG9yPEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+IHsgfTsKLSAgICB9KS5pdGVy
YXRvci0+dmFsdWU7Ci0KLSAgICBpZiAoIXByb2Nlc3NpbmdBY3Rpb25zLmlzRW1wdHkoKSAmJiBw
cm9jZXNzaW5nQWN0aW9ucy5sYXN0KCkuYWN0aW9uID09IFJlbW92ZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcHJvY2Vzc2luZ0FjdGlvbnMuYXBwZW5kKHByb2Nlc3NpbmdBY3Rpb24pOwotfQot
CiBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVM
aXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSwgY29uc3QgQW5pbWF0aW9u
KiBhbmltLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQog
ewogICAgIExPR19XSVRIX1NUUkVBTShBbmltYXRpb25zLCBzdHJlYW0gPDwgIkdyYXBoaWNzTGF5
ZXJDQSAiIDw8IHRoaXMgPDwgIiBpZCAiIDw8IHByaW1hcnlMYXllcklEKCkgPDwgIiBhZGRBbmlt
YXRpb24gIiA8PCBhbmltIDw8ICIgIiA8PCBhbmltYXRpb25OYW1lIDw8ICIgZHVyYXRpb24gIiA8
PCBhbmltLT5kdXJhdGlvbigpIDw8ICIgKGNhbiBiZSBhY2NlbGVyYXRlZCAiIDw8IGFuaW1hdGlv
bkNhbkJlQWNjZWxlcmF0ZWQodmFsdWVMaXN0LCBhbmltKSA8PCAiKSIpOwpAQCAtMTA4OSw4ICsx
MDc0LDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2ZmCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFN
KEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiR3JhcGhpY3NMYXllckNBICIgPDwgdGhpcyA8PCAiIGlk
ICIgPDwgcHJpbWFyeUxheWVySUQoKSA8PCAiIHBhdXNlQW5pbWF0aW9uICIgPDwgYW5pbWF0aW9u
TmFtZSA8PCAiIChpcyBydW5uaW5nICIgPDwgYW5pbWF0aW9uSXNSdW5uaW5nKGFuaW1hdGlvbk5h
bWUpIDw8ICIpIik7CiAKLSAgICAvLyBDYWxsIGFkZCBzaW5jZSBpZiB0aGVyZSBpcyBhbHJlYWR5
IGEgUmVtb3ZlIGluIHRoZXJlLCB3ZSBkb24ndCB3YW50IHRvIG92ZXJ3cml0ZSBpdCB3aXRoIGEg
UGF1c2UuCi0gICAgYWRkUHJvY2Vzc2luZ0FjdGlvbkZvckFuaW1hdGlvbihhbmltYXRpb25OYW1l
LCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uIHsgUGF1c2UsIFNlY29uZHMgeyB0aW1lT2Zmc2V0
IH0gfSk7CisgICAgYXV0byBpbmRleCA9IG1fYW5pbWF0aW9ucy5maW5kTWF0Y2hpbmcoWyZdKExh
eWVyUHJvcGVydHlBbmltYXRpb24gYW5pbWF0aW9uKSB7CisgICAgICAgIHJldHVybiBhbmltYXRp
b24ubV9uYW1lID09IGFuaW1hdGlvbk5hbWUgJiYgIWFuaW1hdGlvbi5tX3BlbmRpbmdSZW1vdmFs
OworICAgIH0pOworCisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvJiBhbmltYXRpb24gPSBtX2FuaW1hdGlvbnNbaW5kZXhdOworICAgIGFuaW1h
dGlvbi5tX3BsYXlTdGF0ZSA9IFBhdXNlUGVuZGluZzsKKyAgICBhbmltYXRpb24ubV90aW1lT2Zm
c2V0ID0gU2Vjb25kcyB7IHRpbWVPZmZzZXQgfTsKIAogICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZChBbmltYXRpb25DaGFuZ2VkKTsKIH0KQEAgLTEwOTksMTIgKzEwOTIsMTUgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiR3JhcGhp
Y3NMYXllckNBICIgPDwgdGhpcyA8PCAiIGlkICIgPDwgcHJpbWFyeUxheWVySUQoKSA8PCAiIHJl
bW92ZUFuaW1hdGlvbiAiIDw8IGFuaW1hdGlvbk5hbWUgPDwgIiAoaXMgcnVubmluZyAiIDw8IGFu
aW1hdGlvbklzUnVubmluZyhhbmltYXRpb25OYW1lKSA8PCAiKSIpOwogCi0gICAgaWYgKCFhbmlt
YXRpb25Jc1J1bm5pbmcoYW5pbWF0aW9uTmFtZSkpIHsKLSAgICAgICAgcmVtb3ZlRnJvbVVuY29t
bWl0dGVkQW5pbWF0aW9ucyhhbmltYXRpb25OYW1lKTsKKyAgICBhdXRvIGluZGV4ID0gbV9hbmlt
YXRpb25zLmZpbmRNYXRjaGluZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBhbmltYXRpb24p
IHsKKyAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi5tX25hbWUgPT0gYW5pbWF0aW9uTmFtZSAmJiAh
YW5pbWF0aW9uLm1fcGVuZGluZ1JlbW92YWw7CisgICAgfSk7CisKKyAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBhZGRQcm9jZXNzaW5nQWN0
aW9uRm9yQW5pbWF0aW9uKGFuaW1hdGlvbk5hbWUsIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24o
UmVtb3ZlKSk7CisgICAgbV9hbmltYXRpb25zW2luZGV4XS5tX3BlbmRpbmdSZW1vdmFsID0gdHJ1
ZTsKKwogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2VkIHwgQ292
ZXJhZ2VSZWN0Q2hhbmdlZCk7CiB9CiAKQEAgLTI4NTIsODYgKzI4NDgsNDEgQEAgUmVmUHRyPFBs
YXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpyZXBsaWNhdGVkTGF5ZXJSb290KFJlcGxp
Y2FTdGF0ZSYgcmVwbGkKIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUFuaW1hdGlvbnMo
KQogewotICAgIGlmICghaGFzQW5pbWF0aW9ucygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBz
aXplX3QgbnVtQW5pbWF0aW9uczsKLSAgICBpZiAoKG51bUFuaW1hdGlvbnMgPSBtX2FuaW1hdGlv
bnMtPnVuY29taXR0ZWRBbmltYXRpb25zLnNpemUoKSkpIHsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IExheWVy
UHJvcGVydHlBbmltYXRpb24mIHBlbmRpbmdBbmltYXRpb24gPSBtX2FuaW1hdGlvbnMtPnVuY29t
aXR0ZWRBbmltYXRpb25zW2ldOwotICAgICAgICAgICAgc2V0QW5pbWF0aW9uT25MYXllcigqcGVu
ZGluZ0FuaW1hdGlvbi5tX2FuaW1hdGlvbiwgcGVuZGluZ0FuaW1hdGlvbi5tX3Byb3BlcnR5LCBw
ZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgcGVuZGluZ0FuaW1hdGlvbi5tX2luZGV4LCBwZW5kaW5n
QW5pbWF0aW9uLm1fc3ViSW5kZXgsIHBlbmRpbmdBbmltYXRpb24ubV90aW1lT2Zmc2V0KTsKLQot
ICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnMtPnJ1
bm5pbmdBbmltYXRpb25zLmZpbmQocGVuZGluZ0FuaW1hdGlvbi5tX25hbWUpOwotICAgICAgICAg
ICAgaWYgKGl0ID09IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpIHsKLSAg
ICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gYW5pbWF0aW9uczsK
LSAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChwZW5kaW5nQW5pbWF0aW9uKTsKLSAg
ICAgICAgICAgICAgICBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRpb25zLmFkZChwZW5kaW5n
QW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0aW9ucyA9
IGl0LT52YWx1ZTsKLSAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChwZW5kaW5nQW5p
bWF0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX2FuaW1hdGlvbnMt
PnVuY29taXR0ZWRBbmltYXRpb25zLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgaWYgKG1fYW5pbWF0
aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2Vzcy5zaXplKCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBpdCA6IG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2VzcykgewotICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBjdXJyZW50QW5pbWF0aW9uTmFtZSA9IGl0LmtleTsKLSAgICAgICAg
ICAgIGF1dG8gYW5pbWF0aW9uSXRlcmF0b3IgPSBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRp
b25zLmZpbmQoY3VycmVudEFuaW1hdGlvbk5hbWUpOwotICAgICAgICAgICAgaWYgKGFuaW1hdGlv
bkl0ZXJhdG9yID09IG1fYW5pbWF0aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgLy8gUmVtb3ZlIGFsbCBhbmltYXRpb25zIHNvIGZh
ci4KKyAgICBmb3IgKGF1dG8mIGFuaW1hdGlvbiA6IG1fYW5pbWF0aW9ucykKKyAgICAgICAgcmVt
b3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoYW5pbWF0aW9uLm1fcHJvcGVydHksIGFuaW1hdGlvbi5t
X25hbWUsIGFuaW1hdGlvbi5tX2luZGV4LCBhbmltYXRpb24ubV9zdWJJbmRleCk7CiAKLSAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcHJvY2Vzc2luZ0luZm8gOiBpdC52YWx1ZSkgewotICAg
ICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiYgYW5pbWF0
aW9ucyA9IGFuaW1hdGlvbkl0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGN1cnJlbnRBbmltYXRpb24gOiBhbmltYXRpb25zKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAocHJvY2Vzc2luZ0luZm8uYWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgUmVtb3ZlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ0FBbmltYXRp
b25Gcm9tTGF5ZXIoY3VycmVudEFuaW1hdGlvbi5tX3Byb3BlcnR5LCBjdXJyZW50QW5pbWF0aW9u
TmFtZSwgY3VycmVudEFuaW1hdGlvbi5tX2luZGV4LCBjdXJyZW50QW5pbWF0aW9uLm1fc3ViSW5k
ZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgUGF1c2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXVzZUNBQW5pbWF0aW9uT25M
YXllcihjdXJyZW50QW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJlbnRBbmltYXRpb25OYW1lLCBj
dXJyZW50QW5pbWF0aW9uLm1faW5kZXgsIGN1cnJlbnRBbmltYXRpb24ubV9zdWJJbmRleCwgcHJv
Y2Vzc2luZ0luZm8udGltZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0gUmVtb3ZlKQotICAgICAgICAgICAgICAg
ICAgICBtX2FuaW1hdGlvbnMtPnJ1bm5pbmdBbmltYXRpb25zLnJlbW92ZShjdXJyZW50QW5pbWF0
aW9uTmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAvLyBSZW1vdmUgYWxsIGFu
aW1hdGlvbnMgZnJvbSB0aGUgbGlzdCB0aGF0IHdlcmUgcGVuZGluZyByZW1vdmFsLgorICAgIG1f
YW5pbWF0aW9ucy5yZW1vdmVBbGxNYXRjaGluZyhbJl0oTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiBh
bmltYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIGFuaW1hdGlvbi5tX3BlbmRpbmdSZW1vdmFsOwor
ICAgIH0pOwogCi0gICAgICAgIG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2Vzcy5jbGVh
cigpOworICAgIC8vIEFkZCBhbGwgcmVtYWluaW5nIGFuaW1hdGlvbnMuCisgICAgYXV0byBjdXJy
ZW50VGltZSA9IENBQ3VycmVudE1lZGlhVGltZSgpOworICAgIGZvciAoYXV0byYgYW5pbWF0aW9u
IDogbV9hbmltYXRpb25zKSB7CisgICAgICAgIGlmICghYW5pbWF0aW9uLm1fYmVnaW5UaW1lKQor
ICAgICAgICAgICAgYW5pbWF0aW9uLm1fYmVnaW5UaW1lID0gU2Vjb25kcyhjdXJyZW50VGltZSk7
CisgICAgICAgIHNldEFuaW1hdGlvbk9uTGF5ZXIoKmFuaW1hdGlvbi5tX2FuaW1hdGlvbiwgYW5p
bWF0aW9uLm1fcHJvcGVydHksIGFuaW1hdGlvbi5tX25hbWUsIGFuaW1hdGlvbi5tX2luZGV4LCBh
bmltYXRpb24ubV9zdWJJbmRleCwgYW5pbWF0aW9uLm1fYmVnaW5UaW1lIC0gYW5pbWF0aW9uLm1f
dGltZU9mZnNldCk7CisgICAgICAgIGlmIChhbmltYXRpb24ubV9wbGF5U3RhdGUgPT0gUGF1c2VQ
ZW5kaW5nIHx8IGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9PSBQYXVzZWQpIHsKKyAgICAgICAgICAg
IHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKGFuaW1hdGlvbi5tX3Byb3BlcnR5LCBhbmltYXRpb24u
bV9uYW1lLCBhbmltYXRpb24ubV9pbmRleCwgYW5pbWF0aW9uLm1fc3ViSW5kZXgsIGFuaW1hdGlv
bi5tX3RpbWVPZmZzZXQpOworICAgICAgICAgICAgYW5pbWF0aW9uLm1fcGxheVN0YXRlID0gUGF1
c2VkOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9
IFBsYXlpbmc7CiAgICAgfQogfQogCiBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJh
bnNmb3JtQW5pbWF0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoIWhhc0FuaW1hdGlvbnMoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IG1fYW5pbWF0
aW9ucy0+cnVubmluZ0FuaW1hdGlvbnMpIHsKLSAgICAgICAgY29uc3QgYXV0byYgcHJvcGVydHlB
bmltYXRpb25zID0gaXQudmFsdWU7Ci0gICAgICAgIHNpemVfdCBudW1BbmltYXRpb25zID0gcHJv
cGVydHlBbmltYXRpb25zLnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1BbmltYXRpb25zOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmlt
YXRpb24mIGN1cnJBbmltYXRpb24gPSBwcm9wZXJ0eUFuaW1hdGlvbnNbaV07Ci0gICAgICAgICAg
ICBpZiAoY3VyckFuaW1hdGlvbi5tX3Byb3BlcnR5ID09IEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zv
cm0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJBbmlt
YXRpb25zKCkKLXsKLSAgICBpZiAoIW1fYW5pbWF0aW9ucykKLSAgICAgICAgbV9hbmltYXRpb25z
ID0gbWFrZVVuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CisgICAgcmV0dXJuIG1fYW5pbWF0aW9u
cy5maW5kTWF0Y2hpbmcoWyZdKExheWVyUHJvcGVydHlBbmltYXRpb24gYW5pbWF0aW9uKSB7Cisg
ICAgICAgIHJldHVybiBhbmltYXRpb24ubV9wcm9wZXJ0eSA9PSBBbmltYXRlZFByb3BlcnR5VHJh
bnNmb3JtICYmIGFuaW1hdGlvbi5tX3BsYXlTdGF0ZSA9PSBQbGF5aW5nOworICAgIH0pICE9IG5v
dEZvdW5kOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uT25MYXllcihQ
bGF0Zm9ybUNBQW5pbWF0aW9uJiBjYUFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwg
Y29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRleCwgU2Vj
b25kcyB0aW1lT2Zmc2V0KQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5
ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYgY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVy
dHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgs
IFNlY29uZHMgYmVnaW5UaW1lKQogewogICAgIFBsYXRmb3JtQ0FMYXllciogbGF5ZXIgPSBhbmlt
YXRlZExheWVyKHByb3BlcnR5KTsKIAotICAgIGlmICh0aW1lT2Zmc2V0KQotICAgICAgICBjYUFu
aW0uc2V0QmVnaW5UaW1lKENBQ3VycmVudE1lZGlhVGltZSgpIC0gdGltZU9mZnNldC5zZWNvbmRz
KCkpOworICAgIGNhQW5pbS5zZXRCZWdpblRpbWUoYmVnaW5UaW1lLnNlY29uZHMoKSk7CiAKICAg
ICBTdHJpbmcgYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUs
IHByb3BlcnR5LCBpbmRleCwgc3ViSW5kZXgpOwogCkBAIC0zMDY4LDcgKzMwMTksNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsdQogICAgIGlmICghdmFsdWVzT0spCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKExheWVyUHJvcGVydHlB
bmltYXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFs
dWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CisgICAg
bV9hbmltYXRpb25zLmFwcGVuZChMYXllclByb3BlcnR5QW5pbWF0aW9uKGNhQW5pbWF0aW9uLnJl
bGVhc2VOb25OdWxsKCksIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmlt
YXRpb25JbmRleCwgMCwgdGltZU9mZnNldCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0z
MDk5LDcgKzMwNTAsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YXBwZW5kVG9VbmNvbW1pdHRl
ZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAgIGlmICghdmFsaWRN
YXRyaWNlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXBwZW5kVG9VbmNvbW1pdHRl
ZEFuaW1hdGlvbnMoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihjYUFuaW1hdGlvbi5yZWxlYXNlTm9u
TnVsbCgpLCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5k
ZXgsIDAsIHRpbWVPZmZzZXQpKTsKKyAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVy
dHlBbmltYXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwg
dmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCAwLCB0aW1lT2Zmc2V0KSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxNTksNDkgKzMxMTAsMTIgQEAgYm9vbCBHcmFwaGlj
c0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1ZXNPSyk7CiAKLSAgICAg
ICAgYXBwZW5kVG9VbmNvbW1pdHRlZEFuaW1hdGlvbnMoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihj
YUFuaW1hdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBhbmltYXRpb25OYW1lLCB2YWx1ZUxpc3QucHJv
cGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCwgdGlt
ZU9mZnNldCkpOworICAgICAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmlt
YXRpb24oY2FBbmltYXRpb24ucmVsZWFzZU5vbk51bGwoKSwgYW5pbWF0aW9uTmFtZSwgdmFsdWVM
aXN0LnByb3BlcnR5KCksIGFuaW1hdGlvbkluZGV4LCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5k
ZXgsIHRpbWVPZmZzZXQpKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmFwcGVuZFRvVW5jb21taXR0ZWRBbmltYXRpb25zKExheWVyUHJvcGVy
dHlBbmltYXRpb24mJiBhbmltYXRpb24pCi17Ci0gICAgZW5zdXJlTGF5ZXJBbmltYXRpb25zKCk7
Ci0KLSAgICAvLyBTaW5jZSB3ZSdyZSBhZGRpbmcgYSBuZXcgYW5pbWF0aW9uLCBtYWtlIHN1cmUg
d2UgY2xlYXIgYW55IHBlbmRpbmcgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiBmb3IgdGhpcyBh
bmltYXRpb24KLSAgICAvLyBhcyB0aGVzZSBhcmUgYXBwbGllZCBhZnRlciB3ZSd2ZSBjb21taXR0
ZWQgbmV3IGFuaW1hdGlvbnMuIEhvd2V2ZXIsIHdlIHdhbnQgdG8gY2hlY2sgaWYgd2UgaGFkIGEg
cGVuZGluZyByZW1vdmFsCi0gICAgLy8gc3VjaCB0aGF0IHJlbW92aW5nIGFuIGFuaW1hdGlvbiBw
cmlvciB0byBhZGRpbmcgYSBuZXcgb25lIGZvciB0aGUgc2FtZSBuYW1lIHdvcmtzLgotICAgIGF1
dG8gcHJvY2Vzc2luZ0luZm9JdGVyYXRvciA9IG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJv
Y2Vzcy5maW5kKGFuaW1hdGlvbi5tX25hbWUpOwotICAgIGlmIChwcm9jZXNzaW5nSW5mb0l0ZXJh
dG9yICE9IG1fYW5pbWF0aW9ucy0+YW5pbWF0aW9uc1RvUHJvY2Vzcy5lbmQoKSkgewotICAgICAg
ICBhdXRvIGFuaW1hdGlvbkl0ZXJhdG9yID0gbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9u
cy5maW5kKGFuaW1hdGlvbi5tX25hbWUpOwotICAgICAgICBpZiAoYW5pbWF0aW9uSXRlcmF0b3Ig
IT0gbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKSkgewotICAgICAgICAgICAg
YXV0byYgYW5pbWF0aW9ucyA9IGFuaW1hdGlvbkl0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgcHJvY2Vzc2luZ0luZm8gOiBwcm9jZXNzaW5nSW5mb0l0ZXJhdG9y
LT52YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzaW5nSW5mby5hY3Rpb24gPT0g
UmVtb3ZlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY3VycmVudEFu
aW1hdGlvbiA6IGFuaW1hdGlvbnMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDQUFu
aW1hdGlvbkZyb21MYXllcihjdXJyZW50QW5pbWF0aW9uLm1fcHJvcGVydHksIGFuaW1hdGlvbi5t
X25hbWUsIGN1cnJlbnRBbmltYXRpb24ubV9pbmRleCwgY3VycmVudEFuaW1hdGlvbi5tX3N1Yklu
ZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9u
cy5yZW1vdmUoYW5pbWF0aW9uSXRlcmF0b3IpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9h
bmltYXRpb25zLT5hbmltYXRpb25zVG9Qcm9jZXNzLnJlbW92ZShwcm9jZXNzaW5nSW5mb0l0ZXJh
dG9yKTsKLSAgICB9Ci0KLSAgICBtX2FuaW1hdGlvbnMtPnVuY29taXR0ZWRBbmltYXRpb25zLmFw
cGVuZChXVEZNb3ZlKGFuaW1hdGlvbikpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVt
b3ZlRnJvbVVuY29tbWl0dGVkQW5pbWF0aW9ucyhjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUp
Ci17Ci0gICAgaWYgKCFtX2FuaW1hdGlvbnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYW5p
bWF0aW9ucy0+dW5jb21pdHRlZEFuaW1hdGlvbnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJmFuaW1h
dGlvbk5hbWVdIChhdXRvJiBjdXJyZW50KSB7Ci0gICAgICAgIHJldHVybiBjdXJyZW50Lm1fbmFt
ZSA9PSBhbmltYXRpb25OYW1lOwotICAgIH0pOwotfQotCiBib29sIEdyYXBoaWNzTGF5ZXJDQTo6
Y3JlYXRlRmlsdGVyQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxp
c3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgU2Vjb25kcyB0aW1lT2Zmc2V0KQogewogI2lmIEVOQUJMRShGSUxURVJT
X0xFVkVMXzIpCkBAIC00MzA4LDE2ICs0MjIyLDkgQEAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IGRvdWJsZT4+IEdyYXBoaWNzTGF5ZXJDQTo6YWNjZWxlcmF0ZWRBbmltYXRpb25zRm9yVGVzdGkK
IHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgZG91YmxlPj4gYW5pbWF0aW9uczsKIAot
ICAgIGlmIChoYXNBbmltYXRpb25zKCkpIHsKLSAgICAgICAgZm9yIChhdXRvIGl0IDogbV9hbmlt
YXRpb25zLT5ydW5uaW5nQW5pbWF0aW9ucykgewotICAgICAgICAgICAgYXV0byYgcHJvcGVydHlB
bmltYXRpb25zID0gaXQudmFsdWU7Ci0gICAgICAgICAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9
IHByb3BlcnR5QW5pbWF0aW9ucy5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IExheWVy
UHJvcGVydHlBbmltYXRpb24mIGN1cnJBbmltYXRpb24gPSBwcm9wZXJ0eUFuaW1hdGlvbnNbaV07
Ci0gICAgICAgICAgICAgICAgYXV0byBjYUFuaW1hdGlvbiA9IGFuaW1hdGVkTGF5ZXIoY3VyckFu
aW1hdGlvbi5tX3Byb3BlcnR5KS0+YW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIo
Y3VyckFuaW1hdGlvbi5tX25hbWUsIGN1cnJBbmltYXRpb24ubV9wcm9wZXJ0eSwgY3VyckFuaW1h
dGlvbi5tX2luZGV4LCBjdXJyQW5pbWF0aW9uLm1fc3ViSW5kZXgpKTsKLSAgICAgICAgICAgICAg
ICBhbmltYXRpb25zLmFwcGVuZCh7IGFuaW1hdGVkUHJvcGVydHlJREFzU3RyaW5nKGN1cnJBbmlt
YXRpb24ubV9wcm9wZXJ0eSksIGNhQW5pbWF0aW9uLT5zcGVlZCgpIH0pOwotICAgICAgICAgICAg
fQotICAgICAgICB9CisgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiBtX2FuaW1hdGlvbnMpIHsK
KyAgICAgICAgYXV0byBjYUFuaW1hdGlvbiA9IGFuaW1hdGVkTGF5ZXIoYW5pbWF0aW9uLm1fcHJv
cGVydHkpLT5hbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb24ubV9u
YW1lLCBhbmltYXRpb24ubV9wcm9wZXJ0eSwgYW5pbWF0aW9uLm1faW5kZXgsIGFuaW1hdGlvbi5t
X3N1YkluZGV4KSk7CisgICAgICAgIGFuaW1hdGlvbnMuYXBwZW5kKHsgYW5pbWF0ZWRQcm9wZXJ0
eUlEQXNTdHJpbmcoYW5pbWF0aW9uLm1fcHJvcGVydHkpLCBjYUFuaW1hdGlvbi0+c3BlZWQoKSB9
KTsKICAgICB9CiAKICAgICByZXR1cm4gYW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggZmU3ZGM1
NmE0N2YzZmJlNzhkMTMxYWFhNmRjMjk2NDZlMGVjMzJiZC4uYzcwYWUyOWMwYzM3N2U5MWQ2NzM1
MDAzN2Q5MWNjYTdjYzA3OTY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE4Myw4ICsxODMsNiBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPcGFjaXR5SW50ZXJu
YWwoZmxvYXQpIG92ZXJyaWRlOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYW5pbWF0
aW9uQ2FuQmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1h
dGlvbiopIGNvbnN0OwotCiBwcml2YXRlOgogICAgIGJvb2wgaXNHcmFwaGljc0xheWVyQ0EoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTI3NSwxMSArMjczLDggQEAgcHJp
dmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGJhY2tpbmdTdG9yZUF0dGFjaGVkKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBiYWNraW5nU3RvcmVBdHRhY2hl
ZEZvclRlc3RpbmcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJvb2wgaGFzQW5pbWF0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9ucy5nZXQoKTsgfQotICAgIGJvb2wgYW5pbWF0aW9u
SXNSdW5uaW5nKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2FuaW1hdGlvbnMgJiYgbV9hbmltYXRpb25zLT5ydW5uaW5nQW5pbWF0aW9u
cy5jb250YWlucyhhbmltYXRpb25OYW1lKTsKLSAgICB9CisgICAgYm9vbCBoYXNBbmltYXRpb25z
KCkgY29uc3QgeyByZXR1cm4gIW1fYW5pbWF0aW9ucy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGFu
aW1hdGlvbklzUnVubmluZyhjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpIGNvbnN0OwogCiAg
ICAgdm9pZCBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoQ29tbWl0U3RhdGUmLCBm
bG9hdCBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uUmVsYXRpdmVU
b0Jhc2UsIGJvb2wmIGxheWVyVHlwZUNoYW5nZWQpOwogICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFu
Z2VzQWZ0ZXJTdWJsYXllcnMoQ29tbWl0U3RhdGUmKTsKQEAgLTQ1MiwxMCArNDQ3LDggQEAgcHJp
dmF0ZToKICAgICB9OwogICAgIGJvb2wgZW5zdXJlU3RydWN0dXJhbExheWVyKFN0cnVjdHVyYWxM
YXllclB1cnBvc2UpOwogICAgIFN0cnVjdHVyYWxMYXllclB1cnBvc2Ugc3RydWN0dXJhbExheWVy
UHVycG9zZSgpIGNvbnN0OwotICAgIAotICAgIHZvaWQgZW5zdXJlTGF5ZXJBbmltYXRpb25zKCk7
CiAKLSAgICB2b2lkIHNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYsIEFu
aW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgs
IGludCBzdWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KTsKKyAgICB2b2lkIHNldEFuaW1hdGlv
bk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYsIEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRleCwgU2Vjb25kcyBi
ZWdpblRpbWUpOwogICAgIGJvb2wgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1
YklOZGV4KTsKICAgICB2b2lkIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRl
eCwgU2Vjb25kcyB0aW1lT2Zmc2V0KTsKIApAQCAtNDc0LDYgKzQ2Nyw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBUaGlzIHJlcHJlc2VudHMgdGhlIGFuaW1hdGlvbiBvZiBhIHNpbmdsZSBwcm9wZXJ0
eS4gVGhlcmUgbWF5IGJlIG11bHRpcGxlIHRyYW5zZm9ybSBhbmltYXRpb25zIGZvcgogICAgIC8v
IGEgc2luZ2xlIHRyYW5zaXRpb24gb3Iga2V5ZnJhbWUgYW5pbWF0aW9uLCBzbyBpbmRleCBpcyB1
c2VkIHRvIGRpc3Rpbmd1aXNoIHRoZXNlLgorICAgIGVudW0gUGxheVN0YXRlIHsgUGxheWluZywg
UGxheVBlbmRpbmcsIFBhdXNlZCwgUGF1c2VQZW5kaW5nIH07CiAgICAgc3RydWN0IExheWVyUHJv
cGVydHlBbmltYXRpb24gewogICAgICAgICBMYXllclByb3BlcnR5QW5pbWF0aW9uKFJlZjxQbGF0
Zm9ybUNBQW5pbWF0aW9uPiYmIGNhQW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgs
IFNlY29uZHMgdGltZU9mZnNldCkKICAgICAgICAgICAgIDogbV9hbmltYXRpb24oV1RGTW92ZShj
YUFuaW1hdGlvbikpCkBAIC00OTAsMTIgKzQ4NCwxMyBAQCBwcml2YXRlOgogICAgICAgICBpbnQg
bV9pbmRleDsKICAgICAgICAgaW50IG1fc3ViSW5kZXg7CiAgICAgICAgIFNlY29uZHMgbV90aW1l
T2Zmc2V0OworICAgICAgICBQbGF5U3RhdGUgbV9wbGF5U3RhdGUgeyBQbGF5UGVuZGluZyB9Owor
ICAgICAgICBib29sIG1fcGVuZGluZ1JlbW92YWwgeyBmYWxzZSB9OworICAgICAgICBTZWNvbmRz
IG1fYmVnaW5UaW1lIHsgMF9zIH07CiAgICAgfTsKIAogICAgIGJvb2wgYXBwZW5kVG9VbmNvbW1p
dHRlZEFuaW1hdGlvbnMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zKiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUsIGludCBhbmltYXRpb25JbmRleCwgU2Vjb25kcyB0
aW1lT2Zmc2V0LCBib29sIGlzTWF0cml4QW5pbWF0aW9uKTsKICAgICBib29sIGFwcGVuZFRvVW5j
b21taXR0ZWRBbmltYXRpb25zKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgRmlsdGVy
T3BlcmF0aW9uKiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1l
LCBpbnQgYW5pbWF0aW9uSW5kZXgsIFNlY29uZHMgdGltZU9mZnNldCk7Ci0gICAgdm9pZCBhcHBl
bmRUb1VuY29tbWl0dGVkQW5pbWF0aW9ucyhMYXllclByb3BlcnR5QW5pbWF0aW9uJiYpOwotICAg
IHZvaWQgcmVtb3ZlRnJvbVVuY29tbWl0dGVkQW5pbWF0aW9ucyhjb25zdCBTdHJpbmcmKTsKIAog
ICAgIGVudW0gTGF5ZXJDaGFuZ2UgOiB1aW50NjRfdCB7CiAgICAgICAgIE5vQ2hhbmdlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDAsCkBAIC01NTksMTggKzU1NCw2IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHJlcGFpbnRMYXllckRpcnR5UmVjdHMoKTsKIAotICAgIGVudW0gQWN0
aW9uIHsgUmVtb3ZlLCBQYXVzZSB9OwotICAgIHN0cnVjdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0
aW9uIHsKLSAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihBY3Rpb24gYWN0aW9uID0g
UmVtb3ZlLCBTZWNvbmRzIHRpbWVPZmZzZXQgPSAwX3MpCi0gICAgICAgICAgICA6IGFjdGlvbihh
Y3Rpb24pCi0gICAgICAgICAgICAsIHRpbWVPZmZzZXQodGltZU9mZnNldCkKLSAgICAgICAgewot
ICAgICAgICB9Ci0gICAgICAgIEFjdGlvbiBhY3Rpb247Ci0gICAgICAgIFNlY29uZHMgdGltZU9m
ZnNldDsgLy8gT25seSB1c2VkIGZvciBwYXVzZS4KLSAgICB9OwotICAgIHZvaWQgYWRkUHJvY2Vz
c2luZ0FjdGlvbkZvckFuaW1hdGlvbihjb25zdCBTdHJpbmcmLCBBbmltYXRpb25Qcm9jZXNzaW5n
QWN0aW9uKTsKLQogICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91bmNvbW1pdHRlZENoYW5nZXMgeyAw
IH07CiAKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBtX2xheWVyOyAvLyBUaGUgbWFpbiBs
YXllcgpAQCAtNjExLDE2ICs1OTQsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBtX3VuY29ycmVjdGVkQ29udGVudHNJbWFnZTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9wZW5kaW5nQ29udGVudHNJbWFnZTsKICAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBWZWN0b3I8QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbj4+IEFuaW1hdGlvbnNUb1Byb2Nl
c3NNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPExheWVyUHJvcGVydHlB
bmltYXRpb24+PiBBbmltYXRpb25zTWFwOwotICAgIHN0cnVjdCBMYXllckFuaW1hdGlvbnMgewot
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIFZlY3RvcjxM
YXllclByb3BlcnR5QW5pbWF0aW9uPiB1bmNvbWl0dGVkQW5pbWF0aW9uczsKLSAgICAgICAgQW5p
bWF0aW9uc1RvUHJvY2Vzc01hcCBhbmltYXRpb25zVG9Qcm9jZXNzOwotICAgICAgICBBbmltYXRp
b25zTWFwIHJ1bm5pbmdBbmltYXRpb25zOwotICAgIH07Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVf
cHRyPExheWVyQW5pbWF0aW9ucz4gbV9hbmltYXRpb25zOworICAgIFZlY3RvcjxMYXllclByb3Bl
cnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbnM7CiAKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBtX2Rp
cnR5UmVjdHM7CiAK
</data>
<flag name="review"
          id="427515"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>