<?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>179535</bug_id>
          
          <creation_ts>2017-11-10 10:04:02 -0800</creation_ts>
          <short_desc>[Web Animations] Implement getAnimations()</short_desc>
          <delta_ts>2017-11-13 11:14:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=122912</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=179536</see_also>
          <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>dino</cc>
    
    <cc>joepeck</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1370394</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-10 10:04:02 -0800</bug_when>
    <thetext>The Web Animations spec defines a getAnimations() method that is exposed on both Document and, through the Animatable interface, on Element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370395</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-10 10:04:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/34932475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370398</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-10 10:08:51 -0800</bug_when>
    <thetext>This will be a primitive implementation, a spec-compliant implementation will follow in https://bugs.webkit.org/show_bug.cgi?id=179536.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370434</commentid>
    <comment_count>3</comment_count>
      <attachid>326611</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-10 11:44:08 -0800</bug_when>
    <thetext>Created attachment 326611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370457</commentid>
    <comment_count>4</comment_count>
      <attachid>326611</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-10 12:40:52 -0800</bug_when>
    <thetext>Comment on attachment 326611
Patch

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

&gt; Source/WebCore/animation/AnimationEffect.h:44
&gt; +    RefPtr&lt;WebAnimation&gt; animation() { return m_animation; }

Returning a RefPtr causes ref churn. Return a raw pointer and make the function const.

&gt; Source/WebCore/animation/AnimationEffect.h:58
&gt; +    RefPtr&lt;WebAnimation&gt; m_animation;

Can this be a Ref&lt;&gt;?

&gt; Source/WebCore/animation/AnimationTimeline.cpp:79
&gt; +    auto iterator = m_elementToAnimationsMap.find(&amp;element);
&gt; +    if (iterator != m_elementToAnimationsMap.end()) {
&gt; +        iterator-&gt;value.append(&amp;animation);
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    m_elementToAnimationsMap.set(&amp;element, Vector&lt;RefPtr&lt;WebAnimation&gt;&gt; { &amp;animation });

There&apos;s an ensure() on hash map that does both of these.

What if animationWasAddedToElement() is called twice with the same animation and same element?

&gt; Source/WebCore/animation/AnimationTimeline.cpp:89
&gt; +    auto iterator = m_elementToAnimationsMap.find(&amp;element);
&gt; +    if (iterator == m_elementToAnimationsMap.end())
&gt; +        return;
&gt; +
&gt; +    auto&amp; animations = iterator-&gt;value;
&gt; +    animations.removeFirst(&amp;animation);

This is two hash lookups. I think can can remove(iterator).

&gt; Source/WebCore/animation/AnimationTimeline.h:58
&gt; +    HashSet&lt;RefPtr&lt;WebAnimation&gt;&gt; animations() const { return m_animations; }
&gt; +    Vector&lt;RefPtr&lt;WebAnimation&gt;&gt; animationsForElement(Element&amp;);

Lots of copying here. return references.

&gt; Source/WebCore/animation/AnimationTimeline.h:76
&gt; +    HashMap&lt;RefPtr&lt;Element&gt;, Vector&lt;RefPtr&lt;WebAnimation&gt;&gt;&gt; m_elementToAnimationsMap;

Should this really store owning references to Elements? You have to be careful to avoid creating a ref cycle between Elements and WebAnimations.

&gt; Source/WebCore/animation/WebAnimation.cpp:71
&gt; +            auto keyframeEffect = downcast&lt;KeyframeEffect&gt;(m_effect.get());
&gt; +            auto target = keyframeEffect-&gt;target();

Should these be auto&amp; ?

&gt; Source/WebCore/animation/WebAnimation.cpp:86
&gt; +            auto keyframeEffect = downcast&lt;KeyframeEffect&gt;(effect.get());
&gt; +            auto target = keyframeEffect-&gt;target();

auto&amp;?

&gt; Source/WebCore/animation/WebAnimation.cpp:111
&gt; +        auto keyframeEffect = downcast&lt;KeyframeEffect&gt;(m_effect.get());
&gt; +        auto target = keyframeEffect-&gt;target();

auto&amp;?

&gt; Source/WebCore/dom/Document.cpp:7469
&gt; +        for (auto animation : m_timeline-&gt;animations())

auto&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370476</commentid>
    <comment_count>5</comment_count>
      <attachid>326624</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-10 13:55:47 -0800</bug_when>
    <thetext>Created attachment 326624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370483</commentid>
    <comment_count>6</comment_count>
      <attachid>326624</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-10 14:00:36 -0800</bug_when>
    <thetext>Comment on attachment 326624
Patch

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

&gt; Source/WebCore/animation/AnimationEffect.h:45
&gt; +    void setAnimation(WebAnimation* animation) { m_animation = animation; }

I think the current hotness here is to pass a RefPtr&lt;WebAnimation&gt;&amp;&amp; so the caller can WTFMove if they are passing ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370500</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-10 14:12:13 -0800</bug_when>
    <thetext>Committed r224705: &lt;https://trac.webkit.org/changeset/224705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370544</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-11-10 15:35:20 -0800</bug_when>
    <thetext>This change introduced a crash seen with LayoutTest http/wpt/web-animations/timing-model/animations/updating-the-finished-state.html on WK1:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x000000010e975899 WebCore::DocumentTimeline::currentTime() + 73 (DocumentTimeline.cpp:73)
1   com.apple.WebCore             	0x000000010e975a4e WebCore::DocumentTimeline::updateAnimationSchedule() + 46 (DocumentTimeline.cpp:119)
2   com.apple.WebCore             	0x000000010e975a0e WebCore::DocumentTimeline::performInvalidationTask() + 14 (DocumentTimeline.cpp:109)
3   com.apple.WebCore             	0x000000010f04bf8a WebCore::TaskDispatcher&lt;WebCore::Timer&gt;::sharedTimerFired() + 298 (GenericTaskQueue.cpp:65)
4   com.apple.WebCore             	0x000000010f06b490 WebCore::ThreadTimers::sharedTimerFiredInternal() + 176 (ThreadTimers.cpp:121)
5   com.apple.WebCore             	0x000000010f0a629f WebCore::timerFired(__CFRunLoopTimer*, void*) + 31 (MainThreadSharedTimerCF.cpp:75)
6   com.apple.CoreFoundation      	0x00007fff93fedae4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
7   com.apple.CoreFoundation      	0x00007fff93fed773 __CFRunLoopDoTimer + 1075
8   com.apple.CoreFoundation      	0x00007fff93fed2ca __CFRunLoopDoTimers + 298
9   com.apple.CoreFoundation      	0x00007fff93fe47c1 __CFRunLoopRun + 1841
10  com.apple.CoreFoundation      	0x00007fff93fe3e28 CFRunLoopRunSpecific + 296
11  DumpRenderTree                	0x000000010b49b1cd runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) + 2568 (DumpRenderTree.mm:2027)
12  DumpRenderTree                	0x000000010b49a571 dumpRenderTree(int, char const**) + 3097 (DumpRenderTree.mm:1291)
13  DumpRenderTree                	0x000000010b49bce5 DumpRenderTreeMain(int, char const**) + 1627 (DumpRenderTree.mm:1407)
14  libdyld.dylib                 	0x00007fff9374c5ad start + 1

https://build.webkit.org/results/Apple%20El%20Capitan%20Release%20WK1%20(Tests)/r224705%20(6189)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370549</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-11-10 15:44:39 -0800</bug_when>
    <thetext>Reverted r224705 for reason:

Introduced a LayoutTest crash on WK1.

Committed r224709: &lt;https://trac.webkit.org/changeset/224709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370959</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-13 11:14:52 -0800</bug_when>
    <thetext>Committed r224760: &lt;https://trac.webkit.org/changeset/224760&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326611</attachid>
            <date>2017-11-10 11:44:08 -0800</date>
            <delta_ts>2017-11-10 13:55:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179535-20171110114407.patch</filename>
            <type>text/plain</type>
            <size>34281</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNlYjRhYzNkOGMyNWZj
MTk2Mzc1ZDE4Yjg1NGI3MDgxMzQ5YjRjZC4uMDM1YzZjNjVmMjM2M2FhNzYzMDJhN2JlZDA2ZDQy
ZWZjNmIyNjc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3LTExLTEwICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBJbXBsZW1lbnQgZ2V0QW5pbWF0aW9ucygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1MzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0OTMy
NDc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IG5vdyBhbGxvdyBhIGxpc3Qgb2YgYW5pbWF0aW9ucyBmb3IgYSBkb2N1bWVudCwgd2l0aCBEb2N1
bWVudC5nZXRBbmltYXRpb25zKCksIG9yIGZvciBhbgorICAgICAgICBlbGVtZW50LCB3aXRoIEFu
aW1hdGFibGUuZ2V0QW5pbWF0aW9ucygpLCB0byBiZSByZXR1cm5lZC4gSW4gb3JkZXIgdG8gc3Vw
cG9ydCB0aGlzLCB3ZSBtYWludGFpbgorICAgICAgICBhIG1hcCBvbiBBbmltYXRpb25UaW1lbGlu
ZSBvZiBhbGwgYW5pbWF0aW9ucyBmb3IgYSBnaXZlbiBlbGVtZW50LiBUaGlzIG1hcCBpcyBpbnZh
bGlkYXRlZAorICAgICAgICB3aGVuIGFuIGFuaW1hdGlvbidzIHRpbWVsaW5lIGNoYW5nZXMgYW5k
IHdoZW4gYW4gYW5pbWF0aW9uJ3MgZWZmZWN0IGNoYW5nZXMuIE5vdGUgdGhhdCB0aGUKKyAgICAg
ICAgV2ViIEFuaW1hdGlvbnMgc3BlYyBtYW5kYXRlcyB0aGF0IGFuIEFuaW1hdGlvbkVmZmVjdCBj
YW4gb25seSBiZSBhIHNpbmdsZSBhbmltYXRpb24ncyBlZmZlY3QuCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvZG9jdW1lbnQtZ2V0LWFuaW1h
dGlvbnMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMvaW50
ZXJmYWNlcy9lbGVtZW50LWdldC1hbmltYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
d3B0L3drLXdlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC9hbmltYXRpb24tZWZmZWN0LXVuaXF1
ZS1yZWxhdGlvbnNoaXAuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBBbmlt
YXRhYmxlLmlkbC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBBZGQgQW5pbWF0YWJs
ZS5pZGwuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQg
QW5pbWF0YWJsZS5pZGwuCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsOiBBIG5l
dyBpbnRlcmZhY2UgdGhhdCBFbGVtZW50IGltcGxlbWVudHMgYW5kIHdoaWNoIGN1cnJlbnRseSBv
bmx5IGV4cG9zZXMKKyAgICAgICAgZ2V0QW5pbWF0aW9ucygpLCB0aGUgYW5pbWF0ZSgpIG1ldGhv
ZCB3aWxsIGJlIGFkZGVkIGxhdGVyLgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25FZmZl
Y3QuaDogQWRkIGEgbmV3IG1fYW5pbWF0aW9uIG1lbWJlciB0byByZWZlcmVuY2UgdGhlIGFuaW1h
dGlvbiB1c2luZyB0aGlzCisgICAgICAgIGVmZmVjdC4gVGhpcyByZWxhdGlvbnNoaXAgaXMgcmVx
dWlyZWQgc28gd2UgZ3VhcmFudGVlIHRoYXQgYW4gZWZmZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBh
IHNpbmdsZQorICAgICAgICBhbmltYXRpb24gYXQgbW9zdC4KKyAgICAgICAgKFdlYkNvcmU6OkFu
aW1hdGlvbkVmZmVjdDo6YW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkVm
ZmVjdDo6c2V0QW5pbWF0aW9uKToKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldh
c0FkZGVkVG9FbGVtZW50KTogTmV3IG1ldGhvZCB0byBub3RpZnkgdGhlIHRpbWVsaW5lIHRoYXQg
YW4KKyAgICAgICAgYW5pbWF0aW9uIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIHRpbWVsaW5lIGhhcyBi
ZWVuIGFzc29jaWF0ZWQgd2l0aCBhIG5ldyBlbGVtZW50IHRocm91Z2ggaXRzIGVmZmVjdC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNSZW1vdmVkRnJv
bUVsZW1lbnQpOiBOZXcgbWV0aG9kIHRvIG5vdGlmeSB0aGUgdGltZWxpbmUgdGhhdCBhbgorICAg
ICAgICBhbmltYXRpb24gcmVnaXN0ZXJlZCB3aXRoIHRoaXMgdGltZWxpbmUgaGFzIGJlZW4gZGlz
YXNzb2NpYXRlZCB3aXRoIGFuIGVsZW1lbnQgdGhyb3VnaCBpdHMgZWZmZWN0LgorICAgICAgICAo
V2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbnNGb3JFbGVtZW50KTogTmV3IG1l
dGhvZCByZXR1cm5pbmcgYWxsIGFuaW1hdGlvbnMgcmVnaXN0ZXJlZCB3aXRoCisgICAgICAgIHRo
aXMgdGltZWxpbmUgZm9yIGEgZ2l2ZW4gZWxlbWVudC4KKyAgICAgICAgKiBhbmltYXRpb24vQW5p
bWF0aW9uVGltZWxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjph
bmltYXRpb25zIGNvbnN0KTogQWxsIGFuaW1hdGlvbnMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgdGlt
ZWxpbmUuCisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJBbmltYXRpb246OnNldEVmZmVjdCk6IEFzIGFuIGFuaW1hdGlvbidzIGVmZmVj
dCBjaGFuZ2VzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBvbGQKKyAgICAgICAgZWZmZWN0
IG5vIGxvbmdlciBoYXMgYW4gYXNzb2NpYXRlZCBhbmltYXRpb24sIGFuZCB0aGF0IHRoZSBuZXcg
ZWZmZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFuaW1hdGlvbi4KKyAgICAgICAgQWRkaXRp
b25hbGx5LCB3ZSB1cGRhdGUgdGhlIGVsZW1lbnQtdG8tYW5pbWF0aW9ucyBtYXAgb24gdGhlIGFu
aW1hdGlvbidzIHRpbWVsaW5lLgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzZXRU
aW1lbGluZSk6IFVwZGF0ZSB0aGUgZWxlbWVudC10by1hbmltYXRpb25zIG1hcCBvbiB0aGUgZm9y
bWVyIGFuZCBuZXcgdGltZWxpbmUuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRBbmltYXRpb25zKTogT2J0YWluIGFsbCBhbmltYXRp
b25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRvY3VtZW50J3MgdGltZWxpbmUuCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBbmltYXRpb25z
KTogT2J0YWluIGFsbCBhbmltYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGVsZW1lbnQuCisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorCiAyMDE3LTExLTA1ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBTY2hlZHVs
ZSBhbmltYXRpb25zIHJlZ2lzdGVyZWQgb24gdGhlIGRvY3VtZW50IHRpbWVsaW5lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDVjNGQxYjNhYjdkMzU2MWViM2NkZDc1ZmVhZDMzMGFmMzgzYjA3NTgu
LmE1ZDQwYzM1MzA1N2NiODhlZWJjNDFlMzI0YzI1ZGI2M2Y0MjY5ODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC00MjEsNiArNDIxLDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMK
ICAgICBNb2R1bGVzL3dlYnZyL1ZSUG9zZS5pZGwKICAgICBNb2R1bGVzL3dlYnZyL1ZSU3RhZ2VQ
YXJhbWV0ZXJzLmlkbAogCisgICAgYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsCiAgICAgYW5pbWF0
aW9uL0FuaW1hdGlvbkVmZmVjdC5pZGwKICAgICBhbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0VGlt
aW5nLmlkbAogICAgIGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5pZGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDQwMzRhYmYyYmUxNzdjNDBiYzllYjI3ZTNmYTdmOGQxOTUz
OGQzYWMuLmIzN2U1ZjVmZjhlMTBlNzRmZTYwZTQzM2M2ODU2ODlmNDZiNGI2YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzQzLDYgKzM0Myw3IEBAIEpTX0JJTkRJTkdfSURM
UyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2VidnIvVlJMYXllckluaXQuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2VidnIvVlJQb3NlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYnZyL1ZSU3RhZ2VQYXJhbWV0ZXJzLmlkbCBcCisgICAgJChXZWJDb3JlKS9hbmlt
YXRpb24vQW5pbWF0YWJsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvYW5pbWF0aW9uL0FuaW1hdGlv
bkVmZmVjdC5pZGwgXAogICAgICQoV2ViQ29yZSkvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdFRp
bWluZy5pZGwgXAogICAgICQoV2ViQ29yZSkvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggM2E2OWI2MGViNjQwZGM0OTYzNWJjZjcyNTFmYjhhNDlhNDJhMmZhOC4uM2Y4Mjc1
MmJjMjM1NjQ4NmU4MTljMjEwOGZlYjk4ZmI1ZWZhYjg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY4NCw2ICs4Njg0LDcg
QEAKIAkJNzFBNTdERUYxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQTU3REYwMTU0QkUyNUMwMDA5RDEyMCAv
KiBTVkdQYXRoVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1BhdGhVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFCMDQ2MEEx
REQzQzJFRTAwRUUxOUNGIC8qIHN0YXR1cy1zdXBwb3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5qYXZhc2NyaXB0OyBwYXRoID0gInN0YXR1cy1zdXBwb3J0LmpzIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzFDNUJCMUIxRkI2MTFFQTAwMDdBMkFFIC8qIEFuaW1hdGFibGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFuaW1hdGFibGUuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
Q0M3QTFGMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkRW51bWVyYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUQwMkQ5MDFEQjU1QzRFMDBERDVD
RjUgLyogbWFpbi5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1h
aW4uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODYwMyw2ICsxODYwNCw3IEBA
CiAJCTcxMDI1RUMxMUY5OUYwOTYwMDRBMjUwQyAvKiBhbmltYXRpb24gKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTcxQzVCQjFCMUZCNjExRUEwMDA3QTJB
RSAvKiBBbmltYXRhYmxlLmlkbCAqLywKIAkJCQk3MTU1NkNCMTFGOUYwOTlGMDBFNzhEMDggLyog
QW5pbWF0aW9uRWZmZWN0LmNwcCAqLywKIAkJCQk3MTU1NkNBRDFGOUYwOTlEMDBFNzhEMDggLyog
QW5pbWF0aW9uRWZmZWN0LmggKi8sCiAJCQkJNzE1NTZDQjAxRjlGMDk5RTAwRTc4RDA4IC8qIEFu
aW1hdGlvbkVmZmVjdC5pZGwgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0YWJsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0YWJsZS5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTQwYmFmMmE3ZTNlZmI3ODExYTYzYjhlNWEzOWJiMTY2OTc0MzhmMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRhYmxlLmlk
bApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworWworICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViQW5pbWF0aW9ucywKKyAgICBOb0lu
dGVyZmFjZU9iamVjdAorXSBpbnRlcmZhY2UgQW5pbWF0YWJsZSB7CisgICAgc2VxdWVuY2U8V2Vi
QW5pbWF0aW9uPiBnZXRBbmltYXRpb25zKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0FuaW1hdGlvbkVmZmVjdC5oCmluZGV4IDcwNjM4M2Y3MjRmM2M0MDEzYzIwMDJjMTE1M2Q1ZDJl
NzU2ZTExOWUuLmM4OGIxNWMyNTA2NDAwMDdhZmQ4Yzc5Y2QzZTVhMWM3MTdmMjZkZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0VGltaW5nLmgiCisj
aW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQwLDYgKzQx
LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+QW5pbWF0aW9uRWZmZWN0KCkgeyB9CiAKKyAg
ICBSZWZQdHI8V2ViQW5pbWF0aW9uPiBhbmltYXRpb24oKSB7IHJldHVybiBtX2FuaW1hdGlvbjsg
fQorICAgIHZvaWQgc2V0QW5pbWF0aW9uKFJlZlB0cjxXZWJBbmltYXRpb24+IGFuaW1hdGlvbikg
eyBtX2FuaW1hdGlvbiA9IGFuaW1hdGlvbjsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBDbGFz
c1R5cGUgewogICAgICAgICBLZXlmcmFtZUVmZmVjdENsYXNzCkBAIC01MSw2ICs1NSw3IEBAIHBy
b3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBDbGFzc1R5cGUgbV9jbGFzc1R5cGU7CisgICAgUmVm
UHRyPFdlYkFuaW1hdGlvbj4gbV9hbmltYXRpb247CiAgICAgUmVmUHRyPEFuaW1hdGlvbkVmZmVj
dFRpbWluZz4gbV90aW1pbmc7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Fu
aW1hdGlvblRpbWVsaW5lLmNwcAppbmRleCBhNjZiZjNmMTJhZmM1M2U3NTAwM2RjZGM3NjRmZTAy
YzY0OWQ4NWM4Li5jMDYxMzIxNGQ1MTc2NzUzMTY3ZDQ3MjU0YWY5OGJlZmViYjcxZjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKQEAgLTY4
LDYgKzY4LDM3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnNldEN1cnJlbnRUaW1lKFNlY29u
ZHMgY3VycmVudFRpbWUpCiAgICAgYW5pbWF0aW9uVGltaW5nTW9kZWxEaWRDaGFuZ2UoKTsKIH0K
IAordm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQoV2Vi
QW5pbWF0aW9uJiBhbmltYXRpb24sIEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgYXV0byBpdGVy
YXRvciA9IG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcC5maW5kKCZlbGVtZW50KTsKKyAgICBpZiAo
aXRlcmF0b3IgIT0gbV9lbGVtZW50VG9BbmltYXRpb25zTWFwLmVuZCgpKSB7CisgICAgICAgIGl0
ZXJhdG9yLT52YWx1ZS5hcHBlbmQoJmFuaW1hdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2VsZW1lbnRUb0FuaW1hdGlvbnNNYXAuc2V0KCZlbGVtZW50LCBWZWN0b3I8UmVm
UHRyPFdlYkFuaW1hdGlvbj4+IHsgJmFuaW1hdGlvbiB9KTsKK30KKwordm9pZCBBbmltYXRpb25U
aW1lbGluZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KFdlYkFuaW1hdGlvbiYgYW5p
bWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2VsZW1l
bnRUb0FuaW1hdGlvbnNNYXAuZmluZCgmZWxlbWVudCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1f
ZWxlbWVudFRvQW5pbWF0aW9uc01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byYgYW5pbWF0aW9ucyA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBhbmltYXRpb25zLnJlbW92ZUZp
cnN0KCZhbmltYXRpb24pOworICAgIGlmICghYW5pbWF0aW9ucy5zaXplKCkpCisgICAgICAgIG1f
ZWxlbWVudFRvQW5pbWF0aW9uc01hcC5yZW1vdmUoJmVsZW1lbnQpOworfQorCitWZWN0b3I8UmVm
UHRyPFdlYkFuaW1hdGlvbj4+IEFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25zRm9yRWxlbWVu
dChFbGVtZW50JiBlbGVtZW50KQoreworICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4g
YW5pbWF0aW9uczsKKyAgICBpZiAobV9lbGVtZW50VG9BbmltYXRpb25zTWFwLmNvbnRhaW5zKCZl
bGVtZW50KSkKKyAgICAgICAgYW5pbWF0aW9ucyA9IG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcC5n
ZXQoJmVsZW1lbnQpOworICAgIHJldHVybiBhbmltYXRpb25zOworfQorCiBTdHJpbmcgQW5pbWF0
aW9uVGltZWxpbmU6OmRlc2NyaXB0aW9uKCkKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKaW5kZXggMGI3Mjg1
N2UxNmNhYjAyYmI2ZmQzMzEzMGQ4NWIyZDg1ZWE2NDM0Zi4uZDYyNWRkM2Q5ODY0ZmNlMjQ1MGRk
NDU0NWJjZjFiNzBhYWU0Zjg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0FuaW1hdGlvblRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIldlYkFuaW1hdGlv
bi5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTM2LDYgKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBBbmltYXRpb25FZmZlY3Q7CitjbGFzcyBFbGVtZW50OwogY2xhc3MgV2ViQW5p
bWF0aW9uOwogCiBjbGFzcyBBbmltYXRpb25UaW1lbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFu
aW1hdGlvblRpbWVsaW5lPiB7CkBAIC01MSw2ICs1NCwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0aW9uVGltaW5nTW9kZWxEaWRDaGFuZ2UoKSB7IH07CiAKKyAgICBIYXNo
U2V0PFJlZlB0cjxXZWJBbmltYXRpb24+PiBhbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9h
bmltYXRpb25zOyB9CisgICAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBhbmltYXRpb25z
Rm9yRWxlbWVudChFbGVtZW50Jik7CisgICAgdm9pZCBhbmltYXRpb25XYXNBZGRlZFRvRWxlbWVu
dChXZWJBbmltYXRpb24mLCBFbGVtZW50Jik7CisgICAgdm9pZCBhbmltYXRpb25XYXNSZW1vdmVk
RnJvbUVsZW1lbnQoV2ViQW5pbWF0aW9uJiwgRWxlbWVudCYpOworCiAgICAgdmlydHVhbCB+QW5p
bWF0aW9uVGltZWxpbmUoKTsKIAogcHJvdGVjdGVkOgpAQCAtNjAsMTMgKzY4LDEyIEBAIHByb3Rl
Y3RlZDoKIAogICAgIENsYXNzVHlwZSBjbGFzc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNz
VHlwZTsgfQogCi0gICAgSGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gYW5pbWF0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uczsgfQotCiAgICAgZXhwbGljaXQgQW5pbWF0aW9u
VGltZWxpbmUoQ2xhc3NUeXBlKTsKIAogcHJpdmF0ZToKICAgICBDbGFzc1R5cGUgbV9jbGFzc1R5
cGU7CiAgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtX2N1cnJlbnRUaW1lOworICAgIEhhc2hN
YXA8UmVmUHRyPEVsZW1lbnQ+LCBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+PiBtX2VsZW1l
bnRUb0FuaW1hdGlvbnNNYXA7CiAgICAgSGFzaFNldDxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gbV9h
bmltYXRpb25zOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dl
YkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNw
cAppbmRleCA4ZjJkYWE4M2ZhNWRmNjI1YjIxYTMzYzY4MGU4MmM2MWUzMGQ5ZTg0Li5iNjA0OThh
MmE4NWFhNjQ0NDQzZGU5YjI0ZDQ1MTc4MDY2M2UyNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFuaW1h
dGlvbkVmZmVjdC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvblRpbWVsaW5lLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdC5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCw3ICszOSw3IEBA
IFJlZjxXZWJBbmltYXRpb24+IFdlYkFuaW1hdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgQW5pbWF0aW9uRWZmZWN0KiBlZmZlCiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3
IFdlYkFuaW1hdGlvbigpKTsKIAogICAgIHJlc3VsdC0+c2V0RWZmZWN0KGVmZmVjdCk7Ci0gICAg
CisKICAgICAvLyBGSVhNRTogdGhlIHNwZWMgbWFuZGF0ZXMgZGlzdGluZ3Vpc2hpbmcgYmV0d2Vl
biBhbiBvbWl0dGVkIHRpbWVsaW5lIHBhcmFtZXRlcgogICAgIC8vIGFuZCBhbiBleHBsaWNpdCBu
dWxsIG9yIHVuZGVmaW5lZCB2YWx1ZSAod2Via2l0Lm9yZy9iLzE3OTA2NSkuCiAgICAgcmVzdWx0
LT5zZXRUaW1lbGluZSh0aW1lbGluZSA/IHRpbWVsaW5lIDogJmRvY3VtZW50LnRpbWVsaW5lKCkp
OwpAQCAtNjEsNiArNjIsMzMgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldEVmZmVjdChSZWZQdHI8
QW5pbWF0aW9uRWZmZWN0PiYmIGVmZmVjdCkKICAgICBpZiAoZWZmZWN0ID09IG1fZWZmZWN0KQog
ICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9lZmZlY3QpIHsKKyAgICAgICAgbV9lZmZlY3Qt
PnNldEFuaW1hdGlvbihudWxscHRyKTsKKworICAgICAgICAvLyBVcGRhdGUgdGhlIEVsZW1lbnQg
dG8gQW5pbWF0aW9uIG1hcC4KKyAgICAgICAgaWYgKG1fdGltZWxpbmUgJiYgbV9lZmZlY3QtPmlz
S2V5ZnJhbWVFZmZlY3QoKSkgeworICAgICAgICAgICAgYXV0byBrZXlmcmFtZUVmZmVjdCA9IGRv
d25jYXN0PEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdC5nZXQoKSk7CisgICAgICAgICAgICBhdXRv
IHRhcmdldCA9IGtleWZyYW1lRWZmZWN0LT50YXJnZXQoKTsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXQpCisgICAgICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21F
bGVtZW50KCp0aGlzLCAqdGFyZ2V0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChlZmZl
Y3QpIHsKKyAgICAgICAgLy8gQW4gYW5pbWF0aW9uIGVmZmVjdCBjYW4gb25seSBiZSBhc3NvY2lh
dGVkIHdpdGggYSBzaW5nbGUgYW5pbWF0aW9uLgorICAgICAgICBpZiAoZWZmZWN0LT5hbmltYXRp
b24oKSkKKyAgICAgICAgICAgIGVmZmVjdC0+YW5pbWF0aW9uKCktPnNldEVmZmVjdChudWxscHRy
KTsKKworICAgICAgICBlZmZlY3QtPnNldEFuaW1hdGlvbih0aGlzKTsKKworICAgICAgICBpZiAo
bV90aW1lbGluZSAmJiBlZmZlY3QtPmlzS2V5ZnJhbWVFZmZlY3QoKSkgeworICAgICAgICAgICAg
YXV0byBrZXlmcmFtZUVmZmVjdCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihlZmZlY3QuZ2V0
KCkpOworICAgICAgICAgICAgYXV0byB0YXJnZXQgPSBrZXlmcmFtZUVmZmVjdC0+dGFyZ2V0KCk7
CisgICAgICAgICAgICBpZiAodGFyZ2V0KQorICAgICAgICAgICAgICAgIG1fdGltZWxpbmUtPmFu
aW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KCp0aGlzLCAqdGFyZ2V0KTsKKyAgICAgICAgfQorICAg
IH0KKwogICAgIG1fZWZmZWN0ID0gV1RGTW92ZShlZmZlY3QpOwogfQogCkBAIC03OCw2ICsxMDYs
MTcgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVsaW5lKFJlZlB0cjxBbmltYXRpb25UaW1l
bGluZT4mJiB0aW1lbGluZSkKICAgICBpZiAodGltZWxpbmUpCiAgICAgICAgIHRpbWVsaW5lLT5h
ZGRBbmltYXRpb24oKnRoaXMpOwogCisgICAgaWYgKG1fZWZmZWN0ICYmIG1fZWZmZWN0LT5pc0tl
eWZyYW1lRWZmZWN0KCkpIHsKKyAgICAgICAgYXV0byBrZXlmcmFtZUVmZmVjdCA9IGRvd25jYXN0
PEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdC5nZXQoKSk7CisgICAgICAgIGF1dG8gdGFyZ2V0ID0g
a2V5ZnJhbWVFZmZlY3QtPnRhcmdldCgpOworICAgICAgICBpZiAodGFyZ2V0KSB7CisgICAgICAg
ICAgICBpZiAobV90aW1lbGluZSkKKyAgICAgICAgICAgICAgICBtX3RpbWVsaW5lLT5hbmltYXRp
b25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoKnRoaXMsICp0YXJnZXQpOworICAgICAgICAgICAgaWYg
KHRpbWVsaW5lKQorICAgICAgICAgICAgICAgIHRpbWVsaW5lLT5hbmltYXRpb25XYXNBZGRlZFRv
RWxlbWVudCgqdGhpcywgKnRhcmdldCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBtX3RpbWVs
aW5lID0gV1RGTW92ZSh0aW1lbGluZSk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCBhNTViZDliOTkwOGIwZWM4ZTJjN2EyNmE3MmY2ZWZkNzI1MDFkOTIwLi4zNGUwNTUxNWE0
MWMzZGQwNGI4Y2RhYTU2YzIwNDgzOWM4ODhhODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50U2hhcmVkT2Jq
ZWN0UG9vbC5oIgorI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKICNpbmNsdWRlICJEb2N1
bWVudFR5cGUuaCIKICNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBA
IC0xOTQsNiArMTk1LDcgQEAKICNpbmNsdWRlICJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oIgog
I2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlu
a1N0YXRlLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVu
dC5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnQu
aCIKQEAgLTc0NTksNiArNzQ2MSwxNyBAQCBEb2N1bWVudFRpbWVsaW5lJiBEb2N1bWVudDo6dGlt
ZWxpbmUoKQogICAgIHJldHVybiAqbV90aW1lbGluZTsKIH0KIAorVmVjdG9yPFJlZlB0cjxXZWJB
bmltYXRpb24+PiBEb2N1bWVudDo6Z2V0QW5pbWF0aW9ucygpCit7CisgICAgVmVjdG9yPFJlZlB0
cjxXZWJBbmltYXRpb24+PiBhbmltYXRpb25zOworICAgIGlmIChtX3RpbWVsaW5lKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBGaWx0ZXIgYW5kIG9yZGVyIHRoZSBsaXN0IGFzIHNwZWNpZmllZCAod2Vi
a2l0Lm9yZy9iLzE3OTUzNSkuCisgICAgICAgIGZvciAoYXV0byBhbmltYXRpb24gOiBtX3RpbWVs
aW5lLT5hbmltYXRpb25zKCkpCisgICAgICAgICAgICBhbmltYXRpb25zLmFwcGVuZChhbmltYXRp
b24pOworICAgIH0KKyAgICByZXR1cm4gYW5pbWF0aW9uczsKK30KKwogc3RhdGljIE1lc3NhZ2VT
b3VyY2UgbWVzc2FnZVNvdXJjZUZvcldURkxvZ0NoYW5uZWwoY29uc3QgV1RGTG9nQ2hhbm5lbCYg
Y2hhbm5lbCkKIHsKICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRp
YUNoYW5uZWwgPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgibWVkaWEiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggZDgxN2E5NjY0NmYxNjg5MjI4YjIwZGQ5YzkyY2ZiZWY5MjUxM2Y0Ny4uMmE4
NmI3ZjAzZjlkMjg3NDYyMTc3YjlmZDE2YmU3ZTk4NDZlZTFkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbnRh
aW5lck5vZGUuaCIKICNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKLSNpbmNsdWRlICJE
b2N1bWVudFRpbWVsaW5lLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKICNpbmNsdWRl
ICJGb2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3RvckNsaWVudC5oIgpAQCAt
MTAyLDYgKzEwMSw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOwogY2xhc3MgRG9jdW1lbnRQYXJzZXI7CiBjbGFzcyBEb2N1bWVudFNoYXJl
ZE9iamVjdFBvb2w7CitjbGFzcyBEb2N1bWVudFRpbWVsaW5lOwogY2xhc3MgRG9jdW1lbnRUeXBl
OwogY2xhc3MgRXh0ZW5zaW9uU3R5bGVTaGVldHM7CiBjbGFzcyBGbG9hdFF1YWQ7CkBAIC0xNzMs
NiArMTczLDcgQEAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRyZWVXYWxrZXI7
CiBjbGFzcyBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50OwogY2xhc3MgVmlzaXRlZExpbmtTdGF0ZTsK
K2NsYXNzIFdlYkFuaW1hdGlvbjsKIGNsYXNzIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ7CiBjbGFz
cyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OwpA
QCAtMTM3Miw2ICsxMzczLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29uc29sZU1lc3NhZ2VMaXN0ZW5lcihSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+JiYpOyAvLyBGb3Ig
dGVzdGluZy4KIAogICAgIERvY3VtZW50VGltZWxpbmUmIHRpbWVsaW5lKCk7CisgICAgVmVjdG9y
PFJlZlB0cjxXZWJBbmltYXRpb24+PiBnZXRBbmltYXRpb25zKCk7CiAgICAgICAgIAogcHJvdGVj
dGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5vblJl
bmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4
IGJmYzRjM2RmNjdiMGM5NGFkMDRmNmRiN2MwZmZjYmU5MGE2ZmMzZjMuLmU3OWM3MDdlMzg2YmFh
ZjYyN2I2ZDE2MmViYWI3MTJmMjk5ZjFjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAt
MjEyLDYgKzIxMiw3IEBAIHR5cGVkZWYgKAogICAgIFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0
cmlidXRlIEhUTUxBbGxDb2xsZWN0aW9uIGFsbDsgLyogW1NhbWVPYmplY3RdICovCiAKICAgICBb
RW5hYmxlZEF0UnVudGltZT1XZWJBbmltYXRpb25zXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1l
bnRUaW1lbGluZSB0aW1lbGluZTsKKyAgICBbRW5hYmxlZEF0UnVudGltZT1XZWJBbmltYXRpb25z
XSBzZXF1ZW5jZTxXZWJBbmltYXRpb24+IGdldEFuaW1hdGlvbnMoKTsKIH07CiAKIGVudW0gRG9j
dW1lbnRSZWFkeVN0YXRlIHsgImxvYWRpbmciLCAiaW50ZXJhY3RpdmUiLCAiY29tcGxldGUiIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTA0Y2ZiMDViZWY3MDBlNjJmODNlMmFlZmMwYjE1
YmI0NjU0ZWJjZC4uNDFlM2FiYTU4YWZlYWQyNjNlNzVmZmZhNmNkN2RkOWFiMDFlYzMwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRPTVJlY3RM
aXN0LmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRTaGFy
ZWRPYmplY3RQb29sLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRUaW1lbGluZS5oIgogI2luY2x1ZGUg
IkVkaXRpbmcuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFbGVt
ZW50UmFyZURhdGEuaCIKQEAgLTM2ODgsNCArMzY4OSwxMCBAQCBFbGVtZW50KiBFbGVtZW50Ojpm
aW5kQW5jaG9yRWxlbWVudEZvckxpbmsoU3RyaW5nJiBvdXRBbmNob3JOYW1lKQogICAgIHJldHVy
biBudWxscHRyOwogfQogCitWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEVsZW1lbnQ6Omdl
dEFuaW1hdGlvbnMoKQoreworICAgIC8vIEZJWE1FOiBGaWx0ZXIgYW5kIG9yZGVyIHRoZSBsaXN0
IGFzIHNwZWNpZmllZCAod2Via2l0Lm9yZy9iLzE3OTUzNSkuCisgICAgcmV0dXJuIGRvY3VtZW50
KCkudGltZWxpbmUoKS5hbmltYXRpb25zRm9yRWxlbWVudCgqdGhpcyk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDUzYTUxY2M2NDNjNzdiZTAxY2Ey
YTZhODEyNjM1NTJjMjY4NzYzN2IuLjBhNTA0NzdiMTE3MmU1Mzk0NDg4NjQ4OTRjZTMyNjJiYjgy
NTgyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNTUwLDYgKzU1MCw4IEBAIHB1YmxpYzoKIAog
ICAgIEVsZW1lbnQqIGZpbmRBbmNob3JFbGVtZW50Rm9yTGluayhTdHJpbmcmIG91dEFuY2hvck5h
bWUpOwogCisgICAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBnZXRBbmltYXRpb25zKCk7
CisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIENvbnN0cnVjdGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggNWZkMzgw
OGU1ZjlkOWQwMjY4NzBkMTM1ODAxNWU3MTE3NDVjZGJiNi4uZDlkYTcxYmM0NDU1YTcxYTc5NGI1
ZGQ0M2I4Mzc0OTQzNWY3YTA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMTQ2LDYgKzE0
Niw3IEBAIGRpY3Rpb25hcnkgU2hhZG93Um9vdEluaXQgewogICAgIHJlcXVpcmVkIFNoYWRvd1Jv
b3RNb2RlIG1vZGU7CiB9OwogCitFbGVtZW50IGltcGxlbWVudHMgQW5pbWF0YWJsZTsKIEVsZW1l
bnQgaW1wbGVtZW50cyBDaGlsZE5vZGU7CiBFbGVtZW50IGltcGxlbWVudHMgRG9jdW1lbnRBbmRF
bGVtZW50RXZlbnRIYW5kbGVyczsKIEVsZW1lbnQgaW1wbGVtZW50cyBOb25Eb2N1bWVudFR5cGVD
aGlsZE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNzI2NzIzNTZh
M2RhYzc5YTFiNzBiMjFkOTVhNjhjMTQ1ZjM2MmNjOC4uNDhmZWZiMGNiZDY2MGM4NDQxMTA2MTFj
NjY5ZTgzYmRjNTY5N2JhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFj
dGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgiCisjaW5jbHVkZSAiQW5pbWF0aW9uVGltZWxpbmUu
aCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkF1ZGlv
U2Vzc2lvbi5oIgogI2luY2x1ZGUgIkF1dG9maWxsLmgiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWY4NzBhNTU0MTQ0YTY0
NWY5NzA1NWNlYWI2MjZjZDQ3ZGFhNzI0MS4uOTAxYWM3MWNhZTIwNjBjOWM1ZDc1MWNkYzk0MjAx
OGQ5MzJlNWUxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTExLTEwICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25zXSBJbXBs
ZW1lbnQgZ2V0QW5pbWF0aW9ucygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzk1MzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0OTMyNDc1Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBX
UFQgZXhwZWN0YXRpb25zIHBlciBuZXcgcHJvZ3Jlc3Npb25zIGFuZCBhZGQgdGhyZWUgbmV3IHRl
c3RzIHRoYXQgY2hlY2sgdGhlIGJlaGF2aW9yIG9mCisgICAgICAgIERvY3VtZW50LmdldEFuaW1h
dGlvbnMoKSwgRWxlbWVudC5nZXRBbmltYXRpb25zKCkgYW5kIHRoZSB1bmlxdWUgcmVsYXRpb25z
aGlwIGJldHdlZW4gYW4gQW5pbWF0aW9uCisgICAgICAgIGFuZCBhbiBBbmltYXRpb25FZmZlY3Qu
CisKKyAgICAgICAgKiBodHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGFi
bGUvYW5pbWF0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViLWFuaW1hdGlv
bnMvaW50ZXJmYWNlcy9BbmltYXRhYmxlL2dldEFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvRG9jdW1lbnQvZ2V0QW5p
bWF0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2std2ViLWFuaW1hdGlv
bnMvaW50ZXJmYWNlcy9kb2N1bWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvZG9jdW1l
bnQtZ2V0LWFuaW1hdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2std2Vi
LWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9lbGVtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNl
cy9lbGVtZW50LWdldC1hbmltYXRpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0
L3drLXdlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC9hbmltYXRpb24tZWZmZWN0LXVuaXF1ZS1y
ZWxhdGlvbnNoaXAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ay13
ZWItYW5pbWF0aW9ucy90aW1pbmctbW9kZWwvYW5pbWF0aW9uLWVmZmVjdC11bmlxdWUtcmVsYXRp
b25zaGlwLmh0bWw6IEFkZGVkLgorCiAyMDE3LTExLTA1ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBTY2hlZHVsZSBhbmltYXRp
b25zIHJlZ2lzdGVyZWQgb24gdGhlIGRvY3VtZW50IHRpbWVsaW5lCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvYW5p
bWF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9p
bnRlcmZhY2VzL0FuaW1hdGFibGUvYW5pbWF0ZS1leHBlY3RlZC50eHQKaW5kZXggNjQ3ZTc4NDA0
MDQzZjA2OWMyZjcwM2U3ZGRmOGEzODdmMmNlYjRmNi4uY2VkNDUwNDM5MDY3ZTg0NjBkMWRkY2Ew
NTdjNjk4MDRhODhhOWRjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFu
aW1hdGlvbnMvaW50ZXJmYWNlcy9BbmltYXRhYmxlL2FuaW1hdGUtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvQW5pbWF0YWJs
ZS9hbmltYXRlLWV4cGVjdGVkLnR4dApAQCAtOTEsNiArOTEsNiBAQCBGQUlMIEVsZW1lbnQuYW5p
bWF0ZSgpIGNvcnJlY3RseSBzZXRzIHRoZSBpZCBhdHRyaWJ1dGUgZGl2LmFuaW1hdGUgaXMgbm90
IGEgZnVuYwogRkFJTCBFbGVtZW50LmFuaW1hdGUoKSBjb3JyZWN0bHkgc2V0cyB0aGUgQW5pbWF0
aW9uJ3MgdGltZWxpbmUgZGl2LmFuaW1hdGUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZGl2LmFu
aW1hdGUoeyBvcGFjaXR5OiBbIDAsIDEgXSB9LCAyMDAwKScsICdkaXYuYW5pbWF0ZScgaXMgdW5k
ZWZpbmVkKQogRkFJTCBFbGVtZW50LmFuaW1hdGUoKSBjb3JyZWN0bHkgc2V0cyB0aGUgQW5pbWF0
aW9uJ3MgdGltZWxpbmUgd2hlbiB0cmlnZ2VyZWQgb24gYW4gZWxlbWVudCBpbiBhIGRpZmZlcmVu
dCBkb2N1bWVudCBkaXYuYW5pbWF0ZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdkaXYuYW5pbWF0
ZSh7IG9wYWNpdHk6IFsgMCwgMSBdIH0sIDIwMDApJywgJ2Rpdi5hbmltYXRlJyBpcyB1bmRlZmlu
ZWQpCiBGQUlMIEVsZW1lbnQuYW5pbWF0ZSgpIGNhbGxzIHBsYXkgb24gdGhlIEFuaW1hdGlvbiBk
aXYuYW5pbWF0ZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdkaXYuYW5pbWF0ZSh7IG9wYWNpdHk6
IFsgMCwgMSBdIH0sIDIwMDApJywgJ2Rpdi5hbmltYXRlJyBpcyB1bmRlZmluZWQpCi1GQUlMIENT
U1BzZXVkb0VsZW1lbnQuYW5pbWF0ZSgpIGNyZWF0ZXMgYW4gQW5pbWF0aW9uIG9iamVjdCBkb2N1
bWVudC5nZXRBbmltYXRpb25zIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2RvY3VtZW50LmdldEFu
aW1hdGlvbnMoKScsICdkb2N1bWVudC5nZXRBbmltYXRpb25zJyBpcyB1bmRlZmluZWQpCi1GQUlM
IENTU1BzZXVkb0VsZW1lbnQuYW5pbWF0ZSgpIGNyZWF0ZXMgYW4gQW5pbWF0aW9uIG9iamVjdCB0
YXJnZXRpbmcgdG8gdGhlIGNvcnJlY3QgQ1NTUHNldWRvRWxlbWVudCBvYmplY3QgZG9jdW1lbnQu
Z2V0QW5pbWF0aW9ucyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdkb2N1bWVudC5nZXRBbmltYXRp
b25zKCknLCAnZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucycgaXMgdW5kZWZpbmVkKQorRkFJTCBDU1NQ
c2V1ZG9FbGVtZW50LmFuaW1hdGUoKSBjcmVhdGVzIGFuIEFuaW1hdGlvbiBvYmplY3QgYXNzZXJ0
X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlMIENTU1BzZXVkb0VsZW1lbnQuYW5p
bWF0ZSgpIGNyZWF0ZXMgYW4gQW5pbWF0aW9uIG9iamVjdCB0YXJnZXRpbmcgdG8gdGhlIGNvcnJl
Y3QgQ1NTUHNldWRvRWxlbWVudCBvYmplY3QgYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCiAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9u
cy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvZ2V0QW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvZ2V0
QW5pbWF0aW9ucy1leHBlY3RlZC50eHQKaW5kZXggYjkxYzM5NmVjMzM1Yzk3ZmQzYjk2Nzk3MmVl
NDhmYzliM2U3Y2MyNi4uMTMzYWRlMWUyZTM1ZDRlMDk0OTg0MTVkZGNjMmRkNjU3YzFkZTA0ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNl
cy9BbmltYXRhYmxlL2dldEFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvQW5pbWF0YWJsZS9nZXRBbmltYXRp
b25zLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCBUZXN0IGdldEFuaW1hdGlv
bnMgb24gZWxlbWVudCB3aXRoIG5vIGFuaW1hdGlvbnMgZGl2LmdldEFuaW1hdGlvbnMgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnZGl2LmdldEFuaW1hdGlvbnMoKScsICdkaXYuZ2V0QW5pbWF0aW9u
cycgaXMgdW5kZWZpbmVkKQorUEFTUyBUZXN0IGdldEFuaW1hdGlvbnMgb24gZWxlbWVudCB3aXRo
IG5vIGFuaW1hdGlvbnMgCiBGQUlMIFRlc3QgZ2V0QW5pbWF0aW9ucyBvbiBlbGVtZW50IHdpdGgg
dHdvIGFuaW1hdGlvbnMgZGl2LmFuaW1hdGUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZGl2LmFu
aW1hdGUobnVsbCwgMTAwICogTVNfUEVSX1NFQyknLCAnZGl2LmFuaW1hdGUnIGlzIHVuZGVmaW5l
ZCkKIEZBSUwgVGVzdCBnZXRBbmltYXRpb25zIG9uIHNlcGFyYXRlIGVsZW1lbnRzIHdpdGggc2Vw
YXJhdGUgYW5pbWF0aW9ucyBkaXZBLmFuaW1hdGUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZGl2
QS5hbmltYXRlKG51bGwsIDEwMCAqIE1TX1BFUl9TRUMpJywgJ2RpdkEuYW5pbWF0ZScgaXMgdW5k
ZWZpbmVkKQogRkFJTCBUZXN0IGdldEFuaW1hdGlvbnMgb24gcGFyZW50IGFuZCBjaGlsZCBlbGVt
ZW50cyB3aXRoIHNlcGFyYXRlIGFuaW1hdGlvbnMgZGl2UGFyZW50LmFuaW1hdGUgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnZGl2UGFyZW50LmFuaW1hdGUobnVsbCwgMTAwICogTVNfUEVSX1NFQykn
LCAnZGl2UGFyZW50LmFuaW1hdGUnIGlzIHVuZGVmaW5lZCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvRG9jdW1lbnQvZ2V0QW5pbWF0
aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9p
bnRlcmZhY2VzL0RvY3VtZW50L2dldEFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDhhNDA0
ZmNlNmUwZWYyMjllM2IxZTY5MmM5YWZlOTk5NDI2MDIyN2QuLjVlNTA4ZTI2YmIyNjZmZTQ0NGU5
OTI1ZjUzN2RmYTkwNWU3MDA2MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
Yi1hbmltYXRpb25zL2ludGVyZmFjZXMvRG9jdW1lbnQvZ2V0QW5pbWF0aW9ucy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9E
b2N1bWVudC9nZXRBbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJ
TCBUZXN0IGRvY3VtZW50LmdldEFuaW1hdGlvbnMgZm9yIG5vbi1hbmltYXRlZCBjb250ZW50IGRv
Y3VtZW50LmdldEFuaW1hdGlvbnMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZG9jdW1lbnQuZ2V0
QW5pbWF0aW9ucygpJywgJ2RvY3VtZW50LmdldEFuaW1hdGlvbnMnIGlzIHVuZGVmaW5lZCkKK1BB
U1MgVGVzdCBkb2N1bWVudC5nZXRBbmltYXRpb25zIGZvciBub24tYW5pbWF0ZWQgY29udGVudCAK
IEZBSUwgVGVzdCBkb2N1bWVudC5nZXRBbmltYXRpb25zIGZvciBzY3JpcHQtZ2VuZXJhdGVkIGFu
aW1hdGlvbnMgZGl2LmFuaW1hdGUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZGl2LmFuaW1hdGUo
Z0tleUZyYW1lcywgMTAwICogTVNfUEVSX1NFQyknLCAnZGl2LmFuaW1hdGUnIGlzIHVuZGVmaW5l
ZCkKIEZBSUwgVGVzdCB0aGUgb3JkZXIgb2YgZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucyB3aXRoIHNj
cmlwdCBnZW5lcmF0ZWQgYW5pbWF0aW9ucyBkaXYuYW5pbWF0ZSBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdkaXYuYW5pbWF0ZShnS2V5RnJhbWVzLCAxMDAgKiBNU19QRVJfU0VDKScsICdkaXYuYW5p
bWF0ZScgaXMgdW5kZWZpbmVkKQogRkFJTCBUZXN0IGRvY3VtZW50LmdldEFuaW1hdGlvbnMgd2l0
aCBudWxsIHRhcmdldCBDYW4ndCBmaW5kIHZhcmlhYmxlOiBLZXlmcmFtZUVmZmVjdFJlYWRPbmx5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ay13ZWItYW5pbWF0aW9ucy9pbnRl
cmZhY2VzL2RvY3VtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvZG9jdW1lbnQtZ2V0LWFuaW1h
dGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYjNmM2YxMjJjMTlmNmUwMmU3MDcwOWQz
ZWU3Y2NmY2RlYzBiMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ay13ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL2RvY3VtZW50LWdldC1hbmltYXRpb25zLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworUEFTUyBEb2N1bWVudCBleHBvc2VzIHRoZSBnZXRB
bmltYXRpb25zIG1ldGhvZC4gCitQQVNTIERvY3VtZW50LmdldEFuaW1hdGlvbnMoKSByZXR1cm5z
IGFuIGVtcHR5IGFycmF5IHdoZW4gbm8gYW5pbWF0aW9ucyB3ZXJlIGFkZGVkLiAKK1BBU1MgRG9j
dW1lbnQuZ2V0QW5pbWF0aW9ucygpIHJldHVybnMgYW4gYXJyYXkgd2l0aCB0aGUgbmV3IGFuaW1h
dGlvbnMgY29udGFpbmVkLiAKK1BBU1MgU2V0dGluZyB0aW1lbGluZSA9IG51bGwgb24gYW4gYW5p
bWF0aW9uIHJlbW92ZXMgaXQgZnJvbSB0aGUgYXJyYXkgcmV0dXJuZWQgYnkgRG9jdW1lbnQuZ2V0
QW5pbWF0aW9ucygpLiAKK1BBU1MgU2V0dGluZyB0aW1lbGluZSA9IGRvY3VtZW50LnRpbWVsaW5l
IG9uIGFuIGFuaW1hdGlvbiBhZGRzIGl0IHRvIHRoZSBhcnJheSByZXR1cm5lZCBieSBEb2N1bWVu
dC5nZXRBbmltYXRpb25zKCkuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ay13ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL2RvY3VtZW50LWdldC1hbmltYXRpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ay13ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL2RvY3Vt
ZW50LWdldC1hbmltYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2UzNTBkNzY5ZGE1ZjhmYjg5ZGQ0
ZGY5YTBlNjliMmQzYWUyYzFhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMu
aHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRm
LTg+Cis8dGl0bGU+RG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpPC90aXRsZT4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxib2R5PgorPGRpdiBpZD0i
bG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK2xldCBhLCBiLCBjOworCit0
ZXN0KHQgPT4geworICAgIGFzc2VydF90cnVlKHR5cGVvZiBkb2N1bWVudC5nZXRBbmltYXRpb25z
ID09PSAiZnVuY3Rpb24iKTsKK30sICJEb2N1bWVudCBleHBvc2VzIHRoZSBnZXRBbmltYXRpb25z
IG1ldGhvZC4iKTsKKwordGVzdCh0ID0+IHsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRvY3Vt
ZW50LmdldEFuaW1hdGlvbnMoKSwgW10pOworfSwgIkRvY3VtZW50LmdldEFuaW1hdGlvbnMoKSBy
ZXR1cm5zIGFuIGVtcHR5IGFycmF5IHdoZW4gbm8gYW5pbWF0aW9ucyB3ZXJlIGFkZGVkLiIpOwor
Cit0ZXN0KHQgPT4geworICAgIGEgPSBuZXcgQW5pbWF0aW9uOworICAgIGIgPSBuZXcgQW5pbWF0
aW9uOworICAgIGMgPSBuZXcgQW5pbWF0aW9uOworICAgIGNvbnN0IGFuaW1hdGlvbnMgPSBkb2N1
bWVudC5nZXRBbmltYXRpb25zKCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0
aCwgMyk7CisgICAgYXNzZXJ0X2luX2FycmF5KGEsIGFuaW1hdGlvbnMpOworICAgIGFzc2VydF9p
bl9hcnJheShiLCBhbmltYXRpb25zKTsKKyAgICBhc3NlcnRfaW5fYXJyYXkoYywgYW5pbWF0aW9u
cyk7Cit9LCAiRG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpIHJldHVybnMgYW4gYXJyYXkgd2l0aCB0
aGUgbmV3IGFuaW1hdGlvbnMgY29udGFpbmVkLiIpOworCit0ZXN0KHQgPT4geworICAgIGIudGlt
ZWxpbmUgPSBudWxsOworICAgIGNvbnN0IGFuaW1hdGlvbnMgPSBkb2N1bWVudC5nZXRBbmltYXRp
b25zKCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0aCwgMik7CisgICAgYXNz
ZXJ0X2luX2FycmF5KGEsIGFuaW1hdGlvbnMpOworICAgIGFzc2VydF9pbl9hcnJheShjLCBhbmlt
YXRpb25zKTsKK30sICJTZXR0aW5nIHRpbWVsaW5lID0gbnVsbCBvbiBhbiBhbmltYXRpb24gcmVt
b3ZlcyBpdCBmcm9tIHRoZSBhcnJheSByZXR1cm5lZCBieSBEb2N1bWVudC5nZXRBbmltYXRpb25z
KCkuIik7CisKK3Rlc3QodCA9PiB7CisgICAgYi50aW1lbGluZSA9IGRvY3VtZW50LnRpbWVsaW5l
OworICAgIGNvbnN0IGFuaW1hdGlvbnMgPSBkb2N1bWVudC5nZXRBbmltYXRpb25zKCk7CisgICAg
YXNzZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0aCwgMyk7CisgICAgYXNzZXJ0X2luX2FycmF5
KGEsIGFuaW1hdGlvbnMpOworICAgIGFzc2VydF9pbl9hcnJheShiLCBhbmltYXRpb25zKTsKKyAg
ICBhc3NlcnRfaW5fYXJyYXkoYywgYW5pbWF0aW9ucyk7Cit9LCAiU2V0dGluZyB0aW1lbGluZSA9
IGRvY3VtZW50LnRpbWVsaW5lIG9uIGFuIGFuaW1hdGlvbiBhZGRzIGl0IHRvIHRoZSBhcnJheSBy
ZXR1cm5lZCBieSBEb2N1bWVudC5nZXRBbmltYXRpb25zKCkuIik7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMv
aW50ZXJmYWNlcy9lbGVtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvZWxlbWVudC1nZXQtYW5p
bWF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ0ZGQ2MWY2NDQwNGJhOWJkODkwNjhk
N2M3YzU0ZmFkMWZkMjMyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK1BBU1MgRWxlbWVudCBleHBvc2VzIHRoZSBnZXRB
bmltYXRpb25zIG1ldGhvZC4gCitQQVNTIEVsZW1lbnQuZ2V0QW5pbWF0aW9ucygpIHJldHVybnMg
YW4gZW1wdHkgYXJyYXkgd2hlbiBubyBhbmltYXRpb25zIHdlcmUgYWRkZWQuIAorUEFTUyBFbGVt
ZW50LmdldEFuaW1hdGlvbnMoKSByZXR1cm5zIGFuIGFycmF5IHdpdGggYW5pbWF0aW9ucyB0YXJn
ZXR0aW5nIHRoYXQgZWxlbWVudC4gCitQQVNTIEFuIGVmZmVjdCBjYW4gb25seSBiZSBhcHBsaWVk
IHRvIGEgc2luZ2xlIGFuaW1hdGlvbiBhbmQgY2hhbmdpbmcgaXQgY2hhbmdlcyB0aGUgYW5pbWF0
aW9ucyByZXR1cm5lZCBieSBFbGVtZW50LmdldEFuaW1hdGlvbnMoKS4gCitQQVNTIFNldHRpbmcg
YW4gYW5pbWF0aW9uJ3MgZWZmZWN0IHRvIG51bGwgY2hhbmdlcyB0aGUgYW5pbWF0aW9ucyByZXR1
cm5lZCBieSBFbGVtZW50LmdldEFuaW1hdGlvbnMoKS4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvZWxlbWVudC1nZXQtYW5p
bWF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMvaW50
ZXJmYWNlcy9lbGVtZW50LWdldC1hbmltYXRpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVkM2U2ZGQ1
M2M1N2EyZDgyZWMyZjU3NGIxMjlmOWEzNDBjMDBjMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvZWxlbWVudC1nZXQt
YW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEg
Y2hhcnNldD11dGYtOD4KKzx0aXRsZT5FbGVtZW50LmdldEFuaW1hdGlvbnMoKTwvdGl0bGU+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitsZXQgYSwg
YiwgYzsKKworY29uc3QgdGFyZ2V0QSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKK2Nv
bnN0IHRhcmdldEIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiIik7CisKK2NvbnN0IGVmZmVj
dEFhID0gbmV3IEtleWZyYW1lRWZmZWN0KHRhcmdldEEpOworY29uc3QgZWZmZWN0QWIgPSBuZXcg
S2V5ZnJhbWVFZmZlY3QodGFyZ2V0QSk7Citjb25zdCBlZmZlY3RCID0gbmV3IEtleWZyYW1lRWZm
ZWN0KHRhcmdldEIpOworCit0ZXN0KHQgPT4geworICAgIGFzc2VydF90cnVlKHR5cGVvZiB0YXJn
ZXRBLmdldEFuaW1hdGlvbnMgPT09ICJmdW5jdGlvbiIpOworfSwgIkVsZW1lbnQgZXhwb3NlcyB0
aGUgZ2V0QW5pbWF0aW9ucyBtZXRob2QuIik7CisKK3Rlc3QodCA9PiB7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh0YXJnZXRBLmdldEFuaW1hdGlvbnMoKSwgW10pOworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHModGFyZ2V0Qi5nZXRBbmltYXRpb25zKCksIFtdKTsKK30sICJFbGVtZW50LmdldEFu
aW1hdGlvbnMoKSByZXR1cm5zIGFuIGVtcHR5IGFycmF5IHdoZW4gbm8gYW5pbWF0aW9ucyB3ZXJl
IGFkZGVkLiIpOworCit0ZXN0KHQgPT4geworICAgIGEgPSBuZXcgQW5pbWF0aW9uKGVmZmVjdEFh
KTsKKyAgICBiID0gbmV3IEFuaW1hdGlvbihlZmZlY3RBYik7CisgICAgYyA9IG5ldyBBbmltYXRp
b24oZWZmZWN0Qik7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0YXJnZXRBLmdldEFuaW1hdGlv
bnMoKSwgW2EsIGJdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHRhcmdldEIuZ2V0QW5pbWF0
aW9ucygpLCBbY10pOworfSwgIkVsZW1lbnQuZ2V0QW5pbWF0aW9ucygpIHJldHVybnMgYW4gYXJy
YXkgd2l0aCBhbmltYXRpb25zIHRhcmdldHRpbmcgdGhhdCBlbGVtZW50LiIpOworCit0ZXN0KHQg
PT4geworICAgIGIuZWZmZWN0ID0gZWZmZWN0QjsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHRh
cmdldEEuZ2V0QW5pbWF0aW9ucygpLCBbYV0pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHModGFy
Z2V0Qi5nZXRBbmltYXRpb25zKCksIFtiXSk7Cit9LCAiQW4gZWZmZWN0IGNhbiBvbmx5IGJlIGFw
cGxpZWQgdG8gYSBzaW5nbGUgYW5pbWF0aW9uIGFuZCBjaGFuZ2luZyBpdCBjaGFuZ2VzIHRoZSBh
bmltYXRpb25zIHJldHVybmVkIGJ5IEVsZW1lbnQuZ2V0QW5pbWF0aW9ucygpLiIpOworCit0ZXN0
KHQgPT4geworICAgIGEuZWZmZWN0ID0gbnVsbDsKKyAgICBiLmVmZmVjdCA9IG51bGw7CisgICAg
Yy5lZmZlY3QgPSBudWxsOworICAgIGFzc2VydF9hcnJheV9lcXVhbHModGFyZ2V0QS5nZXRBbmlt
YXRpb25zKCksIFtdKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHRhcmdldEIuZ2V0QW5pbWF0
aW9ucygpLCBbXSk7Cit9LCAiU2V0dGluZyBhbiBhbmltYXRpb24ncyBlZmZlY3QgdG8gbnVsbCBj
aGFuZ2VzIHRoZSBhbmltYXRpb25zIHJldHVybmVkIGJ5IEVsZW1lbnQuZ2V0QW5pbWF0aW9ucygp
LiIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3drLXdlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC9hbmltYXRpb24tZWZmZWN0LXVuaXF1
ZS1yZWxhdGlvbnNoaXAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2std2Vi
LWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbi1lZmZlY3QtdW5pcXVlLXJlbGF0aW9u
c2hpcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU3MGU0ZGJjNTYxNDUzYjg2MTRhOWY4NGZm
M2JmYzFkODU4MWU1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dr
LXdlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC9hbmltYXRpb24tZWZmZWN0LXVuaXF1ZS1yZWxh
dGlvbnNoaXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIENoZWNrIHRoYXQg
c2V0dGluZyBhbiBhbmltYXRpb24ncyBlZmZlY3Qgb250byBhbm90aGVyIGFuaW1hdGlvbiBzZXRz
IGVmZmVjdCB0byBudWxsLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2st
d2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbi1lZmZlY3QtdW5pcXVlLXJlbGF0
aW9uc2hpcC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMvdGlt
aW5nLW1vZGVsL2FuaW1hdGlvbi1lZmZlY3QtdW5pcXVlLXJlbGF0aW9uc2hpcC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmViNTcxNDAwZjcwOTkxY2EzNmJlMjk1MGE0NWVmZDdkMmEwODJhY2YKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ay13ZWItYW5pbWF0aW9ucy90aW1pbmct
bW9kZWwvYW5pbWF0aW9uLWVmZmVjdC11bmlxdWUtcmVsYXRpb25zaGlwLmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNo
ZWNrIGFuIEFuaW1hdGlvbkVmZmVjdCBjYW4gb25seSBiZSB1c2VkIGZvciBvbmUgQW5pbWF0aW9u
PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7
CisKK3Rlc3QodCA9PiB7CisgICAgY29uc3QgZWZmZWN0QSA9IG5ldyBLZXlmcmFtZUVmZmVjdChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgY29uc3QgZWZmZWN0QiA9IG5ldyBL
ZXlmcmFtZUVmZmVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisKKyAgICBjb25z
dCBhID0gbmV3IEFuaW1hdGlvbihlZmZlY3RBKTsKKyAgICBjb25zdCBiID0gbmV3IEFuaW1hdGlv
bihlZmZlY3RCKTsKKworICAgIGFzc2VydF9lcXVhbHMoYS5lZmZlY3QsIGVmZmVjdEEpOworICAg
IGFzc2VydF9lcXVhbHMoYi5lZmZlY3QsIGVmZmVjdEIpOworCisgICAgYi5lZmZlY3QgPSBlZmZl
Y3RBOworICAgIGFzc2VydF9lcXVhbHMoYS5lZmZlY3QsIG51bGwpOworICAgIGFzc2VydF9lcXVh
bHMoYi5lZmZlY3QsIGVmZmVjdEEpOworfSwgIkNoZWNrIHRoYXQgc2V0dGluZyBhbiBhbmltYXRp
b24ncyBlZmZlY3Qgb250byBhbm90aGVyIGFuaW1hdGlvbiBzZXRzIGVmZmVjdCB0byBudWxsLiIp
OworCis8L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326624</attachid>
            <date>2017-11-10 13:55:47 -0800</date>
            <delta_ts>2017-11-10 14:00:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179535-20171110135546.patch</filename>
            <type>text/plain</type>
            <size>36987</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDNlYjRhYzNkOGMyNWZj
MTk2Mzc1ZDE4Yjg1NGI3MDgxMzQ5YjRjZC4uNzZlMmJmNTAwM2IzOTVjMDhkYzIxNTA5YmMwOWI0
NDU5MDQ0NWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE3LTExLTEwICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBJbXBsZW1lbnQgZ2V0QW5pbWF0aW9ucygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1MzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM0OTMy
NDc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IG5vdyBhbGxvdyBhIGxpc3Qgb2YgYW5pbWF0aW9ucyBmb3IgYSBkb2N1bWVudCwgd2l0aCBEb2N1
bWVudC5nZXRBbmltYXRpb25zKCksIG9yIGZvciBhbgorICAgICAgICBlbGVtZW50LCB3aXRoIEFu
aW1hdGFibGUuZ2V0QW5pbWF0aW9ucygpLCB0byBiZSByZXR1cm5lZC4gSW4gb3JkZXIgdG8gc3Vw
cG9ydCB0aGlzLCB3ZSBtYWludGFpbgorICAgICAgICBhIG1hcCBvbiBBbmltYXRpb25UaW1lbGlu
ZSBvZiBhbGwgYW5pbWF0aW9ucyBmb3IgYSBnaXZlbiBlbGVtZW50LiBUaGlzIG1hcCBpcyBpbnZh
bGlkYXRlZAorICAgICAgICB3aGVuIGFuIGFuaW1hdGlvbidzIHRpbWVsaW5lIGNoYW5nZXMgYW5k
IHdoZW4gYW4gYW5pbWF0aW9uJ3MgZWZmZWN0IGNoYW5nZXMuIE5vdGUgdGhhdCB0aGUKKyAgICAg
ICAgV2ViIEFuaW1hdGlvbnMgc3BlYyBtYW5kYXRlcyB0aGF0IGFuIEFuaW1hdGlvbkVmZmVjdCBj
YW4gb25seSBiZSBhIHNpbmdsZSBhbmltYXRpb24ncyBlZmZlY3QuCisKKyAgICAgICAgQWRkaXRp
b25hbGx5LCB3ZSBlbnN1cmUgdGhhdCB0aGUgRG9jdW1lbnQtdG8tRG9jdW1lbnRUaW1lbGluZSBy
ZWxhdGlvbnNoaXAgaXMgY2xlYXJlZCB3aGVuCisgICAgICAgIGlzIGJlaW5nIHByZXBhcmVkIGZv
ciB0ZWFyZG93biB0byBhdm9pZCBhIHJlZi1jeWNsZS4KKworICAgICAgICBUZXN0czogaHR0cC93
cHQvd2std2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9kb2N1bWVudC1nZXQtYW5pbWF0aW9ucy5o
dG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ay13ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2Vz
L2VsZW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2st
d2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbi1lZmZlY3QtdW5pcXVlLXJlbGF0
aW9uc2hpcC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIEFuaW1hdGFibGUu
aWRsLgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6IEFkZCBBbmltYXRhYmxlLmlkbC4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBBbmltYXRh
YmxlLmlkbC4KKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0YWJsZS5pZGw6IEEgbmV3IGludGVy
ZmFjZSB0aGF0IEVsZW1lbnQgaW1wbGVtZW50cyBhbmQgd2hpY2ggY3VycmVudGx5IG9ubHkgZXhw
b3NlcworICAgICAgICBnZXRBbmltYXRpb25zKCksIHRoZSBhbmltYXRlKCkgbWV0aG9kIHdpbGwg
YmUgYWRkZWQgbGF0ZXIuCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oOiBB
ZGQgYSBuZXcgbV9hbmltYXRpb24gbWVtYmVyIHRvIHJlZmVyZW5jZSB0aGUgYW5pbWF0aW9uIHVz
aW5nIHRoaXMKKyAgICAgICAgZWZmZWN0LiBUaGlzIHJlbGF0aW9uc2hpcCBpcyByZXF1aXJlZCBz
byB3ZSBndWFyYW50ZWUgdGhhdCBhbiBlZmZlY3QgaXMgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xl
CisgICAgICAgIGFuaW1hdGlvbiBhdCBtb3N0LgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9u
RWZmZWN0OjphbmltYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uRWZm
ZWN0OjpzZXRBbmltYXRpb24pOgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2Fz
QWRkZWRUb0VsZW1lbnQpOiBOZXcgbWV0aG9kIHRvIG5vdGlmeSB0aGUgdGltZWxpbmUgdGhhdCBh
bgorICAgICAgICBhbmltYXRpb24gcmVnaXN0ZXJlZCB3aXRoIHRoaXMgdGltZWxpbmUgaGFzIGJl
ZW4gYXNzb2NpYXRlZCB3aXRoIGEgbmV3IGVsZW1lbnQgdGhyb3VnaCBpdHMgZWZmZWN0LgorICAg
ICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9t
RWxlbWVudCk6IE5ldyBtZXRob2QgdG8gbm90aWZ5IHRoZSB0aW1lbGluZSB0aGF0IGFuCisgICAg
ICAgIGFuaW1hdGlvbiByZWdpc3RlcmVkIHdpdGggdGhpcyB0aW1lbGluZSBoYXMgYmVlbiBkaXNh
c3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCB0aHJvdWdoIGl0cyBlZmZlY3QuCisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uc0ZvckVsZW1lbnQpOiBOZXcgbWV0
aG9kIHJldHVybmluZyBhbGwgYW5pbWF0aW9ucyByZWdpc3RlcmVkIHdpdGgKKyAgICAgICAgdGhp
cyB0aW1lbGluZSBmb3IgYSBnaXZlbiBlbGVtZW50LgorICAgICAgICAqIGFuaW1hdGlvbi9Bbmlt
YXRpb25UaW1lbGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmFu
aW1hdGlvbnMgY29uc3QpOiBBbGwgYW5pbWF0aW9ucyByZWdpc3RlcmVkIHdpdGggdGhpcyB0aW1l
bGluZS4KKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpEb2N1bWVudFRpbWVsaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmRldGFjaEZyb21Eb2N1bWVudCk6IENsZWFyIHRo
ZSByZWZlcmVuY2UgYmV0d2VlbiB0aGlzIHRpbWVsaW5lIGFuZCBpdHMgZG9jdW1lbnQuCisgICAg
ICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmltYXRpb24v
V2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6c2V0RWZmZWN0KTogQXMgYW4gYW5p
bWF0aW9uJ3MgZWZmZWN0IGNoYW5nZXMsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIG9sZAor
ICAgICAgICBlZmZlY3Qgbm8gbG9uZ2VyIGhhcyBhbiBhc3NvY2lhdGVkIGFuaW1hdGlvbiwgYW5k
IHRoYXQgdGhlIG5ldyBlZmZlY3QgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYW5pbWF0aW9uLgor
ICAgICAgICBBZGRpdGlvbmFsbHksIHdlIHVwZGF0ZSB0aGUgZWxlbWVudC10by1hbmltYXRpb25z
IG1hcCBvbiB0aGUgYW5pbWF0aW9uJ3MgdGltZWxpbmUuCisgICAgICAgIChXZWJDb3JlOjpXZWJB
bmltYXRpb246OnNldFRpbWVsaW5lKTogVXBkYXRlIHRoZSBlbGVtZW50LXRvLWFuaW1hdGlvbnMg
bWFwIG9uIHRoZSBmb3JtZXIgYW5kIG5ldyB0aW1lbGluZS4KKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlv
bik6IENsZWFyIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGRvY3VtZW50IGFuZCBpdHMg
dGltZWxpbmUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0QW5pbWF0aW9ucyk6IE9i
dGFpbiBhbGwgYW5pbWF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBkb2N1bWVudCdzIHRpbWVs
aW5lLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5p
ZGw6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Z2V0QW5pbWF0aW9ucyk6IE9idGFpbiBhbGwgYW5pbWF0aW9ucyBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBlbGVtZW50LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuaWRsOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxNy0xMS0w
NSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5p
bWF0aW9uc10gU2NoZWR1bGUgYW5pbWF0aW9ucyByZWdpc3RlcmVkIG9uIHRoZSBkb2N1bWVudCB0
aW1lbGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1YzRkMWIzYWI3ZDM1NjFlYjNjZGQ3NWZl
YWQzMzBhZjM4M2IwNzU4Li5hNWQ0MGMzNTMwNTdjYjg4ZWViYzQxZTMyNGMyNWRiNjNmNDI2OTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDIxLDYgKzQyMSw3IEBAIHNldChXZWJDb3JlX05P
Tl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJ2ci9WUlBvc2UuaWRsCiAgICAgTW9kdWxl
cy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5pZGwKIAorICAgIGFuaW1hdGlvbi9BbmltYXRhYmxl
LmlkbAogICAgIGFuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsCiAgICAgYW5pbWF0aW9uL0Fu
aW1hdGlvbkVmZmVjdFRpbWluZy5pZGwKICAgICBhbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUu
aWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0MDM0YWJmMmJlMTc3YzQwYmM5
ZWIyN2UzZmE3ZjhkMTk1MzhkM2FjLi5iMzdlNWY1ZmY4ZTEwZTc0ZmU2MGU0MzNjNjg1Njg5ZjQ2
YjRiNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM0Myw2ICszNDMsNyBA
QCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnZyL1ZSTGF5
ZXJJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnZyL1ZSUG9zZS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJ2ci9WUlN0YWdlUGFyYW1ldGVycy5pZGwgXAorICAg
ICQoV2ViQ29yZSkvYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Fu
aW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9B
bmltYXRpb25FZmZlY3RUaW1pbmcuaWRsIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbi9Bbmlt
YXRpb25UaW1lbGluZS5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNhNjliNjBlYjY0MGRjNDk2MzViY2Y3MjUxZmI4YTQ5
YTQyYTJmYTguLjNmODI3NTJiYzIzNTY0ODZlODE5YzIxMDhmZWI5OGZiNWVmYWI4NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTg2ODQsNiArODY4NCw3IEBACiAJCTcxQTU3REVGMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRo
VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1Bh
dGhVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE1N0RGMDE1
NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdQYXRoVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxQjA0NjBBMUREM0MyRUUwMEVFMTlDRiAvKiBzdGF0dXMtc3VwcG9ydC5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJzdGF0dXMtc3VwcG9ydC5qcyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxQzVCQjFCMUZCNjExRUEwMDA3QTJBRSAv
KiBBbmltYXRhYmxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBbmltYXRhYmxlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8q
IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MUNDN0ExRjE1MkEwQkZFMDA5RUVBRjkgLyogU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEMDJE
OTAxREI1NUM0RTAwREQ1Q0Y1IC8qIG1haW4uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSBtYWluLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg2
MDMsNiArMTg2MDQsNyBAQAogCQk3MTAyNUVDMTFGOTlGMDk2MDA0QTI1MEMgLyogYW5pbWF0aW9u
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3MUM1QkIx
QjFGQjYxMUVBMDAwN0EyQUUgLyogQW5pbWF0YWJsZS5pZGwgKi8sCiAJCQkJNzE1NTZDQjExRjlG
MDk5RjAwRTc4RDA4IC8qIEFuaW1hdGlvbkVmZmVjdC5jcHAgKi8sCiAJCQkJNzE1NTZDQUQxRjlG
MDk5RDAwRTc4RDA4IC8qIEFuaW1hdGlvbkVmZmVjdC5oICovLAogCQkJCTcxNTU2Q0IwMUY5RjA5
OUUwMEU3OEQwOCAvKiBBbmltYXRpb25FZmZlY3QuaWRsICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGFibGUuaWRsIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0FuaW1hdGFibGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0MGJhZjJhN2UzZWZiNzgxMWE2M2I4ZTVh
MzliYjE2Njk3NDM4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0YWJsZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkFuaW1h
dGlvbnMsCisgICAgTm9JbnRlcmZhY2VPYmplY3QKK10gaW50ZXJmYWNlIEFuaW1hdGFibGUgewor
ICAgIHNlcXVlbmNlPFdlYkFuaW1hdGlvbj4gZ2V0QW5pbWF0aW9ucygpOworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaAppbmRleCA3MDYzODNmNzI0ZjNjNDAx
M2MyMDAyYzExNTNkNWQyZTc1NmUxMTllLi4yOGQzNzBhMmIzNDk3ZTViOWYxMjczNzhmZWNiZDg1
YWYxYTAxYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
RWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFuaW1hdGlvbkVm
ZmVjdFRpbWluZy5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CkBAIC00MCw2ICs0MSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkFuaW1hdGlvbkVm
ZmVjdCgpIHsgfQogCisgICAgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2FuaW1hdGlvbi5nZXQoKTsgfQorICAgIHZvaWQgc2V0QW5pbWF0aW9uKFdlYkFuaW1hdGlv
biogYW5pbWF0aW9uKSB7IG1fYW5pbWF0aW9uID0gYW5pbWF0aW9uOyB9CisKIHByb3RlY3RlZDoK
ICAgICBlbnVtIENsYXNzVHlwZSB7CiAgICAgICAgIEtleWZyYW1lRWZmZWN0Q2xhc3MKQEAgLTUx
LDYgKzU1LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIENsYXNzVHlwZSBtX2NsYXNz
VHlwZTsKKyAgICBSZWZQdHI8V2ViQW5pbWF0aW9uPiBtX2FuaW1hdGlvbjsKICAgICBSZWZQdHI8
QW5pbWF0aW9uRWZmZWN0VGltaW5nPiBtX3RpbWluZzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCmluZGV4IGE2NmJmM2YxMmFmYzUzZTc1
MDAzZGNkYzc2NGZlMDJjNjQ5ZDg1YzguLjU3M2NkZWQ1OTM4ZmI4Y2ZmOWJkY2MyNmU3N2RmYzc4
YTc5ZTM4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25U
aW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVs
aW5lLmNwcApAQCAtNjgsNiArNjgsMzQgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6c2V0Q3Vy
cmVudFRpbWUoU2Vjb25kcyBjdXJyZW50VGltZSkKICAgICBhbmltYXRpb25UaW1pbmdNb2RlbERp
ZENoYW5nZSgpOwogfQogCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNBZGRl
ZFRvRWxlbWVudChXZWJBbmltYXRpb24mIGFuaW1hdGlvbiwgRWxlbWVudCYgZWxlbWVudCkKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcC5lbnN1cmUoJmVsZW1l
bnQsIFtdIHsKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4oKTsK
KyAgICB9KTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZCgmYW5pbWF0aW9uKTsK
K30KKwordm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVt
ZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX2VsZW1lbnRUb0FuaW1hdGlvbnNNYXAuZmluZCgmZWxlbWVudCk7Cisg
ICAgaWYgKGl0ZXJhdG9yID09IG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcC5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byYgYW5pbWF0aW9ucyA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAg
ICBhbmltYXRpb25zLnJlbW92ZUZpcnN0KCZhbmltYXRpb24pOworICAgIGlmICghYW5pbWF0aW9u
cy5zaXplKCkpCisgICAgICAgIG1fZWxlbWVudFRvQW5pbWF0aW9uc01hcC5yZW1vdmUoaXRlcmF0
b3IpOworfQorCitWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IEFuaW1hdGlvblRpbWVsaW5l
OjphbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQoreworICAgIFZlY3RvcjxS
ZWZQdHI8V2ViQW5pbWF0aW9uPj4gYW5pbWF0aW9uczsKKyAgICBpZiAobV9lbGVtZW50VG9Bbmlt
YXRpb25zTWFwLmNvbnRhaW5zKCZlbGVtZW50KSkKKyAgICAgICAgYW5pbWF0aW9ucyA9IG1fZWxl
bWVudFRvQW5pbWF0aW9uc01hcC5nZXQoJmVsZW1lbnQpOworICAgIHJldHVybiBhbmltYXRpb25z
OworfQorCiBTdHJpbmcgQW5pbWF0aW9uVGltZWxpbmU6OmRlc2NyaXB0aW9uKCkKIHsKICAgICBU
ZXh0U3RyZWFtIHN0cmVhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9B
bmltYXRpb25UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVsaW5lLmgKaW5kZXggMGI3Mjg1N2UxNmNhYjAyYmI2ZmQzMzEzMGQ4NWIyZDg1ZWE2NDM0Zi4u
NzRkYTVkYmExNjYzNDc4NTM5Zjk5ZmJhZDc0OWFjNGE2NmE4MGI1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTM2LDYgKzM3LDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBbmltYXRpb25FZmZlY3Q7CitjbGFzcyBF
bGVtZW50OwogY2xhc3MgV2ViQW5pbWF0aW9uOwogCiBjbGFzcyBBbmltYXRpb25UaW1lbGluZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvblRpbWVsaW5lPiB7CkBAIC01MSw2ICs1NCwxMSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uVGltaW5nTW9kZWxEaWRDaGFu
Z2UoKSB7IH07CiAKKyAgICBjb25zdCBIYXNoU2V0PFJlZlB0cjxXZWJBbmltYXRpb24+PiYgYW5p
bWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uczsgfQorICAgIFZlY3RvcjxSZWZQ
dHI8V2ViQW5pbWF0aW9uPj4gYW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYpOworICAgIHZv
aWQgYW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQoV2ViQW5pbWF0aW9uJiwgRWxlbWVudCYpOwor
ICAgIHZvaWQgYW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KFdlYkFuaW1hdGlvbiYsIEVs
ZW1lbnQmKTsKKwogICAgIHZpcnR1YWwgfkFuaW1hdGlvblRpbWVsaW5lKCk7CiAKIHByb3RlY3Rl
ZDoKQEAgLTYwLDEzICs2OCwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBDbGFzc1R5cGUgY2xhc3NU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGU7IH0KIAotICAgIEhhc2hTZXQ8UmVmUHRy
PFdlYkFuaW1hdGlvbj4+IGFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnM7
IH0KLQogICAgIGV4cGxpY2l0IEFuaW1hdGlvblRpbWVsaW5lKENsYXNzVHlwZSk7CiAKIHByaXZh
dGU6CiAgICAgQ2xhc3NUeXBlIG1fY2xhc3NUeXBlOwogICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25k
cz4gbV9jdXJyZW50VGltZTsKKyAgICBIYXNoTWFwPFJlZlB0cjxFbGVtZW50PiwgVmVjdG9yPFJl
ZlB0cjxXZWJBbmltYXRpb24+Pj4gbV9lbGVtZW50VG9BbmltYXRpb25zTWFwOwogICAgIEhhc2hT
ZXQ8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IG1fYW5pbWF0aW9uczsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAppbmRleCA5MDBmOGE1MWIwNGE3
OTY4ZjU0OGMxZWNmMzVlNjBlZWNlYzgzM2M4Li5lMGVlMTZhNTcyMjRiNmI2YTNiNDRiMDg1YWYz
OTIwNTU4OGY2ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1l
bnRUaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFJlZjxEb2N1bWVudFRpbWVsaW5lPiBEb2N1bWVu
dFRpbWVsaW5lOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBQbGF0Zm9ybURpc3BsCiAKIERv
Y3VtZW50VGltZWxpbmU6OkRvY3VtZW50VGltZWxpbmUoRG9jdW1lbnQmIGRvY3VtZW50LCBQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgOiBBbmltYXRpb25UaW1lbGluZShEb2N1bWVu
dFRpbWVsaW5lQ2xhc3MpCi0gICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgICwgbV9kb2N1
bWVudCgmZG9jdW1lbnQpCiAgICAgLCBtX2FuaW1hdGlvblNjaGVkdWxlVGltZXIoKnRoaXMsICZE
b2N1bWVudFRpbWVsaW5lOjphbmltYXRpb25TY2hlZHVsZVRpbWVyRmlyZWQpCiAjaWYgIVVTRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgLCBtX2FuaW1hdGlv
blJlc29sdXRpb25UaW1lcigqdGhpcywgJkRvY3VtZW50VGltZWxpbmU6OmFuaW1hdGlvblJlc29s
dXRpb25UaW1lckZpcmVkKQpAQCAtNTksNiArNTksMTEgQEAgRG9jdW1lbnRUaW1lbGluZTo6fkRv
Y3VtZW50VGltZWxpbmUoKQogICAgIG1faW52YWxpZGF0aW9uVGFza1F1ZXVlLmNsb3NlKCk7CiB9
CiAKK3ZvaWQgRG9jdW1lbnRUaW1lbGluZTo6ZGV0YWNoRnJvbURvY3VtZW50KCkKK3sKKyAgICBt
X2RvY3VtZW50ID0gbnVsbHB0cjsKK30KKwogc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBEb2N1bWVu
dFRpbWVsaW5lOjpjdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKaW5kZXggMzg2NjAxMDIyMzg5YmMx
OThhYzk4YzA2MGIyNjgyODBlMmQ4MDVjMC4uNmYzZGYxYTBiMjlmMWVmODRhZDg3N2E5NjZlMWIx
M2QzYzRiYWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50
VGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFuaW1hdGlvblRpbWluZ01v
ZGVsRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2Uo
UGxhdGZvcm1EaXNwbGF5SUQpOwogCisgICAgdm9pZCBkZXRhY2hGcm9tRG9jdW1lbnQoKTsKKwog
cHJpdmF0ZToKICAgICBEb2N1bWVudFRpbWVsaW5lKERvY3VtZW50JiwgUGxhdGZvcm1EaXNwbGF5
SUQpOwogCkBAIC02Miw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUFuaW1h
dGlvblJlc29sdXRpb24oKTsKICAgICB2b2lkIHJlc29sdmVBbmltYXRpb25zKCk7CiAKLSAgICBS
ZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50
OwogICAgIGJvb2wgbV9wYXVzZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25k
cz4gbV9jYWNoZWRDdXJyZW50VGltZTsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX2lu
dmFsaWRhdGlvblRhc2tRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlv
bi5jcHAKaW5kZXggOGYyZGFhODNmYTVkZjYyNWIyMWEzM2M2ODBlODJjNjFlMzBkOWU4NC4uYWVj
OTc5ZTQwMzJjMjExMGEyMTZlM2QxMDI4MDQ2NTc0NGFmMTUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJB
bmltYXRpb25FZmZlY3QuaCIKICNpbmNsdWRlICJBbmltYXRpb25UaW1lbGluZS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3QuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzgsNyArMzks
NyBAQCBSZWY8V2ViQW5pbWF0aW9uPiBXZWJBbmltYXRpb246OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIEFuaW1hdGlvbkVmZmVjdCogZWZmZQogICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBXZWJBbmltYXRpb24oKSk7CiAKICAgICByZXN1bHQtPnNldEVmZmVjdChlZmZlY3QpOwot
ICAgIAorCiAgICAgLy8gRklYTUU6IHRoZSBzcGVjIG1hbmRhdGVzIGRpc3Rpbmd1aXNoaW5nIGJl
dHdlZW4gYW4gb21pdHRlZCB0aW1lbGluZSBwYXJhbWV0ZXIKICAgICAvLyBhbmQgYW4gZXhwbGlj
aXQgbnVsbCBvciB1bmRlZmluZWQgdmFsdWUgKHdlYmtpdC5vcmcvYi8xNzkwNjUpLgogICAgIHJl
c3VsdC0+c2V0VGltZWxpbmUodGltZWxpbmUgPyB0aW1lbGluZSA6ICZkb2N1bWVudC50aW1lbGlu
ZSgpKTsKQEAgLTYxLDYgKzYyLDMzIEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRFZmZlY3QoUmVm
UHRyPEFuaW1hdGlvbkVmZmVjdD4mJiBlZmZlY3QpCiAgICAgaWYgKGVmZmVjdCA9PSBtX2VmZmVj
dCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fZWZmZWN0KSB7CisgICAgICAgIG1fZWZm
ZWN0LT5zZXRBbmltYXRpb24obnVsbHB0cik7CisKKyAgICAgICAgLy8gVXBkYXRlIHRoZSBFbGVt
ZW50IHRvIEFuaW1hdGlvbiBtYXAuCisgICAgICAgIGlmIChtX3RpbWVsaW5lICYmIG1fZWZmZWN0
LT5pc0tleWZyYW1lRWZmZWN0KCkpIHsKKyAgICAgICAgICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0
ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKTsKKyAgICAgICAgICAg
IGF1dG8qIHRhcmdldCA9IGtleWZyYW1lRWZmZWN0LT50YXJnZXQoKTsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXQpCisgICAgICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3Zl
ZEZyb21FbGVtZW50KCp0aGlzLCAqdGFyZ2V0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChlZmZlY3QpIHsKKyAgICAgICAgLy8gQW4gYW5pbWF0aW9uIGVmZmVjdCBjYW4gb25seSBiZSBh
c3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgYW5pbWF0aW9uLgorICAgICAgICBpZiAoZWZmZWN0LT5h
bmltYXRpb24oKSkKKyAgICAgICAgICAgIGVmZmVjdC0+YW5pbWF0aW9uKCktPnNldEVmZmVjdChu
dWxscHRyKTsKKworICAgICAgICBlZmZlY3QtPnNldEFuaW1hdGlvbih0aGlzKTsKKworICAgICAg
ICBpZiAobV90aW1lbGluZSAmJiBlZmZlY3QtPmlzS2V5ZnJhbWVFZmZlY3QoKSkgeworICAgICAg
ICAgICAgYXV0byoga2V5ZnJhbWVFZmZlY3QgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oZWZm
ZWN0LmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8qIHRhcmdldCA9IGtleWZyYW1lRWZmZWN0LT50
YXJnZXQoKTsKKyAgICAgICAgICAgIGlmICh0YXJnZXQpCisgICAgICAgICAgICAgICAgbV90aW1l
bGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQoKnRoaXMsICp0YXJnZXQpOworICAgICAg
ICB9CisgICAgfQorCiAgICAgbV9lZmZlY3QgPSBXVEZNb3ZlKGVmZmVjdCk7CiB9CiAKQEAgLTc4
LDYgKzEwNiwxNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0VGltZWxpbmUoUmVmUHRyPEFuaW1h
dGlvblRpbWVsaW5lPiYmIHRpbWVsaW5lKQogICAgIGlmICh0aW1lbGluZSkKICAgICAgICAgdGlt
ZWxpbmUtPmFkZEFuaW1hdGlvbigqdGhpcyk7CiAKKyAgICBpZiAobV9lZmZlY3QgJiYgbV9lZmZl
Y3QtPmlzS2V5ZnJhbWVFZmZlY3QoKSkgeworICAgICAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9
IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdC5nZXQoKSk7CisgICAgICAgIGF1dG8q
IHRhcmdldCA9IGtleWZyYW1lRWZmZWN0LT50YXJnZXQoKTsKKyAgICAgICAgaWYgKHRhcmdldCkg
eworICAgICAgICAgICAgaWYgKG1fdGltZWxpbmUpCisgICAgICAgICAgICAgICAgbV90aW1lbGlu
ZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KCp0aGlzLCAqdGFyZ2V0KTsKKyAgICAg
ICAgICAgIGlmICh0aW1lbGluZSkKKyAgICAgICAgICAgICAgICB0aW1lbGluZS0+YW5pbWF0aW9u
V2FzQWRkZWRUb0VsZW1lbnQoKnRoaXMsICp0YXJnZXQpOworICAgICAgICB9CisgICAgfQorCiAg
ICAgbV90aW1lbGluZSA9IFdURk1vdmUodGltZWxpbmUpOwogfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggYTU1YmQ5Yjk5MDhiMGVjOGUyYzdhMjZhNzJmNmVmZDcyNTAxZDkyMC4u
NjQ5N2UzYjk0MDdmNmE0YjNmNjM1N2M0NDMyYzkyMzBhMzVhNTU0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIK
ICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEb2N1bWVu
dFNoYXJlZE9iamVjdFBvb2wuaCIKKyNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIkVk
aXRvci5oIgpAQCAtMTk0LDYgKzE5NSw3IEBACiAjaW5jbHVkZSAiVmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQuaCIKICNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
VmlzaXRlZExpbmtTdGF0ZS5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUg
IldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhN
TERvY3VtZW50LmgiCkBAIC0yMzA4LDYgKzIzMTAsMTEgQEAgdm9pZCBEb2N1bWVudDo6cHJlcGFy
ZUZvckRlc3RydWN0aW9uKCkKICAgICBpZiAobV9oYXNQcmVwYXJlZEZvckRlc3RydWN0aW9uKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV90aW1lbGluZSkgeworICAgICAgICBtX3RpbWVs
aW5lLT5kZXRhY2hGcm9tRG9jdW1lbnQoKTsKKyAgICAgICAgbV90aW1lbGluZSA9IG51bGxwdHI7
CisgICAgfQorCiAgICAgaWYgKG1fZnJhbWUpCiAgICAgICAgIG1fZnJhbWUtPmFuaW1hdGlvbigp
LmRldGFjaEZyb21Eb2N1bWVudCh0aGlzKTsKIApAQCAtNzQ1OSw2ICs3NDY2LDE3IEBAIERvY3Vt
ZW50VGltZWxpbmUmIERvY3VtZW50Ojp0aW1lbGluZSgpCiAgICAgcmV0dXJuICptX3RpbWVsaW5l
OwogfQogCitWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IERvY3VtZW50OjpnZXRBbmltYXRp
b25zKCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IGFuaW1hdGlvbnM7Cisg
ICAgaWYgKG1fdGltZWxpbmUpIHsKKyAgICAgICAgLy8gRklYTUU6IEZpbHRlciBhbmQgb3JkZXIg
dGhlIGxpc3QgYXMgc3BlY2lmaWVkICh3ZWJraXQub3JnL2IvMTc5NTM1KS4KKyAgICAgICAgZm9y
IChhdXRvJiBhbmltYXRpb24gOiBtX3RpbWVsaW5lLT5hbmltYXRpb25zKCkpCisgICAgICAgICAg
ICBhbmltYXRpb25zLmFwcGVuZChhbmltYXRpb24pOworICAgIH0KKyAgICByZXR1cm4gYW5pbWF0
aW9uczsKK30KKwogc3RhdGljIE1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZUZvcldURkxvZ0No
YW5uZWwoY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCkKIHsKICAgICBzdGF0aWMgY29uc3Qg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBtZWRpYUNoYW5uZWwgPSBNQUtFX1NUQVRJQ19TVFJJTkdf
SU1QTCgibWVkaWEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZDgxN2E5NjY0NmYxNjg5MjI4
YjIwZGQ5YzkyY2ZiZWY5MjUxM2Y0Ny4uMmE4NmI3ZjAzZjlkMjg3NDYyMTc3YjlmZDE2YmU3ZTk4
NDZlZTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJEb2N1bWVu
dEV2ZW50UXVldWUuaCIKLSNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRUaW1pbmcuaCIKICNpbmNsdWRlICJGb2N1c0RpcmVjdGlvbi5oIgogI2luY2x1ZGUg
IkZvbnRTZWxlY3RvckNsaWVudC5oIgpAQCAtMTAyLDYgKzEwMSw3IEBAIGNsYXNzIERvY3VtZW50
TG9hZGVyOwogY2xhc3MgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOwogY2xhc3MgRG9jdW1lbnRQ
YXJzZXI7CiBjbGFzcyBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w7CitjbGFzcyBEb2N1bWVudFRp
bWVsaW5lOwogY2xhc3MgRG9jdW1lbnRUeXBlOwogY2xhc3MgRXh0ZW5zaW9uU3R5bGVTaGVldHM7
CiBjbGFzcyBGbG9hdFF1YWQ7CkBAIC0xNzMsNiArMTczLDcgQEAgY2xhc3MgVGV4dFJlc291cmNl
RGVjb2RlcjsKIGNsYXNzIFRyZWVXYWxrZXI7CiBjbGFzcyBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50
OwogY2xhc3MgVmlzaXRlZExpbmtTdGF0ZTsKK2NsYXNzIFdlYkFuaW1hdGlvbjsKIGNsYXNzIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7CiBjbGFz
cyBXZWJHUFVSZW5kZXJpbmdDb250ZXh0OwpAQCAtMTM3Miw2ICsxMzczLDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VMaXN0ZW5lcihSZWZQdHI8
U3RyaW5nQ2FsbGJhY2s+JiYpOyAvLyBGb3IgdGVzdGluZy4KIAogICAgIERvY3VtZW50VGltZWxp
bmUmIHRpbWVsaW5lKCk7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBnZXRBbmlt
YXRpb25zKCk7CiAgICAgICAgIAogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxh
Z3MgeyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IGJmYzRjM2RmNjdiMGM5NGFkMDRmNmRiN2MwZmZj
YmU5MGE2ZmMzZjMuLmU3OWM3MDdlMzg2YmFhZjYyN2I2ZDE2MmViYWI3MTJmMjk5ZjFjOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMjEyLDYgKzIxMiw3IEBAIHR5cGVkZWYgKAogICAg
IFtSZXBsYWNlYWJsZV0gcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxBbGxDb2xsZWN0aW9uIGFsbDsg
LyogW1NhbWVPYmplY3RdICovCiAKICAgICBbRW5hYmxlZEF0UnVudGltZT1XZWJBbmltYXRpb25z
XSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnRUaW1lbGluZSB0aW1lbGluZTsKKyAgICBbRW5h
YmxlZEF0UnVudGltZT1XZWJBbmltYXRpb25zXSBzZXF1ZW5jZTxXZWJBbmltYXRpb24+IGdldEFu
aW1hdGlvbnMoKTsKIH07CiAKIGVudW0gRG9jdW1lbnRSZWFkeVN0YXRlIHsgImxvYWRpbmciLCAi
aW50ZXJhY3RpdmUiLCAiY29tcGxldGUiIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTA0
Y2ZiMDViZWY3MDBlNjJmODNlMmFlZmMwYjE1YmI0NjU0ZWJjZC4uNDFlM2FiYTU4YWZlYWQyNjNl
NzVmZmZhNmNkN2RkOWFiMDFlYzMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIkRPTVJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5MaXN0
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgiCisjaW5jbHVkZSAiRG9j
dW1lbnRUaW1lbGluZS5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50UmFyZURhdGEuaCIKQEAgLTM2ODgsNCArMzY4
OSwxMCBAQCBFbGVtZW50KiBFbGVtZW50OjpmaW5kQW5jaG9yRWxlbWVudEZvckxpbmsoU3RyaW5n
JiBvdXRBbmNob3JOYW1lKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitWZWN0b3I8UmVmUHRy
PFdlYkFuaW1hdGlvbj4+IEVsZW1lbnQ6OmdldEFuaW1hdGlvbnMoKQoreworICAgIC8vIEZJWE1F
OiBGaWx0ZXIgYW5kIG9yZGVyIHRoZSBsaXN0IGFzIHNwZWNpZmllZCAod2Via2l0Lm9yZy9iLzE3
OTUzNSkuCisgICAgcmV0dXJuIGRvY3VtZW50KCkudGltZWxpbmUoKS5hbmltYXRpb25zRm9yRWxl
bWVudCgqdGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IDUzYTUxY2M2NDNjNzdiZTAxY2EyYTZhODEyNjM1NTJjMjY4NzYzN2IuLjBhNTA0Nzdi
MTE3MmU1Mzk0NDg4NjQ4OTRjZTMyNjJiYjgyNTgyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAt
NTUwLDYgKzU1MCw4IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQqIGZpbmRBbmNob3JFbGVtZW50
Rm9yTGluayhTdHJpbmcmIG91dEFuY2hvck5hbWUpOwogCisgICAgVmVjdG9yPFJlZlB0cjxXZWJB
bmltYXRpb24+PiBnZXRBbmltYXRpb25zKCk7CisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5cGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwKaW5kZXggNWZkMzgwOGU1ZjlkOWQwMjY4NzBkMTM1ODAxNWU3MTE3NDVj
ZGJiNi4uZDlkYTcxYmM0NDU1YTcxYTc5NGI1ZGQ0M2I4Mzc0OTQzNWY3YTA1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbApAQCAtMTQ2LDYgKzE0Niw3IEBAIGRpY3Rpb25hcnkgU2hhZG93Um9vdElu
aXQgewogICAgIHJlcXVpcmVkIFNoYWRvd1Jvb3RNb2RlIG1vZGU7CiB9OwogCitFbGVtZW50IGlt
cGxlbWVudHMgQW5pbWF0YWJsZTsKIEVsZW1lbnQgaW1wbGVtZW50cyBDaGlsZE5vZGU7CiBFbGVt
ZW50IGltcGxlbWVudHMgRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVyczsKIEVsZW1lbnQg
aW1wbGVtZW50cyBOb25Eb2N1bWVudFR5cGVDaGlsZE5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggNzI2NzIzNTZhM2RhYzc5YTFiNzBiMjFkOTVhNjhjMTQ1ZjM2MmNj
OC4uNDhmZWZiMGNiZDY2MGM4NDQxMTA2MTFjNjY5ZTgzYmRjNTY5N2JhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmgiCisj
aW5jbHVkZSAiQW5pbWF0aW9uVGltZWxpbmUuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oIgogI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkF1dG9maWxs
LmgiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZWY4NzBhNTU0MTQ0YTY0NWY5NzA1NWNlYWI2MjZjZDQ3ZGFhNzI0MS4uOTAx
YWM3MWNhZTIwNjBjOWM1ZDc1MWNkYzk0MjAxOGQ5MzJlNWUxMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE3LTExLTEwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYiBBbmltYXRpb25zXSBJbXBsZW1lbnQgZ2V0QW5pbWF0aW9ucygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1MzUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM0OTMyNDc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBXUFQgZXhwZWN0YXRpb25zIHBlciBuZXcgcHJvZ3Jl
c3Npb25zIGFuZCBhZGQgdGhyZWUgbmV3IHRlc3RzIHRoYXQgY2hlY2sgdGhlIGJlaGF2aW9yIG9m
CisgICAgICAgIERvY3VtZW50LmdldEFuaW1hdGlvbnMoKSwgRWxlbWVudC5nZXRBbmltYXRpb25z
KCkgYW5kIHRoZSB1bmlxdWUgcmVsYXRpb25zaGlwIGJldHdlZW4gYW4gQW5pbWF0aW9uCisgICAg
ICAgIGFuZCBhbiBBbmltYXRpb25FZmZlY3QuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWItYW5p
bWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvYW5pbWF0ZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9BbmltYXRhYmxlL2dldEFu
aW1hdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3dlYi1hbmltYXRpb25z
L2ludGVyZmFjZXMvRG9jdW1lbnQvZ2V0QW5pbWF0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9kb2N1bWVudC1nZXQtYW5p
bWF0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3drLXdlYi1h
bmltYXRpb25zL2ludGVyZmFjZXMvZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9lbGVtZW50
LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
d2std2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9lbGVtZW50LWdldC1hbmltYXRpb25zLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL3RpbWluZy1tb2Rl
bC9hbmltYXRpb24tZWZmZWN0LXVuaXF1ZS1yZWxhdGlvbnNoaXAtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC93ay13ZWItYW5pbWF0aW9ucy90aW1pbmctbW9kZWwvYW5p
bWF0aW9uLWVmZmVjdC11bmlxdWUtcmVsYXRpb25zaGlwLmh0bWw6IEFkZGVkLgorCiAyMDE3LTEx
LTA1ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBB
bmltYXRpb25zXSBTY2hlZHVsZSBhbmltYXRpb25zIHJlZ2lzdGVyZWQgb24gdGhlIGRvY3VtZW50
IHRpbWVsaW5lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9u
cy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvYW5pbWF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvYW5pbWF0ZS1l
eHBlY3RlZC50eHQKaW5kZXggNjQ3ZTc4NDA0MDQzZjA2OWMyZjcwM2U3ZGRmOGEzODdmMmNlYjRm
Ni4uY2VkNDUwNDM5MDY3ZTg0NjBkMWRkY2EwNTdjNjk4MDRhODhhOWRjYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9BbmltYXRhYmxl
L2FuaW1hdGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYi1hbmlt
YXRpb25zL2ludGVyZmFjZXMvQW5pbWF0YWJsZS9hbmltYXRlLWV4cGVjdGVkLnR4dApAQCAtOTEs
NiArOTEsNiBAQCBGQUlMIEVsZW1lbnQuYW5pbWF0ZSgpIGNvcnJlY3RseSBzZXRzIHRoZSBpZCBh
dHRyaWJ1dGUgZGl2LmFuaW1hdGUgaXMgbm90IGEgZnVuYwogRkFJTCBFbGVtZW50LmFuaW1hdGUo
KSBjb3JyZWN0bHkgc2V0cyB0aGUgQW5pbWF0aW9uJ3MgdGltZWxpbmUgZGl2LmFuaW1hdGUgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnZGl2LmFuaW1hdGUoeyBvcGFjaXR5OiBbIDAsIDEgXSB9LCAy
MDAwKScsICdkaXYuYW5pbWF0ZScgaXMgdW5kZWZpbmVkKQogRkFJTCBFbGVtZW50LmFuaW1hdGUo
KSBjb3JyZWN0bHkgc2V0cyB0aGUgQW5pbWF0aW9uJ3MgdGltZWxpbmUgd2hlbiB0cmlnZ2VyZWQg
b24gYW4gZWxlbWVudCBpbiBhIGRpZmZlcmVudCBkb2N1bWVudCBkaXYuYW5pbWF0ZSBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICdkaXYuYW5pbWF0ZSh7IG9wYWNpdHk6IFsgMCwgMSBdIH0sIDIwMDAp
JywgJ2Rpdi5hbmltYXRlJyBpcyB1bmRlZmluZWQpCiBGQUlMIEVsZW1lbnQuYW5pbWF0ZSgpIGNh
bGxzIHBsYXkgb24gdGhlIEFuaW1hdGlvbiBkaXYuYW5pbWF0ZSBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdkaXYuYW5pbWF0ZSh7IG9wYWNpdHk6IFsgMCwgMSBdIH0sIDIwMDApJywgJ2Rpdi5hbmlt
YXRlJyBpcyB1bmRlZmluZWQpCi1GQUlMIENTU1BzZXVkb0VsZW1lbnQuYW5pbWF0ZSgpIGNyZWF0
ZXMgYW4gQW5pbWF0aW9uIG9iamVjdCBkb2N1bWVudC5nZXRBbmltYXRpb25zIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ2RvY3VtZW50LmdldEFuaW1hdGlvbnMoKScsICdkb2N1bWVudC5nZXRBbmlt
YXRpb25zJyBpcyB1bmRlZmluZWQpCi1GQUlMIENTU1BzZXVkb0VsZW1lbnQuYW5pbWF0ZSgpIGNy
ZWF0ZXMgYW4gQW5pbWF0aW9uIG9iamVjdCB0YXJnZXRpbmcgdG8gdGhlIGNvcnJlY3QgQ1NTUHNl
dWRvRWxlbWVudCBvYmplY3QgZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucyBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdkb2N1bWVudC5nZXRBbmltYXRpb25zKCknLCAnZG9jdW1lbnQuZ2V0QW5pbWF0aW9u
cycgaXMgdW5kZWZpbmVkKQorRkFJTCBDU1NQc2V1ZG9FbGVtZW50LmFuaW1hdGUoKSBjcmVhdGVz
IGFuIEFuaW1hdGlvbiBvYmplY3QgYXNzZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNl
CitGQUlMIENTU1BzZXVkb0VsZW1lbnQuYW5pbWF0ZSgpIGNyZWF0ZXMgYW4gQW5pbWF0aW9uIG9i
amVjdCB0YXJnZXRpbmcgdG8gdGhlIGNvcnJlY3QgQ1NTUHNldWRvRWxlbWVudCBvYmplY3QgYXNz
ZXJ0X3RydWU6IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCiAgCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvZ2V0QW5p
bWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9u
cy9pbnRlcmZhY2VzL0FuaW1hdGFibGUvZ2V0QW5pbWF0aW9ucy1leHBlY3RlZC50eHQKaW5kZXgg
YjkxYzM5NmVjMzM1Yzk3ZmQzYjk2Nzk3MmVlNDhmYzliM2U3Y2MyNi4uMTMzYWRlMWUyZTM1ZDRl
MDk0OTg0MTVkZGNjMmRkNjU3YzFkZTA0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9BbmltYXRhYmxlL2dldEFuaW1hdGlvbnMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYi1hbmltYXRpb25zL2ludGVy
ZmFjZXMvQW5pbWF0YWJsZS9nZXRBbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUg
QEAKIAotRkFJTCBUZXN0IGdldEFuaW1hdGlvbnMgb24gZWxlbWVudCB3aXRoIG5vIGFuaW1hdGlv
bnMgZGl2LmdldEFuaW1hdGlvbnMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZGl2LmdldEFuaW1h
dGlvbnMoKScsICdkaXYuZ2V0QW5pbWF0aW9ucycgaXMgdW5kZWZpbmVkKQorUEFTUyBUZXN0IGdl
dEFuaW1hdGlvbnMgb24gZWxlbWVudCB3aXRoIG5vIGFuaW1hdGlvbnMgCiBGQUlMIFRlc3QgZ2V0
QW5pbWF0aW9ucyBvbiBlbGVtZW50IHdpdGggdHdvIGFuaW1hdGlvbnMgZGl2LmFuaW1hdGUgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnZGl2LmFuaW1hdGUobnVsbCwgMTAwICogTVNfUEVSX1NFQykn
LCAnZGl2LmFuaW1hdGUnIGlzIHVuZGVmaW5lZCkKIEZBSUwgVGVzdCBnZXRBbmltYXRpb25zIG9u
IHNlcGFyYXRlIGVsZW1lbnRzIHdpdGggc2VwYXJhdGUgYW5pbWF0aW9ucyBkaXZBLmFuaW1hdGUg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZGl2QS5hbmltYXRlKG51bGwsIDEwMCAqIE1TX1BFUl9T
RUMpJywgJ2RpdkEuYW5pbWF0ZScgaXMgdW5kZWZpbmVkKQogRkFJTCBUZXN0IGdldEFuaW1hdGlv
bnMgb24gcGFyZW50IGFuZCBjaGlsZCBlbGVtZW50cyB3aXRoIHNlcGFyYXRlIGFuaW1hdGlvbnMg
ZGl2UGFyZW50LmFuaW1hdGUgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZGl2UGFyZW50LmFuaW1h
dGUobnVsbCwgMTAwICogTVNfUEVSX1NFQyknLCAnZGl2UGFyZW50LmFuaW1hdGUnIGlzIHVuZGVm
aW5lZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYi1hbmltYXRpb25zL2lu
dGVyZmFjZXMvRG9jdW1lbnQvZ2V0QW5pbWF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0RvY3VtZW50L2dldEFuaW1hdGlv
bnMtZXhwZWN0ZWQudHh0CmluZGV4IDhhNDA0ZmNlNmUwZWYyMjllM2IxZTY5MmM5YWZlOTk5NDI2
MDIyN2QuLjVlNTA4ZTI2YmIyNjZmZTQ0NGU5OTI1ZjUzN2RmYTkwNWU3MDA2MTEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvRG9jdW1l
bnQvZ2V0QW5pbWF0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9Eb2N1bWVudC9nZXRBbmltYXRpb25zLWV4cGVjdGVk
LnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCBUZXN0IGRvY3VtZW50LmdldEFuaW1hdGlvbnMg
Zm9yIG5vbi1hbmltYXRlZCBjb250ZW50IGRvY3VtZW50LmdldEFuaW1hdGlvbnMgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnZG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpJywgJ2RvY3VtZW50LmdldEFu
aW1hdGlvbnMnIGlzIHVuZGVmaW5lZCkKK1BBU1MgVGVzdCBkb2N1bWVudC5nZXRBbmltYXRpb25z
IGZvciBub24tYW5pbWF0ZWQgY29udGVudCAKIEZBSUwgVGVzdCBkb2N1bWVudC5nZXRBbmltYXRp
b25zIGZvciBzY3JpcHQtZ2VuZXJhdGVkIGFuaW1hdGlvbnMgZGl2LmFuaW1hdGUgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnZGl2LmFuaW1hdGUoZ0tleUZyYW1lcywgMTAwICogTVNfUEVSX1NFQykn
LCAnZGl2LmFuaW1hdGUnIGlzIHVuZGVmaW5lZCkKIEZBSUwgVGVzdCB0aGUgb3JkZXIgb2YgZG9j
dW1lbnQuZ2V0QW5pbWF0aW9ucyB3aXRoIHNjcmlwdCBnZW5lcmF0ZWQgYW5pbWF0aW9ucyBkaXYu
YW5pbWF0ZSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdkaXYuYW5pbWF0ZShnS2V5RnJhbWVzLCAx
MDAgKiBNU19QRVJfU0VDKScsICdkaXYuYW5pbWF0ZScgaXMgdW5kZWZpbmVkKQogRkFJTCBUZXN0
IGRvY3VtZW50LmdldEFuaW1hdGlvbnMgd2l0aCBudWxsIHRhcmdldCBDYW4ndCBmaW5kIHZhcmlh
YmxlOiBLZXlmcmFtZUVmZmVjdFJlYWRPbmx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ay13ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL2RvY3VtZW50LWdldC1hbmltYXRpb25z
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL2lu
dGVyZmFjZXMvZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFmYjNmM2YxMjJjMTlmNmUwMmU3MDcwOWQzZWU3Y2NmY2RlYzBiMTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ay13ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL2Rv
Y3VtZW50LWdldC1hbmltYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworUEFT
UyBEb2N1bWVudCBleHBvc2VzIHRoZSBnZXRBbmltYXRpb25zIG1ldGhvZC4gCitQQVNTIERvY3Vt
ZW50LmdldEFuaW1hdGlvbnMoKSByZXR1cm5zIGFuIGVtcHR5IGFycmF5IHdoZW4gbm8gYW5pbWF0
aW9ucyB3ZXJlIGFkZGVkLiAKK1BBU1MgRG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpIHJldHVybnMg
YW4gYXJyYXkgd2l0aCB0aGUgbmV3IGFuaW1hdGlvbnMgY29udGFpbmVkLiAKK1BBU1MgU2V0dGlu
ZyB0aW1lbGluZSA9IG51bGwgb24gYW4gYW5pbWF0aW9uIHJlbW92ZXMgaXQgZnJvbSB0aGUgYXJy
YXkgcmV0dXJuZWQgYnkgRG9jdW1lbnQuZ2V0QW5pbWF0aW9ucygpLiAKK1BBU1MgU2V0dGluZyB0
aW1lbGluZSA9IGRvY3VtZW50LnRpbWVsaW5lIG9uIGFuIGFuaW1hdGlvbiBhZGRzIGl0IHRvIHRo
ZSBhcnJheSByZXR1cm5lZCBieSBEb2N1bWVudC5nZXRBbmltYXRpb25zKCkuIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ay13ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL2Rv
Y3VtZW50LWdldC1hbmltYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ay13ZWIt
YW5pbWF0aW9ucy9pbnRlcmZhY2VzL2RvY3VtZW50LWdldC1hbmltYXRpb25zLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2UzNTBkNzY5ZGE1ZjhmYjg5ZGQ0ZGY5YTBlNjliMmQzYWUyYzFhYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFj
ZXMvZG9jdW1lbnQtZ2V0LWFuaW1hdGlvbnMuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+RG9jdW1lbnQuZ2V0QW5pbWF0
aW9ucygpPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisndXNlIHN0
cmljdCc7CisKK2xldCBhLCBiLCBjOworCit0ZXN0KHQgPT4geworICAgIGFzc2VydF90cnVlKHR5
cGVvZiBkb2N1bWVudC5nZXRBbmltYXRpb25zID09PSAiZnVuY3Rpb24iKTsKK30sICJEb2N1bWVu
dCBleHBvc2VzIHRoZSBnZXRBbmltYXRpb25zIG1ldGhvZC4iKTsKKwordGVzdCh0ID0+IHsKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKGRvY3VtZW50LmdldEFuaW1hdGlvbnMoKSwgW10pOworfSwg
IkRvY3VtZW50LmdldEFuaW1hdGlvbnMoKSByZXR1cm5zIGFuIGVtcHR5IGFycmF5IHdoZW4gbm8g
YW5pbWF0aW9ucyB3ZXJlIGFkZGVkLiIpOworCit0ZXN0KHQgPT4geworICAgIGEgPSBuZXcgQW5p
bWF0aW9uOworICAgIGIgPSBuZXcgQW5pbWF0aW9uOworICAgIGMgPSBuZXcgQW5pbWF0aW9uOwor
ICAgIGNvbnN0IGFuaW1hdGlvbnMgPSBkb2N1bWVudC5nZXRBbmltYXRpb25zKCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0aCwgMyk7CisgICAgYXNzZXJ0X2luX2FycmF5KGEs
IGFuaW1hdGlvbnMpOworICAgIGFzc2VydF9pbl9hcnJheShiLCBhbmltYXRpb25zKTsKKyAgICBh
c3NlcnRfaW5fYXJyYXkoYywgYW5pbWF0aW9ucyk7Cit9LCAiRG9jdW1lbnQuZ2V0QW5pbWF0aW9u
cygpIHJldHVybnMgYW4gYXJyYXkgd2l0aCB0aGUgbmV3IGFuaW1hdGlvbnMgY29udGFpbmVkLiIp
OworCit0ZXN0KHQgPT4geworICAgIGIudGltZWxpbmUgPSBudWxsOworICAgIGNvbnN0IGFuaW1h
dGlvbnMgPSBkb2N1bWVudC5nZXRBbmltYXRpb25zKCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmlt
YXRpb25zLmxlbmd0aCwgMik7CisgICAgYXNzZXJ0X2luX2FycmF5KGEsIGFuaW1hdGlvbnMpOwor
ICAgIGFzc2VydF9pbl9hcnJheShjLCBhbmltYXRpb25zKTsKK30sICJTZXR0aW5nIHRpbWVsaW5l
ID0gbnVsbCBvbiBhbiBhbmltYXRpb24gcmVtb3ZlcyBpdCBmcm9tIHRoZSBhcnJheSByZXR1cm5l
ZCBieSBEb2N1bWVudC5nZXRBbmltYXRpb25zKCkuIik7CisKK3Rlc3QodCA9PiB7CisgICAgYi50
aW1lbGluZSA9IGRvY3VtZW50LnRpbWVsaW5lOworICAgIGNvbnN0IGFuaW1hdGlvbnMgPSBkb2N1
bWVudC5nZXRBbmltYXRpb25zKCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbmltYXRpb25zLmxlbmd0
aCwgMyk7CisgICAgYXNzZXJ0X2luX2FycmF5KGEsIGFuaW1hdGlvbnMpOworICAgIGFzc2VydF9p
bl9hcnJheShiLCBhbmltYXRpb25zKTsKKyAgICBhc3NlcnRfaW5fYXJyYXkoYywgYW5pbWF0aW9u
cyk7Cit9LCAiU2V0dGluZyB0aW1lbGluZSA9IGRvY3VtZW50LnRpbWVsaW5lIG9uIGFuIGFuaW1h
dGlvbiBhZGRzIGl0IHRvIHRoZSBhcnJheSByZXR1cm5lZCBieSBEb2N1bWVudC5nZXRBbmltYXRp
b25zKCkuIik7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9lbGVtZW50LWdldC1hbmltYXRp
b25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25z
L2ludGVyZmFjZXMvZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTQ0ZGQ2MWY2NDQwNGJhOWJkODkwNjhkN2M3YzU0ZmFkMWZkMjMyYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL2ludGVyZmFjZXMv
ZWxlbWVudC1nZXQtYW5pbWF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK1BB
U1MgRWxlbWVudCBleHBvc2VzIHRoZSBnZXRBbmltYXRpb25zIG1ldGhvZC4gCitQQVNTIEVsZW1l
bnQuZ2V0QW5pbWF0aW9ucygpIHJldHVybnMgYW4gZW1wdHkgYXJyYXkgd2hlbiBubyBhbmltYXRp
b25zIHdlcmUgYWRkZWQuIAorUEFTUyBFbGVtZW50LmdldEFuaW1hdGlvbnMoKSByZXR1cm5zIGFu
IGFycmF5IHdpdGggYW5pbWF0aW9ucyB0YXJnZXR0aW5nIHRoYXQgZWxlbWVudC4gCitQQVNTIEFu
IGVmZmVjdCBjYW4gb25seSBiZSBhcHBsaWVkIHRvIGEgc2luZ2xlIGFuaW1hdGlvbiBhbmQgY2hh
bmdpbmcgaXQgY2hhbmdlcyB0aGUgYW5pbWF0aW9ucyByZXR1cm5lZCBieSBFbGVtZW50LmdldEFu
aW1hdGlvbnMoKS4gCitQQVNTIFNldHRpbmcgYW4gYW5pbWF0aW9uJ3MgZWZmZWN0IHRvIG51bGwg
Y2hhbmdlcyB0aGUgYW5pbWF0aW9ucyByZXR1cm5lZCBieSBFbGVtZW50LmdldEFuaW1hdGlvbnMo
KS4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25z
L2ludGVyZmFjZXMvZWxlbWVudC1nZXQtYW5pbWF0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2std2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9lbGVtZW50LWdldC1hbmltYXRpb25z
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjVkM2U2ZGQ1M2M1N2EyZDgyZWMyZjU3NGIxMjlmOWEzNDBjMDBj
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRp
b25zL2ludGVyZmFjZXMvZWxlbWVudC1nZXQtYW5pbWF0aW9ucy5odG1sCkBAIC0wLDAgKzEsNTIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzx0aXRsZT5FbGVtZW50
LmdldEFuaW1hdGlvbnMoKTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0
PgorJ3VzZSBzdHJpY3QnOworCitsZXQgYSwgYiwgYzsKKworY29uc3QgdGFyZ2V0QSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKK2NvbnN0IHRhcmdldEIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJiIik7CisKK2NvbnN0IGVmZmVjdEFhID0gbmV3IEtleWZyYW1lRWZmZWN0KHRhcmdl
dEEpOworY29uc3QgZWZmZWN0QWIgPSBuZXcgS2V5ZnJhbWVFZmZlY3QodGFyZ2V0QSk7Citjb25z
dCBlZmZlY3RCID0gbmV3IEtleWZyYW1lRWZmZWN0KHRhcmdldEIpOworCit0ZXN0KHQgPT4gewor
ICAgIGFzc2VydF90cnVlKHR5cGVvZiB0YXJnZXRBLmdldEFuaW1hdGlvbnMgPT09ICJmdW5jdGlv
biIpOworfSwgIkVsZW1lbnQgZXhwb3NlcyB0aGUgZ2V0QW5pbWF0aW9ucyBtZXRob2QuIik7CisK
K3Rlc3QodCA9PiB7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0YXJnZXRBLmdldEFuaW1hdGlv
bnMoKSwgW10pOworICAgIGFzc2VydF9hcnJheV9lcXVhbHModGFyZ2V0Qi5nZXRBbmltYXRpb25z
KCksIFtdKTsKK30sICJFbGVtZW50LmdldEFuaW1hdGlvbnMoKSByZXR1cm5zIGFuIGVtcHR5IGFy
cmF5IHdoZW4gbm8gYW5pbWF0aW9ucyB3ZXJlIGFkZGVkLiIpOworCit0ZXN0KHQgPT4geworICAg
IGEgPSBuZXcgQW5pbWF0aW9uKGVmZmVjdEFhKTsKKyAgICBiID0gbmV3IEFuaW1hdGlvbihlZmZl
Y3RBYik7CisgICAgYyA9IG5ldyBBbmltYXRpb24oZWZmZWN0Qik7CisgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyh0YXJnZXRBLmdldEFuaW1hdGlvbnMoKSwgW2EsIGJdKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHRhcmdldEIuZ2V0QW5pbWF0aW9ucygpLCBbY10pOworfSwgIkVsZW1lbnQuZ2V0
QW5pbWF0aW9ucygpIHJldHVybnMgYW4gYXJyYXkgd2l0aCBhbmltYXRpb25zIHRhcmdldHRpbmcg
dGhhdCBlbGVtZW50LiIpOworCit0ZXN0KHQgPT4geworICAgIGIuZWZmZWN0ID0gZWZmZWN0QjsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHRhcmdldEEuZ2V0QW5pbWF0aW9ucygpLCBbYV0pOwor
ICAgIGFzc2VydF9hcnJheV9lcXVhbHModGFyZ2V0Qi5nZXRBbmltYXRpb25zKCksIFtiXSk7Cit9
LCAiQW4gZWZmZWN0IGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gYSBzaW5nbGUgYW5pbWF0aW9uIGFu
ZCBjaGFuZ2luZyBpdCBjaGFuZ2VzIHRoZSBhbmltYXRpb25zIHJldHVybmVkIGJ5IEVsZW1lbnQu
Z2V0QW5pbWF0aW9ucygpLiIpOworCit0ZXN0KHQgPT4geworICAgIGEuZWZmZWN0ID0gbnVsbDsK
KyAgICBiLmVmZmVjdCA9IG51bGw7CisgICAgYy5lZmZlY3QgPSBudWxsOworICAgIGFzc2VydF9h
cnJheV9lcXVhbHModGFyZ2V0QS5nZXRBbmltYXRpb25zKCksIFtdKTsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHRhcmdldEIuZ2V0QW5pbWF0aW9ucygpLCBbXSk7Cit9LCAiU2V0dGluZyBhbiBh
bmltYXRpb24ncyBlZmZlY3QgdG8gbnVsbCBjaGFuZ2VzIHRoZSBhbmltYXRpb25zIHJldHVybmVk
IGJ5IEVsZW1lbnQuZ2V0QW5pbWF0aW9ucygpLiIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL3RpbWluZy1t
b2RlbC9hbmltYXRpb24tZWZmZWN0LXVuaXF1ZS1yZWxhdGlvbnNoaXAtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1h
dGlvbi1lZmZlY3QtdW5pcXVlLXJlbGF0aW9uc2hpcC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmU3MGU0ZGJjNTYxNDUzYjg2MTRhOWY4NGZmM2JmYzFkODU4MWU1OAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3drLXdlYi1hbmltYXRpb25zL3RpbWluZy1tb2RlbC9h
bmltYXRpb24tZWZmZWN0LXVuaXF1ZS1yZWxhdGlvbnNoaXAtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMyBAQAorCitQQVNTIENoZWNrIHRoYXQgc2V0dGluZyBhbiBhbmltYXRpb24ncyBlZmZlY3Qg
b250byBhbm90aGVyIGFuaW1hdGlvbiBzZXRzIGVmZmVjdCB0byBudWxsLiAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2std2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2Fu
aW1hdGlvbi1lZmZlY3QtdW5pcXVlLXJlbGF0aW9uc2hpcC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2std2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbi1lZmZlY3QtdW5p
cXVlLXJlbGF0aW9uc2hpcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNTcxNDAwZjcwOTkxY2EzNmJlMjk1
MGE0NWVmZDdkMmEwODJhY2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ay13ZWItYW5pbWF0aW9ucy90aW1pbmctbW9kZWwvYW5pbWF0aW9uLWVmZmVjdC11bmlxdWUt
cmVsYXRpb25zaGlwLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0
YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkNoZWNrIGFuIEFuaW1hdGlvbkVmZmVjdCBjYW4gb25s
eSBiZSB1c2VkIGZvciBvbmUgQW5pbWF0aW9uPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rp
dj4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK3Rlc3QodCA9PiB7CisgICAgY29uc3QgZWZm
ZWN0QSA9IG5ldyBLZXlmcmFtZUVmZmVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7
CisgICAgY29uc3QgZWZmZWN0QiA9IG5ldyBLZXlmcmFtZUVmZmVjdChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKSk7CisKKyAgICBjb25zdCBhID0gbmV3IEFuaW1hdGlvbihlZmZlY3RBKTsK
KyAgICBjb25zdCBiID0gbmV3IEFuaW1hdGlvbihlZmZlY3RCKTsKKworICAgIGFzc2VydF9lcXVh
bHMoYS5lZmZlY3QsIGVmZmVjdEEpOworICAgIGFzc2VydF9lcXVhbHMoYi5lZmZlY3QsIGVmZmVj
dEIpOworCisgICAgYi5lZmZlY3QgPSBlZmZlY3RBOworICAgIGFzc2VydF9lcXVhbHMoYS5lZmZl
Y3QsIG51bGwpOworICAgIGFzc2VydF9lcXVhbHMoYi5lZmZlY3QsIGVmZmVjdEEpOworfSwgIkNo
ZWNrIHRoYXQgc2V0dGluZyBhbiBhbmltYXRpb24ncyBlZmZlY3Qgb250byBhbm90aGVyIGFuaW1h
dGlvbiBzZXRzIGVmZmVjdCB0byBudWxsLiIpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
</data>
<flag name="review"
          id="345916"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>