<?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>68108</bug_id>
          
          <creation_ts>2011-09-14 13:12:09 -0700</creation_ts>
          <short_desc>[WK2] [Mac] Implement a more-complete MouseDown/MouseUp/MouseMoveTo functions for WebKit2 EventSender</short_desc>
          <delta_ts>2011-09-21 12:23:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>57515</dependson>
          <blocked>42194</blocked>
    
    <blocked>68552</blocked>
    
    <blocked>68556</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chang Shu">cshu</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>467276</commentid>
    <comment_count>0</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-14 13:12:09 -0700</bug_when>
    <thetext>We are ready to do a more complete implementation for the above functions in which the events go across processes for a true platform simulation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467277</commentid>
    <comment_count>1</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-14 13:13:32 -0700</bug_when>
    <thetext>Any comments for the attempt, Darin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469393</commentid>
    <comment_count>2</comment_count>
      <attachid>107855</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-19 08:05:05 -0700</bug_when>
    <thetext>Created attachment 107855
patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470281</commentid>
    <comment_count>3</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-20 13:16:45 -0700</bug_when>
    <thetext>ping reviewer. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470287</commentid>
    <comment_count>4</comment_count>
      <attachid>107855</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-20 13:20:52 -0700</bug_when>
    <thetext>Comment on attachment 107855
patch 1

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

A step in the right direction, but still needs some work. Thanks for tackling this!

&gt; Source/WebKit2/UIProcess/API/C/WKPagePrivate.h:72
&gt; -WK_EXPORT void WKPageSetShouldSendKeyboardEventSynchronously(WKPageRef page, bool sync);
&gt; +WK_EXPORT void WKPageSetShouldSendEventSynchronously(WKPageRef page, bool sync);

This, and all the other names, should probably be plural, since it affects all events, not just one event.

&gt; Tools/WebKitTestRunner/EventSenderProxy.h:45
&gt; +    : m_testController(testController)
&gt; +    , m_time(0)
&gt; +    , m_position()
&gt; +    , m_leftMouseButtonDown(false)
&gt; +    , m_clickCount(0)
&gt; +    , m_clickTime(0)
&gt; +    , m_clickPosition()
&gt; +    , m_clickButton(kWKEventMouseButtonNoButton)
&gt; +    , eventNumber(0)

This is not the normal WebKit formatting. We typically indent initializer lists, and I think this is covered in the style guide.

&gt; Tools/WebKitTestRunner/TestController.cpp:537
&gt; +        } else if (WKStringIsEqualToUTF8CString(subMessageName, &quot;MouseDown&quot;) || WKStringIsEqualToUTF8CString(subMessageName, &quot;MouseUp&quot;)) {

We don’t do else after return.

&gt; Tools/WebKitTestRunner/TestController.cpp:552
&gt; +        } else if (WKStringIsEqualToUTF8CString(subMessageName, &quot;MouseMoveTo&quot;)) {

Ditto.

&gt; Tools/WebKitTestRunner/TestController.cpp:564
&gt; +        } else if (WKStringIsEqualToUTF8CString(subMessageName, &quot;LeapForward&quot;)) {

Ditto.

&gt; Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp:44
&gt; +#if !PLATFORM(MAC)

I think this conditionals are mystifying. Instead we should probably define something in the header that controls whether we use WKBundlePageSimulateMouseDown or EventSender MouseDown and use that instead of saying PLATFORM(MAC) each time.

&gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:121
&gt; +//    [[[mainFrame frameView] documentView] layout];

Lets not leave commented-out code like this in here. Also, it’s not needed.

&gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:140
&gt; +    NSView *subView = [m_testController-&gt;mainWebView()-&gt;platformView() hitTest:[event locationInWindow]];
&gt; +    if (subView) {
&gt; +        [subView mouseDown:event];
&gt; +        if (buttonNumber == LeftMouseButton)
&gt; +            m_leftMouseButtonDown = true;
&gt; +    }

I don’t understand why this is needed. A WKView doesn’t have any subviews, does it?

Also, the word is subview, not sub view, so it should be subview, not subView.

&gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:187
&gt; +            [subView mouseMoved:event]; // FIXME: [subView mouseDragged:event];

That FIXME is unclear. Why is it a FIXME and not working that way.

&gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:193
&gt; +void EventSenderProxy::keyDown(WKStringRef keyRef, WKEventModifiers modifiersRef, unsigned int keyLocation)

Should be unsigned, not unsigned int. Here in the implementation it should just be key and modifiers, no need to say &quot;ref&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470296</commentid>
    <comment_count>5</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-20 13:32:46 -0700</bug_when>
    <thetext>&gt; A step in the right direction, but still needs some work. Thanks for tackling this!

Thanks for the review!
&gt; 
&gt; &gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:140
&gt; &gt; +    NSView *subView = [m_testController-&gt;mainWebView()-&gt;platformView() hitTest:[event locationInWindow]];
&gt; &gt; +    if (subView) {
&gt; &gt; +        [subView mouseDown:event];
&gt; &gt; +        if (buttonNumber == LeftMouseButton)
&gt; &gt; +            m_leftMouseButtonDown = true;
&gt; &gt; +    }
&gt; 
&gt; I don’t understand why this is needed. A WKView doesn’t have any subviews, does it?

Good point. I need to take a deeper look.
&gt; 
&gt; Also, the word is subview, not sub view, so it should be subview, not subView.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:187
&gt; &gt; +            [subView mouseMoved:event]; // FIXME: [subView mouseDragged:event];
&gt; 
&gt; That FIXME is unclear. Why is it a FIXME and not working that way.

The drag support is taken out from the original code from WK1. When it&apos;s supported, we should
call mouseDragged instead. I will add drag support later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470763</commentid>
    <comment_count>6</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-21 06:58:17 -0700</bug_when>
    <thetext>&gt; &gt; Tools/WebKitTestRunner/mac/EventSenderProxy.mm:140
&gt; &gt; +    NSView *subView = [m_testController-&gt;mainWebView()-&gt;platformView() hitTest:[event locationInWindow]];
&gt; &gt; +    if (subView) {
&gt; &gt; +        [subView mouseDown:event];
&gt; &gt; +        if (buttonNumber == LeftMouseButton)
&gt; &gt; +            m_leftMouseButtonDown = true;
&gt; &gt; +    }
&gt; 
&gt; I don’t understand why this is needed. A WKView doesn’t have any subviews, does it?

Do you mean why hitTest is needed? For example, when the mouse moves out of the window, platformView() still returns a valid pointer to the main window but hitTest will return 0 so subView(will rename it to targetView) is 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470766</commentid>
    <comment_count>7</comment_count>
      <attachid>108150</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-21 07:02:27 -0700</bug_when>
    <thetext>Created attachment 108150
patch 2: update per review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470818</commentid>
    <comment_count>8</comment_count>
      <attachid>108165</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-21 08:22:11 -0700</bug_when>
    <thetext>Created attachment 108165
patch 3: rebaseline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470983</commentid>
    <comment_count>9</comment_count>
      <attachid>108165</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-21 11:32:57 -0700</bug_when>
    <thetext>Comment on attachment 108165
patch 3: rebaseline

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:938
&gt; +    bool m_ShouldSendEventsSynchronously;

This should be a lowercase &quot;s&quot; here, m_shouldSendEventsSynchronously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470990</commentid>
    <comment_count>10</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-21 11:37:21 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.h:938
&gt; &gt; +    bool m_ShouldSendEventsSynchronously;
&gt; 
&gt; This should be a lowercase &quot;s&quot; here, m_shouldSendEventsSynchronously.

silly copy/paste error. :) thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470998</commentid>
    <comment_count>11</comment_count>
      <attachid>108197</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-09-21 11:51:18 -0700</bug_when>
    <thetext>Created attachment 108197
patch 4: to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471041</commentid>
    <comment_count>12</comment_count>
      <attachid>108197</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-21 12:23:44 -0700</bug_when>
    <thetext>Comment on attachment 108197
patch 4: to land

Clearing flags on attachment: 108197

Committed r95660: &lt;http://trac.webkit.org/changeset/95660&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471042</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-21 12:23:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107855</attachid>
            <date>2011-09-19 08:05:05 -0700</date>
            <delta_ts>2011-09-21 07:02:27 -0700</delta_ts>
            <desc>patch 1</desc>
            <filename>68108_1.patch</filename>
            <type>text/plain</type>
            <size>40813</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NDE0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDktMTkgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBbTWFjXSBJbXBsZW1lbnQgYSBt
b3JlLWNvbXBsZXRlIE1vdXNlRG93bi9Nb3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3Ig
V2ViS2l0MiBFdmVudFNlbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgxMDgKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGV2
ZW50IHNlbmRlciBtb3VzZSBldmVudHMgdGhyb3VnaCBXZWJLaXQyIFVJUHJvY2VzcyB3aGljaCBp
cworICAgICAgICBjbG9zZXIgdG8gdGhlIHJlYWwgc2ltdWxhdGlvbiB0aGFuIGEgV2ViUHJvY2Vz
cy1vbmx5IGFwcHJvYWNoLiBUaGUgcGF0Y2ggb25seSBzdXBwb3J0cyBNYWMKKyAgICAgICAgcGxh
dGZvcm0gYXMgdGhlIGZpcnN0IHN0ZXAgc28gdGhlIGV4aXN0aW5nIGNvZGUgaXMgc3RpbGwga2Vw
dCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChX
S1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldFNob3VsZFNlbmRFdmVudFN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW91c2VFdmVu
dFN5bmNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDExLTA5LTE5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBGaXggZGlzdGNoZWNrIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gOTU0MTIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcg
KzE4MCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHAKICAgICAs
IG1fbWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlKGZhbHNlKQogICAgICwgbV9tYWluRnJhbWVJ
c1Bpbm5lZFRvUmlnaHRTaWRlKGZhbHNlKQogICAgICwgbV9yZW5kZXJUcmVlU2l6ZSgwKQotICAg
ICwgbV9zaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkoZmFsc2UpCisgICAgLCBt
X3Nob3VsZFNlbmRFdmVudFN5bmNocm9ub3VzbHkoZmFsc2UpCiB7CiAjaWZuZGVmIE5ERUJVRwog
ICAgIHdlYlBhZ2VQcm94eUNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC04MzIsNyArODMyLDEyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZUV2ZW50KGNvbnMKICAgICBpZiAoZXZlbnQu
dHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24pCiAgICAgICAgIG1fY3VycmVudGx5UHJvY2Vz
c2VkTW91c2VEb3duRXZlbnQgPSBhZG9wdFB0cihuZXcgTmF0aXZlV2ViTW91c2VFdmVudChldmVu
dCkpOwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50
KGV2ZW50KSwgbV9wYWdlSUQpOworICAgIGlmIChtX3Nob3VsZFNlbmRFdmVudFN5bmNocm9ub3Vz
bHkpIHsKKyAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgIHByb2Nlc3MoKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyhldmVu
dCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50U3luY0ZvclRlc3Rpbmc6OlJlcGx5KGhh
bmRsZWQpLCBtX3BhZ2VJRCk7CisgICAgICAgIGRpZFJlY2VpdmVFdmVudChldmVudC50eXBlKCks
IGhhbmRsZWQpOworICAgIH0gZWxzZQorICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50
KQpAQCAtODYxLDcgKzg2Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2
ZW50KGMKICAgICBtX2tleUV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKIAogICAgIHByb2Nlc3Mo
KS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwotICAgIGlmIChtX3Nob3VsZFNlbmRL
ZXlib2FyZEV2ZW50U3luY2hyb25vdXNseSkgeworICAgIGlmIChtX3Nob3VsZFNlbmRFdmVudFN5
bmNocm9ub3VzbHkpIHsKICAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CiAgICAgICAgIHBy
b2Nlc3MoKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50U3luY0ZvclRlc3Rp
bmcoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnRTeW5jRm9yVGVzdGluZzo6UmVw
bHkoaGFuZGxlZCksIG1fcGFnZUlEKTsKICAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5
cGUoKSwgaGFuZGxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiA5NTQxMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYzLDcgKzU2Myw3IEBAIHB1YmxpYzoKIAogICAg
IHVpbnQ2NF90IHJlbmRlclRyZWVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJUcmVlU2l6
ZTsgfQogCi0gICAgdm9pZCBzZXRTaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHko
Ym9vbCBzeW5jKSB7IG1fc2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91c2x5ID0gc3lu
YzsgfTsKKyAgICB2b2lkIHNldFNob3VsZFNlbmRFdmVudFN5bmNocm9ub3VzbHkoYm9vbCBzeW5j
KSB7IG1fc2hvdWxkU2VuZEV2ZW50U3luY2hyb25vdXNseSA9IHN5bmM7IH07CiAKIHByaXZhdGU6
CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqLCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4sIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJRCk7CkBAIC05MzUsNyArOTM1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyBXS1BhZ2VEZWJ1Z1BhaW50RmxhZ3Mgc19kZWJ1Z1BhaW50
RmxhZ3M7CiAKLSAgICBib29sIG1fc2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91c2x5
OworICAgIGJvb2wgbV9zaG91bGRTZW5kRXZlbnRTeW5jaHJvbm91c2x5OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAkocmV2aXNpb24gOTU0MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgxLDcgKzU4MSw3IEBAIFdLSW1hZ2VS
ZWYgV0tQYWdlQ3JlYXRlU25hcHNob3RPZlZpc2libGUKICAgICByZXR1cm4gMDsKIH0KIAotdm9p
ZCBXS1BhZ2VTZXRTaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkoV0tQYWdlUmVm
IHBhZ2UsIGJvb2wgc3luYykKK3ZvaWQgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50U3luY2hyb25v
dXNseShXS1BhZ2VSZWYgcGFnZSwgYm9vbCBzeW5jKQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0
U2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91c2x5KHN5bmMpOworICAgIHRvSW1wbChw
YWdlKS0+c2V0U2hvdWxkU2VuZEV2ZW50U3luY2hyb25vdXNseShzeW5jKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAkocmV2aXNp
b24gOTU0MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFn
ZURyYXdQYWdlc1RvUERGKFdLUGEKIC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02Njk3OTogUmVtb3ZlIHRoaXMgc3luYyBjYWxsLgogV0tfRVhQT1JUIFdL
SW1hZ2VSZWYgV0tQYWdlQ3JlYXRlU25hcHNob3RPZlZpc2libGVDb250ZW50KFdLUGFnZVJlZiBw
YWdlKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0U2hvdWxkU2VuZEtleWJvYXJkRXZlbnRT
eW5jaHJvbm91c2x5KFdLUGFnZVJlZiBwYWdlLCBib29sIHN5bmMpOworV0tfRVhQT1JUIHZvaWQg
V0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50U3luY2hyb25vdXNseShXS1BhZ2VSZWYgcGFnZSwgYm9v
bCBzeW5jKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA5NTQxMikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0OSw2ICsxMDQ5LDI1IEBAIHZvaWQgV2ViUGFnZTo6bW91c2VFdmVudChjb25zdCBX
ZWJNb3VzZUUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVu
dChzdGF0aWNfY2FzdDx1aW50MzJfdD4obW91c2VFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6bW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdlYk1vdXNl
RXZlbnQmIG1vdXNlRXZlbnQsIGJvb2wmIGhhbmRsZWQpCit7CisgICAgLy8gRG9uJ3QgdHJ5IHRv
IGhhbmRsZSBhbnkgcGVuZGluZyBtb3VzZSBldmVudHMgaWYgYSBjb250ZXh0IG1lbnUgaXMgc2hv
d2luZy4KKyAgICBpZiAobV9pc1Nob3dpbmdDb250ZXh0TWVudSkgeworICAgICAgICBoYW5kbGVk
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAobV9wYWdlT3Zl
cmxheSkgeworICAgICAgICAvLyBMZXQgdGhlIHBhZ2Ugb3ZlcmxheSBoYW5kbGUgdGhlIGV2ZW50
LgorICAgICAgICBoYW5kbGVkID0gbV9wYWdlT3ZlcmxheS0+bW91c2VFdmVudChtb3VzZUV2ZW50
KTsKKyAgICB9CisKKyAgICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgQ3VycmVudEV2ZW50IGN1
cnJlbnRFdmVudChtb3VzZUV2ZW50KTsKKyAgICAgICAgaGFuZGxlZCA9IGhhbmRsZU1vdXNlRXZl
bnQobW91c2VFdmVudCwgbV9wYWdlLmdldCgpKTsKKyAgICB9Cit9CisKIHN0YXRpYyBib29sIGhh
bmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgUGFnZSogcGFn
ZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gOTU0MTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NzUsNiArNDc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVFZGl0
Q29tbWFuZChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgbW91c2VFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50Jik7CisgICAgdm9pZCBtb3VzZUV2ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2Vi
TW91c2VFdmVudCYsIGJvb2wmKTsKICAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxF
dmVudCYpOwogICAgIHZvaWQga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAg
IHZvaWQga2V5RXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJLZXlib2FyZEV2ZW50JiwgYm9v
bCYpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDk1NDEyKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgS2V5RXZlbnQoV2ViS2l0
OjpXZWJLZXlib2FyZEV2ZW50IGV2ZW50KQogICAgIEtleUV2ZW50U3luY0ZvclRlc3RpbmcoV2Vi
S2l0OjpXZWJLZXlib2FyZEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQogICAgIE1vdXNl
RXZlbnQoV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KQorICAgIE1vdXNlRXZlbnRTeW5jRm9y
VGVzdGluZyhXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAg
ICAgV2hlZWxFdmVudChXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpCiAjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQogICAgIEdlc3R1cmVFdmVudChXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCBl
dmVudCkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDk1NDE0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTEtMDktMTkgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4K
KworICAgICAgICBbV0syXSBbTWFjXSBJbXBsZW1lbnQgYSBtb3JlLWNvbXBsZXRlIE1vdXNlRG93
bi9Nb3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3IgV2ViS2l0MiBFdmVudFNlbmRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgxMDgKKwor
ICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGV2ZW50IHNlbmRlciBtb3VzZSBldmVu
dHMgdGhyb3VnaCBXZWJLaXQyIFVJUHJvY2VzcyB3aGljaCBpcworICAgICAgICBjbG9zZXIgdG8g
dGhlIHJlYWwgc2ltdWxhdGlvbiB0aGFuIGEgV2ViUHJvY2Vzcy1vbmx5IGFwcHJvYWNoLiBUaGUg
cGF0Y2ggb25seSBzdXBwb3J0cyBNYWMKKyAgICAgICAgcGxhdGZvcm0gYXMgdGhlIGZpcnN0IHN0
ZXAgc28gdGhlIGV4aXN0aW5nIGNvZGUgaXMgc3RpbGwga2VwdCBmb3Igb3RoZXIgcGxhdGZvcm1z
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6OkV2ZW50U2VuZGVyUHJveHkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5OjpsZWFwRm9yd2FyZCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmN1cnJl
bnRFdmVudFRpbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRpbmdDb250cm9sbGVyOjptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdD
b250cm9sbGVyOjptb3VzZVVwKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjps
ZWFwRm9yd2FyZCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmtleURv
d24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6ZXZlbnRUeXBlRm9yTW91
c2VCdXR0b25BbmRBY3Rpb24pOgorICAgICAgICAoV1RSOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6dXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbik6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojptb3VzZU1vdmVUbyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24p
OgorCiAyMDExLTA5LTE2ICBFbGxpb3QgUG9nZXIgIDxlcG9nZXJAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBhZGQgbm9uLUNHIFdlYmtpdC1NYWMgYnVpbGRzIHRvIGZsYWtpbmVzcyBkYXNoYm9hcmQK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCShyZXZpc2lv
biA5NTQxMikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsNDAgQEAgY2xhc3MgVGVzdENvbnRyb2xsZXI7CiAK
IGNsYXNzIEV2ZW50U2VuZGVyUHJveHkgewogcHVibGljOgotICAgIEV2ZW50U2VuZGVyUHJveHko
VGVzdENvbnRyb2xsZXIqIHRlc3RDb250cm9sbGVyKSA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENv
bnRyb2xsZXIpIHsgfQorICAgIEV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RD
b250cm9sbGVyKQorICAgIDogbV90ZXN0Q29udHJvbGxlcih0ZXN0Q29udHJvbGxlcikKKyAgICAs
IG1fdGltZSgwKQorICAgICwgbV9wb3NpdGlvbigpCisgICAgLCBtX2xlZnRNb3VzZUJ1dHRvbkRv
d24oZmFsc2UpCisgICAgLCBtX2NsaWNrQ291bnQoMCkKKyAgICAsIG1fY2xpY2tUaW1lKDApCisg
ICAgLCBtX2NsaWNrUG9zaXRpb24oKQorICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVudE1vdXNl
QnV0dG9uTm9CdXR0b24pCisgICAgLCBldmVudE51bWJlcigwKQorICAgIHsKKyAgICB9CiAKLSAg
ICB2b2lkIGtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25l
ZCBsb2NhdGlvbiwgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgdm9pZCBtb3VzZURvd24odW5zaWdu
ZWQgYnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzKTsKKyAgICB2b2lkIG1vdXNlVXAodW5zaWduZWQg
YnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzKTsKKyAgICB2b2lkIG1vdXNlTW92ZVRvKGRvdWJsZSB4
LCBkb3VibGUgeSk7CisgICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKSB7IG1f
dGltZSArPSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7IH0KKworICAgIHZvaWQga2V5RG93bihXS1N0
cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKIAogcHJp
dmF0ZToKICAgICBUZXN0Q29udHJvbGxlciogbV90ZXN0Q29udHJvbGxlcjsKKworICAgIGRvdWJs
ZSBjdXJyZW50RXZlbnRUaW1lKCkgeyByZXR1cm4gbV90aW1lOyB9CisgICAgdm9pZCB1cGRhdGVD
bGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0b24pOworCisgICAgZG91YmxlIG1fdGltZTsKKyAg
ICBXS1BvaW50IG1fcG9zaXRpb247CisgICAgYm9vbCBtX2xlZnRNb3VzZUJ1dHRvbkRvd247Cisg
ICAgaW50IG1fY2xpY2tDb3VudDsKKyAgICBkb3VibGUgbV9jbGlja1RpbWU7CisgICAgV0tQb2lu
dCBtX2NsaWNrUG9zaXRpb247CisgICAgV0tFdmVudE1vdXNlQnV0dG9uIG1fY2xpY2tCdXR0b247
CisgICAgaW50IGV2ZW50TnVtYmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gOTU0MTIp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0UHJpdmF0
ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tOdW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
UGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2YXRlLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tS
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxjc3RkaW8+CkBAIC01MjgsMTMgKzUyOSw0NiBAQCBXS1Jl
dGFpblB0cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkCiAgICAgICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbG9jYXRpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJMb2NhdGlvbiIpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvY2F0aW9u
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tV
SW50NjRSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCBsb2NhdGlvbktleS5nZXQoKSkpKSk7CiAKLSAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB0aW1lc3RhbXBLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJUaW1lc3RhbXAiKSk7Ci0gICAgICAgICAgICBkb3VibGUgdGltZXN0YW1wID0gV0tEb3Vi
bGVHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHRpbWVzdGFtcEtleS5nZXQoKSkpKTsKKyAgICAg
ICAgICAgIC8vIEZvcndhcmQgdG8gV2ViUHJvY2VzcworICAgICAgICAgICAgV0tQYWdlU2V0U2hv
dWxkU2VuZEV2ZW50U3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIHRydWUpOwor
ICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlEb3duKGtleSwgbW9kaWZpZXJzLCBs
b2NhdGlvbik7CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRTeW5jaHJvbm91
c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0gZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNz
YWdlTmFtZSwgIk1vdXNlRG93biIpIHx8IFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3Vi
TWVzc2FnZU5hbWUsICJNb3VzZVVwIikpIHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBidXR0b25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJCdXR0b24iKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBidXR0b24gPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGJ1dHRvbktleS5nZXQo
KSkpKSk7CisKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtb2RpZmllcnNL
ZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNb2RpZmllcnMiKSk7
CisgICAgICAgICAgICBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycyA9IHN0YXRpY19jYXN0PFdL
RXZlbnRNb2RpZmllcnM+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBtb2RpZmll
cnNLZXkuZ2V0KCkpKSkpOworCisgICAgICAgICAgICAvLyBGb3J3YXJkIHRvIFdlYlByb2Nlc3MK
KyAgICAgICAgICAgIFdLUGFnZVNldFNob3VsZFNlbmRFdmVudFN5bmNocm9ub3VzbHkobWFpbldl
YlZpZXcoKS0+cGFnZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VEb3duIikpCisgICAgICAgICAgICAg
ICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZURvd24oYnV0dG9uLCBtb2RpZmllcnMpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VV
cChidXR0b24sIG1vZGlmaWVycyk7CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZl
bnRTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0gZWxzZSBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlTW92ZVRvIikpIHsKKyAgICAgICAgICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB4S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiWCIpKTsKKyAgICAgICAgICAgIGRvdWJsZSB4ID0gV0tEb3VibGVHZXRWYWx1ZShz
dGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdl
Qm9keURpY3Rpb25hcnksIHhLZXkuZ2V0KCkpKSk7CisKKyAgICAgICAgICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiWSIpKTsKKyAgICAgICAgICAgIGRvdWJsZSB5ID0gV0tEb3VibGVHZXRWYWx1ZShzdGF0aWNf
Y2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURp
Y3Rpb25hcnksIHlLZXkuZ2V0KCkpKSk7CiAKICAgICAgICAgICAgIC8vIEZvcndhcmQgdG8gV2Vi
UHJvY2VzcwotICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlEb3duKGtleSwgbW9k
aWZpZXJzLCBsb2NhdGlvbiwgdGltZXN0YW1wKTsKKyAgICAgICAgICAgIFdLUGFnZVNldFNob3Vs
ZFNlbmRFdmVudFN5bmNocm9ub3VzbHkobWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0cnVlKTsKKyAg
ICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAg
ICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCkt
PnBhZ2UoKSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0gZWxzZSBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIkxlYXBGb3J3
YXJkIikpIHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0aW1lS2V5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGltZUluTWlsbGlzZWNvbmRz
IikpOworICAgICAgICAgICAgdW5zaWduZWQgdGltZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihX
S1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdGltZUtleS5nZXQoKSkpKSk7CisKKyAg
ICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGltZSk7CiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgfQorCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KICNlbmRpZgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiA5NTQxMikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwx
MiBAQCBuYW1lc3BhY2UgV1RSIHsKIAogc3RhdGljIGNvbnN0IGZsb2F0IFpvb21NdWx0aXBsaWVy
UmF0aW8gPSAxLjJmOwogCisjaWYgIVBMQVRGT1JNKE1BQykKIHN0YXRpYyBib29sIG9wZXJhdG9y
PT0oY29uc3QgV0tQb2ludCYgYSwgY29uc3QgV0tQb2ludCYgYikKIHsKICAgICByZXR1cm4gYS54
ID09IGIueCAmJiBhLnkgPT0gYi55OwogfQorI2VuZGlmCiAKIHN0YXRpYyBXS0V2ZW50TW9kaWZp
ZXJzIHBhcnNlTW9kaWZpZXIoSlNTdHJpbmdSZWYgbW9kaWZpZXIpCiB7CkBAIC05NiwxMiArOTgs
MTQgQEAgUGFzc1JlZlB0cjxFdmVudFNlbmRpbmdDb250cm9sbGVyPiBFdmVudAogfQogCiBFdmVu
dFNlbmRpbmdDb250cm9sbGVyOjpFdmVudFNlbmRpbmdDb250cm9sbGVyKCkKKyNpZiAhUExBVEZP
Uk0oTUFDKQogICAgIDogbV90aW1lKDApCiAgICAgLCBtX3Bvc2l0aW9uKCkKICAgICAsIG1fY2xp
Y2tDb3VudCgwKQogICAgICwgbV9jbGlja1RpbWUoMCkKICAgICAsIG1fY2xpY2tQb3NpdGlvbigp
CiAgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbikKKyNlbmRp
ZgogewogfQogCkBAIC0xMjAsOCArMTI0LDI4IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6bW91c2VEb3duKGkKICAgICBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lID0gV0tCdW5kbGVQYWdl
R2V0TWFpbkZyYW1lKHBhZ2UpOwogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVG
cmFtZUdldEphdmFTY3JpcHRDb250ZXh0KGZyYW1lKTsKICAgICBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycyA9IHBhcnNlTW9kaWZpZXJBcnJheShjb250ZXh0LCBtb2RpZmllckFycmF5KTsKKwor
I2lmICFQTEFURk9STShNQUMpCiAgICAgdXBkYXRlQ2xpY2tDb3VudChidXR0b24pOwogICAgIFdL
QnVuZGxlUGFnZVNpbXVsYXRlTW91c2VEb3duKHBhZ2UsIGJ1dHRvbiwgbV9wb3NpdGlvbiwgbV9j
bGlja0NvdW50LCBtb2RpZmllcnMsIG1fdGltZSk7CisjZWxzZQorICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFi
bGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJs
ZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3Vi
TWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVz
c2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRv
cHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vdXNlRG93biIpKTsKKyAgICBX
S0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHN1Yk1lc3Nh
Z2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBidXR0b25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJCdXR0b24iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IGJ1dHRvblJlZiA9
IFdLVUludDY0Q3JlYXRlKGJ1dHRvbik7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCBidXR0b25LZXkuZ2V0KCksIGJ1dHRvblJlZi5nZXQoKSk7
CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbW9kaWZpZXJzS2V5ID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9kaWZpZXJzIikpOworICAgIFdLUmV0YWlu
UHRyPFdLVUludDY0UmVmPiBtb2RpZmllcnNSZWYgPSBXS1VJbnQ2NENyZWF0ZShtb2RpZmllcnMp
OworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwg
bW9kaWZpZXJzS2V5LmdldCgpLCBtb2RpZmllcnNSZWYuZ2V0KCkpOworCisgICAgV0tCdW5kbGVQ
b3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwg
RXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgMCk7CisjZW5kaWYKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb3VzZVVw
KGludCBidXR0b24sIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSkKQEAgLTEzMCwyMiArMTU0LDc4
IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VVcChpbnQKICAgICBXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOwogICAgIEpT
Q29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KGZy
YW1lKTsKICAgICBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycyA9IHBhcnNlTW9kaWZpZXJBcnJh
eShjb250ZXh0LCBtb2RpZmllckFycmF5KTsKKworI2lmICFQTEFURk9STShNQUMpCiAgICAgdXBk
YXRlQ2xpY2tDb3VudChidXR0b24pOwogICAgIFdLQnVuZGxlUGFnZVNpbXVsYXRlTW91c2VVcChw
YWdlLCBidXR0b24sIG1fcG9zaXRpb24sIG1fY2xpY2tDb3VudCwgbW9kaWZpZXJzLCBtX3RpbWUp
OworI2Vsc2UKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gRXZlbnRTZW5kZXJNZXNzYWdl
TmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXZlbnRTZW5kZXIi
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gRXZlbnRTZW5kZXJN
ZXNzYWdlQm9keShBZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpOworCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN1Yk1lc3NhZ2VLZXkoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlN1Yk1lc3NhZ2UiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IHN1Yk1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJNb3VzZVVwIikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJN
ZXNzYWdlQm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0
KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGJ1dHRvbktleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJ1dHRvbiIpKTsKKyAgICBXS1JldGFpblB0
cjxXS1VJbnQ2NFJlZj4gYnV0dG9uUmVmID0gV0tVSW50NjRDcmVhdGUoYnV0dG9uKTsKKyAgICBX
S0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGJ1dHRvbktl
eS5nZXQoKSwgYnV0dG9uUmVmLmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtb2RpZmllcnNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJN
b2RpZmllcnMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IG1vZGlmaWVyc1JlZiA9
IFdLVUludDY0Q3JlYXRlKG1vZGlmaWVycyk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVu
dFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBtb2RpZmllcnNLZXkuZ2V0KCksIG1vZGlmaWVyc1Jl
Zi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBF
dmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyNlbmRpZgogfQogCiB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSkKIHsKKyNpZiAhUExB
VEZPUk0oTUFDKQogICAgIG1fcG9zaXRpb24ueCA9IHg7CiAgICAgbV9wb3NpdGlvbi55ID0geTsK
ICAgICBXS0J1bmRsZVBhZ2VTaW11bGF0ZU1vdXNlTW90aW9uKEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5wYWdlKCktPnBhZ2UoKSwgbV9wb3NpdGlvbiwgbV90aW1lKTsKKyNlbHNlCisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0YWlu
UHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRvcHRX
SywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJTdWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNz
YWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW91c2VNb3Zl
VG8iKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5Lmdl
dCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4geEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlgiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEb3VibGVSZWY+IHhSZWYgPSBX
S0RvdWJsZUNyZWF0ZSh4KTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVz
c2FnZUJvZHkuZ2V0KCksIHhLZXkuZ2V0KCksIHhSZWYuZ2V0KCkpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHlLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJZIikpOworICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiB5UmVmID0gV0tEb3VibGVD
cmVhdGUoeSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5
LmdldCgpLCB5S2V5LmdldCgpLCB5UmVmLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5bmNo
cm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50U2Vu
ZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwor
I2VuZGlmCiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bGVhcEZvcndhcmQoaW50
IG1pbGxpc2Vjb25kcykKIHsKKyNpZiAhUExBVEZPUk0oTUFDKQogICAgIG1fdGltZSArPSBtaWxs
aXNlY29uZHMgLyAxMDAwLjA7CisjZWxzZQorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBF
dmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5
UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlD
cmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxlYXBGb3J3YXJkIikpOworICAgIFdLRGljdGlvbmFy
eUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQo
KSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHRpbWVLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaW1lSW5N
aWxsaXNlY29uZHMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IHRpbWVSZWYgPSBX
S1VJbnQ2NENyZWF0ZShtaWxsaXNlY29uZHMpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZl
bnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgdGltZUtleS5nZXQoKSwgdGltZVJlZi5nZXQoKSk7
CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyNlbmRpZgogfQogCisKKyNpZiAhUExBVEZPUk0oTUFD
KQogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp1cGRhdGVDbGlja0NvdW50KFdLRXZlbnRN
b3VzZUJ1dHRvbiBidXR0b24pCiB7CiAgICAgaWYgKG1fdGltZSAtIG1fY2xpY2tUaW1lIDwgMSAm
JiBtX3Bvc2l0aW9uID09IG1fY2xpY2tQb3NpdGlvbiAmJiBidXR0b24gPT0gbV9jbGlja0J1dHRv
bikgewpAQCAtMTU5LDYgKzIzOSw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dXBk
YXRlQ2xpY2sKICAgICBtX2NsaWNrUG9zaXRpb24gPSBtX3Bvc2l0aW9uOwogICAgIG1fY2xpY2tC
dXR0b24gPSBidXR0b247CiB9CisjZW5kaWYKIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
Ojp0ZXh0Wm9vbUluKCkKIHsKQEAgLTIzNCwxMCArMzE1LDYgQEAgdm9pZCBFdmVudFNlbmRpbmdD
b250cm9sbGVyOjprZXlEb3duKEpTUwogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBsb2Nh
dGlvblJlZiA9IFdLVUludDY0Q3JlYXRlKGxvY2F0aW9uKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJ
dGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGxvY2F0aW9uS2V5LmdldCgpLCBsb2Nh
dGlvblJlZi5nZXQoKSk7CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGltZXN0YW1w
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGltZXN0YW1wIikp
OwotICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiB0aW1lUmVmID0gV0tEb3VibGVDcmVhdGUo
bV90aW1lKTsKLSAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHku
Z2V0KCksIHRpbWVzdGFtcEtleS5nZXQoKSwgdGltZVJlZi5nZXQoKSk7Ci0KICAgICBXS0J1bmRs
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgp
LCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5Lmdl
dCgpLCAwKTsKIH0KIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmgJKHJldmlzaW9u
IDk1NDEyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNl
bmRpbmdDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBFdmVudFNlbmRpbmdDb250cm9sbGVyKCk7CiAKKyNpZiAhUExBVEZP
Uk0oTUFDKQogICAgIHZvaWQgdXBkYXRlQ2xpY2tDb3VudChXS0V2ZW50TW91c2VCdXR0b24pOwog
CiAgICAgZG91YmxlIG1fdGltZTsKQEAgLTY5LDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBkb3Vi
bGUgbV9jbGlja1RpbWU7CiAgICAgV0tQb2ludCBtX2NsaWNrUG9zaXRpb247CiAgICAgV0tFdmVu
dE1vdXNlQnV0dG9uIG1fY2xpY2tCdXR0b247CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclBy
b3h5Lm1tCShyZXZpc2lvbiA5NTQxMikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2
ZW50U2VuZGVyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCw1OSBAQAogI2lt
cG9ydCAiU3RyaW5nRnVuY3Rpb25zLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNp
bXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCi0jaW1wb3J0IDxXZWJLaXQyL1dLUGFnZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdDIvV0tTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKK2Vu
dW0gTW91c2VBY3Rpb24geworICAgIE1vdXNlRG93biwKKyAgICBNb3VzZVVwLAorICAgIE1vdXNl
RHJhZ2dlZAorfTsKKworLy8gTWF0Y2ggdGhlIERPTSBzcGVjIChzYWRseSB0aGUgRE9NIHNwZWMg
ZG9lcyBub3QgcHJvdmlkZSBhbiBlbnVtKQorZW51bSBNb3VzZUJ1dHRvbiB7CisgICAgTGVmdE1v
dXNlQnV0dG9uID0gMCwKKyAgICBNaWRkbGVNb3VzZUJ1dHRvbiA9IDEsCisgICAgUmlnaHRNb3Vz
ZUJ1dHRvbiA9IDIsCisgICAgTm9Nb3VzZUJ1dHRvbiA9IC0xCit9OworCitzdGF0aWMgTlNFdmVu
dFR5cGUgZXZlbnRUeXBlRm9yTW91c2VCdXR0b25BbmRBY3Rpb24oaW50IGJ1dHRvbiwgTW91c2VB
Y3Rpb24gYWN0aW9uKQoreworICAgIHN3aXRjaCAoYnV0dG9uKSB7CisgICAgICAgIGNhc2UgTGVm
dE1vdXNlQnV0dG9uOgorICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIE1vdXNlRG93bjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5TTGVmdE1v
dXNlRG93bjsKKyAgICAgICAgICAgICAgICBjYXNlIE1vdXNlVXA6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBOU0xlZnRNb3VzZVVwOworICAgICAgICAgICAgICAgIGNhc2UgTW91c2VEcmFn
Z2VkOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlNMZWZ0TW91c2VEcmFnZ2VkOworICAg
ICAgICAgICAgfQorICAgICAgICBjYXNlIFJpZ2h0TW91c2VCdXR0b246CisgICAgICAgICAgICBz
d2l0Y2ggKGFjdGlvbikgeworICAgICAgICAgICAgICAgIGNhc2UgTW91c2VEb3duOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTlNSaWdodE1vdXNlRG93bjsKKyAgICAgICAgICAgICAgICBj
YXNlIE1vdXNlVXA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOU1JpZ2h0TW91c2VVcDsK
KyAgICAgICAgICAgICAgICBjYXNlIE1vdXNlRHJhZ2dlZDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE5TUmlnaHRNb3VzZURyYWdnZWQ7CisgICAgICAgICAgICB9CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgICAgICAgICAgICAgIGNhc2Ug
TW91c2VEb3duOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlNPdGhlck1vdXNlRG93bjsK
KyAgICAgICAgICAgICAgICBjYXNlIE1vdXNlVXA6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBOU090aGVyTW91c2VVcDsKKyAgICAgICAgICAgICAgICBjYXNlIE1vdXNlRHJhZ2dlZDoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE5TT3RoZXJNb3VzZURyYWdnZWQ7CisgICAgICAgICAg
ICB9CisgICAgfQorICAgIGFzc2VydCgwKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNFdmVu
dFR5cGU+KDApOworfQorCiBzdGF0aWMgaW50IGJ1aWxkTW9kaWZpZXJGbGFncyhXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycykKIHsKICAgICBpbnQgZmxhZ3MgPSAwOwpAQCAtNDksNyArOTcsMTAw
IEBAIHN0YXRpYyBpbnQgYnVpbGRNb2RpZmllckZsYWdzKFdLRXZlbnRNb2QKICAgICByZXR1cm4g
ZmxhZ3M7CiB9CiAKLXZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBr
ZXlSZWYsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzUmVmLCB1bnNpZ25lZCBpbnQga2V5TG9j
YXRpb24sIGRvdWJsZSB0aW1lc3RhbXApCitzdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdL
UG9pbnQmIGEsIGNvbnN0IFdLUG9pbnQmIGIpCit7CisgICAgcmV0dXJuIGEueCA9PSBiLnggJiYg
YS55ID09IGIueTsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVDbGlja0NvdW50
Rm9yQnV0dG9uKGludCBidXR0b24pCit7CisgICAgaWYgKG1fdGltZSAtIG1fY2xpY2tUaW1lIDwg
MSAmJiBtX3Bvc2l0aW9uID09IG1fY2xpY2tQb3NpdGlvbiAmJiBidXR0b24gPT0gbV9jbGlja0J1
dHRvbikgeworICAgICAgICArK21fY2xpY2tDb3VudDsKKyAgICAgICAgbV9jbGlja1RpbWUgPSBt
X3RpbWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NsaWNrQ291bnQgPSAxOwor
ICAgIG1fY2xpY2tUaW1lID0gbV90aW1lOworICAgIG1fY2xpY2tQb3NpdGlvbiA9IG1fcG9zaXRp
b247CisgICAgbV9jbGlja0J1dHRvbiA9IGJ1dHRvbjsKK30KKwordm9pZCBFdmVudFNlbmRlclBy
b3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycykKK3sKKy8vICAgIFtbW21haW5GcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10g
bGF5b3V0XTsKKyAgICB1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGJ1dHRvbk51bWJlcik7CisK
KyAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUgPSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFj
dGlvbihidXR0b25OdW1iZXIsIE1vdXNlRG93bik7CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNF
dmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQobV9wb3NpdGlvbi54LCBtX3Bv
c2l0aW9uLnkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxh
Z3M6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVycykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpjdXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0
IGN1cnJlbnRDb250ZXh0XSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudE51bWJlcjorK2V2ZW50TnVtYmVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGlja0NvdW50Om1fY2xpY2tDb3VudCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmVzc3VyZTowLjBdOworCisgICAgTlNWaWV3ICpzdWJWaWV3ID0g
W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6
W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKKyAgICBpZiAoc3ViVmlldykgeworICAgICAgICBb
c3ViVmlldyBtb3VzZURvd246ZXZlbnRdOworICAgICAgICBpZiAoYnV0dG9uTnVtYmVyID09IExl
ZnRNb3VzZUJ1dHRvbikKKyAgICAgICAgICAgIG1fbGVmdE1vdXNlQnV0dG9uRG93biA9IHRydWU7
CisgICAgfQorfQorCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0
dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycykKK3sKKy8vICAgIFtbW21haW5G
cmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKKyAgICAKKyAgICBOU0V2ZW50
VHlwZSBldmVudFR5cGUgPSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihidXR0b25O
dW1iZXIsIE1vdXNlVXApOworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVu
dFdpdGhUeXBlOmV2ZW50VHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KG1fcG9zaXRpb24ueCwgbV9wb3NpdGlvbi55KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOmJ1aWxkTW9kaWZp
ZXJGbGFncyhtb2RpZmllcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aW1lc3RhbXA6Y3VycmVudEV2ZW50VGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnROdW1iZXI6Kytl
dmVudE51bWJlciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tD
b3VudDptX2NsaWNrQ291bnQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJlc3N1cmU6MC4wXTsKKworICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250
cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2Nh
dGlvbkluV2luZG93XV07CisgICAgdGFyZ2V0VmlldyA9IHRhcmdldFZpZXcgPyB0YXJnZXRWaWV3
IDogbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAg
YXNzZXJ0KHRhcmdldFZpZXcpOworICAgIFt0YXJnZXRWaWV3IG1vdXNlRG93bjpldmVudF07Cisg
ICAgaWYgKGJ1dHRvbk51bWJlciA9PSBMZWZ0TW91c2VCdXR0b24pCisgICAgICAgIG1fbGVmdE1v
dXNlQnV0dG9uRG93biA9IGZhbHNlOworICAgIG1fY2xpY2tUaW1lID0gW2V2ZW50IHRpbWVzdGFt
cF07CisgICAgbV9jbGlja1Bvc2l0aW9uID0gbV9wb3NpdGlvbjsKK30KKwordm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCit7CisgICAgTlNWaWV3
ICp2aWV3ID0gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7
CisgICAgTlNQb2ludCBwb3NpdGlvbiA9IFt2aWV3IGNvbnZlcnRQb2ludDpOU01ha2VQb2ludCh4
LCB5KSB0b1ZpZXc6bmlsXTsKKyAgICBtX3Bvc2l0aW9uLnggPSBwb3NpdGlvbi54OworICAgIG1f
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnk7CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBt
b3VzZUV2ZW50V2l0aFR5cGU6KG1fbGVmdE1vdXNlQnV0dG9uRG93biA/IE5TTGVmdE1vdXNlRHJh
Z2dlZCA6IE5TTW91c2VNb3ZlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsb2NhdGlvbjpwb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RpZmllckZsYWdzOjAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aW1lc3RhbXA6Y3VycmVudEV2ZW50VGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aW5kb3dOdW1iZXI6W1t2aWV3IHdpbmRvd10gd2luZG93TnVtYmVyXSAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGlj
c0NvbnRleHQgY3VycmVudENvbnRleHRdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV2ZW50TnVtYmVyOisrZXZlbnROdW1iZXIgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsaWNrQ291bnQ6KG1fbGVmdE1vdXNlQnV0dG9uRG93biA/IG1fY2xp
Y2tDb3VudCA6IDApIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZXNzdXJlOjAuMF07CisKKyAgICBOU1ZpZXcgKnN1YlZpZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25Jbldp
bmRvd11dOworICAgIGlmIChzdWJWaWV3KSB7CisgICAgICAgIGlmIChtX2xlZnRNb3VzZUJ1dHRv
bkRvd24pCisgICAgICAgICAgICBbc3ViVmlldyBtb3VzZU1vdmVkOmV2ZW50XTsgLy8gRklYTUU6
IFtzdWJWaWV3IG1vdXNlRHJhZ2dlZDpldmVudF07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IFtzdWJWaWV3IG1vdXNlTW92ZWQ6ZXZlbnRdOworICAgIH0KK30KKwordm9pZCBFdmVudFNlbmRl
clByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleVJlZiwgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnNSZWYsIHVuc2lnbmVkIGludCBrZXlMb2NhdGlvbikKIHsKICAgICBOU1N0cmluZyogY2hh
cmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnRvU1REKGtleVJlZikuY19zdHIo
KSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6W05TU3RyaW5n
IGRlZmF1bHRDU3RyaW5nRW5jb2RpbmddXTsKQEAgLTE3NywxMiArMzE4LDEwIEBAIHZvaWQgRXZl
bnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKIAogICAgIC8vIEZJWE1FOiBbW1ttYWlu
RnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddIGxheW91dF07CiAKLSAgICBXS1BhZ2VTZXRT
aG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkoW21fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIHBhZ2VSZWZdLCB0cnVlKTsKLQogICAgIE5TRXZl
bnQgKmV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0tleURvd24KICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWVzdGFtcDp0aW1lc3RhbXAvL1tzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6Y3VycmVudEV2ZW50VGltZSgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93TnVtYmVyXQogICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCkBAIC0xOTUsNyArMzM0
LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgIGV2ZW50
ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpOU0tleVVwCiAgICAgICAgICAgICAgICAgICAg
ICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQogICAgICAgICAgICAgICAgICAgICAgICAg
bW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1l
c3RhbXA6dGltZXN0YW1wLy9bc2VsZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZXN0YW1wOmN1cnJlbnRFdmVudFRpbWUoKQogICAgICAgICAgICAgICAgICAg
ICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0
Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQogICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgpAQCAtMjA0LDggKzM0Myw2IEBAIHZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICAgICAgICAgICAgICAgICAg
ICAgIGtleUNvZGU6a2V5Q29kZV07CiAKICAgICBbW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtV2luZG93KCkgZmlyc3RSZXNwb25kZXJdIGtleVVwOmV2ZW50XTsKLQot
ICAgIFdLUGFnZVNldFNob3VsZFNlbmRLZXlib2FyZEV2ZW50U3luY2hyb25vdXNseShbbV90ZXN0
Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgcGFnZVJlZl0sIGZhbHNl
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTQxNCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisy
MDExLTA5LTE5ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl0g
W01hY10gSW1wbGVtZW50IGEgbW9yZS1jb21wbGV0ZSBNb3VzZURvd24vTW91c2VVcC9Nb3VzZU1v
dmVUbyBmdW5jdGlvbnMgZm9yIFdlYktpdDIgRXZlbnRTZW5kZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MTA4CisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbXBsZW1lbnRzIHRoZSBldmVudCBzZW5kZXIgbW91c2UgZXZlbnRzIHRocm91Z2ggV2ViS2l0
MiBVSVByb2Nlc3Mgd2hpY2ggaXMKKyAgICAgICAgY2xvc2VyIHRvIHRoZSByZWFsIHNpbXVsYXRp
b24gdGhhbiBhIFdlYlByb2Nlc3Mtb25seSBhcHByb2FjaC4gVGhlIHBhdGNoIG9ubHkgc3VwcG9y
dHMgTWFjCisgICAgICAgIHBsYXRmb3JtIGFzIHRoZSBmaXJzdCBzdGVwIHNvIHRoZSBleGlzdGlu
ZyBjb2RlIGlzIHN0aWxsIGtlcHQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAgICBVbnNr
aXAgdGhlIHBhc3NlZCB0ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS93azIvU2tpcHBlZDoKKwogMjAxMS0wOS0xOSAgWnNvbHQgRmVow6lyICA8ZmVoZXJ6c0Bp
bmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgVW5yZXZpZXdlZCBRdCBnYXJkZW5pbmcuCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA5NTQxMikKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MTMgKzQwLDYgQEAKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGFuIGltcGxlbWVudGF0aW9u
IG9mIGV2ZW50U2VuZGVyCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDIxOTQ+Ci1lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDMuaHRtbAotZWRp
dGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAxLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvc21h
cnQtZGVsZXRlLTAwMi5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMuaHRt
bAotZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDA0Lmh0bWwKLWVkaXRpbmcvZXhlY0Nv
bW1hbmQvZmluZFN0cmluZy0yLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC80OTQ0NzcwLTIuaHRt
bAogZWRpdGluZy9wYXN0ZWJvYXJkLzQ5NDcxMzAuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2Nv
cHktc3RhbmRhbG9uZS1pbWFnZS1jcmFzaC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1h
bmQtZHJvcC1pbWFnZS1jb250ZW50ZWRpdGFibGUuaHRtbApAQCAtNjYsMTkgKzU5LDEyIEBAIGVk
aXRpbmcvcGFzdGVib2FyZC9kcm9wLWxpbmsuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2Ryb3At
dGV4dC1ldmVudHMuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2Ryb3AtdGV4dC13aXRob3V0LXNl
bGVjdGlvbi5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3MtY250bC15LTAwMS5odG1sCi1l
ZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3MtY3RybC1hLWsteS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9h
cmQvZW1hY3MtY3RybC1rLXktMDAxLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0
LWZpbGVzLWFjY2Vzcy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZXMtZHVyaW5nLXBhZ2Ut
ZHJhZ3MuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2dldC1kYXRhLXRleHQtcGxhaW4tZHJvcC5o
dG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtZHJhZy1kcm9wLmh0bWwKLWVkaXRpbmcvcGFz
dGVib2FyZC9zbWFydC1wYXN0ZS0wMDEuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBh
c3RlLTAwMi5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDAzLmh0bWwKIGVk
aXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDQuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJk
L3NtYXJ0LXBhc3RlLTAwNS5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDA3
Lmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDguaHRtbAogZWRpdGluZy9w
YXN0ZWJvYXJkL3N1YmZyYW1lLWRyYWduZHJvcC0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzE0
OTcxLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzQ4OTU0MjgtMS5odG1sCkBAIC05MSwxMyArNzcs
MTEgQEAgZWRpdGluZy9zZWxlY3Rpb24vNTM1NDQ1NS0yLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L2FuY2hvci1mb2N1czIuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vYW5jaG9yLWZvY3VzMy5odG1s
CiBlZGl0aW5nL3NlbGVjdGlvbi9idXR0b24tcmlnaHQtY2xpY2suaHRtbAotZWRpdGluZy9zZWxl
Y3Rpb24vY2xpY2staW4tZm9jdXNhYmxlLWxpbmstc2hvdWxkLW5vdC1jbGVhci1zZWxlY3Rpb24u
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUt
ZGl2Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLXBhZGRpbmctd2l0aC1tdWx0aXBs
ZS1saW5lLWJveGVzLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRhaW5zLWJvdW5kYXJpZXMu
aHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY29udGV4dC1tZW51LW9uLXRleHQuaHRtbAogZWRpdGlu
Zy9zZWxlY3Rpb24vZG91YmxlY2xpY2stYmVzaWRlLWNyLXNwYW4uaHRtbAotZWRpdGluZy9zZWxl
Y3Rpb24vZG91YmxlY2xpY2stY3Jhc2guaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xp
Y2std2hpdGVzcGFjZS1jcmFzaC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13
aGl0ZXNwYWNlLWltZy1jcmFzaC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay13
aGl0ZXNwYWNlLmh0bWwKQEAgLTEwNiwxMSArOTAsOCBAQCBlZGl0aW5nL3NlbGVjdGlvbi9kcmFn
LXNlbGVjdC1yYXBpZGx5Lmh0CiBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXN0YXJ0LWV2ZW50LWNs
aWVudC14LXkuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZHJhZy10by1jb250ZW50ZWRpdGFibGUt
aWZyYW1lLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2VtcHR5LWNlbGwtcmlnaHQtY2xpY2suaHRt
bAotZWRpdGluZy9zZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMuaHRtbAotZWRpdGluZy9z
ZWxlY3Rpb24vZXhwYW5kaW5nLXNlbGVjdGlvbnMyLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2V4
dGVuZC1hZnRlci1tb3VzZS1zZWxlY3Rpb24uaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5k
LXNlbGVjdGlvbi1hZnRlci1kb3VibGUtY2xpY2suaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vZmFr
ZS1kb3VibGVjbGljay5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9mYWtlLWRyYWcuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vaW5saW5lLWNsb3Nlc3QtbGVhZi1jaGlsZC5odG1sCiBlZGl0aW5nL3Nl
bGVjdGlvbi9sYXN0LWVtcHR5LWlubGluZS5odG1sCkBAIC0xMjcsMTQgKzEwOCwxMSBAQCBlZGl0
aW5nL3NlbGVjdGlvbi91c2VyLWRyYWctZWxlbWVudC1hbmQtCiBlZGl0aW5nL3NlbGVjdGlvbi93
b3JkLWdyYW51bGFyaXR5Lmh0bWwKIGVkaXRpbmcvc3BlbGxpbmcvY29udGV4dC1tZW51LXN1Z2dl
c3Rpb25zLmh0bWwKIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCi1lZGl0
aW5nL3VuZG8vdW5kby1kZWxldGVXb3JkLmh0bWwKIGVkaXRpbmcvdW5kby91bmRvLXNtYXJ0LWRl
bGV0ZS1yZXZlcnNlZC1zZWxlY3Rpb24uaHRtbAotZWRpdGluZy91bmRvL3VuZG8tc21hcnQtZGVs
ZXRlLXdvcmQuaHRtbAogZmFzdC9ibG9jay9wb3NpdGlvbmluZy9oaXR0ZXN0LW9uLXJlbGF0aXZl
LXBvc2l0aW9uZWQtY2hpbGRyZW4uaHRtbAogZmFzdC9jc3MvdXNlci1kcmFnLW5vbmUuaHRtbAog
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1mcmFtZXMuaHRtbAogZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS5odG1sCi1mYXN0L2RvbS9ob3Jp
em9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAogZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFy
LWluLXJ0bC5odG1sCiBmYXN0L2R5bmFtaWMvbGF5ZXItaGl0LXRlc3QtY3Jhc2guaHRtbAogZmFz
dC9lbmNvZGluZy9tYWlsdG8tYWx3YXlzLXV0Zi04Lmh0bWwKQEAgLTE3NywxNCArMTU1LDExIEBA
IGZhc3QvZXZlbnRzL3JlbW92ZS1jaGlsZC1vbnNjcm9sbC5odG1sCiBmYXN0L2V2ZW50cy9yaWdo
dC1jbGljay1mb2N1cy5odG1sCiBmYXN0L2V2ZW50cy9zY3JvbGwtYWZ0ZXItY2xpY2stb24tdGFi
LWluZGV4Lmh0bWwKIGZhc3QvZXZlbnRzL3Njcm9sbC1pbi1zY2FsZWQtcGFnZS13aXRoLW92ZXJm
bG93LWhpZGRlbi5odG1sCi1mYXN0L2V2ZW50cy9zY3JvbGxiYXItZG91YmxlLWNsaWNrLmh0bWwK
LWZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWRvdWJsZS10cmlwbGUtY2xpY2tzLmh0bWwKIGZh
c3QvZXZlbnRzL3NlbGVjdHN0YXJ0LWJ5LWRyYWcuaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0c3Rh
cnQtcHJldmVudC1zZWxlY3Rpb24tb24tcmlnaHQtY2xpY2suaHRtbAogZmFzdC9ldmVudHMvc3Rh
bmRhbG9uZS1pbWFnZS1kcmFnLXRvLWVkaXRhYmxlLmh0bWwKIGZhc3QvZXZlbnRzL3doZWVsZXZl
bnQtaW4taG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3QvZXZlbnRzL3doZWVs
ZXZlbnQtaW4tdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCi1mYXN0L2V2ZW50cy96b29t
LWRibGNsaWNrLmh0bWwKIGZhc3QvZmlsZXMvYXBwbHktYmxvYi11cmwtdG8teGhyLmh0bWwKIGZh
c3QvZmlsZXMvZmlsZS1yZWFkZXItYWJvcnQuaHRtbAogZmFzdC9maWxlcy9yZWFkLWJsb2ItYXN5
bmMuaHRtbApAQCAtMTk0LDE0ICsxNjksOSBAQCBmYXN0L2Zvcm1zL2RyYWctb3V0LW9mLXRleHRh
cmVhLmh0bWwKIGZhc3QvZm9ybXMvZ2V0LWZpbGUtdXBsb2FkLmh0bWwKIGZhc3QvZm9ybXMvaW5w
dXQtZmlsZS1yZS1yZW5kZXIuaHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1yZWFkb25seS1hdXRvc2Ny
b2xsLmh0bWwKLWZhc3QvZm9ybXMvaW5wdXQtdGV4dC1kb3VibGUtY2xpY2suaHRtbAogZmFzdC9m
b3Jtcy9pbnB1dC10ZXh0LWRyYWctZG93bi5odG1sCiBmYXN0L2Zvcm1zL2xpc3Rib3gtdHlwZWFo
ZWFkLWN5cmlsbGljLmh0bWwKIGZhc3QvZm9ybXMvbGlzdGJveC10eXBlYWhlYWQtZ3JlZWsuaHRt
bAotZmFzdC9mb3Jtcy9vbnNlbGVjdC10ZXh0YXJlYS5odG1sCi1mYXN0L2Zvcm1zL29uc2VsZWN0
LXRleHRmaWVsZC5odG1sCi1mYXN0L2Zvcm1zL29wdGlvbi1tb3VzZWV2ZW50cy5odG1sCi1mYXN0
L2Zvcm1zL3JhbmdlL3NsaWRlci1kZWxldGUtd2hpbGUtZHJhZ2dpbmctdGh1bWIuaHRtbAogZmFz
dC9mb3Jtcy9yYW5nZS9zbGlkZXItbW91c2UtZXZlbnRzLmh0bWwKIGZhc3QvZm9ybXMvcmFuZ2Uv
c2xpZGVyLW9uY2hhbmdlLWV2ZW50Lmh0bWwKIGZhc3QvZm9ybXMvc2VsZWN0LXR5cGUtYWhlYWQt
bm9uLWxhdGluLmh0bWwKQEAgLTIxMSwxNSArMTgxLDYgQEAgZmFzdC9sb2FkZXIvcG9saWN5LWRl
bGVnYXRlLWFjdGlvbi1oaXQtdAogZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1y
ZXBhaW50Lmh0bWwKIGZhc3QvcmVwYWludC9yZXBhaW50LWFjcm9zcy13cml0aW5nLW1vZGUtYm91
bmRhcnkuaHRtbAogZmFzdC9yZXBhaW50L3NlbGVjdGlvbi1ybC5odG1sCi1mYXN0L3RleHQvYXRz
dWktcnRsLW92ZXJyaWRlLXNlbGVjdGlvbi5odG1sCi1mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9r
aG1lci1zZWxlY3Rpb24uaHRtbAotZmFzdC90ZXh0L29mZnNldEZvclBvc2l0aW9uLWNvbXBsZXgt
ZmFsbGJhY2suaHRtbAotZmFzdC90ZXh0L3Jlc2V0LWRyYWctb24tbW91c2UtZG93bi5odG1sCi1m
YXN0L3dyaXRpbmctbW9kZS9ob3Jpem9udGFsLWJ0LXJlcGxhY2VkLXNlbGVjdGlvbi5odG1sCi1m
YXN0L3dyaXRpbmctbW9kZS9qYXBhbmVzZS1sci1zZWxlY3Rpb24uaHRtbAotZmFzdC93cml0aW5n
LW1vZGUvamFwYW5lc2Utcmwtc2VsZWN0aW9uLmh0bWwKLWZhc3Qvd3JpdGluZy1tb2RlL3ZlcnRp
Y2FsLWxyLXJlcGxhY2VkLXNlbGVjdGlvbi5odG1sCi1mYXN0L3dyaXRpbmctbW9kZS92ZXJ0aWNh
bC1ybC1yZXBsYWNlZC1zZWxlY3Rpb24uaHRtbAogaHR0cC90ZXN0cy9sb2NhbC9ibG9iL3NlbmQt
aHlicmlkLWJsb2IuaHRtbAogaHR0cC90ZXN0cy9sb2NhbC9kcmFnLW92ZXItcmVtb3RlLWNvbnRl
bnQuaHRtbAogaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL2ZpbGUtbGFzdC1tb2RpZmllZC5odG1s
CkBAIC0yMzgsMTkgKzE5OSwxMSBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L2RyYWctb3Zlci1yZW1v
dGUtY29uCiBtZWRpYS9jb250cm9scy1yaWdodC1jbGljay1vbi10aW1lYmFyLmh0bWwKIHBsYXRm
b3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YVRyYW5zZmVyLXNldC1kYXRhLWZpbGUtdXJs
Lmh0bWwKIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1zZWxlY3Rpb25zLXRv
LWNvbnRlbnRlZGl0YWJsZS5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZG91
YmxlY2xpY2stc2hvdWxkLW5vdC1leHBhbmQtYWNyb3NzLWxpbmVzLmh0bWwKLXBsYXRmb3JtL21h
Yy9lZGl0aW5nL3NlbGVjdGlvbi93b3JkLXRoYWkuaHRtbAogcGxhdGZvcm0vbWFjL2Zhc3QvZm9y
bXMvbGlzdGJveC1zY3JvbGxiYXItaGl0LXRlc3QuaHRtbAotcGxhdGZvcm0vbWFjL2Zhc3Qvb3Zl
cmZsb3cvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhpdC10ZXN0Lmh0bWwKIHBsdWdpbnMvY2xpY2tpbmct
bWlzc2luZy1wbHVnaW4tZmlyZXMtZGVsZWdhdGUuaHRtbAogc2Nyb2xsYmFycy9zY3JvbGxiYXIt
aWZyYW1lLWNsaWNrLWRvZXMtbm90LWJsdXItY29udGVudC5odG1sCiBzY3JvbGxiYXJzL3Njcm9s
bGV2ZW50LWlmcmFtZS1uby1zY3JvbGxpbmctd2hlZWwuaHRtbAotCiBzdmcvY3VzdG9tL2ZvcmVp
Z25PYmplY3QtY3Jhc2gtb24taG92ZXIueG1sCi1zdmcvY3VzdG9tL21vdXNlLW1vdmUtb24tc3Zn
LWNvbnRhaW5lci1zdGFuZGFsb25lLnN2Zwotc3ZnL2N1c3RvbS9tb3VzZS1tb3ZlLW9uLXN2Zy1j
b250YWluZXIueGh0bWwKLXN2Zy9jdXN0b20vbW91c2UtbW92ZS1vbi1zdmctcm9vdC1zdGFuZGFs
b25lLnN2Zwotc3ZnL2N1c3RvbS9tb3VzZS1tb3ZlLW9uLXN2Zy1yb290LnhodG1sCiBzdmcvY3Vz
dG9tL3VzZS1ldmVudHMtY3Jhc2guc3ZnCiAKICMjIyBFTkQgT0YgKDEpIENsYXNzaWZpZWQgZmFp
bHVyZXMgd2l0aCBidWcgcmVwb3J0cwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Nr
aXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQJKHJl
dmlzaW9uIDk1NDEyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTY3MywxMSArNjczLDE1IEBAIHBsdWdpbnMvbmV0c2NhcGUtcGx1Z2luLXNl
dHdpbmRvdy1zaXplLTIKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250
cm9sbGVyLnNldEVkaXRpbmdCZWhhdmlvcgogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQyNjg5PgorZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUtMDAz
Lmh0bWwKK2VkaXRpbmcvZGVsZXRpbmcvcGFyYWdyYXBoLWluLXByZXNlcnZlTmV3bGluZS5odG1s
CitlZGl0aW5nL2RlbGV0aW5nL3doaXRlc3BhY2UtcHJlLTEuaHRtbAogZWRpdGluZy9zZWxlY3Rp
b24vYWZ0ZXItbGluZS1icmVhay5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9ydGwtbW92ZS1zZWxl
Y3Rpb24tcmlnaHQtbGVmdC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAog
ZWRpdGluZy9zZWxlY3Rpb24vY29udGV4dC1tZW51LXRleHQtc2VsZWN0aW9uLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL2RpcmVjdGlvbmFsaXR5LWFmdGVyLXVuZG8tcmVwbGFjZS5odG1sCitlZGl0
aW5nL3NlbGVjdGlvbi9wcm9ncmFtbWF0aWMtc2VsZWN0aW9uLW9uLW1hYy1pcy1kaXJlY3Rpb25s
ZXNzLmh0bWwKIGVkaXRpbmcvZXhlY0NvbW1hbmQvcXVlcnktY29tbWFuZC1zdGF0ZS5odG1sCiBl
ZGl0aW5nL2V4ZWNDb21tYW5kL3F1ZXJ5LXRleHQtYWxpZ25tZW50Lmh0bWwKIGVkaXRpbmcvZXhl
Y0NvbW1hbmQvdG9nZ2xlLWNvbXBvdW5kLXN0eWxlcy5odG1sCkBAIC02ODYsOSArNjkwLDYgQEAg
ZWRpdGluZy9zdHlsZS9pZnJhbWUtb25sb2FkLWNyYXNoLXVuaXguaAogZWRpdGluZy9zdHlsZS9p
ZnJhbWUtb25sb2FkLWNyYXNoLXdpbi5odG1sCiBmYXN0L2V2ZW50cy9iYWNrc3BhY2UtbmF2aWdh
dGVzLWJhY2suaHRtbAogZmFzdC9mb3Jtcy9zZWxlY3Rpb24tZGlyZWN0aW9uLmh0bWwKLWVkaXRp
bmcvZGVsZXRpbmcvcGFyYWdyYXBoLWluLXByZXNlcnZlTmV3bGluZS5odG1sCi1lZGl0aW5nL2Rl
bGV0aW5nL3doaXRlc3BhY2UtcHJlLTEuaHRtbAotZWRpdGluZy9zZWxlY3Rpb24vcHJvZ3JhbW1h
dGljLXNlbGVjdGlvbi1vbi1tYWMtaXMtZGlyZWN0aW9ubGVzcy5odG1sCiAKICMgV2ViS2l0VGVz
dFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTdG9wUHJvdmlzaW9uYWxGcmFt
ZUxvYWRzCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2OTE+
Cg==
</data>
<flag name="review"
          id="104653"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108150</attachid>
            <date>2011-09-21 07:02:27 -0700</date>
            <delta_ts>2011-09-21 08:22:11 -0700</delta_ts>
            <desc>patch 2: update per review</desc>
            <filename>68108_2.patch</filename>
            <type>text/plain</type>
            <size>41439</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NTY5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDktMjAgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBbTWFjXSBJbXBsZW1lbnQgYSBt
b3JlLWNvbXBsZXRlIE1vdXNlRG93bi9Nb3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3Ig
V2ViS2l0MiBFdmVudFNlbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgxMDgKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGV2
ZW50IHNlbmRlciBtb3VzZSBldmVudHMgdGhyb3VnaCBXZWJLaXQyIFVJUHJvY2VzcyB3aGljaCBp
cworICAgICAgICBjbG9zZXIgdG8gdGhlIHJlYWwgc2ltdWxhdGlvbiB0aGFuIGEgV2ViUHJvY2Vz
cy1vbmx5IGFwcHJvYWNoLiBUaGUgcGF0Y2ggb25seSBzdXBwb3J0cyBNYWMKKyAgICAgICAgcGxh
dGZvcm0gYXMgdGhlIGZpcnN0IHN0ZXAgc28gdGhlIGV4aXN0aW5nIGNvZGUgaXMgc3RpbGwga2Vw
dCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChX
S1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3VzZUV2
ZW50U3luY0ZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
IDIwMTEtMDktMjAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NTU2NS4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA5NTU2OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODAsNyArMTgwLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCog
cAogICAgICwgbV9tYWluRnJhbWVJc1Bpbm5lZFRvTGVmdFNpZGUoZmFsc2UpCiAgICAgLCBtX21h
aW5GcmFtZUlzUGlubmVkVG9SaWdodFNpZGUoZmFsc2UpCiAgICAgLCBtX3JlbmRlclRyZWVTaXpl
KDApCi0gICAgLCBtX3Nob3VsZFNlbmRLZXlib2FyZEV2ZW50U3luY2hyb25vdXNseShmYWxzZSkK
KyAgICAsIG1fU2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkoZmFsc2UpCiB7CiAjaWZuZGVm
IE5ERUJVRwogICAgIHdlYlBhZ2VQcm94eUNvdW50ZXIuaW5jcmVtZW50KCk7CkBAIC04MzIsNyAr
ODMyLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZUV2ZW50KGNvbnMKICAgICBp
ZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24pCiAgICAgICAgIG1fY3VycmVu
dGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQgPSBhZG9wdFB0cihuZXcgTmF0aXZlV2ViTW91c2VF
dmVudChldmVudCkpOwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpN
b3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgIGlmIChtX1Nob3VsZFNlbmRFdmVudHNT
eW5jaHJvbm91c2x5KSB7CisgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgICAgICBw
cm9jZXNzKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50U3luY0ZvclRl
c3RpbmcoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudFN5bmNGb3JUZXN0aW5n
OjpSZXBseShoYW5kbGVkKSwgbV9wYWdlSUQpOworICAgICAgICBkaWRSZWNlaXZlRXZlbnQoZXZl
bnQudHlwZSgpLCBoYW5kbGVkKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcHJvY2VzcygpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2
ZW50JiBldmVudCkKQEAgLTg2MSw3ICs4NjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxl
S2V5Ym9hcmRFdmVudChjCiAgICAgbV9rZXlFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7CiAKICAg
ICBwcm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKLSAgICBpZiAobV9z
aG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkpIHsKKyAgICBpZiAobV9TaG91bGRT
ZW5kRXZlbnRzU3luY2hyb25vdXNseSkgewogICAgICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsK
ICAgICAgICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnRT
eW5jRm9yVGVzdGluZyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudFN5bmNGb3JU
ZXN0aW5nOjpSZXBseShoYW5kbGVkKSwgbV9wYWdlSUQpOwogICAgICAgICBkaWRSZWNlaXZlRXZl
bnQoZXZlbnQudHlwZSgpLCBoYW5kbGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDk1NTY5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjMsNyArNTYzLDcgQEAgcHVi
bGljOgogCiAgICAgdWludDY0X3QgcmVuZGVyVHJlZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Jl
bmRlclRyZWVTaXplOyB9CiAKLSAgICB2b2lkIHNldFNob3VsZFNlbmRLZXlib2FyZEV2ZW50U3lu
Y2hyb25vdXNseShib29sIHN5bmMpIHsgbV9zaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9u
b3VzbHkgPSBzeW5jOyB9OworICAgIHZvaWQgc2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3Vz
bHkoYm9vbCBzeW5jKSB7IG1fU2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkgPSBzeW5jOyB9
OwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiwgUGFzc1JlZlB0cjxX
ZWJQcm9jZXNzUHJveHk+LCBXZWJQYWdlR3JvdXAqLCB1aW50NjRfdCBwYWdlSUQpOwpAQCAtOTM1
LDcgKzkzNSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgV0tQYWdlRGVidWdQYWludEZsYWdz
IHNfZGVidWdQYWludEZsYWdzOwogCi0gICAgYm9vbCBtX3Nob3VsZFNlbmRLZXlib2FyZEV2ZW50
U3luY2hyb25vdXNseTsKKyAgICBib29sIG1fU2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHk7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiA5NTU2OSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODEsNyArNTgx
LDcgQEAgV0tJbWFnZVJlZiBXS1BhZ2VDcmVhdGVTbmFwc2hvdE9mVmlzaWJsZQogICAgIHJldHVy
biAwOwogfQogCi12b2lkIFdLUGFnZVNldFNob3VsZFNlbmRLZXlib2FyZEV2ZW50U3luY2hyb25v
dXNseShXS1BhZ2VSZWYgcGFnZSwgYm9vbCBzeW5jKQordm9pZCBXS1BhZ2VTZXRTaG91bGRTZW5k
RXZlbnRzU3luY2hyb25vdXNseShXS1BhZ2VSZWYgcGFnZSwgYm9vbCBzeW5jKQogewotICAgIHRv
SW1wbChwYWdlKS0+c2V0U2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91c2x5KHN5bmMp
OworICAgIHRvSW1wbChwYWdlKS0+c2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkoc3lu
Yyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQ
cml2YXRlLmgJKHJldmlzaW9uIDk1NTY5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBXS19F
WFBPUlQgdm9pZCBXS1BhZ2VEcmF3UGFnZXNUb1BERihXS1BhCiAvLyBGSVhNRSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5Nzk6IFJlbW92ZSB0aGlzIHN5bmMgY2Fs
bC4KIFdLX0VYUE9SVCBXS0ltYWdlUmVmIFdLUGFnZUNyZWF0ZVNuYXBzaG90T2ZWaXNpYmxlQ29u
dGVudChXS1BhZ2VSZWYgcGFnZSk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFNob3VsZFNl
bmRLZXlib2FyZEV2ZW50U3luY2hyb25vdXNseShXS1BhZ2VSZWYgcGFnZSwgYm9vbCBzeW5jKTsK
K1dLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KFdL
UGFnZVJlZiBwYWdlLCBib29sIHN5bmMpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDk1NTY5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ5LDYgKzEwNDksMjUgQEAgdm9pZCBXZWJQYWdlOjpt
b3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90Pihtb3VzZUV2ZW50LnR5cGUo
KSksIGhhbmRsZWQpKTsKIH0KIAordm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50U3luY0ZvclRlc3Rp
bmcoY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCwgYm9vbCYgaGFuZGxlZCkKK3sKKyAg
ICAvLyBEb24ndCB0cnkgdG8gaGFuZGxlIGFueSBwZW5kaW5nIG1vdXNlIGV2ZW50cyBpZiBhIGNv
bnRleHQgbWVudSBpcyBzaG93aW5nLgorICAgIGlmIChtX2lzU2hvd2luZ0NvbnRleHRNZW51KSB7
CisgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGlmIChtX3BhZ2VPdmVybGF5KSB7CisgICAgICAgIC8vIExldCB0aGUgcGFnZSBvdmVybGF5
IGhhbmRsZSB0aGUgZXZlbnQuCisgICAgICAgIGhhbmRsZWQgPSBtX3BhZ2VPdmVybGF5LT5tb3Vz
ZUV2ZW50KG1vdXNlRXZlbnQpOworICAgIH0KKworICAgIGlmICghaGFuZGxlZCkgeworICAgICAg
ICBDdXJyZW50RXZlbnQgY3VycmVudEV2ZW50KG1vdXNlRXZlbnQpOworICAgICAgICBoYW5kbGVk
ID0gaGFuZGxlTW91c2VFdmVudChtb3VzZUV2ZW50LCBtX3BhZ2UuZ2V0KCkpOworICAgIH0KK30K
Kwogc3RhdGljIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBQYWdlKiBwYWdlKQogewogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFt
ZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CShyZXZpc2lvbiA5NTU2OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3NSw2ICs0NzUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBtb3Vz
ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKKyAgICB2b2lkIG1vdXNlRXZlbnRTeW5jRm9y
VGVzdGluZyhjb25zdCBXZWJNb3VzZUV2ZW50JiwgYm9vbCYpOwogICAgIHZvaWQgd2hlZWxFdmVu
dChjb25zdCBXZWJXaGVlbEV2ZW50Jik7CiAgICAgdm9pZCBrZXlFdmVudChjb25zdCBXZWJLZXli
b2FyZEV2ZW50Jik7CiAgICAgdm9pZCBrZXlFdmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdlYktl
eWJvYXJkRXZlbnQmLCBib29sJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gOTU1NjkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAg
ICBLZXlFdmVudChXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQpCiAgICAgS2V5RXZlbnRT
eW5jRm9yVGVzdGluZyhXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQgZXZlbnQpIC0+IChib29sIGhh
bmRsZWQpCiAgICAgTW91c2VFdmVudChXZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpCisgICAg
TW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKFdlYktpdDo6V2ViTW91c2VFdmVudCBldmVudCkgLT4g
KGJvb2wgaGFuZGxlZCkKICAgICBXaGVlbEV2ZW50KFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVu
dCkKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAgICAgR2VzdHVyZUV2ZW50KFdlYktpdDo6
V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gOTU1NjkpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAxMS0wOS0yMCAgQ2hhbmcgU2h1ICA8
Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFtNYWNdIEltcGxlbWVudCBhIG1vcmUt
Y29tcGxldGUgTW91c2VEb3duL01vdXNlVXAvTW91c2VNb3ZlVG8gZnVuY3Rpb25zIGZvciBXZWJL
aXQyIEV2ZW50U2VuZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02ODEwOAorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgZXZlbnQg
c2VuZGVyIG1vdXNlIGV2ZW50cyB0aHJvdWdoIFdlYktpdDIgVUlQcm9jZXNzIHdoaWNoIGlzCisg
ICAgICAgIGNsb3NlciB0byB0aGUgcmVhbCBzaW11bGF0aW9uIHRoYW4gYSBXZWJQcm9jZXNzLW9u
bHkgYXBwcm9hY2guIFRoZSBwYXRjaCBvbmx5IHN1cHBvcnRzIE1hYworICAgICAgICBwbGF0Zm9y
bSBhcyB0aGUgZmlyc3Qgc3RlcCBzbyB0aGUgZXhpc3RpbmcgY29kZSBpcyBzdGlsbCBrZXB0IGZv
ciBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6RXZlbnRTZW5kZXJQcm94eSk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6OmxlYXBGb3J3YXJkKToKKyAgICAgICAgKFdUUjo6RXZlbnRT
ZW5kZXJQcm94eTo6Y3VycmVudEV2ZW50VGltZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcik6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlRG93bik6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVu
dFNlbmRpbmdDb250cm9sbGVyOjptb3VzZU1vdmVUbyk6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6OmxlYXBGb3J3YXJkKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5n
Q29udHJvbGxlcjo6a2V5RG93bik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RS
OjpldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbik6CisgICAgICAgIChXVFI6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojp1cGRhdGVDbGlja0NvdW50
Rm9yQnV0dG9uKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6a2V5RG93bik6CisKIDIwMTEtMDktMjAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5
NTU2NS4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCShy
ZXZpc2lvbiA5NTU2OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsNDAgQEAgY2xhc3MgVGVzdENvbnRyb2xs
ZXI7CiAKIGNsYXNzIEV2ZW50U2VuZGVyUHJveHkgewogcHVibGljOgotICAgIEV2ZW50U2VuZGVy
UHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RDb250cm9sbGVyKSA6IG1fdGVzdENvbnRyb2xsZXIo
dGVzdENvbnRyb2xsZXIpIHsgfQorICAgIEV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIq
IHRlc3RDb250cm9sbGVyKQorICAgICAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICwgbV90aW1lKDApCisgICAgICAgICwgbV9wb3NpdGlvbigpCisgICAgICAg
ICwgbV9sZWZ0TW91c2VCdXR0b25Eb3duKGZhbHNlKQorICAgICAgICAsIG1fY2xpY2tDb3VudCgw
KQorICAgICAgICAsIG1fY2xpY2tUaW1lKDApCisgICAgICAgICwgbV9jbGlja1Bvc2l0aW9uKCkK
KyAgICAgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbikKKyAg
ICAgICAgLCBldmVudE51bWJlcigwKQorICAgIHsKKyAgICB9CiAKLSAgICB2b2lkIGtleURvd24o
V0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2NhdGlvbiwgZG91
YmxlIHRpbWVzdGFtcCk7CisgICAgdm9pZCBtb3VzZURvd24odW5zaWduZWQgYnV0dG9uLCBXS0V2
ZW50TW9kaWZpZXJzKTsKKyAgICB2b2lkIG1vdXNlVXAodW5zaWduZWQgYnV0dG9uLCBXS0V2ZW50
TW9kaWZpZXJzKTsKKyAgICB2b2lkIG1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSk7Cisg
ICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKSB7IG1fdGltZSArPSBtaWxsaXNl
Y29uZHMgLyAxMDAwLjA7IH0KKworICAgIHZvaWQga2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdL
RXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKIAogcHJpdmF0ZToKICAgICBUZXN0
Q29udHJvbGxlciogbV90ZXN0Q29udHJvbGxlcjsKKworICAgIGRvdWJsZSBjdXJyZW50RXZlbnRU
aW1lKCkgeyByZXR1cm4gbV90aW1lOyB9CisgICAgdm9pZCB1cGRhdGVDbGlja0NvdW50Rm9yQnV0
dG9uKGludCBidXR0b24pOworCisgICAgZG91YmxlIG1fdGltZTsKKyAgICBXS1BvaW50IG1fcG9z
aXRpb247CisgICAgYm9vbCBtX2xlZnRNb3VzZUJ1dHRvbkRvd247CisgICAgaW50IG1fY2xpY2tD
b3VudDsKKyAgICBkb3VibGUgbV9jbGlja1RpbWU7CisgICAgV0tQb2ludCBtX2NsaWNrUG9zaXRp
b247CisgICAgV0tFdmVudE1vdXNlQnV0dG9uIG1fY2xpY2tCdXR0b247CisgICAgaW50IGV2ZW50
TnVtYmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gOTU1NjkpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0UHJpdmF0ZS5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV0tOdW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1By
ZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDxjc3RkaW8+CkBAIC01MzUsMTMgKzUzNiw1MiBAQCBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IFRlc3RDb250cm9sbGVyOjpkCiAgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbG9jYXRpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJM
b2NhdGlvbiIpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvY2F0aW9uID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBsb2NhdGlvbktleS5n
ZXQoKSkpKSk7CiAKLSAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0aW1lc3Rh
bXBLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaW1lc3RhbXAi
KSk7Ci0gICAgICAgICAgICBkb3VibGUgdGltZXN0YW1wID0gV0tEb3VibGVHZXRWYWx1ZShzdGF0
aWNfY2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9k
eURpY3Rpb25hcnksIHRpbWVzdGFtcEtleS5nZXQoKSkpKTsKKyAgICAgICAgICAgIC8vIEZvcndh
cmQgdG8gV2ViUHJvY2VzcworICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5
bmNocm9ub3VzbHkobWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIG1f
ZXZlbnRTZW5kZXJQcm94eS0+a2V5RG93bihrZXksIG1vZGlmaWVycywgbG9jYXRpb24pOworICAg
ICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkobWFpbldlYlZp
ZXcoKS0+cGFnZSgpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1l
LCAiTW91c2VEb3duIikgfHwgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdl
TmFtZSwgIk1vdXNlVXAiKSkgeworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IGJ1dHRvbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJ1dHRv
biIpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ1dHRvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYnV0dG9uS2V5LmdldCgpKSkpKTsK
KworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1vZGlmaWVyc0tleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vZGlmaWVycyIpKTsKKyAgICAg
ICAgICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzID0gc3RhdGljX2Nhc3Q8V0tFdmVudE1v
ZGlmaWVycz4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIG1vZGlmaWVyc0tleS5n
ZXQoKSkpKSk7CisKKyAgICAgICAgICAgIC8vIEZvcndhcmQgdG8gV2ViUHJvY2VzcworICAgICAg
ICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkobWFpbldlYlZpZXco
KS0+cGFnZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VEb3duIikpCisgICAgICAgICAgICAgICAgbV9l
dmVudFNlbmRlclByb3h5LT5tb3VzZURvd24oYnV0dG9uLCBtb2RpZmllcnMpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91c2VVcChidXR0
b24sIG1vZGlmaWVycyk7CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3lu
Y2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIGZhbHNlKTsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZU1vdmVUbyIpKSB7CisgICAgICAgICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4geEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlgiKSk7CisgICAgICAgICAgICBkb3VibGUgeCA9IFdLRG91YmxlR2V0VmFsdWUo
c3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5LCB4S2V5LmdldCgpKSkpOworCisgICAgICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4geUtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlkiKSk7CisgICAgICAgICAgICBkb3VibGUgeSA9IFdLRG91YmxlR2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8V0tEb3VibGVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlE
aWN0aW9uYXJ5LCB5S2V5LmdldCgpKSkpOwogCiAgICAgICAgICAgICAvLyBGb3J3YXJkIHRvIFdl
YlByb2Nlc3MKLSAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+a2V5RG93bihrZXksIG1v
ZGlmaWVycywgbG9jYXRpb24sIHRpbWVzdGFtcCk7CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91
bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIHRydWUpOwor
ICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAg
ICAgICAgIFdLUGFnZVNldFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3
KCktPnBhZ2UoKSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKwor
ICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwg
IkxlYXBGb3J3YXJkIikpIHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0
aW1lS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGltZUluTWls
bGlzZWNvbmRzIikpOworICAgICAgICAgICAgdW5zaWduZWQgdGltZSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdGltZUtleS5nZXQoKSkp
KSk7CisKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndhcmQodGltZSk7
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KICNlbmRpZgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA5NTU2OSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDEwICs0MSwxMiBAQCBuYW1lc3BhY2UgV1RSIHsKIAogc3RhdGljIGNvbnN0IGZsb2F0IFpvb21N
dWx0aXBsaWVyUmF0aW8gPSAxLjJmOwogCisjaWZkZWYgVVNFX1dFQlBST0NFU1NfRVZFTlRfU0lN
VUxBVElPTgogc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXS1BvaW50JiBhLCBjb25zdCBX
S1BvaW50JiBiKQogewogICAgIHJldHVybiBhLnggPT0gYi54ICYmIGEueSA9PSBiLnk7CiB9Cisj
ZW5kaWYKIAogc3RhdGljIFdLRXZlbnRNb2RpZmllcnMgcGFyc2VNb2RpZmllcihKU1N0cmluZ1Jl
ZiBtb2RpZmllcikKIHsKQEAgLTk2LDEyICs5OCwxNCBAQCBQYXNzUmVmUHRyPEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI+IEV2ZW50CiB9CiAKIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OkV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIoKQorI2lmZGVmIFVTRV9XRUJQUk9DRVNTX0VWRU5UX1NJTVVMQVRJT04K
ICAgICA6IG1fdGltZSgwKQogICAgICwgbV9wb3NpdGlvbigpCiAgICAgLCBtX2NsaWNrQ291bnQo
MCkKICAgICAsIG1fY2xpY2tUaW1lKDApCiAgICAgLCBtX2NsaWNrUG9zaXRpb24oKQogICAgICwg
bV9jbGlja0J1dHRvbihrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b24pCisjZW5kaWYKIHsKIH0K
IApAQCAtMTIwLDggKzEyNCwyOCBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNl
RG93bihpCiAgICAgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5G
cmFtZShwYWdlKTsKICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRK
YXZhU2NyaXB0Q29udGV4dChmcmFtZSk7CiAgICAgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMg
PSBwYXJzZU1vZGlmaWVyQXJyYXkoY29udGV4dCwgbW9kaWZpZXJBcnJheSk7CisKKyNpZmRlZiBV
U0VfV0VCUFJPQ0VTU19FVkVOVF9TSU1VTEFUSU9OCiAgICAgdXBkYXRlQ2xpY2tDb3VudChidXR0
b24pOwogICAgIFdLQnVuZGxlUGFnZVNpbXVsYXRlTW91c2VEb3duKHBhZ2UsIGJ1dHRvbiwgbV9w
b3NpdGlvbiwgbV9jbGlja0NvdW50LCBtb2RpZmllcnMsIG1fdGltZSk7CisjZWxzZQorICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFp
blB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0
V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vdXNlRG93
biIpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0
KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+
IGJ1dHRvblJlZiA9IFdLVUludDY0Q3JlYXRlKGJ1dHRvbik7CisgICAgV0tEaWN0aW9uYXJ5QWRk
SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBidXR0b25LZXkuZ2V0KCksIGJ1dHRv
blJlZi5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbW9kaWZpZXJzS2V5
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9kaWZpZXJzIikpOwor
ICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBtb2RpZmllcnNSZWYgPSBXS1VJbnQ2NENyZWF0
ZShtb2RpZmllcnMpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keS5nZXQoKSwgbW9kaWZpZXJzS2V5LmdldCgpLCBtb2RpZmllcnNSZWYuZ2V0KCkpOworCisg
ICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNz
YWdlQm9keS5nZXQoKSwgMCk7CisjZW5kaWYKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9s
bGVyOjptb3VzZVVwKGludCBidXR0b24sIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSkKQEAgLTEz
MCwyMiArMTU0LDc4IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VVcChpbnQK
ICAgICBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBh
Z2UpOwogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3Jp
cHRDb250ZXh0KGZyYW1lKTsKICAgICBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycyA9IHBhcnNl
TW9kaWZpZXJBcnJheShjb250ZXh0LCBtb2RpZmllckFycmF5KTsKKworI2lmZGVmIFVTRV9XRUJQ
Uk9DRVNTX0VWRU5UX1NJTVVMQVRJT04KICAgICB1cGRhdGVDbGlja0NvdW50KGJ1dHRvbik7CiAg
ICAgV0tCdW5kbGVQYWdlU2ltdWxhdGVNb3VzZVVwKHBhZ2UsIGJ1dHRvbiwgbV9wb3NpdGlvbiwg
bV9jbGlja0NvdW50LCBtb2RpZmllcnMsIG1fdGltZSk7CisjZWxzZQorICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011
dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0
YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
c3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3Vi
TWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUo
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vdXNlVXAiKSk7CisgICAg
V0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBzdWJNZXNz
YWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gYnV0dG9uS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiQnV0dG9uIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBidXR0b25SZWYg
PSBXS1VJbnQ2NENyZWF0ZShidXR0b24pOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgYnV0dG9uS2V5LmdldCgpLCBidXR0b25SZWYuZ2V0KCkp
OworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1vZGlmaWVyc0tleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vZGlmaWVycyIpKTsKKyAgICBXS1JldGFp
blB0cjxXS1VJbnQ2NFJlZj4gbW9kaWZpZXJzUmVmID0gV0tVSW50NjRDcmVhdGUobW9kaWZpZXJz
KTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCks
IG1vZGlmaWVyc0tleS5nZXQoKSwgbW9kaWZpZXJzUmVmLmdldCgpKTsKKworICAgIFdLQnVuZGxl
UG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCks
IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0
KCksIDApOworI2VuZGlmCiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VN
b3ZlVG8oaW50IHgsIGludCB5KQogeworI2lmZGVmIFVTRV9XRUJQUk9DRVNTX0VWRU5UX1NJTVVM
QVRJT04KICAgICBtX3Bvc2l0aW9uLnggPSB4OwogICAgIG1fcG9zaXRpb24ueSA9IHk7CiAgICAg
V0tCdW5kbGVQYWdlU2ltdWxhdGVNb3VzZU1vdGlvbihJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
cGFnZSgpLT5wYWdlKCksIG1fcG9zaXRpb24sIG1fdGltZSk7CisjZWxzZQorICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxX
S011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdL
TXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
U3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5h
bWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vdXNlTW92ZVRvIikp
OworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwg
c3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJYIikpOworICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiB4UmVmID0gV0tEb3Vi
bGVDcmVhdGUoeCk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VC
b2R5LmdldCgpLCB4S2V5LmdldCgpLCB4UmVmLmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
WSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0RvdWJsZVJlZj4geVJlZiA9IFdLRG91YmxlQ3JlYXRl
KHkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQo
KSwgeUtleS5nZXQoKSwgeVJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91
c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1l
c3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyNlbmRp
ZgogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmxlYXBGb3J3YXJkKGludCBtaWxs
aXNlY29uZHMpCiB7CisjaWZkZWYgVVNFX1dFQlBST0NFU1NfRVZFTlRfU0lNVUxBVElPTgogICAg
IG1fdGltZSArPSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7CisjZWxzZQorICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFpblB0cjxXS011
dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLTXV0
YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
c3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU3Vi
TWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZU5hbWUo
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxlYXBGb3J3YXJkIikpOwor
ICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgc3Vi
TWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHRpbWVLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJUaW1lSW5NaWxsaXNlY29uZHMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRS
ZWY+IHRpbWVSZWYgPSBXS1VJbnQ2NENyZWF0ZShtaWxsaXNlY29uZHMpOworICAgIFdLRGljdGlv
bmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgdGltZUtleS5nZXQoKSwg
dGltZVJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdl
dCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyNlbmRpZgogfQogCisKKyNp
ZmRlZiBVU0VfV0VCUFJPQ0VTU19FVkVOVF9TSU1VTEFUSU9OCiB2b2lkIEV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6OnVwZGF0ZUNsaWNrQ291bnQoV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbikKIHsK
ICAgICBpZiAobV90aW1lIC0gbV9jbGlja1RpbWUgPCAxICYmIG1fcG9zaXRpb24gPT0gbV9jbGlj
a1Bvc2l0aW9uICYmIGJ1dHRvbiA9PSBtX2NsaWNrQnV0dG9uKSB7CkBAIC0xNTksNiArMjM5LDcg
QEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp1cGRhdGVDbGljawogICAgIG1fY2xpY2tQ
b3NpdGlvbiA9IG1fcG9zaXRpb247CiAgICAgbV9jbGlja0J1dHRvbiA9IGJ1dHRvbjsKIH0KKyNl
bmRpZgogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRleHRab29tSW4oKQogewpAQCAt
MjM0LDEwICszMTUsNiBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmtleURvd24oSlNT
CiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IGxvY2F0aW9uUmVmID0gV0tVSW50NjRDcmVh
dGUobG9jYXRpb24pOwogICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keS5nZXQoKSwgbG9jYXRpb25LZXkuZ2V0KCksIGxvY2F0aW9uUmVmLmdldCgpKTsKIAotICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0aW1lc3RhbXBLZXkgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaW1lc3RhbXAiKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tE
b3VibGVSZWY+IHRpbWVSZWYgPSBXS0RvdWJsZUNyZWF0ZShtX3RpbWUpOwotICAgIFdLRGljdGlv
bmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgdGltZXN0YW1wS2V5Lmdl
dCgpLCB0aW1lUmVmLmdldCgpKTsKLQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5h
bWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQogCkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gOTU1NjkpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0
cnkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCisjaWYgIVBMQVRGT1JNKE1BQykK
KyNkZWZpbmUgVVNFX1dFQlBST0NFU1NfRVZFTlRfU0lNVUxBVElPTgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXVFIgewogCiBjbGFzcyBFdmVudFNlbmRpbmdDb250cm9sbGVyIDogcHVibGljIEpTV3Jh
cHBhYmxlIHsKQEAgLTYwLDYgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFdmVudFNl
bmRpbmdDb250cm9sbGVyKCk7CiAKKyNpZmRlZiBVU0VfV0VCUFJPQ0VTU19FVkVOVF9TSU1VTEFU
SU9OCiAgICAgdm9pZCB1cGRhdGVDbGlja0NvdW50KFdLRXZlbnRNb3VzZUJ1dHRvbik7CiAKICAg
ICBkb3VibGUgbV90aW1lOwpAQCAtNjksNiArNzQsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBt
X2NsaWNrVGltZTsKICAgICBXS1BvaW50IG1fY2xpY2tQb3NpdGlvbjsKICAgICBXS0V2ZW50TW91
c2VCdXR0b24gbV9jbGlja0J1dHRvbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RS
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHku
bW0JKHJldmlzaW9uIDk1NTY5KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRT
ZW5kZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDU5IEBACiAjaW1wb3J0
ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgogI2ltcG9y
dCAiVGVzdENvbnRyb2xsZXIuaCIKLSNpbXBvcnQgPFdlYktpdDIvV0tQYWdlUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0Mi9XS1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIAorZW51bSBN
b3VzZUFjdGlvbiB7CisgICAgTW91c2VEb3duLAorICAgIE1vdXNlVXAsCisgICAgTW91c2VEcmFn
Z2VkCit9OworCisvLyBNYXRjaCB0aGUgRE9NIHNwZWMgKHNhZGx5IHRoZSBET00gc3BlYyBkb2Vz
IG5vdCBwcm92aWRlIGFuIGVudW0pCitlbnVtIE1vdXNlQnV0dG9uIHsKKyAgICBMZWZ0TW91c2VC
dXR0b24gPSAwLAorICAgIE1pZGRsZU1vdXNlQnV0dG9uID0gMSwKKyAgICBSaWdodE1vdXNlQnV0
dG9uID0gMiwKKyAgICBOb01vdXNlQnV0dG9uID0gLTEKK307CisKK3N0YXRpYyBOU0V2ZW50VHlw
ZSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihpbnQgYnV0dG9uLCBNb3VzZUFjdGlv
biBhY3Rpb24pCit7CisgICAgc3dpdGNoIChidXR0b24pIHsKKyAgICAgICAgY2FzZSBMZWZ0TW91
c2VCdXR0b246CisgICAgICAgICAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgICAgICAgICAgICAg
IGNhc2UgTW91c2VEb3duOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlNMZWZ0TW91c2VE
b3duOworICAgICAgICAgICAgICAgIGNhc2UgTW91c2VVcDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE5TTGVmdE1vdXNlVXA7CisgICAgICAgICAgICAgICAgY2FzZSBNb3VzZURyYWdnZWQ6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOU0xlZnRNb3VzZURyYWdnZWQ7CisgICAgICAg
ICAgICB9CisgICAgICAgIGNhc2UgUmlnaHRNb3VzZUJ1dHRvbjoKKyAgICAgICAgICAgIHN3aXRj
aCAoYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY2FzZSBNb3VzZURvd246CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBOU1JpZ2h0TW91c2VEb3duOworICAgICAgICAgICAgICAgIGNhc2Ug
TW91c2VVcDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5TUmlnaHRNb3VzZVVwOworICAg
ICAgICAgICAgICAgIGNhc2UgTW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gTlNSaWdodE1vdXNlRHJhZ2dlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY2FzZSBNb3Vz
ZURvd246CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOU090aGVyTW91c2VEb3duOworICAg
ICAgICAgICAgICAgIGNhc2UgTW91c2VVcDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5T
T3RoZXJNb3VzZVVwOworICAgICAgICAgICAgICAgIGNhc2UgTW91c2VEcmFnZ2VkOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTlNPdGhlck1vdXNlRHJhZ2dlZDsKKyAgICAgICAgICAgIH0K
KyAgICB9CisgICAgYXNzZXJ0KDApOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU0V2ZW50VHlw
ZT4oMCk7Cit9CisKIHN0YXRpYyBpbnQgYnVpbGRNb2RpZmllckZsYWdzKFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzKQogewogICAgIGludCBmbGFncyA9IDA7CkBAIC00OSw5ICs5Nyw5NSBAQCBz
dGF0aWMgaW50IGJ1aWxkTW9kaWZpZXJGbGFncyhXS0V2ZW50TW9kCiAgICAgcmV0dXJuIGZsYWdz
OwogfQogCi12b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYga2V5UmVm
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5zaWduZWQgaW50IGtleUxvY2F0aW9u
LCBkb3VibGUgdGltZXN0YW1wKQorc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXS1BvaW50
JiBhLCBjb25zdCBXS1BvaW50JiBiKQogewotICAgIE5TU3RyaW5nKiBjaGFyYWN0ZXIgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6dG9TVEQoa2V5UmVmKS5jX3N0cigpIAorICAgIHJldHVy
biBhLnggPT0gYi54ICYmIGEueSA9PSBiLnk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6
dXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKQoreworICAgIGlmIChtX3RpbWUg
LSBtX2NsaWNrVGltZSA8IDEgJiYgbV9wb3NpdGlvbiA9PSBtX2NsaWNrUG9zaXRpb24gJiYgYnV0
dG9uID09IG1fY2xpY2tCdXR0b24pIHsKKyAgICAgICAgKyttX2NsaWNrQ291bnQ7CisgICAgICAg
IG1fY2xpY2tUaW1lID0gbV90aW1lOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9j
bGlja0NvdW50ID0gMTsKKyAgICBtX2NsaWNrVGltZSA9IG1fdGltZTsKKyAgICBtX2NsaWNrUG9z
aXRpb24gPSBtX3Bvc2l0aW9uOworICAgIG1fY2xpY2tCdXR0b24gPSBidXR0b247Cit9CisKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMpCit7CisgICAgdXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRv
bihidXR0b25OdW1iZXIpOworCisgICAgTlNFdmVudFR5cGUgZXZlbnRUeXBlID0gZXZlbnRUeXBl
Rm9yTW91c2VCdXR0b25BbmRBY3Rpb24oYnV0dG9uTnVtYmVyLCBNb3VzZURvd24pOworICAgIE5T
RXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmV2ZW50VHlwZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBvaW50
KG1fcG9zaXRpb24ueCwgbV9wb3NpdGlvbi55KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb2RpZmllckZsYWdzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6Y3VycmVudEV2ZW50
VGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1iZXI6
W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2luZG93
TnVtYmVyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnROdW1iZXI6KytldmVudE51bWJlciAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tDb3VudDptX2NsaWNrQ291bnQgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3N1cmU6MC4wXTsKKworICAg
IE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CisgICAgaWYg
KHRhcmdldFZpZXcpIHsKKyAgICAgICAgW3RhcmdldFZpZXcgbW91c2VEb3duOmV2ZW50XTsKKyAg
ICAgICAgaWYgKGJ1dHRvbk51bWJlciA9PSBMZWZ0TW91c2VCdXR0b24pCisgICAgICAgICAgICBt
X2xlZnRNb3VzZUJ1dHRvbkRvd24gPSB0cnVlOworICAgIH0KK30KKwordm9pZCBFdmVudFNlbmRl
clByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMpCit7CisgICAgTlNFdmVudFR5cGUgZXZlbnRUeXBlID0gZXZlbnRUeXBlRm9yTW91
c2VCdXR0b25BbmRBY3Rpb24oYnV0dG9uTnVtYmVyLCBNb3VzZVVwKTsKKyAgICBOU0V2ZW50ICpl
dmVudCA9IFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpldmVudFR5cGUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludChtX3Bvc2l0
aW9uLngsIG1fcG9zaXRpb24ueSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bW9kaWZpZXJGbGFnczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmN1cnJlbnRFdmVudFRpbWUoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RD
b250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFw
aGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV2ZW50TnVtYmVyOisrZXZlbnROdW1iZXIgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsaWNrQ291bnQ6bV9jbGlja0NvdW50IAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNzdXJlOjAuMF07CisKKyAgICBOU1ZpZXcg
KnRhcmdldFZpZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1W
aWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOworICAgIHRhcmdldFZpZXcg
PSB0YXJnZXRWaWV3ID8gdGFyZ2V0VmlldyA6IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtVmlldygpOworICAgIGFzc2VydCh0YXJnZXRWaWV3KTsKKyAgICBbdGFyZ2V0
VmlldyBtb3VzZURvd246ZXZlbnRdOworICAgIGlmIChidXR0b25OdW1iZXIgPT0gTGVmdE1vdXNl
QnV0dG9uKQorICAgICAgICBtX2xlZnRNb3VzZUJ1dHRvbkRvd24gPSBmYWxzZTsKKyAgICBtX2Ns
aWNrVGltZSA9IFtldmVudCB0aW1lc3RhbXBdOworICAgIG1fY2xpY2tQb3NpdGlvbiA9IG1fcG9z
aXRpb247Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8oZG91YmxlIHgs
IGRvdWJsZSB5KQoreworICAgIE5TVmlldyAqdmlldyA9IG1fdGVzdENvbnRyb2xsZXItPm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIE5TUG9pbnQgcG9zaXRpb24gPSBbdmlldyBj
b252ZXJ0UG9pbnQ6TlNNYWtlUG9pbnQoeCwgeSkgdG9WaWV3Om5pbF07CisgICAgbV9wb3NpdGlv
bi54ID0gcG9zaXRpb24ueDsKKyAgICBtX3Bvc2l0aW9uLnkgPSBwb3NpdGlvbi55OworICAgIE5T
RXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOihtX2xlZnRNb3VzZUJ1
dHRvbkRvd24gPyBOU0xlZnRNb3VzZURyYWdnZWQgOiBOU01vdXNlTW92ZWQpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246cG9zaXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczowIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmN1cnJlbnRFdmVudFRpbWUoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOltbdmlldyB3
aW5kb3ddIHdpbmRvd051bWJlcl0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE51bWJlcjorK2V2ZW50TnVtYmVy
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja0NvdW50OihtX2xl
ZnRNb3VzZUJ1dHRvbkRvd24gPyBtX2NsaWNrQ291bnQgOiAwKSAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZTowLjBdOworCisgICAgTlNWaWV3ICp0YXJn
ZXRWaWV3ID0gW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygp
IGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKKyAgICBpZiAodGFyZ2V0VmlldykK
KyAgICAgICAgW3RhcmdldFZpZXcgbW91c2VNb3ZlZDpldmVudF07Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMgbW9k
aWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKKyAgICBOU1N0cmluZyogY2hhcmFjdGVy
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnRvU1REKGtleSkuY19zdHIoKSAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6W05TU3RyaW5nIGRlZmF1bHRD
U3RyaW5nRW5jb2RpbmddXTsKIAogICAgIE5TU3RyaW5nICpldmVudENoYXJhY3RlciA9IGNoYXJh
Y3RlcjsKQEAgLTE3MCwxOSArMzA0LDE3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93
bihXS1N0cmluZ1IKICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzID0gW2NoYXJh
Y3RlciBsb3dlcmNhc2VTdHJpbmddOwogICAgIH0KIAotICAgIG1vZGlmaWVyRmxhZ3MgfD0gYnVp
bGRNb2RpZmllckZsYWdzKG1vZGlmaWVyc1JlZik7CisgICAgbW9kaWZpZXJGbGFncyB8PSBidWls
ZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKIAogICAgIGlmIChrZXlMb2NhdGlvbiA9PSAweDAz
IC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKICAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBO
U051bWVyaWNQYWRLZXlNYXNrOwogCiAgICAgLy8gRklYTUU6IFtbW21haW5GcmFtZSBmcmFtZVZp
ZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKIAotICAgIFdLUGFnZVNldFNob3VsZFNlbmRLZXli
b2FyZEV2ZW50U3luY2hyb25vdXNseShbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCkgcGFnZVJlZl0sIHRydWUpOwotCiAgICAgTlNFdmVudCAqZXZlbnQgPSBb
TlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TS2V5RG93bgogICAgICAgICAgICAgICAgICAgICAg
ICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1v
ZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncwotICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0
YW1wOnRpbWVzdGFtcC8vW3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWVzdGFtcDpjdXJyZW50RXZlbnRUaW1lKCkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKQEAgLTE5NSw3ICszMjcsNyBAQCB2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgZXZlbnQgPSBbTlNFdmVudCBr
ZXlFdmVudFdpdGhUeXBlOk5TS2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9u
Ok5TTWFrZVBvaW50KDUsIDUpCiAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdz
Om1vZGlmaWVyRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDp0aW1lc3Rh
bXAvL1tzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1l
c3RhbXA6Y3VycmVudEV2ZW50VGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dO
dW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkg
d2luZG93TnVtYmVyXQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGlj
c0NvbnRleHQgY3VycmVudENvbnRleHRdCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0
ZXJzOmV2ZW50Q2hhcmFjdGVyCkBAIC0yMDQsOCArMzM2LDYgQEAgdm9pZCBFdmVudFNlbmRlclBy
b3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZTpr
ZXlDb2RlXTsKIAogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOwotCi0gICAgV0tQYWdlU2V0
U2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91c2x5KFttX3Rlc3RDb250cm9sbGVyLT5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBwYWdlUmVmXSwgZmFsc2UpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXVFIKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NTY5KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMjAgIENo
YW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBbTWFjXSBJbXBsZW1l
bnQgYSBtb3JlLWNvbXBsZXRlIE1vdXNlRG93bi9Nb3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0aW9u
cyBmb3IgV2ViS2l0MiBFdmVudFNlbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjgxMDgKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
dGhlIGV2ZW50IHNlbmRlciBtb3VzZSBldmVudHMgdGhyb3VnaCBXZWJLaXQyIFVJUHJvY2VzcyB3
aGljaCBpcworICAgICAgICBjbG9zZXIgdG8gdGhlIHJlYWwgc2ltdWxhdGlvbiB0aGFuIGEgV2Vi
UHJvY2Vzcy1vbmx5IGFwcHJvYWNoLiBUaGUgcGF0Y2ggb25seSBzdXBwb3J0cyBNYWMKKyAgICAg
ICAgcGxhdGZvcm0gYXMgdGhlIGZpcnN0IHN0ZXAgc28gdGhlIGV4aXN0aW5nIGNvZGUgaXMgc3Rp
bGwga2VwdCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgIFVuc2tpcCB0aGUgcGFzc2Vk
IHRlc3RzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9Ta2lw
cGVkOgorCiAyMDExLTA5LTIwICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMTQKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQJKHJldmlzaW9uIDk1NTY5KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
MyArNDAsNiBAQAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24g
b2YgZXZlbnRTZW5kZXIKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MjE5ND4KLWVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJlLTAwMy5odG1sCi1lZGl0
aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDEuaHRtbAotZWRpdGluZy9kZWxldGluZy9zbWFy
dC1kZWxldGUtMDAyLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1s
Ci1lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDQuaHRtbAotZWRpdGluZy9leGVjQ29t
bWFuZC9maW5kU3RyaW5nLTIuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkLzQ5NDQ3NzAtMi5odG1s
CiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDk0NzEzMC5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29w
eS1zdGFuZGFsb25lLWltYWdlLWNyYXNoLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWFu
ZC1kcm9wLWltYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sCkBAIC02NiwxOSArNTksMTIgQEAgZWRp
dGluZy9wYXN0ZWJvYXJkL2Ryb3AtbGluay5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC10
ZXh0LWV2ZW50cy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC10ZXh0LXdpdGhvdXQtc2Vs
ZWN0aW9uLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jbnRsLXktMDAxLmh0bWwKLWVk
aXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jdHJsLWEtay15Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2Fy
ZC9lbWFjcy1jdHJsLWsteS0wMDEuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtaW5wdXQt
ZmlsZXMtYWNjZXNzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlcy1kdXJpbmctcGFnZS1k
cmFncy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZ2V0LWRhdGEtdGV4dC1wbGFpbi1kcm9wLmh0
bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1kcmFnLWRyb3AuaHRtbAotZWRpdGluZy9wYXN0
ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwMS5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFz
dGUtMDAyLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDMuaHRtbAogZWRp
dGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwNC5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQv
c21hcnQtcGFzdGUtMDA1Lmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDcu
aHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwOC5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvc3ViZnJhbWUtZHJhZ25kcm9wLTEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vMTQ5
NzEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vNDg5NTQyOC0xLmh0bWwKQEAgLTkxLDEzICs3Nywx
MSBAQCBlZGl0aW5nL3NlbGVjdGlvbi81MzU0NDU1LTIuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24v
YW5jaG9yLWZvY3VzMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hbmNob3ItZm9jdXMzLmh0bWwK
IGVkaXRpbmcvc2VsZWN0aW9uL2J1dHRvbi1yaWdodC1jbGljay5odG1sCi1lZGl0aW5nL3NlbGVj
dGlvbi9jbGljay1pbi1mb2N1c2FibGUtbGluay1zaG91bGQtbm90LWNsZWFyLXNlbGVjdGlvbi5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1k
aXYuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tcGFkZGluZy13aXRoLW11bHRpcGxl
LWxpbmUtYm94ZXMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtb24tdGV4dC5odG1sCiBlZGl0aW5n
L3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi5odG1sCi1lZGl0aW5nL3NlbGVj
dGlvbi9kb3VibGVjbGljay1jcmFzaC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGlj
ay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UtaW1nLWNyYXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdo
aXRlc3BhY2UuaHRtbApAQCAtMTA2LDExICs5MCw4IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWct
c2VsZWN0LXJhcGlkbHkuaHQKIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWctc3RhcnQtZXZlbnQtY2xp
ZW50LXgteS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNvbnRlbnRlZGl0YWJsZS1p
ZnJhbWUuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZW1wdHktY2VsbC1yaWdodC1jbGljay5odG1s
Ci1lZGl0aW5nL3NlbGVjdGlvbi9leHBhbmRpbmctc2VsZWN0aW9ucy5odG1sCi1lZGl0aW5nL3Nl
bGVjdGlvbi9leHBhbmRpbmctc2VsZWN0aW9uczIuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLWFmdGVyLW1vdXNlLXNlbGVjdGlvbi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLWFmdGVyLWRvdWJsZS1jbGljay5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9mYWtl
LWRvdWJsZWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZHJhZy5odG1sCiBlZGl0
aW5nL3NlbGVjdGlvbi9pbmxpbmUtY2xvc2VzdC1sZWFmLWNoaWxkLmh0bWwKIGVkaXRpbmcvc2Vs
ZWN0aW9uL2xhc3QtZW1wdHktaW5saW5lLmh0bWwKQEAgLTEyNywxNCArMTA4LDExIEBAIGVkaXRp
bmcvc2VsZWN0aW9uL3VzZXItZHJhZy1lbGVtZW50LWFuZC0KIGVkaXRpbmcvc2VsZWN0aW9uL3dv
cmQtZ3JhbnVsYXJpdHkuaHRtbAogZWRpdGluZy9zcGVsbGluZy9jb250ZXh0LW1lbnUtc3VnZ2Vz
dGlvbnMuaHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwKLWVkaXRp
bmcvdW5kby91bmRvLWRlbGV0ZVdvcmQuaHRtbAogZWRpdGluZy91bmRvL3VuZG8tc21hcnQtZGVs
ZXRlLXJldmVyc2VkLXNlbGVjdGlvbi5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1zbWFydC1kZWxl
dGUtd29yZC5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpdHRlc3Qtb24tcmVsYXRpdmUt
cG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2Nzcy91c2VyLWRyYWctbm9uZS5odG1sCiBm
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWZyYW1lcy5odG1sCiBmYXN0
L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLmh0bWwKLWZhc3QvZG9tL2hvcml6
b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXIt
aW4tcnRsLmh0bWwKIGZhc3QvZHluYW1pYy9sYXllci1oaXQtdGVzdC1jcmFzaC5odG1sCiBmYXN0
L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTguaHRtbApAQCAtMTc3LDE0ICsxNTUsMTEgQEAg
ZmFzdC9ldmVudHMvcmVtb3ZlLWNoaWxkLW9uc2Nyb2xsLmh0bWwKIGZhc3QvZXZlbnRzL3JpZ2h0
LWNsaWNrLWZvY3VzLmh0bWwKIGZhc3QvZXZlbnRzL3Njcm9sbC1hZnRlci1jbGljay1vbi10YWIt
aW5kZXguaHRtbAogZmFzdC9ldmVudHMvc2Nyb2xsLWluLXNjYWxlZC1wYWdlLXdpdGgtb3ZlcmZs
b3ctaGlkZGVuLmh0bWwKLWZhc3QvZXZlbnRzL3Njcm9sbGJhci1kb3VibGUtY2xpY2suaHRtbAot
ZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZG91YmxlLXRyaXBsZS1jbGlja3MuaHRtbAogZmFz
dC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZHJhZy5odG1sCiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFy
dC1wcmV2ZW50LXNlbGVjdGlvbi1vbi1yaWdodC1jbGljay5odG1sCiBmYXN0L2V2ZW50cy9zdGFu
ZGFsb25lLWltYWdlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZmFzdC9ldmVudHMvd2hlZWxldmVu
dC1pbi1ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAogZmFzdC9ldmVudHMvd2hlZWxl
dmVudC1pbi12ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKLWZhc3QvZXZlbnRzL3pvb20t
ZGJsY2xpY2suaHRtbAogZmFzdC9maWxlcy9hcHBseS1ibG9iLXVybC10by14aHIuaHRtbAogZmFz
dC9maWxlcy9maWxlLXJlYWRlci1hYm9ydC5odG1sCiBmYXN0L2ZpbGVzL3JlYWQtYmxvYi1hc3lu
Yy5odG1sCkBAIC0xOTQsMTQgKzE2OSw5IEBAIGZhc3QvZm9ybXMvZHJhZy1vdXQtb2YtdGV4dGFy
ZWEuaHRtbAogZmFzdC9mb3Jtcy9nZXQtZmlsZS11cGxvYWQuaHRtbAogZmFzdC9mb3Jtcy9pbnB1
dC1maWxlLXJlLXJlbmRlci5odG1sCiBmYXN0L2Zvcm1zL2lucHV0LXJlYWRvbmx5LWF1dG9zY3Jv
bGwuaHRtbAotZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LWRvdWJsZS1jbGljay5odG1sCiBmYXN0L2Zv
cm1zL2lucHV0LXRleHQtZHJhZy1kb3duLmh0bWwKIGZhc3QvZm9ybXMvbGlzdGJveC10eXBlYWhl
YWQtY3lyaWxsaWMuaHRtbAogZmFzdC9mb3Jtcy9saXN0Ym94LXR5cGVhaGVhZC1ncmVlay5odG1s
Ci1mYXN0L2Zvcm1zL29uc2VsZWN0LXRleHRhcmVhLmh0bWwKLWZhc3QvZm9ybXMvb25zZWxlY3Qt
dGV4dGZpZWxkLmh0bWwKLWZhc3QvZm9ybXMvb3B0aW9uLW1vdXNlZXZlbnRzLmh0bWwKLWZhc3Qv
Zm9ybXMvcmFuZ2Uvc2xpZGVyLWRlbGV0ZS13aGlsZS1kcmFnZ2luZy10aHVtYi5odG1sCiBmYXN0
L2Zvcm1zL3JhbmdlL3NsaWRlci1tb3VzZS1ldmVudHMuaHRtbAogZmFzdC9mb3Jtcy9yYW5nZS9z
bGlkZXItb25jaGFuZ2UtZXZlbnQuaHRtbAogZmFzdC9mb3Jtcy9zZWxlY3QtdHlwZS1haGVhZC1u
b24tbGF0aW4uaHRtbApAQCAtMjExLDE1ICsxODEsNiBAQCBmYXN0L2xvYWRlci9wb2xpY3ktZGVs
ZWdhdGUtYWN0aW9uLWhpdC10CiBmYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJl
cGFpbnQuaHRtbAogZmFzdC9yZXBhaW50L3JlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3Vu
ZGFyeS5odG1sCiBmYXN0L3JlcGFpbnQvc2VsZWN0aW9uLXJsLmh0bWwKLWZhc3QvdGV4dC9hdHN1
aS1ydGwtb3ZlcnJpZGUtc2VsZWN0aW9uLmh0bWwKLWZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2to
bWVyLXNlbGVjdGlvbi5odG1sCi1mYXN0L3RleHQvb2Zmc2V0Rm9yUG9zaXRpb24tY29tcGxleC1m
YWxsYmFjay5odG1sCi1mYXN0L3RleHQvcmVzZXQtZHJhZy1vbi1tb3VzZS1kb3duLmh0bWwKLWZh
c3Qvd3JpdGluZy1tb2RlL2hvcml6b250YWwtYnQtcmVwbGFjZWQtc2VsZWN0aW9uLmh0bWwKLWZh
c3Qvd3JpdGluZy1tb2RlL2phcGFuZXNlLWxyLXNlbGVjdGlvbi5odG1sCi1mYXN0L3dyaXRpbmct
bW9kZS9qYXBhbmVzZS1ybC1zZWxlY3Rpb24uaHRtbAotZmFzdC93cml0aW5nLW1vZGUvdmVydGlj
YWwtbHItcmVwbGFjZWQtc2VsZWN0aW9uLmh0bWwKLWZhc3Qvd3JpdGluZy1tb2RlL3ZlcnRpY2Fs
LXJsLXJlcGxhY2VkLXNlbGVjdGlvbi5odG1sCiBodHRwL3Rlc3RzL2xvY2FsL2Jsb2Ivc2VuZC1o
eWJyaWQtYmxvYi5odG1sCiBodHRwL3Rlc3RzL2xvY2FsL2RyYWctb3Zlci1yZW1vdGUtY29udGVu
dC5odG1sCiBodHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvZmlsZS1sYXN0LW1vZGlmaWVkLmh0bWwK
QEAgLTIzOCwxOSArMTk5LDExIEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvZHJhZy1vdmVyLXJlbW90
ZS1jb24KIG1lZGlhL2NvbnRyb2xzLXJpZ2h0LWNsaWNrLW9uLXRpbWViYXIuaHRtbAogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0LWRhdGEtZmlsZS11cmwu
aHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLXNlbGVjdGlvbnMtdG8t
Y29udGVudGVkaXRhYmxlLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9kb3Vi
bGVjbGljay1zaG91bGQtbm90LWV4cGFuZC1hY3Jvc3MtbGluZXMuaHRtbAotcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc2VsZWN0aW9uL3dvcmQtdGhhaS5odG1sCiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jt
cy9saXN0Ym94LXNjcm9sbGJhci1oaXQtdGVzdC5odG1sCi1wbGF0Zm9ybS9tYWMvZmFzdC9vdmVy
Zmxvdy9vdmVyZmxvdy1zY3JvbGxiYXItaGl0LXRlc3QuaHRtbAogcGx1Z2lucy9jbGlja2luZy1t
aXNzaW5nLXBsdWdpbi1maXJlcy1kZWxlZ2F0ZS5odG1sCiBzY3JvbGxiYXJzL3Njcm9sbGJhci1p
ZnJhbWUtY2xpY2stZG9lcy1ub3QtYmx1ci1jb250ZW50Lmh0bWwKIHNjcm9sbGJhcnMvc2Nyb2xs
ZXZlbnQtaWZyYW1lLW5vLXNjcm9sbGluZy13aGVlbC5odG1sCi0KIHN2Zy9jdXN0b20vZm9yZWln
bk9iamVjdC1jcmFzaC1vbi1ob3Zlci54bWwKLXN2Zy9jdXN0b20vbW91c2UtbW92ZS1vbi1zdmct
Y29udGFpbmVyLXN0YW5kYWxvbmUuc3ZnCi1zdmcvY3VzdG9tL21vdXNlLW1vdmUtb24tc3ZnLWNv
bnRhaW5lci54aHRtbAotc3ZnL2N1c3RvbS9tb3VzZS1tb3ZlLW9uLXN2Zy1yb290LXN0YW5kYWxv
bmUuc3ZnCi1zdmcvY3VzdG9tL21vdXNlLW1vdmUtb24tc3ZnLXJvb3QueGh0bWwKIHN2Zy9jdXN0
b20vdXNlLWV2ZW50cy1jcmFzaC5zdmcKIAogIyMjIEVORCBPRiAoMSkgQ2xhc3NpZmllZCBmYWls
dXJlcyB3aXRoIGJ1ZyByZXBvcnRzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tp
cHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAkocmV2
aXNpb24gOTU1NjkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAkod29ya2lu
ZyBjb3B5KQpAQCAtNjczLDExICs2NzMsMTUgQEAgcGx1Z2lucy9uZXRzY2FwZS1wbHVnaW4tc2V0
d2luZG93LXNpemUtMgogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0RWRpdGluZ0JlaGF2aW9yCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDI2ODk+CitlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDMu
aHRtbAorZWRpdGluZy9kZWxldGluZy9wYXJhZ3JhcGgtaW4tcHJlc2VydmVOZXdsaW5lLmh0bWwK
K2VkaXRpbmcvZGVsZXRpbmcvd2hpdGVzcGFjZS1wcmUtMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9hZnRlci1saW5lLWJyZWFrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3J0bC1tb3ZlLXNlbGVj
dGlvbi1yaWdodC1sZWZ0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCiBl
ZGl0aW5nL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtdGV4dC1zZWxlY3Rpb24uaHRtbAogZWRpdGlu
Zy9zZWxlY3Rpb24vZGlyZWN0aW9uYWxpdHktYWZ0ZXItdW5kby1yZXBsYWNlLmh0bWwKK2VkaXRp
bmcvc2VsZWN0aW9uL3Byb2dyYW1tYXRpYy1zZWxlY3Rpb24tb24tbWFjLWlzLWRpcmVjdGlvbmxl
c3MuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9xdWVyeS1jb21tYW5kLXN0YXRlLmh0bWwKIGVk
aXRpbmcvZXhlY0NvbW1hbmQvcXVlcnktdGV4dC1hbGlnbm1lbnQuaHRtbAogZWRpdGluZy9leGVj
Q29tbWFuZC90b2dnbGUtY29tcG91bmQtc3R5bGVzLmh0bWwKQEAgLTY4Niw5ICs2OTAsNiBAQCBl
ZGl0aW5nL3N0eWxlL2lmcmFtZS1vbmxvYWQtY3Jhc2gtdW5peC5oCiBlZGl0aW5nL3N0eWxlL2lm
cmFtZS1vbmxvYWQtY3Jhc2gtd2luLmh0bWwKIGZhc3QvZXZlbnRzL2JhY2tzcGFjZS1uYXZpZ2F0
ZXMtYmFjay5odG1sCiBmYXN0L2Zvcm1zL3NlbGVjdGlvbi1kaXJlY3Rpb24uaHRtbAotZWRpdGlu
Zy9kZWxldGluZy9wYXJhZ3JhcGgtaW4tcHJlc2VydmVOZXdsaW5lLmh0bWwKLWVkaXRpbmcvZGVs
ZXRpbmcvd2hpdGVzcGFjZS1wcmUtMS5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9wcm9ncmFtbWF0
aWMtc2VsZWN0aW9uLW9uLW1hYy1pcy1kaXJlY3Rpb25sZXNzLmh0bWwKIAogIyBXZWJLaXRUZXN0
UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnNldFN0b3BQcm92aXNpb25hbEZyYW1l
TG9hZHMKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjY5MT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108165</attachid>
            <date>2011-09-21 08:22:11 -0700</date>
            <delta_ts>2011-09-21 11:51:18 -0700</delta_ts>
            <desc>patch 3: rebaseline</desc>
            <filename>68108_3.patch</filename>
            <type>text/plain</type>
            <size>43343</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NjMyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDktMjEgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBbTWFjXSBJbXBsZW1lbnQgYSBt
b3JlLWNvbXBsZXRlIE1vdXNlRG93bi9Nb3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3Ig
V2ViS2l0MiBFdmVudFNlbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgxMDgKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGV2
ZW50IHNlbmRlciBtb3VzZSBldmVudHMgdGhyb3VnaCBXZWJLaXQyIFVJUHJvY2VzcyB3aGljaCBp
cworICAgICAgICBjbG9zZXIgdG8gdGhlIHJlYWwgc2ltdWxhdGlvbiB0aGFuIGEgV2ViUHJvY2Vz
cy1vbmx5IGFwcHJvYWNoLiBUaGUgcGF0Y2ggb25seSBzdXBwb3J0cyBNYWMKKyAgICAgICAgcGxh
dGZvcm0gYXMgdGhlIGZpcnN0IHN0ZXAgc28gdGhlIGV4aXN0aW5nIGNvZGUgaXMgc3RpbGwga2Vw
dCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChX
S1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3VzZUV2
ZW50U3luY0ZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisK
IDIwMTEtMDktMjEgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVu
Ym9zc2Eub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9y
dCBpbiBXZWJQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkocmV2aXNpb24gOTU2MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHAKICAgICAsIG1fbWFpbkZyYW1lSXNQaW5u
ZWRUb0xlZnRTaWRlKGZhbHNlKQogICAgICwgbV9tYWluRnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRl
KGZhbHNlKQogICAgICwgbV9yZW5kZXJUcmVlU2l6ZSgwKQotICAgICwgbV9zaG91bGRTZW5kS2V5
Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkoZmFsc2UpCisgICAgLCBtX1Nob3VsZFNlbmRFdmVudHNT
eW5jaHJvbm91c2x5KGZhbHNlKQogewogI2lmbmRlZiBOREVCVUcKICAgICB3ZWJQYWdlUHJveHlD
b3VudGVyLmluY3JlbWVudCgpOwpAQCAtODMyLDcgKzgzMiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlTW91c2VFdmVudChjb25zCiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVu
dDo6TW91c2VEb3duKQogICAgICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50
ID0gYWRvcHRQdHIobmV3IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQpKTsKIAotICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCksIG1fcGFnZUlE
KTsKKyAgICBpZiAobV9TaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSkgeworICAgICAgICBi
b29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZTo6TW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVzc2FnZXM6Oldl
YlBhZ2U6Ok1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlE
KTsKKyAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5cGUoKSwgaGFuZGxlZCk7CisgICAg
fSBlbHNlCisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VF
dmVudChldmVudCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdo
ZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCkBAIC04NjEsNyArODY2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoYwogICAgIG1fa2V5
RXZlbnRRdWV1ZS5hcHBlbmQoZXZlbnQpOwogCiAgICAgcHJvY2VzcygpLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCktPnN0YXJ0KCk7Ci0gICAgaWYgKG1fc2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5j
aHJvbm91c2x5KSB7CisgICAgaWYgKG1fU2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsK
ICAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CiAgICAgICAgIHByb2Nlc3MoKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50U3luY0ZvclRlc3RpbmcoZXZlbnQpLCBNZXNz
YWdlczo6V2ViUGFnZTo6S2V5RXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1f
cGFnZUlEKTsKICAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5cGUoKSwgaGFuZGxlZCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA5
NTYzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYzLDcgKzU2Myw3IEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IHJlbmRl
clRyZWVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJUcmVlU2l6ZTsgfQogCi0gICAgdm9p
ZCBzZXRTaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkoYm9vbCBzeW5jKSB7IG1f
c2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91c2x5ID0gc3luYzsgfTsKKyAgICB2b2lk
IHNldFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KGJvb2wgc3luYykgeyBtX1Nob3VsZFNl
bmRFdmVudHNTeW5jaHJvbm91c2x5ID0gc3luYzsgfTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgV2ViUGFnZUdy
b3VwKiwgdWludDY0X3QgcGFnZUlEKTsKQEAgLTkzNSw3ICs5MzUsNyBAQCBwcml2YXRlOgogCiAg
ICAgc3RhdGljIFdLUGFnZURlYnVnUGFpbnRGbGFncyBzX2RlYnVnUGFpbnRGbGFnczsKIAotICAg
IGJvb2wgbV9zaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHk7CisgICAgYm9vbCBt
X1Nob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2
aXNpb24gOTU2MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTgxLDcgKzU4MSw3IEBAIFdLSW1hZ2VSZWYgV0tQYWdlQ3Jl
YXRlU25hcHNob3RPZlZpc2libGUKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXS1BhZ2VTZXRT
aG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkoV0tQYWdlUmVmIHBhZ2UsIGJvb2wg
c3luYykKK3ZvaWQgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkoV0tQYWdl
UmVmIHBhZ2UsIGJvb2wgc3luYykKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldFNob3VsZFNlbmRL
ZXlib2FyZEV2ZW50U3luY2hyb25vdXNseShzeW5jKTsKKyAgICB0b0ltcGwocGFnZSktPnNldFNo
b3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KHN5bmMpOwogfQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCShyZXZpc2lvbiA5NTYzMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlRHJhd1BhZ2Vz
VG9QREYoV0tQYQogLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2OTc5OiBSZW1vdmUgdGhpcyBzeW5jIGNhbGwuCiBXS19FWFBPUlQgV0tJbWFnZVJlZiBX
S1BhZ2VDcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQoV0tQYWdlUmVmIHBhZ2UpOwogCi1X
S19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRTaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3Vz
bHkoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgc3luYyk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRT
aG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShXS1BhZ2VSZWYgcGFnZSwgYm9vbCBzeW5jKTsK
IAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA5NTYzMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0
OSw2ICsxMDQ5LDI1IEBAIHZvaWQgV2ViUGFnZTo6bW91c2VFdmVudChjb25zdCBXZWJNb3VzZUUK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obW91c2VFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6bW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1v
dXNlRXZlbnQsIGJvb2wmIGhhbmRsZWQpCit7CisgICAgLy8gRG9uJ3QgdHJ5IHRvIGhhbmRsZSBh
bnkgcGVuZGluZyBtb3VzZSBldmVudHMgaWYgYSBjb250ZXh0IG1lbnUgaXMgc2hvd2luZy4KKyAg
ICBpZiAobV9pc1Nob3dpbmdDb250ZXh0TWVudSkgeworICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAobV9wYWdlT3ZlcmxheSkgewor
ICAgICAgICAvLyBMZXQgdGhlIHBhZ2Ugb3ZlcmxheSBoYW5kbGUgdGhlIGV2ZW50LgorICAgICAg
ICBoYW5kbGVkID0gbV9wYWdlT3ZlcmxheS0+bW91c2VFdmVudChtb3VzZUV2ZW50KTsKKyAgICB9
CisKKyAgICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVu
dChtb3VzZUV2ZW50KTsKKyAgICAgICAgaGFuZGxlZCA9IGhhbmRsZU1vdXNlRXZlbnQobW91c2VF
dmVudCwgbV9wYWdlLmdldCgpKTsKKyAgICB9Cit9CisKIHN0YXRpYyBib29sIGhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgUGFnZSogcGFnZSkKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gOTU2MzApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NzUsNiArNDc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChj
b25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgbW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50
Jik7CisgICAgdm9pZCBtb3VzZUV2ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2ViTW91c2VFdmVu
dCYsIGJvb2wmKTsKICAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpOwog
ICAgIHZvaWQga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQga2V5
RXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCYpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDk1NjMwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgS2V5RXZlbnQoV2ViS2l0OjpXZWJLZXli
b2FyZEV2ZW50IGV2ZW50KQogICAgIEtleUV2ZW50U3luY0ZvclRlc3RpbmcoV2ViS2l0OjpXZWJL
ZXlib2FyZEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQogICAgIE1vdXNlRXZlbnQoV2Vi
S2l0OjpXZWJNb3VzZUV2ZW50IGV2ZW50KQorICAgIE1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyhX
ZWJLaXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAgICAgV2hlZWxF
dmVudChXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZF
TlRTKQogICAgIEdlc3R1cmVFdmVudChXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCBldmVudCkKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDk1NjMyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDIgQEAKKzIwMTEtMDktMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAg
ICBbV0syXSBbTWFjXSBJbXBsZW1lbnQgYSBtb3JlLWNvbXBsZXRlIE1vdXNlRG93bi9Nb3VzZVVw
L01vdXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3IgV2ViS2l0MiBFdmVudFNlbmRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgxMDgKKworICAgICAgICBU
aGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGV2ZW50IHNlbmRlciBtb3VzZSBldmVudHMgdGhyb3Vn
aCBXZWJLaXQyIFVJUHJvY2VzcyB3aGljaCBpcworICAgICAgICBjbG9zZXIgdG8gdGhlIHJlYWwg
c2ltdWxhdGlvbiB0aGFuIGEgV2ViUHJvY2Vzcy1vbmx5IGFwcHJvYWNoLiBUaGUgcGF0Y2ggb25s
eSBzdXBwb3J0cyBNYWMKKyAgICAgICAgcGxhdGZvcm0gYXMgdGhlIGZpcnN0IHN0ZXAgc28gdGhl
IGV4aXN0aW5nIGNvZGUgaXMgc3RpbGwga2VwdCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
OkV2ZW50U2VuZGVyUHJveHkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpsZWFw
Rm9yd2FyZCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmN1cnJlbnRFdmVudFRp
bWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6
OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250
cm9sbGVyOjptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVy
Ojptb3VzZVVwKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VN
b3ZlVG8pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpsZWFwRm9yd2Fy
ZCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmtleURvd24pOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZl
bnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6ZXZlbnRUeXBlRm9yTW91c2VCdXR0b25B
bmRBY3Rpb24pOgorICAgICAgICAoV1RSOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6dXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1v
dmVUbyk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0LmNwcDoKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyk6CisK
IDIwMTEtMDktMjEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBn
YXJkZW4tby1tYXRpYyBjb21tYW5kIHNob3VsZCBleHBsYWluIHRoYXQgaXQgaXMgc3RhcnRpbmcg
YSBsb2NhbCBzZXJ2ZXIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCShyZXZpc2lvbiA5NTYzMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRT
ZW5kZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMiArMzMsNDAgQEAgY2xhc3MgVGVz
dENvbnRyb2xsZXI7CiAKIGNsYXNzIEV2ZW50U2VuZGVyUHJveHkgewogcHVibGljOgotICAgIEV2
ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xsZXIqIHRlc3RDb250cm9sbGVyKSA6IG1fdGVzdENv
bnRyb2xsZXIodGVzdENvbnRyb2xsZXIpIHsgfQorICAgIEV2ZW50U2VuZGVyUHJveHkoVGVzdENv
bnRyb2xsZXIqIHRlc3RDb250cm9sbGVyKQorICAgICAgICA6IG1fdGVzdENvbnRyb2xsZXIodGVz
dENvbnRyb2xsZXIpCisgICAgICAgICwgbV90aW1lKDApCisgICAgICAgICwgbV9wb3NpdGlvbigp
CisgICAgICAgICwgbV9sZWZ0TW91c2VCdXR0b25Eb3duKGZhbHNlKQorICAgICAgICAsIG1fY2xp
Y2tDb3VudCgwKQorICAgICAgICAsIG1fY2xpY2tUaW1lKDApCisgICAgICAgICwgbV9jbGlja1Bv
c2l0aW9uKCkKKyAgICAgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1
dHRvbikKKyAgICAgICAgLCBldmVudE51bWJlcigwKQorICAgIHsKKyAgICB9CiAKLSAgICB2b2lk
IGtleURvd24oV0tTdHJpbmdSZWYga2V5LCBXS0V2ZW50TW9kaWZpZXJzLCB1bnNpZ25lZCBsb2Nh
dGlvbiwgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgdm9pZCBtb3VzZURvd24odW5zaWduZWQgYnV0
dG9uLCBXS0V2ZW50TW9kaWZpZXJzKTsKKyAgICB2b2lkIG1vdXNlVXAodW5zaWduZWQgYnV0dG9u
LCBXS0V2ZW50TW9kaWZpZXJzKTsKKyAgICB2b2lkIG1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3Vi
bGUgeSk7CisgICAgdm9pZCBsZWFwRm9yd2FyZChpbnQgbWlsbGlzZWNvbmRzKSB7IG1fdGltZSAr
PSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7IH0KKworICAgIHZvaWQga2V5RG93bihXS1N0cmluZ1Jl
ZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxvY2F0aW9uKTsKIAogcHJpdmF0ZToK
ICAgICBUZXN0Q29udHJvbGxlciogbV90ZXN0Q29udHJvbGxlcjsKKworICAgIGRvdWJsZSBjdXJy
ZW50RXZlbnRUaW1lKCkgeyByZXR1cm4gbV90aW1lOyB9CisgICAgdm9pZCB1cGRhdGVDbGlja0Nv
dW50Rm9yQnV0dG9uKGludCBidXR0b24pOworCisgICAgZG91YmxlIG1fdGltZTsKKyAgICBXS1Bv
aW50IG1fcG9zaXRpb247CisgICAgYm9vbCBtX2xlZnRNb3VzZUJ1dHRvbkRvd247CisgICAgaW50
IG1fY2xpY2tDb3VudDsKKyAgICBkb3VibGUgbV9jbGlja1RpbWU7CisgICAgV0tQb2ludCBtX2Ns
aWNrUG9zaXRpb247CisgICAgV0tFdmVudE1vdXNlQnV0dG9uIG1fY2xpY2tCdXR0b247CisgICAg
aW50IGV2ZW50TnVtYmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gOTU2MzApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0UHJpdmF0ZS5oPgog
I2luY2x1ZGUgPFdlYktpdDIvV0tOdW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdy
b3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDxjc3RkaW8+CkBAIC01MzUsMTMgKzUzNiw1MiBAQCBXS1JldGFpblB0
cjxXS1R5cGVSZWY+IFRlc3RDb250cm9sbGVyOjpkCiAgICAgICAgICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbG9jYXRpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJMb2NhdGlvbiIpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvY2F0aW9uID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBsb2Nh
dGlvbktleS5nZXQoKSkpKSk7CiAKLSAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiB0aW1lc3RhbXBLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJU
aW1lc3RhbXAiKSk7Ci0gICAgICAgICAgICBkb3VibGUgdGltZXN0YW1wID0gV0tEb3VibGVHZXRW
YWx1ZShzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleSht
ZXNzYWdlQm9keURpY3Rpb25hcnksIHRpbWVzdGFtcEtleS5nZXQoKSkpKTsKKyAgICAgICAgICAg
IC8vIEZvcndhcmQgdG8gV2ViUHJvY2VzcworICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2Vu
ZEV2ZW50c1N5bmNocm9ub3VzbHkobWFpbldlYlZpZXcoKS0+cGFnZSgpLCB0cnVlKTsKKyAgICAg
ICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+a2V5RG93bihrZXksIG1vZGlmaWVycywgbG9jYXRp
b24pOworICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHko
bWFpbldlYlZpZXcoKS0+cGFnZSgpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiTW91c2VEb3duIikgfHwgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhz
dWJNZXNzYWdlTmFtZSwgIk1vdXNlVXAiKSkgeworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IGJ1dHRvbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkJ1dHRvbiIpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ1dHRvbiA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgYnV0dG9uS2V5Lmdl
dCgpKSkpKTsKKworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1vZGlmaWVy
c0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vZGlmaWVycyIp
KTsKKyAgICAgICAgICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzID0gc3RhdGljX2Nhc3Q8
V0tFdmVudE1vZGlmaWVycz4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIG1vZGlm
aWVyc0tleS5nZXQoKSkpKSk7CisKKyAgICAgICAgICAgIC8vIEZvcndhcmQgdG8gV2ViUHJvY2Vz
cworICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkobWFp
bldlYlZpZXcoKS0+cGFnZSgpLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VEb3duIikpCisgICAgICAgICAg
ICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZURvd24oYnV0dG9uLCBtb2RpZmllcnMpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bW91
c2VVcChidXR0b24sIG1vZGlmaWVycyk7CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5k
RXZlbnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIGZhbHNlKTsKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZU1vdmVUbyIpKSB7CisgICAgICAg
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4geEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlgiKSk7CisgICAgICAgICAgICBkb3VibGUgeCA9IFdLRG91Ymxl
R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB4S2V5LmdldCgpKSkpOworCisgICAgICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4geUtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlkiKSk7CisgICAgICAgICAgICBkb3VibGUgeSA9IFdLRG91YmxlR2V0VmFs
dWUoc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCB5S2V5LmdldCgpKSkpOwogCiAgICAgICAgICAgICAvLyBGb3J3
YXJkIHRvIFdlYlByb2Nlc3MKLSAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+a2V5RG93
bihrZXksIG1vZGlmaWVycywgbG9jYXRpb24sIHRpbWVzdGFtcCk7CisgICAgICAgICAgICBXS1Bh
Z2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCks
IHRydWUpOworICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5tb3VzZU1vdmVUbyh4LCB5
KTsKKyAgICAgICAgICAgIFdLUGFnZVNldFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KG1h
aW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNz
YWdlTmFtZSwgIkxlYXBGb3J3YXJkIikpIHsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiB0aW1lS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
VGltZUluTWlsbGlzZWNvbmRzIikpOworICAgICAgICAgICAgdW5zaWduZWQgdGltZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVm
PihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdGltZUtl
eS5nZXQoKSkpKSk7CisKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXJQcm94eS0+bGVhcEZvcndh
cmQodGltZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICNlbmRpZgpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5NTYzMCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDEwICs0MSwxMiBAQCBuYW1lc3BhY2UgV1RSIHsKIAogc3RhdGljIGNvbnN0IGZs
b2F0IFpvb21NdWx0aXBsaWVyUmF0aW8gPSAxLjJmOwogCisjaWZkZWYgVVNFX1dFQlBST0NFU1Nf
RVZFTlRfU0lNVUxBVElPTgogc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXS1BvaW50JiBh
LCBjb25zdCBXS1BvaW50JiBiKQogewogICAgIHJldHVybiBhLnggPT0gYi54ICYmIGEueSA9PSBi
Lnk7CiB9CisjZW5kaWYKIAogc3RhdGljIFdLRXZlbnRNb2RpZmllcnMgcGFyc2VNb2RpZmllcihK
U1N0cmluZ1JlZiBtb2RpZmllcikKIHsKQEAgLTk2LDEyICs5OCwxNCBAQCBQYXNzUmVmUHRyPEV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI+IEV2ZW50CiB9CiAKIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6
OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXIoKQorI2lmZGVmIFVTRV9XRUJQUk9DRVNTX0VWRU5UX1NJ
TVVMQVRJT04KICAgICA6IG1fdGltZSgwKQogICAgICwgbV9wb3NpdGlvbigpCiAgICAgLCBtX2Ns
aWNrQ291bnQoMCkKICAgICAsIG1fY2xpY2tUaW1lKDApCiAgICAgLCBtX2NsaWNrUG9zaXRpb24o
KQogICAgICwgbV9jbGlja0J1dHRvbihrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b24pCisjZW5k
aWYKIHsKIH0KIApAQCAtMTIwLDggKzEyNCwyOCBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6Om1vdXNlRG93bihpCiAgICAgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSA9IFdLQnVuZGxlUGFn
ZUdldE1haW5GcmFtZShwYWdlKTsKICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxl
RnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChmcmFtZSk7CiAgICAgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMgPSBwYXJzZU1vZGlmaWVyQXJyYXkoY29udGV4dCwgbW9kaWZpZXJBcnJheSk7CisK
KyNpZmRlZiBVU0VfV0VCUFJPQ0VTU19FVkVOVF9TSU1VTEFUSU9OCiAgICAgdXBkYXRlQ2xpY2tD
b3VudChidXR0b24pOwogICAgIFdLQnVuZGxlUGFnZVNpbXVsYXRlTW91c2VEb3duKHBhZ2UsIGJ1
dHRvbiwgbV9wb3NpdGlvbiwgbV9jbGlja0NvdW50LCBtb2RpZmllcnMsIG1fdGltZSk7CisjZWxz
ZQorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFk
b3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VC
b2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gc3ViTWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
Ik1vdXNlRG93biIpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkuZ2V0KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsK
KworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tV
SW50NjRSZWY+IGJ1dHRvblJlZiA9IFdLVUludDY0Q3JlYXRlKGJ1dHRvbik7CisgICAgV0tEaWN0
aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBidXR0b25LZXkuZ2V0
KCksIGJ1dHRvblJlZi5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbW9k
aWZpZXJzS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9kaWZp
ZXJzIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBtb2RpZmllcnNSZWYgPSBXS1VJ
bnQ2NENyZWF0ZShtb2RpZmllcnMpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5k
ZXJNZXNzYWdlQm9keS5nZXQoKSwgbW9kaWZpZXJzS2V5LmdldCgpLCBtb2RpZmllcnNSZWYuZ2V0
KCkpOworCisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRT
ZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CisjZW5kaWYKIH0KIAogdm9pZCBFdmVudFNlbmRp
bmdDb250cm9sbGVyOjptb3VzZVVwKGludCBidXR0b24sIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJh
eSkKQEAgLTEzMCwyMiArMTU0LDc4IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91
c2VVcChpbnQKICAgICBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFp
bkZyYW1lKHBhZ2UpOwogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdl
dEphdmFTY3JpcHRDb250ZXh0KGZyYW1lKTsKICAgICBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVy
cyA9IHBhcnNlTW9kaWZpZXJBcnJheShjb250ZXh0LCBtb2RpZmllckFycmF5KTsKKworI2lmZGVm
IFVTRV9XRUJQUk9DRVNTX0VWRU5UX1NJTVVMQVRJT04KICAgICB1cGRhdGVDbGlja0NvdW50KGJ1
dHRvbik7CiAgICAgV0tCdW5kbGVQYWdlU2ltdWxhdGVNb3VzZVVwKHBhZ2UsIGJ1dHRvbiwgbV9w
b3NpdGlvbiwgbV9jbGlja0NvdW50LCBtb2RpZmllcnMsIG1fdGltZSk7CisjZWxzZQorICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFp
blB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0
V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vdXNlVXAi
KSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgp
LCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gYnV0dG9uS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiQnV0dG9uIikpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBi
dXR0b25SZWYgPSBXS1VJbnQ2NENyZWF0ZShidXR0b24pOworICAgIFdLRGljdGlvbmFyeUFkZEl0
ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgYnV0dG9uS2V5LmdldCgpLCBidXR0b25S
ZWYuZ2V0KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1vZGlmaWVyc0tleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vZGlmaWVycyIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gbW9kaWZpZXJzUmVmID0gV0tVSW50NjRDcmVhdGUo
bW9kaWZpZXJzKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJv
ZHkuZ2V0KCksIG1vZGlmaWVyc0tleS5nZXQoKSwgbW9kaWZpZXJzUmVmLmdldCgpKTsKKworICAg
IFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
YnVuZGxlKCksIEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkuZ2V0KCksIDApOworI2VuZGlmCiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6bW91c2VNb3ZlVG8oaW50IHgsIGludCB5KQogeworI2lmZGVmIFVTRV9XRUJQUk9DRVNTX0VW
RU5UX1NJTVVMQVRJT04KICAgICBtX3Bvc2l0aW9uLnggPSB4OwogICAgIG1fcG9zaXRpb24ueSA9
IHk7CiAgICAgV0tCdW5kbGVQYWdlU2ltdWxhdGVNb3VzZU1vdGlvbihJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIG1fcG9zaXRpb24sIG1fdGltZSk7CisjZWxzZQorICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFk
b3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3Vi
TWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1vdXNl
TW92ZVRvIikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9k
eS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHhLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJYIikpOworICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiB4UmVm
ID0gV0tEb3VibGVDcmVhdGUoeCk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRl
ck1lc3NhZ2VCb2R5LmdldCgpLCB4S2V5LmdldCgpLCB4UmVmLmdldCgpKTsKKworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiWSIpKTsKKyAgICBXS1JldGFpblB0cjxXS0RvdWJsZVJlZj4geVJlZiA9IFdLRG91
YmxlQ3JlYXRlKHkpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keS5nZXQoKSwgeUtleS5nZXQoKSwgeVJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RT
eW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVu
dFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAw
KTsKKyNlbmRpZgogfQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmxlYXBGb3J3YXJk
KGludCBtaWxsaXNlY29uZHMpCiB7CisjaWZkZWYgVVNFX1dFQlBST0NFU1NfRVZFTlRfU0lNVUxB
VElPTgogICAgIG1fdGltZSArPSBtaWxsaXNlY29uZHMgLyAxMDAwLjA7CisjZWxzZQorICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsKKyAgICBXS1JldGFp
blB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3NhZ2VCb2R5KEFkb3B0
V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gc3ViTWVzc2FnZUtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiU3ViTWVzc2FnZSIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3ViTWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkxlYXBGb3J3
YXJkIikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5n
ZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkpOworCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRpbWVLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJUaW1lSW5NaWxsaXNlY29uZHMiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tVSW50NjRSZWY+IHRpbWVSZWYgPSBXS1VJbnQ2NENyZWF0ZShtaWxsaXNlY29uZHMpOworICAg
IFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgdGltZUtl
eS5nZXQoKSwgdGltZVJlZi5nZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3Nh
Z2VOYW1lLmdldCgpLCBFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyNlbmRpZgog
fQogCisKKyNpZmRlZiBVU0VfV0VCUFJPQ0VTU19FVkVOVF9TSU1VTEFUSU9OCiB2b2lkIEV2ZW50
U2VuZGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUNsaWNrQ291bnQoV0tFdmVudE1vdXNlQnV0dG9uIGJ1
dHRvbikKIHsKICAgICBpZiAobV90aW1lIC0gbV9jbGlja1RpbWUgPCAxICYmIG1fcG9zaXRpb24g
PT0gbV9jbGlja1Bvc2l0aW9uICYmIGJ1dHRvbiA9PSBtX2NsaWNrQnV0dG9uKSB7CkBAIC0xNTks
NiArMjM5LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjp1cGRhdGVDbGljawogICAg
IG1fY2xpY2tQb3NpdGlvbiA9IG1fcG9zaXRpb247CiAgICAgbV9jbGlja0J1dHRvbiA9IGJ1dHRv
bjsKIH0KKyNlbmRpZgogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnRleHRab29tSW4o
KQogewpAQCAtMjM0LDEwICszMTUsNiBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Omtl
eURvd24oSlNTCiAgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IGxvY2F0aW9uUmVmID0gV0tV
SW50NjRDcmVhdGUobG9jYXRpb24pOwogICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5k
ZXJNZXNzYWdlQm9keS5nZXQoKSwgbG9jYXRpb25LZXkuZ2V0KCksIGxvY2F0aW9uUmVmLmdldCgp
KTsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0aW1lc3RhbXBLZXkgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUaW1lc3RhbXAiKSk7Ci0gICAgV0tSZXRh
aW5QdHI8V0tEb3VibGVSZWY+IHRpbWVSZWYgPSBXS0RvdWJsZUNyZWF0ZShtX3RpbWUpOwotICAg
IFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgdGltZXN0
YW1wS2V5LmdldCgpLCB0aW1lUmVmLmdldCgpKTsKLQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVy
TWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOwogfQog
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuaAkocmV2aXNpb24gOTU2MzApCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDxXZWJLaXQy
L1dLR2VvbWV0cnkuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCisjaWYgIVBMQVRG
T1JNKE1BQykKKyNkZWZpbmUgVVNFX1dFQlBST0NFU1NfRVZFTlRfU0lNVUxBVElPTgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBFdmVudFNlbmRpbmdDb250cm9sbGVyIDogcHVi
bGljIEpTV3JhcHBhYmxlIHsKQEAgLTYwLDYgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBFdmVudFNlbmRpbmdDb250cm9sbGVyKCk7CiAKKyNpZmRlZiBVU0VfV0VCUFJPQ0VTU19FVkVO
VF9TSU1VTEFUSU9OCiAgICAgdm9pZCB1cGRhdGVDbGlja0NvdW50KFdLRXZlbnRNb3VzZUJ1dHRv
bik7CiAKICAgICBkb3VibGUgbV90aW1lOwpAQCAtNjksNiArNzQsNyBAQCBwcml2YXRlOgogICAg
IGRvdWJsZSBtX2NsaWNrVGltZTsKICAgICBXS1BvaW50IG1fY2xpY2tQb3NpdGlvbjsKICAgICBX
S0V2ZW50TW91c2VCdXR0b24gbV9jbGlja0J1dHRvbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RSCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2Vu
ZGVyUHJveHkubW0JKHJldmlzaW9uIDk1NjMwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvRXZlbnRTZW5kZXJQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDU5IEBA
CiAjaW1wb3J0ICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5o
IgogI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIuaCIKLSNpbXBvcnQgPFdlYktpdDIvV0tQYWdlUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XS1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RSIHsK
IAorZW51bSBNb3VzZUFjdGlvbiB7CisgICAgTW91c2VEb3duLAorICAgIE1vdXNlVXAsCisgICAg
TW91c2VEcmFnZ2VkCit9OworCisvLyBNYXRjaCB0aGUgRE9NIHNwZWMgKHNhZGx5IHRoZSBET00g
c3BlYyBkb2VzIG5vdCBwcm92aWRlIGFuIGVudW0pCitlbnVtIE1vdXNlQnV0dG9uIHsKKyAgICBM
ZWZ0TW91c2VCdXR0b24gPSAwLAorICAgIE1pZGRsZU1vdXNlQnV0dG9uID0gMSwKKyAgICBSaWdo
dE1vdXNlQnV0dG9uID0gMiwKKyAgICBOb01vdXNlQnV0dG9uID0gLTEKK307CisKK3N0YXRpYyBO
U0V2ZW50VHlwZSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihpbnQgYnV0dG9uLCBN
b3VzZUFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChidXR0b24pIHsKKyAgICAgICAgY2Fz
ZSBMZWZ0TW91c2VCdXR0b246CisgICAgICAgICAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgICAg
ICAgICAgICAgIGNhc2UgTW91c2VEb3duOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlNM
ZWZ0TW91c2VEb3duOworICAgICAgICAgICAgICAgIGNhc2UgTW91c2VVcDoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE5TTGVmdE1vdXNlVXA7CisgICAgICAgICAgICAgICAgY2FzZSBNb3Vz
ZURyYWdnZWQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOU0xlZnRNb3VzZURyYWdnZWQ7
CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgUmlnaHRNb3VzZUJ1dHRvbjoKKyAgICAgICAg
ICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY2FzZSBNb3VzZURvd246Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBOU1JpZ2h0TW91c2VEb3duOworICAgICAgICAgICAg
ICAgIGNhc2UgTW91c2VVcDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5TUmlnaHRNb3Vz
ZVVwOworICAgICAgICAgICAgICAgIGNhc2UgTW91c2VEcmFnZ2VkOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gTlNSaWdodE1vdXNlRHJhZ2dlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBNb3VzZURvd246CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOU090aGVyTW91c2VE
b3duOworICAgICAgICAgICAgICAgIGNhc2UgTW91c2VVcDoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE5TT3RoZXJNb3VzZVVwOworICAgICAgICAgICAgICAgIGNhc2UgTW91c2VEcmFnZ2Vk
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlNPdGhlck1vdXNlRHJhZ2dlZDsKKyAgICAg
ICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxO
U0V2ZW50VHlwZT4oMCk7Cit9CisKIHN0YXRpYyBpbnQgYnVpbGRNb2RpZmllckZsYWdzKFdLRXZl
bnRNb2RpZmllcnMgbW9kaWZpZXJzKQogewogICAgIGludCBmbGFncyA9IDA7CkBAIC00OSw5ICs5
Nyw5NSBAQCBzdGF0aWMgaW50IGJ1aWxkTW9kaWZpZXJGbGFncyhXS0V2ZW50TW9kCiAgICAgcmV0
dXJuIGZsYWdzOwogfQogCi12b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdS
ZWYga2V5UmVmLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5zaWduZWQgaW50IGtl
eUxvY2F0aW9uLCBkb3VibGUgdGltZXN0YW1wKQorc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBXS1BvaW50JiBhLCBjb25zdCBXS1BvaW50JiBiKQogewotICAgIE5TU3RyaW5nKiBjaGFyYWN0
ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6dG9TVEQoa2V5UmVmKS5jX3N0cigpIAor
ICAgIHJldHVybiBhLnggPT0gYi54ICYmIGEueSA9PSBiLnk7Cit9CisKK3ZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6dXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbihpbnQgYnV0dG9uKQoreworICAgIGlm
IChtX3RpbWUgLSBtX2NsaWNrVGltZSA8IDEgJiYgbV9wb3NpdGlvbiA9PSBtX2NsaWNrUG9zaXRp
b24gJiYgYnV0dG9uID09IG1fY2xpY2tCdXR0b24pIHsKKyAgICAgICAgKyttX2NsaWNrQ291bnQ7
CisgICAgICAgIG1fY2xpY2tUaW1lID0gbV90aW1lOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9jbGlja0NvdW50ID0gMTsKKyAgICBtX2NsaWNrVGltZSA9IG1fdGltZTsKKyAgICBt
X2NsaWNrUG9zaXRpb24gPSBtX3Bvc2l0aW9uOworICAgIG1fY2xpY2tCdXR0b24gPSBidXR0b247
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbk51
bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMpCit7CisgICAgdXBkYXRlQ2xpY2tDb3Vu
dEZvckJ1dHRvbihidXR0b25OdW1iZXIpOworCisgICAgTlNFdmVudFR5cGUgZXZlbnRUeXBlID0g
ZXZlbnRUeXBlRm9yTW91c2VCdXR0b25BbmRBY3Rpb24oYnV0dG9uTnVtYmVyLCBNb3VzZURvd24p
OworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmV2ZW50
VHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5T
TWFrZVBvaW50KG1fcG9zaXRpb24ueCwgbV9wb3NpdGlvbi55KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmll
cnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6Y3Vy
cmVudEV2ZW50VGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5k
b3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93
KCkgd2luZG93TnVtYmVyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnROdW1iZXI6KytldmVudE51bWJlciAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tDb3VudDptX2NsaWNrQ291
bnQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3N1cmU6MC4w
XTsKKworICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2Vi
VmlldygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07
CisgICAgaWYgKHRhcmdldFZpZXcpIHsKKyAgICAgICAgW3RhcmdldFZpZXcgbW91c2VEb3duOmV2
ZW50XTsKKyAgICAgICAgaWYgKGJ1dHRvbk51bWJlciA9PSBMZWZ0TW91c2VCdXR0b24pCisgICAg
ICAgICAgICBtX2xlZnRNb3VzZUJ1dHRvbkRvd24gPSB0cnVlOworICAgIH0KK30KKwordm9pZCBF
dmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnMpCit7CisgICAgTlNFdmVudFR5cGUgZXZlbnRUeXBlID0gZXZlbnRU
eXBlRm9yTW91c2VCdXR0b25BbmRBY3Rpb24oYnV0dG9uTnVtYmVyLCBNb3VzZVVwKTsKKyAgICBO
U0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IG1vdXNlRXZlbnRXaXRoVHlwZTpldmVudFR5cGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2lu
dChtX3Bvc2l0aW9uLngsIG1fcG9zaXRpb24ueSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kaWZpZXJGbGFnczpidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmN1cnJlbnRFdmVu
dFRpbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVy
OlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRv
d051bWJlcl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV2ZW50TnVtYmVyOisrZXZlbnROdW1iZXIgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrQ291bnQ6bV9jbGlja0NvdW50IAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNzdXJlOjAuMF07CisKKyAg
ICBOU1ZpZXcgKnRhcmdldFZpZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOworICAgIHRh
cmdldFZpZXcgPSB0YXJnZXRWaWV3ID8gdGFyZ2V0VmlldyA6IG1fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIGFzc2VydCh0YXJnZXRWaWV3KTsKKyAg
ICBbdGFyZ2V0VmlldyBtb3VzZURvd246ZXZlbnRdOworICAgIGlmIChidXR0b25OdW1iZXIgPT0g
TGVmdE1vdXNlQnV0dG9uKQorICAgICAgICBtX2xlZnRNb3VzZUJ1dHRvbkRvd24gPSBmYWxzZTsK
KyAgICBtX2NsaWNrVGltZSA9IFtldmVudCB0aW1lc3RhbXBdOworICAgIG1fY2xpY2tQb3NpdGlv
biA9IG1fcG9zaXRpb247Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8o
ZG91YmxlIHgsIGRvdWJsZSB5KQoreworICAgIE5TVmlldyAqdmlldyA9IG1fdGVzdENvbnRyb2xs
ZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIE5TUG9pbnQgcG9zaXRpb24g
PSBbdmlldyBjb252ZXJ0UG9pbnQ6TlNNYWtlUG9pbnQoeCwgeSkgdG9WaWV3Om5pbF07CisgICAg
bV9wb3NpdGlvbi54ID0gcG9zaXRpb24ueDsKKyAgICBtX3Bvc2l0aW9uLnkgPSBwb3NpdGlvbi55
OworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOihtX2xl
ZnRNb3VzZUJ1dHRvbkRvd24gPyBOU0xlZnRNb3VzZURyYWdnZWQgOiBOU01vdXNlTW92ZWQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246cG9zaXRpb24K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJGbGFnczowIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmN1cnJlbnRFdmVu
dFRpbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVtYmVy
OltbdmlldyB3aW5kb3ddIHdpbmRvd051bWJlcl0gCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0
XSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE51bWJlcjorK2V2
ZW50TnVtYmVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja0Nv
dW50OihtX2xlZnRNb3VzZUJ1dHRvbkRvd24gPyBtX2NsaWNrQ291bnQgOiAwKSAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZTowLjBdOworCisgICAgTlNW
aWV3ICp0YXJnZXRWaWV3ID0gW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRm
b3JtVmlldygpIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKKyAgICBpZiAodGFy
Z2V0VmlldykKKyAgICAgICAgW3RhcmdldFZpZXcgbW91c2VNb3ZlZDpldmVudF07Cit9CisKK3Zv
aWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2Rp
ZmllcnMgbW9kaWZpZXJzLCB1bnNpZ25lZCBrZXlMb2NhdGlvbikKK3sKKyAgICBOU1N0cmluZyog
Y2hhcmFjdGVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOnRvU1REKGtleSkuY19zdHIo
KSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6W05TU3RyaW5n
IGRlZmF1bHRDU3RyaW5nRW5jb2RpbmddXTsKIAogICAgIE5TU3RyaW5nICpldmVudENoYXJhY3Rl
ciA9IGNoYXJhY3RlcjsKQEAgLTE3MCwxOSArMzA0LDE3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94
eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICAgICAgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
ID0gW2NoYXJhY3RlciBsb3dlcmNhc2VTdHJpbmddOwogICAgIH0KIAotICAgIG1vZGlmaWVyRmxh
Z3MgfD0gYnVpbGRNb2RpZmllckZsYWdzKG1vZGlmaWVyc1JlZik7CisgICAgbW9kaWZpZXJGbGFn
cyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzKTsKIAogICAgIGlmIChrZXlMb2NhdGlv
biA9PSAweDAzIC8qRE9NX0tFWV9MT0NBVElPTl9OVU1QQUQqLykKICAgICAgICAgbW9kaWZpZXJG
bGFncyB8PSBOU051bWVyaWNQYWRLZXlNYXNrOwogCiAgICAgLy8gRklYTUU6IFtbW21haW5GcmFt
ZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gbGF5b3V0XTsKIAotICAgIFdLUGFnZVNldFNob3Vs
ZFNlbmRLZXlib2FyZEV2ZW50U3luY2hyb25vdXNseShbbV90ZXN0Q29udHJvbGxlci0+bWFpbldl
YlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgcGFnZVJlZl0sIHRydWUpOwotCiAgICAgTlNFdmVudCAq
ZXZlbnQgPSBbTlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TS2V5RG93bgogICAgICAgICAgICAg
ICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncwotICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZXN0YW1wOnRpbWVzdGFtcC8vW3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpjdXJyZW50RXZlbnRUaW1lKCkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXco
KS0+cGxhdGZvcm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKQEAgLTE5NSw3ICszMjcsNyBA
QCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgZXZlbnQgPSBb
TlNFdmVudCBrZXlFdmVudFdpdGhUeXBlOk5TS2V5VXAKICAgICAgICAgICAgICAgICAgICAgICAg
IGxvY2F0aW9uOk5TTWFrZVBvaW50KDUsIDUpCiAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rp
ZmllckZsYWdzOm1vZGlmaWVyRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFt
cDp0aW1lc3RhbXAvL1tzZWxmIGN1cnJlbnRFdmVudFRpbWVdCisgICAgICAgICAgICAgICAgICAg
ICAgICB0aW1lc3RhbXA6Y3VycmVudEV2ZW50VGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICB3aW5kb3dOdW1iZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
V2luZG93KCkgd2luZG93TnVtYmVyXQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpb
TlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyYWN0ZXJzOmV2ZW50Q2hhcmFjdGVyCkBAIC0yMDQsOCArMzM2LDYgQEAgdm9pZCBFdmVu
dFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgICAgICAgICAgICAgICAgICAgICAg
a2V5Q29kZTprZXlDb2RlXTsKIAogICAgIFtbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXco
KS0+cGxhdGZvcm1XaW5kb3coKSBmaXJzdFJlc3BvbmRlcl0ga2V5VXA6ZXZlbnRdOwotCi0gICAg
V0tQYWdlU2V0U2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91c2x5KFttX3Rlc3RDb250
cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBwYWdlUmVmXSwgZmFsc2UpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQv
RXZlbnRTZW5kZXJQcm94eVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAJKHJldmlzaW9uIDk1NjMwKQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9xdC9FdmVudFNlbmRlclByb3h5UXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVk
ZSAiVGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxRS2V5RXZlbnQ+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlUHJpdmF0ZS5o
PgogI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdRdC5oPgogCkBAIC01NywxMCArNTgsOCBAQCBR
dDo6S2V5Ym9hcmRNb2RpZmllcnMgZ2V0TW9kaWZpZXJzKFdLRXZlCiAgICAgcmV0dXJuIG1vZGlm
aWVyczsKIH0KIAotdm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtl
eVJlZiwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnNSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCBk
b3VibGUgdGltZXN0YW1wKQordm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5n
UmVmIGtleVJlZiwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnNSZWYsIHVuc2lnbmVkIGxvY2F0
aW9uKQogewotICAgIFdLUGFnZVNldFNob3VsZFNlbmRLZXlib2FyZEV2ZW50U3luY2hyb25vdXNs
eShtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wYWdlKCksIHRydWUpOwotCiAgICAg
Y29uc3QgUVN0cmluZyBrZXkgPSBXS1N0cmluZ0NvcHlRU3RyaW5nKGtleVJlZik7CiAgICAgUVN0
cmluZyBrZXlUZXh0ID0ga2V5OwogCkBAIC0xOTAsOCArMTg5LDIxIEBAIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICBtX3Rlc3RDb250cm9sbGVyLT5tYWluV2Vi
VmlldygpLT5zZW5kRXZlbnQoJmV2ZW50KTsKICAgICBRS2V5RXZlbnQgZXZlbnQyKFFFdmVudDo6
S2V5UmVsZWFzZSwgY29kZSwgbW9kaWZpZXJzLCBrZXlUZXh0KTsKICAgICBtX3Rlc3RDb250cm9s
bGVyLT5tYWluV2ViVmlldygpLT5zZW5kRXZlbnQoJmV2ZW50Mik7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkLCBXS0V2ZW50TW9kaWZpZXJzKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CiAKLSAgICBXS1BhZ2VTZXRTaG91bGRTZW5kS2V5Ym9hcmRF
dmVudFN5bmNocm9ub3VzbHkobV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGFnZSgp
LCBmYWxzZSk7Cit2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQsIFdLRXZl
bnRNb2RpZmllcnMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUsIGRvdWJsZSkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NjMy
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDktMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBb
V0syXSBbTWFjXSBJbXBsZW1lbnQgYSBtb3JlLWNvbXBsZXRlIE1vdXNlRG93bi9Nb3VzZVVwL01v
dXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3IgV2ViS2l0MiBFdmVudFNlbmRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgxMDgKKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgdGhlIGV2ZW50IHNlbmRlciBtb3VzZSBldmVudHMgdGhyb3VnaCBX
ZWJLaXQyIFVJUHJvY2VzcyB3aGljaCBpcworICAgICAgICBjbG9zZXIgdG8gdGhlIHJlYWwgc2lt
dWxhdGlvbiB0aGFuIGEgV2ViUHJvY2Vzcy1vbmx5IGFwcHJvYWNoLiBUaGUgcGF0Y2ggb25seSBz
dXBwb3J0cyBNYWMKKyAgICAgICAgcGxhdGZvcm0gYXMgdGhlIGZpcnN0IHN0ZXAgc28gdGhlIGV4
aXN0aW5nIGNvZGUgaXMgc3RpbGwga2VwdCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAg
IFVuc2tpcCB0aGUgcGFzc2VkIHRlc3RzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorICAgICAgICAq
IHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorCiAyMDExLTA5LTIxICBQaGlsaXBwZSBOb3JtYW5kICA8
cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBza2lwIGZsYWt5IG1l
ZGlhIHRlc3Qgb24gR1RLLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lw
cGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAko
cmV2aXNpb24gOTU2MzApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDEzICs0MCw2IEBACiAKICMgV2ViS2l0VGVzdFJ1bm5lciBu
ZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBldmVudFNlbmRlcgogIyA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTk0PgotZWRpdGluZy9kZWxldGluZy9kZWxldGUt
bGlnYXR1cmUtMDAzLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMS5odG1s
Ci1lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDIuaHRtbAotZWRpdGluZy9kZWxldGlu
Zy9zbWFydC1kZWxldGUtMDAzLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAw
NC5odG1sCi1lZGl0aW5nL2V4ZWNDb21tYW5kL2ZpbmRTdHJpbmctMi5odG1sCi1lZGl0aW5nL3Bh
c3RlYm9hcmQvNDk0NDc3MC0yLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC80OTQ3MTMwLmh0bWwK
IGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1hZ2UtY3Jhc2guaHRtbAogZWRp
dGluZy9wYXN0ZWJvYXJkL2RyYWctYW5kLWRyb3AtaW1hZ2UtY29udGVudGVkaXRhYmxlLmh0bWwK
QEAgLTY2LDE5ICs1OSwxMiBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC1saW5rLmh0bWwKIGVk
aXRpbmcvcGFzdGVib2FyZC9kcm9wLXRleHQtZXZlbnRzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kcm9wLXRleHQtd2l0aG91dC1zZWxlY3Rpb24uaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2Vt
YWNzLWNudGwteS0wMDEuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWN0cmwtYS1rLXku
aHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2VtYWNzLWN0cmwtay15LTAwMS5odG1sCiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nlc3MuaHRtbAogZWRpdGluZy9wYXN0ZWJv
YXJkL2ZpbGVzLWR1cmluZy1wYWdlLWRyYWdzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9nZXQt
ZGF0YS10ZXh0LXBsYWluLWRyb3AuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LWRyYWct
ZHJvcC5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDAxLmh0bWwKLWVkaXRp
bmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDIuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL3Nt
YXJ0LXBhc3RlLTAwMy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDA0Lmh0
bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDUuaHRtbAotZWRpdGluZy9wYXN0
ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwNy5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFz
dGUtMDA4Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9zdWJmcmFtZS1kcmFnbmRyb3AtMS5odG1s
CiBlZGl0aW5nL3NlbGVjdGlvbi8xNDk3MS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi80ODk1NDI4
LTEuaHRtbApAQCAtOTEsMTMgKzc3LDExIEBAIGVkaXRpbmcvc2VsZWN0aW9uLzUzNTQ0NTUtMi5o
dG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hbmNob3ItZm9jdXMyLmh0bWwKIGVkaXRpbmcvc2VsZWN0
aW9uL2FuY2hvci1mb2N1czMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vYnV0dG9uLXJpZ2h0LWNs
aWNrLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLWZvY3VzYWJsZS1saW5rLXNob3Vs
ZC1ub3QtY2xlYXItc2VsZWN0aW9uLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1h
cmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1p
bi1wYWRkaW5nLXdpdGgtbXVsdGlwbGUtbGluZS1ib3hlcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlv
bi9jb250YWlucy1ib3VuZGFyaWVzLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRleHQtbWVu
dS1vbi10ZXh0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWJlc2lkZS1jci1z
cGFuLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLWNyYXNoLmh0bWwKIGVkaXRp
bmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtY3Jhc2guaHRtbAogZWRpdGluZy9z
ZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1pbWctY3Jhc2guaHRtbAogZWRpdGluZy9z
ZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sCkBAIC0xMDYsMTEgKzkwLDggQEAg
ZWRpdGluZy9zZWxlY3Rpb24vZHJhZy1zZWxlY3QtcmFwaWRseS5odAogZWRpdGluZy9zZWxlY3Rp
b24vZHJhZy1zdGFydC1ldmVudC1jbGllbnQteC15Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Ry
YWctdG8tY29udGVudGVkaXRhYmxlLWlmcmFtZS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9lbXB0
eS1jZWxsLXJpZ2h0LWNsaWNrLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2V4cGFuZGluZy1zZWxl
Y3Rpb25zLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL2V4cGFuZGluZy1zZWxlY3Rpb25zMi5odG1s
CiBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYWZ0ZXItbW91c2Utc2VsZWN0aW9uLmh0bWwKIGVk
aXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tYWZ0ZXItZG91YmxlLWNsaWNrLmh0bWwK
LWVkaXRpbmcvc2VsZWN0aW9uL2Zha2UtZG91YmxlY2xpY2suaHRtbAogZWRpdGluZy9zZWxlY3Rp
b24vZmFrZS1kcmFnLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2lubGluZS1jbG9zZXN0LWxlYWYt
Y2hpbGQuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vbGFzdC1lbXB0eS1pbmxpbmUuaHRtbApAQCAt
MTI3LDE0ICsxMDgsMTEgQEAgZWRpdGluZy9zZWxlY3Rpb24vdXNlci1kcmFnLWVsZW1lbnQtYW5k
LQogZWRpdGluZy9zZWxlY3Rpb24vd29yZC1ncmFudWxhcml0eS5odG1sCiBlZGl0aW5nL3NwZWxs
aW5nL2NvbnRleHQtbWVudS1zdWdnZXN0aW9ucy5odG1sCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stcGFzdGUuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tZGVsZXRlV29yZC5odG1sCiBlZGl0
aW5nL3VuZG8vdW5kby1zbWFydC1kZWxldGUtcmV2ZXJzZWQtc2VsZWN0aW9uLmh0bWwKLWVkaXRp
bmcvdW5kby91bmRvLXNtYXJ0LWRlbGV0ZS13b3JkLmh0bWwKIGZhc3QvYmxvY2svcG9zaXRpb25p
bmcvaGl0dGVzdC1vbi1yZWxhdGl2ZS1wb3NpdGlvbmVkLWNoaWxkcmVuLmh0bWwKIGZhc3QvY3Nz
L3VzZXItZHJhZy1ub25lLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
Y2xvbmUtZnJhbWVzLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xv
bmUuaHRtbAotZmFzdC9kb20vaG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3Qv
ZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAogZmFzdC9keW5hbWljL2xheWVyLWhp
dC10ZXN0LWNyYXNoLmh0bWwKIGZhc3QvZW5jb2RpbmcvbWFpbHRvLWFsd2F5cy11dGYtOC5odG1s
CkBAIC0xNzcsMTQgKzE1NSwxMSBAQCBmYXN0L2V2ZW50cy9yZW1vdmUtY2hpbGQtb25zY3JvbGwu
aHRtbAogZmFzdC9ldmVudHMvcmlnaHQtY2xpY2stZm9jdXMuaHRtbAogZmFzdC9ldmVudHMvc2Ny
b2xsLWFmdGVyLWNsaWNrLW9uLXRhYi1pbmRleC5odG1sCiBmYXN0L2V2ZW50cy9zY3JvbGwtaW4t
c2NhbGVkLXBhZ2Utd2l0aC1vdmVyZmxvdy1oaWRkZW4uaHRtbAotZmFzdC9ldmVudHMvc2Nyb2xs
YmFyLWRvdWJsZS1jbGljay5odG1sCi1mYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1kb3VibGUt
dHJpcGxlLWNsaWNrcy5odG1sCiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFydC1ieS1kcmFnLmh0bWwK
IGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LXByZXZlbnQtc2VsZWN0aW9uLW9uLXJpZ2h0LWNsaWNr
Lmh0bWwKIGZhc3QvZXZlbnRzL3N0YW5kYWxvbmUtaW1hZ2UtZHJhZy10by1lZGl0YWJsZS5odG1s
CiBmYXN0L2V2ZW50cy93aGVlbGV2ZW50LWluLWhvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5o
dG1sCiBmYXN0L2V2ZW50cy93aGVlbGV2ZW50LWluLXZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwu
aHRtbAotZmFzdC9ldmVudHMvem9vbS1kYmxjbGljay5odG1sCiBmYXN0L2ZpbGVzL2FwcGx5LWJs
b2ItdXJsLXRvLXhoci5odG1sCiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWFib3J0Lmh0bWwKIGZh
c3QvZmlsZXMvcmVhZC1ibG9iLWFzeW5jLmh0bWwKQEAgLTE5NCwxNCArMTY5LDkgQEAgZmFzdC9m
b3Jtcy9kcmFnLW91dC1vZi10ZXh0YXJlYS5odG1sCiBmYXN0L2Zvcm1zL2dldC1maWxlLXVwbG9h
ZC5odG1sCiBmYXN0L2Zvcm1zL2lucHV0LWZpbGUtcmUtcmVuZGVyLmh0bWwKIGZhc3QvZm9ybXMv
aW5wdXQtcmVhZG9ubHktYXV0b3Njcm9sbC5odG1sCi1mYXN0L2Zvcm1zL2lucHV0LXRleHQtZG91
YmxlLWNsaWNrLmh0bWwKIGZhc3QvZm9ybXMvaW5wdXQtdGV4dC1kcmFnLWRvd24uaHRtbAogZmFz
dC9mb3Jtcy9saXN0Ym94LXR5cGVhaGVhZC1jeXJpbGxpYy5odG1sCiBmYXN0L2Zvcm1zL2xpc3Ri
b3gtdHlwZWFoZWFkLWdyZWVrLmh0bWwKLWZhc3QvZm9ybXMvb25zZWxlY3QtdGV4dGFyZWEuaHRt
bAotZmFzdC9mb3Jtcy9vbnNlbGVjdC10ZXh0ZmllbGQuaHRtbAotZmFzdC9mb3Jtcy9vcHRpb24t
bW91c2VldmVudHMuaHRtbAotZmFzdC9mb3Jtcy9yYW5nZS9zbGlkZXItZGVsZXRlLXdoaWxlLWRy
YWdnaW5nLXRodW1iLmh0bWwKIGZhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLW1vdXNlLWV2ZW50cy5o
dG1sCiBmYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1vbmNoYW5nZS1ldmVudC5odG1sCiBmYXN0L2Zv
cm1zL3NlbGVjdC10eXBlLWFoZWFkLW5vbi1sYXRpbi5odG1sCkBAIC0yMTEsMTUgKzE4MSw2IEBA
IGZhc3QvbG9hZGVyL3BvbGljeS1kZWxlZ2F0ZS1hY3Rpb24taGl0LXQKIGZhc3QvcmVwYWludC9q
YXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC5odG1sCiBmYXN0L3JlcGFpbnQvcmVwYWludC1h
Y3Jvc3Mtd3JpdGluZy1tb2RlLWJvdW5kYXJ5Lmh0bWwKIGZhc3QvcmVwYWludC9zZWxlY3Rpb24t
cmwuaHRtbAotZmFzdC90ZXh0L2F0c3VpLXJ0bC1vdmVycmlkZS1zZWxlY3Rpb24uaHRtbAotZmFz
dC90ZXh0L2ludGVybmF0aW9uYWwva2htZXItc2VsZWN0aW9uLmh0bWwKLWZhc3QvdGV4dC9vZmZz
ZXRGb3JQb3NpdGlvbi1jb21wbGV4LWZhbGxiYWNrLmh0bWwKLWZhc3QvdGV4dC9yZXNldC1kcmFn
LW9uLW1vdXNlLWRvd24uaHRtbAotZmFzdC93cml0aW5nLW1vZGUvaG9yaXpvbnRhbC1idC1yZXBs
YWNlZC1zZWxlY3Rpb24uaHRtbAotZmFzdC93cml0aW5nLW1vZGUvamFwYW5lc2UtbHItc2VsZWN0
aW9uLmh0bWwKLWZhc3Qvd3JpdGluZy1tb2RlL2phcGFuZXNlLXJsLXNlbGVjdGlvbi5odG1sCi1m
YXN0L3dyaXRpbmctbW9kZS92ZXJ0aWNhbC1sci1yZXBsYWNlZC1zZWxlY3Rpb24uaHRtbAotZmFz
dC93cml0aW5nLW1vZGUvdmVydGljYWwtcmwtcmVwbGFjZWQtc2VsZWN0aW9uLmh0bWwKIGh0dHAv
dGVzdHMvbG9jYWwvYmxvYi9zZW5kLWh5YnJpZC1ibG9iLmh0bWwKIGh0dHAvdGVzdHMvbG9jYWwv
ZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50Lmh0bWwKIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9m
aWxlLWxhc3QtbW9kaWZpZWQuaHRtbApAQCAtMjM4LDE5ICsxOTksMTEgQEAgaHR0cC90ZXN0cy9z
ZWN1cml0eS9kcmFnLW92ZXItcmVtb3RlLWNvbgogbWVkaWEvY29udHJvbHMtcmlnaHQtY2xpY2st
b24tdGltZWJhci5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGFUcmFu
c2Zlci1zZXQtZGF0YS1maWxlLXVybC5odG1sCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RyYWctc2VsZWN0aW9ucy10by1jb250ZW50ZWRpdGFibGUuaHRtbAotcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXNob3VsZC1ub3QtZXhwYW5kLWFjcm9zcy1s
aW5lcy5odG1sCi1wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vd29yZC10aGFpLmh0bWwK
IHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2xpc3Rib3gtc2Nyb2xsYmFyLWhpdC10ZXN0Lmh0bWwK
LXBsYXRmb3JtL21hYy9mYXN0L292ZXJmbG93L292ZXJmbG93LXNjcm9sbGJhci1oaXQtdGVzdC5o
dG1sCiBwbHVnaW5zL2NsaWNraW5nLW1pc3NpbmctcGx1Z2luLWZpcmVzLWRlbGVnYXRlLmh0bWwK
IHNjcm9sbGJhcnMvc2Nyb2xsYmFyLWlmcmFtZS1jbGljay1kb2VzLW5vdC1ibHVyLWNvbnRlbnQu
aHRtbAogc2Nyb2xsYmFycy9zY3JvbGxldmVudC1pZnJhbWUtbm8tc2Nyb2xsaW5nLXdoZWVsLmh0
bWwKLQogc3ZnL2N1c3RvbS9mb3JlaWduT2JqZWN0LWNyYXNoLW9uLWhvdmVyLnhtbAotc3ZnL2N1
c3RvbS9tb3VzZS1tb3ZlLW9uLXN2Zy1jb250YWluZXItc3RhbmRhbG9uZS5zdmcKLXN2Zy9jdXN0
b20vbW91c2UtbW92ZS1vbi1zdmctY29udGFpbmVyLnhodG1sCi1zdmcvY3VzdG9tL21vdXNlLW1v
dmUtb24tc3ZnLXJvb3Qtc3RhbmRhbG9uZS5zdmcKLXN2Zy9jdXN0b20vbW91c2UtbW92ZS1vbi1z
dmctcm9vdC54aHRtbAogc3ZnL2N1c3RvbS91c2UtZXZlbnRzLWNyYXNoLnN2ZwogCiAjIyMgRU5E
IE9GICgxKSBDbGFzc2lmaWVkIGZhaWx1cmVzIHdpdGggYnVnIHJlcG9ydHMKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL3drMi9Ta2lwcGVkCShyZXZpc2lvbiA5NTYzMCkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC02NzMsMTEgKzY3MywxNSBAQCBwbHVn
aW5zL25ldHNjYXBlLXBsdWdpbi1zZXR3aW5kb3ctc2l6ZS0yCiAKICMgV2ViS2l0VGVzdFJ1bm5l
ciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRFZGl0aW5nQmVoYXZpb3IKICMgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjY4OT4KK2VkaXRpbmcvZGVsZXRp
bmcvZGVsZXRlLWxpZ2F0dXJlLTAwMy5odG1sCitlZGl0aW5nL2RlbGV0aW5nL3BhcmFncmFwaC1p
bi1wcmVzZXJ2ZU5ld2xpbmUuaHRtbAorZWRpdGluZy9kZWxldGluZy93aGl0ZXNwYWNlLXByZS0x
Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2FmdGVyLWxpbmUtYnJlYWsuaHRtbAogZWRpdGluZy9z
ZWxlY3Rpb24vcnRsLW1vdmUtc2VsZWN0aW9uLXJpZ2h0LWxlZnQuaHRtbAogZWRpdGluZy9zZWxl
Y3Rpb24vNTE5NTE2Ni0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2NvbnRleHQtbWVudS10ZXh0
LXNlbGVjdGlvbi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9kaXJlY3Rpb25hbGl0eS1hZnRlci11
bmRvLXJlcGxhY2UuaHRtbAorZWRpdGluZy9zZWxlY3Rpb24vcHJvZ3JhbW1hdGljLXNlbGVjdGlv
bi1vbi1tYWMtaXMtZGlyZWN0aW9ubGVzcy5odG1sCiBlZGl0aW5nL2V4ZWNDb21tYW5kL3F1ZXJ5
LWNvbW1hbmQtc3RhdGUuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9xdWVyeS10ZXh0LWFsaWdu
bWVudC5odG1sCiBlZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1jb21wb3VuZC1zdHlsZXMuaHRt
bApAQCAtNjg2LDkgKzY5MCw2IEBAIGVkaXRpbmcvc3R5bGUvaWZyYW1lLW9ubG9hZC1jcmFzaC11
bml4LmgKIGVkaXRpbmcvc3R5bGUvaWZyYW1lLW9ubG9hZC1jcmFzaC13aW4uaHRtbAogZmFzdC9l
dmVudHMvYmFja3NwYWNlLW5hdmlnYXRlcy1iYWNrLmh0bWwKIGZhc3QvZm9ybXMvc2VsZWN0aW9u
LWRpcmVjdGlvbi5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL3BhcmFncmFwaC1pbi1wcmVzZXJ2ZU5l
d2xpbmUuaHRtbAotZWRpdGluZy9kZWxldGluZy93aGl0ZXNwYWNlLXByZS0xLmh0bWwKLWVkaXRp
bmcvc2VsZWN0aW9uL3Byb2dyYW1tYXRpYy1zZWxlY3Rpb24tb24tbWFjLWlzLWRpcmVjdGlvbmxl
c3MuaHRtbAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2FkcwogIyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQyNjkxPgo=
</data>
<flag name="review"
          id="105064"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108197</attachid>
            <date>2011-09-21 11:51:18 -0700</date>
            <delta_ts>2011-09-21 12:23:44 -0700</delta_ts>
            <desc>patch 4: to land</desc>
            <filename>68108_4.patch</filename>
            <type>text/plain</type>
            <size>43335</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NjUzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDktMjEgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXSBbTWFjXSBJbXBsZW1lbnQgYSBt
b3JlLWNvbXBsZXRlIE1vdXNlRG93bi9Nb3VzZVVwL01vdXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3Ig
V2ViS2l0MiBFdmVudFNlbmRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgxMDgKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGV2
ZW50IHNlbmRlciBtb3VzZSBldmVudHMgdGhyb3VnaCBXZWJLaXQyIFVJUHJvY2VzcyB3aGljaCBp
cworICAgICAgICBjbG9zZXIgdG8gdGhlIHJlYWwgc2ltdWxhdGlvbiB0aGFuIGEgV2ViUHJvY2Vz
cy1vbmx5IGFwcHJvYWNoLiBUaGUgcGF0Y2ggb25seSBzdXBwb3J0cyBNYWMKKyAgICAgICAgcGxh
dGZvcm0gYXMgdGhlIGZpcnN0IHN0ZXAgc28gdGhlIGV4aXN0aW5nIGNvZGUgaXMgc3RpbGwga2Vw
dCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1Bh
Z2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
ZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3VzZUV2ZW50
U3luY0ZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIw
MTEtMDktMjEgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNpYUBvcGVuYm9z
c2Eub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBJbXBsZW1lbnQgRG93bmxvYWQgc3VwcG9ydCBp
biBXZWJQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gOTU2NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwLDcgKzE4MCw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHAKICAgICAsIG1fbWFpbkZyYW1lSXNQaW5uZWRU
b0xlZnRTaWRlKGZhbHNlKQogICAgICwgbV9tYWluRnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRlKGZh
bHNlKQogICAgICwgbV9yZW5kZXJUcmVlU2l6ZSgwKQotICAgICwgbV9zaG91bGRTZW5kS2V5Ym9h
cmRFdmVudFN5bmNocm9ub3VzbHkoZmFsc2UpCisgICAgLCBtX3Nob3VsZFNlbmRFdmVudHNTeW5j
aHJvbm91c2x5KGZhbHNlKQogewogI2lmbmRlZiBOREVCVUcKICAgICB3ZWJQYWdlUHJveHlDb3Vu
dGVyLmluY3JlbWVudCgpOwpAQCAtODMyLDcgKzgzMiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlTW91c2VFdmVudChjb25zCiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6
TW91c2VEb3duKQogICAgICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50ID0g
YWRvcHRQdHIobmV3IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQpKTsKIAotICAgIHByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCksIG1fcGFnZUlEKTsK
KyAgICBpZiAobV9zaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSkgeworICAgICAgICBib29s
IGhhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZTo6TW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBh
Z2U6Ok1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlEKTsK
KyAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5cGUoKSwgaGFuZGxlZCk7CisgICAgfSBl
bHNlCisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVu
dChldmVudCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCkBAIC04NjEsNyArODY2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoYwogICAgIG1fa2V5RXZl
bnRRdWV1ZS5hcHBlbmQoZXZlbnQpOwogCiAgICAgcHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCktPnN0YXJ0KCk7Ci0gICAgaWYgKG1fc2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJv
bm91c2x5KSB7CisgICAgaWYgKG1fc2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsKICAg
ICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CiAgICAgICAgIHByb2Nlc3MoKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50U3luY0ZvclRlc3RpbmcoZXZlbnQpLCBNZXNzYWdl
czo6V2ViUGFnZTo6S2V5RXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1fcGFn
ZUlEKTsKICAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5cGUoKSwgaGFuZGxlZCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA5NTY1
MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtNTYzLDcgKzU2Myw3IEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IHJlbmRlclRy
ZWVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJUcmVlU2l6ZTsgfQogCi0gICAgdm9pZCBz
ZXRTaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkoYm9vbCBzeW5jKSB7IG1fc2hv
dWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91c2x5ID0gc3luYzsgfTsKKyAgICB2b2lkIHNl
dFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KGJvb2wgc3luYykgeyBtX3Nob3VsZFNlbmRF
dmVudHNTeW5jaHJvbm91c2x5ID0gc3luYzsgfTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCosIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgV2ViUGFnZUdyb3Vw
KiwgdWludDY0X3QgcGFnZUlEKTsKQEAgLTkzNSw3ICs5MzUsNyBAQCBwcml2YXRlOgogCiAgICAg
c3RhdGljIFdLUGFnZURlYnVnUGFpbnRGbGFncyBzX2RlYnVnUGFpbnRGbGFnczsKIAotICAgIGJv
b2wgbV9zaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHk7CisgICAgYm9vbCBtX3No
b3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNp
b24gOTU2NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTgxLDcgKzU4MSw3IEBAIFdLSW1hZ2VSZWYgV0tQYWdlQ3JlYXRl
U25hcHNob3RPZlZpc2libGUKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXS1BhZ2VTZXRTaG91
bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgc3lu
YykKK3ZvaWQgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkoV0tQYWdlUmVm
IHBhZ2UsIGJvb2wgc3luYykKIHsKLSAgICB0b0ltcGwocGFnZSktPnNldFNob3VsZFNlbmRLZXli
b2FyZEV2ZW50U3luY2hyb25vdXNseShzeW5jKTsKKyAgICB0b0ltcGwocGFnZSktPnNldFNob3Vs
ZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KHN5bmMpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCShyZXZpc2lvbiA5NTY1MykKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDcgKzY5LDcgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlRHJhd1BhZ2VzVG9Q
REYoV0tQYQogLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY2OTc5OiBSZW1vdmUgdGhpcyBzeW5jIGNhbGwuCiBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS1Bh
Z2VDcmVhdGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQoV0tQYWdlUmVmIHBhZ2UpOwogCi1XS19F
WFBPUlQgdm9pZCBXS1BhZ2VTZXRTaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHko
V0tQYWdlUmVmIHBhZ2UsIGJvb2wgc3luYyk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRTaG91
bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseShXS1BhZ2VSZWYgcGFnZSwgYm9vbCBzeW5jKTsKIAog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA5NTY1MykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0OSw2
ICsxMDQ5LDI1IEBAIHZvaWQgV2ViUGFnZTo6bW91c2VFdmVudChjb25zdCBXZWJNb3VzZUUKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obW91c2VFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZTo6bW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNl
RXZlbnQsIGJvb2wmIGhhbmRsZWQpCit7CisgICAgLy8gRG9uJ3QgdHJ5IHRvIGhhbmRsZSBhbnkg
cGVuZGluZyBtb3VzZSBldmVudHMgaWYgYSBjb250ZXh0IG1lbnUgaXMgc2hvd2luZy4KKyAgICBp
ZiAobV9pc1Nob3dpbmdDb250ZXh0TWVudSkgeworICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAobV9wYWdlT3ZlcmxheSkgeworICAg
ICAgICAvLyBMZXQgdGhlIHBhZ2Ugb3ZlcmxheSBoYW5kbGUgdGhlIGV2ZW50LgorICAgICAgICBo
YW5kbGVkID0gbV9wYWdlT3ZlcmxheS0+bW91c2VFdmVudChtb3VzZUV2ZW50KTsKKyAgICB9CisK
KyAgICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgQ3VycmVudEV2ZW50IGN1cnJlbnRFdmVudCht
b3VzZUV2ZW50KTsKKyAgICAgICAgaGFuZGxlZCA9IGhhbmRsZU1vdXNlRXZlbnQobW91c2VFdmVu
dCwgbV9wYWdlLmdldCgpKTsKKyAgICB9Cit9CisKIHN0YXRpYyBib29sIGhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgUGFnZSogcGFnZSkKIHsKICAgICBG
cmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gOTU2NTMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NzUsNiArNDc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25z
dCBTdHJpbmcmKTsKIAogICAgIHZvaWQgbW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jik7
CisgICAgdm9pZCBtb3VzZUV2ZW50U3luY0ZvclRlc3RpbmcoY29uc3QgV2ViTW91c2VFdmVudCYs
IGJvb2wmKTsKICAgICB2b2lkIHdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpOwogICAg
IHZvaWQga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQga2V5RXZl
bnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCYpOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDk1NjUzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgS2V5RXZlbnQoV2ViS2l0OjpXZWJLZXlib2Fy
ZEV2ZW50IGV2ZW50KQogICAgIEtleUV2ZW50U3luY0ZvclRlc3RpbmcoV2ViS2l0OjpXZWJLZXli
b2FyZEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKQogICAgIE1vdXNlRXZlbnQoV2ViS2l0
OjpXZWJNb3VzZUV2ZW50IGV2ZW50KQorICAgIE1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyhXZWJL
aXQ6OldlYk1vdXNlRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpCiAgICAgV2hlZWxFdmVu
dChXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQogICAgIEdlc3R1cmVFdmVudChXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCBldmVudCkKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDk1NjUzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTEtMDktMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBb
V0syXSBbTWFjXSBJbXBsZW1lbnQgYSBtb3JlLWNvbXBsZXRlIE1vdXNlRG93bi9Nb3VzZVVwL01v
dXNlTW92ZVRvIGZ1bmN0aW9ucyBmb3IgV2ViS2l0MiBFdmVudFNlbmRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgxMDgKKworICAgICAgICBUaGlz
IHBhdGNoIGltcGxlbWVudHMgdGhlIGV2ZW50IHNlbmRlciBtb3VzZSBldmVudHMgdGhyb3VnaCBX
ZWJLaXQyIFVJUHJvY2VzcyB3aGljaCBpcworICAgICAgICBjbG9zZXIgdG8gdGhlIHJlYWwgc2lt
dWxhdGlvbiB0aGFuIGEgV2ViUHJvY2Vzcy1vbmx5IGFwcHJvYWNoLiBUaGUgcGF0Y2ggb25seSBz
dXBwb3J0cyBNYWMKKyAgICAgICAgcGxhdGZvcm0gYXMgdGhlIGZpcnN0IHN0ZXAgc28gdGhlIGV4
aXN0aW5nIGNvZGUgaXMgc3RpbGwga2VwdCBmb3Igb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9F
dmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OkV2ZW50
U2VuZGVyUHJveHkpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5OjpsZWFwRm9yd2Fy
ZCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmN1cnJlbnRFdmVudFRpbWUpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OkV2ZW50
U2VuZGluZ0NvbnRyb2xsZXIpOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVy
Ojptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb3Vz
ZVVwKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VNb3ZlVG8p
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpsZWFwRm9yd2FyZCk6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmtleURvd24pOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5k
ZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6ZXZlbnRUeXBlRm9yTW91c2VCdXR0b25BbmRBY3Rp
b24pOgorICAgICAgICAoV1RSOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6dXBkYXRlQ2xpY2tDb3VudEZvckJ1dHRvbik6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyk6
CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0LmNwcDoKKyAgICAgICAgKFdUUjo6
RXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAp
OgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyk6CisKIDIwMTEt
MDktMjEgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBFbnN1cmUgVGVzdFdlYktpdEFQSSB3b3JrcyBvbiBtYWMsIHdpbiwgY2hyb21pdW0tbWFjIGFu
ZCBjaHJvbWl1bS1saW51eApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgJKHJldmlzaW9uIDk1NjUzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVu
dFNlbmRlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMyw0MCBAQCBjbGFzcyBU
ZXN0Q29udHJvbGxlcjsKIAogY2xhc3MgRXZlbnRTZW5kZXJQcm94eSB7CiBwdWJsaWM6Ci0gICAg
RXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIpIDogbV90ZXN0
Q29udHJvbGxlcih0ZXN0Q29udHJvbGxlcikgeyB9CisgICAgRXZlbnRTZW5kZXJQcm94eShUZXN0
Q29udHJvbGxlciogdGVzdENvbnRyb2xsZXIpCisgICAgICAgIDogbV90ZXN0Q29udHJvbGxlcih0
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgLCBtX3RpbWUoMCkKKyAgICAgICAgLCBtX3Bvc2l0aW9u
KCkKKyAgICAgICAgLCBtX2xlZnRNb3VzZUJ1dHRvbkRvd24oZmFsc2UpCisgICAgICAgICwgbV9j
bGlja0NvdW50KDApCisgICAgICAgICwgbV9jbGlja1RpbWUoMCkKKyAgICAgICAgLCBtX2NsaWNr
UG9zaXRpb24oKQorICAgICAgICAsIG1fY2xpY2tCdXR0b24oa1dLRXZlbnRNb3VzZUJ1dHRvbk5v
QnV0dG9uKQorICAgICAgICAsIGV2ZW50TnVtYmVyKDApCisgICAgeworICAgIH0KIAotICAgIHZv
aWQga2V5RG93bihXS1N0cmluZ1JlZiBrZXksIFdLRXZlbnRNb2RpZmllcnMsIHVuc2lnbmVkIGxv
Y2F0aW9uLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICB2b2lkIG1vdXNlRG93bih1bnNpZ25lZCBi
dXR0b24sIFdLRXZlbnRNb2RpZmllcnMpOworICAgIHZvaWQgbW91c2VVcCh1bnNpZ25lZCBidXR0
b24sIFdLRXZlbnRNb2RpZmllcnMpOworICAgIHZvaWQgbW91c2VNb3ZlVG8oZG91YmxlIHgsIGRv
dWJsZSB5KTsKKyAgICB2b2lkIGxlYXBGb3J3YXJkKGludCBtaWxsaXNlY29uZHMpIHsgbV90aW1l
ICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsgfQorCisgICAgdm9pZCBrZXlEb3duKFdLU3RyaW5n
UmVmIGtleSwgV0tFdmVudE1vZGlmaWVycywgdW5zaWduZWQgbG9jYXRpb24pOwogCiBwcml2YXRl
OgogICAgIFRlc3RDb250cm9sbGVyKiBtX3Rlc3RDb250cm9sbGVyOworCisgICAgZG91YmxlIGN1
cnJlbnRFdmVudFRpbWUoKSB7IHJldHVybiBtX3RpbWU7IH0KKyAgICB2b2lkIHVwZGF0ZUNsaWNr
Q291bnRGb3JCdXR0b24oaW50IGJ1dHRvbik7CisKKyAgICBkb3VibGUgbV90aW1lOworICAgIFdL
UG9pbnQgbV9wb3NpdGlvbjsKKyAgICBib29sIG1fbGVmdE1vdXNlQnV0dG9uRG93bjsKKyAgICBp
bnQgbV9jbGlja0NvdW50OworICAgIGRvdWJsZSBtX2NsaWNrVGltZTsKKyAgICBXS1BvaW50IG1f
Y2xpY2tQb3NpdGlvbjsKKyAgICBXS0V2ZW50TW91c2VCdXR0b24gbV9jbGlja0J1dHRvbjsKKyAg
ICBpbnQgZXZlbnROdW1iZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5NTY1MykKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHRQcml2YXRlLmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS051bWJlci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdl
R3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZVByaXZhdGUuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPGNzdGRpbz4KQEAgLTUzNSwxMyArNTM2LDUyIEBAIFdLUmV0YWlu
UHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmQKICAgICAgICAgICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBsb2NhdGlvbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkxvY2F0aW9uIikpOwogICAgICAgICAgICAgdW5zaWduZWQgbG9jYXRpb24gPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oV0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2
NFJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIGxv
Y2F0aW9uS2V5LmdldCgpKSkpKTsKIAotICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHRpbWVzdGFtcEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IlRpbWVzdGFtcCIpKTsKLSAgICAgICAgICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBXS0RvdWJsZUdl
dFZhbHVlKHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgdGltZXN0YW1wS2V5LmdldCgpKSkpOworICAgICAgICAg
ICAgLy8gRm9yd2FyZCB0byBXZWJQcm9jZXNzCisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRT
ZW5kRXZlbnRzU3luY2hyb25vdXNseShtYWluV2ViVmlldygpLT5wYWdlKCksIHRydWUpOworICAg
ICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlEb3duKGtleSwgbW9kaWZpZXJzLCBsb2Nh
dGlvbik7CisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNs
eShtYWluV2ViVmlldygpLT5wYWdlKCksIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3Vi
TWVzc2FnZU5hbWUsICJNb3VzZURvd24iKSB8fCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KHN1Yk1lc3NhZ2VOYW1lLCAiTW91c2VVcCIpKSB7CisgICAgICAgICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gYnV0dG9uS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiQnV0dG9uIikpOworICAgICAgICAgICAgdW5zaWduZWQgYnV0dG9uID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBidXR0b25LZXku
Z2V0KCkpKSkpOworCisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbW9kaWZp
ZXJzS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9kaWZpZXJz
IikpOworICAgICAgICAgICAgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMgPSBzdGF0aWNfY2Fz
dDxXS0V2ZW50TW9kaWZpZXJzPihXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0
UmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgbW9k
aWZpZXJzS2V5LmdldCgpKSkpKTsKKworICAgICAgICAgICAgLy8gRm9yd2FyZCB0byBXZWJQcm9j
ZXNzCisgICAgICAgICAgICBXS1BhZ2VTZXRTaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSht
YWluV2ViVmlldygpLT5wYWdlKCksIHRydWUpOworICAgICAgICAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcoc3ViTWVzc2FnZU5hbWUsICJNb3VzZURvd24iKSkKKyAgICAgICAg
ICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlRG93bihidXR0b24sIG1vZGlmaWVycyk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5t
b3VzZVVwKGJ1dHRvbiwgbW9kaWZpZXJzKTsKKyAgICAgICAgICAgIFdLUGFnZVNldFNob3VsZFNl
bmRFdmVudHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2UoKSwgZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzdWJNZXNzYWdlTmFtZSwgIk1vdXNlTW92ZVRvIikpIHsKKyAgICAg
ICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB4S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiWCIpKTsKKyAgICAgICAgICAgIGRvdWJsZSB4ID0gV0tEb3Vi
bGVHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShtZXNzYWdlQm9keURpY3Rpb25hcnksIHhLZXkuZ2V0KCkpKSk7CisKKyAgICAgICAgICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB5S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiWSIpKTsKKyAgICAgICAgICAgIGRvdWJsZSB5ID0gV0tEb3VibGVHZXRW
YWx1ZShzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleSht
ZXNzYWdlQm9keURpY3Rpb25hcnksIHlLZXkuZ2V0KCkpKSk7CiAKICAgICAgICAgICAgIC8vIEZv
cndhcmQgdG8gV2ViUHJvY2VzcwotICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5rZXlE
b3duKGtleSwgbW9kaWZpZXJzLCBsb2NhdGlvbiwgdGltZXN0YW1wKTsKKyAgICAgICAgICAgIFdL
UGFnZVNldFNob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5KG1haW5XZWJWaWV3KCktPnBhZ2Uo
KSwgdHJ1ZSk7CisgICAgICAgICAgICBtX2V2ZW50U2VuZGVyUHJveHktPm1vdXNlTW92ZVRvKHgs
IHkpOworICAgICAgICAgICAgV0tQYWdlU2V0U2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHko
bWFpbldlYlZpZXcoKS0+cGFnZSgpLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQorCisgICAgICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN1Yk1l
c3NhZ2VOYW1lLCAiTGVhcEZvcndhcmQiKSkgeworICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IHRpbWVLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJUaW1lSW5NaWxsaXNlY29uZHMiKSk7CisgICAgICAgICAgICB1bnNpZ25lZCB0aW1lID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRS
ZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCB0aW1l
S2V5LmdldCgpKSkpKTsKKworICAgICAgICAgICAgbV9ldmVudFNlbmRlclByb3h5LT5sZWFwRm9y
d2FyZCh0aW1lKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDk1NjUzKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsMTAgKzQxLDEyIEBAIG5hbWVzcGFjZSBXVFIgewogCiBzdGF0aWMgY29uc3Qg
ZmxvYXQgWm9vbU11bHRpcGxpZXJSYXRpbyA9IDEuMmY7CiAKKyNpZmRlZiBVU0VfV0VCUFJPQ0VT
U19FVkVOVF9TSU1VTEFUSU9OCiBzdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdLUG9pbnQm
IGEsIGNvbnN0IFdLUG9pbnQmIGIpCiB7CiAgICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09
IGIueTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgV0tFdmVudE1vZGlmaWVycyBwYXJzZU1vZGlmaWVy
KEpTU3RyaW5nUmVmIG1vZGlmaWVyKQogewpAQCAtOTYsMTIgKzk4LDE0IEBAIFBhc3NSZWZQdHI8
RXZlbnRTZW5kaW5nQ29udHJvbGxlcj4gRXZlbnQKIH0KIAogRXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcigpCisjaWZkZWYgVVNFX1dFQlBST0NFU1NfRVZFTlRf
U0lNVUxBVElPTgogICAgIDogbV90aW1lKDApCiAgICAgLCBtX3Bvc2l0aW9uKCkKICAgICAsIG1f
Y2xpY2tDb3VudCgwKQogICAgICwgbV9jbGlja1RpbWUoMCkKICAgICAsIG1fY2xpY2tQb3NpdGlv
bigpCiAgICAgLCBtX2NsaWNrQnV0dG9uKGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbikKKyNl
bmRpZgogewogfQogCkBAIC0xMjAsOCArMTI0LDI4IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJv
bGxlcjo6bW91c2VEb3duKGkKICAgICBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lID0gV0tCdW5kbGVQ
YWdlR2V0TWFpbkZyYW1lKHBhZ2UpOwogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5k
bGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KGZyYW1lKTsKICAgICBXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVycyA9IHBhcnNlTW9kaWZpZXJBcnJheShjb250ZXh0LCBtb2RpZmllckFycmF5KTsK
KworI2lmZGVmIFVTRV9XRUJQUk9DRVNTX0VWRU5UX1NJTVVMQVRJT04KICAgICB1cGRhdGVDbGlj
a0NvdW50KGJ1dHRvbik7CiAgICAgV0tCdW5kbGVQYWdlU2ltdWxhdGVNb3VzZURvd24ocGFnZSwg
YnV0dG9uLCBtX3Bvc2l0aW9uLCBtX2NsaWNrQ291bnQsIG1vZGlmaWVycywgbV90aW1lKTsKKyNl
bHNlCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUo
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOwor
ICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2Fn
ZUJvZHkoQWRvcHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJTdWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBzdWJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiTW91c2VEb3duIikpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNz
YWdlQm9keS5nZXQoKSwgc3ViTWVzc2FnZUtleS5nZXQoKSwgc3ViTWVzc2FnZU5hbWUuZ2V0KCkp
OworCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGJ1dHRvbktleSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJ1dHRvbiIpKTsKKyAgICBXS1JldGFpblB0cjxX
S1VJbnQ2NFJlZj4gYnV0dG9uUmVmID0gV0tVSW50NjRDcmVhdGUoYnV0dG9uKTsKKyAgICBXS0Rp
Y3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIGJ1dHRvbktleS5n
ZXQoKSwgYnV0dG9uUmVmLmdldCgpKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
b2RpZmllcnNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNb2Rp
ZmllcnMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+IG1vZGlmaWVyc1JlZiA9IFdL
VUludDY0Q3JlYXRlKG1vZGlmaWVycyk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCBtb2RpZmllcnNLZXkuZ2V0KCksIG1vZGlmaWVyc1JlZi5n
ZXQoKSk7CisKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCBFdmVudFNlbmRlck1lc3NhZ2VOYW1lLmdldCgpLCBFdmVu
dFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCAwKTsKKyNlbmRpZgogfQogCiB2b2lkIEV2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXI6Om1vdXNlVXAoaW50IGJ1dHRvbiwgSlNWYWx1ZVJlZiBtb2RpZmllckFy
cmF5KQpAQCAtMTMwLDIyICsxNTQsNzggQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpt
b3VzZVVwKGludAogICAgIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRN
YWluRnJhbWUocGFnZSk7CiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1l
R2V0SmF2YVNjcmlwdENvbnRleHQoZnJhbWUpOwogICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZp
ZXJzID0gcGFyc2VNb2RpZmllckFycmF5KGNvbnRleHQsIG1vZGlmaWVyQXJyYXkpOworCisjaWZk
ZWYgVVNFX1dFQlBST0NFU1NfRVZFTlRfU0lNVUxBVElPTgogICAgIHVwZGF0ZUNsaWNrQ291bnQo
YnV0dG9uKTsKICAgICBXS0J1bmRsZVBhZ2VTaW11bGF0ZU1vdXNlVXAocGFnZSwgYnV0dG9uLCBt
X3Bvc2l0aW9uLCBtX2NsaWNrQ291bnQsIG1vZGlmaWVycywgbV90aW1lKTsKKyNlbHNlCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0
YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRv
cHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJTdWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJN
ZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW91c2VV
cCIpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0
KCksIHN1Yk1lc3NhZ2VLZXkuZ2V0KCksIHN1Yk1lc3NhZ2VOYW1lLmdldCgpKTsKKworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBidXR0b25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJCdXR0b24iKSk7CisgICAgV0tSZXRhaW5QdHI8V0tVSW50NjRSZWY+
IGJ1dHRvblJlZiA9IFdLVUludDY0Q3JlYXRlKGJ1dHRvbik7CisgICAgV0tEaWN0aW9uYXJ5QWRk
SXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCBidXR0b25LZXkuZ2V0KCksIGJ1dHRv
blJlZi5nZXQoKSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbW9kaWZpZXJzS2V5
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW9kaWZpZXJzIikpOwor
ICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBtb2RpZmllcnNSZWYgPSBXS1VJbnQ2NENyZWF0
ZShtb2RpZmllcnMpOworICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oRXZlbnRTZW5kZXJNZXNzYWdl
Qm9keS5nZXQoKSwgbW9kaWZpZXJzS2V5LmdldCgpLCBtb2RpZmllcnNSZWYuZ2V0KCkpOworCisg
ICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5idW5kbGUoKSwgRXZlbnRTZW5kZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNz
YWdlQm9keS5nZXQoKSwgMCk7CisjZW5kaWYKIH0KIAogdm9pZCBFdmVudFNlbmRpbmdDb250cm9s
bGVyOjptb3VzZU1vdmVUbyhpbnQgeCwgaW50IHkpCiB7CisjaWZkZWYgVVNFX1dFQlBST0NFU1Nf
RVZFTlRfU0lNVUxBVElPTgogICAgIG1fcG9zaXRpb24ueCA9IHg7CiAgICAgbV9wb3NpdGlvbi55
ID0geTsKICAgICBXS0J1bmRsZVBhZ2VTaW11bGF0ZU1vdXNlTW90aW9uKEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgbV9wb3NpdGlvbiwgbV90aW1lKTsKKyNlbHNlCisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdL
UmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHko
QWRvcHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJTdWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBz
dWJNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTW91
c2VNb3ZlVG8iKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VC
b2R5LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4geEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlgiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEb3VibGVSZWY+IHhS
ZWYgPSBXS0RvdWJsZUNyZWF0ZSh4KTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKEV2ZW50U2Vu
ZGVyTWVzc2FnZUJvZHkuZ2V0KCksIHhLZXkuZ2V0KCksIHhSZWYuZ2V0KCkpOworCisgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHlLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJZIikpOworICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiB5UmVmID0gV0tE
b3VibGVDcmVhdGUoeSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3Nh
Z2VCb2R5LmdldCgpLCB5S2V5LmdldCgpLCB5UmVmLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9z
dFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2
ZW50U2VuZGVyTWVzc2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCks
IDApOworI2VuZGlmCiB9CiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bGVhcEZvcndh
cmQoaW50IG1pbGxpc2Vjb25kcykKIHsKKyNpZmRlZiBVU0VfV0VCUFJPQ0VTU19FVkVOVF9TSU1V
TEFUSU9OCiAgICAgbV90aW1lICs9IG1pbGxpc2Vjb25kcyAvIDEwMDAuMDsKKyNlbHNlCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZU5hbWUoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkV2ZW50U2VuZGVyIikpOworICAgIFdLUmV0
YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkoQWRv
cHRXSywgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKTsKKworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBzdWJNZXNzYWdlS2V5KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJTdWJNZXNzYWdlIikpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdWJN
ZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTGVhcEZv
cndhcmQiKSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5
LmdldCgpLCBzdWJNZXNzYWdlS2V5LmdldCgpLCBzdWJNZXNzYWdlTmFtZS5nZXQoKSk7CisKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGltZUtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlRpbWVJbk1pbGxpc2Vjb25kcyIpKTsKKyAgICBXS1JldGFpblB0
cjxXS1VJbnQ2NFJlZj4gdGltZVJlZiA9IFdLVUludDY0Q3JlYXRlKG1pbGxpc2Vjb25kcyk7Cisg
ICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCB0aW1l
S2V5LmdldCgpLCB0aW1lUmVmLmdldCgpKTsKKworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIEV2ZW50U2VuZGVyTWVz
c2FnZU5hbWUuZ2V0KCksIEV2ZW50U2VuZGVyTWVzc2FnZUJvZHkuZ2V0KCksIDApOworI2VuZGlm
CiB9CiAKKworI2lmZGVmIFVTRV9XRUJQUk9DRVNTX0VWRU5UX1NJTVVMQVRJT04KIHZvaWQgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6dXBkYXRlQ2xpY2tDb3VudChXS0V2ZW50TW91c2VCdXR0b24g
YnV0dG9uKQogewogICAgIGlmIChtX3RpbWUgLSBtX2NsaWNrVGltZSA8IDEgJiYgbV9wb3NpdGlv
biA9PSBtX2NsaWNrUG9zaXRpb24gJiYgYnV0dG9uID09IG1fY2xpY2tCdXR0b24pIHsKQEAgLTE1
OSw2ICsyMzksNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OnVwZGF0ZUNsaWNrCiAg
ICAgbV9jbGlja1Bvc2l0aW9uID0gbV9wb3NpdGlvbjsKICAgICBtX2NsaWNrQnV0dG9uID0gYnV0
dG9uOwogfQorI2VuZGlmCiAKIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6dGV4dFpvb21J
bigpCiB7CkBAIC0yMzQsMTAgKzMxNSw2IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
a2V5RG93bihKU1MKICAgICBXS1JldGFpblB0cjxXS1VJbnQ2NFJlZj4gbG9jYXRpb25SZWYgPSBX
S1VJbnQ2NENyZWF0ZShsb2NhdGlvbik7CiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNl
bmRlck1lc3NhZ2VCb2R5LmdldCgpLCBsb2NhdGlvbktleS5nZXQoKSwgbG9jYXRpb25SZWYuZ2V0
KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRpbWVzdGFtcEtleSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRpbWVzdGFtcCIpKTsKLSAgICBXS1Jl
dGFpblB0cjxXS0RvdWJsZVJlZj4gdGltZVJlZiA9IFdLRG91YmxlQ3JlYXRlKG1fdGltZSk7Ci0g
ICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShFdmVudFNlbmRlck1lc3NhZ2VCb2R5LmdldCgpLCB0aW1l
c3RhbXBLZXkuZ2V0KCksIHRpbWVSZWYuZ2V0KCkpOwotCiAgICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5idW5kbGUoKSwgRXZlbnRTZW5k
ZXJNZXNzYWdlTmFtZS5nZXQoKSwgRXZlbnRTZW5kZXJNZXNzYWdlQm9keS5nZXQoKSwgMCk7CiB9
CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oCShyZXZpc2lvbiA5NTY1MykKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgPFdlYktp
dDIvV0tHZW9tZXRyeS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKKyNpZiAhUExB
VEZPUk0oTUFDKQorI2RlZmluZSBVU0VfV0VCUFJPQ0VTU19FVkVOVF9TSU1VTEFUSU9OCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIgOiBw
dWJsaWMgSlNXcmFwcGFibGUgewpAQCAtNjAsNiArNjQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIoKTsKIAorI2lmZGVmIFVTRV9XRUJQUk9DRVNTX0VW
RU5UX1NJTVVMQVRJT04KICAgICB2b2lkIHVwZGF0ZUNsaWNrQ291bnQoV0tFdmVudE1vdXNlQnV0
dG9uKTsKIAogICAgIGRvdWJsZSBtX3RpbWU7CkBAIC02OSw2ICs3NCw3IEBAIHByaXZhdGU6CiAg
ICAgZG91YmxlIG1fY2xpY2tUaW1lOwogICAgIFdLUG9pbnQgbV9jbGlja1Bvc2l0aW9uOwogICAg
IFdLRXZlbnRNb3VzZUJ1dHRvbiBtX2NsaWNrQnV0dG9uOworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRT
ZW5kZXJQcm94eS5tbQkocmV2aXNpb24gOTU2NTMpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9FdmVudFNlbmRlclByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAsNTkg
QEAKICNpbXBvcnQgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3
LmgiCiAjaW1wb3J0ICJUZXN0Q29udHJvbGxlci5oIgotI2ltcG9ydCA8V2ViS2l0Mi9XS1BhZ2VQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQyL1dLU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVFIg
ewogCitlbnVtIE1vdXNlQWN0aW9uIHsKKyAgICBNb3VzZURvd24sCisgICAgTW91c2VVcCwKKyAg
ICBNb3VzZURyYWdnZWQKK307CisKKy8vIE1hdGNoIHRoZSBET00gc3BlYyAoc2FkbHkgdGhlIERP
TSBzcGVjIGRvZXMgbm90IHByb3ZpZGUgYW4gZW51bSkKK2VudW0gTW91c2VCdXR0b24geworICAg
IExlZnRNb3VzZUJ1dHRvbiA9IDAsCisgICAgTWlkZGxlTW91c2VCdXR0b24gPSAxLAorICAgIFJp
Z2h0TW91c2VCdXR0b24gPSAyLAorICAgIE5vTW91c2VCdXR0b24gPSAtMQorfTsKKworc3RhdGlj
IE5TRXZlbnRUeXBlIGV2ZW50VHlwZUZvck1vdXNlQnV0dG9uQW5kQWN0aW9uKGludCBidXR0b24s
IE1vdXNlQWN0aW9uIGFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGJ1dHRvbikgeworICAgICAgICBj
YXNlIExlZnRNb3VzZUJ1dHRvbjoKKyAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBNb3VzZURvd246CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBO
U0xlZnRNb3VzZURvd247CisgICAgICAgICAgICAgICAgY2FzZSBNb3VzZVVwOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gTlNMZWZ0TW91c2VVcDsKKyAgICAgICAgICAgICAgICBjYXNlIE1v
dXNlRHJhZ2dlZDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5TTGVmdE1vdXNlRHJhZ2dl
ZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBSaWdodE1vdXNlQnV0dG9uOgorICAgICAg
ICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIE1vdXNlRG93bjoK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5TUmlnaHRNb3VzZURvd247CisgICAgICAgICAg
ICAgICAgY2FzZSBNb3VzZVVwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlNSaWdodE1v
dXNlVXA7CisgICAgICAgICAgICAgICAgY2FzZSBNb3VzZURyYWdnZWQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBOU1JpZ2h0TW91c2VEcmFnZ2VkOworICAgICAgICAgICAgfQorICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIE1vdXNlRG93bjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5TT3RoZXJNb3Vz
ZURvd247CisgICAgICAgICAgICAgICAgY2FzZSBNb3VzZVVwOgorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTlNPdGhlck1vdXNlVXA7CisgICAgICAgICAgICAgICAgY2FzZSBNb3VzZURyYWdn
ZWQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOU090aGVyTW91c2VEcmFnZ2VkOworICAg
ICAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoMCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PE5TRXZlbnRUeXBlPigwKTsKK30KKwogc3RhdGljIGludCBidWlsZE1vZGlmaWVyRmxhZ3MoV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnMpCiB7CiAgICAgaW50IGZsYWdzID0gMDsKQEAgLTQ5LDkg
Kzk3LDk1IEBAIHN0YXRpYyBpbnQgYnVpbGRNb2RpZmllckZsYWdzKFdLRXZlbnRNb2QKICAgICBy
ZXR1cm4gZmxhZ3M7CiB9CiAKLXZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmlu
Z1JlZiBrZXlSZWYsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzUmVmLCB1bnNpZ25lZCBpbnQg
a2V5TG9jYXRpb24sIGRvdWJsZSB0aW1lc3RhbXApCitzdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFdLUG9pbnQmIGEsIGNvbnN0IFdLUG9pbnQmIGIpCiB7Ci0gICAgTlNTdHJpbmcqIGNoYXJh
Y3RlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzp0b1NURChrZXlSZWYpLmNfc3RyKCkg
CisgICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueTsKK30KKwordm9pZCBFdmVudFNl
bmRlclByb3h5Ojp1cGRhdGVDbGlja0NvdW50Rm9yQnV0dG9uKGludCBidXR0b24pCit7CisgICAg
aWYgKG1fdGltZSAtIG1fY2xpY2tUaW1lIDwgMSAmJiBtX3Bvc2l0aW9uID09IG1fY2xpY2tQb3Np
dGlvbiAmJiBidXR0b24gPT0gbV9jbGlja0J1dHRvbikgeworICAgICAgICArK21fY2xpY2tDb3Vu
dDsKKyAgICAgICAgbV9jbGlja1RpbWUgPSBtX3RpbWU7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2NsaWNrQ291bnQgPSAxOworICAgIG1fY2xpY2tUaW1lID0gbV90aW1lOworICAg
IG1fY2xpY2tQb3NpdGlvbiA9IG1fcG9zaXRpb247CisgICAgbV9jbGlja0J1dHRvbiA9IGJ1dHRv
bjsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9u
TnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycykKK3sKKyAgICB1cGRhdGVDbGlja0Nv
dW50Rm9yQnV0dG9uKGJ1dHRvbk51bWJlcik7CisKKyAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUg
PSBldmVudFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihidXR0b25OdW1iZXIsIE1vdXNlRG93
bik7CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZl
bnRUeXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246
TlNNYWtlUG9pbnQobV9wb3NpdGlvbi54LCBtX3Bvc2l0aW9uLnkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6YnVpbGRNb2RpZmllckZsYWdzKG1vZGlm
aWVycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDpj
dXJyZW50RXZlbnRUaW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
bmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1XaW5k
b3coKSB3aW5kb3dOdW1iZXJdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudE51bWJlcjorK2V2ZW50TnVtYmVyIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja0NvdW50Om1fY2xpY2tD
b3VudCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZTow
LjBdOworCisgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gW21fdGVzdENvbnRyb2xsZXItPm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3dd
XTsKKyAgICBpZiAodGFyZ2V0VmlldykgeworICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZURvd246
ZXZlbnRdOworICAgICAgICBpZiAoYnV0dG9uTnVtYmVyID09IExlZnRNb3VzZUJ1dHRvbikKKyAg
ICAgICAgICAgIG1fbGVmdE1vdXNlQnV0dG9uRG93biA9IHRydWU7CisgICAgfQorfQorCit2b2lk
IEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVycykKK3sKKyAgICBOU0V2ZW50VHlwZSBldmVudFR5cGUgPSBldmVu
dFR5cGVGb3JNb3VzZUJ1dHRvbkFuZEFjdGlvbihidXR0b25OdW1iZXIsIE1vdXNlVXApOworICAg
IE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQgbW91c2VFdmVudFdpdGhUeXBlOmV2ZW50VHlwZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOk5TTWFrZVBv
aW50KG1fcG9zaXRpb24ueCwgbV9wb3NpdGlvbi55KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2RpZmllckZsYWdzOmJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6Y3VycmVudEV2
ZW50VGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1i
ZXI6W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtV2luZG93KCkgd2lu
ZG93TnVtYmVyXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnROdW1iZXI6KytldmVudE51bWJlciAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tDb3VudDptX2NsaWNrQ291bnQgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3N1cmU6MC4wXTsKKwor
ICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygp
LT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CisgICAg
dGFyZ2V0VmlldyA9IHRhcmdldFZpZXcgPyB0YXJnZXRWaWV3IDogbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgYXNzZXJ0KHRhcmdldFZpZXcpOwor
ICAgIFt0YXJnZXRWaWV3IG1vdXNlRG93bjpldmVudF07CisgICAgaWYgKGJ1dHRvbk51bWJlciA9
PSBMZWZ0TW91c2VCdXR0b24pCisgICAgICAgIG1fbGVmdE1vdXNlQnV0dG9uRG93biA9IGZhbHNl
OworICAgIG1fY2xpY2tUaW1lID0gW2V2ZW50IHRpbWVzdGFtcF07CisgICAgbV9jbGlja1Bvc2l0
aW9uID0gbV9wb3NpdGlvbjsKK30KKwordm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVU
byhkb3VibGUgeCwgZG91YmxlIHkpCit7CisgICAgTlNWaWV3ICp2aWV3ID0gbV90ZXN0Q29udHJv
bGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgTlNQb2ludCBwb3NpdGlv
biA9IFt2aWV3IGNvbnZlcnRQb2ludDpOU01ha2VQb2ludCh4LCB5KSB0b1ZpZXc6bmlsXTsKKyAg
ICBtX3Bvc2l0aW9uLnggPSBwb3NpdGlvbi54OworICAgIG1fcG9zaXRpb24ueSA9IHBvc2l0aW9u
Lnk7CisgICAgTlNFdmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6KG1f
bGVmdE1vdXNlQnV0dG9uRG93biA/IE5TTGVmdE1vdXNlRHJhZ2dlZCA6IE5TTW91c2VNb3ZlZCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjpwb3NpdGlv
bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllckZsYWdzOjAgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6Y3VycmVudEV2
ZW50VGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dOdW1i
ZXI6W1t2aWV3IHdpbmRvd10gd2luZG93TnVtYmVyXSAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRl
eHRdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50TnVtYmVyOisr
ZXZlbnROdW1iZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNr
Q291bnQ6KG1fbGVmdE1vdXNlQnV0dG9uRG93biA/IG1fY2xpY2tDb3VudCA6IDApIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNzdXJlOjAuMF07CisKKyAgICBO
U1ZpZXcgKnRhcmdldFZpZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxh
dGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOworICAgIGlmICh0
YXJnZXRWaWV3KQorICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZU1vdmVkOmV2ZW50XTsKK30KKwor
dm9pZCBFdmVudFNlbmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUmVmIGtleSwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnMsIHVuc2lnbmVkIGtleUxvY2F0aW9uKQoreworICAgIE5TU3RyaW5n
KiBjaGFyYWN0ZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6dG9TVEQoa2V5KS5jX3N0
cigpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzpbTlNTdHJp
bmcgZGVmYXVsdENTdHJpbmdFbmNvZGluZ11dOwogCiAgICAgTlNTdHJpbmcgKmV2ZW50Q2hhcmFj
dGVyID0gY2hhcmFjdGVyOwpAQCAtMTcwLDE5ICszMDQsMTcgQEAgdm9pZCBFdmVudFNlbmRlclBy
b3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgICAgICBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnMgPSBbY2hhcmFjdGVyIGxvd2VyY2FzZVN0cmluZ107CiAgICAgfQogCi0gICAgbW9kaWZpZXJG
bGFncyB8PSBidWlsZE1vZGlmaWVyRmxhZ3MobW9kaWZpZXJzUmVmKTsKKyAgICBtb2RpZmllckZs
YWdzIHw9IGJ1aWxkTW9kaWZpZXJGbGFncyhtb2RpZmllcnMpOwogCiAgICAgaWYgKGtleUxvY2F0
aW9uID09IDB4MDMgLypET01fS0VZX0xPQ0FUSU9OX05VTVBBRCovKQogICAgICAgICBtb2RpZmll
ckZsYWdzIHw9IE5TTnVtZXJpY1BhZEtleU1hc2s7CiAKICAgICAvLyBGSVhNRTogW1tbbWFpbkZy
YW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBsYXlvdXRdOwogCi0gICAgV0tQYWdlU2V0U2hv
dWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91c2x5KFttX3Rlc3RDb250cm9sbGVyLT5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBwYWdlUmVmXSwgdHJ1ZSk7Ci0KICAgICBOU0V2ZW50
ICpldmVudCA9IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNLZXlEb3duCiAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2NhdGlvbjpOU01ha2VQb2ludCg1LCA1KQogICAgICAgICAgICAgICAg
ICAgICAgICAgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0aW1lc3RhbXA6dGltZXN0YW1wLy9bc2VsZiBjdXJyZW50RXZlbnRUaW1lXQorICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOmN1cnJlbnRFdmVudFRpbWUoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgd2luZG93TnVtYmVyOlttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmll
dygpLT5wbGF0Zm9ybVdpbmRvdygpIHdpbmRvd051bWJlcl0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XQogICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhcmFjdGVyczpldmVudENoYXJhY3RlcgpAQCAtMTk1LDcgKzMyNyw3
IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6a2V5RG93bihXS1N0cmluZ1IKICAgICBldmVudCA9
IFtOU0V2ZW50IGtleUV2ZW50V2l0aFR5cGU6TlNLZXlVcAogICAgICAgICAgICAgICAgICAgICAg
ICAgbG9jYXRpb246TlNNYWtlUG9pbnQoNSwgNSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1v
ZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncwotICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0
YW1wOnRpbWVzdGFtcC8vW3NlbGYgY3VycmVudEV2ZW50VGltZV0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWVzdGFtcDpjdXJyZW50RXZlbnRUaW1lKCkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpbmRvd051bWJlcjpbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1XaW5kb3coKSB3aW5kb3dOdW1iZXJdCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
OltOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcnM6ZXZlbnRDaGFyYWN0ZXIKQEAgLTIwNCw4ICszMzYsNiBAQCB2b2lkIEV2
ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSCiAgICAgICAgICAgICAgICAgICAgICAg
ICBrZXlDb2RlOmtleUNvZGVdOwogCiAgICAgW1ttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmll
dygpLT5wbGF0Zm9ybVdpbmRvdygpIGZpcnN0UmVzcG9uZGVyXSBrZXlVcDpldmVudF07Ci0KLSAg
ICBXS1BhZ2VTZXRTaG91bGRTZW5kS2V5Ym9hcmRFdmVudFN5bmNocm9ub3VzbHkoW21fdGVzdENv
bnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIHBhZ2VSZWZdLCBmYWxzZSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9x
dC9FdmVudFNlbmRlclByb3h5UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvcXQvRXZlbnRTZW5kZXJQcm94eVF0LmNwcAkocmV2aXNpb24gOTU2NTMpCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL3F0L0V2ZW50U2VuZGVyUHJveHlRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbmNs
dWRlICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPFFLZXlFdmVudD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQcml2YXRl
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZ1F0Lmg+CiAKQEAgLTU3LDEwICs1OCw4IEBA
IFF0OjpLZXlib2FyZE1vZGlmaWVycyBnZXRNb2RpZmllcnMoV0tFdmUKICAgICByZXR1cm4gbW9k
aWZpZXJzOwogfQogCi12b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdSZWYg
a2V5UmVmLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5zaWduZWQgbG9jYXRpb24s
IGRvdWJsZSB0aW1lc3RhbXApCit2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJp
bmdSZWYga2V5UmVmLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc1JlZiwgdW5zaWduZWQgbG9j
YXRpb24pCiB7Ci0gICAgV0tQYWdlU2V0U2hvdWxkU2VuZEtleWJvYXJkRXZlbnRTeW5jaHJvbm91
c2x5KG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgdHJ1ZSk7Ci0KICAg
ICBjb25zdCBRU3RyaW5nIGtleSA9IFdLU3RyaW5nQ29weVFTdHJpbmcoa2V5UmVmKTsKICAgICBR
U3RyaW5nIGtleVRleHQgPSBrZXk7CiAKQEAgLTE5MCw4ICsxODksMjEgQEAgdm9pZCBFdmVudFNl
bmRlclByb3h5OjprZXlEb3duKFdLU3RyaW5nUgogICAgIG1fdGVzdENvbnRyb2xsZXItPm1haW5X
ZWJWaWV3KCktPnNlbmRFdmVudCgmZXZlbnQpOwogICAgIFFLZXlFdmVudCBldmVudDIoUUV2ZW50
OjpLZXlSZWxlYXNlLCBjb2RlLCBtb2RpZmllcnMsIGtleVRleHQpOwogICAgIG1fdGVzdENvbnRy
b2xsZXItPm1haW5XZWJWaWV3KCktPnNlbmRFdmVudCgmZXZlbnQyKTsKK30KKwordm9pZCBFdmVu
dFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQsIFdLRXZlbnRNb2RpZmllcnMpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KIAotICAgIFdLUGFnZVNldFNob3VsZFNlbmRLZXlib2Fy
ZEV2ZW50U3luY2hyb25vdXNseShtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wYWdl
KCksIGZhbHNlKTsKK3ZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCh1bnNpZ25lZCwgV0tF
dmVudE1vZGlmaWVycykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSwgZG91YmxlKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTU2
NTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OSBAQAorMjAxMS0wOS0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAg
IFtXSzJdIFtNYWNdIEltcGxlbWVudCBhIG1vcmUtY29tcGxldGUgTW91c2VEb3duL01vdXNlVXAv
TW91c2VNb3ZlVG8gZnVuY3Rpb25zIGZvciBXZWJLaXQyIEV2ZW50U2VuZGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODEwOAorCisgICAgICAgIFRo
aXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgZXZlbnQgc2VuZGVyIG1vdXNlIGV2ZW50cyB0aHJvdWdo
IFdlYktpdDIgVUlQcm9jZXNzIHdoaWNoIGlzCisgICAgICAgIGNsb3NlciB0byB0aGUgcmVhbCBz
aW11bGF0aW9uIHRoYW4gYSBXZWJQcm9jZXNzLW9ubHkgYXBwcm9hY2guIFRoZSBwYXRjaCBvbmx5
IHN1cHBvcnRzIE1hYworICAgICAgICBwbGF0Zm9ybSBhcyB0aGUgZmlyc3Qgc3RlcCBzbyB0aGUg
ZXhpc3RpbmcgY29kZSBpcyBzdGlsbCBrZXB0IGZvciBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAg
ICAgVW5za2lwIHRoZSBwYXNzZWQgdGVzdHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTEtMDktMjEgIERtaXRyeSBMb21vdiAgPGRzbG9t
b3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaXhlZCBidWcgbnVtYmVyIGluIHRlc3QgZXhwZWN0
YXRpb25zLiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQJKHJldmlzaW9u
IDk1NjUzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCSh3b3JraW5n
IGNvcHkpCkBAIC00MCwxMyArNDAsNiBAQAogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgYW4g
aW1wbGVtZW50YXRpb24gb2YgZXZlbnRTZW5kZXIKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MjE5ND4KLWVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpZ2F0dXJl
LTAwMy5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDEuaHRtbAotZWRpdGlu
Zy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAyLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvc21hcnQt
ZGVsZXRlLTAwMy5odG1sCi1lZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDQuaHRtbAot
ZWRpdGluZy9leGVjQ29tbWFuZC9maW5kU3RyaW5nLTIuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJk
LzQ5NDQ3NzAtMi5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDk0NzEzMC5odG1sCiBlZGl0aW5n
L3Bhc3RlYm9hcmQvY29weS1zdGFuZGFsb25lLWltYWdlLWNyYXNoLmh0bWwKIGVkaXRpbmcvcGFz
dGVib2FyZC9kcmFnLWFuZC1kcm9wLWltYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sCkBAIC02Niwx
OSArNTksMTIgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2Ryb3AtbGluay5odG1sCiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZHJvcC10ZXh0LWV2ZW50cy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJvcC10
ZXh0LXdpdGhvdXQtc2VsZWN0aW9uLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jbnRs
LXktMDAxLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jdHJsLWEtay15Lmh0bWwKIGVk
aXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jdHJsLWsteS0wMDEuaHRtbAogZWRpdGluZy9wYXN0ZWJv
YXJkL2ZpbGUtaW5wdXQtZmlsZXMtYWNjZXNzLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxl
cy1kdXJpbmctcGFnZS1kcmFncy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZ2V0LWRhdGEtdGV4
dC1wbGFpbi1kcm9wLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1kcmFnLWRyb3AuaHRt
bAotZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwMS5odG1sCi1lZGl0aW5nL3Bhc3Rl
Ym9hcmQvc21hcnQtcGFzdGUtMDAyLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0
ZS0wMDMuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwNC5odG1sCi1lZGl0
aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDA1Lmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9z
bWFydC1wYXN0ZS0wMDcuaHRtbAotZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwOC5o
dG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvc3ViZnJhbWUtZHJhZ25kcm9wLTEuaHRtbAogZWRpdGlu
Zy9zZWxlY3Rpb24vMTQ5NzEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vNDg5NTQyOC0xLmh0bWwK
QEAgLTkxLDEzICs3NywxMSBAQCBlZGl0aW5nL3NlbGVjdGlvbi81MzU0NDU1LTIuaHRtbAogZWRp
dGluZy9zZWxlY3Rpb24vYW5jaG9yLWZvY3VzMi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9hbmNo
b3ItZm9jdXMzLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2J1dHRvbi1yaWdodC1jbGljay5odG1s
Ci1lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1mb2N1c2FibGUtbGluay1zaG91bGQtbm90LWNs
ZWFyLXNlbGVjdGlvbi5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWlu
c2lkZS1lZGl0YWJsZS1kaXYuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tcGFkZGlu
Zy13aXRoLW11bHRpcGxlLWxpbmUtYm94ZXMuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vY29udGFp
bnMtYm91bmRhcmllcy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtb24tdGV4
dC5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1iZXNpZGUtY3Itc3Bhbi5odG1s
Ci1lZGl0aW5nL3NlbGVjdGlvbi9kb3VibGVjbGljay1jcmFzaC5odG1sCiBlZGl0aW5nL3NlbGVj
dGlvbi9kb3VibGVjbGljay13aGl0ZXNwYWNlLWNyYXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtaW1nLWNyYXNoLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UuaHRtbApAQCAtMTA2LDExICs5MCw4IEBAIGVkaXRpbmcv
c2VsZWN0aW9uL2RyYWctc2VsZWN0LXJhcGlkbHkuaHQKIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWct
c3RhcnQtZXZlbnQtY2xpZW50LXgteS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9kcmFnLXRvLWNv
bnRlbnRlZGl0YWJsZS1pZnJhbWUuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZW1wdHktY2VsbC1y
aWdodC1jbGljay5odG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9leHBhbmRpbmctc2VsZWN0aW9ucy5o
dG1sCi1lZGl0aW5nL3NlbGVjdGlvbi9leHBhbmRpbmctc2VsZWN0aW9uczIuaHRtbAogZWRpdGlu
Zy9zZWxlY3Rpb24vZXh0ZW5kLWFmdGVyLW1vdXNlLXNlbGVjdGlvbi5odG1sCiBlZGl0aW5nL3Nl
bGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWFmdGVyLWRvdWJsZS1jbGljay5odG1sCi1lZGl0aW5n
L3NlbGVjdGlvbi9mYWtlLWRvdWJsZWNsaWNrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2Zha2Ut
ZHJhZy5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9pbmxpbmUtY2xvc2VzdC1sZWFmLWNoaWxkLmh0
bWwKIGVkaXRpbmcvc2VsZWN0aW9uL2xhc3QtZW1wdHktaW5saW5lLmh0bWwKQEAgLTEyNywxNCAr
MTA4LDExIEBAIGVkaXRpbmcvc2VsZWN0aW9uL3VzZXItZHJhZy1lbGVtZW50LWFuZC0KIGVkaXRp
bmcvc2VsZWN0aW9uL3dvcmQtZ3JhbnVsYXJpdHkuaHRtbAogZWRpdGluZy9zcGVsbGluZy9jb250
ZXh0LW1lbnUtc3VnZ2VzdGlvbnMuaHRtbAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBh
c3RlLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWRlbGV0ZVdvcmQuaHRtbAogZWRpdGluZy91bmRv
L3VuZG8tc21hcnQtZGVsZXRlLXJldmVyc2VkLXNlbGVjdGlvbi5odG1sCi1lZGl0aW5nL3VuZG8v
dW5kby1zbWFydC1kZWxldGUtd29yZC5odG1sCiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL2hpdHRl
c3Qtb24tcmVsYXRpdmUtcG9zaXRpb25lZC1jaGlsZHJlbi5odG1sCiBmYXN0L2Nzcy91c2VyLWRy
YWctbm9uZS5odG1sCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLWZy
YW1lcy5odG1sCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWNsb25lLmh0bWwK
LWZhc3QvZG9tL2hvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCiBmYXN0L2RvbS92ZXJ0
aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3QvZHluYW1pYy9sYXllci1oaXQtdGVzdC1j
cmFzaC5odG1sCiBmYXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTguaHRtbApAQCAtMTc3
LDE0ICsxNTUsMTEgQEAgZmFzdC9ldmVudHMvcmVtb3ZlLWNoaWxkLW9uc2Nyb2xsLmh0bWwKIGZh
c3QvZXZlbnRzL3JpZ2h0LWNsaWNrLWZvY3VzLmh0bWwKIGZhc3QvZXZlbnRzL3Njcm9sbC1hZnRl
ci1jbGljay1vbi10YWItaW5kZXguaHRtbAogZmFzdC9ldmVudHMvc2Nyb2xsLWluLXNjYWxlZC1w
YWdlLXdpdGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWwKLWZhc3QvZXZlbnRzL3Njcm9sbGJhci1kb3Vi
bGUtY2xpY2suaHRtbAotZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZG91YmxlLXRyaXBsZS1j
bGlja3MuaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtYnktZHJhZy5odG1sCiBmYXN0L2V2
ZW50cy9zZWxlY3RzdGFydC1wcmV2ZW50LXNlbGVjdGlvbi1vbi1yaWdodC1jbGljay5odG1sCiBm
YXN0L2V2ZW50cy9zdGFuZGFsb25lLWltYWdlLWRyYWctdG8tZWRpdGFibGUuaHRtbAogZmFzdC9l
dmVudHMvd2hlZWxldmVudC1pbi1ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAogZmFz
dC9ldmVudHMvd2hlZWxldmVudC1pbi12ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKLWZh
c3QvZXZlbnRzL3pvb20tZGJsY2xpY2suaHRtbAogZmFzdC9maWxlcy9hcHBseS1ibG9iLXVybC10
by14aHIuaHRtbAogZmFzdC9maWxlcy9maWxlLXJlYWRlci1hYm9ydC5odG1sCiBmYXN0L2ZpbGVz
L3JlYWQtYmxvYi1hc3luYy5odG1sCkBAIC0xOTQsMTQgKzE2OSw5IEBAIGZhc3QvZm9ybXMvZHJh
Zy1vdXQtb2YtdGV4dGFyZWEuaHRtbAogZmFzdC9mb3Jtcy9nZXQtZmlsZS11cGxvYWQuaHRtbAog
ZmFzdC9mb3Jtcy9pbnB1dC1maWxlLXJlLXJlbmRlci5odG1sCiBmYXN0L2Zvcm1zL2lucHV0LXJl
YWRvbmx5LWF1dG9zY3JvbGwuaHRtbAotZmFzdC9mb3Jtcy9pbnB1dC10ZXh0LWRvdWJsZS1jbGlj
ay5odG1sCiBmYXN0L2Zvcm1zL2lucHV0LXRleHQtZHJhZy1kb3duLmh0bWwKIGZhc3QvZm9ybXMv
bGlzdGJveC10eXBlYWhlYWQtY3lyaWxsaWMuaHRtbAogZmFzdC9mb3Jtcy9saXN0Ym94LXR5cGVh
aGVhZC1ncmVlay5odG1sCi1mYXN0L2Zvcm1zL29uc2VsZWN0LXRleHRhcmVhLmh0bWwKLWZhc3Qv
Zm9ybXMvb25zZWxlY3QtdGV4dGZpZWxkLmh0bWwKLWZhc3QvZm9ybXMvb3B0aW9uLW1vdXNlZXZl
bnRzLmh0bWwKLWZhc3QvZm9ybXMvcmFuZ2Uvc2xpZGVyLWRlbGV0ZS13aGlsZS1kcmFnZ2luZy10
aHVtYi5odG1sCiBmYXN0L2Zvcm1zL3JhbmdlL3NsaWRlci1tb3VzZS1ldmVudHMuaHRtbAogZmFz
dC9mb3Jtcy9yYW5nZS9zbGlkZXItb25jaGFuZ2UtZXZlbnQuaHRtbAogZmFzdC9mb3Jtcy9zZWxl
Y3QtdHlwZS1haGVhZC1ub24tbGF0aW4uaHRtbApAQCAtMjExLDE1ICsxODEsNiBAQCBmYXN0L2xv
YWRlci9wb2xpY3ktZGVsZWdhdGUtYWN0aW9uLWhpdC10CiBmYXN0L3JlcGFpbnQvamFwYW5lc2Ut
cmwtc2VsZWN0aW9uLXJlcGFpbnQuaHRtbAogZmFzdC9yZXBhaW50L3JlcGFpbnQtYWNyb3NzLXdy
aXRpbmctbW9kZS1ib3VuZGFyeS5odG1sCiBmYXN0L3JlcGFpbnQvc2VsZWN0aW9uLXJsLmh0bWwK
LWZhc3QvdGV4dC9hdHN1aS1ydGwtb3ZlcnJpZGUtc2VsZWN0aW9uLmh0bWwKLWZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL2tobWVyLXNlbGVjdGlvbi5odG1sCi1mYXN0L3RleHQvb2Zmc2V0Rm9yUG9z
aXRpb24tY29tcGxleC1mYWxsYmFjay5odG1sCi1mYXN0L3RleHQvcmVzZXQtZHJhZy1vbi1tb3Vz
ZS1kb3duLmh0bWwKLWZhc3Qvd3JpdGluZy1tb2RlL2hvcml6b250YWwtYnQtcmVwbGFjZWQtc2Vs
ZWN0aW9uLmh0bWwKLWZhc3Qvd3JpdGluZy1tb2RlL2phcGFuZXNlLWxyLXNlbGVjdGlvbi5odG1s
Ci1mYXN0L3dyaXRpbmctbW9kZS9qYXBhbmVzZS1ybC1zZWxlY3Rpb24uaHRtbAotZmFzdC93cml0
aW5nLW1vZGUvdmVydGljYWwtbHItcmVwbGFjZWQtc2VsZWN0aW9uLmh0bWwKLWZhc3Qvd3JpdGlu
Zy1tb2RlL3ZlcnRpY2FsLXJsLXJlcGxhY2VkLXNlbGVjdGlvbi5odG1sCiBodHRwL3Rlc3RzL2xv
Y2FsL2Jsb2Ivc2VuZC1oeWJyaWQtYmxvYi5odG1sCiBodHRwL3Rlc3RzL2xvY2FsL2RyYWctb3Zl
ci1yZW1vdGUtY29udGVudC5odG1sCiBodHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvZmlsZS1sYXN0
LW1vZGlmaWVkLmh0bWwKQEAgLTIzOCwxOSArMTk5LDExIEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkv
ZHJhZy1vdmVyLXJlbW90ZS1jb24KIG1lZGlhL2NvbnRyb2xzLXJpZ2h0LWNsaWNrLW9uLXRpbWVi
YXIuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhVHJhbnNmZXItc2V0
LWRhdGEtZmlsZS11cmwuaHRtbAogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9kcmFn
LXNlbGVjdGlvbnMtdG8tY29udGVudGVkaXRhYmxlLmh0bWwKLXBsYXRmb3JtL21hYy9lZGl0aW5n
L3NlbGVjdGlvbi9kb3VibGVjbGljay1zaG91bGQtbm90LWV4cGFuZC1hY3Jvc3MtbGluZXMuaHRt
bAotcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL3dvcmQtdGhhaS5odG1sCiBwbGF0Zm9y
bS9tYWMvZmFzdC9mb3Jtcy9saXN0Ym94LXNjcm9sbGJhci1oaXQtdGVzdC5odG1sCi1wbGF0Zm9y
bS9tYWMvZmFzdC9vdmVyZmxvdy9vdmVyZmxvdy1zY3JvbGxiYXItaGl0LXRlc3QuaHRtbAogcGx1
Z2lucy9jbGlja2luZy1taXNzaW5nLXBsdWdpbi1maXJlcy1kZWxlZ2F0ZS5odG1sCiBzY3JvbGxi
YXJzL3Njcm9sbGJhci1pZnJhbWUtY2xpY2stZG9lcy1ub3QtYmx1ci1jb250ZW50Lmh0bWwKIHNj
cm9sbGJhcnMvc2Nyb2xsZXZlbnQtaWZyYW1lLW5vLXNjcm9sbGluZy13aGVlbC5odG1sCi0KIHN2
Zy9jdXN0b20vZm9yZWlnbk9iamVjdC1jcmFzaC1vbi1ob3Zlci54bWwKLXN2Zy9jdXN0b20vbW91
c2UtbW92ZS1vbi1zdmctY29udGFpbmVyLXN0YW5kYWxvbmUuc3ZnCi1zdmcvY3VzdG9tL21vdXNl
LW1vdmUtb24tc3ZnLWNvbnRhaW5lci54aHRtbAotc3ZnL2N1c3RvbS9tb3VzZS1tb3ZlLW9uLXN2
Zy1yb290LXN0YW5kYWxvbmUuc3ZnCi1zdmcvY3VzdG9tL21vdXNlLW1vdmUtb24tc3ZnLXJvb3Qu
eGh0bWwKIHN2Zy9jdXN0b20vdXNlLWV2ZW50cy1jcmFzaC5zdmcKIAogIyMjIEVORCBPRiAoMSkg
Q2xhc3NpZmllZCBmYWlsdXJlcyB3aXRoIGJ1ZyByZXBvcnRzCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAkocmV2aXNpb24gOTU2NTMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
U2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNjczLDExICs2NzMsMTUgQEAgcGx1Z2lucy9uZXRz
Y2FwZS1wbHVnaW4tc2V0d2luZG93LXNpemUtMgogCiAjIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0RWRpdGluZ0JlaGF2aW9yCiAjIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI2ODk+CitlZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS1saWdhdHVyZS0wMDMuaHRtbAorZWRpdGluZy9kZWxldGluZy9wYXJhZ3JhcGgtaW4tcHJlc2Vy
dmVOZXdsaW5lLmh0bWwKK2VkaXRpbmcvZGVsZXRpbmcvd2hpdGVzcGFjZS1wcmUtMS5odG1sCiBl
ZGl0aW5nL3NlbGVjdGlvbi9hZnRlci1saW5lLWJyZWFrLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9u
L3J0bC1tb3ZlLXNlbGVjdGlvbi1yaWdodC1sZWZ0Lmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uLzUx
OTUxNjYtMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9jb250ZXh0LW1lbnUtdGV4dC1zZWxlY3Rp
b24uaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vZGlyZWN0aW9uYWxpdHktYWZ0ZXItdW5kby1yZXBs
YWNlLmh0bWwKK2VkaXRpbmcvc2VsZWN0aW9uL3Byb2dyYW1tYXRpYy1zZWxlY3Rpb24tb24tbWFj
LWlzLWRpcmVjdGlvbmxlc3MuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9xdWVyeS1jb21tYW5k
LXN0YXRlLmh0bWwKIGVkaXRpbmcvZXhlY0NvbW1hbmQvcXVlcnktdGV4dC1hbGlnbm1lbnQuaHRt
bAogZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtY29tcG91bmQtc3R5bGVzLmh0bWwKQEAgLTY4
Niw5ICs2OTAsNiBAQCBlZGl0aW5nL3N0eWxlL2lmcmFtZS1vbmxvYWQtY3Jhc2gtdW5peC5oCiBl
ZGl0aW5nL3N0eWxlL2lmcmFtZS1vbmxvYWQtY3Jhc2gtd2luLmh0bWwKIGZhc3QvZXZlbnRzL2Jh
Y2tzcGFjZS1uYXZpZ2F0ZXMtYmFjay5odG1sCiBmYXN0L2Zvcm1zL3NlbGVjdGlvbi1kaXJlY3Rp
b24uaHRtbAotZWRpdGluZy9kZWxldGluZy9wYXJhZ3JhcGgtaW4tcHJlc2VydmVOZXdsaW5lLmh0
bWwKLWVkaXRpbmcvZGVsZXRpbmcvd2hpdGVzcGFjZS1wcmUtMS5odG1sCi1lZGl0aW5nL3NlbGVj
dGlvbi9wcm9ncmFtbWF0aWMtc2VsZWN0aW9uLW9uLW1hYy1pcy1kaXJlY3Rpb25sZXNzLmh0bWwK
IAogIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnNldFN0b3BQ
cm92aXNpb25hbEZyYW1lTG9hZHMKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjY5MT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>