<?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>149854</bug_id>
          
          <creation_ts>2015-10-06 13:26:20 -0700</creation_ts>
          <short_desc>Implement touch-action: manipulation; for iOS</short_desc>
          <delta_ts>2016-03-30 13:36:30 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122212</blocked>
    
    <blocked>133112</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>18runt88</cc>
    
    <cc>50167214</cc>
    
    <cc>benjamin</cc>
    
    <cc>bruno</cc>
    
    <cc>commit-queue</cc>
    
    <cc>daes234</cc>
    
    <cc>eoconnor</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>nekr.fabula</cc>
    
    <cc>rbyers</cc>
    
    <cc>redux</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1131101</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-06 13:26:20 -0700</bug_when>
    <thetext>From https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action:

touch-action: manipulation;

The user agent may consider touches that begin on the element only for the purposes of scrolling and continuous zooming. Any additional behaviors supported by auto are out of scope for this specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131289</commentid>
    <comment_count>1</comment_count>
      <attachid>262604</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-07 07:30:08 -0700</bug_when>
    <thetext>Created attachment 262604
Work in progress on touch-action: manipulation;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131290</commentid>
    <comment_count>2</comment_count>
      <attachid>262604</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-07 07:32:32 -0700</bug_when>
    <thetext>Comment on attachment 262604
Work in progress on touch-action: manipulation;

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

&gt; Source/WebCore/dom/Element.cpp:2365
&gt; +    return parent &amp;&amp; parent-&gt;touchShouldPreventDoubleTapGesture();

This will have to be smarter than just walking up the DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131312</commentid>
    <comment_count>3</comment_count>
      <attachid>262612</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-07 09:10:32 -0700</bug_when>
    <thetext>Created attachment 262612
Basic touch-action: manipulation test using buttons

Refer to test page for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131319</commentid>
    <comment_count>4</comment_count>
      <attachid>262614</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-07 09:26:15 -0700</bug_when>
    <thetext>Created attachment 262614
Work in progress v2 on touch-action: manipulation;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131386</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-07 13:22:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/23017145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133307</commentid>
    <comment_count>6</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2015-10-14 16:36:22 -0700</bug_when>
    <thetext>Thanks for working on this!
I implemented touch-action in chromium, and also edit the spec for it.  Please feel free to reach out to me (here if you like, or directly via e-mail) for any questions on the intended behavior.

Note that we have one outstanding issue that&apos;s relevant here which I expect we&apos;ll fix soon: http://crbug.com/529295.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133629</commentid>
    <comment_count>7</comment_count>
      <attachid>263203</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-15 15:27:53 -0700</bug_when>
    <thetext>Created attachment 263203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133632</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-15 15:30:07 -0700</bug_when>
    <thetext>Attachment 263203 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:741:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:763:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133981</commentid>
    <comment_count>9</comment_count>
      <attachid>263203</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-16 12:36:12 -0700</bug_when>
    <thetext>Comment on attachment 263203
Patch

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

&gt; Source/WebCore/dom/Element.cpp:1390
&gt; +    return !parent || parent-&gt;allowsDoubleTapGesture();

Scary that this function hides a full ancestor walk.

&gt; Source/WebCore/rendering/style/RenderStyle.h:1122
&gt; +#if PLATFORM(IOS)

Seems like all these should be TOUCH_EVENT #ifdefs, not PLATFORM(IOS) #ifdefs.

&gt; Source/WebCore/rendering/style/StyleRareNonInheritedData.h:188
&gt; +    unsigned m_touchAction : 3; // TouchAction

Why 3 bits for 2 values?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133991</commentid>
    <comment_count>10</comment_count>
      <attachid>263203</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-16 13:03:26 -0700</bug_when>
    <thetext>Comment on attachment 263203
Patch

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

&gt;&gt; Source/WebCore/dom/Element.cpp:1390
&gt;&gt; +    return !parent || parent-&gt;allowsDoubleTapGesture();
&gt; 
&gt; Scary that this function hides a full ancestor walk.

True -- perhaps we could cache the result for each element in the chain, though it wouldn&apos;t be useful for elements like links that are only tapped once before the page navigates. One other thing is that http://www.w3.org/TR/pointerevents/#the-touch-action-css-property says: &quot;To determine the effect of a touch, find the nearest ancestor (starting from the element itself) that has a default touch behavior. Then examine the touch-action property of each element between the hit tested element and the element with the default touch behavior (including both the hit tested element and the element with the default touch behavior). If the touch-action property of any of those elements disallows the default touch behavior, do nothing. Otherwise allow the element to start considering the touch for the purposes of executing a default touch behavior.&quot; I wasn&apos;t sure exactly what an &quot;element that has a default touch behavior&quot; refers to (currently, I&apos;m taking this to be the root). Once we&apos;ve cleared this up, we might have to rework our implementation of this function.

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.h:1122
&gt;&gt; +#if PLATFORM(IOS)
&gt; 
&gt; Seems like all these should be TOUCH_EVENT #ifdefs, not PLATFORM(IOS) #ifdefs.

Got it -- I&apos;ll change them.

&gt;&gt; Source/WebCore/rendering/style/StyleRareNonInheritedData.h:188
&gt;&gt; +    unsigned m_touchAction : 3; // TouchAction
&gt; 
&gt; Why 3 bits for 2 values?

My bad -- I&apos;ll fix this. I originally was going to include all 5 values here, but decided to include only auto and manipulation in this patch, since those are the only 2 we support after this patch.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1108
&gt; +- (void)_endPotentialTap

On second thought, maybe I should rename this to be something more descriptive, like _endPotentialTapAndEnableDoubleTapGesturesIfNecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134001</commentid>
    <comment_count>11</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2015-10-16 13:20:31 -0700</bug_when>
    <thetext>&gt;  I wasn&apos;t sure exactly what an &quot;element that has a default touch behavior&quot; refers to (currently, I&apos;m taking this to be the root). Once we&apos;ve cleared this up, we might have to rework our implementation of this function.

If all you&apos;re supporting is &apos;manipulation&apos;, then yes this should simply look up to the root.  This is where the bug I described in Chrome is - we currently stop as soon as we hit anything that scrolls, but that only makes sense for the scrolling-related features of touch-action, not the zooming-related ones (spec bug here https://github.com/w3c/pointerevents/issues/19).

I.e. a developer should be able to write &apos;html { touch-action: manipulation; }&apos; and have double-tap zoom disabled for the entire document (assuming it&apos;s not re-enabled by some other use of touch-action).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134157</commentid>
    <comment_count>12</comment_count>
      <attachid>263365</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-16 23:38:19 -0700</bug_when>
    <thetext>Created attachment 263365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134159</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-16 23:40:09 -0700</bug_when>
    <thetext>Attachment 263365 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:834:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:856:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134597</commentid>
    <comment_count>14</comment_count>
      <attachid>263486</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-19 09:35:25 -0700</bug_when>
    <thetext>Created attachment 263486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134601</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-19 09:39:00 -0700</bug_when>
    <thetext>Attachment 263486 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:834:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:856:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134667</commentid>
    <comment_count>16</comment_count>
      <attachid>263502</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-19 13:09:25 -0700</bug_when>
    <thetext>Created attachment 263502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134679</commentid>
    <comment_count>17</comment_count>
      <attachid>263506</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-19 13:35:13 -0700</bug_when>
    <thetext>Created attachment 263506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134709</commentid>
    <comment_count>18</comment_count>
      <attachid>263514</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-19 14:58:36 -0700</bug_when>
    <thetext>Created attachment 263514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135412</commentid>
    <comment_count>19</comment_count>
      <attachid>263514</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-10-21 15:03:19 -0700</bug_when>
    <thetext>Comment on attachment 263514
Patch

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

Looks good. A bunch of minor comments.

&gt; Source/WebCore/ChangeLog:1
&gt; +2015-10-19  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;

Don&apos;t forget to update the copyright on the files you modify substantially.

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3434
&gt; +#if ENABLE(TOUCH_EVENTS)
&gt; +        case CSSPropertyTouchAction:
&gt; +            return cssValuePool.createValue(style-&gt;touchAction());
&gt; +#endif

I suggest moving this code with WebkitTapHighlightColor and TouchCallout.

&gt; Source/WebCore/css/CSSPrimitiveValueMappings.h:5256
&gt; +template&lt;&gt; inline CSSPrimitiveValue::CSSPrimitiveValue(TouchAction t)

t -&gt; touchAction

Avoid abreviating names.

&gt; Source/WebCore/dom/Element.cpp:1387
&gt; +    if (renderer() &amp;&amp; renderer()-&gt;style().touchAction() != TouchAction::Auto)

This is an unusual way of getting a RenderStyle.

You should instead use renderStyle() which can return nullptr.

&gt; Source/WebCore/rendering/style/RenderStyle.h:1687
&gt; +    void setTouchAction(TouchAction t) { SET_VAR(rareNonInheritedData, m_touchAction, static_cast&lt;unsigned&gt;(t)); }

t -&gt; touchAction.

&gt; LayoutTests/css3/touch-action/touch-action-computed-style.html:8
&gt; +        &lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
&gt; +        &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

I don&apos;t think you need those. The &quot;pre-&quot; script adds the output elements as needed.

&gt; LayoutTests/css3/touch-action/touch-action-computed-style.html:12
&gt; +            var stylesheet;

You can declare this later when initializing the variable.
You can use &quot;let&quot; instead of &quot;var&quot; now :)

&gt; LayoutTests/css3/touch-action/touch-action-computed-style.html:26
&gt; +

Few additional tests needed IMHO:
-various CaSe for the property value
-!important
-CSS cascading (verifying this is not Inherited).

&gt; LayoutTests/css3/touch-action/touch-action-computed-style.html:31
&gt; +            successfullyParsed = true;

???
What???

&gt; LayoutTests/css3/touch-action/touch-action-manipulation-fast-clicks.html:21
&gt; +    if (window.testRunner) {
&gt; +        testRunner.dumpAsText();
&gt; +        testRunner.waitUntilDone();
&gt; +    }

Why not use the text-test script for this test?

&gt; LayoutTests/css3/touch-action/touch-action-parsing.html:31
&gt; +            successfullyParsed = true;

???</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135577</commentid>
    <comment_count>20</comment_count>
      <attachid>263514</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-21 22:27:38 -0700</bug_when>
    <thetext>Comment on attachment 263514
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:1
&gt;&gt; +2015-10-19  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
&gt; 
&gt; Don&apos;t forget to update the copyright on the files you modify substantially.

I wasn&apos;t sure exactly which changes are substantial, but I updated the year on the following files: WebPageIOS.mm and Element.cpp since I introduced some non-cookie-cutter logic to them and their years were also outdated.

&gt;&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:3434
&gt;&gt; +#endif
&gt; 
&gt; I suggest moving this code with WebkitTapHighlightColor and TouchCallout.

Sounds good. Fixed!

&gt;&gt; Source/WebCore/css/CSSPrimitiveValueMappings.h:5256
&gt;&gt; +template&lt;&gt; inline CSSPrimitiveValue::CSSPrimitiveValue(TouchAction t)
&gt; 
&gt; t -&gt; touchAction
&gt; 
&gt; Avoid abreviating names.

Got it. Changed to touchAction.

&gt;&gt; Source/WebCore/dom/Element.cpp:1387
&gt;&gt; +    if (renderer() &amp;&amp; renderer()-&gt;style().touchAction() != TouchAction::Auto)
&gt; 
&gt; This is an unusual way of getting a RenderStyle.
&gt; 
&gt; You should instead use renderStyle() which can return nullptr.

Fixed!

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.h:1687
&gt;&gt; +    void setTouchAction(TouchAction t) { SET_VAR(rareNonInheritedData, m_touchAction, static_cast&lt;unsigned&gt;(t)); }
&gt; 
&gt; t -&gt; touchAction.

Changed to touchAction.

&gt;&gt; LayoutTests/css3/touch-action/touch-action-computed-style.html:8
&gt;&gt; +        &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; 
&gt; I don&apos;t think you need those. The &quot;pre-&quot; script adds the output elements as needed.

Got it. Removed the console divs.

&gt;&gt; LayoutTests/css3/touch-action/touch-action-computed-style.html:12
&gt;&gt; +            var stylesheet;
&gt; 
&gt; You can declare this later when initializing the variable.
&gt; You can use &quot;let&quot; instead of &quot;var&quot; now :)

Wooo ES6! Changed.

&gt;&gt; LayoutTests/css3/touch-action/touch-action-computed-style.html:26
&gt;&gt; +
&gt; 
&gt; Few additional tests needed IMHO:
&gt; -various CaSe for the property value
&gt; -!important
&gt; -CSS cascading (verifying this is not Inherited).

Got it. Updated computed style test to verify these behaviors.

&gt;&gt; LayoutTests/css3/touch-action/touch-action-computed-style.html:31
&gt;&gt; +            successfullyParsed = true;
&gt; 
&gt; ???
&gt; What???

Sorry about that -- removed. I think I included this when I was trying to follow the footsteps of some other computed style tests.

&gt;&gt; LayoutTests/css3/touch-action/touch-action-manipulation-fast-clicks.html:21
&gt;&gt; +    }
&gt; 
&gt; Why not use the text-test script for this test?

Fixed.

&gt;&gt; LayoutTests/css3/touch-action/touch-action-parsing.html:31
&gt;&gt; +            successfullyParsed = true;
&gt; 
&gt; ???

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135675</commentid>
    <comment_count>21</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2015-10-22 06:55:36 -0700</bug_when>
    <thetext>Committed r191452: &lt;http://trac.webkit.org/changeset/191452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149383</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Rebert">webkit</who>
    <bug_when>2015-12-15 14:03:51 -0800</bug_when>
    <thetext>Relevant blog post: https://webkit.org/blog/5610/more-responsive-tapping-on-ios/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149579</commentid>
    <comment_count>23</comment_count>
    <who name="yisibl">50167214</who>
    <bug_when>2015-12-16 02:42:14 -0800</bug_when>
    <thetext>Only in iOS? Why not support other platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157141</commentid>
    <comment_count>24</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2016-01-20 17:42:53 -0800</bug_when>
    <thetext>I tried out iOS 9.3 beta on http://rbyers.net/touch-action.html.  I see CSS parser support for touch-action:auto and touch-action:manipulation, but it doesn&apos;t appear to affect the click delay or double-tap to zoom gesture.  Are there bits of this that didn&apos;t make it into the 9.3 release, or is there a bug?

The viewport-based click delay elimination looks awesome though, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157148</commentid>
    <comment_count>25</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-01-20 17:59:56 -0800</bug_when>
    <thetext>Thanks for the catch -- what&apos;s happening in that example is that since the touch-action: manipulation div is not clickable, we skip that node when trying to find a clickable element for the touch. To verify this, add an onclick to the div with touch-action manipulation and touches on it should turn fast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157159</commentid>
    <comment_count>26</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2016-01-20 18:37:13 -0800</bug_when>
    <thetext>Ah, I forgot about having to annotate clickable things explicitly in mobile Safari, thanks!  I updated that test, and now it works great!  I tried a couple other scenarios (touch-action specified on a container that isn&apos;t itself clickable, iframes, overflow:scroll divs) and they all look good to me.  Thanks again for implementing this!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262604</attachid>
            <date>2015-10-07 07:30:08 -0700</date>
            <delta_ts>2015-10-07 09:26:12 -0700</delta_ts>
            <desc>Work in progress on touch-action: manipulation;</desc>
            <filename>bug-149854-20151007072936.patch</filename>
            <type>text/plain</type>
            <size>21644</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwODQyMjJiNGFlNGNh
MzI3NGM0Yjc3ZTlkNmNiY2RjOTI2N2ZjZS4uYWU2YTNkN2NmMGQzOTM5NzdjMDQ4NDdlMjRjNjAx
YTFkOGIzYWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTEwLTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXl3b3JkUHJvcGVydHlJRCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIFRvdWNoQWN0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1l
cy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0b3VjaFNob3VsZFByZXZl
bnREb3VibGVUYXBHZXN0dXJlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisKIDIwMTUtMTAtMDUgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU2xpZGVyIGtub2JzIHNob3VsZCBzY2Fs
ZSB3aGVuIHJlbmRlcmluZyB3aGlsZSB6b29tZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMDQzOTRiMGVlZjVi
ZDY3YjEwZjVkY2E1YjhkZDg1ZTFlODA0NGZhLi42ZmNkZWYzYjZiNjE5OTY3MDU5MGFhZWY1MDVk
MDI2NGYxYTY1NzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTUtMTAtMDYgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk4NTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nU2luZ2xlVGFwXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX3NpbmdsZVRhcFJlY29nbml6ZWQ6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3NpbmdsZVRhcENvbW1pdGVkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9z
ZXREb3VibGVUYXBHZXN0dXJlc0VuYWJsZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzYWJs
ZURvdWJsZVRhcEdlc3R1cmVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvdGVudGlhbFRhcEF0UG9z
aXRpb24pOgorCiAyMDE1LTEwLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBFbmFibGUgWFNMVCB3aGVuIGJ1aWxkaW5nIFdlYktpdCBmb3IgaU9TIHVzaW5n
IHRoZSBwdWJsaWMgaU9TIFNESwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBlNGQxZTI3YjEzNjA0ZDViMzZjMzRhYjZhYjZh
ODlhYjk2YjMzMTU2Li4xNzI2N2RkNzkwODhhMWJkODYxZjE3NDlhODVmYjQ0NWRhMDAzZDI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMzM5Niw2ICszMzk2LDggQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChwYWRkaW5nU2hvcnRoYW5kKCkpOwogCisgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUb3VjaEFjdGlvbjoKKyAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRvdWNoQWN0aW9uKCkpOwogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3Jv
bGxTbmFwVHlwZToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUtPnNjcm9sbFNuYXBUeXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA3
ZWNlMWM3NDczOTEyN2EwOGMyMzA2ZmM2NWJiZmYzYTQ1ZTQyNmZkLi41NzFmN2RiMWQyNWViMjA5
MDMxMDg2ZGZiZmYxZTVjYmE2NjA3NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAt
NzQ3LDYgKzc0NywxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0
eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgaW50CiAgICAgICAgIGlmICh2YWx1
ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcmVha1dvcmQpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRvdWNoQWN0aW9uOiAvLyBub25lIHwgYXV0byB8IG1hbmlwdWxhdGlvbgorICAg
ICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1
dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmlwdWxhdGlvbikKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3JvbGxTbmFwVHlwZTogLy8gbm9uZSB8IG1hbmRhdG9y
eSB8IHByb3hpbWl0eQogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU1hbmRhdG9yeSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJveGltaXR5
KQpAQCAtMTE2OSw2ICsxMTczLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzS2V5d29yZFByb3Bl
cnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0
ZVNwYWNlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdvcmRXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUb3VjaEFjdGlvbjoKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3Jv
bGxTbmFwVHlwZToKICNlbmRpZgpAQCAtMzIxNSw2ICszMjIwLDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUb3VjaEFjdGlvbjoKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRTY3JvbGxTbmFwVHlwZToKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggZWUyZjBkODU2ZDE1ZTdlMDE3
ZDNjNGJkM2I4YjRmNWRkOGU4NDllZS4uNTkyMGUyMTI2ZjExNWI1MmUxYjY1YjAwYWE4MTU0YWJi
MzIwMmJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oCkBAIC01MjUyLDYgKzUyNTIsNDAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRab29tIHRleHRab29tKQogICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwogfQogCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVG91Y2hBY3Rpb24gZSkKKyAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQoreworICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1Nf
VkFMVUVfSUQ7CisgICAgc3dpdGNoIChlKSB7CisgICAgY2FzZSBUb3VjaEFjdGlvbjo6Tm9uZToK
KyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgorICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUF1dG87CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hBY3Rpb246Ok1hbmlw
dWxhdGlvbjoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYW5pcHVsYXRpb247
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIFRvdWNoQWN0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNW
YWx1ZUlEKCkpOworICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CisgICAgY2FzZSBDU1NW
YWx1ZU5vbmU6CisgICAgICAgIHJldHVybiBUb3VjaEFjdGlvbjo6Tm9uZTsKKyAgICBjYXNlIENT
U1ZhbHVlQXV0bzoKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOworICAgIGNhc2Ug
Q1NTVmFsdWVNYW5pcHVsYXRpb246CisgICAgICAgIHJldHVybiBUb3VjaEFjdGlvbjo6TWFuaXB1
bGF0aW9uOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVG91Y2hBY3Rpb246OkF1dG87Cit9CisKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFNjcm9sbFNuYXBUeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXgg
ZmJmMGFkOTZkYjE0ZDY3ZDg4ODJlOTcxZTE3Y2FlYzk1YmUyNTY1Mi4uN2RlZWFhOGQ2MzQ4YTYy
ZDQxNWU4YTQ3MzNjZDMyMmMzOGQ4NjFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW4KQEAgLTY2Miw2ICs2NjIsNyBAQCB1c2VyLXpvb20gW1NraXBCdWlsZGVyXQogLXdl
YmtpdC1vdmVyZmxvdy1zY3JvbGxpbmcgW0luaGVyaXRlZCwgTmFtZUZvck1ldGhvZHM9VXNlVG91
Y2hPdmVyZmxvd1Njcm9sbGluZywgQ29udmVydGVyPU92ZXJmbG93U2Nyb2xsaW5nXQogI2VuZGlm
CiAjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCistd2Vi
a2l0LXRvdWNoLWFjdGlvbgogLXdlYmtpdC10b3VjaC1jYWxsb3V0IFtJbmhlcml0ZWQsIE5hbWVG
b3JNZXRob2RzPVRvdWNoQ2FsbG91dEVuYWJsZWQsIENvbnZlcnRlcj1Ub3VjaENhbGxvdXRdCiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCAwMGQyNmNi
OTI5YjhlMmVmOTgxMTViOWViMzkyNDkzNTg4MDllNWU2Li4wYjM5ZTBlZDk1MTcyMGM0ZmRiMDFj
NGNkZmY5ZDA1YTFhMDQwOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgpAQCAtMTA2Myw2ICsxMDYzLDkgQEAgYXQKIC8vIC13ZWJraXQtc2Nyb2xsLXNuYXAtcG9pbnRz
LXkKIGVsZW1lbnRzCiAKKy8vIC13ZWJraXQtdG91Y2gtYWN0aW9uCittYW5pcHVsYXRpb24KKwog
Ly8gLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlCiBtYW5kYXRvcnkKIHByb3hpbWl0eQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IGFiYWExNGY3ZDYzNDAyYWY5MmRhNDdhM2UxZGNkOTQ3YmEwYjE1
MjcuLjc5ZGNhNmJhMjUwMTgzOWEwNGYzOWE1NTgzYmE2ZWEwNjE4MWQyZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTIzNTQsNiArMjM1NCwyMCBAQCB2b2lkIEVsZW1lbnQ6Om1lcmdlV2l0
aE5leHRUZXh0Tm9kZShUZXh0JiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB0ZXh0TmV4
dC0+cmVtb3ZlKGVjKTsKIH0KIAorYm9vbCBFbGVtZW50Ojp0b3VjaFNob3VsZFByZXZlbnREb3Vi
bGVUYXBHZXN0dXJlKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKFJlbmRl
ck9iamVjdCogcmVuZGVyT2JqZWN0ID0gcmVuZGVyZXIoKSkgeworICAgICAgICBpZiAocmVuZGVy
T2JqZWN0LT5zdHlsZSgpLnRvdWNoQWN0aW9uKCkgIT0gVG91Y2hBY3Rpb246OkF1dG8pCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgRWxlbWVudCogcGFyZW50ID0gcGFyZW50
RWxlbWVudCgpOworICAgIHJldHVybiBwYXJlbnQgJiYgcGFyZW50LT50b3VjaFNob3VsZFByZXZl
bnREb3VibGVUYXBHZXN0dXJlKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQorCiBTdHJpbmcgRWxlbWVudDo6aW5uZXJIVE1MKCkgY29uc3QKIHsKICAgICByZXR1cm4gY3Jl
YXRlTWFya3VwKCp0aGlzLCBDaGlsZHJlbk9ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYzBh
NDg5ZmEwNDJlYmQ4NDhmM2U1ZjIzNGVjOWE0NTRiZWE1MmVkYS4uNmIxMjU1NDA5ODIwZTUxNmUy
ZjIzNjM2ZTAzZDBjMTRhMTUwNGU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00OTAsNiArNDkw
LDggQEAgcHVibGljOgogICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIoKTsKICAgICBS
ZWY8UmVuZGVyU3R5bGU+IHJlc29sdmVTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwog
CisgICAgdmlydHVhbCBib29sIHRvdWNoU2hvdWxkUHJldmVudERvdWJsZVRhcEdlc3R1cmUoKSBj
b25zdDsKKwogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50JiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNTlmOWQ1NmY2ZTM4NmE3M2FhNzQ3ZGI1YzE1OWVj
ZDBmN2NlZGNhMS4uM2JkNDc1ZjM1ZDM5YjkzYTQwZDc5YTAxNGYyZTY3MGFiMDU3MDBlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTExMTYs
NiArMTExNiw4IEBAIHB1YmxpYzoKICAgICBpbnQgaW5pdGlhbExldHRlckRyb3AoKSBjb25zdCB7
IHJldHVybiBpbml0aWFsTGV0dGVyKCkud2lkdGgoKTsgfQogICAgIGludCBpbml0aWFsTGV0dGVy
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5pdGlhbExldHRlcigpLmhlaWdodCgpOyB9CiAKKyAg
ICBUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRv
dWNoQWN0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90b3VjaEFjdGlvbik7IH0KKwogI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgU2Nyb2xsU25hcFR5cGUgc2Nyb2xsU25hcFR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTY3JvbGxTbmFwVHlwZT4ocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fc2Nyb2xsU25hcFR5cGUpOyB9CiAgICAgY29uc3QgU2Nyb2xsU25hcFBv
aW50cyogc2Nyb2xsU25hcFBvaW50c1goKSBjb25zdDsKQEAgLTE2NzEsNiArMTY3Myw4IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIHNldEluaXRpYWxMZXR0ZXIoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2luaXRpYWxMZXR0ZXIsIHNpemUp
OyB9CiAgICAgCisgICAgdm9pZCBzZXRUb3VjaEFjdGlvbihUb3VjaEFjdGlvbiB0YSkgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RvdWNoQWN0aW9uLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odGEpKTsgfQorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB2b2lkIHNl
dFNjcm9sbFNuYXBUeXBlKFNjcm9sbFNuYXBUeXBlIHR5cGUpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9zY3JvbGxTbmFwVHlwZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUp
KTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsU25hcFBvaW50c1goc3RkOjp1bmlxdWVfcHRyPFNjcm9s
bFNuYXBQb2ludHM+KTsKQEAgLTIwMjMsNiArMjAyNyw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBXaWxsQ2hhbmdlRGF0YSogaW5pdGlhbFdpbGxDaGFuZ2UoKSB7IHJldHVybiBudWxscHRyOyB9
CiAKKyAgICBzdGF0aWMgVG91Y2hBY3Rpb24gaW5pdGlhbFRvdWNoQWN0aW9uKCkgeyByZXR1cm4g
VG91Y2hBY3Rpb246OkF1dG87IH0KKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAg
c3RhdGljIFNjcm9sbFNuYXBUeXBlIGluaXRpYWxTY3JvbGxTbmFwVHlwZSgpIHsgcmV0dXJuIFNj
cm9sbFNuYXBUeXBlOjpOb25lOyB9CiAgICAgc3RhdGljIFNjcm9sbFNuYXBQb2ludHMqIGluaXRp
YWxTY3JvbGxTbmFwUG9pbnRzWCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXgg
YmJiNGNhYTExMDQ4YjJkY2I3NjFmYjE1M2MzNTRmMmJkZmZhYjkwZi4uMmEyOGI5YmVlMmY4ZjZj
NjY0NzJiNmNlYjVkMmZiYWM4NTA0NGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTY0OSw2ICs2NDksMTIg
QEAgZW51bSBjbGFzcyBTY3JvbGxTbmFwVHlwZSB7CiB9OwogI2VuZGlmCiAKK2VudW0gY2xhc3Mg
VG91Y2hBY3Rpb24geworICAgIEF1dG8sCisgICAgTWFuaXB1bGF0aW9uLAorICAgIE5vbmUKK307
CisKICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCiBlbnVtIGNsYXNzIFRyYWlsaW5nV29y
ZCB7CiAgICAgQXV0bywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IGY2MTc1MmRhOWM1N2IzMmMz
NGVjYzgyMDRlN2RlOTRiMTEyZDcxNzUuLmUzNjkzM2I5MzZiMzQyOTcxMTQ4MDE0MjEwNTA2NDQ0
ZTAzZjAwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMTg5LDYgKzE4OSw4IEBAIHB1Ymxp
YzoKICAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIG1fanVzdGlmeUl0ZW1zOwogICAgIFN0eWxl
U2VsZkFsaWdubWVudERhdGEgbV9qdXN0aWZ5U2VsZjsKIAorICAgIHVuc2lnbmVkIG1fdG91Y2hB
Y3Rpb24gOiAyOyAvLyBUb3VjaEFjdGlvbgorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
ICAgICB1bnNpZ25lZCBtX3Njcm9sbFNuYXBUeXBlIDogMjsgLy8gU2Nyb2xsU25hcFR5cGUKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggN2VlODFiOTY0MmI1
ZGZjYmI5MjI4ZWFkNWI3OTkwMzA1MzNlOTRiNC4uY2Y3MjMyNWVlZTU2ZmJjYmFmYTFjNmU1NDhm
MjFkMWVkMjBiNDg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0y
NzIsNiArMjcyLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRH
ZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29y
ZTo6Q29sb3ImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgaGlnaGxpZ2h0ZWRR
dWFkcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRv
bUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlcygpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGR5bmFtaWNWaWV3cG9ydFVwZGF0
ZUNoYW5nZWRUYXJnZXQoZG91YmxlIG5ld1NjYWxlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBuZXdTY3JvbGxQb3NpdGlvbiwgdWludDY0X3QgdHJhbnNhY3Rpb25JRCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDUzYjdmOTNmMjdkOGMwMjlkMWNl
MjMzYWEzYWVmMDZjYWYxZmFiOGIuLmY1YTNmZjkxYWNjODU1YWVkMWFkNzVmMGNkZGMyZjNlYjZi
Y2I2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzOTQs
NiArMTM5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBkb3VibGUgc2NhbGUpOwogCiAgICAgdm9pZCBk
aWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGNvbG9yLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgZ2Vv
bWV0cmllcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJv
dHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVz
KTsKKyAgICB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlcygpOwogCiAgICAgdm9pZCBzdGFy
dEFzc2lzdGluZ05vZGUoY29uc3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mLCBib29sIHVzZXJJ
c0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBzdG9wQXNzaXN0aW5nTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNjhmZDA1M2FmMDY3NWVhNTk2ZmEz
OWUzMTY3MmEzZGVkY2Q0YjY1OC4uN2RmMTQ4YWU5MDJjMDEwNzlkNDYyYWQ3MmM2YjM2ZTIwMTI1
MzU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0zNjMsNiArMzYzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICBSZXN0b3JlUGFnZVN0YXRlKFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkUmVjdCwgZG91
YmxlIHNjYWxlKQogICAgIFJlc3RvcmVQYWdlQ2VudGVyQW5kU2NhbGUoV2ViQ29yZTo6RmxvYXRQ
b2ludCB1bm9ic2N1cmVkQ2VudGVyLCBkb3VibGUgc2NhbGUpCiAgICAgRGlkR2V0VGFwSGlnaGxp
Z2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OkNvbG9yIGNvbG9yLCBW
ZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiBnZW9tZXRyaWVzLCBXZWJDb3JlOjpJbnRTaXplIHRv
cExlZnRSYWRpdXMsIFdlYkNvcmU6OkludFNpemUgdG9wUmlnaHRSYWRpdXMsIFdlYkNvcmU6Oklu
dFNpemUgYm90dG9tTGVmdFJhZGl1cywgV2ViQ29yZTo6SW50U2l6ZSBib3R0b21SaWdodFJhZGl1
cykKKyAgICBEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXMoKQogCiAgICAgU3RhcnRBc3Npc3RpbmdO
b2RlKHN0cnVjdCBXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uIGluZm9ybWF0aW9uLCBi
b29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgU3RvcEFzc2lzdGluZ05vZGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDVhMWJkZTEyNzcy
ZTkzOWMyYmM4MzllZTg5M2RmOTg4NjRiNWMyZjAuLmQ0MWZlNjdmN2JkZWY0NTZiZGJhZmU3MTdk
YzU4MTExODBiYjk4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCB2b2lkIGNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYg
aGlnaGxpZ2h0ZWRRdWFkcywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wTGVmdFJhZGl1cywg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdHRvbVJp
Z2h0UmFkaXVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdl
c3R1cmVzKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TGF5ZXJUcmVl
KGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGR5bmFtaWNWaWV3cG9ydFVwZGF0ZUNoYW5nZWRUYXJnZXQoZG91YmxlIG5ld1NjYWxl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgdWludDY0X3Qg
dHJhbnNhY3Rpb25JRCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBlZGQ0Y2U1YWVhMWUxMTVlNjBlNTc4YmVi
YzNmOTBlMDc2MzhkNjdkLi42ZjU5MzNhZjlhNmExZDdmOGI1YTc0Mjc3YjA5YTZmMmM3NTRmNWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KQEAgLTQ5OCw2ICs0OTgsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkR2V0VGFw
SGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkMKICAgICBb
bV9jb250ZW50VmlldyBfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDpyZXF1ZXN0SUQgY29s
b3I6Y29sb3IgcXVhZHM6aGlnaGxpZ2h0ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOnRvcExlZnRSYWRp
dXMgdG9wUmlnaHRSYWRpdXM6dG9wUmlnaHRSYWRpdXMgYm90dG9tTGVmdFJhZGl1czpib3R0b21M
ZWZ0UmFkaXVzIGJvdHRvbVJpZ2h0UmFkaXVzOmJvdHRvbVJpZ2h0UmFkaXVzXTsKIH0KIAordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzKCkKK3sKKyAgICBbbV9j
b250ZW50VmlldyBfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nU2luZ2xlVGFwXTsKK30K
Kwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ29tbWl0TGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uJiBsYXllclRyZWVUcmFuc2FjdGlvbikKIHsKICAgICBbbV9jb250
ZW50VmlldyBfZGlkQ29tbWl0TGF5ZXJUcmVlOmxheWVyVHJlZVRyYW5zYWN0aW9uXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCmluZGV4IGQ3OWUxMTgyYTJhOWEyN2FkMTBmNzdjMTFjMmRjNDljZjVhZDI2MTEuLjUz
NzY1MTQ1YTg4NTVkYjllMzBiNGNlYTJmYzZjZjdlZGRlMmFhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApA
QCAtMTc1LDEyICsxNzUsMTQgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKIC0gKHZv
aWQpY2xlYW51cEludGVyYWN0aW9uOwogCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsU3RhcnRQYW5P
clBpbmNoR2VzdHVyZTsKKy0gKHZvaWQpX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDooQk9P
TCllbmFibGU7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogLSAodm9pZClfd2ViVG91Y2hF
dmVudDooY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50Jil0b3VjaEV2ZW50IHByZXZl
bnRzTmF0aXZlR2VzdHVyZXM6KEJPT0wpcHJldmVudHNEZWZhdWx0OwogI2VuZGlmCiAtICh2b2lk
KV9jb21taXRQb3RlbnRpYWxUYXBGYWlsZWQ7CiAtICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRG
b3JSZXF1ZXN0Oih1aW50NjRfdClyZXF1ZXN0SUQgY29sb3I6KGNvbnN0IFdlYkNvcmU6OkNvbG9y
Jiljb2xvciBxdWFkczooY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mKWhpZ2hsaWdo
dGVkUXVhZHMgdG9wTGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wTGVmdFJh
ZGl1cyB0b3BSaWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wUmlnaHRSYWRp
dXMgYm90dG9tTGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tTGVmdFJh
ZGl1cyBib3R0b21SaWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tUmln
aHRSYWRpdXM7CistICh2b2lkKV9kaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdTaW5nbGVU
YXA7CiAKIC0gKHZvaWQpX3N0YXJ0QXNzaXN0aW5nTm9kZTooY29uc3QgV2ViS2l0OjpBc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdXNlcklzSW50ZXJhY3Rpbmc6KEJPT0wpdXNl
cklzSW50ZXJhY3RpbmcgYmx1clByZXZpb3VzTm9kZTooQk9PTClibHVyUHJldmlvdXNOb2RlIHVz
ZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1c2VyT2JqZWN0OwogLSAodm9p
ZClfc3RvcEFzc2lzdGluZ05vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDAzYzRhYTAxOTNhMTZh
NDhmZWIxZjg3Y2IzYjRhOTljNjkzYzVjZTguLjZmMDU2OTQyYmY2ZDhkOWE3YmNhNTVlZDY5MWNh
NjU2ZGQ1NjNhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03NTgsNiArNzU4LDEyIEBAIC0gKHZv
aWQpX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRCBjb2xv
cjooY29uc3QgV2ViQ29yZTo6CiAgICAgW3NlbGYgX3Nob3dUYXBIaWdobGlnaHRdOwogfQogCist
ICh2b2lkKV9kaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdTaW5nbGVUYXAKK3sKKyAgICBp
ZiAoX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MpCisgICAgICAgIFtzZWxmIF9zZXREb3VibGVUYXBH
ZXN0dXJlc0VuYWJsZWQ6Tk9dOworfQorCiAtICh2b2lkKV9jYW5jZWxMb25nUHJlc3NHZXN0dXJl
UmVjb2duaXplcgogewogICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIg
Y2FuY2VsXTsKQEAgLTExMDUsNiArMTExMSw3IEBAIC0gKHZvaWQpX3NpbmdsZVRhcFJlY29nbml6
ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogICAgIF9wYWdl
LT5wb3RlbnRpYWxUYXBBdFBvc2l0aW9uKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uLCArK19s
YXRlc3RUYXBIaWdobGlnaHRJRCk7CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBZRVM7
CiAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKKyAgICBbc2VsZiBfc2V0RG91Ymxl
VGFwR2VzdHVyZXNFbmFibGVkOllFU107CiB9CiAKIHN0YXRpYyB2b2lkIGNhbmNlbFBvdGVudGlh
bFRhcElmTmVjZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRWaWV3KQpAQCAtMTE0OSw2ICsx
MTU2LDcgQEAgLSAodm9pZClfc2luZ2xlVGFwQ29tbWl0ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6
ZXIgKilnZXN0dXJlUmVjb2duaXplcgogCiAgICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0g
Z2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb247CiAKKyAgICBbc2VsZiBfc2V0RG91YmxlVGFwR2Vz
dHVyZXNFbmFibGVkOllFU107CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBOTzsKIAog
ICAgIGlmIChfaGFzVGFwSGlnaGxpZ2h0Rm9yUG90ZW50aWFsVGFwKSB7CkBAIC0xMjMyLDYgKzEy
NDAsMTEgQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuT3JQaW5jaEdlc3R1cmUKICAg
ICBfY2FuU2VuZFRvdWNoRXZlbnRzQXN5bmNocm9ub3VzbHkgPSBZRVM7CiB9CiAKKy0gKHZvaWQp
X3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgW19kb3Vi
bGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXRFbmFibGVkOmVuYWJsZWRdOworfQorCiAtICh2b2lk
KV9kaWRFbmRTY3JvbGxpbmdPclpvb21pbmcKIHsKICAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFu
dCBkaWRFbmRTY3JvbGxpbmdPclpvb21pbmdQYWdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMGEzMjlkMDkyODgwYWI3YmM4ZjI5
MzgzZTgwNGIxZjkyOTBhZTY0OS4uMDVhZGQ5ZjIwMzIzNzg4ZDE4NzI5Y2U4MDAyYmQ3MGY3OGFm
YjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KQEAgLTgxMCw2ICs4MTAsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldFRhcEhp
Z2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3IKICAgICBt
X3BhZ2VDbGllbnQuZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyhyZXF1ZXN0SUQsIGNvbG9y
LCBoaWdobGlnaHRlZFF1YWRzLCB0b3BMZWZ0UmFkaXVzLCB0b3BSaWdodFJhZGl1cywgYm90dG9t
TGVmdFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzKCkKK3sKKyAgICBtX3BhZ2VDbGllbnQuZGlzYWJsZURv
dWJsZVRhcEdlc3R1cmVzKCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydEFzc2lzdGlu
Z05vZGUoY29uc3QgQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mIGluZm9ybWF0aW9uLCBib29sIHVz
ZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91c05vZGUsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKICAgICBBUEk6Ok9iamVjdCogdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzKCku
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
aW5kZXggYjMwYjU0ZjUyMzhlMGY2MDNiNjRhYWU2MDM2YzliZDk4Yzc2ZjZmMS4uNWY4Y2MwMGJm
OTAzZTZjZDFmYWM1ZGZmZTYyY2Y2YTM1ODVmYTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNjYyLDYgKzY2Miwx
MyBAQCB2b2lkIFdlYlBhZ2U6OnBvdGVudGlhbFRhcEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaQogewogICAgIG1fcG90ZW50aWFsVGFwTm9kZSA9
IG1fcGFnZS0+bWFpbkZyYW1lKCkubm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKHBvc2l0aW9u
LCBtX3BvdGVudGlhbFRhcExvY2F0aW9uKTsKICAgICBzZW5kVGFwSGlnaGxpZ2h0Rm9yTm9kZUlm
TmVjZXNzYXJ5KHJlcXVlc3RJRCwgbV9wb3RlbnRpYWxUYXBOb2RlLmdldCgpKTsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgaWYgKG1fcG90ZW50aWFsVGFwTm9kZSAmJiBpczxFbGVtZW50PihtX3Bv
dGVudGlhbFRhcE5vZGUuZ2V0KCkpKSB7CisgICAgICAgIEVsZW1lbnQmIHRhcEVsZW1lbnQgPSBk
b3duY2FzdDxFbGVtZW50PigqbV9wb3RlbnRpYWxUYXBOb2RlLmdldCgpKTsKKyAgICAgICAgaWYg
KHRhcEVsZW1lbnQudG91Y2hTaG91bGRQcmV2ZW50RG91YmxlVGFwR2VzdHVyZSgpKQorICAgICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNhYmxlRG91YmxlVGFwR2VzdHVy
ZXMoKSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZTo6Y29tbWl0UG90ZW50aWFs
VGFwKHVpbnQ2NF90IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>262612</attachid>
            <date>2015-10-07 09:10:32 -0700</date>
            <delta_ts>2015-10-07 09:10:32 -0700</delta_ts>
            <desc>Basic touch-action: manipulation test using buttons</desc>
            <filename>touch-action-manipulation.html</filename>
            <type>text/html</type>
            <size>2014</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">PGh0bWw+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgi
PgoKPGhlYWQ+CiAgICA8c2NyaXB0PgogICAgdmFyIHRpbWVzdGFtcDsKICAgIHZhciBjbGlja0Nv
dW50cyA9IHsiZmFzdC10b3VjaCI6IDAsICJub3JtYWwtdG91Y2giOiAwfTsKCiAgICBmdW5jdGlv
biBzZXR1cCgpIHsKICAgICAgICBiaW5kVG91Y2hBbmRDbGlja0hhbmRsZXJzKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmYXN0LXRvdWNoIiksIGhhbmRsZVRvdWNoRW5kLCBoYW5kbGVTeW50aGV0
aWNDbGljayk7CiAgICAgICAgYmluZFRvdWNoQW5kQ2xpY2tIYW5kbGVycyhkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibm9ybWFsLXRvdWNoIiksIGhhbmRsZVRvdWNoRW5kLCBoYW5kbGVTeW50aGV0
aWNDbGljayk7CiAgICB9CgogICAgZnVuY3Rpb24gYmluZFRvdWNoQW5kQ2xpY2tIYW5kbGVycyhl
bGVtZW50LCBvbnRvdWNoZW5kLCBvbmNsaWNrKSB7CiAgICAgICAgZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJ0b3VjaGVuZCIsIG9udG91Y2hlbmQsIGZhbHNlKTsKICAgICAgICBlbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgb25jbGljaywgZmFsc2UpOwogICAgfQoKICAgIGZ1bmN0
aW9uIGhhbmRsZVRvdWNoRW5kKGV2ZW50KSB7CiAgICAgICAgZXZlbnQudGFyZ2V0LnN0eWxlLmJh
Y2tncm91bmRDb2xvciA9ICIjRkYyMjIyIjsKICAgICAgICB0aW1lc3RhbXAgPSBOdW1iZXIobmV3
IERhdGUoKSk7CiAgICB9CgogICAgZnVuY3Rpb24gaGFuZGxlU3ludGhldGljQ2xpY2soZXZlbnQp
IHsKICAgICAgICBjbGlja0NvdW50c1tldmVudC50YXJnZXQuaWRdKys7CiAgICAgICAgdmFyIGRl
bGF5ID0gTnVtYmVyKG5ldyBEYXRlKCkpIC0gdGltZXN0YW1wOwogICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZWxheS1sb2ciKS50ZXh0Q29udGVudCA9ICJEZWxheTogIiArIGRlbGF5
ICsgIiBtcyI7CiAgICAgICAgZXZlbnQudGFyZ2V0LnRleHRDb250ZW50ID0gIkNsaWNrIGNvdW50
OiAiICsgY2xpY2tDb3VudHNbZXZlbnQudGFyZ2V0LmlkXTsKICAgICAgICBldmVudC50YXJnZXQu
c3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiMyMkZGMjIiOwogICAgfQogICAgPC9zY3JpcHQ+Cgog
ICAgPHN0eWxlPgogICAgYnV0dG9uIHsKICAgICAgICB3aWR0aDogNTAlOwogICAgICAgIGhlaWdo
dDogMTAwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiAjMjJGRjIyOwogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAj
ZmFzdC10b3VjaCB7CiAgICAgICAgLXdlYmtpdC10b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsK
ICAgICAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsKICAgIH0KICAgIDwvc3R5bGU+Cjwv
aGVhZD4KCjxib2R5IG9ubG9hZD0ic2V0dXAoKSI+CiAgICA8cD5UaGUgdG9wIGJ1dHRvbiBoYXMg
PGNvZGU+LXdlYmtpdC10b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjwvY29kZT4gd2hpbGUgdGhl
IGJvdHRvbSBvbmUgZG9lc24ndC4gRG91YmxlLXRhcHBpbmcgaW4gdGhlIHRvcCBidXR0b24gc2hv
dWxkIGdlbmVyYXRlIHR3byBjbGljayBldmVudHMsIGFuZCBzaG91bGQgbm90IGNhdXNlIHVzIHRv
IHpvb20gaW4uIEhvd2V2ZXIsIGRvdWJsZSB0YXBwaW5nIGluIHRoZSBzZWNvbmQgYnV0dG9uIHNo
b3VsZCBzdGlsbCB0cmlnZ2VyIHpvb20gYW5kIHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IGNsaWNr
cy4gVGhlcmUgc2hvdWxkIGFsc28gYmUgdGhlIG5vcm1hbCB+MzUwbXMgZGVsYXkgd2hlbiB0YXBw
aW5nIG9uIHRoZSBzZWNvbmQgYnV0dG9uLjwvcD4KICAgIDxidXR0b24gaWQ9ImZhc3QtdG91Y2gi
PkNsaWNrIGNvdW50OiAwPC9idXR0b24+CiAgICA8YnV0dG9uIGlkPSJub3JtYWwtdG91Y2giPkNs
aWNrIGNvdW50OiAwPC9idXR0b24+CiAgICA8ZGl2IGlkPSJkZWxheS1sb2ciPkRlbGF5OjwvZGl2
Pgo8L2JvZHk+Cgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262614</attachid>
            <date>2015-10-07 09:26:15 -0700</date>
            <delta_ts>2015-10-15 15:27:47 -0700</delta_ts>
            <desc>Work in progress v2 on touch-action: manipulation;</desc>
            <filename>bug-149854-20151007092543.patch</filename>
            <type>text/plain</type>
            <size>23274</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwODQyMjJiNGFlNGNh
MzI3NGM0Yjc3ZTlkNmNiY2RjOTI2N2ZjZS4uYWU2YTNkN2NmMGQzOTM5NzdjMDQ4NDdlMjRjNjAx
YTFkOGIzYWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTEwLTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5k
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXl3b3JkUHJvcGVydHlJRCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIFRvdWNoQWN0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1l
cy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp0b3VjaFNob3VsZFByZXZl
bnREb3VibGVUYXBHZXN0dXJlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisKIDIwMTUtMTAtMDUgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU2xpZGVyIGtub2JzIHNob3VsZCBzY2Fs
ZSB3aGVuIHJlbmRlcmluZyB3aGlsZSB6b29tZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMDQzOTRiMGVlZjVi
ZDY3YjEwZjVkY2E1YjhkZDg1ZTFlODA0NGZhLi42ZmNkZWYzYjZiNjE5OTY3MDU5MGFhZWY1MDVk
MDI2NGYxYTY1NzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTUtMTAtMDYgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk4NTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nU2luZ2xlVGFwXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX3NpbmdsZVRhcFJlY29nbml6ZWQ6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3NpbmdsZVRhcENvbW1pdGVkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9z
ZXREb3VibGVUYXBHZXN0dXJlc0VuYWJsZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzYWJs
ZURvdWJsZVRhcEdlc3R1cmVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvdGVudGlhbFRhcEF0UG9z
aXRpb24pOgorCiAyMDE1LTEwLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBFbmFibGUgWFNMVCB3aGVuIGJ1aWxkaW5nIFdlYktpdCBmb3IgaU9TIHVzaW5n
IHRoZSBwdWJsaWMgaU9TIFNESwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBlNGQxZTI3YjEzNjA0ZDViMzZjMzRhYjZhYjZh
ODlhYjk2YjMzMTU2Li4xNzI2N2RkNzkwODhhMWJkODYxZjE3NDlhODVmYjQ0NWRhMDAzZDI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMzM5Niw2ICszMzk2LDggQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChwYWRkaW5nU2hvcnRoYW5kKCkpOwogCisgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUb3VjaEFjdGlvbjoKKyAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRvdWNoQWN0aW9uKCkpOwogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3Jv
bGxTbmFwVHlwZToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUtPnNjcm9sbFNuYXBUeXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA3
ZWNlMWM3NDczOTEyN2EwOGMyMzA2ZmM2NWJiZmYzYTQ1ZTQyNmZkLi41NzFmN2RiMWQyNWViMjA5
MDMxMDg2ZGZiZmYxZTVjYmE2NjA3NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAt
NzQ3LDYgKzc0NywxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0
eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgaW50CiAgICAgICAgIGlmICh2YWx1
ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcmVha1dvcmQpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRvdWNoQWN0aW9uOiAvLyBub25lIHwgYXV0byB8IG1hbmlwdWxhdGlvbgorICAg
ICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1
dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmlwdWxhdGlvbikKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3JvbGxTbmFwVHlwZTogLy8gbm9uZSB8IG1hbmRhdG9y
eSB8IHByb3hpbWl0eQogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU1hbmRhdG9yeSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJveGltaXR5
KQpAQCAtMTE2OSw2ICsxMTczLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzS2V5d29yZFByb3Bl
cnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0
ZVNwYWNlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdvcmRXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUb3VjaEFjdGlvbjoKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3Jv
bGxTbmFwVHlwZToKICNlbmRpZgpAQCAtMzIxNSw2ICszMjIwLDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUb3VjaEFjdGlvbjoKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRTY3JvbGxTbmFwVHlwZToKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggZWUyZjBkODU2ZDE1ZTdlMDE3
ZDNjNGJkM2I4YjRmNWRkOGU4NDllZS4uNTkyMGUyMTI2ZjExNWI1MmUxYjY1YjAwYWE4MTU0YWJi
MzIwMmJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oCkBAIC01MjUyLDYgKzUyNTIsNDAgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRab29tIHRleHRab29tKQogICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwogfQogCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVG91Y2hBY3Rpb24gZSkKKyAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQoreworICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1Nf
VkFMVUVfSUQ7CisgICAgc3dpdGNoIChlKSB7CisgICAgY2FzZSBUb3VjaEFjdGlvbjo6Tm9uZToK
KyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb25lOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgorICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUF1dG87CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hBY3Rpb246Ok1hbmlw
dWxhdGlvbjoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYW5pcHVsYXRpb247
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIFRvdWNoQWN0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNW
YWx1ZUlEKCkpOworICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CisgICAgY2FzZSBDU1NW
YWx1ZU5vbmU6CisgICAgICAgIHJldHVybiBUb3VjaEFjdGlvbjo6Tm9uZTsKKyAgICBjYXNlIENT
U1ZhbHVlQXV0bzoKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOworICAgIGNhc2Ug
Q1NTVmFsdWVNYW5pcHVsYXRpb246CisgICAgICAgIHJldHVybiBUb3VjaEFjdGlvbjo6TWFuaXB1
bGF0aW9uOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVG91Y2hBY3Rpb246OkF1dG87Cit9CisKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFNjcm9sbFNuYXBUeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXgg
ZmJmMGFkOTZkYjE0ZDY3ZDg4ODJlOTcxZTE3Y2FlYzk1YmUyNTY1Mi4uMjYxMTEwMGIzMTQ2Y2M4
MzRjYjJhZWRhOTk5MWMzMzU5Y2MxNTYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW4KQEAgLTY2MSw2ICs2NjEsNyBAQCB1c2VyLXpvb20gW1NraXBCdWlsZGVyXQogI2lm
IGRlZmluZWQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJiYgRU5BQkxF
X0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORwogLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxp
bmcgW0luaGVyaXRlZCwgTmFtZUZvck1ldGhvZHM9VXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZywg
Q29udmVydGVyPU92ZXJmbG93U2Nyb2xsaW5nXQogI2VuZGlmCistd2Via2l0LXRvdWNoLWFjdGlv
bgogI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUwogLXdl
YmtpdC10b3VjaC1jYWxsb3V0IFtJbmhlcml0ZWQsIE5hbWVGb3JNZXRob2RzPVRvdWNoQ2FsbG91
dEVuYWJsZWQsIENvbnZlcnRlcj1Ub3VjaENhbGxvdXRdCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggMDBkMjZjYjkyOWI4ZTJlZjk4MTE1YjllYjM5MjQ5
MzU4ODA5ZTVlNi4uMGIzOWUwZWQ5NTE3MjBjNGZkYjAxYzRjZGZmOWQwNWExYTA0MDkwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTEwNjMsNiArMTA2Myw5IEBA
IGF0CiAvLyAtd2Via2l0LXNjcm9sbC1zbmFwLXBvaW50cy15CiBlbGVtZW50cwogCisvLyAtd2Vi
a2l0LXRvdWNoLWFjdGlvbgorbWFuaXB1bGF0aW9uCisKIC8vIC13ZWJraXQtc2Nyb2xsLXNuYXAt
dHlwZQogbWFuZGF0b3J5CiBwcm94aW1pdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBhYmFh
MTRmN2Q2MzQwMmFmOTJkYTQ3YTNlMWRjZDk0N2JhMGIxNTI3Li5lNDJhZjUzYjFlNDhmZjUwODFi
YzU0ZDFmNWMyZDNiZTljNDUzMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMzU0LDYg
KzIzNTQsMjAgQEAgdm9pZCBFbGVtZW50OjptZXJnZVdpdGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9k
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgdGV4dE5leHQtPnJlbW92ZShlYyk7CiB9CiAKK2Jv
b2wgRWxlbWVudDo6dG91Y2hTaG91bGRQcmV2ZW50RG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0Cit7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0
eWxlKCkudG91Y2hBY3Rpb24oKSAhPSBUb3VjaEFjdGlvbjo6QXV0bykKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgLy8g
RklYTUU6IFRoaXMgd2lsbCBoYXZlIHRvIGJlIHNtYXJ0ZXIgdGhhbiBqdXN0IHdhbGtpbmcgdXAg
dGhlIERPTS4KKyAgICByZXR1cm4gcGFyZW50ICYmIHBhcmVudC0+dG91Y2hTaG91bGRQcmV2ZW50
RG91YmxlVGFwR2VzdHVyZSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KwogU3RyaW5nIEVsZW1lbnQ6OmlubmVySFRNTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0
ZU1hcmt1cCgqdGhpcywgQ2hpbGRyZW5Pbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGMwYTQ4
OWZhMDQyZWJkODQ4ZjNlNWYyMzRlYzlhNDU0YmVhNTJlZGEuLjZiMTI1NTQwOTgyMGU1MTZlMmYy
MzYzNmUwM2QwYzE0YTE1MDRlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDkwLDYgKzQ5MCw4
IEBAIHB1YmxpYzoKICAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKCk7CiAgICAgUmVm
PFJlbmRlclN0eWxlPiByZXNvbHZlU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIAor
ICAgIHZpcnR1YWwgYm9vbCB0b3VjaFNob3VsZFByZXZlbnREb3VibGVUYXBHZXN0dXJlKCkgY29u
c3Q7CisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYsIENvbnN0cnVjdGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDU5ZjlkNTZmNmUzODZhNzNhYTc0N2RiNWMxNTllY2Qw
ZjdjZWRjYTEuLjNiZDQ3NWYzNWQzOWI5M2E0MGQ3OWEwMTRmMmU2NzBhYjA1NzAwZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMTE2LDYg
KzExMTYsOCBAQCBwdWJsaWM6CiAgICAgaW50IGluaXRpYWxMZXR0ZXJEcm9wKCkgY29uc3QgeyBy
ZXR1cm4gaW5pdGlhbExldHRlcigpLndpZHRoKCk7IH0KICAgICBpbnQgaW5pdGlhbExldHRlckhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIGluaXRpYWxMZXR0ZXIoKS5oZWlnaHQoKTsgfQogCisgICAg
VG91Y2hBY3Rpb24gdG91Y2hBY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUb3Vj
aEFjdGlvbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdG91Y2hBY3Rpb24pOyB9CisKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIFNjcm9sbFNuYXBUeXBlIHNjcm9sbFNuYXBUeXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsU25hcFR5cGU+KHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3Njcm9sbFNuYXBUeXBlKTsgfQogICAgIGNvbnN0IFNjcm9sbFNuYXBQb2lu
dHMqIHNjcm9sbFNuYXBQb2ludHNYKCkgY29uc3Q7CkBAIC0xNjcxLDYgKzE2NzMsOCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBzZXRJbml0aWFsTGV0dGVyKGNvbnN0IEludFNpemUmIHNpemUp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9pbml0aWFsTGV0dGVyLCBzaXplKTsg
fQogICAgIAorICAgIHZvaWQgc2V0VG91Y2hBY3Rpb24oVG91Y2hBY3Rpb24gdGEpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90b3VjaEFjdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHRhKSk7IH0KKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCBzZXRT
Y3JvbGxTbmFwVHlwZShTY3JvbGxTbmFwVHlwZSB0eXBlKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fc2Nyb2xsU25hcFR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7
IH0KICAgICB2b2lkIHNldFNjcm9sbFNuYXBQb2ludHNYKHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxT
bmFwUG9pbnRzPik7CkBAIC0yMDIzLDYgKzIwMjcsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
V2lsbENoYW5nZURhdGEqIGluaXRpYWxXaWxsQ2hhbmdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
CisgICAgc3RhdGljIFRvdWNoQWN0aW9uIGluaXRpYWxUb3VjaEFjdGlvbigpIHsgcmV0dXJuIFRv
dWNoQWN0aW9uOjpBdXRvOyB9CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHN0
YXRpYyBTY3JvbGxTbmFwVHlwZSBpbml0aWFsU2Nyb2xsU25hcFR5cGUoKSB7IHJldHVybiBTY3Jv
bGxTbmFwVHlwZTo6Tm9uZTsgfQogICAgIHN0YXRpYyBTY3JvbGxTbmFwUG9pbnRzKiBpbml0aWFs
U2Nyb2xsU25hcFBvaW50c1goKSB7IHJldHVybiBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IGJi
YjRjYWExMTA0OGIyZGNiNzYxZmIxNTNjMzU0ZjJiZGZmYWI5MGYuLjJhMjhiOWJlZTJmOGY2YzY2
NDcyYjZjZWI1ZDJmYmFjODUwNDRiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC02NDksNiArNjQ5LDEyIEBA
IGVudW0gY2xhc3MgU2Nyb2xsU25hcFR5cGUgewogfTsKICNlbmRpZgogCitlbnVtIGNsYXNzIFRv
dWNoQWN0aW9uIHsKKyAgICBBdXRvLAorICAgIE1hbmlwdWxhdGlvbiwKKyAgICBOb25lCit9Owor
CiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogZW51bSBjbGFzcyBUcmFpbGluZ1dvcmQg
ewogICAgIEF1dG8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggMGQ0ZDhiNWM1ZTgzYTkx
ZTUyYmVmNjM0MDZmZmQ0ZTc5ZTk2N2RlMC4uMmZhNjFiNDFhYmM0ODE2MThlNzFhYTMzYThkMDBh
ODgyZjZiY2JmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtNzcsNiArNzcsNyBAQCBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkKICAg
ICAsIG1fanVzdGlmeUNvbnRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50
KCkpCiAgICAgLCBtX2p1c3RpZnlJdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1l
bnQoKSkKICAgICAsIG1fanVzdGlmeVNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25t
ZW50KCkpCisgICAgLCBtX3RvdWNoQWN0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJT
dHlsZTo6aW5pdGlhbFRvdWNoQWN0aW9uKCkpKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CiAgICAgLCBtX3Njcm9sbFNuYXBUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHls
ZTo6aW5pdGlhbFNjcm9sbFNuYXBUeXBlKCkpKQogI2VuZGlmCkBAIC0xNjYsNiArMTY3LDcgQEAg
aW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIG1fanVzdGlmeUNvbnRlbnQoby5tX2p1c3Rp
ZnlDb250ZW50KQogICAgICwgbV9qdXN0aWZ5SXRlbXMoby5tX2p1c3RpZnlJdGVtcykKICAgICAs
IG1fanVzdGlmeVNlbGYoby5tX2p1c3RpZnlTZWxmKQorICAgICwgbV90b3VjaEFjdGlvbihvLm1f
dG91Y2hBY3Rpb24pCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAsIG1fc2Nyb2xs
U25hcFR5cGUoby5tX3Njcm9sbFNuYXBUeXBlKQogI2VuZGlmCkBAIC0yODAsNiArMjgyLDcgQEAg
Ym9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEmIG8pIGMKICAgICAgICAgJiYgbV9ib3JkZXJGaXQgPT0gby5tX2Jv
cmRlckZpdAogICAgICAgICAmJiBtX3RleHRDb21iaW5lID09IG8ubV90ZXh0Q29tYmluZQogICAg
ICAgICAmJiBtX3RleHREZWNvcmF0aW9uU3R5bGUgPT0gby5tX3RleHREZWNvcmF0aW9uU3R5bGUK
KyAgICAgICAgJiYgbV90b3VjaEFjdGlvbiA9PSBvLm1fdG91Y2hBY3Rpb24KICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogICAgICAgICAmJiBtX3Njcm9sbFNuYXBUeXBlID09IG8ubV9zY3Jv
bGxTbmFwVHlwZQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCBmNjE3NTJkYTljNTdi
MzJjMzRlY2M4MjA0ZTdkZTk0YjExMmQ3MTc1Li5lMzY5MzNiOTM2YjM0Mjk3MTE0ODAxNDIxMDUw
NjQ0NGUwM2YwMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTE4OSw2ICsxODksOCBAQCBw
dWJsaWM6CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2p1c3RpZnlJdGVtczsKICAgICBT
dHlsZVNlbGZBbGlnbm1lbnREYXRhIG1fanVzdGlmeVNlbGY7CiAKKyAgICB1bnNpZ25lZCBtX3Rv
dWNoQWN0aW9uIDogMjsgLy8gVG91Y2hBY3Rpb24KKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCiAgICAgdW5zaWduZWQgbV9zY3JvbGxTbmFwVHlwZSA6IDI7IC8vIFNjcm9sbFNuYXBUeXBl
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDdlZTgxYjk2
NDJiNWRmY2JiOTIyOGVhZDViNzk5MDMwNTMzZTk0YjQuLmNmNzIzMjVlZWU1NmZiY2JhZmExYzZl
NTQ4ZjIxZDFlZDIwYjQ4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApA
QCAtMjcyLDYgKzI3Miw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVh
bCB2b2lkIGNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hsaWdo
dGVkUXVhZHMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBi
b3R0b21MZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJhZGl1
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXMoKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkeW5hbWljVmlld3BvcnRV
cGRhdGVDaGFuZ2VkVGFyZ2V0KGRvdWJsZSBuZXdTY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1M2I3ZjkzZjI3ZDhjMDI5
ZDFjZTIzM2FhM2FlZjA2Y2FmMWZhYjhiLi5mNWEzZmY5MWFjYzg1NWFlZDFhZDc1ZjBjZGRjMmYz
ZWI2YmNiNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
Mzk0LDYgKzEzOTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRT
Y2FsZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgZG91YmxlIHNjYWxlKTsKIAogICAgIHZv
aWQgZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4m
IGdlb21ldHJpZXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJh
ZGl1cyk7CisgICAgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXMoKTsKIAogICAgIHZvaWQg
c3RhcnRBc3Npc3RpbmdOb2RlKGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiwgYm9vbCB1
c2VySXNJbnRlcmFjdGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgc3RvcEFzc2lzdGluZ05vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDY4ZmQwNTNhZjA2NzVlYTU5
NmZhMzllMzE2NzJhM2RlZGNkNGI2NTguLjdkZjE0OGFlOTAyYzAxMDc5ZDQ2MmFkNzJjNmIzNmUy
MDEyNTM1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMzYzLDYgKzM2Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgUmVzdG9yZVBhZ2VTdGF0ZShXZWJDb3JlOjpGbG9hdFJlY3QgZXhwb3NlZFJlY3Qs
IGRvdWJsZSBzY2FsZSkKICAgICBSZXN0b3JlUGFnZUNlbnRlckFuZFNjYWxlKFdlYkNvcmU6OkZs
b2F0UG9pbnQgdW5vYnNjdXJlZENlbnRlciwgZG91YmxlIHNjYWxlKQogICAgIERpZEdldFRhcEhp
Z2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpDb2xvciBjb2xv
ciwgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4gZ2VvbWV0cmllcywgV2ViQ29yZTo6SW50U2l6
ZSB0b3BMZWZ0UmFkaXVzLCBXZWJDb3JlOjpJbnRTaXplIHRvcFJpZ2h0UmFkaXVzLCBXZWJDb3Jl
OjpJbnRTaXplIGJvdHRvbUxlZnRSYWRpdXMsIFdlYkNvcmU6OkludFNpemUgYm90dG9tUmlnaHRS
YWRpdXMpCisgICAgRGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzKCkKIAogICAgIFN0YXJ0QXNzaXN0
aW5nTm9kZShzdHJ1Y3QgV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiBpbmZvcm1hdGlv
biwgYm9vbCB1c2VySXNJbnRlcmFjdGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFN0b3BBc3Npc3RpbmdOb2RlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1YTFiZGUx
Mjc3MmU5MzljMmJjODM5ZWU4OTNkZjk4ODY0YjVjMmYwLi5kNDFmZTY3ZjdiZGVmNDU2YmRiYWZl
NzE3ZGM1ODExMTgwYmI5ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMTMsNiArMTEzLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVh
ZD4mIGhpZ2hsaWdodGVkUXVhZHMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRp
dXMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0
b21SaWdodFJhZGl1cykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVU
YXBHZXN0dXJlcygpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExheWVy
VHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBkeW5hbWljVmlld3BvcnRVcGRhdGVDaGFuZ2VkVGFyZ2V0KGRvdWJsZSBuZXdT
Y2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2
NF90IHRyYW5zYWN0aW9uSUQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggZWRkNGNlNWFlYTFlMTE1ZTYwZTU3
OGJlYmMzZjkwZTA3NjM4ZDY3ZC4uNmY1OTMzYWY5YTZhMWQ3ZjhiNWE3NDI3N2IwOWE2ZjJjNzU0
ZjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC00OTgsNiArNDk4LDExIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEdl
dFRhcEhpZ2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDCiAg
ICAgW21fY29udGVudFZpZXcgX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6cmVxdWVzdElE
IGNvbG9yOmNvbG9yIHF1YWRzOmhpZ2hsaWdodGVkUXVhZHMgdG9wTGVmdFJhZGl1czp0b3BMZWZ0
UmFkaXVzIHRvcFJpZ2h0UmFkaXVzOnRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6Ym90
dG9tTGVmdFJhZGl1cyBib3R0b21SaWdodFJhZGl1czpib3R0b21SaWdodFJhZGl1c107CiB9CiAK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlcygpCit7CisgICAg
W21fY29udGVudFZpZXcgX2Rpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1NpbmdsZVRhcF07
Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExheWVyVHJlZShjb25zdCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbiYgbGF5ZXJUcmVlVHJhbnNhY3Rpb24pCiB7CiAgICAgW21f
Y29udGVudFZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpsYXllclRyZWVUcmFuc2FjdGlvbl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaAppbmRleCBkNzllMTE4MmEyYTlhMjdhZDEwZjc3YzExYzJkYzQ5Y2Y1YWQyNjEx
Li41Mzc2NTE0NWE4ODU1ZGI5ZTMwYjRjZWEyZmM2Y2Y3ZWRkZTJhYTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKQEAgLTE3NSwxMiArMTc1LDE0IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAt
ICh2b2lkKWNsZWFudXBJbnRlcmFjdGlvbjsKIAogLSAodm9pZClzY3JvbGxWaWV3V2lsbFN0YXJ0
UGFuT3JQaW5jaEdlc3R1cmU7CistICh2b2lkKV9zZXREb3VibGVUYXBHZXN0dXJlc0VuYWJsZWQ6
KEJPT0wpZW5hYmxlOwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIC0gKHZvaWQpX3dlYlRv
dWNoRXZlbnQ6KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudCYpdG91Y2hFdmVudCBw
cmV2ZW50c05hdGl2ZUdlc3R1cmVzOihCT09MKXByZXZlbnRzRGVmYXVsdDsKICNlbmRpZgogLSAo
dm9pZClfY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkOwogLSAodm9pZClfZGlkR2V0VGFwSGlnaGxp
Z2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElEIGNvbG9yOihjb25zdCBXZWJDb3JlOjpD
b2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiloaWdo
bGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcExl
ZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcFJpZ2h0
UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbUxl
ZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRv
bVJpZ2h0UmFkaXVzOworLSAodm9pZClfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nU2lu
Z2xlVGFwOwogCiAtICh2b2lkKV9zdGFydEFzc2lzdGluZ05vZGU6KGNvbnN0IFdlYktpdDo6QXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHVzZXJJc0ludGVyYWN0aW5nOihCT09M
KXVzZXJJc0ludGVyYWN0aW5nIGJsdXJQcmV2aW91c05vZGU6KEJPT0wpYmx1clByZXZpb3VzTm9k
ZSB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9iamVjdDsKIC0g
KHZvaWQpX3N0b3BBc3Npc3RpbmdOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAwM2M0YWEwMTkz
YTE2YTQ4ZmViMWY4N2NiM2I0YTk5YzY5M2M1Y2U4Li42ZjA1Njk0MmJmNmQ4ZDlhN2JjYTU1ZWQ2
OTFjYTY1NmRkNTYzYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzU4LDYgKzc1OCwxMiBAQCAt
ICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0Oih1aW50NjRfdClyZXF1ZXN0SUQg
Y29sb3I6KGNvbnN0IFdlYkNvcmU6OgogICAgIFtzZWxmIF9zaG93VGFwSGlnaGxpZ2h0XTsKIH0K
IAorLSAodm9pZClfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nU2luZ2xlVGFwCit7Cisg
ICAgaWYgKF9wb3RlbnRpYWxUYXBJblByb2dyZXNzKQorICAgICAgICBbc2VsZiBfc2V0RG91Ymxl
VGFwR2VzdHVyZXNFbmFibGVkOk5PXTsKK30KKwogLSAodm9pZClfY2FuY2VsTG9uZ1ByZXNzR2Vz
dHVyZVJlY29nbml6ZXIKIHsKICAgICBbX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyIGNhbmNlbF07CkBAIC0xMTA1LDYgKzExMTEsNyBAQCAtICh2b2lkKV9zaW5nbGVUYXBSZWNv
Z25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKICAgICBf
cGFnZS0+cG90ZW50aWFsVGFwQXRQb3NpdGlvbihnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbiwg
KytfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQpOwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0g
WUVTOwogICAgIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBZRVM7CisgICAgW3NlbGYgX3NldERv
dWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpZRVNdOwogfQogCiBzdGF0aWMgdm9pZCBjYW5jZWxQb3Rl
bnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKQEAgLTExNDks
NiArMTE1Niw3IEBAIC0gKHZvaWQpX3NpbmdsZVRhcENvbW1pdGVkOihVSVRhcEdlc3R1cmVSZWNv
Z25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIAogICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlv
biA9IGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uOwogCisgICAgW3NlbGYgX3NldERvdWJsZVRh
cEdlc3R1cmVzRW5hYmxlZDpZRVNdOwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87
CiAKICAgICBpZiAoX2hhc1RhcEhpZ2hsaWdodEZvclBvdGVudGlhbFRhcCkgewpAQCAtMTIzMiw2
ICsxMjQwLDExIEBAIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxTdGFydFBhbk9yUGluY2hHZXN0dXJl
CiAgICAgX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5ID0gWUVTOwogfQogCistICh2
b2lkKV9zZXREb3VibGVUYXBHZXN0dXJlc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIFtf
ZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RW5hYmxlZDplbmFibGVkXTsKK30KKwogLSAo
dm9pZClfZGlkRW5kU2Nyb2xsaW5nT3Jab29taW5nCiB7CiAgICAgW193ZWJTZWxlY3Rpb25Bc3Np
c3RhbnQgZGlkRW5kU2Nyb2xsaW5nT3Jab29taW5nUGFnZV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDBhMzI5ZDA5Mjg4MGFiN2Jj
OGYyOTM4M2U4MDRiMWY5MjkwYWU2NDkuLjA1YWRkOWYyMDMyMzc4OGQxODcyOWNlODAwMmJkNzBm
NzhhZmIzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCkBAIC04MTAsNiArODEwLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRU
YXBIaWdobGlnaHRHZW9tZXRyaWVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yCiAg
ICAgbV9wYWdlQ2xpZW50LmRpZEdldFRhcEhpZ2hsaWdodEdlb21ldHJpZXMocmVxdWVzdElELCBj
b2xvciwgaGlnaGxpZ2h0ZWRRdWFkcywgdG9wTGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJv
dHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzKTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlcygpCit7CisgICAgbV9wYWdlQ2xpZW50LmRpc2Fi
bGVEb3VibGVUYXBHZXN0dXJlcygpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRBc3Np
c3RpbmdOb2RlKGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbiwgYm9v
bCB1c2VySXNJbnRlcmFjdGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCiB7CiAgICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vz
cygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IGIzMGI1NGY1MjM4ZTBmNjAzYjY0YWFlNjAzNmM5YmQ5OGM3NmY2ZjEuLmFlYTAz
ZDFiZjY1ZWI2NTc0ZTcwZTk0YmY3YzgxNjUzNmM2ZjYzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTY2Miw2ICs2
NjIsMTEgQEAgdm9pZCBXZWJQYWdlOjpwb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2kKIHsKICAgICBtX3BvdGVudGlhbFRhcE5v
ZGUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyhwb3Np
dGlvbiwgbV9wb3RlbnRpYWxUYXBMb2NhdGlvbik7CiAgICAgc2VuZFRhcEhpZ2hsaWdodEZvck5v
ZGVJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIG1fcG90ZW50aWFsVGFwTm9kZS5nZXQoKSk7CisgICAg
aWYgKG1fcG90ZW50aWFsVGFwTm9kZSAmJiBpczxFbGVtZW50PihtX3BvdGVudGlhbFRhcE5vZGUu
Z2V0KCkpKSB7CisgICAgICAgIEVsZW1lbnQmIHRhcEVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50
PigqbV9wb3RlbnRpYWxUYXBOb2RlLmdldCgpKTsKKyAgICAgICAgaWYgKHRhcEVsZW1lbnQudG91
Y2hTaG91bGRQcmV2ZW50RG91YmxlVGFwR2VzdHVyZSgpKQorICAgICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXMoKSk7CisgICAgfQog
fQogCiB2b2lkIFdlYlBhZ2U6OmNvbW1pdFBvdGVudGlhbFRhcCh1aW50NjRfdCBsYXN0TGF5ZXJU
cmVlVHJhbnNhY3Rpb25JZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263203</attachid>
            <date>2015-10-15 15:27:53 -0700</date>
            <delta_ts>2015-10-16 23:38:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149854-20151015152715.patch</filename>
            <type>text/plain</type>
            <size>39348</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdjN2UzOWMxNTQwMjhm
MjViMmUxMjJkNDBlZTU0MjFmMTI2NDRhOC4uNzgwMzQxOTFjYmE4NTNlZGFmN2ZlMmM2NWU5ZTEw
YjU2YTI2ZDc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTEwLTE1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMzAxNzE0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnRzIHRoZSBtYW5pcHVsYXRpb24gdmFsdWUgZm9yIHRoZSBDU1MgcHJvcGVy
dHkgdG91Y2gtYWN0aW9uLiBBZGRzIHN1cHBvcnQgZm9yCisgICAgICAgIHBhcnNpbmcgdGhlIHRv
dWNoLWFjdGlvbiBwcm9wZXJ0eSBhbmQgdHdvIG9mIGl0cyB2YWx1ZXM6IGF1dG8gYW5kIG1hbmlw
dWxhdGlvbi4KKworICAgICAgICBUZXN0czogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9u
LWNvbXB1dGVkLXN0eWxlLmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvdG91Y2gtYWN0aW9uL3Rv
dWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MuaHRtbAorICAgICAgICAgICAgICAg
Y3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbAorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgVG91Y2hBY3Rpb24pOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFsbG93c0RvdWJsZVRhcEdl
c3R1cmUpOiBIZXJlLCB3ZSBkZXRlcm1pbmUgd2hldGhlciBhbiBlbGVtZW50IHRoYXQgcmVzdWx0
ZWQgZnJvbQorICAgICAgICAgICAgaGl0LXRlc3RpbmcgYSB0b3VjaCBzaG91bGQgYWxsb3cgZG91
YmxlLXRhcCBnZXN0dXJlcy4gVG8gZG8gdGhpcywgd2Ugd2FsayB1cCB0aGUgZWxlbWVudCdzIHBh
cmVudHMsCisgICAgICAgICAgICBzdG9wcGluZyB3aGVuIHdlIGRldGVjdCBhbiBlbGVtZW50IHRo
YXQgZGlzYWxsb3dzIGRvdWJsZSB0YXAgZ2VzdHVyZXMgYnkgaGF2aW5nIGEgdG91Y2gtYWN0aW9u
IG90aGVyCisgICAgICAgICAgICB0aGFuIGF1dG8gb3IgYnkgaGl0dGluZyB0aGUgcm9vdCBub2Rl
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmFsbG93c0RvdWJsZVRhcEdlc3R1cmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxNS0xMC0xNCAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHNv
bWUgRXZlbnRIYW5kbGVyIGluaXRpYWxpemF0aW9uIHRvIHRoZSBoZWFkZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBhOTkwNjdiMWJiNWE3YWI0YzkyYTNjMDQ1ODRmM2I5ODA3MzE3NmYwLi5lZGZiYzRlNzQzNGM0
ZjFjZGYzNTAwODBjNDQzNTExNThjYjY2NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAK
KzIwMTUtMTAtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyBmb3IgaU9TCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk4NTQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzIzMDE3MTQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudHMgdGhlIG1hbmlwdWxhdGlvbiB2YWx1ZSBm
b3IgdGhlIENTUyBwcm9wZXJ0eSB0b3VjaC1hY3Rpb24uIFBlcmZvcm1zIGhpdC10ZXN0aW5nIHVw
b24gcmVjZWl2aW5nIGEgcG90ZW50aWFsCisgICAgICAgIHRhcCB0byBkZXRlcm1pbmUgd2hldGhl
ciB0byBkaXNhYmxlIGRvdWJsZS10YXAgZ2VzdHVyZSByZWNvZ25pdGlvbiBvdmVyIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGFwLiBJZiBzbywgc2VuZHMgYSBtZXNzYWdlCisgICAgICAgIGZyb20gdGhl
IHdlYiBwcm9jZXNzIHRvIHRoZSBVSSBwcm9jZXNzIGluZGljYXRpbmcgdGhhdCBkb3VibGUtdGFw
cGluZyBzaG91bGQgYmUgZGlzYWJsZWQsIGFsbG93aW5nIHNpbmdsZSB0YXBzIHRvCisgICAgICAg
IGF2b2lkIHRoZSBkZWxheS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF92aWV3cG9ydElzVXNlclNjYWxhYmxlXSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDpjb2xvcjpxdWFkczp0b3BMZWZ0
UmFkaXVzOnRvcFJpZ2h0UmFkaXVzOmJvdHRvbUxlZnRSYWRpdXM6Ym90dG9tUmlnaHRSYWRpdXM6
XSk6CisgICAgICAgICAgICAgICAgUmVuYW1lZCBfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQgdG8gX2xh
dGVzdFRhcElEIHRvIHJlZmxlY3QgdGhhdCBpdCBpcyB1c2VkIGZvciBib3RoIHRhcCBoaWdobGln
aHRzIGFuZCB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbi4KKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkRm9yUmVxdWVz
dDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2du
aXplZDpdKTogUmVuYW1lZCBfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQgdG8gX2xhdGVzdFRhcElELgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbmRQb3RlbnRpYWxUYXBdKTogUHVsbHMgb3V0IGxv
Z2ljIHRvIHJlc2V0IGEgZmxhZyBpbmRpY2F0aW5nIHRoYXQgd2UgYXJlIG5vIGxvbmdlciB0cmFj
a2luZyBhIHBvdGVudGlhbCB0YXAuIEFsc28KKyAgICAgICAgICAgICAgICByZS1lbmFibGVzIHRo
ZSBkb3VibGUgdGFwIGdlc3R1cmUgcmVjb2duaXplciBpZiBuZWNlc3NhcnkuCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3NpbmdsZVRhcFJlY29nbml6ZWQ6XSk6IFJlbmFtZWQgX2xhdGVzdFRh
cEhpZ2hsaWdodElEIHRvIF9sYXRlc3RUYXBJRC4KKyAgICAgICAgKGNhbmNlbFBvdGVudGlhbFRh
cElmTmVjZXNzYXJ5KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2luZ2xlVGFwQ29tbWl0
ZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxU
YXBJc0ZpbmlzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBvdGVudGlhbFRhcEF0UG9zaXRpb24p
OgorCiAyMDE1LTEwLTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBwYWdlcyB3aXRoIHVuc2NhbGFibGUgdmlld3BvcnRzIHNob3VsZG4ndCBo
YXZlIGEgc2luZ2xlIHRhcCBkZWxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA3ZDhjZmZhNDgwYTY1OWE0OWE1NzY0ZWYw
OGYyMDMxZmNmMTU5NDAxLi4zOGQ2ZTQyNzM2NTY5ODg0YjNiYjE3OTc0Y2M5ZWQwNjMyMGZlMjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcApAQCAtMzQyMiw2ICszNDIyLDExIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAg
ICAgICAgICAgICByZXR1cm4gc2Nyb2xsU25hcENvb3JkaW5hdGVzKCpzdHlsZSwgc3R5bGUtPnNj
cm9sbFNuYXBDb29yZGluYXRlcygpKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5VG91Y2hBY3Rpb246CisgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT50b3VjaEFjdGlvbigpKTsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QXBw
bGVUcmFpbGluZ1dvcmQ6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLT50cmFpbGluZ1dvcmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4
IDYzYTUxNWMyNTMzYjFmNTAzNGFmZGFhMzg3MDRiNzY5ZTI3MjllMmYuLjZhMWY3N2RmZjNhYWVh
ZjdmY2YxYjVlMmE3NDRhYTU1Mjg5ZjkwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBA
IC03NTEsNiArNzUxLDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3Bl
cnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBpbnQKICAgICAgICAgaWYgKHZh
bHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrV29yZCkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOiAvLyBhdXRvIHwgbWFuaXB1bGF0
aW9uCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTWFuaXB1bGF0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJy
ZWFrOworI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0U2Nyb2xsU25hcFR5cGU6IC8vIG5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1p
dHkKICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVNYW5kYXRvcnkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByb3hpbWl0eSkKQEAgLTExNzMs
NiArMTE3OSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdvcmRQcm9wZXJ0eUlEKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJZCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKICAg
ICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3Jh
cDoKKyNpZiBQTEFURk9STShJT1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOgor
I2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0U2Nyb2xsU25hcFR5cGU6CiAjZW5kaWYKQEAgLTMyMjcsNiArMzIzNiw5IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKICAgICBjYXNlIENTU1Byb3BlcnR5
V29yZEJyZWFrOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOgorI2VuZGlmCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2Nyb2xsU25hcFR5
cGU6CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oCmluZGV4IDE0ZmI5MGQxNzhhYTQ4OTMwYTA1MWU1NmNjNDkyZTBhMzBiYzMwZmIuLjJi
YTg3ZjA3MDQ5ZDlkMjczNDllNTlkZmU5YWM0M2M0YTkzOWU4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAtNTI1Miw2ICs1MjUyLDM3
IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1
ZShUZXh0Wm9vbSB0ZXh0Wm9vbSkKICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1h
bDsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUb3VjaEFjdGlvbiB0KQorICAgIDogQ1NTVmFsdWUo
UHJpbWl0aXZlQ2xhc3MpCit7CisgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9J
RDsKKyAgICBzd2l0Y2ggKHQpIHsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgorICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgVG91Y2hBY3Rpb246Ok1hbmlwdWxhdGlvbjoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0g
Q1NTVmFsdWVNYW5pcHVsYXRpb247CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRvdWNoQWN0aW9uKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOworICAgIHN3aXRjaCAobV92YWx1ZS52YWx1
ZUlEKSB7CisgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIHJldHVybiBUb3VjaEFjdGlv
bjo6QXV0bzsKKyAgICBjYXNlIENTU1ZhbHVlTWFuaXB1bGF0aW9uOgorICAgICAgICByZXR1cm4g
VG91Y2hBY3Rpb246Ok1hbmlwdWxhdGlvbjsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFRvdWNoQWN0aW9u
OjpBdXRvOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFNjcm9sbFNu
YXBUeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggNTQxYzQyMDA0MzY3YzUyNDE0NTUxZDQ1MzVmODEz
MjMyMmUwNDdlZS4uZDkzYTE1ZTA5OWI0ZWFkMzcwZTk0NGFmZTNkNGFlZjIyNmQ0YTQzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTY2Niw2ICs2NjYsNyBAQCB1
c2VyLXpvb20gW1NraXBCdWlsZGVyXQogLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmcgW0luaGVy
aXRlZCwgTmFtZUZvck1ldGhvZHM9VXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZywgQ29udmVydGVy
PU92ZXJmbG93U2Nyb2xsaW5nXQogI2VuZGlmCiAjaWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9T
KSAmJiBXVEZfUExBVEZPUk1fSU9TCit0b3VjaC1hY3Rpb24KIC13ZWJraXQtdG91Y2gtY2FsbG91
dCBbSW5oZXJpdGVkLCBOYW1lRm9yTWV0aG9kcz1Ub3VjaENhbGxvdXRFbmFibGVkLCBDb252ZXJ0
ZXI9VG91Y2hDYWxsb3V0XQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4KaW5kZXggMDBkMjZjYjkyOWI4ZTJlZjk4MTE1YjllYjM5MjQ5MzU4ODA5ZTVlNi4uYTAx
NDgyODM3OTE5NWY5NzdhNmMyZDIyZDk3OTMzYTM5ODg4N2QwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTExNjksMyArMTE2OSw4IEBAIHN0eWxlCiAvLyB3aWxs
LWNoYW5nZQogc2Nyb2xsLXBvc2l0aW9uCiBjb250ZW50cworCisjaWYgZGVmaW5lZChXVEZfUExB
VEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCisvLyB0b3VjaC1hY3Rpb24KK21hbmlwdWxh
dGlvbgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZDQ3NjY0YzcwYmExMzFjNTQx
ZDFiYjUyNTYwOThkOTJmNDc2NmNlZi4uMDVlZDgzZGRjZTA4Y2QxOWY4MjUwN2E2Y2NjYzI0OTdk
ZjMxNjFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTM4MCw2ICsxMzgwLDE3IEBAIFVS
TCBFbGVtZW50OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgp
LmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhsaW5rQXR0cmli
dXRlKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitib29sIEVsZW1lbnQ6OmFsbG93c0RvdWJs
ZVRhcEdlc3R1cmUoKSBjb25zdAoreworICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCkt
PnN0eWxlKCkudG91Y2hBY3Rpb24oKSAhPSBUb3VjaEFjdGlvbjo6QXV0bykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsK
KyAgICByZXR1cm4gIXBhcmVudCB8fCBwYXJlbnQtPmFsbG93c0RvdWJsZVRhcEdlc3R1cmUoKTsK
K30KKyNlbmRpZgorCiBTdHlsZVJlc29sdmVyJiBFbGVtZW50OjpzdHlsZVJlc29sdmVyKCkKIHsK
ICAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAppbmRleCBjMGE0ODlmYTA0MmViZDg0OGYzZTVmMjM0ZWM5YTQ1NGJlYTUyZWRh
Li4zNzg5NzZmYjMwZDkwYzUzMTUzYTgxYjAwYTkzNzRiNTVjMDY0ZTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKQEAgLTQ4Nyw2ICs0ODcsMTAgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
VVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZp
cnR1YWwgYm9vbCBhbGxvd3NEb3VibGVUYXBHZXN0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CisjZW5k
aWYKKwogICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIoKTsKICAgICBSZWY8UmVuZGVy
U3R5bGU+IHJlc29sdmVTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAppbmRleCBhNjRlMGM1NmY1NjFjNTdkMjg3MWMxMWYxNWI1ZTdmOGNhZTUzNjk2Li5lNGNiMmUx
NTUzZmY1ZDYxMGVjNzhhOGY3YTQ4MDkzY2FlY2EyYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUzMyw2
ICs1MzMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVu
dCgpOwogICAgIGJvb2wgZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KGludCBkZXRhaWwsIFBhc3NS
ZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAg
dmlydHVhbCBib29sIGFsbG93c0RvdWJsZVRhcEdlc3R1cmUoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1Mp
CiAgICAgYm9vbCBkaXNwYXRjaFRvdWNoRXZlbnQoUGFzc1JlZlB0cjxUb3VjaEV2ZW50Pik7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggZDIxNmRlY2I0M2RiMjE3NmU3ZTI2ZTNiNjhmOWZlODRjNzc3MTU5MS4uMDQ1NzgyYjM4MmZi
OTBlOTZiY2I0OWNhMWFkMzNkZWE2YjViZmRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTExMTksNiArMTExOSwxMCBAQCBwdWJsaWM6CiAg
ICAgaW50IGluaXRpYWxMZXR0ZXJEcm9wKCkgY29uc3QgeyByZXR1cm4gaW5pdGlhbExldHRlcigp
LndpZHRoKCk7IH0KICAgICBpbnQgaW5pdGlhbExldHRlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IGluaXRpYWxMZXR0ZXIoKS5oZWlnaHQoKTsgfQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIFRv
dWNoQWN0aW9uIHRvdWNoQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hB
Y3Rpb24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RvdWNoQWN0aW9uKTsgfQorI2VuZGlmCisK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIFNjcm9sbFNuYXBUeXBlIHNjcm9sbFNu
YXBUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsU25hcFR5cGU+KHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBUeXBlKTsgfQogICAgIGNvbnN0IFNjcm9sbFNu
YXBQb2ludHMqIHNjcm9sbFNuYXBQb2ludHNYKCkgY29uc3Q7CkBAIC0xNjc3LDYgKzE2ODEsMTAg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SW5pdGlhbExldHRlcihjb25zdCBJbnRTaXpl
JiBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faW5pdGlhbExldHRlciwg
c2l6ZSk7IH0KICAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBzZXRUb3VjaEFjdGlv
bihUb3VjaEFjdGlvbiB0KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdG91Y2hB
Y3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0KSk7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICB2b2lkIHNldFNjcm9sbFNuYXBUeXBlKFNjcm9sbFNuYXBU
eXBlIHR5cGUpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9zY3JvbGxTbmFwVHlw
ZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpKTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsU25h
cFBvaW50c1goc3RkOjp1bmlxdWVfcHRyPFNjcm9sbFNuYXBQb2ludHM+KTsKQEAgLTIwMzAsNiAr
MjAzOCwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV2lsbENoYW5nZURhdGEqIGluaXRpYWxX
aWxsQ2hhbmdlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCisjaWYgUExBVEZPUk0oSU9TKQorICAg
IHN0YXRpYyBUb3VjaEFjdGlvbiBpbml0aWFsVG91Y2hBY3Rpb24oKSB7IHJldHVybiBUb3VjaEFj
dGlvbjo6QXV0bzsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IHN0YXRpYyBTY3JvbGxTbmFwVHlwZSBpbml0aWFsU2Nyb2xsU25hcFR5cGUoKSB7IHJldHVybiBT
Y3JvbGxTbmFwVHlwZTo6Tm9uZTsgfQogICAgIHN0YXRpYyBTY3JvbGxTbmFwUG9pbnRzKiBpbml0
aWFsU2Nyb2xsU25hcFBvaW50c1goKSB7IHJldHVybiBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4
IGJiYjRjYWExMTA0OGIyZGNiNzYxZmIxNTNjMzU0ZjJiZGZmYWI5MGYuLjA4NzQ2MTY5Zjg3ZDdh
YWNlMTA4NTQyMDgxOThmNGY4N2I5ZmJlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC02NDEsNiArNjQxLDEz
IEBAIGVudW0gSXNvbGF0aW9uIHsgSXNvbGF0aW9uQXV0bywgSXNvbGF0aW9uSXNvbGF0ZSB9Owog
Ly8gRmlsbCwgU3Ryb2tlLCBWaWV3Qm94IGFyZSBqdXN0IHVzZWQgZm9yIFNWRy4KIGVudW0gQ1NT
Qm94VHlwZSB7IEJveE1pc3NpbmcgPSAwLCBNYXJnaW5Cb3gsIEJvcmRlckJveCwgUGFkZGluZ0Jv
eCwgQ29udGVudEJveCwgRmlsbCwgU3Ryb2tlLCBWaWV3Qm94IH07CiAKKyNpZiBQTEFURk9STShJ
T1MpCitlbnVtIGNsYXNzIFRvdWNoQWN0aW9uIHsKKyAgICBBdXRvLAorICAgIE1hbmlwdWxhdGlv
bgorfTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIGVudW0gY2xhc3Mg
U2Nyb2xsU25hcFR5cGUgewogICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXgg
MDlmYzkxMjhmZDZhN2EwMTE5ZTcyYzY4YmRjOGQ4M2I5YTViZDIwMi4uZjEzMzlkMzkxOGZhMDJi
MjE2ZjkwZjMyMWQ2NjE0YmQ1Yzc1Zjg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAt
NzksNiArNzksOSBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhKCkKICAgICAsIG1fanVzdGlmeUNvbnRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxD
b250ZW50QWxpZ25tZW50KCkpCiAgICAgLCBtX2p1c3RpZnlJdGVtcyhSZW5kZXJTdHlsZTo6aW5p
dGlhbFNlbGZBbGlnbm1lbnQoKSkKICAgICAsIG1fanVzdGlmeVNlbGYoUmVuZGVyU3R5bGU6Omlu
aXRpYWxTZWxmQWxpZ25tZW50KCkpCisjaWYgUExBVEZPUk0oSU9TKQorICAgICwgbV90b3VjaEFj
dGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUb3VjaEFjdGlv
bigpKSkKKyNlbmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgLCBtX3Njcm9s
bFNuYXBUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFNjcm9s
bFNuYXBUeXBlKCkpKQogI2VuZGlmCkBAIC0xNjgsNiArMTcxLDkgQEAgaW5saW5lIFN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVS
YXJlTm9uSW4KICAgICAsIG1fanVzdGlmeUNvbnRlbnQoby5tX2p1c3RpZnlDb250ZW50KQogICAg
ICwgbV9qdXN0aWZ5SXRlbXMoby5tX2p1c3RpZnlJdGVtcykKICAgICAsIG1fanVzdGlmeVNlbGYo
by5tX2p1c3RpZnlTZWxmKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAsIG1fdG91Y2hBY3Rpb24o
by5tX3RvdWNoQWN0aW9uKQorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAg
ICAsIG1fc2Nyb2xsU25hcFR5cGUoby5tX3Njcm9sbFNuYXBUeXBlKQogI2VuZGlmCkBAIC0yODIs
NiArMjg4LDkgQEAgYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNv
bnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGMKICAgICAgICAgJiYgbV9ib3JkZXJG
aXQgPT0gby5tX2JvcmRlckZpdAogICAgICAgICAmJiBtX3RleHRDb21iaW5lID09IG8ubV90ZXh0
Q29tYmluZQogICAgICAgICAmJiBtX3RleHREZWNvcmF0aW9uU3R5bGUgPT0gby5tX3RleHREZWNv
cmF0aW9uU3R5bGUKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICYmIG1fdG91Y2hBY3Rpb24g
PT0gby5tX3RvdWNoQWN0aW9uCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
ICAgICAgICAmJiBtX3Njcm9sbFNuYXBUeXBlID09IG8ubV9zY3JvbGxTbmFwVHlwZQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCA3YWQ5NzYzYWFmMDRiZjY4NDlmOTYxODViMzk4NWI2
ZTAwZjc3OTAzLi5mN2ZkNzVmNTFmMWEyNjQzMTYxMGI5MzNlM2MxOWY1N2U3NGI5ZDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmgKQEAgLTE4NCw2ICsxODQsMTAgQEAgcHVibGljOgogICAgIFN0eWxl
U2VsZkFsaWdubWVudERhdGEgbV9qdXN0aWZ5SXRlbXM7CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50
RGF0YSBtX2p1c3RpZnlTZWxmOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHVuc2lnbmVkIG1f
dG91Y2hBY3Rpb24gOiAzOyAvLyBUb3VjaEFjdGlvbgorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQogICAgIHVuc2lnbmVkIG1fc2Nyb2xsU25hcFR5cGUgOiAyOyAvLyBTY3Jv
bGxTbmFwVHlwZQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM3ZTIyYWFiMDgwMjg0MWQyZDczZjA0YTBiYzM0NjFiMjZj
NTg2ZWIuLjlkNGRhM2Y0ZWVhMTNiODA2NzQyN2E2ODcwMWFiYzk2NjQ2YTdjZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMDA2
LDcgKzEwMDYsNyBAQCAtICh2b2lkKV9kaWRDb21taXRMYXllclRyZWU6KGNvbnN0IFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyVHJlZQogICAgIGlmICghbGF5ZXJUcmVl
VHJhbnNhY3Rpb24uc2NhbGVXYXNTZXRCeVVJUHJvY2VzcygpICYmICFbX3Njcm9sbFZpZXcgaXNa
b29taW5nXSAmJiAhW19zY3JvbGxWaWV3IGlzWm9vbUJvdW5jaW5nXSAmJiAhW19zY3JvbGxWaWV3
IF9pc0FuaW1hdGluZ1pvb21dKQogICAgICAgICBbX3Njcm9sbFZpZXcgc2V0Wm9vbVNjYWxlOmxh
eWVyVHJlZVRyYW5zYWN0aW9uLnBhZ2VTY2FsZUZhY3RvcigpXTsKIAotICAgIFtfY29udGVudFZp
ZXcgX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpbX3Njcm9sbFZpZXcgaXNab29tRW5hYmxl
ZF0gJiYgW19zY3JvbGxWaWV3IG1pbmltdW1ab29tU2NhbGVdIDwgW19zY3JvbGxWaWV3IG1heGlt
dW1ab29tU2NhbGVdXTsKKyAgICBbX2NvbnRlbnRWaWV3IF9zZXREb3VibGVUYXBHZXN0dXJlc0Vu
YWJsZWQ6c2VsZi5fdmlld3BvcnRJc1VzZXJTY2FsYWJsZV07CiAKICAgICBbc2VsZiBfdXBkYXRl
U2Nyb2xsVmlld0JhY2tncm91bmRdOwogCkBAIC0zMDQ1LDYgKzMwNDUsMTEgQEAgLSAoQ0dGbG9h
dClfdmlld3BvcnRNZXRhVGFnV2lkdGgKICAgICByZXR1cm4gX3ZpZXdwb3J0TWV0YVRhZ1dpZHRo
OwogfQogCistIChCT09MKV92aWV3cG9ydElzVXNlclNjYWxhYmxlCit7CisgICAgcmV0dXJuIFtf
c2Nyb2xsVmlldyBpc1pvb21FbmFibGVkXSAmJiBbX3Njcm9sbFZpZXcgbWluaW11bVpvb21TY2Fs
ZV0gPCBbX3Njcm9sbFZpZXcgbWF4aW11bVpvb21TY2FsZV07Cit9CisKIC0gKF9XS1dlYlZpZXdQ
cmludEZvcm1hdHRlciAqKV93ZWJWaWV3UHJpbnRGb3JtYXR0ZXIKIHsKICAgICBVSVZpZXdQcmlu
dEZvcm1hdHRlciAqdmlld1ByaW50Rm9ybWF0dGVyID0gc2VsZi52aWV3UHJpbnRGb3JtYXR0ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IGJmZWU4ODg0ZmYxZDFhODNmOWZhNTIwYzQ2MTRkOWVmNmIwNDFmNWUu
LmE2ZTkxOTVjMjc4MzY1ZTlmMGQ4NmM0YWM1ZDM2NDk2NDE1NWQ0MWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBA
IC0xMzQsNiArMTM0LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRl
QWN0aW9uVHlwZSkgewogCiAvLyBUaGUgdmlld3BvcnQgbWV0YSB0YWcgd2lkdGggaXMgbmVnYXRp
dmUgaWYgdGhlIHZhbHVlIGlzIG5vdCBkZWZpbmVkLgogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBDR0Zsb2F0IF92aWV3cG9ydE1ldGFUYWdXaWR0aDsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBfdmlld3BvcnRJc1VzZXJTY2FsYWJsZTsKIAogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgKl93ZWJWaWV3
UHJpbnRGb3JtYXR0ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4
IGIxMmQ0ZDBhMWEwODFhMjAwN2MyZjBjNmMzYjM3NjAxZGRkNDAzMzAuLmY4ZWZjYjBkY2JlNGVh
ZDQ2OWZmN2QyMDE4YzMyMzI5YTdmOTIzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaApAQCAtMjg5LDYgKzI4OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGVsZW1lbnRSZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHpvb21Ub1JlY3QoV2ViQ29y
ZTo6RmxvYXRSZWN0LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKGZsb2F0
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFw
SXNGaW5pc2hlZCh1aW50NjRfdCByZXF1ZXN0SUQpID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBt
aW5pbXVtWm9vbVNjYWxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRS
ZWN0IGRvY3VtZW50UmVjdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb3ZlcmZsb3dT
Y3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBmN2I3MzQ2MTI5NGQxMzgzNWY0NWM5NWM0NTFmMWFiYmQ2
ZjgwOGQ1Li43YmFmOGQ3Y2FkZDI0MzhjZTRjMWMxYjNjMDBmMDcyYjVmNDc4MTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01MDYsNiArNTA2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCk7CiAgICAgdm9pZCBkaWRO
b3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCB2
aWV3cG9ydE1ldGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCk7CisgICAgdm9pZCBkaXNh
YmxlRG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWQodWludDY0X3QgcmVxdWVzdElE
KTsKICAgICB2b2lkIGRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYpOwogICAgIHZvaWQgY29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZShjb25zdCBT
dHJpbmcmIGNvbnRlbnRTaXplQ2F0ZWdvcnkpOwogICAgIHZvaWQgZ2V0TG9va3VwQ29udGV4dEF0
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGFmYmQwYzBhYWRmNGY2NDgw
N2ExZjgxNGY5NTNmZDYwODRmOTg5Y2IuLmE5ODRiYWYxNDE5MzIyNzIyNmIyMGE5MzMzNmM4NTJl
OTI3ZjAxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMTg4LDYgKzE4OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgQ29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkKICAgICBEaWROb3RIYW5kbGVUYXBB
c0NsaWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQogICAgIFZpZXdwb3J0TWV0YVRhZ1dpZHRo
RGlkQ2hhbmdlKGZsb2F0IHdpZHRoKQorICAgIERpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGls
VGFwSXNGaW5pc2hlZCh1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgRGlkRmluaXNoRHJhd2luZ1Bh
Z2VzVG9QREYoSVBDOjpEYXRhUmVmZXJlbmNlIHBkZkRhdGEpCiAjZW5kaWYKICNpZiBQTEFURk9S
TShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmgKaW5kZXggNWExYmRlMTI3NzJlOTM5YzJiYzgzOWVlODkzZGY5ODg2NGI1YzJmMC4uYTVh
YThjZmQ4Njc2NWMzZDQzMmMwOWQ0N2M2NzE5NjYxZWYxYThhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTMyLDYgKzEzMiw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlUnVuT3BlblBhbmVsKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VWaWV3cG9ydE1ldGFUYWdXaWR0aChmbG9hdCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZCh1aW50NjRf
dCByZXF1ZXN0SUQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1ab29tU2Nh
bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBkb2N1
bWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggZWRkNGNlNWFlYTFlMTE1ZTYwZTU3
OGJlYmMzZjkwZTA3NjM4ZDY3ZC4uMGY2ZDFmOTE1ODI2MTNhNmI4OWRmYzg2NzA4NzYyYmVhMjI0
MDNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC0yNTksNiArMjU5LDE0IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENo
YW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKGZsb2F0IG5ld1dpZHRoKQogICAgIFttX3dlYlZpZXcg
X3NldFZpZXdwb3J0TWV0YVRhZ1dpZHRoOm5ld1dpZHRoXTsKIH0KIAordm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkKHVpbnQ2NF90
IHJlcXVlc3RJRCkKK3sKKyAgICBpZiAoIW1fd2ViVmlldy5fdmlld3BvcnRJc1VzZXJTY2FsYWJs
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fY29udGVudFZpZXcgX2Rpc2FibGVEb3VibGVU
YXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZEZvclJlcXVlc3Q6cmVxdWVzdElEXTsKK30KKwog
ZG91YmxlIFBhZ2VDbGllbnRJbXBsOjptaW5pbXVtWm9vbVNjYWxlKCkgY29uc3QKIHsKICAgICBp
ZiAoVUlTY3JvbGxWaWV3ICpzY3JvbGxlciA9IFttX3dlYlZpZXcgc2Nyb2xsVmlld10pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaAppbmRleCA0OWI0MTljZGZmOTQ2MDNhMGY4YjY2YWM4ZmYzMzhhOGY3MzFkZTVmLi4y
Y2JhZDRkMDFhYzM0ZGVkZGQ5ZDc4MDI2OWVlN2VjMDJmMzhlNjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
QEAgLTEyNiw3ICsxMjYsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogCiAgICAg
aWQgPFVJVGV4dElucHV0RGVsZWdhdGU+IF9pbnB1dERlbGVnYXRlOwogCi0gICAgdWludDY0X3Qg
X2xhdGVzdFRhcEhpZ2hsaWdodElEOworICAgIHVpbnQ2NF90IF9sYXRlc3RUYXBJRDsKICAgICBz
dHJ1Y3QgVGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24gewogICAgICAgICBXZWJDb3JlOjpDb2xvciBj
b2xvcjsKICAgICAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4gcXVhZHM7CkBAIC0xODEs
NiArMTgxLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICNlbmRpZgogLSAodm9p
ZClfY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkOwogLSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0
Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElEIGNvbG9yOihjb25zdCBXZWJDb3JlOjpDb2xv
ciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiloaWdobGln
aHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcExlZnRS
YWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcFJpZ2h0UmFk
aXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbUxlZnRS
YWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbVJp
Z2h0UmFkaXVzOworLSAodm9pZClfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0Zp
bmlzaGVkRm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElEOwogCiAtICh2b2lkKV9zdGFydEFz
c2lzdGluZ05vZGU6KGNvbnN0IFdlYktpdDo6QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mKWluZm9y
bWF0aW9uIHVzZXJJc0ludGVyYWN0aW5nOihCT09MKXVzZXJJc0ludGVyYWN0aW5nIGJsdXJQcmV2
aW91c05vZGU6KEJPT0wpYmx1clByZXZpb3VzTm9kZSB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNT
ZWN1cmVDb2Rpbmc+ICopdXNlck9iamVjdDsKIC0gKHZvaWQpX3N0b3BBc3Npc3RpbmdOb2RlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCBjOTFkMjI4YTg0NjhlYTYxMWMzOTk3ZjZiMzNjNTBhZTQxNzAx
ZDk0Li43ZDUyMmQ3NmNkYTY0NTFmMWUyZWM4MmQ3Y2Y0NzU5NzZjZjU1NzE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQpAQCAtNzM4LDcgKzczOCw3IEBAIC0gKHZvaWQpX3Nob3dUYXBIaWdobGlnaHQKIAog
LSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElE
IGNvbG9yOihjb25zdCBXZWJDb3JlOjpDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFF1YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKXRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzCiB7Ci0gICAgaWYgKCFfaXNUYXBI
aWdobGlnaHRJRFZhbGlkIHx8IF9sYXRlc3RUYXBIaWdobGlnaHRJRCAhPSByZXF1ZXN0SUQpCisg
ICAgaWYgKCFfaXNUYXBIaWdobGlnaHRJRFZhbGlkIHx8IF9sYXRlc3RUYXBJRCAhPSByZXF1ZXN0
SUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBOTzsK
QEAgLTc1OCw2ICs3NTgsMTQgQEAgLSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVz
dDoodWludDY0X3QpcmVxdWVzdElEIGNvbG9yOihjb25zdCBXZWJDb3JlOjoKICAgICBbc2VsZiBf
c2hvd1RhcEhpZ2hsaWdodF07CiB9CiAKKy0gKHZvaWQpX2Rpc2FibGVEb3VibGVUYXBHZXN0dXJl
c1VudGlsVGFwSXNGaW5pc2hlZEZvclJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRAoreworICAg
IGlmICghX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgfHwgX2xhdGVzdFRhcElEICE9IHJlcXVlc3RJ
RCkKKyAgICAgICAgcmV0dXJuOworCisgICAgW3NlbGYgX3NldERvdWJsZVRhcEdlc3R1cmVzRW5h
YmxlZDpOT107Cit9CisKIC0gKHZvaWQpX2NhbmNlbExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVy
CiB7CiAgICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciBjYW5jZWxdOwpA
QCAtMTA2Miw3ICsxMDcwLDcgQEAgLSAodm9pZClfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXpl
ZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWMKICAgICBjYXNlIFVJ
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuOgogICAgICAgICBfaGlnaGxpZ2h0TG9uZ1ByZXNz
Q2FuQ2xpY2sgPSBZRVM7CiAgICAgICAgIGNhbmNlbFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KHNl
bGYpOwotICAgICAgICBfcGFnZS0+dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihbZ2VzdHVyZVJlY29n
bml6ZXIgc3RhcnRQb2ludF0sICsrX2xhdGVzdFRhcEhpZ2hsaWdodElEKTsKKyAgICAgICAgX3Bh
Z2UtPnRhcEhpZ2hsaWdodEF0UG9zaXRpb24oW2dlc3R1cmVSZWNvZ25pemVyIHN0YXJ0UG9pbnRd
LCArK19sYXRlc3RUYXBJRCk7CiAgICAgICAgIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBZRVM7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQ6
CkBAIC0xMDk3LDEyICsxMTA1LDIwIEBAIC0gKHZvaWQpX2xvbmdQcmVzc1JlY29nbml6ZWQ6KFVJ
TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogICAgIH0KIH0K
IAorLSAodm9pZClfZW5kUG90ZW50aWFsVGFwCit7CisgICAgaWYgKF93ZWJWaWV3Ll92aWV3cG9y
dElzVXNlclNjYWxhYmxlKQorICAgICAgICBbc2VsZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFi
bGVkOllFU107CisKKyAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POworfQorCiAtICh2
b2lkKV9zaW5nbGVUYXBSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVy
ZVJlY29nbml6ZXIKIHsKICAgICBBU1NFUlQoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3NpbmdsZVRh
cEdlc3R1cmVSZWNvZ25pemVyKTsKICAgICBBU1NFUlQoIV9wb3RlbnRpYWxUYXBJblByb2dyZXNz
KTsKIAotICAgIF9wYWdlLT5wb3RlbnRpYWxUYXBBdFBvc2l0aW9uKGdlc3R1cmVSZWNvZ25pemVy
LmxvY2F0aW9uLCArK19sYXRlc3RUYXBIaWdobGlnaHRJRCk7CisgICAgX3BhZ2UtPnBvdGVudGlh
bFRhcEF0UG9zaXRpb24oZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb24sICsrX2xhdGVzdFRhcElE
KTsKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IFlFUzsKICAgICBfaXNUYXBIaWdobGln
aHRJRFZhbGlkID0gWUVTOwogfQpAQCAtMTExMCw3ICsxMTI2LDcgQEAgLSAodm9pZClfc2luZ2xl
VGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVy
CiBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3
KiBjb250ZW50VmlldykKIHsKICAgICBpZiAoY29udGVudFZpZXctPl9wb3RlbnRpYWxUYXBJblBy
b2dyZXNzKSB7Ci0gICAgICAgIGNvbnRlbnRWaWV3LT5fcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9
IE5POworICAgICAgICBbY29udGVudFZpZXcgX2VuZFBvdGVudGlhbFRhcF07CiAgICAgICAgIFtj
b250ZW50VmlldyBfY2FuY2VsSW50ZXJhY3Rpb25dOwogICAgICAgICBjb250ZW50Vmlldy0+X3Bh
Z2UtPmNhbmNlbFBvdGVudGlhbFRhcCgpOwogICAgIH0KQEAgLTExNDksNyArMTE2NSw3IEBAIC0g
KHZvaWQpX3NpbmdsZVRhcENvbW1pdGVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVy
ZVJlY29nbml6ZXIKIAogICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNv
Z25pemVyLmxvY2F0aW9uOwogCi0gICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBOTzsKKyAg
ICBbc2VsZiBfZW5kUG90ZW50aWFsVGFwXTsKIAogICAgIGlmIChfaGFzVGFwSGlnaGxpZ2h0Rm9y
UG90ZW50aWFsVGFwKSB7CiAgICAgICAgIFtzZWxmIF9zaG93VGFwSGlnaGxpZ2h0XTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMGEz
MjlkMDkyODgwYWI3YmM4ZjI5MzgzZTgwNGIxZjkyOTBhZTY0OS4uYjU4OGFiNGM5YjhhMjI1ZGQ1
MDY2ZTYwYzc0MDYyYjRjNGY2NWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTkzNyw2ICs5MzcsMTEgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnZpZXdwb3J0TWV0YVRhZ1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRoKQogICAgIG1f
cGFnZUNsaWVudC5kaWRDaGFuZ2VWaWV3cG9ydE1ldGFUYWdXaWR0aCh3aWR0aCk7CiB9CiAKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNo
ZWQodWludDY0X3QgcmVxdWVzdElEKQoreworICAgIG1fcGFnZUNsaWVudC5kaXNhYmxlRG91Ymxl
VGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWQocmVxdWVzdElEKTsKK30KKwogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcGRmRGF0YSkKIHsKICAgICBtX3BhZ2VDbGllbnQuZGlkRmluaXNoRHJhd2luZ1BhZ2Vz
VG9QREYocGRmRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMmRjYWZlMWQzYzAzNDVjZTRmNmM5OTZmMjBmN2Q0
MDdiZTc4ZTA1MS4uMTc5NTdkNTU3Njk2ZmI2NTMyODc0OTg0ZGY0ODQzYTAwM2RmNzJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQpAQCAtNjYyLDYgKzY2Miw4IEBAIHZvaWQgV2ViUGFnZTo6cG90ZW50aWFsVGFwQXRQb3Np
dGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pCiB7CiAgICAg
bV9wb3RlbnRpYWxUYXBOb2RlID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ub2RlUmVzcG9uZGluZ1Rv
Q2xpY2tFdmVudHMocG9zaXRpb24sIG1fcG90ZW50aWFsVGFwTG9jYXRpb24pOwogICAgIHNlbmRU
YXBIaWdobGlnaHRGb3JOb2RlSWZOZWNlc3NhcnkocmVxdWVzdElELCBtX3BvdGVudGlhbFRhcE5v
ZGUuZ2V0KCkpOworICAgIGlmIChtX3BvdGVudGlhbFRhcE5vZGUgJiYgIW1fcG90ZW50aWFsVGFw
Tm9kZS0+YWxsb3dzRG91YmxlVGFwR2VzdHVyZSgpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZChy
ZXF1ZXN0SUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjb21taXRQb3RlbnRpYWxUYXAodWludDY0
X3QgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzhjZWYwYWE1ZDBjMDg0YmM2
MjNlYmUxMTAyNWY4MzAzZWZjYjVjNC4uMzUwZWY0MWEyOTRiMWY2YzFhY2YyOTIzYjY2ZmMyMjA2
NmM2ZDBmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTEwLTE1ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0b3VjaC1hY3Rp
b246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzAxNzE0
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
dGVzdHMgdG8gY2hlY2sgdGhhdCB0aGUgbWFuaXB1bGF0aW9uIGFuZCBhdXRvIHZhbHVlcyBvZiB0
aGUgdG91Y2gtYWN0aW9uIHByb3BlcnR5IGNhbiBiZQorICAgICAgICBwcm9wZXJseSBwYXJzZWQg
YW5kIGNhbiBiZSBvYnRhaW5lZCB0aHJvdWdoIGNvbXB1dGVkIHN0eWxlLiBBbHNvIHRlc3RzIHRo
YXQgcHV0dGluZyB0b3VjaC1hY3Rpb246CisgICAgICAgIG1hbmlwdWxhdGlvbiBvbiBhbiBlbGVt
ZW50IGFuZCB0YXBwaW5nIHJlcGVhdGVkbHkgb24gaXQgd2lsbCBmaXJlIGNsaWNrcyBpbnN0ZWFk
IG9mIHJlY29nbml6aW5nCisgICAgICAgIGRvdWJsZSB0YXBzIGFuZCBjYXVzaW5nIHRoZSB2aWV3
cG9ydCB0byB6b29tLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBj
c3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29tcHV0
ZWQtc3R5bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gt
YWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGNzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFzdC1j
bGlja3MuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0
aW9uLXBhcnNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3RvdWNoLWFj
dGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE1LTEwLTE0ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NvbnRl
bnQgRXh0ZW5zaW9uc10gTWFrZSBibG9ja2VkIGFzeW5jIFhIUiBjYWxsIG9uZXJyb3IKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDJmZjVhZDJkMDVmMjA5ODQ2ZjkzZjUzNjUyYThjMzdlMjNlZmEzOTMu
LjVjMTJmYmE1YjYxYmE4OGIwOWQ1NzU2ZDYwM2U0MzBhZDllNjI1MzIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtNiw2ICs2LDcgQEAKICMgUGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMuIFNraXBwZWQg
aGVyZSwgdGhlbiByZS1lbmFibGVkIG9uIHRoZSBhcHByb3ByaWF0ZSBwbGF0Zm9ybS4KICMvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAorY3NzMy90b3VjaC1hY3Rpb24gWyBTa2lw
IF0KIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvciBbIFNraXAgXQogYWNjZXNzaWJpbGl0eS9n
dGsgWyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkvbWFjIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29tcHV0ZWQtc3R5bGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNv
bXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTdmZGNlMjYyYjJlMjI2NjMx
MDdhMTk4MGFmZWI0ZDhiZjYyOWRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3Nz
My90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE1IEBACitUZXN0aW5nIHRoZSBjb21wdXRlZCBzdHlsZSBvZiB0b3VjaC1hY3Rp
b246CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5nIHRvdWNoLWFjdGlv
bjogbWFuaXB1bGF0aW9uOworUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5i
b2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24nKSBpcyAnbWFuaXB1bGF0aW9uJwor
VGVzdGluZyB0b3VjaC1hY3Rpb246IGF1dG87CitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIGlzICdhdXRv
JworVGVzdGluZyBhIGJvZ3VzIHZhbHVlCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIGlzICdhdXRvJwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1jb21wdXRl
ZC1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9u
LWNvbXB1dGVkLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRkNWI1ZTRmZGMzNzE2N2Q5Y2Q0YTFi
MTQ5MDVkMjdmMWVjODNjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvdG91
Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS5odG1sCkBAIC0wLDAgKzEsMzUg
QEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keT4K
KyAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRl
c3RpbmcgdGhlIGNvbXB1dGVkIHN0eWxlIG9mIHRvdWNoLWFjdGlvbjoiKTsKKworICAgICAgICAg
ICAgdmFyIHN0eWxlc2hlZXQ7CisgICAgICAgICAgICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBw
ZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQgPSBzdHlsZUVs
ZW1lbnQuc2hlZXQ7CisKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHRvdWNoLWFjdGlvbjog
bWFuaXB1bGF0aW9uOyIpOworICAgICAgICAgICAgc3R5bGVzaGVldC5pbnNlcnRSdWxlKCJib2R5
IHsgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH0iLCAwKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZh
bHVlKCd0b3VjaC1hY3Rpb24nKSIsICInbWFuaXB1bGF0aW9uJyIpOworICAgICAgICAgICAgc3R5
bGVzaGVldC5kZWxldGVSdWxlKDApOworCisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyB0b3Vj
aC1hY3Rpb246IGF1dG87Iik7CisgICAgICAgICAgICBzdHlsZXNoZWV0Lmluc2VydFJ1bGUoImJv
ZHkgeyB0b3VjaC1hY3Rpb246IGF1dG87IH0iLCAwKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJ3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0
b3VjaC1hY3Rpb24nKSIsICInYXV0byciKTsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuZGVsZXRl
UnVsZSgwKTsKKworICAgICAgICAgICAgZGVidWcoIlRlc3RpbmcgYSBib2d1cyB2YWx1ZSIpOwor
ICAgICAgICAgICAgc3R5bGVzaGVldC5pbnNlcnRSdWxlKCJib2R5IHsgdG91Y2gtYWN0aW9uOiB0
eXBvOyB9IiwgMCk7CisgICAgICAgICAgICBzaG91bGRCZSgid2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykiLCAiJ2F1
dG8nIik7CisKKyAgICAgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAg
IDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0
LWNsaWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3Vj
aC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNWUyNjNiMjBmZjUyNmY4YjE3NzUxZWI4ZmRhNWE4OTcyNTQ5ZTk2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxh
dGlvbi1mYXN0LWNsaWNrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1JlcGVhdGVk
bHkgdGFwcGluZyBvbiB0aGUgYnV0dG9uIHNob3VsZCBmaXJlIGNsaWNrIGV2ZW50cy4KKworVGhp
cyB0ZXN0IGlzIGJlc3QgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIuIElmIHlvdSBhcmUgcnVubmlu
ZyB0aGlzIHRlc3QgbWFudWFsbHksIHZlcmlmeSB0aGF0IHRhcHBpbmcgdGhlIGJ1dHRvbiBjYXVz
ZXMgYSAiQ2xpY2shIiBtZXNzYWdlIHRvIGFwcGVhciBiZWxvdywgYW5kIHRoYXQgY2xpY2sgb2Nj
dXJyZWQgd2l0aG91dCB0aGUgcmVndWxhciAzNTBtcyBkZWxheSBmb3IgZG91YmxlIHRhcHBpbmcu
CisKK0NsaWNrIQorQ2xpY2shCitDbGljayEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3Nz
My90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNrcy5odG1s
IGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlv
bi1mYXN0LWNsaWNrcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzOWJkZGQ0Y2JmZWE1YWUxM2VkYzc3OThh
ODM1NDE1NDNjYTcyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNo
LWFjdGlvbi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tzLmh0bWwKQEAgLTAs
MCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNl
RmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+CisKKzxodG1sPgorPG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKworPGhlYWQ+CisgICAgPHNjcmlwdCBp
ZD0idWktc2NyaXB0IiB0eXBlPSJ0ZXh0L3BsYWluIj4KKyAgICAgICAgKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgZnVuY3Rpb24gcGVyZm9ybVRhcCgpIHsKKyAgICAgICAgICAgICAgICB1aUNv
bnRyb2xsZXIuc2luZ2xlVGFwQXRQb2ludCgyMDAsIDIwMCwgcGVyZm9ybVRhcCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBwZXJmb3JtVGFwKCk7CisgICAgICAgIH0pKCk7CisgICAgPC9z
Y3JpcHQ+CisKKyAgICA8c2NyaXB0PgorICAgIHZhciBjbGlja0NvdW50ID0gMDsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGdldFVJU2NyaXB0KCkgeworICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InVpLXNjcmlwdCIpLnRleHQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9uKHJlc3VsdCkgeyB9KTsKKyAgICB9
CisgICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2tlZCgpIHsKKyAgICAgICAgY2xpY2tDb3VudCsrOwor
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCJDbGljayEiKSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiYnIiKSk7CisgICAgICAgIGlmIChjbGlja0NvdW50ID09IDMpCisgICAg
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgPC9zY3JpcHQ+CisK
KyAgICA8c3R5bGU+CisgICAgYm9keSB7CisgICAgICAgIG1hcmdpbjogMDsKKyAgICB9CisKKyAg
ICAjdGFyZ2V0IHsKKyAgICAgICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247CisgICAgICAg
IHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiA0MDBweDsKKyAgICB9CisgICAgPC9zdHls
ZT4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxidXR0b24gaWQ9
InRhcmdldCIgb25jbGljaz0iaGFuZGxlQ2xpY2tlZCgpIj48L2J1dHRvbj4KKyAgICA8cD5SZXBl
YXRlZGx5IHRhcHBpbmcgb24gdGhlIGJ1dHRvbiBzaG91bGQgZmlyZSBjbGljayBldmVudHMuPC9w
PgorICAgIDxwPlRoaXMgdGVzdCBpcyBiZXN0IHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyLiBJZiB5
b3UgYXJlIHJ1bm5pbmcgdGhpcyB0ZXN0IG1hbnVhbGx5LCB2ZXJpZnkgdGhhdCB0YXBwaW5nIHRo
ZSBidXR0b24gY2F1c2VzIGEgIkNsaWNrISIgbWVzc2FnZSB0byBhcHBlYXIgYmVsb3csIGFuZCB0
aGF0IGNsaWNrIG9jY3VycmVkIHdpdGhvdXQgdGhlIHJlZ3VsYXIgMzUwbXMgZGVsYXkgZm9yIGRv
dWJsZSB0YXBwaW5nLjwvcD4KKzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmctZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OWM5ZjgxYTQzMjIzY2UzNGFhZGE3YjlkODc1N2FkZDk3
NWY3OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90
b3VjaC1hY3Rpb24tcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdCB0
aGUgcGFyc2luZyBvZiB0b3VjaC1hY3Rpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIGNzc1J1bGUudHlwZSBpcyAxCitQQVNTIGRlY2xhcmF0aW9uLmxlbmd0aCBpcyAx
CitQQVNTIGRlY2xhcmF0aW9uLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIGlzICdt
YW5pcHVsYXRpb24nCitQQVNTIGNzc1J1bGUudHlwZSBpcyAxCitQQVNTIGRlY2xhcmF0aW9uLmxl
bmd0aCBpcyAxCitQQVNTIGRlY2xhcmF0aW9uLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlv
bicpIGlzICdhdXRvJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNo
LWFjdGlvbi1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3Vj
aC1hY3Rpb24tcGFyc2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ZDNhNmRhZmQ3OTI4YWQwOWYyMWE4
Y2Q4MWEzNTE5Y2Y1MmU5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Rv
dWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3QgdGhl
IHBhcnNpbmcgb2YgdG91Y2gtYWN0aW9uLiIpOworCisgICAgICAgICAgICB2YXIgc3R5bGVzaGVl
dCwgY3NzUnVsZSwgZGVjbGFyYXRpb247CisgICAgICAgICAgICB2YXIgc3R5bGVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50Lmhl
YWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQgPSBz
dHlsZUVsZW1lbnQuc2hlZXQ7CisKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuaW5zZXJ0UnVsZSgi
Ym9keSB7IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyB9IiwgMCk7CisgICAgICAgICAgICBj
c3NSdWxlID0gc3R5bGVzaGVldC5jc3NSdWxlcy5pdGVtKDApOworICAgICAgICAgICAgc2hvdWxk
QmUoImNzc1J1bGUudHlwZSIsICIxIik7CisgICAgICAgICAgICBkZWNsYXJhdGlvbiA9IGNzc1J1
bGUuc3R5bGU7CisgICAgICAgICAgICBzaG91bGRCZSgiZGVjbGFyYXRpb24ubGVuZ3RoIiwgIjEi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJkZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVZhbHVlKCd0
b3VjaC1hY3Rpb24nKSIsICInbWFuaXB1bGF0aW9uJyIpOworCisgICAgICAgICAgICBzdHlsZXNo
ZWV0Lmluc2VydFJ1bGUoImJvZHkgeyB0b3VjaC1hY3Rpb246IGF1dG87IH0iLCAwKTsKKyAgICAg
ICAgICAgIGNzc1J1bGUgPSBzdHlsZXNoZWV0LmNzc1J1bGVzLml0ZW0oMCk7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY3NzUnVsZS50eXBlIiwgIjEiKTsKKyAgICAgICAgICAgIGRlY2xhcmF0aW9u
ID0gY3NzUnVsZS5zdHlsZTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJkZWNsYXJhdGlvbi5sZW5n
dGgiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImRlY2xhcmF0aW9uLmdldFByb3BlcnR5
VmFsdWUoJ3RvdWNoLWFjdGlvbicpIiwgIidhdXRvJyIpOworCisgICAgICAgICAgICBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICA8L3NjcmlwdD4KKworCisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2lt
dWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNp
bXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMTEwMjg0ZDczMmRiOTI4ZjM5N2U2
ZGIxOTVjN2FkOTBmNmEwZWYzLi5lMGVjY2E5ZDE3NmM3Mjk3NjgyYWVmYTRjZDk0M2UyMDk0NTMy
M2RjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3It
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYsNiArNiw3IEBACiAjIFBsYXRmb3JtLXNwZWNpZmlj
IGRpcmVjdG9yaWVzLiBTa2lwcGVkIGdsb2JhbGx5LCB0aGVuIHJlLWVuYWJsZWQgaGVyZS4KICMv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAorY3NzMy90b3VjaC1hY3Rpb24gWyBQ
YXNzIF0KIGZhc3QvaGFybmVzcy91aS1zaWRlLXNjcmlwdHMuaHRtbCBbIFBhc3MgXQogZmFzdC9o
YXJuZXNzL2NvbmN1cnJlbnQtdWktc2lkZS1zY3JpcHRzLmh0bWwgWyBQYXNzIF0KIGZhc3Qvem9v
bWluZy9pb3MgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263365</attachid>
            <date>2015-10-16 23:38:19 -0700</date>
            <delta_ts>2015-10-19 09:35:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149854-20151016233739.patch</filename>
            <type>text/plain</type>
            <size>39646</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJiYTU1Y2FjMzgzNjNi
NzIwNjU4ZmJiZmExNDI5ZmI1ZWMwMGZkOS4uOTczODJjOGFlZjhjZGM5OTAxNTczNzJiMTk1MzEz
MjdlYWQ0YjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTEwLTE1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMzAxNzE0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnRzIHRoZSBtYW5pcHVsYXRpb24gdmFsdWUgZm9yIHRoZSBDU1MgcHJvcGVy
dHkgdG91Y2gtYWN0aW9uLiBBZGRzIHN1cHBvcnQgZm9yCisgICAgICAgIHBhcnNpbmcgdGhlIHRv
dWNoLWFjdGlvbiBwcm9wZXJ0eSBhbmQgdHdvIG9mIGl0cyB2YWx1ZXM6IGF1dG8gYW5kIG1hbmlw
dWxhdGlvbi4KKworICAgICAgICBUZXN0czogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9u
LWNvbXB1dGVkLXN0eWxlLmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvdG91Y2gtYWN0aW9uL3Rv
dWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MuaHRtbAorICAgICAgICAgICAgICAg
Y3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbAorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgVG91Y2hBY3Rpb24pOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFsbG93c0RvdWJsZVRhcEdl
c3R1cmUpOiBIZXJlLCB3ZSBkZXRlcm1pbmUgd2hldGhlciBhbiBlbGVtZW50IHRoYXQgcmVzdWx0
ZWQgZnJvbQorICAgICAgICAgICAgaGl0LXRlc3RpbmcgYSB0b3VjaCBzaG91bGQgYWxsb3cgZG91
YmxlLXRhcCBnZXN0dXJlcy4gVG8gZG8gdGhpcywgd2Ugd2FsayB1cCB0aGUgZWxlbWVudCdzIHBh
cmVudHMsCisgICAgICAgICAgICBzdG9wcGluZyB3aGVuIHdlIGRldGVjdCBhbiBlbGVtZW50IHRo
YXQgZGlzYWxsb3dzIGRvdWJsZSB0YXAgZ2VzdHVyZXMgYnkgaGF2aW5nIGEgdG91Y2gtYWN0aW9u
IG90aGVyCisgICAgICAgICAgICB0aGFuIGF1dG8gb3IgYnkgaGl0dGluZyB0aGUgcm9vdCBub2Rl
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmFsbG93c0RvdWJsZVRhcEdlc3R1cmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxNS0xMC0xNiAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE5MTIwNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMDdlZDk4MjA4OTFkNzdk
MDQzNmJhZTJkODA2ZWI1NWEyZWI0Njg2Li5jOTk0YjQyNTg1NGNjMTU3YWIwYTc1NjQzNDg4ZDM5
MjllNGFmZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTUtMTAtMTUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRv
dWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk4NTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzIzMDE3MTQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudHMgdGhlIG1hbmlwdWxhdGlvbiB2YWx1ZSBmb3IgdGhlIENTUyBwcm9wZXJ0
eSB0b3VjaC1hY3Rpb24uIFBlcmZvcm1zIGhpdC10ZXN0aW5nIHVwb24gcmVjZWl2aW5nIGEgcG90
ZW50aWFsCisgICAgICAgIHRhcCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBkaXNhYmxlIGRvdWJs
ZS10YXAgZ2VzdHVyZSByZWNvZ25pdGlvbiBvdmVyIHRoZSBkdXJhdGlvbiBvZiB0aGUgdGFwLiBJ
ZiBzbywgc2VuZHMgYSBtZXNzYWdlCisgICAgICAgIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRo
ZSBVSSBwcm9jZXNzIGluZGljYXRpbmcgdGhhdCBkb3VibGUtdGFwcGluZyBzaG91bGQgYmUgZGlz
YWJsZWQsIGFsbG93aW5nIHNpbmdsZSB0YXBzIHRvCisgICAgICAgIGF2b2lkIHRoZSBkZWxheS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF92aWV3cG9ydElzVXNlclNjYWxhYmxlXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc2FibGVEb3VibGVUYXBH
ZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkR2V0VGFw
SGlnaGxpZ2h0Rm9yUmVxdWVzdDpjb2xvcjpxdWFkczp0b3BMZWZ0UmFkaXVzOnRvcFJpZ2h0UmFk
aXVzOmJvdHRvbUxlZnRSYWRpdXM6Ym90dG9tUmlnaHRSYWRpdXM6XSk6CisgICAgICAgICAgICAg
ICAgUmVuYW1lZCBfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQgdG8gX2xhdGVzdFRhcElEIHRvIHJlZmxl
Y3QgdGhhdCBpdCBpcyB1c2VkIGZvciBib3RoIHRhcCBoaWdobGlnaHRzIGFuZCB0b3VjaC1hY3Rp
b246IG1hbmlwdWxhdGlvbi4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlzYWJsZURvdWJs
ZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkRm9yUmVxdWVzdDpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDpdKTogUmVuYW1lZCBf
bGF0ZXN0VGFwSGlnaGxpZ2h0SUQgdG8gX2xhdGVzdFRhcElELgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9lbmRQb3RlbnRpYWxUYXBdKTogUHVsbHMgb3V0IGxvZ2ljIHRvIHJlc2V0IGEgZmxh
ZyBpbmRpY2F0aW5nIHRoYXQgd2UgYXJlIG5vIGxvbmdlciB0cmFja2luZyBhIHBvdGVudGlhbCB0
YXAuIEFsc28KKyAgICAgICAgICAgICAgICByZS1lbmFibGVzIHRoZSBkb3VibGUgdGFwIGdlc3R1
cmUgcmVjb2duaXplciBpZiBuZWNlc3NhcnkuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Np
bmdsZVRhcFJlY29nbml6ZWQ6XSk6IFJlbmFtZWQgX2xhdGVzdFRhcEhpZ2hsaWdodElEIHRvIF9s
YXRlc3RUYXBJRC4KKyAgICAgICAgKGNhbmNlbFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfc2luZ2xlVGFwQ29tbWl0ZWQ6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnBvdGVudGlhbFRhcEF0UG9zaXRpb24pOgorCiAyMDE1LTEwLTE2ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIFdL
V2ViVmlldyBpbnB1dCBkZWxlZ2F0ZSBTUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMTBlNmU3YTQ1ZDk1ODRmODUwYmNj
NWMwNzgwMmYwODcwMWI4MjgwNS4uNTljMTZmOTYwNGZmOGUwZWQ0MmViMTFlM2UwZWI3OTlkYzQ1
OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAKQEAgLTM0MjgsNiArMzQyOCwxMSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LAogICAgICAgICAgICAgcmV0dXJuIHNjcm9sbFNuYXBDb29yZGluYXRlcygqc3R5bGUsIHN0eWxl
LT5zY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjoKKyAgICAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRvdWNoQWN0aW9uKCkpOwor
I2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlBcHBsZVRyYWlsaW5nV29yZDoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRyYWlsaW5nV29yZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKaW5kZXggY2M0YzhkYzg0MThlYWM4YjZmYmNjZGY0Yjg0OThkNjRhYmQ0NjFmYS4uNDRi
N2JkMTYyZDI0YzhhNzQ5ZDdlM2Y0OTE1MjE4YzNkNjY1ZTAxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKQEAgLTc1Myw2ICs3NTMsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRL
ZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGludAogICAg
ICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
QnJlYWtXb3JkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOworI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOiAv
LyBhdXRvIHwgbWFuaXB1bGF0aW9uCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0
byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWFuaXB1bGF0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2Nyb2xsU25hcFR5cGU6IC8vIG5vbmUgfCBt
YW5kYXRvcnkgfCBwcm94aW1pdHkKICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYW5kYXRvcnkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVBy
b3hpbWl0eSkKQEAgLTExNzUsNiArMTE4MSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdv
cmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2hpdGVTcGFjZToKICAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXb3JkV3JhcDoKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlUb3VjaEFjdGlvbjoKKyNlbmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNjcm9sbFNuYXBUeXBlOgogI2VuZGlmCkBA
IC0zMjU5LDYgKzMyNjgsOSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0
eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKICAgICBjYXNlIENTU1Byb3BlcnR5
V29yZFdyYXA6CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIENTU1Byb3BlcnR5
VG91Y2hBY3Rpb246CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRTY3JvbGxTbmFwVHlwZToKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggMTRmYjkwZDE3OGFh
NDg5MzBhMDUxZTU2Y2M0OTJlMGEzMGJjMzBmYi4uZTEyZWUxNzFhNDY0OTlkZTU0ZmJkYWFjZmNh
ZjIyZjJkMmJiMGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWVNYXBwaW5ncy5oCkBAIC01MjUyLDYgKzUyNTIsMzcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRab29tIHRleHRab29tKQogICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwogfQogCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShUb3VjaEFjdGlvbiB0KQorICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCit7
CisgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKKyAgICBzd2l0Y2ggKHQp
IHsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgorICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUF1dG87CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hBY3Rpb246Ok1h
bmlwdWxhdGlvbjoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYW5pcHVsYXRp
b247CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRvdWNoQWN0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
aXNWYWx1ZUlEKCkpOworICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CisgICAgY2FzZSBD
U1NWYWx1ZUF1dG86CisgICAgICAgIHJldHVybiBUb3VjaEFjdGlvbjo6QXV0bzsKKyAgICBjYXNl
IENTU1ZhbHVlTWFuaXB1bGF0aW9uOgorICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246Ok1hbmlw
dWxhdGlvbjsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOworfQorI2VuZGlm
CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFNjcm9sbFNuYXBUeXBlIGUpCiAgICAgOiBD
U1NWYWx1ZShQcmltaXRpdmVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMu
aW4KaW5kZXggNDA5MjU0OWVkNTQ2MWYzOTU3N2UyNjQ1N2EwOTQ4YTI3YTUxZTc4OC4uZjJjMjA1
YWQxMmY0ZGRiOTQzOTQ3NzFkYWE4NjcxZmVmZGY3Njc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TmFtZXMuaW4KQEAgLTY2Niw2ICs2NjYsOSBAQCB1c2VyLXpvb20gW1NraXBCdWls
ZGVyXQogI2lmIGRlZmluZWQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykg
JiYgRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORwogLXdlYmtpdC1vdmVyZmxv
dy1zY3JvbGxpbmcgW0luaGVyaXRlZCwgTmFtZUZvck1ldGhvZHM9VXNlVG91Y2hPdmVyZmxvd1Nj
cm9sbGluZywgQ29udmVydGVyPU92ZXJmbG93U2Nyb2xsaW5nXQogI2VuZGlmCisjaWYgZGVmaW5l
ZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCit0b3VjaC1hY3Rp
b24KKyNlbmRpZgogI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JN
X0lPUwogLXdlYmtpdC10b3VjaC1jYWxsb3V0IFtJbmhlcml0ZWQsIE5hbWVGb3JNZXRob2RzPVRv
dWNoQ2FsbG91dEVuYWJsZWQsIENvbnZlcnRlcj1Ub3VjaENhbGxvdXRdCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggNjNhODljNjdmNDUxNmQxNTEwYmUz
NzJmZmJhZTZmNzlkN2JhMzMxNi4uYjIxODU3MWNjZjhlZGFjZjNkNGYwNDk3YjE4NTAxYjY5ZGQ1
MzFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTExNzEsMyAr
MTE3MSw4IEBAIHN0eWxlCiAvLyB3aWxsLWNoYW5nZQogc2Nyb2xsLXBvc2l0aW9uCiBjb250ZW50
cworCisjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZF
TlRTCisvLyB0b3VjaC1hY3Rpb24KK21hbmlwdWxhdGlvbgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggMTJlNzY4YjI0YThmMzg2ZmYyNDdiNThlNDliYjU4Nzc2OGI4YWJiOS4uZTdk
YjAxNmRlYTFiYjIzNjQzODMwN2M0MTYwNjZlNzBkZTg0YzBlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtMTM4MCw2ICsxMzgwLDE3IEBAIFVSTCBFbGVtZW50OjphYnNvbHV0ZUxpbmtVUkwo
KSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhsaW5rQXR0cmlidXRlKSk7CiB9CiAKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorYm9vbCBFbGVtZW50OjphbGxvd3NEb3VibGVUYXBHZXN0dXJlKCkgY29uc3QK
K3sKKyAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLnRvdWNoQWN0aW9u
KCkgIT0gVG91Y2hBY3Rpb246OkF1dG8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVs
ZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAgICByZXR1cm4gIXBhcmVudCB8fCBw
YXJlbnQtPmFsbG93c0RvdWJsZVRhcEdlc3R1cmUoKTsKK30KKyNlbmRpZgorCiBTdHlsZVJlc29s
dmVyJiBFbGVtZW50OjpzdHlsZVJlc29sdmVyKCkKIHsKICAgICBpZiAoYXV0byogc2hhZG93Um9v
dCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBkMjUzYjAz
NzgzMTkxODMzZmE1MmIzMjVmOTVkZDU4YTYwMDk0ZTAzLi5iMDZjYmM5NmFlYWNmNDNhODA3ZmY5
OGU0MzU5MmM2YjI4OWU3MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ4Nyw2ICs0ODcsMTAg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGFic29sdXRlTGlua1VSTCgpIGNv
bnN0OwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dz
RG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICBTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyKCk7CiAgICAgUmVmPFJlbmRlclN0eWxlPiByZXNvbHZlU3R5
bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNmExOTNhYTI2
Mzg5MWUxMDQzNjg0OGM0NmMyYjU1OThhOGJjYjM3OC4uMmQ5OGQ1ODRkZjQ4YThhM2YzMTQwN2Rj
ZmYzODAxMjhmMDY2YmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC01MzEsNiArNTMxLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKICAgICBib29sIGRp
c3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRl
cmx5aW5nRXZlbnQpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJv
b2wgYWxsb3dzRG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBib29s
IGRpc3BhdGNoVG91Y2hFdmVudChQYXNzUmVmUHRyPFRvdWNoRXZlbnQ+KTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBiM2IyNWYx
NGFlMjk0NWMyZjJkOGFiZWMxMWNmZGQyZTFiN2QwNjJhLi41NDhiNDE0ZTZkZjJlZDYzMjU3MTZk
N2Q0OGIwMzQwMzZkNWU1MGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaApAQCAtMTExOSw2ICsxMTE5LDEwIEBAIHB1YmxpYzoKICAgICBpbnQgaW5p
dGlhbExldHRlckRyb3AoKSBjb25zdCB7IHJldHVybiBpbml0aWFsTGV0dGVyKCkud2lkdGgoKTsg
fQogICAgIGludCBpbml0aWFsTGV0dGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5pdGlhbExl
dHRlcigpLmhlaWdodCgpOyB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIFRvdWNo
QWN0aW9uIHRvdWNoQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hBY3Rp
b24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RvdWNoQWN0aW9uKTsgfQorI2VuZGlmCisKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIFNjcm9sbFNuYXBUeXBlIHNjcm9sbFNuYXBU
eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsU25hcFR5cGU+KHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBUeXBlKTsgfQogICAgIGNvbnN0IFNjcm9sbFNuYXBQ
b2ludHMqIHNjcm9sbFNuYXBQb2ludHNYKCkgY29uc3Q7CkBAIC0xNjc5LDYgKzE2ODMsMTAgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SW5pdGlhbExldHRlcihjb25zdCBJbnRTaXplJiBz
aXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faW5pdGlhbExldHRlciwgc2l6
ZSk7IH0KICAgICAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgc2V0VG91Y2hB
Y3Rpb24oVG91Y2hBY3Rpb24gdCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Rv
dWNoQWN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odCkpOyB9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwVHlwZShTY3JvbGxT
bmFwVHlwZSB0eXBlKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fc2Nyb2xsU25h
cFR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7IH0KICAgICB2b2lkIHNldFNjcm9s
bFNuYXBQb2ludHNYKHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxTbmFwUG9pbnRzPik7CkBAIC0yMDMy
LDYgKzIwNDAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdpbGxDaGFuZ2VEYXRhKiBpbml0
aWFsV2lsbENoYW5nZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgc3RhdGljIFRvdWNoQWN0aW9uIGluaXRpYWxUb3VjaEFjdGlvbigpIHsgcmV0
dXJuIFRvdWNoQWN0aW9uOjpBdXRvOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCiAgICAgc3RhdGljIFNjcm9sbFNuYXBUeXBlIGluaXRpYWxTY3JvbGxTbmFwVHlwZSgp
IHsgcmV0dXJuIFNjcm9sbFNuYXBUeXBlOjpOb25lOyB9CiAgICAgc3RhdGljIFNjcm9sbFNuYXBQ
b2ludHMqIGluaXRpYWxTY3JvbGxTbmFwUG9pbnRzWCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0
YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmgKaW5kZXggYmJiNGNhYTExMDQ4YjJkY2I3NjFmYjE1M2MzNTRmMmJkZmZhYjkwZi4uYWZj
YjVmZGQzODhmN2QxOTg3ZDcwYmRjZWRkYWIwNjc0N2ViMjk3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTY0
MSw2ICs2NDEsMTMgQEAgZW51bSBJc29sYXRpb24geyBJc29sYXRpb25BdXRvLCBJc29sYXRpb25J
c29sYXRlIH07CiAvLyBGaWxsLCBTdHJva2UsIFZpZXdCb3ggYXJlIGp1c3QgdXNlZCBmb3IgU1ZH
LgogZW51bSBDU1NCb3hUeXBlIHsgQm94TWlzc2luZyA9IDAsIE1hcmdpbkJveCwgQm9yZGVyQm94
LCBQYWRkaW5nQm94LCBDb250ZW50Qm94LCBGaWxsLCBTdHJva2UsIFZpZXdCb3ggfTsKIAorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCitlbnVtIGNsYXNzIFRvdWNoQWN0aW9uIHsKKyAgICBBdXRv
LAorICAgIE1hbmlwdWxhdGlvbgorfTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKIGVudW0gY2xhc3MgU2Nyb2xsU25hcFR5cGUgewogICAgIE5vbmUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHAKaW5kZXggMDlmYzkxMjhmZDZhN2EwMTE5ZTcyYzY4YmRjOGQ4M2I5YTViZDIw
Mi4uNmViYmRiYWEwZWRhYTdlMTllMzFmMTRkODEyODIxZjNiMjkyNTJiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcApAQCAtNzksNiArNzksOSBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkKICAgICAsIG1fanVzdGlmeUNvbnRlbnQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCkpCiAgICAgLCBtX2p1c3RpZnlJdGVt
cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKICAgICAsIG1fanVzdGlmeVNl
bGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyAgICAsIG1fdG91Y2hBY3Rpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRl
clN0eWxlOjppbml0aWFsVG91Y2hBY3Rpb24oKSkpCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQogICAgICwgbV9zY3JvbGxTbmFwVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
UmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxTbmFwVHlwZSgpKSkKICNlbmRpZgpAQCAtMTY4LDYg
KzE3MSw5IEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAgLCBtX2p1c3RpZnlDb250ZW50
KG8ubV9qdXN0aWZ5Q29udGVudCkKICAgICAsIG1fanVzdGlmeUl0ZW1zKG8ubV9qdXN0aWZ5SXRl
bXMpCiAgICAgLCBtX2p1c3RpZnlTZWxmKG8ubV9qdXN0aWZ5U2VsZikKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgICwgbV90b3VjaEFjdGlvbihvLm1fdG91Y2hBY3Rpb24pCisjZW5kaWYK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICwgbV9zY3JvbGxTbmFwVHlwZShvLm1f
c2Nyb2xsU25hcFR5cGUpCiAjZW5kaWYKQEAgLTI4Miw2ICsyODgsOSBAQCBib29sIFN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YSYgbykgYwogICAgICAgICAmJiBtX2JvcmRlckZpdCA9PSBvLm1fYm9yZGVyRml0CiAgICAg
ICAgICYmIG1fdGV4dENvbWJpbmUgPT0gby5tX3RleHRDb21iaW5lCiAgICAgICAgICYmIG1fdGV4
dERlY29yYXRpb25TdHlsZSA9PSBvLm1fdGV4dERlY29yYXRpb25TdHlsZQorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgICAgICYmIG1fdG91Y2hBY3Rpb24gPT0gby5tX3RvdWNoQWN0aW9u
CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICAgICAmJiBtX3Njcm9s
bFNuYXBUeXBlID09IG8ubV9zY3JvbGxTbmFwVHlwZQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aAppbmRleCA3YWQ5NzYzYWFmMDRiZjY4NDlmOTYxODViMzk4NWI2ZTAwZjc3OTAzLi4xMjZhZWM2
YjgzODE0MDYzYjVjMTEzZjNhNGE4MzkzZWRhOWZmZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgK
QEAgLTE4NCw2ICsxODQsMTAgQEAgcHVibGljOgogICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEg
bV9qdXN0aWZ5SXRlbXM7CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2p1c3RpZnlTZWxm
OwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB1bnNpZ25lZCBtX3RvdWNoQWN0aW9u
IDogMTsgLy8gVG91Y2hBY3Rpb24KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKICAgICB1bnNpZ25lZCBtX3Njcm9sbFNuYXBUeXBlIDogMjsgLy8gU2Nyb2xsU25hcFR5cGUK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQppbmRleCAxZDkwNzhmZDNkOGZmNmI3ZGNmNTg1Mjg4NjM0ZGFkMzJhMDNkYjcwLi5mY2Fm
OTJmZWEwYmY3NWYyOGQ3ODJiZmYyYzQxNmIzODJiZjIxZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTk3LDcgKzk5Nyw3IEBA
IC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlCiAgICAgaWYgKCFsYXllclRyZWVUcmFuc2FjdGlvbi5z
Y2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkgJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21pbmddICYmICFb
X3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICYmICFbX3Njcm9sbFZpZXcgX2lzQW5pbWF0aW5n
Wm9vbV0pCiAgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6bGF5ZXJUcmVlVHJhbnNh
Y3Rpb24ucGFnZVNjYWxlRmFjdG9yKCldOwogCi0gICAgW19jb250ZW50VmlldyBfc2V0RG91Ymxl
VGFwR2VzdHVyZXNFbmFibGVkOltfc2Nyb2xsVmlldyBpc1pvb21FbmFibGVkXSAmJiBbX3Njcm9s
bFZpZXcgbWluaW11bVpvb21TY2FsZV0gPCBbX3Njcm9sbFZpZXcgbWF4aW11bVpvb21TY2FsZV1d
OworICAgIFtfY29udGVudFZpZXcgX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpzZWxmLl92
aWV3cG9ydElzVXNlclNjYWxhYmxlXTsKIAogICAgIFtzZWxmIF91cGRhdGVTY3JvbGxWaWV3QmFj
a2dyb3VuZF07CiAKQEAgLTMwNjYsNiArMzA2NiwxMSBAQCAtIChDR0Zsb2F0KV92aWV3cG9ydE1l
dGFUYWdXaWR0aAogICAgIHJldHVybiBfdmlld3BvcnRNZXRhVGFnV2lkdGg7CiB9CiAKKy0gKEJP
T0wpX3ZpZXdwb3J0SXNVc2VyU2NhbGFibGUKK3sKKyAgICByZXR1cm4gW19zY3JvbGxWaWV3IGlz
Wm9vbUVuYWJsZWRdICYmIFtfc2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXSA8IFtfc2Nyb2xs
VmlldyBtYXhpbXVtWm9vbVNjYWxlXTsKK30KKwogLSAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
ICopX3dlYlZpZXdQcmludEZvcm1hdHRlcgogewogICAgIFVJVmlld1ByaW50Rm9ybWF0dGVyICp2
aWV3UHJpbnRGb3JtYXR0ZXIgPSBzZWxmLnZpZXdQcmludEZvcm1hdHRlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5k
ZXggOTZmNWY5YmFiMDFkOTcyZGMwNjkzY2ZiZTIzZjNiYmZlNDhiMGQzZC4uNDM4ZDZjNTFkMjIw
YWY1ODViNzU0MjgzYjJhOTI5MjAyMTk5ODNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEzNSw2ICsxMzUs
NyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKSB7
CiAKIC8vIFRoZSB2aWV3cG9ydCBtZXRhIHRhZyB3aWR0aCBpcyBuZWdhdGl2ZSBpZiB0aGUgdmFs
dWUgaXMgbm90IGRlZmluZWQuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHRmxv
YXQgX3ZpZXdwb3J0TWV0YVRhZ1dpZHRoOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBCT09MIF92aWV3cG9ydElzVXNlclNjYWxhYmxlOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAqX3dlYlZpZXdQcmludEZvcm1hdHRl
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOTk1MWI3Y2YxZDhh
MDA4N2NlODBmZjQwZjAxZjM2MjI3ODQ2MGJjMi4uYWU2OWI4ZDBhOTFjMDlmOGFkNmM1N2QzMzFm
YWQ4MjBmN2JmNjk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0y
OTEsNiArMjkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJl
Y3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3Qs
IGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkKHVp
bnQ2NF90IHJlcXVlc3RJRCkgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1ab29tU2Nh
bGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgZG9jdW1lbnRS
ZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvdmVyZmxvd1Njcm9sbFZpZXdXaWxs
U3RhcnRQYW5HZXN0dXJlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDdlNDRmNTFhZDdiOGQ3MTdmZWIxODg4NDNlMjM0MzM1ZDYxYTMyMTkuLjI1Zjcx
YjY3NGU0NTEzM2I5YmUyYTM2ZGFiOWNiMGI5ODQ5OTFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUwOCw2ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZVRhcEFz
Q2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHZpZXdwb3J0TWV0YVRh
Z1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRoKTsKKyAgICB2b2lkIGRpc2FibGVEb3VibGVUYXBH
ZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZCh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQg
ZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAg
ICAgdm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVu
dFNpemVDYXRlZ29yeSk7CiAgICAgdm9pZCBnZXRMb29rdXBDb250ZXh0QXRQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzFjMDdjMzBlOGVjN2IzODdjY2Y5ZWE4NWZlNGUw
Y2RiYTY2OWMwOS4uYTViZTY1YWVkZWJkZmE1ZTNiODFhYjI5OGNkMGFiNTU3MDhkZTIxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0xODgsNiArMTg4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBDb21t
aXRQb3RlbnRpYWxUYXBGYWlsZWQoKQogICAgIERpZE5vdEhhbmRsZVRhcEFzQ2xpY2soV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgVmlld3BvcnRNZXRhVGFnV2lkdGhEaWRDaGFuZ2UoZmxv
YXQgd2lkdGgpCisgICAgRGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVk
KHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBEaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihJUEM6
OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAx
MjNkMzY3ZWEyMDhjZjBhMDVlN2RmOWYyYzg3MTAxMDg3ZjgzNWFlLi5lZTMzZWJjNTMwYmE0ZWVm
NmNiOTk5YjY4NDE2YzRkZGE0MTE3YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2Vi
RnJhbWVQcm94eSosIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdw
b3J0TWV0YVRhZ1dpZHRoKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkKHVpbnQ2NF90IHJlcXVlc3RJRCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVpvb21TY2FsZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGRvY3VtZW50UmVjdCgpIGNv
bnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQppbmRleCBkNzZmOTQxNjZlNGZmMGFhOGQ5MThkNGE0MzFjN2Y5YTQ1
YjZkM2RkLi5iODQyYmE3MjkyM2NmNWYwZTQxNGE3MzhmYWYwNGZkNjEyN2Q1NzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAg
LTI1OSw2ICsyNTksMTQgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRN
ZXRhVGFnV2lkdGgoZmxvYXQgbmV3V2lkdGgpCiAgICAgW21fd2ViVmlldyBfc2V0Vmlld3BvcnRN
ZXRhVGFnV2lkdGg6bmV3V2lkdGhdOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNhYmxl
RG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWQodWludDY0X3QgcmVxdWVzdElEKQor
eworICAgIGlmICghbV93ZWJWaWV3Ll92aWV3cG9ydElzVXNlclNjYWxhYmxlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBbbV9jb250ZW50VmlldyBfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50
aWxUYXBJc0ZpbmlzaGVkRm9yUmVxdWVzdDpyZXF1ZXN0SURdOworfQorCiBkb3VibGUgUGFnZUNs
aWVudEltcGw6Om1pbmltdW1ab29tU2NhbGUoKSBjb25zdAogewogICAgIGlmIChVSVNjcm9sbFZp
ZXcgKnNjcm9sbGVyID0gW21fd2ViVmlldyBzY3JvbGxWaWV3XSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IDQ5YjQxOWNkZmY5NDYwM2EwZjhiNjZhYzhmZjMzOGE4ZjczMWRlNWYuLjJjYmFkNGQwMWFjMzRk
ZWRkZDlkNzgwMjY5ZWU3ZWMwMmYzOGU2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTI2LDcgKzEy
Niw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKICAgICBpZCA8VUlUZXh0SW5w
dXREZWxlZ2F0ZT4gX2lucHV0RGVsZWdhdGU7CiAKLSAgICB1aW50NjRfdCBfbGF0ZXN0VGFwSGln
aGxpZ2h0SUQ7CisgICAgdWludDY0X3QgX2xhdGVzdFRhcElEOwogICAgIHN0cnVjdCBUYXBIaWdo
bGlnaHRJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yOwogICAgICAg
ICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiBxdWFkczsKQEAgLTE4MSw2ICsxODEsNyBAQCBz
dHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogI2VuZGlmCiAtICh2b2lkKV9jb21taXRQb3Rl
bnRpYWxUYXBGYWlsZWQ7CiAtICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0Oih1
aW50NjRfdClyZXF1ZXN0SUQgY29sb3I6KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiljb2xvciBxdWFk
czooY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mKWhpZ2hsaWdodGVkUXVhZHMgdG9w
TGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wTGVmdFJhZGl1cyB0b3BSaWdo
dFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wUmlnaHRSYWRpdXMgYm90dG9tTGVm
dFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tTGVmdFJhZGl1cyBib3R0b21S
aWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tUmlnaHRSYWRpdXM7Cist
ICh2b2lkKV9kaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWRGb3JSZXF1
ZXN0Oih1aW50NjRfdClyZXF1ZXN0SUQ7CiAKIC0gKHZvaWQpX3N0YXJ0QXNzaXN0aW5nTm9kZToo
Y29uc3QgV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdXNlcklz
SW50ZXJhY3Rpbmc6KEJPT0wpdXNlcklzSW50ZXJhY3RpbmcgYmx1clByZXZpb3VzTm9kZTooQk9P
TClibHVyUHJldmlvdXNOb2RlIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4g
Kil1c2VyT2JqZWN0OwogLSAodm9pZClfc3RvcEFzc2lzdGluZ05vZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IDg3OWE3ZTYzMTMzYzJjYWJiODFlZGQ1N2NhMzFiZDdkN2M2NDcwZDQuLjFlOWEwMjc3
NGRlYzJmZmY5MmYzMzMwOGVhNjdmZjQ1ZGQ4ZTg1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04
MzEsNyArODMxLDcgQEAgLSAodm9pZClfc2hvd1RhcEhpZ2hsaWdodAogCiAtICh2b2lkKV9kaWRH
ZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0Oih1aW50NjRfdClyZXF1ZXN0SUQgY29sb3I6KGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiljb2xvciBxdWFkczooY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0
UXVhZD4mKWhpZ2hsaWdodGVkUXVhZHMgdG9wTGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpdG9wTGVmdFJhZGl1cyB0b3BSaWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpdG9wUmlnaHRSYWRpdXMgYm90dG9tTGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpYm90dG9tTGVmdFJhZGl1cyBib3R0b21SaWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpYm90dG9tUmlnaHRSYWRpdXMKIHsKLSAgICBpZiAoIV9pc1RhcEhpZ2hsaWdodElEVmFs
aWQgfHwgX2xhdGVzdFRhcEhpZ2hsaWdodElEICE9IHJlcXVlc3RJRCkKKyAgICBpZiAoIV9pc1Rh
cEhpZ2hsaWdodElEVmFsaWQgfHwgX2xhdGVzdFRhcElEICE9IHJlcXVlc3RJRCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IE5POwpAQCAtODUxLDYgKzg1
MSwxNCBAQCAtICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0Oih1aW50NjRfdCly
ZXF1ZXN0SUQgY29sb3I6KGNvbnN0IFdlYkNvcmU6OgogICAgIFtzZWxmIF9zaG93VGFwSGlnaGxp
Z2h0XTsKIH0KIAorLSAodm9pZClfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0Zp
bmlzaGVkRm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElECit7CisgICAgaWYgKCFfcG90ZW50
aWFsVGFwSW5Qcm9ncmVzcyB8fCBfbGF0ZXN0VGFwSUQgIT0gcmVxdWVzdElEKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBbc2VsZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOk5PXTsKK30K
KwogLSAodm9pZClfY2FuY2VsTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBbX2hp
Z2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGNhbmNlbF07CkBAIC0xMTU1LDcgKzEx
NjMsNyBAQCAtICh2b2lkKV9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOihVSUxvbmdQcmVz
c0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlYwogICAgIGNhc2UgVUlHZXN0dXJlUmVjb2du
aXplclN0YXRlQmVnYW46CiAgICAgICAgIF9oaWdobGlnaHRMb25nUHJlc3NDYW5DbGljayA9IFlF
UzsKICAgICAgICAgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3Nhcnkoc2VsZik7Ci0gICAgICAg
IF9wYWdlLT50YXBIaWdobGlnaHRBdFBvc2l0aW9uKFtnZXN0dXJlUmVjb2duaXplciBzdGFydFBv
aW50XSwgKytfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQpOworICAgICAgICBfcGFnZS0+dGFwSGlnaGxp
Z2h0QXRQb3NpdGlvbihbZ2VzdHVyZVJlY29nbml6ZXIgc3RhcnRQb2ludF0sICsrX2xhdGVzdFRh
cElEKTsKICAgICAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZDoKQEAgLTExOTAsMTIg
KzExOTgsMjAgQEAgLSAodm9pZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NHZXN0
dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgfQogfQogCistICh2b2lkKV9l
bmRQb3RlbnRpYWxUYXBBbmRFbmFibGVEb3VibGVUYXBHZXN0dXJlc0lmTmVjZXNzYXJ5Cit7Cisg
ICAgaWYgKF93ZWJWaWV3Ll92aWV3cG9ydElzVXNlclNjYWxhYmxlKQorICAgICAgICBbc2VsZiBf
c2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOllFU107CisKKyAgICBfcG90ZW50aWFsVGFwSW5Q
cm9ncmVzcyA9IE5POworfQorCiAtICh2b2lkKV9zaW5nbGVUYXBSZWNvZ25pemVkOihVSVRhcEdl
c3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBBU1NFUlQoZ2VzdHVy
ZVJlY29nbml6ZXIgPT0gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKICAgICBBU1NFUlQo
IV9wb3RlbnRpYWxUYXBJblByb2dyZXNzKTsKIAotICAgIF9wYWdlLT5wb3RlbnRpYWxUYXBBdFBv
c2l0aW9uKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uLCArK19sYXRlc3RUYXBIaWdobGlnaHRJ
RCk7CisgICAgX3BhZ2UtPnBvdGVudGlhbFRhcEF0UG9zaXRpb24oZ2VzdHVyZVJlY29nbml6ZXIu
bG9jYXRpb24sICsrX2xhdGVzdFRhcElEKTsKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9
IFlFUzsKICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gWUVTOwogfQpAQCAtMTIwMyw3ICsx
MjE5LDcgQEAgLSAodm9pZClfc2luZ2xlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2du
aXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJ
Zk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKIHsKICAgICBpZiAoY29udGVu
dFZpZXctPl9wb3RlbnRpYWxUYXBJblByb2dyZXNzKSB7Ci0gICAgICAgIGNvbnRlbnRWaWV3LT5f
cG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POworICAgICAgICBbY29udGVudFZpZXcgX2VuZFBv
dGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdlc3R1cmVzSWZOZWNlc3NhcnldOwogICAgICAg
ICBbY29udGVudFZpZXcgX2NhbmNlbEludGVyYWN0aW9uXTsKICAgICAgICAgY29udGVudFZpZXct
Pl9wYWdlLT5jYW5jZWxQb3RlbnRpYWxUYXAoKTsKICAgICB9CkBAIC0xMjQyLDcgKzEyNTgsNyBA
QCAtICh2b2lkKV9zaW5nbGVUYXBDb21taXRlZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdl
c3R1cmVSZWNvZ25pemVyCiAKICAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJl
UmVjb2duaXplci5sb2NhdGlvbjsKIAotICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87
CisgICAgW3NlbGYgX2VuZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdlc3R1cmVzSWZO
ZWNlc3NhcnldOwogCiAgICAgaWYgKF9oYXNUYXBIaWdobGlnaHRGb3JQb3RlbnRpYWxUYXApIHsK
ICAgICAgICAgW3NlbGYgX3Nob3dUYXBIaWdobGlnaHRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwYTMyOWQwOTI4ODBhYjdiYzhm
MjkzODNlODA0YjFmOTI5MGFlNjQ5Li5iNTg4YWI0YzliOGEyMjVkZDUwNjZlNjBjNzQwNjJiNGM0
ZjY1Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQpAQCAtOTM3LDYgKzkzNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld3BvcnRN
ZXRhVGFnV2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpCiAgICAgbV9wYWdlQ2xpZW50LmRpZENo
YW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKHdpZHRoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZCh1aW50NjRfdCByZXF1
ZXN0SUQpCit7CisgICAgbV9wYWdlQ2xpZW50LmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGls
VGFwSXNGaW5pc2hlZChyZXF1ZXN0SUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhKQog
ewogICAgIG1fcGFnZUNsaWVudC5kaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihwZGZEYXRhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCAyZGNhZmUxZDNjMDM0NWNlNGY2Yzk5NmYyMGY3ZDQwN2JlNzhlMDUxLi4xNzk1
N2Q1NTc2OTZmYjY1MzI4NzQ5ODRkZjQ4NDNhMDAzZGY3MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC02NjIsNiAr
NjYyLDggQEAgdm9pZCBXZWJQYWdlOjpwb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2kKIHsKICAgICBtX3BvdGVudGlhbFRhcE5v
ZGUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyhwb3Np
dGlvbiwgbV9wb3RlbnRpYWxUYXBMb2NhdGlvbik7CiAgICAgc2VuZFRhcEhpZ2hsaWdodEZvck5v
ZGVJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIG1fcG90ZW50aWFsVGFwTm9kZS5nZXQoKSk7CisgICAg
aWYgKG1fcG90ZW50aWFsVGFwTm9kZSAmJiAhbV9wb3RlbnRpYWxUYXBOb2RlLT5hbGxvd3NEb3Vi
bGVUYXBHZXN0dXJlKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlz
YWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkKHJlcXVlc3RJRCkpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmNvbW1pdFBvdGVudGlhbFRhcCh1aW50NjRfdCBsYXN0TGF5ZXJUcmVl
VHJhbnNhY3Rpb25JZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMTM2OTcxZjgzMjAxMTllMjNkMWQzOWZkNzE3NzM4NGM3
Njk0YTVlLi4xYzkxOTk0ZjhiOTQzNTAzYmE2MTliMDNkMzg4OWYxZGFhZmZhYmY1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTUtMTAtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9u
OyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDk4NTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIzMDE3MTQ1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0byBjaGVjayB0
aGF0IHRoZSBtYW5pcHVsYXRpb24gYW5kIGF1dG8gdmFsdWVzIG9mIHRoZSB0b3VjaC1hY3Rpb24g
cHJvcGVydHkgY2FuIGJlCisgICAgICAgIHByb3Blcmx5IHBhcnNlZCBhbmQgY2FuIGJlIG9idGFp
bmVkIHRocm91Z2ggY29tcHV0ZWQgc3R5bGUuIEFsc28gdGVzdHMgdGhhdCBwdXR0aW5nIHRvdWNo
LWFjdGlvbjoKKyAgICAgICAgbWFuaXB1bGF0aW9uIG9uIGFuIGVsZW1lbnQgYW5kIHRhcHBpbmcg
cmVwZWF0ZWRseSBvbiBpdCB3aWxsIGZpcmUgY2xpY2tzIGluc3RlYWQgb2YgcmVjb2duaXppbmcK
KyAgICAgICAgZG91YmxlIHRhcHMgYW5kIGNhdXNpbmcgdGhlIHZpZXdwb3J0IHRvIHpvb20uCisK
KyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGNzczMvdG91Y2gtYWN0aW9u
L3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGNzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0
aW9uLWZhc3QtY2xpY2tzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy90b3Vj
aC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNrcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBjc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlv
bi1wYXJzaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3It
d2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTUtMTAtMTYgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
OTEyMDQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkZWZhOWI2MjVkNTYxZWE4NTY3NDQzNmZjMGNi
MzZhYWFjOGZmOTdiLi4zN2MwZDcwYzZjOTE1ZTY0ZGE1MmVhZTE2NDQwZTVlZjAwM2EzMmZhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYsNiArNiw3IEBACiAjIFBsYXRmb3JtLXNwZWNpZmljIHRl
c3RzLiBTa2lwcGVkIGhlcmUsIHRoZW4gcmUtZW5hYmxlZCBvbiB0aGUgYXBwcm9wcmlhdGUgcGxh
dGZvcm0uCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKK2NzczMvdG91Y2gt
YWN0aW9uIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IgWyBTa2lwIF0KIGFj
Y2Vzc2liaWxpdHkvZ3RrIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L21hYyBbIFNraXAgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1
dGVkLXN0eWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3Rv
dWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE3ZmRj
ZTI2MmIyZTIyNjYzMTA3YTE5ODBhZmViNGQ4YmY2MjlkYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdGluZyB0aGUgY29tcHV0ZWQgc3R5bGUg
b2YgdG91Y2gtYWN0aW9uOgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGlu
ZyB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykgaXMgJ21h
bmlwdWxhdGlvbicKK1Rlc3RpbmcgdG91Y2gtYWN0aW9uOiBhdXRvOworUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rp
b24nKSBpcyAnYXV0bycKK1Rlc3RpbmcgYSBib2d1cyB2YWx1ZQorUEFTUyB3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24n
KSBpcyAnYXV0bycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1h
Y3Rpb24tY29tcHV0ZWQtc3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9u
L3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZDViNWU0ZmRj
MzcxNjdkOWNkNGExYjE0OTA1ZDI3ZjFlYzgzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29tcHV0ZWQtc3R5bGUuaHRtbApA
QCAtMCwwICsxLDM1IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
CisgICAgPGJvZHk+CisgICAgICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGRl
c2NyaXB0aW9uKCJUZXN0aW5nIHRoZSBjb21wdXRlZCBzdHlsZSBvZiB0b3VjaC1hY3Rpb246Iik7
CisKKyAgICAgICAgICAgIHZhciBzdHlsZXNoZWV0OworICAgICAgICAgICAgdmFyIHN0eWxlRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgICAgICAgICBkb2N1
bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7CisgICAgICAgICAgICBzdHlsZXNo
ZWV0ID0gc3R5bGVFbGVtZW50LnNoZWV0OworCisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsiKTsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuaW5z
ZXJ0UnVsZSgiYm9keSB7IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyB9IiwgMCk7CisgICAg
ICAgICAgICBzaG91bGRCZSgid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSku
Z2V0UHJvcGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykiLCAiJ21hbmlwdWxhdGlvbiciKTsKKyAg
ICAgICAgICAgIHN0eWxlc2hlZXQuZGVsZXRlUnVsZSgwKTsKKworICAgICAgICAgICAgZGVidWco
IlRlc3RpbmcgdG91Y2gtYWN0aW9uOiBhdXRvOyIpOworICAgICAgICAgICAgc3R5bGVzaGVldC5p
bnNlcnRSdWxlKCJib2R5IHsgdG91Y2gtYWN0aW9uOiBhdXRvOyB9IiwgMCk7CisgICAgICAgICAg
ICBzaG91bGRCZSgid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJv
cGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykiLCAiJ2F1dG8nIik7CisgICAgICAgICAgICBzdHls
ZXNoZWV0LmRlbGV0ZVJ1bGUoMCk7CisKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIGEgYm9n
dXMgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuaW5zZXJ0UnVsZSgiYm9keSB7IHRv
dWNoLWFjdGlvbjogdHlwbzsgfSIsIDApOworICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFj
dGlvbicpIiwgIidhdXRvJyIpOworCisgICAgICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1tYW5p
cHVsYXRpb24tZmFzdC1jbGlja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy90b3Vj
aC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNrcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTVlMjYzYjIwZmY1MjZmOGIxNzc1MWViOGZkYTVhODk3MjU0OWU5Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFj
dGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBA
QAorCitSZXBlYXRlZGx5IHRhcHBpbmcgb24gdGhlIGJ1dHRvbiBzaG91bGQgZmlyZSBjbGljayBl
dmVudHMuCisKK1RoaXMgdGVzdCBpcyBiZXN0IHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyLiBJZiB5
b3UgYXJlIHJ1bm5pbmcgdGhpcyB0ZXN0IG1hbnVhbGx5LCB2ZXJpZnkgdGhhdCB0YXBwaW5nIHRo
ZSBidXR0b24gY2F1c2VzIGEgIkNsaWNrISIgbWVzc2FnZSB0byBhcHBlYXIgYmVsb3csIGFuZCB0
aGF0IGNsaWNrIG9jY3VycmVkIHdpdGhvdXQgdGhlIHJlZ3VsYXIgMzUwbXMgZGVsYXkgZm9yIGRv
dWJsZSB0YXBwaW5nLgorCitDbGljayEKK0NsaWNrIQorQ2xpY2shCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFz
dC1jbGlja3MuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlv
bi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzliZGRkNGNiZmVh
NWFlMTNlZGM3Nzk4YTgzNTQxNTQzY2E3MjMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNr
cy5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorCis8aHRtbD4KKzxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+CisKKzxoZWFkPgor
ICAgIDxzY3JpcHQgaWQ9InVpLXNjcmlwdCIgdHlwZT0idGV4dC9wbGFpbiI+CisgICAgICAgIChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBlcmZvcm1UYXAoKSB7CisgICAgICAg
ICAgICAgICAgdWlDb250cm9sbGVyLnNpbmdsZVRhcEF0UG9pbnQoMjAwLCAyMDAsIHBlcmZvcm1U
YXApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGVyZm9ybVRhcCgpOworICAgICAgICB9
KSgpOworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdD4KKyAgICB2YXIgY2xpY2tDb3VudCA9
IDA7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBnZXRVSVNjcmlwdCgpIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ1aS1zY3JpcHQiKS50ZXh0OworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQp
IHsgfSk7CisgICAgfQorICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrZWQoKSB7CisgICAgICAgIGNs
aWNrQ291bnQrKzsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiQ2xpY2shIikpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworICAgICAgICBpZiAoY2xpY2tDb3Vu
dCA9PSAzKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorICAg
IDwvc2NyaXB0PgorCisgICAgPHN0eWxlPgorICAgIGJvZHkgeworICAgICAgICBtYXJnaW46IDA7
CisgICAgfQorCisgICAgI3RhcmdldCB7CisgICAgICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0
aW9uOworICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdodDogNDAwcHg7CisgICAg
fQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAg
ICA8YnV0dG9uIGlkPSJ0YXJnZXQiIG9uY2xpY2s9ImhhbmRsZUNsaWNrZWQoKSI+PC9idXR0b24+
CisgICAgPHA+UmVwZWF0ZWRseSB0YXBwaW5nIG9uIHRoZSBidXR0b24gc2hvdWxkIGZpcmUgY2xp
Y2sgZXZlbnRzLjwvcD4KKyAgICA8cD5UaGlzIHRlc3QgaXMgYmVzdCBydW4gaW4gV2ViS2l0VGVz
dFJ1bm5lci4gSWYgeW91IGFyZSBydW5uaW5nIHRoaXMgdGVzdCBtYW51YWxseSwgdmVyaWZ5IHRo
YXQgdGFwcGluZyB0aGUgYnV0dG9uIGNhdXNlcyBhICJDbGljayEiIG1lc3NhZ2UgdG8gYXBwZWFy
IGJlbG93LCBhbmQgdGhhdCBjbGljayBvY2N1cnJlZCB3aXRob3V0IHRoZSByZWd1bGFyIDM1MG1z
IGRlbGF5IGZvciBkb3VibGUgdGFwcGluZy48L3A+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1wYXJzaW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlv
bi1wYXJzaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTljOWY4MWE0MzIyM2NlMzRhYWRh
N2I5ZDg3NTdhZGQ5NzVmNzhhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy90
b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTUgQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgdG91Y2gtYWN0aW9uLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBjc3NSdWxlLnR5cGUgaXMgMQorUEFTUyBkZWNsYXJhdGlv
bi5sZW5ndGggaXMgMQorUEFTUyBkZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1h
Y3Rpb24nKSBpcyAnbWFuaXB1bGF0aW9uJworUEFTUyBjc3NSdWxlLnR5cGUgaXMgMQorUEFTUyBk
ZWNsYXJhdGlvbi5sZW5ndGggaXMgMQorUEFTUyBkZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVZhbHVl
KCd0b3VjaC1hY3Rpb24nKSBpcyAnYXV0bycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3RvdWNo
LWFjdGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy90b3Vj
aC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2QzYTZkYWZk
NzkyOGFkMDlmMjFhOGNkODFhMzUxOWNmNTJlOWExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbApAQCAtMCww
ICsxLDM3IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5PgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0IHRoZSBwYXJzaW5nIG9mIHRvdWNoLWFjdGlvbi4iKTsKKworICAgICAgICAgICAg
dmFyIHN0eWxlc2hlZXQsIGNzc1J1bGUsIGRlY2xhcmF0aW9uOworICAgICAgICAgICAgdmFyIHN0
eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgICAgICAg
ICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7CisgICAgICAgICAgICBz
dHlsZXNoZWV0ID0gc3R5bGVFbGVtZW50LnNoZWV0OworCisgICAgICAgICAgICBzdHlsZXNoZWV0
Lmluc2VydFJ1bGUoImJvZHkgeyB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgfSIsIDApOwor
ICAgICAgICAgICAgY3NzUnVsZSA9IHN0eWxlc2hlZXQuY3NzUnVsZXMuaXRlbSgwKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjc3NSdWxlLnR5cGUiLCAiMSIpOworICAgICAgICAgICAgZGVjbGFy
YXRpb24gPSBjc3NSdWxlLnN0eWxlOworICAgICAgICAgICAgc2hvdWxkQmUoImRlY2xhcmF0aW9u
Lmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICBzaG91bGRCZSgiZGVjbGFyYXRpb24uZ2V0UHJv
cGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykiLCAiJ21hbmlwdWxhdGlvbiciKTsKKworICAgICAg
ICAgICAgc3R5bGVzaGVldC5pbnNlcnRSdWxlKCJib2R5IHsgdG91Y2gtYWN0aW9uOiBhdXRvOyB9
IiwgMCk7CisgICAgICAgICAgICBjc3NSdWxlID0gc3R5bGVzaGVldC5jc3NSdWxlcy5pdGVtKDAp
OworICAgICAgICAgICAgc2hvdWxkQmUoImNzc1J1bGUudHlwZSIsICIxIik7CisgICAgICAgICAg
ICBkZWNsYXJhdGlvbiA9IGNzc1J1bGUuc3R5bGU7CisgICAgICAgICAgICBzaG91bGRCZSgiZGVj
bGFyYXRpb24ubGVuZ3RoIiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJkZWNsYXJhdGlv
bi5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24nKSIsICInYXV0byciKTsKKworICAgICAg
ICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+CisKKwor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzExMDI4NGQ3
MzJkYjkyOGYzOTdlNmRiMTk1YzdhZDkwZjZhMGVmMy4uZTBlY2NhOWQxNzZjNzI5NzY4MmFlZmE0
Y2Q5NDNlMjA5NDUzMjNkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNp
bXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC02LDYgKzYsNyBAQAogIyBQbGF0
Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4gU2tpcHBlZCBnbG9iYWxseSwgdGhlbiByZS1lbmFi
bGVkIGhlcmUuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKK2NzczMvdG91
Y2gtYWN0aW9uIFsgUGFzcyBdCiBmYXN0L2hhcm5lc3MvdWktc2lkZS1zY3JpcHRzLmh0bWwgWyBQ
YXNzIF0KIGZhc3QvaGFybmVzcy9jb25jdXJyZW50LXVpLXNpZGUtc2NyaXB0cy5odG1sIFsgUGFz
cyBdCiBmYXN0L3pvb21pbmcvaW9zIFsgUGFzcyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263486</attachid>
            <date>2015-10-19 09:35:25 -0700</date>
            <delta_ts>2015-10-19 13:09:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149854-20151019093443.patch</filename>
            <type>text/plain</type>
            <size>39753</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllMGQ3OTM3N2U5Yzhi
MjdhYzljYjJjNmU1ODU5ODk4ZDliZTJjZi4uM2E3MGM1M2JkMDQwNjE3ODVjZjNkYjMyNjUxOGY0
OThhZTg1ZmJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTEwLTE1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMzAxNzE0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnRzIHRoZSBtYW5pcHVsYXRpb24gdmFsdWUgZm9yIHRoZSBDU1MgcHJvcGVy
dHkgdG91Y2gtYWN0aW9uLiBBZGRzIHN1cHBvcnQgZm9yCisgICAgICAgIHBhcnNpbmcgdGhlIHRv
dWNoLWFjdGlvbiBwcm9wZXJ0eSBhbmQgdHdvIG9mIGl0cyB2YWx1ZXM6IGF1dG8gYW5kIG1hbmlw
dWxhdGlvbi4KKworICAgICAgICBUZXN0czogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9u
LWNvbXB1dGVkLXN0eWxlLmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvdG91Y2gtYWN0aW9uL3Rv
dWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MuaHRtbAorICAgICAgICAgICAgICAg
Y3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbAorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgVG91Y2hBY3Rpb24pOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFsbG93c0RvdWJsZVRhcEdl
c3R1cmUpOiBIZXJlLCB3ZSBkZXRlcm1pbmUgd2hldGhlciBhbiBlbGVtZW50IHRoYXQgcmVzdWx0
ZWQgZnJvbQorICAgICAgICAgICAgaGl0LXRlc3RpbmcgYSB0b3VjaCBzaG91bGQgYWxsb3cgZG91
YmxlLXRhcCBnZXN0dXJlcy4gVG8gZG8gdGhpcywgd2Ugd2FsayB1cCB0aGUgZWxlbWVudCdzIHBh
cmVudHMsCisgICAgICAgICAgICBzdG9wcGluZyB3aGVuIHdlIGRldGVjdCBhbiBlbGVtZW50IHRo
YXQgZGlzYWxsb3dzIGRvdWJsZSB0YXAgZ2VzdHVyZXMgYnkgaGF2aW5nIGEgdG91Y2gtYWN0aW9u
IG90aGVyCisgICAgICAgICAgICB0aGFuIGF1dG8gb3IgYnkgaGl0dGluZyB0aGUgcm9vdCBub2Rl
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmFsbG93c0RvdWJsZVRhcEdlc3R1cmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxNS0xMC0xOCAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE5MTI1MCBhbmQgcjE5MTI1My4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwOWE2
YjllMzJkZDZjOTE0NjZmNGM1Mzk3NzAwMjc1ZjZjMjI2NjlkLi4yYjJmYmViOTA0YmE3ODczZjIy
OTgxZWNhY2MzM2Y3NjJkZTcyYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTUt
MTAtMTUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyBmb3IgaU9TCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk4NTQKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIzMDE3MTQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudHMgdGhlIG1hbmlwdWxhdGlvbiB2YWx1ZSBmb3IgdGhl
IENTUyBwcm9wZXJ0eSB0b3VjaC1hY3Rpb24uIFBlcmZvcm1zIGhpdC10ZXN0aW5nIHVwb24gcmVj
ZWl2aW5nIGEgcG90ZW50aWFsCisgICAgICAgIHRhcCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBk
aXNhYmxlIGRvdWJsZS10YXAgZ2VzdHVyZSByZWNvZ25pdGlvbiBvdmVyIHRoZSBkdXJhdGlvbiBv
ZiB0aGUgdGFwLiBJZiBzbywgc2VuZHMgYSBtZXNzYWdlCisgICAgICAgIGZyb20gdGhlIHdlYiBw
cm9jZXNzIHRvIHRoZSBVSSBwcm9jZXNzIGluZGljYXRpbmcgdGhhdCBkb3VibGUtdGFwcGluZyBz
aG91bGQgYmUgZGlzYWJsZWQsIGFsbG93aW5nIHNpbmdsZSB0YXBzIHRvCisgICAgICAgIGF2b2lk
IHRoZSBkZWxheS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF92aWV3cG9ydElzVXNlclNjYWxhYmxlXSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc2Fi
bGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDpjb2xvcjpxdWFkczp0b3BMZWZ0UmFkaXVz
OnRvcFJpZ2h0UmFkaXVzOmJvdHRvbUxlZnRSYWRpdXM6Ym90dG9tUmlnaHRSYWRpdXM6XSk6Cisg
ICAgICAgICAgICAgICAgUmVuYW1lZCBfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQgdG8gX2xhdGVzdFRh
cElEIHRvIHJlZmxlY3QgdGhhdCBpdCBpcyB1c2VkIGZvciBib3RoIHRhcCBoaWdobGlnaHRzIGFu
ZCB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbi4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkRm9yUmVxdWVzdDpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDpd
KTogUmVuYW1lZCBfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQgdG8gX2xhdGVzdFRhcElELgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9lbmRQb3RlbnRpYWxUYXBBbmRFbmFibGVEb3VibGVUYXBHZXN0
dXJlc0lmTmVjZXNzYXJ5XSk6IFB1bGxzIG91dCBsb2dpYyB0byByZXNldCBhIGZsYWcgaW5kaWNh
dGluZyB0aGF0IHdlIGFyZSBubworICAgICAgICAgICAgICAgIGxvbmdlciB0cmFja2luZyBhIHBv
dGVudGlhbCB0YXAuIEFsc28gcmUtZW5hYmxlcyB0aGUgZG91YmxlIHRhcCBnZXN0dXJlIHJlY29n
bml6ZXIgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBS
ZWNvZ25pemVkOl0pOiBSZW5hbWVkIF9sYXRlc3RUYXBIaWdobGlnaHRJRCB0byBfbGF0ZXN0VGFw
SUQuCisgICAgICAgIChjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3NpbmdsZVRhcENvbW1pdGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwb3RlbnRpYWxUYXBBdFBvc2l0aW9uKToKKwogMjAxNS0xMC0xOCAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE5MTI1MCBhbmQgcjE5MTI1My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMTBlNmU3YTQ1ZDk1ODRmODUw
YmNjNWMwNzgwMmYwODcwMWI4MjgwNS4uNTljMTZmOTYwNGZmOGUwZWQ0MmViMTFlM2UwZWI3OTlk
YzQ1OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTM0MjgsNiArMzQyOCwxMSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELAogICAgICAgICAgICAgcmV0dXJuIHNjcm9sbFNuYXBDb29yZGluYXRlcygqc3R5bGUsIHN0
eWxlLT5zY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjoKKyAgICAgICAg
ICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRvdWNoQWN0aW9uKCkp
OworI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlBcHBsZVRyYWlsaW5nV29yZDoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRyYWlsaW5nV29yZCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKaW5kZXggZDBmYTk2MTkwZWU0NDY2ZDc3ZDZhNzk1ZmI1MTE2YzliM2IyM2IyNS4u
N2MxMTA5MjNkMjRkMTE5ZDBkNDRjNzBkMzY4ODRmNTg0MWJiOWI5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKQEAgLTc1NCw2ICs3NTQsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFs
aWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGludAog
ICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQnJlYWtXb3JkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOwor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9u
OiAvLyBhdXRvIHwgbWFuaXB1bGF0aW9uCisgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVl
QXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWFuaXB1bGF0aW9uKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2Nyb2xsU25hcFR5cGU6IC8vIG5vbmUg
fCBtYW5kYXRvcnkgfCBwcm94aW1pdHkKICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYW5kYXRvcnkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVByb3hpbWl0eSkKQEAgLTExNzYsNiArMTE4Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0tl
eXdvcmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKICAgICBjYXNlIENTU1By
b3BlcnR5V2hpdGVTcGFjZToKICAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNh
c2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjoKKyNlbmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNjcm9sbFNuYXBUeXBlOgogI2VuZGlm
CkBAIC0zMjY3LDYgKzMyNzYsOSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRl
U3BhY2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKICAgICBjYXNlIENTU1Byb3Bl
cnR5V29yZFdyYXA6CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIENTU1Byb3Bl
cnR5VG91Y2hBY3Rpb246CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3JvbGxTbmFwVHlwZToKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggMTRmYjkwZDE3
OGFhNDg5MzBhMDUxZTU2Y2M0OTJlMGEzMGJjMzBmYi4uZTEyZWUxNzFhNDY0OTlkZTU0ZmJkYWFj
ZmNhZjIyZjJkMmJiMGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oCkBAIC01MjUyLDYgKzUyNTIsMzcgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRab29tIHRleHRab29tKQog
ICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTm9ybWFsOwogfQogCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShUb3VjaEFjdGlvbiB0KQorICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3Mp
Cit7CisgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKKyAgICBzd2l0Y2gg
KHQpIHsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpBdXRvOgorICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUF1dG87CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hBY3Rpb246
Ok1hbmlwdWxhdGlvbjoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYW5pcHVs
YXRpb247CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRvdWNoQWN0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQoaXNWYWx1ZUlEKCkpOworICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CisgICAgY2Fz
ZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIHJldHVybiBUb3VjaEFjdGlvbjo6QXV0bzsKKyAgICBj
YXNlIENTU1ZhbHVlTWFuaXB1bGF0aW9uOgorICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246Ok1h
bmlwdWxhdGlvbjsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOworfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFNjcm9sbFNuYXBUeXBlIGUpCiAgICAg
OiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFt
ZXMuaW4KaW5kZXggNDA5MjU0OWVkNTQ2MWYzOTU3N2UyNjQ1N2EwOTQ4YTI3YTUxZTc4OC4uZjJj
MjA1YWQxMmY0ZGRiOTQzOTQ3NzFkYWE4NjcxZmVmZGY3Njc3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTY2Niw2ICs2NjYsOSBAQCB1c2VyLXpvb20gW1NraXBC
dWlsZGVyXQogI2lmIGRlZmluZWQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElO
RykgJiYgRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORwogLXdlYmtpdC1vdmVy
Zmxvdy1zY3JvbGxpbmcgW0luaGVyaXRlZCwgTmFtZUZvck1ldGhvZHM9VXNlVG91Y2hPdmVyZmxv
d1Njcm9sbGluZywgQ29udmVydGVyPU92ZXJmbG93U2Nyb2xsaW5nXQogI2VuZGlmCisjaWYgZGVm
aW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCit0b3VjaC1h
Y3Rpb24KKyNlbmRpZgogI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRG
T1JNX0lPUwogLXdlYmtpdC10b3VjaC1jYWxsb3V0IFtJbmhlcml0ZWQsIE5hbWVGb3JNZXRob2Rz
PVRvdWNoQ2FsbG91dEVuYWJsZWQsIENvbnZlcnRlcj1Ub3VjaENhbGxvdXRdCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggZGQ0ODRmZDNmZDgyMTU1ZTcz
YjcxOThkZmY5NTAzNDNlNWY4Y2QxMy4uYjRhYTEyNWI4OWY1ODBhNDJhYjc1N2YwM2I0N2Y4MGZi
ZDNhY2RlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTExNzIs
MyArMTE3Miw4IEBAIHN0eWxlCiAvLyB3aWxsLWNoYW5nZQogc2Nyb2xsLXBvc2l0aW9uCiBjb250
ZW50cworCisjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hf
RVZFTlRTCisvLyB0b3VjaC1hY3Rpb24KK21hbmlwdWxhdGlvbgorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggMTJlNzY4YjI0YThmMzg2ZmYyNDdiNThlNDliYjU4Nzc2OGI4YWJiOS4u
ZTdkYjAxNmRlYTFiYjIzNjQzODMwN2M0MTYwNjZlNzBkZTg0YzBlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtMTM4MCw2ICsxMzgwLDE3IEBAIFVSTCBFbGVtZW50OjphYnNvbHV0ZUxpbmtV
UkwoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhsaW5rQXR0cmlidXRlKSk7CiB9CiAKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorYm9vbCBFbGVtZW50OjphbGxvd3NEb3VibGVUYXBHZXN0dXJlKCkgY29u
c3QKK3sKKyAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLnRvdWNoQWN0
aW9uKCkgIT0gVG91Y2hBY3Rpb246OkF1dG8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAgICByZXR1cm4gIXBhcmVudCB8
fCBwYXJlbnQtPmFsbG93c0RvdWJsZVRhcEdlc3R1cmUoKTsKK30KKyNlbmRpZgorCiBTdHlsZVJl
c29sdmVyJiBFbGVtZW50OjpzdHlsZVJlc29sdmVyKCkKIHsKICAgICBpZiAoYXV0byogc2hhZG93
Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBkMjUz
YjAzNzgzMTkxODMzZmE1MmIzMjVmOTVkZDU4YTYwMDk0ZTAzLi5iMDZjYmM5NmFlYWNmNDNhODA3
ZmY5OGU0MzU5MmM2YjI4OWU3MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTQ4Nyw2ICs0ODcs
MTAgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGFic29sdXRlTGlua1VSTCgp
IGNvbnN0OwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgYWxs
b3dzRG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICBTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKCk7CiAgICAgUmVmPFJlbmRlclN0eWxlPiByZXNvbHZl
U3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNmExOTNh
YTI2Mzg5MWUxMDQzNjg0OGM0NmMyYjU1OThhOGJjYjM3OC4uMmQ5OGQ1ODRkZjQ4YThhM2YzMTQw
N2RjZmYzODAxMjhmMDY2YmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC01MzEsNiArNTMxLDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKICAgICBib29s
IGRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1
bmRlcmx5aW5nRXZlbnQpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFs
IGJvb2wgYWxsb3dzRG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBi
b29sIGRpc3BhdGNoVG91Y2hFdmVudChQYXNzUmVmUHRyPFRvdWNoRXZlbnQ+KTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBiM2Iy
NWYxNGFlMjk0NWMyZjJkOGFiZWMxMWNmZGQyZTFiN2QwNjJhLi41NDhiNDE0ZTZkZjJlZDYzMjU3
MTZkN2Q0OGIwMzQwMzZkNWU1MGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaApAQCAtMTExOSw2ICsxMTE5LDEwIEBAIHB1YmxpYzoKICAgICBpbnQg
aW5pdGlhbExldHRlckRyb3AoKSBjb25zdCB7IHJldHVybiBpbml0aWFsTGV0dGVyKCkud2lkdGgo
KTsgfQogICAgIGludCBpbml0aWFsTGV0dGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5pdGlh
bExldHRlcigpLmhlaWdodCgpOyB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIFRv
dWNoQWN0aW9uIHRvdWNoQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hB
Y3Rpb24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RvdWNoQWN0aW9uKTsgfQorI2VuZGlmCisK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIFNjcm9sbFNuYXBUeXBlIHNjcm9sbFNu
YXBUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U2Nyb2xsU25hcFR5cGU+KHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBUeXBlKTsgfQogICAgIGNvbnN0IFNjcm9sbFNu
YXBQb2ludHMqIHNjcm9sbFNuYXBQb2ludHNYKCkgY29uc3Q7CkBAIC0xNjc5LDYgKzE2ODMsMTAg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0SW5pdGlhbExldHRlcihjb25zdCBJbnRTaXpl
JiBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faW5pdGlhbExldHRlciwg
c2l6ZSk7IH0KICAgICAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgc2V0VG91
Y2hBY3Rpb24oVG91Y2hBY3Rpb24gdCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X3RvdWNoQWN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odCkpOyB9CisjZW5kaWYKKwogI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwVHlwZShTY3Jv
bGxTbmFwVHlwZSB0eXBlKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fc2Nyb2xs
U25hcFR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7IH0KICAgICB2b2lkIHNldFNj
cm9sbFNuYXBQb2ludHNYKHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxTbmFwUG9pbnRzPik7CkBAIC0y
MDMyLDYgKzIwNDAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdpbGxDaGFuZ2VEYXRhKiBp
bml0aWFsV2lsbENoYW5nZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisgICAgc3RhdGljIFRvdWNoQWN0aW9uIGluaXRpYWxUb3VjaEFjdGlvbigpIHsg
cmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgc3RhdGljIFNjcm9sbFNuYXBUeXBlIGluaXRpYWxTY3JvbGxTbmFwVHlw
ZSgpIHsgcmV0dXJuIFNjcm9sbFNuYXBUeXBlOjpOb25lOyB9CiAgICAgc3RhdGljIFNjcm9sbFNu
YXBQb2ludHMqIGluaXRpYWxTY3JvbGxTbmFwUG9pbnRzWCgpIHsgcmV0dXJuIG51bGxwdHI7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmgKaW5kZXggYmJiNGNhYTExMDQ4YjJkY2I3NjFmYjE1M2MzNTRmMmJkZmZhYjkwZi4u
YWZjYjVmZGQzODhmN2QxOTg3ZDcwYmRjZWRkYWIwNjc0N2ViMjk3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAg
LTY0MSw2ICs2NDEsMTMgQEAgZW51bSBJc29sYXRpb24geyBJc29sYXRpb25BdXRvLCBJc29sYXRp
b25Jc29sYXRlIH07CiAvLyBGaWxsLCBTdHJva2UsIFZpZXdCb3ggYXJlIGp1c3QgdXNlZCBmb3Ig
U1ZHLgogZW51bSBDU1NCb3hUeXBlIHsgQm94TWlzc2luZyA9IDAsIE1hcmdpbkJveCwgQm9yZGVy
Qm94LCBQYWRkaW5nQm94LCBDb250ZW50Qm94LCBGaWxsLCBTdHJva2UsIFZpZXdCb3ggfTsKIAor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitlbnVtIGNsYXNzIFRvdWNoQWN0aW9uIHsKKyAgICBB
dXRvLAorICAgIE1hbmlwdWxhdGlvbgorfTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKIGVudW0gY2xhc3MgU2Nyb2xsU25hcFR5cGUgewogICAgIE5vbmUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5jcHAKaW5kZXggMDlmYzkxMjhmZDZhN2EwMTE5ZTcyYzY4YmRjOGQ4M2I5YTVi
ZDIwMi4uNmViYmRiYWEwZWRhYTdlMTllMzFmMTRkODEyODIxZjNiMjkyNTJiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmNwcApAQCAtNzksNiArNzksOSBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkKICAgICAsIG1fanVzdGlmeUNvbnRlbnQo
UmVuZGVyU3R5bGU6OmluaXRpYWxDb250ZW50QWxpZ25tZW50KCkpCiAgICAgLCBtX2p1c3RpZnlJ
dGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKICAgICAsIG1fanVzdGlm
eVNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICAsIG1fdG91Y2hBY3Rpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJl
bmRlclN0eWxlOjppbml0aWFsVG91Y2hBY3Rpb24oKSkpCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQogICAgICwgbV9zY3JvbGxTbmFwVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxTbmFwVHlwZSgpKSkKICNlbmRpZgpAQCAtMTY4
LDYgKzE3MSw5IEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAgLCBtX2p1c3RpZnlDb250
ZW50KG8ubV9qdXN0aWZ5Q29udGVudCkKICAgICAsIG1fanVzdGlmeUl0ZW1zKG8ubV9qdXN0aWZ5
SXRlbXMpCiAgICAgLCBtX2p1c3RpZnlTZWxmKG8ubV9qdXN0aWZ5U2VsZikKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgICwgbV90b3VjaEFjdGlvbihvLm1fdG91Y2hBY3Rpb24pCisjZW5k
aWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICwgbV9zY3JvbGxTbmFwVHlwZShv
Lm1fc2Nyb2xsU25hcFR5cGUpCiAjZW5kaWYKQEAgLTI4Miw2ICsyODgsOSBAQCBib29sIFN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YSYgbykgYwogICAgICAgICAmJiBtX2JvcmRlckZpdCA9PSBvLm1fYm9yZGVyRml0CiAg
ICAgICAgICYmIG1fdGV4dENvbWJpbmUgPT0gby5tX3RleHRDb21iaW5lCiAgICAgICAgICYmIG1f
dGV4dERlY29yYXRpb25TdHlsZSA9PSBvLm1fdGV4dERlY29yYXRpb25TdHlsZQorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgICAgICYmIG1fdG91Y2hBY3Rpb24gPT0gby5tX3RvdWNoQWN0
aW9uCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICAgICAmJiBtX3Nj
cm9sbFNuYXBUeXBlID09IG8ubV9zY3JvbGxTbmFwVHlwZQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuaAppbmRleCA3YWQ5NzYzYWFmMDRiZjY4NDlmOTYxODViMzk4NWI2ZTAwZjc3OTAzLi4xMjZh
ZWM2YjgzODE0MDYzYjVjMTEzZjNhNGE4MzkzZWRhOWZmZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmgKQEAgLTE4NCw2ICsxODQsMTAgQEAgcHVibGljOgogICAgIFN0eWxlU2VsZkFsaWdubWVudERh
dGEgbV9qdXN0aWZ5SXRlbXM7CiAgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2p1c3RpZnlT
ZWxmOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB1bnNpZ25lZCBtX3RvdWNoQWN0
aW9uIDogMTsgLy8gVG91Y2hBY3Rpb24KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKICAgICB1bnNpZ25lZCBtX3Njcm9sbFNuYXBUeXBlIDogMjsgLy8gU2Nyb2xsU25hcFR5
cGUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCAxZDkwNzhmZDNkOGZmNmI3ZGNmNTg1Mjg4NjM0ZGFkMzJhMDNkYjcwLi5m
Y2FmOTJmZWEwYmY3NWYyOGQ3ODJiZmYyYzQxNmIzODJiZjIxZmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTk3LDcgKzk5Nyw3
IEBAIC0gKHZvaWQpX2RpZENvbW1pdExheWVyVHJlZTooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbiYpbGF5ZXJUcmVlCiAgICAgaWYgKCFsYXllclRyZWVUcmFuc2FjdGlv
bi5zY2FsZVdhc1NldEJ5VUlQcm9jZXNzKCkgJiYgIVtfc2Nyb2xsVmlldyBpc1pvb21pbmddICYm
ICFbX3Njcm9sbFZpZXcgaXNab29tQm91bmNpbmddICYmICFbX3Njcm9sbFZpZXcgX2lzQW5pbWF0
aW5nWm9vbV0pCiAgICAgICAgIFtfc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6bGF5ZXJUcmVlVHJh
bnNhY3Rpb24ucGFnZVNjYWxlRmFjdG9yKCldOwogCi0gICAgW19jb250ZW50VmlldyBfc2V0RG91
YmxlVGFwR2VzdHVyZXNFbmFibGVkOltfc2Nyb2xsVmlldyBpc1pvb21FbmFibGVkXSAmJiBbX3Nj
cm9sbFZpZXcgbWluaW11bVpvb21TY2FsZV0gPCBbX3Njcm9sbFZpZXcgbWF4aW11bVpvb21TY2Fs
ZV1dOworICAgIFtfY29udGVudFZpZXcgX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpzZWxm
Ll92aWV3cG9ydElzVXNlclNjYWxhYmxlXTsKIAogICAgIFtzZWxmIF91cGRhdGVTY3JvbGxWaWV3
QmFja2dyb3VuZF07CiAKQEAgLTMwNjYsNiArMzA2NiwxMSBAQCAtIChDR0Zsb2F0KV92aWV3cG9y
dE1ldGFUYWdXaWR0aAogICAgIHJldHVybiBfdmlld3BvcnRNZXRhVGFnV2lkdGg7CiB9CiAKKy0g
KEJPT0wpX3ZpZXdwb3J0SXNVc2VyU2NhbGFibGUKK3sKKyAgICByZXR1cm4gW19zY3JvbGxWaWV3
IGlzWm9vbUVuYWJsZWRdICYmIFtfc2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXSA8IFtfc2Ny
b2xsVmlldyBtYXhpbXVtWm9vbVNjYWxlXTsKK30KKwogLSAoX1dLV2ViVmlld1ByaW50Rm9ybWF0
dGVyICopX3dlYlZpZXdQcmludEZvcm1hdHRlcgogewogICAgIFVJVmlld1ByaW50Rm9ybWF0dGVy
ICp2aWV3UHJpbnRGb3JtYXR0ZXIgPSBzZWxmLnZpZXdQcmludEZvcm1hdHRlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
aW5kZXggOTZmNWY5YmFiMDFkOTcyZGMwNjkzY2ZiZTIzZjNiYmZlNDhiMGQzZC4uNDM4ZDZjNTFk
MjIwYWY1ODViNzU0MjgzYjJhOTI5MjAyMTk5ODNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEzNSw2ICsx
MzUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBl
KSB7CiAKIC8vIFRoZSB2aWV3cG9ydCBtZXRhIHRhZyB3aWR0aCBpcyBuZWdhdGl2ZSBpZiB0aGUg
dmFsdWUgaXMgbm90IGRlZmluZWQuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENH
RmxvYXQgX3ZpZXdwb3J0TWV0YVRhZ1dpZHRoOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBCT09MIF92aWV3cG9ydElzVXNlclNjYWxhYmxlOwogCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlciAqX3dlYlZpZXdQcmludEZvcm1h
dHRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOTk1MWI3Y2Yx
ZDhhMDA4N2NlODBmZjQwZjAxZjM2MjI3ODQ2MGJjMi4uYWU2OWI4ZDBhOTFjMDlmOGFkNmM1N2Qz
MzFmYWQ4MjBmN2JmNjk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBA
IC0yOTEsNiArMjkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tU
YXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVu
dFJlY3QpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJl
Y3QsIGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVk
KHVpbnQ2NF90IHJlcXVlc3RJRCkgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1ab29t
U2NhbGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgZG9jdW1l
bnRSZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvdmVyZmxvd1Njcm9sbFZpZXdX
aWxsU3RhcnRQYW5HZXN0dXJlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDdlNDRmNTFhZDdiOGQ3MTdmZWIxODg4NDNlMjM0MzM1ZDYxYTMyMTkuLjI1
ZjcxYjY3NGU0NTEzM2I5YmUyYTM2ZGFiOWNiMGI5ODQ5OTFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTUwOCw2ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZVRh
cEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHZpZXdwb3J0TWV0
YVRhZ1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRoKTsKKyAgICB2b2lkIGRpc2FibGVEb3VibGVU
YXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZCh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZv
aWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7
CiAgICAgdm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29u
dGVudFNpemVDYXRlZ29yeSk7CiAgICAgdm9pZCBnZXRMb29rdXBDb250ZXh0QXRQb2ludChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzFjMDdjMzBlOGVjN2IzODdjY2Y5ZWE4NWZl
NGUwY2RiYTY2OWMwOS4uYTViZTY1YWVkZWJkZmE1ZTNiODFhYjI5OGNkMGFiNTU3MDhkZTIxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0xODgsNiArMTg4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBD
b21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKQogICAgIERpZE5vdEhhbmRsZVRhcEFzQ2xpY2soV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgVmlld3BvcnRNZXRhVGFnV2lkdGhEaWRDaGFuZ2Uo
ZmxvYXQgd2lkdGgpCisgICAgRGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0Zpbmlz
aGVkKHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBEaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihJ
UEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRl
eCAxMjNkMzY3ZWEyMDhjZjBhMDVlN2RmOWYyYzg3MTAxMDg3ZjgzNWFlLi5lZTMzZWJjNTMwYmE0
ZWVmNmNiOTk5YjY4NDE2YzRkZGE0MTE3YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5Kiwg
V2ViRnJhbWVQcm94eSosIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZp
ZXdwb3J0TWV0YVRhZ1dpZHRoKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
YWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkKHVpbnQ2NF90IHJlcXVlc3RJ
RCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVpvb21TY2FsZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGRvY3VtZW50UmVjdCgp
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBkNzZmOTQxNjZlNGZmMGFhOGQ5MThkNGE0MzFjN2Y5
YTQ1YjZkM2RkLi5iODQyYmE3MjkyM2NmNWYwZTQxNGE3MzhmYWYwNGZkNjEyN2Q1NzcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0K
QEAgLTI1OSw2ICsyNTksMTQgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3Bv
cnRNZXRhVGFnV2lkdGgoZmxvYXQgbmV3V2lkdGgpCiAgICAgW21fd2ViVmlldyBfc2V0Vmlld3Bv
cnRNZXRhVGFnV2lkdGg6bmV3V2lkdGhdOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNh
YmxlRG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWQodWludDY0X3QgcmVxdWVzdElE
KQoreworICAgIGlmICghbV93ZWJWaWV3Ll92aWV3cG9ydElzVXNlclNjYWxhYmxlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBbbV9jb250ZW50VmlldyBfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVz
VW50aWxUYXBJc0ZpbmlzaGVkRm9yUmVxdWVzdDpyZXF1ZXN0SURdOworfQorCiBkb3VibGUgUGFn
ZUNsaWVudEltcGw6Om1pbmltdW1ab29tU2NhbGUoKSBjb25zdAogewogICAgIGlmIChVSVNjcm9s
bFZpZXcgKnNjcm9sbGVyID0gW21fd2ViVmlldyBzY3JvbGxWaWV3XSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmlu
ZGV4IDQ5YjQxOWNkZmY5NDYwM2EwZjhiNjZhYzhmZjMzOGE4ZjczMWRlNWYuLjJjYmFkNGQwMWFj
MzRkZWRkZDlkNzgwMjY5ZWU3ZWMwMmYzOGU2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTI2LDcg
KzEyNiw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKICAgICBpZCA8VUlUZXh0
SW5wdXREZWxlZ2F0ZT4gX2lucHV0RGVsZWdhdGU7CiAKLSAgICB1aW50NjRfdCBfbGF0ZXN0VGFw
SGlnaGxpZ2h0SUQ7CisgICAgdWludDY0X3QgX2xhdGVzdFRhcElEOwogICAgIHN0cnVjdCBUYXBI
aWdobGlnaHRJbmZvcm1hdGlvbiB7CiAgICAgICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yOwogICAg
ICAgICBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiBxdWFkczsKQEAgLTE4MSw2ICsxODEsNyBA
QCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogI2VuZGlmCiAtICh2b2lkKV9jb21taXRQ
b3RlbnRpYWxUYXBGYWlsZWQ7CiAtICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0
Oih1aW50NjRfdClyZXF1ZXN0SUQgY29sb3I6KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiljb2xvciBx
dWFkczooY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mKWhpZ2hsaWdodGVkUXVhZHMg
dG9wTGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wTGVmdFJhZGl1cyB0b3BS
aWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wUmlnaHRSYWRpdXMgYm90dG9t
TGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tTGVmdFJhZGl1cyBib3R0
b21SaWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tUmlnaHRSYWRpdXM7
CistICh2b2lkKV9kaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWRGb3JS
ZXF1ZXN0Oih1aW50NjRfdClyZXF1ZXN0SUQ7CiAKIC0gKHZvaWQpX3N0YXJ0QXNzaXN0aW5nTm9k
ZTooY29uc3QgV2ViS2l0OjpBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdXNl
cklzSW50ZXJhY3Rpbmc6KEJPT0wpdXNlcklzSW50ZXJhY3RpbmcgYmx1clByZXZpb3VzTm9kZToo
Qk9PTClibHVyUHJldmlvdXNOb2RlIHVzZXJPYmplY3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGlu
Zz4gKil1c2VyT2JqZWN0OwogLSAodm9pZClfc3RvcEFzc2lzdGluZ05vZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IDg3OWE3ZTYzMTMzYzJjYWJiODFlZGQ1N2NhMzFiZDdkN2M2NDcwZDQuLjFlOWEw
Mjc3NGRlYzJmZmY5MmYzMzMwOGVhNjdmZjQ1ZGQ4ZTg1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC04MzEsNyArODMxLDcgQEAgLSAodm9pZClfc2hvd1RhcEhpZ2hsaWdodAogCiAtICh2b2lkKV9k
aWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0Oih1aW50NjRfdClyZXF1ZXN0SUQgY29sb3I6KGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiljb2xvciBxdWFkczooY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZs
b2F0UXVhZD4mKWhpZ2hsaWdodGVkUXVhZHMgdG9wTGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpdG9wTGVmdFJhZGl1cyB0b3BSaWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpdG9wUmlnaHRSYWRpdXMgYm90dG9tTGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpYm90dG9tTGVmdFJhZGl1cyBib3R0b21SaWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpYm90dG9tUmlnaHRSYWRpdXMKIHsKLSAgICBpZiAoIV9pc1RhcEhpZ2hsaWdodElE
VmFsaWQgfHwgX2xhdGVzdFRhcEhpZ2hsaWdodElEICE9IHJlcXVlc3RJRCkKKyAgICBpZiAoIV9p
c1RhcEhpZ2hsaWdodElEVmFsaWQgfHwgX2xhdGVzdFRhcElEICE9IHJlcXVlc3RJRCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IE5POwpAQCAtODUxLDYg
Kzg1MSwxNCBAQCAtICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0Oih1aW50NjRf
dClyZXF1ZXN0SUQgY29sb3I6KGNvbnN0IFdlYkNvcmU6OgogICAgIFtzZWxmIF9zaG93VGFwSGln
aGxpZ2h0XTsKIH0KIAorLSAodm9pZClfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJ
c0ZpbmlzaGVkRm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVzdElECit7CisgICAgaWYgKCFfcG90
ZW50aWFsVGFwSW5Qcm9ncmVzcyB8fCBfbGF0ZXN0VGFwSUQgIT0gcmVxdWVzdElEKQorICAgICAg
ICByZXR1cm47CisKKyAgICBbc2VsZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOk5PXTsK
K30KKwogLSAodm9pZClfY2FuY2VsTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBb
X2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIGNhbmNlbF07CkBAIC0xMTU1LDcg
KzExNjMsNyBAQCAtICh2b2lkKV9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOihVSUxvbmdQ
cmVzc0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlYwogICAgIGNhc2UgVUlHZXN0dXJlUmVj
b2duaXplclN0YXRlQmVnYW46CiAgICAgICAgIF9oaWdobGlnaHRMb25nUHJlc3NDYW5DbGljayA9
IFlFUzsKICAgICAgICAgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3Nhcnkoc2VsZik7Ci0gICAg
ICAgIF9wYWdlLT50YXBIaWdobGlnaHRBdFBvc2l0aW9uKFtnZXN0dXJlUmVjb2duaXplciBzdGFy
dFBvaW50XSwgKytfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQpOworICAgICAgICBfcGFnZS0+dGFwSGln
aGxpZ2h0QXRQb3NpdGlvbihbZ2VzdHVyZVJlY29nbml6ZXIgc3RhcnRQb2ludF0sICsrX2xhdGVz
dFRhcElEKTsKICAgICAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IFlFUzsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZDoKQEAgLTExOTAs
MTIgKzExOTgsMjAgQEAgLSAodm9pZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgfQogfQogCistICh2b2lk
KV9lbmRQb3RlbnRpYWxUYXBBbmRFbmFibGVEb3VibGVUYXBHZXN0dXJlc0lmTmVjZXNzYXJ5Cit7
CisgICAgaWYgKF93ZWJWaWV3Ll92aWV3cG9ydElzVXNlclNjYWxhYmxlKQorICAgICAgICBbc2Vs
ZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOllFU107CisKKyAgICBfcG90ZW50aWFsVGFw
SW5Qcm9ncmVzcyA9IE5POworfQorCiAtICh2b2lkKV9zaW5nbGVUYXBSZWNvZ25pemVkOihVSVRh
cEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBBU1NFUlQoZ2Vz
dHVyZVJlY29nbml6ZXIgPT0gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKICAgICBBU1NF
UlQoIV9wb3RlbnRpYWxUYXBJblByb2dyZXNzKTsKIAotICAgIF9wYWdlLT5wb3RlbnRpYWxUYXBB
dFBvc2l0aW9uKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uLCArK19sYXRlc3RUYXBIaWdobGln
aHRJRCk7CisgICAgX3BhZ2UtPnBvdGVudGlhbFRhcEF0UG9zaXRpb24oZ2VzdHVyZVJlY29nbml6
ZXIubG9jYXRpb24sICsrX2xhdGVzdFRhcElEKTsKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVz
cyA9IFlFUzsKICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gWUVTOwogfQpAQCAtMTIwMyw3
ICsxMjE5LDcgQEAgLSAodm9pZClfc2luZ2xlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxU
YXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKIHsKICAgICBpZiAoY29u
dGVudFZpZXctPl9wb3RlbnRpYWxUYXBJblByb2dyZXNzKSB7Ci0gICAgICAgIGNvbnRlbnRWaWV3
LT5fcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POworICAgICAgICBbY29udGVudFZpZXcgX2Vu
ZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdlc3R1cmVzSWZOZWNlc3NhcnldOwogICAg
ICAgICBbY29udGVudFZpZXcgX2NhbmNlbEludGVyYWN0aW9uXTsKICAgICAgICAgY29udGVudFZp
ZXctPl9wYWdlLT5jYW5jZWxQb3RlbnRpYWxUYXAoKTsKICAgICB9CkBAIC0xMjQyLDcgKzEyNTgs
NyBAQCAtICh2b2lkKV9zaW5nbGVUYXBDb21taXRlZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAq
KWdlc3R1cmVSZWNvZ25pemVyCiAKICAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0
dXJlUmVjb2duaXplci5sb2NhdGlvbjsKIAotICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0g
Tk87CisgICAgW3NlbGYgX2VuZFBvdGVudGlhbFRhcEFuZEVuYWJsZURvdWJsZVRhcEdlc3R1cmVz
SWZOZWNlc3NhcnldOwogCiAgICAgaWYgKF9oYXNUYXBIaWdobGlnaHRGb3JQb3RlbnRpYWxUYXAp
IHsKICAgICAgICAgW3NlbGYgX3Nob3dUYXBIaWdobGlnaHRdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAwYTMyOWQwOTI4ODBhYjdi
YzhmMjkzODNlODA0YjFmOTI5MGFlNjQ5Li5iNTg4YWI0YzliOGEyMjVkZDUwNjZlNjBjNzQwNjJi
NGM0ZjY1Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtOTM3LDYgKzkzNywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld3Bv
cnRNZXRhVGFnV2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpCiAgICAgbV9wYWdlQ2xpZW50LmRp
ZENoYW5nZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKHdpZHRoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJv
eHk6OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZCh1aW50NjRfdCBy
ZXF1ZXN0SUQpCit7CisgICAgbV9wYWdlQ2xpZW50LmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc1Vu
dGlsVGFwSXNGaW5pc2hlZChyZXF1ZXN0SUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRh
KQogewogICAgIG1fcGFnZUNsaWVudC5kaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihwZGZEYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQppbmRleCAyZGNhZmUxZDNjMDM0NWNlNGY2Yzk5NmYyMGY3ZDQwN2JlNzhlMDUxLi41
OGNjZDJiN2NjYTdhMzk2NDEzYjU3Y2MxMDBjM2JlYWJhOGIzNzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC02NjIs
NiArNjYyLDEwIEBAIHZvaWQgV2ViUGFnZTo6cG90ZW50aWFsVGFwQXRQb3NpdGlvbih1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pCiB7CiAgICAgbV9wb3RlbnRpYWxU
YXBOb2RlID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMo
cG9zaXRpb24sIG1fcG90ZW50aWFsVGFwTG9jYXRpb24pOwogICAgIHNlbmRUYXBIaWdobGlnaHRG
b3JOb2RlSWZOZWNlc3NhcnkocmVxdWVzdElELCBtX3BvdGVudGlhbFRhcE5vZGUuZ2V0KCkpOwor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKG1fcG90ZW50aWFsVGFwTm9kZSAmJiAh
bV9wb3RlbnRpYWxUYXBOb2RlLT5hbGxvd3NEb3VibGVUYXBHZXN0dXJlKCkpCisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxU
YXBJc0ZpbmlzaGVkKHJlcXVlc3RJRCkpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUGFnZTo6Y29t
bWl0UG90ZW50aWFsVGFwKHVpbnQ2NF90IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDJjNWE3ZjQ3ZWRkOWVkM2VhNmE2M2UwYjhhZTg4OTZiYzQ3YWY3NjAuLjEyYjE5NzY4N2Yw
NzI1MzQyNzg5YmIwN2ZlNDNhNWZhOWIwNjAxMTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAx
NS0xMC0xNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IGZvciBpT1MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTg1NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjMwMTcxNDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGNoZWNrIHRoYXQgdGhlIG1hbmlwdWxhdGlv
biBhbmQgYXV0byB2YWx1ZXMgb2YgdGhlIHRvdWNoLWFjdGlvbiBwcm9wZXJ0eSBjYW4gYmUKKyAg
ICAgICAgcHJvcGVybHkgcGFyc2VkIGFuZCBjYW4gYmUgb2J0YWluZWQgdGhyb3VnaCBjb21wdXRl
ZCBzdHlsZS4gQWxzbyB0ZXN0cyB0aGF0IHB1dHRpbmcgdG91Y2gtYWN0aW9uOgorICAgICAgICBt
YW5pcHVsYXRpb24gb24gYW4gZWxlbWVudCBhbmQgdGFwcGluZyByZXBlYXRlZGx5IG9uIGl0IHdp
bGwgZmlyZSBjbGlja3MgaW5zdGVhZCBvZiByZWNvZ25pemluZworICAgICAgICBkb3VibGUgdGFw
cyBhbmQgY2F1c2luZyB0aGUgdmlld3BvcnQgdG8gem9vbS4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1
dGVkLXN0eWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy90b3VjaC1hY3Rp
b24vdG91Y2gtYWN0aW9uLWNvbXB1dGVkLXN0eWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNz
czMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rp
b24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMv
dG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAxNS0xMC0xOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggYSBjb3B5L3Bhc3RlIG1pc3Rha2UgaW4gdGhlIHByZXZpb3VzIGNvbW1pdC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IGRlZmE5YjYyNWQ1NjFlYTg1Njc0NDM2ZmMwY2IzNmFhYWM4
ZmY5N2IuLjM3YzBkNzBjNmM5MTVlNjRkYTUyZWFlMTY0NDBlNWVmMDAzYTMyZmEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNiw2ICs2LDcgQEAKICMgUGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMuIFNr
aXBwZWQgaGVyZSwgdGhlbiByZS1lbmFibGVkIG9uIHRoZSBhcHByb3ByaWF0ZSBwbGF0Zm9ybS4K
ICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAorY3NzMy90b3VjaC1hY3Rpb24g
WyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvciBbIFNraXAgXQogYWNjZXNzaWJp
bGl0eS9ndGsgWyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkvbWFjIFsgU2tpcCBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29tcHV0ZWQtc3R5
bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0
aW9uLWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTdmZGNlMjYyYjJl
MjI2NjMxMDdhMTk4MGFmZWI0ZDhiZjYyOWRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0aW5nIHRoZSBjb21wdXRlZCBzdHlsZSBvZiB0b3Vj
aC1hY3Rpb246CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5nIHRvdWNo
LWFjdGlvbjogbWFuaXB1bGF0aW9uOworUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24nKSBpcyAnbWFuaXB1bGF0
aW9uJworVGVzdGluZyB0b3VjaC1hY3Rpb246IGF1dG87CitQQVNTIHdpbmRvdy5nZXRDb21wdXRl
ZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIGlz
ICdhdXRvJworVGVzdGluZyBhIGJvZ3VzIHZhbHVlCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIGlzICdh
dXRvJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1j
b21wdXRlZC1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gt
YWN0aW9uLWNvbXB1dGVkLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRkNWI1ZTRmZGMzNzE2N2Q5
Y2Q0YTFiMTQ5MDVkMjdmMWVjODNjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nz
czMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS5odG1sCkBAIC0wLDAg
KzEsMzUgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8
Ym9keT4KKyAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZGVzY3JpcHRp
b24oIlRlc3RpbmcgdGhlIGNvbXB1dGVkIHN0eWxlIG9mIHRvdWNoLWFjdGlvbjoiKTsKKworICAg
ICAgICAgICAgdmFyIHN0eWxlc2hlZXQ7CisgICAgICAgICAgICB2YXIgc3R5bGVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgICAgIGRvY3VtZW50Lmhl
YWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQgPSBz
dHlsZUVsZW1lbnQuc2hlZXQ7CisKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHRvdWNoLWFj
dGlvbjogbWFuaXB1bGF0aW9uOyIpOworICAgICAgICAgICAgc3R5bGVzaGVldC5pbnNlcnRSdWxl
KCJib2R5IHsgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH0iLCAwKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9w
ZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24nKSIsICInbWFuaXB1bGF0aW9uJyIpOworICAgICAgICAg
ICAgc3R5bGVzaGVldC5kZWxldGVSdWxlKDApOworCisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyB0b3VjaC1hY3Rpb246IGF1dG87Iik7CisgICAgICAgICAgICBzdHlsZXNoZWV0Lmluc2VydFJ1
bGUoImJvZHkgeyB0b3VjaC1hY3Rpb246IGF1dG87IH0iLCAwKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZh
bHVlKCd0b3VjaC1hY3Rpb24nKSIsICInYXV0byciKTsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQu
ZGVsZXRlUnVsZSgwKTsKKworICAgICAgICAgICAgZGVidWcoIlRlc3RpbmcgYSBib2d1cyB2YWx1
ZSIpOworICAgICAgICAgICAgc3R5bGVzaGVldC5pbnNlcnRSdWxlKCJib2R5IHsgdG91Y2gtYWN0
aW9uOiB0eXBvOyB9IiwgMCk7CisgICAgICAgICAgICBzaG91bGRCZSgid2luZG93LmdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJyki
LCAiJ2F1dG8nIik7CisKKyAgICAgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlv
bi1mYXN0LWNsaWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlv
bi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNWUyNjNiMjBmZjUyNmY4YjE3NzUxZWI4ZmRhNWE4OTcyNTQ5ZTk2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1h
bmlwdWxhdGlvbi1mYXN0LWNsaWNrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1Jl
cGVhdGVkbHkgdGFwcGluZyBvbiB0aGUgYnV0dG9uIHNob3VsZCBmaXJlIGNsaWNrIGV2ZW50cy4K
KworVGhpcyB0ZXN0IGlzIGJlc3QgcnVuIGluIFdlYktpdFRlc3RSdW5uZXIuIElmIHlvdSBhcmUg
cnVubmluZyB0aGlzIHRlc3QgbWFudWFsbHksIHZlcmlmeSB0aGF0IHRhcHBpbmcgdGhlIGJ1dHRv
biBjYXVzZXMgYSAiQ2xpY2shIiBtZXNzYWdlIHRvIGFwcGVhciBiZWxvdywgYW5kIHRoYXQgY2xp
Y2sgb2NjdXJyZWQgd2l0aG91dCB0aGUgcmVndWxhciAzNTBtcyBkZWxheSBmb3IgZG91YmxlIHRh
cHBpbmcuCisKK0NsaWNrIQorQ2xpY2shCitDbGljayEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNr
cy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlw
dWxhdGlvbi1mYXN0LWNsaWNrcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzOWJkZGQ0Y2JmZWE1YWUxM2Vk
Yzc3OThhODM1NDE1NDNjYTcyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3Mz
L3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tzLmh0bWwK
QEAgLTAsMCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+CisKKzxodG1sPgorPG1ldGEgbmFtZT0i
dmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4KKworPGhlYWQ+CisgICAgPHNj
cmlwdCBpZD0idWktc2NyaXB0IiB0eXBlPSJ0ZXh0L3BsYWluIj4KKyAgICAgICAgKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZnVuY3Rpb24gcGVyZm9ybVRhcCgpIHsKKyAgICAgICAgICAgICAg
ICB1aUNvbnRyb2xsZXIuc2luZ2xlVGFwQXRQb2ludCgyMDAsIDIwMCwgcGVyZm9ybVRhcCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBwZXJmb3JtVGFwKCk7CisgICAgICAgIH0pKCk7Cisg
ICAgPC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0PgorICAgIHZhciBjbGlja0NvdW50ID0gMDsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGdldFVJU2NyaXB0KCkgeworICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInVpLXNjcmlwdCIpLnRleHQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0aW9uKHJlc3VsdCkgeyB9KTsK
KyAgICB9CisgICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2tlZCgpIHsKKyAgICAgICAgY2xpY2tDb3Vu
dCsrOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCJDbGljayEiKSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7CisgICAgICAgIGlmIChjbGlja0NvdW50ID09IDMp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgPC9zY3Jp
cHQ+CisKKyAgICA8c3R5bGU+CisgICAgYm9keSB7CisgICAgICAgIG1hcmdpbjogMDsKKyAgICB9
CisKKyAgICAjdGFyZ2V0IHsKKyAgICAgICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247Cisg
ICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiA0MDBweDsKKyAgICB9CisgICAg
PC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxidXR0
b24gaWQ9InRhcmdldCIgb25jbGljaz0iaGFuZGxlQ2xpY2tlZCgpIj48L2J1dHRvbj4KKyAgICA8
cD5SZXBlYXRlZGx5IHRhcHBpbmcgb24gdGhlIGJ1dHRvbiBzaG91bGQgZmlyZSBjbGljayBldmVu
dHMuPC9wPgorICAgIDxwPlRoaXMgdGVzdCBpcyBiZXN0IHJ1biBpbiBXZWJLaXRUZXN0UnVubmVy
LiBJZiB5b3UgYXJlIHJ1bm5pbmcgdGhpcyB0ZXN0IG1hbnVhbGx5LCB2ZXJpZnkgdGhhdCB0YXBw
aW5nIHRoZSBidXR0b24gY2F1c2VzIGEgIkNsaWNrISIgbWVzc2FnZSB0byBhcHBlYXIgYmVsb3cs
IGFuZCB0aGF0IGNsaWNrIG9jY3VycmVkIHdpdGhvdXQgdGhlIHJlZ3VsYXIgMzUwbXMgZGVsYXkg
Zm9yIGRvdWJsZSB0YXBwaW5nLjwvcD4KKzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OWM5ZjgxYTQzMjIzY2UzNGFhZGE3YjlkODc1
N2FkZDk3NWY3OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFj
dGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAor
VGVzdCB0aGUgcGFyc2luZyBvZiB0b3VjaC1hY3Rpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGNzc1J1bGUudHlwZSBpcyAxCitQQVNTIGRlY2xhcmF0aW9uLmxlbmd0
aCBpcyAxCitQQVNTIGRlY2xhcmF0aW9uLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicp
IGlzICdtYW5pcHVsYXRpb24nCitQQVNTIGNzc1J1bGUudHlwZSBpcyAxCitQQVNTIGRlY2xhcmF0
aW9uLmxlbmd0aCBpcyAxCitQQVNTIGRlY2xhcmF0aW9uLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNo
LWFjdGlvbicpIGlzICdhdXRvJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9u
L3RvdWNoLWFjdGlvbi1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlv
bi90b3VjaC1hY3Rpb24tcGFyc2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ZDNhNmRhZmQ3OTI4YWQw
OWYyMWE4Y2Q4MWEzNTE5Y2Y1MmU5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
c3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy5odG1sCkBAIC0wLDAgKzEsMzcg
QEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+Cisg
ICAgICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRl
c3QgdGhlIHBhcnNpbmcgb2YgdG91Y2gtYWN0aW9uLiIpOworCisgICAgICAgICAgICB2YXIgc3R5
bGVzaGVldCwgY3NzUnVsZSwgZGVjbGFyYXRpb247CisgICAgICAgICAgICB2YXIgc3R5bGVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAgICAgICAgICAgIHN0eWxlc2hl
ZXQgPSBzdHlsZUVsZW1lbnQuc2hlZXQ7CisKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuaW5zZXJ0
UnVsZSgiYm9keSB7IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyB9IiwgMCk7CisgICAgICAg
ICAgICBjc3NSdWxlID0gc3R5bGVzaGVldC5jc3NSdWxlcy5pdGVtKDApOworICAgICAgICAgICAg
c2hvdWxkQmUoImNzc1J1bGUudHlwZSIsICIxIik7CisgICAgICAgICAgICBkZWNsYXJhdGlvbiA9
IGNzc1J1bGUuc3R5bGU7CisgICAgICAgICAgICBzaG91bGRCZSgiZGVjbGFyYXRpb24ubGVuZ3Ro
IiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJkZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVZh
bHVlKCd0b3VjaC1hY3Rpb24nKSIsICInbWFuaXB1bGF0aW9uJyIpOworCisgICAgICAgICAgICBz
dHlsZXNoZWV0Lmluc2VydFJ1bGUoImJvZHkgeyB0b3VjaC1hY3Rpb246IGF1dG87IH0iLCAwKTsK
KyAgICAgICAgICAgIGNzc1J1bGUgPSBzdHlsZXNoZWV0LmNzc1J1bGVzLml0ZW0oMCk7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY3NzUnVsZS50eXBlIiwgIjEiKTsKKyAgICAgICAgICAgIGRlY2xh
cmF0aW9uID0gY3NzUnVsZS5zdHlsZTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJkZWNsYXJhdGlv
bi5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImRlY2xhcmF0aW9uLmdldFBy
b3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIiwgIidhdXRvJyIpOworCisgICAgICAgICAgICBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICA8L3NjcmlwdD4KKworCisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzMTEwMjg0ZDczMmRiOTI4
ZjM5N2U2ZGIxOTVjN2FkOTBmNmEwZWYzLi5lMGVjY2E5ZDE3NmM3Mjk3NjgyYWVmYTRjZDk0M2Uy
MDk0NTMyM2RjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9y
LXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11
bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYsNiArNiw3IEBACiAjIFBsYXRmb3JtLXNw
ZWNpZmljIGRpcmVjdG9yaWVzLiBTa2lwcGVkIGdsb2JhbGx5LCB0aGVuIHJlLWVuYWJsZWQgaGVy
ZS4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAorY3NzMy90b3VjaC1hY3Rp
b24gWyBQYXNzIF0KIGZhc3QvaGFybmVzcy91aS1zaWRlLXNjcmlwdHMuaHRtbCBbIFBhc3MgXQog
ZmFzdC9oYXJuZXNzL2NvbmN1cnJlbnQtdWktc2lkZS1zY3JpcHRzLmh0bWwgWyBQYXNzIF0KIGZh
c3Qvem9vbWluZy9pb3MgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263502</attachid>
            <date>2015-10-19 13:09:25 -0700</date>
            <delta_ts>2015-10-19 13:35:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149854-20151019130843.patch</filename>
            <type>text/plain</type>
            <size>29798</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRjYjM5MzRkYjc5MzY5
YzdkM2MyYmRlNGM4YjE4ODJkZGUyZTQyYi4uYzViYjY4MzQwMDA3ZDZiMDQwYTBhNTNlMzU2ZDE3
MGI0MGYzMjkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTEwLTE1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMzAxNzE0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnRzIHRoZSBtYW5pcHVsYXRpb24gdmFsdWUgZm9yIHRoZSBDU1MgcHJvcGVy
dHkgdG91Y2gtYWN0aW9uLiBBZGRzIHN1cHBvcnQgZm9yCisgICAgICAgIHBhcnNpbmcgdGhlIHRv
dWNoLWFjdGlvbiBwcm9wZXJ0eSBhbmQgdHdvIG9mIGl0cyB2YWx1ZXM6IGF1dG8gYW5kIG1hbmlw
dWxhdGlvbi4KKworICAgICAgICBUZXN0czogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9u
LWNvbXB1dGVkLXN0eWxlLmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvdG91Y2gtYWN0aW9uL3Rv
dWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MuaHRtbAorICAgICAgICAgICAgICAg
Y3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbAorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgVG91Y2hBY3Rpb24pOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFsbG93c0RvdWJsZVRhcEdl
c3R1cmUpOiBIZXJlLCB3ZSBkZXRlcm1pbmUgd2hldGhlciBhbiBlbGVtZW50IHRoYXQgcmVzdWx0
ZWQgZnJvbQorICAgICAgICAgICAgaGl0LXRlc3RpbmcgYSB0b3VjaCBzaG91bGQgYWxsb3cgZG91
YmxlLXRhcCBnZXN0dXJlcy4gVG8gZG8gdGhpcywgd2Ugd2FsayB1cCB0aGUgZWxlbWVudCdzIHBh
cmVudHMsCisgICAgICAgICAgICBzdG9wcGluZyB3aGVuIHdlIGRldGVjdCBhbiBlbGVtZW50IHRo
YXQgZGlzYWxsb3dzIGRvdWJsZSB0YXAgZ2VzdHVyZXMgYnkgaGF2aW5nIGEgdG91Y2gtYWN0aW9u
IG90aGVyCisgICAgICAgICAgICB0aGFuIGF1dG8gb3IgYnkgaGl0dGluZyB0aGUgcm9vdCBub2Rl
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmFsbG93c0RvdWJsZVRhcEdlc3R1cmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxNS0xMC0xOSAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBXS1ZpZXcg
YmVpbmcgaW5zaWRlIFdLV2ViVmlldyBsZWFkcyB0byB3ZWlyZCBBUEkgaXNzdWVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggNmFmNzdmYjU3NDY0ZTFkODVjNDc4MGRkNjkxNWYzMDA3NzlmMGI0NC4uZDRkNWNjMjU1
MjczZmY0NjkzZmUwZWM2YmI4YjM3NjYwOWRiNmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQy
IEBACisyMDE1LTEwLTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzAxNzE0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBtYW5pcHVsYXRpb24gdmFs
dWUgZm9yIHRoZSBDU1MgcHJvcGVydHkgdG91Y2gtYWN0aW9uLiBQZXJmb3JtcyBoaXQtdGVzdGlu
ZyB1cG9uIHJlY2VpdmluZyBhIHBvdGVudGlhbAorICAgICAgICB0YXAgdG8gZGV0ZXJtaW5lIHdo
ZXRoZXIgdG8gZGlzYWJsZSBkb3VibGUtdGFwIGdlc3R1cmUgcmVjb2duaXRpb24gb3ZlciB0aGUg
ZHVyYXRpb24gb2YgdGhlIHRhcC4gSWYgc28sIHNlbmRzIGEgbWVzc2FnZQorICAgICAgICBmcm9t
IHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2VzcyBpbmRpY2F0aW5nIHRoYXQgZG91Ymxl
LXRhcHBpbmcgc2hvdWxkIGJlIGRpc2FibGVkLCBhbGxvd2luZyBzaW5nbGUgdGFwcyB0bworICAg
ICAgICBhdm9pZCB0aGUgZGVsYXkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfdmlld3BvcnRJc1VzZXJTY2FsYWJsZV0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6Y29sb3I6cXVhZHM6dG9w
TGVmdFJhZGl1czp0b3BSaWdodFJhZGl1czpib3R0b21MZWZ0UmFkaXVzOmJvdHRvbVJpZ2h0UmFk
aXVzOl0pOgorICAgICAgICAgICAgICAgIFJlbmFtZWQgX2xhdGVzdFRhcEhpZ2hsaWdodElEIHRv
IF9sYXRlc3RUYXBJRCB0byByZWZsZWN0IHRoYXQgaXQgaXMgdXNlZCBmb3IgYm90aCB0YXAgaGln
aGxpZ2h0cyBhbmQgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb24uCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2Rpc2FibGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZEZvclJl
cXVlc3Q6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2hpZ2hsaWdodExvbmdQcmVzc1Jl
Y29nbml6ZWQ6XSk6IFJlbmFtZWQgX2xhdGVzdFRhcEhpZ2hsaWdodElEIHRvIF9sYXRlc3RUYXBJ
RC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZW5kUG90ZW50aWFsVGFwQW5kRW5hYmxlRG91
YmxlVGFwR2VzdHVyZXNJZk5lY2Vzc2FyeV0pOiBQdWxscyBvdXQgbG9naWMgdG8gcmVzZXQgYSBm
bGFnIGluZGljYXRpbmcgdGhhdCB3ZSBhcmUgbm8KKyAgICAgICAgICAgICAgICBsb25nZXIgdHJh
Y2tpbmcgYSBwb3RlbnRpYWwgdGFwLiBBbHNvIHJlLWVuYWJsZXMgdGhlIGRvdWJsZSB0YXAgZ2Vz
dHVyZSByZWNvZ25pemVyIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
c2luZ2xlVGFwUmVjb2duaXplZDpdKTogUmVuYW1lZCBfbGF0ZXN0VGFwSGlnaGxpZ2h0SUQgdG8g
X2xhdGVzdFRhcElELgorICAgICAgICAoY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBDb21taXRlZDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNVbnRpbFRhcElzRmluaXNoZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6cG90ZW50aWFsVGFwQXRQb3NpdGlvbik6CisKIDIwMTUtMTAtMTcg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5k
IGZhc3QtY2xpY2tpbmcgYmVoYXZpb3IgdG8gdHJpZ2dlciBvbiBlbGVtZW50cyB0aGF0IGhhdmUg
bmVnbGlnaWJsZSB6b29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDEwZTZlN2E0NWQ5NTg0Zjg1MGJjYzVjMDc4MDJmMDg3
MDFiODI4MDUuLjU5YzE2Zjk2MDRmZjhlMGVkNDJlYjExZTNlMGViNzk5ZGM0NTk5YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CkBAIC0zNDI4LDYgKzM0MjgsMTEgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwKICAgICAgICAg
ICAgIHJldHVybiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKnN0eWxlLCBzdHlsZS0+c2Nyb2xsU25h
cENvb3JkaW5hdGVzKCkpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5VG91Y2hBY3Rpb246CisgICAgICAgICAgICByZXR1cm4gY3Nz
VmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT50b3VjaEFjdGlvbigpKTsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QXBw
bGVUcmFpbGluZ1dvcmQ6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLT50cmFpbGluZ1dvcmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4
IGQwZmE5NjE5MGVlNDQ2NmQ3N2Q2YTc5NWZiNTExNmM5YjNiMjNiMjUuLjdjMTEwOTIzZDI0ZDEx
OWQwZDQ0YzcwZDM2ODg0ZjU4NDFiYjliOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBA
IC03NTQsNiArNzU0LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3Bl
cnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBpbnQKICAgICAgICAgaWYgKHZh
bHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrV29yZCkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjogLy8gYXV0byB8IG1h
bmlwdWxhdGlvbgorICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZU1hbmlwdWxhdGlvbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBicmVhazsKKyNlbmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFNjcm9sbFNuYXBUeXBlOiAvLyBub25lIHwgbWFuZGF0b3J5IHwg
cHJveGltaXR5CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTWFuZGF0b3J5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcm94aW1pdHkpCkBA
IC0xMTc2LDYgKzExODIsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNLZXl3b3JkUHJvcGVydHlJ
RChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKICAgICBjYXNlIENTU1Byb3BlcnR5
V29yZFdyYXA6CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIENTU1Byb3BlcnR5
VG91Y2hBY3Rpb246CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRTY3JvbGxTbmFwVHlwZToKICNlbmRpZgpAQCAtMzI2Nyw2ICsz
Mjc2LDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9u
OgorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0U2Nyb2xsU25hcFR5cGU6CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4IDE0ZmI5MGQxNzhhYTQ4OTMwYTA1MWU1
NmNjNDkyZTBhMzBiYzMwZmIuLmUxMmVlMTcxYTQ2NDk5ZGU1NGZiZGFhY2ZjYWYyMmYyZDJiYjBj
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3Mu
aApAQCAtNTI1Miw2ICs1MjUyLDM3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0Wm9vbSB0ZXh0Wm9vbSkKICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVG91
Y2hBY3Rpb24gdCkKKyAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQoreworICAgIG1fcHJp
bWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CisgICAgc3dpdGNoICh0KSB7CisgICAgY2Fz
ZSBUb3VjaEFjdGlvbjo6QXV0bzoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVB
dXRvOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpNYW5pcHVsYXRpb246
CisgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTWFuaXB1bGF0aW9uOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciBUb3VjaEFjdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzVmFsdWVJRCgp
KTsKKyAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgeworICAgIGNhc2UgQ1NTVmFsdWVBdXRv
OgorICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OkF1dG87CisgICAgY2FzZSBDU1NWYWx1ZU1h
bmlwdWxhdGlvbjoKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0aW9uOjpNYW5pcHVsYXRpb247Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBUb3VjaEFjdGlvbjo6QXV0bzsKK30KKyNlbmRpZgorCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShTY3JvbGxTbmFwVHlwZSBlKQogICAgIDogQ1NTVmFsdWUoUHJp
bWl0aXZlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlO
YW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDQw
OTI1NDllZDU0NjFmMzk1NzdlMjY0NTdhMDk0OGEyN2E1MWU3ODguLmYyYzIwNWFkMTJmNGRkYjk0
Mzk0NzcxZGFhODY3MWZlZmRmNzY3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5h
bWVzLmluCkBAIC02NjYsNiArNjY2LDkgQEAgdXNlci16b29tIFtTa2lwQnVpbGRlcl0KICNpZiBk
ZWZpbmVkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICYmIEVOQUJMRV9B
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcKIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5n
IFtJbmhlcml0ZWQsIE5hbWVGb3JNZXRob2RzPVVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIENv
bnZlcnRlcj1PdmVyZmxvd1Njcm9sbGluZ10KICNlbmRpZgorI2lmIGRlZmluZWQoRU5BQkxFX1RP
VUNIX0VWRU5UUykgJiYgRU5BQkxFX1RPVUNIX0VWRU5UUwordG91Y2gtYWN0aW9uCisjZW5kaWYK
ICNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9QTEFURk9STV9JT1MKIC13ZWJr
aXQtdG91Y2gtY2FsbG91dCBbSW5oZXJpdGVkLCBOYW1lRm9yTWV0aG9kcz1Ub3VjaENhbGxvdXRF
bmFibGVkLCBDb252ZXJ0ZXI9VG91Y2hDYWxsb3V0XQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IGRkNDg0ZmQzZmQ4MjE1NWU3M2I3MTk4ZGZmOTUwMzQz
ZTVmOGNkMTMuLmI0YWExMjViODlmNTgwYTQyYWI3NTdmMDNiNDdmODBmYmQzYWNkZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC0xMTcyLDMgKzExNzIsOCBAQCBz
dHlsZQogLy8gd2lsbC1jaGFuZ2UKIHNjcm9sbC1wb3NpdGlvbgogY29udGVudHMKKworI2lmIGRl
ZmluZWQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJiYgRU5BQkxFX1RPVUNIX0VWRU5UUworLy8gdG91
Y2gtYWN0aW9uCittYW5pcHVsYXRpb24KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGE2OGZhODdlOThmOTE1NjQwOWY4MDVkM2VlN2Y5OWIzMTc1YzFhOGQuLjJhMmNmNTVmMDBjY2Yx
MzBhZTMxZDY5ZmZmN2IwYTY4MGE5YzRhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEz
ODEsNiArMTM4MSwxNyBAQCBVUkwgRWxlbWVudDo6YWJzb2x1dGVMaW5rVVJMKCkgY29uc3QKICAg
ICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMobGlua0F0dHJpYnV0ZSkpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
K2Jvb2wgRWxlbWVudDo6YWxsb3dzRG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0Cit7CisgICAgaWYg
KHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS50b3VjaEFjdGlvbigpICE9IFRvdWNo
QWN0aW9uOjpBdXRvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFbGVtZW50KiBwYXJl
bnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgcmV0dXJuICFwYXJlbnQgfHwgcGFyZW50LT5hbGxv
d3NEb3VibGVUYXBHZXN0dXJlKCk7Cit9CisjZW5kaWYKKwogU3R5bGVSZXNvbHZlciYgRWxlbWVu
dDo6c3R5bGVSZXNvbHZlcigpCiB7CiAgICAgaWYgKGF1dG8qIHNoYWRvd1Jvb3QgPSBjb250YWlu
aW5nU2hhZG93Um9vdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNGM3MTliZTdmZjRjMzllZDll
YTBmMWU0NzE2OTBiMzIwMTNlNjcyYy4uNDdmZjQ4MTM1MWI3MWEzMDNmODJiYjM5ZGU2NmU4ZjY5
M2RjNzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00ODcsNiArNDg3LDEwIEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZUxpbmtVUkwoKSBjb25zdDsKIAorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCBib29sIGFsbG93c0RvdWJsZVRhcEdl
c3R1cmUoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlcigpOwogICAgIFJlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZVN0eWxlKFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDZhMTkzYWEyNjM4OTFlMTA0MzY4
NDhjNDZjMmI1NTk4YThiY2IzNzguLjJkOThkNTg0ZGY0OGE4YTNmMzE0MDdkY2ZmMzgwMTI4ZjA2
NmJiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTMxLDYgKzUzMSwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiAgICAgYm9vbCBkaXNwYXRjaERPTUFj
dGl2YXRlRXZlbnQoaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50
KTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCBib29sIGFsbG93c0Rv
dWJsZVRhcEdlc3R1cmUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBkaXNwYXRjaFRv
dWNoRXZlbnQoUGFzc1JlZlB0cjxUb3VjaEV2ZW50Pik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYjNiMjVmMTRhZTI5NDVjMmYy
ZDhhYmVjMTFjZmRkMmUxYjdkMDYyYS4uNTQ4YjQxNGU2ZGYyZWQ2MzI1NzE2ZDdkNDhiMDM0MDM2
ZDVlNTBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKQEAgLTExMTksNiArMTExOSwxMCBAQCBwdWJsaWM6CiAgICAgaW50IGluaXRpYWxMZXR0ZXJE
cm9wKCkgY29uc3QgeyByZXR1cm4gaW5pdGlhbExldHRlcigpLndpZHRoKCk7IH0KICAgICBpbnQg
aW5pdGlhbExldHRlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGluaXRpYWxMZXR0ZXIoKS5oZWln
aHQoKTsgfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBUb3VjaEFjdGlvbiB0b3Vj
aEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRvdWNoQWN0aW9uPihyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV90b3VjaEFjdGlvbik7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKICAgICBTY3JvbGxTbmFwVHlwZSBzY3JvbGxTbmFwVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbFNuYXBUeXBlPihyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9zY3JvbGxTbmFwVHlwZSk7IH0KICAgICBjb25zdCBTY3JvbGxTbmFwUG9pbnRzKiBzY3Jv
bGxTbmFwUG9pbnRzWCgpIGNvbnN0OwpAQCAtMTY3OSw2ICsxNjgzLDEwIEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIHNldEluaXRpYWxMZXR0ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2luaXRpYWxMZXR0ZXIsIHNpemUpOyB9CiAgICAg
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2b2lkIHNldFRvdWNoQWN0aW9uKFRvdWNo
QWN0aW9uIHQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90b3VjaEFjdGlvbiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHQpKTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQogICAgIHZvaWQgc2V0U2Nyb2xsU25hcFR5cGUoU2Nyb2xsU25hcFR5cGUgdHlw
ZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Njcm9sbFNuYXBUeXBlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4odHlwZSkpOyB9CiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwUG9pbnRz
WChzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsU25hcFBvaW50cz4pOwpAQCAtMjAzMiw2ICsyMDQwLDEw
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBXaWxsQ2hhbmdlRGF0YSogaW5pdGlhbFdpbGxDaGFu
Z2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAg
IHN0YXRpYyBUb3VjaEFjdGlvbiBpbml0aWFsVG91Y2hBY3Rpb24oKSB7IHJldHVybiBUb3VjaEFj
dGlvbjo6QXV0bzsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAg
IHN0YXRpYyBTY3JvbGxTbmFwVHlwZSBpbml0aWFsU2Nyb2xsU25hcFR5cGUoKSB7IHJldHVybiBT
Y3JvbGxTbmFwVHlwZTo6Tm9uZTsgfQogICAgIHN0YXRpYyBTY3JvbGxTbmFwUG9pbnRzKiBpbml0
aWFsU2Nyb2xsU25hcFBvaW50c1goKSB7IHJldHVybiBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4
IGJiYjRjYWExMTA0OGIyZGNiNzYxZmIxNTNjMzU0ZjJiZGZmYWI5MGYuLmFmY2I1ZmRkMzg4Zjdk
MTk4N2Q3MGJkY2VkZGFiMDY3NDdlYjI5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC02NDEsNiArNjQxLDEz
IEBAIGVudW0gSXNvbGF0aW9uIHsgSXNvbGF0aW9uQXV0bywgSXNvbGF0aW9uSXNvbGF0ZSB9Owog
Ly8gRmlsbCwgU3Ryb2tlLCBWaWV3Qm94IGFyZSBqdXN0IHVzZWQgZm9yIFNWRy4KIGVudW0gQ1NT
Qm94VHlwZSB7IEJveE1pc3NpbmcgPSAwLCBNYXJnaW5Cb3gsIEJvcmRlckJveCwgUGFkZGluZ0Jv
eCwgQ29udGVudEJveCwgRmlsbCwgU3Ryb2tlLCBWaWV3Qm94IH07CiAKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorZW51bSBjbGFzcyBUb3VjaEFjdGlvbiB7CisgICAgQXV0bywKKyAgICBNYW5p
cHVsYXRpb24KK307CisjZW5kaWYKKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiBlbnVt
IGNsYXNzIFNjcm9sbFNuYXBUeXBlIHsKICAgICBOb25lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3Bw
CmluZGV4IDA5ZmM5MTI4ZmQ2YTdhMDExOWU3MmM2OGJkYzhkODNiOWE1YmQyMDIuLjZlYmJkYmFh
MGVkYWE3ZTE5ZTMxZjE0ZDgxMjgyMWYzYjI5MjUyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5j
cHAKQEAgLTc5LDYgKzc5LDkgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YSgpCiAgICAgLCBtX2p1c3RpZnlDb250ZW50KFJlbmRlclN0eWxlOjpp
bml0aWFsQ29udGVudEFsaWdubWVudCgpKQogICAgICwgbV9qdXN0aWZ5SXRlbXMoUmVuZGVyU3R5
bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCiAgICAgLCBtX2p1c3RpZnlTZWxmKFJlbmRlclN0
eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgLCBtX3RvdWNoQWN0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5p
dGlhbFRvdWNoQWN0aW9uKCkpKQorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
ICAgICAsIG1fc2Nyb2xsU25hcFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxl
Ojppbml0aWFsU2Nyb2xsU25hcFR5cGUoKSkpCiAjZW5kaWYKQEAgLTE2OCw2ICsxNzEsOSBAQCBp
bmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwgbV9qdXN0aWZ5Q29udGVudChvLm1fanVzdGlm
eUNvbnRlbnQpCiAgICAgLCBtX2p1c3RpZnlJdGVtcyhvLm1fanVzdGlmeUl0ZW1zKQogICAgICwg
bV9qdXN0aWZ5U2VsZihvLm1fanVzdGlmeVNlbGYpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyAgICAsIG1fdG91Y2hBY3Rpb24oby5tX3RvdWNoQWN0aW9uKQorI2VuZGlmCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICAsIG1fc2Nyb2xsU25hcFR5cGUoby5tX3Njcm9sbFNuYXBU
eXBlKQogI2VuZGlmCkBAIC0yODIsNiArMjg4LDkgQEAgYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGMK
ICAgICAgICAgJiYgbV9ib3JkZXJGaXQgPT0gby5tX2JvcmRlckZpdAogICAgICAgICAmJiBtX3Rl
eHRDb21iaW5lID09IG8ubV90ZXh0Q29tYmluZQogICAgICAgICAmJiBtX3RleHREZWNvcmF0aW9u
U3R5bGUgPT0gby5tX3RleHREZWNvcmF0aW9uU3R5bGUKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgICAgICAmJiBtX3RvdWNoQWN0aW9uID09IG8ubV90b3VjaEFjdGlvbgorI2VuZGlmCiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAgICAgJiYgbV9zY3JvbGxTbmFwVHlwZSA9
PSBvLm1fc2Nyb2xsU25hcFR5cGUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggN2Fk
OTc2M2FhZjA0YmY2ODQ5Zjk2MTg1YjM5ODViNmUwMGY3NzkwMy4uMTI2YWVjNmI4MzgxNDA2M2I1
YzExM2YzYTRhODM5M2VkYTlmZmUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC0xODQsNiAr
MTg0LDEwIEBAIHB1YmxpYzoKICAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIG1fanVzdGlmeUl0
ZW1zOwogICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9qdXN0aWZ5U2VsZjsKIAorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgdW5zaWduZWQgbV90b3VjaEFjdGlvbiA6IDE7IC8vIFRv
dWNoQWN0aW9uCisjZW5kaWYKKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdW5z
aWduZWQgbV9zY3JvbGxTbmFwVHlwZSA6IDI7IC8vIFNjcm9sbFNuYXBUeXBlCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oCmluZGV4IGYwN2Q4NDMzMmFhM2ZkZjBjMDIyZmVjNDFkYjdmYjFjOTcwYTI2MGEu
LmQzZGQzNzliZjlhMDg4ZjM5ZjJiMDYyYTNhZTNiNDRjZTlhODU4YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aApAQCAtMTgxLDYgKzE4MSw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAjZW5k
aWYKIC0gKHZvaWQpX2NvbW1pdFBvdGVudGlhbFRhcEZhaWxlZDsKIC0gKHZvaWQpX2RpZEdldFRh
cEhpZ2hsaWdodEZvclJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRCBjb2xvcjooY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKWNvbG9yIHF1YWRzOihjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFk
PiYpaGlnaGxpZ2h0ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jil0b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJil0
b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXplJili
b3R0b21MZWZ0UmFkaXVzIGJvdHRvbVJpZ2h0UmFkaXVzOihjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jilib3R0b21SaWdodFJhZGl1czsKKy0gKHZvaWQpX2Rpc2FibGVEb3VibGVUYXBHZXN0dXJlc1Vu
dGlsVGFwSXNGaW5pc2hlZEZvclJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVlc3RJRDsKIAogLSAodm9p
ZClfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkSWZOZWNlc3Nhcnk6
KHVpbnQ2NF90KXJlcXVlc3RJRCBhbGxvd3NEb3VibGVUYXBab29tOihib29sKWFsbG93c0RvdWJs
ZVRhcFpvb20gdGFyZ2V0UmVjdDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3QgaXNSZXBs
YWNlZDooQk9PTClpc1JlcGxhY2VkRWxlbWVudCBtaW5pbXVtU2NhbGU6KGRvdWJsZSltaW5pbXVt
U2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNjYWxlOwogLSAodm9pZClfc3RhcnRB
c3Npc3RpbmdOb2RlOihjb25zdCBXZWJLaXQ6OkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJilpbmZv
cm1hdGlvbiB1c2VySXNJbnRlcmFjdGluZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZyBibHVyUHJl
dmlvdXNOb2RlOihCT09MKWJsdXJQcmV2aW91c05vZGUgdXNlck9iamVjdDooTlNPYmplY3QgPE5T
U2VjdXJlQ29kaW5nPiAqKXVzZXJPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYTFiODkwNjk1MjE2YTBjNWZh
OGRkNjI3NTBhYmM4M2VmMDNjMzc3Yi4uZjBiODA4MTA0NzI1NzJjNTYzMTkwYWEyNDhhODJlOWFj
MGU2ODNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtNjYzLDYgKzY2MywxMCBAQCB2b2lkIFdlYlBhZ2U6OnBvdGVu
dGlhbFRhcEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaQogICAgIG1fcG90ZW50aWFsVGFwTm9kZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkubm9kZVJl
c3BvbmRpbmdUb0NsaWNrRXZlbnRzKHBvc2l0aW9uLCBtX3BvdGVudGlhbFRhcExvY2F0aW9uKTsK
ICAgICBzZW5kVGFwSGlnaGxpZ2h0Rm9yTm9kZUlmTmVjZXNzYXJ5KHJlcXVlc3RJRCwgbV9wb3Rl
bnRpYWxUYXBOb2RlLmdldCgpKTsKICAgICBpZiAobV9wb3RlbnRpYWxUYXBOb2RlKSB7CisgICAg
ICAgIGlmICghbV9wb3RlbnRpYWxUYXBOb2RlLT5hbGxvd3NEb3VibGVUYXBHZXN0dXJlKCkpIHsK
KyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzYWJsZURvdWJsZVRh
cEdlc3R1cmVzVW50aWxUYXBJc0ZpbmlzaGVkSWZOZWNlc3NhcnkocmVxdWVzdElELCBmYWxzZSwg
RmxvYXRSZWN0KCksIGZhbHNlLCAwLCAwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KICAgICAgICAgRmxvYXRQb2ludCBvcmlnaW4gPSBwb3NpdGlvbjsKICAgICAgICAgRmxvYXRS
ZWN0IHJlbmRlclJlY3Q7CiAgICAgICAgIGJvb2wgaXNSZXBsYWNlZDsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMzU5ZDJl
OWY3NDU4MGVjYThmY2JiNmRiZGI2M2Y2MWU2ZmE1YTIyLi4xOTg0ZDI5ODFkZWU3NGRmZDAwODJh
NWRiOWEwMDFmMTMxMzY0MTRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMTAtMTUgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyBmb3IgaU9TCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk4NTQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIzMDE3MTQ1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0ZXN0cyB0byBjaGVjayB0aGF0IHRoZSBtYW5pcHVsYXRpb24gYW5kIGF1dG8g
dmFsdWVzIG9mIHRoZSB0b3VjaC1hY3Rpb24gcHJvcGVydHkgY2FuIGJlCisgICAgICAgIHByb3Bl
cmx5IHBhcnNlZCBhbmQgY2FuIGJlIG9idGFpbmVkIHRocm91Z2ggY29tcHV0ZWQgc3R5bGUuIEFs
c28gdGVzdHMgdGhhdCBwdXR0aW5nIHRvdWNoLWFjdGlvbjoKKyAgICAgICAgbWFuaXB1bGF0aW9u
IG9uIGFuIGVsZW1lbnQgYW5kIHRhcHBpbmcgcmVwZWF0ZWRseSBvbiBpdCB3aWxsIGZpcmUgY2xp
Y2tzIGluc3RlYWQgb2YgcmVjb2duaXppbmcKKyAgICAgICAgZG91YmxlIHRhcHMgYW5kIGNhdXNp
bmcgdGhlIHZpZXdwb3J0IHRvIHpvb20uCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIGNzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFj
dGlvbi1jb21wdXRlZC1zdHlsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3RvdWNoLWFj
dGlvbi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxh
dGlvbi1mYXN0LWNsaWNrcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3RvdWNoLWFjdGlv
bi90b3VjaC1hY3Rpb24tcGFyc2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNz
czMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1wYXJzaW5nLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTUt
MTAtMTkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVi
YXNlbGluaW5nIGZhc3QvZHluYW1pYy9pbnNlcnQtYmVmb3JlLXRhYmxlLXBhcnQtaW4tY29udGlu
dWF0aW9uLmh0bWwgZm9yIHdpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZGVmYTliNjI1ZDU2MWVh
ODU2NzQ0MzZmYzBjYjM2YWFhYzhmZjk3Yi4uMzdjMGQ3MGM2YzkxNWU2NGRhNTJlYWUxNjQ0MGU1
ZWYwMDNhMzJmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC02LDYgKzYsNyBAQAogIyBQbGF0Zm9y
bS1zcGVjaWZpYyB0ZXN0cy4gU2tpcHBlZCBoZXJlLCB0aGVuIHJlLWVuYWJsZWQgb24gdGhlIGFw
cHJvcHJpYXRlIHBsYXRmb3JtLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwog
Citjc3MzL3RvdWNoLWFjdGlvbiBbIFNraXAgXQogYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9y
IFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L2d0ayBbIFNraXAgXQogYWNjZXNzaWJpbGl0eS9tYWMg
WyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNo
LWFjdGlvbi1jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3Rv
dWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRhN2ZkY2UyNjJiMmUyMjY2MzEwN2ExOTgwYWZlYjRkOGJmNjI5ZGIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29t
cHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RpbmcgdGhlIGNv
bXB1dGVkIHN0eWxlIG9mIHRvdWNoLWFjdGlvbjoKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1Rlc3RpbmcgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247CitQQVNTIHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFj
dGlvbicpIGlzICdtYW5pcHVsYXRpb24nCitUZXN0aW5nIHRvdWNoLWFjdGlvbjogYXV0bzsKK1BB
U1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1
ZSgndG91Y2gtYWN0aW9uJykgaXMgJ2F1dG8nCitUZXN0aW5nIGEgYm9ndXMgdmFsdWUKK1BBU1Mg
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgn
dG91Y2gtYWN0aW9uJykgaXMgJ2F1dG8nCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1h
Y3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1dGVkLXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3Mz
L3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29tcHV0ZWQtc3R5bGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNGQ1YjVlNGZkYzM3MTY3ZDljZDRhMWIxNDkwNWQyN2YxZWM4M2M3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1dGVk
LXN0eWxlLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKworICAgIDxib2R5PgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVzdGluZyB0aGUgY29tcHV0ZWQgc3R5bGUgb2YgdG91
Y2gtYWN0aW9uOiIpOworCisgICAgICAgICAgICB2YXIgc3R5bGVzaGVldDsKKyAgICAgICAgICAg
IHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworICAg
ICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOworICAgICAg
ICAgICAgc3R5bGVzaGVldCA9IHN0eWxlRWxlbWVudC5zaGVldDsKKworICAgICAgICAgICAgZGVi
dWcoIlRlc3RpbmcgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247Iik7CisgICAgICAgICAgICBz
dHlsZXNoZWV0Lmluc2VydFJ1bGUoImJvZHkgeyB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsg
fSIsIDApOworICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIiwgIidtYW5pcHVs
YXRpb24nIik7CisgICAgICAgICAgICBzdHlsZXNoZWV0LmRlbGV0ZVJ1bGUoMCk7CisKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHRvdWNoLWFjdGlvbjogYXV0bzsiKTsKKyAgICAgICAgICAg
IHN0eWxlc2hlZXQuaW5zZXJ0UnVsZSgiYm9keSB7IHRvdWNoLWFjdGlvbjogYXV0bzsgfSIsIDAp
OworICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIiwgIidhdXRvJyIpOworICAg
ICAgICAgICAgc3R5bGVzaGVldC5kZWxldGVSdWxlKDApOworCisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBhIGJvZ3VzIHZhbHVlIik7CisgICAgICAgICAgICBzdHlsZXNoZWV0Lmluc2VydFJ1
bGUoImJvZHkgeyB0b3VjaC1hY3Rpb246IHR5cG87IH0iLCAwKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZh
bHVlKCd0b3VjaC1hY3Rpb24nKSIsICInYXV0byciKTsKKworICAgICAgICAgICAgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3Vj
aC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlj
a3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZTI2M2IyMGZmNTI2ZjhiMTc3NTFlYjhmZGE1
YTg5NzI1NDllOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFj
dGlvbi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDkgQEAKKworUmVwZWF0ZWRseSB0YXBwaW5nIG9uIHRoZSBidXR0b24gc2hvdWxk
IGZpcmUgY2xpY2sgZXZlbnRzLgorCitUaGlzIHRlc3QgaXMgYmVzdCBydW4gaW4gV2ViS2l0VGVz
dFJ1bm5lci4gSWYgeW91IGFyZSBydW5uaW5nIHRoaXMgdGVzdCBtYW51YWxseSwgdmVyaWZ5IHRo
YXQgdGFwcGluZyB0aGUgYnV0dG9uIGNhdXNlcyBhICJDbGljayEiIG1lc3NhZ2UgdG8gYXBwZWFy
IGJlbG93LCBhbmQgdGhhdCBjbGljayBvY2N1cnJlZCB3aXRob3V0IHRoZSByZWd1bGFyIDM1MG1z
IGRlbGF5IGZvciBkb3VibGUgdGFwcGluZy4KKworQ2xpY2shCitDbGljayEKK0NsaWNrIQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tbWFu
aXB1bGF0aW9uLWZhc3QtY2xpY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlv
bi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzM5YmRkZDRjYmZlYTVhZTEzZWRjNzc5OGE4MzU0MTU0M2NhNzIzMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1tYW5pcHVsYXRp
b24tZmFzdC1jbGlja3MuaHRtbApAQCAtMCwwICsxLDU5IEBACis8IURPQ1RZUEUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKwor
PGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAi
PgorCis8aGVhZD4KKyAgICA8c2NyaXB0IGlkPSJ1aS1zY3JpcHQiIHR5cGU9InRleHQvcGxhaW4i
PgorICAgICAgICAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBwZXJmb3JtVGFw
KCkgeworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zaW5nbGVUYXBBdFBvaW50KDIwMCwg
MjAwLCBwZXJmb3JtVGFwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBlcmZvcm1UYXAo
KTsKKyAgICAgICAgfSkoKTsKKyAgICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQ+CisgICAgdmFy
IGNsaWNrQ291bnQgPSAwOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0VUlTY3JpcHQoKSB7CisgICAgICAgIHJldHVy
biBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidWktc2NyaXB0IikudGV4dDsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAodGVzdFJ1bm5lci5ydW5VSVNjcmlw
dCkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VUlTY3JpcHQoKSwgZnVu
Y3Rpb24ocmVzdWx0KSB7IH0pOworICAgIH0KKyAgICBmdW5jdGlvbiBoYW5kbGVDbGlja2VkKCkg
eworICAgICAgICBjbGlja0NvdW50Kys7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkNsaWNrISIpKTsKKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKKyAgICAgICAg
aWYgKGNsaWNrQ291bnQgPT0gMykKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworICAgIH0KKyAgICA8L3NjcmlwdD4KKworICAgIDxzdHlsZT4KKyAgICBib2R5IHsKKyAgICAg
ICAgbWFyZ2luOiAwOworICAgIH0KKworICAgICN0YXJnZXQgeworICAgICAgICB0b3VjaC1hY3Rp
b246IG1hbmlwdWxhdGlvbjsKKyAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICBoZWlnaHQ6
IDQwMHB4OworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CisgICAgPGJ1dHRvbiBpZD0idGFyZ2V0IiBvbmNsaWNrPSJoYW5kbGVDbGlja2Vk
KCkiPjwvYnV0dG9uPgorICAgIDxwPlJlcGVhdGVkbHkgdGFwcGluZyBvbiB0aGUgYnV0dG9uIHNo
b3VsZCBmaXJlIGNsaWNrIGV2ZW50cy48L3A+CisgICAgPHA+VGhpcyB0ZXN0IGlzIGJlc3QgcnVu
IGluIFdlYktpdFRlc3RSdW5uZXIuIElmIHlvdSBhcmUgcnVubmluZyB0aGlzIHRlc3QgbWFudWFs
bHksIHZlcmlmeSB0aGF0IHRhcHBpbmcgdGhlIGJ1dHRvbiBjYXVzZXMgYSAiQ2xpY2shIiBtZXNz
YWdlIHRvIGFwcGVhciBiZWxvdywgYW5kIHRoYXQgY2xpY2sgb2NjdXJyZWQgd2l0aG91dCB0aGUg
cmVndWxhciAzNTBtcyBkZWxheSBmb3IgZG91YmxlIHRhcHBpbmcuPC9wPgorPC9ib2R5PgorCis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1h
Y3Rpb24tcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlv
bi90b3VjaC1hY3Rpb24tcGFyc2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk5YzlmODFh
NDMyMjNjZTM0YWFkYTdiOWQ4NzU3YWRkOTc1Zjc4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1wYXJzaW5nLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE1IEBACitUZXN0IHRoZSBwYXJzaW5nIG9mIHRvdWNoLWFjdGlvbi4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY3NzUnVsZS50eXBlIGlzIDEKK1BB
U1MgZGVjbGFyYXRpb24ubGVuZ3RoIGlzIDEKK1BBU1MgZGVjbGFyYXRpb24uZ2V0UHJvcGVydHlW
YWx1ZSgndG91Y2gtYWN0aW9uJykgaXMgJ21hbmlwdWxhdGlvbicKK1BBU1MgY3NzUnVsZS50eXBl
IGlzIDEKK1BBU1MgZGVjbGFyYXRpb24ubGVuZ3RoIGlzIDEKK1BBU1MgZGVjbGFyYXRpb24uZ2V0
UHJvcGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykgaXMgJ2F1dG8nCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbCBiL0xheW91dFRl
c3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1wYXJzaW5nLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzdkM2E2ZGFmZDc5MjhhZDA5ZjIxYThjZDgxYTM1MTljZjUyZTlhMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1wYXJzaW5n
Lmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
ICAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGUgcGFyc2luZyBvZiB0b3VjaC1hY3Rpb24uIik7CisK
KyAgICAgICAgICAgIHZhciBzdHlsZXNoZWV0LCBjc3NSdWxlLCBkZWNsYXJhdGlvbjsKKyAgICAg
ICAgICAgIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIp
OworICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOwor
ICAgICAgICAgICAgc3R5bGVzaGVldCA9IHN0eWxlRWxlbWVudC5zaGVldDsKKworICAgICAgICAg
ICAgc3R5bGVzaGVldC5pbnNlcnRSdWxlKCJib2R5IHsgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRp
b247IH0iLCAwKTsKKyAgICAgICAgICAgIGNzc1J1bGUgPSBzdHlsZXNoZWV0LmNzc1J1bGVzLml0
ZW0oMCk7CisgICAgICAgICAgICBzaG91bGRCZSgiY3NzUnVsZS50eXBlIiwgIjEiKTsKKyAgICAg
ICAgICAgIGRlY2xhcmF0aW9uID0gY3NzUnVsZS5zdHlsZTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJkZWNsYXJhdGlvbi5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImRlY2xh
cmF0aW9uLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIiwgIidtYW5pcHVsYXRpb24n
Iik7CisKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuaW5zZXJ0UnVsZSgiYm9keSB7IHRvdWNoLWFj
dGlvbjogYXV0bzsgfSIsIDApOworICAgICAgICAgICAgY3NzUnVsZSA9IHN0eWxlc2hlZXQuY3Nz
UnVsZXMuaXRlbSgwKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjc3NSdWxlLnR5cGUiLCAiMSIp
OworICAgICAgICAgICAgZGVjbGFyYXRpb24gPSBjc3NSdWxlLnN0eWxlOworICAgICAgICAgICAg
c2hvdWxkQmUoImRlY2xhcmF0aW9uLmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiZGVjbGFyYXRpb24uZ2V0UHJvcGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykiLCAiJ2F1dG8n
Iik7CisKKyAgICAgICAgICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwv
c2NyaXB0PgorCisKKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDMxMTAyODRkNzMyZGI5MjhmMzk3ZTZkYjE5NWM3YWQ5MGY2YTBlZjMuLmUwZWNjYTlkMTc2
YzcyOTc2ODJhZWZhNGNkOTQzZTIwOTQ1MzIzZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNiw2ICs2
LDcgQEAKICMgUGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuIFNraXBwZWQgZ2xvYmFsbHks
IHRoZW4gcmUtZW5hYmxlZCBoZXJlLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwogCitjc3MzL3RvdWNoLWFjdGlvbiBbIFBhc3MgXQogZmFzdC9oYXJuZXNzL3VpLXNpZGUtc2Ny
aXB0cy5odG1sIFsgUGFzcyBdCiBmYXN0L2hhcm5lc3MvY29uY3VycmVudC11aS1zaWRlLXNjcmlw
dHMuaHRtbCBbIFBhc3MgXQogZmFzdC96b29taW5nL2lvcyBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263506</attachid>
            <date>2015-10-19 13:35:13 -0700</date>
            <delta_ts>2015-10-19 14:58:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149854-20151019133431.patch</filename>
            <type>text/plain</type>
            <size>28257</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRjYjM5MzRkYjc5MzY5
YzdkM2MyYmRlNGM4YjE4ODJkZGUyZTQyYi4uOWNlMjdlNzczMjVmYmQzNWVjYTdlMWI4MDdkMGEy
MWRjZjAzMWZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTEwLTE5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMzAxNzE0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnRzIHRoZSBtYW5pcHVsYXRpb24gdmFsdWUgZm9yIHRoZSBDU1MgcHJvcGVy
dHkgdG91Y2gtYWN0aW9uLiBBZGRzIHN1cHBvcnQgZm9yCisgICAgICAgIHBhcnNpbmcgdGhlIHRv
dWNoLWFjdGlvbiBwcm9wZXJ0eSBhbmQgdHdvIG9mIGl0cyB2YWx1ZXM6IGF1dG8gYW5kIG1hbmlw
dWxhdGlvbi4KKworICAgICAgICBUZXN0czogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9u
LWNvbXB1dGVkLXN0eWxlLmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvdG91Y2gtYWN0aW9uL3Rv
dWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MuaHRtbAorICAgICAgICAgICAgICAg
Y3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbAorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgVG91Y2hBY3Rpb24pOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFsbG93c0RvdWJsZVRhcEdl
c3R1cmUpOiBIZXJlLCB3ZSBkZXRlcm1pbmUgd2hldGhlciBhbiBlbGVtZW50IHRoYXQgcmVzdWx0
ZWQgZnJvbQorICAgICAgICAgICAgaGl0LXRlc3RpbmcgYSB0b3VjaCBzaG91bGQgYWxsb3cgZG91
YmxlLXRhcCBnZXN0dXJlcy4gVG8gZG8gdGhpcywgd2Ugd2FsayB1cCB0aGUgZWxlbWVudCdzIHBh
cmVudHMsCisgICAgICAgICAgICBzdG9wcGluZyB3aGVuIHdlIGRldGVjdCBhbiBlbGVtZW50IHRo
YXQgZGlzYWxsb3dzIGRvdWJsZSB0YXAgZ2VzdHVyZXMgYnkgaGF2aW5nIGEgdG91Y2gtYWN0aW9u
IG90aGVyCisgICAgICAgICAgICB0aGFuIGF1dG8gb3IgYnkgaGl0dGluZyB0aGUgcm9vdCBub2Rl
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmFsbG93c0RvdWJsZVRhcEdlc3R1cmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxNS0xMC0xOSAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBXS1ZpZXcg
YmVpbmcgaW5zaWRlIFdLV2ViVmlldyBsZWFkcyB0byB3ZWlyZCBBUEkgaXNzdWVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggNmFmNzdmYjU3NDY0ZTFkODVjNDc4MGRkNjkxNWYzMDA3NzlmMGI0NC4uZTY3MmExOTY1
MDljZTY4YzdlNTE3YjliNzdkYTM4YTA0NTkzMjNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDE1LTEwLTE5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzAxNzE0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBtYW5pcHVsYXRpb24gdmFs
dWUgZm9yIHRoZSBDU1MgcHJvcGVydHkgdG91Y2gtYWN0aW9uLiBQZXJmb3JtcyBoaXQtdGVzdGlu
ZyB1cG9uIHJlY2VpdmluZyBhIHBvdGVudGlhbAorICAgICAgICB0YXAgdG8gZGV0ZXJtaW5lIHdo
ZXRoZXIgdG8gZGlzYWJsZSBkb3VibGUtdGFwIGdlc3R1cmUgcmVjb2duaXRpb24gb3ZlciB0aGUg
ZHVyYXRpb24gb2YgdGhlIHRhcC4gSWYgc28sIHNlbmRzIGEgbWVzc2FnZQorICAgICAgICBmcm9t
IHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgVUkgcHJvY2VzcyBpbmRpY2F0aW5nIHRoYXQgZG91Ymxl
LXRhcHBpbmcgc2hvdWxkIGJlIGRpc2FibGVkLCBhbGxvd2luZyBzaW5nbGUgdGFwcyB0bworICAg
ICAgICBhdm9pZCB0aGUgZGVsYXkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cG90ZW50aWFsVGFwQXRQb3Np
dGlvbik6CisKIDIwMTUtMTAtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgRXh0ZW5kIGZhc3QtY2xpY2tpbmcgYmVoYXZpb3IgdG8gdHJpZ2dlciBv
biBlbGVtZW50cyB0aGF0IGhhdmUgbmVnbGlnaWJsZSB6b29tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDEwZTZlN2E0NWQ5
NTg0Zjg1MGJjYzVjMDc4MDJmMDg3MDFiODI4MDUuLjU5YzE2Zjk2MDRmZjhlMGVkNDJlYjExZTNl
MGViNzk5ZGM0NTk5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zNDI4LDYgKzM0MjgsMTEgQEAgUmVmUHRyPENTU1Zh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwKICAgICAgICAgICAgIHJldHVybiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKnN0
eWxlLCBzdHlsZS0+c2Nyb2xsU25hcENvb3JkaW5hdGVzKCkpOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5VG91Y2hBY3Rpb246Cisg
ICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT50b3VjaEFj
dGlvbigpKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19UUkFJTElOR19XT1JEKQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5QXBwbGVUcmFpbGluZ1dvcmQ6CiAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLT50cmFpbGluZ1dvcmQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCmluZGV4IGQwZmE5NjE5MGVlNDQ2NmQ3N2Q2YTc5NWZiNTExNmM5YjNi
MjNiMjUuLjdjMTEwOTIzZDI0ZDExOWQwZDQ0YzcwZDM2ODg0ZjU4NDFiYjliOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC03NTQsNiArNzU0LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlk
LCBpbnQKICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUJyZWFrV29yZCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBi
cmVhazsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlUb3Vj
aEFjdGlvbjogLy8gYXV0byB8IG1hbmlwdWxhdGlvbgorICAgICAgICBpZiAodmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbmlwdWxhdGlvbikKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKKyNlbmRpZgogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNjcm9sbFNuYXBUeXBlOiAv
LyBub25lIHwgbWFuZGF0b3J5IHwgcHJveGltaXR5CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWFuZGF0b3J5IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVQcm94aW1pdHkpCkBAIC0xMTc2LDYgKzExODIsOSBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNLZXl3b3JkUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQpCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoK
ICAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyAgICBjYXNlIENTU1Byb3BlcnR5VG91Y2hBY3Rpb246CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3JvbGxTbmFwVHlwZToK
ICNlbmRpZgpAQCAtMzI2Nyw2ICszMjc2LDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXaGl0ZVNwYWNlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdvcmRXcmFwOgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVRvdWNoQWN0aW9uOgorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2Nyb2xsU25hcFR5cGU6CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4IDE0
ZmI5MGQxNzhhYTQ4OTMwYTA1MWU1NmNjNDkyZTBhMzBiYzMwZmIuLmUxMmVlMTcxYTQ2NDk5ZGU1
NGZiZGFhY2ZjYWYyMmYyZDJiYjBjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAtNTI1Miw2ICs1MjUyLDM3IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUZXh0Wm9vbSB0ZXh0
Wm9vbSkKICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU5vcm1hbDsKIH0KIAorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCit0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoVG91Y2hBY3Rpb24gdCkKKyAgICA6IENTU1ZhbHVlKFByaW1pdGl2
ZUNsYXNzKQoreworICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7CisgICAg
c3dpdGNoICh0KSB7CisgICAgY2FzZSBUb3VjaEFjdGlvbjo6QXV0bzoKKyAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRvdWNo
QWN0aW9uOjpNYW5pcHVsYXRpb246CisgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
TWFuaXB1bGF0aW9uOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUb3VjaEFjdGlvbigpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKKyAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkgewor
ICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICByZXR1cm4gVG91Y2hBY3Rpb246OkF1dG87
CisgICAgY2FzZSBDU1NWYWx1ZU1hbmlwdWxhdGlvbjoKKyAgICAgICAgcmV0dXJuIFRvdWNoQWN0
aW9uOjpNYW5pcHVsYXRpb247CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBUb3VjaEFjdGlvbjo6QXV0bzsK
K30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShTY3JvbGxTbmFwVHlwZSBl
KQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eU5hbWVzLmluCmluZGV4IDQwOTI1NDllZDU0NjFmMzk1NzdlMjY0NTdhMDk0OGEyN2E1MWU3
ODguLmYyYzIwNWFkMTJmNGRkYjk0Mzk0NzcxZGFhODY3MWZlZmRmNzY3N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC02NjYsNiArNjY2LDkgQEAgdXNlci16b29t
IFtTa2lwQnVpbGRlcl0KICNpZiBkZWZpbmVkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19T
Q1JPTExJTkcpICYmIEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcKIC13ZWJr
aXQtb3ZlcmZsb3ctc2Nyb2xsaW5nIFtJbmhlcml0ZWQsIE5hbWVGb3JNZXRob2RzPVVzZVRvdWNo
T3ZlcmZsb3dTY3JvbGxpbmcsIENvbnZlcnRlcj1PdmVyZmxvd1Njcm9sbGluZ10KICNlbmRpZgor
I2lmIGRlZmluZWQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJiYgRU5BQkxFX1RPVUNIX0VWRU5UUwor
dG91Y2gtYWN0aW9uCisjZW5kaWYKICNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdU
Rl9QTEFURk9STV9JT1MKIC13ZWJraXQtdG91Y2gtY2FsbG91dCBbSW5oZXJpdGVkLCBOYW1lRm9y
TWV0aG9kcz1Ub3VjaENhbGxvdXRFbmFibGVkLCBDb252ZXJ0ZXI9VG91Y2hDYWxsb3V0XQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IGRkNDg0ZmQzZmQ4
MjE1NWU3M2I3MTk4ZGZmOTUwMzQzZTVmOGNkMTMuLmI0YWExMjViODlmNTgwYTQyYWI3NTdmMDNi
NDdmODBmYmQzYWNkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBA
IC0xMTcyLDMgKzExNzIsOCBAQCBzdHlsZQogLy8gd2lsbC1jaGFuZ2UKIHNjcm9sbC1wb3NpdGlv
bgogY29udGVudHMKKworI2lmIGRlZmluZWQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJiYgRU5BQkxF
X1RPVUNIX0VWRU5UUworLy8gdG91Y2gtYWN0aW9uCittYW5pcHVsYXRpb24KKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCmluZGV4IGE2OGZhODdlOThmOTE1NjQwOWY4MDVkM2VlN2Y5OWIzMTc1
YzFhOGQuLjJhMmNmNTVmMDBjY2YxMzBhZTMxZDY5ZmZmN2IwYTY4MGE5YzRhNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKQEAgLTEzODEsNiArMTM4MSwxNyBAQCBVUkwgRWxlbWVudDo6YWJzb2x1
dGVMaW5rVVJMKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobGlua0F0dHJpYnV0ZSkpOwogfQogCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgRWxlbWVudDo6YWxsb3dzRG91YmxlVGFwR2VzdHVy
ZSgpIGNvbnN0Cit7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS50
b3VjaEFjdGlvbigpICE9IFRvdWNoQWN0aW9uOjpBdXRvKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgcmV0dXJuICFw
YXJlbnQgfHwgcGFyZW50LT5hbGxvd3NEb3VibGVUYXBHZXN0dXJlKCk7Cit9CisjZW5kaWYKKwog
U3R5bGVSZXNvbHZlciYgRWxlbWVudDo6c3R5bGVSZXNvbHZlcigpCiB7CiAgICAgaWYgKGF1dG8q
IHNoYWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5k
ZXggNGM3MTliZTdmZjRjMzllZDllYTBmMWU0NzE2OTBiMzIwMTNlNjcyYy4uNDdmZjQ4MTM1MWI3
MWEzMDNmODJiYjM5ZGU2NmU4ZjY5M2RjNzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00ODcs
NiArNDg3LDEwIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBhYnNvbHV0ZUxp
bmtVUkwoKSBjb25zdDsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCBi
b29sIGFsbG93c0RvdWJsZVRhcEdlc3R1cmUoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAg
ICAgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcigpOwogICAgIFJlZjxSZW5kZXJTdHlsZT4g
cmVzb2x2ZVN0eWxlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4
IDZhMTkzYWEyNjM4OTFlMTA0MzY4NDhjNDZjMmI1NTk4YThiY2IzNzguLjJkOThkNTg0ZGY0OGE4
YTNmMzE0MDdkY2ZmMzgwMTI4ZjA2NmJiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTMxLDYgKzUzMSwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiAg
ICAgYm9vbCBkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQoaW50IGRldGFpbCwgUGFzc1JlZlB0cjxF
dmVudD4gdW5kZXJseWluZ0V2ZW50KTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
dmlydHVhbCBib29sIGFsbG93c0RvdWJsZVRhcEdlc3R1cmUoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1Mp
CiAgICAgYm9vbCBkaXNwYXRjaFRvdWNoRXZlbnQoUGFzc1JlZlB0cjxUb3VjaEV2ZW50Pik7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggYjNiMjVmMTRhZTI5NDVjMmYyZDhhYmVjMTFjZmRkMmUxYjdkMDYyYS4uNTQ4YjQxNGU2ZGYy
ZWQ2MzI1NzE2ZDdkNDhiMDM0MDM2ZDVlNTBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTExMTksNiArMTExOSwxMCBAQCBwdWJsaWM6CiAg
ICAgaW50IGluaXRpYWxMZXR0ZXJEcm9wKCkgY29uc3QgeyByZXR1cm4gaW5pdGlhbExldHRlcigp
LndpZHRoKCk7IH0KICAgICBpbnQgaW5pdGlhbExldHRlckhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IGluaXRpYWxMZXR0ZXIoKS5oZWlnaHQoKTsgfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyAgICBUb3VjaEFjdGlvbiB0b3VjaEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFRvdWNoQWN0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90b3VjaEFjdGlvbik7IH0KKyNl
bmRpZgorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBTY3JvbGxTbmFwVHlwZSBz
Y3JvbGxTbmFwVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNjcm9sbFNuYXBUeXBl
PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zY3JvbGxTbmFwVHlwZSk7IH0KICAgICBjb25zdCBT
Y3JvbGxTbmFwUG9pbnRzKiBzY3JvbGxTbmFwUG9pbnRzWCgpIGNvbnN0OwpAQCAtMTY3OSw2ICsx
NjgzLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldEluaXRpYWxMZXR0ZXIoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2luaXRpYWxM
ZXR0ZXIsIHNpemUpOyB9CiAgICAgCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2b2lk
IHNldFRvdWNoQWN0aW9uKFRvdWNoQWN0aW9uIHQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV90b3VjaEFjdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHQpKTsgfQorI2VuZGlm
CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHZvaWQgc2V0U2Nyb2xsU25hcFR5
cGUoU2Nyb2xsU25hcFR5cGUgdHlwZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X3Njcm9sbFNuYXBUeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSkpOyB9CiAgICAgdm9p
ZCBzZXRTY3JvbGxTbmFwUG9pbnRzWChzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsU25hcFBvaW50cz4p
OwpAQCAtMjAzMiw2ICsyMDQwLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBXaWxsQ2hhbmdl
RGF0YSogaW5pdGlhbFdpbGxDaGFuZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CiAKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBUb3VjaEFjdGlvbiBpbml0aWFsVG91Y2hBY3Rp
b24oKSB7IHJldHVybiBUb3VjaEFjdGlvbjo6QXV0bzsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogICAgIHN0YXRpYyBTY3JvbGxTbmFwVHlwZSBpbml0aWFsU2Nyb2xs
U25hcFR5cGUoKSB7IHJldHVybiBTY3JvbGxTbmFwVHlwZTo6Tm9uZTsgfQogICAgIHN0YXRpYyBT
Y3JvbGxTbmFwUG9pbnRzKiBpbml0aWFsU2Nyb2xsU25hcFBvaW50c1goKSB7IHJldHVybiBudWxs
cHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZUNvbnN0YW50cy5oCmluZGV4IGJiYjRjYWExMTA0OGIyZGNiNzYxZmIxNTNjMzU0ZjJiZGZm
YWI5MGYuLmFmY2I1ZmRkMzg4ZjdkMTk4N2Q3MGJkY2VkZGFiMDY3NDdlYjI5NzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5oCkBAIC02NDEsNiArNjQxLDEzIEBAIGVudW0gSXNvbGF0aW9uIHsgSXNvbGF0aW9uQXV0bywg
SXNvbGF0aW9uSXNvbGF0ZSB9OwogLy8gRmlsbCwgU3Ryb2tlLCBWaWV3Qm94IGFyZSBqdXN0IHVz
ZWQgZm9yIFNWRy4KIGVudW0gQ1NTQm94VHlwZSB7IEJveE1pc3NpbmcgPSAwLCBNYXJnaW5Cb3gs
IEJvcmRlckJveCwgUGFkZGluZ0JveCwgQ29udGVudEJveCwgRmlsbCwgU3Ryb2tlLCBWaWV3Qm94
IH07CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorZW51bSBjbGFzcyBUb3VjaEFjdGlvbiB7
CisgICAgQXV0bywKKyAgICBNYW5pcHVsYXRpb24KK307CisjZW5kaWYKKwogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCiBlbnVtIGNsYXNzIFNjcm9sbFNuYXBUeXBlIHsKICAgICBOb25lLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDA5ZmM5MTI4ZmQ2YTdhMDExOWU3MmM2OGJkYzhk
ODNiOWE1YmQyMDIuLjZlYmJkYmFhMGVkYWE3ZTE5ZTMxZjE0ZDgxMjgyMWYzYjI5MjUyYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTc5LDYgKzc5LDkgQEAgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpCiAgICAgLCBtX2p1c3RpZnlD
b250ZW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29udGVudEFsaWdubWVudCgpKQogICAgICwgbV9q
dXN0aWZ5SXRlbXMoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCiAgICAgLCBt
X2p1c3RpZnlTZWxmKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBtX3RvdWNoQWN0aW9uKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRvdWNoQWN0aW9uKCkpKQorI2VuZGlmCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKICAgICAsIG1fc2Nyb2xsU25hcFR5cGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUoKSkpCiAjZW5kaWYK
QEAgLTE2OCw2ICsxNzEsOSBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwgbV9qdXN0
aWZ5Q29udGVudChvLm1fanVzdGlmeUNvbnRlbnQpCiAgICAgLCBtX2p1c3RpZnlJdGVtcyhvLm1f
anVzdGlmeUl0ZW1zKQogICAgICwgbV9qdXN0aWZ5U2VsZihvLm1fanVzdGlmeVNlbGYpCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIG1fdG91Y2hBY3Rpb24oby5tX3RvdWNoQWN0aW9u
KQorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAsIG1fc2Nyb2xsU25h
cFR5cGUoby5tX3Njcm9sbFNuYXBUeXBlKQogI2VuZGlmCkBAIC0yODIsNiArMjg4LDkgQEAgYm9v
bCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEmIG8pIGMKICAgICAgICAgJiYgbV9ib3JkZXJGaXQgPT0gby5tX2JvcmRl
ckZpdAogICAgICAgICAmJiBtX3RleHRDb21iaW5lID09IG8ubV90ZXh0Q29tYmluZQogICAgICAg
ICAmJiBtX3RleHREZWNvcmF0aW9uU3R5bGUgPT0gby5tX3RleHREZWNvcmF0aW9uU3R5bGUKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICAmJiBtX3RvdWNoQWN0aW9uID09IG8ubV90
b3VjaEFjdGlvbgorI2VuZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAgICAg
JiYgbV9zY3JvbGxTbmFwVHlwZSA9PSBvLm1fc2Nyb2xsU25hcFR5cGUKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmgKaW5kZXggN2FkOTc2M2FhZjA0YmY2ODQ5Zjk2MTg1YjM5ODViNmUwMGY3Nzkw
My4uMTI2YWVjNmI4MzgxNDA2M2I1YzExM2YzYTRhODM5M2VkYTlmZmUzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oCkBAIC0xODQsNiArMTg0LDEwIEBAIHB1YmxpYzoKICAgICBTdHlsZVNlbGZBbGln
bm1lbnREYXRhIG1fanVzdGlmeUl0ZW1zOwogICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9q
dXN0aWZ5U2VsZjsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdW5zaWduZWQgbV90
b3VjaEFjdGlvbiA6IDE7IC8vIFRvdWNoQWN0aW9uCisjZW5kaWYKKwogI2lmIEVOQUJMRShDU1Nf
U0NST0xMX1NOQVApCiAgICAgdW5zaWduZWQgbV9zY3JvbGxTbmFwVHlwZSA6IDI7IC8vIFNjcm9s
bFNuYXBUeXBlCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGYwN2Q4NDMzMmFhM2ZkZjBjMDIy
ZmVjNDFkYjdmYjFjOTcwYTI2MGEuLmQzZGQzNzliZjlhMDg4ZjM5ZjJiMDYyYTNhZTNiNDRjZTlh
ODU4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTgxLDYgKzE4MSw3IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAjZW5kaWYKIC0gKHZvaWQpX2NvbW1pdFBvdGVudGlhbFRhcEZhaWxl
ZDsKIC0gKHZvaWQpX2RpZEdldFRhcEhpZ2hsaWdodEZvclJlcXVlc3Q6KHVpbnQ2NF90KXJlcXVl
c3RJRCBjb2xvcjooY29uc3QgV2ViQ29yZTo6Q29sb3ImKWNvbG9yIHF1YWRzOihjb25zdCBWZWN0
b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYpaGlnaGxpZ2h0ZWRRdWFkcyB0b3BMZWZ0UmFkaXVzOihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJil0b3BMZWZ0UmFkaXVzIHRvcFJpZ2h0UmFkaXVzOihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJil0b3BSaWdodFJhZGl1cyBib3R0b21MZWZ0UmFkaXVzOihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21MZWZ0UmFkaXVzIGJvdHRvbVJpZ2h0UmFkaXVzOihj
b25zdCBXZWJDb3JlOjpJbnRTaXplJilib3R0b21SaWdodFJhZGl1czsKKy0gKHZvaWQpX2Rpc2Fi
bGVEb3VibGVUYXBHZXN0dXJlc1VudGlsVGFwSXNGaW5pc2hlZEZvclJlcXVlc3Q6KHVpbnQ2NF90
KXJlcXVlc3RJRDsKIAogLSAodm9pZClfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJ
c0ZpbmlzaGVkSWZOZWNlc3Nhcnk6KHVpbnQ2NF90KXJlcXVlc3RJRCBhbGxvd3NEb3VibGVUYXBa
b29tOihib29sKWFsbG93c0RvdWJsZVRhcFpvb20gdGFyZ2V0UmVjdDooV2ViQ29yZTo6RmxvYXRS
ZWN0KXRhcmdldFJlY3QgaXNSZXBsYWNlZDooQk9PTClpc1JlcGxhY2VkRWxlbWVudCBtaW5pbXVt
U2NhbGU6KGRvdWJsZSltaW5pbXVtU2NhbGUgbWF4aW11bVNjYWxlOihkb3VibGUpbWF4aW11bVNj
YWxlOwogLSAodm9pZClfc3RhcnRBc3Npc3RpbmdOb2RlOihjb25zdCBXZWJLaXQ6OkFzc2lzdGVk
Tm9kZUluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1c2VySXNJbnRlcmFjdGluZzooQk9PTCl1c2Vy
SXNJbnRlcmFjdGluZyBibHVyUHJldmlvdXNOb2RlOihCT09MKWJsdXJQcmV2aW91c05vZGUgdXNl
ck9iamVjdDooTlNPYmplY3QgPE5TU2VjdXJlQ29kaW5nPiAqKXVzZXJPYmplY3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggYTFiODkwNjk1MjE2YTBjNWZhOGRkNjI3NTBhYmM4M2VmMDNjMzc3Yi4uZTQwYTYxZGY1NDg3
MzExM2M0NDE5ZTk3ZWVkYWE4OWVkOWViOGQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNjYzLDYgKzY2MywxMiBA
QCB2b2lkIFdlYlBhZ2U6OnBvdGVudGlhbFRhcEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaQogICAgIG1fcG90ZW50aWFsVGFwTm9kZSA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCkubm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzKHBvc2l0aW9uLCBtX3Bv
dGVudGlhbFRhcExvY2F0aW9uKTsKICAgICBzZW5kVGFwSGlnaGxpZ2h0Rm9yTm9kZUlmTmVjZXNz
YXJ5KHJlcXVlc3RJRCwgbV9wb3RlbnRpYWxUYXBOb2RlLmdldCgpKTsKICAgICBpZiAobV9wb3Rl
bnRpYWxUYXBOb2RlKSB7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgaWYgKCFt
X3BvdGVudGlhbFRhcE5vZGUtPmFsbG93c0RvdWJsZVRhcEdlc3R1cmUoKSkgeworICAgICAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNV
bnRpbFRhcElzRmluaXNoZWRJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIGZhbHNlLCBGbG9hdFJlY3Qo
KSwgZmFsc2UsIDAsIDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlm
CiAgICAgICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gcG9zaXRpb247CiAgICAgICAgIEZsb2F0UmVj
dCByZW5kZXJSZWN0OwogICAgICAgICBib29sIGlzUmVwbGFjZWQ7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTM1OWQyZTlm
NzQ1ODBlY2E4ZmNiYjZkYmRiNjNmNjFlNmZhNWEyMi4uZTQ0ODQxMjU1ZWVlNzA3OWVlNzM1YzA2
MGMzOWQxYTAyZjA3NWMwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTEwLTE5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMzAxNzE0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdHMgdG8gY2hlY2sgdGhhdCB0aGUgbWFuaXB1bGF0aW9uIGFuZCBhdXRvIHZh
bHVlcyBvZiB0aGUgdG91Y2gtYWN0aW9uIHByb3BlcnR5IGNhbiBiZQorICAgICAgICBwcm9wZXJs
eSBwYXJzZWQgYW5kIGNhbiBiZSBvYnRhaW5lZCB0aHJvdWdoIGNvbXB1dGVkIHN0eWxlLiBBbHNv
IHRlc3RzIHRoYXQgcHV0dGluZyB0b3VjaC1hY3Rpb246CisgICAgICAgIG1hbmlwdWxhdGlvbiBv
biBhbiBlbGVtZW50IGFuZCB0YXBwaW5nIHJlcGVhdGVkbHkgb24gaXQgd2lsbCBmaXJlIGNsaWNr
cyBpbnN0ZWFkIG9mIHJlY29nbml6aW5nCisgICAgICAgIGRvdWJsZSB0YXBzIGFuZCBjYXVzaW5n
IHRoZSB2aWV3cG9ydCB0byB6b29tLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBjc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29tcHV0ZWQtc3R5bGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rp
b24tY29tcHV0ZWQtc3R5bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy90b3VjaC1hY3Rp
b24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNrcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGNzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1tYW5pcHVsYXRp
b24tZmFzdC1jbGlja3MuaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzMy90b3VjaC1hY3Rpb24v
dG91Y2gtYWN0aW9uLXBhcnNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3Mz
L3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE1LTEw
LTE5ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYmFz
ZWxpbmluZyBmYXN0L2R5bmFtaWMvaW5zZXJ0LWJlZm9yZS10YWJsZS1wYXJ0LWluLWNvbnRpbnVh
dGlvbi5odG1sIGZvciB3aW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRlZmE5YjYyNWQ1NjFlYTg1
Njc0NDM2ZmMwY2IzNmFhYWM4ZmY5N2IuLjM3YzBkNzBjNmM5MTVlNjRkYTUyZWFlMTY0NDBlNWVm
MDAzYTMyZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNiw2ICs2LDcgQEAKICMgUGxhdGZvcm0t
c3BlY2lmaWMgdGVzdHMuIFNraXBwZWQgaGVyZSwgdGhlbiByZS1lbmFibGVkIG9uIHRoZSBhcHBy
b3ByaWF0ZSBwbGF0Zm9ybS4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAor
Y3NzMy90b3VjaC1hY3Rpb24gWyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvciBb
IFNraXAgXQogYWNjZXNzaWJpbGl0eS9ndGsgWyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkvbWFjIFsg
U2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1h
Y3Rpb24tY29tcHV0ZWQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy90b3Vj
aC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYTdmZGNlMjYyYjJlMjI2NjMxMDdhMTk4MGFmZWI0ZDhiZjYyOWRiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1
dGVkLXN0eWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0aW5nIHRoZSBjb21w
dXRlZCBzdHlsZSBvZiB0b3VjaC1hY3Rpb246CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitUZXN0aW5nIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOworUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rp
b24nKSBpcyAnbWFuaXB1bGF0aW9uJworVGVzdGluZyB0b3VjaC1hY3Rpb246IGF1dG87CitQQVNT
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUo
J3RvdWNoLWFjdGlvbicpIGlzICdhdXRvJworVGVzdGluZyBhIGJvZ3VzIHZhbHVlCitQQVNTIHdp
bmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3Rv
dWNoLWFjdGlvbicpIGlzICdhdXRvJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0
aW9uL3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy90
b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1dGVkLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzRkNWI1ZTRmZGMzNzE2N2Q5Y2Q0YTFiMTQ5MDVkMjdmMWVjODNjNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1jb21wdXRlZC1z
dHlsZS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisKKyAgICA8Ym9keT4KKyAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RpbmcgdGhlIGNvbXB1dGVkIHN0eWxlIG9mIHRvdWNo
LWFjdGlvbjoiKTsKKworICAgICAgICAgICAgdmFyIHN0eWxlc2hlZXQ7CisgICAgICAgICAgICB2
YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAgICAgICAg
ICAgIHN0eWxlc2hlZXQgPSBzdHlsZUVsZW1lbnQuc2hlZXQ7CisKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyIpOworICAgICAgICAgICAgc3R5
bGVzaGVldC5pbnNlcnRSdWxlKCJib2R5IHsgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH0i
LCAwKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24nKSIsICInbWFuaXB1bGF0
aW9uJyIpOworICAgICAgICAgICAgc3R5bGVzaGVldC5kZWxldGVSdWxlKDApOworCisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyB0b3VjaC1hY3Rpb246IGF1dG87Iik7CisgICAgICAgICAgICBz
dHlsZXNoZWV0Lmluc2VydFJ1bGUoImJvZHkgeyB0b3VjaC1hY3Rpb246IGF1dG87IH0iLCAwKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5i
b2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24nKSIsICInYXV0byciKTsKKyAgICAg
ICAgICAgIHN0eWxlc2hlZXQuZGVsZXRlUnVsZSgwKTsKKworICAgICAgICAgICAgZGVidWcoIlRl
c3RpbmcgYSBib2d1cyB2YWx1ZSIpOworICAgICAgICAgICAgc3R5bGVzaGVldC5pbnNlcnRSdWxl
KCJib2R5IHsgdG91Y2gtYWN0aW9uOiB0eXBvOyB9IiwgMCk7CisgICAgICAgICAgICBzaG91bGRC
ZSgid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1
ZSgndG91Y2gtYWN0aW9uJykiLCAiJ2F1dG8nIik7CisKKyAgICAgICAgICAgIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gt
YWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xpY2tz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWUyNjNiMjBmZjUyNmY4YjE3NzUxZWI4ZmRhNWE4
OTcyNTQ5ZTk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rp
b24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNrcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw5IEBACisKK1JlcGVhdGVkbHkgdGFwcGluZyBvbiB0aGUgYnV0dG9uIHNob3VsZCBm
aXJlIGNsaWNrIGV2ZW50cy4KKworVGhpcyB0ZXN0IGlzIGJlc3QgcnVuIGluIFdlYktpdFRlc3RS
dW5uZXIuIElmIHlvdSBhcmUgcnVubmluZyB0aGlzIHRlc3QgbWFudWFsbHksIHZlcmlmeSB0aGF0
IHRhcHBpbmcgdGhlIGJ1dHRvbiBjYXVzZXMgYSAiQ2xpY2shIiBtZXNzYWdlIHRvIGFwcGVhciBi
ZWxvdywgYW5kIHRoYXQgY2xpY2sgb2NjdXJyZWQgd2l0aG91dCB0aGUgcmVndWxhciAzNTBtcyBk
ZWxheSBmb3IgZG91YmxlIHRhcHBpbmcuCisKK0NsaWNrIQorQ2xpY2shCitDbGljayEKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlw
dWxhdGlvbi1mYXN0LWNsaWNrcy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24v
dG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNrcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMz
OWJkZGQ0Y2JmZWE1YWUxM2VkYzc3OThhODM1NDE1NDNjYTcyMzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0aW9u
LWZhc3QtY2xpY2tzLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+CisKKzxo
dG1sPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wIj4K
KworPGhlYWQ+CisgICAgPHNjcmlwdCBpZD0idWktc2NyaXB0IiB0eXBlPSJ0ZXh0L3BsYWluIj4K
KyAgICAgICAgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZnVuY3Rpb24gcGVyZm9ybVRhcCgp
IHsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc2luZ2xlVGFwQXRQb2ludCgyMDAsIDIw
MCwgcGVyZm9ybVRhcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwZXJmb3JtVGFwKCk7
CisgICAgICAgIH0pKCk7CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0PgorICAgIHZhciBj
bGlja0NvdW50ID0gMDsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFVJU2NyaXB0KCkgeworICAgICAgICByZXR1cm4g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVpLXNjcmlwdCIpLnRleHQ7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIucnVuVUlTY3JpcHQp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVJU2NyaXB0KCksIGZ1bmN0
aW9uKHJlc3VsdCkgeyB9KTsKKyAgICB9CisgICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2tlZCgpIHsK
KyAgICAgICAgY2xpY2tDb3VudCsrOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJDbGljayEiKSk7CisgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7CisgICAgICAgIGlm
IChjbGlja0NvdW50ID09IDMpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICB9CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c3R5bGU+CisgICAgYm9keSB7CisgICAgICAg
IG1hcmdpbjogMDsKKyAgICB9CisKKyAgICAjdGFyZ2V0IHsKKyAgICAgICAgdG91Y2gtYWN0aW9u
OiBtYW5pcHVsYXRpb247CisgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgaGVpZ2h0OiA0
MDBweDsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorICAgIDxidXR0b24gaWQ9InRhcmdldCIgb25jbGljaz0iaGFuZGxlQ2xpY2tlZCgp
Ij48L2J1dHRvbj4KKyAgICA8cD5SZXBlYXRlZGx5IHRhcHBpbmcgb24gdGhlIGJ1dHRvbiBzaG91
bGQgZmlyZSBjbGljayBldmVudHMuPC9wPgorICAgIDxwPlRoaXMgdGVzdCBpcyBiZXN0IHJ1biBp
biBXZWJLaXRUZXN0UnVubmVyLiBJZiB5b3UgYXJlIHJ1bm5pbmcgdGhpcyB0ZXN0IG1hbnVhbGx5
LCB2ZXJpZnkgdGhhdCB0YXBwaW5nIHRoZSBidXR0b24gY2F1c2VzIGEgIkNsaWNrISIgbWVzc2Fn
ZSB0byBhcHBlYXIgYmVsb3csIGFuZCB0aGF0IGNsaWNrIG9jY3VycmVkIHdpdGhvdXQgdGhlIHJl
Z3VsYXIgMzUwbXMgZGVsYXkgZm9yIGRvdWJsZSB0YXBwaW5nLjwvcD4KKzwvYm9keT4KKworPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0
aW9uLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24v
dG91Y2gtYWN0aW9uLXBhcnNpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OWM5ZjgxYTQz
MjIzY2UzNGFhZGE3YjlkODc1N2FkZDk3NWY3OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNSBAQAorVGVzdCB0aGUgcGFyc2luZyBvZiB0b3VjaC1hY3Rpb24uCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNzc1J1bGUudHlwZSBpcyAxCitQQVNT
IGRlY2xhcmF0aW9uLmxlbmd0aCBpcyAxCitQQVNTIGRlY2xhcmF0aW9uLmdldFByb3BlcnR5VmFs
dWUoJ3RvdWNoLWFjdGlvbicpIGlzICdtYW5pcHVsYXRpb24nCitQQVNTIGNzc1J1bGUudHlwZSBp
cyAxCitQQVNTIGRlY2xhcmF0aW9uLmxlbmd0aCBpcyAxCitQQVNTIGRlY2xhcmF0aW9uLmdldFBy
b3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIGlzICdhdXRvJworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM3ZDNhNmRhZmQ3OTI4YWQwOWYyMWE4Y2Q4MWEzNTE5Y2Y1MmU5YTEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy5o
dG1sCkBAIC0wLDAgKzEsMzcgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAgICAgICA8c2NyaXB0PgorICAgICAgICAg
ICAgZGVzY3JpcHRpb24oIlRlc3QgdGhlIHBhcnNpbmcgb2YgdG91Y2gtYWN0aW9uLiIpOworCisg
ICAgICAgICAgICB2YXIgc3R5bGVzaGVldCwgY3NzUnVsZSwgZGVjbGFyYXRpb247CisgICAgICAg
ICAgICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAg
ICAgICAgICAgIHN0eWxlc2hlZXQgPSBzdHlsZUVsZW1lbnQuc2hlZXQ7CisKKyAgICAgICAgICAg
IHN0eWxlc2hlZXQuaW5zZXJ0UnVsZSgiYm9keSB7IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9u
OyB9IiwgMCk7CisgICAgICAgICAgICBjc3NSdWxlID0gc3R5bGVzaGVldC5jc3NSdWxlcy5pdGVt
KDApOworICAgICAgICAgICAgc2hvdWxkQmUoImNzc1J1bGUudHlwZSIsICIxIik7CisgICAgICAg
ICAgICBkZWNsYXJhdGlvbiA9IGNzc1J1bGUuc3R5bGU7CisgICAgICAgICAgICBzaG91bGRCZSgi
ZGVjbGFyYXRpb24ubGVuZ3RoIiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJkZWNsYXJh
dGlvbi5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24nKSIsICInbWFuaXB1bGF0aW9uJyIp
OworCisgICAgICAgICAgICBzdHlsZXNoZWV0Lmluc2VydFJ1bGUoImJvZHkgeyB0b3VjaC1hY3Rp
b246IGF1dG87IH0iLCAwKTsKKyAgICAgICAgICAgIGNzc1J1bGUgPSBzdHlsZXNoZWV0LmNzc1J1
bGVzLml0ZW0oMCk7CisgICAgICAgICAgICBzaG91bGRCZSgiY3NzUnVsZS50eXBlIiwgIjEiKTsK
KyAgICAgICAgICAgIGRlY2xhcmF0aW9uID0gY3NzUnVsZS5zdHlsZTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJkZWNsYXJhdGlvbi5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImRlY2xhcmF0aW9uLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFjdGlvbicpIiwgIidhdXRvJyIp
OworCisgICAgICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICA8L3Nj
cmlwdD4KKworCisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCAzMTEwMjg0ZDczMmRiOTI4ZjM5N2U2ZGIxOTVjN2FkOTBmNmEwZWYzLi5lMGVjY2E5ZDE3NmM3
Mjk3NjgyYWVmYTRjZDk0M2UyMDk0NTMyM2RjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYsNiArNiw3
IEBACiAjIFBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLiBTa2lwcGVkIGdsb2JhbGx5LCB0
aGVuIHJlLWVuYWJsZWQgaGVyZS4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
IAorY3NzMy90b3VjaC1hY3Rpb24gWyBQYXNzIF0KIGZhc3QvaGFybmVzcy91aS1zaWRlLXNjcmlw
dHMuaHRtbCBbIFBhc3MgXQogZmFzdC9oYXJuZXNzL2NvbmN1cnJlbnQtdWktc2lkZS1zY3JpcHRz
Lmh0bWwgWyBQYXNzIF0KIGZhc3Qvem9vbWluZy9pb3MgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263514</attachid>
            <date>2015-10-19 14:58:36 -0700</date>
            <delta_ts>2015-10-21 15:03:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149854-20151019145755.patch</filename>
            <type>text/plain</type>
            <size>26707</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ3ZmY1NGJjOTkzYzYz
YWE4ZWZlMjRkOWMzZjE1YTEzYzFlN2VkNy4uMmQxNWVlNjQ4Y2ViMGYyZGIxMDRiZmE2NTY3ZjJm
ZTk5MDZhMzRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTEwLTE5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgZm9yIGlPUworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMzAxNzE0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnRzIHRoZSBtYW5pcHVsYXRpb24gdmFsdWUgZm9yIHRoZSBDU1MgcHJvcGVy
dHkgdG91Y2gtYWN0aW9uLiBBZGRzIHN1cHBvcnQgZm9yCisgICAgICAgIHBhcnNpbmcgdGhlIHRv
dWNoLWFjdGlvbiBwcm9wZXJ0eSBhbmQgdHdvIG9mIGl0cyB2YWx1ZXM6IGF1dG8gYW5kIG1hbmlw
dWxhdGlvbi4KKworICAgICAgICBUZXN0czogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9u
LWNvbXB1dGVkLXN0eWxlLmh0bWwKKyAgICAgICAgICAgICAgIGNzczMvdG91Y2gtYWN0aW9uL3Rv
dWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MuaHRtbAorICAgICAgICAgICAgICAg
Y3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbAorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0tleXdvcmRQcm9wZXJ0eUlEKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgVG91Y2hBY3Rpb24pOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFsbG93c0RvdWJsZVRhcEdl
c3R1cmUpOiBIZXJlLCB3ZSBkZXRlcm1pbmUgd2hldGhlciBhbiBlbGVtZW50IHRoYXQgcmVzdWx0
ZWQgZnJvbQorICAgICAgICAgICAgaGl0LXRlc3RpbmcgYSB0b3VjaCBzaG91bGQgYWxsb3cgZG91
YmxlLXRhcCBnZXN0dXJlcy4gVG8gZG8gdGhpcywgd2Ugd2FsayB1cCB0aGUgZWxlbWVudCdzIHBh
cmVudHMsCisgICAgICAgICAgICBzdG9wcGluZyB3aGVuIHdlIGRldGVjdCBhbiBlbGVtZW50IHRo
YXQgZGlzYWxsb3dzIGRvdWJsZSB0YXAgZ2VzdHVyZXMgYnkgaGF2aW5nIGEgdG91Y2gtYWN0aW9u
IG90aGVyCisgICAgICAgICAgICB0aGFuIGF1dG8gb3IgYnkgaGl0dGluZyB0aGUgcm9vdCBub2Rl
LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmFsbG93c0RvdWJsZVRhcEdlc3R1cmUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxNS0xMC0xOSAg
QmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDc4YjAzOGQ4OGI4OTQ1YmVhODVkMDk5MTg2MDcwODExOTQxYzNhYzQuLjAwNGRj
YTc1YTE1MTMwZTQwNTkwYzAzNmIwNDgyMjhiNWMwZDNkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxNS0xMC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IGZvciBp
T1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTg1
NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMwMTcxNDU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgbWFuaXB1bGF0aW9u
IHZhbHVlIGZvciB0aGUgQ1NTIHByb3BlcnR5IHRvdWNoLWFjdGlvbi4gUGVyZm9ybXMgaGl0LXRl
c3RpbmcgdXBvbiByZWNlaXZpbmcgYSBwb3RlbnRpYWwKKyAgICAgICAgdGFwIHRvIGRldGVybWlu
ZSB3aGV0aGVyIHRvIGRpc2FibGUgZG91YmxlLXRhcCBnZXN0dXJlIHJlY29nbml0aW9uIG92ZXIg
dGhlIGR1cmF0aW9uIG9mIHRoZSB0YXAuIElmIHNvLCBzZW5kcyBhIG1lc3NhZ2UKKyAgICAgICAg
ZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3MgaW5kaWNhdGluZyB0aGF0IGRv
dWJsZS10YXBwaW5nIHNob3VsZCBiZSBkaXNhYmxlZCwgYWxsb3dpbmcgc2luZ2xlIHRhcHMgdG8K
KyAgICAgICAgYXZvaWQgdGhlIGRlbGF5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwb3RlbnRpYWxU
YXBBdFBvc2l0aW9uKToKKwogMjAxNS0xMC0xOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5MTMwNy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggMTBlNmU3YTQ1ZDk1ODRmODUwYmNjNWMwNzgwMmYwODcwMWI4MjgwNS4uNTljMTZm
OTYwNGZmOGUwZWQ0MmViMTFlM2UwZWI3OTlkYzQ1OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTM0MjgsNiArMzQy
OCwxMSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgcmV0dXJuIHNjcm9s
bFNuYXBDb29yZGluYXRlcygqc3R5bGUsIHN0eWxlLT5zY3JvbGxTbmFwQ29vcmRpbmF0ZXMoKSk7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlUb3VjaEFjdGlvbjoKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoc3R5bGUtPnRvdWNoQWN0aW9uKCkpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX1RS
QUlMSU5HX1dPUkQpCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBcHBsZVRyYWlsaW5nV29yZDoK
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUtPnRyYWls
aW5nV29yZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZDBmYTk2MTkwZWU0NDY2
ZDc3ZDZhNzk1ZmI1MTE2YzliM2IyM2IyNS4uN2MxMTA5MjNkMjRkMTE5ZDBkNDRjNzBkMzY4ODRm
NTg0MWJiOWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTc1NCw2ICs3NTQsMTIg
QEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SWQsIGludAogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1
ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtXb3JkKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRvdWNoQWN0aW9uOiAvLyBhdXRvIHwgbWFuaXB1bGF0aW9uCisgICAg
ICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWFu
aXB1bGF0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworI2Vu
ZGlmCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0U2Nyb2xsU25hcFR5cGU6IC8vIG5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkKICAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYW5k
YXRvcnkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByb3hpbWl0eSkKQEAgLTExNzYsNiArMTE4Miw5
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdvcmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJZCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKICAgICBjYXNlIENT
U1Byb3BlcnR5V29yZEJyZWFrOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjoKKyNl
bmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFNjcm9sbFNuYXBUeXBlOgogI2VuZGlmCkBAIC0zMjY3LDYgKzMyNzYsOSBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdv
cmRCcmVhazoKICAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6CisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyAgICBjYXNlIENTU1Byb3BlcnR5VG91Y2hBY3Rpb246CisjZW5kaWYKICNpZiBF
TkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTY3JvbGxT
bmFwVHlwZToKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgKaW5kZXggMTRmYjkwZDE3OGFhNDg5MzBhMDUxZTU2Y2M0OTJlMGEzMGJjMzBm
Yi4uZTEyZWUxNzFhNDY0OTlkZTU0ZmJkYWFjZmNhZjIyZjJkMmJiMGNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC01MjUyLDYgKzUy
NTIsMzcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2
ZVZhbHVlKFRleHRab29tIHRleHRab29tKQogICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
Tm9ybWFsOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3RlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShUb3VjaEFjdGlvbiB0KQorICAg
IDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCit7CisgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9
IENTU19WQUxVRV9JRDsKKyAgICBzd2l0Y2ggKHQpIHsKKyAgICBjYXNlIFRvdWNoQWN0aW9uOjpB
dXRvOgorICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUF1dG87CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVG91Y2hBY3Rpb246Ok1hbmlwdWxhdGlvbjoKKyAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVNYW5pcHVsYXRpb247CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRvdWNo
QWN0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNWYWx1ZUlEKCkpOworICAgIHN3aXRjaCAo
bV92YWx1ZS52YWx1ZUlEKSB7CisgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIHJldHVy
biBUb3VjaEFjdGlvbjo6QXV0bzsKKyAgICBjYXNlIENTU1ZhbHVlTWFuaXB1bGF0aW9uOgorICAg
ICAgICByZXR1cm4gVG91Y2hBY3Rpb246Ok1hbmlwdWxhdGlvbjsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IFRvdWNoQWN0aW9uOjpBdXRvOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKFNjcm9sbFNuYXBUeXBlIGUpCiAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggNDA5MjU0OWVkNTQ2MWYzOTU3
N2UyNjQ1N2EwOTQ4YTI3YTUxZTc4OC4uZjJjMjA1YWQxMmY0ZGRiOTQzOTQ3NzFkYWE4NjcxZmVm
ZGY3Njc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMu
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTY2Niw2
ICs2NjYsOSBAQCB1c2VyLXpvb20gW1NraXBCdWlsZGVyXQogI2lmIGRlZmluZWQoRU5BQkxFX0FD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJiYgRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJG
TE9XX1NDUk9MTElORwogLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmcgW0luaGVyaXRlZCwgTmFt
ZUZvck1ldGhvZHM9VXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZywgQ29udmVydGVyPU92ZXJmbG93
U2Nyb2xsaW5nXQogI2VuZGlmCisjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBF
TkFCTEVfVE9VQ0hfRVZFTlRTCit0b3VjaC1hY3Rpb24KKyNlbmRpZgogI2lmIGRlZmluZWQoV1RG
X1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUwogLXdlYmtpdC10b3VjaC1jYWxsb3V0
IFtJbmhlcml0ZWQsIE5hbWVGb3JNZXRob2RzPVRvdWNoQ2FsbG91dEVuYWJsZWQsIENvbnZlcnRl
cj1Ub3VjaENhbGxvdXRdCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4KaW5kZXggZGQ0ODRmZDNmZDgyMTU1ZTczYjcxOThkZmY5NTAzNDNlNWY4Y2QxMy4uYjRhYTEy
NWI4OWY1ODBhNDJhYjc1N2YwM2I0N2Y4MGZiZDNhY2RlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4KQEAgLTExNzIsMyArMTE3Miw4IEBAIHN0eWxlCiAvLyB3aWxsLWNo
YW5nZQogc2Nyb2xsLXBvc2l0aW9uCiBjb250ZW50cworCisjaWYgZGVmaW5lZChFTkFCTEVfVE9V
Q0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCisvLyB0b3VjaC1hY3Rpb24KK21hbmlw
dWxhdGlvbgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYTY4ZmE4N2U5OGY5MTU2
NDA5ZjgwNWQzZWU3Zjk5YjMxNzVjMWE4ZC4uMmEyY2Y1NWYwMGNjZjEzMGFlMzFkNjlmZmY3YjBh
NjgwYTljNGE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTM4MSw2ICsxMzgxLDE3IEBA
IFVSTCBFbGVtZW50OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVu
dCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhsaW5rQXR0
cmlidXRlKSk7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorYm9vbCBFbGVtZW50Ojph
bGxvd3NEb3VibGVUYXBHZXN0dXJlKCkgY29uc3QKK3sKKyAgICBpZiAocmVuZGVyZXIoKSAmJiBy
ZW5kZXJlcigpLT5zdHlsZSgpLnRvdWNoQWN0aW9uKCkgIT0gVG91Y2hBY3Rpb246OkF1dG8pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1l
bnQoKTsKKyAgICByZXR1cm4gIXBhcmVudCB8fCBwYXJlbnQtPmFsbG93c0RvdWJsZVRhcEdlc3R1
cmUoKTsKK30KKyNlbmRpZgorCiBTdHlsZVJlc29sdmVyJiBFbGVtZW50OjpzdHlsZVJlc29sdmVy
KCkKIHsKICAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCA0YzcxOWJlN2ZmNGMzOWVkOWVhMGYxZTQ3MTY5MGIzMjAx
M2U2NzJjLi40N2ZmNDgxMzUxYjcxYTMwM2Y4MmJiMzlkZTY2ZThmNjkzZGM3MjcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTQ4Nyw2ICs0ODcsMTAgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgVVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzRG91YmxlVGFwR2VzdHVyZSgpIGNvbnN0IG92
ZXJyaWRlOworI2VuZGlmCisKICAgICBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKCk7CiAg
ICAgUmVmPFJlbmRlclN0eWxlPiByZXNvbHZlU3R5bGUoUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggNmExOTNhYTI2Mzg5MWUxMDQzNjg0OGM0NmMyYjU1OThhOGJj
YjM3OC4uMmQ5OGQ1ODRkZjQ4YThhM2YzMTQwN2RjZmYzODAxMjhmMDY2YmI2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC01MzEsNiArNTMxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoU3VidHJl
ZU1vZGlmaWVkRXZlbnQoKTsKICAgICBib29sIGRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQg
ZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQpOwogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzRG91YmxlVGFwR2VzdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykgJiYgIVBMQVRGT1JNKElPUykKICAgICBib29sIGRpc3BhdGNoVG91Y2hFdmVudChQYXNzUmVm
UHRyPFRvdWNoRXZlbnQ+KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAppbmRleCBiM2IyNWYxNGFlMjk0NWMyZjJkOGFiZWMxMWNmZGQyZTFi
N2QwNjJhLi41NDhiNDE0ZTZkZjJlZDYzMjU3MTZkN2Q0OGIwMzQwMzZkNWU1MGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTExOSw2ICsx
MTE5LDEwIEBAIHB1YmxpYzoKICAgICBpbnQgaW5pdGlhbExldHRlckRyb3AoKSBjb25zdCB7IHJl
dHVybiBpbml0aWFsTGV0dGVyKCkud2lkdGgoKTsgfQogICAgIGludCBpbml0aWFsTGV0dGVySGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gaW5pdGlhbExldHRlcigpLmhlaWdodCgpOyB9CiAKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIFRvdWNoQWN0aW9uIHRvdWNoQWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hBY3Rpb24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3RvdWNoQWN0aW9uKTsgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQog
ICAgIFNjcm9sbFNuYXBUeXBlIHNjcm9sbFNuYXBUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U2Nyb2xsU25hcFR5cGU+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Njcm9sbFNuYXBU
eXBlKTsgfQogICAgIGNvbnN0IFNjcm9sbFNuYXBQb2ludHMqIHNjcm9sbFNuYXBQb2ludHNYKCkg
Y29uc3Q7CkBAIC0xNjc5LDYgKzE2ODMsMTAgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0
SW5pdGlhbExldHRlcihjb25zdCBJbnRTaXplJiBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1faW5pdGlhbExldHRlciwgc2l6ZSk7IH0KICAgICAKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgIHZvaWQgc2V0VG91Y2hBY3Rpb24oVG91Y2hBY3Rpb24gdCkgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RvdWNoQWN0aW9uLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odCkpOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAg
dm9pZCBzZXRTY3JvbGxTbmFwVHlwZShTY3JvbGxTbmFwVHlwZSB0eXBlKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fc2Nyb2xsU25hcFR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih0eXBlKSk7IH0KICAgICB2b2lkIHNldFNjcm9sbFNuYXBQb2ludHNYKHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxTbmFwUG9pbnRzPik7CkBAIC0yMDMyLDYgKzIwNDAsMTAgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFdpbGxDaGFuZ2VEYXRhKiBpbml0aWFsV2lsbENoYW5nZSgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgc3RhdGljIFRvdWNoQWN0
aW9uIGluaXRpYWxUb3VjaEFjdGlvbigpIHsgcmV0dXJuIFRvdWNoQWN0aW9uOjpBdXRvOyB9Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgc3RhdGljIFNjcm9sbFNu
YXBUeXBlIGluaXRpYWxTY3JvbGxTbmFwVHlwZSgpIHsgcmV0dXJuIFNjcm9sbFNuYXBUeXBlOjpO
b25lOyB9CiAgICAgc3RhdGljIFNjcm9sbFNuYXBQb2ludHMqIGluaXRpYWxTY3JvbGxTbmFwUG9p
bnRzWCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggYjcyYjNhNzQ1ZTAzMDAz
NDkwM2I1OWE3MjcwN2JlZGUwMTAxYjg0NC4uMzQzNDI4MDhlNGQwY2M2NzQyMDY3YWY0NjAwMzNk
OTkyNzYwNDljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTY0Myw2ICs2NDMsMTMgQEAgZW51bSBJc29sYXRp
b24geyBJc29sYXRpb25BdXRvLCBJc29sYXRpb25Jc29sYXRlIH07CiAvLyBGaWxsLCBTdHJva2Us
IFZpZXdCb3ggYXJlIGp1c3QgdXNlZCBmb3IgU1ZHLgogZW51bSBDU1NCb3hUeXBlIHsgQm94TWlz
c2luZyA9IDAsIE1hcmdpbkJveCwgQm9yZGVyQm94LCBQYWRkaW5nQm94LCBDb250ZW50Qm94LCBG
aWxsLCBTdHJva2UsIFZpZXdCb3ggfTsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitlbnVt
IGNsYXNzIFRvdWNoQWN0aW9uIHsKKyAgICBBdXRvLAorICAgIE1hbmlwdWxhdGlvbgorfTsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIGVudW0gY2xhc3MgU2Nyb2xsU25h
cFR5cGUgewogICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggMDlmYzkxMjhm
ZDZhN2EwMTE5ZTcyYzY4YmRjOGQ4M2I5YTViZDIwMi4uNmViYmRiYWEwZWRhYTdlMTllMzFmMTRk
ODEyODIxZjNiMjkyNTJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtNzksNiArNzks
OSBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
KCkKICAgICAsIG1fanVzdGlmeUNvbnRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxDb250ZW50QWxp
Z25tZW50KCkpCiAgICAgLCBtX2p1c3RpZnlJdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZB
bGlnbm1lbnQoKSkKICAgICAsIG1fanVzdGlmeVNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxm
QWxpZ25tZW50KCkpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIG1fdG91Y2hBY3Rp
b24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVG91Y2hBY3Rpb24o
KSkpCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgICwgbV9zY3JvbGxT
bmFwVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxT
bmFwVHlwZSgpKSkKICNlbmRpZgpAQCAtMTY4LDYgKzE3MSw5IEBAIGlubGluZSBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFy
ZU5vbkluCiAgICAgLCBtX2p1c3RpZnlDb250ZW50KG8ubV9qdXN0aWZ5Q29udGVudCkKICAgICAs
IG1fanVzdGlmeUl0ZW1zKG8ubV9qdXN0aWZ5SXRlbXMpCiAgICAgLCBtX2p1c3RpZnlTZWxmKG8u
bV9qdXN0aWZ5U2VsZikKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICwgbV90b3VjaEFj
dGlvbihvLm1fdG91Y2hBY3Rpb24pCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgICwgbV9zY3JvbGxTbmFwVHlwZShvLm1fc2Nyb2xsU25hcFR5cGUpCiAjZW5kaWYKQEAg
LTI4Miw2ICsyODgsOSBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9y
PT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAmJiBtX2Jv
cmRlckZpdCA9PSBvLm1fYm9yZGVyRml0CiAgICAgICAgICYmIG1fdGV4dENvbWJpbmUgPT0gby5t
X3RleHRDb21iaW5lCiAgICAgICAgICYmIG1fdGV4dERlY29yYXRpb25TdHlsZSA9PSBvLm1fdGV4
dERlY29yYXRpb25TdHlsZQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgICYmIG1f
dG91Y2hBY3Rpb24gPT0gby5tX3RvdWNoQWN0aW9uCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQogICAgICAgICAmJiBtX3Njcm9sbFNuYXBUeXBlID09IG8ubV9zY3JvbGxTbmFw
VHlwZQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCA3YWQ5NzYzYWFmMDRiZjY4NDlm
OTYxODViMzk4NWI2ZTAwZjc3OTAzLi4xMjZhZWM2YjgzODE0MDYzYjVjMTEzZjNhNGE4MzkzZWRh
OWZmZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTE4NCw2ICsxODQsMTAgQEAgcHVibGlj
OgogICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9qdXN0aWZ5SXRlbXM7CiAgICAgU3R5bGVT
ZWxmQWxpZ25tZW50RGF0YSBtX2p1c3RpZnlTZWxmOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICB1bnNpZ25lZCBtX3RvdWNoQWN0aW9uIDogMTsgLy8gVG91Y2hBY3Rpb24KKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICB1bnNpZ25lZCBtX3Njcm9sbFNu
YXBUeXBlIDogMjsgLy8gU2Nyb2xsU25hcFR5cGUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGExYjg5MDY5
NTIxNmEwYzVmYThkZDYyNzUwYWJjODNlZjAzYzM3N2IuLmU0MGE2MWRmNTQ4NzMxMTNjNDQxOWU5
N2VlZGFhODllZDllYjhkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTY2Myw2ICs2NjMsMTIgQEAgdm9pZCBXZWJQ
YWdlOjpwb3RlbnRpYWxUYXBBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2kKICAgICBtX3BvdGVudGlhbFRhcE5vZGUgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyhwb3NpdGlvbiwgbV9wb3RlbnRpYWxUYXBM
b2NhdGlvbik7CiAgICAgc2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeShyZXF1ZXN0
SUQsIG1fcG90ZW50aWFsVGFwTm9kZS5nZXQoKSk7CiAgICAgaWYgKG1fcG90ZW50aWFsVGFwTm9k
ZSkgeworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIGlmICghbV9wb3RlbnRpYWxU
YXBOb2RlLT5hbGxvd3NEb3VibGVUYXBHZXN0dXJlKCkpIHsKKyAgICAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzVW50aWxUYXBJc0Zp
bmlzaGVkSWZOZWNlc3NhcnkocmVxdWVzdElELCBmYWxzZSwgRmxvYXRSZWN0KCksIGZhbHNlLCAw
LCAwKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBG
bG9hdFBvaW50IG9yaWdpbiA9IHBvc2l0aW9uOwogICAgICAgICBGbG9hdFJlY3QgcmVuZGVyUmVj
dDsKICAgICAgICAgYm9vbCBpc1JlcGxhY2VkOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEzNTlkMmU5Zjc0NTgwZWNhOGZj
YmI2ZGJkYjYzZjYxZTZmYTVhMjIuLmU0NDg0MTI1NWVlZTcwNzllZTczNWMwNjBjMzlkMWEwMmYw
NzVjMGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNS0xMC0xOSAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdG91Y2gtYWN0aW9u
OiBtYW5pcHVsYXRpb247IGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0OTg1NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMwMTcxNDU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRl
c3RzIHRvIGNoZWNrIHRoYXQgdGhlIG1hbmlwdWxhdGlvbiBhbmQgYXV0byB2YWx1ZXMgb2YgdGhl
IHRvdWNoLWFjdGlvbiBwcm9wZXJ0eSBjYW4gYmUKKyAgICAgICAgcHJvcGVybHkgcGFyc2VkIGFu
ZCBjYW4gYmUgb2J0YWluZWQgdGhyb3VnaCBjb21wdXRlZCBzdHlsZS4gQWxzbyB0ZXN0cyB0aGF0
IHB1dHRpbmcgdG91Y2gtYWN0aW9uOgorICAgICAgICBtYW5pcHVsYXRpb24gb24gYW4gZWxlbWVu
dCBhbmQgdGFwcGluZyByZXBlYXRlZGx5IG9uIGl0IHdpbGwgZmlyZSBjbGlja3MgaW5zdGVhZCBv
ZiByZWNvZ25pemluZworICAgICAgICBkb3VibGUgdGFwcyBhbmQgY2F1c2luZyB0aGUgdmlld3Bv
cnQgdG8gem9vbS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogY3Nz
My90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1dGVk
LXN0eWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFj
dGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBjc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tbWFuaXB1bGF0aW9uLWZhc3QtY2xp
Y2tzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlv
bi1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzMy90b3VjaC1hY3Rp
b24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxNS0xMC0xOSAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5pbmcgZmFz
dC9keW5hbWljL2luc2VydC1iZWZvcmUtdGFibGUtcGFydC1pbi1jb250aW51YXRpb24uaHRtbCBm
b3Igd2luCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkZWZhOWI2MjVkNTYxZWE4NTY3NDQzNmZjMGNi
MzZhYWFjOGZmOTdiLi4zN2MwZDcwYzZjOTE1ZTY0ZGE1MmVhZTE2NDQwZTVlZjAwM2EzMmZhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYsNiArNiw3IEBACiAjIFBsYXRmb3JtLXNwZWNpZmljIHRl
c3RzLiBTa2lwcGVkIGhlcmUsIHRoZW4gcmUtZW5hYmxlZCBvbiB0aGUgYXBwcm9wcmlhdGUgcGxh
dGZvcm0uCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKK2NzczMvdG91Y2gt
YWN0aW9uIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IgWyBTa2lwIF0KIGFj
Y2Vzc2liaWxpdHkvZ3RrIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L21hYyBbIFNraXAgXQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLWNvbXB1
dGVkLXN0eWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3Rv
dWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE3ZmRj
ZTI2MmIyZTIyNjYzMTA3YTE5ODBhZmViNGQ4YmY2MjlkYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdGluZyB0aGUgY29tcHV0ZWQgc3R5bGUg
b2YgdG91Y2gtYWN0aW9uOgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVzdGlu
ZyB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykgaXMgJ21h
bmlwdWxhdGlvbicKK1Rlc3RpbmcgdG91Y2gtYWN0aW9uOiBhdXRvOworUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rp
b24nKSBpcyAnYXV0bycKK1Rlc3RpbmcgYSBib2d1cyB2YWx1ZQorUEFTUyB3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24n
KSBpcyAnYXV0bycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1h
Y3Rpb24tY29tcHV0ZWQtc3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9u
L3RvdWNoLWFjdGlvbi1jb21wdXRlZC1zdHlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZDViNWU0ZmRj
MzcxNjdkOWNkNGExYjE0OTA1ZDI3ZjFlYzgzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL3RvdWNoLWFjdGlvbi90b3VjaC1hY3Rpb24tY29tcHV0ZWQtc3R5bGUuaHRtbApA
QCAtMCwwICsxLDM1IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
CisgICAgPGJvZHk+CisgICAgICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGRl
c2NyaXB0aW9uKCJUZXN0aW5nIHRoZSBjb21wdXRlZCBzdHlsZSBvZiB0b3VjaC1hY3Rpb246Iik7
CisKKyAgICAgICAgICAgIHZhciBzdHlsZXNoZWV0OworICAgICAgICAgICAgdmFyIHN0eWxlRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgICAgICAgICBkb2N1
bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7CisgICAgICAgICAgICBzdHlsZXNo
ZWV0ID0gc3R5bGVFbGVtZW50LnNoZWV0OworCisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyB0
b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsiKTsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuaW5z
ZXJ0UnVsZSgiYm9keSB7IHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uOyB9IiwgMCk7CisgICAg
ICAgICAgICBzaG91bGRCZSgid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSku
Z2V0UHJvcGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykiLCAiJ21hbmlwdWxhdGlvbiciKTsKKyAg
ICAgICAgICAgIHN0eWxlc2hlZXQuZGVsZXRlUnVsZSgwKTsKKworICAgICAgICAgICAgZGVidWco
IlRlc3RpbmcgdG91Y2gtYWN0aW9uOiBhdXRvOyIpOworICAgICAgICAgICAgc3R5bGVzaGVldC5p
bnNlcnRSdWxlKCJib2R5IHsgdG91Y2gtYWN0aW9uOiBhdXRvOyB9IiwgMCk7CisgICAgICAgICAg
ICBzaG91bGRCZSgid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJv
cGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykiLCAiJ2F1dG8nIik7CisgICAgICAgICAgICBzdHls
ZXNoZWV0LmRlbGV0ZVJ1bGUoMCk7CisKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIGEgYm9n
dXMgdmFsdWUiKTsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuaW5zZXJ0UnVsZSgiYm9keSB7IHRv
dWNoLWFjdGlvbjogdHlwbzsgfSIsIDApOworICAgICAgICAgICAgc2hvdWxkQmUoIndpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoJ3RvdWNoLWFj
dGlvbicpIiwgIidhdXRvJyIpOworCisgICAgICAgICAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1tYW5p
cHVsYXRpb24tZmFzdC1jbGlja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy90b3Vj
aC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNrcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTVlMjYzYjIwZmY1MjZmOGIxNzc1MWViOGZkYTVhODk3MjU0OWU5Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFj
dGlvbi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBA
QAorCitSZXBlYXRlZGx5IHRhcHBpbmcgb24gdGhlIGJ1dHRvbiBzaG91bGQgZmlyZSBjbGljayBl
dmVudHMuCisKK1RoaXMgdGVzdCBpcyBiZXN0IHJ1biBpbiBXZWJLaXRUZXN0UnVubmVyLiBJZiB5
b3UgYXJlIHJ1bm5pbmcgdGhpcyB0ZXN0IG1hbnVhbGx5LCB2ZXJpZnkgdGhhdCB0YXBwaW5nIHRo
ZSBidXR0b24gY2F1c2VzIGEgIkNsaWNrISIgbWVzc2FnZSB0byBhcHBlYXIgYmVsb3csIGFuZCB0
aGF0IGNsaWNrIG9jY3VycmVkIHdpdGhvdXQgdGhlIHJlZ3VsYXIgMzUwbXMgZGVsYXkgZm9yIGRv
dWJsZSB0YXBwaW5nLgorCitDbGljayEKK0NsaWNrIQorQ2xpY2shCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1tYW5pcHVsYXRpb24tZmFz
dC1jbGlja3MuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlv
bi1tYW5pcHVsYXRpb24tZmFzdC1jbGlja3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzliZGRkNGNiZmVh
NWFlMTNlZGM3Nzk4YTgzNTQxNTQzY2E3MjMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLW1hbmlwdWxhdGlvbi1mYXN0LWNsaWNr
cy5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorCis8aHRtbD4KKzxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+CisKKzxoZWFkPgor
ICAgIDxzY3JpcHQgaWQ9InVpLXNjcmlwdCIgdHlwZT0idGV4dC9wbGFpbiI+CisgICAgICAgIChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHBlcmZvcm1UYXAoKSB7CisgICAgICAg
ICAgICAgICAgdWlDb250cm9sbGVyLnNpbmdsZVRhcEF0UG9pbnQoMjAwLCAyMDAsIHBlcmZvcm1U
YXApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGVyZm9ybVRhcCgpOworICAgICAgICB9
KSgpOworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdD4KKyAgICB2YXIgY2xpY2tDb3VudCA9
IDA7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBnZXRVSVNjcmlwdCgpIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ1aS1zY3JpcHQiKS50ZXh0OworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChnZXRVSVNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQp
IHsgfSk7CisgICAgfQorICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrZWQoKSB7CisgICAgICAgIGNs
aWNrQ291bnQrKzsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiQ2xpY2shIikpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworICAgICAgICBpZiAoY2xpY2tDb3Vu
dCA9PSAzKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorICAg
IDwvc2NyaXB0PgorCisgICAgPHN0eWxlPgorICAgIGJvZHkgeworICAgICAgICBtYXJnaW46IDA7
CisgICAgfQorCisgICAgI3RhcmdldCB7CisgICAgICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0
aW9uOworICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgIGhlaWdodDogNDAwcHg7CisgICAg
fQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAg
ICA8YnV0dG9uIGlkPSJ0YXJnZXQiIG9uY2xpY2s9ImhhbmRsZUNsaWNrZWQoKSI+PC9idXR0b24+
CisgICAgPHA+UmVwZWF0ZWRseSB0YXBwaW5nIG9uIHRoZSBidXR0b24gc2hvdWxkIGZpcmUgY2xp
Y2sgZXZlbnRzLjwvcD4KKyAgICA8cD5UaGlzIHRlc3QgaXMgYmVzdCBydW4gaW4gV2ViS2l0VGVz
dFJ1bm5lci4gSWYgeW91IGFyZSBydW5uaW5nIHRoaXMgdGVzdCBtYW51YWxseSwgdmVyaWZ5IHRo
YXQgdGFwcGluZyB0aGUgYnV0dG9uIGNhdXNlcyBhICJDbGljayEiIG1lc3NhZ2UgdG8gYXBwZWFy
IGJlbG93LCBhbmQgdGhhdCBjbGljayBvY2N1cnJlZCB3aXRob3V0IHRoZSByZWd1bGFyIDM1MG1z
IGRlbGF5IGZvciBkb3VibGUgdGFwcGluZy48L3A+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlvbi1wYXJzaW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvdG91Y2gtYWN0aW9uL3RvdWNoLWFjdGlv
bi1wYXJzaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTljOWY4MWE0MzIyM2NlMzRhYWRh
N2I5ZDg3NTdhZGQ5NzVmNzhhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy90
b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTUgQEAKK1Rlc3QgdGhlIHBhcnNpbmcgb2YgdG91Y2gtYWN0aW9uLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBjc3NSdWxlLnR5cGUgaXMgMQorUEFTUyBkZWNsYXJhdGlv
bi5sZW5ndGggaXMgMQorUEFTUyBkZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1h
Y3Rpb24nKSBpcyAnbWFuaXB1bGF0aW9uJworUEFTUyBjc3NSdWxlLnR5cGUgaXMgMQorUEFTUyBk
ZWNsYXJhdGlvbi5sZW5ndGggaXMgMQorUEFTUyBkZWNsYXJhdGlvbi5nZXRQcm9wZXJ0eVZhbHVl
KCd0b3VjaC1hY3Rpb24nKSBpcyAnYXV0bycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3RvdWNo
LWFjdGlvbi90b3VjaC1hY3Rpb24tcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy90b3Vj
aC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2QzYTZkYWZk
NzkyOGFkMDlmMjFhOGNkODFhMzUxOWNmNTJlOWExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvY3NzMy90b3VjaC1hY3Rpb24vdG91Y2gtYWN0aW9uLXBhcnNpbmcuaHRtbApAQCAtMCww
ICsxLDM3IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5PgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0IHRoZSBwYXJzaW5nIG9mIHRvdWNoLWFjdGlvbi4iKTsKKworICAgICAgICAgICAg
dmFyIHN0eWxlc2hlZXQsIGNzc1J1bGUsIGRlY2xhcmF0aW9uOworICAgICAgICAgICAgdmFyIHN0
eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgICAgICAg
ICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7CisgICAgICAgICAgICBz
dHlsZXNoZWV0ID0gc3R5bGVFbGVtZW50LnNoZWV0OworCisgICAgICAgICAgICBzdHlsZXNoZWV0
Lmluc2VydFJ1bGUoImJvZHkgeyB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjsgfSIsIDApOwor
ICAgICAgICAgICAgY3NzUnVsZSA9IHN0eWxlc2hlZXQuY3NzUnVsZXMuaXRlbSgwKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJjc3NSdWxlLnR5cGUiLCAiMSIpOworICAgICAgICAgICAgZGVjbGFy
YXRpb24gPSBjc3NSdWxlLnN0eWxlOworICAgICAgICAgICAgc2hvdWxkQmUoImRlY2xhcmF0aW9u
Lmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICBzaG91bGRCZSgiZGVjbGFyYXRpb24uZ2V0UHJv
cGVydHlWYWx1ZSgndG91Y2gtYWN0aW9uJykiLCAiJ21hbmlwdWxhdGlvbiciKTsKKworICAgICAg
ICAgICAgc3R5bGVzaGVldC5pbnNlcnRSdWxlKCJib2R5IHsgdG91Y2gtYWN0aW9uOiBhdXRvOyB9
IiwgMCk7CisgICAgICAgICAgICBjc3NSdWxlID0gc3R5bGVzaGVldC5jc3NSdWxlcy5pdGVtKDAp
OworICAgICAgICAgICAgc2hvdWxkQmUoImNzc1J1bGUudHlwZSIsICIxIik7CisgICAgICAgICAg
ICBkZWNsYXJhdGlvbiA9IGNzc1J1bGUuc3R5bGU7CisgICAgICAgICAgICBzaG91bGRCZSgiZGVj
bGFyYXRpb24ubGVuZ3RoIiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJkZWNsYXJhdGlv
bi5nZXRQcm9wZXJ0eVZhbHVlKCd0b3VjaC1hY3Rpb24nKSIsICInYXV0byciKTsKKworICAgICAg
ICAgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+CisKKwor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXNpbXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzExMDI4NGQ3
MzJkYjkyOGYzOTdlNmRiMTk1YzdhZDkwZjZhMGVmMy4uZTBlY2NhOWQxNzZjNzI5NzY4MmFlZmE0
Y2Q5NDNlMjA5NDUzMjNkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNp
bXVsYXRvci13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtc2ltdWxhdG9yLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC02LDYgKzYsNyBAQAogIyBQbGF0
Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4gU2tpcHBlZCBnbG9iYWxseSwgdGhlbiByZS1lbmFi
bGVkIGhlcmUuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKK2NzczMvdG91
Y2gtYWN0aW9uIFsgUGFzcyBdCiBmYXN0L2hhcm5lc3MvdWktc2lkZS1zY3JpcHRzLmh0bWwgWyBQ
YXNzIF0KIGZhc3QvaGFybmVzcy9jb25jdXJyZW50LXVpLXNpZGUtc2NyaXB0cy5odG1sIFsgUGFz
cyBdCiBmYXN0L3pvb21pbmcvaW9zIFsgUGFzcyBdCg==
</data>
<flag name="review"
          id="288661"
          type_id="1"
          status="+"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="288859"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>