<?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>183781</bug_id>
          
          <creation_ts>2018-03-20 09:44:01 -0700</creation_ts>
          <short_desc>[Web Animations] Dispatch DOM events for CSS Transitions and CSS Animations implemented as Web Animations</short_desc>
          <delta_ts>2018-03-21 12:42:28 -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>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1407695</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-20 09:44:01 -0700</bug_when>
    <thetext>Now that we&apos;ve implemented CSS Animations and CSS Transitions as Web Animations (webkit.org/b/183504) we need to dispatch DOM events for them as well, as specified by https://drafts.csswg.org/css-animations-2/#events and https://drafts.csswg.org/css-transitions-2/#transition-events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407727</commentid>
    <comment_count>1</comment_count>
      <attachid>336135</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-20 11:02:09 -0700</bug_when>
    <thetext>Created attachment 336135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407735</commentid>
    <comment_count>2</comment_count>
      <attachid>336135</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-03-20 11:34:07 -0700</bug_when>
    <thetext>Comment on attachment 336135
Patch

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

This is all good. It just needs to be split into smaller patches because it is doing multiple things.

&gt; Source/WebCore/animation/AnimationTimeline.cpp:148
&gt; +    // In case this element is newly getting a &quot;display: none&quot; we need to cancel all of its animations and disregard new ones.
&gt; +    if (oldStyle &amp;&amp; oldStyle-&gt;hasAnimations() &amp;&amp; oldStyle-&gt;display() != NONE &amp;&amp; newStyle.display() == NONE) {
&gt; +        if (m_elementToCSSAnimationByName.contains(&amp;element)) {
&gt; +            for (const auto&amp; cssAnimationsByNameMapItem : m_elementToCSSAnimationByName.take(&amp;element))
&gt; +                cancelOrRemoveDeclarativeAnimation(cssAnimationsByNameMapItem.value);
&gt; +        }
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    if (oldStyle &amp;&amp; oldStyle-&gt;hasAnimations() &amp;&amp; newStyle.hasAnimations() &amp;&amp; *(oldStyle-&gt;animations()) == *(newStyle.animations()))
&gt; +        return;

This display:none work should be a separate patch.

&gt; Source/WebCore/animation/DeclarativeAnimation.cpp:72
&gt; +    else
&gt; +        pause();

So should this.

&gt; Source/WebCore/animation/DeclarativeAnimation.cpp:106
&gt; +void DeclarativeAnimation::cancel()
&gt; +{
&gt; +    auto cancelationTime = 0_s;
&gt; +    if (auto animationEffect = effect())
&gt; +        cancelationTime = animationEffect-&gt;activeTime().value_or(0_s);
&gt; +
&gt; +    WebAnimation::cancel();
&gt; +
&gt; +    invalidateDOMEvents(cancelationTime);
&gt; +}

And maybe cancel() on declarative animations should be a separate patch too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407993</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-21 07:48:47 -0700</bug_when>
    <thetext>I will land this as smaller patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408094</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-21 11:01:06 -0700</bug_when>
    <thetext>Actually, we can reuse this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408096</commentid>
    <comment_count>5</comment_count>
      <attachid>336211</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-21 11:05:46 -0700</bug_when>
    <thetext>Created attachment 336211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408117</commentid>
    <comment_count>6</comment_count>
      <attachid>336216</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-21 12:00:48 -0700</bug_when>
    <thetext>Created attachment 336216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408127</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2018-03-21 12:41:33 -0700</bug_when>
    <thetext>Committed r229818: &lt;https://trac.webkit.org/changeset/229818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408128</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-21 12:42:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/38718784&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336135</attachid>
            <date>2018-03-20 11:02:09 -0700</date>
            <delta_ts>2018-03-21 11:05:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183781-20180320190208.patch</filename>
            <type>text/plain</type>
            <size>92717</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVlZWQzMDZkOTEyODYx
YjhlMjA3ZmY3MjQ4MzIwYTQxNjBmMDBjZS4uOTU0YWUxYWQzZDJjMTdiMTEwNWMzYTMxZjQ1NGMw
MjY2MjRkZDEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE4LTAzLTIwICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBEaXNwYXRjaCBET00gZXZlbnRzIGZvciBDU1MgVHJhbnNpdGlvbnMgYW5kIENTUyBBbmltYXRp
b25zIGltcGxlbWVudGVkIGFzIFdlYiBBbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM3ODEKKworICAgICAgICBOb3cgdGhhdCB3ZSd2
ZSBpbXBsZW1lbnRlZCBDU1MgQW5pbWF0aW9ucyBhbmQgQ1NTIFRyYW5zaXRpb25zIGFzIFdlYiBB
bmltYXRpb25zICh3ZWJraXQub3JnL2IvMTgzNTA0KSB3ZSBjYW4gZGlzcGF0Y2ggRE9NIGV2ZW50
cworICAgICAgICBmb3IgdGFyZ2V0cyBvZiBEZWNsYXJhdGl2ZUFuaW1hdGlvbiBvYmplY3RzLiBU
byBkbyB0aGF0LCB3ZSBhZGQgYSBuZXcgaW52YWxpZGF0ZURPTUV2ZW50cygpIG1ldGhvZCBvbiBE
ZWNsYXJhdGl2ZUFuaW1hdGlvbnMgd2hpY2gKKyAgICAgICAgaXMgY2FsbGVkIHdoZW4gdGhlIHRp
bWVyIHNjaGVkdWxlZCBhZnRlciB0aGUgdGltaW5nIG1vZGVsIGhhcyBiZWVuIGludmFsaWRhdGVk
IGZpcmVzIGluIERvY3VtZW50VGltZWxpbmU6OnBlcmZvcm1JbnZhbGlkYXRpb25UYXNrKCksCisg
ICAgICAgIG9yIG1hbnVhbGx5IGluIGNhc2UgY2FuY2VsKCkgaXMgY2FsbGVkLiBXaGVuIHdlIGNo
ZWNrIGZvciBET00gZXZlbnRzIHRvIGRpc3BhdGNoLCB3ZSBsb29rIGF0IHRoZSBsYXN0IHJlY29y
ZGVkIHBoYXNlIGFuZCBpdGVyYXRpb24KKyAgICAgICAgYW5kIGRldGVybWluZSB3aGV0aGVyIHRo
ZSBzdGF0ZSBvZiB0aGUgYW5pbWF0aW9uIGhhcyBjaGFuZ2VkLiBXZSB1c2UgYSBHZW5lcmljRXZl
bnRRdWV1ZSB0byBlbnF1ZXVlIHRoZSBldmVudHMgc3VjaCB0aGF0IHRoZXkgYXJlCisgICAgICAg
IGRpc3BhdGNoZWQgYXN5bmNocm9ub3VzbHkgYXQgYSBtb21lbnQgd2hlcmUgaXQgaXMgc2FmZSB0
byBldmFsdWF0ZSBzY3JpcHQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdHM6IGltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9l
dmVudC1kaXNwYXRjaC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC9tb3ppbGxhL2Nzcy10
cmFuc2l0aW9ucy90ZXN0X2V2ZW50LWRpc3BhdGNoLmh0bWwKKworICAgICAgICAqIGFuaW1hdGlv
bi9BbmltYXRpb25FZmZlY3RSZWFkT25seS5jcHA6IE1vdmUgdGltZUVwc2lsb24gdG8gYmUgc2hh
cmVkIGFzIHBhcnQgb2YgV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggc2luY2Ugd2Ugbm93IG5lZWQg
aXQgaW4KKyAgICAgICAgV2ViQW5pbWF0aW9uOjp0aW1lVG9OZXh0UmVxdWlyZWRUaWNrKCkuCisg
ICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdFJlYWRPbmx5Lmg6IE1ha2UgY3VycmVu
dEl0ZXJhdGlvbigpIHB1YmxpYyBzaW5jZSB3ZSBub3cgbmVlZCBpdCBpbiBEZWNsYXJhdGl2ZUFu
aW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cygpLgorICAgICAgICAqIGFuaW1hdGlvbi9Bbmlt
YXRpb25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6
dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1lbnQpOiBNYWtlIHN1cmUgd2UgY2FuY2VsIGFsbCBy
ZWNvcmRlZCBDU1MgQW5pbWF0aW9ucyB3aGVuIHdlIG5ld2x5IGdldCBhCisgICAgICAgICJkaXNw
bGF5OiBub25lIiBzdHlsZS4gV2UgYWxzbyBhZGQgYSBwcmUtZW1wdGl2ZSByZXR1cm4gY2xhdXNl
IHdoZW4gd2Uga25vdyB0aGF0IHRoZSBBbmltYXRpb25MaXN0IGZvciBwcmV2aW91cyBhbmQgY3Vy
cmVudCBzdHlsZXMKKyAgICAgICAgYXJlIGEgbWF0Y2guIEZpbmFsbHksIHdlIGNhbGwgdGhlIG5l
dyBjYW5jZWxPclJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uKCkgbWV0aG9kLCBpbnN0ZWFkIG9m
IHJlbW92aW5nIGFuaW1hdGlvbnMgb3V0cmlnaHQsIGZvciBhbGwKKyAgICAgICAgYW5pbWF0aW9u
cyB0aGF0IHByZXZpb3VzbHkgZXhpc3RlZCBidXQgYXJlIG5vIGxvbmdlciBsaXN0ZWQgaW4gdGhl
IGN1cnJlbnQgc3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBk
YXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KTogTGlrZSBpbiB1cGRhdGVDU1NBbmltYXRpb25z
Rm9yRWxlbWVudCgpLCB3ZSBjYW5jZWwgYWxsIHJlY29yZGVkIENTUworICAgICAgICBUcmFuc2l0
aW9ucyB3aGVuIHdlIG5ld2x5IGdldCBhICJkaXNwbGF5OiBub25lIiBzdHlsZS4gV2Ugbm93IHVz
ZSB0aGUgcmVmYWN0b3JlZCByZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbigpIG1ldGhvZCB0byBy
ZW1vdmUgYW4KKyAgICAgICAgYSB0cmFuc2l0aW9uIGZvciBhIHByb3BlcnR5IHRoYXQgd2FzIGFs
cmVhZHkgdHJhbnNpdGlvbmVkIGluIHRoZSBwcmV2aW91cyBzdHlsZSBidXQgaGFzIGEgbmV3IGJh
Y2tpbmcgQW5pbWF0aW9uIG9iamVjdC4gRmluYWxseSwKKyAgICAgICAgbGlrZSBpbiB1cGRhdGVD
U1NBbmltYXRpb25zRm9yRWxlbWVudCgpLCB3ZSBjYWxsIHRoZSBuZXcgY2FuY2VsT3JSZW1vdmVE
ZWNsYXJhdGl2ZUFuaW1hdGlvbigpIG1ldGhvZCwgaW5zdGVhZCBvZiByZW1vdmluZyB0cmFuc2l0
aW9ucworICAgICAgICBvdXRyaWdodCwgZm9yIGFsbCB0cmFuc2l0aW9ucyB0aGF0IHByZXZpb3Vz
bHkgZXhpc3RlZCBidXQgYXJlIG5vIGxvbmdlciBsaXN0ZWQgaW4gdGhlIGN1cnJlbnQgc3R5bGUu
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRpdmVB
bmltYXRpb24pOiBSZWZhY3RvciBjb2RlIGludG8gdGhpcyBuZXcgbWV0aG9kIHRvIHJlbW92ZSBh
IGRlY2xhcmF0aXZlIGFuaW1hdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVs
aW5lOjpjYW5jZWxPclJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uKTogQ2FuY2VscyBhIERlY2xh
cmF0aXZlQW5pbWF0aW9uIGlmIGl0J3MgYWN0aXZlIG9yIHJlbW92ZXMgaXQgcmlnaHQgYXdheS4K
KyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmlt
YXRpb24vQ1NTQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0FuaW1hdGlvbjo6
Y3JlYXRlKTogUGFzcyB0aGUgYW5pbWF0aW9uIHRhcmdldCB0byB0aGUgY29uc3RydWN0b3IgaW5z
dGVhZCBvZiBpdHMgZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpDU1NBbmltYXRpb246OkNT
U0FuaW1hdGlvbik6IFBhc3MgdGhlIGFuaW1hdGlvbiB0YXJnZXQgdG8gdGhlIHN1cGVyY2xhc3Mg
aW5zdGVhZCBvZiBpdHMgZG9jdW1lbnQuCisgICAgICAgICogYW5pbWF0aW9uL0NTU0FuaW1hdGlv
bi5oOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1RyYW5zaXRpb246OmNyZWF0ZSk6IFBhc3MgdGhlIGFuaW1hdGlvbiB0YXJnZXQg
dG8gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgaXRzIGRvY3VtZW50LgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbik6IFBhc3MgdGhlIGFuaW1hdGlvbiB0
YXJnZXQgdG8gdGhlIHN1cGVyY2xhc3MgaW5zdGVhZCBvZiBpdHMgZG9jdW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NUcmFuc2l0aW9uOjptYXRjaGVzQmFja2luZ0FuaW1hdGlvbkFuZFN0eWxl
cyBjb25zdCk6IEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgZWZmZWN0IGJlZm9yZSBkb3duY2FzdGlu
ZyBpdC4KKyAgICAgICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oOgorICAgICAgICAqIGFu
aW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNs
YXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRpb24pOiBFeHBlY3QgYW4gRWxlbWVu
dCBpbnN0ZWFkIG9mIGEgRG9jdW1lbnQgYW5kIHVzZSB0aGF0IGVsZW1lbnQgYXMgdGhlIHRhcmdl
dCBvZiB0aGUKKyAgICAgICAgR2VuZXJpY0V2ZW50UXVldWUgdGhhdCB3ZSBpbml0aWFsaXplLiBX
ZSBhbHNvIHJlZ2lzdGVyIHRoaXMgZWxlbWVudCBhcyBvdXIgbV90YXJnZXQuCisgICAgICAgIChX
ZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6fkRlY2xhcmF0aXZlQW5pbWF0aW9uKTogQ2xv
c2UgdGhlIEdlbmVyaWNFdmVudFF1ZXVlIG1lbWJlciB1cG9uIGRlc3RydWN0aW9uLgorICAgICAg
ICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUpOiBXZSBuZWVkIHRv
IGNhbGwgcGF1c2UoKSBmb3IgZGVjbGFyYXRpdmUgYW5pbWF0aW9ucyB0aGF0IGFyZW4ndCBwbGF5
aW5nIHNvIHRoYXQgdGhlIGFuaW1hdGlvbidzCisgICAgICAgIHBsYXlTdGF0ZSBpcyBzZXQgY29y
cmVjdGx5IGFuZCB0aGUgYW5pbWF0aW9uIGlzIG5vdCBpZGxlLgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OnNldFRpbWVsaW5lKTogSWYgd2UncmUgbW92aW5nIGZyb20g
YSB2YWxpZCB0aW1lbGluZSB0byBhIG51bGwgdGltZWxpbmUsIGNhbGwgY2FuY2VsKCkgb24gdGhp
cyBhbmltYXRpb24KKyAgICAgICAgc3VjaCB0aGF0IGFuIGFuaW1hdGlvbmNhbmNlbCBvciB0cmFu
c2l0aW9uY2FuY2VsIGV2ZW50IGNhbiBiZSBkaXNwYXRjaGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OmNhbmNlbCk6IENhbmNlbGF0aW9ucyByZXF1aXJlIHRoZSBj
b21wdXRhdGlvbiBvZiB0aGUgdGltZSBhdCB3aGljaCBhIGRlY2xhcmF0aXZlIGFuaW1hdGlvbiB3
YXMgY2FuY2VsZWQsCisgICAgICAgIHNvIHdlIHJlY29yZCB0aGUgYW5pbWF0aW9uJ3MgYWN0aXZl
IHRpbWUgYXMgaXQncyBjYW5jZWxlZCBhbmQgbWFudWFsbHkgY2FsbCBpbnZhbGlkYXRlRE9NRXZl
bnRzKCkgd2l0aCB0aGF0IHRpbWUgYWZ0ZXIgdGhlIGdlbmVyYWwgY2FuY2VsKCkKKyAgICAgICAg
Y29kZSBoYXMgcnVuLgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OnBo
YXNlV2l0aG91dEVmZmVjdCBjb25zdCk6IEJlY2F1c2Ugd2UgbWF5IG5lZWQgdG8gZ2V0IGFuIGFu
aW1hdGlvbidzIGN1cnJlbnQgcGhhc2UgaW4gaW52YWxpZGF0ZURPTUV2ZW50cygpCisgICAgICAg
IGFmdGVyIGFuIGFuaW1hdGlvbidzIGVmZmVjdCBoYXMgYmVlbiByZW1vdmVkLCB3ZSBwcm92aWRl
IGFuIGFsdGVybmF0ZSB3YXkgdG8gY29tcHV0ZSB0aGUgcGhhc2UganVzdCBieSBsb29raW5nIGF0
IHRoZSBhbmltYXRpb24ncyBjdXJyZW50IHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cyk6IEJhc2VkIG9uIHRoZSBwcmV2aW91
cyBhbmQgY3VycmVudCBwZW5kaW5nIHN0YXRlLCBpdGVyYXRpb24gYW5kIHBoYXNlLCB3ZSBlbnF1
ZXVlIGFuaW1hdGlvbgorICAgICAgICBhbmQgdHJhbnNpdGlvbiBET00gZXZlbnRzIGFzIHNwZWNp
ZmllZCBieSB0aGUgQ1NTIEFuaW1hdGlvbnMgTGV2ZWwgMiBhbmQgQ1NTIFRyYW5zaXRpb25zIExl
dmVsIDIgc3BlY2lmaWNhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1h
dGlvbjo6ZW5xdWV1ZURPTUV2ZW50KTogRW5xdWV1ZSBhbiBldmVudCBvbiB0aGUgR2VuZXJpY0V2
ZW50UXVldWUgYmFzZWQgb24gdGhlIGFuaW1hdGlvbiB0eXBlLgorICAgICAgICAqIGFuaW1hdGlv
bi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRp
bWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnBlcmZvcm1J
bnZhbGlkYXRpb25UYXNrKTogV2UgY2FsbCBpbnZhbGlkYXRlRE9NRXZlbnRzKCkgb24gYWxsIGRl
Y2xhcmF0aXZlIGFuaW1hdGlvbnMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgdGltZWxpbmUKKyAgICAg
ICAgbm93IHRoYXQgdGhlIHRpbWluZyBtb2RlbCBoYXMgYmVlbiBpbnZhbGlkYXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnVwZGF0ZUFuaW1hdGlvblNjaGVkdWxlKTog
V2Ugbm8gbG9uZ2VyIG5lZWQgdG8gcGFzcyB0aGUgY3VycmVudCB0aW1lIHRvIHRpbWVUb05leHRS
ZXF1aXJlZFRpY2soKSBzaW5jZSB0aGUgbWV0aG9kIGhhcworICAgICAgICBiZWVuIHJld29ya2Vk
IHRvIHVzZSB0aGUgYW5pbWF0aW9uJ3MgY3VycmVudCB0aW1lLCB3aGljaCBpcyBiYXNlZCBvbiB0
aGUgdGltZWxpbmUncyBjdXJyZW50IHRpbWUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRp
bWVsaW5lOjp1cGRhdGVBbmltYXRpb25zKTogQXZvaWQgY3JlYXRpbmcgYSBjb3B5IHdoZW4gaXRl
cmF0aW5nIG92ZXIgcGVuZGluZyBoYXJkd2FyZSBhbmltYXRpb25zLgorICAgICAgICAqIGFuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lRWZmZWN0UmVhZE9ubHk6OnN0eWxlc1dvdWxkWWllbGROZXdDU1NUcmFuc2l0aW9uc0JsZW5k
aW5nS2V5ZnJhbWVzIGNvbnN0KTogV2Ugc2hvdWxkIG5ldmVyIGdlbmVyYXRlIG5ldyBibGVuZGlu
ZyBrZXlmcmFtZXMgaWYgdGhlCisgICAgICAgIG9sZCBhbmQgbmV3IHN0eWxlcyBjb250YWluIHRo
ZSBzYW1lIHZhbHVlLCBzaW5jZSB0aGVyZSB3b3VsZCBiZSBubyB0cmFuc2l0aW9uIGJldHdlZW4g
dHdvIGVxdWFsIHZhbHVlcywgYW5kIHdlIHNob3VsZCBvbmx5IGxvb2sgYXQgd2hldGhlciB0aGUg
bmV3CisgICAgICAgIHN0eWxlIHZhbHVlIGFuZCB0aGUgcmVjb3JkZWQgdGFyZ2V0IHZhbHVlIGRp
ZmZlciB0byBkZXRlcm1pbmUgaWYgbmV3IGJsZW5kaW5nIGtleWZyYW1lcyBhcmUgbmVjZXNzYXJ5
LgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQW5pbWF0aW9uOjp0aW1lVG9OZXh0UmVxdWlyZWRUaWNrIGNvbnN0KTogV2UgY29ycmVj
dCBvdXIgc2NoZWR1bGluZyBjb2RlIHdoaWNoIHdhcyBzaG93biB0byBiZSBicm9rZW4gaW4gc2V2
ZXJhbCBvZiB0aGUgbmV3bHktaW1wb3J0ZWQKKyAgICAgICAgTW96aWxsYSB0ZXN0cy4gQW55IHJ1
bm5pbmcgYW5pbWF0aW9uIGlzIG5vdyBzY2hlZHVsZWQgdG8gaW52YWxpZGF0ZSBhZ2FpbiBvbiB0
aGUgbmV4dCB0aWNrLCBhbmQgd2UgdXNlIHRpbWVFcHNpbG9uIGZyb20gV2ViQW5pbWF0aW9uVXRp
bGl0aWVzLmggdG8KKyAgICAgICAgY29ycmVjdGx5IGNoZWNrIGlmIHdlJ3JlIHJpZ2h0IGF0IHRo
ZSBhY3RpdmUgdGhyZXNob2xkLCB3aGVuIHdlIGFsc28gaW52YWxpZGF0ZSBvbiB0aGUgbmV4dCB0
aWNrLiBJZiBvdXIgY3VycmVudCB0aW1lIGlzIG5lZ2F0aXZlLCBpbiBvdGhlciB3b3JkcworICAg
ICAgICB3aGVuIHRoZSBhbmltYXRpb24gaGFzIG5vdCB5ZXQgc3RhcnRlZCwgd2Ugc2NoZWR1bGUg
dGhpcyBhbmltYXRpb24ncyBuZXh0IHRpY2sgdG8gYmUgdGhlIG5lZ2F0aXZlIG9mIHRoYXQgdmFs
dWUuIEluIGFsbCBvdGhlciBjYXNlcywgbm8gaW52YWxpZGF0aW9uCisgICAgICAgIG5lZWRzIHRv
IGJlIHNjaGVkdWxlZC4KKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmg6IFdlIG1v
dmUgdXBkYXRlRmluaXNoZWRTdGF0ZSgpIHRvIHByaXZhdGUgc2luY2UgdGhpcyBtZXRob2QgaXMg
bm90IGFjdHVhbGx5IHVzZWQgb3V0c2lkZSBvZiBXZWJBbmltYXRpb24uY3BwLgorICAgICAgICAq
IGFuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuaDogTW92ZSB0aW1lRXBzaWxvbiB0byBi
ZSBzaGFyZWQgYXMgcGFydCBvZiBXZWJBbmltYXRpb25VdGlsaXRpZXMuaC4KKyAgICAgICAgKiBk
b20vRXZlbnROYW1lcy5oOiBBZGQgdGhlIG5hbWVzIG9mIG5ld2x5LWltcGxlbWVudGVkIGV2ZW50
cyAoYW5pbWF0aW9uY2FuY2VsLCB0cmFuc2l0aW9uY2FuY2VsLCB0cmFuc2l0aW9ucnVuIGFuZCB0
cmFuc2l0aW9uc3RhcnQpLgorICAgICAgICAqIGRvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbDog
QWRkIG5ldyBhdHRyaWJ1dGUtYmFzZWQgZXZlbnQgaGFuZGxlcnMgZm9yIHRoZSBuZXdseS1pbXBs
ZW1lbnRlZCBldmVudHMuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IEFk
ZCBuZXcgYXR0cmlidXRlLWJhc2VkIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgbmV3bHktaW1wbGVt
ZW50ZWQgZXZlbnRzLgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNyZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXApOiBBZGQgbmV3
IGF0dHJpYnV0ZS1iYXNlZCBldmVudCBoYW5kbGVycyBmb3IgdGhlIG5ld2x5LWltcGxlbWVudGVk
IGV2ZW50cy4KKwogMjAxOC0wMy0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBcHBseSBzb21lIFNESyBjaGVja3MgaW4gTG9jYWxEZWZhdWx0U3lz
dGVtQXBwZWFyYW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvbkVmZmVjdFJlYWRPbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25FZmZlY3RSZWFkT25seS5jcHAKaW5kZXggOGM3ZjI3ZjI1N2MzMjJhOWNhNDVjYzhkNjA1YjIx
ZjFmODJlMjRhMy4uNjgyYTM0YTViOGMyZWU2M2Q0NjBmYTA1YzM4MDJiNGM4MjYxNDk1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdFJlYWRPbmx5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0UmVhZE9u
bHkuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3Qg
YXV0byB0aW1lRXBzaWxvbiA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoMC4wMDEpOwotCiBB
bmltYXRpb25FZmZlY3RSZWFkT25seTo6QW5pbWF0aW9uRWZmZWN0UmVhZE9ubHkoQ2xhc3NUeXBl
IGNsYXNzVHlwZSwgUmVmPEFuaW1hdGlvbkVmZmVjdFRpbWluZ1JlYWRPbmx5PiYmIHRpbWluZykK
ICAgICA6IG1fY2xhc3NUeXBlKGNsYXNzVHlwZSkKICAgICAsIG1fdGltaW5nKFdURk1vdmUodGlt
aW5nKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZl
Y3RSZWFkT25seS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdFJl
YWRPbmx5LmgKaW5kZXggOThiZGU4NGFlYTk5N2EwNDIyYWI0OGViODk5ZTllZDAyMDUxMWRjOC4u
YmI1OTJmOWE2NTg2MGZlZGFhYWU3NDJkMGI3YWY3OThkZWMxOTgzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdFJlYWRPbmx5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdFJlYWRPbmx5LmgKQEAgLTUzLDYg
KzUzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbG9jYWxUaW1lKCkg
Y29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBhY3RpdmVUaW1lKCkgY29uc3Q7CiAg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGl0ZXJhdGlvblByb2dyZXNzKCkgY29uc3Q7CisgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGN1cnJlbnRJdGVyYXRpb24oKSBjb25zdDsKIAogICAgIGVu
dW0gY2xhc3MgUGhhc2UgeyBCZWZvcmUsIEFjdGl2ZSwgQWZ0ZXIsIElkbGUgfTsKICAgICBQaGFz
ZSBwaGFzZSgpIGNvbnN0OwpAQCAtNzYsNyArNzcsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IG92ZXJhbGxQcm9ncmVzcygpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBzaW1wbGVJdGVyYXRpb25Qcm9ncmVzcygpIGNvbnN0OwotICAgIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBjdXJyZW50SXRlcmF0aW9uKCkgY29uc3Q7CiAgICAgQW5pbWF0aW9uRWZm
ZWN0UmVhZE9ubHk6OkNvbXB1dGVkRGlyZWN0aW9uIGN1cnJlbnREaXJlY3Rpb24oKSBjb25zdDsK
ICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGlyZWN0ZWRQcm9ncmVzcygpIGNvbnN0OwogICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0cmFuc2Zvcm1lZFByb2dyZXNzKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAppbmRleCAxYjEw
NjFkYzM0YTJjM2EwNDZmZDE4NmZjNzQyZGRlN2YzZWIxMDI2Li44NDRlNGJlMTQ1NWJhNjcwODZl
YjNhM2M0YjFiYWRiODk2ZTNiODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9B
bmltYXRpb25UaW1lbGluZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBbmltYXRp
b25UaW1lbGluZS5oIgogCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiQW5pbWF0
aW9uRWZmZWN0UmVhZE9ubHkuaCIKICNpbmNsdWRlICJBbmltYXRpb25MaXN0LmgiCiAjaW5jbHVk
ZSAiQ1NTQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlBbmltYXRpb24uaCIKQEAg
LTEzNCw2ICsxMzUsMTggQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0
aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmUKICAgICBpZiAoZWxlbWVu
dC5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cHJpbnRpbmcoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgLy8gSW4gY2FzZSB0aGlzIGVsZW1lbnQgaXMgbmV3bHkgZ2V0dGluZyBhICJkaXNwbGF5
OiBub25lIiB3ZSBuZWVkIHRvIGNhbmNlbCBhbGwgb2YgaXRzIGFuaW1hdGlvbnMgYW5kIGRpc3Jl
Z2FyZCBuZXcgb25lcy4KKyAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlv
bnMoKSAmJiBvbGRTdHlsZS0+ZGlzcGxheSgpICE9IE5PTkUgJiYgbmV3U3R5bGUuZGlzcGxheSgp
ID09IE5PTkUpIHsKKyAgICAgICAgaWYgKG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uQnlOYW1lLmNv
bnRhaW5zKCZlbGVtZW50KSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NBbmlt
YXRpb25zQnlOYW1lTWFwSXRlbSA6IG1fZWxlbWVudFRvQ1NTQW5pbWF0aW9uQnlOYW1lLnRha2Uo
JmVsZW1lbnQpKQorICAgICAgICAgICAgICAgIGNhbmNlbE9yUmVtb3ZlRGVjbGFyYXRpdmVBbmlt
YXRpb24oY3NzQW5pbWF0aW9uc0J5TmFtZU1hcEl0ZW0udmFsdWUpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc0Fu
aW1hdGlvbnMoKSAmJiBuZXdTdHlsZS5oYXNBbmltYXRpb25zKCkgJiYgKihvbGRTdHlsZS0+YW5p
bWF0aW9ucygpKSA9PSAqKG5ld1N0eWxlLmFuaW1hdGlvbnMoKSkpCisgICAgICAgIHJldHVybjsK
KwogICAgIC8vIEZpcnN0LCBjb21waWxlIHRoZSBsaXN0IG9mIGFuaW1hdGlvbiBuYW1lcyB0aGF0
IHdlcmUgYXBwbGllZCB0byB0aGlzIGVsZW1lbnQgdXAgdG8gdGhpcyBwb2ludC4KICAgICBIYXNo
U2V0PFN0cmluZz4gbmFtZXNPZlByZXZpb3VzQW5pbWF0aW9uczsKICAgICBpZiAob2xkU3R5bGUg
JiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgewpAQCAtMTcwLDExICsxODMsOCBAQCB2b2lk
IEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBSZQogCiAgICAgLy8gVGhlIGFuaW1hdGlvbnMgbmFtZXMgbGVmdCBp
biBuYW1lc09mUHJldmlvdXNBbmltYXRpb25zIGFyZSBub3cga25vd24gdG8gbm8gbG9uZ2VyIGFw
cGx5IHNvIHdlIG5lZWQgdG8KICAgICAvLyByZW1vdmUgdGhlIENTU0FuaW1hdGlvbiBvYmplY3Qg
Y3JlYXRlZCBmb3IgdGhlbS4KLSAgICBmb3IgKGNvbnN0IGF1dG8mIG5hbWVPZkFuaW1hdGlvblRv
UmVtb3ZlIDogbmFtZXNPZlByZXZpb3VzQW5pbWF0aW9ucykgewotICAgICAgICBhdXRvIGNzc0Fu
aW1hdGlvblRvUmVtb3ZlID0gY3NzQW5pbWF0aW9uc0J5TmFtZS50YWtlKG5hbWVPZkFuaW1hdGlv
blRvUmVtb3ZlKTsKLSAgICAgICAgY3NzQW5pbWF0aW9uVG9SZW1vdmUtPnNldEVmZmVjdChudWxs
cHRyKTsKLSAgICAgICAgcmVtb3ZlQW5pbWF0aW9uKGNzc0FuaW1hdGlvblRvUmVtb3ZlLnJlbGVh
c2VOb25OdWxsKCkpOwotICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIG5hbWVPZkFuaW1hdGlv
blRvUmVtb3ZlIDogbmFtZXNPZlByZXZpb3VzQW5pbWF0aW9ucykKKyAgICAgICAgY2FuY2VsT3JS
ZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbihjc3NBbmltYXRpb25zQnlOYW1lLnRha2UobmFtZU9m
QW5pbWF0aW9uVG9SZW1vdmUpKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgbWFwIG9mIENTU0FuaW1h
dGlvbnMgYnkgYW5pbWF0aW9uIG5hbWUgZm9yIHRoaXMgZWxlbWVudCBpZiBpdCdzIG5vdyBlbXB0
eS4KICAgICBpZiAoY3NzQW5pbWF0aW9uc0J5TmFtZS5pc0VtcHR5KCkpCkBAIC0xODksNiArMTk5
LDE1IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxl
bWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAgICAgaWYgKGVsZW1lbnQuZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCktPnByaW50aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIElu
IGNhc2UgdGhpcyBlbGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2Ug
bmVlZCB0byBjYW5jZWwgYWxsIG9mIGl0cyBhbmltYXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9u
ZXMuCisgICAgaWYgKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNUcmFuc2l0aW9ucygpICYmIG9s
ZFN0eWxlLT5kaXNwbGF5KCkgIT0gTk9ORSAmJiBuZXdTdHlsZS5kaXNwbGF5KCkgPT0gTk9ORSkg
eworICAgICAgICBpZiAobV9lbGVtZW50VG9DU1NUcmFuc2l0aW9uQnlDU1NQcm9wZXJ0eUlELmNv
bnRhaW5zKCZlbGVtZW50KSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjc3NUcmFu
c2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1hcEl0ZW0gOiBtX2VsZW1lbnRUb0NTU1RyYW5zaXRpb25C
eUNTU1Byb3BlcnR5SUQudGFrZSgmZWxlbWVudCkpCisgICAgICAgICAgICAgICAgY2FuY2VsT3JS
ZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbihjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJRE1h
cEl0ZW0udmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAv
LyBGSVhNRTogV2UgZG8gbm90IGhhbmRsZSAiYWxsIiB0cmFuc2l0aW9ucyB5ZXQuCiAKICAgICAv
LyBGaXJzdCwgY29tcGlsZSB0aGUgbGlzdCBvZiBiYWNraW5nIGFuaW1hdGlvbnMgYW5kIHByb3Bl
cnRpZXMgdGhhdCB3ZXJlIGFwcGxpZWQgdG8gdGhpcyBlbGVtZW50IHVwIHRvIHRoaXMgcG9pbnQu
CkBAIC0yMjYsOSArMjQ1LDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJh
bnNpdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFIKICAgICAgICAgICAg
ICAgICBpZiAoY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5LmNvbnRhaW5zKHByb3BlcnR5KSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5LmdldChwcm9w
ZXJ0eSktPm1hdGNoZXNCYWNraW5nQW5pbWF0aW9uQW5kU3R5bGVzKGJhY2tpbmdBbmltYXRpb24s
IG9sZFN0eWxlLCBuZXdTdHlsZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICAgICAgYXV0byBjc3NUcmFuc2l0aW9uVG9SZW1vdmUgPSBjc3NUcmFu
c2l0aW9uc0J5UHJvcGVydHkudGFrZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgICAgIGNz
c1RyYW5zaXRpb25Ub1JlbW92ZS0+c2V0RWZmZWN0KG51bGxwdHIpOwotICAgICAgICAgICAgICAg
ICAgICByZW1vdmVBbmltYXRpb24oY3NzVHJhbnNpdGlvblRvUmVtb3ZlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICAgICAgICAgICAgICByZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbihjc3NU
cmFuc2l0aW9uc0J5UHJvcGVydHkudGFrZShwcm9wZXJ0eSkpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAvLyBOb3cgd2UgY2FuIGNyZWF0ZSBhIG5ldyBDU1NUcmFuc2l0aW9u
IHdpdGggdGhlIG5ldyBiYWNraW5nIGFuaW1hdGlvbiBwcm92aWRlZCBpdCBoYXMgYSB2YWxpZAog
ICAgICAgICAgICAgICAgIC8vIGR1cmF0aW9uIGFuZCB0aGUgZnJvbSBhbmQgdG8gdmFsdWVzIGFy
ZSBkaXN0aW5jdC4KQEAgLTI0MCwxMSArMjU3LDggQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFIK
IAogICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBubyBsb25nZXIgY3VycmVudCBhbmQg
bXVzdCBiZSByZW1vdmVkLgogICAgIGZvciAoY29uc3QgYXV0byB0cmFuc2l0aW9uUHJvcGVydHlU
b1JlbW92ZSA6IHByZXZpb3VzUHJvcGVydGllcykgewotICAgICAgICBpZiAoIWNzc1RyYW5zaXRp
b25zQnlQcm9wZXJ0eS5jb250YWlucyh0cmFuc2l0aW9uUHJvcGVydHlUb1JlbW92ZSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBjc3NUcmFuc2l0aW9uVG9SZW1vdmUgPSBj
c3NUcmFuc2l0aW9uc0J5UHJvcGVydHkudGFrZSh0cmFuc2l0aW9uUHJvcGVydHlUb1JlbW92ZSk7
Ci0gICAgICAgIGNzc1RyYW5zaXRpb25Ub1JlbW92ZS0+c2V0RWZmZWN0KG51bGxwdHIpOwotICAg
ICAgICByZW1vdmVBbmltYXRpb24oY3NzVHJhbnNpdGlvblRvUmVtb3ZlLnJlbGVhc2VOb25OdWxs
KCkpOworICAgICAgICBpZiAoY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5LmNvbnRhaW5zKHRyYW5z
aXRpb25Qcm9wZXJ0eVRvUmVtb3ZlKSkKKyAgICAgICAgICAgIGNhbmNlbE9yUmVtb3ZlRGVjbGFy
YXRpdmVBbmltYXRpb24oY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5LnRha2UodHJhbnNpdGlvblBy
b3BlcnR5VG9SZW1vdmUpKTsKICAgICB9CiAKICAgICAvLyBSZW1vdmUgdGhlIG1hcCBvZiBDU1NU
cmFuc2l0aW9ucyBieSBwcm9wZXJ0eSBmb3IgdGhpcyBlbGVtZW50IGlmIGl0J3Mgbm93IGVtcHR5
LgpAQCAtMjUyLDYgKzI2NiwyMSBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NU
cmFuc2l0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUgogICAgICAgICBt
X2VsZW1lbnRUb0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQucmVtb3ZlKCZlbGVtZW50KTsK
IH0KIAordm9pZCBBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb24o
UmVmUHRyPERlY2xhcmF0aXZlQW5pbWF0aW9uPiBhbmltYXRpb24pCit7CisgICAgYW5pbWF0aW9u
LT5zZXRFZmZlY3QobnVsbHB0cik7CisgICAgcmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbi5yZWxl
YXNlTm9uTnVsbCgpKTsKK30KKwordm9pZCBBbmltYXRpb25UaW1lbGluZTo6Y2FuY2VsT3JSZW1v
dmVEZWNsYXJhdGl2ZUFuaW1hdGlvbihSZWZQdHI8RGVjbGFyYXRpdmVBbmltYXRpb24+IGFuaW1h
dGlvbikKK3sKKyAgICBhdXRvIHBoYXNlID0gYW5pbWF0aW9uLT5lZmZlY3QoKS0+cGhhc2UoKTsK
KyAgICBpZiAocGhhc2UgIT0gQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlOjpJZGxlICYm
IHBoYXNlICE9IEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5OjpQaGFzZTo6QWZ0ZXIpCisgICAgICAg
IGFuaW1hdGlvbi0+Y2FuY2VsKCk7CisgICAgZWxzZQorICAgICAgICByZW1vdmVEZWNsYXJhdGl2
ZUFuaW1hdGlvbihhbmltYXRpb24pOworfQorCiBTdHJpbmcgQW5pbWF0aW9uVGltZWxpbmU6OmRl
c2NyaXB0aW9uKCkKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKaW5kZXggMDgwYTVkYjdkMWUzNGM2MmIxOWYw
MzM2ZjYyNjcwZjg0ZDAwNzU3ZC4uNDM4M2Q3MzYzNDY3OTZhM2ZmNzVhMThhYzFjZTllNDQzZWQz
NjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVs
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgK
QEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NBbmltYXRp
b247CiBjbGFzcyBDU1NUcmFuc2l0aW9uOworY2xhc3MgRGVjbGFyYXRpdmVBbmltYXRpb247CiBj
bGFzcyBFbGVtZW50OwogCiBjbGFzcyBBbmltYXRpb25UaW1lbGluZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEFuaW1hdGlvblRpbWVsaW5lPiB7CkBAIC04MCw5ICs4MSwxMSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgY29uc3QgSGFzaE1hcDxFbGVtZW50KiwgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+Pj4m
IGVsZW1lbnRUb0FuaW1hdGlvbnNNYXAoKSB7IHJldHVybiBtX2VsZW1lbnRUb0FuaW1hdGlvbnNN
YXA7IH0KICAgICBjb25zdCBIYXNoTWFwPEVsZW1lbnQqLCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1h
dGlvbj4+PiYgZWxlbWVudFRvQ1NTQW5pbWF0aW9uc01hcCgpIHsgcmV0dXJuIG1fZWxlbWVudFRv
Q1NTQW5pbWF0aW9uc01hcDsgfQogICAgIGNvbnN0IEhhc2hNYXA8RWxlbWVudCosIFZlY3RvcjxS
ZWZQdHI8V2ViQW5pbWF0aW9uPj4+JiBlbGVtZW50VG9DU1NUcmFuc2l0aW9uc01hcCgpIHsgcmV0
dXJuIG1fZWxlbWVudFRvQ1NTVHJhbnNpdGlvbnNNYXA7IH0KKyAgICB2b2lkIHJlbW92ZURlY2xh
cmF0aXZlQW5pbWF0aW9uKFJlZlB0cjxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4pOwogCiBwcml2YXRl
OgogICAgIEhhc2hNYXA8RWxlbWVudCosIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4+JiBy
ZWxldmFudE1hcEZvckFuaW1hdGlvbihXZWJBbmltYXRpb24mKTsKKyAgICB2b2lkIGNhbmNlbE9y
UmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb24oUmVmUHRyPERlY2xhcmF0aXZlQW5pbWF0aW9uPik7
CiAKICAgICBDbGFzc1R5cGUgbV9jbGFzc1R5cGU7CiAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRz
PiBtX2N1cnJlbnRUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NT
U0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNw
cAppbmRleCA4MmY1MTMwMjYxYWZlM2I5Nzg5MDgwZjBiMjcwNDJiYWIxYTIxMGUwLi44NzNkYmMw
NzRhNGJkZGRjOWFjOWEwNTgwNGU1YTkwYmRmODljOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTQW5pbWF0aW9uLmNwcApAQCAtMzMsMTQgKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUmVmPENTU0FuaW1hdGlvbj4gQ1NTQW5pbWF0aW9uOjpjcmVhdGUoRWxlbWVudCYg
dGFyZ2V0LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24pCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU0FuaW1hdGlvbih0YXJnZXQuZG9jdW1lbnQoKSwgYmFj
a2luZ0FuaW1hdGlvbikpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NBbmlt
YXRpb24odGFyZ2V0LCBiYWNraW5nQW5pbWF0aW9uKSk7CiAgICAgcmVzdWx0LT5tX2FuaW1hdGlv
bk5hbWUgPSBiYWNraW5nQW5pbWF0aW9uLm5hbWUoKTsKICAgICByZXN1bHQtPmluaXRpYWxpemUo
dGFyZ2V0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DU1NBbmltYXRpb246OkNTU0FuaW1h
dGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlv
bikKLSAgICA6IERlY2xhcmF0aXZlQW5pbWF0aW9uKGRvY3VtZW50LCBiYWNraW5nQW5pbWF0aW9u
KQorQ1NTQW5pbWF0aW9uOjpDU1NBbmltYXRpb24oRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQW5p
bWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKQorICAgIDogRGVjbGFyYXRpdmVBbmltYXRpb24oZWxl
bWVudCwgYmFja2luZ0FuaW1hdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NT
U0FuaW1hdGlvbi5oCmluZGV4IDEwMWI1OTNjYTRkNWU5NDgyY2EwNGFhYjM2MGNhYmNmM2VmYzFl
ZjcuLmQ0NjgzYzdjYzAwYjA3ZWY3YjI4MzZiZWI4NmI5MjM0N2I4NGZiZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpIGZpbmFsOwog
CiBwcml2YXRlOgotICAgIENTU0FuaW1hdGlvbihEb2N1bWVudCYsIGNvbnN0IEFuaW1hdGlvbiYp
OworICAgIENTU0FuaW1hdGlvbihFbGVtZW50JiwgY29uc3QgQW5pbWF0aW9uJik7CiAKICAgICBT
dHJpbmcgbV9hbmltYXRpb25OYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJh
bnNpdGlvbi5jcHAKaW5kZXggOTdmYWQzZTg1MGQzNTRiZjY0ODQ0MWY2YzcyNzQzNjA5MDg2M2Fi
Ny4uN2ZkMWI3MzliYzY4YjcyNGE5NmZhNDNkYzYxN2NjOGQ4YmU1MjQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcApAQCAtMzQsMjIgKzM0LDIyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPENTU1RyYW5zaXRpb24+IENTU1RyYW5zaXRpb246OmNy
ZWF0ZShFbGVtZW50JiB0YXJnZXQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU1RyYW5zaXRpb24odGFyZ2V0
LmRvY3VtZW50KCksIGJhY2tpbmdBbmltYXRpb24pKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
UmVmKCpuZXcgQ1NTVHJhbnNpdGlvbih0YXJnZXQsIGJhY2tpbmdBbmltYXRpb24pKTsKICAgICBy
ZXN1bHQtPm1fdHJhbnNpdGlvblByb3BlcnR5ID0gYmFja2luZ0FuaW1hdGlvbi5wcm9wZXJ0eSgp
OwogICAgIHJlc3VsdC0+aW5pdGlhbGl6ZSh0YXJnZXQpOwogICAgIGRvd25jYXN0PEtleWZyYW1l
RWZmZWN0UmVhZE9ubHk+KHJlc3VsdC0+ZWZmZWN0KCkpLT5jb21wdXRlQ1NTVHJhbnNpdGlvbkJs
ZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBuZXdTdHlsZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKLSAgICA6IERlY2xhcmF0aXZlQW5pbWF0
aW9uKGRvY3VtZW50LCBiYWNraW5nQW5pbWF0aW9uKQorQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNp
dGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24p
CisgICAgOiBEZWNsYXJhdGl2ZUFuaW1hdGlvbihlbGVtZW50LCBiYWNraW5nQW5pbWF0aW9uKQog
ewogfQogCiBib29sIENTU1RyYW5zaXRpb246Om1hdGNoZXNCYWNraW5nQW5pbWF0aW9uQW5kU3R5
bGVzKGNvbnN0IEFuaW1hdGlvbiYgbmV3QmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIGNvbnN0CiB7CiAgICAg
Ym9vbCBiYWNraW5nQW5pbWF0aW9uc01hdGNoID0gYmFja2luZ0FuaW1hdGlvbigpID09IG5ld0Jh
Y2tpbmdBbmltYXRpb247Ci0gICAgaWYgKCFvbGRTdHlsZSkKKyAgICBpZiAoIW9sZFN0eWxlIHx8
ICFlZmZlY3QoKSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdBbmltYXRpb25zTWF0Y2g7CiAgICAg
cmV0dXJuIGJhY2tpbmdBbmltYXRpb25zTWF0Y2ggJiYgIWRvd25jYXN0PEtleWZyYW1lRWZmZWN0
UmVhZE9ubHk+KGVmZmVjdCgpKS0+c3R5bGVzV291bGRZaWVsZE5ld0NTU1RyYW5zaXRpb25zQmxl
bmRpbmdLZXlmcmFtZXMoKm9sZFN0eWxlLCBuZXdTdHlsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NTU1RyYW5zaXRpb24uaAppbmRleCAzNWYwZWQwYTliZjU4YjRjM2Q2ZTBkOTBhZTVm
MGNhZmJmMTQ2YTdkLi5lOGEwNTNhYzJjMTFhZjBhOTdjNWFiNzNhNDQ0YjAwYzE4NDY2ODE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIGJvb2wgY2FuQmVMaXN0ZWQoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0
ZToKLSAgICBDU1NUcmFuc2l0aW9uKERvY3VtZW50JiwgY29uc3QgQW5pbWF0aW9uJik7CisgICAg
Q1NTVHJhbnNpdGlvbihFbGVtZW50JiwgY29uc3QgQW5pbWF0aW9uJik7CiAKICAgICBDU1NQcm9w
ZXJ0eUlEIG1fdHJhbnNpdGlvblByb3BlcnR5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCBhMDcyNTY4NTU3YTEwYmEwNGI0
YTE0YjAxZTRkNTRmMzZlNmU2M2QxLi5lZTk3OTM5ODlhYWZjZGQyYjBlOTRhOGQwZDQ1YjFkMWFm
YTNmMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVB
bmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFu
aW1hdGlvbi5jcHAKQEAgLTI4LDE3ICsyOCwyOCBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgi
CiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0VGltaW5nUmVhZE9ubHkuaCIKKyNpbmNsdWRlICJB
bmltYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5oIgorI2luY2x1ZGUgIlBz
ZXVkb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFuc2l0aW9uRXZlbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1EZWNsYXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRpb24o
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24pCi0g
ICAgOiBXZWJBbmltYXRpb24oZG9jdW1lbnQpCitEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFy
YXRpdmVBbmltYXRpb24oRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdB
bmltYXRpb24pCisgICAgOiBXZWJBbmltYXRpb24odGFyZ2V0LmRvY3VtZW50KCkpCisgICAgLCBt
X3RhcmdldCh0YXJnZXQpCiAgICAgLCBtX2JhY2tpbmdBbmltYXRpb24oY29uc3RfY2FzdDxBbmlt
YXRpb24mPihiYWNraW5nQW5pbWF0aW9uKSkKKyAgICAsIG1fZXZlbnRRdWV1ZSh0YXJnZXQpCiB7
CiB9CiAKK0RlY2xhcmF0aXZlQW5pbWF0aW9uOjp+RGVjbGFyYXRpdmVBbmltYXRpb24oKQorewor
ICAgIG1fZXZlbnRRdWV1ZS5jbG9zZSgpOworfQorCiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9u
OjpzZXRCYWNraW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikK
IHsKICAgICBtX2JhY2tpbmdBbmltYXRpb24gPSBjb25zdF9jYXN0PEFuaW1hdGlvbiY+KGJhY2tp
bmdBbmltYXRpb24pOwpAQCAtNTcsNiArNjgsOCBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9u
Ojppbml0aWFsaXplKGNvbnN0IEVsZW1lbnQmIHRhcmdldCkKICAgICBzeW5jUHJvcGVydGllc1dp
dGhCYWNraW5nQW5pbWF0aW9uKCk7CiAgICAgaWYgKGJhY2tpbmdBbmltYXRpb24oKS5wbGF5U3Rh
dGUoKSA9PSBBbmltUGxheVN0YXRlUGxheWluZykKICAgICAgICAgcGxheSgpOworICAgIGVsc2UK
KyAgICAgICAgcGF1c2UoKTsKIAogICAgIHVuc3VzcGVuZEVmZmVjdEludmFsaWRhdGlvbigpOwog
fQpAQCAtNzMsNCArODYsMTI1IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnN5bmNQcm9w
ZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKQogICAgIHVuc3VzcGVuZEVmZmVjdEludmFsaWRh
dGlvbigpOwogfQogCit2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzZXRUaW1lbGluZShSZWZQ
dHI8QW5pbWF0aW9uVGltZWxpbmU+JiYgbmV3VGltZWxpbmUpCit7CisgICAgaWYgKHRpbWVsaW5l
KCkgJiYgIW5ld1RpbWVsaW5lKQorICAgICAgICBjYW5jZWwoKTsKKworICAgIFdlYkFuaW1hdGlv
bjo6c2V0VGltZWxpbmUoV1RGTW92ZShuZXdUaW1lbGluZSkpOworfQorCit2b2lkIERlY2xhcmF0
aXZlQW5pbWF0aW9uOjpjYW5jZWwoKQoreworICAgIGF1dG8gY2FuY2VsYXRpb25UaW1lID0gMF9z
OworICAgIGlmIChhdXRvIGFuaW1hdGlvbkVmZmVjdCA9IGVmZmVjdCgpKQorICAgICAgICBjYW5j
ZWxhdGlvblRpbWUgPSBhbmltYXRpb25FZmZlY3QtPmFjdGl2ZVRpbWUoKS52YWx1ZV9vcigwX3Mp
OworCisgICAgV2ViQW5pbWF0aW9uOjpjYW5jZWwoKTsKKworICAgIGludmFsaWRhdGVET01FdmVu
dHMoY2FuY2VsYXRpb25UaW1lKTsKK30KKworQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNl
IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpwaGFzZVdpdGhvdXRFZmZlY3QoKSBjb25zdAoreworICAg
IC8vIFRoaXMgc2hvdWxkbid0IGJlIGNhbGxlZCBpZiB3ZSBhY3R1YWxseSBoYXZlIGFuIGVmZmVj
dC4KKyAgICBBU1NFUlQoIWVmZmVjdCgpKTsKKworICAgIGF1dG8gYW5pbWF0aW9uQ3VycmVudFRp
bWUgPSBjdXJyZW50VGltZSgpOworICAgIGlmICghYW5pbWF0aW9uQ3VycmVudFRpbWUpCisgICAg
ICAgIHJldHVybiBBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhhc2U6OklkbGU7CisKKyAgICAv
LyBTaW5jZSB3ZSBkb24ndCBoYXZlIGFuIGVmZmVjdCwgdGhlIGR1cmF0aW9uIHdpbGwgYmUgemVy
byBzbyB0aGUgcGhhc2UgaXMgJ2JlZm9yZScgaWYgdGhlIGN1cnJlbnQgdGltZSBpcyBsZXNzIHRo
YW4gemVyby4KKyAgICByZXR1cm4gYW5pbWF0aW9uQ3VycmVudFRpbWUudmFsdWUoKSA8IDBfcyA/
IEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5OjpQaGFzZTo6QmVmb3JlIDogQW5pbWF0aW9uRWZmZWN0
UmVhZE9ubHk6OlBoYXNlOjpBZnRlcjsKK30KKwordm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6
aW52YWxpZGF0ZURPTUV2ZW50cyhTZWNvbmRzIGVsYXBzZWRUaW1lKQoreworICAgIGF1dG8qIGFu
aW1hdGlvbkVmZmVjdCA9IGVmZmVjdCgpOworCisgICAgYXV0byBpc1BlbmRpbmcgPSBwZW5kaW5n
KCk7CisgICAgYXV0byBpdGVyYXRpb24gPSBhbmltYXRpb25FZmZlY3QgPyBhbmltYXRpb25FZmZl
Y3QtPmN1cnJlbnRJdGVyYXRpb24oKS52YWx1ZSgpIDogMDsKKyAgICBhdXRvIGN1cnJlbnRQaGFz
ZSA9IGFuaW1hdGlvbkVmZmVjdCA/IGFuaW1hdGlvbkVmZmVjdC0+cGhhc2UoKSA6IHBoYXNlV2l0
aG91dEVmZmVjdCgpOworCisgICAgYm9vbCB3YXNBY3RpdmUgPSBtX3ByZXZpb3VzUGhhc2UgPT0g
QW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlOjpBY3RpdmU7CisgICAgYm9vbCB3YXNBZnRl
ciA9IG1fcHJldmlvdXNQaGFzZSA9PSBBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhhc2U6OkFm
dGVyOworICAgIGJvb2wgd2FzQmVmb3JlID0gbV9wcmV2aW91c1BoYXNlID09IEFuaW1hdGlvbkVm
ZmVjdFJlYWRPbmx5OjpQaGFzZTo6QmVmb3JlOworICAgIGJvb2wgd2FzSWRsZSA9IG1fcHJldmlv
dXNQaGFzZSA9PSBBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhhc2U6OklkbGU7CisKKyAgICBi
b29sIGlzQWN0aXZlID0gY3VycmVudFBoYXNlID09IEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5OjpQ
aGFzZTo6QWN0aXZlOworICAgIGJvb2wgaXNBZnRlciA9IGN1cnJlbnRQaGFzZSA9PSBBbmltYXRp
b25FZmZlY3RSZWFkT25seTo6UGhhc2U6OkFmdGVyOworICAgIGJvb2wgaXNCZWZvcmUgPSBjdXJy
ZW50UGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlOjpCZWZvcmU7CisgICAg
Ym9vbCBpc0lkbGUgPSBjdXJyZW50UGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6OlBo
YXNlOjpJZGxlOworCisgICAgYXV0byogZWZmZWN0VGltaW5nID0gYW5pbWF0aW9uRWZmZWN0ID8g
YW5pbWF0aW9uRWZmZWN0LT50aW1pbmcoKSA6IG51bGxwdHI7CisgICAgYXV0byBpbnRlcnZhbFN0
YXJ0ID0gZWZmZWN0VGltaW5nID8gc3RkOjptYXgoMF9zLCBzdGQ6Om1pbigtZWZmZWN0VGltaW5n
LT5kZWxheSgpLCBlZmZlY3RUaW1pbmctPmFjdGl2ZUR1cmF0aW9uKCkpKSA6IDBfczsKKyAgICBh
dXRvIGludGVydmFsRW5kID0gZWZmZWN0VGltaW5nID8gc3RkOjptYXgoMF9zLCBzdGQ6Om1pbihl
ZmZlY3RUaW1pbmctPmVuZFRpbWUoKSAtIGVmZmVjdFRpbWluZy0+ZGVsYXkoKSwgZWZmZWN0VGlt
aW5nLT5hY3RpdmVEdXJhdGlvbigpKSkgOiAwX3M7CisKKyAgICBpZiAoaXM8Q1NTQW5pbWF0aW9u
Pih0aGlzKSkgeworICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWFuaW1h
dGlvbnMtMi8jZXZlbnRzCisgICAgICAgIGlmICgod2FzSWRsZSB8fCB3YXNCZWZvcmUpICYmIGlz
QWN0aXZlKQorICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS5hbmltYXRp
b25zdGFydEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgZWxzZSBpZiAoKHdhc0lkbGUg
fHwgd2FzQmVmb3JlKSAmJiBpc0FmdGVyKSB7CisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQo
ZXZlbnROYW1lcygpLmFuaW1hdGlvbnN0YXJ0RXZlbnQsIGludGVydmFsU3RhcnQpOworICAgICAg
ICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS5hbmltYXRpb25lbmRFdmVudCwgaW50
ZXJ2YWxFbmQpOworICAgICAgICB9IGVsc2UgaWYgKHdhc0FjdGl2ZSAmJiBpc0JlZm9yZSkKKyAg
ICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkuYW5pbWF0aW9uZW5kRXZlbnQs
IGludGVydmFsU3RhcnQpOworICAgICAgICBlbHNlIGlmICh3YXNBY3RpdmUgJiYgaXNBY3RpdmUg
JiYgbV9wcmV2aW91c0l0ZXJhdGlvbiAhPSBpdGVyYXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8g
aXRlcmF0aW9uQm91bmRhcnkgPSBpdGVyYXRpb247CisgICAgICAgICAgICBpZiAobV9wcmV2aW91
c0l0ZXJhdGlvbiA+IGl0ZXJhdGlvbikKKyAgICAgICAgICAgICAgICBpdGVyYXRpb25Cb3VuZGFy
eSsrOworICAgICAgICAgICAgYXV0byBlbGFwc2VkVGltZSA9IGVmZmVjdFRpbWluZyA/IGVmZmVj
dFRpbWluZy0+aXRlcmF0aW9uRHVyYXRpb24oKSAqIChpdGVyYXRpb25Cb3VuZGFyeSAtIGVmZmVj
dFRpbWluZy0+aXRlcmF0aW9uU3RhcnQoKSkgOiAwX3M7CisgICAgICAgICAgICBlbnF1ZXVlRE9N
RXZlbnQoZXZlbnROYW1lcygpLmFuaW1hdGlvbml0ZXJhdGlvbkV2ZW50LCBlbGFwc2VkVGltZSk7
CisgICAgICAgIH0gZWxzZSBpZiAod2FzQWN0aXZlICYmIGlzQWZ0ZXIpCisgICAgICAgICAgICBl
bnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLmFuaW1hdGlvbmVuZEV2ZW50LCBpbnRlcnZhbEVu
ZCk7CisgICAgICAgIGVsc2UgaWYgKHdhc0FmdGVyICYmIGlzQWN0aXZlKQorICAgICAgICAgICAg
ZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS5hbmltYXRpb25zdGFydEV2ZW50LCBpbnRlcnZh
bEVuZCk7CisgICAgICAgIGVsc2UgaWYgKHdhc0FmdGVyICYmIGlzQmVmb3JlKSB7CisgICAgICAg
ICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLmFuaW1hdGlvbnN0YXJ0RXZlbnQsIGlu
dGVydmFsRW5kKTsKKyAgICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkuYW5p
bWF0aW9uZW5kRXZlbnQsIGludGVydmFsU3RhcnQpOworICAgICAgICB9IGVsc2UgaWYgKCghd2Fz
SWRsZSAmJiAhd2FzQWZ0ZXIpICYmIGlzSWRsZSkKKyAgICAgICAgICAgIGVucXVldWVET01FdmVu
dChldmVudE5hbWVzKCkuYW5pbWF0aW9uY2FuY2VsRXZlbnQsIGVsYXBzZWRUaW1lKTsKKyAgICB9
IGVsc2UgaWYgKGlzPENTU1RyYW5zaXRpb24+KHRoaXMpKSB7CisgICAgICAgIC8vIGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3MtdHJhbnNpdGlvbnMtMi8jdHJhbnNpdGlvbi1ldmVudHMKKyAg
ICAgICAgaWYgKHdhc0lkbGUgJiYgKGlzUGVuZGluZyB8fCBpc0JlZm9yZSkpCisgICAgICAgICAg
ICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRpb25ydW5FdmVudCwgaW50ZXJ2
YWxTdGFydCk7CisgICAgICAgIGVsc2UgaWYgKHdhc0lkbGUgJiYgaXNBY3RpdmUpIHsKKyAgICAg
ICAgICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbnJ1bkV2ZW50LCBp
bnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCku
dHJhbnNpdGlvbnN0YXJ0RXZlbnQsIGludGVydmFsU3RhcnQpOworICAgICAgICB9IGVsc2UgaWYg
KHdhc0lkbGUgJiYgaXNBZnRlcikgeworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50
TmFtZXMoKS50cmFuc2l0aW9ucnVuRXZlbnQsIGludGVydmFsU3RhcnQpOworICAgICAgICAgICAg
ZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uc3RhcnRFdmVudCwgaW50ZXJ2
YWxTdGFydCk7CisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLnRyYW5z
aXRpb25lbmRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICB9IGVsc2UgaWYgKChtX3dhc1Bl
bmRpbmcgfHwgd2FzQmVmb3JlKSAmJiBpc0FjdGl2ZSkKKyAgICAgICAgICAgIGVucXVldWVET01F
dmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbnN0YXJ0RXZlbnQsIGludGVydmFsU3RhcnQpOwor
ICAgICAgICBlbHNlIGlmICgobV93YXNQZW5kaW5nIHx8IHdhc0JlZm9yZSkgJiYgaXNBZnRlcikg
eworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uc3Rh
cnRFdmVudCwgaW50ZXJ2YWxTdGFydCk7CisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZl
bnROYW1lcygpLnRyYW5zaXRpb25lbmRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICB9IGVs
c2UgaWYgKHdhc0FjdGl2ZSAmJiBpc0FmdGVyKQorICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50
KGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uZW5kRXZlbnQsIGludGVydmFsRW5kKTsKKyAgICAgICAg
ZWxzZSBpZiAod2FzQWN0aXZlICYmIGlzQmVmb3JlKQorICAgICAgICAgICAgZW5xdWV1ZURPTUV2
ZW50KGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uZW5kRXZlbnQsIGludGVydmFsU3RhcnQpOworICAg
ICAgICBlbHNlIGlmICh3YXNBZnRlciAmJiBpc0FjdGl2ZSkKKyAgICAgICAgICAgIGVucXVldWVE
T01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbnN0YXJ0RXZlbnQsIGludGVydmFsRW5kKTsK
KyAgICAgICAgZWxzZSBpZiAod2FzQWZ0ZXIgJiYgaXNCZWZvcmUpIHsKKyAgICAgICAgICAgIGVu
cXVldWVET01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbnN0YXJ0RXZlbnQsIGludGVydmFs
RW5kKTsKKyAgICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlv
bmVuZEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgfSBlbHNlIGlmICgoIXdhc0lkbGUg
JiYgIXdhc0FmdGVyKSAmJiBpc0lkbGUpCisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZl
bnROYW1lcygpLnRyYW5zaXRpb25jYW5jZWxFdmVudCwgZWxhcHNlZFRpbWUpOworICAgIH0KKwor
ICAgIG1fd2FzUGVuZGluZyA9IGlzUGVuZGluZzsKKyAgICBtX3ByZXZpb3VzUGhhc2UgPSBjdXJy
ZW50UGhhc2U7CisgICAgbV9wcmV2aW91c0l0ZXJhdGlvbiA9IGl0ZXJhdGlvbjsKK30KKwordm9p
ZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBTZWNvbmRzIGVsYXBzZWRUaW1lKQoreworICAgIGF1dG8gdGltZSA9IHNl
Y29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGVsYXBzZWRUaW1lKSAvIDEwMDA7CisgICAgaWYg
KGlzPENTU0FuaW1hdGlvbj4odGhpcykpCisgICAgICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZl
bnQoQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvd25jYXN0PENTU0FuaW1hdGlv
bj4odGhpcyktPmFuaW1hdGlvbk5hbWUoKSwgdGltZSkpOworICAgIGVsc2UgaWYgKGlzPENTU1Ry
YW5zaXRpb24+KHRoaXMpKQorICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFRyYW5z
aXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4odGhp
cyktPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVt
ZW50TmFtZUZvckV2ZW50cyhtX3RhcmdldC5wc2V1ZG9JZCgpKSkpOworfQorICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Rl
Y2xhcmF0aXZlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRp
dmVBbmltYXRpb24uaAppbmRleCA3ZWEyODViYzFmOWY3MDhiMDQwNmJhMzkwNjQ2NWQ3ZTc2NjZh
MTdlLi5iYzFjYWVmYWFjNWZhZjc1MzJiYWY1OWM3OWRhMWJiY2Q4OTRkNzhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaApAQCAtMjUsNiAr
MjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdFJlYWRP
bmx5LmgiCisjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUuaCIKICNpbmNsdWRlICJXZWJBbmlt
YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTMyLDI1ICszNCwzNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvbjsKIGNsYXNzIEVsZW1lbnQ7CitjbGFz
cyBSZW5kZXJTdHlsZTsKIAogY2xhc3MgRGVjbGFyYXRpdmVBbmltYXRpb24gOiBwdWJsaWMgV2Vi
QW5pbWF0aW9uIHsKIHB1YmxpYzoKLSAgICB+RGVjbGFyYXRpdmVBbmltYXRpb24oKSA9IGRlZmF1
bHQ7CisgICAgfkRlY2xhcmF0aXZlQW5pbWF0aW9uKCk7CiAKICAgICBib29sIGlzRGVjbGFyYXRp
dmVBbmltYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBB
bmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmdBbmlt
YXRpb247IH0KICAgICB2b2lkIHNldEJhY2tpbmdBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJik7
CisgICAgdm9pZCBpbnZhbGlkYXRlRE9NRXZlbnRzKFNlY29uZHMgZWxhcHNlZFRpbWUgPSAwX3Mp
OworCisgICAgdm9pZCBzZXRUaW1lbGluZShSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+JiYpIGZp
bmFsOworICAgIHZvaWQgY2FuY2VsKCkgZmluYWw7CiAKIHByb3RlY3RlZDoKLSAgICBEZWNsYXJh
dGl2ZUFuaW1hdGlvbihEb2N1bWVudCYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIERlY2xhcmF0
aXZlQW5pbWF0aW9uKEVsZW1lbnQmLCBjb25zdCBBbmltYXRpb24mKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsaXplKGNvbnN0IEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1By
b3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpOwogCiBwcml2YXRlOgotICAgIFJlZjxBbmlt
YXRpb24+IG1fYmFja2luZ0FuaW1hdGlvbjsKKyAgICBBbmltYXRpb25FZmZlY3RSZWFkT25seTo6
UGhhc2UgcGhhc2VXaXRob3V0RWZmZWN0KCkgY29uc3Q7CisgICAgdm9pZCBlbnF1ZXVlRE9NRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiwgU2Vjb25kcyk7CiAKKyAgICBFbGVtZW50JiBtX3Rhcmdl
dDsKKyAgICBSZWY8QW5pbWF0aW9uPiBtX2JhY2tpbmdBbmltYXRpb247CisgICAgYm9vbCBtX3dh
c1BlbmRpbmcgeyBmYWxzZSB9OworICAgIEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5OjpQaGFzZSBt
X3ByZXZpb3VzUGhhc2UgeyBBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhhc2U6OklkbGUgfTsK
KyAgICBkb3VibGUgbV9wcmV2aW91c0l0ZXJhdGlvbjsKKyAgICBHZW5lcmljRXZlbnRRdWV1ZSBt
X2V2ZW50UXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKaW5kZXggNTI1ODEzYzM2MjZmY2Nj
ZDNhYmE4NGMxNjRlNTQyMjQyNTNmMjZkNC4uNjMyZmM2MzljYmY3Mzg1ZjllYzdkNDg3N2JmZjBi
NzEzYzcxZGZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50
VGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkRlY2xh
cmF0aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yLmgiCiAj
aW5jbHVkZSAiRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCkBAIC0xMDksNiArMTEwLDEyIEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6c2NoZWR1
bGVJbnZhbGlkYXRpb25UYXNrSWZOZWVkZWQoKQogCiB2b2lkIERvY3VtZW50VGltZWxpbmU6OnBl
cmZvcm1JbnZhbGlkYXRpb25UYXNrKCkKIHsKKyAgICAvLyBOb3cgdGhhdCB0aGUgdGltaW5nIG1v
ZGVsIGhhcyBjaGFuZ2VkIHdlIGNhbiBzZWUgaWYgdGhlcmUgYXJlIERPTSBldmVudHMgdG8gZGlz
cGF0Y2ggZm9yIGRlY2xhcmF0aXZlIGFuaW1hdGlvbnMuCisgICAgZm9yIChhdXRvJiBhbmltYXRp
b24gOiBhbmltYXRpb25zKCkpIHsKKyAgICAgICAgaWYgKGlzPERlY2xhcmF0aXZlQW5pbWF0aW9u
PihhbmltYXRpb24pKQorICAgICAgICAgICAgZG93bmNhc3Q8RGVjbGFyYXRpdmVBbmltYXRpb24+
KCphbmltYXRpb24pLmludmFsaWRhdGVET01FdmVudHMoKTsKKyAgICB9CisKICAgICB1cGRhdGVB
bmltYXRpb25TY2hlZHVsZSgpOwogICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBzdGQ6Om51bGxv
cHQ7CiB9CkBAIC0xMjAsMTEgKzEyNywxMCBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnVwZGF0
ZUFuaW1hdGlvblNjaGVkdWxlKCkKIAogICAgIG1fbmVlZHNVcGRhdGVBbmltYXRpb25TY2hlZHVs
ZSA9IGZhbHNlOwogCi0gICAgU2Vjb25kcyBub3cgPSBjdXJyZW50VGltZSgpLnZhbHVlKCk7CiAg
ICAgU2Vjb25kcyBzY2hlZHVsZURlbGF5ID0gU2Vjb25kczo6aW5maW5pdHkoKTsKIAogICAgIGZv
ciAoY29uc3QgYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9ucygpKSB7Ci0gICAgICAgIGF1dG8g
YW5pbWF0aW9uVGltZVRvTmV4dFJlcXVpcmVkVGljayA9IGFuaW1hdGlvbi0+dGltZVRvTmV4dFJl
cXVpcmVkVGljayhub3cpOworICAgICAgICBhdXRvIGFuaW1hdGlvblRpbWVUb05leHRSZXF1aXJl
ZFRpY2sgPSBhbmltYXRpb24tPnRpbWVUb05leHRSZXF1aXJlZFRpY2soKTsKICAgICAgICAgaWYg
KGFuaW1hdGlvblRpbWVUb05leHRSZXF1aXJlZFRpY2sgPCBhbmltYXRpb25JbnRlcnZhbCkgewog
ICAgICAgICAgICAgc2NoZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xNzMsNyArMTc5LDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjp1cGRhdGVB
bmltYXRpb25zKCkKICAgICAgICAgbV9kb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwog
ICAgIH0KIAotICAgIGZvciAoYXV0byBhbmltYXRpb24gOiBtX2FjY2VsZXJhdGVkQW5pbWF0aW9u
c1BlbmRpbmdSdW5uaW5nU3RhdGVDaGFuZ2UpCisgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiBt
X2FjY2VsZXJhdGVkQW5pbWF0aW9uc1BlbmRpbmdSdW5uaW5nU3RhdGVDaGFuZ2UpCiAgICAgICAg
IGFuaW1hdGlvbi0+c3RhcnRPclN0b3BBY2NlbGVyYXRlZCgpOwogICAgIG1fYWNjZWxlcmF0ZWRB
bmltYXRpb25zUGVuZGluZ1J1bm5pbmdTdGF0ZUNoYW5nZS5jbGVhcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5jcHAKaW5kZXgg
ZjRmYjk3NmU5MzlmYmVmNzUxNTc3MGIxYTlhNDgwYzlmOTQ0OGQzZS4uMmE3YTg4MWI5OTJhZTk5
MjAyNGEwYWNmODUyNDYxNjEzYzM3ZDA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0tleWZyYW1lRWZmZWN0UmVhZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9LZXlmcmFtZUVmZmVjdFJlYWRPbmx5LmNwcApAQCAtNzQ4LDE1ICs3NDgsMTMgQEAg
Ym9vbCBLZXlmcmFtZUVmZmVjdFJlYWRPbmx5OjpzdHlsZXNXb3VsZFlpZWxkTmV3Q1NTVHJhbnNp
dGlvbnNCbGVuZGluZ0tleWZyYW1lcygKICAgICBBU1NFUlQoaXM8Q1NTVHJhbnNpdGlvbj4oYW5p
bWF0aW9uKCkpKTsKICAgICBhdXRvIHByb3BlcnR5ID0gZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4o
YW5pbWF0aW9uKCkpLT5iYWNraW5nQW5pbWF0aW9uKCkucHJvcGVydHkoKTsKIAotICAgIC8vIElm
IHdlIGRpZG4ndCBoYXZlIGJsZW5kaW5nIGtleWZyYW1lcyB5ZXQsIHdlIHdvdWxkIGNyZWF0ZSBu
ZXcgYmxlbmRpbmcga2V5ZnJhbWVzIHByb3ZpZGVkCi0gICAgLy8gdGhlIHN0YXJ0IGFuZCBlbmQg
c3R5bGVzIGhvbGQgZGlmZmVyZW50IHZhbHVlcyBmb3IgdGhpcyBwcm9wZXJ0eS4KLSAgICBpZiAo
IWhhc0JsZW5kaW5nS2V5ZnJhbWVzKCkpCi0gICAgICAgIHJldHVybiAhQ1NTUHJvcGVydHlBbmlt
YXRpb246OnByb3BlcnRpZXNFcXVhbChwcm9wZXJ0eSwgJm9sZFN0eWxlLCAmbmV3U3R5bGUpOwot
Ci0gICAgLy8gT3RoZXJ3aXNlLCB3ZSB3b3VsZCBjcmVhdGUgbmV3IGJsZW5kaW5nIGtleWZyYW1l
cyBwcm92aWRlZCB0aGUgY3VycmVudCBzdGFydCBrZXlmcmFtZSBob2xkcwotICAgIC8vIGEgZGlm
ZmVyZW50IHZhbHVlIHRoYW4gdGhlIG5ldyBzdGFydCBzdHlsZSBvciB0aGUgY3VycmVudCBlbmQg
a2V5ZnJhbWUgaG9sZHMgYSBkaWZmZXJlbnQgdmFsdWUKLSAgICAvLyB0aGFuIHRoZSBuZXcgZW5k
IHN0eWxlIGZvciB0aGlzIHByb3BlcnR5LgotICAgIHJldHVybiAhQ1NTUHJvcGVydHlBbmltYXRp
b246OnByb3BlcnRpZXNFcXVhbChwcm9wZXJ0eSwgbV9ibGVuZGluZ0tleWZyYW1lc1swXS5zdHls
ZSgpLCAmb2xkU3R5bGUpIHx8ICFDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6cHJvcGVydGllc0VxdWFs
KHByb3BlcnR5LCBtX2JsZW5kaW5nS2V5ZnJhbWVzWzFdLnN0eWxlKCksICZuZXdTdHlsZSk7Cisg
ICAgLy8gVGhlcmUgY2Fubm90IGJlIG5ldyBrZXlmcmFtZXMgaWYgdGhlIHN0YXJ0IGFuZCB0byB2
YWx1ZXMgYXJlIHRoZSBzYW1lLgorICAgIGlmIChDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6cHJvcGVy
dGllc0VxdWFsKHByb3BlcnR5LCAmb2xkU3R5bGUsICZuZXdTdHlsZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIE90aGVyd2lzZSwgd2Ugd291bGQgY3JlYXRlIG5ldyBibGVuZGlu
ZyBrZXlmcmFtZXMgcHJvdmlkZWQgdGhlIGN1cnJlbnQgZW5kIGtleWZyYW1lIGhvbGRzIGEgZGlm
ZmVyZW50CisgICAgLy8gdmFsdWUgdGhhbiB0aGUgbmV3IGVuZCBzdHlsZSBmb3IgdGhpcyBwcm9w
ZXJ0eS4KKyAgICByZXR1cm4gIUNTU1Byb3BlcnR5QW5pbWF0aW9uOjpwcm9wZXJ0aWVzRXF1YWwo
cHJvcGVydHksIG1fYmxlbmRpbmdLZXlmcmFtZXNbMV0uc3R5bGUoKSwgJm5ld1N0eWxlKTsKIH0K
IAogdm9pZCBLZXlmcmFtZUVmZmVjdFJlYWRPbmx5Ojpjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1w
YWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggOTU3
MGZjNmNhZGY3ZDBkMzAzMTM1Y2FlMWRmNjE2NTBiMDgzYzY2NS4uZTMzNmM3MmRlNTRmYjYxZjE0
MWI4N2EyMDY0YTA3YWNiOTIxZDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL1dlYkFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5jcHAKQEAgLTk2NiwyNiArOTY2LDMxIEBAIHZvaWQgV2ViQW5pbWF0aW9uOjp1cGRh
dGVQZW5kaW5nVGFza3MoKQogICAgIH0KIH0KIAotU2Vjb25kcyBXZWJBbmltYXRpb246OnRpbWVU
b05leHRSZXF1aXJlZFRpY2soU2Vjb25kcyB0aW1lbGluZVRpbWUpIGNvbnN0CitTZWNvbmRzIFdl
YkFuaW1hdGlvbjo6dGltZVRvTmV4dFJlcXVpcmVkVGljaygpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X3RpbWVsaW5lIHx8ICFtX3N0YXJ0VGltZSB8fCAhbV9lZmZlY3QgfHwgIW1fcGxheWJhY2tSYXRl
KQorICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSB0aW1lbGluZSwgYW4gZWZmZWN0LCBhIHN0YXJ0
IHRpbWUgb3IgYSBwbGF5YmFjayByYXRlIG90aGVyIHRoYW4gMCwKKyAgICAvLyB0aGVyZSBpcyBu
byB2YWx1ZSB0byBhcHBseSBzbyB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIGludmFsaWRhdGlv
bi4KKyAgICBpZiAoIW1fdGltZWxpbmUgfHwgIW1fZWZmZWN0IHx8ICFtX3N0YXJ0VGltZSB8fCAh
bV9wbGF5YmFja1JhdGUpCiAgICAgICAgIHJldHVybiBTZWNvbmRzOjppbmZpbml0eSgpOwogCi0g
ICAgYXV0byBzdGFydFRpbWUgPSBtX3N0YXJ0VGltZS52YWx1ZSgpOwotICAgIGF1dG8gZW5kVGlt
ZSA9IHN0YXJ0VGltZSArIChtX2VmZmVjdC0+dGltaW5nKCktPml0ZXJhdGlvbkR1cmF0aW9uKCkg
LyBtX3BsYXliYWNrUmF0ZSk7CisgICAgLy8gSWYgd2UncmUgaW4gdGhlIHJ1bm5pbmcgc3RhdGUs
IHdlIG5lZWQgdG8gc2NoZWR1bGUgaW52YWxpZGF0aW9uIGFzIHNvb24gYXMgcG9zc2libGUuCisg
ICAgaWYgKHBsYXlTdGF0ZSgpID09IFBsYXlTdGF0ZTo6UnVubmluZykKKyAgICAgICAgcmV0dXJu
IDBfczsKIAotICAgIC8vIElmIHdlIGhhdmVuJ3Qgc3RhcnRlZCB5ZXQsIHJldHVybiB0aGUgaW50
ZXJ2YWwgdW50aWwgb3VyIGFjdGl2ZSBzdGFydCB0aW1lLgotICAgIGF1dG8gYWN0aXZlU3RhcnRU
aW1lID0gc3RkOjptaW4oc3RhcnRUaW1lLCBlbmRUaW1lKTsKLSAgICBpZiAodGltZWxpbmVUaW1l
IDw9IGFjdGl2ZVN0YXJ0VGltZSkKLSAgICAgICAgcmV0dXJuIGFjdGl2ZVN0YXJ0VGltZSAtIHRp
bWVsaW5lVGltZTsKKyAgICAvLyBJZiBvdXIgY3VycmVudCB0aW1lIGlzIG5lZ2F0aXZlLCB3ZSBu
ZWVkIHRvIGJlIHNjaGVkdWxlZCB0byBiZSByZXNvbHZlZCBhdCB0aGUgaW52ZXJzZQorICAgIC8v
IG9mIG91ciBjdXJyZW50IHRpbWUsIHVubGVzcyB3ZSBmaWxsIGJhY2t3YXJkcywgaW4gd2hpY2gg
Y2FzZSB3ZSB3YW50IHRvIGludmFsaWRhdGUgYXMKKyAgICAvLyBzb29uIGFzIHBvc3NpYmxlLgor
ICAgIGF1dG8gbG9jYWxUaW1lID0gY3VycmVudFRpbWUoKS52YWx1ZSgpOworICAgIGlmIChsb2Nh
bFRpbWUgPCAwX3MpCisgICAgICAgIHJldHVybiAtbG9jYWxUaW1lOwogCi0gICAgLy8gSWYgd2Un
cmUgaW4gdGhlIG1pZGRsZSBvZiBvdXIgYWN0aXZlIGR1cmF0aW9uLCB3ZSB3YW50IHRvIGJlIGNh
bGxlZCBhcyBzb29uIGFzIHBvc3NpYmxlLgotICAgIGF1dG8gYWN0aXZlRW5kVGltZSA9IHN0ZDo6
bWF4KHN0YXJ0VGltZSwgZW5kVGltZSk7Ci0gICAgaWYgKHRpbWVsaW5lVGltZSA8PSBhY3RpdmVF
bmRUaW1lKQotICAgICAgICByZXR1cm4gMF9tczsKKyAgICAvLyBJZiBvdXIgY3VycmVudCB0aW1l
IGlzIGp1c3QgYXQgdGhlIGFjdGhpdmUgZHVyYXRpb24gdGhyZXNob2xkIHdlIHdhbnQgdG8gaW52
YWxpZGF0ZSBhcworICAgIC8vIHNvb24gYXMgcG9zc2libGUgdG8gcmVzdG9yZSBhIG5vbi1hbmlt
YXRlZCB2YWx1ZS4KKyAgICBpZiAoc3RkOjphYnMobG9jYWxUaW1lLm1pY3Jvc2Vjb25kcygpIC0g
bV9lZmZlY3QtPnRpbWluZygpLT5hY3RpdmVEdXJhdGlvbigpLm1pY3Jvc2Vjb25kcygpKSA8IHRp
bWVFcHNpbG9uLm1pY3Jvc2Vjb25kcygpKQorICAgICAgICByZXR1cm4gMF9zOwogCi0gICAgLy8g
SWYgbm9uZSBvZiB0aGUgcHJldmlvdXMgY2FzZXMgbWF0Y2gsIHRoZW4gd2UncmUgYWxyZWFkeSBw
YXN0IG91ciBhY3RpdmUgZHVyYXRpb24KLSAgICAvLyBhbmQgZG8gbm90IG5lZWQgc2NoZWR1bGlu
Zy4KKyAgICAvLyBJbiBhbnkgb3RoZXIgY2FzZSwgd2UncmUgaWRsZSBvciBhbHJlYWR5IG91dHNp
ZGUgb3VyIGFjdGl2ZSBkdXJhdGlvbiBhbmQgaGF2ZSBubyBuZWVkCisgICAgLy8gdG8gc2NoZWR1
bGUgYW4gaW52YWxpZGF0aW9uLgogICAgIHJldHVybiBTZWNvbmRzOjppbmZpbml0eSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKaW5kZXggNDkzZjc1YTQ4OTIz
YTUzN2U3NDYyZmZjMGI4NDQwOGVmNTI2MGNiYi4uMTQ4NTI5NDYxZTg4ZTFlOWNhZGMyYTM2YzEy
MjMwMTg1ZjRkMjE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHkqIGVm
ZmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZWZmZWN0LmdldCgpOyB9CiAgICAgdm9pZCBzZXRFZmZl
Y3QoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5PiYmKTsKICAgICBBbmltYXRpb25UaW1l
bGluZSogdGltZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lLmdldCgpOyB9Ci0gICAg
dm9pZCBzZXRUaW1lbGluZShSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+JiYpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRUaW1lbGluZShSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+JiYpOwogCiAgICAg
c3RkOjpvcHRpb25hbDxkb3VibGU+IGJpbmRpbmdzU3RhcnRUaW1lKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRCaW5kaW5nc1N0YXJ0VGltZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pOwpAQCAtOTEsMjIg
KzkxLDE4IEBAIHB1YmxpYzoKICAgICB1c2luZyBGaW5pc2hlZFByb21pc2UgPSBET01Qcm9taXNl
UHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrPElETEludGVyZmFjZTxXZWJBbmltYXRpb24+PjsKICAg
ICBGaW5pc2hlZFByb21pc2UmIGZpbmlzaGVkKCkgeyByZXR1cm4gbV9maW5pc2hlZFByb21pc2Uu
Z2V0KCk7IH0KIAotICAgIHZvaWQgY2FuY2VsKCk7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgp
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGZpbmlzaCgpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHBsYXkoKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwYXVzZSgpOwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHJldmVyc2UoKTsKIAotICAgIFNlY29uZHMgdGltZVRvTmV4dFJlcXVpcmVkVGljayhT
ZWNvbmRzKSBjb25zdDsKKyAgICBTZWNvbmRzIHRpbWVUb05leHRSZXF1aXJlZFRpY2soKSBjb25z
dDsKICAgICB2b2lkIHJlc29sdmUoUmVuZGVyU3R5bGUmKTsKICAgICB2b2lkIGVmZmVjdFRhcmdl
dERpZENoYW5nZShFbGVtZW50KiBwcmV2aW91c1RhcmdldCwgRWxlbWVudCogbmV3VGFyZ2V0KTsK
ICAgICB2b2lkIGFjY2VsZXJhdGVkUnVubmluZ1N0YXRlRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCBz
dGFydE9yU3RvcEFjY2VsZXJhdGVkKCk7CiAKLSAgICBlbnVtIGNsYXNzIERpZFNlZWsgeyBZZXMs
IE5vIH07Ci0gICAgZW51bSBjbGFzcyBTeW5jaHJvbm91c2x5Tm90aWZ5IHsgWWVzLCBObyB9Owot
ICAgIHZvaWQgdXBkYXRlRmluaXNoZWRTdGF0ZShEaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90aWZ5
KTsKLQogICAgIHZvaWQgdGltaW5nTW9kZWxEaWRDaGFuZ2UoKTsKICAgICB2b2lkIHN1c3BlbmRF
ZmZlY3RJbnZhbGlkYXRpb24oKTsKICAgICB2b2lkIHVuc3VzcGVuZEVmZmVjdEludmFsaWRhdGlv
bigpOwpAQCAtMTIyLDEwICsxMTgsMTMgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaXNFZmZlY3RJ
bnZhbGlkYXRpb25TdXNwZW5kZWQoKSB7IHJldHVybiBtX3N1c3BlbmRDb3VudDsgfQogCiBwcml2
YXRlOgorICAgIGVudW0gY2xhc3MgRGlkU2VlayB7IFllcywgTm8gfTsKKyAgICBlbnVtIGNsYXNz
IFN5bmNocm9ub3VzbHlOb3RpZnkgeyBZZXMsIE5vIH07CiAgICAgZW51bSBjbGFzcyBSZXNwZWN0
SG9sZFRpbWUgeyBZZXMsIE5vIH07CiAgICAgZW51bSBjbGFzcyBBdXRvUmV3aW5kIHsgWWVzLCBO
byB9OwogICAgIGVudW0gY2xhc3MgVGltZVRvUnVuUGVuZGluZ1Rhc2sgeyBOb3RTY2hlZHVsZWQs
IEFTQVAsIFdoZW5SZWFkeSB9OwogCisgICAgdm9pZCB1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNl
ZWssIFN5bmNocm9ub3VzbHlOb3RpZnkpOwogICAgIHZvaWQgZW5xdWV1ZUFuaW1hdGlvblBsYXli
YWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiwgc3Rk
OjpvcHRpb25hbDxTZWNvbmRzPik7CiAgICAgU2Vjb25kcyBlZmZlY3RFbmRUaW1lKCkgY29uc3Q7
CiAgICAgV2ViQW5pbWF0aW9uJiByZWFkeVByb21pc2VSZXNvbHZlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgKaW5kZXggZjQzNjVhODg5
NGRhOWI4NTE0Mzg0Yjc4ODkzODI2NTc2YmM0ZjM0ZS4uYTdhYmRhYzBmMDIxODNlYjA0NGY0ZGY2
ODczNmM4YjFkMGMzYjUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dl
YkFuaW1hdGlvblV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJB
bmltYXRpb25VdGlsaXRpZXMuaApAQCAtNDAsNSArNDAsNyBAQCBpbmxpbmUgZG91YmxlIHNlY29u
ZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGNvbnN0IFNlY29uZHMgdGltZSkKICAgICByZXR1cm4g
c3RkOjpyb3VuZCh0aW1lLm1pY3Jvc2Vjb25kcygpKSAvIDEwMDA7CiB9CiAKK2NvbnN0IGF1dG8g
dGltZUVwc2lsb24gPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDAuMDAxKTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBlYzYyNmYxMTYw
YjE4ZDcxYTcwMTkyMjFjOWEyYmE2ZWUwNjliYmQ5Li4yNzViMWNhMmMxYTE2OTk1NDk1MzhjZTdj
NmMzZmJmMjMyZDgzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTU5LDYgKzU5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGFkZHNvdXJjZWJ1ZmZlcikgXAogICAg
IG1hY3JvKGFkZHN0cmVhbSkgXAogICAgIG1hY3JvKGFkZHRyYWNrKSBcCisgICAgbWFjcm8oYW5p
bWF0aW9uY2FuY2VsKSBcCiAgICAgbWFjcm8oYW5pbWF0aW9uZW5kKSBcCiAgICAgbWFjcm8oYW5p
bWF0aW9uaXRlcmF0aW9uKSBcCiAgICAgbWFjcm8oYW5pbWF0aW9uc3RhcnQpIFwKQEAgLTI0OSw3
ICsyNTAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHRvdWNobW92ZSkgXAog
ICAgIG1hY3JvKHRvdWNoc3RhcnQpIFwKICAgICBtYWNybyh0cmFjaykgXAorICAgIG1hY3JvKHRy
YW5zaXRpb25jYW5jZWwpIFwKICAgICBtYWNybyh0cmFuc2l0aW9uZW5kKSBcCisgICAgbWFjcm8o
dHJhbnNpdGlvbnJ1bikgXAorICAgIG1hY3JvKHRyYW5zaXRpb25zdGFydCkgXAogICAgIG1hY3Jv
KHVuaGFuZGxlZHJlamVjdGlvbikgXAogICAgIG1hY3JvKHVubG9hZCkgXAogICAgIG1hY3JvKHVu
bXV0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxl
cnMuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCmluZGV4
IGE4ZDM0NzA1ZmU2ZWU4YTQ0Mjk2MGYyZjNkMDU0ZGJlMmQxMTU1ZGUuLjVjNDg3MTE3MmMzNThj
NjIwYzBmMGFjYzE4YzZjNTVjOGM5MzVlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2xvYmFs
RXZlbnRIYW5kbGVycy5pZGwKQEAgLTk3LDE1ICs5NywxNSBAQAogCiAgICAgLy8gRXh0ZW5zaW9u
cyBmcm9tIENTUyBUcmFuc2l0aW9ucyBBUEkgKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
dHJhbnNpdGlvbnMvI2ludGVyZmFjZS1nbG9iYWxldmVudGhhbmRsZXJzLWlkbCkuCiAgICAgYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbnRyYW5zaXRpb25lbmQ7Ci0gICAgLy8gYXR0cmlidXRlIEV2
ZW50SGFuZGxlciBvbnRyYW5zaXRpb25ydW47Ci0gICAgLy8gYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnRyYW5zaXRpb25zdGFydDsKLSAgICAvLyBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udHJh
bnNpdGlvbmNhbmNlbDsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udHJhbnNpdGlvbnJ1
bjsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udHJhbnNpdGlvbnN0YXJ0OworICAgIGF0
dHJpYnV0ZSBFdmVudEhhbmRsZXIgb250cmFuc2l0aW9uY2FuY2VsOwogCiAgICAgLy8gRXZlbnQg
aGFuZGxlcnMgZnJvbSBDU1MgQW5pbWF0aW9ucyBBUEkgKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3MtYW5pbWF0aW9ucy8jaW50ZXJmYWNlLWdsb2JhbGV2ZW50aGFuZGxlcnMtaWRsKS4KICAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYW5pbWF0aW9uZW5kOwogICAgIGF0dHJpYnV0ZSBF
dmVudEhhbmRsZXIgb25hbmltYXRpb25pdGVyYXRpb247CiAgICAgYXR0cmlidXRlIEV2ZW50SGFu
ZGxlciBvbmFuaW1hdGlvbnN0YXJ0OwotICAgIC8vIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25h
bmltYXRpb25jYW5jZWw7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFuaW1hdGlvbmNh
bmNlbDsKIAogICAgIC8vIEFkZGl0aW9ucyB0aGF0IGFyZSBub3QgeWV0IHBhcnQgb2YgdGhlIHN0
YW5kYXJkLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4
IDIzNjNmNzMxM2FjNWZmMDNiMjBhOTA0MzEwNjhjN2NmNTBmODRkMmYuLjZhM2I0YTJlY2EwNGU0
OTNiZTgyNzljYjk1YWEzMjM4M2ExYzQwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCkBAIC0xOTMsNiArMTkzLDcgQEAgb25hYm9ydAogb25hbmltYXRpb25z
dGFydAogb25hbmltYXRpb25pdGVyYXRpb24KIG9uYW5pbWF0aW9uZW5kCitvbmFuaW1hdGlvbmNh
bmNlbAogb25hdXRvY29tcGxldGUKIG9uYXV0b2NvbXBsZXRlZXJyb3IKIG9uYmVmb3JlY29weQpA
QCAtMjgyLDcgKzI4MywxMCBAQCBvbnRvdWNoc3RhcnQKIG9udG91Y2htb3ZlCiBvbnRvdWNoZW5k
CiBvbnRvdWNoY2FuY2VsCitvbnRyYW5zaXRpb25jYW5jZWwKIG9udHJhbnNpdGlvbmVuZAorb250
cmFuc2l0aW9ucnVuCitvbnRyYW5zaXRpb25zdGFydAogb251bmxvYWQKIG9udm9sdW1lY2hhbmdl
CiBvbndhaXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggYjFhZGQyNGYz
YjdhNzgxY2FkOWE0NDAyNGNiODE1ZWEyYjkzYTFkOC4uMWIxNzY4ZTg5OWFlZDVlY2JlNmExYjJk
ZWM1OGU3YzBjNzRlZjY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTIy
OSw2ICsyMjksNyBAQCBIVE1MRWxlbWVudDo6RXZlbnRIYW5kbGVyTmFtZU1hcCBIVE1MRWxlbWVu
dDo6Y3JlYXRlRXZlbnRIYW5kbGVyTmFtZU1hcCgpCiAgICAgICAgICZvbmFuaW1hdGlvbmVuZEF0
dHIuZ2V0KCksCiAgICAgICAgICZvbmFuaW1hdGlvbml0ZXJhdGlvbkF0dHIuZ2V0KCksCiAgICAg
ICAgICZvbmFuaW1hdGlvbnN0YXJ0QXR0ci5nZXQoKSwKKyAgICAgICAgJm9uYW5pbWF0aW9uY2Fu
Y2VsQXR0ci5nZXQoKSwKICAgICAgICAgJm9uYXV0b2NvbXBsZXRlQXR0ci5nZXQoKSwKICAgICAg
ICAgJm9uYXV0b2NvbXBsZXRlZXJyb3JBdHRyLmdldCgpLAogICAgICAgICAmb25iZWZvcmVjb3B5
QXR0ci5nZXQoKSwKQEAgLTMwMyw3ICszMDQsMTAgQEAgSFRNTEVsZW1lbnQ6OkV2ZW50SGFuZGxl
ck5hbWVNYXAgSFRNTEVsZW1lbnQ6OmNyZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXAoKQogICAgICAg
ICAmb250b3VjaGZvcmNlY2hhbmdlQXR0ci5nZXQoKSwKICAgICAgICAgJm9udG91Y2htb3ZlQXR0
ci5nZXQoKSwKICAgICAgICAgJm9udG91Y2hzdGFydEF0dHIuZ2V0KCksCisgICAgICAgICZvbnRy
YW5zaXRpb25jYW5jZWxBdHRyLmdldCgpLAogICAgICAgICAmb250cmFuc2l0aW9uZW5kQXR0ci5n
ZXQoKSwKKyAgICAgICAgJm9udHJhbnNpdGlvbnJ1bkF0dHIuZ2V0KCksCisgICAgICAgICZvbnRy
YW5zaXRpb25zdGFydEF0dHIuZ2V0KCksCiAgICAgICAgICZvbnZvbHVtZWNoYW5nZUF0dHIuZ2V0
KCksCiAgICAgICAgICZvbndhaXRpbmdBdHRyLmdldCgpLAogICAgICAgICAmb253ZWJraXRiZWdp
bmZ1bGxzY3JlZW5BdHRyLmdldCgpLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
bW96aWxsYS9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxv
ZwppbmRleCBjN2Q4ODVjNjM5NDM2NWY4ZWFjYzMzMDhkMDExMWU3OGVhYTRmY2FkLi5hNmNiOGNh
OTFhNmRkYzQ1MzlmYzk4MDdlMWQzYzM5NDRhZjA2MzNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9t
b3ppbGxhL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAzLTIwICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25zXSBEaXNw
YXRjaCBET00gZXZlbnRzIGZvciBDU1MgVHJhbnNpdGlvbnMgYW5kIENTUyBBbmltYXRpb25zIGlt
cGxlbWVudGVkIGFzIFdlYiBBbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODM3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IHRlc3RzIGZvciBDU1MgQW5pbWF0aW9ucyBhbmQg
Q1NTIFRyYW5zaXRpb25zIGV2ZW50cyBjcmVhdGVkIGJ5IE1vemlsbGEgYnV0IG5vdCB5ZXQgc3Vi
bWl0dGVkIHRvIFdlYiBQbGF0Zm9ybSBUZXN0cy4KKworICAgICAgICAqIGNzcy1hbmltYXRpb25z
L3Rlc3RfZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3Mt
YW5pbWF0aW9ucy90ZXN0X2V2ZW50LWRpc3BhdGNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNz
cy10cmFuc2l0aW9ucy90ZXN0X2V2ZW50LWRpc3BhdGNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogY3NzLXRyYW5zaXRpb25zL3Rlc3RfZXZlbnQtZGlzcGF0Y2guaHRtbDogQWRkZWQu
CisgICAgICAgICogcmVzb3VyY2VzL3Rlc3Rjb21tb24uanM6IEFkZGVkLgorCiAyMDE1LTA1LTI2
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAg
QW4gU1ZHIHdpdGggbm8gaW50cmluc2ljIHNpemUgZG9lcyBub3QgZHJhdyBjb3JyZWN0IHNsaWNl
cyB3aGVuIHVzZWQgYXMgYSBib3JkZXItaW1hZ2UgZm9yIGFuIEhUTUwgZWxlbWVudC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9l
dmVudC1kaXNwYXRjaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L2Nzcy1hbmltYXRpb25zL3Rlc3RfZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUyMjA4MTdhMThhMzdiN2YwY2U5ZDA0M2YwMjliOTc4ZTNjMTRkMGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3Rf
ZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKKworUEFTUyBJZGxl
IC0+IEFjdGl2ZSAKK1BBU1MgSWRsZSAtPiBBZnRlciAKK1BBU1MgQmVmb3JlIC0+IEFjdGl2ZSAK
K1BBU1MgQmVmb3JlIC0+IEFmdGVyIAorUEFTUyBBY3RpdmUgLT4gSWRsZSwgZGlzcGxheTogbm9u
ZSAKK1BBU1MgQWN0aXZlIC0+IElkbGUsIHNldHRpbmcgQW5pbWF0aW9uLnRpbWVsaW5lID0gbnVs
bCAKK1BBU1MgQWN0aXZlIC0+IElkbGUsIGNhbGxpbmcgQW5pbWF0aW9uLmNhbmNlbCgpIAorUEFT
UyBBY3RpdmUgLT4gQmVmb3JlIAorUEFTUyBBY3RpdmUgLT4gQWZ0ZXIgCitQQVNTIEFmdGVyIC0+
IEJlZm9yZSAKK1BBU1MgQWZ0ZXIgLT4gQWN0aXZlIAorUEFTUyBBY3RpdmUgLT4gQWN0aXZlIChm
b3J3YXJkcykgCitQQVNTIEFjdGl2ZSAtPiBBY3RpdmUgKGJhY2t3YXJkcykgCitQQVNTIEFjdGl2
ZSAtPiBJZGxlIC0+IEFjdGl2ZTogYW5pbWF0aW9uc3RhcnQgaXMgZmlyZWQgYnkgcmVzdGFydGlu
ZyBhbmltYXRpb24gCitQQVNTIE5lZ2F0aXZlIHBsYXliYWNrUmF0ZSBzYW5pdHkgdGVzdChCZWZv
cmUgLT4gQWN0aXZlIC0+IEJlZm9yZSkgCitQQVNTIENhbGwgQW5pbWF0aW9uLmNhbmNlbCBhZnRl
ciBjYW5jZWxsaW5nIGFuaW1hdGlvbi4gCitQQVNTIFJlc3RhcnQgYW5pbWF0aW9uIGFmdGVyIGNh
bmNlbGxpbmcgYW5pbWF0aW9uIGltbWVkaWF0ZWx5LiAKK1BBU1MgQ2FsbCBBbmltYXRpb24uY2Fu
Y2VsIGFmdGVyIHJlc3RhcnRpbmcgYW5pbWF0aW9uIGltbWVkaWF0ZWx5LiAKK1BBU1MgU2V0IHRp
bWVsaW5lIGFuZCBwbGF5IHRyYW5zaXRpb24gYWZ0ZXIgY2xlYXJpbmcgdGhlIHRpbWVsaW5lLiAK
K1BBU1MgU2V0IG51bGwgdGFyZ2V0IGVmZmVjdCBhZnRlciBjYW5jZWxsaW5nIHRoZSBhbmltYXRp
b24uIAorUEFTUyBDYW5jZWwgdGhlIGFuaW1hdGlvbiBhZnRlciBjbGVhcmluZyB0aGUgdGFyZ2V0
IGVmZmVjdC4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3Nz
LWFuaW1hdGlvbnMvdGVzdF9ldmVudC1kaXNwYXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2V2ZW50LWRpc3BhdGNoLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjhhM2VmNjg4YzFkYTg4YjA4MzA1OTRiNTAwZGM3Zjg0ZmI3ZmY2MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVz
dF9ldmVudC1kaXNwYXRjaC5odG1sCkBAIC0wLDAgKzEsMzgyIEBACis8IWRvY3R5cGUgaHRtbD48
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNTU0FuaW1hdGlvbnNBbmRDU1NUcmFuc2l0
aW9uc0JhY2tlZEJ5V2ViQW5pbWF0aW9ucz10cnVlIF0gLS0+Cis8bWV0YSBjaGFyc2V0PXV0Zi04
PgorPHRpdGxlPlRlc3RzIGZvciBDU1MgYW5pbWF0aW9uIGV2ZW50IGRpc3BhdGNoPC90aXRsZT4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1hbmlt
YXRpb25zLTIvI2V2ZW50LWRpc3BhdGNoIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0Y29tbW9uLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAgQGtleWZyYW1lcyBh
bmltIHsKKyAgICBmcm9tIHsgbWFyZ2luLWxlZnQ6IDBweDsgfQorICAgIHRvIHsgbWFyZ2luLWxl
ZnQ6IDEwMHB4OyB9CisgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+
Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCisvKioKKyAqIEhlbHBlciBjbGFzcyB0byByZWNv
cmQgdGhlIGVsYXBzZWRUaW1lIG1lbWJlciBvZiBlYWNoIGV2ZW50LgorICogVGhlIEV2ZW50V2F0
Y2hlciBjbGFzcyBpbiB0ZXN0aGFybmVzcy5qcyBhbGxvd3MgdXMgdG8gd2FpdCBvbgorICogbXVs
dGlwbGUgZXZlbnRzIGluIGEgY2VydGFpbiBvcmRlciBidXQgb25seSByZWNvcmRzIHRoZSBldmVu
dAorICogcGFyYW1ldGVycyBvZiB0aGUgbW9zdCByZWNlbnQgZXZlbnQuCisgKi8KK2Z1bmN0aW9u
IEFuaW1hdGlvbkV2ZW50SGFuZGxlcih0YXJnZXQpIHsKKyAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7
CisgIHRoaXMudGFyZ2V0Lm9uYW5pbWF0aW9uc3RhcnQgPSBldnQgPT4geworICAgdGhpcy5hbmlt
YXRpb25zdGFydCA9IGV2dC5lbGFwc2VkVGltZTsKKyAgfTsKKyAgdGhpcy50YXJnZXQub25hbmlt
YXRpb25pdGVyYXRpb24gPSBldnQgPT4geworICAgIHRoaXMuYW5pbWF0aW9uaXRlcmF0aW9uID0g
ZXZ0LmVsYXBzZWRUaW1lOworICB9OworICB0aGlzLnRhcmdldC5vbmFuaW1hdGlvbmVuZCA9IGV2
dCA9PiB7CisgICAgdGhpcy5hbmltYXRpb25lbmQgPSBldnQuZWxhcHNlZFRpbWU7CisgIH07Cisg
IHRoaXMudGFyZ2V0Lm9uYW5pbWF0aW9uY2FuY2VsID0gZXZ0ID0+IHsKKyAgICB0aGlzLmFuaW1h
dGlvbmNhbmNlbCA9IGV2dC5lbGFwc2VkVGltZTsKKyAgfTsKK30KK0FuaW1hdGlvbkV2ZW50SGFu
ZGxlci5wcm90b3R5cGUuY2xlYXIgPSAoKSA9PiB7CisgIHRoaXMuYW5pbWF0aW9uc3RhcnQgICAg
ID0gdW5kZWZpbmVkOworICB0aGlzLmFuaW1hdGlvbml0ZXJhdGlvbiA9IHVuZGVmaW5lZDsKKyAg
dGhpcy5hbmltYXRpb25lbmQgICAgICAgPSB1bmRlZmluZWQ7CisgIHRoaXMuYW5pbWF0aW9uY2Fu
Y2VsICAgID0gdW5kZWZpbmVkOworfQorCitmdW5jdGlvbiBzZXR1cEFuaW1hdGlvbih0LCBhbmlt
YXRpb25TdHlsZSkgeworICBjb25zdCBkaXYgPSBhZGREaXYodCwgeyBzdHlsZTogJ2FuaW1hdGlv
bjogJyArIGFuaW1hdGlvblN0eWxlIH0pOworICAvLyBOb3RlIHRoYXQgdGhpcyBBbmltYXRpb25F
dmVudEhhbmRsZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIEV2ZW50V2F0Y2hlcgorICAvLyB0
byBjYXB0dXJlIGFsbCBldmVudHMgaW4gdGhlIGhhbmRsZXIgcHJpb3IgdG8gdGhlIEV2ZW50V2F0
Y2hlciBzaW5jZQorICAvLyB0ZXN0aGFybmVzcy5qcyBwcm9jZWVkcyB3aGVuIHRoZSBFdmVudFdh
dGNoZXIgcmVjZWl2ZWQgd2F0Y2hpbmcgZXZlbnRzLgorICBjb25zdCBoYW5kbGVyID0gbmV3IEFu
aW1hdGlvbkV2ZW50SGFuZGxlcihkaXYpOworICBjb25zdCB3YXRjaGVyID0gbmV3IEV2ZW50V2F0
Y2hlcih0LCBkaXYsIFsgJ2FuaW1hdGlvbnN0YXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uaXRlcmF0aW9uJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uZW5kJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5pbWF0aW9uY2FuY2VsJyBdKTsKKyAg
Y29uc3QgYW5pbWF0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICByZXR1cm4geyBh
bmltYXRpb24sIHdhdGNoZXIsIGRpdiwgaGFuZGxlciB9OworfQorCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIC8vIEFkZCAxbXMgZGVsYXkgdG8gZW5zdXJlIHRoYXQgdGhlIGRlbGF5IGlzIG5vdCBp
bmNsdWRlZCBpbiB0aGUgZWxhcHNlZFRpbWUuCisgIGNvbnN0IHsgYW5pbWF0aW9uLCB3YXRjaGVy
IH0gPSBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzIDFtcycpOworCisgIHJldHVybiB3YXRj
aGVyLndhaXRfZm9yKCdhbmltYXRpb25zdGFydCcpLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKGV2dC5lbGFwc2VkVGltZSwgMC4wKTsKKyAgfSk7Cit9LCAnSWRsZSAtPiBBY3RpdmUn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciwg
ZGl2LCBoYW5kbGVyIH0gPSBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzJyk7CisKKyAgLy8g
U2VlayB0byBBZnRlciBwaGFzZS4KKyAgYW5pbWF0aW9uLmZpbmlzaCgpOworICByZXR1cm4gd2F0
Y2hlci53YWl0X2ZvcihbICdhbmltYXRpb25zdGFydCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2FuaW1hdGlvbmVuZCcgXSkudGhlbigoKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyho
YW5kbGVyLmFuaW1hdGlvbnN0YXJ0LCAwLjApOworICAgIGFzc2VydF9lcXVhbHMoaGFuZGxlci5h
bmltYXRpb25lbmQsIDEwMCk7CisgIH0pOworfSwgJ0lkbGUgLT4gQWZ0ZXInKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciB9ID0KKyAgICBzZXR1
cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzIDEwMHMgcGF1c2VkJyk7CisKKyAgcmV0dXJuIGFuaW1h
dGlvbi5yZWFkeS50aGVuKCgpID0+IHsKKyAgICAvLyBTZWVrIHRvIEFjdGl2ZSBwaGFzZS4KKyAg
ICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAxMDAgKiBNU19QRVJfU0VDOworICAgIHJldHVybiB3
YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25zdGFydCcpOworICB9KS50aGVuKGV2dCA9PiB7Cisg
ICAgYXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwgJ0JlZm9y
ZSAtPiBBY3RpdmUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlv
biwgd2F0Y2hlciwgZGl2LCBoYW5kbGVyIH0gPQorICAgIHNldHVwQW5pbWF0aW9uKHQsICdhbmlt
IDEwMHMgMTAwcyBwYXVzZWQnKTsKKworICByZXR1cm4gYW5pbWF0aW9uLnJlYWR5LnRoZW4oKCkg
PT4geworICAgIC8vIFNlZWsgdG8gQWZ0ZXIgcGhhc2UuCisgICAgYW5pbWF0aW9uLmZpbmlzaCgp
OworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKFsgJ2FuaW1hdGlvbnN0YXJ0JywgJ2FuaW1h
dGlvbmVuZCcgXSk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGhhbmRs
ZXIuYW5pbWF0aW9uc3RhcnQsIDAuMCk7CisgICAgYXNzZXJ0X2VxdWFscyhoYW5kbGVyLmFuaW1h
dGlvbmVuZCwgMTAwLjApOworICB9KTsKK30sICdCZWZvcmUgLT4gQWZ0ZXInKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciwgZGl2IH0gPSBzZXR1
cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzIHBhdXNlZCcpOworCisgIHJldHVybiB3YXRjaGVyLndh
aXRfZm9yKCdhbmltYXRpb25zdGFydCcpLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBNYWtlIGlkbGUK
KyAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0
X2ZvcignYW5pbWF0aW9uY2FuY2VsJyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRf
ZXF1YWxzKGV2dC5lbGFwc2VkVGltZSwgMC4wKTsKKyAgfSk7Cit9LCAnQWN0aXZlIC0+IElkbGUs
IGRpc3BsYXk6IG5vbmUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1h
dGlvbiwgd2F0Y2hlciwgZGl2IH0gPSBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzJyk7CisK
KyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0JykudGhlbihldnQgPT4g
eworICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDEwMC4wOworICAgIC8vIE1ha2UgaWRsZQor
ICAgIGFuaW1hdGlvbi50aW1lbGluZSA9IG51bGw7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9m
b3IoJ2FuaW1hdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X3Rp
bWVfZXF1YWxzX2xpdGVyYWwoZXZ0LmVsYXBzZWRUaW1lLCAwLjEpOworICB9KTsKK30sICdBY3Rp
dmUgLT4gSWRsZSwgc2V0dGluZyBBbmltYXRpb24udGltZWxpbmUgPSBudWxsJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgLy8gd2Ugc2hvdWxkIE5PVCBwYXVzZSBhbmltYXRpb24gc2luY2Ug
Y2FsbGluZyBjYW5jZWwgc3luY2hyb25vdXNseS4KKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNo
ZXIsIGRpdiB9ID0gc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcycpOworCisgIHJldHVybiB3
YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25zdGFydCcpLnRoZW4oZXZ0ID0+IHsKKyAgICBhbmlt
YXRpb24uY3VycmVudFRpbWUgPSA1MC4wOworICAgIGFuaW1hdGlvbi5jYW5jZWwoKTsKKyAgICBy
ZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uY2FuY2VsJyk7CisgIH0pLnRoZW4oZXZ0
ID0+IHsKKyAgICBhc3NlcnRfdGltZV9lcXVhbHNfbGl0ZXJhbChldnQuZWxhcHNlZFRpbWUsIDAu
MDUpOworICB9KTsKK30sICdBY3RpdmUgLT4gSWRsZSwgY2FsbGluZyBBbmltYXRpb24uY2FuY2Vs
KCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hl
ciB9ID0KKyAgICBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzIDEwMHMgcGF1c2VkJyk7CisK
KyAgLy8gU2VlayB0byBBY3RpdmUgcGhhc2UuCisgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IDEw
MCAqIE1TX1BFUl9TRUM7CisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25zdGFy
dCcpLnRoZW4oKCkgPT4geworICAgIC8vIFNlZWsgdG8gQmVmb3JlIHBoYXNlLgorICAgIGFuaW1h
dGlvbi5jdXJyZW50VGltZSA9IDA7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1h
dGlvbmVuZCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxh
cHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwgJ0FjdGl2ZSAtPiBCZWZvcmUnKTsKKworcHJvbWlz
ZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciB9ID0gc2V0dXBBbmlt
YXRpb24odCwgJ2FuaW0gMTAwcyBwYXVzZWQnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2Zv
cignYW5pbWF0aW9uc3RhcnQnKS50aGVuKGV2dCA9PiB7CisgICAgLy8gU2VlayB0byBBZnRlciBw
aGFzZS4KKyAgICBhbmltYXRpb24uZmluaXNoKCk7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9m
b3IoJ2FuaW1hdGlvbmVuZCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhldnQuZWxhcHNlZFRpbWUsIDEwMC4wKTsKKyAgfSk7Cit9LCAnQWN0aXZlIC0+IEFmdGVyJyk7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIsIGRp
diwgaGFuZGxlciB9ID0KKyAgICBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzIDEwMHMgcGF1
c2VkJyk7CisKKyAgLy8gU2VlayB0byBBZnRlciBwaGFzZS4KKyAgYW5pbWF0aW9uLmZpbmlzaCgp
OworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICdhbmltYXRpb25zdGFydCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbmVuZCcgXSkudGhlbigoKSA9PiB7CisgICAg
Ly8gU2VlayB0byBCZWZvcmUgcGhhc2UuCisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMDsK
KyAgICBoYW5kbGVyLmNsZWFyKCk7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAnYW5p
bWF0aW9uc3RhcnQnLCAnYW5pbWF0aW9uZW5kJyBdKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAg
YXNzZXJ0X2VxdWFscyhoYW5kbGVyLmFuaW1hdGlvbnN0YXJ0LCAxMDAuMCk7CisgICAgYXNzZXJ0
X2VxdWFscyhoYW5kbGVyLmFuaW1hdGlvbmVuZCwgMC4wKTsKKyAgfSk7Cit9LCAnQWZ0ZXIgLT4g
QmVmb3JlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24sIHdh
dGNoZXIsIGRpdiB9ID0KKyAgICBzZXR1cEFuaW1hdGlvbih0LCAnYW5pbSAxMDBzIDEwMHMgcGF1
c2VkJyk7CisKKyAgLy8gU2VlayB0byBBZnRlciBwaGFzZS4KKyAgYW5pbWF0aW9uLmZpbmlzaCgp
OworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICdhbmltYXRpb25zdGFydCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbmVuZCcgXSkudGhlbigoKSA9PiB7CisgICAg
Ly8gU2VlayB0byBBY3RpdmUgcGhhc2UuCisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMTAw
ICogTVNfUEVSX1NFQzsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uc3Rh
cnQnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRU
aW1lLCAxMDAuMCk7CisgIH0pOworfSwgJ0FmdGVyIC0+IEFjdGl2ZScpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGNvbnN0IHsgYW5pbWF0aW9uLCB3YXRjaGVyLCBkaXYgfQorICAgID0gc2V0
dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcyAxMDBzIDMgcGF1c2VkJyk7CisKKyAgcmV0dXJuIGFu
aW1hdGlvbi5yZWFkeS50aGVuKCgpID0+IHsKKyAgICAvLyBTZWVrIHRvIGl0ZXJhdGlvbiAwIChu
byBhbmltYXRpb25pdGVyYXRpb24gZXZlbnQgc2hvdWxkIGJlIGRpc3BhdGNoZWQpCisgICAgYW5p
bWF0aW9uLmN1cnJlbnRUaW1lID0gMTAwICogTVNfUEVSX1NFQzsKKyAgICByZXR1cm4gd2F0Y2hl
ci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIC8v
IFNlZWsgdG8gaXRlcmF0aW9uIDIKKyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAzMDAgKiBN
U19QRVJfU0VDOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25pdGVyYXRp
b24nKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRU
aW1lLCAyMDApOworICAgIC8vIFNlZWsgdG8gQWZ0ZXIgcGhhc2UgKG5vIGFuaW1hdGlvbml0ZXJh
dGlvbiBldmVudCBzaG91bGQgYmUgZGlzcGF0Y2hlZCkKKyAgICBhbmltYXRpb24uY3VycmVudFRp
bWUgPSA0MDAgKiBNU19QRVJfU0VDOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdhbmlt
YXRpb25lbmQnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVs
YXBzZWRUaW1lLCAzMDApOworICB9KTsKK30sICdBY3RpdmUgLT4gQWN0aXZlIChmb3J3YXJkcykn
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciB9
ID0gc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcyAxMDBzIDMnKTsKKworICAvLyBTZWVrIHRv
IEFmdGVyIHBoYXNlLgorICBhbmltYXRpb24uZmluaXNoKCk7CisgIHJldHVybiB3YXRjaGVyLndh
aXRfZm9yKFsgJ2FuaW1hdGlvbnN0YXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YW5pbWF0aW9uZW5kJyBdKS50aGVuKCgpID0+IHsKKyAgICAvLyBTZWVrIHRvIGl0ZXJhdGlvbiAy
IChubyBhbmltYXRpb25pdGVyYXRpb24gZXZlbnQgc2hvdWxkIGJlIGRpc3BhdGNoZWQpCisgICAg
YW5pbWF0aW9uLnBhdXNlKCk7CisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMzAwICogTVNf
UEVSX1NFQzsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKTsK
KyAgfSkudGhlbigoKSA9PiB7CisgICAgLy8gU2VlayB0byBtaWQgb2YgaXRlcmF0aW9uIDAgcGhh
c2UuCisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMjAwICogTVNfUEVSX1NFQzsKKyAgICBy
ZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uaXRlcmF0aW9uJyk7CisgIH0pLnRoZW4o
ZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2VkVGltZSwgMjAwLjApOworICAg
IC8vIFNlZWsgdG8gYmVmb3JlIHBoYXNlIChubyBhbmltYXRpb25pdGVyYXRpb24gZXZlbnQgc2hv
dWxkIGJlIGRpc3BhdGNoZWQpCisgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gMDsKKyAgICBy
ZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uZW5kJyk7CisgIH0pOworfSwgJ0FjdGl2
ZSAtPiBBY3RpdmUgKGJhY2t3YXJkcyknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25z
dCB7IGFuaW1hdGlvbiwgd2F0Y2hlciwgZGl2IH0gPQorICAgIHNldHVwQW5pbWF0aW9uKHQsICdh
bmltIDEwMHMgcGF1c2VkJyk7CisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25z
dGFydCcpLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBTZWVrIHRvIElkbGUgcGhhc2UuCisgICAgZGl2
LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisK
KyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uY2FuY2VsJyk7CisgIH0pLnRo
ZW4oKCkgPT4geworICAgIC8vIFJlc3RhcnQgdGhpcyBhbmltYXRpb24uCisgICAgZGl2LnN0eWxl
LmRpc3BsYXkgPSAnJzsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uc3Rh
cnQnKTsKKyAgfSk7Cit9LCAnQWN0aXZlIC0+IElkbGUgLT4gQWN0aXZlOiBhbmltYXRpb25zdGFy
dCBpcyBmaXJlZCBieSByZXN0YXJ0aW5nIGFuaW1hdGlvbicpOworCitwcm9taXNlX3Rlc3QodCA9
PiB7CisgIGNvbnN0IHsgYW5pbWF0aW9uLCB3YXRjaGVyIH0gPQorICAgIHNldHVwQW5pbWF0aW9u
KHQsICdhbmltIDEwMHMgMTAwcyAyIHBhdXNlZCcpOworCisgIC8vIE1ha2UgQWZ0ZXIuCisgIGFu
aW1hdGlvbi5maW5pc2goKTsKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAnYW5pbWF0aW9u
c3RhcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmltYXRpb25lbmQnIF0pLnRo
ZW4oZXZ0ID0+IHsKKyAgICBhbmltYXRpb24ucGxheWJhY2tSYXRlID0gLTE7CisgICAgcmV0dXJu
IHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2VkVGltZSwgMjAwKTsKKyAgICAvLyBTZWVrIHRv
IDFzdCBpdGVyYXRpb24KKyAgICBhbmltYXRpb24uY3VycmVudFRpbWUgPSAyMDAgKiBNU19QRVJf
U0VDIC0gMTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uaXRlcmF0aW9u
Jyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2VkVGlt
ZSwgMTAwKTsKKyAgICAvLyBTZWVrIHRvIGJlZm9yZQorICAgIGFuaW1hdGlvbi5jdXJyZW50VGlt
ZSA9IDEwMCAqIE1TX1BFUl9TRUMgLSAxOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdh
bmltYXRpb25lbmQnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0
LmVsYXBzZWRUaW1lLCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFuaW1hdGlvbi5wbGF5U3RhdGUs
ICdydW5uaW5nJyk7IC8vIGRlbGF5CisgIH0pOworfSwgJ05lZ2F0aXZlIHBsYXliYWNrUmF0ZSBz
YW5pdHkgdGVzdChCZWZvcmUgLT4gQWN0aXZlIC0+IEJlZm9yZSknKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciB9ID0gc2V0dXBBbmltYXRpb24o
dCwgJ2FuaW0gMTAwcycpOworCisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdhbmltYXRpb25z
dGFydCcpLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBNYWtlIGlkbGUKKyAgICBhbmltYXRpb24uY2Fu
Y2VsKCk7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbmNhbmNlbCcpOwor
ICB9KS50aGVuKGV2dCA9PiB7CisgICAgYW5pbWF0aW9uLmNhbmNlbCgpOworICAgIC8vIFRoZW4g
d2FpdCBhIGNvdXBsZSBvZiBmcmFtZXMgYW5kIGNoZWNrIHRoYXQgbm8gZXZlbnQgd2FzIGRpc3Bh
dGNoZWQuCisgICAgcmV0dXJuIHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pOworfSwg
J0NhbGwgQW5pbWF0aW9uLmNhbmNlbCBhZnRlciBjYW5jZWxsaW5nIGFuaW1hdGlvbi4nKTsKKwor
Ly8gRklYTUU6IHRpbWVvdXQKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRp
b24sIHdhdGNoZXIsIGRpdiB9ID0gc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMXMnKTsKKworICBy
ZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKS50aGVuKGV2dCA9PiB7Cisg
ICAgLy8gTWFrZSBpZGxlCisKKyAgICBhbmltYXRpb24uY2FuY2VsKCk7CisgICAgYW5pbWF0aW9u
LnBsYXkoKTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICdhbmltYXRpb25jYW5jZWwn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuaW1hdGlvbnN0YXJ0JyBdKTsKKyAg
fSk7Cit9LCAnUmVzdGFydCBhbmltYXRpb24gYWZ0ZXIgY2FuY2VsbGluZyBhbmltYXRpb24gaW1t
ZWRpYXRlbHkuJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyBhbmltYXRpb24s
IHdhdGNoZXIgfSA9IHNldHVwQW5pbWF0aW9uKHQsICdhbmltIDEwMHMnKTsKKworICByZXR1cm4g
d2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKS50aGVuKGV2dCA9PiB7CisgICAgLy8g
TWFrZSBpZGxlCisgICAgYW5pbWF0aW9uLmNhbmNlbCgpOworICAgIGFuaW1hdGlvbi5wbGF5KCk7
CisgICAgYW5pbWF0aW9uLmNhbmNlbCgpOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCdh
bmltYXRpb25jYW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIC8vIFRoZW4gd2FpdCBh
IGNvdXBsZSBvZiBmcmFtZXMgYW5kIGNoZWNrIHRoYXQgbm8gZXZlbnQgd2FzIGRpc3BhdGNoZWQu
CisgICAgcmV0dXJuIHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pOworfSwgJ0NhbGwg
QW5pbWF0aW9uLmNhbmNlbCBhZnRlciByZXN0YXJ0aW5nIGFuaW1hdGlvbiBpbW1lZGlhdGVseS4n
KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0Y2hlciB9
ID0gc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcycpOworCisgIHJldHVybiB3YXRjaGVyLndh
aXRfZm9yKCdhbmltYXRpb25zdGFydCcpLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBNYWtlIGlkbGUK
KyAgICBhbmltYXRpb24udGltZWxpbmUgPSBudWxsOworICAgIHJldHVybiB3YXRjaGVyLndhaXRf
Zm9yKCdhbmltYXRpb25jYW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFuaW1hdGlv
bi50aW1lbGluZSA9IGRvY3VtZW50LnRpbWVsaW5lOworICAgIGFuaW1hdGlvbi5wbGF5KCk7Cisg
ICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ2FuaW1hdGlvbnN0YXJ0Jyk7CisgIH0pOworfSwg
J1NldCB0aW1lbGluZSBhbmQgcGxheSB0cmFuc2l0aW9uIGFmdGVyIGNsZWFyaW5nIHRoZSB0aW1l
bGluZS4nKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IGFuaW1hdGlvbiwgd2F0
Y2hlciB9ID0gc2V0dXBBbmltYXRpb24odCwgJ2FuaW0gMTAwcycpOworCisgIHJldHVybiB3YXRj
aGVyLndhaXRfZm9yKCdhbmltYXRpb25zdGFydCcpLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBNYWtl
IGlkbGUKKyAgICBhbmltYXRpb24uY2FuY2VsKCk7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9m
b3IoJ2FuaW1hdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYW5pbWF0aW9u
LmVmZmVjdCA9IG51bGw7CisgICAgLy8gVGhlbiB3YWl0IGEgY291cGxlIG9mIGZyYW1lcyBhbmQg
Y2hlY2sgdGhhdCBubyBldmVudCB3YXMgZGlzcGF0Y2hlZC4KKyAgICByZXR1cm4gd2FpdEZvckFu
aW1hdGlvbkZyYW1lcygyKTsKKyAgfSk7Cit9LCAnU2V0IG51bGwgdGFyZ2V0IGVmZmVjdCBhZnRl
ciBjYW5jZWxsaW5nIHRoZSBhbmltYXRpb24uJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAg
Y29uc3QgeyBhbmltYXRpb24sIHdhdGNoZXIgfSA9IHNldHVwQW5pbWF0aW9uKHQsICdhbmltIDEw
MHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcignYW5pbWF0aW9uc3RhcnQnKS50aGVu
KGV2dCA9PiB7CisgICAgYW5pbWF0aW9uLmVmZmVjdCA9IG51bGw7CisgICAgcmV0dXJuIHdhdGNo
ZXIud2FpdF9mb3IoJ2FuaW1hdGlvbmVuZCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYW5p
bWF0aW9uLmNhbmNlbCgpOworICAgIC8vIFRoZW4gd2FpdCBhIGNvdXBsZSBvZiBmcmFtZXMgYW5k
IGNoZWNrIHRoYXQgbm8gZXZlbnQgd2FzIGRpc3BhdGNoZWQuCisgICAgcmV0dXJuIHdhaXRGb3JB
bmltYXRpb25GcmFtZXMoMik7CisgIH0pOworfSwgJ0NhbmNlbCB0aGUgYW5pbWF0aW9uIGFmdGVy
IGNsZWFyaW5nIHRoZSB0YXJnZXQgZWZmZWN0LicpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5z
aXRpb25zL3Rlc3RfZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9jc3MtdHJhbnNpdGlvbnMvdGVzdF9ldmVudC1kaXNwYXRjaC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTVjMzJlNTk2MzBkOTA2ODlmODZhZDk0NmY2ZjhiZGJmNGQ2YzY3
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRy
YW5zaXRpb25zL3Rlc3RfZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjgg
QEAKKworUEFTUyBJZGxlIC0+IFBlbmRpbmcgb3IgQmVmb3JlIAorUEFTUyBJZGxlIC0+IEJlZm9y
ZSAKK1BBU1MgSWRsZSBvciBQZW5kaW5nIC0+IEFjdGl2ZSAKK1BBU1MgSWRsZSBvciBQZW5kaW5n
IC0+IEFmdGVyIAorUEFTUyBCZWZvcmUgLT4gSWRsZSAoZGlzcGxheTogbm9uZSkgCitQQVNTIEJl
Zm9yZSAtPiBJZGxlIChBbmltYXRpb24udGltZWxpbmUgPSBudWxsKSAKK1BBU1MgQmVmb3JlIC0+
IEFjdGl2ZSAKK1BBU1MgQmVmb3JlIC0+IEFmdGVyIAorUEFTUyBBY3RpdmUgLT4gSWRsZSwgbm8g
ZGVsYXkgKGRpc3BsYXk6IG5vbmUpIAorUEFTUyBBY3RpdmUgLT4gSWRsZSwgbm8gZGVsYXkgKEFu
aW1hdGlvbi50aW1lbGluZSA9IG51bGwpIAorUEFTUyBBY3RpdmUgLT4gSWRsZSwgd2l0aCBwb3Np
dGl2ZSBkZWxheSAoZGlzcGxheTogbm9uZSkgCitQQVNTIEFjdGl2ZSAtPiBJZGxlLCB3aXRoIHBv
c2l0aXZlIGRlbGF5IChBbmltYXRpb24udGltZWxpbmUgPSBudWxsKSAKK1BBU1MgQWN0aXZlIC0+
IElkbGUsIHdpdGggbmVnYXRpdmUgZGVsYXkgKGRpc3BsYXk6IG5vbmUpIAorUEFTUyBBY3RpdmUg
LT4gSWRsZSwgd2l0aCBuZWdhdGl2ZSBkZWxheSAoQW5pbWF0aW9uLnRpbWVsaW5lID0gbnVsbCkg
CitQQVNTIEFjdGl2ZSAtPiBCZWZvcmUgCitQQVNTIEFjdGl2ZSAtPiBBZnRlciAKK1BBU1MgQWZ0
ZXIgLT4gQmVmb3JlIAorUEFTUyBBZnRlciAtPiBBY3RpdmUgCitQQVNTIENhbGN1bGF0aW5nIHRo
ZSBpbnRlcnZhbCBzdGFydCBhbmQgZW5kIHRpbWUgd2l0aCBuZWdhdGl2ZSBzdGFydCBkZWxheS4g
CitQQVNTIENhbGN1bGF0aW5nIHRoZSBpbnRlcnZhbCBzdGFydCBhbmQgZW5kIHRpbWUgd2l0aCBu
ZWdhdGl2ZSBlbmQgZGVsYXkuIAorUEFTUyBDYWxsIEFuaW1hdGlvbi5jYW5jZWwgYWZ0ZXIgY2Fu
Y2VsbGluZyB0cmFuc2l0aW9uLiAKK1BBU1MgUmVzdGFydCB0cmFuc2l0aW9uIGFmdGVyIGNhbmNl
bGxpbmcgdHJhbnNpdGlvbiBpbW1lZGlhdGVseSAKK1BBU1MgQ2FsbCBBbmltYXRpb24uY2FuY2Vs
IGFmdGVyIHJlc3RhcnRpbmcgdHJhbnNpdGlvbiBpbW1lZGlhdGVseSAKK1BBU1MgU2V0IHRpbWVs
aW5lIGFuZCBwbGF5IHRyYW5zaXRpb24gYWZ0ZXIgY2xlYXIgdGhlIHRpbWVsaW5lIAorUEFTUyBT
ZXQgbnVsbCB0YXJnZXQgZWZmZWN0IGFmdGVyIGNhbmNlbCB0aGUgdHJhbnNpdGlvbiAKK1BBU1Mg
Q2FuY2VsIHRoZSB0cmFuc2l0aW9uIGFmdGVyIGNsZWFyaW5nIHRoZSB0YXJnZXQgZWZmZWN0IAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy10cmFuc2l0aW9u
cy90ZXN0X2V2ZW50LWRpc3BhdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxh
L2Nzcy10cmFuc2l0aW9ucy90ZXN0X2V2ZW50LWRpc3BhdGNoLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI0
NWNmMmViYTY3ZWIwNTI1NWQwYWM5ZTdlNTFiN2M2ODA5ODBjNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLXRyYW5zaXRpb25zL3Rlc3RfZXZlbnQt
ZGlzcGF0Y2guaHRtbApAQCAtMCwwICsxLDQ3NyBAQAorPCFkb2N0eXBlIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBlbmFibGVDU1NBbmltYXRpb25zQW5kQ1NTVHJhbnNpdGlvbnNCYWNr
ZWRCeVdlYkFuaW1hdGlvbnM9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzx0aXRs
ZT5UZXN0cyBmb3IgQ1NTLVRyYW5zaXRpb24gZXZlbnRzPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVs
cCIgaHJlZj0iaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFuc2l0aW9ucy0yLyN0cmFu
c2l0aW9uLWV2ZW50cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0
Y29tbW9uLmpzIj48L3NjcmlwdD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3Jp
cHQ+CisndXNlIHN0cmljdCc7CisKKy8qKgorICogSGVscGVyIGNsYXNzIHRvIHJlY29yZCB0aGUg
ZWxhcHNlZFRpbWUgbWVtYmVyIG9mIGVhY2ggZXZlbnQuCisgKiBUaGUgRXZlbnRXYXRjaGVyIGNs
YXNzIGluIHRlc3RoYXJuZXNzLmpzIGFsbG93cyB1cyB0byB3YWl0IG9uCisgKiBtdWx0aXBsZSBl
dmVudHMgaW4gYSBjZXJ0YWluIG9yZGVyIGJ1dCBvbmx5IHJlY29yZHMgdGhlIGV2ZW50CisgKiBw
YXJhbWV0ZXJzIG9mIHRoZSBtb3N0IHJlY2VudCBldmVudC4KKyAqLworZnVuY3Rpb24gVHJhbnNp
dGlvbkV2ZW50SGFuZGxlcih0YXJnZXQpIHsKKyAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7CisgIHRo
aXMudGFyZ2V0Lm9udHJhbnNpdGlvbnJ1biA9IGV2dCA9PiB7CisgICAgdGhpcy50cmFuc2l0aW9u
cnVuID0gZXZ0LmVsYXBzZWRUaW1lOworICB9OworICB0aGlzLnRhcmdldC5vbnRyYW5zaXRpb25z
dGFydCA9IGV2dCA9PiB7CisgICAgdGhpcy50cmFuc2l0aW9uc3RhcnQgPSBldnQuZWxhcHNlZFRp
bWU7CisgIH07CisgIHRoaXMudGFyZ2V0Lm9udHJhbnNpdGlvbmVuZCA9IGV2dCA9PiB7CisgICAg
dGhpcy50cmFuc2l0aW9uZW5kID0gZXZ0LmVsYXBzZWRUaW1lOworICB9OworICB0aGlzLnRhcmdl
dC5vbnRyYW5zaXRpb25jYW5jZWwgPSBldnQgPT4geworICAgIHRoaXMudHJhbnNpdGlvbmNhbmNl
bCA9IGV2dC5lbGFwc2VkVGltZTsKKyAgfTsKK30KKworVHJhbnNpdGlvbkV2ZW50SGFuZGxlci5w
cm90b3R5cGUuY2xlYXIgPSAoKSA9PiB7CisgIHRoaXMudHJhbnNpdGlvbnJ1biAgICA9IHVuZGVm
aW5lZDsKKyAgdGhpcy50cmFuc2l0aW9uc3RhcnQgID0gdW5kZWZpbmVkOworICB0aGlzLnRyYW5z
aXRpb25lbmQgICAgPSB1bmRlZmluZWQ7CisgIHRoaXMudHJhbnNpdGlvbmNhbmNlbCA9IHVuZGVm
aW5lZDsKK307CisKK2Z1bmN0aW9uIHNldHVwVHJhbnNpdGlvbih0LCB0cmFuc2l0aW9uU3R5bGUp
IHsKKyAgY29uc3QgZGl2ID0gYWRkRGl2KHQsIHsgc3R5bGU6ICd0cmFuc2l0aW9uOiAnICsgdHJh
bnNpdGlvblN0eWxlIH0pOworICAvLyBOb3RlIHRoYXQgdGhpcyBUcmFuc2l0aW9uRXZlbnRIYW5k
bGVyIHNob3VsZCBiZSBjcmVhdGVkIGJlZm9yZSBFdmVudFdhdGNoZXIKKyAgLy8gdG8gY2FwdHVy
ZSBhbGwgZXZlbnRzIGluIHRoZSBoYW5kbGVyIHByaW9yIHRvIHRoZSBFdmVudFdhdGNoZXIgc2lu
Y2UKKyAgLy8gdGVzdGhhcm5lc3MuanMgcHJvY2VlZHMgd2hlbiB0aGUgRXZlbnRXYXRjaGVyIHJl
Y2VpdmVkIHdhdGNoaW5nIGV2ZW50cy4KKyAgY29uc3QgaGFuZGxlciA9IG5ldyBUcmFuc2l0aW9u
RXZlbnRIYW5kbGVyKGRpdik7CisgIGNvbnN0IHdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQs
IGRpdiwgWyAndHJhbnNpdGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3RyYW5zaXRpb25zdGFydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb25lbmQnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uY2FuY2VsJyBdKTsKKyAgZmx1c2hDb21w
dXRlZFN0eWxlKGRpdik7CisKKyAgZGl2LnN0eWxlLm1hcmdpbkxlZnQgPSAnMTAwcHgnOworICBj
b25zdCB0cmFuc2l0aW9uID0gZGl2LmdldEFuaW1hdGlvbnMoKVswXTsKKworICByZXR1cm4geyB0
cmFuc2l0aW9uLCB3YXRjaGVyLCBkaXYsIGhhbmRsZXIgfTsKK30KKworLy8gT24gdGhlIG5leHQg
ZnJhbWUgKGkuZS4gd2hlbiBldmVudHMgYXJlIHF1ZXVlZCksIHdoZXRoZXIgb3Igbm90IHRoZQor
Ly8gdHJhbnNpdGlvbiBpcyBzdGlsbCBwZW5kaW5nIGRlcGVuZHMgb24gdGhlIGltcGxlbWVudGF0
aW9uLgorcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIg
fSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKyAg
cmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25ydW4nKS50aGVuKGV2dCA9PiB7Cisg
ICAgYXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwgJ0lkbGUg
LT4gUGVuZGluZyBvciBCZWZvcmUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7
IHRyYW5zaXRpb24sIHdhdGNoZXIgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4t
bGVmdCAxMDBzIDEwMHMnKTsKKyAgLy8gRm9yY2UgdGhlIHRyYW5zaXRpb24gdG8gbGVhdmUgdGhl
IGlkbGUgcGhhc2UKKyAgdHJhbnNpdGlvbi5zdGFydFRpbWUgPSBkb2N1bWVudC50aW1lbGluZS5j
dXJyZW50VGltZTsKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25ydW4nKS50
aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDAuMCk7Cisg
IH0pOworfSwgJ0lkbGUgLT4gQmVmb3JlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29u
c3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyLCBkaXYsIGhhbmRsZXIgfSA9CisgICAgc2V0dXBUcmFu
c2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKworICAvLyBTZWVrIHRvIEFjdGl2
ZSBwaGFzZS4KKyAgdHJhbnNpdGlvbi5jdXJyZW50VGltZSA9IDEwMCAqIE1TX1BFUl9TRUM7Cisg
IC8vIHRyYW5zaXRpb24ucGF1c2UoKTsKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAndHJh
bnNpdGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb25zdGFy
dCcgXSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoaGFuZGxlci50cmFuc2l0aW9u
cnVuLCAwLjApOworICAgIGFzc2VydF9lcXVhbHMoaGFuZGxlci50cmFuc2l0aW9uc3RhcnQsIDAu
MCk7CisgIH0pOworfSwgJ0lkbGUgb3IgUGVuZGluZyAtPiBBY3RpdmUnKTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIsIGRpdiwgaGFuZGxlciB9
ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMgMTAwcycpOworCisg
IC8vIFNlZWsgdG8gQWZ0ZXIgcGhhc2UuCisgIHRyYW5zaXRpb24uZmluaXNoKCk7CisgIHJldHVy
biB3YXRjaGVyLndhaXRfZm9yKFsgJ3RyYW5zaXRpb25ydW4nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0cmFuc2l0aW9uc3RhcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0cmFuc2l0aW9uZW5kJyBdKS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhoYW5k
bGVyLnRyYW5zaXRpb25ydW4sIDAuMCk7CisgICAgYXNzZXJ0X2VxdWFscyhoYW5kbGVyLnRyYW5z
aXRpb25zdGFydCwgMC4wKTsKKyAgICBhc3NlcnRfZXF1YWxzKGhhbmRsZXIudHJhbnNpdGlvbmVu
ZCwgMTAwLjApOworICB9KTsKK30sICdJZGxlIG9yIFBlbmRpbmcgLT4gQWZ0ZXInKTsKKworLy8g
VGltZW91dAorcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNo
ZXIsIGRpdiB9ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMgMTAw
cycpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRp
b25ydW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5yZWFkeSBdKS50aGVu
KCgpID0+IHsKKyAgICAvLyBNYWtlIGlkbGUKKyAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICdub25l
JzsKKyAgICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0
X2ZvcigndHJhbnNpdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0
X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwgJ0JlZm9yZSAtPiBJZGxl
IChkaXNwbGF5OiBub25lKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgdHJh
bnNpdGlvbiwgd2F0Y2hlciB9ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1sZWZ0
IDEwMHMgMTAwcycpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbIHdhdGNoZXIud2FpdF9mb3Io
J3RyYW5zaXRpb25ydW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5yZWFk
eSBdKS50aGVuKCgpID0+IHsKKyAgICAvLyBNYWtlIGlkbGUKKyAgICB0cmFuc2l0aW9uLnRpbWVs
aW5lID0gbnVsbDsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmNhbmNl
bCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRp
bWUsIDAuMCk7CisgIH0pOworfSwgJ0JlZm9yZSAtPiBJZGxlIChBbmltYXRpb24udGltZWxpbmUg
PSBudWxsKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgdHJhbnNpdGlvbiwg
d2F0Y2hlciB9ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMgMTAw
cycpOworCisgIHJldHVybiBQcm9taXNlLmFsbChbIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRp
b25ydW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi5yZWFkeSBdKS50aGVu
KCgpID0+IHsKKyAgICB0cmFuc2l0aW9uLmN1cnJlbnRUaW1lID0gMTAwICogTVNfUEVSX1NFQzsK
KyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbnN0YXJ0Jyk7CisgIH0pLnRo
ZW4oZXZ0ID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGV2dC5lbGFwc2VkVGltZSwgMC4wKTsKKyAg
fSk7Cit9LCAnQmVmb3JlIC0+IEFjdGl2ZScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNv
bnN0IHsgdHJhbnNpdGlvbiwgd2F0Y2hlciwgZGl2LCBoYW5kbGVyIH0gPQorICAgIHNldHVwVHJh
bnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAwcyAxMDBzJyk7CisKKyAgcmV0dXJuIFByb21pc2Uu
YWxsKFsgd2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbnJ1bicpLAorICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc2l0aW9uLnJlYWR5IF0pLnRoZW4oKCkgPT4geworICAgIC8vIFNlZWsgdG8g
QWZ0ZXIgcGhhc2UuCisgICAgdHJhbnNpdGlvbi5jdXJyZW50VGltZSA9IDIwMCAqIE1TX1BFUl9T
RUM7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAndHJhbnNpdGlvbnN0YXJ0JywgJ3Ry
YW5zaXRpb25lbmQnIF0pOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyho
YW5kbGVyLnRyYW5zaXRpb25zdGFydCwgMC4wKTsKKyAgICBhc3NlcnRfZXF1YWxzKGhhbmRsZXIu
dHJhbnNpdGlvbmVuZCwgMTAwLjApOworICB9KTsKK30sICdCZWZvcmUgLT4gQWZ0ZXInKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIsIGRpdiB9
ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMnKTsKKworICAvLyBT
ZWVrIHRvIEFjdGl2ZSBzdGFydCBwb3NpdGlvbi4KKyAgdHJhbnNpdGlvbi5wYXVzZSgpOworICBy
ZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9ucnVuJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JyBdKS50aGVuKGV2dCA9PiB7CisgICAgLy8g
TWFrZSBpZGxlCisgICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgZmx1c2hDb21w
dXRlZFN0eWxlKGRpdik7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25j
YW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBz
ZWRUaW1lLCAwLjApOworICB9KTsKK30sICdBY3RpdmUgLT4gSWRsZSwgbm8gZGVsYXkgKGRpc3Bs
YXk6IG5vbmUpJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9u
LCB3YXRjaGVyIH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAwcycp
OworCisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKFsgJ3RyYW5zaXRpb25ydW4nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uc3RhcnQnIF0pLnRoZW4oZXZ0ID0+IHsK
KyAgICAvLyBNYWtlIGlkbGUKKyAgICB0cmFuc2l0aW9uLmN1cnJlbnRUaW1lID0gMDsKKyAgICB0
cmFuc2l0aW9uLnRpbWVsaW5lID0gbnVsbDsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2Zvcign
dHJhbnNpdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhldnQuZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwgJ0FjdGl2ZSAtPiBJZGxlLCBubyBk
ZWxheSAoQW5pbWF0aW9uLnRpbWVsaW5lID0gbnVsbCknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4g
eworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIsIGRpdiB9ID0KKyAgICBzZXR1cFRyYW5z
aXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMgMTAwcycpOworICAvLyBQYXVzZSBzbyB0aGUgY3Vy
cmVudFRpbWUgaXMgZml4ZWQgYW5kIHdlIGNhbiBhY2N1cmF0ZWx5IGNvbXBhcmUgdGhlIGV2ZW50
CisgIC8vIHRpbWUgaW4gdHJhbnNpdGlvbiBjYW5jZWwgZXZlbnRzLgorICB0cmFuc2l0aW9uLnBh
dXNlKCk7CisKKyAgLy8gU2VlayB0byBBY3RpdmUgcGhhc2UuCisgIHRyYW5zaXRpb24uY3VycmVu
dFRpbWUgPSAxMDAgKiBNU19QRVJfU0VDOworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0
cmFuc2l0aW9ucnVuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0
YXJ0JyBdKS50aGVuKGV2dCA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAgZGl2LnN0eWxlLmRp
c3BsYXkgPSAnbm9uZSc7CisgICAgZmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgICAgcmV0dXJu
IHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25jYW5jZWwnKTsKKyAgfSkudGhlbihldnQgPT4g
eworICAgIGFzc2VydF9lcXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCAwLjApOworICB9KTsKK30sICdB
Y3RpdmUgLT4gSWRsZSwgd2l0aCBwb3NpdGl2ZSBkZWxheSAoZGlzcGxheTogbm9uZSknKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIgfSA9Cisg
ICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKworICAvLyBT
ZWVrIHRvIEFjdGl2ZSBwaGFzZS4KKyAgdHJhbnNpdGlvbi5jdXJyZW50VGltZSA9IDEwMCAqIE1T
X1BFUl9TRUM7CisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKFsgJ3RyYW5zaXRpb25ydW4nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uc3RhcnQnIF0pLnRoZW4oZXZ0
ID0+IHsKKyAgICAvLyBNYWtlIGlkbGUKKyAgICB0cmFuc2l0aW9uLmN1cnJlbnRUaW1lID0gMTAw
ICogTVNfUEVSX1NFQzsKKyAgICB0cmFuc2l0aW9uLnRpbWVsaW5lID0gbnVsbDsKKyAgICByZXR1
cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwg
J0FjdGl2ZSAtPiBJZGxlLCB3aXRoIHBvc2l0aXZlIGRlbGF5IChBbmltYXRpb24udGltZWxpbmUg
PSBudWxsKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgdHJhbnNpdGlvbiwg
d2F0Y2hlciwgZGl2IH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAw
cyAtNTBzJyk7CisKKyAgLy8gUGF1c2Ugc28gdGhlIGN1cnJlbnRUaW1lIGlzIGZpeGVkIGFuZCB3
ZSBjYW4gYWNjdXJhdGVseSBjb21wYXJlIHRoZSBldmVudAorICAvLyB0aW1lIGluIHRyYW5zaXRp
b24gY2FuY2VsIGV2ZW50cy4KKyAgdHJhbnNpdGlvbi5wYXVzZSgpOworCisgIHJldHVybiB3YXRj
aGVyLndhaXRfZm9yKFsgJ3RyYW5zaXRpb25ydW4nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd0cmFuc2l0aW9uc3RhcnQnIF0pLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBNYWtlIGlkbGUK
KyAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICBmbHVzaENvbXB1dGVkU3R5bGUo
ZGl2KTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmNhbmNlbCcpOwor
ICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDUw
LjApOworICB9KTsKK30sICdBY3RpdmUgLT4gSWRsZSwgd2l0aCBuZWdhdGl2ZSBkZWxheSAoZGlz
cGxheTogbm9uZSknKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRp
b24sIHdhdGNoZXIgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBz
IC01MHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9ucnVuJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JyBdKS50aGVuKGV2
dCA9PiB7CisgICAgLy8gTWFrZSBpZGxlCisgICAgdHJhbnNpdGlvbi5jdXJyZW50VGltZSA9IDUw
ICogTVNfUEVSX1NFQzsKKyAgICB0cmFuc2l0aW9uLnRpbWVsaW5lID0gbnVsbDsKKyAgICByZXR1
cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbmNhbmNlbCcpOworICB9KS50aGVuKGV2dCA9
PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwg
J0FjdGl2ZSAtPiBJZGxlLCB3aXRoIG5lZ2F0aXZlIGRlbGF5IChBbmltYXRpb24udGltZWxpbmUg
PSBudWxsKScpOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgdHJhbnNpdGlvbiwg
d2F0Y2hlciB9ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMgMTAw
cycpOworICAvLyBTZWVrIHRvIEFjdGl2ZSBwaGFzZS4KKyAgdHJhbnNpdGlvbi5jdXJyZW50VGlt
ZSA9IDEwMCAqIE1TX1BFUl9TRUM7CisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKFsgJ3RyYW5z
aXRpb25ydW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uc3RhcnQn
IF0pLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBTZWVrIHRvIEJlZm9yZSBwaGFzZS4KKyAgICB0cmFu
c2l0aW9uLmN1cnJlbnRUaW1lID0gMDsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJh
bnNpdGlvbmVuZCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQu
ZWxhcHNlZFRpbWUsIDAuMCk7CisgIH0pOworfSwgJ0FjdGl2ZSAtPiBCZWZvcmUnKTsKKworcHJv
bWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIgfSA9CisgICAg
c2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKyAgLy8gU2VlayB0
byBBY3RpdmUgcGhhc2UuCisgIHRyYW5zaXRpb24uY3VycmVudFRpbWUgPSAxMDAgKiBNU19QRVJf
U0VDOworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9ucnVuJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JyBdKS50aGVuKGV2dCA9PiB7
CisgICAgLy8gU2VlayB0byBBZnRlciBwaGFzZS4KKyAgICB0cmFuc2l0aW9uLmN1cnJlbnRUaW1l
ID0gMjAwICogTVNfUEVSX1NFQzsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNp
dGlvbmVuZCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxh
cHNlZFRpbWUsIDEwMC4wKTsKKyAgfSk7Cit9LCAnQWN0aXZlIC0+IEFmdGVyJyk7CisKK3Byb21p
c2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyLCBkaXYsIGhhbmRs
ZXIgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsK
KworICAvLyBTZWVrIHRvIEFmdGVyIHBoYXNlLgorICB0cmFuc2l0aW9uLmZpbmlzaCgpOworICBy
ZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9ucnVuJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndHJhbnNpdGlvbmVuZCcgXSkudGhlbihldnQgPT4geworICAgIC8vIFNlZWsgdG8gQmVm
b3JlIHBoYXNlLgorICAgIHRyYW5zaXRpb24uY3VycmVudFRpbWUgPSAwOworICAgIHJldHVybiB3
YXRjaGVyLndhaXRfZm9yKFsgJ3RyYW5zaXRpb25zdGFydCcsICd0cmFuc2l0aW9uZW5kJyBdKTsK
KyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9lcXVhbHMoaGFuZGxlci50cmFuc2l0aW9u
c3RhcnQsIDEwMC4wKTsKKyAgICBhc3NlcnRfZXF1YWxzKGhhbmRsZXIudHJhbnNpdGlvbmVuZCwg
MC4wKTsKKyAgfSk7Cit9LCAnQWZ0ZXIgLT4gQmVmb3JlJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+
IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyIH0gPQorICAgIHNldHVwVHJhbnNpdGlv
bih0LCAnbWFyZ2luLWxlZnQgMTAwcyAxMDBzJyk7CisgIC8vIFNlZWsgdG8gQWZ0ZXIgcGhhc2Uu
CisgIHRyYW5zaXRpb24uZmluaXNoKCk7CisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKFsgJ3Ry
YW5zaXRpb25ydW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uc3Rh
cnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uZW5kJyBdKS50aGVu
KGV2dCA9PiB7CisgICAgLy8gU2VlayB0byBBY3RpdmUgcGhhc2UuCisgICAgdHJhbnNpdGlvbi5j
dXJyZW50VGltZSA9IDEwMCAqIE1TX1BFUl9TRUM7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9m
b3IoJ3RyYW5zaXRpb25zdGFydCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2Vx
dWFscyhldnQuZWxhcHNlZFRpbWUsIDEwMC4wKTsKKyAgfSk7Cit9LCAnQWZ0ZXIgLT4gQWN0aXZl
Jyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVy
LCBkaXYsIGhhbmRsZXIgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAx
MDBzIC01MHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9ucnVu
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JyBdKS50aGVu
KCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGhhbmRsZXIudHJhbnNpdGlvbnJ1biwgNTAuMCk7
CisgICAgYXNzZXJ0X2VxdWFscyhoYW5kbGVyLnRyYW5zaXRpb25zdGFydCwgNTAuMCk7CisgICAg
dHJhbnNpdGlvbi5maW5pc2goKTsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNp
dGlvbmVuZCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhldnQuZWxh
cHNlZFRpbWUsIDEwMC4wKTsKKyAgfSk7Cit9LCAnQ2FsY3VsYXRpbmcgdGhlIGludGVydmFsIHN0
YXJ0IGFuZCBlbmQgdGltZSB3aXRoIG5lZ2F0aXZlIHN0YXJ0IGRlbGF5LicpOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisgIGNvbnN0IHsgdHJhbnNpdGlvbiwgd2F0Y2hlciwgZGl2LCBoYW5kbGVy
IH0gPQorICAgIHNldHVwVHJhbnNpdGlvbih0LCAnbWFyZ2luLWxlZnQgMTAwcyAxMDBzJyk7CisK
KyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3RyYW5zaXRpb25ydW4nKS50aGVuKGV2dCA9PiB7
CisgICAgLy8gV2UgY2FuJ3Qgc2V0IHRoZSBlbmQgZGVsYXkgdmlhIGdlbmVyYXRlZCBlZmZlY3Qg
dGltaW5nLgorICAgIC8vIEJlY2F1c2UgQ1NTLVRyYW5zaXRpb24gdXNlIHRoZSBBbmltYXRpb25F
ZmZlY3RUaW1pbmdSZWFkT25seS4KKyAgICB0cmFuc2l0aW9uLmVmZmVjdCA9IG5ldyBLZXlmcmFt
ZUVmZmVjdChkaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyBtYXJnaW5sZWZ0OiBbICcwcHgnLCAnMTAwcHgnIF19LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgZHVyYXRpb246IDEwMCAqIE1TX1BFUl9TRUMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmREZWxheTogLTUwICog
TVNfUEVSX1NFQyB9KTsKKyAgICAvLyBTZWVrIHRvIEJlZm9yZSBhbmQgcGxheS4KKyAgICB0cmFu
c2l0aW9uLmNhbmNlbCgpOworICAgIHRyYW5zaXRpb24ucGxheSgpOworICAgIHJldHVybiB3YXRj
aGVyLndhaXRfZm9yKFsgJ3RyYW5zaXRpb25jYW5jZWwnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3RyYW5zaXRpb25ydW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyYW5zaXRpb25zdGFydCcgXSk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIGFzc2VydF9lcXVh
bHMoaGFuZGxlci50cmFuc2l0aW9uc3RhcnQsIDAuMCk7CisKKyAgICAvLyBTZWVrIHRvIEFmdGVy
IHBoYXNlLgorICAgIHRyYW5zaXRpb24uZmluaXNoKCk7CisgICAgcmV0dXJuIHdhdGNoZXIud2Fp
dF9mb3IoJ3RyYW5zaXRpb25lbmQnKTsKKyAgfSkudGhlbihldnQgPT4geworICAgIGFzc2VydF9l
cXVhbHMoZXZ0LmVsYXBzZWRUaW1lLCA1MC4wKTsKKyAgfSk7Cit9LCAnQ2FsY3VsYXRpbmcgdGhl
IGludGVydmFsIHN0YXJ0IGFuZCBlbmQgdGltZSB3aXRoIG5lZ2F0aXZlIGVuZCBkZWxheS4nKTsK
KworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIsIGRp
diB9ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1sZWZ0IDEwMHMgMTAwcycpOwor
CisgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0aW9ucnVuJykudGhlbigoKSA9PiB7
CisgICAgLy8gTWFrZSBpZGxlCisgICAgZGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAg
Zmx1c2hDb21wdXRlZFN0eWxlKGRpdik7CisgICAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoJ3Ry
YW5zaXRpb25jYW5jZWwnKTsKKyAgfSkudGhlbigoKSA9PiB7CisgICAgdHJhbnNpdGlvbi5jYW5j
ZWwoKTsKKyAgICAvLyBUaGVuIHdhaXQgYSBjb3VwbGUgb2YgZnJhbWVzIGFuZCBjaGVjayB0aGF0
IG5vIGV2ZW50IHdhcyBkaXNwYXRjaGVkCisgICAgcmV0dXJuIHdhaXRGb3JBbmltYXRpb25GcmFt
ZXMoMik7CisgIH0pOworfSwgJ0NhbGwgQW5pbWF0aW9uLmNhbmNlbCBhZnRlciBjYW5jZWxsaW5n
IHRyYW5zaXRpb24uJyk7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0
aW9uLCB3YXRjaGVyLCBkaXYgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVm
dCAxMDBzIDEwMHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbnJ1
bicpLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBNYWtlIGlkbGUKKyAgICBkaXYuc3R5bGUuZGlzcGxh
eSA9ICdub25lJzsKKyAgICBmbHVzaENvbXB1dGVkU3R5bGUoZGl2KTsKKyAgICB0cmFuc2l0aW9u
LnBsYXkoKTsKKyAgICB3YXRjaGVyLndhaXRfZm9yKFsgJ3RyYW5zaXRpb25jYW5jZWwnLAorICAg
ICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAg
ICAgICd0cmFuc2l0aW9uc3RhcnQnIF0pOworICB9KTsKK30sICdSZXN0YXJ0IHRyYW5zaXRpb24g
YWZ0ZXIgY2FuY2VsbGluZyB0cmFuc2l0aW9uIGltbWVkaWF0ZWx5Jyk7CisKK3Byb21pc2VfdGVz
dCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyLCBkaXYgfSA9CisgICAgc2V0
dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzIDEwMHMnKTsKKworICByZXR1cm4gd2F0
Y2hlci53YWl0X2ZvcigndHJhbnNpdGlvbnJ1bicpLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBNYWtl
IGlkbGUKKyAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICBmbHVzaENvbXB1dGVk
U3R5bGUoZGl2KTsKKyAgICB0cmFuc2l0aW9uLnBsYXkoKTsKKyAgICB0cmFuc2l0aW9uLmNhbmNl
bCgpOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0aW9uY2FuY2VsJyk7Cisg
IH0pLnRoZW4oZXZ0ID0+IHsKKyAgICAvLyBUaGVuIHdhaXQgYSBjb3VwbGUgb2YgZnJhbWVzIGFu
ZCBjaGVjayB0aGF0IG5vIGV2ZW50IHdhcyBkaXNwYXRjaGVkCisgICAgcmV0dXJuIHdhaXRGb3JB
bmltYXRpb25GcmFtZXMoMik7CisgIH0pOworfSwgJ0NhbGwgQW5pbWF0aW9uLmNhbmNlbCBhZnRl
ciByZXN0YXJ0aW5nIHRyYW5zaXRpb24gaW1tZWRpYXRlbHknKTsKKworcHJvbWlzZV90ZXN0KHQg
PT4geworICBjb25zdCB7IHRyYW5zaXRpb24sIHdhdGNoZXIgfSA9CisgICAgc2V0dXBUcmFuc2l0
aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzJyk7CisKKyAgcmV0dXJuIHdhdGNoZXIud2FpdF9mb3Io
WyAndHJhbnNpdGlvbnJ1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRp
b25zdGFydCcgXSkudGhlbihldnQgPT4geworICAgIC8vIE1ha2UgaWRsZQorICAgIHRyYW5zaXRp
b24udGltZWxpbmUgPSBudWxsOworICAgIHJldHVybiB3YXRjaGVyLndhaXRfZm9yKCd0cmFuc2l0
aW9uY2FuY2VsJyk7CisgIH0pLnRoZW4oZXZ0ID0+IHsKKyAgICB0cmFuc2l0aW9uLnRpbWVsaW5l
ID0gZG9jdW1lbnQudGltZWxpbmU7CisgICAgdHJhbnNpdGlvbi5wbGF5KCk7CisKKyAgICByZXR1
cm4gd2F0Y2hlci53YWl0X2ZvcihbJ3RyYW5zaXRpb25ydW4nLCAndHJhbnNpdGlvbnN0YXJ0J10p
OworICB9KTsKK30sICdTZXQgdGltZWxpbmUgYW5kIHBsYXkgdHJhbnNpdGlvbiBhZnRlciBjbGVh
ciB0aGUgdGltZWxpbmUnKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB7IHRyYW5z
aXRpb24sIHdhdGNoZXIsIGRpdiB9ID0KKyAgICBzZXR1cFRyYW5zaXRpb24odCwgJ21hcmdpbi1s
ZWZ0IDEwMHMnKTsKKworICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcihbICd0cmFuc2l0aW9ucnVu
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbnN0YXJ0JyBdKS50aGVu
KCgpID0+IHsKKyAgICB0cmFuc2l0aW9uLmNhbmNlbCgpOworICAgIHJldHVybiB3YXRjaGVyLndh
aXRfZm9yKCd0cmFuc2l0aW9uY2FuY2VsJyk7CisgIH0pLnRoZW4oKCkgPT4geworICAgIC8vIE1h
a2UgQWZ0ZXIgcGhhc2UKKyAgICB0cmFuc2l0aW9uLmVmZmVjdCA9IG51bGw7CisKKyAgICAvLyBU
aGVuIHdhaXQgYSBjb3VwbGUgb2YgZnJhbWVzIGFuZCBjaGVjayB0aGF0IG5vIGV2ZW50IHdhcyBk
aXNwYXRjaGVkCisgICAgcmV0dXJuIHdhaXRGb3JBbmltYXRpb25GcmFtZXMoMik7CisgIH0pOwor
fSwgJ1NldCBudWxsIHRhcmdldCBlZmZlY3QgYWZ0ZXIgY2FuY2VsIHRoZSB0cmFuc2l0aW9uJyk7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgeyB0cmFuc2l0aW9uLCB3YXRjaGVyLCBk
aXYgfSA9CisgICAgc2V0dXBUcmFuc2l0aW9uKHQsICdtYXJnaW4tbGVmdCAxMDBzJyk7CisKKyAg
cmV0dXJuIHdhdGNoZXIud2FpdF9mb3IoWyAndHJhbnNpdGlvbnJ1bicsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3RyYW5zaXRpb25zdGFydCcgXSkudGhlbihldnQgPT4geworICAgIHRy
YW5zaXRpb24uZWZmZWN0ID0gbnVsbDsKKyAgICByZXR1cm4gd2F0Y2hlci53YWl0X2ZvcigndHJh
bnNpdGlvbmVuZCcpOworICB9KS50aGVuKGV2dCA9PiB7CisgICAgdHJhbnNpdGlvbi5jYW5jZWwo
KTsKKworICAgIC8vIFRoZW4gd2FpdCBhIGNvdXBsZSBvZiBmcmFtZXMgYW5kIGNoZWNrIHRoYXQg
bm8gZXZlbnQgd2FzIGRpc3BhdGNoZWQKKyAgICByZXR1cm4gd2FpdEZvckFuaW1hdGlvbkZyYW1l
cygyKTsKKyAgfSk7Cit9LCAnQ2FuY2VsIHRoZSB0cmFuc2l0aW9uIGFmdGVyIGNsZWFyaW5nIHRo
ZSB0YXJnZXQgZWZmZWN0Jyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9yZXNvdXJjZXMvdGVzdGNvbW1vbi5q
cyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvcmVzb3VyY2VzL3Rlc3Rjb21tb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2M1MDY2ZmM0MzVlNDQzZGY4MTdmZmVmNDYwZjQzYmEwYzI4NjA5MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvcmVzb3VyY2VzL3Rl
c3Rjb21tb24uanMKQEAgLTAsMCArMSw0MzIgQEAKKy8qIEFueSBjb3B5cmlnaHQgaXMgZGVkaWNh
dGVkIHRvIHRoZSBQdWJsaWMgRG9tYWluLgorICogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcv
cHVibGljZG9tYWluL3plcm8vMS4wLyAqLworCisvKioKKyAqIFVzZSB0aGlzIHZhcmlhYmxlIGlm
IHlvdSBzcGVjaWZ5IGR1cmF0aW9uIG9yIHNvbWUgb3RoZXIgcHJvcGVydGllcworICogZm9yIHNj
cmlwdCBhbmltYXRpb24uCisgKiBFLmcuLCBkaXYuYW5pbWF0ZSh7IG9wYWNpdHk6IFswLCAxXSB9
LCAxMDAgKiBNU19QRVJfU0VDKTsKKyAqCisgKiBOT1RFOiBDcmVhdGluZyBhbmltYXRpb25zIHdp
dGggc2hvcnQgZHVyYXRpb24gbWF5IGNhdXNlIGludGVybWl0dGVudAorICogZmFpbHVyZXMgaW4g
YXN5bmNocm9ub3VzIHRlc3QuIEZvciBleGFtcGxlLCB0aGUgc2hvcnQgZHVyYXRpb24gYW5pbWF0
aW9uCisgKiBtaWdodCBiZSBmaW5pc2hlZCB3aGVuIGFuaW1hdGlvbi5yZWFkeSBoYXMgYmVlbiBm
dWxmaWxsZWQgYmVjYXVzZSBvZiBzbG93CisgKiBwbGF0Zm9ybXMgb3IgYnVzeW5lc3Mgb2YgdGhl
IG1haW4gdGhyZWFkLgorICogU2V0dGluZyBzaG9ydCBkdXJhdGlvbiB0byBjYW5jZWwgaXRzIGFu
aW1hdGlvbiBkb2VzIG5vdCBtYXR0ZXIgYnV0CisgKiBpZiB5b3UgZG9uJ3Qgd2FudCB0byBjYW5j
ZWwgdGhlIGFuaW1hdGlvbiwgY29uc2lkZXIgdXNpbmcgbG9uZ2VyIGR1cmF0aW9uLgorICovCitj
b25zdCBNU19QRVJfU0VDID0gMTAwMDsKKworLyogVGhlIHJlY29tbWVuZGVkIG1pbmltdW0gcHJl
Y2lzaW9uIHRvIHVzZSBmb3IgdGltZSB2YWx1ZXNbMV0uCisgKgorICogWzFdIGh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy8jcHJlY2lzaW9uLW9mLXRpbWUtdmFsdWVzCisg
Ki8KK3ZhciBUSU1FX1BSRUNJU0lPTiA9IDAuMDAwNTsgLy8gbXMKKworLyoKKyAqIEFsbG93IGlt
cGxlbWVudGF0aW9ucyB0byBzdWJzdGl0dXRlIGFuIGFsdGVybmF0aXZlIG1ldGhvZCBmb3IgY29t
cGFyaW5nCisgKiB0aW1lcyBiYXNlZCBvbiB0aGVpciBwcmVjaXNpb24gcmVxdWlyZW1lbnRzLgor
ICovCitmdW5jdGlvbiBhc3NlcnRfdGltZXNfZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3Jp
cHRpb24pIHsKKyAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgVElNRV9Q
UkVDSVNJT04gKiAyLCBkZXNjcmlwdGlvbik7Cit9CisKKy8qCisgKiBDb21wYXJlIGEgdGltZSB2
YWx1ZSBiYXNlZCBvbiBpdHMgcHJlY2lzaW9uIHJlcXVpcmVtZW50cyB3aXRoIGEgZml4ZWQgdmFs
dWUuCisgKi8KK2Z1bmN0aW9uIGFzc2VydF90aW1lX2VxdWFsc19saXRlcmFsKGFjdHVhbCwgZXhw
ZWN0ZWQsIGRlc2NyaXB0aW9uKSB7CisgIGFzc2VydF9hcHByb3hfZXF1YWxzKGFjdHVhbCwgZXhw
ZWN0ZWQsIFRJTUVfUFJFQ0lTSU9OLCBkZXNjcmlwdGlvbik7Cit9CisKKy8qCisgKiBDb21wYXJl
IG1hdHJpeCBzdHJpbmcgbGlrZSAnbWF0cml4KDEsIDAsIDAsIDEsIDEwMCwgMCknLgorICogVGhp
cyBmdW5jdGlvbiBhbGxvd3MgZXJyb3IsIDAuMDEsIGJlY2F1c2Ugb24gQW5kcm9pZCB3aGVuIHdl
IGFyZSBzY2FsaW5nIGRvd24KKyAqIHRoZSBkb2N1bWVudCwgaXQgcmVzdWx0cyBpbiBzb21lIGVy
cm9ycy4KKyAqLworZnVuY3Rpb24gYXNzZXJ0X21hdHJpeF9lcXVhbHMoYWN0dWFsLCBleHBlY3Rl
ZCwgZGVzY3JpcHRpb24pIHsKKyAgdmFyIG1hdHJpeFJlZ0V4cCA9IC9ebWF0cml4XCgoLispLCgu
KyksKC4rKSwoLispLCguKyksKC4rKVwpLzsKKyAgYXNzZXJ0X3JlZ2V4cF9tYXRjaChhY3R1YWws
IG1hdHJpeFJlZ0V4cCwKKyAgICAnQWN0dWFsIHZhbHVlIHNob3VsZCBiZSBhIG1hdHJpeCcpCisg
IGFzc2VydF9yZWdleHBfbWF0Y2goZXhwZWN0ZWQsIG1hdHJpeFJlZ0V4cCwKKyAgICAnRXhwZWN0
ZWQgdmFsdWUgc2hvdWxkIGJlIGEgbWF0cml4Jyk7CisKKyAgdmFyIGFjdHVhbE1hdHJpeEFycmF5
ID0gYWN0dWFsLm1hdGNoKG1hdHJpeFJlZ0V4cCkuc2xpY2UoMSkubWFwKE51bWJlcik7CisgIHZh
ciBleHBlY3RlZE1hdHJpeEFycmF5ID0gZXhwZWN0ZWQubWF0Y2gobWF0cml4UmVnRXhwKS5zbGlj
ZSgxKS5tYXAoTnVtYmVyKTsKKworICBhc3NlcnRfZXF1YWxzKGFjdHVhbE1hdHJpeEFycmF5Lmxl
bmd0aCwgZXhwZWN0ZWRNYXRyaXhBcnJheS5sZW5ndGgsCisgICAgJ0FycmF5IGxlbmd0aHMgc2hv
dWxkIGJlIGVxdWFsIChnb3QgXCcnICsgZXhwZWN0ZWQgKyAnXCcgYW5kIFwnJyArIGFjdHVhbCAr
CisgICAgJ1wnKTogJyArIGRlc2NyaXB0aW9uKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3R1
YWxNYXRyaXhBcnJheS5sZW5ndGg7IGkrKykgeworICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGFj
dHVhbE1hdHJpeEFycmF5W2ldLCBleHBlY3RlZE1hdHJpeEFycmF5W2ldLCAwLjAxLAorICAgICAg
J01hdHJpeCBhcnJheSBzaG91bGQgYmUgZXF1YWwgKGdvdCBcJycgKyBleHBlY3RlZCArICdcJyBh
bmQgXCcnICsgYWN0dWFsICsKKyAgICAgICdcJyk6ICcgKyBkZXNjcmlwdGlvbik7CisgIH0KK30K
KworLyoqCisgKiBDb21wYXJlIGdpdmVuIHZhbHVlcyB3aGljaCBhcmUgc2FtZSBmb3JtYXQgb2YK
KyAqIEtleWZyYW1lRWZmZWN0UmVhZG9ubHk6OkdldFByb3BlcnRpZXMuCisgKi8KK2Z1bmN0aW9u
IGFzc2VydF9wcm9wZXJ0aWVzX2VxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgYXNzZXJ0X2Vx
dWFscyhhY3R1YWwubGVuZ3RoLCBleHBlY3RlZC5sZW5ndGgpOworCisgIGNvbnN0IGNvbXBhcmVQ
cm9wZXJ0aWVzID0gKGEsIGIpID0+CisgICAgYS5wcm9wZXJ0eSA9PSBiLnByb3BlcnR5ID8gMCA6
IChhLnByb3BlcnR5IDwgYi5wcm9wZXJ0eSA/IC0xIDogMSk7CisKKyAgY29uc3Qgc29ydGVkQWN0
dWFsICAgPSBhY3R1YWwuc29ydChjb21wYXJlUHJvcGVydGllcyk7CisgIGNvbnN0IHNvcnRlZEV4
cGVjdGVkID0gZXhwZWN0ZWQuc29ydChjb21wYXJlUHJvcGVydGllcyk7CisKKyAgY29uc3Qgc2Vy
aWFsaXplVmFsdWVzID0gdmFsdWVzID0+CisgICAgdmFsdWVzLm1hcCh2YWx1ZSA9PgorICAgICAg
J3sgJyArCisgICAgICAgICAgWyAnb2Zmc2V0JywgJ3ZhbHVlJywgJ2Vhc2luZycsICdjb21wb3Np
dGUnIF0ubWFwKAorICAgICAgICAgICAgbWVtYmVyID0+IGAke21lbWJlcn06ICR7dmFsdWVbbWVt
YmVyXX1gCisgICAgICAgICAgKS5qb2luKCcsICcpICsKKyAgICAgICAgICAgICAgICAgICAgICAn
IH0nKQorICAgICAgICAgIC5qb2luKCcsICcpOworCisgIGZvciAobGV0IGkgPSAwOyBpIDwgc29y
dGVkQWN0dWFsLmxlbmd0aDsgaSsrKSB7CisgICAgYXNzZXJ0X2VxdWFscyhzb3J0ZWRBY3R1YWxb
aV0ucHJvcGVydHksCisgICAgICAgICAgICAgICAgICBzb3J0ZWRFeHBlY3RlZFtpXS5wcm9wZXJ0
eSwKKyAgICAgICAgICAgICAgICAgICdDU1MgcHJvcGVydHkgbmFtZSBzaG91bGQgbWF0Y2gnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHNlcmlhbGl6ZVZhbHVlcyhzb3J0ZWRBY3R1YWxbaV0udmFsdWVz
KSwKKyAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZVZhbHVlcyhzb3J0ZWRFeHBlY3RlZFtpXS52
YWx1ZXMpLAorICAgICAgICAgICAgICAgICAgYFZhbHVlcyBhcnJheXMgZG8gbm90IG1hdGNoIGZv
ciBgCisgICAgICAgICAgICAgICAgICArIGAke3NvcnRlZEFjdHVhbFtpXS5wcm9wZXJ0eX0gcHJv
cGVydHlgKTsKKyAgfQorfQorCisvKioKKyAqIENvbnN0cnVjdCBhIG9iamVjdCB3aGljaCBpcyBz
YW1lIHRvIGEgdmFsdWUgb2YKKyAqIEtleWZyYW1lRWZmZWN0UmVhZG9ubHk6OkdldFByb3BlcnRp
ZXMoKS4KKyAqIFRoZSBtZXRob2QgcmV0dXJucyB1bmRlZmluZWQgYXMgYSB2YWx1ZSBpbiBjYXNl
IG9mIG1pc3Npbmcga2V5ZnJhbWUuCisgKiBUaGVyZWZvciwgd2UgY2FuIHVzZSB1bmRlZmluZWQg
Zm9yIHx2YWx1ZXwgYW5kIHxlYXNpbmd8IHBhcmFtZXRlci4KKyAqIEBwYXJhbSBvZmZzZXQgLSBr
ZXlmcmFtZSBvZmZzZXQuIGUuZy4gMC4xCisgKiBAcGFyYW0gdmFsdWUgLSBhbnkga2V5ZnJhbWUg
dmFsdWUuIGUuZy4gdW5kZWZpbmVkICcxcHgnLCAnY2VudGVyJywgMC41CisgKiBAcGFyYW0gY29t
cG9zaXRlIC0gJ3JlcGxhY2UnLCAnYWRkJywgJ2FjY3VtdWxhdGUnCisgKiBAcGFyYW0gZWFzaW5n
IC0gZS5nLiB1bmRlZmluZWQsICdsaW5lYXInLCAnZWFzZScgYW5kIHNvIG9uCisgKiBAcmV0dXJu
IE9iamVjdCAtCisgKiAgIGUuZy4geyBvZmZzZXQ6IDAuMSwgdmFsdWU6ICcxcHgnLCBjb21wb3Np
dGU6ICdyZXBsYWNlJywgZWFzaW5nOiAnZWFzZSd9CisgKi8KK2Z1bmN0aW9uIHZhbHVlRm9ybWF0
KG9mZnNldCwgdmFsdWUsIGNvbXBvc2l0ZSwgZWFzaW5nKSB7CisgIHJldHVybiB7IG9mZnNldDog
b2Zmc2V0LCB2YWx1ZTogdmFsdWUsIGVhc2luZzogZWFzaW5nLCBjb21wb3NpdGU6IGNvbXBvc2l0
ZSB9OworfQorCisvKioKKyAqIEFwcGVuZHMgYSBkaXYgdG8gdGhlIGRvY3VtZW50IGJvZHkgYW5k
IGNyZWF0ZXMgYW4gYW5pbWF0aW9uIG9uIHRoZSBkaXYuCisgKiBOT1RFOiBUaGlzIGZ1bmN0aW9u
IGFzc2VydHMgd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGFuaW1hdGlvbnMgd2l0aCBkdXJhdGlvbnMK
KyAqIHNob3J0ZXIgdGhhbiAxMDBzIGJlY2F1c2UgdGhlIHNob3J0ZXIgZHVyYXRpb24gbWF5IGNh
dXNlIGludGVybWl0dGVudAorICogZmFpbHVyZXMuICBJZiB5b3UgYXJlIG5vdCBzdXJlIGhvdyBs
b25nIGl0IGlzIHN1aXRhYmxlLCB1c2UgMTAwczsgaXQncworICogbG9uZyBlbm91Z2ggYnV0IHNo
b3J0ZXIgdGhhbiBvdXIgdGVzdCBmcmFtZXdvcmsgdGltZW91dCAoMzMwcykuCisgKiBJZiB5b3Ug
cmVhbGx5IG5lZWQgdG8gdXNlIHNob3J0ZXIgZHVyYXRpb25zLCB1c2UgYW5pbWF0ZSgpIGZ1bmN0
aW9uIGRpcmVjdGx5LgorICoKKyAqIEBwYXJhbSB0ICBUaGUgdGVzdGhhcm5lc3MuanMgVGVzdCBv
YmplY3QuIElmIHByb3ZpZGVkLCB0aGlzIHdpbGwgYmUgdXNlZAorICogICAgICAgICAgIHRvIHJl
Z2lzdGVyIGEgY2xlYW51cCBjYWxsYmFjayB0byByZW1vdmUgdGhlIGRpdiB3aGVuIHRoZSB0ZXN0
CisgKiAgICAgICAgICAgZmluaXNoZXMuCisgKiBAcGFyYW0gYXR0cnMgIEEgZGljdGlvbmFyeSBv
YmplY3Qgd2l0aCBhdHRyaWJ1dGUgbmFtZXMgYW5kIHZhbHVlcyB0byBzZXQgb24KKyAqICAgICAg
ICAgICAgICAgdGhlIGRpdi4KKyAqIEBwYXJhbSBmcmFtZXMgIFRoZSBrZXlmcmFtZXMgcGFzc2Vk
IHRvIEVsZW1lbnQuYW5pbWF0ZSgpLgorICogQHBhcmFtIG9wdGlvbnMgIFRoZSBvcHRpb25zIHBh
c3NlZCB0byBFbGVtZW50LmFuaW1hdGUoKS4KKyAqLworZnVuY3Rpb24gYWRkRGl2QW5kQW5pbWF0
ZSh0LCBhdHRycywgZnJhbWVzLCBvcHRpb25zKSB7CisgIGxldCBhbmltRHVyID0gKHR5cGVvZiBv
cHRpb25zID09PSAnb2JqZWN0JykgPworICAgIG9wdGlvbnMuZHVyYXRpb24gOiBvcHRpb25zOwor
ICBhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsKGFuaW1EdXIsIDEwMCAqIE1TX1BFUl9TRUMsCisg
ICAgICAnQ2xpZW50cyBvZiB0aGlzIGFkZERpdkFuZEFuaW1hdGUgQVBJIG11c3QgcmVxdWVzdCBh
IGR1cmF0aW9uICcgKworICAgICAgJ29mIGF0IGxlYXN0IDEwMHMsIHRvIGF2b2lkIGludGVybWl0
dGVudCBmYWlsdXJlcyBmcm9tIGUuZy4nICsKKyAgICAgICd0aGUgbWFpbiB0aHJlYWQgYmVpbmcg
YnVzeSBmb3IgYW4gZXh0ZW5kZWQgcGVyaW9kJyk7CisKKyAgcmV0dXJuIGFkZERpdih0LCBhdHRy
cykuYW5pbWF0ZShmcmFtZXMsIG9wdGlvbnMpOworfQorCisvKioKKyAqIEFwcGVuZHMgYSBkaXYg
dG8gdGhlIGRvY3VtZW50IGJvZHkuCisgKgorICogQHBhcmFtIHQgIFRoZSB0ZXN0aGFybmVzcy5q
cyBUZXN0IG9iamVjdC4gSWYgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCisgKiAgICAgICAg
ICAgdG8gcmVnaXN0ZXIgYSBjbGVhbnVwIGNhbGxiYWNrIHRvIHJlbW92ZSB0aGUgZGl2IHdoZW4g
dGhlIHRlc3QKKyAqICAgICAgICAgICBmaW5pc2hlcy4KKyAqCisgKiBAcGFyYW0gYXR0cnMgIEEg
ZGljdGlvbmFyeSBvYmplY3Qgd2l0aCBhdHRyaWJ1dGUgbmFtZXMgYW5kIHZhbHVlcyB0byBzZXQg
b24KKyAqICAgICAgICAgICAgICAgdGhlIGRpdi4KKyAqLworZnVuY3Rpb24gYWRkRGl2KHQsIGF0
dHJzKSB7CisgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgaWYg
KGF0dHJzKSB7CisgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gYXR0cnMpIHsKKyAgICAgIGRpdi5z
ZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJzW2F0dHJOYW1lXSk7CisgICAgfQorICB9CisgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgaWYgKHQgJiYgdHlwZW9mIHQuYWRkX2Ns
ZWFudXAgPT09ICdmdW5jdGlvbicpIHsKKyAgICB0LmFkZF9jbGVhbnVwKGZ1bmN0aW9uKCkgewor
ICAgICAgaWYgKGRpdi5wYXJlbnROb2RlKSB7CisgICAgICAgIGRpdi5yZW1vdmUoKTsKKyAgICAg
IH0KKyAgICB9KTsKKyAgfQorICByZXR1cm4gZGl2OworfQorCisvKioKKyAqIEFwcGVuZHMgYSBz
dHlsZSBkaXYgdG8gdGhlIGRvY3VtZW50IGhlYWQuCisgKgorICogQHBhcmFtIHQgIFRoZSB0ZXN0
aGFybmVzcy5qcyBUZXN0IG9iamVjdC4gSWYgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCisg
KiAgICAgICAgICAgdG8gcmVnaXN0ZXIgYSBjbGVhbnVwIGNhbGxiYWNrIHRvIHJlbW92ZSB0aGUg
c3R5bGUgZWxlbWVudAorICogICAgICAgICAgIHdoZW4gdGhlIHRlc3QgZmluaXNoZXMuCisgKgor
ICogQHBhcmFtIHJ1bGVzICBBIGRpY3Rpb25hcnkgb2JqZWN0IHdpdGggc2VsZWN0b3IgbmFtZXMg
YW5kIHJ1bGVzIHRvIHNldCBvbgorICogICAgICAgICAgICAgICB0aGUgc3R5bGUgc2hlZXQuCisg
Ki8KK2Z1bmN0aW9uIGFkZFN0eWxlKHQsIHJ1bGVzKSB7CisgIHZhciBleHRyYVN0eWxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKKyAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGls
ZChleHRyYVN0eWxlKTsKKyAgaWYgKHJ1bGVzKSB7CisgICAgdmFyIHNoZWV0ID0gZXh0cmFTdHls
ZS5zaGVldDsKKyAgICBmb3IgKHZhciBzZWxlY3RvciBpbiBydWxlcykgeworICAgICAgc2hlZXQu
aW5zZXJ0UnVsZShzZWxlY3RvciArICd7JyArIHJ1bGVzW3NlbGVjdG9yXSArICd9JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2hlZXQuY3NzUnVsZXMubGVuZ3RoKTsKKyAgICB9CisgIH0KKwor
ICBpZiAodCAmJiB0eXBlb2YgdC5hZGRfY2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykgeworICAgIHQu
YWRkX2NsZWFudXAoZnVuY3Rpb24oKSB7CisgICAgICBleHRyYVN0eWxlLnJlbW92ZSgpOworICAg
IH0pOworICB9Cit9CisKKy8qKgorICogVGFrZXMgYSBDU1MgcHJvcGVydHkgKGUuZy4gbWFyZ2lu
LWxlZnQpIGFuZCByZXR1cm5zIHRoZSBlcXVpdmFsZW50IElETAorICogbmFtZSAoZS5nLiBtYXJn
aW5MZWZ0KS4KKyAqLworZnVuY3Rpb24gcHJvcGVydHlUb0lETChwcm9wZXJ0eSkgeworICB2YXIg
cHJlZml4TWF0Y2ggPSBwcm9wZXJ0eS5tYXRjaCgvXi0oXHcrKS0vKTsKKyAgaWYgKHByZWZpeE1h
dGNoKSB7CisgICAgdmFyIHByZWZpeCA9IHByZWZpeE1hdGNoWzFdID09PSAnbW96JyA/ICdNb3on
IDogcHJlZml4TWF0Y2hbMV07CisgICAgcHJvcGVydHkgPSBwcmVmaXggKyBwcm9wZXJ0eS5zdWJz
dHJpbmcocHJlZml4TWF0Y2hbMF0ubGVuZ3RoIC0gMSk7CisgIH0KKyAgLy8gaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzc29tLyNjc3MtcHJvcGVydHktdG8taWRsLWF0dHJpYnV0ZQorICByZXR1
cm4gcHJvcGVydHkucmVwbGFjZSgvLShbYS16XSkvZ2ksIGZ1bmN0aW9uKHN0ciwgZ3JvdXApIHsK
KyAgICByZXR1cm4gZ3JvdXAudG9VcHBlckNhc2UoKTsKKyAgfSk7Cit9CisKKy8qKgorICogUHJv
bWlzZSB3cmFwcGVyIGZvciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuCisgKi8KK2Z1bmN0aW9uIHdh
aXRGb3JGcmFtZSgpIHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJl
amVjdCkgeworICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVzb2x2ZSk7CisgIH0p
OworfQorCisvKioKKyAqIFdhaXRzIGZvciBhIHJlcXVlc3RBbmltYXRpb25GcmFtZSBjYWxsYmFj
ayBpbiB0aGUgbmV4dCByZWZyZXNoIGRyaXZlciB0aWNrLgorICogTm90ZSB0aGF0ICdkb20uYW5p
bWF0aW9ucy1hcGkuY29yZS5lbmFibGVkJyBwcmVmIHNob3VsZCBiZSB0cnVlIHRvIHVzZSB0aGlz
CisgKiBmdW5jdGlvbi4KKyAqLworZnVuY3Rpb24gd2FpdEZvck5leHRGcmFtZSgpIHsKKyAgY29u
c3QgdGltZUF0U3RhcnQgPSBkb2N1bWVudC50aW1lbGluZS5jdXJyZW50VGltZTsKKyAgcmV0dXJu
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4geworICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoKCkgPT4geworICAgICAgaWYgKHRpbWVBdFN0YXJ0ID09PSBkb2N1bWVudC50aW1lbGluZS5j
dXJyZW50VGltZSkgeworICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29s
dmUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgIH0p
OworICB9KTsKK30KKworLyoqCisgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IGlzIHJlc29sdmVk
IGFmdGVyIHRoZSBnaXZlbiBudW1iZXIgb2YgY29uc2VjdXRpdmUKKyAqIGFuaW1hdGlvbiBmcmFt
ZXMgaGF2ZSBvY2N1cmVkICh1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FsbGJhY2tzKS4K
KyAqCisgKiBAcGFyYW0gZnJhbWVDb3VudCAgVGhlIG51bWJlciBvZiBhbmltYXRpb24gZnJhbWVz
LgorICogQHBhcmFtIG9uRnJhbWUgIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGJlIHByb2Nlc3Nl
ZCBpbiBlYWNoIGFuaW1hdGlvbiBmcmFtZS4KKyAqLworZnVuY3Rpb24gd2FpdEZvckFuaW1hdGlv
bkZyYW1lcyhmcmFtZUNvdW50LCBvbkZyYW1lKSB7CisgIGNvbnN0IHRpbWVBdFN0YXJ0ID0gZG9j
dW1lbnQudGltZWxpbmUuY3VycmVudFRpbWU7CisgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlLCByZWplY3QpIHsKKyAgICBmdW5jdGlvbiBoYW5kbGVGcmFtZSgpIHsKKyAgICAg
IGlmIChvbkZyYW1lICYmIHR5cGVvZiBvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7CisgICAgICAg
IG9uRnJhbWUoKTsKKyAgICAgIH0KKyAgICAgIGlmICh0aW1lQXRTdGFydCAhPSBkb2N1bWVudC50
aW1lbGluZS5jdXJyZW50VGltZSAmJgorICAgICAgICAgIC0tZnJhbWVDb3VudCA8PSAwKSB7Cisg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHdpbmRvdy5yZXF1ZXN0
QW5pbWF0aW9uRnJhbWUoaGFuZGxlRnJhbWUpOyAvLyB3YWl0IGFub3RoZXIgZnJhbWUKKyAgICAg
IH0KKyAgICB9CisgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShoYW5kbGVGcmFtZSk7
CisgIH0pOworfQorCisvKioKKyAqIFByb21pc2Ugd3JhcHBlciBmb3IgcmVxdWVzdElkbGVDYWxs
YmFjay4KKyAqLworZnVuY3Rpb24gd2FpdEZvcklkbGUoKSB7CisgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKKyAgICByZXF1ZXN0SWRsZUNhbGxiYWNrKHJlc29sdmUpOworICB9KTsK
K30KKworLyoqCisgKiBXcmFwcGVyIHRoYXQgdGFrZXMgYSBzZXF1ZW5jZSBvZiBOIGFuaW1hdGlv
bnMgYW5kIHJldHVybnM6CisgKgorICogICBQcm9taXNlLmFsbChbYW5pbWF0aW9uc1swXS5yZWFk
eSwgYW5pbWF0aW9uc1sxXS5yZWFkeSwgLi4uIGFuaW1hdGlvbnNbTi0xXS5yZWFkeV0pOworICov
CitmdW5jdGlvbiB3YWl0Rm9yQWxsQW5pbWF0aW9ucyhhbmltYXRpb25zKSB7CisgIHJldHVybiBQ
cm9taXNlLmFsbChhbmltYXRpb25zLm1hcChmdW5jdGlvbihhbmltYXRpb24pIHsKKyAgICByZXR1
cm4gYW5pbWF0aW9uLnJlYWR5OworICB9KSk7Cit9CisKKy8qKgorICogRmx1c2ggdGhlIGNvbXB1
dGVkIHN0eWxlIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC4gVGhpcyBpcyB1c2VmdWwsIGZvciBleGFt
cGxlLAorICogd2hlbiB3ZSBhcmUgdGVzdGluZyBhIHRyYW5zaXRpb24gYW5kIG5lZWQgdGhlIGlu
aXRpYWwgdmFsdWUgb2YgYSBwcm9wZXJ0eQorICogdG8gYmUgY29tcHV0ZWQgc28gdGhhdCB3aGVu
IHdlIHN5bmNocm9ub3VzbHlldCBzZXQgaXQgdG8gYSBkaWZmZXJlbnQgdmFsdWUKKyAqIHdlIGFj
dHVhbGx5IGdldCBhIHRyYW5zaXRpb24gaW5zdGVhZCBvZiB0aGF0IGJlaW5nIHRoZSBpbml0aWFs
IHZhbHVlLgorICovCitmdW5jdGlvbiBmbHVzaENvbXB1dGVkU3R5bGUoZWxlbSkgeworICB2YXIg
Y3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW0pOworICBjcy5tYXJnaW5MZWZ0OworfQorCitpZiAo
b3BlbmVyKSB7CisgIGZvciAodmFyIGZ1bmNOYW1lIG9mIFsiYXN5bmNfdGVzdCIsICJhc3NlcnRf
bm90X2VxdWFscyIsICJhc3NlcnRfZXF1YWxzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJh
c3NlcnRfYXBwcm94X2VxdWFscyIsICJhc3NlcnRfbGVzc190aGFuIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJhc3NlcnRfbGVzc190aGFuX2VxdWFsIiwgImFzc2VydF9ncmVhdGVyX3RoYW4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9iZXR3ZWVuX2luY2x1c2l2ZSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3RydWUiLCAiYXNzZXJ0X2ZhbHNlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfY2xhc3Nfc3RyaW5nIiwgImFzc2VydF90aHJv
d3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF91bnJlYWNoZWQiLCAiYXNzZXJ0
X3JlZ2V4cF9tYXRjaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAicHJvbWlzZV90ZXN0Iiwg
InRlc3QiXSkgeworICAgIGlmIChvcGVuZXJbZnVuY05hbWVdKSB7CisgICAgICB3aW5kb3dbZnVu
Y05hbWVdID0gb3BlbmVyW2Z1bmNOYW1lXS5iaW5kKG9wZW5lcik7CisgICAgfQorICB9CisKKyAg
d2luZG93LkV2ZW50V2F0Y2hlciA9IG9wZW5lci5FdmVudFdhdGNoZXI7CisKKyAgZnVuY3Rpb24g
ZG9uZSgpIHsKKyAgICBvcGVuZXIuYWRkX2NvbXBsZXRpb25fY2FsbGJhY2soZnVuY3Rpb24oKSB7
CisgICAgICBzZWxmLmNsb3NlKCk7CisgICAgfSk7CisgICAgb3BlbmVyLmRvbmUoKTsKKyAgfQor
fQorCisvKgorICogUmV0dXJucyBhIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aGVuIHRoZSBk
b2N1bWVudCBoYXMgZmluaXNoZWQgbG9hZGluZy4KKyAqLworZnVuY3Rpb24gd2FpdEZvckRvY3Vt
ZW50TG9hZCgpIHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgeworICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiKSB7CisgICAg
ICByZXNvbHZlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgcmVzb2x2ZSk7CisgICAgfQorICB9KTsKK30KKworLyoKKyAqIEVudGVycyB0ZXN0
IHJlZnJlc2ggbW9kZSwgYW5kIHJlc3RvcmVzIHRoZSBtb2RlIHdoZW4gfHR8IGZpbmlzaGVzLgor
ICovCitmdW5jdGlvbiB1c2VUZXN0UmVmcmVzaE1vZGUodCkgeworICBmdW5jdGlvbiBlbnN1cmVO
b1N1cHByZXNzZWRQYWludHMoKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgZnVuY3Rpb24gY2hlY2tTdXBwcmVzc2VkUGFpbnRzKCkgeworICAgICAgICBpZiAo
IVNwZWNpYWxQb3dlcnMuRE9NV2luZG93VXRpbHMucGFpbnRpbmdTdXBwcmVzc2VkKSB7CisgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHdpbmRvdy5yZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2tTdXBwcmVzc2VkUGFpbnRzKTsKKyAgICAgICAgfQorICAg
ICAgfQorICAgICAgY2hlY2tTdXBwcmVzc2VkUGFpbnRzKCk7CisgICAgfSk7CisgIH0KKworICBy
ZXR1cm4gZW5zdXJlTm9TdXBwcmVzc2VkUGFpbnRzKCkudGhlbigoKSA9PiB7CisgICAgU3BlY2lh
bFBvd2Vycy5ET01XaW5kb3dVdGlscy5hZHZhbmNlVGltZUFuZFJlZnJlc2goMCk7CisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiB7CisgICAgICBTcGVjaWFsUG93ZXJzLkRPTVdpbmRvd1V0aWxzLnJl
c3RvcmVOb3JtYWxSZWZyZXNoKCk7CisgICAgfSk7CisgIH0pOworfQorCisvKioKKyAqIFJldHVy
bnMgdHJ1ZSBpZiBvZmYtbWFpbi10aHJlYWQgYW5pbWF0aW9ucy4KKyAqLworZnVuY3Rpb24gaXNP
TVRBRW5hYmxlZCgpIHsKKyAgY29uc3QgT01UQVByZWZLZXkgPSAnbGF5ZXJzLm9mZm1haW50aHJl
YWRjb21wb3NpdGlvbi5hc3luYy1hbmltYXRpb25zJzsKKyAgcmV0dXJuIFNwZWNpYWxQb3dlcnMu
RE9NV2luZG93VXRpbHMubGF5ZXJNYW5hZ2VyUmVtb3RlICYmCisgICAgICAgICBTcGVjaWFsUG93
ZXJzLmdldEJvb2xQcmVmKE9NVEFQcmVmS2V5KTsKK30KKworLyoqCisgKiBSZXR1cm5zIHRydWUg
aWYgdGhlIGRvY3VtZW50IGlzIHN0eWxlZCBieSBzZXJ2by4KKyAqLworZnVuY3Rpb24gaXNTdHls
ZWRCeVNlcnZvKCkgeworICByZXR1cm4gU3BlY2lhbFBvd2Vycy5ET01XaW5kb3dVdGlscy5pc1N0
eWxlZEJ5U2Vydm87Cit9CisKKy8qKgorICogQXBwZW5kIGFuIFNWRyBlbGVtZW50IHRvIHRoZSB0
YXJnZXQgZWxlbWVudC4KKyAqCisgKiBAcGFyYW0gdGFyZ2V0IFRoZSBlbGVtZW50IHdoaWNoIHdh
bnQgdG8gYXBwZW5kLgorICogQHBhcmFtIGF0dHJzICBBIGFycmF5IG9iamVjdCB3aXRoIGF0dHJp
YnV0ZSBuYW1lIGFuZCB2YWx1ZXMgdG8gc2V0IG9uCisgKiAgICAgICAgICAgICAgIHRoZSBTVkcg
ZWxlbWVudC4KKyAqIEByZXR1cm4gQW4gU1ZHIG91dGVyIGVsZW1lbnQuCisgKi8KK2Z1bmN0aW9u
IGFkZFNWR0VsZW1lbnQodGFyZ2V0LCB0YWcsIGF0dHJzKSB7CisgIGlmICghdGFyZ2V0KSB7Cisg
ICAgcmV0dXJuIG51bGw7CisgIH0KKyAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgdGFnKTsKKyAgaWYgKGF0dHJzKSB7
CisgICAgZm9yICh2YXIgYXR0ck5hbWUgaW4gYXR0cnMpIHsKKyAgICAgIGVsZW1lbnQuc2V0QXR0
cmlidXRlTlMobnVsbCwgYXR0ck5hbWUsIGF0dHJzW2F0dHJOYW1lXSk7CisgICAgfQorICB9Cisg
IHRhcmdldC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKKy8q
CisgKiBHZXQgQW5pbWF0aW9uIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNwZWNpZmllZCB2YWx1ZXMg
Zm9yIGEgc3BlY2lmaWMgcHJvcGVydHkuCisgKgorICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0
IGVsZW1lbnQuCisgKiBAcGFyYW0gcHJvcCBUaGUgQ1NTIHByb3BlcnR5LgorICogQHBhcmFtIHYx
IFRoZSBmaXJzdCBwcm9wZXJ0eSB2YWx1ZS4KKyAqIEBwYXJhbSB2MiBUaGUgU2Vjb25kIHByb3Bl
cnR5IHZhbHVlLgorICoKKyAqIEByZXR1cm4gVGhlIGRpc3RhbmNlIGJldHdlZW4gfHYxfCBhbmQg
fHYyfCBmb3IgfHByb3B8IG9uIHx0YXJnZXR8LgorICovCitmdW5jdGlvbiBnZXREaXN0YW5jZSh0
YXJnZXQsIHByb3AsIHYxLCB2MikgeworICBpZiAoIXRhcmdldCkgeworICAgIHJldHVybiAwLjA7
CisgIH0KKyAgcmV0dXJuIFNwZWNpYWxQb3dlcnMuRE9NV2luZG93VXRpbHMKKyAgICAgICAgICAg
LmNvbXB1dGVBbmltYXRpb25EaXN0YW5jZSh0YXJnZXQsIHByb3AsIHYxLCB2Mik7Cit9CisKKy8q
CisgKiBBIHByb21pc2Ugd3JhcHBlciBmb3Igd2FpdGluZyBNb3pBZnRlclBhaW50LgorICovCitm
dW5jdGlvbiB3YWl0Rm9yUGFpbnRzKCkgeworICAvLyBGSVhNRTogQnVnIDE0MTUwNjUuIEluc3Rl
YWQgd2FpdGluZyBmb3IgdHdvIHJlcXVlc3RBbmltYXRpb25GcmFtZXMsIHdlCisgIC8vIHNob3Vs
ZCB3YWl0IGZvciBNb3pBZnRlclBhaW50IG9uY2UgYWZ0ZXIgTW96QWZ0ZXJQYWludCBpcyBmaXJl
ZCBwcm9wZXJseQorICAvLyAoYnVnIDEzNDEyOTQpLgorICByZXR1cm4gd2FpdEZvckFuaW1hdGlv
bkZyYW1lcygyKTsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmIHxhQW5pbWF0aW9ufCBiZWdpbnMg
YXQgdGhlIGN1cnJlbnQgdGltZWxpbmUgdGltZS4gIFdlCisvLyBzb21ldGltZXMgbmVlZCB0byBk
ZXRlY3QgdGhpcyBjYXNlIGJlY2F1c2UgaWYgd2Ugc3RhcnRlZCBhbiBhbmltYXRpb24KKy8vIGFz
eW5jaHJvbm91c2x5IChlLmcuIHVzaW5nIHBsYXkoKSkgYW5kIHRoZW4gZW5kZWQgdXAgcnVubmlu
ZyB0aGUgbmV4dCBmcmFtZQorLy8gYXQgcHJlY2lzZWx5IHRoZSB0aW1lIHRoZSBhbmltYXRpb24g
c3RhcnRlZCAoZHVlIHRvIGFsaWduaW5nIHdpdGggdnN5bmMKKy8vIHJlZnJlc2ggcmF0ZSkgdGhl
biB3ZSB3b24ndCBlbmQgdXAgcmVzdHlsaW5nIGluIHRoYXQgZnJhbWUuCitmdW5jdGlvbiBhbmlt
YXRpb25TdGFydHNSaWdodE5vdyhhQW5pbWF0aW9uKSB7CisgIHJldHVybiBhQW5pbWF0aW9uLnN0
YXJ0VGltZSA9PT0gYUFuaW1hdGlvbi50aW1lbGluZS5jdXJyZW50VGltZSAmJgorICAgICAgICAg
YUFuaW1hdGlvbi5jdXJyZW50VGltZSA9PT0gMDsKK30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336211</attachid>
            <date>2018-03-21 11:05:46 -0700</date>
            <delta_ts>2018-03-21 12:02:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183781-20180321190545.patch</filename>
            <type>text/plain</type>
            <size>27963</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIxMWFiMTk0ODBmZjUz
NGVjNzY2ZGJkZGIyMmViNGMwODA0MTRkYy4uZWIxMTZhMTc3NWQ1MGZkZWM1MzgyODI5MWYxNDQ3
MDE1OGM2MjRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAzLTIxICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBEaXNwYXRjaCBET00gZXZlbnRzIGZvciBDU1MgVHJhbnNpdGlvbnMgYW5kIENTUyBBbmltYXRp
b25zIGltcGxlbWVudGVkIGFzIFdlYiBBbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCB3ZSd2ZSBpbXBsZW1lbnRlZCBDU1Mg
QW5pbWF0aW9ucyBhbmQgQ1NTIFRyYW5zaXRpb25zIGFzIFdlYiBBbmltYXRpb25zICh3ZWJraXQu
b3JnL2IvMTgzNTA0KSB3ZSBjYW4gZGlzcGF0Y2ggRE9NIGV2ZW50cworICAgICAgICBmb3IgdGFy
Z2V0cyBvZiBEZWNsYXJhdGl2ZUFuaW1hdGlvbiBvYmplY3RzLiBUbyBkbyB0aGF0LCB3ZSBhZGQg
YSBuZXcgaW52YWxpZGF0ZURPTUV2ZW50cygpIG1ldGhvZCBvbiBEZWNsYXJhdGl2ZUFuaW1hdGlv
bnMgd2hpY2gKKyAgICAgICAgaXMgY2FsbGVkIHdoZW4gdGhlIHRpbWVyIHNjaGVkdWxlZCBhZnRl
ciB0aGUgdGltaW5nIG1vZGVsIGhhcyBiZWVuIGludmFsaWRhdGVkIGZpcmVzIGluIERvY3VtZW50
VGltZWxpbmU6OnBlcmZvcm1JbnZhbGlkYXRpb25UYXNrKCkuCisgICAgICAgIFdoZW4gd2UgY2hl
Y2sgZm9yIERPTSBldmVudHMgdG8gZGlzcGF0Y2gsIHdlIGxvb2sgYXQgdGhlIGxhc3QgcmVjb3Jk
ZWQgcGhhc2UgYW5kIGl0ZXJhdGlvbiBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHN0YXRlIG9m
IHRoZQorICAgICAgICBhbmltYXRpb24gaGFzIGNoYW5nZWQuIFdlIHVzZSBhIEdlbmVyaWNFdmVu
dFF1ZXVlIHRvIGVucXVldWUgdGhlIGV2ZW50cyBzdWNoIHRoYXQgdGhleSBhcmUgZGlzcGF0Y2hl
ZCBhc3luY2hyb25vdXNseSBhdCBhIG1vbWVudAorICAgICAgICB3aGVuIGl0IGlzIHNhZmUgdG8g
ZXZhbHVhdGUgc2NyaXB0LgorCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdFJl
YWRPbmx5Lmg6IE1ha2UgY3VycmVudEl0ZXJhdGlvbigpIHB1YmxpYyBzaW5jZSB3ZSBub3cgbmVl
ZCBpdCBpbiBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cygpLgorICAg
ICAgICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
QW5pbWF0aW9uOjpjcmVhdGUpOiBQYXNzIHRoZSBhbmltYXRpb24gdGFyZ2V0IHRvIHRoZSBjb25z
dHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Fu
aW1hdGlvbjo6Q1NTQW5pbWF0aW9uKTogUGFzcyB0aGUgYW5pbWF0aW9uIHRhcmdldCB0byB0aGUg
c3VwZXJjbGFzcyBpbnN0ZWFkIG9mIGl0cyBkb2N1bWVudC4KKyAgICAgICAgKiBhbmltYXRpb24v
Q1NTQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVHJhbnNpdGlvbjo6Y3JlYXRlKTogUGFzcyB0aGUgYW5pbWF0
aW9uIHRhcmdldCB0byB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBpdHMgZG9jdW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NUcmFuc2l0aW9uOjpDU1NUcmFuc2l0aW9uKTogUGFzcyB0aGUg
YW5pbWF0aW9uIHRhcmdldCB0byB0aGUgc3VwZXJjbGFzcyBpbnN0ZWFkIG9mIGl0cyBkb2N1bWVu
dC4KKyAgICAgICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oOgorICAgICAgICAqIGFuaW1h
dGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRpb24pOiBFeHBlY3QgYW4gRWxlbWVudCBp
bnN0ZWFkIG9mIGEgRG9jdW1lbnQgYW5kIHVzZSB0aGF0IGVsZW1lbnQgYXMgdGhlIHRhcmdldCBv
ZiB0aGUKKyAgICAgICAgR2VuZXJpY0V2ZW50UXVldWUgdGhhdCB3ZSBpbml0aWFsaXplLiBXZSBh
bHNvIHJlZ2lzdGVyIHRoaXMgZWxlbWVudCBhcyBvdXIgbV90YXJnZXQuCisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6fkRlY2xhcmF0aXZlQW5pbWF0aW9uKTogQ2xvc2Ug
dGhlIEdlbmVyaWNFdmVudFF1ZXVlIG1lbWJlciB1cG9uIGRlc3RydWN0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUpOiBXZSBuZWVkIHRvIGNh
bGwgcGF1c2UoKSBmb3IgZGVjbGFyYXRpdmUgYW5pbWF0aW9ucyB0aGF0IGFyZW4ndCBwbGF5aW5n
IHNvIHRoYXQgdGhlIGFuaW1hdGlvbidzCisgICAgICAgIHBsYXlTdGF0ZSBpcyBzZXQgY29ycmVj
dGx5IGFuZCB0aGUgYW5pbWF0aW9uIGlzIG5vdCBpZGxlLgorICAgICAgICAoV2ViQ29yZTo6RGVj
bGFyYXRpdmVBbmltYXRpb246OnBoYXNlV2l0aG91dEVmZmVjdCBjb25zdCk6IEJlY2F1c2Ugd2Ug
bWF5IG5lZWQgdG8gZ2V0IGFuIGFuaW1hdGlvbidzIGN1cnJlbnQgcGhhc2UgaW4gaW52YWxpZGF0
ZURPTUV2ZW50cygpCisgICAgICAgIGFmdGVyIGFuIGFuaW1hdGlvbidzIGVmZmVjdCBoYXMgYmVl
biByZW1vdmVkLCB3ZSBwcm92aWRlIGFuIGFsdGVybmF0ZSB3YXkgdG8gY29tcHV0ZSB0aGUgcGhh
c2UganVzdCBieSBsb29raW5nIGF0IHRoZSBhbmltYXRpb24ncyBjdXJyZW50IHRpbWUuCisgICAg
ICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cyk6
IEJhc2VkIG9uIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCBwZW5kaW5nIHN0YXRlLCBpdGVyYXRp
b24gYW5kIHBoYXNlLCB3ZSBlbnF1ZXVlIGFuaW1hdGlvbgorICAgICAgICBhbmQgdHJhbnNpdGlv
biBET00gZXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgQ1NTIEFuaW1hdGlvbnMgTGV2ZWwgMiBh
bmQgQ1NTIFRyYW5zaXRpb25zIExldmVsIDIgc3BlY2lmaWNhdGlvbnMuCisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KTogRW5xdWV1ZSBhbiBl
dmVudCBvbiB0aGUgR2VuZXJpY0V2ZW50UXVldWUgYmFzZWQgb24gdGhlIGFuaW1hdGlvbiB0eXBl
LgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oOgorICAgICAgICAq
IGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGltZWxpbmU6OnBlcmZvcm1JbnZhbGlkYXRpb25UYXNrKTogV2UgY2FsbCBpbnZhbGlkYXRl
RE9NRXZlbnRzKCkgb24gYWxsIGRlY2xhcmF0aXZlIGFuaW1hdGlvbnMgcmVnaXN0ZXJlZCB3aXRo
IHRoaXMgdGltZWxpbmUKKyAgICAgICAgbm93IHRoYXQgdGhlIHRpbWluZyBtb2RlbCBoYXMgYmVl
biBpbnZhbGlkYXRlZC4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBBZGQgdGhlIG5hbWVz
IG9mIG5ld2x5LWltcGxlbWVudGVkIGV2ZW50cyAoYW5pbWF0aW9uY2FuY2VsLCB0cmFuc2l0aW9u
Y2FuY2VsLCB0cmFuc2l0aW9ucnVuIGFuZCB0cmFuc2l0aW9uc3RhcnQpLgorICAgICAgICAqIGRv
bS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbDogQWRkIG5ldyBhdHRyaWJ1dGUtYmFzZWQgZXZlbnQg
aGFuZGxlcnMgZm9yIHRoZSBuZXdseS1pbXBsZW1lbnRlZCBldmVudHMuCisgICAgICAgICogaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IEFkZCBuZXcgYXR0cmlidXRlLWJhc2VkIGV2ZW50IGhh
bmRsZXJzIGZvciB0aGUgbmV3bHktaW1wbGVtZW50ZWQgZXZlbnRzLgorICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNyZWF0ZUV2
ZW50SGFuZGxlck5hbWVNYXApOiBBZGQgbmV3IGF0dHJpYnV0ZS1iYXNlZCBldmVudCBoYW5kbGVy
cyBmb3IgdGhlIG5ld2x5LWltcGxlbWVudGVkIGV2ZW50cy4KKwogMjAxOC0wMy0yMSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nvb3JkR3JhcGhpY3Nd
IFRyYWNrIGRpcnR5IHJlY3RzIHRoYXQgbmVlZCB1cGRhdGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZm
ZWN0UmVhZE9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3RS
ZWFkT25seS5oCmluZGV4IDk4YmRlODRhZWE5OTdhMDQyMmFiNDhlYjg5OWU5ZWQwMjA1MTFkYzgu
LmJiNTkyZjlhNjU4NjBmZWRhYWFlNzQyZDBiN2FmNzk4ZGVjMTk4M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3RSZWFkT25seS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3RSZWFkT25seS5oCkBAIC01Myw2
ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGxvY2FsVGltZSgp
IGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gYWN0aXZlVGltZSgpIGNvbnN0Owog
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpdGVyYXRpb25Qcm9ncmVzcygpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50SXRlcmF0aW9uKCkgY29uc3Q7CiAKICAgICBl
bnVtIGNsYXNzIFBoYXNlIHsgQmVmb3JlLCBBY3RpdmUsIEFmdGVyLCBJZGxlIH07CiAgICAgUGhh
c2UgcGhhc2UoKSBjb25zdDsKQEAgLTc2LDcgKzc3LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBvdmVyYWxsUHJvZ3Jlc3MoKSBjb25zdDsKICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MoKSBjb25zdDsKLSAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gY3VycmVudEl0ZXJhdGlvbigpIGNvbnN0OwogICAgIEFuaW1hdGlvbkVm
ZmVjdFJlYWRPbmx5OjpDb21wdXRlZERpcmVjdGlvbiBjdXJyZW50RGlyZWN0aW9uKCkgY29uc3Q7
CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpcmVjdGVkUHJvZ3Jlc3MoKSBjb25zdDsKICAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdHJhbnNmb3JtZWRQcm9ncmVzcygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAppbmRleCA4MmY1MTMwMjYxYWZl
M2I5Nzg5MDgwZjBiMjcwNDJiYWIxYTIxMGUwLi44NzNkYmMwNzRhNGJkZGRjOWFjOWEwNTgwNGU1
YTkwYmRmODljOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5p
bWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNw
cApAQCAtMzMsMTQgKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPENTU0FuaW1h
dGlvbj4gQ1NTQW5pbWF0aW9uOjpjcmVhdGUoRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBBbmltYXRp
b24mIGJhY2tpbmdBbmltYXRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3
IENTU0FuaW1hdGlvbih0YXJnZXQuZG9jdW1lbnQoKSwgYmFja2luZ0FuaW1hdGlvbikpOworICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NBbmltYXRpb24odGFyZ2V0LCBiYWNraW5n
QW5pbWF0aW9uKSk7CiAgICAgcmVzdWx0LT5tX2FuaW1hdGlvbk5hbWUgPSBiYWNraW5nQW5pbWF0
aW9uLm5hbWUoKTsKICAgICByZXN1bHQtPmluaXRpYWxpemUodGFyZ2V0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1DU1NBbmltYXRpb246OkNTU0FuaW1hdGlvbihEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKLSAgICA6IERlY2xhcmF0aXZl
QW5pbWF0aW9uKGRvY3VtZW50LCBiYWNraW5nQW5pbWF0aW9uKQorQ1NTQW5pbWF0aW9uOjpDU1NB
bmltYXRpb24oRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0
aW9uKQorICAgIDogRGVjbGFyYXRpdmVBbmltYXRpb24oZWxlbWVudCwgYmFja2luZ0FuaW1hdGlv
bikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1h
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCmluZGV4IDEw
MWI1OTNjYTRkNWU5NDgyY2EwNGFhYjM2MGNhYmNmM2VmYzFlZjcuLmQ0NjgzYzdjYzAwYjA3ZWY3
YjI4MzZiZWI4NmI5MjM0N2I4NGZiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9DU1NBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5p
bWF0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3luY1Byb3Bl
cnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIENTU0Fu
aW1hdGlvbihEb2N1bWVudCYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIENTU0FuaW1hdGlvbihF
bGVtZW50JiwgY29uc3QgQW5pbWF0aW9uJik7CiAKICAgICBTdHJpbmcgbV9hbmltYXRpb25OYW1l
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKaW5kZXggOTdm
YWQzZTg1MGQzNTRiZjY0ODQ0MWY2YzcyNzQzNjA5MDg2M2FiNy4uMmRlMmViYzA2ODY0YTcyNWQy
MGU0NDZlNzVlYzVmOGY1MjBlNmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0NTU1RyYW5zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NU
cmFuc2l0aW9uLmNwcApAQCAtMzQsMTUgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UmVmPENTU1RyYW5zaXRpb24+IENTU1RyYW5zaXRpb246OmNyZWF0ZShFbGVtZW50JiB0YXJnZXQs
IGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBhZG9wdFJlZigqbmV3IENTU1RyYW5zaXRpb24odGFyZ2V0LmRvY3VtZW50KCksIGJhY2tpbmdB
bmltYXRpb24pKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQ1NTVHJhbnNpdGlv
bih0YXJnZXQsIGJhY2tpbmdBbmltYXRpb24pKTsKICAgICByZXN1bHQtPm1fdHJhbnNpdGlvblBy
b3BlcnR5ID0gYmFja2luZ0FuaW1hdGlvbi5wcm9wZXJ0eSgpOwogICAgIHJlc3VsdC0+aW5pdGlh
bGl6ZSh0YXJnZXQpOwogICAgIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0UmVhZE9ubHk+KHJlc3Vs
dC0+ZWZmZWN0KCkpLT5jb21wdXRlQ1NTVHJhbnNpdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0
eWxlLCBuZXdTdHlsZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ1NTVHJhbnNpdGlvbjo6
Q1NTVHJhbnNpdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2lu
Z0FuaW1hdGlvbikKLSAgICA6IERlY2xhcmF0aXZlQW5pbWF0aW9uKGRvY3VtZW50LCBiYWNraW5n
QW5pbWF0aW9uKQorQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbihFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24pCisgICAgOiBEZWNsYXJhdGl2ZUFu
aW1hdGlvbihlbGVtZW50LCBiYWNraW5nQW5pbWF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaAppbmRleCAzNWYwZWQwYTliZjU4YjRjM2Q2ZTBkOTBh
ZTVmMGNhZmJmMTQ2YTdkLi5lOGEwNTNhYzJjMTFhZjBhOTdjNWFiNzNhNDQ0YjAwYzE4NDY2ODE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuQmVMaXN0ZWQoKSBjb25zdCBmaW5hbDsKIAogcHJp
dmF0ZToKLSAgICBDU1NUcmFuc2l0aW9uKERvY3VtZW50JiwgY29uc3QgQW5pbWF0aW9uJik7Cisg
ICAgQ1NTVHJhbnNpdGlvbihFbGVtZW50JiwgY29uc3QgQW5pbWF0aW9uJik7CiAKICAgICBDU1NQ
cm9wZXJ0eUlEIG1fdHJhbnNpdGlvblByb3BlcnR5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCBhMDcyNTY4NTU3YTEwYmEw
NGI0YTE0YjAxZTRkNTRmMzZlNmU2M2QxLi45ZDAzMWVjM2RlZWY1MDM2NWU3YjFjZmNkOWQwYzgz
NjFiZTk2NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRp
dmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5jcHAKQEAgLTI4LDE3ICsyOCwyOCBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0VGltaW5nUmVhZE9ubHkuaCIKKyNpbmNsdWRl
ICJBbmltYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5oIgorI2luY2x1ZGUg
IlBzZXVkb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFuc2l0aW9uRXZlbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1EZWNsYXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRp
b24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24p
Ci0gICAgOiBXZWJBbmltYXRpb24oZG9jdW1lbnQpCitEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6RGVj
bGFyYXRpdmVBbmltYXRpb24oRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBBbmltYXRpb24mIGJhY2tp
bmdBbmltYXRpb24pCisgICAgOiBXZWJBbmltYXRpb24odGFyZ2V0LmRvY3VtZW50KCkpCisgICAg
LCBtX3RhcmdldCh0YXJnZXQpCiAgICAgLCBtX2JhY2tpbmdBbmltYXRpb24oY29uc3RfY2FzdDxB
bmltYXRpb24mPihiYWNraW5nQW5pbWF0aW9uKSkKKyAgICAsIG1fZXZlbnRRdWV1ZSh0YXJnZXQp
CiB7CiB9CiAKK0RlY2xhcmF0aXZlQW5pbWF0aW9uOjp+RGVjbGFyYXRpdmVBbmltYXRpb24oKQor
eworICAgIG1fZXZlbnRRdWV1ZS5jbG9zZSgpOworfQorCiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0
aW9uOjpzZXRCYWNraW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlv
bikKIHsKICAgICBtX2JhY2tpbmdBbmltYXRpb24gPSBjb25zdF9jYXN0PEFuaW1hdGlvbiY+KGJh
Y2tpbmdBbmltYXRpb24pOwpAQCAtNzMsNCArODQsMTA2IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmlt
YXRpb246OnN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKQogICAgIHVuc3VzcGVu
ZEVmZmVjdEludmFsaWRhdGlvbigpOwogfQogCitBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhh
c2UgRGVjbGFyYXRpdmVBbmltYXRpb246OnBoYXNlV2l0aG91dEVmZmVjdCgpIGNvbnN0Cit7Cisg
ICAgLy8gVGhpcyBzaG91bGRuJ3QgYmUgY2FsbGVkIGlmIHdlIGFjdHVhbGx5IGhhdmUgYW4gZWZm
ZWN0LgorICAgIEFTU0VSVCghZWZmZWN0KCkpOworCisgICAgYXV0byBhbmltYXRpb25DdXJyZW50
VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgaWYgKCFhbmltYXRpb25DdXJyZW50VGltZSkKKyAg
ICAgICAgcmV0dXJuIEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5OjpQaGFzZTo6SWRsZTsKKworICAg
IC8vIFNpbmNlIHdlIGRvbid0IGhhdmUgYW4gZWZmZWN0LCB0aGUgZHVyYXRpb24gd2lsbCBiZSB6
ZXJvIHNvIHRoZSBwaGFzZSBpcyAnYmVmb3JlJyBpZiB0aGUgY3VycmVudCB0aW1lIGlzIGxlc3Mg
dGhhbiB6ZXJvLgorICAgIHJldHVybiBhbmltYXRpb25DdXJyZW50VGltZS52YWx1ZSgpIDwgMF9z
ID8gQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlOjpCZWZvcmUgOiBBbmltYXRpb25FZmZl
Y3RSZWFkT25seTo6UGhhc2U6OkFmdGVyOworfQorCit2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9u
OjppbnZhbGlkYXRlRE9NRXZlbnRzKCkKK3sKKyAgICBhdXRvKiBhbmltYXRpb25FZmZlY3QgPSBl
ZmZlY3QoKTsKKworICAgIGF1dG8gaXNQZW5kaW5nID0gcGVuZGluZygpOworICAgIGF1dG8gaXRl
cmF0aW9uID0gYW5pbWF0aW9uRWZmZWN0ID8gYW5pbWF0aW9uRWZmZWN0LT5jdXJyZW50SXRlcmF0
aW9uKCkudmFsdWUoKSA6IDA7CisgICAgYXV0byBjdXJyZW50UGhhc2UgPSBhbmltYXRpb25FZmZl
Y3QgPyBhbmltYXRpb25FZmZlY3QtPnBoYXNlKCkgOiBwaGFzZVdpdGhvdXRFZmZlY3QoKTsKKwor
ICAgIGJvb2wgd2FzQWN0aXZlID0gbV9wcmV2aW91c1BoYXNlID09IEFuaW1hdGlvbkVmZmVjdFJl
YWRPbmx5OjpQaGFzZTo6QWN0aXZlOworICAgIGJvb2wgd2FzQWZ0ZXIgPSBtX3ByZXZpb3VzUGhh
c2UgPT0gQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlOjpBZnRlcjsKKyAgICBib29sIHdh
c0JlZm9yZSA9IG1fcHJldmlvdXNQaGFzZSA9PSBBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhh
c2U6OkJlZm9yZTsKKyAgICBib29sIHdhc0lkbGUgPSBtX3ByZXZpb3VzUGhhc2UgPT0gQW5pbWF0
aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlOjpJZGxlOworCisgICAgYm9vbCBpc0FjdGl2ZSA9IGN1
cnJlbnRQaGFzZSA9PSBBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhhc2U6OkFjdGl2ZTsKKyAg
ICBib29sIGlzQWZ0ZXIgPSBjdXJyZW50UGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6
OlBoYXNlOjpBZnRlcjsKKyAgICBib29sIGlzQmVmb3JlID0gY3VycmVudFBoYXNlID09IEFuaW1h
dGlvbkVmZmVjdFJlYWRPbmx5OjpQaGFzZTo6QmVmb3JlOworICAgIGJvb2wgaXNJZGxlID0gY3Vy
cmVudFBoYXNlID09IEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5OjpQaGFzZTo6SWRsZTsKKworICAg
IGF1dG8qIGVmZmVjdFRpbWluZyA9IGFuaW1hdGlvbkVmZmVjdCA/IGFuaW1hdGlvbkVmZmVjdC0+
dGltaW5nKCkgOiBudWxscHRyOworICAgIGF1dG8gaW50ZXJ2YWxTdGFydCA9IGVmZmVjdFRpbWlu
ZyA/IHN0ZDo6bWF4KDBfcywgc3RkOjptaW4oLWVmZmVjdFRpbWluZy0+ZGVsYXkoKSwgZWZmZWN0
VGltaW5nLT5hY3RpdmVEdXJhdGlvbigpKSkgOiAwX3M7CisgICAgYXV0byBpbnRlcnZhbEVuZCA9
IGVmZmVjdFRpbWluZyA/IHN0ZDo6bWF4KDBfcywgc3RkOjptaW4oZWZmZWN0VGltaW5nLT5lbmRU
aW1lKCkgLSBlZmZlY3RUaW1pbmctPmRlbGF5KCksIGVmZmVjdFRpbWluZy0+YWN0aXZlRHVyYXRp
b24oKSkpIDogMF9zOworCisgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4odGhpcykpIHsKKyAgICAg
ICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1hbmltYXRpb25zLTIvI2V2ZW50cwor
ICAgICAgICBpZiAoKHdhc0lkbGUgfHwgd2FzQmVmb3JlKSAmJiBpc0FjdGl2ZSkKKyAgICAgICAg
ICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkuYW5pbWF0aW9uc3RhcnRFdmVudCwgaW50
ZXJ2YWxTdGFydCk7CisgICAgICAgIGVsc2UgaWYgKCh3YXNJZGxlIHx8IHdhc0JlZm9yZSkgJiYg
aXNBZnRlcikgeworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS5hbmlt
YXRpb25zdGFydEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgICAgIGVucXVldWVET01F
dmVudChldmVudE5hbWVzKCkuYW5pbWF0aW9uZW5kRXZlbnQsIGludGVydmFsRW5kKTsKKyAgICAg
ICAgfSBlbHNlIGlmICh3YXNBY3RpdmUgJiYgaXNCZWZvcmUpCisgICAgICAgICAgICBlbnF1ZXVl
RE9NRXZlbnQoZXZlbnROYW1lcygpLmFuaW1hdGlvbmVuZEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsK
KyAgICAgICAgZWxzZSBpZiAod2FzQWN0aXZlICYmIGlzQWN0aXZlICYmIG1fcHJldmlvdXNJdGVy
YXRpb24gIT0gaXRlcmF0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGl0ZXJhdGlvbkJvdW5kYXJ5
ID0gaXRlcmF0aW9uOworICAgICAgICAgICAgaWYgKG1fcHJldmlvdXNJdGVyYXRpb24gPiBpdGVy
YXRpb24pCisgICAgICAgICAgICAgICAgaXRlcmF0aW9uQm91bmRhcnkrKzsKKyAgICAgICAgICAg
IGF1dG8gZWxhcHNlZFRpbWUgPSBlZmZlY3RUaW1pbmcgPyBlZmZlY3RUaW1pbmctPml0ZXJhdGlv
bkR1cmF0aW9uKCkgKiAoaXRlcmF0aW9uQm91bmRhcnkgLSBlZmZlY3RUaW1pbmctPml0ZXJhdGlv
blN0YXJ0KCkpIDogMF9zOworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMo
KS5hbmltYXRpb25pdGVyYXRpb25FdmVudCwgZWxhcHNlZFRpbWUpOworICAgICAgICB9IGVsc2Ug
aWYgKHdhc0FjdGl2ZSAmJiBpc0FmdGVyKQorICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2
ZW50TmFtZXMoKS5hbmltYXRpb25lbmRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICBlbHNl
IGlmICh3YXNBZnRlciAmJiBpc0FjdGl2ZSkKKyAgICAgICAgICAgIGVucXVldWVET01FdmVudChl
dmVudE5hbWVzKCkuYW5pbWF0aW9uc3RhcnRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICBl
bHNlIGlmICh3YXNBZnRlciAmJiBpc0JlZm9yZSkgeworICAgICAgICAgICAgZW5xdWV1ZURPTUV2
ZW50KGV2ZW50TmFtZXMoKS5hbmltYXRpb25zdGFydEV2ZW50LCBpbnRlcnZhbEVuZCk7CisgICAg
ICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLmFuaW1hdGlvbmVuZEV2ZW50LCBp
bnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgfSBlbHNlIGlmICgoIXdhc0lkbGUgJiYgIXdhc0FmdGVy
KSAmJiBpc0lkbGUpCisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLmFu
aW1hdGlvbmNhbmNlbEV2ZW50LCAwX3MpOworICAgIH0gZWxzZSBpZiAoaXM8Q1NTVHJhbnNpdGlv
bj4odGhpcykpIHsKKyAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFu
c2l0aW9ucy0yLyN0cmFuc2l0aW9uLWV2ZW50cworICAgICAgICBpZiAod2FzSWRsZSAmJiAoaXNQ
ZW5kaW5nIHx8IGlzQmVmb3JlKSkKKyAgICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5h
bWVzKCkudHJhbnNpdGlvbnJ1bkV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgZWxzZSBp
ZiAod2FzSWRsZSAmJiBpc0FjdGl2ZSkgeworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2
ZW50TmFtZXMoKS50cmFuc2l0aW9ucnVuRXZlbnQsIGludGVydmFsU3RhcnQpOworICAgICAgICAg
ICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uc3RhcnRFdmVudCwgaW50
ZXJ2YWxTdGFydCk7CisgICAgICAgIH0gZWxzZSBpZiAod2FzSWRsZSAmJiBpc0FmdGVyKSB7Cisg
ICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRpb25ydW5FdmVu
dCwgaW50ZXJ2YWxTdGFydCk7CisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1l
cygpLnRyYW5zaXRpb25zdGFydEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgICAgIGVu
cXVldWVET01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbmVuZEV2ZW50LCBpbnRlcnZhbEVu
ZCk7CisgICAgICAgIH0gZWxzZSBpZiAoKG1fd2FzUGVuZGluZyB8fCB3YXNCZWZvcmUpICYmIGlz
QWN0aXZlKQorICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFuc2l0
aW9uc3RhcnRFdmVudCwgaW50ZXJ2YWxTdGFydCk7CisgICAgICAgIGVsc2UgaWYgKChtX3dhc1Bl
bmRpbmcgfHwgd2FzQmVmb3JlKSAmJiBpc0FmdGVyKSB7CisgICAgICAgICAgICBlbnF1ZXVlRE9N
RXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRpb25zdGFydEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsK
KyAgICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbmVuZEV2
ZW50LCBpbnRlcnZhbEVuZCk7CisgICAgICAgIH0gZWxzZSBpZiAod2FzQWN0aXZlICYmIGlzQWZ0
ZXIpCisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRpb25l
bmRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICBlbHNlIGlmICh3YXNBY3RpdmUgJiYgaXNC
ZWZvcmUpCisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRp
b25lbmRFdmVudCwgaW50ZXJ2YWxTdGFydCk7CisgICAgICAgIGVsc2UgaWYgKHdhc0FmdGVyICYm
IGlzQWN0aXZlKQorICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFu
c2l0aW9uc3RhcnRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICBlbHNlIGlmICh3YXNBZnRl
ciAmJiBpc0JlZm9yZSkgeworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMo
KS50cmFuc2l0aW9uc3RhcnRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICAgICAgZW5xdWV1
ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uZW5kRXZlbnQsIGludGVydmFsU3RhcnQp
OworICAgICAgICB9IGVsc2UgaWYgKCghd2FzSWRsZSAmJiAhd2FzQWZ0ZXIpICYmIGlzSWRsZSkK
KyAgICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbmNhbmNl
bEV2ZW50LCAwX3MpOworICAgIH0KKworICAgIG1fd2FzUGVuZGluZyA9IGlzUGVuZGluZzsKKyAg
ICBtX3ByZXZpb3VzUGhhc2UgPSBjdXJyZW50UGhhc2U7CisgICAgbV9wcmV2aW91c0l0ZXJhdGlv
biA9IGl0ZXJhdGlvbjsKK30KKwordm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURP
TUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBTZWNvbmRzIGVsYXBzZWRUaW1l
KQoreworICAgIGF1dG8gdGltZSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGVsYXBz
ZWRUaW1lKSAvIDEwMDA7CisgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4odGhpcykpCisgICAgICAg
IG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5
cGUsIGRvd25jYXN0PENTU0FuaW1hdGlvbj4odGhpcyktPmFuaW1hdGlvbk5hbWUoKSwgdGltZSkp
OworICAgIGVsc2UgaWYgKGlzPENTU1RyYW5zaXRpb24+KHRoaXMpKQorICAgICAgICBtX2V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93
bmNhc3Q8Q1NTVHJhbnNpdGlvbj4odGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLCB0aW1lLCBQ
c2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX3RhcmdldC5wc2V1ZG9J
ZCgpKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCmluZGV4IDdlYTI4NWJjMWY5ZjcwOGIw
NDA2YmEzOTA2NDY1ZDdlNzY2NmExN2UuLjg1MjQ5MDVmOGE3OWJhZTUzYjMyYWMzYjU3MmVhMDc2
ZjliNWEyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFu
aW1hdGlvbi5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
QW5pbWF0aW9uRWZmZWN0UmVhZE9ubHkuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIApAQCAt
MzUsMjIgKzM3LDMwIEBAIGNsYXNzIEVsZW1lbnQ7CiAKIGNsYXNzIERlY2xhcmF0aXZlQW5pbWF0
aW9uIDogcHVibGljIFdlYkFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgfkRlY2xhcmF0aXZlQW5p
bWF0aW9uKCkgPSBkZWZhdWx0OworICAgIH5EZWNsYXJhdGl2ZUFuaW1hdGlvbigpOwogCiAgICAg
Ym9vbCBpc0RlY2xhcmF0aXZlQW5pbWF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNraW5nQW5pbWF0aW9uOyB9CiAgICAgdm9pZCBzZXRCYWNraW5nQW5pbWF0aW9uKGNv
bnN0IEFuaW1hdGlvbiYpOworICAgIHZvaWQgaW52YWxpZGF0ZURPTUV2ZW50cygpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgRGVjbGFyYXRpdmVBbmltYXRpb24oRG9jdW1lbnQmLCBjb25zdCBBbmltYXRp
b24mKTsKKyAgICBEZWNsYXJhdGl2ZUFuaW1hdGlvbihFbGVtZW50JiwgY29uc3QgQW5pbWF0aW9u
Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBFbGVtZW50Jik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKTsKIAogcHJp
dmF0ZToKLSAgICBSZWY8QW5pbWF0aW9uPiBtX2JhY2tpbmdBbmltYXRpb247CisgICAgQW5pbWF0
aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlIHBoYXNlV2l0aG91dEVmZmVjdCgpIGNvbnN0OworICAg
IHZvaWQgZW5xdWV1ZURPTUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIFNlY29uZHMpOwogCisg
ICAgRWxlbWVudCYgbV90YXJnZXQ7CisgICAgUmVmPEFuaW1hdGlvbj4gbV9iYWNraW5nQW5pbWF0
aW9uOworICAgIGJvb2wgbV93YXNQZW5kaW5nIHsgZmFsc2UgfTsKKyAgICBBbmltYXRpb25FZmZl
Y3RSZWFkT25seTo6UGhhc2UgbV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0aW9uRWZmZWN0UmVhZE9u
bHk6OlBoYXNlOjpJZGxlIH07CisgICAgZG91YmxlIG1fcHJldmlvdXNJdGVyYXRpb247CisgICAg
R2VuZXJpY0V2ZW50UXVldWUgbV9ldmVudFF1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCmlu
ZGV4IDUyNTgxM2MzNjI2ZmNjY2QzYWJhODRjMTY0ZTU0MjI0MjUzZjI2ZDQuLjQxMWVmM2M0OTYy
ZDVmZmQwNmMyNWVhZDI2YzQzOTY0NTVmODY2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJEZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkRpc3BsYXlS
ZWZyZXNoTW9uaXRvci5oIgogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTA5LDYgKzExMCwxMiBAQCB2b2lkIERvY3Vt
ZW50VGltZWxpbmU6OnNjaGVkdWxlSW52YWxpZGF0aW9uVGFza0lmTmVlZGVkKCkKIAogdm9pZCBE
b2N1bWVudFRpbWVsaW5lOjpwZXJmb3JtSW52YWxpZGF0aW9uVGFzaygpCiB7CisgICAgLy8gTm93
IHRoYXQgdGhlIHRpbWluZyBtb2RlbCBoYXMgY2hhbmdlZCB3ZSBjYW4gc2VlIGlmIHRoZXJlIGFy
ZSBET00gZXZlbnRzIHRvIGRpc3BhdGNoIGZvciBkZWNsYXJhdGl2ZSBhbmltYXRpb25zLgorICAg
IGZvciAoYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9ucygpKSB7CisgICAgICAgIGlmIChpczxE
ZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSkKKyAgICAgICAgICAgIGRvd25jYXN0PERl
Y2xhcmF0aXZlQW5pbWF0aW9uPigqYW5pbWF0aW9uKS5pbnZhbGlkYXRlRE9NRXZlbnRzKCk7Cisg
ICAgfQorCiAgICAgdXBkYXRlQW5pbWF0aW9uU2NoZWR1bGUoKTsKICAgICBtX2NhY2hlZEN1cnJl
bnRUaW1lID0gc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggZWM2
MjZmMTE2MGIxOGQ3MWE3MDE5MjIxYzlhMmJhNmVlMDY5YmJkOS4uMjc1YjFjYTJjMWExNjk5NTQ5
NTM4Y2U3YzZjM2ZiZjIzMmQ4M2RmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC01OSw2
ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhhZGRzb3VyY2VidWZmZXIp
IFwKICAgICBtYWNybyhhZGRzdHJlYW0pIFwKICAgICBtYWNybyhhZGR0cmFjaykgXAorICAgIG1h
Y3JvKGFuaW1hdGlvbmNhbmNlbCkgXAogICAgIG1hY3JvKGFuaW1hdGlvbmVuZCkgXAogICAgIG1h
Y3JvKGFuaW1hdGlvbml0ZXJhdGlvbikgXAogICAgIG1hY3JvKGFuaW1hdGlvbnN0YXJ0KSBcCkBA
IC0yNDksNyArMjUwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyh0b3VjaG1v
dmUpIFwKICAgICBtYWNybyh0b3VjaHN0YXJ0KSBcCiAgICAgbWFjcm8odHJhY2spIFwKKyAgICBt
YWNybyh0cmFuc2l0aW9uY2FuY2VsKSBcCiAgICAgbWFjcm8odHJhbnNpdGlvbmVuZCkgXAorICAg
IG1hY3JvKHRyYW5zaXRpb25ydW4pIFwKKyAgICBtYWNybyh0cmFuc2l0aW9uc3RhcnQpIFwKICAg
ICBtYWNybyh1bmhhbmRsZWRyZWplY3Rpb24pIFwKICAgICBtYWNybyh1bmxvYWQpIFwKICAgICBt
YWNybyh1bm11dGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVu
dEhhbmRsZXJzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlk
bAppbmRleCBhOGQzNDcwNWZlNmVlOGE0NDI5NjBmMmYzZDA1NGRiZTJkMTE1NWRlLi41YzQ4NzEx
NzJjMzU4YzYyMGMwZjBhY2MxOGM2YzU1YzhjOTM1ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vR2xvYmFsRXZlbnRIYW5kbGVycy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCkBAIC05NywxNSArOTcsMTUgQEAKIAogICAgIC8vIEV4
dGVuc2lvbnMgZnJvbSBDU1MgVHJhbnNpdGlvbnMgQVBJIChodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3NzLXRyYW5zaXRpb25zLyNpbnRlcmZhY2UtZ2xvYmFsZXZlbnRoYW5kbGVycy1pZGwpLgog
ICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb250cmFuc2l0aW9uZW5kOwotICAgIC8vIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb250cmFuc2l0aW9ucnVuOwotICAgIC8vIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb250cmFuc2l0aW9uc3RhcnQ7Ci0gICAgLy8gYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnRyYW5zaXRpb25jYW5jZWw7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRyYW5z
aXRpb25ydW47CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRyYW5zaXRpb25zdGFydDsK
KyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udHJhbnNpdGlvbmNhbmNlbDsKIAogICAgIC8v
IEV2ZW50IGhhbmRsZXJzIGZyb20gQ1NTIEFuaW1hdGlvbnMgQVBJIChodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3NzLWFuaW1hdGlvbnMvI2ludGVyZmFjZS1nbG9iYWxldmVudGhhbmRsZXJzLWlk
bCkuCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFuaW1hdGlvbmVuZDsKICAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9uYW5pbWF0aW9uaXRlcmF0aW9uOwogICAgIGF0dHJpYnV0ZSBF
dmVudEhhbmRsZXIgb25hbmltYXRpb25zdGFydDsKLSAgICAvLyBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9uYW5pbWF0aW9uY2FuY2VsOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25hbmlt
YXRpb25jYW5jZWw7CiAKICAgICAvLyBBZGRpdGlvbnMgdGhhdCBhcmUgbm90IHlldCBwYXJ0IG9m
IHRoZSBzdGFuZGFyZC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgppbmRleCAyMzYzZjczMTNhYzVmZjAzYjIwYTkwNDMxMDY4YzdjZjUwZjg0ZDJmLi42YTNiNGEy
ZWNhMDRlNDkzYmU4Mjc5Y2I5NWFhMzIzODNhMWM0MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTkzLDYgKzE5Myw3IEBAIG9uYWJvcnQKIG9uYW5p
bWF0aW9uc3RhcnQKIG9uYW5pbWF0aW9uaXRlcmF0aW9uCiBvbmFuaW1hdGlvbmVuZAorb25hbmlt
YXRpb25jYW5jZWwKIG9uYXV0b2NvbXBsZXRlCiBvbmF1dG9jb21wbGV0ZWVycm9yCiBvbmJlZm9y
ZWNvcHkKQEAgLTI4Miw3ICsyODMsMTAgQEAgb250b3VjaHN0YXJ0CiBvbnRvdWNobW92ZQogb250
b3VjaGVuZAogb250b3VjaGNhbmNlbAorb250cmFuc2l0aW9uY2FuY2VsCiBvbnRyYW5zaXRpb25l
bmQKK29udHJhbnNpdGlvbnJ1bgorb250cmFuc2l0aW9uc3RhcnQKIG9udW5sb2FkCiBvbnZvbHVt
ZWNoYW5nZQogb253YWl0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGIx
YWRkMjRmM2I3YTc4MWNhZDlhNDQwMjRjYjgxNWVhMmI5M2ExZDguLjFiMTc2OGU4OTlhZWQ1ZWNi
ZTZhMWIyZGVjNThlN2MwYzc0ZWY2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CkBAIC0yMjksNiArMjI5LDcgQEAgSFRNTEVsZW1lbnQ6OkV2ZW50SGFuZGxlck5hbWVNYXAgSFRN
TEVsZW1lbnQ6OmNyZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXAoKQogICAgICAgICAmb25hbmltYXRp
b25lbmRBdHRyLmdldCgpLAogICAgICAgICAmb25hbmltYXRpb25pdGVyYXRpb25BdHRyLmdldCgp
LAogICAgICAgICAmb25hbmltYXRpb25zdGFydEF0dHIuZ2V0KCksCisgICAgICAgICZvbmFuaW1h
dGlvbmNhbmNlbEF0dHIuZ2V0KCksCiAgICAgICAgICZvbmF1dG9jb21wbGV0ZUF0dHIuZ2V0KCks
CiAgICAgICAgICZvbmF1dG9jb21wbGV0ZWVycm9yQXR0ci5nZXQoKSwKICAgICAgICAgJm9uYmVm
b3JlY29weUF0dHIuZ2V0KCksCkBAIC0zMDMsNyArMzA0LDEwIEBAIEhUTUxFbGVtZW50OjpFdmVu
dEhhbmRsZXJOYW1lTWFwIEhUTUxFbGVtZW50OjpjcmVhdGVFdmVudEhhbmRsZXJOYW1lTWFwKCkK
ICAgICAgICAgJm9udG91Y2hmb3JjZWNoYW5nZUF0dHIuZ2V0KCksCiAgICAgICAgICZvbnRvdWNo
bW92ZUF0dHIuZ2V0KCksCiAgICAgICAgICZvbnRvdWNoc3RhcnRBdHRyLmdldCgpLAorICAgICAg
ICAmb250cmFuc2l0aW9uY2FuY2VsQXR0ci5nZXQoKSwKICAgICAgICAgJm9udHJhbnNpdGlvbmVu
ZEF0dHIuZ2V0KCksCisgICAgICAgICZvbnRyYW5zaXRpb25ydW5BdHRyLmdldCgpLAorICAgICAg
ICAmb250cmFuc2l0aW9uc3RhcnRBdHRyLmdldCgpLAogICAgICAgICAmb252b2x1bWVjaGFuZ2VB
dHRyLmdldCgpLAogICAgICAgICAmb253YWl0aW5nQXR0ci5nZXQoKSwKICAgICAgICAgJm9ud2Vi
a2l0YmVnaW5mdWxsc2NyZWVuQXR0ci5nZXQoKSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9D
aGFuZ2VMb2cKaW5kZXggNmQzOTA3NzAwOWJiN2E2YmVhMDEzNTNhMDYyOWQ2OTRiYTQ4ZjU5Yi4u
OWZlOWRmZmI5NDJiOTRlNWQ4MGRmODU2MTEyNWUzOGVmODQ1NGUzMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvbW96aWxsYS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0yMSAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgQW5pbWF0aW9u
c10gRGlzcGF0Y2ggRE9NIGV2ZW50cyBmb3IgQ1NTIFRyYW5zaXRpb25zIGFuZCBDU1MgQW5pbWF0
aW9ucyBpbXBsZW1lbnRlZCBhcyBXZWIgQW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29tZSBvZiB0aGUgTW96aWxsYSB0ZXN0cyBubyBs
b25nZXIgdGltZSBvdXQgYW5kIHBhcnRpYWxseSBwYXNzLCBtYXJraW5nIHRoZSBwcm9ncmVzc2lv
bi4KKworICAgICAgICAqIGNzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXN0YXJ0dGltZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogY3NzLWFuaW1hdGlvbnMvdGVzdF9lbGVtZW50LWdldC1h
bmltYXRpb25zLWV4cGVjdGVkLnR4dDoKKwogMjAxOC0wMy0yMSAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gSW1wb3J0IENTUyBB
bmltYXRpb25zIGFuZCBDU1MgVHJhbnNpdGlvbnMgYXMgV2ViIEFuaW1hdGlvbnMgdGVzdHMgZnJv
bSBNb3ppbGxhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1h
bmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXN0YXJ0dGltZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXN0YXJ0
dGltZS1leHBlY3RlZC50eHQKaW5kZXggNWJmYzRlZjA2YTlhY2NiNDM3Mjc5ZDkwY2FjNjY4Zjlj
YmI3MWMxOC4uNmY0ZjgwM2FlYjBhYWU3Y2QwMzA1NDUzMTFmODdmMWVmZjYzZTdkYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2Fu
aW1hdGlvbi1zdGFydHRpbWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9hbmltYXRpb24tc3RhcnR0aW1lLWV4cGVjdGVk
LnR4dApAQCAtMSwzICsxLDIyIEBACi0jUElEIFVOUkVTUE9OU0lWRSAtIGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCAocGlkIDEzNTQyKQotRkFJTDogVGltZWQgb3V0IHdh
aXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkCisKK1BBU1Mgc3RhcnRUaW1lIG9mIGEg
bmV3bHkgY3JlYXRlZCAocGxheS1wZW5kaW5nKSBhbmltYXRpb24gaXMgdW5yZXNvbHZlZCAKK0ZB
SUwgc3RhcnRUaW1lIG9mIGEgbmV3bHkgY3JlYXRlZCAocGF1c2UtcGVuZGluZykgYW5pbWF0aW9u
IGlzIHVucmVzb2x2ZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2Fu
aW1hdGlvbi5zdGFydFRpbWUnKQorUEFTUyBzdGFydFRpbWUgaXMgcmVzb2x2ZWQgd2hlbiBydW5u
aW5nIAorRkFJTCBzdGFydFRpbWUgaXMgdW5yZXNvbHZlZCB3aGVuIHBhdXNlZCB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnYW5pbWF0aW9uLnJlYWR5JykKK1BBU1Mgc3Rh
cnRUaW1lIHdoaWxlIHBhdXNlLXBlbmRpbmcgYW5kIHBsYXktcGVuZGluZyAKK1BBU1Mgc3RhcnRU
aW1lIHdoaWxlIHBsYXktcGVuZGluZyBmcm9tIGZpbmlzaGVkIHN0YXRlIAorUEFTUyBzdGFydFRp
bWUgd2hpbGUgcGxheS1wZW5kaW5nIGZyb20gZmluaXNoZWQgc3RhdGUgdXNpbmcgZmluaXNoKCkg
CitGQUlMIFBhdXNpbmcgc2hvdWxkIG1ha2UgdGhlIHN0YXJ0VGltZSBiZWNvbWUgbnVsbCBhc3Nl
cnRfdHJ1ZTogQWZ0ZXIgdGhlIGFuaW1hdGlvbiBoYXMgc3RhcnRlZCwgc3RhcnRUaW1lIGlzIGdy
ZWF0ZXIgdGhhbiB0aGUgdGltZSB3aGVuIGl0IHdhcyBzdGFydGVkIGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCitQQVNTIFNhbml0eSB0ZXN0IHRvIGNoZWNrIHJvdW5kLXRyaXBwaW5nIGFzc2lnbmlu
ZyB0byBhIG5ldyBhbmltYXRpb24ncyBzdGFydFRpbWUgCitQQVNTIFNraXBwaW5nIGZvcndhcmQg
dGhyb3VnaCBhbmltYXRpb24gCitQQVNTIFNraXBwaW5nIGJhY2t3YXJkcyB0aHJvdWdoIGFuaW1h
dGlvbiAKK1BBU1MgUmVkdW5kYW50IGNoYW5nZSwgYmVmb3JlIC0+IGFjdGl2ZSwgdGhlbiBiYWNr
IAorUEFTUyBSZWR1bmRhbnQgY2hhbmdlLCBiZWZvcmUgLT4gYWZ0ZXIsIHRoZW4gYmFjayAKK1BB
U1MgUmVkdW5kYW50IGNoYW5nZSwgYWN0aXZlIC0+IGJlZm9yZSwgdGhlbiBiYWNrIAorUEFTUyBS
ZWR1bmRhbnQgY2hhbmdlLCBhY3RpdmUgLT4gYWZ0ZXIsIHRoZW4gYmFjayAKK1BBU1MgUmVkdW5k
YW50IGNoYW5nZSwgYWZ0ZXIgLT4gYmVmb3JlLCB0aGVuIGJhY2sgCitQQVNTIFJlZHVuZGFudCBj
aGFuZ2UsIGFmdGVyIC0+IGFjdGl2ZSwgdGhlbiBiYWNrIAorUEFTUyBTZXR0aW5nIHN0YXJ0VGlt
ZSB0byBudWxsIAorRkFJTCBBbmltYXRpb24uc3RhcnRUaW1lIGFmdGVyIHBhdXNpbmcgYXNzZXJ0
X2VxdWFsczogQW5pbWF0aW9uLnBsYXlTdGF0ZSBpcyAicGF1c2VkIiBhZnRlciBwYXVzZSgpIGNh
bGwgZXhwZWN0ZWQgInBhdXNlZCIgYnV0IGdvdCAicnVubmluZyIKK1BBU1MgQW5pbWF0aW9uLnN0
YXJ0VGltZSBhZnRlciBjYW5jZWxsaW5nIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25z
L3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKaW5kZXggOTk2YzY5Mjlk
NjlkMzQxOGU4MzVhNjA0ZTIxY2I3NTBkMTdjM2JmNS4uYTBmNzBkYmE5MzlmMjMzY2QyN2MzNDZj
ZDBkMmE4ODhiZjQ4MWUxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9jc3MtYW5pbWF0aW9ucy90ZXN0X2VsZW1lbnQtZ2V0LWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9l
bGVtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDI0IEBACi0jUElE
IFVOUkVTUE9OU0lWRSAtIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5EZXZlbG9wbWVudCAo
cGlkIDEzNTUxKQotRkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUg
Y2FsbGVkCisKK1BBU1MgZ2V0QW5pbWF0aW9ucyBmb3Igbm9uLWFuaW1hdGVkIGNvbnRlbnQgCitQ
QVNTIGdldEFuaW1hdGlvbnMgZm9yIENTUyBBbmltYXRpb25zIAorUEFTUyBnZXRBbmltYXRpb25z
IHJldHVybnMgQ1NTQW5pbWF0aW9uIG9iamVjdHMgZm9yIENTUyBBbmltYXRpb25zIAorUEFTUyBn
ZXRBbmltYXRpb25zIGZvciBtdWx0aS1wcm9wZXJ0eSBhbmltYXRpb25zIAorRkFJTCBnZXRBbmlt
YXRpb25zIGZvciBib3RoIENTUyBBbmltYXRpb25zIGFuZCBDU1MgVHJhbnNpdGlvbnMgYXQgb25j
ZSBhc3NlcnRfZXF1YWxzOiBnZXRBbmltYXRpb25zIHJldHVybnMgQW5pbWF0aW9ucyBmb3IgYm90
aCBhbmltYXRpb25zIGFuZCB0cmFuc2l0aW9ucyB0aGF0IHJ1biBzaW11bHRhbmVvdXNseSBleHBl
Y3RlZCAyIGJ1dCBnb3QgMQorUEFTUyBnZXRBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9ucyB0
aGF0IGhhdmUgZmluaXNoZWQgCitQQVNTIGdldEFuaW1hdGlvbnMgZm9yIENTUyBBbmltYXRpb25z
IHRoYXQgaGF2ZSBmaW5pc2hlZCBidXQgYXJlIGZvcndhcmRzIGZpbGxpbmcgCitGQUlMIGdldEFu
aW1hdGlvbnMgZm9yIENTUyBBbmltYXRpb25zIHdpdGggYW5pbWF0aW9uLW5hbWU6IG5vbmUgYXNz
ZXJ0X2VxdWFsczogZ2V0QW5pbWF0aW9ucyByZXR1cm5zIGFuIGVtcHR5IHNlcXVlbmNlIGZvciBh
biBlbGVtZW50IHdpdGggYW5pbWF0aW9uLW5hbWU6IG5vbmUgZXhwZWN0ZWQgMCBidXQgZ290IDEK
K0ZBSUwgZ2V0QW5pbWF0aW9ucyBmb3IgQ1NTIEFuaW1hdGlvbnMgd2l0aCBhbmltYXRpb24tbmFt
ZTogbWlzc2luZyBhc3NlcnRfZXF1YWxzOiBnZXRBbmltYXRpb25zIHJldHVybnMgYW4gZW1wdHkg
c2VxdWVuY2UgZm9yIGFuIGVsZW1lbnQgd2l0aCBhbmltYXRpb24tbmFtZTogbWlzc2luZyBleHBl
Y3RlZCAwIGJ1dCBnb3QgMQorRkFJTCBnZXRBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9ucyB3
aGVyZSB0aGUgQGtleWZyYW1lcyBydWxlIGlzIGFkZGVkIGxhdGVyIGFzc2VydF9lcXVhbHM6IGdl
dEFuaW1hdGlvbnMgaW5pdGFsbHkgb25seSByZXR1cm5zIEFuaW1hdGlvbnMgZm9yIENTUyBBbmlt
YXRpb25zIHdob3NlIGFuaW1hdGlvbi1uYW1lIGlzIGZvdW5kIGV4cGVjdGVkIDEgYnV0IGdvdCAy
CitQQVNTIGdldEFuaW1hdGlvbnMgZm9yIENTUyBBbmltYXRpb25zIHdpdGggZHVwbGljYXRlZCBh
bmltYXRpb24tbmFtZSAKK1BBU1MgZ2V0QW5pbWF0aW9ucyBmb3IgQ1NTIEFuaW1hdGlvbnMgd2l0
aCBlbXB0eSBrZXlmcmFtZXMgcnVsZSAKK1BBU1MgZ2V0QW5pbWF0aW9ucyBmb3IgQ1NTIGFuaW1h
dGlvbnMgaW4gZGVsYXkgcGhhc2UgCitQQVNTIGdldEFuaW1hdGlvbnMgZm9yIHplcm8tZHVyYXRp
b24gQ1NTIEFuaW1hdGlvbnMgCitQQVNTIGdldEFuaW1hdGlvbnMgcmV0dXJucyBvYmplY3RzIHdp
dGggdGhlIHNhbWUgaWRlbnRpdHkgCitQQVNTIGdldEFuaW1hdGlvbnMgZm9yIENTUyBBbmltYXRp
b25zIHRoYXQgYXJlIGNhbmNlbGxlZCAKK0ZBSUwgZ2V0QW5pbWF0aW9ucyBmb3IgQ1NTIEFuaW1h
dGlvbnMgZm9sbG93cyBhbmltYXRpb24tbmFtZSBvcmRlciBhc3NlcnRfZXF1YWxzOiBhbmltYXRp
b24gb3JkZXIgYWZ0ZXIgcHJlcGVuZGluZyB0byBsaXN0IGV4cGVjdGVkICJhbmltMSIgYnV0IGdv
dCAiYW5pbTIiCitQQVNTIFRlc3QgQW5pbWF0aW9uRmlsdGVyeyBzdWJ0cmVlOiBmYWxzZSB9IHdp
dGggc2luZ2xlIGVsZW1lbnQgCitGQUlMIFRlc3QgQW5pbWF0aW9uRmlsdGVyeyBzdWJ0cmVlOiB0
cnVlIH0gd2l0aCBzaW5nbGUgZWxlbWVudCBhc3NlcnRfZXF1YWxzOiBnZXRBbmltYXRpb25zKHsg
c3VidHJlZTogdHJ1ZSB9KSBzaG91bGQgcmV0dXJuIGFuaW1hdGlvbnMgb24gcHNldWRvLWVsZW1l
bnRzIGV4cGVjdGVkIDMgYnV0IGdvdCAxCitQQVNTIFRlc3QgQW5pbWF0aW9uRmlsdGVyeyBzdWJ0
cmVlOiBmYWxzZSB9IHdpdGggZWxlbWVudCB0aGF0IGhhcyBhIGNoaWxkIAorRkFJTCBUZXN0IEFu
aW1hdGlvbkZpbHRlcnsgc3VidHJlZTogdHJ1ZSB9IHdpdGggZWxlbWVudCB0aGF0IGhhcyBhIGNo
aWxkIGFzc2VydF9lcXVhbHM6IFNob3VsZCBmaW5kIGFsbCBlbGVtZW50cywgcGVzdWRvLWVsZW1l
bnRzIHRoYXQgcGFyZW50IGhhcyBleHBlY3RlZCA2IGJ1dCBnb3QgMQorRkFJTCBUZXN0IEFuaW1h
dGlvbkZpbHRlcnsgc3VidHJlZTogdHJ1ZSB9IHdpdGggZWxlbWVudCB0aGF0IGhhcyBtYW55IGRl
c2NlbmRhbnQgYXNzZXJ0X2VxdWFsczogU2hvdWxkIGZpbmQgYWxsIGRlc2NlbmRhbnRzIG9mIHRo
ZSBlbGVtZW50IGV4cGVjdGVkIDUgYnV0IGdvdCAxCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336216</attachid>
            <date>2018-03-21 12:00:48 -0700</date>
            <delta_ts>2018-03-21 12:01:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183781-20180321200047.patch</filename>
            <type>text/plain</type>
            <size>29699</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5ODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIxMWFiMTk0ODBmZjUz
NGVjNzY2ZGJkZGIyMmViNGMwODA0MTRkYy4uZWIxMTZhMTc3NWQ1MGZkZWM1MzgyODI5MWYxNDQ3
MDE1OGM2MjRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAzLTIxICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBEaXNwYXRjaCBET00gZXZlbnRzIGZvciBDU1MgVHJhbnNpdGlvbnMgYW5kIENTUyBBbmltYXRp
b25zIGltcGxlbWVudGVkIGFzIFdlYiBBbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCB3ZSd2ZSBpbXBsZW1lbnRlZCBDU1Mg
QW5pbWF0aW9ucyBhbmQgQ1NTIFRyYW5zaXRpb25zIGFzIFdlYiBBbmltYXRpb25zICh3ZWJraXQu
b3JnL2IvMTgzNTA0KSB3ZSBjYW4gZGlzcGF0Y2ggRE9NIGV2ZW50cworICAgICAgICBmb3IgdGFy
Z2V0cyBvZiBEZWNsYXJhdGl2ZUFuaW1hdGlvbiBvYmplY3RzLiBUbyBkbyB0aGF0LCB3ZSBhZGQg
YSBuZXcgaW52YWxpZGF0ZURPTUV2ZW50cygpIG1ldGhvZCBvbiBEZWNsYXJhdGl2ZUFuaW1hdGlv
bnMgd2hpY2gKKyAgICAgICAgaXMgY2FsbGVkIHdoZW4gdGhlIHRpbWVyIHNjaGVkdWxlZCBhZnRl
ciB0aGUgdGltaW5nIG1vZGVsIGhhcyBiZWVuIGludmFsaWRhdGVkIGZpcmVzIGluIERvY3VtZW50
VGltZWxpbmU6OnBlcmZvcm1JbnZhbGlkYXRpb25UYXNrKCkuCisgICAgICAgIFdoZW4gd2UgY2hl
Y2sgZm9yIERPTSBldmVudHMgdG8gZGlzcGF0Y2gsIHdlIGxvb2sgYXQgdGhlIGxhc3QgcmVjb3Jk
ZWQgcGhhc2UgYW5kIGl0ZXJhdGlvbiBhbmQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHN0YXRlIG9m
IHRoZQorICAgICAgICBhbmltYXRpb24gaGFzIGNoYW5nZWQuIFdlIHVzZSBhIEdlbmVyaWNFdmVu
dFF1ZXVlIHRvIGVucXVldWUgdGhlIGV2ZW50cyBzdWNoIHRoYXQgdGhleSBhcmUgZGlzcGF0Y2hl
ZCBhc3luY2hyb25vdXNseSBhdCBhIG1vbWVudAorICAgICAgICB3aGVuIGl0IGlzIHNhZmUgdG8g
ZXZhbHVhdGUgc2NyaXB0LgorCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdFJl
YWRPbmx5Lmg6IE1ha2UgY3VycmVudEl0ZXJhdGlvbigpIHB1YmxpYyBzaW5jZSB3ZSBub3cgbmVl
ZCBpdCBpbiBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cygpLgorICAg
ICAgICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
QW5pbWF0aW9uOjpjcmVhdGUpOiBQYXNzIHRoZSBhbmltYXRpb24gdGFyZ2V0IHRvIHRoZSBjb25z
dHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Fu
aW1hdGlvbjo6Q1NTQW5pbWF0aW9uKTogUGFzcyB0aGUgYW5pbWF0aW9uIHRhcmdldCB0byB0aGUg
c3VwZXJjbGFzcyBpbnN0ZWFkIG9mIGl0cyBkb2N1bWVudC4KKyAgICAgICAgKiBhbmltYXRpb24v
Q1NTQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVHJhbnNpdGlvbjo6Y3JlYXRlKTogUGFzcyB0aGUgYW5pbWF0
aW9uIHRhcmdldCB0byB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBpdHMgZG9jdW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NUcmFuc2l0aW9uOjpDU1NUcmFuc2l0aW9uKTogUGFzcyB0aGUg
YW5pbWF0aW9uIHRhcmdldCB0byB0aGUgc3VwZXJjbGFzcyBpbnN0ZWFkIG9mIGl0cyBkb2N1bWVu
dC4KKyAgICAgICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oOgorICAgICAgICAqIGFuaW1h
dGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRpb24pOiBFeHBlY3QgYW4gRWxlbWVudCBp
bnN0ZWFkIG9mIGEgRG9jdW1lbnQgYW5kIHVzZSB0aGF0IGVsZW1lbnQgYXMgdGhlIHRhcmdldCBv
ZiB0aGUKKyAgICAgICAgR2VuZXJpY0V2ZW50UXVldWUgdGhhdCB3ZSBpbml0aWFsaXplLiBXZSBh
bHNvIHJlZ2lzdGVyIHRoaXMgZWxlbWVudCBhcyBvdXIgbV90YXJnZXQuCisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6fkRlY2xhcmF0aXZlQW5pbWF0aW9uKTogQ2xvc2Ug
dGhlIEdlbmVyaWNFdmVudFF1ZXVlIG1lbWJlciB1cG9uIGRlc3RydWN0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUpOiBXZSBuZWVkIHRvIGNh
bGwgcGF1c2UoKSBmb3IgZGVjbGFyYXRpdmUgYW5pbWF0aW9ucyB0aGF0IGFyZW4ndCBwbGF5aW5n
IHNvIHRoYXQgdGhlIGFuaW1hdGlvbidzCisgICAgICAgIHBsYXlTdGF0ZSBpcyBzZXQgY29ycmVj
dGx5IGFuZCB0aGUgYW5pbWF0aW9uIGlzIG5vdCBpZGxlLgorICAgICAgICAoV2ViQ29yZTo6RGVj
bGFyYXRpdmVBbmltYXRpb246OnBoYXNlV2l0aG91dEVmZmVjdCBjb25zdCk6IEJlY2F1c2Ugd2Ug
bWF5IG5lZWQgdG8gZ2V0IGFuIGFuaW1hdGlvbidzIGN1cnJlbnQgcGhhc2UgaW4gaW52YWxpZGF0
ZURPTUV2ZW50cygpCisgICAgICAgIGFmdGVyIGFuIGFuaW1hdGlvbidzIGVmZmVjdCBoYXMgYmVl
biByZW1vdmVkLCB3ZSBwcm92aWRlIGFuIGFsdGVybmF0ZSB3YXkgdG8gY29tcHV0ZSB0aGUgcGhh
c2UganVzdCBieSBsb29raW5nIGF0IHRoZSBhbmltYXRpb24ncyBjdXJyZW50IHRpbWUuCisgICAg
ICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW52YWxpZGF0ZURPTUV2ZW50cyk6
IEJhc2VkIG9uIHRoZSBwcmV2aW91cyBhbmQgY3VycmVudCBwZW5kaW5nIHN0YXRlLCBpdGVyYXRp
b24gYW5kIHBoYXNlLCB3ZSBlbnF1ZXVlIGFuaW1hdGlvbgorICAgICAgICBhbmQgdHJhbnNpdGlv
biBET00gZXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgQ1NTIEFuaW1hdGlvbnMgTGV2ZWwgMiBh
bmQgQ1NTIFRyYW5zaXRpb25zIExldmVsIDIgc3BlY2lmaWNhdGlvbnMuCisgICAgICAgIChXZWJD
b3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KTogRW5xdWV1ZSBhbiBl
dmVudCBvbiB0aGUgR2VuZXJpY0V2ZW50UXVldWUgYmFzZWQgb24gdGhlIGFuaW1hdGlvbiB0eXBl
LgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oOgorICAgICAgICAq
IGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGltZWxpbmU6OnBlcmZvcm1JbnZhbGlkYXRpb25UYXNrKTogV2UgY2FsbCBpbnZhbGlkYXRl
RE9NRXZlbnRzKCkgb24gYWxsIGRlY2xhcmF0aXZlIGFuaW1hdGlvbnMgcmVnaXN0ZXJlZCB3aXRo
IHRoaXMgdGltZWxpbmUKKyAgICAgICAgbm93IHRoYXQgdGhlIHRpbWluZyBtb2RlbCBoYXMgYmVl
biBpbnZhbGlkYXRlZC4KKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOiBBZGQgdGhlIG5hbWVz
IG9mIG5ld2x5LWltcGxlbWVudGVkIGV2ZW50cyAoYW5pbWF0aW9uY2FuY2VsLCB0cmFuc2l0aW9u
Y2FuY2VsLCB0cmFuc2l0aW9ucnVuIGFuZCB0cmFuc2l0aW9uc3RhcnQpLgorICAgICAgICAqIGRv
bS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbDogQWRkIG5ldyBhdHRyaWJ1dGUtYmFzZWQgZXZlbnQg
aGFuZGxlcnMgZm9yIHRoZSBuZXdseS1pbXBsZW1lbnRlZCBldmVudHMuCisgICAgICAgICogaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IEFkZCBuZXcgYXR0cmlidXRlLWJhc2VkIGV2ZW50IGhh
bmRsZXJzIGZvciB0aGUgbmV3bHktaW1wbGVtZW50ZWQgZXZlbnRzLgorICAgICAgICAqIGh0bWwv
SFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNyZWF0ZUV2
ZW50SGFuZGxlck5hbWVNYXApOiBBZGQgbmV3IGF0dHJpYnV0ZS1iYXNlZCBldmVudCBoYW5kbGVy
cyBmb3IgdGhlIG5ld2x5LWltcGxlbWVudGVkIGV2ZW50cy4KKwogMjAxOC0wMy0yMSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nvb3JkR3JhcGhpY3Nd
IFRyYWNrIGRpcnR5IHJlY3RzIHRoYXQgbmVlZCB1cGRhdGUgaW4gQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZm
ZWN0UmVhZE9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3RS
ZWFkT25seS5oCmluZGV4IDk4YmRlODRhZWE5OTdhMDQyMmFiNDhlYjg5OWU5ZWQwMjA1MTFkYzgu
LmJiNTkyZjlhNjU4NjBmZWRhYWFlNzQyZDBiN2FmNzk4ZGVjMTk4M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3RSZWFkT25seS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3RSZWFkT25seS5oCkBAIC01Myw2
ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IGxvY2FsVGltZSgp
IGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gYWN0aXZlVGltZSgpIGNvbnN0Owog
ICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBpdGVyYXRpb25Qcm9ncmVzcygpIGNvbnN0OworICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50SXRlcmF0aW9uKCkgY29uc3Q7CiAKICAgICBl
bnVtIGNsYXNzIFBoYXNlIHsgQmVmb3JlLCBBY3RpdmUsIEFmdGVyLCBJZGxlIH07CiAgICAgUGhh
c2UgcGhhc2UoKSBjb25zdDsKQEAgLTc2LDcgKzc3LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBvdmVyYWxsUHJvZ3Jlc3MoKSBjb25zdDsKICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gc2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MoKSBjb25zdDsKLSAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gY3VycmVudEl0ZXJhdGlvbigpIGNvbnN0OwogICAgIEFuaW1hdGlvbkVm
ZmVjdFJlYWRPbmx5OjpDb21wdXRlZERpcmVjdGlvbiBjdXJyZW50RGlyZWN0aW9uKCkgY29uc3Q7
CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpcmVjdGVkUHJvZ3Jlc3MoKSBjb25zdDsKICAg
ICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdHJhbnNmb3JtZWRQcm9ncmVzcygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAppbmRleCA4MmY1MTMwMjYxYWZl
M2I5Nzg5MDgwZjBiMjcwNDJiYWIxYTIxMGUwLi44NzNkYmMwNzRhNGJkZGRjOWFjOWEwNTgwNGU1
YTkwYmRmODljOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5p
bWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNw
cApAQCAtMzMsMTQgKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmPENTU0FuaW1h
dGlvbj4gQ1NTQW5pbWF0aW9uOjpjcmVhdGUoRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBBbmltYXRp
b24mIGJhY2tpbmdBbmltYXRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3
IENTU0FuaW1hdGlvbih0YXJnZXQuZG9jdW1lbnQoKSwgYmFja2luZ0FuaW1hdGlvbikpOworICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NBbmltYXRpb24odGFyZ2V0LCBiYWNraW5n
QW5pbWF0aW9uKSk7CiAgICAgcmVzdWx0LT5tX2FuaW1hdGlvbk5hbWUgPSBiYWNraW5nQW5pbWF0
aW9uLm5hbWUoKTsKICAgICByZXN1bHQtPmluaXRpYWxpemUodGFyZ2V0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1DU1NBbmltYXRpb246OkNTU0FuaW1hdGlvbihEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKLSAgICA6IERlY2xhcmF0aXZl
QW5pbWF0aW9uKGRvY3VtZW50LCBiYWNraW5nQW5pbWF0aW9uKQorQ1NTQW5pbWF0aW9uOjpDU1NB
bmltYXRpb24oRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0
aW9uKQorICAgIDogRGVjbGFyYXRpdmVBbmltYXRpb24oZWxlbWVudCwgYmFja2luZ0FuaW1hdGlv
bikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1h
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCmluZGV4IDEw
MWI1OTNjYTRkNWU5NDgyY2EwNGFhYjM2MGNhYmNmM2VmYzFlZjcuLmQ0NjgzYzdjYzAwYjA3ZWY3
YjI4MzZiZWI4NmI5MjM0N2I4NGZiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9DU1NBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5p
bWF0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3luY1Byb3Bl
cnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIENTU0Fu
aW1hdGlvbihEb2N1bWVudCYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIENTU0FuaW1hdGlvbihF
bGVtZW50JiwgY29uc3QgQW5pbWF0aW9uJik7CiAKICAgICBTdHJpbmcgbV9hbmltYXRpb25OYW1l
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKaW5kZXggOTdm
YWQzZTg1MGQzNTRiZjY0ODQ0MWY2YzcyNzQzNjA5MDg2M2FiNy4uMmRlMmViYzA2ODY0YTcyNWQy
MGU0NDZlNzVlYzVmOGY1MjBlNmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0NTU1RyYW5zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NU
cmFuc2l0aW9uLmNwcApAQCAtMzQsMTUgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UmVmPENTU1RyYW5zaXRpb24+IENTU1RyYW5zaXRpb246OmNyZWF0ZShFbGVtZW50JiB0YXJnZXQs
IGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBhZG9wdFJlZigqbmV3IENTU1RyYW5zaXRpb24odGFyZ2V0LmRvY3VtZW50KCksIGJhY2tpbmdB
bmltYXRpb24pKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQ1NTVHJhbnNpdGlv
bih0YXJnZXQsIGJhY2tpbmdBbmltYXRpb24pKTsKICAgICByZXN1bHQtPm1fdHJhbnNpdGlvblBy
b3BlcnR5ID0gYmFja2luZ0FuaW1hdGlvbi5wcm9wZXJ0eSgpOwogICAgIHJlc3VsdC0+aW5pdGlh
bGl6ZSh0YXJnZXQpOwogICAgIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0UmVhZE9ubHk+KHJlc3Vs
dC0+ZWZmZWN0KCkpLT5jb21wdXRlQ1NTVHJhbnNpdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0
eWxlLCBuZXdTdHlsZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ1NTVHJhbnNpdGlvbjo6
Q1NTVHJhbnNpdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2lu
Z0FuaW1hdGlvbikKLSAgICA6IERlY2xhcmF0aXZlQW5pbWF0aW9uKGRvY3VtZW50LCBiYWNraW5n
QW5pbWF0aW9uKQorQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbihFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24pCisgICAgOiBEZWNsYXJhdGl2ZUFu
aW1hdGlvbihlbGVtZW50LCBiYWNraW5nQW5pbWF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaAppbmRleCAzNWYwZWQwYTliZjU4YjRjM2Q2ZTBkOTBh
ZTVmMGNhZmJmMTQ2YTdkLi5lOGEwNTNhYzJjMTFhZjBhOTdjNWFiNzNhNDQ0YjAwYzE4NDY2ODE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuQmVMaXN0ZWQoKSBjb25zdCBmaW5hbDsKIAogcHJp
dmF0ZToKLSAgICBDU1NUcmFuc2l0aW9uKERvY3VtZW50JiwgY29uc3QgQW5pbWF0aW9uJik7Cisg
ICAgQ1NTVHJhbnNpdGlvbihFbGVtZW50JiwgY29uc3QgQW5pbWF0aW9uJik7CiAKICAgICBDU1NQ
cm9wZXJ0eUlEIG1fdHJhbnNpdGlvblByb3BlcnR5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCBhMDcyNTY4NTU3YTEwYmEw
NGI0YTE0YjAxZTRkNTRmMzZlNmU2M2QxLi45ZDAzMWVjM2RlZWY1MDM2NWU3YjFjZmNkOWQwYzgz
NjFiZTk2NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRp
dmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5jcHAKQEAgLTI4LDE3ICsyOCwyOCBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0VGltaW5nUmVhZE9ubHkuaCIKKyNpbmNsdWRl
ICJBbmltYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RSZWFkT25seS5oIgorI2luY2x1ZGUg
IlBzZXVkb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJUcmFuc2l0aW9uRXZlbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1EZWNsYXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRp
b24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24p
Ci0gICAgOiBXZWJBbmltYXRpb24oZG9jdW1lbnQpCitEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6RGVj
bGFyYXRpdmVBbmltYXRpb24oRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBBbmltYXRpb24mIGJhY2tp
bmdBbmltYXRpb24pCisgICAgOiBXZWJBbmltYXRpb24odGFyZ2V0LmRvY3VtZW50KCkpCisgICAg
LCBtX3RhcmdldCh0YXJnZXQpCiAgICAgLCBtX2JhY2tpbmdBbmltYXRpb24oY29uc3RfY2FzdDxB
bmltYXRpb24mPihiYWNraW5nQW5pbWF0aW9uKSkKKyAgICAsIG1fZXZlbnRRdWV1ZSh0YXJnZXQp
CiB7CiB9CiAKK0RlY2xhcmF0aXZlQW5pbWF0aW9uOjp+RGVjbGFyYXRpdmVBbmltYXRpb24oKQor
eworICAgIG1fZXZlbnRRdWV1ZS5jbG9zZSgpOworfQorCiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0
aW9uOjpzZXRCYWNraW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlv
bikKIHsKICAgICBtX2JhY2tpbmdBbmltYXRpb24gPSBjb25zdF9jYXN0PEFuaW1hdGlvbiY+KGJh
Y2tpbmdBbmltYXRpb24pOwpAQCAtNzMsNCArODQsMTA2IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmlt
YXRpb246OnN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKQogICAgIHVuc3VzcGVu
ZEVmZmVjdEludmFsaWRhdGlvbigpOwogfQogCitBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhh
c2UgRGVjbGFyYXRpdmVBbmltYXRpb246OnBoYXNlV2l0aG91dEVmZmVjdCgpIGNvbnN0Cit7Cisg
ICAgLy8gVGhpcyBzaG91bGRuJ3QgYmUgY2FsbGVkIGlmIHdlIGFjdHVhbGx5IGhhdmUgYW4gZWZm
ZWN0LgorICAgIEFTU0VSVCghZWZmZWN0KCkpOworCisgICAgYXV0byBhbmltYXRpb25DdXJyZW50
VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgaWYgKCFhbmltYXRpb25DdXJyZW50VGltZSkKKyAg
ICAgICAgcmV0dXJuIEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5OjpQaGFzZTo6SWRsZTsKKworICAg
IC8vIFNpbmNlIHdlIGRvbid0IGhhdmUgYW4gZWZmZWN0LCB0aGUgZHVyYXRpb24gd2lsbCBiZSB6
ZXJvIHNvIHRoZSBwaGFzZSBpcyAnYmVmb3JlJyBpZiB0aGUgY3VycmVudCB0aW1lIGlzIGxlc3Mg
dGhhbiB6ZXJvLgorICAgIHJldHVybiBhbmltYXRpb25DdXJyZW50VGltZS52YWx1ZSgpIDwgMF9z
ID8gQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlOjpCZWZvcmUgOiBBbmltYXRpb25FZmZl
Y3RSZWFkT25seTo6UGhhc2U6OkFmdGVyOworfQorCit2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9u
OjppbnZhbGlkYXRlRE9NRXZlbnRzKCkKK3sKKyAgICBhdXRvKiBhbmltYXRpb25FZmZlY3QgPSBl
ZmZlY3QoKTsKKworICAgIGF1dG8gaXNQZW5kaW5nID0gcGVuZGluZygpOworICAgIGF1dG8gaXRl
cmF0aW9uID0gYW5pbWF0aW9uRWZmZWN0ID8gYW5pbWF0aW9uRWZmZWN0LT5jdXJyZW50SXRlcmF0
aW9uKCkudmFsdWUoKSA6IDA7CisgICAgYXV0byBjdXJyZW50UGhhc2UgPSBhbmltYXRpb25FZmZl
Y3QgPyBhbmltYXRpb25FZmZlY3QtPnBoYXNlKCkgOiBwaGFzZVdpdGhvdXRFZmZlY3QoKTsKKwor
ICAgIGJvb2wgd2FzQWN0aXZlID0gbV9wcmV2aW91c1BoYXNlID09IEFuaW1hdGlvbkVmZmVjdFJl
YWRPbmx5OjpQaGFzZTo6QWN0aXZlOworICAgIGJvb2wgd2FzQWZ0ZXIgPSBtX3ByZXZpb3VzUGhh
c2UgPT0gQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlOjpBZnRlcjsKKyAgICBib29sIHdh
c0JlZm9yZSA9IG1fcHJldmlvdXNQaGFzZSA9PSBBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhh
c2U6OkJlZm9yZTsKKyAgICBib29sIHdhc0lkbGUgPSBtX3ByZXZpb3VzUGhhc2UgPT0gQW5pbWF0
aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlOjpJZGxlOworCisgICAgYm9vbCBpc0FjdGl2ZSA9IGN1
cnJlbnRQaGFzZSA9PSBBbmltYXRpb25FZmZlY3RSZWFkT25seTo6UGhhc2U6OkFjdGl2ZTsKKyAg
ICBib29sIGlzQWZ0ZXIgPSBjdXJyZW50UGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0UmVhZE9ubHk6
OlBoYXNlOjpBZnRlcjsKKyAgICBib29sIGlzQmVmb3JlID0gY3VycmVudFBoYXNlID09IEFuaW1h
dGlvbkVmZmVjdFJlYWRPbmx5OjpQaGFzZTo6QmVmb3JlOworICAgIGJvb2wgaXNJZGxlID0gY3Vy
cmVudFBoYXNlID09IEFuaW1hdGlvbkVmZmVjdFJlYWRPbmx5OjpQaGFzZTo6SWRsZTsKKworICAg
IGF1dG8qIGVmZmVjdFRpbWluZyA9IGFuaW1hdGlvbkVmZmVjdCA/IGFuaW1hdGlvbkVmZmVjdC0+
dGltaW5nKCkgOiBudWxscHRyOworICAgIGF1dG8gaW50ZXJ2YWxTdGFydCA9IGVmZmVjdFRpbWlu
ZyA/IHN0ZDo6bWF4KDBfcywgc3RkOjptaW4oLWVmZmVjdFRpbWluZy0+ZGVsYXkoKSwgZWZmZWN0
VGltaW5nLT5hY3RpdmVEdXJhdGlvbigpKSkgOiAwX3M7CisgICAgYXV0byBpbnRlcnZhbEVuZCA9
IGVmZmVjdFRpbWluZyA/IHN0ZDo6bWF4KDBfcywgc3RkOjptaW4oZWZmZWN0VGltaW5nLT5lbmRU
aW1lKCkgLSBlZmZlY3RUaW1pbmctPmRlbGF5KCksIGVmZmVjdFRpbWluZy0+YWN0aXZlRHVyYXRp
b24oKSkpIDogMF9zOworCisgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4odGhpcykpIHsKKyAgICAg
ICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1hbmltYXRpb25zLTIvI2V2ZW50cwor
ICAgICAgICBpZiAoKHdhc0lkbGUgfHwgd2FzQmVmb3JlKSAmJiBpc0FjdGl2ZSkKKyAgICAgICAg
ICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkuYW5pbWF0aW9uc3RhcnRFdmVudCwgaW50
ZXJ2YWxTdGFydCk7CisgICAgICAgIGVsc2UgaWYgKCh3YXNJZGxlIHx8IHdhc0JlZm9yZSkgJiYg
aXNBZnRlcikgeworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS5hbmlt
YXRpb25zdGFydEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgICAgIGVucXVldWVET01F
dmVudChldmVudE5hbWVzKCkuYW5pbWF0aW9uZW5kRXZlbnQsIGludGVydmFsRW5kKTsKKyAgICAg
ICAgfSBlbHNlIGlmICh3YXNBY3RpdmUgJiYgaXNCZWZvcmUpCisgICAgICAgICAgICBlbnF1ZXVl
RE9NRXZlbnQoZXZlbnROYW1lcygpLmFuaW1hdGlvbmVuZEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsK
KyAgICAgICAgZWxzZSBpZiAod2FzQWN0aXZlICYmIGlzQWN0aXZlICYmIG1fcHJldmlvdXNJdGVy
YXRpb24gIT0gaXRlcmF0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGl0ZXJhdGlvbkJvdW5kYXJ5
ID0gaXRlcmF0aW9uOworICAgICAgICAgICAgaWYgKG1fcHJldmlvdXNJdGVyYXRpb24gPiBpdGVy
YXRpb24pCisgICAgICAgICAgICAgICAgaXRlcmF0aW9uQm91bmRhcnkrKzsKKyAgICAgICAgICAg
IGF1dG8gZWxhcHNlZFRpbWUgPSBlZmZlY3RUaW1pbmcgPyBlZmZlY3RUaW1pbmctPml0ZXJhdGlv
bkR1cmF0aW9uKCkgKiAoaXRlcmF0aW9uQm91bmRhcnkgLSBlZmZlY3RUaW1pbmctPml0ZXJhdGlv
blN0YXJ0KCkpIDogMF9zOworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMo
KS5hbmltYXRpb25pdGVyYXRpb25FdmVudCwgZWxhcHNlZFRpbWUpOworICAgICAgICB9IGVsc2Ug
aWYgKHdhc0FjdGl2ZSAmJiBpc0FmdGVyKQorICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2
ZW50TmFtZXMoKS5hbmltYXRpb25lbmRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICBlbHNl
IGlmICh3YXNBZnRlciAmJiBpc0FjdGl2ZSkKKyAgICAgICAgICAgIGVucXVldWVET01FdmVudChl
dmVudE5hbWVzKCkuYW5pbWF0aW9uc3RhcnRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICBl
bHNlIGlmICh3YXNBZnRlciAmJiBpc0JlZm9yZSkgeworICAgICAgICAgICAgZW5xdWV1ZURPTUV2
ZW50KGV2ZW50TmFtZXMoKS5hbmltYXRpb25zdGFydEV2ZW50LCBpbnRlcnZhbEVuZCk7CisgICAg
ICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLmFuaW1hdGlvbmVuZEV2ZW50LCBp
bnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgfSBlbHNlIGlmICgoIXdhc0lkbGUgJiYgIXdhc0FmdGVy
KSAmJiBpc0lkbGUpCisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLmFu
aW1hdGlvbmNhbmNlbEV2ZW50LCAwX3MpOworICAgIH0gZWxzZSBpZiAoaXM8Q1NTVHJhbnNpdGlv
bj4odGhpcykpIHsKKyAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFu
c2l0aW9ucy0yLyN0cmFuc2l0aW9uLWV2ZW50cworICAgICAgICBpZiAod2FzSWRsZSAmJiAoaXNQ
ZW5kaW5nIHx8IGlzQmVmb3JlKSkKKyAgICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5h
bWVzKCkudHJhbnNpdGlvbnJ1bkV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgZWxzZSBp
ZiAod2FzSWRsZSAmJiBpc0FjdGl2ZSkgeworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2
ZW50TmFtZXMoKS50cmFuc2l0aW9ucnVuRXZlbnQsIGludGVydmFsU3RhcnQpOworICAgICAgICAg
ICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uc3RhcnRFdmVudCwgaW50
ZXJ2YWxTdGFydCk7CisgICAgICAgIH0gZWxzZSBpZiAod2FzSWRsZSAmJiBpc0FmdGVyKSB7Cisg
ICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRpb25ydW5FdmVu
dCwgaW50ZXJ2YWxTdGFydCk7CisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1l
cygpLnRyYW5zaXRpb25zdGFydEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsKKyAgICAgICAgICAgIGVu
cXVldWVET01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbmVuZEV2ZW50LCBpbnRlcnZhbEVu
ZCk7CisgICAgICAgIH0gZWxzZSBpZiAoKG1fd2FzUGVuZGluZyB8fCB3YXNCZWZvcmUpICYmIGlz
QWN0aXZlKQorICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFuc2l0
aW9uc3RhcnRFdmVudCwgaW50ZXJ2YWxTdGFydCk7CisgICAgICAgIGVsc2UgaWYgKChtX3dhc1Bl
bmRpbmcgfHwgd2FzQmVmb3JlKSAmJiBpc0FmdGVyKSB7CisgICAgICAgICAgICBlbnF1ZXVlRE9N
RXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRpb25zdGFydEV2ZW50LCBpbnRlcnZhbFN0YXJ0KTsK
KyAgICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbmVuZEV2
ZW50LCBpbnRlcnZhbEVuZCk7CisgICAgICAgIH0gZWxzZSBpZiAod2FzQWN0aXZlICYmIGlzQWZ0
ZXIpCisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRpb25l
bmRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICBlbHNlIGlmICh3YXNBY3RpdmUgJiYgaXNC
ZWZvcmUpCisgICAgICAgICAgICBlbnF1ZXVlRE9NRXZlbnQoZXZlbnROYW1lcygpLnRyYW5zaXRp
b25lbmRFdmVudCwgaW50ZXJ2YWxTdGFydCk7CisgICAgICAgIGVsc2UgaWYgKHdhc0FmdGVyICYm
IGlzQWN0aXZlKQorICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFu
c2l0aW9uc3RhcnRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICBlbHNlIGlmICh3YXNBZnRl
ciAmJiBpc0JlZm9yZSkgeworICAgICAgICAgICAgZW5xdWV1ZURPTUV2ZW50KGV2ZW50TmFtZXMo
KS50cmFuc2l0aW9uc3RhcnRFdmVudCwgaW50ZXJ2YWxFbmQpOworICAgICAgICAgICAgZW5xdWV1
ZURPTUV2ZW50KGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uZW5kRXZlbnQsIGludGVydmFsU3RhcnQp
OworICAgICAgICB9IGVsc2UgaWYgKCghd2FzSWRsZSAmJiAhd2FzQWZ0ZXIpICYmIGlzSWRsZSkK
KyAgICAgICAgICAgIGVucXVldWVET01FdmVudChldmVudE5hbWVzKCkudHJhbnNpdGlvbmNhbmNl
bEV2ZW50LCAwX3MpOworICAgIH0KKworICAgIG1fd2FzUGVuZGluZyA9IGlzUGVuZGluZzsKKyAg
ICBtX3ByZXZpb3VzUGhhc2UgPSBjdXJyZW50UGhhc2U7CisgICAgbV9wcmV2aW91c0l0ZXJhdGlv
biA9IGl0ZXJhdGlvbjsKK30KKwordm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURP
TUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBTZWNvbmRzIGVsYXBzZWRUaW1l
KQoreworICAgIGF1dG8gdGltZSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGVsYXBz
ZWRUaW1lKSAvIDEwMDA7CisgICAgaWYgKGlzPENTU0FuaW1hdGlvbj4odGhpcykpCisgICAgICAg
IG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5
cGUsIGRvd25jYXN0PENTU0FuaW1hdGlvbj4odGhpcyktPmFuaW1hdGlvbk5hbWUoKSwgdGltZSkp
OworICAgIGVsc2UgaWYgKGlzPENTU1RyYW5zaXRpb24+KHRoaXMpKQorICAgICAgICBtX2V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93
bmNhc3Q8Q1NTVHJhbnNpdGlvbj4odGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLCB0aW1lLCBQ
c2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX3RhcmdldC5wc2V1ZG9J
ZCgpKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCmluZGV4IDdlYTI4NWJjMWY5ZjcwOGIw
NDA2YmEzOTA2NDY1ZDdlNzY2NmExN2UuLjg1MjQ5MDVmOGE3OWJhZTUzYjMyYWMzYjU3MmVhMDc2
ZjliNWEyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFu
aW1hdGlvbi5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
QW5pbWF0aW9uRWZmZWN0UmVhZE9ubHkuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIApAQCAt
MzUsMjIgKzM3LDMwIEBAIGNsYXNzIEVsZW1lbnQ7CiAKIGNsYXNzIERlY2xhcmF0aXZlQW5pbWF0
aW9uIDogcHVibGljIFdlYkFuaW1hdGlvbiB7CiBwdWJsaWM6Ci0gICAgfkRlY2xhcmF0aXZlQW5p
bWF0aW9uKCkgPSBkZWZhdWx0OworICAgIH5EZWNsYXJhdGl2ZUFuaW1hdGlvbigpOwogCiAgICAg
Ym9vbCBpc0RlY2xhcmF0aXZlQW5pbWF0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNraW5nQW5pbWF0aW9uOyB9CiAgICAgdm9pZCBzZXRCYWNraW5nQW5pbWF0aW9uKGNv
bnN0IEFuaW1hdGlvbiYpOworICAgIHZvaWQgaW52YWxpZGF0ZURPTUV2ZW50cygpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgRGVjbGFyYXRpdmVBbmltYXRpb24oRG9jdW1lbnQmLCBjb25zdCBBbmltYXRp
b24mKTsKKyAgICBEZWNsYXJhdGl2ZUFuaW1hdGlvbihFbGVtZW50JiwgY29uc3QgQW5pbWF0aW9u
Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBFbGVtZW50Jik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKTsKIAogcHJp
dmF0ZToKLSAgICBSZWY8QW5pbWF0aW9uPiBtX2JhY2tpbmdBbmltYXRpb247CisgICAgQW5pbWF0
aW9uRWZmZWN0UmVhZE9ubHk6OlBoYXNlIHBoYXNlV2l0aG91dEVmZmVjdCgpIGNvbnN0OworICAg
IHZvaWQgZW5xdWV1ZURPTUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIFNlY29uZHMpOwogCisg
ICAgRWxlbWVudCYgbV90YXJnZXQ7CisgICAgUmVmPEFuaW1hdGlvbj4gbV9iYWNraW5nQW5pbWF0
aW9uOworICAgIGJvb2wgbV93YXNQZW5kaW5nIHsgZmFsc2UgfTsKKyAgICBBbmltYXRpb25FZmZl
Y3RSZWFkT25seTo6UGhhc2UgbV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0aW9uRWZmZWN0UmVhZE9u
bHk6OlBoYXNlOjpJZGxlIH07CisgICAgZG91YmxlIG1fcHJldmlvdXNJdGVyYXRpb247CisgICAg
R2VuZXJpY0V2ZW50UXVldWUgbV9ldmVudFF1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCmlu
ZGV4IDUyNTgxM2MzNjI2ZmNjY2QzYWJhODRjMTY0ZTU0MjI0MjUzZjI2ZDQuLjQxMWVmM2M0OTYy
ZDVmZmQwNmMyNWVhZDI2YzQzOTY0NTVmODY2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJEZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkRpc3BsYXlS
ZWZyZXNoTW9uaXRvci5oIgogI2luY2x1ZGUgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTA5LDYgKzExMCwxMiBAQCB2b2lkIERvY3Vt
ZW50VGltZWxpbmU6OnNjaGVkdWxlSW52YWxpZGF0aW9uVGFza0lmTmVlZGVkKCkKIAogdm9pZCBE
b2N1bWVudFRpbWVsaW5lOjpwZXJmb3JtSW52YWxpZGF0aW9uVGFzaygpCiB7CisgICAgLy8gTm93
IHRoYXQgdGhlIHRpbWluZyBtb2RlbCBoYXMgY2hhbmdlZCB3ZSBjYW4gc2VlIGlmIHRoZXJlIGFy
ZSBET00gZXZlbnRzIHRvIGRpc3BhdGNoIGZvciBkZWNsYXJhdGl2ZSBhbmltYXRpb25zLgorICAg
IGZvciAoYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9ucygpKSB7CisgICAgICAgIGlmIChpczxE
ZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSkKKyAgICAgICAgICAgIGRvd25jYXN0PERl
Y2xhcmF0aXZlQW5pbWF0aW9uPigqYW5pbWF0aW9uKS5pbnZhbGlkYXRlRE9NRXZlbnRzKCk7Cisg
ICAgfQorCiAgICAgdXBkYXRlQW5pbWF0aW9uU2NoZWR1bGUoKTsKICAgICBtX2NhY2hlZEN1cnJl
bnRUaW1lID0gc3RkOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggZWM2
MjZmMTE2MGIxOGQ3MWE3MDE5MjIxYzlhMmJhNmVlMDY5YmJkOS4uMjc1YjFjYTJjMWExNjk5NTQ5
NTM4Y2U3YzZjM2ZiZjIzMmQ4M2RmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC01OSw2
ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhhZGRzb3VyY2VidWZmZXIp
IFwKICAgICBtYWNybyhhZGRzdHJlYW0pIFwKICAgICBtYWNybyhhZGR0cmFjaykgXAorICAgIG1h
Y3JvKGFuaW1hdGlvbmNhbmNlbCkgXAogICAgIG1hY3JvKGFuaW1hdGlvbmVuZCkgXAogICAgIG1h
Y3JvKGFuaW1hdGlvbml0ZXJhdGlvbikgXAogICAgIG1hY3JvKGFuaW1hdGlvbnN0YXJ0KSBcCkBA
IC0yNDksNyArMjUwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyh0b3VjaG1v
dmUpIFwKICAgICBtYWNybyh0b3VjaHN0YXJ0KSBcCiAgICAgbWFjcm8odHJhY2spIFwKKyAgICBt
YWNybyh0cmFuc2l0aW9uY2FuY2VsKSBcCiAgICAgbWFjcm8odHJhbnNpdGlvbmVuZCkgXAorICAg
IG1hY3JvKHRyYW5zaXRpb25ydW4pIFwKKyAgICBtYWNybyh0cmFuc2l0aW9uc3RhcnQpIFwKICAg
ICBtYWNybyh1bmhhbmRsZWRyZWplY3Rpb24pIFwKICAgICBtYWNybyh1bmxvYWQpIFwKICAgICBt
YWNybyh1bm11dGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVu
dEhhbmRsZXJzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlk
bAppbmRleCBhOGQzNDcwNWZlNmVlOGE0NDI5NjBmMmYzZDA1NGRiZTJkMTE1NWRlLi41YzQ4NzEx
NzJjMzU4YzYyMGMwZjBhY2MxOGM2YzU1YzhjOTM1ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vR2xvYmFsRXZlbnRIYW5kbGVycy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCkBAIC05NywxNSArOTcsMTUgQEAKIAogICAgIC8vIEV4
dGVuc2lvbnMgZnJvbSBDU1MgVHJhbnNpdGlvbnMgQVBJIChodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3NzLXRyYW5zaXRpb25zLyNpbnRlcmZhY2UtZ2xvYmFsZXZlbnRoYW5kbGVycy1pZGwpLgog
ICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb250cmFuc2l0aW9uZW5kOwotICAgIC8vIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb250cmFuc2l0aW9ucnVuOwotICAgIC8vIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb250cmFuc2l0aW9uc3RhcnQ7Ci0gICAgLy8gYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbnRyYW5zaXRpb25jYW5jZWw7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRyYW5z
aXRpb25ydW47CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnRyYW5zaXRpb25zdGFydDsK
KyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udHJhbnNpdGlvbmNhbmNlbDsKIAogICAgIC8v
IEV2ZW50IGhhbmRsZXJzIGZyb20gQ1NTIEFuaW1hdGlvbnMgQVBJIChodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3NzLWFuaW1hdGlvbnMvI2ludGVyZmFjZS1nbG9iYWxldmVudGhhbmRsZXJzLWlk
bCkuCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFuaW1hdGlvbmVuZDsKICAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9uYW5pbWF0aW9uaXRlcmF0aW9uOwogICAgIGF0dHJpYnV0ZSBF
dmVudEhhbmRsZXIgb25hbmltYXRpb25zdGFydDsKLSAgICAvLyBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9uYW5pbWF0aW9uY2FuY2VsOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25hbmlt
YXRpb25jYW5jZWw7CiAKICAgICAvLyBBZGRpdGlvbnMgdGhhdCBhcmUgbm90IHlldCBwYXJ0IG9m
IHRoZSBzdGFuZGFyZC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgppbmRleCAyMzYzZjczMTNhYzVmZjAzYjIwYTkwNDMxMDY4YzdjZjUwZjg0ZDJmLi42YTNiNGEy
ZWNhMDRlNDkzYmU4Mjc5Y2I5NWFhMzIzODNhMWM0MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMTkzLDYgKzE5Myw3IEBAIG9uYWJvcnQKIG9uYW5p
bWF0aW9uc3RhcnQKIG9uYW5pbWF0aW9uaXRlcmF0aW9uCiBvbmFuaW1hdGlvbmVuZAorb25hbmlt
YXRpb25jYW5jZWwKIG9uYXV0b2NvbXBsZXRlCiBvbmF1dG9jb21wbGV0ZWVycm9yCiBvbmJlZm9y
ZWNvcHkKQEAgLTI4Miw3ICsyODMsMTAgQEAgb250b3VjaHN0YXJ0CiBvbnRvdWNobW92ZQogb250
b3VjaGVuZAogb250b3VjaGNhbmNlbAorb250cmFuc2l0aW9uY2FuY2VsCiBvbnRyYW5zaXRpb25l
bmQKK29udHJhbnNpdGlvbnJ1bgorb250cmFuc2l0aW9uc3RhcnQKIG9udW5sb2FkCiBvbnZvbHVt
ZWNoYW5nZQogb253YWl0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGIx
YWRkMjRmM2I3YTc4MWNhZDlhNDQwMjRjYjgxNWVhMmI5M2ExZDguLjFiMTc2OGU4OTlhZWQ1ZWNi
ZTZhMWIyZGVjNThlN2MwYzc0ZWY2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CkBAIC0yMjksNiArMjI5LDcgQEAgSFRNTEVsZW1lbnQ6OkV2ZW50SGFuZGxlck5hbWVNYXAgSFRN
TEVsZW1lbnQ6OmNyZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXAoKQogICAgICAgICAmb25hbmltYXRp
b25lbmRBdHRyLmdldCgpLAogICAgICAgICAmb25hbmltYXRpb25pdGVyYXRpb25BdHRyLmdldCgp
LAogICAgICAgICAmb25hbmltYXRpb25zdGFydEF0dHIuZ2V0KCksCisgICAgICAgICZvbmFuaW1h
dGlvbmNhbmNlbEF0dHIuZ2V0KCksCiAgICAgICAgICZvbmF1dG9jb21wbGV0ZUF0dHIuZ2V0KCks
CiAgICAgICAgICZvbmF1dG9jb21wbGV0ZWVycm9yQXR0ci5nZXQoKSwKICAgICAgICAgJm9uYmVm
b3JlY29weUF0dHIuZ2V0KCksCkBAIC0zMDMsNyArMzA0LDEwIEBAIEhUTUxFbGVtZW50OjpFdmVu
dEhhbmRsZXJOYW1lTWFwIEhUTUxFbGVtZW50OjpjcmVhdGVFdmVudEhhbmRsZXJOYW1lTWFwKCkK
ICAgICAgICAgJm9udG91Y2hmb3JjZWNoYW5nZUF0dHIuZ2V0KCksCiAgICAgICAgICZvbnRvdWNo
bW92ZUF0dHIuZ2V0KCksCiAgICAgICAgICZvbnRvdWNoc3RhcnRBdHRyLmdldCgpLAorICAgICAg
ICAmb250cmFuc2l0aW9uY2FuY2VsQXR0ci5nZXQoKSwKICAgICAgICAgJm9udHJhbnNpdGlvbmVu
ZEF0dHIuZ2V0KCksCisgICAgICAgICZvbnRyYW5zaXRpb25ydW5BdHRyLmdldCgpLAorICAgICAg
ICAmb250cmFuc2l0aW9uc3RhcnRBdHRyLmdldCgpLAogICAgICAgICAmb252b2x1bWVjaGFuZ2VB
dHRyLmdldCgpLAogICAgICAgICAmb253YWl0aW5nQXR0ci5nZXQoKSwKICAgICAgICAgJm9ud2Vi
a2l0YmVnaW5mdWxsc2NyZWVuQXR0ci5nZXQoKSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNjRiYjAxNzc5OTllMWNmZjYx
N2IxZTI0NjhmYjlkYTU4NzkzMTQxLi5kM2FjMDJmOTkzNDNlNDczNDVkZTE5N2IzZTQyZDE2MDZl
NWJlMmY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDMtMjEgIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIERpc3BhdGNo
IERPTSBldmVudHMgZm9yIENTUyBUcmFuc2l0aW9ucyBhbmQgQ1NTIEFuaW1hdGlvbnMgaW1wbGVt
ZW50ZWQgYXMgV2ViIEFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzc4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5ldyBhdHRyaWJ1dGUtYmFzZWQgZXZlbnQgaGFuZGxlcnMgYXJlIG5v
dyBleHBvc2VkLCB1cGRhdGUgdGhlIGV4cGVjdGF0aW9ucyBmb3IgdGhvc2UuCisKKyAgICAgICAg
KiBqcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4
dDoKKwogMjAxOC0wMy0yMSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWIgQW5pbWF0aW9uc10gSW1wb3J0IENTUyBBbmltYXRpb25zIGFuZCBDU1MgVHJh
bnNpdGlvbnMgYXMgV2ViIEFuaW1hdGlvbnMgdGVzdHMgZnJvbSBNb3ppbGxhCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL21vemlsbGEvQ2hhbmdlTG9nCmluZGV4IDZkMzkwNzcwMDliYjdhNmJlYTAxMzUzYTA2
MjlkNjk0YmE0OGY1OWIuLjlmZTlkZmZiOTQyYjk0ZTVkODBkZjg1NjExMjVlMzhlZjg0NTRlMzEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTgtMDMtMjEgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViIEFuaW1hdGlvbnNdIERpc3BhdGNoIERPTSBldmVudHMgZm9yIENTUyBUcmFuc2l0aW9u
cyBhbmQgQ1NTIEFuaW1hdGlvbnMgaW1wbGVtZW50ZWQgYXMgV2ViIEFuaW1hdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgb2YgdGhlIE1v
emlsbGEgdGVzdHMgbm8gbG9uZ2VyIHRpbWUgb3V0IGFuZCBwYXJ0aWFsbHkgcGFzcywgbWFya2lu
ZyB0aGUgcHJvZ3Jlc3Npb24uCisKKyAgICAgICAgKiBjc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1h
dGlvbi1zdGFydHRpbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNzcy1hbmltYXRpb25zL3Rl
c3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6CisKIDIwMTgtMDMtMjEgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEFuaW1hdGlv
bnNdIEltcG9ydCBDU1MgQW5pbWF0aW9ucyBhbmQgQ1NTIFRyYW5zaXRpb25zIGFzIFdlYiBBbmlt
YXRpb25zIHRlc3RzIGZyb20gTW96aWxsYQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2FuaW1hdGlvbi1zdGFydHRpbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0
X2FuaW1hdGlvbi1zdGFydHRpbWUtZXhwZWN0ZWQudHh0CmluZGV4IDViZmM0ZWYwNmE5YWNjYjQz
NzI3OWQ5MGNhYzY2OGY5Y2JiNzFjMTguLjZmNGY4MDNhZWIwYWFlN2NkMDMwNTQ1MzExZjg3ZjFl
ZmY2M2U3ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL21vemlsbGEvY3NzLWFu
aW1hdGlvbnMvdGVzdF9hbmltYXRpb24tc3RhcnR0aW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1hbmltYXRpb25zL3Rlc3RfYW5pbWF0aW9uLXN0
YXJ0dGltZS1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwyMiBAQAotI1BJRCBVTlJFU1BPTlNJVkUg
LSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQgKHBpZCAxMzU0MikKLUZB
SUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBub3RpZnlEb25lIHRvIGJlIGNhbGxlZAorCitQQVNT
IHN0YXJ0VGltZSBvZiBhIG5ld2x5IGNyZWF0ZWQgKHBsYXktcGVuZGluZykgYW5pbWF0aW9uIGlz
IHVucmVzb2x2ZWQgCitGQUlMIHN0YXJ0VGltZSBvZiBhIG5ld2x5IGNyZWF0ZWQgKHBhdXNlLXBl
bmRpbmcpIGFuaW1hdGlvbiBpcyB1bnJlc29sdmVkIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0
IChldmFsdWF0aW5nICdhbmltYXRpb24uc3RhcnRUaW1lJykKK1BBU1Mgc3RhcnRUaW1lIGlzIHJl
c29sdmVkIHdoZW4gcnVubmluZyAKK0ZBSUwgc3RhcnRUaW1lIGlzIHVucmVzb2x2ZWQgd2hlbiBw
YXVzZWQgdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ2FuaW1hdGlvbi5y
ZWFkeScpCitQQVNTIHN0YXJ0VGltZSB3aGlsZSBwYXVzZS1wZW5kaW5nIGFuZCBwbGF5LXBlbmRp
bmcgCitQQVNTIHN0YXJ0VGltZSB3aGlsZSBwbGF5LXBlbmRpbmcgZnJvbSBmaW5pc2hlZCBzdGF0
ZSAKK1BBU1Mgc3RhcnRUaW1lIHdoaWxlIHBsYXktcGVuZGluZyBmcm9tIGZpbmlzaGVkIHN0YXRl
IHVzaW5nIGZpbmlzaCgpIAorRkFJTCBQYXVzaW5nIHNob3VsZCBtYWtlIHRoZSBzdGFydFRpbWUg
YmVjb21lIG51bGwgYXNzZXJ0X3RydWU6IEFmdGVyIHRoZSBhbmltYXRpb24gaGFzIHN0YXJ0ZWQs
IHN0YXJ0VGltZSBpcyBncmVhdGVyIHRoYW4gdGhlIHRpbWUgd2hlbiBpdCB3YXMgc3RhcnRlZCBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBTYW5pdHkgdGVzdCB0byBjaGVjayByb3VuZC10
cmlwcGluZyBhc3NpZ25pbmcgdG8gYSBuZXcgYW5pbWF0aW9uJ3Mgc3RhcnRUaW1lIAorUEFTUyBT
a2lwcGluZyBmb3J3YXJkIHRocm91Z2ggYW5pbWF0aW9uIAorUEFTUyBTa2lwcGluZyBiYWNrd2Fy
ZHMgdGhyb3VnaCBhbmltYXRpb24gCitQQVNTIFJlZHVuZGFudCBjaGFuZ2UsIGJlZm9yZSAtPiBh
Y3RpdmUsIHRoZW4gYmFjayAKK1BBU1MgUmVkdW5kYW50IGNoYW5nZSwgYmVmb3JlIC0+IGFmdGVy
LCB0aGVuIGJhY2sgCitQQVNTIFJlZHVuZGFudCBjaGFuZ2UsIGFjdGl2ZSAtPiBiZWZvcmUsIHRo
ZW4gYmFjayAKK1BBU1MgUmVkdW5kYW50IGNoYW5nZSwgYWN0aXZlIC0+IGFmdGVyLCB0aGVuIGJh
Y2sgCitQQVNTIFJlZHVuZGFudCBjaGFuZ2UsIGFmdGVyIC0+IGJlZm9yZSwgdGhlbiBiYWNrIAor
UEFTUyBSZWR1bmRhbnQgY2hhbmdlLCBhZnRlciAtPiBhY3RpdmUsIHRoZW4gYmFjayAKK1BBU1Mg
U2V0dGluZyBzdGFydFRpbWUgdG8gbnVsbCAKK0ZBSUwgQW5pbWF0aW9uLnN0YXJ0VGltZSBhZnRl
ciBwYXVzaW5nIGFzc2VydF9lcXVhbHM6IEFuaW1hdGlvbi5wbGF5U3RhdGUgaXMgInBhdXNlZCIg
YWZ0ZXIgcGF1c2UoKSBjYWxsIGV4cGVjdGVkICJwYXVzZWQiIGJ1dCBnb3QgInJ1bm5pbmciCitQ
QVNTIEFuaW1hdGlvbi5zdGFydFRpbWUgYWZ0ZXIgY2FuY2VsbGluZyAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxsYS9jc3MtYW5pbWF0aW9ucy90ZXN0X2VsZW1lbnQt
Z2V0LWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvbW96aWxs
YS9jc3MtYW5pbWF0aW9ucy90ZXN0X2VsZW1lbnQtZ2V0LWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0
CmluZGV4IDk5NmM2OTI5ZDY5ZDM0MThlODM1YTYwNGUyMWNiNzUwZDE3YzNiZjUuLmEwZjcwZGJh
OTM5ZjIzM2NkMjdjMzQ2Y2QwZDJhODg4YmY0ODFlMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL21vemlsbGEvY3NzLWFuaW1hdGlvbnMvdGVzdF9lbGVtZW50LWdldC1hbmltYXRp
b25zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC9tb3ppbGxhL2Nzcy1h
bmltYXRpb25zL3Rlc3RfZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTEs
MyArMSwyNCBAQAotI1BJRCBVTlJFU1BPTlNJVkUgLSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuRGV2ZWxvcG1lbnQgKHBpZCAxMzU1MSkKLUZBSUw6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBu
b3RpZnlEb25lIHRvIGJlIGNhbGxlZAorCitQQVNTIGdldEFuaW1hdGlvbnMgZm9yIG5vbi1hbmlt
YXRlZCBjb250ZW50IAorUEFTUyBnZXRBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9ucyAKK1BB
U1MgZ2V0QW5pbWF0aW9ucyByZXR1cm5zIENTU0FuaW1hdGlvbiBvYmplY3RzIGZvciBDU1MgQW5p
bWF0aW9ucyAKK1BBU1MgZ2V0QW5pbWF0aW9ucyBmb3IgbXVsdGktcHJvcGVydHkgYW5pbWF0aW9u
cyAKK0ZBSUwgZ2V0QW5pbWF0aW9ucyBmb3IgYm90aCBDU1MgQW5pbWF0aW9ucyBhbmQgQ1NTIFRy
YW5zaXRpb25zIGF0IG9uY2UgYXNzZXJ0X2VxdWFsczogZ2V0QW5pbWF0aW9ucyByZXR1cm5zIEFu
aW1hdGlvbnMgZm9yIGJvdGggYW5pbWF0aW9ucyBhbmQgdHJhbnNpdGlvbnMgdGhhdCBydW4gc2lt
dWx0YW5lb3VzbHkgZXhwZWN0ZWQgMiBidXQgZ290IDEKK1BBU1MgZ2V0QW5pbWF0aW9ucyBmb3Ig
Q1NTIEFuaW1hdGlvbnMgdGhhdCBoYXZlIGZpbmlzaGVkIAorUEFTUyBnZXRBbmltYXRpb25zIGZv
ciBDU1MgQW5pbWF0aW9ucyB0aGF0IGhhdmUgZmluaXNoZWQgYnV0IGFyZSBmb3J3YXJkcyBmaWxs
aW5nIAorRkFJTCBnZXRBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9ucyB3aXRoIGFuaW1hdGlv
bi1uYW1lOiBub25lIGFzc2VydF9lcXVhbHM6IGdldEFuaW1hdGlvbnMgcmV0dXJucyBhbiBlbXB0
eSBzZXF1ZW5jZSBmb3IgYW4gZWxlbWVudCB3aXRoIGFuaW1hdGlvbi1uYW1lOiBub25lIGV4cGVj
dGVkIDAgYnV0IGdvdCAxCitGQUlMIGdldEFuaW1hdGlvbnMgZm9yIENTUyBBbmltYXRpb25zIHdp
dGggYW5pbWF0aW9uLW5hbWU6IG1pc3NpbmcgYXNzZXJ0X2VxdWFsczogZ2V0QW5pbWF0aW9ucyBy
ZXR1cm5zIGFuIGVtcHR5IHNlcXVlbmNlIGZvciBhbiBlbGVtZW50IHdpdGggYW5pbWF0aW9uLW5h
bWU6IG1pc3NpbmcgZXhwZWN0ZWQgMCBidXQgZ290IDEKK0ZBSUwgZ2V0QW5pbWF0aW9ucyBmb3Ig
Q1NTIEFuaW1hdGlvbnMgd2hlcmUgdGhlIEBrZXlmcmFtZXMgcnVsZSBpcyBhZGRlZCBsYXRlciBh
c3NlcnRfZXF1YWxzOiBnZXRBbmltYXRpb25zIGluaXRhbGx5IG9ubHkgcmV0dXJucyBBbmltYXRp
b25zIGZvciBDU1MgQW5pbWF0aW9ucyB3aG9zZSBhbmltYXRpb24tbmFtZSBpcyBmb3VuZCBleHBl
Y3RlZCAxIGJ1dCBnb3QgMgorUEFTUyBnZXRBbmltYXRpb25zIGZvciBDU1MgQW5pbWF0aW9ucyB3
aXRoIGR1cGxpY2F0ZWQgYW5pbWF0aW9uLW5hbWUgCitQQVNTIGdldEFuaW1hdGlvbnMgZm9yIENT
UyBBbmltYXRpb25zIHdpdGggZW1wdHkga2V5ZnJhbWVzIHJ1bGUgCitQQVNTIGdldEFuaW1hdGlv
bnMgZm9yIENTUyBhbmltYXRpb25zIGluIGRlbGF5IHBoYXNlIAorUEFTUyBnZXRBbmltYXRpb25z
IGZvciB6ZXJvLWR1cmF0aW9uIENTUyBBbmltYXRpb25zIAorUEFTUyBnZXRBbmltYXRpb25zIHJl
dHVybnMgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGlkZW50aXR5IAorUEFTUyBnZXRBbmltYXRpb25z
IGZvciBDU1MgQW5pbWF0aW9ucyB0aGF0IGFyZSBjYW5jZWxsZWQgCitGQUlMIGdldEFuaW1hdGlv
bnMgZm9yIENTUyBBbmltYXRpb25zIGZvbGxvd3MgYW5pbWF0aW9uLW5hbWUgb3JkZXIgYXNzZXJ0
X2VxdWFsczogYW5pbWF0aW9uIG9yZGVyIGFmdGVyIHByZXBlbmRpbmcgdG8gbGlzdCBleHBlY3Rl
ZCAiYW5pbTEiIGJ1dCBnb3QgImFuaW0yIgorUEFTUyBUZXN0IEFuaW1hdGlvbkZpbHRlcnsgc3Vi
dHJlZTogZmFsc2UgfSB3aXRoIHNpbmdsZSBlbGVtZW50IAorRkFJTCBUZXN0IEFuaW1hdGlvbkZp
bHRlcnsgc3VidHJlZTogdHJ1ZSB9IHdpdGggc2luZ2xlIGVsZW1lbnQgYXNzZXJ0X2VxdWFsczog
Z2V0QW5pbWF0aW9ucyh7IHN1YnRyZWU6IHRydWUgfSkgc2hvdWxkIHJldHVybiBhbmltYXRpb25z
IG9uIHBzZXVkby1lbGVtZW50cyBleHBlY3RlZCAzIGJ1dCBnb3QgMQorUEFTUyBUZXN0IEFuaW1h
dGlvbkZpbHRlcnsgc3VidHJlZTogZmFsc2UgfSB3aXRoIGVsZW1lbnQgdGhhdCBoYXMgYSBjaGls
ZCAKK0ZBSUwgVGVzdCBBbmltYXRpb25GaWx0ZXJ7IHN1YnRyZWU6IHRydWUgfSB3aXRoIGVsZW1l
bnQgdGhhdCBoYXMgYSBjaGlsZCBhc3NlcnRfZXF1YWxzOiBTaG91bGQgZmluZCBhbGwgZWxlbWVu
dHMsIHBlc3Vkby1lbGVtZW50cyB0aGF0IHBhcmVudCBoYXMgZXhwZWN0ZWQgNiBidXQgZ290IDEK
K0ZBSUwgVGVzdCBBbmltYXRpb25GaWx0ZXJ7IHN1YnRyZWU6IHRydWUgfSB3aXRoIGVsZW1lbnQg
dGhhdCBoYXMgbWFueSBkZXNjZW5kYW50IGFzc2VydF9lcXVhbHM6IFNob3VsZCBmaW5kIGFsbCBk
ZXNjZW5kYW50cyBvZiB0aGUgZWxlbWVudCBleHBlY3RlZCA1IGJ1dCBnb3QgMQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5
LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDlhOGFiM2MwY2JiMGQzOTc5NmJk
ZTgzZTRhOTAxZWE4MzYxYThmZTQuLjZmMmE3OThlMjUxNjUzMDQwOTMwNzk5MWU0ZTU1MGJmNzli
ZjM2NDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5
LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b20tc3RhdGljLXByb3BlcnR5LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xMTEs
OSArMTExLDEzIEBAIFBBU1MgYVsib251bmhhbmRsZWRyZWplY3Rpb24iXSBpcyBudWxsCiBQQVNT
IGFbIm9udm9sdW1lY2hhbmdlIl0gaXMgbnVsbAogUEFTUyBhWyJvbndhaXRpbmciXSBpcyBudWxs
CiBQQVNTIGFbIm9udHJhbnNpdGlvbmVuZCJdIGlzIG51bGwKK1BBU1MgYVsib250cmFuc2l0aW9u
cnVuIl0gaXMgbnVsbAorUEFTUyBhWyJvbnRyYW5zaXRpb25zdGFydCJdIGlzIG51bGwKK1BBU1Mg
YVsib250cmFuc2l0aW9uY2FuY2VsIl0gaXMgbnVsbAogUEFTUyBhWyJvbmFuaW1hdGlvbmVuZCJd
IGlzIG51bGwKIFBBU1MgYVsib25hbmltYXRpb25pdGVyYXRpb24iXSBpcyBudWxsCiBQQVNTIGFb
Im9uYW5pbWF0aW9uc3RhcnQiXSBpcyBudWxsCitQQVNTIGFbIm9uYW5pbWF0aW9uY2FuY2VsIl0g
aXMgbnVsbAogUEFTUyBhWyJuYW1lc3BhY2VVUkkiXSBpcyBodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sCiBQQVNTIGFbInByZWZpeCJdIGlzIG51bGwKIFBBU1MgYVsibG9jYWxOYW1lIl0gaXMg
YQo=
</data>
<flag name="review"
          id="354747"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>