<?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>162367</bug_id>
          
          <creation_ts>2016-09-21 17:42:56 -0700</creation_ts>
          <short_desc>Add long press selection test</short_desc>
          <delta_ts>2016-09-22 16:55:54 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>glenn</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1232252</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-09-21 17:42:56 -0700</bug_when>
    <thetext>Add long press selection test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232254</commentid>
    <comment_count>1</comment_count>
      <attachid>289495</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-09-21 17:49:14 -0700</bug_when>
    <thetext>Created attachment 289495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232257</commentid>
    <comment_count>2</comment_count>
      <attachid>289495</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-09-21 18:14:11 -0700</bug_when>
    <thetext>Comment on attachment 289495
Patch

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

&gt; Tools/ChangeLog:31
&gt; +        * DumpRenderTree/ios/UIScriptControllerIOS.mm:
&gt; +        (WTR::UIScriptController::longPressAtPoint):
&gt; +        (WTR::UIScriptController::forcePressAtPoint):
&gt; +        (WTR::UIScriptController::dragFromPointToPoint): Deleted.
&gt; +        * Scripts/webkitpy/common/config/contributors.json:
&gt; +        * TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
&gt; +        * TestRunnerShared/UIScriptContext/UIScriptController.cpp:
&gt; +        (WTR::UIScriptController::longPressAtPoint):
&gt; +        (WTR::UIScriptController::forcePressAtPoint):
&gt; +        (WTR::UIScriptController::dragFromPointToPoint): Deleted.
&gt; +        * TestRunnerShared/UIScriptContext/UIScriptController.h:
&gt; +        * WebKitTestRunner/ios/HIDEventGenerator.h:
&gt; +        * WebKitTestRunner/ios/HIDEventGenerator.mm:
&gt; +        (-[HIDEventGenerator _createIOHIDEventType:]):
&gt; +        (-[HIDEventGenerator sendTaps:location:withNumberOfTouches:completionBlock:]):
&gt; +        (-[HIDEventGenerator clearTap:]):
&gt; +        (-[HIDEventGenerator longPressTimerCall:]):
&gt; +        (-[HIDEventGenerator longPressFinish:completionBlock:]):
&gt; +        (-[HIDEventGenerator longPress:completionBlock:]):
&gt; +        (-[HIDEventGenerator forcePress:completionBlock:]):
&gt; +        * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
&gt; +        (WTR::UIScriptController::longPressAtPoint):
&gt; +        (WTR::UIScriptController::forcePressAtPoint):
&gt; +        (WTR::UIScriptController::dragFromPointToPoint): Deleted.

This region is for explaining why/what you did in each of these places, making it easier to review and making it possible for me to ask less questions below!

&gt; Tools/Scripts/webkitpy/common/config/contributors.json:3500
&gt; +	  &quot;Megan Gardner&quot; : {

This should happen in a different patch.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:40
&gt; -static const NSTimeInterval fingerLiftDelay = 5e7;
&gt; -static const NSTimeInterval multiTapInterval = 15e7;
&gt; +static const long fingerLiftDelay = 5e7;
&gt; +static const long multiTapInterval = 15e7;

Why?

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:548
&gt; +    [self longPressFinish:[[userInfo valueForKey:@&quot;location&quot;] CGPointValue] completionBlock:[userInfo objectForKey:@&quot;block&quot;]];

I think we can userInfo[@&quot;location&quot;] and such.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:549
&gt; +    [timer invalidate];

No need to invalidate a non-repeating timer.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:558
&gt; +    [self clearTap:CGPointMake(50, 50)];

Why the random hardcoded 50, 50?

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:569
&gt; +    NSTimer *timer = [[NSTimer timerWithTimeInterval:longPressHoldDelay target:self selector:@selector(longPressTimerCall:) userInfo:info repeats:NO] retain];

Probably better to use scheduledTimerWith... and not have to explicitly add it, no? Also, I think the runloop will retain it in that case, so you don&apos;t have to (and don&apos;t have to release it when it fires).

&gt; LayoutTests/fast/events/touch/ios/long-press-to-select-text.html:33
&gt; +					var selection = document.getSelection().toString();

Spaces, not tabs, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232265</commentid>
    <comment_count>3</comment_count>
      <attachid>289495</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-09-21 18:36:42 -0700</bug_when>
    <thetext>Comment on attachment 289495
Patch

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

&gt; Tools/ChangeLog:7
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

There should be a summary of your changes here. Describe what features you are adding to the test harness, and how they work.

&gt; Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:42
&gt; +    void forcePressAtPoint(long x, long y, object callback);

I think this will want some extra parameters to describe the force values. I think it should also be done in a separate patch.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:163
&gt; +    } else if (eventType == HandEventPress) {
&gt; +        eventMask &amp;= ~kIOHIDDigitizerEventTouch;
&gt; +        eventMask |= kIOHIDDigitizerEventAttribute;
&gt;      } else if (eventType == HandEventChordChanged) {
&gt;          eventMask |= kIOHIDDigitizerEventPosition;
&gt;          eventMask |= kIOHIDDigitizerEventAttribute;
&gt; -    } else if (eventType == HandEventTouched  || eventType == HandEventCanceled) {
&gt; -        eventMask |= kIOHIDDigitizerEventIdentity;
&gt; -    } else if (eventType == HandEventLifted)
&gt; +    } else if (eventType == HandEventTouched)

I can&apos;t tell if these are necessary for force press, or long press, which is a good reason to do those in two separate patches.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:509
&gt; +    struct timespec doubleDelay = { 0, multiTapInterval };
&gt; +    struct timespec pressDelay = { 0, fingerLiftDelay };

Would prefer it the old way.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:528
&gt; +- (void)clearTap:(CGPoint)location
&gt; +{
&gt; +    [self touchDown:location touchCount:1];
&gt; +    struct timespec pressDelay = { 0, fingerLiftDelay };
&gt; +    nanosleep(&amp;pressDelay, 0);
&gt; +    [self liftUp:location touchCount:1];
&gt; +}

This is weird. Why is a &quot;clear tap&quot; sending another tap?

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:545
&gt; +- (void)longPressTimerCall:(NSTimer *)timer

Weird function name.

&gt;&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:558
&gt;&gt; +    [self clearTap:CGPointMake(50, 50)];
&gt; 
&gt; Why the random hardcoded 50, 50?

Also I think it should be the job of the test, or the harness to remove the callout bar. This code is too low-level, and is just involved in synthesizing touches.

&gt; LayoutTests/fast/events/touch/ios/long-press-to-select-text.html:37
&gt; +						output += &quot;No Selection&quot;;

It&apos;s best if the test result is self-describing. For example:
&quot;FAIL: failed to select a word as a result of a long press&quot;
&quot;PASS: successfully selected the word &quot; + selection

&gt; LayoutTests/fast/events/touch/ios/long-press-to-select-text.html:59
&gt; +	PressMe&lt;br&gt;

This is kinda gross HTML. Use a &lt;p&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232597</commentid>
    <comment_count>4</comment_count>
      <attachid>289594</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-09-22 14:05:41 -0700</bug_when>
    <thetext>Created attachment 289594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232609</commentid>
    <comment_count>5</comment_count>
      <attachid>289594</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-09-22 14:15:24 -0700</bug_when>
    <thetext>Comment on attachment 289594
Patch

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

&gt; Tools/ChangeLog:8
&gt; +        Added support of Long Press tests.

I think this needs a little more explanation. I suggestion something like:

Add support to UIScriptController to synthesize long press events on iOS. This required adding long-press functionality to HIDEventGenerator.

HIDEventGenerator sends the touchDown, but must then send the touchUp on a timer (rather than sleeping, as we do for other events) in order for the gesture recognizers to correctly detect a long press.

Use the long press synthesis in a test that detects whether a long press gesture triggers text selection.

&gt; Tools/ChangeLog:9
&gt; +        Fixed oddly typed constants.

They aren&apos;t oddly typed; NSTimeInterval is the correct way to store durations. What&apos;s odd is that they get shoved into a timespec. I&apos;d leave this as-is.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.h:49
&gt; +// Special Presses

Let&apos;s say &quot;Long press and force press&quot;

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:40
&gt; -static const NSTimeInterval fingerLiftDelay = 5e7;
&gt; -static const NSTimeInterval multiTapInterval = 15e7;
&gt; +static const long fingerLiftDelay = 5e7;
&gt; +static const long multiTapInterval = 15e7;

Revert this part.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:-55
&gt; -    HandEventCanceled,

I think we should keep Canceled, because we should test event cancellation at some point.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:-191
&gt; -        } else if (eventType == HandEventLifted || eventType == HandEventCanceled || eventType == StylusEventLifted) {

Keep canceled.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:505
&gt; -    struct timespec doubleDelay = { 0, static_cast&lt;long&gt;(multiTapInterval) };
&gt; -    struct timespec pressDelay = { 0, static_cast&lt;long&gt;(fingerLiftDelay) };
&gt; +    struct timespec doubleDelay = { 0, multiTapInterval };
&gt; +    struct timespec pressDelay = { 0, fingerLiftDelay };

Revert.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:524
&gt; +- (void)clearTap:(CGPoint)location
&gt; +{
&gt; +    [self touchDown:location touchCount:1];
&gt; +    struct timespec pressDelay = { 0, fingerLiftDelay };
&gt; +    nanosleep(&amp;pressDelay, 0);
&gt; +    [self liftUp:location touchCount:1];
&gt; +}

I still don&apos;t think this belongs here.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:556
&gt; +
&gt; +    [self touchDown:location touchCount:1];

Weird blank line.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:561
&gt; +    [NSTimer scheduledTimerWithTimeInterval:longPressHoldDelay target:self selector:@selector(longPressTimerFired:) userInfo:info repeats:NO];

If you used the block form. you wouldn&apos;t have to build an info dictionary or have a separate function for the callback.

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:562
&gt; +    [completionBlockCopy release];

Use Block_release()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232633</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-09-22 14:38:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 289594 [details]
&gt; Patch
&gt; &gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:561
&gt; &gt; +    [NSTimer scheduledTimerWithTimeInterval:longPressHoldDelay target:self selector:@selector(longPressTimerFired:) userInfo:info repeats:NO];
&gt; 
&gt; If you used the block form. you wouldn&apos;t have to build an info dictionary or
&gt; have a separate function for the callback.

You can&apos;t do that, it wasn&apos;t available until recently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232650</commentid>
    <comment_count>7</comment_count>
      <attachid>289609</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-09-22 14:55:23 -0700</bug_when>
    <thetext>Created attachment 289609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232658</commentid>
    <comment_count>8</comment_count>
      <attachid>289609</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-09-22 15:09:49 -0700</bug_when>
    <thetext>Comment on attachment 289609
Patch

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

&gt; Tools/ChangeLog:14
&gt; +        Fixed incorrectly typed constats. NSTimeInterval is in seconds, origial numbers were nanoseconds and typedefed to long without reguard to the type differences.

Lots of typos in this line (constants, reguard), but I think it&apos;s also just not factual anymore, right?

&gt; Tools/WebKitTestRunner/ios/HIDEventGenerator.mm:549
&gt; +    void (^completionBlockCopy)() = Block_copy(completionBlock);

Wonder if this should be using BlockPtr :D

&gt; LayoutTests/fast/events/touch/ios/long-press-to-select-text.html:59
&gt; +	PressMe&lt;p&gt;

I think smfr probably meant

&lt;p&gt;PressMe&lt;/p&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232673</commentid>
    <comment_count>9</comment_count>
      <attachid>289614</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-09-22 15:36:52 -0700</bug_when>
    <thetext>Created attachment 289614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232689</commentid>
    <comment_count>10</comment_count>
      <attachid>289614</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-09-22 16:03:38 -0700</bug_when>
    <thetext>Comment on attachment 289614
Patch

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

&gt; LayoutTests/fast/events/touch/ios/long-press-to-select-text.html:34
&gt; +                    if (selection!==&quot;&quot;)

Spaces around operators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232698</commentid>
    <comment_count>11</comment_count>
      <attachid>289614</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-09-22 16:12:23 -0700</bug_when>
    <thetext>Comment on attachment 289614
Patch

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

&gt; Tools/ChangeLog:14
&gt; +        Add support to UIScriptController to synthesize long press events on iOS. This required adding long-press functionality to HIDEventGenerator.
&gt; +
&gt; +        HIDEventGenerator sends the touchDown, but must then send the touchUp with a dispatch_after (rather than sleeping, as we do for other events) in order for the gesture recognizers to correctly detect a long press.
&gt; +
&gt; +        Use the long press synthesis in a test that detects whether a long press gesture triggers text selection.
&gt; +
&gt; +        Fixed incorrect constants. NSTimeInterval is in seconds, original numbers were nanoseconds and typedefed to long without regard to the type differences. Redid constants to be the right value, and converted upon use.

You should hard wrap these lines to 80 chars or so. Look at the other entries for examples.

&gt; LayoutTests/fast/events/touch/ios/long-press-to-select-text.html:33
&gt; +                    var selection = document.getSelection().toString();

Variable would be better named as &quot;selectionText&quot; or &quot;seletionAsString&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232701</commentid>
    <comment_count>12</comment_count>
      <attachid>289627</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2016-09-22 16:19:37 -0700</bug_when>
    <thetext>Created attachment 289627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232716</commentid>
    <comment_count>13</comment_count>
      <attachid>289627</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-22 16:55:49 -0700</bug_when>
    <thetext>Comment on attachment 289627
Patch

Clearing flags on attachment: 289627

Committed r206282: &lt;http://trac.webkit.org/changeset/206282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232717</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-22 16:55:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289495</attachid>
            <date>2016-09-21 17:49:14 -0700</date>
            <delta_ts>2016-09-22 14:05:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162367-20160921174626.patch</filename>
            <type>text/plain</type>
            <size>17061</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNjI0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM1IEBACisyMDE2LTA5LTIxICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIHRlc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyOjpsb25nUHJlc3NBdFBvaW50KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9s
bGVyOjpmb3JjZVByZXNzQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6ZHJhZ0Zyb21Qb2ludFRvUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbjoKKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRs
OgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNz
QXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Zm9yY2VQcmVzc0F0
UG9pbnQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRU
b1BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lv
cy9ISURFdmVudEdlbmVyYXRvci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJ
REV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBfY3JlYXRl
SU9ISURFdmVudFR5cGU6XSk6CisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIHNlbmRUYXBz
OmxvY2F0aW9uOndpdGhOdW1iZXJPZlRvdWNoZXM6Y29tcGxldGlvbkJsb2NrOl0pOgorICAgICAg
ICAoLVtISURFdmVudEdlbmVyYXRvciBjbGVhclRhcDpdKToKKyAgICAgICAgKC1bSElERXZlbnRH
ZW5lcmF0b3IgbG9uZ1ByZXNzVGltZXJDYWxsOl0pOgorICAgICAgICAoLVtISURFdmVudEdlbmVy
YXRvciBsb25nUHJlc3NGaW5pc2g6Y29tcGxldGlvbkJsb2NrOl0pOgorICAgICAgICAoLVtISURF
dmVudEdlbmVyYXRvciBsb25nUHJlc3M6Y29tcGxldGlvbkJsb2NrOl0pOgorICAgICAgICAoLVtI
SURFdmVudEdlbmVyYXRvciBmb3JjZVByZXNzOmNvbXBsZXRpb25CbG9jazpdKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAg
IChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNzQXRQb2ludCk6CisgICAgICAgIChX
VFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Zm9yY2VQcmVzc0F0UG9pbnQpOgorICAgICAgICAoV1RS
OjpVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KTogRGVsZXRlZC4KKwog
MjAxNi0wOS0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNjIyMiBhbmQgcjIwNjIyNy4KSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bQkocmV2aXNpb24gMjA2MjM3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsMTQgQEAgdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OmRvdWJsZVRhcEF0UG9pbgogdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KGxvbmcgc3RhcnRYLCBsb25nIHN0YXJ0WSwgbG9uZyBl
bmRYLCBsb25nIGVuZFksIGRvdWJsZSBkdXJhdGlvblNlY29uZHMsIEpTVmFsdWVSZWYgY2FsbGJh
Y2spCiB7CiB9CisgICAgCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNzQXRQb2lu
dChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZikKK3sKK30KKyAgICAKK3ZvaWQgVUlTY3JpcHRD
b250cm9sbGVyOjpmb3JjZVByZXNzQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZikK
K3sKK30KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnN0eWx1c0Rvd25BdFBvaW50KGxvbmcg
eCwgbG9uZyB5LCBmbG9hdCBhemltdXRoQW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0
IHByZXNzdXJlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbgkocmV2
aXNpb24gMjA2MjM3KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2Nv
bnRyaWJ1dG9ycy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0zNDk3LDYgKzM0OTcsMTQgQEAKICAg
ICAgICAgICAgICJobWFydGluIgogICAgICAgICAgXQogICAgICAgfSwKKwkgICJNZWdhbiBHYXJk
bmVyIiA6IHsKKyAgICAgICAgICJlbWFpbHMiIDogWworICAgICAgICAgICAgIm1lZ2FuX2dhcmRu
ZXJAYXBwbGUuY29tIgorICAgICAgICAgXSwKKyAgICAgICAgICJuaWNrcyIgOiBbCisgICAgICAg
ICAgICAiR2FtZU1ha2VyIgorICAgICAgICAgXQorICAgICAgfSwKICAgICAgICJNaWhhaSBCYWxh
biIgOiB7CiAgICAgICAgICAiZW1haWxzIiA6IFsKICAgICAgICAgICAgICJtaWJhbGFuQGFkb2Jl
LmNvbSIKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA2MjM3KQor
KysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSwxNCBAQCB2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6ZG91YmxlVGFwQXRQb2luCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZHJh
Z0Zyb21Qb2ludFRvUG9pbnQobG9uZyBzdGFydFgsIGxvbmcgc3RhcnRZLCBsb25nIGVuZFgsIGxv
bmcgZW5kWSwgZG91YmxlIGR1cmF0aW9uU2Vjb25kcywgSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsK
IH0KKyAgICAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpsb25nUHJlc3NBdFBvaW50KGxvbmcg
eCwgbG9uZyB5LCBKU1ZhbHVlUmVmKQoreworfQorICAgIAordm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6OmZvcmNlUHJlc3NBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBKU1ZhbHVlUmVmKQoreworfQog
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c3R5bHVzRG93bkF0UG9pbnQobG9uZyB4LCBsb25n
IHksIGZsb2F0IGF6aW11dGhBbmdsZSwgZmxvYXQgYWx0aXR1ZGVBbmdsZSwgZmxvYXQgcHJlc3N1
cmUsIEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAko
cmV2aXNpb24gMjA2MjM3KQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc3R5bHVzVXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBKU1ZhbHVl
UmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIHN0eWx1c1RhcEF0UG9pbnQobG9uZyB4LCBsb25nIHks
IGZsb2F0IGF6aW11dGhBbmdsZSwgZmxvYXQgYWx0aXR1ZGVBbmdsZSwgZmxvYXQgcHJlc3N1cmUs
IEpTVmFsdWVSZWYgY2FsbGJhY2spOwogCisgICAgdm9pZCBsb25nUHJlc3NBdFBvaW50KGxvbmcg
eCwgbG9uZyB5LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGZvcmNlUHJlc3NBdFBv
aW50KGxvbmcgeCwgbG9uZyB5LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICAKICAgICB2b2lk
IHR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVy
LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIGtleURvd25Vc2luZ0hhcmR3YXJlS2V5
Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2
b2lkIGtleVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGwJKHJldmlzaW9uIDIwNjIzNykKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDkgQEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxlciB7CiAg
ICAgdm9pZCBkb3VibGVUYXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBvYmplY3QgY2FsbGJhY2sp
OwogICAgIHZvaWQgZHJhZ0Zyb21Qb2ludFRvUG9pbnQobG9uZyBzdGFydFgsIGxvbmcgc3RhcnRZ
LCBsb25nIGVuZFgsIGxvbmcgZW5kWSwgZG91YmxlIGR1cmF0aW9uU2Vjb25kcywgb2JqZWN0IGNh
bGxiYWNrKTsKIAorICAgIHZvaWQgbG9uZ1ByZXNzQXRQb2ludChsb25nIHgsIGxvbmcgeSwgb2Jq
ZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIGZvcmNlUHJlc3NBdFBvaW50KGxvbmcgeCwgbG9uZyB5
LCBvYmplY3QgY2FsbGJhY2spOworCiAgICAgdm9pZCBzdHlsdXNEb3duQXRQb2ludChsb25nIHgs
IGxvbmcgeSwgZmxvYXQgYXppbXV0aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBw
cmVzc3VyZSwgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIHN0eWx1c01vdmVUb1BvaW50KGxv
bmcgeCwgbG9uZyB5LCBmbG9hdCBhemltdXRoQW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZs
b2F0IHByZXNzdXJlLCBvYmplY3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3R5bHVzVXBBdFBvaW50
KGxvbmcgeCwgbG9uZyB5LCBvYmplY3QgY2FsbGJhY2spOwpJbmRleDogVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMDYyMzcpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw2ICs0NiwxMCBAQAogLSAodm9pZClkb3VibGVUYXA6KENHUG9pbnQpbG9j
YXRpb24gY29tcGxldGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7CiAt
ICh2b2lkKXR3b0ZpbmdlclRhcDooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxvY2s6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jazsKIAorLy8gU3BlY2lhbCBQcmVzc2VzCistICh2
b2lkKWxvbmdQcmVzczooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25CbG9jazsKKy0gKHZvaWQpZm9yY2VQcmVzczooQ0dQb2ludClsb2Nh
dGlvbiBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jazsKKwog
Ly8gRHJhZ3MKIC0gKHZvaWQpZHJhZ1dpdGhTdGFydFBvaW50OihDR1BvaW50KXN0YXJ0TG9jYXRp
b24gZW5kUG9pbnQ6KENHUG9pbnQpZW5kTG9jYXRpb24gZHVyYXRpb246KGRvdWJsZSlzZWNvbmRz
IGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrOwogCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQko
cmV2aXNpb24gMjA2MjM3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRH
ZW5lcmF0b3IubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBTT0ZUX0xJTktf
UFJJVkFURV9GUkFNRVdPUksoQmFja0JvYXJkU2VydmljZXMpCiBTT0ZUX0xJTksoQmFja0JvYXJk
U2VydmljZXMsIEJLU0hJREV2ZW50U2V0RGlnaXRpemVySW5mbywgdm9pZCwgKElPSElERXZlbnRS
ZWYgZGlnaXRpemVyRXZlbnQsIHVpbnQzMl90IGNvbnRleHRJRCwgdWludDhfdCBzeXN0ZW1HZXN0
dXJlaXNQb3NzaWJsZSwgdWludDhfdCBpc1N5c3RlbUdlc3R1cmVTdGF0ZUNoYW5nZUV2ZW50LCBD
RlN0cmluZ1JlZiBkaXNwbGF5VVVJRCwgQ0ZUaW1lSW50ZXJ2YWwgaW5pdGlhbFRvdWNoVGltZXN0
YW1wLCBmbG9hdCBtYXhGb3JjZSksIChkaWdpdGl6ZXJFdmVudCwgY29udGV4dElELCBzeXN0ZW1H
ZXN0dXJlaXNQb3NzaWJsZSwgaXNTeXN0ZW1HZXN0dXJlU3RhdGVDaGFuZ2VFdmVudCwgZGlzcGxh
eVVVSUQsIGluaXRpYWxUb3VjaFRpbWVzdGFtcCwgbWF4Rm9yY2UpKTsKIAotc3RhdGljIGNvbnN0
IE5TVGltZUludGVydmFsIGZpbmdlckxpZnREZWxheSA9IDVlNzsKLXN0YXRpYyBjb25zdCBOU1Rp
bWVJbnRlcnZhbCBtdWx0aVRhcEludGVydmFsID0gMTVlNzsKK3N0YXRpYyBjb25zdCBsb25nIGZp
bmdlckxpZnREZWxheSA9IDVlNzsKK3N0YXRpYyBjb25zdCBsb25nIG11bHRpVGFwSW50ZXJ2YWwg
PSAxNWU3Owogc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGZpbmdlck1vdmVJbnRlcnZhbCA9
IDAuMDE2Oworc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIGxvbmdQcmVzc0hvbGREZWxheSA9
IDIuMDsKIHN0YXRpYyBjb25zdCBJT0hJREZsb2F0IGRlZmF1bHRNYWpvclJhZGl1cyA9IDU7CiBz
dGF0aWMgY29uc3QgSU9ISURGbG9hdCBkZWZhdWx0UGF0aFByZXNzdXJlID0gMDsKIHN0YXRpYyBj
b25zdCBOU1VJbnRlZ2VyIG1heFRvdWNoQ291bnQgPSA1OwpAQCAtNTEsMTAgKzUyLDggQEAgdHlw
ZWRlZiBlbnVtIHsKICAgICBIYW5kRXZlbnRUb3VjaGVkLAogICAgIEhhbmRFdmVudE1vdmVkLAog
ICAgIEhhbmRFdmVudENob3JkQ2hhbmdlZCwKKyAgICBIYW5kRXZlbnRQcmVzcywKICAgICBIYW5k
RXZlbnRMaWZ0ZWQsCi0gICAgSGFuZEV2ZW50Q2FuY2VsZWQsCi0gICAgSGFuZEV2ZW50SW5SYW5n
ZSwKLSAgICBIYW5kRXZlbnRJblJhbmdlTGlmdCwKICAgICBTdHlsdXNFdmVudFRvdWNoZWQsCiAg
ICAgU3R5bHVzRXZlbnRNb3ZlZCwKICAgICBTdHlsdXNFdmVudExpZnRlZCwKQEAgLTE1NSwxMiAr
MTU0LDEzIEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRUeXBlOigKICAgICAg
ICAgZXZlbnRNYXNrICY9IH5rSU9ISUREaWdpdGl6ZXJFdmVudFRvdWNoOwogICAgICAgICBldmVu
dE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRQb3NpdGlvbjsKICAgICAgICAgZXZlbnRNYXNr
IHw9IGtJT0hJRERpZ2l0aXplckV2ZW50QXR0cmlidXRlOworICAgIH0gZWxzZSBpZiAoZXZlbnRU
eXBlID09IEhhbmRFdmVudFByZXNzKSB7CisgICAgICAgIGV2ZW50TWFzayAmPSB+a0lPSElERGln
aXRpemVyRXZlbnRUb3VjaDsKKyAgICAgICAgZXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2
ZW50QXR0cmlidXRlOwogICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IEhhbmRFdmVudENob3Jk
Q2hhbmdlZCkgewogICAgICAgICBldmVudE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRQb3Np
dGlvbjsKICAgICAgICAgZXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2ZW50QXR0cmlidXRl
OwotICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IEhhbmRFdmVudFRvdWNoZWQgIHx8IGV2ZW50
VHlwZSA9PSBIYW5kRXZlbnRDYW5jZWxlZCkgewotICAgICAgICBldmVudE1hc2sgfD0ga0lPSElE
RGlnaXRpemVyRXZlbnRJZGVudGl0eTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBIYW5k
RXZlbnRMaWZ0ZWQpCisgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gSGFuZEV2ZW50VG91Y2hl
ZCkKICAgICAgICAgZXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2ZW50SWRlbnRpdHk7CiAK
ICAgICB1aW50NjRfdCBtYWNoVGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOwpAQCAtMTg4LDcg
KzE4OCw3IEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRUeXBlOigKICAgICAg
ICAgICAgICAgICBwb2ludEluZm8tPnBhdGhQcmVzc3VyZSA9IGRlZmF1bHRQYXRoUHJlc3N1cmU7
CiAgICAgICAgICAgICBpZiAoIXBvaW50SW5mby0+cGF0aFByb3hpbWl0eSkKICAgICAgICAgICAg
ICAgICBwb2ludEluZm8tPnBhdGhQcm94aW1pdHkgPSBrR1NFdmVudFBhdGhJbmZvSW5Ub3VjaCB8
IGtHU0V2ZW50UGF0aEluZm9JblJhbmdlOwotICAgICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9
PSBIYW5kRXZlbnRMaWZ0ZWQgfHwgZXZlbnRUeXBlID09IEhhbmRFdmVudENhbmNlbGVkIHx8IGV2
ZW50VHlwZSA9PSBTdHlsdXNFdmVudExpZnRlZCkgeworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBIYW5kRXZlbnRMaWZ0ZWQgfHwgZXZlbnRUeXBlID09IFN0eWx1c0V2ZW50TGlmdGVk
KSB7CiAgICAgICAgICAgICBwb2ludEluZm8tPnBhdGhNYWpvclJhZGl1cyA9IDA7CiAgICAgICAg
ICAgICBwb2ludEluZm8tPnBhdGhQcmVzc3VyZSA9IDA7CiAgICAgICAgICAgICBwb2ludEluZm8t
PnBhdGhQcm94aW1pdHkgPSAwOwpAQCAtNTA1LDggKzUwNSw4IEBAIC0gKHZvaWQpc3R5bHVzVGFw
QXRQb2ludDooQ0dQb2ludClsb2NhdGkKIAogLSAodm9pZClzZW5kVGFwczooaW50KXRhcENvdW50
IGxvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIHdpdGhOdW1iZXJPZlRvdWNoZXM6KGludCl0b3Vj
aENvdW50IGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrCiB7
Ci0gICAgc3RydWN0IHRpbWVzcGVjIGRvdWJsZURlbGF5ID0geyAwLCBzdGF0aWNfY2FzdDxsb25n
PihtdWx0aVRhcEludGVydmFsKSB9OwotICAgIHN0cnVjdCB0aW1lc3BlYyBwcmVzc0RlbGF5ID0g
eyAwLCBzdGF0aWNfY2FzdDxsb25nPihmaW5nZXJMaWZ0RGVsYXkpIH07CisgICAgc3RydWN0IHRp
bWVzcGVjIGRvdWJsZURlbGF5ID0geyAwLCBtdWx0aVRhcEludGVydmFsIH07CisgICAgc3RydWN0
IHRpbWVzcGVjIHByZXNzRGVsYXkgPSB7IDAsIGZpbmdlckxpZnREZWxheSB9OwogCiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCB0YXBDb3VudDsgaSsrKSB7CiAgICAgICAgIFtzZWxmIHRvdWNoRG93
bjpsb2NhdGlvbiB0b3VjaENvdW50OnRvdWNoQ291bnRdOwpAQCAtNTE5LDYgKzUxOSwxNCBAQCAt
ICh2b2lkKXNlbmRUYXBzOihpbnQpdGFwQ291bnQgbG9jYXRpb246CiAgICAgW3NlbGYgX3NlbmRN
YXJrZXJISURFdmVudFdpdGhDb21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2NrXTsKIH0KIAor
LSAodm9pZCljbGVhclRhcDooQ0dQb2ludClsb2NhdGlvbgoreworICAgIFtzZWxmIHRvdWNoRG93
bjpsb2NhdGlvbiB0b3VjaENvdW50OjFdOworICAgIHN0cnVjdCB0aW1lc3BlYyBwcmVzc0RlbGF5
ID0geyAwLCBmaW5nZXJMaWZ0RGVsYXkgfTsKKyAgICBuYW5vc2xlZXAoJnByZXNzRGVsYXksIDAp
OworICAgIFtzZWxmIGxpZnRVcDpsb2NhdGlvbiB0b3VjaENvdW50OjFdOworfQorCiAtICh2b2lk
KXRhcDooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNv
bXBsZXRpb25CbG9jawogewogICAgIFtzZWxmIHNlbmRUYXBzOjEgbG9jYXRpb246bG9jYXRpb24g
d2l0aE51bWJlck9mVG91Y2hlczoxIGNvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdOwpA
QCAtNTM0LDYgKzU0Miw0MCBAQCAtICh2b2lkKXR3b0ZpbmdlclRhcDooQ0dQb2ludClsb2NhdGlv
biBjCiAgICAgW3NlbGYgc2VuZFRhcHM6MSBsb2NhdGlvbjpsb2NhdGlvbiB3aXRoTnVtYmVyT2ZU
b3VjaGVzOjIgY29tcGxldGlvbkJsb2NrOmNvbXBsZXRpb25CbG9ja107CiB9CiAKKy0gKHZvaWQp
bG9uZ1ByZXNzVGltZXJDYWxsOihOU1RpbWVyICopdGltZXIKK3sKKyAgICBOU0RpY3Rpb25hcnkg
KnVzZXJJbmZvID0gdGltZXIudXNlckluZm87CisgICAgW3NlbGYgbG9uZ1ByZXNzRmluaXNoOltb
dXNlckluZm8gdmFsdWVGb3JLZXk6QCJsb2NhdGlvbiJdIENHUG9pbnRWYWx1ZV0gY29tcGxldGlv
bkJsb2NrOlt1c2VySW5mbyBvYmplY3RGb3JLZXk6QCJibG9jayJdXTsKKyAgICBbdGltZXIgaW52
YWxpZGF0ZV07CisgICAgW3RpbWVyIHJlbGVhc2VdOworfQorCistICh2b2lkKWxvbmdQcmVzc0Zp
bmlzaDooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNv
bXBsZXRpb25CbG9jaworeworICAgIFtzZWxmIGxpZnRVcDpsb2NhdGlvbl07CisgICAgW3NlbGYg
X3NlbmRNYXJrZXJISURFdmVudFdpdGhDb21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2NrXTsK
KyAgICAvLyByZW1vdmUgYmFyCisgICAgW3NlbGYgY2xlYXJUYXA6Q0dQb2ludE1ha2UoNTAsIDUw
KV07Cit9CisKKy0gKHZvaWQpbG9uZ1ByZXNzOihDR1BvaW50KWxvY2F0aW9uIGNvbXBsZXRpb25C
bG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrCit7CisKKyAgICBbc2VsZiB0b3Vj
aERvd246bG9jYXRpb24gdG91Y2hDb3VudDoxXTsKKyAgICB2b2lkICheY29tcGxldGlvbkJsb2Nr
Q29weSkoKSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkJsb2NrKTsKKyAgICBOU0RpY3Rpb25hcnkg
KmluZm8gPSBAeworICAgICAgICBAImJsb2NrIjpjb21wbGV0aW9uQmxvY2tDb3B5LAorICAgICAg
ICBAImxvY2F0aW9uIjpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OmxvY2F0aW9uXX07CisgICAg
TlNUaW1lciAqdGltZXIgPSBbW05TVGltZXIgdGltZXJXaXRoVGltZUludGVydmFsOmxvbmdQcmVz
c0hvbGREZWxheSB0YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IobG9uZ1ByZXNzVGltZXJD
YWxsOikgdXNlckluZm86aW5mbyByZXBlYXRzOk5PXSByZXRhaW5dOworICAgIFtbTlNSdW5Mb29w
IGN1cnJlbnRSdW5Mb29wXSBhZGRUaW1lcjp0aW1lciBmb3JNb2RlOk5TUnVuTG9vcENvbW1vbk1v
ZGVzXTsKKyAgICBbY29tcGxldGlvbkJsb2NrQ29weSByZWxlYXNlXTsKK30KKworLSAodm9pZClm
b3JjZVByZXNzOihDR1BvaW50KWxvY2F0aW9uIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbkJsb2NrCit7CisgICAgCit9CisKIC0gKHZvaWQpZHJhZ1dpdGhTdGFydFBv
aW50OihDR1BvaW50KXN0YXJ0TG9jYXRpb24gZW5kUG9pbnQ6KENHUG9pbnQpZW5kTG9jYXRpb24g
ZHVyYXRpb246KGRvdWJsZSlzZWNvbmRzIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkJsb2NrCiB7CiAgICAgW3NlbGYgdG91Y2hEb3duOnN0YXJ0TG9jYXRpb24gdG91
Y2hDb3VudDoxXTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDIwNjIzNykKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTg3LDYgKzE4NywyOCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZHJhZ0Zyb21Qb2lu
dFRvCiAgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CiAg
ICAgfV07CiB9CisgICAgCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNzQXRQb2lu
dChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICB1bnNpZ25lZCBj
YWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxs
YmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKyAgICAKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNo
YXJlZEhJREV2ZW50R2VuZXJhdG9yXSBsb25nUHJlc3M6Z2xvYmFsVG9Db250ZW50Q29vcmRpbmF0
ZXMoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmll
dygpLCB4LCB5KSBjb21wbGV0aW9uQmxvY2s6XnsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUo
Y2FsbGJhY2tJRCk7CisgICAgfV07Cit9CisgICAgCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
Zm9yY2VQcmVzc0F0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYgY2FsbGJhY2spCit7
CisgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFzeW5jVGFz
ayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CisgICAgCisgICAgW1tISURF
dmVudEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdlbmVyYXRvcl0gZm9yY2VQcmVzczpnbG9iYWxU
b0NvbnRlbnRDb29yZGluYXRlcyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZp
ZXcoKS0+cGxhdGZvcm1WaWV3KCksIHgsIHkpIGNvbXBsZXRpb25CbG9jazpeeworICAgICAgICBp
ZiAoIW1fY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jb250ZXh0LT5h
c3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsKKyAgICB9XTsKK30KIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdS
ZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjA2MjM3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTYtMDktMjEgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgbG9uZyBwcmVzcyBzZWxlY3Rpb24gdGVzdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3Ig
bG9uZyBwcmVzcyB0ZXN0cy4KKworICAgICAgICBBZGRlZCB0ZXN0IGZvciBsb25nIHByZXNzIHNl
bGVjdGlvbi4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2lvcy9sb25nLXByZXNzLXRv
LXNlbGVjdC10ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQuaHRtbDogQWRkZWQuCisKIDIwMTYt
MDktMjEgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEltcHJvdmUgb3V0cHV0IG9mIFRlc3RIYXJuZXNzLmV4cGVjdCogZmFpbHVyZXMK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy9sb25nLXByZXNzLXRvLXNl
bGVjdC10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVzcy10by1zZWxlY3QtdGV4dC1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL2xvbmctcHJl
c3MtdG8tc2VsZWN0LXRleHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MiBAQAorTG9uZyBQcmVzcyBTZWxlY3RlZDogUHJlc3NNZQorRG9uZQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVz
cy10by1zZWxlY3QtdGV4dC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2lvcy9sb25nLXByZXNzLXRvLXNlbGVjdC10ZXh0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQo
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYAorICAgICAgICAgICAgKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5sb25nUHJlc3NBdFBvaW50KDMwLCAy
MCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlw
dENvbXBsZXRlKCJEb25lIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSgp
O2AKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICB2YXIgb3V0cHV0ID0gJyc7CisJCSAgICB2YXIgdGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworCQkJdGFyZ2V0LmFkZEV2ZW50
TGlzdGVuZXIoJ3RvdWNoZW5kJywgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBv
dXRwdXQgKz0gJ0xvbmcgUHJlc3MgU2VsZWN0ZWQ6ICc7CisgICAgICAgICAgICB9KTsKKwkJICAg
IGlmICh0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KSB7CisJCSAgICAJdGVzdFJ1bm5lci5ydW5VSVNj
cmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQpIHsKKwkJCQkJdmFyIHNlbGVjdGlv
biA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCk7CisJCQkJCWlmIChzZWxlY3Rp
b24hPT0iIikKKwkJCQkJCW91dHB1dCArPSBzZWxlY3Rpb247CisJCQkJCWVsc2UKKwkJCQkJCW91
dHB1dCArPSAiTm8gU2VsZWN0aW9uIjsKKwkJCQkJb3V0cHV0ICs9ICc8YnI+JzsKKwkJCQkJb3V0
cHV0ICs9IHJlc3VsdDsKKwkJICAgICAgICAJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rhcmdl
dCcpLmlubmVySFRNTCA9IG91dHB1dDsKKwkJICAgICAgICAJdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisJCSAgICAgICAgIAl9KTsKKwkJICAgIAl9CisJCSAgICAgfQorCisJCSAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3QsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4K
KyAgICA8c3R5bGU+CisgICAgICAgICN0YXJnZXQgeworICAgICAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IHNpbHZlcjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MSI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9InRhcmdldCI+CisJUHJlc3NNZTxicj4KKyAgICBUaGlzIHRlc3QgcmVxdWlyZXMgVUlTY3Jp
cHRDb250cm9sbGVyIHRvIHJ1bi4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289594</attachid>
            <date>2016-09-22 14:05:41 -0700</date>
            <delta_ts>2016-09-22 14:55:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162367-20160922140251.patch</filename>
            <type>text/plain</type>
            <size>15252</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNjI0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM5IEBACisyMDE2LTA5LTIxICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIHRlc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgb2Yg
TG9uZyBQcmVzcyB0ZXN0cy4KKyAgICAgICAgRml4ZWQgb2RkbHkgdHlwZWQgY29uc3RhbnRzLgor
ICAgICAgICBDbGVhbmVkIHVwIHVudXNlZCBlbnVtIHR5cGVzLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyOjpsb25nUHJlc3NBdFBvaW50KToKKyAgICAgICAgKFdUUjo6VUlTY3Jp
cHRDb250cm9sbGVyOjpmb3JjZVByZXNzQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcjo6ZHJhZ0Zyb21Qb2ludFRvUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbjoKKyAgICAgICAg
KiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRy
b2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
bG9uZ1ByZXNzQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Zm9y
Y2VQcmVzc0F0UG9pbnQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdG
cm9tUG9pbnRUb1BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRv
ciBfY3JlYXRlSU9ISURFdmVudFR5cGU6XSk6CisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9y
IHNlbmRUYXBzOmxvY2F0aW9uOndpdGhOdW1iZXJPZlRvdWNoZXM6Y29tcGxldGlvbkJsb2NrOl0p
OgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBjbGVhclRhcDpdKToKKyAgICAgICAgKC1b
SElERXZlbnRHZW5lcmF0b3IgbG9uZ1ByZXNzVGltZXJDYWxsOl0pOgorICAgICAgICAoLVtISURF
dmVudEdlbmVyYXRvciBsb25nUHJlc3NGaW5pc2g6Y29tcGxldGlvbkJsb2NrOl0pOgorICAgICAg
ICAoLVtISURFdmVudEdlbmVyYXRvciBsb25nUHJlc3M6Y29tcGxldGlvbkJsb2NrOl0pOgorICAg
ICAgICAoLVtISURFdmVudEdlbmVyYXRvciBmb3JjZVByZXNzOmNvbXBsZXRpb25CbG9jazpdKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNzQXRQb2ludCk6Cisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Zm9yY2VQcmVzc0F0UG9pbnQpOgorICAg
ICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KTogRGVs
ZXRlZC4KKwogMjAxNi0wOS0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNjIyMiBhbmQgcjIwNjIy
Ny4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbQkocmV2aXNpb24gMjA2MjM3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9z
L1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsMTAg
QEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvdWJsZVRhcEF0UG9pbgogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KGxvbmcgc3RhcnRYLCBsb25nIHN0YXJ0
WSwgbG9uZyBlbmRYLCBsb25nIGVuZFksIGRvdWJsZSBkdXJhdGlvblNlY29uZHMsIEpTVmFsdWVS
ZWYgY2FsbGJhY2spCiB7CiB9CisgICAgCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1By
ZXNzQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZikKK3sKK30KIAogdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OnN0eWx1c0Rvd25BdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9hdCBh
emltdXRoQW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNzdXJlLCBKU1ZhbHVl
UmVmIGNhbGxiYWNrKQogewpJbmRleDogVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyMDYyMzcpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDEwIEBAIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb3VibGVUYXBBdFBvaW4KIHZvaWQgVUlTY3JpcHRDb250
cm9sbGVyOjpkcmFnRnJvbVBvaW50VG9Qb2ludChsb25nIHN0YXJ0WCwgbG9uZyBzdGFydFksIGxv
bmcgZW5kWCwgbG9uZyBlbmRZLCBkb3VibGUgZHVyYXRpb25TZWNvbmRzLCBKU1ZhbHVlUmVmIGNh
bGxiYWNrKQogewogfQorICAgIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmxvbmdQcmVzc0F0
UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYpCit7Cit9CiAKIHZvaWQgVUlTY3JpcHRD
b250cm9sbGVyOjpzdHlsdXNEb3duQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxvYXQgYXppbXV0
aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgSlNWYWx1ZVJlZiBj
YWxsYmFjaykKIHsKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMDYyMzcp
CisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdHlsdXNVcEF0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYgY2FsbGJhY2spOwog
ICAgIHZvaWQgc3R5bHVzVGFwQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxvYXQgYXppbXV0aEFu
Z2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgSlNWYWx1ZVJlZiBjYWxs
YmFjayk7CiAKKyAgICB2b2lkIGxvbmdQcmVzc0F0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFs
dWVSZWYgY2FsbGJhY2spOworICAgIAogICAgIHZvaWQgdHlwZUNoYXJhY3RlclVzaW5nSGFyZHdh
cmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwog
ICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0
ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2luZ0hhcmR3YXJlS2V5
Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKSW5kZXg6
IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0
Q29udHJvbGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAkocmV2aXNpb24gMjA2
MjM3KQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3Mv
VUlTY3JpcHRDb250cm9sbGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQCBp
bnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKICAgICB2b2lkIGRvdWJsZVRhcEF0UG9pbnQo
bG9uZyB4LCBsb25nIHksIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBkcmFnRnJvbVBvaW50
VG9Qb2ludChsb25nIHN0YXJ0WCwgbG9uZyBzdGFydFksIGxvbmcgZW5kWCwgbG9uZyBlbmRZLCBk
b3VibGUgZHVyYXRpb25TZWNvbmRzLCBvYmplY3QgY2FsbGJhY2spOwogCisgICAgdm9pZCBsb25n
UHJlc3NBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBvYmplY3QgY2FsbGJhY2spOworCiAgICAgdm9p
ZCBzdHlsdXNEb3duQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxvYXQgYXppbXV0aEFuZ2xlLCBm
bG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgb2JqZWN0IGNhbGxiYWNrKTsKICAg
ICB2b2lkIHN0eWx1c01vdmVUb1BvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9hdCBhemltdXRoQW5n
bGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNzdXJlLCBvYmplY3QgY2FsbGJhY2sp
OwogICAgIHZvaWQgc3R5bHVzVXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBvYmplY3QgY2FsbGJh
Y2spOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVy
YXRvci5oCShyZXZpc2lvbiAyMDYyMzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9I
SURFdmVudEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw5IEBACiAtICh2
b2lkKWRvdWJsZVRhcDooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4p
KHZvaWQpKWNvbXBsZXRpb25CbG9jazsKIC0gKHZvaWQpdHdvRmluZ2VyVGFwOihDR1BvaW50KWxv
Y2F0aW9uIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrOwog
CisvLyBTcGVjaWFsIFByZXNzZXMKKy0gKHZvaWQpbG9uZ1ByZXNzOihDR1BvaW50KWxvY2F0aW9u
IGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrOworCiAvLyBE
cmFncwogLSAodm9pZClkcmFnV2l0aFN0YXJ0UG9pbnQ6KENHUG9pbnQpc3RhcnRMb2NhdGlvbiBl
bmRQb2ludDooQ0dQb2ludCllbmRMb2NhdGlvbiBkdXJhdGlvbjooZG91YmxlKXNlY29uZHMgY29t
cGxldGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7CiAKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCShyZXZp
c2lvbiAyMDYyMzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVy
YXRvci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIFNPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SSyhCYWNrQm9hcmRTZXJ2aWNlcykKIFNPRlRfTElOSyhCYWNrQm9hcmRTZXJ2
aWNlcywgQktTSElERXZlbnRTZXREaWdpdGl6ZXJJbmZvLCB2b2lkLCAoSU9ISURFdmVudFJlZiBk
aWdpdGl6ZXJFdmVudCwgdWludDMyX3QgY29udGV4dElELCB1aW50OF90IHN5c3RlbUdlc3R1cmVp
c1Bvc3NpYmxlLCB1aW50OF90IGlzU3lzdGVtR2VzdHVyZVN0YXRlQ2hhbmdlRXZlbnQsIENGU3Ry
aW5nUmVmIGRpc3BsYXlVVUlELCBDRlRpbWVJbnRlcnZhbCBpbml0aWFsVG91Y2hUaW1lc3RhbXAs
IGZsb2F0IG1heEZvcmNlKSwgKGRpZ2l0aXplckV2ZW50LCBjb250ZXh0SUQsIHN5c3RlbUdlc3R1
cmVpc1Bvc3NpYmxlLCBpc1N5c3RlbUdlc3R1cmVTdGF0ZUNoYW5nZUV2ZW50LCBkaXNwbGF5VVVJ
RCwgaW5pdGlhbFRvdWNoVGltZXN0YW1wLCBtYXhGb3JjZSkpOwogCi1zdGF0aWMgY29uc3QgTlNU
aW1lSW50ZXJ2YWwgZmluZ2VyTGlmdERlbGF5ID0gNWU3Owotc3RhdGljIGNvbnN0IE5TVGltZUlu
dGVydmFsIG11bHRpVGFwSW50ZXJ2YWwgPSAxNWU3Oworc3RhdGljIGNvbnN0IGxvbmcgZmluZ2Vy
TGlmdERlbGF5ID0gNWU3Oworc3RhdGljIGNvbnN0IGxvbmcgbXVsdGlUYXBJbnRlcnZhbCA9IDE1
ZTc7CiBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgZmluZ2VyTW92ZUludGVydmFsID0gMC4w
MTY7CitzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgbG9uZ1ByZXNzSG9sZERlbGF5ID0gMi4w
Owogc3RhdGljIGNvbnN0IElPSElERmxvYXQgZGVmYXVsdE1ham9yUmFkaXVzID0gNTsKIHN0YXRp
YyBjb25zdCBJT0hJREZsb2F0IGRlZmF1bHRQYXRoUHJlc3N1cmUgPSAwOwogc3RhdGljIGNvbnN0
IE5TVUludGVnZXIgbWF4VG91Y2hDb3VudCA9IDU7CkBAIC01Miw5ICs1Myw2IEBAIHR5cGVkZWYg
ZW51bSB7CiAgICAgSGFuZEV2ZW50TW92ZWQsCiAgICAgSGFuZEV2ZW50Q2hvcmRDaGFuZ2VkLAog
ICAgIEhhbmRFdmVudExpZnRlZCwKLSAgICBIYW5kRXZlbnRDYW5jZWxlZCwKLSAgICBIYW5kRXZl
bnRJblJhbmdlLAotICAgIEhhbmRFdmVudEluUmFuZ2VMaWZ0LAogICAgIFN0eWx1c0V2ZW50VG91
Y2hlZCwKICAgICBTdHlsdXNFdmVudE1vdmVkLAogICAgIFN0eWx1c0V2ZW50TGlmdGVkLApAQCAt
MTU4LDkgKzE1Niw3IEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRUeXBlOigK
ICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRDaG9yZENoYW5nZWQpIHsKICAg
ICAgICAgZXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2ZW50UG9zaXRpb247CiAgICAgICAg
IGV2ZW50TWFzayB8PSBrSU9ISUREaWdpdGl6ZXJFdmVudEF0dHJpYnV0ZTsKLSAgICB9IGVsc2Ug
aWYgKGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRUb3VjaGVkICB8fCBldmVudFR5cGUgPT0gSGFuZEV2
ZW50Q2FuY2VsZWQpIHsKLSAgICAgICAgZXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2ZW50
SWRlbnRpdHk7Ci0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gSGFuZEV2ZW50TGlmdGVkKQor
ICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IEhhbmRFdmVudFRvdWNoZWQgfHwgZXZlbnRUeXBl
ID09IEhhbmRFdmVudExpZnRlZCkKICAgICAgICAgZXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXpl
ckV2ZW50SWRlbnRpdHk7CiAKICAgICB1aW50NjRfdCBtYWNoVGltZSA9IG1hY2hfYWJzb2x1dGVf
dGltZSgpOwpAQCAtMTg4LDcgKzE4NCw3IEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElE
RXZlbnRUeXBlOigKICAgICAgICAgICAgICAgICBwb2ludEluZm8tPnBhdGhQcmVzc3VyZSA9IGRl
ZmF1bHRQYXRoUHJlc3N1cmU7CiAgICAgICAgICAgICBpZiAoIXBvaW50SW5mby0+cGF0aFByb3hp
bWl0eSkKICAgICAgICAgICAgICAgICBwb2ludEluZm8tPnBhdGhQcm94aW1pdHkgPSBrR1NFdmVu
dFBhdGhJbmZvSW5Ub3VjaCB8IGtHU0V2ZW50UGF0aEluZm9JblJhbmdlOwotICAgICAgICB9IGVs
c2UgaWYgKGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRMaWZ0ZWQgfHwgZXZlbnRUeXBlID09IEhhbmRF
dmVudENhbmNlbGVkIHx8IGV2ZW50VHlwZSA9PSBTdHlsdXNFdmVudExpZnRlZCkgeworICAgICAg
ICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRMaWZ0ZWQgfHwgZXZlbnRUeXBlID09
IFN0eWx1c0V2ZW50TGlmdGVkKSB7CiAgICAgICAgICAgICBwb2ludEluZm8tPnBhdGhNYWpvclJh
ZGl1cyA9IDA7CiAgICAgICAgICAgICBwb2ludEluZm8tPnBhdGhQcmVzc3VyZSA9IDA7CiAgICAg
ICAgICAgICBwb2ludEluZm8tPnBhdGhQcm94aW1pdHkgPSAwOwpAQCAtNTA1LDggKzUwMSw4IEBA
IC0gKHZvaWQpc3R5bHVzVGFwQXRQb2ludDooQ0dQb2ludClsb2NhdGkKIAogLSAodm9pZClzZW5k
VGFwczooaW50KXRhcENvdW50IGxvY2F0aW9uOihDR1BvaW50KWxvY2F0aW9uIHdpdGhOdW1iZXJP
ZlRvdWNoZXM6KGludCl0b3VjaENvdW50IGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkJsb2NrCiB7Ci0gICAgc3RydWN0IHRpbWVzcGVjIGRvdWJsZURlbGF5ID0geyAw
LCBzdGF0aWNfY2FzdDxsb25nPihtdWx0aVRhcEludGVydmFsKSB9OwotICAgIHN0cnVjdCB0aW1l
c3BlYyBwcmVzc0RlbGF5ID0geyAwLCBzdGF0aWNfY2FzdDxsb25nPihmaW5nZXJMaWZ0RGVsYXkp
IH07CisgICAgc3RydWN0IHRpbWVzcGVjIGRvdWJsZURlbGF5ID0geyAwLCBtdWx0aVRhcEludGVy
dmFsIH07CisgICAgc3RydWN0IHRpbWVzcGVjIHByZXNzRGVsYXkgPSB7IDAsIGZpbmdlckxpZnRE
ZWxheSB9OwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0YXBDb3VudDsgaSsrKSB7CiAgICAg
ICAgIFtzZWxmIHRvdWNoRG93bjpsb2NhdGlvbiB0b3VjaENvdW50OnRvdWNoQ291bnRdOwpAQCAt
NTE5LDYgKzUxNSwxNCBAQCAtICh2b2lkKXNlbmRUYXBzOihpbnQpdGFwQ291bnQgbG9jYXRpb246
CiAgICAgW3NlbGYgX3NlbmRNYXJrZXJISURFdmVudFdpdGhDb21wbGV0aW9uQmxvY2s6Y29tcGxl
dGlvbkJsb2NrXTsKIH0KIAorLSAodm9pZCljbGVhclRhcDooQ0dQb2ludClsb2NhdGlvbgorewor
ICAgIFtzZWxmIHRvdWNoRG93bjpsb2NhdGlvbiB0b3VjaENvdW50OjFdOworICAgIHN0cnVjdCB0
aW1lc3BlYyBwcmVzc0RlbGF5ID0geyAwLCBmaW5nZXJMaWZ0RGVsYXkgfTsKKyAgICBuYW5vc2xl
ZXAoJnByZXNzRGVsYXksIDApOworICAgIFtzZWxmIGxpZnRVcDpsb2NhdGlvbiB0b3VjaENvdW50
OjFdOworfQorCiAtICh2b2lkKXRhcDooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxvY2s6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jawogewogICAgIFtzZWxmIHNlbmRUYXBzOjEg
bG9jYXRpb246bG9jYXRpb24gd2l0aE51bWJlck9mVG91Y2hlczoxIGNvbXBsZXRpb25CbG9jazpj
b21wbGV0aW9uQmxvY2tdOwpAQCAtNTM0LDYgKzUzOCwzMCBAQCAtICh2b2lkKXR3b0ZpbmdlclRh
cDooQ0dQb2ludClsb2NhdGlvbiBjCiAgICAgW3NlbGYgc2VuZFRhcHM6MSBsb2NhdGlvbjpsb2Nh
dGlvbiB3aXRoTnVtYmVyT2ZUb3VjaGVzOjIgY29tcGxldGlvbkJsb2NrOmNvbXBsZXRpb25CbG9j
a107CiB9CiAKKy0gKHZvaWQpbG9uZ1ByZXNzVGltZXJGaXJlZDooTlNUaW1lciAqKXRpbWVyCit7
CisgICAgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IHRpbWVyLnVzZXJJbmZvOworICAgIFtzZWxm
IGxvbmdQcmVzc0ZpbmlzaDpbdXNlckluZm9bQCJsb2NhdGlvbiJdIENHUG9pbnRWYWx1ZV0gY29t
cGxldGlvbkJsb2NrOnVzZXJJbmZvW0AiYmxvY2siXV07Cit9CisKKy0gKHZvaWQpbG9uZ1ByZXNz
RmluaXNoOihDR1BvaW50KWxvY2F0aW9uIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkJsb2NrCit7CisgICAgW3NlbGYgbGlmdFVwOmxvY2F0aW9uXTsKKyAgICBbc2Vs
ZiBfc2VuZE1hcmtlckhJREV2ZW50V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2td
OworfQorCistICh2b2lkKWxvbmdQcmVzczooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxv
Y2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jaworeworCisgICAgW3NlbGYgdG91Y2hE
b3duOmxvY2F0aW9uIHRvdWNoQ291bnQ6MV07CisgICAgdm9pZCAoXmNvbXBsZXRpb25CbG9ja0Nv
cHkpKCkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25CbG9jayk7CisgICAgTlNEaWN0aW9uYXJ5ICpp
bmZvID0gQHsKKyAgICAgICAgQCJibG9jayI6Y29tcGxldGlvbkJsb2NrQ29weSwKKyAgICAgICAg
QCJsb2NhdGlvbiI6W05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpsb2NhdGlvbl19OworICAgIFtO
U1RpbWVyIHNjaGVkdWxlZFRpbWVyV2l0aFRpbWVJbnRlcnZhbDpsb25nUHJlc3NIb2xkRGVsYXkg
dGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGxvbmdQcmVzc1RpbWVyRmlyZWQ6KSB1c2Vy
SW5mbzppbmZvIHJlcGVhdHM6Tk9dOworICAgIFtjb21wbGV0aW9uQmxvY2tDb3B5IHJlbGVhc2Vd
OworfQorCiAtICh2b2lkKWRyYWdXaXRoU3RhcnRQb2ludDooQ0dQb2ludClzdGFydExvY2F0aW9u
IGVuZFBvaW50OihDR1BvaW50KWVuZExvY2F0aW9uIGR1cmF0aW9uOihkb3VibGUpc2Vjb25kcyBj
b21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jawogewogICAgIFtz
ZWxmIHRvdWNoRG93bjpzdGFydExvY2F0aW9uIHRvdWNoQ291bnQ6MV07CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCShy
ZXZpc2lvbiAyMDYyMzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw2ICsxODcsMTcgQEAgdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUbwogICAgICAgICBtX2NvbnRleHQtPmFz
eW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwogICAgIH1dOwogfQorICAgIAordm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OmxvbmdQcmVzc0F0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVS
ZWYgY2FsbGJhY2spCit7CisgICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJl
cGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7Cisg
ICAgCisgICAgW1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdlbmVyYXRvcl0gbG9u
Z1ByZXNzOmdsb2JhbFRvQ29udGVudENvb3JkaW5hdGVzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSwgeCwgeSkgY29tcGxldGlvbkJsb2Nr
Ol57CisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOworICAgIH1dOworfQog
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXli
b2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDYyMzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wOS0yMSAgTWVnYW4gR2FyZG5lciAgPG1lZ2Fu
X2dhcmRuZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBsb25nIHByZXNzIHNlbGVjdGlvbiB0
ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIz
NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCB0ZXN0IGZvciBsb25nIHByZXNzIHNlbGVjdGlvbi4KKworICAgICAgICAqIGZhc3QvZXZlbnRz
L3RvdWNoL2lvcy9sb25nLXByZXNzLXRvLXNlbGVjdC10ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRl
eHQuaHRtbDogQWRkZWQuCisKIDIwMTYtMDktMjEgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcHJvdmUgb3V0cHV0IG9mIFRlc3RI
YXJuZXNzLmV4cGVjdCogZmFpbHVyZXMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2lvcy9sb25nLXByZXNzLXRvLXNlbGVjdC10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVzcy10by1zZWxl
Y3QtdGV4dC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorUEFTUzogc3VjY2Vzc2Z1bGx5IHNlbGVjdGVk
IHRoZSB3b3JkIFByZXNzTWUKK0RvbmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Rv
dWNoL2lvcy9sb25nLXByZXNzLXRvLXNlbGVjdC10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3Mv
bG9uZy1wcmVzcy10by1zZWxlY3QtdGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGdldFVJU2NyaXB0KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGAKKyAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICB1aUNvbnRyb2xsZXIubG9uZ1ByZXNzQXRQb2ludCgzMCwgMjAsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgiRG9uZSIp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSkoKTtgCisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF0
ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgdmFyIG91dHB1dCA9ICcnOworICAgICAgICAgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKyAgICAgICAgICAgIHRhcmdldC5hZGRFdmVudExp
c3RlbmVyKCd0b3VjaGVuZCcsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgb3V0
cHV0ICs9ICdQQVNTOiBzdWNjZXNzZnVsbHkgc2VsZWN0ZWQgdGhlIHdvcmQgJzsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9u
KHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0gZG9jdW1lbnQu
Z2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVj
dGlvbiE9PSIiKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IHNlbGVjdGlvbjsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0
ICs9ICdGQUlMOiBmYWlsZWQgdG8gc2VsZWN0IGEgd29yZCBhcyBhIHJlc3VsdCBvZiBhIGxvbmcg
cHJlc3MnOworICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJzxicj4nOworICAgICAgICAg
ICAgICAgICAgICBvdXRwdXQgKz0gcmVzdWx0OworICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0JykuaW5uZXJIVE1MID0gb3V0cHV0OworICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdsb2FkJywgcnVuVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4K
KyAgICAgICAgI3RhcmdldCB7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAg
ICAgd2lkdGg6IDIwMHB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogc2lsdmVyOwor
ICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVu
dD0iaW5pdGlhbC1zY2FsZT0xIj4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFyZ2V0Ij4K
KwlQcmVzc01lPHA+CisgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIFVJU2NyaXB0Q29udHJvbGxlciB0
byBydW4uCis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289609</attachid>
            <date>2016-09-22 14:55:23 -0700</date>
            <delta_ts>2016-09-22 15:36:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162367-20160922145233.patch</filename>
            <type>text/plain</type>
            <size>15386</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNjI0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ1IEBACisyMDE2LTA5LTIxICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIHRlc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IHRvIFVJ
U2NyaXB0Q29udHJvbGxlciB0byBzeW50aGVzaXplIGxvbmcgcHJlc3MgZXZlbnRzIG9uIGlPUy4g
VGhpcyByZXF1aXJlZCBhZGRpbmcgbG9uZy1wcmVzcyBmdW5jdGlvbmFsaXR5IHRvIEhJREV2ZW50
R2VuZXJhdG9yLgorCisgICAgICAgIEhJREV2ZW50R2VuZXJhdG9yIHNlbmRzIHRoZSB0b3VjaERv
d24sIGJ1dCBtdXN0IHRoZW4gc2VuZCB0aGUgdG91Y2hVcCBvbiBhIHRpbWVyIChyYXRoZXIgdGhh
biBzbGVlcGluZywgYXMgd2UgZG8gZm9yIG90aGVyIGV2ZW50cykgaW4gb3JkZXIgZm9yIHRoZSBn
ZXN0dXJlIHJlY29nbml6ZXJzIHRvIGNvcnJlY3RseSBkZXRlY3QgYSBsb25nIHByZXNzLgorCisg
ICAgICAgIFVzZSB0aGUgbG9uZyBwcmVzcyBzeW50aGVzaXMgaW4gYSB0ZXN0IHRoYXQgZGV0ZWN0
cyB3aGV0aGVyIGEgbG9uZyBwcmVzcyBnZXN0dXJlIHRyaWdnZXJzIHRleHQgc2VsZWN0aW9uLgor
CisgICAgICAgIEZpeGVkIGluY29ycmVjdGx5IHR5cGVkIGNvbnN0YXRzLiBOU1RpbWVJbnRlcnZh
bCBpcyBpbiBzZWNvbmRzLCBvcmlnaWFsIG51bWJlcnMgd2VyZSBuYW5vc2Vjb25kcyBhbmQgdHlw
ZWRlZmVkIHRvIGxvbmcgd2l0aG91dCByZWd1YXJkIHRvIHRoZSB0eXBlIGRpZmZlcmVuY2VzLgor
CisgICAgICAgIENsZWFuZWQgdXAgdW51c2VkIGVudW0gdHlwZXMuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpV
SVNjcmlwdENvbnRyb2xsZXI6OmxvbmdQcmVzc0F0UG9pbnQpOgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXI6OmZvcmNlUHJlc3NBdFBvaW50KToKKyAgICAgICAgKFdUUjo6VUlTY3Jp
cHRDb250cm9sbGVyOjpkcmFnRnJvbVBvaW50VG9Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbnRyaWJ1dG9ycy5qc29uOgorICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVy
Ojpsb25nUHJlc3NBdFBvaW50KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpm
b3JjZVByZXNzQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZHJh
Z0Zyb21Qb2ludFRvUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW0hJREV2ZW50R2VuZXJh
dG9yIF9jcmVhdGVJT0hJREV2ZW50VHlwZTpdKToKKyAgICAgICAgKC1bSElERXZlbnRHZW5lcmF0
b3Igc2VuZFRhcHM6bG9jYXRpb246d2l0aE51bWJlck9mVG91Y2hlczpjb21wbGV0aW9uQmxvY2s6
XSk6CisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIGNsZWFyVGFwOl0pOgorICAgICAgICAo
LVtISURFdmVudEdlbmVyYXRvciBsb25nUHJlc3NUaW1lckNhbGw6XSk6CisgICAgICAgICgtW0hJ
REV2ZW50R2VuZXJhdG9yIGxvbmdQcmVzc0ZpbmlzaDpjb21wbGV0aW9uQmxvY2s6XSk6CisgICAg
ICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIGxvbmdQcmVzczpjb21wbGV0aW9uQmxvY2s6XSk6Cisg
ICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIGZvcmNlUHJlc3M6Y29tcGxldGlvbkJsb2NrOl0p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpsb25nUHJlc3NBdFBvaW50KToK
KyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpmb3JjZVByZXNzQXRQb2ludCk6Cisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZHJhZ0Zyb21Qb2ludFRvUG9pbnQpOiBE
ZWxldGVkLgorCiAyMDE2LTA5LTIxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA2MjIyIGFuZCByMjA2
MjI3LgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tCShyZXZpc2lvbiAyMDYyMzcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw2ICs4Nywx
MCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG91YmxlVGFwQXRQb2luCiB2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6ZHJhZ0Zyb21Qb2ludFRvUG9pbnQobG9uZyBzdGFydFgsIGxvbmcgc3Rh
cnRZLCBsb25nIGVuZFgsIGxvbmcgZW5kWSwgZG91YmxlIGR1cmF0aW9uU2Vjb25kcywgSlNWYWx1
ZVJlZiBjYWxsYmFjaykKIHsKIH0KKyAgICAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpsb25n
UHJlc3NBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBKU1ZhbHVlUmVmKQoreworfQogCiB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6c3R5bHVzRG93bkF0UG9pbnQobG9uZyB4LCBsb25nIHksIGZsb2F0
IGF6aW11dGhBbmdsZSwgZmxvYXQgYWx0aXR1ZGVBbmdsZSwgZmxvYXQgcHJlc3N1cmUsIEpTVmFs
dWVSZWYgY2FsbGJhY2spCiB7CkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDIwNjIzNykKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksMTAgQEAg
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvdWJsZVRhcEF0UG9pbgogdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KGxvbmcgc3RhcnRYLCBsb25nIHN0YXJ0WSwg
bG9uZyBlbmRYLCBsb25nIGVuZFksIGRvdWJsZSBkdXJhdGlvblNlY29uZHMsIEpTVmFsdWVSZWYg
Y2FsbGJhY2spCiB7CiB9CisgICAgCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNz
QXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZikKK3sKK30KIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OnN0eWx1c0Rvd25BdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9hdCBhemlt
dXRoQW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNzdXJlLCBKU1ZhbHVlUmVm
IGNhbGxiYWNrKQogewpJbmRleDogVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDIwNjIz
NykKKysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0eWx1c1VwQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7
CiAgICAgdm9pZCBzdHlsdXNUYXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9hdCBhemltdXRo
QW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNzdXJlLCBKU1ZhbHVlUmVmIGNh
bGxiYWNrKTsKIAorICAgIHZvaWQgbG9uZ1ByZXNzQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CisgICAgCiAgICAgdm9pZCB0eXBlQ2hhcmFjdGVyVXNpbmdIYXJk
d2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7
CiAgICAgdm9pZCBrZXlEb3duVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJh
Y3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBrZXlVcFVzaW5nSGFyZHdhcmVL
ZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwpJbmRl
eDogVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3Jp
cHRDb250cm9sbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAy
MDYyMzcpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5n
cy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBA
IGludGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogICAgIHZvaWQgZG91YmxlVGFwQXRQb2lu
dChsb25nIHgsIGxvbmcgeSwgb2JqZWN0IGNhbGxiYWNrKTsKICAgICB2b2lkIGRyYWdGcm9tUG9p
bnRUb1BvaW50KGxvbmcgc3RhcnRYLCBsb25nIHN0YXJ0WSwgbG9uZyBlbmRYLCBsb25nIGVuZFks
IGRvdWJsZSBkdXJhdGlvblNlY29uZHMsIG9iamVjdCBjYWxsYmFjayk7CiAKKyAgICB2b2lkIGxv
bmdQcmVzc0F0UG9pbnQobG9uZyB4LCBsb25nIHksIG9iamVjdCBjYWxsYmFjayk7CisKICAgICB2
b2lkIHN0eWx1c0Rvd25BdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9hdCBhemltdXRoQW5nbGUs
IGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNzdXJlLCBvYmplY3QgY2FsbGJhY2spOwog
ICAgIHZvaWQgc3R5bHVzTW92ZVRvUG9pbnQobG9uZyB4LCBsb25nIHksIGZsb2F0IGF6aW11dGhB
bmdsZSwgZmxvYXQgYWx0aXR1ZGVBbmdsZSwgZmxvYXQgcHJlc3N1cmUsIG9iamVjdCBjYWxsYmFj
ayk7CiAgICAgdm9pZCBzdHlsdXNVcEF0UG9pbnQobG9uZyB4LCBsb25nIHksIG9iamVjdCBjYWxs
YmFjayk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2Vu
ZXJhdG9yLmgJKHJldmlzaW9uIDIwNjIzNykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L0hJREV2ZW50R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDkgQEAKIC0g
KHZvaWQpZG91YmxlVGFwOihDR1BvaW50KWxvY2F0aW9uIGNvbXBsZXRpb25CbG9jazoodm9pZCAo
Xikodm9pZCkpY29tcGxldGlvbkJsb2NrOwogLSAodm9pZCl0d29GaW5nZXJUYXA6KENHUG9pbnQp
bG9jYXRpb24gY29tcGxldGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7
CiAKKy8vIExvbmcgUHJlc3MKKy0gKHZvaWQpbG9uZ1ByZXNzOihDR1BvaW50KWxvY2F0aW9uIGNv
bXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrOworCiAvLyBEcmFn
cwogLSAodm9pZClkcmFnV2l0aFN0YXJ0UG9pbnQ6KENHUG9pbnQpc3RhcnRMb2NhdGlvbiBlbmRQ
b2ludDooQ0dQb2ludCllbmRMb2NhdGlvbiBkdXJhdGlvbjooZG91YmxlKXNlY29uZHMgY29tcGxl
dGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7CiAKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCShyZXZpc2lv
biAyMDYyMzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRv
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIFNPRlRfTElOS19QUklWQVRF
X0ZSQU1FV09SSyhCYWNrQm9hcmRTZXJ2aWNlcykKIFNPRlRfTElOSyhCYWNrQm9hcmRTZXJ2aWNl
cywgQktTSElERXZlbnRTZXREaWdpdGl6ZXJJbmZvLCB2b2lkLCAoSU9ISURFdmVudFJlZiBkaWdp
dGl6ZXJFdmVudCwgdWludDMyX3QgY29udGV4dElELCB1aW50OF90IHN5c3RlbUdlc3R1cmVpc1Bv
c3NpYmxlLCB1aW50OF90IGlzU3lzdGVtR2VzdHVyZVN0YXRlQ2hhbmdlRXZlbnQsIENGU3RyaW5n
UmVmIGRpc3BsYXlVVUlELCBDRlRpbWVJbnRlcnZhbCBpbml0aWFsVG91Y2hUaW1lc3RhbXAsIGZs
b2F0IG1heEZvcmNlKSwgKGRpZ2l0aXplckV2ZW50LCBjb250ZXh0SUQsIHN5c3RlbUdlc3R1cmVp
c1Bvc3NpYmxlLCBpc1N5c3RlbUdlc3R1cmVTdGF0ZUNoYW5nZUV2ZW50LCBkaXNwbGF5VVVJRCwg
aW5pdGlhbFRvdWNoVGltZXN0YW1wLCBtYXhGb3JjZSkpOwogCi1zdGF0aWMgY29uc3QgTlNUaW1l
SW50ZXJ2YWwgZmluZ2VyTGlmdERlbGF5ID0gNWU3Owotc3RhdGljIGNvbnN0IE5TVGltZUludGVy
dmFsIG11bHRpVGFwSW50ZXJ2YWwgPSAxNWU3Oworc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFs
IGZpbmdlckxpZnREZWxheSA9IDAuMDU7CitzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgbXVs
dGlUYXBJbnRlcnZhbCA9IDAuMTU7CiBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgZmluZ2Vy
TW92ZUludGVydmFsID0gMC4wMTY7CitzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgbG9uZ1By
ZXNzSG9sZERlbGF5ID0gMi4wOwogc3RhdGljIGNvbnN0IElPSElERmxvYXQgZGVmYXVsdE1ham9y
UmFkaXVzID0gNTsKIHN0YXRpYyBjb25zdCBJT0hJREZsb2F0IGRlZmF1bHRQYXRoUHJlc3N1cmUg
PSAwOwogc3RhdGljIGNvbnN0IE5TVUludGVnZXIgbWF4VG91Y2hDb3VudCA9IDU7CkBAIC01Myw4
ICs1NCw2IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgSGFuZEV2ZW50Q2hvcmRDaGFuZ2VkLAogICAg
IEhhbmRFdmVudExpZnRlZCwKICAgICBIYW5kRXZlbnRDYW5jZWxlZCwKLSAgICBIYW5kRXZlbnRJ
blJhbmdlLAotICAgIEhhbmRFdmVudEluUmFuZ2VMaWZ0LAogICAgIFN0eWx1c0V2ZW50VG91Y2hl
ZCwKICAgICBTdHlsdXNFdmVudE1vdmVkLAogICAgIFN0eWx1c0V2ZW50TGlmdGVkLApAQCAtMTU4
LDkgKzE1Nyw3IEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRUeXBlOigKICAg
ICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRDaG9yZENoYW5nZWQpIHsKICAgICAg
ICAgZXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2ZW50UG9zaXRpb247CiAgICAgICAgIGV2
ZW50TWFzayB8PSBrSU9ISUREaWdpdGl6ZXJFdmVudEF0dHJpYnV0ZTsKLSAgICB9IGVsc2UgaWYg
KGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRUb3VjaGVkICB8fCBldmVudFR5cGUgPT0gSGFuZEV2ZW50
Q2FuY2VsZWQpIHsKLSAgICAgICAgZXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2ZW50SWRl
bnRpdHk7Ci0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gSGFuZEV2ZW50TGlmdGVkKQorICAg
IH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IEhhbmRFdmVudFRvdWNoZWQgfHwgZXZlbnRUeXBlID09
IEhhbmRFdmVudENhbmNlbGVkIHx8IGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRMaWZ0ZWQpCiAgICAg
ICAgIGV2ZW50TWFzayB8PSBrSU9ISUREaWdpdGl6ZXJFdmVudElkZW50aXR5OwogCiAgICAgdWlu
dDY0X3QgbWFjaFRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKQEAgLTQ5NCw3ICs0OTEsNyBA
QCAtICh2b2lkKXN0eWx1c1VwQXRQb2ludDooQ0dQb2ludClsb2NhdGlvCiAKIC0gKHZvaWQpc3R5
bHVzVGFwQXRQb2ludDooQ0dQb2ludClsb2NhdGlvbiBhemltdXRoQW5nbGU6KENHRmxvYXQpYXpp
bXV0aEFuZ2xlIGFsdGl0dWRlQW5nbGU6KENHRmxvYXQpYWx0aXR1ZGVBbmdsZSBwcmVzc3VyZToo
Q0dGbG9hdClwcmVzc3VyZSBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25CbG9jawogewotICAgIHN0cnVjdCB0aW1lc3BlYyBwcmVzc0RlbGF5ID0geyAwLCBzdGF0aWNf
Y2FzdDxsb25nPihmaW5nZXJMaWZ0RGVsYXkpIH07CisgICAgc3RydWN0IHRpbWVzcGVjIHByZXNz
RGVsYXkgPSB7IDAsIHN0YXRpY19jYXN0PGxvbmc+KGZpbmdlckxpZnREZWxheSAqIG5hbm9zZWNv
bmRzUGVyU2Vjb25kKSB9OwogCiAgICAgW3NlbGYgc3R5bHVzRG93bkF0UG9pbnQ6bG9jYXRpb24g
YXppbXV0aEFuZ2xlOmF6aW11dGhBbmdsZSBhbHRpdHVkZUFuZ2xlOmFsdGl0dWRlQW5nbGUgcHJl
c3N1cmU6cHJlc3N1cmVdOwogICAgIG5hbm9zbGVlcCgmcHJlc3NEZWxheSwgMCk7CkBAIC01MDUs
OCArNTAyLDggQEAgLSAodm9pZClzdHlsdXNUYXBBdFBvaW50OihDR1BvaW50KWxvY2F0aQogCiAt
ICh2b2lkKXNlbmRUYXBzOihpbnQpdGFwQ291bnQgbG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24g
d2l0aE51bWJlck9mVG91Y2hlczooaW50KXRvdWNoQ291bnQgY29tcGxldGlvbkJsb2NrOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2sKIHsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgZG91Ymxl
RGVsYXkgPSB7IDAsIHN0YXRpY19jYXN0PGxvbmc+KG11bHRpVGFwSW50ZXJ2YWwpIH07Ci0gICAg
c3RydWN0IHRpbWVzcGVjIHByZXNzRGVsYXkgPSB7IDAsIHN0YXRpY19jYXN0PGxvbmc+KGZpbmdl
ckxpZnREZWxheSkgfTsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgZG91YmxlRGVsYXkgPSB7IDAsIHN0
YXRpY19jYXN0PGxvbmc+KG11bHRpVGFwSW50ZXJ2YWwgKiBuYW5vc2Vjb25kc1BlclNlY29uZCkg
fTsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgcHJlc3NEZWxheSA9IHsgMCwgc3RhdGljX2Nhc3Q8bG9u
Zz4oZmluZ2VyTGlmdERlbGF5ICogbmFub3NlY29uZHNQZXJTZWNvbmQpIH07CiAKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHRhcENvdW50OyBpKyspIHsKICAgICAgICAgW3NlbGYgdG91Y2hEb3du
OmxvY2F0aW9uIHRvdWNoQ291bnQ6dG91Y2hDb3VudF07CkBAIC01MzQsNiArNTMxLDI5IEBAIC0g
KHZvaWQpdHdvRmluZ2VyVGFwOihDR1BvaW50KWxvY2F0aW9uIGMKICAgICBbc2VsZiBzZW5kVGFw
czoxIGxvY2F0aW9uOmxvY2F0aW9uIHdpdGhOdW1iZXJPZlRvdWNoZXM6MiBjb21wbGV0aW9uQmxv
Y2s6Y29tcGxldGlvbkJsb2NrXTsKIH0KIAorLSAodm9pZClsb25nUHJlc3NUaW1lckZpcmVkOihO
U1RpbWVyICopdGltZXIKK3sKKyAgICBOU0RpY3Rpb25hcnkgKnVzZXJJbmZvID0gdGltZXIudXNl
ckluZm87CisgICAgW3NlbGYgbG9uZ1ByZXNzRmluaXNoOlt1c2VySW5mb1tAImxvY2F0aW9uIl0g
Q0dQb2ludFZhbHVlXSBjb21wbGV0aW9uQmxvY2s6dXNlckluZm9bQCJibG9jayJdXTsKK30KKwor
LSAodm9pZClsb25nUHJlc3NGaW5pc2g6KENHUG9pbnQpbG9jYXRpb24gY29tcGxldGlvbkJsb2Nr
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2sKK3sKKyAgICBbc2VsZiBsaWZ0VXA6bG9j
YXRpb25dOworICAgIFtzZWxmIF9zZW5kTWFya2VySElERXZlbnRXaXRoQ29tcGxldGlvbkJsb2Nr
OmNvbXBsZXRpb25CbG9ja107Cit9CisKKy0gKHZvaWQpbG9uZ1ByZXNzOihDR1BvaW50KWxvY2F0
aW9uIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrCit7Cisg
ICAgW3NlbGYgdG91Y2hEb3duOmxvY2F0aW9uIHRvdWNoQ291bnQ6MV07CisgICAgdm9pZCAoXmNv
bXBsZXRpb25CbG9ja0NvcHkpKCkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25CbG9jayk7CisgICAg
TlNEaWN0aW9uYXJ5ICppbmZvID0gQHsKKyAgICAgICAgQCJibG9jayI6Y29tcGxldGlvbkJsb2Nr
Q29weSwKKyAgICAgICAgQCJsb2NhdGlvbiI6W05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpsb2Nh
dGlvbl19OworICAgIFtOU1RpbWVyIHNjaGVkdWxlZFRpbWVyV2l0aFRpbWVJbnRlcnZhbDpsb25n
UHJlc3NIb2xkRGVsYXkgdGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGxvbmdQcmVzc1Rp
bWVyRmlyZWQ6KSB1c2VySW5mbzppbmZvIHJlcGVhdHM6Tk9dOworICAgIEJsb2NrX3JlbGVhc2Uo
Y29tcGxldGlvbkJsb2NrQ29weSk7Cit9CisKIC0gKHZvaWQpZHJhZ1dpdGhTdGFydFBvaW50OihD
R1BvaW50KXN0YXJ0TG9jYXRpb24gZW5kUG9pbnQ6KENHUG9pbnQpZW5kTG9jYXRpb24gZHVyYXRp
b246KGRvdWJsZSlzZWNvbmRzIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkJsb2NrCiB7CiAgICAgW3NlbGYgdG91Y2hEb3duOnN0YXJ0TG9jYXRpb24gdG91Y2hDb3Vu
dDoxXTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlw
dENvbnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDIwNjIzNykKKysrIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg3
LDYgKzE4NywxNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZHJhZ0Zyb21Qb2ludFRvCiAg
ICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CiAgICAgfV07
CiB9CisgICAgCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNzQXRQb2ludChsb25n
IHgsIGxvbmcgeSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICB1bnNpZ25lZCBjYWxsYmFj
a0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5
cGVOb25QZXJzaXN0ZW50KTsKKyAgICAKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJ
REV2ZW50R2VuZXJhdG9yXSBsb25nUHJlc3M6Z2xvYmFsVG9Db250ZW50Q29vcmRpbmF0ZXMoVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpLCB4
LCB5KSBjb21wbGV0aW9uQmxvY2s6XnsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJh
Y2tJRCk7CisgICAgfV07Cit9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjp0eXBlQ2hhcmFj
dGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJl
ZiBjYWxsYmFjaykKIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjIzNykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA5LTIxICBN
ZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxv
bmcgcHJlc3Mgc2VsZWN0aW9uIHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MjM2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgZm9yIGxvbmcgcHJlc3Mgc2VsZWN0aW9uLgorCisg
ICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9pb3MvbG9u
Zy1wcmVzcy10by1zZWxlY3QtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxNi0wOS0yMSAgTWF0dCBC
YWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1w
cm92ZSBvdXRwdXQgb2YgVGVzdEhhcm5lc3MuZXhwZWN0KiBmYWlsdXJlcwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lv
cy9sb25nLXByZXNzLXRvLXNlbGVjdC10ZXh0LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVzcy10by1zZWxlY3Qt
dGV4dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACitQQVNTOiBz
dWNjZXNzZnVsbHkgc2VsZWN0ZWQgdGhlIHdvcmQgUHJlc3NNZQorRG9uZQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvbG9uZy1w
cmVzcy10by1zZWxlY3QtdGV4dC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2lvcy9sb25nLXByZXNzLXRvLXNlbGVjdC10ZXh0Lmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhl
YWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0VUlTY3Jp
cHQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYAorICAgICAgICAgICAgKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5sb25nUHJlc3NBdFBvaW50KDMw
LCAyMCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNj
cmlwdENvbXBsZXRlKCJEb25lIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
KSgpO2AKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICB2YXIgb3V0cHV0ID0gJyc7CisgICAgICAgICAgICB2
YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworICAgICAgICAg
ICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgICAgICAgICBvdXRwdXQgKz0gJ1BBU1M6IHN1Y2Nlc3NmdWxseSBzZWxlY3RlZCB0
aGUgd29yZCAnOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5y
dW5VSVNjcmlwdCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0
VUlTY3JpcHQoKSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBz
ZWxlY3Rpb24gPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoc2VsZWN0aW9uIT09IiIpCisgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXQgKz0gc2VsZWN0aW9uOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXQgKz0gJ0ZBSUw6IGZhaWxlZCB0byBzZWxlY3QgYSB3b3JkIGFz
IGEgcmVzdWx0IG9mIGEgbG9uZyBwcmVzcyc7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCAr
PSAnPGJyPic7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSByZXN1bHQ7CisgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKS5pbm5lckhUTUwg
PSBvdXRwdXQ7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBydW5UZXN0LCBmYWxzZSk7CisgICAgPC9z
Y3JpcHQ+CisgICAgPHN0eWxlPgorICAgICAgICAjdGFyZ2V0IHsKKyAgICAgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBzaWx2ZXI7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxtZXRhIG5h
bWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEiPgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJ0YXJnZXQiPgorCVByZXNzTWU8cD4KKyAgICBUaGlzIHRlc3QgcmVxdWlyZXMg
VUlTY3JpcHRDb250cm9sbGVyIHRvIHJ1bi4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289614</attachid>
            <date>2016-09-22 15:36:52 -0700</date>
            <delta_ts>2016-09-22 16:19:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162367-20160922153402.patch</filename>
            <type>text/plain</type>
            <size>15144</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNjI0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ1IEBACisyMDE2LTA5LTIxICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIHRlc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IHRvIFVJ
U2NyaXB0Q29udHJvbGxlciB0byBzeW50aGVzaXplIGxvbmcgcHJlc3MgZXZlbnRzIG9uIGlPUy4g
VGhpcyByZXF1aXJlZCBhZGRpbmcgbG9uZy1wcmVzcyBmdW5jdGlvbmFsaXR5IHRvIEhJREV2ZW50
R2VuZXJhdG9yLgorCisgICAgICAgIEhJREV2ZW50R2VuZXJhdG9yIHNlbmRzIHRoZSB0b3VjaERv
d24sIGJ1dCBtdXN0IHRoZW4gc2VuZCB0aGUgdG91Y2hVcCB3aXRoIGEgZGlzcGF0Y2hfYWZ0ZXIg
KHJhdGhlciB0aGFuIHNsZWVwaW5nLCBhcyB3ZSBkbyBmb3Igb3RoZXIgZXZlbnRzKSBpbiBvcmRl
ciBmb3IgdGhlIGdlc3R1cmUgcmVjb2duaXplcnMgdG8gY29ycmVjdGx5IGRldGVjdCBhIGxvbmcg
cHJlc3MuCisKKyAgICAgICAgVXNlIHRoZSBsb25nIHByZXNzIHN5bnRoZXNpcyBpbiBhIHRlc3Qg
dGhhdCBkZXRlY3RzIHdoZXRoZXIgYSBsb25nIHByZXNzIGdlc3R1cmUgdHJpZ2dlcnMgdGV4dCBz
ZWxlY3Rpb24uCisKKyAgICAgICAgRml4ZWQgaW5jb3JyZWN0IGNvbnN0YW50cy4gTlNUaW1lSW50
ZXJ2YWwgaXMgaW4gc2Vjb25kcywgb3JpZ2luYWwgbnVtYmVycyB3ZXJlIG5hbm9zZWNvbmRzIGFu
ZCB0eXBlZGVmZWQgdG8gbG9uZyB3aXRob3V0IHJlZ2FyZCB0byB0aGUgdHlwZSBkaWZmZXJlbmNl
cy4gUmVkaWQgY29uc3RhbnRzIHRvIGJlIHRoZSByaWdodCB2YWx1ZSwgYW5kIGNvbnZlcnRlZCB1
cG9uIHVzZS4KKworICAgICAgICBDbGVhbmVkIHVwIHVudXNlZCBlbnVtIHR5cGVzLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpsb25nUHJlc3NBdFBvaW50KToKKyAgICAgICAg
KFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpmb3JjZVByZXNzQXRQb2ludCk6CisgICAgICAgIChX
VFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZHJhZ0Zyb21Qb2ludFRvUG9pbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNv
bjoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0
Q29udHJvbGxlcjo6bG9uZ1ByZXNzQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcjo6Zm9yY2VQcmVzc0F0UG9pbnQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRy
b2xsZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoLVtISURF
dmVudEdlbmVyYXRvciBfY3JlYXRlSU9ISURFdmVudFR5cGU6XSk6CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIHNlbmRUYXBzOmxvY2F0aW9uOndpdGhOdW1iZXJPZlRvdWNoZXM6Y29tcGxl
dGlvbkJsb2NrOl0pOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBjbGVhclRhcDpdKToK
KyAgICAgICAgKC1bSElERXZlbnRHZW5lcmF0b3IgbG9uZ1ByZXNzVGltZXJDYWxsOl0pOgorICAg
ICAgICAoLVtISURFdmVudEdlbmVyYXRvciBsb25nUHJlc3NGaW5pc2g6Y29tcGxldGlvbkJsb2Nr
Ol0pOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBsb25nUHJlc3M6Y29tcGxldGlvbkJs
b2NrOl0pOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBmb3JjZVByZXNzOmNvbXBsZXRp
b25CbG9jazpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRy
b2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNz
QXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Zm9yY2VQcmVzc0F0
UG9pbnQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRU
b1BvaW50KTogRGVsZXRlZC4KKwogMjAxNi0wOS0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNjIy
MiBhbmQgcjIwNjIyNy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJ
U2NyaXB0Q29udHJvbGxlcklPUy5tbQkocmV2aXNpb24gMjA2MjM3KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODcsNiArODcsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvdWJsZVRhcEF0UG9pbgog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KGxvbmcgc3RhcnRY
LCBsb25nIHN0YXJ0WSwgbG9uZyBlbmRYLCBsb25nIGVuZFksIGRvdWJsZSBkdXJhdGlvblNlY29u
ZHMsIEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiB9CisgICAgCit2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6bG9uZ1ByZXNzQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZikKK3sKK30K
IAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnN0eWx1c0Rvd25BdFBvaW50KGxvbmcgeCwgbG9u
ZyB5LCBmbG9hdCBhemltdXRoQW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNz
dXJlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewpJbmRleDogVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAyMDYyMzcpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiAr
MTU5LDEwIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb3VibGVUYXBBdFBvaW4KIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVyOjpkcmFnRnJvbVBvaW50VG9Qb2ludChsb25nIHN0YXJ0WCwgbG9u
ZyBzdGFydFksIGxvbmcgZW5kWCwgbG9uZyBlbmRZLCBkb3VibGUgZHVyYXRpb25TZWNvbmRzLCBK
U1ZhbHVlUmVmIGNhbGxiYWNrKQogewogfQorICAgIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
OmxvbmdQcmVzc0F0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYpCit7Cit9CiAKIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpzdHlsdXNEb3duQXRQb2ludChsb25nIHgsIGxvbmcgeSwg
ZmxvYXQgYXppbXV0aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwg
SlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCShyZXZp
c2lvbiAyMDYyMzcpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdHlsdXNVcEF0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYg
Y2FsbGJhY2spOwogICAgIHZvaWQgc3R5bHVzVGFwQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxv
YXQgYXppbXV0aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgSlNW
YWx1ZVJlZiBjYWxsYmFjayk7CiAKKyAgICB2b2lkIGxvbmdQcmVzc0F0UG9pbnQobG9uZyB4LCBs
b25nIHksIEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIAogICAgIHZvaWQgdHlwZUNoYXJhY3Rl
clVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYg
Y2FsbGJhY2spOwogICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmlu
Z1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2lu
Z0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxi
YWNrKTsKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRp
bmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAko
cmV2aXNpb24gMjA2MjM3KQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsOCBAQCBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKICAgICB2b2lkIGRvdWJs
ZVRhcEF0UG9pbnQobG9uZyB4LCBsb25nIHksIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBk
cmFnRnJvbVBvaW50VG9Qb2ludChsb25nIHN0YXJ0WCwgbG9uZyBzdGFydFksIGxvbmcgZW5kWCwg
bG9uZyBlbmRZLCBkb3VibGUgZHVyYXRpb25TZWNvbmRzLCBvYmplY3QgY2FsbGJhY2spOwogCisg
ICAgdm9pZCBsb25nUHJlc3NBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBvYmplY3QgY2FsbGJhY2sp
OworCiAgICAgdm9pZCBzdHlsdXNEb3duQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxvYXQgYXpp
bXV0aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgb2JqZWN0IGNh
bGxiYWNrKTsKICAgICB2b2lkIHN0eWx1c01vdmVUb1BvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9h
dCBhemltdXRoQW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNzdXJlLCBvYmpl
Y3QgY2FsbGJhY2spOwogICAgIHZvaWQgc3R5bHVzVXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBv
YmplY3QgY2FsbGJhY2spOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZl
bnRHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9I
SURFdmVudEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMDYyMzcpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0
Niw5IEBACiAtICh2b2lkKWRvdWJsZVRhcDooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxv
Y2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jazsKIC0gKHZvaWQpdHdvRmluZ2VyVGFw
OihDR1BvaW50KWxvY2F0aW9uIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkJsb2NrOwogCisvLyBMb25nIFByZXNzCistICh2b2lkKWxvbmdQcmVzczooQ0dQb2ludCls
b2NhdGlvbiBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jazsK
KwogLy8gRHJhZ3MKIC0gKHZvaWQpZHJhZ1dpdGhTdGFydFBvaW50OihDR1BvaW50KXN0YXJ0TG9j
YXRpb24gZW5kUG9pbnQ6KENHUG9pbnQpZW5kTG9jYXRpb24gZHVyYXRpb246KGRvdWJsZSlzZWNv
bmRzIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrOwogCklu
ZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5t
bQkocmV2aXNpb24gMjA2MjM3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZl
bnRHZW5lcmF0b3IubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDE0ICszMSwxNiBAQAogI2ltcG9y
dCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8bWFjaC9tYWNoX3RpbWUuaD4KICNp
bXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEJhY2tC
b2FyZFNlcnZpY2VzKQogU09GVF9MSU5LKEJhY2tCb2FyZFNlcnZpY2VzLCBCS1NISURFdmVudFNl
dERpZ2l0aXplckluZm8sIHZvaWQsIChJT0hJREV2ZW50UmVmIGRpZ2l0aXplckV2ZW50LCB1aW50
MzJfdCBjb250ZXh0SUQsIHVpbnQ4X3Qgc3lzdGVtR2VzdHVyZWlzUG9zc2libGUsIHVpbnQ4X3Qg
aXNTeXN0ZW1HZXN0dXJlU3RhdGVDaGFuZ2VFdmVudCwgQ0ZTdHJpbmdSZWYgZGlzcGxheVVVSUQs
IENGVGltZUludGVydmFsIGluaXRpYWxUb3VjaFRpbWVzdGFtcCwgZmxvYXQgbWF4Rm9yY2UpLCAo
ZGlnaXRpemVyRXZlbnQsIGNvbnRleHRJRCwgc3lzdGVtR2VzdHVyZWlzUG9zc2libGUsIGlzU3lz
dGVtR2VzdHVyZVN0YXRlQ2hhbmdlRXZlbnQsIGRpc3BsYXlVVUlELCBpbml0aWFsVG91Y2hUaW1l
c3RhbXAsIG1heEZvcmNlKSk7CiAKLXN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBmaW5nZXJM
aWZ0RGVsYXkgPSA1ZTc7Ci1zdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgbXVsdGlUYXBJbnRl
cnZhbCA9IDE1ZTc7CitzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgZmluZ2VyTGlmdERlbGF5
ID0gMC4wNTsKK3N0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBtdWx0aVRhcEludGVydmFsID0g
MC4xNTsKIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBmaW5nZXJNb3ZlSW50ZXJ2YWwgPSAw
LjAxNjsKK3N0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBsb25nUHJlc3NIb2xkRGVsYXkgPSAy
LjA7CiBzdGF0aWMgY29uc3QgSU9ISURGbG9hdCBkZWZhdWx0TWFqb3JSYWRpdXMgPSA1Owogc3Rh
dGljIGNvbnN0IElPSElERmxvYXQgZGVmYXVsdFBhdGhQcmVzc3VyZSA9IDA7CiBzdGF0aWMgY29u
c3QgTlNVSW50ZWdlciBtYXhUb3VjaENvdW50ID0gNTsKQEAgLTUzLDggKzU1LDYgQEAgdHlwZWRl
ZiBlbnVtIHsKICAgICBIYW5kRXZlbnRDaG9yZENoYW5nZWQsCiAgICAgSGFuZEV2ZW50TGlmdGVk
LAogICAgIEhhbmRFdmVudENhbmNlbGVkLAotICAgIEhhbmRFdmVudEluUmFuZ2UsCi0gICAgSGFu
ZEV2ZW50SW5SYW5nZUxpZnQsCiAgICAgU3R5bHVzRXZlbnRUb3VjaGVkLAogICAgIFN0eWx1c0V2
ZW50TW92ZWQsCiAgICAgU3R5bHVzRXZlbnRMaWZ0ZWQsCkBAIC0xNTgsOSArMTU4LDcgQEAgLSAo
SU9ISURFdmVudFJlZilfY3JlYXRlSU9ISURFdmVudFR5cGU6KAogICAgIH0gZWxzZSBpZiAoZXZl
bnRUeXBlID09IEhhbmRFdmVudENob3JkQ2hhbmdlZCkgewogICAgICAgICBldmVudE1hc2sgfD0g
a0lPSElERGlnaXRpemVyRXZlbnRQb3NpdGlvbjsKICAgICAgICAgZXZlbnRNYXNrIHw9IGtJT0hJ
RERpZ2l0aXplckV2ZW50QXR0cmlidXRlOwotICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IEhh
bmRFdmVudFRvdWNoZWQgIHx8IGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRDYW5jZWxlZCkgewotICAg
ICAgICBldmVudE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRJZGVudGl0eTsKLSAgICB9IGVs
c2UgaWYgKGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRMaWZ0ZWQpCisgICAgfSBlbHNlIGlmIChldmVu
dFR5cGUgPT0gSGFuZEV2ZW50VG91Y2hlZCB8fCBldmVudFR5cGUgPT0gSGFuZEV2ZW50Q2FuY2Vs
ZWQgfHwgZXZlbnRUeXBlID09IEhhbmRFdmVudExpZnRlZCkKICAgICAgICAgZXZlbnRNYXNrIHw9
IGtJT0hJRERpZ2l0aXplckV2ZW50SWRlbnRpdHk7CiAKICAgICB1aW50NjRfdCBtYWNoVGltZSA9
IG1hY2hfYWJzb2x1dGVfdGltZSgpOwpAQCAtNDk0LDcgKzQ5Miw3IEBAIC0gKHZvaWQpc3R5bHVz
VXBBdFBvaW50OihDR1BvaW50KWxvY2F0aW8KIAogLSAodm9pZClzdHlsdXNUYXBBdFBvaW50OihD
R1BvaW50KWxvY2F0aW9uIGF6aW11dGhBbmdsZTooQ0dGbG9hdClhemltdXRoQW5nbGUgYWx0aXR1
ZGVBbmdsZTooQ0dGbG9hdClhbHRpdHVkZUFuZ2xlIHByZXNzdXJlOihDR0Zsb2F0KXByZXNzdXJl
IGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrCiB7Ci0gICAg
c3RydWN0IHRpbWVzcGVjIHByZXNzRGVsYXkgPSB7IDAsIHN0YXRpY19jYXN0PGxvbmc+KGZpbmdl
ckxpZnREZWxheSkgfTsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgcHJlc3NEZWxheSA9IHsgMCwgc3Rh
dGljX2Nhc3Q8bG9uZz4oZmluZ2VyTGlmdERlbGF5ICogbmFub3NlY29uZHNQZXJTZWNvbmQpIH07
CiAKICAgICBbc2VsZiBzdHlsdXNEb3duQXRQb2ludDpsb2NhdGlvbiBhemltdXRoQW5nbGU6YXpp
bXV0aEFuZ2xlIGFsdGl0dWRlQW5nbGU6YWx0aXR1ZGVBbmdsZSBwcmVzc3VyZTpwcmVzc3VyZV07
CiAgICAgbmFub3NsZWVwKCZwcmVzc0RlbGF5LCAwKTsKQEAgLTUwNSw4ICs1MDMsOCBAQCAtICh2
b2lkKXN0eWx1c1RhcEF0UG9pbnQ6KENHUG9pbnQpbG9jYXRpCiAKIC0gKHZvaWQpc2VuZFRhcHM6
KGludCl0YXBDb3VudCBsb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbiB3aXRoTnVtYmVyT2ZUb3Vj
aGVzOihpbnQpdG91Y2hDb3VudCBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBs
ZXRpb25CbG9jawogewotICAgIHN0cnVjdCB0aW1lc3BlYyBkb3VibGVEZWxheSA9IHsgMCwgc3Rh
dGljX2Nhc3Q8bG9uZz4obXVsdGlUYXBJbnRlcnZhbCkgfTsKLSAgICBzdHJ1Y3QgdGltZXNwZWMg
cHJlc3NEZWxheSA9IHsgMCwgc3RhdGljX2Nhc3Q8bG9uZz4oZmluZ2VyTGlmdERlbGF5KSB9Owor
ICAgIHN0cnVjdCB0aW1lc3BlYyBkb3VibGVEZWxheSA9IHsgMCwgc3RhdGljX2Nhc3Q8bG9uZz4o
bXVsdGlUYXBJbnRlcnZhbCAqIG5hbm9zZWNvbmRzUGVyU2Vjb25kKSB9OworICAgIHN0cnVjdCB0
aW1lc3BlYyBwcmVzc0RlbGF5ID0geyAwLCBzdGF0aWNfY2FzdDxsb25nPihmaW5nZXJMaWZ0RGVs
YXkgKiBuYW5vc2Vjb25kc1BlclNlY29uZCkgfTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
dGFwQ291bnQ7IGkrKykgewogICAgICAgICBbc2VsZiB0b3VjaERvd246bG9jYXRpb24gdG91Y2hD
b3VudDp0b3VjaENvdW50XTsKQEAgLTUzNCw2ICs1MzIsMTcgQEAgLSAodm9pZCl0d29GaW5nZXJU
YXA6KENHUG9pbnQpbG9jYXRpb24gYwogICAgIFtzZWxmIHNlbmRUYXBzOjEgbG9jYXRpb246bG9j
YXRpb24gd2l0aE51bWJlck9mVG91Y2hlczoyIGNvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxv
Y2tdOwogfQogCistICh2b2lkKWxvbmdQcmVzczooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9u
QmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jaworeworICAgIFtzZWxmIHRvdWNo
RG93bjpsb2NhdGlvbiB0b3VjaENvdW50OjFdOworICAgIGF1dG8gY29tcGxldGlvbkJsb2NrQ29w
eSA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uQmxvY2spOworCisgICAgZGlzcGF0Y2hfYWZ0ZXIo
ZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgbG9uZ1ByZXNzSG9sZERlbGF5ICogbmFu
b3NlY29uZHNQZXJTZWNvbmQpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeIHsKKyAgICAg
ICAgW3NlbGYgbGlmdFVwOmxvY2F0aW9uXTsKKyAgICAgICAgW3NlbGYgX3NlbmRNYXJrZXJISURF
dmVudFdpdGhDb21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2NrQ29weS5nZXQoKV07CisgICAg
fSk7Cit9CisKIC0gKHZvaWQpZHJhZ1dpdGhTdGFydFBvaW50OihDR1BvaW50KXN0YXJ0TG9jYXRp
b24gZW5kUG9pbnQ6KENHUG9pbnQpZW5kTG9jYXRpb24gZHVyYXRpb246KGRvdWJsZSlzZWNvbmRz
IGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrCiB7CiAgICAg
W3NlbGYgdG91Y2hEb3duOnN0YXJ0TG9jYXRpb24gdG91Y2hDb3VudDoxXTsKSW5kZXg6IFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0J
KHJldmlzaW9uIDIwNjIzNykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4NywxNyBAQCB2b2lk
IFVJU2NyaXB0Q29udHJvbGxlcjo6ZHJhZ0Zyb21Qb2ludFRvCiAgICAgICAgIG1fY29udGV4dC0+
YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CiAgICAgfV07CiB9CisgICAgCit2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNzQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1
ZVJlZiBjYWxsYmFjaykKK3sKKyAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5w
cmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsK
KyAgICAKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBs
b25nUHJlc3M6Z2xvYmFsVG9Db250ZW50Q29vcmRpbmF0ZXMoVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpLCB4LCB5KSBjb21wbGV0aW9uQmxv
Y2s6XnsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CisgICAgfV07Cit9
CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjp0eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtl
eWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIwNjIzNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA5LTIxICBNZWdhbiBHYXJkbmVyICA8bWVn
YW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvbmcgcHJlc3Mgc2VsZWN0aW9u
IHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MjM2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIHRlc3QgZm9yIGxvbmcgcHJlc3Mgc2VsZWN0aW9uLgorCisgICAgICAgICogZmFzdC9ldmVu
dHMvdG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVzcy10by1zZWxlY3Qt
dGV4dC5odG1sOiBBZGRlZC4KKwogMjAxNi0wOS0yMSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wcm92ZSBvdXRwdXQgb2YgVGVz
dEhhcm5lc3MuZXhwZWN0KiBmYWlsdXJlcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy9sb25nLXByZXNzLXRvLXNl
bGVjdC10ZXh0LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVzcy10by1zZWxlY3QtdGV4dC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACitQQVNTOiBzdWNjZXNzZnVsbHkgc2VsZWN0
ZWQgdGhlIHdvcmQgUHJlc3NNZQorRG9uZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVzcy10by1zZWxlY3QtdGV4
dC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lv
cy9sb25nLXByZXNzLXRvLXNlbGVjdC10ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gYAorICAgICAgICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIHVpQ29udHJvbGxlci5sb25nUHJlc3NBdFBvaW50KDMwLCAyMCwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCJEb25l
Iik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSgpO2AKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICB2YXIgb3V0cHV0ID0gJyc7CisgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50
TGlzdGVuZXIoJ3RvdWNoZW5kJywgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBv
dXRwdXQgKz0gJ1BBU1M6IHN1Y2Nlc3NmdWxseSBzZWxlY3RlZCB0aGUgd29yZCAnOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgeworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSBkb2N1bWVu
dC5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2Vs
ZWN0aW9uIT09IiIpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gc2VsZWN0aW9u
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRw
dXQgKz0gJ0ZBSUw6IGZhaWxlZCB0byBzZWxlY3QgYSB3b3JkIGFzIGEgcmVzdWx0IG9mIGEgbG9u
ZyBwcmVzcyc7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSAnPGJyPic7CisgICAgICAg
ICAgICAgICAgICAgIG91dHB1dCArPSByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKS5pbm5lckhUTUwgPSBvdXRwdXQ7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoJ2xvYWQnLCBydW5UZXN0LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+CisgICAgPHN0eWxl
PgorICAgICAgICAjdGFyZ2V0IHsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAg
ICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaWx2ZXI7
CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250
ZW50PSJpbml0aWFsLXNjYWxlPTEiPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0YXJnZXQi
PgorCTxwPlByZXNzTWU8L3A+CisgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIFVJU2NyaXB0Q29udHJv
bGxlciB0byBydW4uCis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289627</attachid>
            <date>2016-09-22 16:19:37 -0700</date>
            <delta_ts>2016-09-22 16:55:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162367-20160922161646.patch</filename>
            <type>text/plain</type>
            <size>15212</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNjI0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUxIEBACisyMDE2LTA5LTIxICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIHRlc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IHRvIFVJ
U2NyaXB0Q29udHJvbGxlciB0byBzeW50aGVzaXplIGxvbmcgcHJlc3MgZXZlbnRzIG9uIGlPUy4K
KyAgICAgICAgVGhpcyByZXF1aXJlZCBhZGRpbmcgbG9uZy1wcmVzcyBmdW5jdGlvbmFsaXR5IHRv
IEhJREV2ZW50R2VuZXJhdG9yLgorCisgICAgICAgIEhJREV2ZW50R2VuZXJhdG9yIHNlbmRzIHRo
ZSB0b3VjaERvd24sIGJ1dCBtdXN0IHRoZW4gc2VuZCB0aGUgdG91Y2hVcCB3aXRoCisgICAgICAg
IGEgZGlzcGF0Y2hfYWZ0ZXIgKHJhdGhlciB0aGFuIHNsZWVwaW5nLCBhcyB3ZSBkbyBmb3Igb3Ro
ZXIgZXZlbnRzKSBpbiBvcmRlcgorICAgICAgICBmb3IgdGhlIGdlc3R1cmUgcmVjb2duaXplcnMg
dG8gY29ycmVjdGx5IGRldGVjdCBhIGxvbmcgcHJlc3MuCisKKyAgICAgICAgVXNlIHRoZSBsb25n
IHByZXNzIHN5bnRoZXNpcyBpbiBhIHRlc3QgdGhhdCBkZXRlY3RzIHdoZXRoZXIgYSBsb25nIHBy
ZXNzCisgICAgICAgIGdlc3R1cmUgdHJpZ2dlcnMgdGV4dCBzZWxlY3Rpb24uCisKKyAgICAgICAg
Rml4ZWQgaW5jb3JyZWN0IGNvbnN0YW50cy4gTlNUaW1lSW50ZXJ2YWwgaXMgaW4gc2Vjb25kcywg
b3JpZ2luYWwgbnVtYmVycworICAgICAgICB3ZXJlIG5hbm9zZWNvbmRzIGFuZCB0eXBlZGVmZWQg
dG8gbG9uZyB3aXRob3V0IHJlZ2FyZCB0byB0aGUgdHlwZQorICAgICAgICBkaWZmZXJlbmNlcy4g
UmVkaWQgY29uc3RhbnRzIHRvIGJlIHRoZSByaWdodCB2YWx1ZSwgYW5kIGNvbnZlcnRlZCB1cG9u
IHVzZS4KKworICAgICAgICBDbGVhbmVkIHVwIHVudXNlZCBlbnVtIHR5cGVzLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAg
KFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpsb25nUHJlc3NBdFBvaW50KToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjpmb3JjZVByZXNzQXRQb2ludCk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6ZHJhZ0Zyb21Qb2ludFRvUG9pbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbjoK
KyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNj
cmlwdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcjo6bG9uZ1ByZXNzQXRQb2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJv
bGxlcjo6Zm9yY2VQcmVzc0F0UG9pbnQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xs
ZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoLVtISURFdmVu
dEdlbmVyYXRvciBfY3JlYXRlSU9ISURFdmVudFR5cGU6XSk6CisgICAgICAgICgtW0hJREV2ZW50
R2VuZXJhdG9yIHNlbmRUYXBzOmxvY2F0aW9uOndpdGhOdW1iZXJPZlRvdWNoZXM6Y29tcGxldGlv
bkJsb2NrOl0pOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBjbGVhclRhcDpdKToKKyAg
ICAgICAgKC1bSElERXZlbnRHZW5lcmF0b3IgbG9uZ1ByZXNzVGltZXJDYWxsOl0pOgorICAgICAg
ICAoLVtISURFdmVudEdlbmVyYXRvciBsb25nUHJlc3NGaW5pc2g6Y29tcGxldGlvbkJsb2NrOl0p
OgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBsb25nUHJlc3M6Y29tcGxldGlvbkJsb2Nr
Ol0pOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBmb3JjZVByZXNzOmNvbXBsZXRpb25C
bG9jazpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNzQXRQ
b2ludCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Zm9yY2VQcmVzc0F0UG9p
bnQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUb1Bv
aW50KTogRGVsZXRlZC4KKwogMjAxNi0wOS0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNjIyMiBh
bmQgcjIwNjIyNy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRy
b2xsZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbQkocmV2aXNpb24gMjA2MjM3KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtODcs
NiArODcsMTAgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvdWJsZVRhcEF0UG9pbgogdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRyYWdGcm9tUG9pbnRUb1BvaW50KGxvbmcgc3RhcnRYLCBs
b25nIHN0YXJ0WSwgbG9uZyBlbmRYLCBsb25nIGVuZFksIGRvdWJsZSBkdXJhdGlvblNlY29uZHMs
IEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiB9CisgICAgCit2b2lkIFVJU2NyaXB0Q29udHJvbGxl
cjo6bG9uZ1ByZXNzQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJlZikKK3sKK30KIAog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnN0eWx1c0Rvd25BdFBvaW50KGxvbmcgeCwgbG9uZyB5
LCBmbG9hdCBhemltdXRoQW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNzdXJl
LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewpJbmRleDogVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyMDYyMzcpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5
LDEwIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb3VibGVUYXBBdFBvaW4KIHZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyOjpkcmFnRnJvbVBvaW50VG9Qb2ludChsb25nIHN0YXJ0WCwgbG9uZyBz
dGFydFksIGxvbmcgZW5kWCwgbG9uZyBlbmRZLCBkb3VibGUgZHVyYXRpb25TZWNvbmRzLCBKU1Zh
bHVlUmVmIGNhbGxiYWNrKQogewogfQorICAgIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Omxv
bmdQcmVzc0F0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYpCit7Cit9CiAKIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVyOjpzdHlsdXNEb3duQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxv
YXQgYXppbXV0aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgSlNW
YWx1ZVJlZiBjYWxsYmFjaykKIHsKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCShyZXZpc2lv
biAyMDYyMzcpCisrKyBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdHlsdXNVcEF0UG9pbnQobG9uZyB4LCBsb25nIHksIEpTVmFsdWVSZWYgY2Fs
bGJhY2spOwogICAgIHZvaWQgc3R5bHVzVGFwQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxvYXQg
YXppbXV0aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgSlNWYWx1
ZVJlZiBjYWxsYmFjayk7CiAKKyAgICB2b2lkIGxvbmdQcmVzc0F0UG9pbnQobG9uZyB4LCBsb25n
IHksIEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIAogICAgIHZvaWQgdHlwZUNoYXJhY3RlclVz
aW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2Fs
bGJhY2spOwogICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1Jl
ZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQga2V5VXBVc2luZ0hh
cmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNr
KTsKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdz
L1VJU2NyaXB0Q29udHJvbGxlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAkocmV2
aXNpb24gMjA2MjM3KQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
QmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiAr
MzgsOCBAQCBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKICAgICB2b2lkIGRvdWJsZVRh
cEF0UG9pbnQobG9uZyB4LCBsb25nIHksIG9iamVjdCBjYWxsYmFjayk7CiAgICAgdm9pZCBkcmFn
RnJvbVBvaW50VG9Qb2ludChsb25nIHN0YXJ0WCwgbG9uZyBzdGFydFksIGxvbmcgZW5kWCwgbG9u
ZyBlbmRZLCBkb3VibGUgZHVyYXRpb25TZWNvbmRzLCBvYmplY3QgY2FsbGJhY2spOwogCisgICAg
dm9pZCBsb25nUHJlc3NBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBvYmplY3QgY2FsbGJhY2spOwor
CiAgICAgdm9pZCBzdHlsdXNEb3duQXRQb2ludChsb25nIHgsIGxvbmcgeSwgZmxvYXQgYXppbXV0
aEFuZ2xlLCBmbG9hdCBhbHRpdHVkZUFuZ2xlLCBmbG9hdCBwcmVzc3VyZSwgb2JqZWN0IGNhbGxi
YWNrKTsKICAgICB2b2lkIHN0eWx1c01vdmVUb1BvaW50KGxvbmcgeCwgbG9uZyB5LCBmbG9hdCBh
emltdXRoQW5nbGUsIGZsb2F0IGFsdGl0dWRlQW5nbGUsIGZsb2F0IHByZXNzdXJlLCBvYmplY3Qg
Y2FsbGJhY2spOwogICAgIHZvaWQgc3R5bHVzVXBBdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBvYmpl
Y3QgY2FsbGJhY2spOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRH
ZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURF
dmVudEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMDYyMzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw5
IEBACiAtICh2b2lkKWRvdWJsZVRhcDooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxvY2s6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jazsKIC0gKHZvaWQpdHdvRmluZ2VyVGFwOihD
R1BvaW50KWxvY2F0aW9uIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkJsb2NrOwogCisvLyBMb25nIFByZXNzCistICh2b2lkKWxvbmdQcmVzczooQ0dQb2ludClsb2Nh
dGlvbiBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jazsKKwog
Ly8gRHJhZ3MKIC0gKHZvaWQpZHJhZ1dpdGhTdGFydFBvaW50OihDR1BvaW50KXN0YXJ0TG9jYXRp
b24gZW5kUG9pbnQ6KENHUG9pbnQpZW5kTG9jYXRpb24gZHVyYXRpb246KGRvdWJsZSlzZWNvbmRz
IGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrOwogCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQko
cmV2aXNpb24gMjA2MjM3KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRH
ZW5lcmF0b3IubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDE0ICszMSwxNiBAQAogI2ltcG9ydCA8
V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8bWFjaC9tYWNoX3RpbWUuaD4KICNpbXBv
cnQgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEJhY2tCb2Fy
ZFNlcnZpY2VzKQogU09GVF9MSU5LKEJhY2tCb2FyZFNlcnZpY2VzLCBCS1NISURFdmVudFNldERp
Z2l0aXplckluZm8sIHZvaWQsIChJT0hJREV2ZW50UmVmIGRpZ2l0aXplckV2ZW50LCB1aW50MzJf
dCBjb250ZXh0SUQsIHVpbnQ4X3Qgc3lzdGVtR2VzdHVyZWlzUG9zc2libGUsIHVpbnQ4X3QgaXNT
eXN0ZW1HZXN0dXJlU3RhdGVDaGFuZ2VFdmVudCwgQ0ZTdHJpbmdSZWYgZGlzcGxheVVVSUQsIENG
VGltZUludGVydmFsIGluaXRpYWxUb3VjaFRpbWVzdGFtcCwgZmxvYXQgbWF4Rm9yY2UpLCAoZGln
aXRpemVyRXZlbnQsIGNvbnRleHRJRCwgc3lzdGVtR2VzdHVyZWlzUG9zc2libGUsIGlzU3lzdGVt
R2VzdHVyZVN0YXRlQ2hhbmdlRXZlbnQsIGRpc3BsYXlVVUlELCBpbml0aWFsVG91Y2hUaW1lc3Rh
bXAsIG1heEZvcmNlKSk7CiAKLXN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBmaW5nZXJMaWZ0
RGVsYXkgPSA1ZTc7Ci1zdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgbXVsdGlUYXBJbnRlcnZh
bCA9IDE1ZTc7CitzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgZmluZ2VyTGlmdERlbGF5ID0g
MC4wNTsKK3N0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBtdWx0aVRhcEludGVydmFsID0gMC4x
NTsKIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBmaW5nZXJNb3ZlSW50ZXJ2YWwgPSAwLjAx
NjsKK3N0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBsb25nUHJlc3NIb2xkRGVsYXkgPSAyLjA7
CiBzdGF0aWMgY29uc3QgSU9ISURGbG9hdCBkZWZhdWx0TWFqb3JSYWRpdXMgPSA1Owogc3RhdGlj
IGNvbnN0IElPSElERmxvYXQgZGVmYXVsdFBhdGhQcmVzc3VyZSA9IDA7CiBzdGF0aWMgY29uc3Qg
TlNVSW50ZWdlciBtYXhUb3VjaENvdW50ID0gNTsKQEAgLTUzLDggKzU1LDYgQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBIYW5kRXZlbnRDaG9yZENoYW5nZWQsCiAgICAgSGFuZEV2ZW50TGlmdGVkLAog
ICAgIEhhbmRFdmVudENhbmNlbGVkLAotICAgIEhhbmRFdmVudEluUmFuZ2UsCi0gICAgSGFuZEV2
ZW50SW5SYW5nZUxpZnQsCiAgICAgU3R5bHVzRXZlbnRUb3VjaGVkLAogICAgIFN0eWx1c0V2ZW50
TW92ZWQsCiAgICAgU3R5bHVzRXZlbnRMaWZ0ZWQsCkBAIC0xNTgsOSArMTU4LDcgQEAgLSAoSU9I
SURFdmVudFJlZilfY3JlYXRlSU9ISURFdmVudFR5cGU6KAogICAgIH0gZWxzZSBpZiAoZXZlbnRU
eXBlID09IEhhbmRFdmVudENob3JkQ2hhbmdlZCkgewogICAgICAgICBldmVudE1hc2sgfD0ga0lP
SElERGlnaXRpemVyRXZlbnRQb3NpdGlvbjsKICAgICAgICAgZXZlbnRNYXNrIHw9IGtJT0hJRERp
Z2l0aXplckV2ZW50QXR0cmlidXRlOwotICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IEhhbmRF
dmVudFRvdWNoZWQgIHx8IGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRDYW5jZWxlZCkgewotICAgICAg
ICBldmVudE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRJZGVudGl0eTsKLSAgICB9IGVsc2Ug
aWYgKGV2ZW50VHlwZSA9PSBIYW5kRXZlbnRMaWZ0ZWQpCisgICAgfSBlbHNlIGlmIChldmVudFR5
cGUgPT0gSGFuZEV2ZW50VG91Y2hlZCB8fCBldmVudFR5cGUgPT0gSGFuZEV2ZW50Q2FuY2VsZWQg
fHwgZXZlbnRUeXBlID09IEhhbmRFdmVudExpZnRlZCkKICAgICAgICAgZXZlbnRNYXNrIHw9IGtJ
T0hJRERpZ2l0aXplckV2ZW50SWRlbnRpdHk7CiAKICAgICB1aW50NjRfdCBtYWNoVGltZSA9IG1h
Y2hfYWJzb2x1dGVfdGltZSgpOwpAQCAtNDk0LDcgKzQ5Miw3IEBAIC0gKHZvaWQpc3R5bHVzVXBB
dFBvaW50OihDR1BvaW50KWxvY2F0aW8KIAogLSAodm9pZClzdHlsdXNUYXBBdFBvaW50OihDR1Bv
aW50KWxvY2F0aW9uIGF6aW11dGhBbmdsZTooQ0dGbG9hdClhemltdXRoQW5nbGUgYWx0aXR1ZGVB
bmdsZTooQ0dGbG9hdClhbHRpdHVkZUFuZ2xlIHByZXNzdXJlOihDR0Zsb2F0KXByZXNzdXJlIGNv
bXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrCiB7Ci0gICAgc3Ry
dWN0IHRpbWVzcGVjIHByZXNzRGVsYXkgPSB7IDAsIHN0YXRpY19jYXN0PGxvbmc+KGZpbmdlckxp
ZnREZWxheSkgfTsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgcHJlc3NEZWxheSA9IHsgMCwgc3RhdGlj
X2Nhc3Q8bG9uZz4oZmluZ2VyTGlmdERlbGF5ICogbmFub3NlY29uZHNQZXJTZWNvbmQpIH07CiAK
ICAgICBbc2VsZiBzdHlsdXNEb3duQXRQb2ludDpsb2NhdGlvbiBhemltdXRoQW5nbGU6YXppbXV0
aEFuZ2xlIGFsdGl0dWRlQW5nbGU6YWx0aXR1ZGVBbmdsZSBwcmVzc3VyZTpwcmVzc3VyZV07CiAg
ICAgbmFub3NsZWVwKCZwcmVzc0RlbGF5LCAwKTsKQEAgLTUwNSw4ICs1MDMsOCBAQCAtICh2b2lk
KXN0eWx1c1RhcEF0UG9pbnQ6KENHUG9pbnQpbG9jYXRpCiAKIC0gKHZvaWQpc2VuZFRhcHM6KGlu
dCl0YXBDb3VudCBsb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbiB3aXRoTnVtYmVyT2ZUb3VjaGVz
OihpbnQpdG91Y2hDb3VudCBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25CbG9jawogewotICAgIHN0cnVjdCB0aW1lc3BlYyBkb3VibGVEZWxheSA9IHsgMCwgc3RhdGlj
X2Nhc3Q8bG9uZz4obXVsdGlUYXBJbnRlcnZhbCkgfTsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgcHJl
c3NEZWxheSA9IHsgMCwgc3RhdGljX2Nhc3Q8bG9uZz4oZmluZ2VyTGlmdERlbGF5KSB9OworICAg
IHN0cnVjdCB0aW1lc3BlYyBkb3VibGVEZWxheSA9IHsgMCwgc3RhdGljX2Nhc3Q8bG9uZz4obXVs
dGlUYXBJbnRlcnZhbCAqIG5hbm9zZWNvbmRzUGVyU2Vjb25kKSB9OworICAgIHN0cnVjdCB0aW1l
c3BlYyBwcmVzc0RlbGF5ID0geyAwLCBzdGF0aWNfY2FzdDxsb25nPihmaW5nZXJMaWZ0RGVsYXkg
KiBuYW5vc2Vjb25kc1BlclNlY29uZCkgfTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGFw
Q291bnQ7IGkrKykgewogICAgICAgICBbc2VsZiB0b3VjaERvd246bG9jYXRpb24gdG91Y2hDb3Vu
dDp0b3VjaENvdW50XTsKQEAgLTUzNCw2ICs1MzIsMTcgQEAgLSAodm9pZCl0d29GaW5nZXJUYXA6
KENHUG9pbnQpbG9jYXRpb24gYwogICAgIFtzZWxmIHNlbmRUYXBzOjEgbG9jYXRpb246bG9jYXRp
b24gd2l0aE51bWJlck9mVG91Y2hlczoyIGNvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2td
OwogfQogCistICh2b2lkKWxvbmdQcmVzczooQ0dQb2ludClsb2NhdGlvbiBjb21wbGV0aW9uQmxv
Y2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jaworeworICAgIFtzZWxmIHRvdWNoRG93
bjpsb2NhdGlvbiB0b3VjaENvdW50OjFdOworICAgIGF1dG8gY29tcGxldGlvbkJsb2NrQ29weSA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uQmxvY2spOworCisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlz
cGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgbG9uZ1ByZXNzSG9sZERlbGF5ICogbmFub3Nl
Y29uZHNQZXJTZWNvbmQpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeIHsKKyAgICAgICAg
W3NlbGYgbGlmdFVwOmxvY2F0aW9uXTsKKyAgICAgICAgW3NlbGYgX3NlbmRNYXJrZXJISURFdmVu
dFdpdGhDb21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2NrQ29weS5nZXQoKV07CisgICAgfSk7
Cit9CisKIC0gKHZvaWQpZHJhZ1dpdGhTdGFydFBvaW50OihDR1BvaW50KXN0YXJ0TG9jYXRpb24g
ZW5kUG9pbnQ6KENHUG9pbnQpZW5kTG9jYXRpb24gZHVyYXRpb246KGRvdWJsZSlzZWNvbmRzIGNv
bXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrCiB7CiAgICAgW3Nl
bGYgdG91Y2hEb3duOnN0YXJ0TG9jYXRpb24gdG91Y2hDb3VudDoxXTsKSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0JKHJl
dmlzaW9uIDIwNjIzNykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4NywxNyBAQCB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6ZHJhZ0Zyb21Qb2ludFRvCiAgICAgICAgIG1fY29udGV4dC0+YXN5
bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CiAgICAgfV07CiB9CisgICAgCit2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6bG9uZ1ByZXNzQXRQb2ludChsb25nIHgsIGxvbmcgeSwgSlNWYWx1ZVJl
ZiBjYWxsYmFjaykKK3sKKyAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVw
YXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKyAg
ICAKKyAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBsb25n
UHJlc3M6Z2xvYmFsVG9Db250ZW50Q29vcmRpbmF0ZXMoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpLCB4LCB5KSBjb21wbGV0aW9uQmxvY2s6
XnsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7CisgICAgfV07Cit9CiAK
IHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjp0eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtleWJv
YXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIwNjIzNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA5LTIxICBNZWdhbiBHYXJkbmVyICA8bWVnYW5f
Z2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvbmcgcHJlc3Mgc2VsZWN0aW9uIHRl
c3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IHRlc3QgZm9yIGxvbmcgcHJlc3Mgc2VsZWN0aW9uLgorCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVzcy10by1zZWxlY3QtdGV4
dC5odG1sOiBBZGRlZC4KKwogMjAxNi0wOS0yMSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wcm92ZSBvdXRwdXQgb2YgVGVzdEhh
cm5lc3MuZXhwZWN0KiBmYWlsdXJlcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy9sb25nLXByZXNzLXRvLXNlbGVj
dC10ZXh0LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVzcy10by1zZWxlY3QtdGV4dC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyIEBACitQQVNTOiBzdWNjZXNzZnVsbHkgc2VsZWN0ZWQg
dGhlIHdvcmQgUHJlc3NNZQorRG9uZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvaW9zL2xvbmctcHJlc3MtdG8tc2VsZWN0LXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9pb3MvbG9uZy1wcmVzcy10by1zZWxlY3QtdGV4dC5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2lvcy9s
b25nLXByZXNzLXRvLXNlbGVjdC10ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
MyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gYAorICAgICAgICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIHVpQ29udHJvbGxlci5sb25nUHJlc3NBdFBvaW50KDMwLCAyMCwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCJEb25lIik7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KSgpO2AKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXRl
c3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICB2YXIgb3V0cHV0ID0gJyc7CisgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpOworICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlz
dGVuZXIoJ3RvdWNoZW5kJywgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBvdXRw
dXQgKz0gJ1BBU1M6IHN1Y2Nlc3NmdWxseSBzZWxlY3RlZCB0aGUgd29yZCAnOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkgeworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3Rpb25UZXh0ID0gZG9jdW1l
bnQuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNl
bGVjdGlvblRleHQgIT09ICIiKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IHNl
bGVjdGlvblRleHQ7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dHB1dCArPSAnRkFJTDogZmFpbGVkIHRvIHNlbGVjdCBhIHdvcmQgYXMgYSByZXN1
bHQgb2YgYSBsb25nIHByZXNzJzsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9ICc8YnI+
JzsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ICs9IHJlc3VsdDsKKyAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLmlubmVySFRNTCA9IG91dHB1
dDsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3QsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4K
KyAgICA8c3R5bGU+CisgICAgICAgICN0YXJnZXQgeworICAgICAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IHNpbHZlcjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MSI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYg
aWQ9InRhcmdldCI+CisJPHA+UHJlc3NNZTwvcD4KKyAgICBUaGlzIHRlc3QgcmVxdWlyZXMgVUlT
Y3JpcHRDb250cm9sbGVyIHRvIHJ1bi4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>